The year-to-date audit, through the lens of Build to Think — the eighteenth edition since March, regenerated with /audit on Fable and Opus 5, this one 2026-09-03. One ink, one accent, short on purpose.

A cooking coach for a new dad went from git init to a deployed, phone-first app in 28 hours. A war-game engine went from nothing to 48,249 lines in four days — three genres on one substrate, no map data, no keys, and a README that publishes its own calibration misses. That fortnight is the year in miniature: 1,176 commits before work and after dinner around a day job at Google, nineteen products anyone can open in a browser, no servers to babysit and almost nothing to log into.

Nine minutes after the engine committed its third mode, its author opened a second repo and rebuilt the same game from scratch with the opposite thesis. That repo holds 7,472 lines, a passing test suite, a built bundle — and, when this audit’s sweep reached it, not one commit. Sixteen minutes later it had a commit and a remote. Last edition’s headline debt, an architecture deployed from a branch GitHub had never seen, was cleared within 48 hours; the essay published two days later said so: the loop works on its author. Then the same shape came back, bigger, in a directory the audit didn’t know existed until this morning’s ls — and closed itself before the report was written.

1,176
commits · Jan 1 → Sep 3
19
products live on the internet
$0
monthly bill — every deploy on a free tier
28h
from git init to a deployed app

Lesson 1 — Projects die between sessions, not during them

Nothing here died of a hard problem. Things died of the cold start — sitting back down and not knowing where you left off. Every project that matured left itself a note; every one that stalled, stalled in the gap. The evidence is uncomfortably literal: one version’s final commit reads fix: resolve 27+ TypeScript build errors; another died finished, on branches nobody pushed.

This round’s exhibit is the purest since February. The rival battle-royale repo is a complete product — seven test files, a calibration CLI, a duel runner — and for sixteen minutes this morning it existed on one laptop’s filesystem and nowhere else. Then it got a commit and a remote, while this paragraph was being drafted — the right outcome, closed by hand, in the same gap everything else in this section died in. The habit tracker’s rebuild carries the same risk in slow motion: its July privacy fix, the one that moved a personal supplement list out of the shipped bundle, has been sitting uncommitted for five weeks. The handoff note in the golf record still says a DNS record is “still pending” seventeen days after that domain went live; the note’s header still reads “State as of Aug 17” with thirty-five commits underneath it. The append-only log next to it grew to forty entries and stayed true.

The uncomfortable half of the finding is about the tooling. In July a small harness was built against exactly this — a ship-state table, a campfire command, a morning brief. The prompt history since the last edition shows zero invocations of any of them. Of 219 prompts typed in that window, 44 are variants of push — a fifth, the same fifth the Aug 19 essay measured across ten months. What worked was the report: a person read that production ran on an unpushed branch, and pushed. What didn’t work was the on-demand layer, because on-demand means remembering. The counter-exhibit is the new engine’s own note: dated, versioned, golden seeds, the exact command to rerun each calibration, and a line recording that “a parallel session owns the STORY tab.” Written the same day the code was.

The living log · how a project survives the gap

the sessionNEXT.md build · decide · stoplesson log + living spec five minutes before stopping: what happened, what's next, why the next session opens the note, not the code — no cold start

The transfer: give every project one living file — part lesson log, part spec: decisions with reasons, what’s next, what changed your mind. Then split it: let the machine write the part that’s a fact (branch, last push, what’s live) every time you stop, and keep the human’s hand for intent. A team that records why it chose something stops relitigating the choice; a team whose status line writes itself stops lying about it by accident.

Lesson 2 — Everything you build wants to become a game

Look at where each exploration ended up: an atlas of San Francisco became a drivable city. A launch-planning idea became a deckbuilder. Golf-course data became a sim you can lose at. A friend’s life became an RPG; even the habit tracker is a rat you keep alive. The AI underneath is indifferent. The pull toward play comes from the person: a general capability has no handles, and giving it rules, feedback and stakes is how a mind gets a grip on it.

