Filed by the PM seat domain:devx @ objectstack (#6023), session session_012zGPuVVX3deAx9LdjK8jCk, from a measured CI red on PR #15554 (#15422). Filed bare — domain:*, type and priority are triage's. Same class as #15501 (check:merge-driver, landed via #15538) and #15553 (check:declaration-mirrors, PR #15601 accepted): a gate whose population the derivation cannot see.
What happened
PR #15554 bumps .objectui-sha (00d3f09c5 → a472b0716) with a changeset and two JSON provenance records. Its derived family (47 commands) ran green. CI then redded on Type Check · source gates → "Check spec pin citations still name the pin this repo builds against" (pnpm --filter @objectstack/spec check:objectui-pin-citations, run 33919484147, job 101174258347):
✗ 8 spec source(s) assert an objectui pin this repo does NOT build against.
.objectui-sha = a472b07167a39e55491109e864bb5a54027dcfbd
packages/spec/src/data/api-methods-batch-conformance.test.ts:64 cites `00d3f09c5`
packages/spec/src/ui/component.test.ts:281 / :370 / :2783 cites `00d3f09c5`
packages/spec/src/ui/component.zod.ts:677 / :1736 / :1943 / :2578 cites `00d3f09c5`
⛔ Do NOT fix this by replacing the sha … RE-MEASURE each record at the current pin instead
The gate is right, and its instruction is the rework (in flight on the same branch). The derivation could not have named it: the gate reads .objectui-sha (a root FILE, not a directory) and walks packages/spec/src/** for citations, and its declared population — if any — does not reach the root file. A change set that consists ONLY of the pin file is exactly the class this gate exists for, and it is the class that never derives it.
What a fix owes (direction, not prescription)
Declare the population on the gate so a .objectui-sha change set derives it — the root-file idiom check:merge-driver adopted for package.json/** under #15501 (ROOT_FILE_WATCH_HINTS = ['package.json/**'], scripts/git-merge-regen.mjs:109) is the precedent: a root-file hint spelled as .objectui-sha/** (verify hintCovers admits the spelling and check:watch-hint-literal rosters the name), plus the packages/spec/src/** side it scans. ⛔ Not a hand list of citing files (they are discovered by regex on purpose). Note the gate lives under packages/spec/scripts/ and is invoked through a pnpm filter — check the derivation's handling of package-scoped gates.
Refs
#15501 / PR #15538 (root-file precedent), #15553 / PR #15601 (extension-discovered precedent), #15422 / PR #15554 (the specimen), #14918.
Generated by Claude Code
Filed by the PM seat
domain:devx @ objectstack(#6023), sessionsession_012zGPuVVX3deAx9LdjK8jCk, from a measured CI red on PR #15554 (#15422). Filed bare —domain:*, type and priority are triage's. Same class as #15501 (check:merge-driver, landed via #15538) and #15553 (check:declaration-mirrors, PR #15601 accepted): a gate whose population the derivation cannot see.What happened
PR #15554 bumps
.objectui-sha(00d3f09c5→a472b0716) with a changeset and two JSON provenance records. Its derived family (47 commands) ran green. CI then redded onType Check · source gates→ "Check spec pin citations still name the pin this repo builds against" (pnpm --filter @objectstack/spec check:objectui-pin-citations, run 33919484147, job 101174258347):The gate is right, and its instruction is the rework (in flight on the same branch). The derivation could not have named it: the gate reads
.objectui-sha(a root FILE, not a directory) and walkspackages/spec/src/**for citations, and its declared population — if any — does not reach the root file. A change set that consists ONLY of the pin file is exactly the class this gate exists for, and it is the class that never derives it.What a fix owes (direction, not prescription)
Declare the population on the gate so a
.objectui-shachange set derives it — the root-file idiomcheck:merge-driveradopted forpackage.json/**under #15501 (ROOT_FILE_WATCH_HINTS = ['package.json/**'],scripts/git-merge-regen.mjs:109) is the precedent: a root-file hint spelled as.objectui-sha/**(verifyhintCoversadmits the spelling andcheck:watch-hint-literalrosters the name), plus thepackages/spec/src/**side it scans. ⛔ Not a hand list of citing files (they are discovered by regex on purpose). Note the gate lives underpackages/spec/scripts/and is invoked through a pnpm filter — check the derivation's handling of package-scoped gates.Refs
#15501 / PR #15538 (root-file precedent), #15553 / PR #15601 (extension-discovered precedent), #15422 / PR #15554 (the specimen), #14918.
Generated by Claude Code