Repository change rules
Parallel change
CHANGE-1: Introduce the new path beside the old
Every change follows expand, migrate, contract. The three steps are in principle 4.
Enforcement: Review only.
CHANGE-3: An internal API MUST change compatibly
- Add the new field, endpoint or message.
- Migrate callers.
- Remove the old one later.
Enforcement: Review only.
Where code lands
CHANGE-5: Closed directories MUST only shrink
These are closed: /app, /supabase, /infra/services, /people.
- DO NOT add new functionality to a closed directory.
- Each only loses content as it is factored out, replaced or deleted.
| Directory | Where new work goes |
|---|---|
/app |
the domain service that owns the logic: Iris for inference, croesus for billing |
/supabase |
Cloud SQL, or wherever the data belongs |
/infra/services |
the repository root, like every other service |
/people |
stays, but drives Workspace from IaC rather than growing |
A new project goes at the repository root and MUST be a Mise config root. See BUILD-6.
Enforcement: Review only. Rationale per directory in current state of the architecture.
Moved rules
These numbers are retired here. Each names the rule that carries it now.
CHANGE-2: Moved to DB-2
See DB-2.
CHANGE-4: Moved to DB-3
See DB-3.
Merging
MERGE-1: A repository-wide lint and test sweep MUST pass before merge
- You MUST run
mise run '//...:lint'andmise run '//...:test-fast'. - This covers the whole repository, every project.
- DO NOT infer an affected set.
Enforcement: check-lint-and-test.yml. Its Lint and test job is a required check on main, set by
required_checks in the repositories inventory. The branch MUST be up to date
with main, so the sweep ran against what the pull request merges into.
MERGE-2: Readiness is not a judgement call
- DO NOT mark a pull request ready with failing checks or unaddressed significant findings.
- DO NOT approve while checks are still running.
- DO NOT merge your own pull request without an approving review from someone else.
The rest of VCS etiquette is strongly recommended, not a gate.
Enforcement: branch protection for the approving review. Review only for the rest.