Skip to content

docs(adr): ADR-0126 — the platform customization model for packaged metadata (three regimes, one activation ledger) - #12063

Merged
os-trump merged 3 commits into
mainfrom
claude/issue-12049-customization-model-adr
Aug 25, 2026
Merged

os-trump merged 3 commits into
mainfrom
claude/issue-12049-customization-model-adr

Conversation

@claude

@claude claude Bot commented Aug 25, 2026 •

Copy link
Copy Markdown
Contributor

Part of #12049 — the ADR half of the card; the survey half is issue comment 5406807988. #12049 stays open until this ADR is merged and verified on origin/main.

Amended 2026-08-25 (commit 07f4e024) then amended again (commit a09d035a) — three maintainer rulings issued after the first draft, all, recorded verbatim and untranslated in the ADR's Deciders block: 「hook 也算代码类吧,我觉得也不需要修改。」 (hook reclassified out of the model — package code, no ledger row, no disable switch, sibling authoring open as today) and 「行为类 能否搞一个启用停用的功能,我不想要可以停用,然后克隆一个。」 (Regime C simplified to two independent primitives — enable/disable + clone-as-sibling — with no designation linkage: replaced_by and cloned_from dropped from the ledger; the base-moved notice withdrawn; the subflow guard attaches to disable); and 「动作 可能是需要开关的,因为有的 action 我不想启用。」 (action stays Regime C — the disable half has first-party maintainer pull on record and follows the flow legs when the post-merge implementation cards are cut; the clone half stays pre-charted; PM ruling record: #12049 comment 5408117664).

What this PR is

One new file: docs/adr/0126-packaged-metadata-customization-model.md — the platform customization model for packaged metadata, chartered by the maintainer on 2026-08-25 (verbatim in the ADR header). It records:

Governed surface

docs/adr/** — ⛔ this PR stays DRAFT: never ready, never queued, never auto-merged; the maintainer's hand-merge is the review record and the model's acceptance (Prime Directive #14).

Evidence

The survey (same card, comment above) is the measured base: 27-type census with the write-door tier partition, the four real mechanisms plus the paper one, per-type table, doc-promise measurements, and spot-checks of #11665's F1/F3/F4/F5 on origin/main 0b048393. Out-of-scope finding filed unassigned: #12057 (finding) — #12057 remains open and is not addressed here.

Verification (docs-only diff; all local gates re-run at a09d035a, after the latest amendment commit)

Gate list re-derived by node scripts/pm/dispatch-gates.mjs (no paths — the script took the changed set from merge-base itself; stderr header named objectstack-ai/objectstack at a09d035a; same 5 families as the first draft):

Gate Verdict line
pnpm check:adr-anchors exit 0 (self-test + scan)
pnpm check:doc-authoring "✓ doc authoring guard: … files clean — no bare metadata literals."
pnpm --filter @objectstack/lint run check:doc-formula-expressions "✓ … 22 record-scoped formula example(s) across 422 files / 1449 TS blocks judged clean"
pnpm check:pm-governed-merges "✓ check-governed-merges --self-test: 129 assertions …"
node scripts/check-adr-links.mjs "✅ check-adr-links: 554 relative link destination(s) under docs/adr/ resolve"
pnpm check:nul-bytes "check-nul-bytes: OK (scanned 6696 text file(s) …)"

Pushed-file read-back: the remote blob for the ADR on this branch hashes 6ca6dd1d — byte-identical to the local commit.

No changeset: docs-only ADR PR, skip-changeset per the ADR-0124 precedent (PR #9856); label applied via the additive endpoint and read back.


Generated by Claude Code


Generated by Claude Code

…etadata

Three regimes assigned by what the artifact does (overlay / clone+takeover /
extend), one generic data-plane activation ledger (sys_metadata_activation),
install-level write authority with the org column reserved, the #6190 and
sole-definition-ledger walls restated, and the packaged-flow worked example
carrying the 2026-08-25 tentative directions (settled only by this ADR's
human merge). Survey posted on the card as the evidence base.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KWRU3s15AJz7PGW7a7wdCh
@claude claude Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 25, 2026
@claude
claude Bot requested a review from os-zhuang August 25, 2026 07:24
@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation labels Aug 25, 2026
claude added 2 commits August 25, 2026 08:45
…ime C simplified to enable/disable + clone, no designation linkage

Records the two 2026-08-25 maintainer amendment rulings verbatim in the
Deciders block. Ruling 1 moves hook out of the model (package code, no
ledger row, no disable switch — the job posture; sibling authoring stays
open). Ruling 2 drops replaced_by and cloned_from from the ledger: the
schema is (metadata_type, name, package_id, organization_id reserved,
active); clone and disable become independent primitives; the subflow
guard attaches to disable; the base-moved notice is withdrawn and clone
ancestry is recorded as deliberately untracked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KWRU3s15AJz7PGW7a7wdCh
…isable leg follows the flow legs

Records the third 2026-08-25 maintainer ruling verbatim in the Deciders
block. action does not follow hook out of the model: internal package
plumbing is code-only, customer-facing business behavior is disable +
clone. The quote is first-party pull for the disable half, so the
action-disable leg (same sys_metadata_activation ledger, same write
authority, a consult point at action dispatch, a surface row) is
chartered to follow the flow legs; the clone half stays pre-charted.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KWRU3s15AJz7PGW7a7wdCh
Merged via the queue into main with commit 28b47a9 Aug 25, 2026
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/m skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant