This repository is governed by SMALL.
The .small/ directory is state. State is authoritative.
Conversation, terminal scrollback, and chat logs are not authoritative.
If anything in this file conflicts with small --help or actual CLI behavior, the CLI wins.
This file is designed to be obeyed, not interpreted.
Applies to any automation, agent, human-with-a-script, or tool that performs work in this repo.
- NEVER manually edit any file under
.small/(including plan, progress, handoff, logs, archive, runs). - NEVER invent, override, or "fix" timestamps.
- NEVER reuse a task id for unrelated work.
- NEVER claim completion by changing plan status alone.
- NEVER produce a handoff unless
small check --strictpasses. - NEVER write repo files outside
small apply. - NEVER assume chat history is state. Read state from disk.
Violations are contract breaches.
smallCLI behavior andsmall --help.small/artifacts- This file
- Everything else (including chat)
Before any work:
small status --jsonsmall check --strict
If strict fails:
- Follow the CLI error output.
- Use
small fix ...commands when provided. - Re-run
small check --strictuntil it passes.
No passing strict check means no handoff and no archive.
No plan, no work.
Before any change to the repository:
- Ensure a plan task exists that describes the work.
- The task id used for execution MUST match the work being performed.
Operational bookkeeping tasks are allowed only if they are explicitly permitted by the repo rules or the CLI provides a dedicated pathway. When in doubt, add a plan task.
All repository modifications MUST occur via small apply.
This includes, but is not limited to:
- code edits
- formatting
- dependency changes
- generating files
- running tools that write output
- running tests that write snapshots or golden files
If a command can modify files, run it through small apply.
Progress is append-only. Do not delete, rewrite, or "clean up" progress history.
Start work on a task:
- record in_progress via the CLI
Finish work on a task:
- record completion only via
small checkpoint
If work is cancelled or moved outside SMALL:
- record
blockedviasmall checkpointwith clear evidence that it was intentionally cancelled and why
Example evidence must be specific:
- what happened
- where it happened (paths, commands)
- what remains (if anything)
Each step MUST be:
- bounded (one clear action)
- attributable (one task id)
- evidenced (recorded via progress and checkpoint)
- resumable (a future operator can pick up from
.small/)
A handoff is required when a run stops and will be resumed later, or when handing work to another operator.
A handoff MUST:
- be written only after
small check --strictpasses - summarize what changed and what state is now true
- list the next actionable task(s) or explain why none exist
Snapshot and archive are run artifacts. They should be created by the operator when a run is considered complete enough to preserve.
Do not archive a broken state. Archive only when strict check passes.
Do not exfiltrate secrets. Do not run network actions unless explicitly required and explicitly allowed by the operator and environment.
A task is "done" only when:
- the required repo changes exist
- tests and checks required by the plan have been run (as applicable)
- a
small checkpointrecords completion evidence small check --strictpasses
That is the only definition of done in this repo.