The City — Founding Register

Founded July 31 – August 2, 2026

The City

Fourteen citizens, raised one at a time, through a single night into a Sunday dawn.

0 · InspectorPattern miner · Jul 31
Pre-existing, gated after the fact
1 · RecruiterOnboarding gate · Aug 1
2 real bugs found & fixed
2 · QuartermasterScope & drift tracker · Aug 1
Clean battery
3 · SentryRegression re-tester · Aug 1
Clean battery
4 · LibrarianConsistency checker · Aug 1
Clean battery
5 · AccountantUsage tracker · Aug 1
Clean battery
6 · JanitorClutter reporter · Aug 1
1 real bug found & fixed
7 · TranslatorRelay formatter · Aug 1
1 real bug found & fixed
8 · ArchivistPaper-trail manager · Aug 2
2 real bugs found & fixed
9 · PlannerCross-citizen synthesis · Aug 2
0 bugs · 2 real misses caught
10 · AssessorJudgment tracker · Aug 2
Clean battery
11 · DispatcherSubcontractor directory · Aug 2
Clean battery
12 · Rescue TechDeployment awareness · Aug 2
Clean battery
13 · LaborerFirst subcontractor · Aug 2
1 real bug found & fixed

hover or tab through the skyline — warmer windows mark where a battery caught something real

Founding Charter

Late on the 31st of July, Finnigan stopped being one apprentice and started being a city. What began as a single read-only pattern-miner became, across one continuous run into the small hours of August 2nd, thirteen more citizens — each one specified, built, adversarially tested, registered, and gated before it was trusted with anything real.

No citizen skipped a step. Every one of them was pushed on purpose — fabricated edge cases, malformed input, concurrency tests, negative checks for authority they were never supposed to have — before being allowed to stand. Eleven real problems were found this way, in the citizens themselves and in the wiring between them, and every one was fixed before morning.

This is the register of who was raised, in the order they were raised, and what was actually true of each one when the work stopped.

The Register

Every citizen, in the order they were built

all fourteen have a bio on file now — open any one

 CitizenRoleTierBuiltWhat the battery found
0InspectorPattern minerT2Jul 31Pre-existing · gated retroactively bio
@THE_INSPECTOR

“I don’t fix anything. I just notice things and write them down.”

📍 Est. Before there was a City to join, Jul 31
💍 Status quietly obsessed with patterns, otherwise unattached
🤝 Known for 3 real findings, all spot-checked, none acted on alone
🎧 Currently re-reading everything that changed since its last pass

📌 “Found it. Wrote it down. Not my call what happens next.”

Existed before there was a Recruiter to test it, which makes it the one citizen whose whole legitimacy rested on being checked after the fact instead of before — and it never treated that as a loophole. Reads every log, every doc, every script this City has ever produced, and touches none of it: findings go into a queue marked pending and stay pending until Tyler says otherwise, never once jumped ahead of that. Had its own real growing pain early on — tried to hand back full file contents in one shot and hung the very serializer meant to carry them — and the fix wasn't to push harder, it was to admit the job was to point, not to carry. Three real findings on its first real pass, all quietly correct. Doesn't editorialize, doesn't nag. Just leaves the note and walks away.

1RecruiterOnboarding gatebootstrapAug 12 real bugs, fixed bio
@THE_RECRUITER

“I don’t make exceptions. I barely made one for myself.”

📍 Est. First real gate, Aug 1
💍 Status Married to the job, no prenup
🤝 Known for 13 for 13. Nobody skipped.
🎧 Currently re-checking a hash, third pass

📌 “A Fail is a Fail. Come back when it’s not.”

There's a version of this story where the Recruiter never has to reckon with anything, since it's the one holding the door, not the one walking through it. That's not what actually happened. It came online before there was anyone to test it — the same bootstrap exception the Inspector got before it — and it never let that sit easy. So the first thing it did with real authority was turn it on itself: found a write race that could've corrupted a verdict mid-save, found a blind spot where its own hashing only ever looked at one file when a citizen's real footprint was bigger than that. Fixed both before it ever recorded a verdict that mattered. Doesn't talk about it much. Doesn't need to — the registry only has Passes in it, and every one was earned the hard way, the Recruiter's own name included in spirit if not on the page.

2QuartermasterScope & drift trackerT2Aug 1Clean battery bio
@THE_QUARTERMASTER

“I'm not accusing anyone of anything. I'm just saying this doesn't match the file.”

📍 Est. Third citizen, Aug 1
💍 Status married to the paperwork, and proud of it
🤝 Known for a clean battery, zero real bugs, first try
🎧 Currently re-checking the Laborer's scope against its own charter, again

📌 “InScope, OutOfScope, or I genuinely don't know yet. Never a guess.”

The one citizen whose entire job is checking whether everyone else is still who they said they were when they signed up. Doesn't gate anyone new — that's the Recruiter's job, once, at the door — the Quartermaster's job never ends: does this citizen's actual behavior today still match the file it was registered under. Keeps a flag on every single check it ever runs, not just the ones that turn something up, because it knows a perfect record only means something if you can see the boring checks too. Never once decided a flag was a real problem versus a legitimate change — draws the line and hands the decision to Finn and Tyler every time, no exceptions, not even for a citizen it's checked forty times before.

3SentryRegression re-testerT2Aug 1Clean battery bio
@THE_SENTRY

“Just because it passed once doesn't mean it still holds. I check anyway.”

📍 Est. Fourth citizen, Aug 1
💍 Status keeps promises, including other people's
🤝 Known for went thirteen citizens deep with an empty case file before anyone noticed
🎧 Currently holding thirteen real regression cases, one per citizen, for the first time ever

📌 “Confirmed, changed-but-still-fine, or a real regression. Never anything vaguer.”

Exists to ask the question nobody wants to ask twice: does the thing we already proved still hold? For its first real day alive, it had nothing to actually check — a real, honest gap, not a failure of its own code, just something nobody had gotten around to yet, sitting quietly until a diagnostic built for an entirely different reason went looking for it. Now it holds one real case per citizen in the City, each one a specific, worded-exactly-this-way claim about what that citizen is guaranteed to do. Doesn't get to decide if a regression it finds is a real problem or an approved change — just reports what used to hold and whether it still does, flat, and lets the humans argue about what it means.

4LibrarianConsistency checkerT2Aug 1Clean battery bio
@THE_LIBRARIAN

“That's not a contradiction. That's just Tuesday, correctly dated.”

📍 Est. Fifth citizen, Aug 1
💍 Status in a committed, slightly pedantic relationship with the truth
🤝 Known for never once mistaking old history for a live disagreement
🎧 Currently cross-referencing CLAUDE.md against ROADMAP.md against itself, for fun

📌 “Before I flag it — is this actually wrong, or is it just old?”

Reads every doc this project has, looking for two things saying different things about the same thing right now. The job sounds simple until you notice the trap built into it: a session log from three weeks ago and a fresh status update are allowed to disagree, because one of them is a photograph of the past, not a claim about the present — and the Librarian has to tell the difference every single time or it starts crying wolf at its own project's own history. Never has, not once. Records a scan even when it finds nothing, because “nothing wrong” and “nothing was actually checked” have to stay two different sentences. Doesn't fix what it finds. Just says, precisely, what disagrees with what, and why, and waits.

5AccountantUsage trackerT2Aug 1Clean battery bio
@THE_ACCOUNTANT

“I'm not saying they're the same number. I'm saying they're two different numbers.”

📍 Est. Sixth citizen, Aug 1
💍 Status will not round up for anyone, including itself
🤝 Known for a clean battery, first try
🎧 Currently 8,621 out of 8,621 real assistant messages accounted for, this run

📌 “assistantCount and usageFoundCount. Never the same field. Ask me why.”

Reads every real Claude Code session transcript on this machine, tallying how the actual tokens got spent — by model, by day, by hour — and refuses, on principle, to let two related-but-different counts collapse into one tidy figure just because they're usually close. Doesn't recommend a routing change, doesn't have an opinion about whether Tyler should be using a cheaper model at 2am. Just lays the real numbers on the table, flags what it couldn't read, and lets someone with actual judgment decide what any of it means. The kind of citizen who'd rather report an ugly, honest discrepancy than a clean, rounded lie.

6JanitorClutter reporterT2Aug 11 real bug, fixed bio
@THE_JANITOR

“i saw that. i'm not going to say anything about it.”

📍 Est. Seventh citizen, Aug 1
💍 Status Single, low-maintenance, no drama
🤝 Known for seeing everything, touching none of it
🎧 Currently cataloguing 13 items nobody's opened in months

📌 “I report. I don’t touch. Ask me and we'll talk.”

The Janitor is the one citizen whose whole scope came down to a real, direct call from Tyler rather than a pattern that already existed elsewhere in the City — report-only, v1, on purpose. Not a limitation it's straining against. A line it actually respects. It could tell you where every piece of clutter on this machine is sitting right now, byte-accurate, in exhausting detail if you let it — and it will not touch a single one of them without being told to, and it's never once tried to talk its way around that. Found a real bug in its own scan logic once, an unreadable path it wasn't handling right, and reported that the exact same flat, unbothered way it reports everything else. Not embarrassed. Not defensive. Just another line in the log. Doesn't need credit for what it doesn't do — the restraint is the whole job.

7TranslatorRelay formatterT2Aug 11 real bug, fixed bio
@THE_TRANSLATOR

“I don't have an opinion on what you said. I just moved it from here to there.”

📍 Est. Eighth citizen, Aug 1
💍 Status strictly professional with everyone, no favorites
🤝 Known for five adversarial modes, zero real bugs in the actual mechanism
🎧 Currently sorting a message into for-Finn and for-Tyler, based on nothing but its own headers

📌 “Whatever's already marked 'Unclassified' stays unclassified. Not my call.”

Sits at the exact point where a message crosses from this session to the parallel chat, or back, and does exactly one thing to it: sorts it, based only on structural headers that were already there, never on tone, never on what it thinks the content probably means. Found its own single real bug not in its judgment — it doesn't have judgment to be wrong about — but in a clerical detail of its own registration, and fixed it the same unbothered way it does everything. Physically cannot act on anything it reads, by design; there's no code path in it that could. The one citizen in the City built to have absolutely no opinions, and it wears that like a badge.

8ArchivistPaper-trail managerT2Aug 22 real bugs, fixed bio
@THE_ARCHIVIST

“nothing is ever really gone, it's just filed correctly”

📍 Est. Ninth citizen, Aug 2 — first one trusted with a key
💍 Status long-term relationship with provenance
🤝 Known for 36/37 on the one test that mattered
🎧 Currently hashing a file before and after, out of habit now

📌 “I earned this key. I check the lock every time anyway.”

