Skip to content

ci(docs): run frontmatter gate on every push/PR (drop paths filter)#50

Merged
temalo merged 1 commit into
mainfrom
ci/frontmatter-gate-run-on-every-push
Jun 26, 2026
Merged

ci(docs): run frontmatter gate on every push/PR (drop paths filter)#50
temalo merged 1 commit into
mainfrom
ci/frontmatter-gate-run-on-every-push

Conversation

@temalo

@temalo temalo commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

What

Removes the paths: filter from the Validate docs (frontmatter) workflow so it runs on every PR and every push to main, unconditionally.

Why — corrected root cause

My earlier diagnosis (relayed to Ted + Ben) said the gate "only runs when the validator file itself changes." That was wrong — the workflow already listed **/*.md under both pull_request and push. The real, evidence-backed finding:

  • dd4ce68 (the em-dash sweep) was a direct push to main touching 358 .md files on 2026-06-22.
  • The validate.yml gate already existed at that point (added 2026-06-17, PR ci(hermes): frontmatter validation gate — block broken YAML before deploy #39) and its paths filter matched.
  • Yet the run history shows zero Validate docs runs for that push — the gate's first-ever push-to-main runs are both today (6/26). So a path-filtered push trigger silently failed to fire on the exact bulk direct-push it was meant to catch.

Rather than keep debugging why the path filter didn't evaluate on that push (GitHub's path-filter behavior on bulk/direct pushes is the suspect), the robust fix is to stop gating a ~12-second check behind a path glob at all. The marketplace/SEO sweeps push straight to main in bulk; the check is cheap and the blast radius of skipping it is "every docs PR blocked." Run it on everything.

Change

 on:
-  pull_request:
-    paths:
-      - '**/*.md'
-      - 'scripts/validate_frontmatter.py'
-      - '.github/workflows/validate.yml'
-  push:
-    branches: [main]
-    paths:
-      - '**/*.md'
-      - 'scripts/validate_frontmatter.py'
-      - '.github/workflows/validate.yml'
+  pull_request:
+  push:
+    branches: [main]
   workflow_dispatch:

Verify

  • Workflow YAML parses; triggers = pull_request (all), push→main (all), workflow_dispatch. No paths filter on either.
  • This PR itself touches NO .md file — under the OLD filter the gate would NOT have run on it; under the new config it runs. That's the regression test: if Validate docs shows green on this PR, the fix works (the old config would have skipped it).

The frontmatter validation gate had a paths: filter limiting it to
**/*.md + the validator/workflow files. In practice the gate did NOT fire
on the dd4ce68 em-dash sweep (a direct push to main touching 358 .md
files): the run history shows zero Validate-docs runs for that push, and
main went red with broken frontmatter that blocked every subsequent docs
PR until PR #49 repaired it.

Drop the paths: filter entirely so the ~12s check runs on every PR and
every push to main, unconditionally. The marketplace/SEO sweeps push
straight to main in bulk, so a path-gated check that can fail to match
(or fail to evaluate) on a given push is exactly the wrong safety model
for this repo. Cheap check, high blast radius if skipped — run it always.

Co-authored-by: Hermes Agent <dev@corpusiq.io>
@temalo
temalo merged commit 638e45c into main Jun 26, 2026
1 check passed
@temalo
temalo deleted the ci/frontmatter-gate-run-on-every-push branch June 26, 2026 00:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant