Skip to content

docs(adr): ADR-0060 — Conformance Ledger as a Platform Pattern - #2103

Merged
xuyushun441-sys merged 1 commit into
mainfrom
adr/0060-conformance-ledger
Jun 21, 2026
Merged

docs(adr): ADR-0060 — Conformance Ledger as a Platform Pattern#2103
xuyushun441-sys merged 1 commit into
mainfrom
adr/0060-conformance-ledger

Conversation

@xuyushun441-sys

Copy link
Copy Markdown
Contributor

Promotes the conformance-ledger discipline from a hand-written habit to a reusable platform pattern.

Why

We've now written the same ledger twice — ADR-0056 D10 (authz matrix) and ADR-0058 D7 (expression surface) — both defending against the declared-but-unenforced failure class: a property that's authorable but the runtime never wires, so it silently does nothing (#1887). AI authorship amplifies this — LLMs produce config that looks complete and don't notice nothing reads it. Two near-identical instances is the signal to standardize.

Decision (decision-only PR)

  • D1 one reusable ConformanceRow model + assertLedger CI helper (unique ids / valid state / enforced-has-site / proof-exists / ratchet: discover the real surface from source, fail if any is unclassified).
  • D2 refactor the two existing ledgers onto it (delete duplicated test logic, prove reuse).
  • D3 third instance over the object validation-rule surface (state_machine/cross_field/script/…) — pins the ADR-0020 state_machine enforcement into CI; a new rule type with no enforcement becomes a build break.
  • D4 home the helper in @objectstack/verify (static complement to its runtime harness).
  • D5 "landed" is defined by the ledger: no green ratchet → not landed. ADR-0049's "enforce or remove" gains a mechanical third leg.

Phasing

P1 model + unify the two · P2 validation-rule ledger · P3 the "landed" bar + extend to next surfaces.

Non-goal: no runtime-semantics change; purely the conformance/verification layer.

🤖 Generated with Claude Code

The platform has hand-written the same conformance ledger twice (ADR-0056 D10
authz matrix + ADR-0058 D7 expression surface) to defend against the
declared-but-unenforced failure class (#1887). Promote it to a reusable pattern:
one ledger model + assertLedger CI helper (in @objectstack/verify), the two
existing instances refactored onto it, and a third for the object validation-rule
surface (pinning the ADR-0020 state_machine enforcement). A declaration surface
is "landed" iff it has a conformance ledger whose ratchet is green.
Decision-only; implementation follows P1–P3.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercelBot commented Jun 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
specReadyReadyPreview, CommentJun 21, 2026 7:01am

Request Review

@github-actionsgithub-actionsBot added size/m documentation Improvements or additions to documentation labels Jun 21, 2026
@xuyushun441-sys
xuyushun441-sys merged commit 486454d into mainJun 21, 2026
15 checks passed
@xuyushun441-sys
xuyushun441-sys deleted the adr/0060-conformance-ledger branch June 21, 2026 07:02
os-zhuang added a commit that referenced this pull request Jun 30, 2026
…s) (#2471)
Pins the vendored @objectstack/console to objectui d23d6ebfa so the served
console includes the kind:'react' renderer + the full HTML tag set for
kind:'html' (objectui #2105). Carries two small list inline-edit toggles
(#2102/#2103) since the previous pin. Activates the CRM Workbench showcase
page (ADR-0081) in the real serving path.
Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/m

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@xuyushun441-sys@os-zhuang