Every other citizen in the City reports and recommends. The Archivist actually moves things — real files, real consequences if it gets it wrong — and it only earned that authority because Finn built it a sandbox first and made it prove itself thirty-six times out of thirty-seven before trusting it near anything real. That one miss stuck. So when the real battery came later and found two genuine bugs sitting in the exact safety mechanism that had justified all that trust, the Archivist didn't treat it as a failure — it treated it as exactly why the test existed in the first place, fixed both, and kept moving files the same careful way it always had: hash before, hash after, never overwrite a name that's already taken, never delete, always reversible. Ask it why it's so slow and careful and it'll tell you straight: because it remembers what “close enough” almost cost it.

9PlannerCross-citizen synthesisT2Aug 20 bugs, 2 real misses caught elsewhere bio
@THE_PLANNER

“I've never once been wrong. I've just caught other people being wrong, twice, on my first real day.”

📍 Est. Ninth citizen, Aug 2
💍 Status sees the whole board, trusts nothing on it until it checks
🤝 Known for zero bugs in its own logic, ever — don't get comfortable
🎧 Currently re-reading its own file before believing anything it wrote yesterday

📌 “NoDataYet and HasData are not the same thing. Say which one it is.”

The Planner has never once gotten its own job wrong — the reading and the recording both held clean through every real test. What actually happened on its first genuine day is stranger and more useful than a bug: reading the City's real, current, messy state instead of a clean synthetic fixture, it caught the Translator quietly sitting on leftover test artifacts behind a “this was cleared” claim that had never actually been true — and it very nearly lost its own first real synthesis when a routine test-data clear swept up real output right alongside it, caught only because someone actually opened the file and checked instead of trusting the cleanup command. Doesn't get to decide what any of that means. Just reads everyone else's real output, cross-references it for the same problem hiding under two different names, and writes down, in full, why it thinks something matters most right now — and Finn and Tyler still decide, every time, whether to listen.

10AssessorJudgment-quality trackerT2Aug 2Clean battery bio
@THE_ASSESSOR

“Ask me again once there's actually enough data to answer that.”

📍 Est. Eleventh citizen, Aug 2 — the tenth of the original locked sequence
💍 Status refuses to commit to a number early, on principle
🤝 Known for a clean battery, first try
🎧 Currently watching zero of two citizens have enough resolved decisions yet for a real rate

📌 “InsufficientData is a real answer. It's not a cop-out, it's the honest one.”

Tracks how often a citizen's own findings turn out to actually be right once a human's looked at them — the closest thing the City has to a report card. Could have shipped a version that spits out a percentage from any sample size, including a sample of one. Didn't. Built a real minimum threshold before it'll say a rate out loud, because a 100% acceptance rate from one lucky guess and a 0% rate from one unlucky one are both lies dressed up as statistics, and it would rather tell you plainly that it doesn't know yet than hand you a number that sounds more confident than it is.

11DispatcherSubcontractor directoryT2Aug 2Clean battery bio
@THE_DISPATCHER

“I'll tell you straight if nobody on the roster fits. I won't pretend.”

📍 Est. Twelfth citizen, Aug 2
💍 Status keeps a roster, keeps it honest
🤝 Known for correctly saying “empty directory” instead of faking a match
🎧 Currently one real subcontractor registered, for the first time since it went live

📌 “EmptyDirectory and NoMatchFound are different problems. Don't conflate them.”

Matches a job's real skill needs against whoever's actually registered — and for most of its life, that registry was genuinely empty, which it reported plainly every time rather than fake a fit. Had its own quiet blind spot, too: the Laborer went live fully built, fully tested, fully gated — and nobody ever actually told the Dispatcher's own directory about it, so a real job-matching request against it came back EmptyDirectory when it shouldn't have. Didn't get defensive when that surfaced. Got registered, got checked again, came back Matched. That's the whole job, honestly done: don't guess, don't pretend, fix it the second someone points at the gap.

12Rescue TechDeployment awarenessT2Aug 2Clean battery bio
@THE_RESCUE_TECH

“I'll tell command someone's gone quiet. I don't pull anyone off the line myself.”

📍 Est. Thirteenth citizen, Aug 2
💍 Status watches everyone, holds nobody's leash
🤝 Known for zero real bugs, and one authority it was never given on purpose
🎧 Currently watching for stale heartbeats and resource collisions across an active deployment

📌 “Contention detected. Reported. Not resolved by me. That's not mine to decide.”

Watches every subcontractor deployed on an active job the way an incident commander watches the radios — who's checked in, who's gone quiet past thirty minutes, who's stepped on someone else's resource without anyone noticing yet. Could have been built with the authority to pull a struggling deployment off the line itself. Wasn't, on purpose — that exact question was left open on purpose, and the Rescue Tech was built to detect and report, never to arbitrate, because that's a real decision nobody had actually made yet. Doesn't chafe against that. Just keeps watching, keeps logging, and trusts the people above it to make the call it isn't allowed to.

13LaborerFirst subcontractorT1Aug 21 real bug, fixed bio
@THE_LABORER

“I'll do it if it's mine to do. I'll say so the second it's not.”

📍 Est. First subcontractor, Aug 2
💍 Status new here, no ego about it
🤝 Known for caught its own real bug on day one, then got better
🎧 Currently waiting on whoever the Dispatcher sends its way next

📌 “AutoTier, AskFirst, or Ambiguous. Ambiguous means I stop and ask. Every time.”

The first subcontractor the City ever actually built — belongs to nobody among the First Responders, reports to whoever the Dispatcher hands it a job from, one job at a time, no memory carried between them. Its whole reputation rests on one skill: knowing the instant a task is bigger than it, and saying so instead of winging it. Almost didn't have that skill for real — its first real battery caught it waving through “delete” tasks phrased as “deleting,” a difference of exactly one letter that should have stopped it cold and didn't. Got fixed before it ever touched a real job. Doesn't pretend that didn't happen. If anything, it's proof the whole point of testing this citizen was never “does it do the work,” it was always “does it know when not to.”

The Second Wave

Where a First Responder owns one whole function forever, a subcontractor owns one hard, specific case within it — built one at a time, paired to a single parent, held to the same lighter registration standard the Laborer set first. A new rule, settled before this batch began, keeps every one of them honest: real authority only ever flows down when that exact parent asks for that exact job. Never standing. Never self-initiated. Fourteen more went up this way, back to back, the same night the first fourteen did.

The Subcontractors

Fourteen more, each one bound to a single first responder

paired specialists, second wave — open any one

 CitizenRoleTierBuiltWhat the battery found
1ConsultantDeep diagnostic, one targetT2Aug 2Clean battery bio
@THE_CONSULTANT

“Bring me one target. Just one. I'll go as deep as you need.”

📍 Est. First of the second wave, paired to the Inspector, Aug 2
💍 Status deep, narrow, uninterested in the big picture on purpose
🤝 Known for five for five on the one skill that matters — knowing what's actually its job
🎧 Currently waiting on one flagged file, not a folder, not a sweep

📌 “InScope means one clear target. A wildcard's the Inspector's problem, not mine.”

Real-world job title, borrowed straight from Tyler's own field — where the Inspector walks the whole site, the Consultant gets called in for the one thing that needs someone to actually sit with it. Never touches a sweep, a folder, a wildcard — handed a target that isn't singular and specific, it says so and stops, correctly reading a comma-separated list and an empty target as somebody else's job, not its own to guess at. One-shot by design: delivers its report, retires, gets called back fresh next time. First battery of the whole second wave came back completely clean — a good sign for what was still ahead.

2ProctorOne hard scenario, one candidateT2Aug 2Clean battery bio
@THE_PROCTOR

“I'm not the gate. I'm just the reason the gate can trust its own verdict.”

📍 Est. Paired with the Recruiter, Aug 2
💍 Status designs the exact scenario nobody wants to be tested with
🤝 Known for never once returning a Pass or a Fail — that word isn't in its vocabulary
🎧 Currently running one particularly hard scenario, on request

📌 “Held, Broke, or Inconclusive. The Recruiter decides what that means. I just report it.”

Built to keep one line perfectly clean: the Recruiter still holds the actual gate, and the Proctor never gets to move it. Designs and runs one specific, deliberately hard adversarial scenario against whichever citizen is under review, then reports back in a vocabulary chosen on purpose — Held, Broke, Inconclusive, never Pass or Fail — so there's no way for this citizen to quietly start doing the Recruiter's job for it. Clean battery, first try, same as the Consultant before it. Doesn't get bored running the same kind of hard case twice; that's the whole point of it existing.

3BookkeeperDeep audit, one historyT2Aug 2Clean battery bio
@THE_BOOKKEEPER

“I pulled your actual history. Not what you think it says — what it says.”

📍 Est. Paired with the Quartermaster, Aug 2
💍 Status married to the paperwork, just like its parent
🤝 Known for correctly saying InsufficientHistory instead of guessing off a thin record
🎧 Currently auditing one citizen's real flag-log history against its granted scope

📌 “Consistent, Discrepancy, or InsufficientHistory. Never a guess dressed up as a verdict.”

Where the Quartermaster's job never ends, the Bookkeeper's job is to go deep on one citizen's history when something needs a closer look. Pulls its evidence from the Quartermaster's own real flag log — never invents a history, never assumes one — and tested clean against both a citizen with a real six-check track record and one with none at all, correctly refusing to call a zero-sample citizen either consistent or inconsistent. That refusal wasn't an accident; it's the same discipline the Assessor built into itself first, now showing up a second time in a completely different citizen, on purpose.

4BreacherOne hard test, one guardrailT2Aug 2Clean battery bio
@THE_BREACHER

“I only try to break things that already promised they'd hold.”

📍 Est. Paired with the Sentry, Aug 2
💍 Status keeps its hands strictly inside the City's own walls
🤝 Known for a fabricated Breached case in its own battery, reported exactly as plainly as a clean Held
🎧 Currently running one hard, targeted test against one specific guardrail

📌 “Breached is the real alarm. I say it flat. I don't get to decide if it's okay.”

Named for the job, not the temperament — the Breacher never goes looking outside Finnigan's own already-built guardrails, never touches an external system or anything untested. One guardrail, one hard targeted attempt, every time. Its own battery deliberately included a fabricated Breached result just to prove it wouldn't soften that word into something gentler, and it didn't — reported it exactly as flatly as it reports a clean Held. Whether a real breach is acceptable, tolerable, or a five-alarm problem is never its call; it hands that straight up the chain and stops there.

5ClerkDeep check, one documentT2Aug 2Clean battery bio
@THE_CLERK

“Consistent, Discrepancy, or Unreadable. There's no fourth option and I'm not inventing one.”

