Architecture Decision Records capture choices that are expensive to reverse or whose context and consequences future maintainers must understand.
Create new records from .agents/templates/adr.md. Use the next available
four-digit prefix and keep accepted records immutable; supersede a decision with
a new ADR instead of rewriting its history.
| Record | Decision |
|---|---|
| 0001 | LLM-ready project structure for documentation, workflows, and templates |
| 0002 | Compile-first render model with optional request-time SSR |
| 0003 | Generated JavaScript by default with explicit component WASM islands |
| 0004 | Production ABI for component-declared WASM islands |
| 0005 | Generated Go adapter emission boundary |
| 0006 | GOWDK Compiler and GOWDK Runtime ownership boundary |
| 0007 | Static-first SPA navigation and generated JavaScript guardrails |
| 0008 | Bounded client {} language and page-scoped store boundaries |
| 0009 | Optional inline Go authoring extracted to normal package Go |
| 0010 | Shared tokenizer and recursive-descent parser with recovery |
| 0011 | Auth addon cryptography and dependency stance |
| 0012 | Explicit g:subscribe on query-owned elements |
| 0013 | Dependency-free tracing primitives before generated instrumentation |
| 0014 | Split between addon config and request-time runtime helpers |
| 0015 | Generated binary lifecycle service contracts |
| 0016 | Pure Go helpers from bounded client code through WASM |
| 0017 | Callback props and scoped cells for parent-child communication |
- Link to this index instead of hard-coding the number of ADRs elsewhere.
- Add implementation status to the owning requirement or architecture document, not to the ADR title.
- When a decision is superseded, add reciprocal links between the old and new records.