Learning Platformindex / ADRs / ADR-007E9

ADR-007 — Governance, tracking & the build pipeline (E9)

Status: Proposed (design-panel synthesis) · Date: 2026-07-22 · Track: E9 (governance · tracking · build pipeline · quality gates) Method: adversarial design panel — estate-scout + four thinker-canon lenses (tracking/living-record · build-vs-adapt · simplicity · simple-vs-easy). Dissent preserved below.

Same shape as ADR-001 (the template). Brand-free: engines/tools named by capability only. The estate governance stack here is deep — that depth is the trap this track exists to resist.


1. Context

The platform is a no-code greenfield: nothing ships until the credit-funded build pipeline (plan now, build later) wakes up. E9 must decide how to govern that build and track it — before there is a line of code to govern.

The estate offers a mature apparatus: a binary-eval harness, an audit harness (deterministic security/hygiene/link-check gates), a fail-closed rollout-gate, artifact signing into a transparency log, a beads-on-Dolt version-controlled task substrate with per-op history, a three-way mirror (beads ↔︎ GitHub ↔︎ self-hosted project tracker), and a live self-hosted project tracker.

The estate-scout's verdict splits that apparatus cleanly in two: a software-release-grade bucket (mature, real — but built to govern autonomous agents that sign artifacts and can misbehave at scale) and a learner/community-facing governance bucket (essentially absent — content moderation, credential-integrity, progress policy). E9 governs a known, small team hand-writing a greenfield — not the agent-at-scale threat the heavy machinery was forged for. The track brief's own warning is the binding constraint: do not over-govern a greenfield.

The estate's own memory records the cost of over-adopting: ~30 high-throughput settles used the raw close path, skipped the mirror fan-out, and **~37 tracker cluster issues drifted stale-open**. The three-way mirror is not a neutral asset — it is a synchronization tax the estate has already been bitten by twice.

2. Decision drivers

3. Options considered

4. The panel (rankings diverged; read the core argument, not the rank)

Lens Rank #1 Core argument
Simplicity (Torvalds) B "Ceremony exceeding work." A three-way mirror for one small team is three places to update, two places to drift — the estate's own 37 stale-open issues are that failure mode. Signing/rollout-gate on a repo with no production surface is armor on an empty repo — you cannot roll back a deploy that never happened. Split by retrofit cost: tier-leak eval + append-only log built now; everything else the day it earns its place.
Build-vs-adapt (Fowler) D Wholesale is "BDUF in a governance costume." Signing answers "an untrusted/autonomous producer might ship something I can't trace" — the agent pressure, not the small-team pressure. Score every gate on irreversible-vs-reversible failure: tier-leak (a member sees what they didn't earn) is irreversible → hard gate now; a bad deploy is reversible with smoke + rollback → build the rail, not the signing pipeline. Pre-declare the promotion triggers so deferral is scheduled, not neglect.
Tracking / living-record (Cunningham) D (phased) The estate is a cathedral; a small team needs a workshop. The three-way mirror is a liability the estate already documented. But the spec forgot the after: an ADR is a promise, an AAR is the reconciliation — without the loop, ADR-001's preserved dissent ("the day discipline slips, C silently becomes B") is a tripwire with no one assigned to watch it. Make deferrals explicit: a register of "governance we are deliberately NOT running yet, and the signal that flips each on" — debt as a visible loan, not a mess.
Simple-vs-easy (Hickey) D (decomposed) "Already wired together" is the problem, not the asset — the estate stack arrives complected: tracker braided to eval braided to signing braided to rollout-gate. Adopting wholesale means adopting the braid. Decompose into separable capabilities behind stable seams, gated on need. The category error to forbid: putting the fail-closed tier-leak eval in the same lane and exit-semantics as markdown-lint — the important gate inherits the cosmetic one's seriousness.
Estate-scout Tracking + build-pipeline gates come almost entirely from the estate: a live self-hosted tracker (REUSE), a battle-tested task substrate with full change history (REUSE), a provenance-signed gate CLI whose security/link-check/anti-erosion gates drop into CI unchanged (REUSE). Release-governance (fail-closed ship policy, signed audit trails) is strong to ADAPT but heavier/more agent-shaped than a human product needs. Learner/community governance is the genuine greenfield — build it new on the estate's plumbing.

5. The convergence (what all five agree on, under the different ranks)

Despite splitting A/B/C/D, the lenses converge on one architecture:

  1. Reuse exactly one estate piece wholesale: the tracking substrate. Beads-on-Dolt is the one genuinely simple thing in the estate — it separates identity (the bead ID, forever), value (current fields), and time (per-op Dolt history), and gives post-compaction recovery for free. Every lens takes it. Custom (C) throws it away and rebuilds worse.
  2. But it is one log with rendered views — never a peer three-way sync. The moment "three-way tracker" is treated as one synchronized thing, you re-create the exact drift the estate already bled on. The tracker's own law — own the append-only log, rent the rendering (ADR-001 I9) — applies to governance too. Beads = the log. GitHub + the project tracker = one-directional rendered views out of it.
  3. One eval is load-bearing from day one: the P0 tier-leak eval, fail-closed (already in ADR-001 §8). Reuse the binary-eval harness for exactly this. It guards an irreversible harm; it is not governance overhead, it is the moat's smoke detector. Contrast signing, which earns nothing until an untrusted producer exists.
  4. Defer signing + rollout-gate behind a named trigger. No release artifact with an external consumer exists yet. Deferral is written, dated, and trigger-bound — not neglect.
  5. Keep deterministic and probabilistic gates in separate lanes with separate exit semantics. A must-be-green hygiene check and a fail-closed-but-occasionally-flaky eval cannot share a lane, a report surface, or a "green" bar — or you learn to ignore red (or block on noise) on the one gate that matters most.

6. Decision — "Own the tracking log · one gate for the moat · deterministic ≠ probabilistic · defer the ceremony behind named triggers"

A triggered-phase subset (Option D) that takes the winning move from each lens.

6.1 Own (cheap now, catastrophic to retrofit)

6.2 Rent (reuse the estate's plumbing as it is)

6.3 Defer (scoped, not killed — each behind a written trigger)

7. Tradeoff matrix

Dimension A wholesale B lighter C custom/minimal D triggered-phase Decision
Reuse the tracking substrate (recovery for free) ❌ (rebuilds worse) beads-on-Dolt as log
Avoid three-way mirror drift ❌ (peer sync) ✅ (no mirror) ✅ (log + rendered views) one-directional views
Fail-closed tier-leak eval, day one ⚠️ (may skip the moat gate) its own lane
Deterministic ≠ probabilistic lanes ❌ (one braid) ⚠️
Ceremony cost on a no-code greenfield ❌ high ✅ low ✅ low ✅ low ✅ (defer signing/gate)
Deferred gates actually fire when needed ✅ (always on) ⚠️ drift risk ⚠️ ✅ (named triggers) ✅ (register + AAR watch)
Reader-cost / second-engineer onboarding ❌ (buries the ADR) ✅ (ADR is the spine)
Learning loop (ADR→reality reconciliation) ⚠️ (no AAR) ⚠️ per-track AAR

8. Consequences

New locked invariants (promote into the foundation spec §7):

New required evals / gates (the build is only as trustworthy as these):

E9's first task is to stand up the subset, not the full apparatus:

"Stand up the triggered-phase governance subset: beads-on-Dolt log with one-directional GitHub + project-tracker views (epics only), the fail-closed tier-leak eval in its own lane, deterministic hygiene gates + escape-scan in their own lane, secrets/smoke/rollback, the per-track AAR seam, and the deferred-gate register — and pre-declare the signing / rollout-gate / flow-eval promotion triggers." Priority: high. Enhance an existing E9 tracking-setup bead under the program's project tracker rather than duplicating.

Estate seams (what we actually reuse):

9. Preserved dissent (do not resolve away)

10. Follow-up (beads to file in Phase B under the E9 epic)

  1. Lock invariants I11 + I12 + I13 into the foundation spec §7; amend §7 so the tier-leak eval is recorded as a day-one gate, not an E9 deferral.
  2. Stand up the triggered-phase governance subset (the §8 first-task bead): beads-on-Dolt log + one-directional views (epics only), the fail-closed tier-leak eval in the probabilistic lane, deterministic hygiene + escape-scan in their own lane, secrets/smoke/rollback, the AAR seam, the deferred-gate register.
  3. Write the deferred-gate register with named, dated triggers + owners: signing + rollout-gate (first autonomous member-visible producer / first auto-deploy to member iron), full audit-harness taxonomy (enough code), P1 ranking + flow evals (their agents ship).
  4. Configure the project tracker to render the nine E-track epics only; wire the one-directional bead→GitHub→tracker projection (never peer sync).
  5. Specify the two-lane evidence contract (deterministic vs probabilistic) so both emit to one canonical schema without becoming one braid.
  6. Author the per-track AAR template (decision link · surprises · which preserved-dissent tripwire fired) and make it a Settle-step deliverable.
  7. Annotate the estate-governance map with per-gate retrofit cost (tracking log + tier-leak eval + lane separation = irreversible/build-now; signing, rollout-gate, full harness, third mirror = repoint/defer).

Panel transcript basis: estate-scout + Cunningham/Fowler/Torvalds/Hickey lenses, 2026-07-22. Follows the ADR-001 template shape; ADR-002…009 share it.