Your tools should assume nothing, so your agents have to declare everything.
No implicit defaults, ignorable warnings, or silent fallbacks: only explicit declarations, hard errors, and loud refusals.
The rules under it
- A mistake belongs at the declaration, not at the keystroke that runs it.
- When two answers are both defensible, the tool asks; it does not pick one for you.
- A value that spends money, chooses a region or opens a door has no default.
- Where more than one thing could be meant, nothing is chosen.
- Configured and broken is an error, never a quiet switch to something else.
- Before the first stable release the old way is deleted and the migration is written down, never kept alive behind a shim.
- A number that can go stale is printed by whatever owns it.
- Documentation lifted out of the code cannot drift away from the code.
- A document one reader accepts, another must not reject.
- A test that can reach your files, your keys or your network is not isolated.
- Deleting is allowed; deleting without saying why is not.
- A tag is what the build proved, not what the author intended.
- What a tool refuses to do is written down beside what it does.