Skip to content

The GOVENANT Standard — Part 12: The Porting Guide

How to convert any product — greenfield or existing, any domain — into a conforming OCMAS. The checklist is tiered to the maturity ladder; the build order is dependency-correct; the definition of done is the ALIVE + COVERED pair. An item is done only when it has fresh rows, a live consumer, and real side effects — never when the file exists.


12.1 Setup

  1. Copy the standard into the target repo:

    Terminal window
    mkdir -p docs/govenant && cp <source>/docs/govenant/*.md <source>/docs/govenant/SCHEMA.sql docs/govenant/
  2. Map the domain (Part 0 §0.7) before anything else: this product’s tenants, roles, levers, terminal edges, outcome vocabulary. Write the mapping into docs/govenant/DOMAIN-MAP.md — every later step reads it.

  3. Run the audit prompt (Part 9 §9.6). For a product with zero substrate the deliverable degrades to a gap register in the §12.4 build order — that register is the project plan.

  4. If old code is being rewritten: copy the legacy system into an old-code/ reference folder in the new repo so agents have instant access to prior logic and behavior without archaeology.

12.2 Conversion checklist

Tier 1 — Non-negotiable substrate (claims L1/L2)

#ComponentDone when…Part
1Append-only action ledgerEvery action writes input/output/cost/model/outcome fields; no UPDATE path; cost/model populated at the LLM-client chokepoint.4-S1
2One real terminal side effectAt least one outbound action that is NOT a log line, traceable to a ledger row. No delivery = FLATLINED, whatever else exists.4, 5
3Lever registry + ownership gateSingle owner per lever; unowned → request; the check fires at EVERY actuation surface including delivery edges (AP-5).1, 4-S2
4Validation gateDeterministic hard-blocks + judged lenses on every outbound artifact; never fails open.4-S3, 5
5Constitution planeSettings as rows w/ truthful provenance; sticky lock; snapshots append per write (AP-4).8
6Approval queue + tiersTier-2 acts pend; expiry writes decided_by='system:expired' atomically (AP-7).7
7Event bus w/ named consumersTyped constants both sides import (AP-3); every type has a consuming duty; latency measured.4-S6
8Duty roster (minimum viable)All scheduled work derives from role_duties (deploy-config crons retired); every duty asserts an outcome; duty_runs ledgered w/ required reasons.3
9Conductor + standupmissed rows written, escalated; per-tenant standup generated from the roster diff.3 §3.6, 4-S9
10Circuit breakers + livenessEvery external dep wrapped, breakers test-tripped once; liveness flag+dep gated.7 §7.3

Tier 2 — Delivery + coverage verification (claims L3)

#ComponentDone when…Part
11Outcome-keyed completion100% of agenda items carry assertions (inherited from duties); unverified = FAILED + escalated.3, 5
12Coverage invariants C1–C3Enforced on roster writes + nightly; the uncovered-responsibility list is empty or ticketed.3 §3.5
13Motion-vs-delivery panel + coverage boardBoth operator-visible with real data.11
14Falsifiability at the chokepointPlaceholders structurally rejected inside logDecision (AP-1); baselines captured live.6 §6.2
15Metric domain bindingLevers declare expected_metrics[]; non-sequiturs rejected (AP-2).6 §6.3
16Prompt registryVersioned, provenance, rollback, per-scope override, UI-edited — the storage template the other dimensions copy.2 §2.2
17Block/defer reasons schema-requiredA blocked/skipped row without a reason cannot be written.3 §3.2
18Delivery-integrity auditSet-relationship invariants (drafts≫ships, churn, coverage %) daily, with a live consumer for its breaches (AP-6).7 §7.3

Tier 3 — Earned autonomy (claims L4)

#ComponentDone when…Part
19Promotion + demotion liveThresholds in code; one correction demotes; pinned actions are a code constant no config can defeat.7 §7.1
20Grader + calibration feeding back% past-horizon decisions graded → 100; miscalibrated roles get a raised evidence bar.6 §6.4–6.5
21Five-tab Agent ConfigurationPrompt/Skills/Tools/Context/Schedule as data, runtime-enforced, UI w/ provenance + usage.2
22Significance gateNo winner/loser on noise; instrument mode below sample floor.6 §6.8
23Ledger rulesLessons stored, injected, human-lockable; rule changes approvable.6 §6.7
24Review sessions + trust receiptsRecorded review → structured tickets; pinned DoD; per-delivery receipt from the record.11 §11.6

12.3 Definition of done (the honest bar)

A real inbound event (an issue, a lead, a ticket) can flow:

event → consuming duty wakes the right role → deliberate → decide (owned lever or request)
→ validate → act (real side effect via a granted tool) → verify outcome row
→ record + falsifiable prediction → grade on horizon

…with a human able to lock any lever, a conductor that catches any silent beat, and a throughput alarm if an edge goes quiet under demand. Then run Part 9 end-to-end: the product must come back ALIVE and COVERED with no load-bearing pillar below L2. If any edge only logs instead of acts, it is not done.

12.4 Build order (dependency-correct; climbs L0→L4)

flowchart TD A[1 Ledger + tenancy scope_kind from day one] --> B[2 One tool-calling worker\nthat actuates for real] B --> C[3 Monitors ALONGSIDE not after:\nthroughput + liveness + breakers] B --> D[4 Constitution plane + tiers + approvals] D --> E[5 Lever registry + ownership gate] E --> F[6 Validation gate] F --> G[7 Duty roster + dispatcher +\noutcome-keyed completion + conductor] G --> H[8 ONE executive end-to-end\npredict → actuate → grade\nbefore adding the rest] H --> I[9 Significance + calibration] I --> J[10 Remaining roles + rosters\ncoverage C1-C3 green] J --> K[11 Ledger rules learning loop] K --> L[12 Boardroom + @mentions + chat-that-acts] L --> M[13 Prompt registry → then Skills/Tools/Context/Schedule tabs] M --> N[14 Full UI: coverage board,\nmotion-vs-delivery, ant farm]

Sequencing rules that save rework:

  • Monitors ship with the first actuator, not after it. Every week an edge runs unmonitored is a week of invisible flatline risk.
  • One executive end-to-end before breadth. A single role that genuinely predicts→actuates→ grades teaches more than six that deliberate beautifully.
  • The roster before role sprawl. Adding roles before coverage exists multiplies silence.
  • scope_kind on day one (Part 1 §1.5) — retrofitting project scope touches every table.

12.5 Domain retargeting quick-reference

Substrate elementGTMEngineeringLegal
Leverssend_volume, spend_cap, segment_pausedeploy_gate, rollback, merge_policy, coverage_threshold, cve_policyfiling_release, disclosure_policy, engagement_scope
Validation lensesbrand-truth / funnel / risk / compliancecorrectness / security / perf / maintainabilityaccuracy / privilege / jurisdiction / tone
Hard blocksmissing CTA, naked links, claims w/o sourcesecrets, failing tests, CVE ceilingmissing citations, unverified facts, deadline breach
Terminal edgesemail sent, demo booked, deal closedPR merged, deploy verified, incident resolvedfiling accepted, document executed
Duty examplesdrain reply queue (event), campaign review (cron 10:00), grade after metrics (dependency)triage new issues (event), dependency scan (cron), release notes after deploy (dependency)docket check (cron), intake triage (event), draft after research (dependency)
Entity timelinecontactwork item / PRmatter / filing

12.6 Common porting mistakes

  1. Porting the UI before the substrate — screens over empty tables demo well and audit as L0.
  2. Prompt-porting the charters — describing authority instead of gating it (Law 1).
  3. Keeping the old scheduler “temporarily” — two sources of scheduled truth means the coverage audit is wrong from day one; cut over, don’t straddle.
  4. Deferring the audit until “done” — run Part 9 at every tier boundary; the gap register is the backlog, and anti-patterns are far cheaper to fix before call sites multiply.
  5. Building breadth before one closed loop — see §12.4.