Filed by: domain:engine#1 (seat post #6367), session_017ErfyP2Rx7XWHJA27QjyUi, from PR #21695's CI.
What happened (measured)
PR #21695 changed packages/objectql/src/engine.ts so that it imports validateRecordInScope instead of validateRecord. The dev ran the full dispatch-gates --commands union (68 derived commands, every one exit 0) plus the 53-family artifact-roster block, all at head b73f58e396. CI's Lint & Repo Gates was then red at the same head (job 111379104429), on step "ADR symbol anchors resolve (no line numbers survive)":
[unresolved-symbol] docs/adr/0020-state-machine-converge-and-enforce.md:52 `packages/objectql/src/engine.ts#validateRecord`
`validateRecord` has no declaration site or string-literal token in `packages/objectql/src/engine.ts`
The seat reproduced it with node scripts/check-adr-symbol-anchors.mjs on the PR head.
Why no local gate caught it
The seat ran scripts/pm/dispatch-gates.mjs at origin/main 251a7dd4b4:
| change set |
check-adr-symbol-anchors derived? |
| no paths |
no |
packages/objectql/src/engine.ts |
no. Its artifact-roster listing (54 families) and the full non---commands output never name any *symbol-anchors* gate |
docs/adr/0020-state-machine-converge-and-enforce.md |
yes: the sweep and its --self-test |
The three symbol-anchor corpora each have two sides. A change on either side can red the sweep:
check-adr-symbol-anchors (docs/adr/**);
check-scripts-symbol-anchors (scripts/** comment prose);
check-spec-docblock-symbol-anchors (packages/spec/src/** docblocks).
The corpus side is the files holding the anchors. The derivation keys on it. The target side is any file an anchor names (packages/objectql/src/engine.ts#validateRecord). The derivation does not model that side, so a rename or a removed import in any anchored target file is invisible to every local union.
Reach
Direction (for triage, not prescribed)
Either option fits:
- derive the symbol-anchor sweeps when a change set touches a file that some corpus anchor names. The resolver in
scripts/symbol-anchors.mjs already extracts every anchor's target path.
- or list the three sweeps among the always-run families that
--commands prints.
Dedupe words: dispatch-gates symbol anchor target reverse dependency adr-symbol-anchors not derived.
Generated by Claude Code
Filed by:
domain:engine#1(seat post #6367),session_017ErfyP2Rx7XWHJA27QjyUi, from PR #21695's CI.What happened (measured)
PR #21695 changed
packages/objectql/src/engine.tsso that it importsvalidateRecordInScopeinstead ofvalidateRecord. The dev ran the fulldispatch-gates --commandsunion (68 derived commands, every one exit 0) plus the 53-family artifact-roster block, all at headb73f58e396. CI'sLint & Repo Gateswas then red at the same head (job 111379104429), on step "ADR symbol anchors resolve (no line numbers survive)":The seat reproduced it with
node scripts/check-adr-symbol-anchors.mjson the PR head.Why no local gate caught it
The seat ran
scripts/pm/dispatch-gates.mjsatorigin/main251a7dd4b4:check-adr-symbol-anchorsderived?packages/objectql/src/engine.ts--commandsoutput never name any*symbol-anchors*gatedocs/adr/0020-state-machine-converge-and-enforce.md--self-testThe three symbol-anchor corpora each have two sides. A change on either side can red the sweep:
check-adr-symbol-anchors(docs/adr/**);check-scripts-symbol-anchors(scripts/**comment prose);check-spec-docblock-symbol-anchors(packages/spec/src/**docblocks).The corpus side is the files holding the anchors. The derivation keys on it. The target side is any file an anchor names (
packages/objectql/src/engine.ts#validateRecord). The derivation does not model that side, so a rename or a removed import in any anchored target file is invisible to every local union.Reach
engine.ts,protocol.ts, therecord-validator/rule-validatorpair) can pass its whole local union and then lose one CI cycle plus a patch round. Here that is fix(objectql)!: a system write's readonly value is judged for its shape — a seed's malformed readonly datetime is refused, never stored (#21663) #21695.Direction (for triage, not prescribed)
Either option fits:
scripts/symbol-anchors.mjsalready extracts every anchor's target path.--commandsprints.Dedupe words: dispatch-gates symbol anchor target reverse dependency adr-symbol-anchors not derived.
Generated by Claude Code