Skip to content

Architecture Decision Records

This log tracks the significant architecture and design decisions made for jsvision. Each decision is documented with context, options considered, and rationale. Most were originally captured in the per-RD ambiguity registers under plans/*/00-ambiguity-register.md; the ADRs here distil the cross-cutting ones.

Decision Log

#DateDecisionStatus
ADR-0012026-06-28ESM-only, zero runtime dependencies✅ Accepted
ADR-0022026-06-28Capability detection as runtime auto-configuration✅ Accepted
ADR-0032026-06-28Pure core behind injectable seams✅ Accepted
ADR-0042026-06-28No node-pty; restore proven via the RuntimeAdapter✅ Accepted
ADR-0052026-06-28A single canonical sanitize injection boundary✅ Accepted
ADR-0062026-06-28Informational perf bench + skippable ceiling✅ Accepted
ADR-0072026-06-28Monorepo (yarn + Turborepo), vitest, lockstep versions✅ Accepted
ADR-0082026-06-28Layout engine — build cell-native vs Yoga/Taffy🔬 Proposed
ADR-0092026-07-02First-class Bun runtime support (runtime + compile target only)🔬 Proposed

How to Read ADRs

Each ADR follows a standard format:

  • Context: What situation or problem triggered this decision?
  • Decision: What was decided?
  • Rationale: Why was this chosen over alternatives?
  • Consequences: What are the trade-offs and implications?

When to Create an ADR

Create a new ADR when choosing a technology/pattern, deciding between valid approaches, or making a decision that is hard to reverse or that future developers will question.