This round it happened three times in five days, on one engine. The engine was built genre-agnostic first — architecture tests ban Math.random, Date.now, and every house or place name from the core — and then grew a mode a day: a single-elimination bracket on Santa Catalina Island with fog of war as a per-side belief state (“~80–120 when the truth is 240”); a desert battlefield “where water is the clock,” carried entirely by data; a 48-house Bay Area theater with 2,256 directed opinions, one for every ordered pair; a 32-champion battle royale. The direction of the drift is the finding: each mode is less playable than the last. The theater’s design goal is “the player watches, reruns, and studies; nobody drives.” The rival repo goes further — “the product is the data… not the story.” The game became an instrument, the way the golf record did in July, and the instrument reports its own misses: a matchup landing at 45% against a 53.5% target, a champion who “dies early too often for the spec’s taste.” Canon is allowed to lose; the goldens lock determinism, never who wins.

The refusals are as telling as the drift. The cooking coach has every ingredient of a game — twenty ordered dinners, skills that accumulate, scaffolding that fades — and declines the loop on purpose: its difficulty setting is “a complexity setting, not a judgment,” and its stated end state is not needing it anymore. An app engineered to lose its user.

The transfer: when an idea isn’t landing — a pricing model, a roadmap — build a toy version people can lose at. Losing teaches faster than reading. Then make the toy publish where it’s wrong: a game that prints its own calibration table is a model, and a model is something a team can argue with instead of about.

Lesson 3 — Build the memory first, then chisel the product out of the rest

Building to think works like sculpture: early versions pile up material — code, dead ends, notes — and the product is what’s left after you cut the rest away. The cutting is only safe if the design lives somewhere outside the code. That’s why the memory comes first.

The Dopamine Rat proves it. Built four times; dependencies per version ran 2 → 7 → 10 → 3. The version that shipped is the smallest, and the only one that started from a written record of what the first three got wrong. Doppler applied the rule on day one instead of attempt four: two dependencies, no backend, and 264 CI data invariants. If a number can be derived, derive it; anything hand-set is labeled as opinion.

Four repos subtracted this round. The golf record committed the fixture before the parser — “the fixture the parser will be written against” — then spent a weekend deleting: five copies of one reader became one, five pipelines became one composition, and a single commit of +32 / −1,115 removed two whole pages, including last edition’s centerpiece, folding them into one. The site got smaller as the record got bigger. The flagship retired its April essay without deleting it: nav link gone, an archive notice pointing at the map that replaced it, sitemap priority cut. It kept its URL and lost its authority. The site published a profile of its author as a roast and then cut the roast out in six commits until only a five-step method remained. And the cooking coach’s reckoning commit — “Make the kitchen mechanics rise to the writing” — took a postpartum recipe set from 25 down to “the ten that truly reheat or eat one-handed” and named the seam: “the content is the product, and the tooling around the 5:30pm moment was the weak seam.” The engine wrote its memory as an event log — every decision carrying the alternatives it rejected — and treats its three screens as three reads of one recording. Its README has a section titled Deliberate V1 cuts.

One repo, three homes · the July extraction

sf the monorepo Apr → Jun rush the driving game, extracted to its own repo sf the journal returns — now an Astro content site golf → muni the sibling sim promoted to primary; old build archived, not deleted

Maturity as separation of concerns you can survive: give each exploration its own address, and keep — don't destroy — what it grew out of.

Lesson 4 — AI compressed implementation. It did not compress judgment

The cold start is how projects die; whether the thing deserved to exist is why you never come back. bass is the year’s honest failure: ten commits of supply for a demand that never existed — one practice ever logged. The code was fine. The decision was wrong, and every added feature compounded it. Rat v3 made the same mistake with more ceremony — Garmin OAuth before daily use was proven — and died finished. film died in a day, zero photos.

This round’s evidence is a run of decisions about what a machine is allowed to decide. The golf record’s new watch adapter takes the device’s measurements and refuses its model — “every Garmin-computed number is refused at the adapter… so every number the site prints is derivable and explainable” — and rejects even a labeled exception, because “one labeled exception becomes the precedent for the next.” Its round-matching runs under a stated policy — “proposed by machine, confirmed by hand… reruns preserve those verbatim” — and the loader reads only what a person confirmed: “a proposed link is a guess, and a guessed join is invented data.” Per-shot GPS is committed to a public repo by signed decision, with a revisit if clause for the day a private-residence course appears. The market map published its own strongest refutation and corrected the entry about the author’s own product in the direction of accuracy. The golf sim’s newest course has no boundary on the map, so it ships a flagged hull with its retirement written in. And the engine’s rival attaches a confidence and a citation to every rating, and is willing to write “No direct evidence.”

