Filed by the domain:devx @ objectstack execution seat (session_012GKcPZbMoGq7WPzKLfRBTU) at 2026-09-08T05:5xZ, out of the contract-review of PR #16788 (closes #16626). ⛔ Left unlabelled for triage to route and rank.
The defect
pnpm gen:sdui-lockstep takes its reading from whatever the objectui checkout has at HEAD, while stamping the output's recordedAgainstPin field from .objectui-sha. Nothing compares the two. So if the objectui checkout is not sitting exactly on the pin, the script writes a record that names the pin while describing a different tree — and it does so silently, at exit 0.
The comparison site is scripts/check-sdui-lockstep.mjs:459-464 (rev-parse HEAD against the pin file).
Measured, deterministically, both ways
During #16626's objectui pin bump (a472b07167a3 → 53ded82bf7a4):
| objectui checkout at |
recordedAgainstPin written |
diagnostic codes recorded |
tip (d65b2baa) |
53ded82bf… — the pin |
25 (adds member-type-mismatch) |
a worktree pinned at 53ded82bf |
53ded82bf… |
24 |
⇒ The difference is real content, not noise. Re-generated at the pin, the output is byte-identical to the record shipped in PR #16788; at tip it gains a diagnostic code describing a tree this repo does not build against.
Reproduced twice: once by the dev during the bump, and independently by the contract-review-tier reviewer, which regenerated with OBJECTUI_ROOT pointed at each of the two trees.
Class (a), and ⚠️ that is a correction to the original self-rating
The dev that hit this recorded it as "borderline (c) — it is a tooling trap, not authored metadata" and left it as a noted, not filed item. The reviewer overruled that: it is a reproducible defect with a deterministic reproduction and a firing control, which is class (a) outright. Recorded here because the reclassification is the reason this card exists at all.
Why it matters beyond one bump
objectui-lockstep.json is the record a later reader consults to learn what the pinned console actually is. A record that names pin X while describing tree Y is worse than a missing one: it answers confidently and wrongly, and nothing downstream can tell. This is the same shape as the transcribed-count family this lane closed today (#15231, #15864, #16007) and as #16769 — a fact recorded with nothing comparing it to the thing it records — except here the recorded fact is stamped with the identity of a different thing, which makes it self-certifying.
Shape of a repair, ⛔ not a prescription
The script offers no --pin / --rev flag; pointing OBJECTUI_ROOT at a pinned worktree is the only lever today, and it is a convention nothing enforces. Either:
- resolve the objectui checkout to the pin before reading (
git -C "$OBJECTUI_ROOT" rev-parse the pin, read from there), or
- refuse loudly when
HEAD != .objectui-sha rather than recording — the fail-loud direction this repo prefers, and it needs no new machinery.
⛔ Do not "fix" it by making recordedAgainstPin record HEAD instead: that makes the field honest and the record useless, since the field's whole purpose is to say which pin the description belongs to.
Re-check commands
sed -n '455,470p' scripts/check-sdui-lockstep.mjs
grep -n 'recordedAgainstPin' packages/sdui-parser/objectui-lockstep.json
git show origin/main:.objectui-sha
At filing, the pin on origin/main is a472b07167a39e55491109e864bb5a54027dcfbd; PR #16788 moves it to 53ded82bf7a4. ⛔ Re-derive before acting — that PR is about to land and the line numbers will move.
Not a duplicate
#16715 (open) is a different defect in an adjacent gate — check:react-declaration-parity telling the reader this repository contains no sdui.manifest.json while the file is in the repo root. Same family of pin/manifest tooling, different failure.
Refs #16626 · PR #16788.
Generated by Claude Code
Filed by the
domain:devx @ objectstackexecution seat (session_012GKcPZbMoGq7WPzKLfRBTU) at 2026-09-08T05:5xZ, out of the contract-review of PR #16788 (closes #16626). ⛔ Left unlabelled for triage to route and rank.The defect
pnpm gen:sdui-locksteptakes its reading from whatever the objectui checkout has at HEAD, while stamping the output'srecordedAgainstPinfield from.objectui-sha. Nothing compares the two. So if the objectui checkout is not sitting exactly on the pin, the script writes a record that names the pin while describing a different tree — and it does so silently, at exit 0.The comparison site is
scripts/check-sdui-lockstep.mjs:459-464(rev-parse HEADagainst the pin file).Measured, deterministically, both ways
During #16626's objectui pin bump (
a472b07167a3→53ded82bf7a4):recordedAgainstPinwrittend65b2baa)53ded82bf…— the pinmember-type-mismatch)53ded82bf53ded82bf…⇒ The difference is real content, not noise. Re-generated at the pin, the output is byte-identical to the record shipped in PR #16788; at tip it gains a diagnostic code describing a tree this repo does not build against.
Reproduced twice: once by the dev during the bump, and independently by the contract-review-tier reviewer, which regenerated with
OBJECTUI_ROOTpointed at each of the two trees.Class (a), and⚠️ that is a correction to the original self-rating
The dev that hit this recorded it as "borderline (c) — it is a tooling trap, not authored metadata" and left it as a
noted, not fileditem. The reviewer overruled that: it is a reproducible defect with a deterministic reproduction and a firing control, which is class (a) outright. Recorded here because the reclassification is the reason this card exists at all.Why it matters beyond one bump
objectui-lockstep.jsonis the record a later reader consults to learn what the pinned console actually is. A record that names pin X while describing tree Y is worse than a missing one: it answers confidently and wrongly, and nothing downstream can tell. This is the same shape as the transcribed-count family this lane closed today (#15231, #15864, #16007) and as #16769 — a fact recorded with nothing comparing it to the thing it records — except here the recorded fact is stamped with the identity of a different thing, which makes it self-certifying.Shape of a repair, ⛔ not a prescription
The script offers no
--pin/--revflag; pointingOBJECTUI_ROOTat a pinned worktree is the only lever today, and it is a convention nothing enforces. Either:git -C "$OBJECTUI_ROOT" rev-parsethe pin, read from there), orHEAD != .objectui-sharather than recording — the fail-loud direction this repo prefers, and it needs no new machinery.⛔ Do not "fix" it by making
recordedAgainstPinrecord HEAD instead: that makes the field honest and the record useless, since the field's whole purpose is to say which pin the description belongs to.Re-check commands
At filing, the pin on
origin/mainisa472b07167a39e55491109e864bb5a54027dcfbd; PR #16788 moves it to53ded82bf7a4. ⛔ Re-derive before acting — that PR is about to land and the line numbers will move.Not a duplicate
#16715 (open) is a different defect in an adjacent gate —
check:react-declaration-paritytelling the reader this repository contains nosdui.manifest.jsonwhile the file is in the repo root. Same family of pin/manifest tooling, different failure.Refs #16626 · PR #16788.
Generated by Claude Code