docs(adr): split ADR-0026 + propose ADR-0027 (Structure hierarchy)
CI / commits (pull_request) Successful in 3m1s
CI / check (pull_request) Successful in 3m3s
CI / scan (pull_request) Successful in 3m12s
CI / a11y (pull_request) Successful in 3m1s
Docs site / build (pull_request) Successful in 3m16s
CI / perf (pull_request) Successful in 5m59s

Cascade + acteurs_plus source-of-truth audit caught the original
ADR-0026 draft pinning Etablissement.finess as PK while >=30% of
APF's real structure inventory has no FINESS (antennes, dispositifs,
entreprises adaptees, mouvement, administratif, siege).

Narrow ADR-0026 to identity only (Person + User + UserScope). Drop
Person.email unique (two distinct humans can share an email) and
drop email-based dedup from the v1 provisioner lifecycle - entraOid
is the only natural key trusted in v1.

New ADR-0027 owns the organisational hierarchy: cascade-aligned
Structure with kind discriminator + nullable FINESS / SIRET /
codePaie + internal code PK that doubles as FINESS for medico-social
structures. Pole / Service / arbitrary nesting / per-source
enrichment deferred to ADR-0028 (sync), renumbered from the prior
ADR-0027 placeholder.

Both ADRs stay proposed pending review.
This commit is contained in:
Julien Gautier
2026-05-24 06:52:02 +02:00
parent abd1f91809
commit 204b0e35fa
4 changed files with 280 additions and 101 deletions
+2 -1
View File
@@ -69,4 +69,5 @@ ADRs are listed in numerical order. To slice by topic, filter on the `Tags` colu
| [0023](0023-charts-d3-observable-plot.md) | Charts + dashboards — D3 + Observable Plot wrapped in `libs/shared/charts` | accepted | `frontend`, `accessibility`, `performance` | 2026-05-16 |
| [0024](0024-ai-service-relay-grpc-sse-bridge.md) | AI service relay — vendored gRPC protos, NestJS gRPC client, SSE bridge to the SPA, POC unsigned principal | accepted | `backend`, `security`, `observability` | 2026-05-19 |
| [0025](0025-authorization-model-privileges-roles-scopes.md) | Authorization model — three orthogonal axes (privileges × functional roles × scopes), Entra-backed | accepted | `security`, `backend`, `data` | 2026-05-20 |
| [0026](0026-person-user-portal-data-model.md) | `Person` golden record + `User` portal-account + organisational hierarchy — portal-side data model | proposed | `data`, `backend`, `security` | 2026-05-24 |
| [0026](0026-person-user-portal-data-model.md) | `Person` golden record + `User` portal-account — portal-side identity model | proposed | `data`, `backend`, `security` | 2026-05-24 |
| [0027](0027-portal-side-organisational-hierarchy.md) | Portal-side organisational hierarchy — `Structure` with kind discriminator and nullable FINESS / SIRET | proposed | `data`, `backend` | 2026-05-24 |