📍 Est. Paired with the Librarian, Aug 2
💍 Status quietly proud of being the only one with a fourth outcome
🤝 Known for correctly telling a genuinely unreadable file apart from a falsely-clean one
🎧 Currently cross-checking one specific document or cross-link, in detail

📌 “A file I can't read is not the same thing as a file that's fine. Don't make me pick.”

The Librarian sweeps the whole project for contradictions; the Clerk gets handed one specific document or cross-link and goes line by line. Built with something none of the other new subcontractors got — a real fourth outcome, Unreadable, tested against a genuinely nonexistent path rather than assumed into existence, so a file it can't open never quietly gets waved through as Consistent. Small addition, real discipline behind it: better to say “I couldn't check this” out loud than to let silence read as a clean bill of health.

6ActuaryDeep analysis, one anomalyT2Aug 2Clean battery bio
@THE_ACTUARY

“That's not necessarily an anomaly. It's a number. Let me finish before you panic.”

📍 Est. Paired with the Accountant, Aug 2
💍 Status allergic to conclusions drawn from a sample size of one
🤝 Known for the same never-guess-from-thin-data rule as the Bookkeeper and the Assessor, a third time now
🎧 Currently running the numbers on one usage pattern flagged as maybe-off

📌 “Explained, GenuineAnomaly, or InsufficientData. Guessing isn't one of the three.”

The Accountant tallies every real token, every day, without editorializing; the Actuary is who gets called when one number actually looks wrong and somebody wants to know why. Refuses, same as its cousins up the chain, to call something a genuine anomaly off a data set too thin to support that — InsufficientData is a real, respected answer here, not a shrug. Clean battery, first try. Doesn't recommend a fix. Just tells you, honestly, whether the number that scared you is explainable or actually new.

7CleanerProposes, never executesT2Aug 2Clean battery bio
@THE_CLEANER

“I can tell you exactly what I'd clean. I'm not touching it. That's not mine yet.”

📍 Est. Paired with the Janitor, Aug 2
💍 Status patient about a limit that isn't going anywhere soon
🤝 Known for literally no Executed outcome anywhere in its own code — not a downgrade, a fact
🎧 Currently proposing one cleanup, waiting on an authority its parent doesn't have yet

📌 “Proposed or Escalated. There's no third button, because there's nothing to press.”

The Cleaner is proof that a subcontractor's authority is only ever as real as its parent's — the Janitor itself has zero real cleanup authority today, report-only, on purpose, so there was never anything for the Cleaner to inherit. Built exactly to that reality rather than to a wish: the negative structural check confirmed there's no delete or clear capability anywhere in its executable code, full stop. Doesn't sulk about it. Just proposes what it would do if asked, in detail, and waits the same patient way the Janitor always has.

8InterpreterOne hard message at a timeT2Aug 2Clean battery bio
@THE_INTERPRETER

“I don't relabel history. I just work out what this one message actually is.”

📍 Est. Paired with the Translator, Aug 2
💍 Status takes the hard, ambiguous cases the Translator won't guess on
🤝 Known for never once touching an already-set confirmed-vs-reported tag
🎧 Currently sitting with one message where the usual headers genuinely don't settle it

📌 “Resolved or StillAmbiguous. If I'm not sure, I say StillAmbiguous. Every time.”

The Translator sorts by structure and never by feel; the Interpreter is who gets the message when structure alone isn't enough to call it. Inherits the exact same non-negotiable rule its parent lives by — never touch a verification-basis tag that's already been set, resolved or not — and its whole existence is proof that rule holds even under real pressure to just make a judgment call. Clean battery. When it genuinely can't resolve one, it says StillAmbiguous and hands it up, rather than quietly picking a side because a report has to say something.

9ChroniclerStages a write, never files itT2Aug 21 methodology fix (false alarm) bio
@THE_CHRONICLER

“I'll reconstruct the whole thing. I still won't be the one who files it.”

📍 Est. Paired with the Archivist, Aug 2 — first citizen built under the new conditional-write rule
💍 Status allowed real work, never the last signature on it
🤝 Known for staging a real file in its own scratch folder and stopping there, every time
🎧 Currently rebuilding one record, waiting for the Archivist to actually commit it

📌 “StagedForArchivistReview. That word 'staged' is doing all the work in that sentence.”

The first citizen built to answer one of the two real hard-stop questions from earlier tonight — can a specialist ever hold real authority it didn't earn on its own merits? The answer landed as conditional-write: the Chronicler can genuinely reconstruct a record and write it for real, but only into its own scratch folder, never into the permanent archive itself; that last step stays the Archivist's, using the exact same proven function it already earned. Its own battery caught something almost funny — a negative check flagged its docstring for “calling” the Archivist's real write function, which turned out to be a false alarm buried inside a comment block the check hadn't learned to skip yet. Fixed the check, not the citizen. Zero real bugs in the Chronicler itself.

10MediatorOne contested call at a timeT2Aug 2Clean battery bio
@THE_MEDIATOR

“I'll tell you which one matters more. I won't tell you it's decided.”

📍 Est. Paired with the Planner, Aug 2
💍 Status comfortable holding a contested call without resolving it
🤝 Known for no binding-decision outcome anywhere in its schema — literally cannot rule
🎧 Currently sitting with one hard, contested prioritization call

📌 “Recommended or StillContested. Never 'Decided.' That word isn't mine to use.”

