- Add dialogue prompt file writing for audit/debugging - Update README install instructions - Add new RFCs (0053, 0055-0059, 0062) - Add recorded dialogues and expert pools - Add ADR 0018 dynamodb-portable-schema - Update TODO with hook configuration notes Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
10 lines
1.8 KiB
Markdown
10 lines
1.8 KiB
Markdown
[PERSPECTIVE P01: RFC 0053's trait abstraction makes the backend choice a configuration decision, not an architectural one]
|
|
RFC 0053 already defines `DialogueStore` as a trait with `SqliteDialogueStore` and `DynamoDialogueStore` as interchangeable implementations behind a factory pattern. If the trait boundary is correct -- and it is, because every method maps to a bounded access pattern (get dialogue, register perspective, export) -- then "hybrid relational + DynamoDB" is just adding a third `impl DialogueStore for PostgresStore`. The supersession question is therefore premature: build the trait, ship DynamoDB as RFC 0058 specifies, and if relational queries prove necessary, add a backend without touching application code. The trait boundary is the architecture; the storage engine is a pluggable detail.
|
|
|
|
[PERSPECTIVE P02: Hybrid architectures fracture the EncryptedStore generic parameter space]
|
|
RFC 0058's `EncryptedStore<S, K>` is generic over both storage and key provider, giving compile-time proof that encryption wraps all storage operations uniformly. A hybrid architecture that splits writes across DynamoDB (for hot-path reads) and PostgreSQL (for ad-hoc queries) would either require `EncryptedStore<(Dynamo, Postgres), K>` -- collapsing the clean generic into a coordination layer -- or two separate `EncryptedStore` instances with split-brain risks on which backend is authoritative for a given entity.
|
|
|
|
[TENSION T01: Trait completeness vs. leaky abstraction risk]
|
|
The `DialogueStore` trait in RFC 0053 scopes to known access patterns, but if relational-only capabilities (JOINs, window functions, recursive CTEs for transitive closure on refs) leak into the trait surface, the abstraction becomes a lowest-common-denominator facade that makes DynamoDB callers pay for capabilities they cannot efficiently provide.
|
|
|
|
---
|