Phase 1 delivers the complete durability and storage layer:
- WAL with crash recovery: Append-only journal with BLAKE3 checksums,
fsync guarantees, and proper seek-to-EOF on reopen
- Storage engine: sled-backed KVStore with scan_prefix for range queries
- Content-addressed storage: H:{hash}, V:{hash}, E:{hash} key patterns
- Ingestor: Background worker tailing WAL, writing to KV with 8-byte
aligned record headers for rkyv zero-copy deserialization
- Comprehensive tests: 31 tests covering crash recovery, round-trips,
and multi-cycle durability
New crates: stemedb-wal, stemedb-storage, stemedb-ingest
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
31 lines
976 B
Plaintext
31 lines
976 B
Plaintext
sequenceDiagram
|
|
%% The Catastrophe: When Proposals Look Like Decisions
|
|
|
|
participant RA as Research Agent
|
|
participant E as Episteme
|
|
participant LO as Lead Orchestrator
|
|
participant IA as Implementation Agent
|
|
participant DA as Deploy Agent
|
|
participant P as Production
|
|
|
|
RA->>E: Store RFC finding
|
|
Note right of E: RFC proposes ES256. Stored as PROPOSED.
|
|
|
|
LO->>E: What's the JWT algorithm?
|
|
Note right of E: ⚠️ No lifecycle filter. This is the bug.
|
|
|
|
E-->>LO: ES256 (conf: 0.87)
|
|
Note right of LO: ⚠️ Returns the proposal. Most recent wins.
|
|
|
|
LO->>IA: Use ES256 for JWT
|
|
Note right of IA: ⚠️ Orchestrator passes 'truth' downstream.
|
|
|
|
IA->>DA: Config ready
|
|
Note right of DA: ⚠️ Code written against ES256.
|
|
|
|
DA->>P: Deploy JWT config
|
|
Note right of P: ⚠️ Deployed with confidence. Tests passed.
|
|
|
|
P->>P: 401 Unauthorized
|
|
Note over P: ⚠️ Auth service expects RS256. Every token fails.
|