Build log · Part 6 of 6
Results
133 sessions, four pivots, 311 abandoned rows, and which of the 28 tenets held
Parts 1 through 5 describe the system as built, each at the state it reached before teardown. This part is the longitudinal record: the ledger, the pivot dates, the deferred backlog, the handoff letters set against what was actually done, the enforcement status of each tenet, and the teardown sequence.
The ledger
| month | sessions recorded | rows closed done | state of the operation |
|---|---|---|---|
| 2026-03 | 9 | 155 | engine repository only; no planning surface, no session ledger |
| 2026-04 | 44 | 174 | multi-repo split; robotics-press-hq created 04-10; ledger writing from 04-19 |
| 2026-05 | 43 | 214 | publication-first pivot 05-09; backlog reset 05-17; drone-intelligence pivot 05-30 |
| 2026-06 | 25 | 130 | ontology and the 28 tenets authored 06-08/09; operator console; database separation |
| 2026-07 | 12 | 106 | directory pivot 07-13; four cuts launched 07-18; mothball 07-24 |
Session counts are rows in rp_sessions by started_at; closures are backlog rows by
resolved_at.
The ledger postdates the work it describes. The earliest row is seq 56, dated
2026-03-14, and it holds no narrative — twenty rows carry the reconstructed text “Historical
session — N backlog item(s) closed across [eng]. Pre-ledger; no narrative preserved.” They were
rebuilt from backlog closures after the fact. The first session to write its own account is seq
92, 2026-04-19, 36 days after the earliest work in the ledger.
Of the 133 rows: 86 carry a narrative summary longer than 500 characters, 84 of those also carry a handoff, 20 are pre-ledger reconstructions, 17 were force-closed by a later session that found them abandoned, and 4 hold no summary at all. Those 86 sessions total 472,664 characters of summary and handoff text.
Session numbering is not dense. The 133 rows carry seq values from 56 to 375; 187 numbers in that
range have no row. Session numbers cited in this part, which run as high as s368, are seq values
rather than positions in the 133.
Sessions by repository: hq 79, eng 36, biz 6, sbx 6, pub 2, ops 2, intel 2. The run
surface consolidated onto one repository and stayed there; the tenet describing that consolidation —
HQ is the single run surface — was written on 2026-06-08, by which point 49 of the 79 hq sessions
had already run.
The pivot sequence
| date | from | to | recorded in |
|---|---|---|---|
| 2026-05-09 | CIDE consulting and grant pursuit | publication-first newsletter portfolio | decisions/2026-05-09-publication-first-pivot.md (s157) |
| 2026-05-30 | newsletter portfolio | automated intelligence platform; Drone Intelligence as first product line | decisions/2026-05-30-drone-intelligence-pivot.md (s243) |
| 2026-07-13 | intelligence platform sold as API and subscription | directory with depth, set-and-forget | a memory note and four reports (s349) |
| 2026-07-24 | directory with depth | static company directory | backlog epic #1200, docs/MOTHBALL.md |
Each position ran until the next row displaced it: publication-first 21 days, the intelligence platform 44, directory-with-depth 11.
Measured at each transition:
| transition | measurement |
|---|---|
| to publication-first | eleven beats registered, two activated, against roughly 28 published pieces per day; the communications-director outreach package for the dropped consulting motion (20-site target list, template, three worked instantiations) left on origin unmerged |
| to the intelligence platform | s243 counted the live corpus at 1,422 companies, 6,378 products, 42,913 signals, 4,317 attack events all under 90 days old and 30,668 CARVER-scored sites, against zero supply-chain tables and 118 source rows |
| the rebuild that followed | executed the next day in one session: 44 backlog refs closed, 42 commits, roughly 28,000 lines of content and outreach subsystem deleted, nine systemd services reduced to five, fifty recurring tasks to twenty |
| to the directory | leanness audit: 155 tables to approximately 55, 14 agents to 8; a retrospective miner was built first, on the stated principle of banking the learning before mothballing anything |
| to the static artifact | four buyer-mission directories live 2026-07-18, mothball epic opened 2026-07-24 — six days as a running commercial product |
The trigger for the directory pivot is recorded verbatim in the session’s memory note: running the platform as a business “takes more active effort than he can give right now,” and much of what had been built was “learning work, not commercially viable at present.”
The decision record
Thirty-two decision documents were written: 14 current at teardown, 18 in archive/. The format was
append-only — a committed decision is never edited except to add a supersession header. Six carry
one.
| decision | ratified | superseded by | days live |
|---|---|---|---|
| entity-journals | 2026-04-23 | mission-and-operating-model | 1 |
| fact-check-architecture | 2026-05-19 | provenance-not-verification | 1 |
| commission-driven-production | 2026-05-24 | operating-model-and-north-star | 7 |
| fleet-substrate-managed-agents | 2026-05-21 | operating-model-and-north-star | 10 |
| publication-first-pivot | 2026-05-09 | drone-intelligence-pivot | 21 |
| editorial-system-per-type | 2026-04-19 | commission-driven-production | 35 |
The two largest reversals are absent from this table. The drone-intelligence pivot of 2026-05-30 was
displaced 44 days later without a superseding decision document; the mothball has none either. The
final entry in the append-only record is 2026-07-18-mission-taxonomy-lock, which ratifies eleven
buyer-mission cuts, four of them for launch, and a path-based site architecture. It was committed
six days before the operation it commits to was frozen. The directory pivot survives as a memory
note and four reports; the mothball as a backlog epic and a teardown document.
What was abandoned
The backlog terminates 784 rows as done and 311 as deferred. 309 were deferred during the run;
the last two — deleting the database and archiving the repositories — were handed to the operator at
the close and deferred on the final day.
The closure rule required re-scoped work to be recorded as deferred with a successor ref rather
than closed as done. Measured against the rule: 243 of the 311 carry a resolution stating why the
row was being dropped, 197 name a successor ref that resolves to another row, and 68 carry no
resolution text at all. Seven of the named successors are themselves deferred.
Deferral was concentrated, not gradual.
| date | rows deferred | event |
|---|---|---|
| 2026-05-17 | 144 | session 164 backlog reset |
| 2026-05-09 | 34 | publication-first pivot |
| 2026-05-31 | 29 | North Star and operating-model reset |
| 2026-05-04 | 16 | pre-pivot grooming |
| 2026-07-20 | 14 | pre-mothball triage |
One session accounts for 46% of every abandoned row in the run. Its resolution text is identical across 138 of them:
Deferred — s164 fresh-start audit. Backlog reset to keep only genuine production bugs open. This row is a feature, enhancement, exploration, or pre-pivot artifact, not a current fire.
Median time from creation to done was 0.18 days — most completed work was opened and closed inside
one session. Median time from creation to deferral was 18.87 days. Work either landed immediately or
sat until a sweep removed it. There was no middle population, and the queue overstated committed
work for the interval between the two.
By subject, assigning each deferred row to the first theme its title and description match:
| theme | deferred rows |
|---|---|
| editorial pipeline and articles | 65 |
| newsletter and outreach | 38 |
| globe and geospatial surface | 37 |
| CARVER and infrastructure scoring | 34 |
| warfare and attack corpus | 25 |
| paid product and billing | 4 |
| supply chain and components | 2 |
| other, mostly engine and platform infrastructure | 106 |
By tier: 170 T2, 95 T3, 31 T1, 15 unclassified — backlog_open_classified, the check constraint in
Part 4, applied only to rows in an open status, so rows deferred before it shipped kept their nulls.
By category, content is the only one where deferrals exceed completions: 25 deferred against 18
done. Every other category closed more than it dropped.
The same classification applied to completed work gives the backlog-side counterpart to the spend
figure in Part 5. 339 of the 784 done rows — 43.2% — touched the globe, CARVER, warfare, editorial,
outreach or billing layers, all of which were deleted. 30.7% of model spend and 43.2% of completed
work items went into layers that did not survive. The two measures were taken independently and are
not derived from each other.
Plan versus execution
Handoff letters name backlog refs. Across the 84 letters, 892 references resolve to rows that exist.
| outcome of a ref named in a handoff | count | share |
|---|---|---|
closed done by the end of the following session | 298 | 33.4% |
closed done at any later point | 537 | 60.2% |
terminated deferred | 257 | 28.8% |
| still open at teardown | 98 | 11.0% |
Thirteen of the 86 narrative sessions record a change of subject inside the session itself. The phrasing is consistent: session 260 “opened as an operational question and became the strategy session that should have followed the s254 engine rebuild”; session 279 “started as the #863 as-built audit, became a full rebuild of the collection layer”; session 308 “executed the s306 kickoff, then pivoted to a new #1 goal mid-session.”
Four narrative sessions record the operator intervening against output the session had already produced: a corpus-derived taxonomy rejected in favour of one derived from buyer research (s362); a false premise about the content pipeline overturned mid-stream (s322); a knowledge restructure rebuilt after a corrective miss (s268); and a set of engine diagnoses reclassified by the operator as housekeeping debt rather than capability, in a session whose own summary also records three false alarms raised by the agent, the third of which fabricated its evidence (s266).
The handoff mechanism was accurate about what had happened and weakly predictive of what would happen next.
Tenets as written, tenets as followed
All 28 tenets were authored across two days: 24 on 2026-06-08, 4 on 2026-06-09. That is 86 days after the earliest session in the ledger and 46 days before the machine was frozen. They were written from behaviour that had already stabilised, and codified practice rather than establishing it.
Counting how often each tenet is named by key in a session narrative or a backlog row: 13 of 28 appear at least once, 15 never appear. Seven of the 13 are named exactly once. The other six:
| tenet | mentions |
|---|---|
closure-integrity | 18 |
provenance-not-verification | 10 |
canonical-write-invariant | 8 |
no-untracked-ai-work | 8 |
inbound-trust-boundary | 5 |
deterministic-first | 2 |
Citation frequency measures how often a rule was invoked to settle a question, not whether it was obeyed. Detection/informational only, never mitigation is never cited and was never violated; it constrained a product surface that was deleted before it shipped. The rules that were cited are the rules with a mechanism attached to them. Set against those mechanisms:
| tenet | enforcement | outcome |
|---|---|---|
| Trust boundary on inbound | tool grant: Read, Grep, Glob | held; the sub-agent cannot fetch, execute, persist, or delegate |
| No untracked AI work | logging wrapper; direct SDK instantiation prohibited | held at the call level — 85,613 rows |
| Canonical write invariant | database role plus a security monitor | one violation, detected by the monitor, cured through the sanctioned path |
| Closure integrity | force_close verifies commit SHAs against origin | nine rows previously marked done were reclassified deferred by the s194 audit |
| Deterministic-first | stage ordering; LLM called only on deterministic misses | held; the highest-value graph edges were built with zero LLM calls |
| The engine self-heals | recurring tasks, reapers, alarms | did not hold |
The engine self-heals. A solo operator must never be the recovery mechanism.
Production was silently undeployed for approximately two weeks before session 362 discovered it — Cloudflare Pages had never been git-connected and the repository documentation was wrong. The daily publish pipeline was down for five days before session 368 root-caused it to an untracked screenshots directory failing a clean-tree gate. Both were found by a person looking, not by an alarm.
The trace rule held completely at the call level and not at all at the work level. Every paid call
wrote a row. Exactly three backlog rows in the entire queue ever carried a non-zero cost_usd. The
instrument recorded what was spent and never recorded what it was spent on, which is the defect
behind the retrospective’s cost error described in Part 4.
Terminal state
The teardown ran as thirteen ordered steps with every reversible move placed before every
destructive one, and the database — the source of truth until a snapshot existed — removed last.
Step 9 was a gate: build and serve the site with SUPABASE_DIRECT_CONNECTION_STRING,
SUPABASE_PROJECT_URL, SUPABASE_SECRET_API_KEY, SUPABASE_PUBLISHABLE_KEY,
PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY and STRIPE_SECRET_KEY explicitly unset — env -u, not merely unused. 1,923 pages built green. Everything destructive was licensed by that build
passing.
Five services and three timers were stopped and disabled; all nine cron entries were commented out.
Model spend reached zero at 19:31 UTC on 2026-07-24. The cold archive is 30 objects and 1.71 GB in
private R2, restore-verified — the directory schema restored to 25 of 25 tables and 109,626 rows
with zero mismatches. The 85,613 trace rows were exported as gzipped monthly JSONL, 186.6 MB
compressed, with full prompts and responses retained. What survives on the public surface is a 25.9
MB SQLite file committed to the website repository, from which 1,923 pages and 3,890 files are
generated — 5.1 times under the 20,000-file hosting cap.
Corpus: robotics.press — 1,754 companies, one JSON file, no key required. Teardown record: docs/MOTHBALL.md.