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 3d83bec
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: content/docs/permissions/tenant-audit-census.mdx
+17-17Lines changed: 17 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -121,7 +121,7 @@ are reported as `undecidable` rather than assumed either way.
121
121
122
122
The same holds twice over for the context. An options argument spelled as a
123
123
literal can be read; one spelled `options`, `{ ...opts }`, or handed through a
124
-
forwarding shim cannot, and **67 of the 227 sites are spelled that way**. A
124
+
forwarding shim cannot, and **67 of the 218 sites are spelled that way**. A
125
125
context resolved from an inline literal or a local `const` can be tested for
126
126
`isSystem`; one arriving from a helper call cannot.
127
127
@@ -186,10 +186,10 @@ reproduce them. Where it disagrees, it disagrees on the page:
186
186
187
187
| carried figure | where it survives | this census |
188
188
| :--- | :--- | ---: |
189
-
| 175 write call sites | quoted in the merged changeset |**227**|
189
+
| 175 write call sites | quoted in the merged changeset |**218**|
190
190
| 24 carrying no tenant context | quoted in the merged changeset |**9** provable and tenancy-enabled; **34** more whose options argument is unreadable |
191
-
| 127 of 175 statically decidable, 48 runtime-parameter-name sites | restated on the `isSystem`-scoping card |**153 of 227** decidable, **74** undecidable |
192
-
| 135 (77%) silenced by the `isSystem` guard before the posture gate | the lost issue body — **no surviving corroboration**|**not reproduced**: 108 decidably elevated, 0 decidably not, 102 undecidable |
191
+
| 127 of 175 statically decidable, 48 runtime-parameter-name sites | restated on the `isSystem`-scoping card |**144 of 218** decidable, **74** undecidable |
192
+
| 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, 102 undecidable |
193
193
| 141 and 132, two independent re-derivations | the card that filed this work | — |
194
194
195
195
**The differences are not reconciled, and deliberately so.** The old census's
@@ -206,11 +206,11 @@ would report a smaller number and would not say so.
206
206
207
207
The fourth row is the one worth flagging to anyone citing it. **The 135 / 77%
208
208
figure has no surviving corroboration anywhere in the tree.** This census reads
209
-
108 of 227 (48%) as decidably elevated, with 102 more whose elevation is a
209
+
99 of 218 (45%) as decidably elevated, with 102 more whose elevation is a
210
210
run-time fact — so the claim is neither confirmed nor refuted, and the honest
211
211
answer is that a static reading cannot settle it.
212
212
213
-
⇒ **Cite `9 / 227`, and say what it is**: the sites whose options argument was
213
+
⇒ **Cite `9 / 218`, and say what it is**: the sites whose options argument was
214
214
READ and holds no tenant context, against a decidably tenancy-enabled object.
215
215
That is the control's provable yield surface. ⛔ Do not cite it as "the sites
216
216
without tenant context" — **34 further sites** have an options argument this
@@ -222,28 +222,28 @@ cannot read, and they are neither in nor out.
222
222
223
223
| what | count |
224
224
| :--- | ---: |
225
-
| write call sites on the application surface |**227**|
226
-
| …whose object name is statically decidable |153|
225
+
| write call sites on the application surface |**218**|
226
+
| …whose object name is statically decidable |144|
227
227
| …whose object name is chosen at run time | 74 |
228
-
| …against an object with tenancy ENABLED |152|
228
+
| …against an object with tenancy ENABLED |143|
229
229
| …against an object that declares tenancy off | 1 |
230
-
| threading a tenant context |143|
230
+
| threading a tenant context |134|
231
231
| PROVABLY carrying none (options read, no context key) |**17**|
232
232
| …of those, against a decidably tenancy-enabled object |**9**|
233
233
| options argument UNREADABLE — may or may not carry one | 67 |
234
234
| …of those, against a decidably tenancy-enabled object | 34 |
235
-
| threading a decidably ELEVATED (`isSystem`) context |108|
235
+
| threading a decidably ELEVATED (`isSystem`) context |99|
236
236
| threading a context that is decidably NOT elevated | 0 |
237
237
| threading a context whose elevation is a run-time fact | 102 |
238
238
239
239
| how the instrument reached the site | count |
240
240
| :--- | ---: |
241
-
| receiver carried a readable engine type |183|
241
+
| receiver carried a readable engine type |174|
242
242
| receiver erased, placed by the object NAME | 24 |
243
243
| receiver erased, placed by an `object: string` PARAMETER | 15 |
244
244
| receiver erased, placed by an `UNTYPED_RECEIVERS` row | 5 |
245
245
246
-
| object name spelled inline |110|
246
+
| object name spelled inline |101|
247
247
| object name spelled through a `const`| 43 |
248
248
| object name is an `object: string` parameter | 17 |
249
249
| object name is some other run-time expression | 57 |
@@ -296,13 +296,13 @@ holds still. They are required to be HERE and to say WHEN they were true;
296
296
their values are not compared. The reasoning, and the measurement behind it,
297
297
are in `scripts/check-tenant-audit-census.mjs`.
298
298
299
-
Measured on 2026-09-23 at `8f8828bf6`.
299
+
Measured on 2026-09-25 at `62171c25e`.
300
300
301
301
| corpus scale (not enforced) | count |
302
302
| :--- | ---: |
303
-
| tracked non-test sources scanned |576|
304
-
| engine-shaped types recognised |63|
305
-
| declared objects in the registry |117|
303
+
| tracked non-test sources scanned |572|
304
+
| engine-shaped types recognised |61|
305
+
| declared objects in the registry |115|
306
306
| same-named calls subtracted as non-engine | 144 |
Copy file name to clipboardExpand all lines: content/docs/protocol/backward-compatibility.mdx
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -111,7 +111,7 @@ Read the **Breaking?** column, not the version number: during the launch window
111
111
1.**RFC (Request for Comments)** — Breaking changes are proposed as GitHub issues with the `protocol:breaking` label.
112
112
2.**Deprecation** — The old behavior is deprecated in a MINOR release (see timeline above).
113
113
3.**Migration Guide** — A detailed migration guide is published before the removal lands, in the release notes for the version that carries it.
114
-
4.**Release** — During the launch window the breaking change ships in the next **MINOR** version, carrying a changeset entry marked `**BREAKING**`. `scripts/check-changeset-no-major.mjs` fails any pull request that declares a `major` bump, because under lockstep one `major` would promote all 70 published packages.
114
+
4.**Release** — During the launch window the breaking change ships in the next **MINOR** version, carrying a changeset entry marked `**BREAKING**`. `scripts/check-changeset-no-major.mjs` fails any pull request that declares a `major` bump, because under lockstep one `major` would promote all 69 published packages.
**All of them.** This is not scoped to an experimental corner or a pre-release channel: all **70** packages published from this repository belong to a single Changesets `fixed` group, so they share one version number and one policy. No published surface is exempt.
192
+
**All of them.** This is not scoped to an experimental corner or a pre-release channel: all **69** packages published from this repository belong to a single Changesets `fixed` group, so they share one version number and one policy. No published surface is exempt.
193
193
194
194
The convention is enforced rather than informal — `scripts/check-changeset-no-major.mjs` fails any pull request that introduces a `major` bump, because under lockstep a single `major` on one package would promote the entire stack.
0 commit comments