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
38 lines
959 B
Markdown
38 lines
959 B
Markdown
# 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
|
|
1. Run test with InMemoryRepository
|
|
2. Run test with PostgresRepository (when implemented)
|
|
3. Compare results
|
|
4. 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
|