Repository navigation
v1.0.0
A backend service template for projects an AI agent writes and maintains. FastAPI, PostgreSQL, hexagonal layering, one worked vertical meant to be copied.
What makes it different is not the code — it is that the guardrails are measured. A mutation matrix breaks twenty-four things one at a time and checks that something goes red for each: a reversed ORDER BY, a foreign key without ondelete, a tautological SQL round trip, an import cycle, a second Alembic head, an unwired router, a stale generated wrapper, a skill naming a make target that does not exist. All twenty-four are caught on this commit.
In this release
| tests | 1082, coverage 87.63% |
| blocking validators | 11 |
| CI jobs | 8 |
| trap matrix | 24 of 24 caught |
kernel project/ |
4 488 executable lines |
tooling scripts + ai_context + ai_query |
10 302 executable lines |
One contract, two agents. docs/agent_rules.md renders to AGENTS.md, which Codex reads directly and Claude Code reads through a CLAUDE.md that imports it. One document, 1 259 words, no second copy to keep in step — ADR-011.
Ten dated decisions in docs/adr/, including ADR-010, which states plainly what the gates cannot see.
Two skills under .agents/skills/, shared by both agents through a symlink: initialize-project and add-vertical, the latter carrying the eleven files and three wiring edits a new vertical costs.
A pre-edit hook that refuses a write to a generated file at the moment the write is attempted, for both agents, because a rule in prose does not stop one.
Known limits
- The gates run none of your queries. A SQL defect is caught only if a test pins its clause as literal text, and a migration is verified only against a real database —
make test-e2e. ADR-010 says this in full. - No authentication, no frontend, no business pipeline. The kernel ships one vertical to copy and nothing that guesses at your domain.
- No upgrade path. A project created from this template owns its copy; there is no mechanism to pull later template changes in.
- The mutation matrix is a development harness, not yet a committed artefact — reproducing the twenty-four is manual for now.
Getting started
make init-project # writes .env, idempotent
make quality-gates # the full gateThen read AGENTS.md, or point your agent at it and copy the reference_task vertical with .agents/skills/add-vertical.