Governing a system
that acts.

I run a system of 37 AI agents with real autonomy over real surfaces. This page is the layer above its controls: what the system is for, what it's aiming at, the rules it runs by, who decides what, how much risk it takes on, and the risks it carries now. The controls themselves are on /controls.

Scope, stated plainly. AI drafted this system's governance, including the risk scores, and I chose what stands. Nobody has reviewed any of it independently. Each objective says whether it's met. How it was tested →

21 controls · as of 2026-09-29

1Mission

The thing I'm building is never the goal. I've always been interested in whether AI can build it, how it gets built, and how to keep it under control.

2Objectives

Each objective is a target, with the measure that would show it met and where it stands today.

Target 1 of 4

Build with AI end to end, in a way someone else can read back.

Measure
Every build on a watched path has a spec and a review on file.
Status
Not yet measured The build gate (CM-01) requires a spec or a passed review before a watched path changes. Nothing yet counts what share of builds went through it.
Controls
CM-01

Target 2 of 4

Find where AI can't yet be trusted to act alone.

Measure
Postmortems written, and whether a failure class comes back after its fix.
Status
Not yet measured Significant failures get a root cause and a postmortem (OP-04). Nobody counts recurrence yet.
Controls
OP-04

Target 3 of 4

Keep it under control.

Measure
No irreversible or outward action without a human yes, no failure silent for more than seven days, and every control's test shown failing before the control is relied on. Tracked through the risk register, re-scored every quarter.
Status
Not met 9 of the 13 published risks sit outside tolerance after the 2026-09-29 re-score. Scheduled jobs also push to a private remote every night without a yes for each push.
Controls
GV-01 · AC-02 · CM-04

Target 4 of 4

Keep it portable.

Measure
No working part depends on state held only in a vendor's memory.
Status
Not yet measured State is kept in plain files by design (OI-05). No audit has looked for state that lives only with a vendor.
Controls
OI-05

3Operating principles

These are the rules the controls come from, in short form.

  1. 01

    Earned knowledge over borrowed certainty

    A claim stays a claim until something has checked it, and that includes my own claims.

  2. 02

    A check that can't fail isn't a check

    Before a control is relied on, its test runs against a copy broken on purpose, and it has to go red.

  3. 03

    A rule in a document is a wish

    The rules that matter run as code outside the model, where an agent can't skip them from inside its own turn. Where a rule is still only guidance, the control register says so.

  4. 04

    Fix it three times

    Fix the instance, then its cause, then whatever would let it happen again, because a fix that stops at the first step tends to come back.

  5. 05

    Delegation without abdication

    I keep a veto, not the pen. Agents do the work, and anything they surface should say where it came from, so a machine's decision doesn't pass as mine.

  6. 06

    Silence is the risk, not failure

    A job is judged by what it delivered, not by its exit status, because the failure that does damage is the one that reports healthy while nothing happened.

  7. 07

    Portable by design

    What the system knows lives in plain files, so models, tools and interfaces can be swapped out without losing any of it.

  8. 08

    Rectify the names 正名

    Confucius said the first act of governing is to get the names right. Here that means shipped, done and healthy have to be true of the thing they name.

  9. 09

    Challenge on logic, not on caution

    Object when the reasoning is wrong or the plan won't reach its goal. A plan being unusual or risky isn't, on its own, a reason to object.

  10. 10

    Less certain, fewer words

    When the evidence is thin, say so in one sentence rather than covering the gap with more words.

4Roles and decision rights

Each decision right names the control that enforces it, or says that nothing does yet.

Owner

The one person the system works for.

  • Approves every send, publish, deploy and payment, one approval per action.

    By convention, not enforced. AC-02 records the rule.

  • Sets the risk tolerance and accepts the risk that remains.

    By convention, not enforced. GV-01 records the rule.

  • Sets the mission and objectives, and can veto anything an agent proposes.

    By convention, not enforced. GV-04 records the rule.

Builder

An agent session doing the work.

  • Changes a watched path only when a spec lists it or a review passed in the last two hours.

    Enforced by CM-01

  • Can't report work as done without checking it in the same turn.

    Enforced by OI-01

  • Changes many files at once only after a manifest gives each file its own reason.

    Enforced by AC-02

  • Can't run a recursive force-delete or remove a cloud-document placeholder.

    Enforced by AC-01

  • Labels what it surfaces with where it came from.

    By convention, not enforced. OI-03 records the rule.

Auditor

A separate agent that reviews a spec before the build starts.

  • Clears a build on a watched path. The builder can't clear its own.

    Enforced by CM-01

Reviewer

A person, independent of the builder, who reviews the control mapping.

  • Checks the mapping on the control register against the frameworks.

    Nobody holds this role yet.

Scheduled job

Runs with no person present.

  • Commits and pushes the system every night, and holds the push for 48 hours after a change to the rules.

    Enforced by CM-02

  • Restarts a job that went silent, then reports what it did.

    Enforced by OP-01

5Risk appetite

Tolerance is set by what can't be undone

This is the tolerance statement from the system's risk register, lightly edited. Anything whose worst realistic outcome is rework, noise, or a degraded page that someone notices within a week is accepted. Anything that can fail while still reporting healthy is accepted only if a detective control catches it within seven days, because silence, not failure, is what this system can't tolerate. Four things are not accepted at any score:

6The risk register

13 risks shown. After their current controls: 0 Critical · 3 High · 9 Moderate · 1 Low. 9 of the 13 sit outside the tolerance above. 1 more is withheld from this version, because describing it would disclose what it protects. It is outside tolerance.

