+3. **Implement:** Update the permanent corpus. Before and after implementation, assess documentation impact: keep the required architecture and design overviews current when their structure or cross-cutting behaviour changes, update the relevant capability design or general design document when it answers a reader's question, and link rather than duplicate. State in the change or pull-request handoff which durable documentation changed, or why none was needed; do not create a permanent change-history document. Architecture owns actors, boundaries, and durable technology choices; `docs/design/README.md` owns cross-cutting flows and patterns; a capability's `design.md` owns local detail. Draft a missing overview from repository evidence, and ask the human only when a material boundary or intent remains unclear. Use Mermaid when a diagram materially clarifies a relationship, boundary, or flow; retain SVG only when Mermaid is inadequate. A relevant new or materially revised ADR or IDR links to the affected overview. Capabilities own README, criteria, and design files. Write criteria as Gherkin tagged with their canonical `<PREFIX>-<digits>[lowercase-suffix]` identity; every new or materially revised criterion declares `Test-type: Unit|Integration|E2E|Performance|Human` on the first line of its scenario body and gets focused positive and negative evidence in that class (or records `(single-direction)` when only one direction exists). `Human` needs no code evidence — the acceptance brief's criteria line is its proof; use it for a criterion deliberately verified by human judgment, never as a placeholder for a test not written. A criterion genuinely not yet proven carries `@draft` on its tag line instead, exempting only that criterion from the active-file test requirement — the capability itself does not need to stay `draft` because one criterion is unproven. Every test declares exactly one purpose: the criterion ID, `Unit`, `Sanity`, or `Arch`, using framework tags where available and the normalized test-name prefix in Go; AC evidence also carries its declared test type and direction. On the JVM, all three evidence parts attach to the same Java or Kotlin executable through literal JUnit method tags or the stable `test<PREFIX><digits>[lowercase-suffix]_<Type><Direction>_<description>` name; class tags, comments, and unrelated methods cannot supply missing parts. When a criterion's meaning changes, retire it with `@retired`, keep the tombstone, mint a new ID, and remove or retag its tests.
0 commit comments