2f0ab18e81
- 4 PostgreSQL adapter stubs (Session, Mission, DecisionCase, Artifact) - Migration 001: Initial schema (sessions, missions, artifacts, decision_cases) - Persistence Independence Test: 6 tests verifying same behavior across InMemory and PostgreSQL implementations - ADR-008: PostgreSQL Adapters for Production - ADR-009: Persistence Independence Architecture Quality Gates: - Domain unchanged - Application unchanged - Only adapter implementation changes - Same test suite runs against both implementations Next: PR-003B — Schema & Migrations, PR-003C — Integration Tests, PR-003D — Unit of Work / Transactions
959 B
959 B
ADR-009: Persistence Independence
Status
Accepted
Context
We need to ensure that business logic is not coupled to persistence implementation.
Decision
Same use cases must produce same results regardless of repository implementation.
Verification Method
- Run test with InMemoryRepository
- Run test with PostgresRepository (when implemented)
- Compare results
- If different, adapter is wrong
Architecture Rules
- Domain: 0 external dependencies
- Application: only domain + contracts
- Infrastructure: may depend on external libraries, never reverse
- Persistence Independence: same use cases, same results
Consequences
Positive
- Strong architecture verification
- Easy to swap implementations
- Tests document expected behavior
Negative
- Need to maintain two test suites
- PostgreSQL tests require database setup
Related
- ADR-006: In-Memory Adapters for Testing
- ADR-008: PostgreSQL Adapters for Production