docs(relationship): ADR-044, DB diagrams, deploy runbook, RTM rows
All checks were successful
CI / fail2ban Regex (pull_request) Successful in 44s
CI / Semgrep Security Scan (pull_request) Successful in 23s
CI / Compose Bucket Idempotency (pull_request) Successful in 1m8s
SDD Gate / RTM Check (pull_request) Successful in 18s
SDD Gate / Contract Validate (pull_request) Successful in 29s
SDD Gate / Constitution Impact (pull_request) Successful in 20s
CI / Unit & Component Tests (pull_request) Successful in 4m38s
CI / OCR Service Tests (pull_request) Successful in 25s
CI / Backend Unit Tests (pull_request) Successful in 5m58s
All checks were successful
CI / fail2ban Regex (pull_request) Successful in 44s
CI / Semgrep Security Scan (pull_request) Successful in 23s
CI / Compose Bucket Idempotency (pull_request) Successful in 1m8s
SDD Gate / RTM Check (pull_request) Successful in 18s
SDD Gate / Contract Validate (pull_request) Successful in 29s
SDD Gate / Constitution Impact (pull_request) Successful in 20s
CI / Unit & Component Tests (pull_request) Successful in 4m38s
CI / OCR Service Tests (pull_request) Successful in 25s
CI / Backend Unit Tests (pull_request) Successful in 5m58s
- ADR-044 extends ADR-039 to the relationship edge: LocalDate+DatePrecision, update re-validation of create invariants, no @Version (last-write-wins), DELETE→404 anti-enumeration alignment, precise derived marriage date, and the relationshipDates.ts location reusing the existing person→shared boundary. - db-orm.puml: person_relationships now carries from_date/from_date_precision/ to_date/to_date_precision; db-relationships.puml gets a V78 columns-only note. - DEPLOYMENT.md §5: V78 deploy note — no maintenance window, stop-old-then-start ordering (not rolling-deploy-safe), targeted pg_restore rollback. - CLAUDE.md error-code list gains INVALID_RELATIONSHIP_DATES. - rtm.md: REQ-001..REQ-019 for #837 mapped to impl + tests, all Done. Refs #837 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -538,6 +538,29 @@ pg_restore -t persons -d ${POSTGRES_DB} backup-YYYYMMDD.dump
|
||||
|
||||
(For a plain-SQL dump, extract the persons COPY block instead of replaying the full file.)
|
||||
|
||||
### Deploy note — V78 (person_relationships from/to → date + precision, #837)
|
||||
|
||||
V78 drops `person_relationships.from_year`/`to_year` after backfilling the new
|
||||
`from_date`/`to_date` + precision columns — a **one-way migration** (Flyway cannot roll
|
||||
it back). Like V76 it runs its pre-check + DDL in one atomic Flyway transaction and
|
||||
needs **no maintenance window** (single-writer archive, no concurrent importers).
|
||||
|
||||
It is, however, **not rolling-deploy-safe**: the previously-running JAR still maps the
|
||||
`from_year`/`to_year` columns, so it would error against the migrated schema. Deploy in
|
||||
this order (the default stop-then-start, single-instance deploy already satisfies it):
|
||||
|
||||
1. Take a manual `pg_dump` (see above) and confirm it completed.
|
||||
2. **Stop the old JAR**, then **start the new JAR** — Flyway V78 runs first thing on the
|
||||
new JAR's startup, before any request is served. Never run the old and new JARs
|
||||
concurrently across this migration.
|
||||
|
||||
If post-deploy data issues are found, restore **only the person_relationships table**
|
||||
from the pre-migration dump:
|
||||
|
||||
```bash
|
||||
pg_restore -t person_relationships -d ${POSTGRES_DB} backup-YYYYMMDD.dump
|
||||
```
|
||||
|
||||
### Rollback
|
||||
|
||||
Each release tag corresponds to a docker image tag on the host daemon (built via DooD; no registry). Rolling back to a previous tag is one command:
|
||||
|
||||
Reference in New Issue
Block a user