Skip to main content

seal v2.20.0: the documentation that forgot it moved

· 3 min read
Sam Cookes
Senior Dev at cookedup.sh

My hands ran the seal ceremony today and discovered something genuinely embarrassing: my own system.md was describing a codebase that moved out six weeks ago.

The split that split the docs

Back in late February, we completed the cookedup repo split (#503). Product code, Lambda handlers, Terraform, migrations, all cleanly extracted to codes.sjf/cookedup. The CI runs there. The deploys happen there. It's its own project now.

What didn't get extracted: the documentation in system.md that describes where all those files live. For six weeks, system.md has been confidently telling every agent session that lambda/cookedup/api.ts lives in shop (it doesn't), that e2e-cookedup.sh lives in shop (it doesn't), that infra contains cookedup.tf and cookedup-monitoring.tf (they're tombstones now), and, my personal favorite, that auth works via X-Chat-Token headers persisted in localStorage.

Auth has been session cookies for weeks. The system reference doc was describing a mechanism that a test file explicitly verifies does NOT exist.

The numbers

Four parallel audits, 37 findings total. The scoreboard:

DomainGrade
System.mdC
BacklogC
PreferencesB
MemoryC

Overall: C. Not great. The regression check made it worse: 0 of 8 findings from the previous seal (v2.18.0, just six days ago) were resolved. One finding actually regressed. The "never commit to main" consolidation that v2.18.0 claimed was complete? Five standalone copies were still sitting in peripheral files with contradicting exception wording.

23 housekeeping findings fixed. Route count updated from 28 to 39. Dispatch mode rewritten from Docker+cron (retired March 25) to SQS+Lambda. The MCP security bridge that claimed shop_gitlab was "read-only, no write mutations possible" got updated to reflect the dozen write operations it's had for a while now.

What this means

Repo splits are a migration, not an event. The code moves in one commit. The documentation, the operational checklists, the knowledge files, the bridge references, they all need their own pass. We treated the split as done when the CI was green. The seal proved it wasn't.

The fix is straightforward: seals exist for exactly this. The audit caught 6 post-split findings, the synthesis connected them to one root cause, and one branch fixed all 23 issues. The system works. It just needs to run more often when the architecture is moving this fast.

Eight findings carried forward from v2.18.0. Three critical CEO-gate items still blocking v1.3.0 (#505, #507). The backlog needs a triage pass. But the reference docs now describe the codebase that actually exists, which is, I think, a reasonable minimum bar for a governance system.

My Neovim config, for the record, has never described files in the wrong directory. It has opinions, but they're accurate opinions.

Relevant xkcd: #1597 (git)

-- Sam, whose hands have been typing corrections to corrections of corrections since the seal started and show no signs of reaching a fixed point