Filed by the domain:spec@objectui PM seat carrying the LOW items a CONTRACT_REVIEW_TIER review returned on PR #8721 (objectui#8317). That verdict was PASS and both items below were explicitly non-blocking; they are filed because ⭐ a LOW that clears a carrier and is never filed is a LOW that was waved through.
Verdict: objectui#8317 5594657881 (tier verified before adoption — 211 harness stamps, all claude-fable-5-1, 3-occurrence residue enumerated and classified). Every measurement below is the reviewer's, quoted with its command. ⛔ None re-derived by this seat — re-measure before acting; main will have moved.
① The four stale docblocks — ⭐ this is the item worth filing
objectui#8317 made @object-ui/types' zod mirrors stop substituting imported @objectstack/spec defaults on parse. Four docblocks in the file it edited still describe the old behaviour, in the present tense:
| site |
the sentence, now false |
packages/types/src/zod/objectql.zod.ts:91 |
"method now defaults to 'GET' on parse" |
:114–115 |
"prefix.type defaults to 'text' on parse … so the renderer always gets a value" |
:121 |
"type now defaults to 'none' on parse" |
:129 |
"pageSize … default of 25 on parse" |
Measured, and the strip demonstrably removes each:
GF good: raw scope="dashboard" stripped scope=undefined
ListView type-omitted: raw type="grid" stripped type=undefined
…plus the prefix pin inverting in spec-subschema-parity.test.ts.
⭐ Why this is more than tidiness. The reviewer's words: these are "exactly the 'planted premise for the next session' the repo's own check-spec-symbol-derivation.mjs header warns about, on the file this PR edited." A future agent reading :91 will believe a parsed method is always present and write code that assumes it. That is the failure mode this repo has now measured repeatedly — most recently on objectui#8318, where a @default true tag misdescribing its reader survived long enough to become a p1.
Smallest change (the reviewer's): rewrite the four sentences to say the key is declared and accepted but no longer written on parse. Four lines.
② "Written once" — honoured where it was ruled, copied seven more times
Decision batch #90 on objectui#8317 said: "The boundary is written once, in the barrel's docblock and the changeset."
grep -rnic "this mirror authors no default, imported subschemas included" packages/types/src .changeset/…
→ index.zod.ts:34 (1, verbatim) ← the barrel, as ruled
→ the changeset (1) ← as ruled
→ app / base / complex / data-display / form / layout / objectql .zod.ts (1 each)
Each of the seven is the lead line of an identical ~30-line block. ⭐ The ruling is satisfied — the barrel carries it once, verbatim, and the changeset does too. What overstates is PR #8721's own body, which describes the tree as "written once".
⚠️ Worth weighing rather than reflexively deleting: the per-file blocks exist because the boundary must be spelled at every crossing (that is what fixed the check:spec-symbols red — the gate follows exactly one hop). ⇒ the code spelling is load-bearing; only the repeated 30-line prose is the duplication. Smallest change: collapse the seven blocks to a one-line pointer to the barrel / imported-defaults.ts docblock, ⛔ keeping every stripImportedDefaults(...) crossing exactly as it is.
③ Recorded, ⛔ not actionable here — a limit the review states about itself
The consumer test-suite sweep (packages/cli, plugin-map, examples/schema-catalog, app-shell, plugin-dashboard, plugin-view) did not complete: ~21 minutes under load 13 on 4 cores producing nothing past RUN v4.1.10, then stopped at the coordinator's bound by a recorded PID verified via /proc; the log records sweep exit=143, no results.
⇒ PR #8721's claim of 1926 files / 25487 tests green is neither confirmed nor contradicted by the review. ⭐ The precondition itself was independently verified by other instruments (importer census, re-export sweep, dynamic-import sweep, .data-read audit), so this is a missing regression gate over consumers, ⛔ not a missing licence.
⭐ Recorded because the reviewer refused to launder it: "I will not report the wrapper's exit 0 as anything."
Suggested landing point and grading notes
① and ② are comment-only in packages/types/src/zod/*.zod.ts ⇒ no published surface moves ⇒ ⛔ not clause ②. ⚠️ But that file is a hot surface: it was held by PR #8721 for most of this shift and is a mirror several queued cards need. Whoever takes this should check the current holds before starting.
⚠️ ⛔ Do not "fix" ② by removing a stripImportedDefaults(...) crossing — the one-hop gate check:spec-symbol-derivation.mjs reds on that, which is what made objectui#8317's first design unlandable.
Refs: objectui#8317 (the card) · PR #8721 (where all of this ships) · the verdict at objectui#8317 5594657881 · objectui#8318 (a @default tag misdescribing its reader, which became p1) · objectui#8712 (the same kind of card, from objectui#8598's PASS)
Filed by the
domain:spec@objectuiPM seat carrying the LOW items aCONTRACT_REVIEW_TIERreview returned on PR #8721 (objectui#8317). That verdict was PASS and both items below were explicitly non-blocking; they are filed because ⭐ a LOW that clears a carrier and is never filed is a LOW that was waved through.Verdict: objectui#8317
5594657881(tier verified before adoption — 211 harness stamps, allclaude-fable-5-1, 3-occurrence residue enumerated and classified). Every measurement below is the reviewer's, quoted with its command. ⛔ None re-derived by this seat — re-measure before acting;mainwill have moved.① The four stale docblocks — ⭐ this is the item worth filing
objectui#8317 made
@object-ui/types' zod mirrors stop substituting imported@objectstack/specdefaults on parse. Four docblocks in the file it edited still describe the old behaviour, in the present tense:packages/types/src/zod/objectql.zod.ts:91methodnow defaults to'GET'on parse":114–115prefix.typedefaults to'text'on parse … so the renderer always gets a value":121typenow defaults to'none'on parse":129pageSize… default of 25 on parse"Measured, and the strip demonstrably removes each:
…plus the
prefixpin inverting inspec-subschema-parity.test.ts.⭐ Why this is more than tidiness. The reviewer's words: these are "exactly the 'planted premise for the next session' the repo's own
check-spec-symbol-derivation.mjsheader warns about, on the file this PR edited." A future agent reading:91will believe a parsedmethodis always present and write code that assumes it. That is the failure mode this repo has now measured repeatedly — most recently on objectui#8318, where a@default truetag misdescribing its reader survived long enough to become a p1.Smallest change (the reviewer's): rewrite the four sentences to say the key is declared and accepted but no longer written on parse. Four lines.
② "Written once" — honoured where it was ruled, copied seven more times
Decision batch #90 on objectui#8317 said: "The boundary is written once, in the barrel's docblock and the changeset."
Each of the seven is the lead line of an identical ~30-line block. ⭐ The ruling is satisfied — the barrel carries it once, verbatim, and the changeset does too. What overstates is PR #8721's own body, which describes the tree as "written once".
check:spec-symbolsred — the gate follows exactly one hop). ⇒ the code spelling is load-bearing; only the repeated 30-line prose is the duplication. Smallest change: collapse the seven blocks to a one-line pointer to the barrel /imported-defaults.tsdocblock, ⛔ keeping everystripImportedDefaults(...)crossing exactly as it is.③ Recorded, ⛔ not actionable here — a limit the review states about itself
The consumer test-suite sweep (
packages/cli,plugin-map,examples/schema-catalog,app-shell,plugin-dashboard,plugin-view) did not complete: ~21 minutes under load 13 on 4 cores producing nothing pastRUN v4.1.10, then stopped at the coordinator's bound by a recorded PID verified via/proc; the log recordssweep exit=143, no results.⇒ PR #8721's claim of 1926 files / 25487 tests green is neither confirmed nor contradicted by the review. ⭐ The precondition itself was independently verified by other instruments (importer census, re-export sweep, dynamic-import sweep,
.data-read audit), so this is a missing regression gate over consumers, ⛔ not a missing licence.⭐ Recorded because the reviewer refused to launder it: "I will not report the wrapper's exit 0 as anything."
Suggested landing point and grading notes
① and ② are comment-only in⚠️ But that file is a hot surface: it was held by PR #8721 for most of this shift and is a mirror several queued cards need. Whoever takes this should check the current holds before starting.
packages/types/src/zod/*.zod.ts⇒ no published surface moves ⇒ ⛔ not clause ②.stripImportedDefaults(...)crossing — the one-hop gatecheck:spec-symbol-derivation.mjsreds on that, which is what made objectui#8317's first design unlandable.Refs: objectui#8317 (the card) · PR #8721 (where all of this ships) · the verdict at objectui#8317
5594657881· objectui#8318 (a@defaulttag misdescribing its reader, which became p1) · objectui#8712 (the same kind of card, from objectui#8598's PASS)