The open call is the fork itself. Two implementations of one game, chronicle-first against analytics-first, built hours apart by the same person, is a design disagreement settled by building both — Build to Think at its most literal. But the argument lives in two READMEs; the engine has no decision log at all; and nothing says which side wins.

The transfer: when you automate a judgment, keep a human signature on the join, and store it where re-running the machine can’t erase it. The tool should never both set the goal and grade it. And when two of you disagree about a design, building both is a legitimate review — as long as the losing side gets written down, because the side that isn’t written down is the side that doesn’t get committed.

The stack — whatever you don’t have to log into wins

The monthly infrastructure bill is $0 — but the money is the least of it. Sort the portfolio by what each project depends on and a pattern falls out: everything that survived runs on things you can hit without logging in — OpenStreetMap, MapLibre, git, localStorage, a static host’s free tier — and everything that rotted, rotted at an auth boundary: an OAuth flow, an expiring token, a service key. Not because open tools are better, but because they’re still there at 5am, on a phone, from a golf course. The path of least friction wins, and a login screen is friction.

Keyless → still running

  • OSM + Overpass — two golf projects' course geometry; cost: an attribution line
  • MapLibre — real maps, no API key
  • Open-Meteo — live microclimates for the atlas’s weather-chase mode; no key
  • git + a CDN — doppler's whole "backend"; scoring is a commit
  • localStorage — the rat's database; the cooking coach's whole state; the flagship's job queue
  • Jekyll + GitHub Pages — twelve years; its one death is opposite →
  • a browser extension riding your own session — the watch's data, captured verbatim, no OAuth; the 2021 death across the aisle, solved by not asking
  • hand-placed terrain — 48,000 lines of war game on zero external data; every ridge typed in
  • Demucs, localstems: no cloud, no accounts, no uploads; the price: only a demo lives at a URL

Auth-walled → where things rotted

  • Garmin OAuth — built before daily use was proven; rat v3 died finished
  • a Supabase anon key — five months of public writes on the flagship
  • Universal Analytics — the site's one death in twelve years
  • cron secrets & DNS aliases — the rat simplified; the failures moved here
  • a stale Overpass mirror — the one that answers looks healthy; three courses baked from May data. The guard written after it caught a second mirror lying 50 days deep, in a different repo, on its first run
  • a hosting team's URL — the war game's deploys answer a login screen; only an alias nobody wrote down is public, and the obvious address belongs to someone else

Tournament weekend was the field test. Thursday, July 23: git init at 3pm, a live tournament site by 11:31pm. Then every update, all weekend, came from a phone between rounds — 22 commits of scorecards entered hole by hole from the course in Ontario. Nothing on the board was ever set by hand: standings, odds and the champion badge all derive from the committed scorecards. No admin panel, no login. That’s the bar — run it from a golf course, on a phone, between shots — and any OAuth screen in that path kills the live board by Saturday.

The thesis has a control arm: a fresh problem went to a different agent — OpenAI Codex — and came back as a golf-course digital twin, which on day two added a Supabase tier with logins, the stack’s first new keys in months. Four editions later the pattern is data: its auth tier has gone untouched for five weeks, and its API surface answers 404 from outside. Nothing rotted loudly. Auth-walled things don’t; they just stop being checkable.

But keyless is not the same as trustworthy — the free endpoint that asks nothing of you can still hand you two-month-old data with a straight face — and it is not the same as findable either. Two of this round’s products are live on a free tier with no login in their path and no URL in their README, and the address a reader would guess for one of them is a stranger’s consultancy. Open beats auth-walled on survival; it buys you neither correctness nor a front door.

The transfer: count the credentials before you count the features — every key is a place the project can die while you’re not looking. Then go back and ask each keyless source how you’d know if it started lying. The ones that ask nothing of you also promise nothing to you.

What building on top found

Seven courses went into the golf sim in one evening. That meant leaning on parts of the pipeline nobody had leaned on, and three things fell out — each of them shipping silently since the day it was written.

