Surfaced while re-verifying the premise of #10699 against origin/main at afe1c4e0a. Filed rather than folded in: #10699 needs no code change at head (see its report), so there is no PR to carry this, and this repo already treats checklist-text corrections as their own cards (#7530, #7671, #7687, #7740). Unassigned — for triage to level and route.
What is stale
docs/qa/platform-checklist/areas/integration-system.json, item integration-system.external-schema-introspection (authored 2026-08-20 against 79ebb37), asserts as its expected outcome that the federation route spelling serves a caller holding no capability. That was true when the item was authored and is false at head: the federation family took a capability gate on 2026-08-20 in 9a1ed7a09 (reads and writes) and 2026-08-21 in 6ce58a735 (validate).
Four texts carry the old posture:
Why it matters more than an ordinary doc drift
The clause does not merely go quiet — it inverts. A runner following it today observes the correct 403 on the federation spelling and scores it as a deviation from the documented expectation, and the text pre-empts the escape hatch by naming the old behaviour "not a hole to file". The failure mode is a QA run filing a regression against a landed security tightening, or someone acting on the clause and loosening the gate back.
Nothing is red today, and nothing will be
scripts/check-platform-checklist.mjs is presence-level by design — its own header says "deliberately dumb, presence-level": ids, revisions, oracles, trap vocabulary, fixture keys. It never evaluates whether a clause is still true, so this rots silently until a human reads it.
What head actually does
All five routes in the family run one gate, reads on manage_platform_settings and writes on manage_metadata, both above the anonymous 401 floor. Pinned in packages/rest/src/external-datasource-routes-auth-guard.test.ts and packages/rest/src/remote-tables-twin.equivalence.test.ts — the latter now compares the two spellings and asserts they refuse an unentitled caller identically, which is the exact row the stale clause records as a divergence. Both suites pass at afe1c4e0a (21/21), and an ablation of the capability arm reddens 7 of those 21, including both twin-equivalence cases.
For whoever takes it
The edit is clause text, which also owes a revision bump and a history entry with a ref (enforced by the gate above). The companion cli.json item cli.datasource-introspect-codegen should be read in the same pass: it drives os datasource list-tables / introspect against the federation door, and those commands now require the caller's token to hold manage_platform_settings. Its fixture line names a plain --token without stating the capability, so it may need the persona spelled out — worth confirming rather than assuming.
Generated by Claude Code
Surfaced while re-verifying the premise of #10699 against
origin/mainatafe1c4e0a. Filed rather than folded in: #10699 needs no code change at head (see its report), so there is no PR to carry this, and this repo already treats checklist-text corrections as their own cards (#7530, #7671, #7687, #7740). Unassigned — for triage to level and route.What is stale
docs/qa/platform-checklist/areas/integration-system.json, itemintegration-system.external-schema-introspection(authored 2026-08-20 against79ebb37), asserts as its expected outcome that the federation route spelling serves a caller holding no capability. That was true when the item was authored and is false at head: the federation family took a capability gate on 2026-08-20 in9a1ed7a09(reads and writes) and 2026-08-21 in6ce58a735(validate).Four texts carry the old posture:
:26-28, :215-260Why it matters more than an ordinary doc drift
The clause does not merely go quiet — it inverts. A runner following it today observes the correct 403 on the federation spelling and scores it as a deviation from the documented expectation, and the text pre-empts the escape hatch by naming the old behaviour "not a hole to file". The failure mode is a QA run filing a regression against a landed security tightening, or someone acting on the clause and loosening the gate back.
Nothing is red today, and nothing will be
scripts/check-platform-checklist.mjsis presence-level by design — its own header says "deliberately dumb, presence-level": ids, revisions, oracles, trap vocabulary, fixture keys. It never evaluates whether a clause is still true, so this rots silently until a human reads it.What head actually does
All five routes in the family run one gate, reads on
manage_platform_settingsand writes onmanage_metadata, both above the anonymous 401 floor. Pinned inpackages/rest/src/external-datasource-routes-auth-guard.test.tsandpackages/rest/src/remote-tables-twin.equivalence.test.ts— the latter now compares the two spellings and asserts they refuse an unentitled caller identically, which is the exact row the stale clause records as a divergence. Both suites pass atafe1c4e0a(21/21), and an ablation of the capability arm reddens 7 of those 21, including both twin-equivalence cases.For whoever takes it
The edit is clause text, which also owes a
revisionbump and ahistoryentry with aref(enforced by the gate above). The companioncli.jsonitemcli.datasource-introspect-codegenshould be read in the same pass: it drivesos datasource list-tables/introspectagainst the federation door, and those commands now require the caller's token to holdmanage_platform_settings. Its fixture line names a plain--tokenwithout stating the capability, so it may need the persona spelled out — worth confirming rather than assuming.Generated by Claude Code