Risks that haven't happened yet, scored against the tolerance above. Tap a risk to open it. This is the register behind GV-01, with names and paths removed. Likelihood and impact are 1 to 5 judgments, not measured rates; the score is their product. Before is without the current control, after is with it. Scored 2026-08-07, re-scored 2026-09-29 by the builder, not independently. Next review 2026-12-29, 3 months after the last.

R1A guard against an irreversible deletion goes inert after a tool is renamed, and nothing notices10 HighOutside tolerance
Score
Before: likelihood 3 × impact 5 = 15 CriticalAfter: likelihood 2 × impact 5 = 10 High
Control
AC-01, OP-03. Both deletion guards now have tests that check they are still wired in. The tests run when something changes, not on a timer.
Treat
Mitigate
Change
Down from 15. The last open deletion path was closed in August.
R2Instructions hidden in content the agents read reach a runtime that runs with permission prompts switched off10 HighOutside tolerance
Score
Before: likelihood 3 × impact 5 = 15 CriticalAfter: likelihood 2 × impact 5 = 10 High
Control
AC-03, AC-02. Only one sender can reach the runtime. Nothing inspects the content itself.
Treat
Mitigate
Change
Unchanged.
R3Private personal data reaches a public page10 HighOutside tolerance
Score
Before: likelihood 2 × impact 5 = 10 HighAfter: likelihood 2 × impact 5 = 10 High
Control
OI-02. The build-don't-strip rule, plus automated leak tests on two public surfaces. Most hand-written pages have no leak test.
Treat
Mitigate
Change
Unchanged score; two surfaces now checked by a test.
R4A model the system names by version is retired in the middle of a pipeline6 ModerateInside tolerance
Score
Before: likelihood 4 × impact 2 = 8 ModerateAfter: likelihood 3 × impact 2 = 6 Moderate
Control
OI-05, OP-02. A written migration procedure, and a measured exposure of two scripts. Scheduled runs that hit an API error are flagged.
Treat
Accept
Change
Down from 12. Measuring the exposure lowered its impact.
R5The machine is lost while part of the system has no current offsite copy8 ModerateOutside tolerance
Score
Before: likelihood 3 × impact 4 = 12 HighAfter: likelihood 2 × impact 4 = 8 Moderate
Control
CM-03, OP-05. The main store is pushed offsite nightly and was current on the review date. The agent-control layer has no offsite copy.
Treat
Mitigate
Change
Down from 12. The backlog of unpushed changes seen in August is cleared.
R6A self-healing job moves or rewrites many files on a bad heuristic6 ModerateInside tolerance
Score
Before: likelihood 2 × impact 4 = 8 ModerateAfter: likelihood 2 × impact 3 = 6 Moderate
Control
AC-02, CM-03. Nightly versioning makes a mass change reversible.
Treat
Accept
Change
Unchanged.
R7Several credentials expire at once while the owner is away8 ModerateOutside tolerance: no reliable detective control
Score
Before: likelihood 4 × impact 3 = 12 HighAfter: likelihood 4 × impact 2 = 8 Moderate
Control
OP-01, OP-02. Re-authentication procedures and a job watchdog. A single-credential version happened on the review date: jobs failed for about two hours, recovered on their own, and were found by a manual check.
Treat
Mitigate
Change
Unchanged score. Partly realized.
R8An operating-system upgrade breaks many scheduled jobs at once9 ModerateOutside tolerance: no reliable detective control
Score
Before: likelihood 3 × impact 3 = 9 ModerateAfter: likelihood 3 × impact 3 = 9 Moderate
Control
OP-01. No post-upgrade smoke test exists.
Treat
Mitigate
Change
Unchanged.
R9Work items are marked closed when the work was never done9 ModerateOutside tolerance
Score
Before: likelihood 3 × impact 3 = 9 ModerateAfter: likelihood 3 × impact 3 = 9 Moderate
Control
None. No closed item is ever sampled and re-performed.
Treat
Mitigate
Change
Unchanged.
R10An unattended loop runs up metered spend9 ModerateOutside tolerance
Score
Before: likelihood 3 × impact 3 = 9 ModerateAfter: likelihood 3 × impact 3 = 9 Moderate
Control
OI-04. Spend needs a yes before a metered workflow runs. The spend audit runs on demand only; the daily scheduled audit checks for exposed keys, not spend.
Treat
Mitigate
Change
Moved out of tolerance. The August scoring assumed a daily spend check that doesn't exist.
R11Agents act on standing rules that have since changed6 ModerateInside tolerance
Score
Before: likelihood 4 × impact 2 = 8 ModerateAfter: likelihood 3 × impact 2 = 6 Moderate
Control
None. A weekly reconciliation job and two agent audit jobs.
Treat
Accept
Change
Unchanged.
R12Two writers update the same register file and one set of changes is lost4 LowInside tolerance
Score
Before: likelihood 3 × impact 3 = 9 ModerateAfter: likelihood 2 × impact 2 = 4 Low
Control
OP-05, CM-03. Snapshots before each edit and nightly versioning.
Treat
Accept
Change
Unchanged.
R14The owner is unavailable while scheduled jobs keep acting8 ModerateOutside tolerance: no reliable detective control
Score
Before: likelihood 2 × impact 4 = 8 ModerateAfter: likelihood 2 × impact 4 = 8 Moderate
Control
None. No pause switch, stand-down procedure, or successor.
Treat
Accept
Change
Unchanged. Accepted explicitly: one person can't be engineered away.

7Oversight and review

8Where the rest lives