Files
code_of_conquest_dnd/docs
Phillip Tarrant 7f1d9fa39a chore(api): canon log follow-ups — hardening, unified 422, contract doc
- canon_log.py: stringify jsonschema error-path segments before sorting so a
  future schema mixing array indices and object keys can't TypeError (#1)
- main.py: RequestValidationError handler reshapes pydantic body failures into
  the same {"detail": {"canon_log_errors": [...]}} envelope as schema failures,
  so the client parses ONE 422 shape (#2a) + tests
- pytest.ini: filter the starlette/httpx TestClient deprecation → pristine output (#4)
- docs/canon-log.md: living contract for the client (Plan B) — schemas, the §7
  boundary, the unified error envelope, per-role injection (#3)

Full suite 26 passing, 0 warnings.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 13:03:59 -05:00
..
2026-07-09 11:17:54 -05:00
2026-07-09 11:17:54 -05:00
2026-07-09 11:17:54 -05:00

/docs — cross-cutting docs

Anything affecting both client and api, plus planning and roadmap. Side-specific docs live in /api/docs and /client/docs.

Put here:

  • roadmap.md — phases, POC scope, what's next
  • adr/ — Architecture Decision Records
  • Shared contracts — canon log schema, tag syntax, retry policy (§11, §12)
  • Anything spanning the HTTP boundary

The charter itself — CLAUDE.md — stays at the repo root. It is the source of truth; these docs elaborate, they do not override it.