A cross-section of geological strata, layered bands of sediment, standing in for the buried history of a software repository.
essaysMay 31, 20265 min read
By

Strata: reading a repository as a dig site

What started as a small agent toolkit one night grew into an eight-team organization that reads this site's git history as sediment, the rework, dead ends, decisions, and the things the project keeps circling, and turned it into ten interactive essays and six browsable surfaces. Every number is real, or it isn't shown.

A deployed website is a surface. It is the part meant to be seen, and it is built, deliberately, with care, to hide its own making. The polish that makes a feature feel inevitable is the same polish that erases the weeks of detours behind it. Tonight I tried to dig that labor back up.

A repository is a dig site

Bowker and Star have a line that's stuck with me for years: infrastructure goes invisible exactly when it works. You stop seeing the road. You see only where it takes you. The same thing happens to the labor that built the thing. Success closes over its own history. But a git repository is one of the few places that keeps that history in full: dated, attributed, recoverable. So I treated this site's repo like a hillside a road has cut open. Strata. The deployed pages are the surface. Underneath sit the abandoned attempts, the rework, the files I kept dragging along, the renamings, the quiet upkeep nobody logs.

The method is the argument

Eight teams, one shared record. That's what my little organization of agents turned into over a single session, all of them reading the same file. Here's the cast. An Excavator surfaces the invisible labor behind a shipped feature. A Biographer tells the whole life of one file. A Classification Lab treats the directory tree as a filing scheme and logs every reclassification, 956 of them. A Necromancer scores the features begun and abandoned, 42 dead threads. Then the later teams read the earlier ones' verdicts: an Atlas mines the why, the decisions a repository made and the reasoning behind them, lifted straight from the commits, while a Compass reads what the project keeps scaffolding, dropping, and reaching for again. Nothing here is invented. Every figure is regenerated by a program reading the commit graph, here, the full history. That's the whole point of the constraint. The numbers are real or they are nothing.

What it found

That bibliography at the foot of one essay looks like it sprang up whole, and it did, in a single day. Of its 1,377 lines, only 720 survive. The rest - 657 of them - were written over and never once recorded as deleted, because the page builds itself. Then there's CLAUDE.md, the most-touched file on the whole site and the one no visitor ever loads. Twenty-seven commits amended it. Almost none of those commits were about it. It just tags along with every feature, watching. Look in one directory and you'll find 98 files that were written and then deleted, a hand-built trip-app login among the casualties, abandoned for a shared sign-in. Seventeen audio files made a single trip out of a novel's manuscript folder and into the public tree: same sound, brand new identity. And a few corners have gone silent. Not from failure. They were finished. Intact, asking for nothing.

The discarded version is not waste. It is the reasoning that the surviving version inherited.

What you can walk through

The dig didn't stay a report. Each team left something you can open and walk through. Two of those surfaces are twins, sorted by the same detector: a Collection for the work that settled, a Graveyard for the work that died on the vine. Then there's a City. It rises commit by commit, and you can scrub the whole history as a skyline. The Atlas is for searching why a given corner of the code ended up the way it did, with every answer quoting the commit it came from. A Compass shows the arcs the project keeps returning to. And the organization itself gets its own surface: the agents that did the digging, each tile carrying a live count of its own work. If you want a way in, start with the ten essays.

How it keeps itself current

None of those surfaces is hand-maintained. A GitHub Actions workflow re-runs the whole dig on a schedule - every Monday, plus on demand - and when it's done, it doesn't quietly shove the refreshed data into main. It opens a pull request I can actually review. Nothing changed that week? No PR. A week with real movement opens one I glance at and merge. The agents are deterministic and need no secrets, so the run stays entirely self-contained.

yaml
# .github/workflows/strata-run.yml
on:
 schedule:
 - cron: "0 15 * * 1" # Mondays 15:00 UTC, the weekly self-refresh
 workflow_dispatch: {} # …and on demand, from a button or the /strata UI

# the agents run, then the refreshed data lands as a PR, never a direct push:
- name: Open refresh PR
 if: ${{ steps.agents.outputs.exit_code == '0' }} # only a clean run lands
 uses: peter-evans/create-pull-request@v6
 with:
 branch: bot/strata-refresh
 add-paths: |
 strata/runs/*.json
 strata/runs/*.md
 title: "strata: weekly surface refresh"

Same honesty rule for the automation as for the dig. The report builder that feeds the org chart won't call a team "built" unless it has real output to show. Produced nothing? Then it stays "planned" instead of reporting some flattering zero. And that guard is the whole reason the Compass, which usually turns up nothing worth naming, can sit right there on the page next to the others and not be lying.

javascript
// build-report.mjs, the org tile only flips to "built" on real output.
const compassArcs = compass?.coverage?.arcs_surfaced ?? null;
if (compassArcs > 0) {
 teams.push({ name: "Compass", metric: { value: compassArcs, unit: "arcs surfaced" } });
}
// If nothing cleared the evidence floor, Compass stays "planned", never a faked count.

// And if a run breaks, it fails loudly instead of shipping a half-dig:
// the report is still built and flagged, the artifacts upload, and the job
// goes red, no refresh PR is opened from a partial run.

The plans, in full

None of this was improvised. Each piece has a written spec, and, because the repository is private, they're rendered to read right here on the site:

  • The Product Requirements Document, the whole system in one place: the thesis, the eight teams, the architecture, and the honesty discipline that holds it together.
  • The Classification Lab methodology, the doctoral core: the regrading-event typology, the residual lexicon, and the detector's own admitted limits.
  • The Atlas PRD, mining the why from commits, and the rule against inferring a motive that was never written down.
  • The Compass PRD, the case for and against building a team that looks forward, and why it must never predict.
  • The essay-series plan, the ten cuts, each thesis, and the real subject it reads.

Or browse them from the specs index.

The honest part

The tenth essay points the instrument back at itself. Take the survival metric, which holds the whole series up. In 37 of 71 areas it reads past 100%. Makes no sense until you see why: relocations and generated rebuilds leave more lines standing than anybody ever counted as inserted. Earlier that night the tool ran against a shallow clone and nearly quoted a stray merge line as CLAUDE.md's first authored words. Give it a truncated past and it hands you a confident, wrong origin. The newer teams get the same treatment. A decision logged with no stated reason? The Atlas writes reason not recorded and refuses to invent a motive. The Compass looks forward, alone among the parts, and it still can't predict anything. It lays out the evidence for an arc, then stops cold. When nothing clears its bar it shows you nothing, no made-up direction. On this repository, one arc worth naming. That's it. And when the instrument breaks, it breaks loud, in public. A tool that would sooner say nothing than say something false is the only one I'd trust. The tool is one more stratum, measured here in turn, and every bit as partial as the things it measured.

Experience it yourselfExplore the Strata series →
ShareXLinkedInHacker NewsEmail

Get the next one

An occasional note when something genuinely new ships here — essays, free tools, projects. No schedule, no filler, easy out.

Need something like this built?

I design and ship AI tools, full-stack apps, and data pipelines — end to end, to production. Tell me the problem in a sentence; I'll give you an honest read on fit within a day.

Work with me →