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

monthsessions recordedrows closed donestate of the operation
2026-039155engine repository only; no planning surface, no session ledger
2026-0444174multi-repo split; robotics-press-hq created 04-10; ledger writing from 04-19
2026-0543214publication-first pivot 05-09; backlog reset 05-17; drone-intelligence pivot 05-30
2026-0625130ontology and the 28 tenets authored 06-08/09; operator console; database separation
2026-0712106directory 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

datefromtorecorded in
2026-05-09CIDE consulting and grant pursuitpublication-first newsletter portfoliodecisions/2026-05-09-publication-first-pivot.md (s157)
2026-05-30newsletter portfolioautomated intelligence platform; Drone Intelligence as first product linedecisions/2026-05-30-drone-intelligence-pivot.md (s243)
2026-07-13intelligence platform sold as API and subscriptiondirectory with depth, set-and-forgeta memory note and four reports (s349)
2026-07-24directory with depthstatic company directorybacklog 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:

transitionmeasurement
to publication-firsteleven 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 platforms243 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 followedexecuted 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 directoryleanness 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 artifactfour 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.

decisionratifiedsuperseded bydays live
entity-journals2026-04-23mission-and-operating-model1
fact-check-architecture2026-05-19provenance-not-verification1
commission-driven-production2026-05-24operating-model-and-north-star7
fleet-substrate-managed-agents2026-05-21operating-model-and-north-star10
publication-first-pivot2026-05-09drone-intelligence-pivot21
editorial-system-per-type2026-04-19commission-driven-production35

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.

daterows deferredevent
2026-05-17144session 164 backlog reset
2026-05-0934publication-first pivot
2026-05-3129North Star and operating-model reset
2026-05-0416pre-pivot grooming
2026-07-2014pre-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:

themedeferred rows
editorial pipeline and articles65
newsletter and outreach38
globe and geospatial surface37
CARVER and infrastructure scoring34
warfare and attack corpus25
paid product and billing4
supply chain and components2
other, mostly engine and platform infrastructure106

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 handoffcountshare
closed done by the end of the following session29833.4%
closed done at any later point53760.2%
terminated deferred25728.8%
still open at teardown9811.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:

tenetmentions
closure-integrity18
provenance-not-verification10
canonical-write-invariant8
no-untracked-ai-work8
inbound-trust-boundary5
deterministic-first2

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:

tenetenforcementoutcome
Trust boundary on inboundtool grant: Read, Grep, Globheld; the sub-agent cannot fetch, execute, persist, or delegate
No untracked AI worklogging wrapper; direct SDK instantiation prohibitedheld at the call level — 85,613 rows
Canonical write invariantdatabase role plus a security monitorone violation, detected by the monitor, cured through the sanctioned path
Closure integrityforce_close verifies commit SHAs against originnine rows previously marked done were reclassified deferred by the s194 audit
Deterministic-firststage ordering; LLM called only on deterministic missesheld; the highest-value graph edges were built with zero LLM calls
The engine self-healsrecurring tasks, reapers, alarmsdid 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.