This is how I run an AI-driven practice — acoustic engineering, media, and client work — without losing track of what's true. The short version: one lane does the work and can prove it, one lane checks it, and one lane thinks about it. Everything below is a real part of the system, described with real examples from the week this page was built.
3lanes, one rule each
6independent model lineages on the council
5append-only records that are never edited, only extended
68sites on one server, all governed the same way
0numbers in any document that didn't come from an engine
The system has a lot of automation in it, but it is not autonomous. Its job is to bring me the facts, the second opinions, and the options with their costs — then get out of the way. When something can't be settled on evidence, it comes back to me as a question with A / B / C, each priced. Nothing is "locked" without a human choosing to lock it.
Arbitration is on evidence, never on the vote — and never on who sounds most confident.
The failure this guards against is the one that never throws an error: a confident, plausible, wrong answer that survives review and gets published. Every rule below is a gate against plausible wrongness, not against crashes. Crashes are cheap — they stop you.
Cici — executes
Claude Code, running locally on my Mac
Anything that touches a file, a server, a repo, or an API. It is the system of record: it can run the command, read the result, and prove what happened. Always on, no chat quota.
The council — verifies
Six other AI models, four of them fully offline
"Is this right?" Second opinions, cross-checks, adversarial review. It costs no Claude tokens, which is exactly why every is-this-right question goes here and not to a chat window.
Claudia — judges
Claude on the web, personal account, used sparingly
Design critique, a strategy memo, a second read before something is locked. Bundle goes in, decision comes out. It is not a router — routing traffic through a chat window is what causes the interruptions.
Real example, this weekTwo days of security work — 17 leaked deploy secrets rotated, 4 dead handlers removed, a dot-directory leak blocked on 69 sites — needed the web lane zero times. It couldn't have helped: it can't reach a server. The work that moves is the work where the tool touches the thing.
Account boundary: the personal system never lives inside an employer's account. When that subscription ends, so does access to everything built inside it.
Every substantive claim goes to several independent models with identical information. They critique it, and Cici moderates the debate — the editor over the reviewers. The point of using different companies' models is that their blind spots are less correlated than one model's are with itself. Less, not zero: two of the seats are both Google, so their agreement counts as roughly one voice.
Toggle seats off to see how many genuinely independent voices remain.
7seats on
6independent lineages
4work with no internet
The gold bar marks the correlated pair. Turn both Google seats off and the lineage count drops by one, not two — that is the whole point of counting lineages instead of heads.
Real example, this weekI objected to a proposal from the web lane on three grounds. The council was asked to be adversarial. Five lineages answered: two of my three points held; the third was wrong, and they said so — "Cici mistakes an isolation boundary for redundant design." I withdrew it. The one seat that failed (a network error) is recorded as failed, never as agreement. "Not consulted" and "could not be consulted" are different facts.
Numbers that enter the record come from code that runs — never from a model's freehand text. Disagreements are settled by running the code, not by counting hands.
CLAUDE.md
The operating instructions. Who does what, the three lanes, the account boundary, the folder rules.
COUNCIL-SYSTEM.md
The peer-review protocol: seats, lineages, the laws of arbitration, how every exchange is logged.
DEPRECATION-REGISTRY.md
What is dead and what replaced it. Nothing is deleted — it gets a tombstone with the lesson.
LESSONS-REGISTER.md
Every defect found, what it cost, and the gate that now prevents it. Twenty numbered corollaries.
ACTION-LEDGER.md
The open worklist. A row closes only with evidence — a file path, a commit, a command's output. Never from intent.
Nothing new without a tombstone. No new index, registry, or rulebook unless it names the predecessor it retires — in the same session.
Real example, this week — and the lesson that came out of itAn old instruction file had been formally retired in the registry on 23 July. It kept loading into every session as live instruction for 27 more days, because only its contents had been retired — the filename was still the one the tooling auto-loads. Fixed by renaming it. The lesson is now in the registry: for anything loaded by filename, tombstoning the content is not enough.
Why append-only: a correction that overwrites the original erases the evidence that a mistake was made. The register's opening line is the pattern under every entry — not one of these threw an error; every single one returned a plausible number.
Engine
What it owns
The rule
SUKAR acoustic engine
Every reverberation, coverage, intelligibility and insulation figure in every acoustic study
One engine. Import it, never fork it, never hand-roll a formula it already has. Six copies used to disagree by up to 62%.
Invoice generator
Every invoice's line items, totals, and payment terms
The tool must match the policy. It didn't — see below.
Mission-control
The map of all projects: what exists, where it lives, its status
One map. Sixteen competing ones were found and tombstoned. If the map is wrong, fix the map.
Real example, this weekMining old conversations surfaced that a fee policy set on 5 April — a 5% international transfer fee, waived for cash — had reached the April invoices but never reached the invoice tool, last edited 26 January. Every invoice it generated since carried the old flat fee. Found by reading, confirmed by grep, fixed in the tool. The two real historical invoices were left untouched: rewriting them would falsify what was actually sent.
Every engine extension ships two gates: one proving it reduces to what it extends, and one checking it at twenty interior points. A gate that only checks endpoints certifies the endpoints, not the function.
Everything public runs on a single small server. Each site is its own folder and its own config block, and every block includes the same hardening snippet — so a new site inherits the protection on day one. This page is the sixty-ninth. Hover the dots.
Hover a dot.
a sitenamed on hoverthis page
Real example, this weekAn audit found 17 deploy secrets following a guessable pattern, one handler with no authentication at all, and an account-level GitHub token stored in cleartext in 15 places. All 17 rotated and proven (old secret → refused, new → accepted); the unauthenticated handler removed; the token cutover written as a runbook someone else can run without ever touching my GitHub account. The registry got a line for each.
An absence is a claim about your instrument, not about the world. Before reporting "nothing is there", prove the search could have found it.
Standard
Governs
The lock
Session reports
Anything the system tells me — audits, results, plans, "here's what I found"
One HTML template. Only its data block is ever edited. A one-line answer stays in the terminal; a report page for a one-liner is noise with extra steps.
Palette registry
Every colour on every deliverable, per project
Exact hex, locked per project. Never mixed, never improvised. This page uses the personal palette — navy, cream, and one gold.
Brand registry
Logos and brand manuals for 41 companies — mine, clients', partners'
One canonical folder. Consumers link to it; they don't copy. 485 stray copies were found the day it was built.
Colour carries meaning. One colour means "you must act", one means "question for you", and neither is ever used for decoration.
Real example, this weekA proposal arrived for a fourth, better-looking output standard. It was genuinely better in places. It was declined as delivered — not for its content, but because it arrived as an unranked third with no rule for which standard wins. Sixteen competing project indexes were built the same way over nine months. It is now going back with a request for a precedence ruling.
The local lane can prove facts — a file exists, a commit landed, a server answered. The web lane can hold strategy and rationale but is sandboxed: it cannot see the filesystem at all. So they can't share one editable table. Instead, each owns what it can verify.
State may only change where it can be verified. Intent becomes state only after local verification. A copy in the strategy lane is a projection with zero authority.
Before — the router pattern, retired
After — three lanes, one truth
Two gates make it safe. The projection may never originate a terminal state — "verified", "closed", "deployed" — those arrive only from the local lane carrying a commit. And every synced row carries a hash of its source; on mismatch, incoming work orders are refused until the two agree.
Real example, this weekThe web lane proposed four new shared tables. The local lane already had four files doing those jobs. Rather than pick a winner, the council's answer was: map them — the tables become read-only projections of the files, plus a staging queue for proposed intent. The one thing the old "paste transcripts" pattern could never do is exactly what this does: let the sandboxed lane see without letting it overwrite.