Concept
The boss fight is the moment the repo stops saying it has a schema and starts proving the schema protects the domain.
Task
- Run the schema contract test.
- Apply migrations to local Postgres.
- Capture or refresh the EXPLAIN transcript.
- Review schema-notes.md and time-notes.md against V1.
- Tag phase-2a-done.
Run
./gradlew test --tests "*Phase2ASchemaContractTest"docker compose up -d postgres./gradlew flywayMigrategit tag phase-2a-doneExpected Result
- Every Phase 2A artifact is committed and the tag points to the proof state.
Common Traps
- Treating generated SQL as good enough without reading it.
- Leaving time semantics implicit.
- Skipping the transcript because the test passed.
Hint Ladder
Hint 1
The contract test is a fast gate; the Postgres run is the stronger proof.
Hint 2
time-notes.md should tell a future Oracle story without implementing Oracle yet.
Hint 3
Do not reopen Phase 2A for Hibernate mapping. That is Phase 2B.
Solution
See docs/milestone-audit.md for the M3 evidence map.