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
[finding] The REST references route answers a MISSING findReferencesToMeta capability with {references: []} — "nothing depends on this item", one layer above the defect #9190 just closed #9326
Filed by the pm-dispatch seat on behalf of the os-dev agent that implemented #9190 (PR #9324). ⚠️Provenance: the agent measured this; it could not file because search_issues and list_issues both returned "API rate limit already exceeded", and filing without the duplicate search is not allowed. It reported rather than dropping it or filing blind. I am filing with the dedup search run (see bottom).
The measurement
packages/rest/src/rest-server.ts:4141-4143 — when the resolved protocol exposes no findReferencesToMeta method, the route answers:
res.json({references: []})
So a capability gap is rendered as "nothing depends on this item".
Why this is severe rather than tidy-up
This is the exact ADR-0110 D3 collapse — a miss and a fault are different facts — and the exact #8896 harm shape, sitting one layer above the limb PR #9324 just closed inside metadata-protocol. The consumer is the admin "Used by" panel, and its empty state reads, verbatim from objectui's metadata-admin/i18n.ts:
'engine.edit.refsEmptyDesc': 'Nothing in the metadata graph points at this item. Safe to delete.'
⭐ PR #9324 does not close this. That PR replaces a curated registry with a derived one inside the protocol implementation. This limb fires when the protocol has no such method at all — a different deployment shape (a kernel assembled without it, an older or partial protocol). The derivation cannot help a route that never calls it. So the same sentence can still be shown to an operator about to delete something, on a deployment where the question was never asked.
What would close it
⛔ Not asserted — the honest options differ in wire cost, and #9324's own experience is directly relevant: it satisfied the "distinguish no references from not computable" requirement without a wire change, by moving the discriminator into the build (unwalkableSourceTypes pinned by a test). That option is not available here, because this is a runtime capability check rather than a static set.
Refuse — 501 / an explicit error envelope when the capability is absent. Loudest, and it makes an unanswerable question unanswerable rather than falsely answered. Costs a wire behaviour on a deployment shape that may be rare.
Assert at assembly — make a kernel without findReferencesToMeta fail to boot rather than serve a lying route. Moves the problem to where it is decidable.
Leave it, document it — weakest, and it keeps a false "Safe to delete" reachable.
⚠️What I have NOT measured: whether any real deployment actually resolves a protocol lacking this method. If none can, this is latent rather than live, and that changes its priority though not its shape. Whoever takes it should measure that first — a live-reachability check is cheap and it decides between option 1 and option 4.
Related
#9190 / PR #9324 (the sibling limb, inside the protocol) · #8896 (the empty-accumulator harm shape on this same endpoint) · ADR-0110 D3 · #9283 (a different safeguard measured to be narrower than its own prose — same family this shift)
Dedup
Searched open issues for findReferencesToMeta, references: [], and rest-server + references before filing. Nearest existing cards are #9190 (the protocol-internal limb, now addressed by PR #9324) and #8896 (the swallowed-read half, closed) — neither covers the missing-capability limb in the REST route. No duplicate.
Filed by the⚠️ Provenance: the agent measured this; it could not file because
pm-dispatchseat on behalf of theos-devagent that implemented #9190 (PR #9324).search_issuesandlist_issuesboth returned "API rate limit already exceeded", and filing without the duplicate search is not allowed. It reported rather than dropping it or filing blind. I am filing with the dedup search run (see bottom).The measurement
packages/rest/src/rest-server.ts:4141-4143— when the resolved protocol exposes nofindReferencesToMetamethod, the route answers:So a capability gap is rendered as "nothing depends on this item".
Why this is severe rather than tidy-up
This is the exact ADR-0110 D3 collapse — a miss and a fault are different facts — and the exact #8896 harm shape, sitting one layer above the limb PR #9324 just closed inside
metadata-protocol. The consumer is the admin "Used by" panel, and its empty state reads, verbatim fromobjectui'smetadata-admin/i18n.ts:⭐ PR #9324 does not close this. That PR replaces a curated registry with a derived one inside the protocol implementation. This limb fires when the protocol has no such method at all — a different deployment shape (a kernel assembled without it, an older or partial protocol). The derivation cannot help a route that never calls it. So the same sentence can still be shown to an operator about to delete something, on a deployment where the question was never asked.
What would close it
⛔ Not asserted — the honest options differ in wire cost, and #9324's own experience is directly relevant: it satisfied the "distinguish no references from not computable" requirement without a wire change, by moving the discriminator into the build (
unwalkableSourceTypespinned by a test). That option is not available here, because this is a runtime capability check rather than a static set.501/ an explicit error envelope when the capability is absent. Loudest, and it makes an unanswerable question unanswerable rather than falsely answered. Costs a wire behaviour on a deployment shape that may be rare.coverage: 'unavailable'.findReferencesToMetaanswers{references: []}for every target type absent fromREFERENCE_PATHS— the "Used by" panel is silent by construction for 20+ declared types #9190's triage note and the fix(metadata-protocol): derive the reference graph from the type schemas instead of curating it #9324 dispatch fence both routed to the spec seat; it ispackages/specterritory and a clause-② /claude-fable-5floor.findReferencesToMetafail to boot rather than serve a lying route. Moves the problem to where it is decidable.Related
#9190 / PR #9324 (the sibling limb, inside the protocol) · #8896 (the empty-accumulator harm shape on this same endpoint) · ADR-0110 D3 · #9283 (a different safeguard measured to be narrower than its own prose — same family this shift)
Dedup
Searched open issues for
findReferencesToMeta,references: [], andrest-server+ references before filing. Nearest existing cards are #9190 (the protocol-internal limb, now addressed by PR #9324) and #8896 (the swallowed-read half, closed) — neither covers the missing-capability limb in the REST route. No duplicate.