Commit a7a7390
* perf(plugin-security): claim seed ownership with one predicate write per unowned shape
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AUF1NoViznQK32gqpK8wS8
* chore(changeset): claim-seed-ownership predicate write
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AUF1NoViznQK32gqpK8wS8
* test(plugin-security): refuse combinators in the claim-seed WHERE double
`check:where-matcher` flagged the new fixture matcher as silently wrong on a
combinator query. `claimSeedOwnership` issues none, so the double refuses
rather than implementing them.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AUF1NoViznQK32gqpK8wS8
* fix(plugin-security): page the seed-ownership predicate write so objects over the per-row hook ceiling are still claimed
An unpaged predicate write is refused whole above MAX_BULK_PER_ROW_HOOK_ROWS
(ADR-0058 D6), so a 21k-row object claimed nothing where the pre-#14530 loop
claimed 10k. `owner_id` is a record-access field, so that is a permission
outcome, not an observability one. The unit of work is now a page.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AUF1NoViznQK32gqpK8wS8
* fix(plugin-security): bind the seed-ownership engine calls at the schema.name call site
Paging behind an `objectName` parameter made `check:tenant-audit-census` read
the write as `undecidable` and took its self-test to 5-of-19 red. Measured: the
same file from 39126dc reproduces that on origin/main, and origin/main itself
is green. The two engine calls are now bound where `schema.name` is a literal
argument, so the census's answer about this file is byte-identical to its
pre-change one -- no ledger row degraded to buy a green gate.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AUF1NoViznQK32gqpK8wS8
* chore(gates): ratchet the engine-double ledger for the claim-seed-ownership doubles
`check:engine-double-contract` reported RETAINED [update] on
`claim-seed-ownership.test.ts`: the paging pins grew its engine doubles from 1
to 5, which is the direction this ledger wants, so the gate's own prescribed
fix is to regenerate. Regenerated with `--write` on the merged tree (the ledger
is contended by sibling PRs), never hand-edited; the regeneration reports
"1 added or grown, 0 lost".
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AUF1NoViznQK32gqpK8wS8
* docs(changeset): describe the shape that actually shipped — whole-set write first, page only on refusal
The changeset still described the always-paged shape ("read at most 5 000 ids,
re-own them, repeat"), which was measured 13x slower on the sizes every real
install has and is not what landed. Restated: one predicate write per unowned
shape, a page off the top only when the engine refuses that write for its
per-row hook budget, plus the re-measured over-ceiling number (21 000 of 21 000
claimed, 8 engine writes) that the paging exists to produce.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AUF1NoViznQK32gqpK8wS8
---------
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
1 parent e88d4df commit a7a7390
4 files changed
Lines changed: 757 additions & 71 deletions
File tree
- .changeset
- packages/plugins/plugin-security/src
- scripts
| 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 | + | |
| 50 | + | |
| 51 | + | |
0 commit comments