Architecture Decision Records
Key design decisions behind ArchLang, with their context and trade-offs.
- 1. Hand-written recursive-descent parser, not Lezer/tree-sitter
- 2. Optional, lazy-loaded dependencies for heavy geometry and raster
- 3. Expand-time scripting — no runtime, no I/O, no clock
- 4. Relational placement is deterministic arithmetic, not an optimizer
- 5. Design intelligence is facts + advisory lint, not an invisible architect
- 6. A solver is an explicit source transform, never invisible render behavior
- 7. Editor metadata (
data-span) enters SVG output only opt-in - 8. Circulation is reported as facts on a clearance-eroded nav grid, never generated
- 9. AI-first: one bundled context artifact, opt-in error rendering, distribution over protocol
- 10. "The Compile Boundary" — one two-world design system for both public sites
- 11. Machine-applicable fixes: the rustc model, kept distinct from the geometric repairer
- 12. An MCP shim as a discoverability channel — amending "distribution over protocol"
- 13. A versioned, fully synthetic, self-verifying repair-trajectory dataset
- 14. One light world — no dark mode, no dark surfaces, on either public site
- 15. The CLI is an agent interface: one manifest, filters that never gate, loud misuse
- Component instances are resolved in their own frame, then transformed
- 17. Fixture semantics: three distinct flags, one shared predicate, one derived table
- 18. One zero-dependency joinery pass for every wall
- 19. Both public sites on Cloudflare Workers static assets, deployed from CI
- 20. An explicit, law-tested algebra layer under
place, paths and printing - 21. Plan-first: the axonometric view is deprecated
- 22. Exact decisions, measured determinism and bounded input
- 23. The plan-symbol drawing language
- 24. Finishing a sheet is an explicit source transform
- 25. Furnishing a room is an explicit source transform
- 26. A third, scripted Worker hosts the MCP server
- 27. Net internal area beside the centreline area