Architecture Decision Records#
Significant architectural decisions for HashHive, in the lightweight
Michael Nygard ADR format.
Each ADR is immutable once accepted — supersede rather than rewrite.
| ADR | Title | Status | Date |
|---|---|---|---|
| 0001 | Agent enrollment via two-token exchange | accepted | 2026-06-18 |
| 0002 | Docker/systemd process supervision over PM2 | proposed | 2026-06-18 |
| 0003 | Bind enrolled agents to their enrollment token | accepted | 2026-06-18 |
| 0004 | The agent API stays revisable until 1.0 | accepted | 2026-06-18 |
| 0005 | Version the public API after 1.0 | accepted | 2026-06-18 |
| 0006 | SeaweedFS over MinIO for object storage | accepted | 2026-06-18 |
| 0007 | Three distinct API surfaces | accepted | 2026-06-18 |
| 0008 | BetterAuth over hand-rolled JWT for sessions | accepted | 2026-06-18 |
| 0009 | PostgreSQL task store, BullMQ orchestration only | accepted | 2026-06-18 |
| 0010 | Schema-first: Drizzle as source of types | accepted | 2026-06-18 |
| 0011 | Hybrid pull + advisory-notify task distribution | accepted | 2026-06-18 |
| 0012 | In-memory WebSocket v1, Redis pub/sub deferred | accepted | 2026-06-18 |
| 0013 | Route-as-spec via @hono/zod-openapi | accepted | 2026-06-18 |
| 0014 | Turborepo + Bun workspaces over NX | accepted | 2026-06-18 |
| 0015 | Append-only progress telemetry + TimescaleDB RRD retention | accepted | 2026-06-19 |
| 0016 | Server-to-server fan-out bus (LISTEN/NOTIFY first) | accepted | 2026-06-19 |
| 0017 | Adaptive task sizing with lease + committed-offset | accepted | 2026-06-19 |
| 0018 | Real-DB integration test lane for DB-layer correctness | accepted | 2026-06-19 |
| 0019 | Immutable-on-use lifecycle: archive, never delete, once a record leaves draft | accepted | 2026-06-20 |