You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Observation-class finding, measured while implementing #4607 (PR #4609). Nothing is broken today and nothing is changed for it there beyond a pinned test — filing so the next seat to touch findClaim finds it measured rather than discovers it.
Background
findClaim in scripts/check-spec-symbol-derivation.mjs extracts the symbols a spec-alignment claim CITES by taking the capitalised identifiers in a 48-character window after each @objectstack/spec mention.
Until #4607 that list only decorated the failure message of a declaration that had already failed the tie test, so noise in it was free. #4607 made it load-bearing: a claim whose cited symbols are ALL absent from the installed spec is now flagged regardless of an incidental tie. Noise in the citation list is therefore a potential false-positive source.
PR #4609 contained the reachable half — the window used to run past the end of the claim's sentence and scrape the capitalised opening words of the NEXT one, so ActionDef (packages/core/src/actions/ActionRunner.ts) reported Open as a cited symbol from "…mirroring @objectstack/spec's ActionSchema. Open key set on a data bag is correct". Symbols are now taken from the mention's own sentence.
What is left
The sentence test is "a ., ;, ! or ? followed by whitespace or end-of-string" — the same shape the claim/mention pairing already uses. A comment whose claim line simply does not end in punctuation is one sentence as far as normalizeDoc is concerned, because the line break collapses to a space.
Live instance, PageNodeSchema (packages/types/src/layout.ts:533):
* Aligned with @objectstack/spec PageSchema
*
* This is the SDUI NODE, not the authored page DOCUMENT — the spec's `Page`
PageSchema IS exported by the pinned spec, so the citation list is not all-dangling and the declaration is governed by the tie test exactly as before — the verdict is right and only the (unrendered) message would be odd.
The measured repo-wide population of the shape that would actually misfire — a claim citing NO real symbol, with an incidental live tie — is zero (PR #4609's census: 3 declarations carry a claim and pass the tie test; 2 cite only live symbols, 1 is mixed, 0 are all-dangling). So this is a latent precision gap, not a defect anyone hits.
Why it is not obviously worth closing
Tightening further means deciding what a citation LOOKS like, and the two candidate rules both have costs that were not paid down here:
A third option is to leave it and fix the two or three comments instead — PageNodeSchema only needs a full stop after PageSchema. That is a one-character edit in a package #4580-round2 currently owns, which is why PR #4609 did not make it.
Deliberately not established here
Priority. No user hits this, no metadata is refused, and no verdict in the tree changes. It is a precision gap in a guard's message-and-input path, which is why this is an observation rather than a defect.
Whether the message noise alone justifies action. The list is only rendered for a declaration that is already failing, where a reader has the file open anyway.
Pinned as a KNOWN LIMITATION test in scripts/__tests__/check-spec-symbol-derivation.test.ts (PR #4609) so the behaviour is asserted rather than assumed, and so a future fix shows up as a deliberate change to that assertion.
Observation-class finding, measured while implementing #4607 (PR #4609). Nothing is broken today and nothing is changed for it there beyond a pinned test — filing so the next seat to touch
findClaimfinds it measured rather than discovers it.Background
findClaiminscripts/check-spec-symbol-derivation.mjsextracts the symbols a spec-alignment claim CITES by taking the capitalised identifiers in a 48-character window after each@objectstack/specmention.Until #4607 that list only decorated the failure message of a declaration that had already failed the tie test, so noise in it was free. #4607 made it load-bearing: a claim whose cited symbols are ALL absent from the installed spec is now flagged regardless of an incidental tie. Noise in the citation list is therefore a potential false-positive source.
PR #4609 contained the reachable half — the window used to run past the end of the claim's sentence and scrape the capitalised opening words of the NEXT one, so
ActionDef(packages/core/src/actions/ActionRunner.ts) reportedOpenas a cited symbol from "…mirroring@objectstack/spec'sActionSchema. Open key set on a data bag is correct". Symbols are now taken from the mention's own sentence.What is left
The sentence test is "a
.,;,!or?followed by whitespace or end-of-string" — the same shape the claim/mention pairing already uses. A comment whose claim line simply does not end in punctuation is one sentence as far asnormalizeDocis concerned, because the line break collapses to a space.Live instance,
PageNodeSchema(packages/types/src/layout.ts:533):measured citation list:
This,SDUIandNODEare prose.Why it costs nothing today
PageSchemaIS exported by the pinned spec, so the citation list is not all-dangling and the declaration is governed by the tie test exactly as before — the verdict is right and only the (unrendered) message would be odd.The measured repo-wide population of the shape that would actually misfire — a claim citing NO real symbol, with an incidental live tie — is zero (PR #4609's census: 3 declarations carry a claim and pass the tie test; 2 cite only live symbols, 1 is mixed, 0 are all-dangling). So this is a latent precision gap, not a defect anyone hits.
Why it is not obviously worth closing
Tightening further means deciding what a citation LOOKS like, and the two candidate rules both have costs that were not paid down here:
Schema/Config/Typesuffix, or membership in the spec's export set). Membership is circular: a symbol is "cited" only if the spec exports it, which is exactly the question being asked, and it would make every genuinely-retired citation invisible — the finding(types,i18n): eight doc comments claim alignment with @objectstack/spec symbols the spec does not export #4597 class this guard exists to catch.A third option is to leave it and fix the two or three comments instead —
PageNodeSchemaonly needs a full stop afterPageSchema. That is a one-character edit in a package#4580-round2currently owns, which is why PR #4609 did not make it.Deliberately not established here
Pinned as a KNOWN LIMITATION test in
scripts/__tests__/check-spec-symbol-derivation.test.ts(PR #4609) so the behaviour is asserted rather than assumed, and so a future fix shows up as a deliberate change to that assertion.Refs #4607, #4592, #4597, PR #4609.
Generated by Claude Code