You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ci(spec): retire the generated paths filter — every artifact gate moves to the unfiltered required job (#4291)
The filter was a hand-maintained duplicate of each gate's input set, and nothing
reconciled the two. Its own comment asked for the pair to be kept "in lockstep";
nothing enforced that, and it drifted three times on record — each found by
accident and written up in a comment rather than gated:
- #2584 moved a generated page and the filter kept watching the old path, so
hand-edits to the generated block went unchecked for months.
- #3855 listed specific spec paths but no schema dirs, so check:authorable-surface
went dormant on exactly the PRs that remove an authorable key.
- packages/spec/json-schema.manifest.json was never watched at all. It is the
#2978 ratchet and the only durable record of every schema ever emitted, since
json-schema/ is gitignored, and build-schemas.ts requires a retirement to
delete the key from it — so a manifest-only PR skipped its own verifier.
Six of the ten gates had already escaped to lint.yml's typecheck job one at a
time, each with a comment explaining that the filter had failed them. This moves
the last four — check:skill-docs, check:spec-changes, check:upgrade-guide,
check:authorable-surface — and deletes the check-generated job, the `generated`
filter, and its output. There is no second ledger left to keep in sync: the
failure mode #4255 gated for the check:generated ledger is removed at the source
here instead.
Affordable because that job was already doing the work: check:docs runs
gen:schema — the same scripts/build-schemas.ts that backs check:authorable-surface
— and that whole step measures 4s in CI, against a 5-minute job dominated by the
workspace build (check:skill-refs 0s, check:react-blocks 1s). All four read
source via tsx and need no build, so they run before the workspace build like the
gates already there.
Safe to delete: needs.filter.outputs.generated had exactly one reader, the job's
own `if:`, and lint.yml recorded that the job "is not required, either" — so no
branch-protection check disappears. Comments in lint.yml, check-generated.ts and
AGENTS.md that described the two-job split are updated to match.
Closes#4291
Refs #4255, #2584, #3855, #2978
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QCrKazC5o5a77yXd7ykaZg
0 commit comments