2.7 KiB
Read docs/DOC_TRUST_MAP.md before trusting anything else in docs/. It
says which document owns which answer. This file is deliberately short and
points at it rather than repeating it — a second copy of the map is the failure
that map exists to prevent.
What this file is for
Only what an agent needs before it can read anything else, and that is not
already owned by a document. If you are about to add current state, a task list,
or a summary of docs/, it goes in the tracker or in docs/ respectively.
Exit codes are an API
| Code | Means |
|---|---|
0 |
did its work |
1 |
refused for a normal, designed reason |
2 |
did not run — a precondition failed. Never a pass |
3 |
ran and the work failed |
99 |
a lock was held; another copy is running |
Three states, never two: ok / skipped / failed. An exit code alone cannot
tell "nothing to do" from "I did nothing".
Before you finish
docs/WORK_CYCLE.md owns this and outranks anything here. In short:
- Run this project's own guards, not just its tests: <name them, e.g.
python3 tests/run_all.py,bash scripts/doc-claims.sh> - Never
git add -A. Stage by explicit path — <bash scripts/commit-mine.shif adopted>. A shared checkout means someone else's work is one carelessaddaway from your commit. - Update the documents this change triggered, in the same commit as the
code. Check each document's
Review trigger:line. - Close issues with the evidence that proves them: a path, a symbol, a test name, or the command that shows it. "Done" is not a close.
Before you plan
docs/WORK_CYCLE.md lists six sections every plan must name: unified code,
error handling, logging, blind spots, rolled-in landmine fixes, and
hardcode-as-little-as-possible. Read them there.
Two standing instructions
Flag anything that looks wrong, even if it is not what you were asked about. Most real defects are found while looking at something else. Say so, then fix it or ask — a known bug that ships is a decision, and it is never yours to make silently.
Never print a credential. Not from a file, not from a command's output, not from a config subtree "with the secrets filtered out" — that filter has failed before, because it matched key names and the secret sat inside an object whose name was innocent. Name the variable or the path; never the value. To compare two secrets, compare hashes.
Conventions
- <Language/runtime and version>