Commit 746c47d
docs(adr-0029): amend D3 — a tenant object overlay is its own contributor layer (#6853)
The 2026-08-09 maintainer ruling on #6853 approved direction B in principle and
made this card's deliverable the ADR-0029 amendment that designs it. This is that
design; nothing is implemented.
Today an `object` overlay reaches `SchemaRegistry.registerObject` with the
default `own` kind, takes the re-registration branch written for HMR replays, and
SPLICES the packaged contributor out — the packaged definition is destroyed at
write time, re-destroyed on every boot by `loadMetaFromDb`, and `isArtifactBacked`
(which reads the merged body's `_provenance`) then answers `false` for a name a
code package still ships, disarming `saveMetaItem`'s overlay gate and the delete
heal's "never retire a code-shipped object" guard.
D9 makes the overlay a third, non-owning contributor kind: base selection becomes
`overlay ?? own`, extenders fold on top unchanged (so the resolved schema does not
move), artifact identity is read from the OWNER contributor, and "restoration"
degenerates to removing the layer. D3's single-owner invariant is unchanged.
#6995 is answered by the model: the row's `package_id` is provenance on the layer,
never an ownership claim.
Also anchors `packages/objectql/src/registry.ts` to ADR-0029 — it implements D3
and was unanchored, which is how the splice could read as a local convenience.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W6bLax4KMrSfnE1ydFU8Dw1 parent 2f3e793 commit 746c47d
2 files changed
Lines changed: 445 additions & 1 deletion
File tree
- docs/adr
- scripts
0 commit comments