┌─────────────────┐
│ Portable Voice │
│ Recorder │
└────────┬────────┘
│ USB
┌────────▼────────┐
│ [1] udev/ │
│ systemd detect │
└────────┬────────┘
│
┌─────────────▼─────────────┐
│ [2] Ingest (Rust) │
│ • Archive raw audio │
│ • SHA-256 checksum │
│ • File metadata │
└─────┬───────────────┬─────┘
│ │
┌──────────▼──────┐ ┌─────▼──────────────┐
│ [3] Cloud │ │ [4] Transcribe │
│ Backup │ │ (Rust + Whisper/ │
│ (encrypted, │ │ Vosk) │
│ retry 3x) │ │ → transcript.json │
└─────────────────┘ └─────────┬──────────┘
│
┌──────────▼──────────┐
│ [5] Parse │
│ (Haskell megaparsec) │
│ → candidate intents │
│ with confidence │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ [6] Normalise │
│ • Resolve dates │
│ • Priority scoring │
│ • Validate fields │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ [7] Deduplicate │
│ • Exact matching │
│ • Semantic similarity│
│ • Supersedes linking │
└──────────┬──────────┘
│
┌───────────────┴───────────────┐
│ │
┌─────────▼─────────┐ ┌──────────▼─────────┐
│ [8a] Auto-Apply │ │ [8b] Review Queue │
│ (confidence ≥ 0.8) │ │ (confidence < 0.8) │
└─────────┬─────────┘ └──────────┬─────────┘
│ │
└───────────────┬───────────────┘
│
┌──────────▼──────────┐
│ Canonical Store │
│ (SQLite + WAL) │
│ Single source of │
│ truth for all tasks │
└──────────┬──────────┘
│
┌───────────────┼───────────────┐
│ │ │
┌─────────▼───┐ ┌────────▼────┐ ┌──────▼──────┐
│ [9] Views │ │ [9] Views │ │ [9] Views │
│ Markdown │ │ JSON │ │ CSV │
└─────────────┘ └─────────────┘ └─────────────┘
│
┌──────────▼──────────┐
│ [10] Notify │
│ Dashboard / Email │
└─────────────────────┘
┌──────────────────────────────┐
│ Idris2 ABI (src/interface/abi/)│ ← The Specification (dependent types)
│ • Task type with proofs │
│ • Confidence bounds │
│ • Schema migration rules │
└──────────────┬───────────────┘
│ generates
┌──────────────▼───────────────┐
│ C Headers (generated/) │ ← The Artifact
└──────────────┬───────────────┘
│ implements
┌──────────────▼───────────────┐
│ Zig FFI (src/interface/ffi/) │ ← The Bridge (C ABI compatible)
└──────────────┬───────────────┘
│ links
┌──────────────▼───────────────┐
│ Rust Components │ ← The Consumers
│ (ingest, transcribe, store, │
│ review) │
└──────────────────────────────┘
| Component | Progress | Status |
|---|---|---|
Architecture design |
|
Active |
SQLite schema |
|
— |
Idris2 ABI proofs |
|
— |
Zig FFI bridge |
|
— |
Rust ingest |
|
— |
Rust transcription |
|
— |
Haskell parser |
|
— |
Confidence scoring |
|
— |
Deduplication |
|
— |
Review queue |
|
— |
View generation |
|
— |
Ansible deployment |
|
— |
Terraform provisioning |
|
— |
Audit trail |
|
— |
CI/CD (Hypatia) |
|
— |
Overall |
|
Design |
| Dependency | Version | Purpose |
|---|---|---|
whisper-rs |
latest |
Offline ASR (Whisper model) |
vosk |
latest |
Alternative offline ASR |
megaparsec |
9.x |
Haskell parser combinators |
rusqlite |
latest |
SQLite bindings for Rust |
idris2 |
0.7+ |
ABI formal verification |
zig |
0.13+ |
FFI bridge |
ansible |
2.x |
Local deployment |
terraform |
1.x |
Cloud provisioning |