Skip to content

Commit 97ac4af

Browse files
committed
docs(permissions): re-certify the tenant-audit census at 218 write call sites (#14333)
`ObjectStoreSuspendedRunStore.claimSuspension` adds exactly one write call site on the application surface — the conditional `delete` that decides the cross-replica advance — so the shrink-only census the gate holds the tree to moves 217 -> 218. Regenerated with `node scripts/tenant-audit-census.mjs --write`, and the nine hand-written prose figures the generator does not own updated by hand to match. Measured pre-existing state, so the delta is attributable: with these three sources reverted to the merge base and the census restored to HEAD, the gate is green at 217 — this PR moves it by exactly one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AUF1NoViznQK32gqpK8wS8
1 parent 5daab8d commit 97ac4af

2 files changed

Lines changed: 26 additions & 26 deletions

File tree

content/docs/permissions/tenant-audit-census.mdx

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ are reported as `undecidable` rather than assumed either way.
9898

9999
The same holds twice over for the context. An options argument spelled as a
100100
literal can be read; one spelled `options`, `{ ...opts }`, or handed through a
101-
forwarding shim cannot, and **67 of the 217 sites are spelled that way**. A
101+
forwarding shim cannot, and **67 of the 218 sites are spelled that way**. A
102102
context resolved from an inline literal or a local `const` can be tested for
103103
`isSystem`; one arriving from a helper call cannot.
104104

@@ -147,10 +147,10 @@ reproduce them. Where it disagrees, it disagrees on the page:
147147

148148
| carried figure | where it survives | this census |
149149
| :--- | :--- | ---: |
150-
| 175 write call sites | quoted in the merged changeset | **217** |
150+
| 175 write call sites | quoted in the merged changeset | **218** |
151151
| 24 carrying no tenant context | quoted in the merged changeset | **9** provable and tenancy-enabled; **32** more whose options argument is unreadable |
152-
| 127 of 175 statically decidable, 48 runtime-parameter-name sites | restated on the `isSystem`-scoping card | **145 of 217** decidable, **72** undecidable |
153-
| 135 (77%) silenced by the `isSystem` guard before the posture gate | the lost issue body — **no surviving corroboration** | **not reproduced**: 99 decidably elevated, 0 decidably not, 101 undecidable |
152+
| 127 of 175 statically decidable, 48 runtime-parameter-name sites | restated on the `isSystem`-scoping card | **146 of 218** decidable, **72** undecidable |
153+
| 135 (77%) silenced by the `isSystem` guard before the posture gate | the lost issue body — **no surviving corroboration** | **not reproduced**: 100 decidably elevated, 0 decidably not, 101 undecidable |
154154
| 141 and 132, two independent re-derivations | the card that filed this work ||
155155

156156
**The differences are not reconciled, and deliberately so.** The old census's
@@ -161,17 +161,17 @@ at any commit.
161161

162162
Two structural facts do plausibly widen this reading against any hand or regex
163163
one, and both are counted in the generated tables below: the 45 sites reached
164-
through an erased (`any`) receiver, and the 37 that name their object through a
164+
through an erased (`any`) receiver, and the 38 that name their object through a
165165
`const` rather than inline. An instrument that read either the way a person does
166166
would report a smaller number and would not say so.
167167

168168
The fourth row is the one worth flagging to anyone citing it. **The 135 / 77%
169169
figure has no surviving corroboration anywhere in the tree.** This census reads
170-
99 of 217 (45%) as decidably elevated, with 101 more whose elevation is a
170+
100 of 218 (46%) as decidably elevated, with 101 more whose elevation is a
171171
run-time fact — so the claim is neither confirmed nor refuted, and the honest
172172
answer is that a static reading cannot settle it.
173173

174-
**Cite `9 / 217`, and say what it is**: the sites whose options argument was
174+
**Cite `9 / 218`, and say what it is**: the sites whose options argument was
175175
READ and holds no tenant context, against a decidably tenancy-enabled object.
176176
That is the control's provable yield surface. ⛔ Do not cite it as "the sites
177177
without tenant context" — **32 further sites** have an options argument this
@@ -183,29 +183,29 @@ cannot read, and they are neither in nor out.
183183

184184
| what | count |
185185
| :--- | ---: |
186-
| write call sites on the application surface | **217** |
187-
| …whose object name is statically decidable | 145 |
186+
| write call sites on the application surface | **218** |
187+
| …whose object name is statically decidable | 146 |
188188
| …whose object name is chosen at run time | 72 |
189-
| …against an object with tenancy ENABLED | 145 |
189+
| …against an object with tenancy ENABLED | 146 |
190190
| …against an object that declares tenancy off | 0 |
191-
| threading a tenant context | 133 |
191+
| threading a tenant context | 134 |
192192
| PROVABLY carrying none (options read, no context key) | **17** |
193193
| …of those, against a decidably tenancy-enabled object | **9** |
194194
| options argument UNREADABLE — may or may not carry one | 67 |
195195
| …of those, against a decidably tenancy-enabled object | 32 |
196-
| threading a decidably ELEVATED (`isSystem`) context | 99 |
196+
| threading a decidably ELEVATED (`isSystem`) context | 100 |
197197
| threading a context that is decidably NOT elevated | 0 |
198198
| threading a context whose elevation is a run-time fact | 101 |
199199

200200
| how the instrument reached the site | count |
201201
| :--- | ---: |
202-
| receiver carried a readable engine type | 172 |
202+
| receiver carried a readable engine type | 173 |
203203
| receiver erased, placed by the object NAME | 19 |
204204
| receiver erased, placed by an `object: string` PARAMETER | 15 |
205205
| receiver erased, placed by an `UNTYPED_RECEIVERS` row | 11 |
206206

207207
| object name spelled inline | 108 |
208-
| object name spelled through a `const` | 37 |
208+
| object name spelled through a `const` | 38 |
209209
| object name is an `object: string` parameter | 19 |
210210
| object name is some other run-time expression | 53 |
211211

@@ -224,13 +224,13 @@ holds still. They are required to be HERE and to say WHEN they were true;
224224
their values are not compared. The reasoning, and the measurement behind it,
225225
are in `scripts/check-tenant-audit-census.mjs`.
226226

227-
Measured on 2026-09-01 at `d3ebf3b55`.
227+
Measured on 2026-09-02 at `5daab8df0`.
228228

229229
| corpus scale (not enforced) | count |
230230
| :--- | ---: |
231-
| tracked non-test sources scanned | 534 |
231+
| tracked non-test sources scanned | 539 |
232232
| engine-shaped types recognised | 56 |
233233
| declared objects in the registry | 297 |
234-
| same-named calls subtracted as non-engine | 119 |
234+
| same-named calls subtracted as non-engine | 130 |
235235

236236
{/* END GENERATED: tenant-audit-census */}

docs/audits/2026-08-tenant-audit-write-call-sites.counts.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,17 @@ silent, and `node scripts/tenant-audit-census.mjs --write` is the resolution.
2929

3030
| Measure | Value |
3131
|---|---:|
32-
| Write call sites | 217 |
33-
| Object name statically decidable | 145 |
32+
| Write call sites | 218 |
33+
| Object name statically decidable | 146 |
3434
| Object name chosen at run time | 72 |
35-
| Against a tenancy-enabled object | 145 |
35+
| Against a tenancy-enabled object | 146 |
3636
| Against an object declaring tenancy off | 0 |
37-
| Threading a tenant context | 133 |
37+
| Threading a tenant context | 134 |
3838
| Provably carrying none | 17 |
3939
| …and decidably tenancy-enabled | 9 |
4040
| Options argument unreadable | 67 |
4141
| …and decidably tenancy-enabled | 32 |
42-
| Threading a decidably elevated context | 99 |
42+
| Threading a decidably elevated context | 100 |
4343
| Threading a decidably non-elevated context | 0 |
4444
| Threading a context of undecidable elevation | 101 |
4545

@@ -52,14 +52,14 @@ holds still. They are required to be HERE and to say WHEN they were true;
5252
their values are not compared. The reasoning, and the measurement behind it,
5353
are in `scripts/check-tenant-audit-census.mjs`.
5454

55-
Measured on 2026-09-01 at `d3ebf3b55`.
55+
Measured on 2026-09-02 at `5daab8df0`.
5656

5757
| corpus scale (not enforced) | count |
5858
| :--- | ---: |
59-
| tracked non-test sources scanned | 534 |
59+
| tracked non-test sources scanned | 539 |
6060
| engine-shaped types recognised | 56 |
6161
| declared objects in the registry | 297 |
62-
| same-named calls subtracted as non-engine | 119 |
62+
| same-named calls subtracted as non-engine | 130 |
6363

6464
## Every site
6565

@@ -158,7 +158,7 @@ Measured on 2026-09-01 at `d3ebf3b55`.
158158
| `packages/services/service-automation/src/builtin/crud-nodes.ts` | `insert` | `objectName` | undecidable | context, elevation undecidable | 1 |
159159
| `packages/services/service-automation/src/builtin/crud-nodes.ts` | `update` | `objectName` | undecidable | context, elevation undecidable | 1 |
160160
| `packages/services/service-automation/src/flow-dispatch-store.ts` | `insert` | `sys_flow_dispatch` | enabled | elevated | 1 |
161-
| `packages/services/service-automation/src/suspended-run-store.ts` | `delete` | `sys_automation_run` | enabled | elevated | 2 |
161+
| `packages/services/service-automation/src/suspended-run-store.ts` | `delete` | `sys_automation_run` | enabled | elevated | 3 |
162162
| `packages/services/service-automation/src/suspended-run-store.ts` | `insert` | `sys_automation_run` | enabled | elevated | 2 |
163163
| `packages/services/service-automation/src/suspended-run-store.ts` | `update` | `sys_automation_run` | enabled | elevated | 2 |
164164
| `packages/services/service-datasource/src/datasource-admin-plugin.ts` | `delete` | `sys_metadata` | enabled | PROVABLY NONE | 1 |

0 commit comments

Comments
 (0)