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
Issue 13178 — the tenant-audit write-call-site census — is unreachable. It returns HTTP 404 on three independent channels: unauthenticated repo-scoped REST, the rendered web page, and authenticated MCP issue_read.
Four-channel control, all requests in the same minute, same session, same endpoint shape:
issue
result
13178
404
13179
200
13250
200
13491
200
13497
200
13527 (the PR that landed its repairs)
200
The control fires, so the 404 is a fact about that number and not about the channel, the session, or a rate limit.
The card was real and recent. Its repairs are in main:
f087c376ff 2026-08-30 fix(service-storage): scope the sys_file / sys_upload_session update and
delete doors to the acting organization (#13178) (#13527)
e02648ef1b 2026-08-30 fix(service-storage): scope the sys_file / sys_upload_session update and
delete doors to the acting organization (#13178)
Two open cards still name it as their input — #13491 (domain:engine, a ruling on whether isSystem writes are in the tenant-audit control's scope) and #13497 (the stamper-gap measurement) — and #13416 cites it as well.
What it cost
#13497's brief was to classify the 24 sites the census identified. The census lived in a comment on #13178. With that comment gone, the canonical list of 24 could be neither copied nor verified — the re-location step that #13178's own ruling required (its line numbers were known to rot, so coordinates had to be re-derived rather than copied) had nothing to re-locate against.
What saved the round
Two things, both accidents of good practice rather than design:
The tenant-audit census counted 175 service write call sites against a tenancy-enabled object, 24 of them carrying no tenant context at all
An independent re-derivation agreed closely enough to establish the same population, which is what let the measurement proceed at all:
census figure
independently re-derived
135 sites silenced by the isSystem guard before the posture gate
141
127 of 175 statically decidable (48 runtime-parameter-name sites)
132 literal-object engine write call sites
Close enough to be the same family; not close enough to be the same list. The exact 24 remain unrecoverable.
Recommendation
A census that decides a repair family's severity and a ruling's scope should be an in-tree artefact, not a comment.
The tree already has this pattern and it is enforced: the isSystem census is a committed page (content/docs/permissions/system-context.mdx) with a generator (scripts/isystem-census.mjs) and a gate (scripts/check-system-context-census.mjs, wired into the docs-anchors step). Its own commit message records the thing that makes the pattern necessary — that census numbers rot as main moves, and get re-derived against the merged tree rather than trusted.
Concretely, one of:
A — re-derive the tenant-audit census as a committed artefact (a docs/audits/ page, or a generator plus gate in the shape of the isSystem census), and re-point the citing cards at it. Preferred: it survives issue loss, and it makes the population re-derivable rather than quoted.
C — accept the loss; the summary in the merged changeset is enough. Cheapest, and it is what actually happened this round — but it worked by luck, because a changeset author chose to quote two numbers.
There is also a process question underneath, which is not mine to answer: whether an issue that open cards depend on can be deleted or transferred without those cards being updated, and whether anything would have noticed had the changeset not quoted the figures.
⚠️ Measured on origin/main at 50cf2940b9; the HTTP results are from that same session and are re-checkable at any time by repeating the table above.
Found while executing #13497; the PM seat re-checked the 404 independently with its own controls before this was filed. Not graded here: no priority or domain label, unassigned, for triage.
The measurement
Issue 13178 — the tenant-audit write-call-site census — is unreachable. It returns HTTP 404 on three independent channels: unauthenticated repo-scoped REST, the rendered web page, and authenticated MCP
issue_read.Four-channel control, all requests in the same minute, same session, same endpoint shape:
The control fires, so the 404 is a fact about that number and not about the channel, the session, or a rate limit.
The card was real and recent. Its repairs are in
main:Two open cards still name it as their input — #13491 (
domain:engine, a ruling on whetherisSystemwrites are in the tenant-audit control's scope) and #13497 (the stamper-gap measurement) — and #13416 cites it as well.What it cost
#13497's brief was to classify the 24 sites the census identified. The census lived in a comment on #13178. With that comment gone, the canonical list of 24 could be neither copied nor verified — the re-location step that #13178's own ruling required (its line numbers were known to rot, so coordinates had to be re-derived rather than copied) had nothing to re-locate against.
What saved the round
Two things, both accidents of good practice rather than design:
The census summary survived in-tree, because the tenant-audit: the "write without tenantId" signal is a throttled log warn gated on multi-tenant posture, so it cannot fire in any environment where code is exercised #13178 repair's changeset quoted the two figures that mattered. From
.changeset/tenant-audit-update-delete-half-repairs.md, now merged:An independent re-derivation agreed closely enough to establish the same population, which is what let the measurement proceed at all:
isSystemguard before the posture gateClose enough to be the same family; not close enough to be the same list. The exact 24 remain unrecoverable.
Recommendation
A census that decides a repair family's severity and a ruling's scope should be an in-tree artefact, not a comment.
The tree already has this pattern and it is enforced: the
isSystemcensus is a committed page (content/docs/permissions/system-context.mdx) with a generator (scripts/isystem-census.mjs) and a gate (scripts/check-system-context-census.mjs, wired into the docs-anchors step). Its own commit message records the thing that makes the pattern necessary — that census numbers rot asmainmoves, and get re-derived against the merged tree rather than trusted.Concretely, one of:
docs/audits/page, or a generator plus gate in the shape of theisSystemcensus), and re-point the citing cards at it. Preferred: it survives issue loss, and it makes the population re-derivable rather than quoted.isSystem写入是否在租户审计控制范围内?——#13178 类级装置(A/B/C)的共同前置,从未被裁过 #13491 / measure: 企业版 Middleware A 的organization_idstamper 缺口——「调用点没带租户上下文」是否 ≠「行落 NULL」?(定 #13178 修复族伤害等级的唯一输入) #13497 / createFieldPresenceProbe's docstring still says organization_id is injected "only in multi-tenant mode" — applySystemFields provisions it unconditionally #13416 at the new number. Restores the citation but reproduces the fragility.There is also a process question underneath, which is not mine to answer: whether an issue that open cards depend on can be deleted or transferred without those cards being updated, and whether anything would have noticed had the changeset not quoted the figures.
origin/mainat50cf2940b9; the HTTP results are from that same session and are re-checkable at any time by repeating the table above.Found while executing #13497; the PM seat re-checked the 404 independently with its own controls before this was filed. Not graded here: no priority or domain label, unassigned, for triage.
Generated by Claude Code
Generated by Claude Code