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
Commit 74d7cfb
Browse filesBrowse the repository at this point in the historyBrowse files
chore(census): tenant-audit census and route-ledger count for the device registry
The registry adds five engine write call sites (260, from 255) and the
route ledger ten rows (126, from 116); both regenerated by their writers,
with the hand-written figures on the census page moved to match.
Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ADHkmRD9KKqvTU3THnute6
Copy file name to clipboardExpand all lines: content/docs/permissions/tenant-audit-census.mdx
+23-23Lines changed: 23 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -132,7 +132,7 @@ are reported as `undecidable` rather than assumed either way.
132
132
133
133
The same holds twice over for the context. An options argument spelled as a
134
134
literal can be read; one spelled `options`, `{ ...opts }`, or handed through a
135
-
forwarding shim cannot, and **51 of the 255 sites are spelled that way**. A
135
+
forwarding shim cannot, and **55 of the 260 sites are spelled that way**. A
136
136
context resolved from an inline literal or a local `const` can be tested for
137
137
`isSystem`; one arriving from a helper call cannot.
138
138
@@ -160,8 +160,8 @@ now **0**: nothing on this surface threads a context that provably lacks the fla
160
160
161
161
**"No tenant context" counted sites it had not read.** An options argument the
162
162
walker could not parse was folded into the same bucket as one it had read and
163
-
found empty. That published **59 sites "carrying no tenant context at all"**
164
-
when 8 said so and 51 were simply unread — an over-claim in the *alarming*
163
+
found empty. That published **63 sites "carrying no tenant context at all"**
164
+
when 8 said so and 55 were simply unread — an over-claim in the *alarming*
165
165
direction, on the very figure this page tells other cards to cite. `carries` is
166
166
now three-valued, and an unreadable argument can never contribute to the
167
167
provable count.
@@ -197,10 +197,10 @@ reproduce them. Where it disagrees, it disagrees on the page:
197
197
198
198
| carried figure | where it survives | this census |
199
199
| :--- | :--- | ---: |
200
-
| 175 write call sites | quoted in the merged changeset |**255**|
200
+
| 175 write call sites | quoted in the merged changeset |**260**|
201
201
| 24 carrying no tenant context | quoted in the merged changeset |**2** provable and tenancy-enabled; **29** more whose options argument is unreadable |
202
-
| 127 of 175 statically decidable, 48 runtime-parameter-name sites | restated on the `isSystem`-scoping card |**177 of 255** decidable, **78** undecidable |
203
-
| 135 (77%) silenced by the `isSystem` guard before the posture gate | the lost issue body — **no surviving corroboration**|**not reproduced**: 145 decidably elevated, 0 decidably not, 102 undecidable |
202
+
| 127 of 175 statically decidable, 48 runtime-parameter-name sites | restated on the `isSystem`-scoping card |**182 of 260** decidable, **78** undecidable |
203
+
| 135 (77%) silenced by the `isSystem` guard before the posture gate | the lost issue body — **no surviving corroboration**|**not reproduced**: 146 decidably elevated, 0 decidably not, 106 undecidable |
204
204
| 141 and 132, two independent re-derivations | the card that filed this work | — |
205
205
206
206
**The differences are not reconciled, and deliberately so.** The old census's
@@ -211,17 +211,17 @@ at any commit.
211
211
212
212
Two structural facts do plausibly widen this reading against any hand or regex
213
213
one, and both are counted in the generated tables below: the 62 sites reached
214
-
through an erased (`any`) receiver, and the 61 that name their object through a
214
+
through an erased (`any`) receiver, and the 66 that name their object through a
215
215
`const` rather than inline. An instrument that read either the way a person does
216
216
would report a smaller number and would not say so.
217
217
218
218
The fourth row is the one worth flagging to anyone citing it. **The 135 / 77%
219
219
figure has no surviving corroboration anywhere in the tree.** This census reads
220
-
145 of 255 (57%) as decidably elevated, with 102 more whose elevation is a
220
+
146 of 260 (56%) as decidably elevated, with 106 more whose elevation is a
221
221
run-time fact — so the claim is neither confirmed nor refuted, and the honest
222
222
answer is that a static reading cannot settle it.
223
223
224
-
⇒ **Cite `2 / 255`, and say what it is**: the sites whose options argument was
224
+
⇒ **Cite `2 / 260`, and say what it is**: the sites whose options argument was
225
225
READ and holds no tenant context, against a decidably tenancy-enabled object.
226
226
That is the control's provable yield surface. ⛔ Do not cite it as "the sites
227
227
without tenant context" — **29 further sites** have an options argument this
@@ -233,29 +233,29 @@ cannot read, and they are neither in nor out.
233
233
234
234
| what | count |
235
235
| :--- | ---: |
236
-
| write call sites on the application surface |**255**|
237
-
| …whose object name is statically decidable |177|
236
+
| write call sites on the application surface |**260**|
237
+
| …whose object name is statically decidable |182|
238
238
| …whose object name is chosen at run time | 78 |
239
239
| …against an object with tenancy ENABLED | 176 |
240
-
| …against an object that declares tenancy off |1|
241
-
| threading a tenant context |196|
240
+
| …against an object that declares tenancy off |6|
241
+
| threading a tenant context |197|
242
242
| PROVABLY carrying none (options read, no context key) |**8**|
243
243
| …of those, against a decidably tenancy-enabled object |**2**|
244
-
| options argument UNREADABLE — may or may not carry one |51|
244
+
| options argument UNREADABLE — may or may not carry one |55|
245
245
| …of those, against a decidably tenancy-enabled object | 29 |
246
-
| threading a decidably ELEVATED (`isSystem`) context |145|
246
+
| threading a decidably ELEVATED (`isSystem`) context |146|
247
247
| threading a context that is decidably NOT elevated | 0 |
248
-
| threading a context whose elevation is a run-time fact |102|
248
+
| threading a context whose elevation is a run-time fact |106|
249
249
250
250
| how the instrument reached the site | count |
251
251
| :--- | ---: |
252
-
| receiver carried a readable engine type |193|
252
+
| receiver carried a readable engine type |198|
253
253
| receiver erased, placed by the object NAME | 52 |
254
254
| receiver erased, placed by an `object: string` PARAMETER | 5 |
255
255
| receiver erased, placed by an `UNTYPED_RECEIVERS` row | 5 |
256
256
257
257
| object name spelled inline | 116 |
258
-
| object name spelled through a `const`|61|
258
+
| object name spelled through a `const`|66|
259
259
| object name is an `object: string` parameter | 7 |
260
260
| object name is some other run-time expression | 71 |
261
261
@@ -307,13 +307,13 @@ holds still. They are required to be HERE and to say WHEN they were true;
307
307
their values are not compared. The reasoning, and the measurement behind it,
0 commit comments