Architecture Decision Records для ARNO проекта.
Назначение
ADR — формальный артефакт major architectural decisions. Каждый ADR fixates:
- Context — почему решение нужно сейчас
- Decision — что выбрали
- Consequences — последствия (плюсы, минусы, trade-offs)
- Alternatives — что отвергли и почему
Per Rules.md §governance: major architecture changes требуют ADR перед изменением master spec.
Когда создавать ADR
Triggers:
- Vendor migration (Liveblocks → self-hosted Yjs, Cloudflare → AWS, etc.)
- Replace core dependency (Auth.js → Lucia, react-flow → alternative)
- Switch backend/frontend runtime
- Microservice extraction из monolith
- Major schema redesign
- Crypto algorithm changes (§0.5)
- New architectural principle добавить в §0.3
NOT triggers (minor):
- Refactoring within module
- Library version bumps
- Bug fixes
- New endpoints в existing API contract
Naming convention
NNNN-short-title-lowercase.md где NNNN — 4-digit sequential (0001-, 0002-, ...).
Template
См. README.md — full ADR template + process.
Active ADRs
{/* AUTOGEN:adr-index START */}
Auto-generated by
scripts/gen-adr-index.tson 2026-05-24. Do not edit by hand — regenerate viapnpm docs:adr-index.
Core ARNO
| # | Title | Status | Date | Phase / Feature |
|---|---|---|---|---|
| 0001 | Static export now, edge adapter when Auth/API land | Accepted | 2026-05-20 | 0 → 8 |
| 0002 | Module-level stores + useSyncExternalStore | Accepted | 2026-05-20 | 2 → 7 |
| 0003 | Design-system source: local snapshot → GitHub API | Accepted (replaces interim local snapshot) | 2026-05-20 | 5 |
| 0004 | Render adapter postMessage protocol | Accepted (v1) | 2026-05-20 | 6 → 7 |
| 0005 | Dedicated Worker для API, не Pages Functions | Accepted | 2026-05-21 | 8 |
| 0006 | Backend-driven GitHub OAuth, не Auth.js на Pages | Accepted | 2026-05-21 | 9 |
Feature: URL-import
| # | Title | Status | Date | Phase / Feature |
|---|---|---|---|---|
| 0007 | URL-import: code-first, не vision-first | Accepted | 2026-05-22 | URL-import (unparks §V "Small-company path / ARNO Studio") |
| 0008 | Hybrid stack: schema-driven priority chains + reactive vision | Accepted | 2026-05-22 | URL-import |
| 0009 | Acceptance gate: 3 эмпирических bool, не weighted scores | Accepted | 2026-05-22 | URL-import |
| 0010 | Completeness: матрица combinations, не point check | Accepted | 2026-05-22 | URL-import |
| 0011 | Vision activation: reactive, не predictive | Accepted | 2026-05-22 | URL-import |
| 0012 | Uniqueness: user decides, не algorithm | Accepted | 2026-05-22 | URL-import |
| 0013 | "Чем дольше живём — тем меньше платим" как hard requirement | Accepted | 2026-05-22 | URL-import |
| 0014 | Legal-clean distillation: Qwen teacher, не Anthropic/OpenAI | Accepted | 2026-05-22 | URL-import (data flywheel — ADR 0013) |
| 0015 | Explicit non-use of Claude API в URL-import stack | Accepted | 2026-05-22 | URL-import |
| 0016 | V1 staging area вместо direct git commit | Accepted | 2026-05-22 | URL-import |
| 0017 | Shadow data: ToS-based disclosure, не registration checkbox | Accepted | 2026-05-22 | URL-import (data flywheel — ADR 0013) |
| 0018 | Atom embeddings: E5-small text, не DINOv2 visual | Accepted | 2026-05-22 | URL-import (atoms — cache L3) |
{/* AUTOGEN:adr-index END */}
Lifecycle
- Proposed → drafted, не reviewed
- Accepted → reviewed, applied к master spec
- Deprecated → no longer relevant но preserved для history
- Superseded by ADR-XXXX → replaced by newer decision
ADRs никогда не удаляются — history immutable. Status changes reflect evolution.
Связь с master spec
После acceptance ADR:
- Master spec
_index.mdupdated (version bump, changelog entry с ADR reference) - Affected sections rewritten
- Parking list updated если applicable
- ADR remains canonical "почему" для решения; master spec — canonical "что" сейчас