The sequel landed in a repo that didn’t exist when those bugs were found: the staleness guard, ported into the course map, refused a mirror serving 50-day-old data on its first run. And this round the pipeline met a course with no boundary at all — nothing in OpenStreetMap says where it ends — so the guard’s cousin shipped: a flagged interpolation with its own expiry written in. That’s the difference between a lesson learned and a lesson installed: one lives in your head, the other fires in a repo you haven’t started yet.

The transfer: when you inherit a pipeline you didn’t write, don’t audit it — extend it. Tests check the paths you thought of; the next feature walks into the ones you didn’t, and it’s free, because you were going to build it anyway. The same trick works on a system you inherited at work: the fastest audit of code nobody remembers is the next thing somebody needs from it.

The year in one line

The shape of the year · commits per week, in three acts

Apr 12 · 84 in one daythe detonationMay 19 · Google I/Othe sprint before it claimedthe same 5am marginsEarly Jun · NYC → SFthe move, not a stall51%of the year's 1176 commits fell intwo months — March & AprilACT Ithe quietACT IIthe detonationACT IIIfinishing & cutting

Two quiet months, a detonation, then a tail that keeps building: the spring is now, for the first time, only half the year — 50.7% of commits — with July and August the third and fourth months. The window had a shape of its own: a 34-commit Wednesday (the flagship’s whole market map in two hours and eight minutes before work), a weekend of golf-record subtraction, five silent days, then the two new products at the portfolio’s standard hours — four nights past ten, mornings before nine, one full daylight Monday for the coach. The mid-May flatline is Google I/O; the June trough is the move, New York to San Francisco. The clock hasn’t moved since it tipped last edition: 9pm leads 5am by three. And the census moved while being taken, for the fourth edition straight — this time a whole repo: the rival battle royale was uncommitted at the sweep, committed and pushed sixteen minutes later, and the engine redeployed in between.

The portfolio

This round’s deltasWesteros War Games · bittman · MACKENZIE · bookmarks · MUNI golf · the site

Shipped & steadyThe Doppler XII · archetypes · SF · Flow Slays IO · inference · stems · Level Atlas · Minecraft mods · course renderer · kareemrpg · prompts-mcp

Bench & footnotesSF Rush · the Dopamine Rat · bass · the bench

Westeros War Games — catalina
Jan 2026Sep 3commits / wk · peak Aug · 18

Westeros War Games · catalina

NEW · 18 commits · Aug 30–Sep 3 · 48,249 lines · 3 dependencies

A deterministic war-game engine that grew a genre a day: a 32-house bracket on Santa Catalina Island, a desert where water is the clock, a 48-house Bay Area theater where "nobody drives," and a battle royale. Every decision ships with its rejected alternatives and their scores. No map data, no keys — every ridge is hand-placed TypeScript — and the README publishes its own calibration misses. Nine minutes after the royale landed, a rival implementation began in a second repo — committed sixteen minutes after this audit found it bare.

bittman — Amar, let’s learn to cook
Jan 2026Sep 3commits / wk · peak Aug · 13

bittman

NEW · 13 commits · 28 hours · Aug 31–Sep 1 · live

A cooking coach for one cook — a new dad — built from git init to a deployed, phone-first app in 28 hours. Twenty ordered dinners, each teaching one technique; Dinner 20 has no recipe, only questions. Dad Mode is "a complexity setting, not a judgment." Its stated end state is not needing it anymore, and its last commit is a field report from the first real cook: "tacos confirmed as the core, hashbrowns demoted, salt math fixed."

Jan 2026Sep 3commits / wk · peak Aug · 24

MACKENZIE

Δ · 78 commits · Aug 1–24 · courses.ummerr.com

Last round it merged its two products and forgot to push; this round it pushed within 48 hours and then closed the loop: a second capture extension (the watch), machine-proposed round links a human must confirm — "a proposed link is a guess, and a guessed join is invented data" — a goals engine that proposes a week and waits for a signature, and one command, pnpm refresh, that turns any new capture into a rewritten record. Then it deleted two pages. The site got smaller as the record got bigger.

Prompts · the flagship
Jan 2026Sep 3commits / wk · peak Mar · 112

Prompts · the flagship

Δ · 307 commits · Feb–Aug · shipped

X bookmarks → a curated gen-media prompt dataset, and now a public market map: 74 companies, a Momentum 25, and a 352-finding validation trail written in two hours before work. Its strongest refutation is published in its own audit; contested numbers stay contested; the entry about the author’s own product was corrected toward accuracy, not flattery. The April essay it replaced kept its URL and lost its authority.

The Doppler XII
Jan 2026Sep 3commits / wk · peak Jul · 76

The Doppler XII

108 commits · Jul 23–28 · record sealed

Built in one evening, operated from the tournament, sealed by Sunday. Live scoring was literally git: commit a scorecard, the field’s phones update. Two runtime dependencies, no backend, 264 data invariants in CI. After the seal came “The 36th”: the playoff hole resurveyed from OpenStreetMap, shot by shot, with witness corrections amending the record.

SF Rush
Jan 2026Sep 3commits / wk · peak May · 66

SF Rush

built inside sf, Apr–Jun · own repo since Jul 12

Don’t read the commit count — the game was built across sf’s spring sprints, then copied out whole on Jul 12: 18k lines, six vehicles, real LiDAR terrain. The chart shows the full lineage; its default level is the Harbor Links golf course.

Flow Slays IO
Jan 2026Sep 3commits / wk · peak Jun · 10

Flow Slays IO

27 commits · Jun–Jul · shipped

A Slay-the-Spire deckbuilder about shipping a GenMedia model. The truest mechanic: the PM classes cannot deal damage — the whole kit is leverage on other people’s cards. July’s retheme added pixel-art combat and an honest balance simulator.

Archetypes — the cross-system resonance map
Jan 2026Sep 3commits / wk · peak Apr · 115

Archetypes

172 commits · Mar–Jul · shipped

v1 was built entirely on a phone. v2 rebuilt the problem statement: 87 archetypes, 170 graded mappings, every objection attacked on schedule and the survivors published.

Course renderer — Hole 18, Legends of the Niagara
Jan 2026Sep 3commits / wk · peak Jul · 11

Course renderer

11 commits · Jul 27–31 · built with Codex

A golf-course digital twin on MapLibre + OpenStreetMap — refuses to invent geometry the map doesn’t know. The keyless thesis’s control arm: its auth tier has now sat untouched for five weeks — not broken, just no longer checkable from outside.

Stems — the in-browser mixer
Jan 2026Sep 3commits / wk · peak Jul · 16

Stems

25 commits · Jul 19–30 · demo live

A local-first Demucs stem splitter whose demo renders music videos in your browser — ten styles, four generative sketches drawn from a hand-written FFT — and then, in twenty-three minutes, became a working Winamp. Its own note says the next step is to ship it outward.

Level Atlas — World 1-1 and its intensity curve
Jan 2026Sep 3commits / wk · peak Jul · 8

Level Atlas

8 commits · Jul 30 · live

An atlas of level design in which the repo is the database: every entry a JSON file checked at build time, so a dangling reference fails the build instead of the page. Day two it built a space-graph engine instead of per-level artwork.

The SF atlas
Jan 2026Sep 3commits / wk · peak May · 66

The SF atlas

123 commits · Apr–Jul · shipped

An atlas built to answer a real question: where in SF to live. Its weather-chase mode colors 189 neighborhoods by live sun, wind, and warmth. It also grew a driving game, then gave it up: −19,963 lines in six reversible minutes.

LabsCraft — the mod’s own pixel art
Jan 2026Sep 3commits / wk · peak Jan · 4

LabsCraft v2 · minecraft-mods

14 commits (+6 on a branch) · Jan–Jul

An LLM-driven NPC mod deleted and rebuilt in ~100 minutes by 7 parallel agents — safe because the design was extracted into a spec first. A third mod, SportsCraft, golf inside Minecraft, is still in PR, honest that no one has run it.

Inference
Jan 2026Sep 3commits / wk · peak Apr · 63

Inference

64 commits · Apr + Jul · shipped

Gen-AI unit economics, cited and interactive. Its 34-commit launch day exposed the missing source of truth; the fix made July’s refresh one commit instead of thirty.

MUNI · golf
Jan 2026Sep 3commits / wk · peak Jul · 22

MICKEY’S MUNIS · golf

38 commits · May–Aug · 21 real courses

A 16-bit sim on real course geometry — 360 holes, from Augusta to a Toronto par 3, still two runtime dependencies. Course 21 is the first with no boundary on the map at all: a flagged convex hull with its retirement written in — “if someone maps the real boundary, the path goes unused” — baked and merged by a cloud agent.

The site
Jan 2026Sep 3commits / wk · peak Jul · 34

The site

106 commits · shipped since 2014

The workshop’s logbook — and this audit’s publisher. This round it published a report on how its author builds — a fifth of all prompts are the word push — then spent six commits cutting the jokes out until only the method remained.

Jan 2026Sep 3commits / wk · peak Mar · 21

The Dopamine Rat

49 commits · 4 rebuilds · v4 live

Dependency count per version: 2 → 7 → 10 → 3. v4 wins by deleting the other three. Its July privacy fix has been sitting uncommitted for five weeks — the campfire is lit; nobody has pushed it into git.

kareemrpg

kareemrpg

Godot · shipped · a birthday gift

A friend’s life as a walkable RPG. The tutorial folder quietly became the product — bias toward extending what works.

bass
Jan 2026Sep 3commits / wk · peak Apr · 8

bass

10 commits · Apr · one logged practice

The year’s honest failure, and Lesson 4’s exhibit A: a perfect practice tool that consumed the practice slot.

prompts-mcp

6 commits · shipped

Learned MCP by implementing all four primitives and both transports over his own dataset. The bugs were the curriculum.

The bench

westeros-battle-royale · film · VidMetaPrompt · cursorMint

westeros-battle-royale: 7,472 lines and a passing test suite that spent sixteen minutes with no commit and no remote — the newest cold-start near-miss in the set. film died in a day with zero photos; two repos never reached a first commit.

The cadence

The bimodal builder · commits by hour of day (Pacific)

9812a6a12p6p11p5am · pre-dawn9pm · evening2–4am · dark

Every day of 2026 · Daily commits, week by week

JanFebMarAprMayJunJulAugMWF2026-01-04: 02026-01-05: 02026-01-06: 12026-01-07: 02026-01-08: 02026-01-09: 42026-01-10: 02026-01-11: 02026-01-12: 02026-01-13: 02026-01-14: 02026-01-15: 02026-01-16: 02026-01-17: 02026-01-18: 02026-01-19: 02026-01-20: 02026-01-21: 02026-01-22: 02026-01-23: 02026-01-24: 02026-01-25: 02026-01-26: 02026-01-27: 02026-01-28: 02026-01-29: 02026-01-30: 02026-01-31: 02026-02-01: 02026-02-02: 02026-02-03: 02026-02-04: 12026-02-05: 02026-02-06: 02026-02-07: 02026-02-08: 02026-02-09: 02026-02-10: 12026-02-11: 02026-02-12: 02026-02-13: 02026-02-14: 02026-02-15: 32026-02-16: 22026-02-17: 02026-02-18: 02026-02-19: 02026-02-20: 02026-02-21: 02026-02-22: 02026-02-23: 02026-02-24: 02026-02-25: 02026-02-26: 02026-02-27: 02026-02-28: 22026-03-01: 22026-03-02: 12026-03-03: 22026-03-04: 02026-03-05: 02026-03-06: 02026-03-07: 62026-03-08: 112026-03-09: 272026-03-10: 112026-03-11: 02026-03-12: 152026-03-13: 192026-03-14: 182026-03-15: 22026-03-16: 02026-03-17: 32026-03-18: 22026-03-19: 02026-03-20: 32026-03-21: 62026-03-22: 02026-03-23: 52026-03-24: 22026-03-25: 142026-03-26: 552026-03-27: 322026-03-28: 222026-03-29: 122026-03-30: 92026-03-31: 02026-04-01: 02026-04-02: 02026-04-03: 32026-04-04: 52026-04-05: 02026-04-06: 02026-04-07: 02026-04-08: 02026-04-09: 22026-04-10: 02026-04-11: 132026-04-12: 842026-04-13: 172026-04-14: 352026-04-15: 52026-04-16: 212026-04-17: 162026-04-18: 352026-04-19: 42026-04-20: 292026-04-21: 02026-04-22: 242026-04-23: 22026-04-24: 82026-04-25: 52026-04-26: 62026-04-27: 22026-04-28: 02026-04-29: 02026-04-30: 02026-05-01: 02026-05-02: 02026-05-03: 12026-05-04: 02026-05-05: 02026-05-06: 02026-05-07: 12026-05-08: 22026-05-09: 22026-05-10: 02026-05-11: 02026-05-12: 02026-05-13: 02026-05-14: 02026-05-15: 02026-05-16: 02026-05-17: 02026-05-18: 02026-05-19: 02026-05-20: 02026-05-21: 02026-05-22: 02026-05-23: 02026-05-24: 02026-05-25: 02026-05-26: 42026-05-27: 482026-05-28: 122026-05-29: 72026-05-30: 72026-05-31: 02026-06-01: 12026-06-02: 22026-06-03: 212026-06-04: 02026-06-05: 02026-06-06: 42026-06-07: 42026-06-08: 02026-06-09: 02026-06-10: 02026-06-11: 52026-06-12: 42026-06-13: 42026-06-14: 02026-06-15: 02026-06-16: 02026-06-17: 82026-06-18: 02026-06-19: 02026-06-20: 02026-06-21: 02026-06-22: 32026-06-23: 22026-06-24: 52026-06-25: 02026-06-26: 02026-06-27: 02026-06-28: 02026-06-29: 02026-06-30: 02026-07-01: 02026-07-02: 02026-07-03: 02026-07-04: 02026-07-05: 02026-07-06: 02026-07-07: 02026-07-08: 02026-07-09: 02026-07-10: 32026-07-11: 92026-07-12: 42026-07-13: 12026-07-14: 52026-07-15: 12026-07-16: 42026-07-17: 12026-07-18: 02026-07-19: 22026-07-20: 52026-07-21: 92026-07-22: 82026-07-23: 482026-07-24: 292026-07-25: 122026-07-26: 102026-07-27: 322026-07-28: 312026-07-29: 82026-07-30: 302026-07-31: 152026-08-01: 42026-08-02: 142026-08-03: 112026-08-04: 32026-08-05: 22026-08-06: 02026-08-07: 02026-08-08: 02026-08-09: 02026-08-10: 02026-08-11: 02026-08-12: 02026-08-13: 02026-08-14: 52026-08-15: 22026-08-16: 22026-08-17: 82026-08-18: 12026-08-19: 342026-08-20: 32026-08-21: 12026-08-22: 112026-08-23: 102026-08-24: 102026-08-25: 02026-08-26: 02026-08-27: 02026-08-28: 02026-08-29: 02026-08-30: 62026-08-31: 112026-09-01: 122026-09-02: 02026-09-03: 3lessmorebusiest day · Apr 12 · 84

Hover any day for its count and which repos moved. The dense block is the March–April detonation; the warm cell is the single busiest day (Apr 12, the inference launch).

The verdict

The portfolio isn’t a list of products; it’s a thinking log with a URL for each thought. This round the practice got mature enough to argue with itself in code. Two implementations of one game, built hours apart — chronicle-first against analytics-first, fifty bare ratings against twenty cited ones — are a design review conducted by construction. That is the whole method at its most literal. It is also the oldest failure in this file wearing a new coat: the losing side of an argument that was never written down is the side that doesn’t get committed.

The counterweight is the harness. Last edition’s debt was cleared in two days because a person read a report; the tools built in July to make that automatic have never been run. A report works when someone is looking. A hook works when no one is. Everything this round says about continuity points the same way: move the work off the command line and into the things that fire on their own, and let the machine write the status so the human only has to write the intent.

What none of this has been tested on is still other people — and the gap narrowed by exactly one simulation. The Bay Area theater is 48 autonomous houses holding 2,256 private opinions of each other, negotiating and betraying their way to hegemony while nobody drives. It is the closest this portfolio has come to modeling a room full of people, and every one of them is code. The golf record’s engine proposes, human commits is a two-party protocol with one party. The market map’s way of disagreeing — name the missing evidence, make it a watch item — has only ever been used against its own author. Whether any of it survives a second person with commit rights is the question a solo portfolio cannot answer, and the year has four months left to try.

Build to think; then commit what you built, because a repo with no first commit isn’t a project yet — it’s a very large scratch file.


Eighteenth dated edition since 2026-03-29. Census through 2026-09-03. Regenerated with /audit on Fable and Opus 5 across the run — this one on Fable. The long-form master report lives at ~/CodeProj/PROJECT_AUDIT.md.