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

xuyushun441-sys merged 1 commit into
mainfrom
adr/0060-conformance-ledger

Conversation

@xuyushun441-sys

Copy link
Copy Markdown
Collaborator

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

vercel Bot commented Jun 21, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
spec Ready Ready Preview, Comment Jun 21, 2026 7:01am

Request Review

@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation labels Jun 21, 2026
@xuyushun441-sys
xuyushun441-sys merged commit 486454d into main Jun 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>

This branch was successfully deployed

1 active deployment
Preview — d2c2aaa8 Deployed Jun 21, 2026 by vercel[bot]
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants