Repository navigation
Commit 1403d94
feat(metadata-protocol,service-cluster): fan runtime metadata mutations out to peer replicas (#14183)
* feat(metadata-protocol,service-cluster): fan runtime metadata mutations out to peer replicas (#13331)
Publisher at the protocol's post-persistence choke point publishes the
mutation's address on the new metadata.mutated cluster channel; peers
converge their ObjectQL registry from their OWN sys_metadata read (write-
through when an active row exists, the delete heal walk when none does),
then replay the event into local onMetadataMutation listeners. The bridge
plugin late-binds attachMetadataMutationPubSub as a second independent
lane at kernel:ready, guarded off the in-process memory driver.
Ruled 2026-09-01 (director batch A, Option A): producer-side fan-out
mirroring the shipped AuthzClusterBridgePlugin shape; the payload is a
signal, never trusted content. Option B (consumer-side self-heal) is not
built.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q5WBDtaUnoz5XuJ6jk8pQ5
* test(metadata-protocol): hold the caller's limit in the fanout find double; ledger the new pinned engine doubles
check:objectql-double-limit named the new find double limit-blind — the
bound now applies after the filter, by presence. The engine-double ledger
learned the fanout file's pinned delete/findOne/update doubles via the
gate's own --write.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q5WBDtaUnoz5XuJ6jk8pQ5
* docs(permissions): re-anchor the system-context census row moved by the fan-out insertion
check-system-context-census red on CI: the metadata.mutated publisher
block inserted above stripReadonlyForInsert moved the context.isSystem
read 1737 -> 1741, and the census page still anchored the old line. The
gate's own --fix performed the shift (one line-number rewrite, zero
prose); bare re-run green: 109 sites anchored, 145 anchors resolve.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q5WBDtaUnoz5XuJ6jk8pQ5
* docs(permissions): re-derive the census page on the merged tree
The auto-merge of origin/main kept this branch's pre-#14171 anchor rows
beside the row-21 edit, flunking the census 26 ways (paired stale
anchors / unanchored sites in engine.ts and share-link-service.ts —
pure adjacent-row line rot, zero population change). Resolution per the
tool, not by hand: took main's page wholesale, then re-derived with
check-system-context-census --fix, which rewrote exactly ONE anchor
(row 21, protocol.ts 1737 to 1741 — this branch's publisher-block
shift). Delta vs origin/main is that single line; bare gate green: 109
sites anchored, 145 anchors resolve.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q5WBDtaUnoz5XuJ6jk8pQ5
* docs(permissions): re-derive the census page on the second merged tree
Same mechanism as the previous merge: main's #14199 re-anchored 11 rows
of this machine-maintained table while this branch re-anchors row 21,
and a textually clean merge proves nothing about the line numbers.
Resolution per the tool: took main's page wholesale, re-derived with
check-system-context-census --fix on the merged tree — exactly ONE
anchor rewritten (row 21, protocol.ts 1737 to 1741; re-derived, not
carried — main has zero commits on protocol.ts, so the insertion shift
is unchanged). Delta vs origin/main is that single line; bare gate
green (109 sites, 145 anchors). engine-double-contract ledger: zero
main-side commits, gate OK on the merged tree — no regeneration owed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q5WBDtaUnoz5XuJ6jk8pQ5
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 1134e47 commit 1403d94
9 files changed
Lines changed: 1199 additions & 45 deletions
File tree
- .changeset
- content/docs/permissions
- packages
- metadata-protocol/src
- services/service-cluster/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 | + | |
| 52 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
112 | 112 | | |
113 | 113 | | |
114 | 114 | | |
115 | | - | |
| 115 | + | |
116 | 116 | | |
117 | 117 | | |
118 | 118 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
135 | 135 | | |
136 | 136 | | |
137 | 137 | | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
138 | 145 | | |
139 | 146 | | |
140 | 147 | | |
| |||
0 commit comments