This commit is contained in:
Danilo Reyes
2026-02-07 06:01:29 -06:00
parent 0f5e76ddc9
commit 070a3633d8
13 changed files with 1302 additions and 36 deletions

View File

@@ -0,0 +1,35 @@
# Phase 0 Research: Archive Curator
## Decision: Backend Web API Framework
- **Decision**: Axum
- **Rationale**: Rust-native, async-first, strong ecosystem support, and clean layering
between validation and business logic.
- **Alternatives considered**: Actix Web (fast, but heavier abstraction), Warp
(composable but less active).
## Decision: Frontend UI Framework
- **Decision**: SvelteKit
- **Rationale**: Small bundle size, fast UI updates, and well-suited for touch-first,
swipe-capable interfaces.
- **Alternatives considered**: React (larger bundle, more boilerplate), Vue (good fit
but less direct for swipe-first interactions without extra libraries).
## Decision: State Storage
- **Decision**: SQLite for directory state + append-only audit log file
- **Rationale**: Durable local storage with simple deployment, supports atomic updates
and queryable state history; audit log remains append-only and retained indefinitely.
- **Alternatives considered**: Flat JSON state (simpler but weaker concurrency and
integrity guarantees), embedded key-value store (less standard tooling).
## Decision: API Contract Style
- **Decision**: REST with explicit preview/confirm endpoints
- **Rationale**: Clear separation between preview and confirmation phases enforces
safety requirements; easy to document and test.
- **Alternatives considered**: GraphQL (flexible but less explicit for multi-step
destructive actions).
## Decision: Testing Strategy
- **Decision**: Rust unit/integration tests + HTTP API tests + NixOS VM tests
- **Rationale**: Aligns with binding testing plan and ensures safety rules are enforced
at multiple layers, including system service behavior.
- **Alternatives considered**: Unit tests only (insufficient for safety guarantees).