Files
boc/packages/infrastructure/adr/ADR-009-Persistence-Independence.md
T
Bernt 2f0ab18e81 PR-003A: PostgreSQL Repository Adapters + Persistence Independence Test
- 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
2026-07-02 15:57:23 +00:00

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

  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
  • ADR-006: In-Memory Adapters for Testing
  • ADR-008: PostgreSQL Adapters for Production