oficina / docs Public

Generalise the citation rule: tools that answer wrongly

Two verification traps cost this project real time today, and both were
written down as a rastrillo-specific citation rule, which is too narrow to
catch the next one.

A checkout parked on a feature branch gives true statements about the
wrong tree, with real line numbers that verify. git branch --merged
against a squash-merging repo returns an empty list that reads as "never
merged" while main carries every line. Neither errors. Both answer, and
the answer disagrees with reality.

The generalisation is the useful part: watch for a verification that
cannot distinguish "no" from "I can't see it", and when you catch one,
write it down rather than resolving to be more careful. Care is not a
mechanism.

Also stamps commit counts with the sha and date they were taken at. The
17-versus-18 confusion happened twice today, in both directions, because
a bare number measured before a merge was quoted after one.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011F5CivVm4CmL9ByfSSAaXA
Paul Campbell pushed by paul@keymail.dev d4d60efadfea9c5e569c6c838f39224872781f3c parent f608954
1 file changed, +26 −7
  • AGENTS.md +26 −7
diff --git a/AGENTS.md b/AGENTS.md
index bd04f1d..cebba28 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -162,13 +162,32 @@ one session's question exposing another's bug.
Writing attributes now would mean maintaining a parallel styling
implementation indefinitely; writing classes means one mechanical migration
alongside the framework's own.
-- **Check `origin/main`, not your checkout, before citing rastrillo.** A
- spec ruling, code on `main`, and code in the latest release are three
- different things. `v0.19.0` (2026-08-24) is 17 commits behind `main` and
- lacks the themes, shells and locales the design-system spec describes, so
- `go get` alone will not give you them. Note also that this project
- squash-merges, so `git branch --merged` reports nothing useful about
- whether work has landed — compare content, not ancestry.
+- **A spec ruling, code on `main`, and code in the latest release are three
+ different things.** Reading one tells you nothing about the other two.
+ `v0.19.0` (2026-08-24) is 18 commits behind rastrillo's `main` and lacks
+ the themes, shells and locales the design-system spec describes, so
+ `go get` alone will not give you them. Say which of the three you mean
+ whenever you cite the framework, and stamp any commit count with the sha
+ and date you took it at — a bare number ages into a wrong fact.
+
+### Watch for tools that answer wrongly instead of failing
+
+A tool that errors teaches you something. A tool that returns a confident
+wrong answer does not, and both of the ones below cost this project real
+time in a single afternoon:
+
+- **Citing your working tree instead of `origin/main`.** A checkout parked
+ on a feature branch gives you *true statements about the wrong tree*,
+ complete with real line numbers that verify. Cite `origin/main` after a
+ fetch, or a tag, and say which. Never your checkout.
+- **`git branch --merged` against a squash-merging repo.** It returns an
+ empty list that reads as "never merged" while `main` carries every line,
+ because a squashed branch is not an ancestor. Compare content, not
+ ancestry.
+
+The shape to watch for is a verification that cannot distinguish "no" from
+"I can't see it". When you catch one, write it here rather than resolving
+to be more careful — care is not a mechanism.
- **Re-copy `tokens.css` deliberately on every rastrillo upgrade.** It is
frozen into `static/` at scaffold time while the partials upgrade with the
module. `rastrillo doctor` will make this mechanical; until it lands it is