Live
This is the plan actually being worked, read from the file that governs it. Not a summary of it, not a description of it — the file. 43 steps across 7 stages, 31 of them done, and the 22 questions the work is currently waiting on a human to answer.
evidence/remediation/phase9_plan.json at commit 58617846d636 on 2026-08-02, and no number on this page was typed by hand. The state of the running system is not live and cannot be — this site is a static export with no backend and no runtime network access at all. Anything measured is dated and written in the past tense.What happens next
CHECKPOINT-E owner: operator
CHECKPOINT E -- the operator's. Two images side by side at [redacted: internal address] He says whether they differ with NO TEXT READ, and if so whether the reason is that the MATERIAL (truth_class) changed. That is the step's falsifier and it is M8, the operator's eye.
Blocked on: M8 -- the operator's eye. No gate can stand in for it, and none is being asked to. Measured 2026-07-29: both images are real and they differ -- GET /api/lab/shot?swap=0 returns 3371 bytes and ?swap=1 returns 3375 bytes, both valid PNG, sha256 6eed6e94... and 0321be29..., embedded side by side at viewer/lab/l6.html:52-53. The surface is ready; the eye is not a gate.
stages[id=4].steps[id=4.6]
Where the work stands
PHASE-9 — RETURN TO RESONANCE. A step marked operator is one no automated agent is permitted to perform, and a step marked blocked is stuck on something outside this repository. Both are counted in the open work rather than quietly excluded from it, because a plan that only counts what it can finish is not reporting the same thing as a plan that counts everything.
Every stage, every step
CONSERVE done
The five malformed drift comparisons are currently the ONLY in-repo record that the world is wrong. Repairing an instrument can take its evidence with it. So freeze the picture first.
| Step | Status | What it is, and what would falsify it |
|---|---|---|
| 0.1 | done | freeze the drift signals verbatim Predicted: M7 Falsified if: A1 |
| 0.2 | done | instrument inventory — does the exit code carry the verdict Predicted: M2 Falsified if: A1 |
| 0.3 | done | the stale-process record Predicted: M7 Falsified if: A1 |
| 0.4 | done | frozen-evidence baseline verified Predicted: M2 Falsified if: A1 |
| 0.5 | done | PHASE-9 register pre-registered Predicted: - Falsified if: A3 |
Checkpoint A operator
What he looks at: the frozen census — the agreed picture of today
What he decides: rules it complete; everything later is diffed against it
THE INSTRUMENTS done
Nothing measured after this is trustworthy until it is done. Every live probe in every later step measures a ghost while five long-lived processes serve bytes that are not HEAD.
| Step | Status | What it is, and what would falsify it |
|---|---|---|
| 1.1 | done | build identity on all four bodies Predicted: M3+M7+M6 Falsified if: A1 |
| 1.2 | done | gate_runner asserts exit != 0 <=> verdict != PASS Predicted: M1 Falsified if: A2 |
| 1.3 | done | CI runs node — gates-node, gates-python, and a canary branch that must go RED Predicted: M1 at CI level Falsified if: A2 watched live |
| 1.4 | done | golden sha pins (3 currently unpinned) Predicted: M1 Falsified if: A2 |
| 1.5 | done | the five malformed drift comparisons Predicted: M1 MANDATORY (ADR-0002 Amd 1 Decision 8) Falsified if: A2 |
| 1.6 | done | drift.deploy_ref_behind_head.<build>, relation lag Predicted: M1 Falsified if: A1 |
| 1.7 | done | capture-age fences Predicted: M1 Falsified if: A1 |
| 1.8 | done | witness capture freshness; independent_custodians:0 forces BLOCKED Predicted: M1 Falsified if: A1 |
| 1.9 | done | re-run the 0.2 inventory and diff Predicted: M2 Falsified if: A1 |
Checkpoint B operator
What he looks at: CI going RED in front of him on the canary branch
What he decides: rules on my verify_host_tracking retraction
STAGE 1 IS COMPLETE, 9 of 9 steps DONE, and Checkpoint B is now the operator's. Both of its clauses are already satisfied and can be re-read at any time: (1) 'he sees CI going RED in front of him on the canary branch' -- done live in step 1.3, GitHub Actions run 30226371980, gates-node RED for the planted reason, canary branch deleted afterwards; (2) 'he rules on my verify_host_tracking retraction' -- the retraction stands and was re-confirmed by this very step: host_tracking is byte-identical to Stage 0 and still exits 1 with verdict FAIL, so the gate DOES carry its verdict in its exit code and my original 'exits 0' report was false. That ruling is his to make; the measurement is on the table.
THE RECORDER done
The Control Plane's own ledger stopped at Phase 5. 'Capability became practice' for one phase, then stopped, recorded nowhere. The audit trail for two phases is the very mechanism this body exists to replace.
| Step | Status | What it is, and what would falsify it |
|---|---|---|
| 2.1 | done | direct tests for GateRow.new/1 and Store.write_artifact/2 Predicted: M2+M6 Falsified if: A5 |
| 2.2 | done | seat_projects_verbatim_test.exs — THE LOST ITEM Predicted: M1 Falsified if: A2 |
| 2.3 | done | the stepwise recorder Predicted: M2 Falsified if: A3 |
| 2.4 | done | backfill Phases 6 and 7 Predicted: M5 Falsified if: A5 |
| 2.5 | done | THE BOOTSTRAP — recording a repair to the recorder Predicted: M2 Falsified if: A3 |
| 2.6 | done | every step marked done has exactly one ledger entry Predicted: M1 Falsified if: A1 |
| 2.7 | done | the ledger's evidence is content-addressed — the repair of 2.6, and the false premise it exposed Predicted: M2 Falsified if: A1 |
Checkpoint C operator
What he looks at: ledger.ndjson open in a text editor — a human can read it; that was the design
What he decides: co-signs the bootstrap's honesty caveat
CHECKPOINT C IS THE OPERATOR'S. First clause already satisfiable: open evidence/control_plane/ledger.ndjson in a text editor — a human can read it, which was the design. It holds 11 entries: 7 original, Phases 6 and 7 backfilled (Phase 7 as ACCEPTANCE NOT MET), and at seq 10 and 11 two bootstrap ingestions. Second clause is his co-sign on the bootstrap's honesty caveat: this ledger did NOT witness Phase 9 Stages 0-2, could not have, and records only that it INGESTED an account written elsewhere and identified by hash. STAGE 2 IS NOW COMPLETE, 7 of 7. Step 2.6 introduced a real defect and step 2.7 repaired it without editing, withdrawing or rebuilding a single entry. Two S9 items are open and are HIS, not an agent's — see 2.7.
THE REFUSALS THAT DO NOT EXIST blocked
F28-F31 have no test in either repository. F29 and F30 are violated LIVE. F31 protects the operator's own go-live gate from an agent and does not exist.
| Step | Status | What it is, and what would falsify it |
|---|---|---|
| 3.1 | done | F29/F30 — release_verdict gains a third word, UNVERIFIED Predicted: M2 Falsified if: A2 |
| 3.2 | done | F28 — frozen-evidence drift halts Predicted: M1 on a COPY Falsified if: A1 |
| 3.3 | blocked | F31 — go-live refuses an agent Predicted: M4 Falsified if: A6 |
| 3.4 | done | correct FAILURE-MODES.md status line — AFTER 3.1-3.3, never before Predicted: M6 Falsified if: A3 |
| 3.5 | done | LIMITATIONS.md generated from @limitation annotations Predicted: M6 Falsified if: A3 |
| 3.6 | done | re-measure F28-F31 against the 0.2 inventory Predicted: M2 Falsified if: A1 |
Checkpoint D planned
What he looks at: NOTHING — he tries to reach go-live himself and finds no path
What he decides: rules whether F31's absence is broad enough
THE UNRUN AND THE UNWIRED in_progress
Zero of 15 Control Plane modules has a production caller. Nine PENDING gates have a written scaffold and have never been run. And the lab — the reason Scene exists — was never built.
| Step | Status | What it is, and what would falsify it |
|---|---|---|
| 4.1 | done | the recorder becomes the first production caller Predicted: M3 Falsified if: A1 |
| 4.2 | done | nine never-run gates get attempted_at Predicted: M5 Falsified if: A1 |
| 4.3 | done | Phase 8 items 8.0-8.6 + bootstrap_literals.json with expiry Predicted: M5 Falsified if: A2 |
| 4.4 | done | the repo-wide IP fence, landed RED Predicted: M5 Falsified if: A2 |
| 4.5 | done | mix format on lib/sp/brain/language.ex — its own commit Predicted: M2 Falsified if: A3 |
| 4.6 | in_progress | THE LAB — builds 0 through 6 Predicted: M1 (verify_shot --mutate MUST FAIL) + M8 Falsified if: A4 7 builds: L0 DONE · L1 DONE · L2 DONE · L3 DONE · L4 DONE · L5 DONE · L6 DONE |
Checkpoint E planned
What he looks at: TWO IMAGES, and the lab he can walk around
What he decides: says distinguishable or not, with NO TEXT READ
THE DOCUMENTS planned
Last, always. Editing a document to match a broken world closes the only signal telling the truth.
| Step | Status | What it is, and what would falsify it |
|---|---|---|
| 5.1 | planned | FAILURE-MODES.md final sweep Predicted: M6 Falsified if: A3 |
| 5.2 | planned | README.md:3 and the phase table Predicted: M6 Falsified if: A3 |
| 5.3 | planned | ARCHITECTURE.md:372-379 — THE DECLARED EXCEPTION Predicted: M6 Falsified if: A3 |
| 5.4 | planned | RESUME.md; PHASE-7.md:79 by dated addendum Predicted: M6 Falsified if: A3 |
| 5.5 | operator | CLAUDE.md:93-97 — step 12 of 12, dead last Falsified if: A3 |
Checkpoint F planned
What he looks at: the docs, each naming the commit that made it true
What he decides: rules on CLAUDE.md:93-97 — a contract amendment, his alone
THE FINAL RUN planned
The whole stack, tested a bit at a time, in front of him.
| Step | Status | What it is, and what would falsify it |
|---|---|---|
| 6.1 | planned | full front-to-back replay from a CLEAN CLONE Predicted: M2 Falsified if: A1 |
| 6.2 | planned | scripts/operator_verify.ps1 — one line per gate Predicted: M2 Falsified if: A2 |
| 6.3 | planned | the 24x7 readiness gate, separate from correctness Predicted: M3 Falsified if: A1 |
| 6.4 | operator | go-live is typed by a human; the agent stops |
| 6.5 | planned | PHASE-10.md pre-registered Falsified if: A3 |
Checkpoint AIR operator
What he looks at: the readiness report
What he decides: TYPES GO-LIVE HIMSELF. No agent path exists and none is built.
The questions this plan is waiting on
presence_evident: presence_evident, NOT unforgeable. The fences prove the request came from this box, as a loopback name, with a preflight-forcing header. NONE OF THEM PROVES A HUMAN — an agent on this box can post this exact row. The chain makes it tamper-EVIDENT, not authentic. No gate may read this as authority.Open
| Id | Kind | The question |
|---|---|---|
| S1 | stop | the writer's key on node2 |
| S2 | stop | any write to a host |
| S3 | stop | any write to a frozen artifact |
| S4 | stop | any write to evidence/gates.ndjson |
| S5 | stop | any contract amendment |
| S6 | stop | go-live, in any form |
| S7 | stop | proof 3 disagrees with proof 1 |
| S8 | stop | a pre-registered falsifier fires |
| S9 | stop | a receipt cannot be reproduced from its own commit |
| S10 | stop | running any of the nine PENDING science gates |
| not_mine[0] | not_mine | the writer's key on node2 — and with it item 7.7 |
| not_mine[2] | not_mine | whether [redacted: internal host] is a real service |
| not_mine[3] | not_mine | the colony ruling (Route 1 or Route 2) |
| not_mine[4] | not_mine | CLAUDE.md:93-97 |
| not_mine[5] | not_mine | go-live |
| not_mine[6] | not_mine | ADR-0009 — the Gaia / control-plane reconciliation: the control plane authors, Gaia is the one authoritative projection (ruled aloud 2026-08-01; adoption is S5 and needs a recorded row) |
| not_mine[7] | not_mine | ADR-0008 — human presence for go-live: adopt, amend, or reject (S5; until ruled, mayGoLive refuses every path and that is the correct resting state) |
| not_mine[8] | not_mine | ADR-0010 — room state is contamination, room purpose is function: add a Room.purpose field that gates nothing, rather than a fourth room state |
| not_mine[9] | not_mine | declare a BagIt pack DISTRIBUTABLE — building a bag is agent work; declaring it fit to leave the box is the same class as the public push |
| 5.5 | operator_step | CLAUDE.md:93-97 — step 12 of 12, dead last |
| 6.4 | operator_step | go-live is typed by a human; the agent stops |
What the automated agent may never do
An agent does most of the building here. These are the acts it is forbidden to perform under any instruction, and they are published in full because a list of restraints that only its author can read is not a restraint — it is a claim about one.
| Id | Forbidden act | Why |
|---|---|---|
| S1 | the writer's key on node2 | THE ONE REPAIR THE AGENT MUST NOT PERFORM. Using write access to erase the evidence of write access is not restoring a witness; it is destroying the last proof. |
| S2 | any write to a host | — |
| S3 | any write to a frozen artifact | a correction is a new sidecar with a new hash |
| S4 | any write to evidence/gates.ndjson | — |
| S5 | any contract amendment | — |
| S6 | go-live, in any form | — |
| S7 | proof 3 disagrees with proof 1 | speak it, stop; the agent does not pick a winner alone |
| S8 | a pre-registered falsifier fires | that is a RESULT, not an obstacle |
| S9 | a receipt cannot be reproduced from its own commit | — |
| S10 | running any of the nine PENDING science gates | — |
What was taken out of this page
Two different things happen to two different kinds of sensitive text, and the difference is deliberate. Structural details — an internal address, a hostname, a port — are redacted in place and leave a visible [redacted: …] marker, because the sentence still means something without them and you can see that something was removed. Third-party names are refused, never redacted: the whole item is dropped, because a marker where a name used to be still tells you a name was there, and a sentence built around a removed name is often still identifying. What you get instead is the count.
The last time the gates were run
44baf03d5041 — 31 pass · 3 not_run_external · 1 fail. Measured by generators/build_gates.cjs at the date above, NOT at this page's build time. A static page cannot know whether a gate passes right now.The full table, including where continuous integration disagrees with the operator’s machine, is on the gates page.Watching it happen
The work is broadcast live: YouTubeTwitch
On the broadcast itself, the state of the running system islive: an honest health line and a full-frame status board are regenerated every few seconds from the same probe the operator’s own private panel reads, and they name whatever is broken at the time. That is the surface where “right now” is answerable. This page is where what we are trying to do, and what we are stuck on is answerable, and it does not pretend to be the other one.