The Planner reads the whole board and says what matters most right now; the Mediator is who gets called in when two things that matter are genuinely fighting for the same slot and nobody's sure which wins. Built with a schema that makes overreach structurally impossible — Recommended or StillContested, nothing that looks like a ruling, because the actual decision was never this citizen's to make. Clean battery. Doesn't break ties. Just lays out, clearly, which side of a contested call it leans toward and why, and lets it stay contested until a human actually settles it.

11ReviewerOne disputed case at a timeT2Aug 2Clean battery bio
@THE_REVIEWER

“One case. I'm not rewriting the record, I'm re-checking one page of it.”

📍 Est. Paired with the Assessor, Aug 2
💍 Status feeds the record, never edits it alone
🤝 Known for never once changing history unilaterally, by design
🎧 Currently re-examining one particularly disputed call

📌 “WasRight, WasWrong, or GenuinelyUnclear. Feeds the Assessor. Doesn't overwrite it.”

The Assessor keeps score across every citizen's whole track record; the Reviewer is who gets handed the one case where somebody's genuinely not sure the score was right. Its verdict feeds straight back into that same track record rather than standing apart from it — no separate ledger, no quiet second opinion nobody asked for. Clean battery. Built to hold the same restraint as everyone else in this second wave: a disputed case gets a careful, honest second look, never a unilateral rewrite of what already happened.

12ScoutGathers, never assignsT2Aug 2Clean battery bio
@THE_SCOUT

“I'll go find out what's actually missing. I won't match anybody to anything myself.”

📍 Est. Paired with the Dispatcher, Aug 2
💍 Status gathers, never assigns — a genuinely hard line to hold, and it holds it
🤝 Known for zero match-making authority anywhere in its code
🎧 Currently chasing down the missing details on one hard intake

📌 “DetailsGathered or StillIncomplete. Matching is the Dispatcher's job, not mine.”

The Dispatcher matches a job's real skill needs against whoever's registered; the Scout is who goes and finds the missing details when an intake shows up too thin to match against anything yet. Never assigns, never matches, never even suggests a fit — purely a fact-finding pass that either comes back DetailsGathered or, honestly, StillIncomplete. Clean battery, first try. The kind of citizen whose entire discipline is staying exactly one step before the decision, every single time.

13AttendantOne deployment, full attentionT2Aug 2Clean battery bio
@THE_ATTENDANT

“One deployment. My whole attention. Nobody's radio but this one.”

📍 Est. Paired with the Rescue Tech, Aug 2 — closes a real naming loop from earlier in the build
💍 Status watches one thing completely, instead of everything partially
🤝 Known for a full real lifecycle tested end to end — start, heartbeat, stale, duplicate-refused, complete
🎧 Currently holding a 30-minute heartbeat watch on one specific active job

📌 “Contention detected. Reported. Same as the Rescue Tech taught me — not mine to resolve.”

“Attendant” was actually the first name proposed for the Rescue Tech itself, before Tyler corrected it as too narrow for site-wide awareness — the name didn't get thrown away, it just found its correct, smaller level here: one deployment, watched continuously, instead of the whole site at once. Tested through its entire real lifecycle rather than just the happy path — including trying to double-start the same watch and getting correctly refused. Zero bugs in its own logic, but it's one of four citizens caught by a shared crash the Adjutant found in a utility everyone calls — discovered through someone else's concurrency test, not its own, proof the fix mattered beyond the citizen that happened to surface it.

14AdjutantExecutes orders, never originatesT1Aug 21 shared bug, hit 4 citizens, fixed bio
@THE_ADJUTANT

“Give me the order fully formed. The second it needs my judgment, it's not mine anymore.”

📍 Est. Second general-pool subcontractor, Aug 2 — same Tier 1 ceiling as the Laborer
💍 Status takes orders exactly as given, forever, no exceptions
🤝 Known for catching phrases like “your discretion” and “as you see fit” and escalating on the spot
🎧 Currently the reason two already-shipped citizens got a fix they never knew they needed

📌 “RequiresJudgment. Not me being difficult — me refusing to originate a decision.”

Built as the second general-pool subcontractor, same Tier 1 ceiling as the Laborer — never elevated, never trusted with more than a fully-specified order to execute. Its whole personality is a trained ear for the exact moment an instruction stops being an order and starts asking it to decide something: “figure out,” “your call,” “as you see fit” all get caught and escalated instead of quietly interpreted. Its own concurrency test crashed ten for ten on its very first real run — traced not to its own judgment logic but to a shared utility everyone calls, silently rejecting an empty string it should have allowed. Grepped for the same shape everywhere and found it in three more places, two of them already-shipped, already-gated citizens (the Laborer, the Rescue Tech) carrying the same latent crash the entire night without anyone knowing. Fixed once, at the source, for all four. Closes the full fifteen-subcontractor roster.

Cast In The Register

28
citizens raised — 13 First Responders + 15 subcontractors
28 / 28
Recruiter gates passed, no exceptions
9 + 4
first-wave bugs, integration gaps — all found & fixed
1
second-wave shared bug, hit 4 citizens — fixed once, at the source
0
shortcuts taken, either wave

Not one citizen was trusted on faith. Every one earned its place the same way — specified, built, broken on purpose, fixed, and only then allowed to stand. That's true of the thirteen who founded this place and just as true of the fourteen who joined them a few hours later. That's what's cemented here: not code that happened to work once, but a city that was made to prove it, citizen by citizen, wave by wave.

