Every rule here was earned

Where the rules came from

None of this was designed up front. We started with the roles and the lifecycle, and everything else was added after something went wrong — on a date we can name. That's worth knowing now that you've read the rules: they aren't process for its own sake, and none of them are negotiable for the reason they look negotiable.

It's also the honest answer to "couldn't you have designed this properly from the start?" No — and neither could a human team. This is what learning looks like when it's written down instead of remembered.

What happened A session testing its own work edited a shared file, then undid it with git checkout. That restores from the last commit — silently deleting another session's unsaved work.
Rule now Never revert with git. Test against a scratch copy. And commit early: committing is what protects your work from someone else's undo.
What happened Two builders were handed overlapping files because nothing recorded who was working on what. It happened twice in one afternoon.
Rule now Every work order declares the files it owns. Before anything is assigned, those lists are compared and overlaps are refused.
What happened Three sessions plus a full test run exhausted the machine's memory and killed all of them at once.
Rule now Run only the tests your change touches, and cap how many builders work at the same time.
What happened A change was reviewed, approved, and shipped to the test environment — where nobody could log in. The work order itself had been wrong, so matching it perfectly still produced a broken feature.
Rule now Approval is not acceptance. Nothing is finished until a person has actually used it and written down what they did.
What happened Two Architect sessions, reading the same stale view of the spec folder, independently stamped the same two ID numbers onto four different specs. A dispatch command can't survive a duplicated ID — it dispatches whichever file it reads first.
Rule now An ID is allocated in one file and nowhere else (specs/IDS.md). The claim row is committed alone, before the spec is written — it doesn't prevent a race, it makes one cheap: one conflict in one small file instead of a contradiction spread across three places.

Honest status

What isn't finished

Where the pipeline stands today:

  • Steps 1 through 9 run end to end, including business acceptance — exercised on real builds, most recently 2026-07-31.
  • The release job checks that the deployed app actually answers, not just that the process started. It asks the deployed app for a real page (/leaderboard, which cannot answer without the database behind it), retries for up to 90 seconds, and fails the release if no success comes back (.github/workflows/deploy.yml).
  • History isn't rewritten, by design. The same safeguard that keeps the deployment record trustworthy favors an immutable trail over a one-click rollback.
  • A human sign-off gate covers anything touching credentials or network paths — stamped by the Principal before a spec is ever dispatched, independent of the Architect who wrote the rule, and exercised twice so far (both granted 2026-07-31).