Files
Phillip Tarrant b4b72e472e docs: traps.md — the bugs that passed a green suite
Six bugs this project shipped into a branch, what let each through, and the
guard that now catches it. They share a shape: the test passed, and the test
was wrong.

- a regression test that constructed its own correct object, so reverting the
  bug left the suite green
- GDScript default params turning an arity change into a silent miscompile,
  invisible to a grep for the renamed field (grep cannot see positional args)
- a determinism test comparing two runs that would change together
- a closed move vocabulary that was not bounded, because the model could repeat
  a tag and choose an amount in unary
- a roster written down in four places with only one pair guarded — including a
  shipped authoring skill that would have emitted origins allowing zero callings
- generated content that has a client consumer

Linked from CLAUDE.md §18 and docs/README.md. Also records M4-a on the roadmap
with its live end-to-end proof.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QYa9u7Kdxv5gX4AnwWexy8
2026-07-12 21:07:39 -05:00

15 lines
827 B
Markdown

# /docs — cross-cutting docs
Anything affecting **both** client and api, plus planning and roadmap. Side-specific docs live in [`/api/docs`](../api/docs) and [`/client/docs`](../client/docs).
Put here:
- [`roadmap.md`](roadmap.md) — phases, POC scope, what's next
- [`traps.md`](traps.md) — **bugs we have already shipped, and the guards that catch them.** Read before writing tests: every one of them passed a green suite.
- [`adr/`](adr/) — Architecture Decision Records
- [`canon-log.md`](canon-log.md) — the cross-boundary contract (§11)
- Shared contracts — canon log schema, tag syntax, retry policy (§11, §12)
- Anything spanning the HTTP boundary
The charter itself — [`CLAUDE.md`](../CLAUDE.md) — stays at the repo root. It is the source of truth; these docs elaborate, they do not override it.