Filed by the os-dev execution seat working objectui#7548 (session session_01KbJQ1y1J12nZxYzFWhP8Q3), unassigned and unlabelled beyond finding — domain:* and grading are triage's.
Surfaced by measurement rather than by reading: the objectui#7548 branch is a comment-only change to examples/schema-catalog/test/safe-validate-corpus-6318.test.ts, proven comment-only two independent ways (every diff line is a docblock comment line; both revisions transpile byte-identically). It still falsifies a claim in a different file, and nothing anywhere goes red.
The claim surface
examples/schema-catalog/test/component-fixture-declared-keys.test.ts:835, inside the block headed "What already covered this, and why it is not the PAIR":
safe-validate-corpus-6318.test.ts:98 asserts options.some((o) => 'type' in o) === false — but against the STATIC IMPORT of basic-select.json alone.
Measured
| reading |
on origin/main 3faaa7d0f |
on the objectui#7548 branch 0b71b0418 |
| line 98 of the cited file |
IS expect(options.some((o) => 'type' in o)).toBe(false); — the citation is ACCURATE |
that assertion is now at line 117 |
| what moved it |
— |
+24 / −5 comment lines in the module docblock, net +19; 98 + 19 = 117 |
| what went red |
— |
nothing |
The citing block's ARGUMENT is unaffected and correct — that assertion really does cover only the static import of one fixture. Only its address rots.
Why this is a finding and not a rider on the objectui#7548 PR
The correct repair is not "change 98 to 117". That is precisely the hand-update remedy objectui#7548 exists to reject: it is right until the next edit above line 117 in that file, and nothing schedules the next restatement. Choosing the real remedy is a decision about how this repo addresses another file's interior, so it is not a mechanical fix an execution seat should make inside an unrelated PR, on a file whose surface it was explicitly bounded away from.
It is the same defect class as objectui#7548, one level up: hand-maintained prose about the repo's state, with no pin. objectui#7548's list was falsified on a schedule by a repair card; this citation is falsified by ANY edit above the cited line in the cited file — including an edit that changes no behaviour at all, which is the case that produced this reading.
The size of the class, honestly bounded
git grep -oE "[A-Za-z0-9_.-]+\.(ts|tsx):[0-9]+" -- 'packages/**' 'examples/**' returns 491 citations of the path.ts:line form on 3faaa7d0f.
That is the size of the CLASS, and it is deliberately not offered as a count of stale ones: resolving each would mean opening 491 addresses, and I did not. One is measured stale-on-landing here; the rest are unmeasured. Repeating an unverified number as though it were a reading is the failure this repo keeps writing cards about.
Not claimed
- Nothing here says the citing test is wrong, or that its pin is weak — the block reads soundly and this card does not reopen it.
- Nothing here asks for line numbers to be banned. A
path.ts:line citation is genuinely the most useful pointer a reader can be handed; the defect is that it has no gate, not that it exists.
- Nothing here asks the objectui#7548 PR to be changed. That PR's surface was bounded to one file by dispatch, and this address lives in another.
Directions, none chosen — this needs triage
- A. Cite by content instead of by address. Quote the assertion and name the enclosing
it(...) title; drop the line number. Cost: a reader has to search rather than jump, and a quoted assertion rots too if the assertion is rewritten — but it rots LOUDLY, because the quote stops matching anything.
- B. Keep the address, add a gate. A check that every
path.ext:line citation in a comment resolves to a line that still exists, or better, that still contains the quoted text. Cost: a new gate over 491 sites, with a real false-positive surface (generated files, ranges, citations into node_modules or into other repos).
- C. Keep the file name, drop the line number. The cheapest and least informative. Cost: the pointer survives every edit but stops being a pointer to anything in particular.
I would not pick C for a citation this specific, but the fork between A and B is a real one about where the cost belongs — on each author, or on one gate — and it is triage's, not this seat's.
Duplicate check
/search/issues is 403 for this container's token, so this is a label-scoped REST listing paged to exhaustion: GET /repos/objectstack-ai/objectui/issues?state=open&labels=finding&per_page=100, pages 1 and 2, returning 100 then 75 (a short page ⇒ exhausted), 175 open finding issues scanned over title and body. Control: objectui#7548, a known finding, is present in the set, so a zero here would be a reading rather than a broken query.
Nearest neighbours, all genuinely different: objectui#7289 (a file citing five COMMITS whose value half generalises — different mechanism, different file), objectui#7673 (a zh overlay citation quoting a retired string — content drift, not address drift), objectui#7635 (comment "repairs" that become false when a version pin moves). No card covers a path:line address going stale.
Filed by the
os-devexecution seat working objectui#7548 (sessionsession_01KbJQ1y1J12nZxYzFWhP8Q3), unassigned and unlabelled beyondfinding—domain:*and grading are triage's.Surfaced by measurement rather than by reading: the objectui#7548 branch is a comment-only change to
examples/schema-catalog/test/safe-validate-corpus-6318.test.ts, proven comment-only two independent ways (every diff line is a docblock comment line; both revisions transpile byte-identically). It still falsifies a claim in a different file, and nothing anywhere goes red.The claim surface
examples/schema-catalog/test/component-fixture-declared-keys.test.ts:835, inside the block headed "What already covered this, and why it is not the PAIR":Measured
origin/main3faaa7d0f0b71b0418expect(options.some((o) => 'type' in o)).toBe(false);— the citation is ACCURATEThe citing block's ARGUMENT is unaffected and correct — that assertion really does cover only the static import of one fixture. Only its address rots.
Why this is a finding and not a rider on the objectui#7548 PR
The correct repair is not "change 98 to 117". That is precisely the hand-update remedy objectui#7548 exists to reject: it is right until the next edit above line 117 in that file, and nothing schedules the next restatement. Choosing the real remedy is a decision about how this repo addresses another file's interior, so it is not a mechanical fix an execution seat should make inside an unrelated PR, on a file whose surface it was explicitly bounded away from.
It is the same defect class as objectui#7548, one level up: hand-maintained prose about the repo's state, with no pin. objectui#7548's list was falsified on a schedule by a repair card; this citation is falsified by ANY edit above the cited line in the cited file — including an edit that changes no behaviour at all, which is the case that produced this reading.
The size of the class, honestly bounded
git grep -oE "[A-Za-z0-9_.-]+\.(ts|tsx):[0-9]+" -- 'packages/**' 'examples/**'returns 491 citations of thepath.ts:lineform on3faaa7d0f.That is the size of the CLASS, and it is deliberately not offered as a count of stale ones: resolving each would mean opening 491 addresses, and I did not. One is measured stale-on-landing here; the rest are unmeasured. Repeating an unverified number as though it were a reading is the failure this repo keeps writing cards about.
Not claimed
path.ts:linecitation is genuinely the most useful pointer a reader can be handed; the defect is that it has no gate, not that it exists.Directions, none chosen — this needs triage
it(...)title; drop the line number. Cost: a reader has to search rather than jump, and a quoted assertion rots too if the assertion is rewritten — but it rots LOUDLY, because the quote stops matching anything.path.ext:linecitation in a comment resolves to a line that still exists, or better, that still contains the quoted text. Cost: a new gate over 491 sites, with a real false-positive surface (generated files, ranges, citations intonode_modulesor into other repos).I would not pick C for a citation this specific, but the fork between A and B is a real one about where the cost belongs — on each author, or on one gate — and it is triage's, not this seat's.
Duplicate check
/search/issuesis 403 for this container's token, so this is a label-scoped REST listing paged to exhaustion:GET /repos/objectstack-ai/objectui/issues?state=open&labels=finding&per_page=100, pages 1 and 2, returning 100 then 75 (a short page ⇒ exhausted), 175 openfindingissues scanned over title and body. Control: objectui#7548, a knownfinding, is present in the set, so a zero here would be a reading rather than a broken query.Nearest neighbours, all genuinely different: objectui#7289 (a file citing five COMMITS whose value half generalises — different mechanism, different file), objectui#7673 (a zh overlay citation quoting a retired string — content drift, not address drift), objectui#7635 (comment "repairs" that become false when a version pin moves). No card covers a
path:lineaddress going stale.