Repository navigation
Commit 7c2f386
The platform's tenant-scope index was gated on the spec's INJECTION plan
(`resolveInjectedSystemColumns(...).tenant`), while plugin-security's Layer 0
wall derives `tenancyDisabled` from exactly two clauses:
tenancy.enabled === false || systemFields.tenant === false
`systemFields: false` — the hard object-level opt-out — is in the plan and in
neither clause, so an object using it while declaring its own
`organization_id` had the wall predicate AND-composed onto essentially every
read with no index behind it. Measured end to end before the fix: the registry
answered `indexes: null` while `SecurityPlugin#getReadFilter` answered
`{ organization_id: 'org-1' }` for the same object.
Per the triage ruling of 2026-08-14 (option A, standing meta-rule: the governed
side wins and the ungoverned side rebinds to it), `carriesTenantScopeColumn` is
rebound to the wall's two clauses plus "the object carries organization_id",
and the `applySystemFields` exit that injects nothing now routes through
`provisionTenantScopeIndex` like every other exit — it was the last one that
decided the index by not asking.
Claude-Session: https://claude.ai/code/session_01XeQRiAa7vYRVX5Fog7Zby8
Co-authored-by: Claude <noreply@anthropic.com>
1 parent 845e164 commit 7c2f386
4 files changed
Lines changed: 477 additions & 33 deletions
File tree
- .changeset
- packages/objectql/src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
330 | 330 | | |
331 | 331 | | |
332 | 332 | | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
333 | 385 | | |
334 | 386 | | |
335 | 387 | | |
| |||
0 commit comments