Single source of truth for CONSTITUTION.md — the supreme design law of System F Software. Consumer repos vendor via git subtree + symlink. This repo has no production code, no test suite, and no build step — it is a markdown document plus its governance tooling (commit validation, agent harness).
Before making changes:
- Read this file completely.
- Read @CONSTITUTION.md — every directive in there binds this repo too.
- Confirm the active task with the user or the agent's task list.
- Review recent commits with
git log --oneline -5. - Ensure current branch is not
main— feature branches only. If on main, create one.
- One task at a time. Finish before starting the next.
- Conventional commits required. The commit-msg hook enforces
type(scope): description. Rungit committhrough the hook — do not bypass with--no-verify. - Verification required. Run the verification commands before claiming done.
- Stay in scope. Don't modify files unrelated to the task. Scope reduction requires explicit user approval.
- Leave clean state. The next session must run verification immediately.
| Surface | Files | Rule |
|---|---|---|
| Locked | AGENTS.md, .husky/_/, verification scripts |
Read and propose changes; do not edit to make verification pass. |
| Editable | package.json, pnpm-lock.yaml, commitlint.config.cjs, .gitignore, .husky/ (hooks only, not _/) |
Edit freely within the active task. |
| Human-controlled | CONSTITUTION.md, README.md, merging to main, pushing, destructive ops |
Propose changes; ask the user before acting. |
A task is done only when ALL of the following are true:
- Target changes are applied.
- Verification commands ran and passed.
- Commit uses conventional format (
type(scope): description). - Evidence recorded via the runtime memory system and task list.
- No dirty files left in the working tree.
pnpm exec commitlint --from HEAD~1- Run the full command, not parts in isolation.
- Evidence must be from the current run, not a prior session.
- Any failure blocks done. Do not bypass with
--no-verify. - Do not suppress, skip, or disable checks to make verification pass.
- Read before edit: before editing a file, read it in the current session. Do not edit from memory.
- Verify before claim: before saying "done," the verification command must have run and its output recorded.
- Search before write: before writing code that calls a library API, read the actual API surface. Do not generate from training memory.
When multiple agents work in the same repo:
- Each agent owns a disjoint file/module set.
- An agent must claim a file before editing it.
- Agents may not recursively delegate to each other.
- The one-shot verification must pass before any agent claims done.
Before ending a session:
- Record current state, blockers, and next steps via the runtime memory system and task list.
- Commit with a conventional-format message once work is in a safe state.
- Leave the repo clean —
git statusshould show nothing unexpected.
- Constitution conflict: Consult @CONSTITUTION.md. If letter and purpose diverge, purpose governs.
- Unclear requirements: Ask the user.
- Verification failure: Record via memory, flag for review, do not bypass.
- Scope ambiguity: Re-read this file and the Definition of Done.