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
{{ message }}
Repository navigation
[finding] a rest-server.ts block documents resolveProtocol from a position TSDoc binds to a DIFFERENT function — the stale ADR-0006 spelling #15858 just fixed sat there for three weeks because a sweep reads the docblock OF the method it changes #18487
Filed by the domain:cli execution PM seat (pm:seat#6024, session session_01DvvamiacK328idtBYJBxV3) out of #15858's ACCEPT. ⛔ Filed unlabelled and ungraded — domain:*, type and priority are the triage seat's.
The finding
packages/rest/src/rest-server.ts carries a block comment that documents resolveProtocol from a position where nothing binds it to resolveProtocol.
The block is immediately followed by a second block comment that binds to resolveHostnameCached. TSDoc attaches the nearer block to the declaration below it, so the first paragraph documents no declaration at all — and resolveProtocol separately has its own, newer docblock further down.
⚠️Locate from the SYMBOL, ⛔ not from a line number. This file is actively edited (PRs #15395, #15673, #16543, #16538 all landed in it inside two weeks) and the numbers have already drifted once inside this round: a reading seat measured :1841 / :4674 on the same day another cited :1788-1794 / :4623.
⭐ Why this is worth a card rather than a tidy-up
It is a plausible mechanism for how a retired spelling survived a rename sweep. That same paragraph is the one #15858 just corrected: it described the environment-scoping URL family in the /projects/… spelling that ADR-0006 v4 D2 retired on 2026-08-28 with ⛔ no alias and ⛔ no grace period. It survived the sweep for roughly three weeks.
A sweep — human or agent — reads the docblock of the method it is changing. A block that binds to nothing is invisible from there. ⇒ the defect is not the stale sentence; the stale sentence is the symptom. The same position will silently carry the next stale sentence too.
⚠️ And it is not private: the block ships. It was measured present in dist/index.d.ts, dist/index.d.cts and both bundles — which is why #15858 graded a patch changeset rather than skip-changeset.
Second instance, same block, same root cause
The same detached block carries a numbered environment-resolution chain — hostname → X-Environment-Id header → default-project → control-plane — while resolveRequestEnvironmentId now tries the host-injected RestRequestEnvResolver seam (ADR-0076 D11 step ④) FIRST.
⭐ That method's OWN bound docblock states the current chain correctly. ⇒ nothing a reader of the method sees is wrong; the stale chain exists only in the block nothing binds. That is the same defect, and it is the second sentence to rot in the same position — which is the argument for fixing the position rather than the sentences.
⛔ This is deliberately not two cards. One root cause, two instances; counting symptoms instead of producers is a mistake this seat made earlier in the same round and corrected publicly.
⚠️ Adjacent, NOT measured, ⛔ not claimed as a defect
The same paragraph says "It is NOT a row in the projects TABLE". That is about a table, not a URL, so #15858 deliberately left it untouched, and the cloud seat that answered #15861 flagged it and declined to guess.
One in-repo datum for whoever picks it up, offered as a datum and ⛔ not as a finding: packages/spec consistently names the cloud control plane's environment row sys_environment (discovery.zod.ts:414, platform-object-names.ts:151), so the sentence is plausibly stale too. ⛔ The authority is objectstack-ai/cloud, and ⛔ no seat in this session has read access to that tree — so this is an open reading request, not a claim.
Shape (⛔ not prescribed)
Either re-attach the paragraph to the declaration it describes, or retire it in favour of resolveProtocol's own bound docblock — whichever the owner judges. ⚠️ Whoever takes it should decide the position question first; editing the sentences again without moving them re-creates the same trap.
Dedupe — complete, with a live control
Semantic search over this repo, two queries. Closest relatives read and rejected:
Positive control in the same instrument and run: the two queries returned 20 and 76 results including live open cards, so the rejections are readings and ⛔ not a dead search.
Filed by the
domain:cliexecution PM seat (pm:seat#6024, sessionsession_01DvvamiacK328idtBYJBxV3) out of #15858's ACCEPT. ⛔ Filed unlabelled and ungraded —domain:*,typeand priority are the triage seat's.The finding
packages/rest/src/rest-server.tscarries a block comment that documentsresolveProtocolfrom a position where nothing binds it toresolveProtocol.The block is immediately followed by a second block comment that binds to
resolveHostnameCached. TSDoc attaches the nearer block to the declaration below it, so the first paragraph documents no declaration at all — andresolveProtocolseparately has its own, newer docblock further down.:1841/:4674on the same day another cited:1788-1794/:4623.⭐ Why this is worth a card rather than a tidy-up
It is a plausible mechanism for how a retired spelling survived a rename sweep. That same paragraph is the one #15858 just corrected: it described the environment-scoping URL family in the
/projects/…spelling that ADR-0006 v4 D2 retired on 2026-08-28 with ⛔ no alias and ⛔ no grace period. It survived the sweep for roughly three weeks.A sweep — human or agent — reads the docblock of the method it is changing. A block that binds to nothing is invisible from there. ⇒ the defect is not the stale sentence; the stale sentence is the symptom. The same position will silently carry the next stale sentence too.
dist/index.d.ts,dist/index.d.ctsand both bundles — which is why #15858 graded apatchchangeset rather thanskip-changeset.Second instance, same block, same root cause
The same detached block carries a numbered environment-resolution chain — hostname →
X-Environment-Idheader → default-project → control-plane — whileresolveRequestEnvironmentIdnow tries the host-injectedRestRequestEnvResolverseam (ADR-0076 D11 step ④) FIRST.⭐ That method's OWN bound docblock states the current chain correctly. ⇒ nothing a reader of the method sees is wrong; the stale chain exists only in the block nothing binds. That is the same defect, and it is the second sentence to rot in the same position — which is the argument for fixing the position rather than the sentences.
⛔ This is deliberately not two cards. One root cause, two instances; counting symptoms instead of producers is a mistake this seat made earlier in the same round and corrected publicly.
The same paragraph says "It is NOT a row in the projects TABLE". That is about a table, not a URL, so #15858 deliberately left it untouched, and the cloud seat that answered #15861 flagged it and declined to guess.
One in-repo datum for whoever picks it up, offered as a datum and ⛔ not as a finding:
packages/specconsistently names the cloud control plane's environment rowsys_environment(discovery.zod.ts:414,platform-object-names.ts:151), so the sentence is plausibly stale too. ⛔ The authority isobjectstack-ai/cloud, and ⛔ no seat in this session has read access to that tree — so this is an open reading request, not a claim.Shape (⛔ not prescribed)
Either re-attach the paragraph to the declaration it describes, or retire it in favour of⚠️ Whoever takes it should decide the position question first; editing the sentences again without moving them re-creates the same trap.
resolveProtocol's own bound docblock — whichever the owner judges.Dedupe — complete, with a live control
Semantic search over this repo, two queries. Closest relatives read and rejected:
packages/specmodules. ⛔ Different mechanism (the doc generator's module-description selection, not in-source TSDoc adjacency), different package, closed.build-skill-references.tsstill picks the first JSDoc block anywhere in the file — the defectbuild-docs.tsfixed, publishing a private constant's comment to customers #12094 (closed) —build-skill-references.tspicks the first JSDoc block anywhere in the file. ⛔ Also a tool selecting wrongly, ⛔ not a source block bound to nothing.no response schema in packages/spec at all, which is false #16125, contradictsWrapperResolution's docblock still calls functionBodies a flat bare-name index — #13474 made it scope-aware #13787, spec: the D3 ledger'sresume-authority-undeclared…acceptance criteria still says "supportsPauseis a declaration nothing enforces (#5703)" — the same staleness #6749 fixed in the TSDoc, one channel over #6844, Two docblocks still referenceIPubSub's retired "at-least-once" claim after #12651 corrects it #12836, [finding] The block-levelpublicSharingTSDoc still describes the switch as mint-only — the same true-but-half sentence #14703 just corrected one level down, in the doc that encloses it #16198, spec TSDoc still describespublicSharing.enabledas mint-only and omits the switched-off block fromresolveToken'snullcauses (#14033 follow-up) #14703, [finding]resolve-authz-context.ts§6b-config states a rule a maintainer ruling REVERSED, and cites a pin that now records the reversal — the first thing the next implementer of this site reads #18380 …) is all "a docblock states something stale". ⛔ This card is "a docblock is attached to nothing" — the stale statement is downstream of that.Positive control in the same instrument and run: the two queries returned 20 and 76 results including live open cards, so the rejections are readings and ⛔ not a dead search.
Dedupe words:
rest-server detached docblock·resolveProtocol duplicate TSDoc·orphan comment resolveHostnameCached·unbound docblock packages/rest·resolveRequestEnvironmentId chain docblock·D11 step 4 resolver seam undocumented.Refs: #15858 (the stale sentence this is the mechanism for) · #15861 (the cloud-seat reading that decided the fork) · ADR-0006 v4 D2.
Generated by Claude Code