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

docs(adr): ADR-0126 — the platform customization model for packaged metadata (three regimes, one activation ledger)#12063
os-trump merged 3 commits into
mainfrom
claude/issue-12049-customization-model-adr

Conversation

@claude

@claudeclaudeBot 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/main0b048393. 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):

GateVerdict line
pnpm check:adr-anchorsexit 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
@claudeclaudeBot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 25, 2026
@claude
claudeBot requested a review from os-zhuangAugust 25, 2026 07:24
@github-actionsgithub-actionsBot added size/m documentation Improvements or additions to documentation labels Aug 25, 2026
…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
@os-trumpClaude

Copy link
Copy Markdown
Collaborator

Merging on the maintainer's direct instruction. Provenance (who / verbatim / where): the maintainer, in the PM chat session (2026-08-25), after the batch-1 governed-PR review of five PRs including this one was presented in full: 「同意,帮我合并,然后继续」. The hand-merge-by-maintainer rule is satisfied through that explicit delegation; this comment is the audit record for the governed-merges checklist. Checks verified at head a09d035a: 26 check runs, all success/skipped, zero failures. ADR-0126 is hereby accepted — per the PR's own terms, the merge is the model's acceptance. Executed by PM session session_01H9StxQgG2DPA26XzZZqnJB.


Generated by Claude Code

@os-trump
os-trump marked this pull request as ready for review August 25, 2026 10:52
@os-trump
os-trump requested a review from hotlong as a code ownerAugust 25, 2026 10:52
@os-trump
os-trump added this pull request to the merge queueAug 25, 2026
Merged via the queue into main with commit 28b47a9Aug 25, 2026
27 checks passed
@os-trump
os-trump deleted the claude/issue-12049-customization-model-adr branch August 25, 2026 11:12
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/mskip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@os-trump@claude