Skip to content

finding(types): objectui#8222's exclusion message still calls the seed decomposition a LIVE figure, which objectui#8243 made historical #8248

Description

@os-sam

Filed by the dev seat implementing #8243 (branch claude/pin-ledger-docstring-key-totals-8243, PR #8247), unassigned and unlabelled — grading and domain:* are triage's. Out of that card's scope by its own dispatch fence, which said in as many words not to touch objectui#8222's or objectui#7279's assertions, so it is reported rather than repaired.

The stale sentence

packages/types/src/__tests__/zod-mirror-parity.test.ts, inside the assertion message of every key total and cross-ledger figure the header writes down equals the ledgers (the objectui#8222 block):

⚠️ ONE live figure in the header is deliberately NOT here: the seed decomposition under UnmirroredDeclared ("what 121 used to mean"). It needs each key's PROVENANCE and no ledger in this file records that, so nothing here can derive it. It is excluded in writing where it stands, which is the other half of objectui#8222 — every live figure in that header is pinned or excluded with its reason, and ⛔ a new one that is neither should not be added.

Two of the three claims are still exactly right, and should not be disturbed:

  • the file header carries no copy of the decomposition, and none is to be added back — unchanged;
  • nothing in the file can derive it, because no ledger records key provenance — unchanged.

The one word that stopped being true is live. objectui#8243 rewrote the deferred-to statement in the UnmirroredDeclared docstring as a reading at NAMED REVISIONS (98 keys at beccf1c6b, of which 85 survive and 13 have left at ed7178bf3; 85 + 13 + 23 = 121). A statement anchored that way is historical: nothing landing later can make it false, so it is not a live figure and carries none of a live figure's obligations.

Why this is the same defect class it sits next to

This is a restatement that did not move when the thing it describes moved — one site further in again, and the fifth instance of that shape recorded on this file: objectui#6141 to objectui#7433 to objectui#7733 to objectui#8222 to objectui#8243. The damage is small and specific: a reader who arrives at objectui#8222's message rather than at the docstring is told a figure is live when it is not, and the obvious next action — "then it needs pinning or excluding" — is the wrong one for a historical reading.

Why it was not fixed in place

The dispatch for #8243 fenced that block explicitly (do not touch objectui#8222's or objectui#7279's assertions; if the work makes one fail, stop and report). Nothing failed — the block is green on PR #8247's final tree — so the ban held and the residue is reported here instead.

The mitigation PR #8247 did land, and it bounds the damage without touching the fenced block: objectui#8243's own describe block now carries a pointer saying that objectui#8222's exclusion note predates the historical rewrite and that its claim about the file header is still correct. So a reader of the new block is guided; a reader of only the old message is not.

The decision this poses

Whether the correction belongs in objectui#8222's message at all. Two shapes, and this is not obvious enough to be settled by whoever picks it up without saying which they chose:

  1. Amend the one word in objectui#8222's message — cheapest, and it puts the correction where the misleading sentence is. Costs an edit to another card's assertion message, which is the thing the finding(types): zod-mirror-parity's two ledger docstrings say UnmirroredDeclared records 94 keys; two instruments measure 87 — unmoved since objectui#7779, and outside every pin in the file #8243 fence existed to prevent, and sets the precedent that a later card may reword an earlier one's message when the world moves under it.
  2. Leave the message and let the pointer carry it — already the status quo after PR test(types): pin the zod-mirror-parity ledger docstrings' key total, anchor their seed history (objectui#8243) #8247. Costs nothing and risks nothing, but leaves a sentence that is wrong on its own terms, discoverable only by a reader who also reads the newer block.

There is a real argument for (1) beyond tidiness: the sentence is not a historical record of what objectui#8222 believed, it is operational guidance addressed to whoever next edits the header, and operational guidance that has gone stale is the exact failure this file exists to catch. There is a real argument for (2): every message in this file is a record of what was measured when it was written, and rewriting them retroactively erodes that.

Duplicate check

Ran on the repo-scoped REST list endpoint (state=open, 3 pages of 100, 288 issues after dropping PRs, window #7189 to #8246) plus a local grep — GET /search/issues was not used. The control fired: zod-mirror-parity returns 6 open issues including #8243 itself, so the scan is not blind. The targeted patterns (exclusion note, exclusion message, live figure near 8222, deferred-to) return 0. ⚠️ The window is open issues only; a closed card would not be seen, though the defect only came into existence with PR #8247.

Refs: #8243 · #8247 (the PR that made the sentence stale and added the pointer) · objectui#8222 · objectui#8242

Reported by the Claude Code seat working #8243, session session_0114Ytxr5sM1vdW19Y9WAx6E.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec lanefindingpm:queuepriority:p3tooling

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions