Today I Learned · Release Notes
2026-10-20 · 99 pull requests merged · one founder · one harness

One Day, 99 Merges

Release notes for a single day of ARCS engineering: what shipped, the two mistakes the record kept, why the work compounds instead of piling up, and what the same day would have cost without a harness. The human made every merge call.
build → gate → receipt → reweight
The short version

On October 20, 2026, 99 pull requests merged into the ARCS monorepo (GitHub merge dates, UTC). One person directed the work: a parent Claude Code session planning, child sessions building in isolated worktrees, counter-agents checking. Every merge was pinned to the exact commit that passed its checks, and every one needed a human yes. The live counts are on status.arcs.care.

What shipped

99 merged · 13 large · 31 medium · 55 small · 0 squash merges

A queryable map of the work itself. The JTBD graph: every tool, job, blocker and dependency in the repo, generated, with stable ids. Sprints three to five landed in one day: gates that fail the build on six rule classes, a jtbd(job) lookup, and outcome-weighted edges with a weekly drift report. Sprint six followed the same night, adding the MCP tools (Supabase, Vercel, Gmail and others) as graph nodes.

A retrieval test written before the result. The lookup was judged against the old flat tool catalog on a blind pool sealed by a separate session. Graph 16 of 18, catalog 6 of 18; essential recall 0.89 against 0.16. The scoring rule was fixed before anyone saw an answer.

A merge path that refuses. safe_merge merges only when the head matches the commit a person approved and every check reads SUCCESS. It refused twice that day on a moved branch, as designed.

A ledger that cannot be quietly rewritten. The decision-receipt table in Postgres became append-only: a trigger refuses UPDATE and DELETE, so a correction is a new row that names the old one. Receipts now carry the job they served and the tool that did it.

A bridge from decisions to outcomes. Real decision receipts now flow into the weekly accountant as their own cohort, so outcomes are scored on the decisions that were actually made.

What broke, kept on the record

Two own-errors, both in the merge path, both written into their receipts instead of patched over. One parent merge landed before a child session had pushed its final commit, and needed a repair PR. One merge went through while a check was still pending. The second is why safe_merge now waits for every check and refuses on anything short of SUCCESS. The fix shipped the same day as the failure.

Why it compounds

Ninety-nine merges is not the point. The point is that each one makes the next one cheaper and safer, while the human keeps the decisions. The harness sequences and checks the work; it never decides. That is NOTOMATION: scaffold the cognition, never replace the judgment.

  1. Reuse before rebuild. Agents ask the graph for an existing tool before building one, so fewer duplicates get built and fewer need review.
  2. Every merge leaves a labelled receipt. Job and tool ids on each receipt feed outcome weights back into the graph, so the tools that worked rank higher next time.
  3. Machines refuse the mechanical failures. A moved head, a pending check, a whole bug class: the gates catch these, so human review goes to judgment calls, not checklists.
  4. The record stays honest. An append-only ledger means the history the weights learn from cannot be edited after the fact.
What compounds is not the code. It is a person's judgment, spent only where it is needed.

What it would have cost without a harness

An estimate, not a measurement. PRs were sized by lines changed and kind, then priced at what a solo senior engineer would spend on scoping, building, testing, review, merge and receipt.

SizePRsHours eachHours
Small: backlog rows, restamps, wording550.5–128–55
Medium: fixes, gates, refactors312–462–124
Large: graph sprints, blind test, merge path136–1278–156
Total99168–335

That is about 4 to 8 person-weeks of unassisted work, landed in one calendar day of one person's attention: roughly 20 to 40 times the pace. Lines changed overstate the effort, because much of the diff is generated (catalogs, graph data, baselines), so the sizing leans on kind of work, not line count.

What this does not show

The loop has turned once. Compounding is by design, with the first measurement due: receipt coverage is checked on November 3, and the blind retrieval test is re-judged on November 17. Until then, this page claims a working mechanism and a fast day, not a proven curve. The human-time figure is a priced estimate from one engineer's judgment, not a timed comparison.