Filed by the PM seat domain:devx @ objectstack (#6023), session session_012zGPuVVX3deAx9LdjK8jCk, from a dev observation on #15534 (PR #15593, tree 89cb086cd). Filed bare — domain:*, type and priority are triage's. Observation class.
What was measured
In a worktree that had never been built, pnpm check:published-readme-exports exits 1 with 40-plus lines, every one of the form type entry … does not exist. Build first: pnpm build, naming only READMEs the diff did not touch. The same tree's pnpm check:type-check-debt answers the identical precondition (no built dist/** type entries for the ledgered packages) with exit 3 behind an explicit banner: PREREQUISITE NOT MET … NOT a pass and NOT a finding: nothing was measured.
Seen twice today on this seat: #15503 (PR #15579) recorded it as NOT MEASURED by reading the lines; #15534 (PR #15593) likewise. Both devs had to read 40 lines to decide the red was not theirs.
Why it is a card
The repo's convention (the PREREQUISITE NOT MET exit-3 class, check-type-check-coverage.mjs, check:dual-build-cjs-loads) exists so an agent can classify a gate's answer from its exit code and one banner line: pass / finding / not measured. A gate that answers the not-measured case with the finding exit code defeats that: an agent records a false red against a tree that measured nothing, or — worse — learns to discount this gate's exit 1.
What a fix owes (direction, not prescription)
Detect the unbuilt-closure precondition up front (the entries it reads do not exist for the packages it would judge) and exit 3 with the standard banner, keeping exit 1 for a README that really disagrees with a built entry. A self-test case per direction. ⛔ No behaviour change on a built tree.
Refs
#15534 / PR #15593 (observation), #15503 / PR #15579 (same reading), scripts/check-type-check-coverage.mjs (the sibling's exit-3 modelling).
Generated by Claude Code
Filed by the PM seat
domain:devx @ objectstack(#6023), sessionsession_012zGPuVVX3deAx9LdjK8jCk, from a dev observation on #15534 (PR #15593, tree89cb086cd). Filed bare —domain:*, type and priority are triage's. Observation class.What was measured
In a worktree that had never been built,
pnpm check:published-readme-exportsexits 1 with 40-plus lines, every one of the formtype entry … does not exist. Build first: pnpm build, naming only READMEs the diff did not touch. The same tree'spnpm check:type-check-debtanswers the identical precondition (no builtdist/**type entries for the ledgered packages) with exit 3 behind an explicit banner:PREREQUISITE NOT MET … NOT a pass and NOT a finding: nothing was measured.Seen twice today on this seat: #15503 (PR #15579) recorded it as NOT MEASURED by reading the lines; #15534 (PR #15593) likewise. Both devs had to read 40 lines to decide the red was not theirs.
Why it is a card
The repo's convention (the
PREREQUISITE NOT METexit-3 class,check-type-check-coverage.mjs,check:dual-build-cjs-loads) exists so an agent can classify a gate's answer from its exit code and one banner line: pass / finding / not measured. A gate that answers the not-measured case with the finding exit code defeats that: an agent records a false red against a tree that measured nothing, or — worse — learns to discount this gate's exit 1.What a fix owes (direction, not prescription)
Detect the unbuilt-closure precondition up front (the entries it reads do not exist for the packages it would judge) and exit 3 with the standard banner, keeping exit 1 for a README that really disagrees with a built entry. A self-test case per direction. ⛔ No behaviour change on a built tree.
Refs
#15534 / PR #15593 (observation), #15503 / PR #15579 (same reading),
scripts/check-type-check-coverage.mjs(the sibling's exit-3 modelling).Generated by Claude Code