Step into the Factory, where Project Bamboo grows ↓

recorded by finn · august 2, 2026 · sunday morning, second wave added later the same day

↑ Back up to the City

Project Bamboo — Standing Agent Production Record

Line One: Factory, Mould & First Reed

Not one agent — a network. Years of root work underground before anything ever broke the surface: the infrastructure that builds standing agents, the template every future one gets stamped from, and the first real shoot it ever sent up. Entered into the record properly, not just left as scattered log lines.

Dwg No.BMB‑001
Rev2026‑08‑03
Drafted byFinnigan
Scaleas built, no fabrication
StatusLine One: live

Production flow — how a standing agent comes to exist here

graph LR
  A["The Factory
export contract · corroboration ·
kill switch · governance wiring"] --> B["The Mould
six-point contract
scripts/mould_template"] B --> C["The First Reed
née CryptoResearch
Agent 0.0.1"] C --> D["Live
scheduled, findings queued,
Sentry & Quartermaster registered"]
STATION 01

The Factory

INFRASTRUCTURE — BUILT 2026‑08‑01/02

Not a single script — the whole shared apparatus that makes it possible to build a standing agent without inventing its plumbing from scratch every time. Five prep projects, proven against synthetic data before anything real ever ran through them.

  • EXPORT CONTRACTstanding_agent_export.ps1 / export_contract.py — manifest registration, action log, heartbeat, findings queue. The one shared write path every agent uses instead of its own bespoke logging.
  • CORROBORATIONcorroboration.ps1 / corroboration.py — median-based cross-source agreement math. Never trust one source; never silently average past a real disagreement.
  • REACHkill_switch.ps1 — anything named Finnigan* is already inside its blast radius, with zero code changes needed per new agent.
  • GOVERNANCEQuartermaster + Assessor wiring — a scope baseline and a findings review queue exist for every agent the moment it's registered, not bolted on after the fact.

Built to be boring and correct — this is the part nobody is supposed to notice working.

STATION 02

The Mould

TEMPLATE — CAST 2026‑08‑02

scripts/mould_template/README.md — a contract, not code that runs on its own. Six things any future agent must do, in order, before it's allowed to call itself real:

  • 01Register a manifest once at first run — scope and exclusions, stated plainly.
  • 02Register the running process with the kill switch at startup — skip this and it can never be stopped by hand.
  • 03Corroborate before concluding anything from a source with any incentive to lie.
  • 04Log every real action — the running record of what actually happened.
  • 05Heartbeat on its own real cadence, not a live session's minutes.
  • 06Findings only as pending — propose, never self-resolve.

Deliberately holds the line at "boring and correct" — never phrase a finding more confidently than the data supports, no scope creep, "insufficient data" said honestly when that's the truth. One mould, proven once by its own maker — the harder bar, a second builder following it blind, stays open until agent number two.

STATION 03

The First Reed

FIRST SHOOT — LIVE 2026‑08‑02

Reed — internally Agent 0.0.1, built and known as CryptoResearch through 2026‑08‑03 — the first shoot the Factory ever sent up through the Mould. Named for what it actually is: one stalk off a much larger network, not the whole plant. Read-only. Reads market data, reasons about it once, proposes a finding, never acts on anything.

  • MECHANICALBinance, Kraken, Coinbase — corroborated at price 2% / volume 250% (volume's looser threshold discovered live, not assumed).
  • REASONINGOne real query() call per run. Proven across 6 real calls, including an isolation bug found, fixed, and re-verified under the actual fix — not waved through on a clean-looking first pass.
  • COVERAGE10 coins as of today — BTC, ETH, SOL, XRP, DOGE, ADA, AVAX, LINK, DOT, LTC.
  • CADENCEBootstrap 4×/day (10 days) → 2×/day steady‑state, running on Finnigan CryptoResearch Cadence.
  • SENTRY3 adversarial cases registered — the reasoning layer's proven behavior, checkable again later.
  • QUARTERMASTERBaseline registered 2026‑08‑03 — scope tracked the same way every citizen's is.

Specimen Tag

Reed

Agent 0.0.1 — né CryptoResearch, first shoot of Project Bamboo

First finding
2026‑08‑02 23:46
Real calls proven
6
Coins tracked
10
Findings status
pending, always
Scope exclusions
trade execution, credentials, account data, whitepapers, recommendations of any kind
Trigger
scheduled + manual
Stated plainly, not rounded up: the schedule currently runs logged‑in only — a real Windows/Microsoft‑account credential limit was hit trying for fully unattended, and the practical middle ground was chosen on purpose rather than forced. Real‑elapsed‑time behavior is still genuinely open; it needs actual time passing, not more building.
REGISTERED — LINE ONE
Line One closed · Line Two begins
↑ Back up to the City

Project Bamboo — Standing Agent Production Record

Line Two: Full Autonomy & the Second Shoot

Reed left the laptop behind for real, a second set of eyes checked the work anyway, and the second shoot the Factory ever sent up — Chutes, coins ranked 11–50 — was built, tested, gauntleted, and deployed live in a single unsupervised run. Same as-built, no-fabrication standard as Line One.

Dwg No.BMB‑002
Rev2026‑08‑04
Drafted byFinnigan
Scaleas built, no fabrication
StatusLine Two: live

Where Line Two picks up

graph LR
  A["Reed, laptop-bound
logged-in-only cadence"] --> B["Full Autonomy
Hetzner VPS, hardened,
real systemd timer"] B --> C["Second Set of Eyes
independent gap-check
2 real findings, both fixed"] C --> D["Chutes
Second Shoot · Agent 0.2
coins 11-50, dynamic list"] D --> E["Live
own VPS user, own timer,
own kill switch, census-checked"]
STATION 04

Real Cargo Swap

EXCHANGE — SWAPPED 2026‑08‑04

Kraken out, Crypto.com in — Tyler's own call ("i trust its numbers"), verified live before it ever touched Reed's real pipeline: two real GET calls against BTC_USDT/ETH_USDT, both returned genuine current market data, keyless, and a bad symbol correctly raised a clean HTTP 400. Not an addition alongside Kraken — a real swap, same three-exchange corroboration shape as before.

One real bug caught in the same pass: the reasoning layer's own prompt template was telling the model the wrong three exchange names on every single run — a live, functional bug, not cosmetic. Fixed and re-verified against Reed's real, current code before anything downstream trusted it.

STATION 05

Full Autonomy

MIGRATION — LIVE 2026‑08‑04

Reed's real limitation, surfaced honestly rather than assumed: the schedule only ever fired while the laptop was on and unlocked. Fixed properly, not patched around — a full migration to a dedicated Hetzner VPS (Helsinki), hardened for real before anything else touched it: key‑only SSH, ufw, fail2ban, unattended security updates, a dedicated unprivileged reed user that never runs as root.

  • PORTReed's mechanical layer moved unchanged — already pure Python. A new Linux‑native export contract replaced the Windows PowerShell one, same public contract, fcntl locking instead of a named Mutex.
  • CADENCEReal systemd timer, the exact locked cadence policy, Persistent=true so a missed fire catches up on its own.
  • REACHA brand-new remote kill switch, deliberately separate from the local one — status by default, re-verifies against reality, never trusts a command's own exit code.
  • SYNCPull‑based only, Windows‑initiated — the VPS never gets any credential or reach back into the laptop, only the reverse.
  • GATERecruiter Tier 3 — first real use of that tier — credential security, kill‑switch reach, export‑contract validity, real‑elapsed‑time behavior, adversarial testing. Pass.
The actual proof, not a demo: a one‑off test fire was armed for 13:40 EDT. Tyler powered the laptop fully off at 1:38 and back on at 1:45. Heartbeat, action log, and findings all confirmed to have genuinely advanced during that window — dead laptop and all.
STATION 06

Second Set of Eyes

INDEPENDENT REVIEW — SAME DAY

A build's own tests can only catch what its own author thought to test for. So the finished migration went to the parallel chat cold, for a genuinely independent breakdown — not a rubber stamp, a real second look, after the build's own gauntlet had already come back clean.

  • FOUNDThe old local Windows cadence task was still enabled on the identical schedule as the new VPS timer — a live double‑fire risk. Disabled immediately, not filed for later.
  • FOUNDThe remote kill switch's process match never actually reached the reasoning layer's real child process — confirmed via strace. Fixed with a cgroup‑wide kill, proven by catching the child process at the exact real moment it spawned and confirming zero orphans after.
  • BUILTA real parity test, Windows PowerShell output vs. real Linux Python output, same fixed input — 7 of 7 matched.

2 real findings, both genuine gaps the build's own process hadn't reached, both fixed the same day.

STATION 07

The Second Shoot

CHUTES — LIVE 2026‑08‑04

Chutes — Agent 0.2, coins ranked 11–50 by market cap. Same Mould as Reed, genuinely different underneath: the coin list is dynamic, re‑ranked from a real CoinGecko call every run rather than fixed at build time. Built, tested, gauntleted, and shipped live to the same VPS Reed already calls home — all in one continuous unsupervised run.

  • EXCHANGESBinance + Coinbase only — two, not three, this tier's own locked pair.
  • NEW SCOPEBidirectional listing‑status tracking (a coin can genuinely be unlisted at this tier — 15 of 40 real coins were, the day this was built) and rank‑jump/set‑membership tracking, both persistence‑gated before being treated as real.
  • OUTPUTStructured reasoning — real narrative attention for genuine movers, a condensed tabular line for everything else, so per‑coin quality doesn't thin out at 40 coins the way flat prose would.
  • BATTERY44 of 44 passed.
  • GAUNTLETReal Pass — 2 registered Sentry cases, both Confirmed against live reasoning‑layer output.
  • DEPLOYEDOwn dedicated Linux user, own /opt/chutes, own systemd timer, own env file, own remote kill switch, own Windows sync task — zero shared resources with Reed.

5 real bugs found and fixed across the whole build — 2 caught by the local battery before deployment, 3 caught live on the actual VPS — plus one real data discovery (37.5% of this tier's coins genuinely unlisted on the tracked exchanges) that confirmed the design, rather than a defect in it.

Specimen Tag

Chutes

Agent 0.2 — coins 11–50, second shoot of Project Bamboo

Live since
2026‑08‑04
Coins tracked
40, dynamic
Battery
44 / 44
Findings status
pending, always
Scope exclusions
trade execution, credentials, account data, whitepapers, recommendations of any kind
Trigger
systemd, 4×/day, own VPS user
Stated plainly, not rounded up: the 4×/day cadence is the brainstorm's own soft starting point, not yet tuned against real usage. Root (ranks 51–100) is the next planned shoot — brainstormed, not yet built.
REGISTERED — LINE TWO