Skip to content

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

  1. A mistake belongs at the declaration, not at the keystroke that runs it.
  2. When two answers are both defensible, the tool asks; it does not pick one for you.
  3. A value that spends money, chooses a region or opens a door has no default.
  4. Where more than one thing could be meant, nothing is chosen.
  5. Configured and broken is an error, never a quiet switch to something else.
  6. Before the first stable release the old way is deleted and the migration is written down, never kept alive behind a shim.
  7. A number that can go stale is printed by whatever owns it.
  8. Documentation lifted out of the code cannot drift away from the code.
  9. A document one reader accepts, another must not reject.
  10. A test that can reach your files, your keys or your network is not isolated.
  11. Deleting is allowed; deleting without saying why is not.
  12. A tag is what the build proved, not what the author intended.
  13. What a tool refuses to do is written down beside what it does.