--- id: FIN-WP-0003 type: workplan title: "Fabric authority boundary for State Hub retirement" domain: financials repo: fin-hub status: finished owner: codex topic_slug: financials created: "2026-08-09" updated: "2026-08-31" parent_project: prj-state-hub-retirement parent_workplan: SHR-WP-0001 related: - FIN-WP-0001 - SHR-INV-0001 - STATE-WP-0079 state_hub_workstream_id: "21623d7d-25f8-5d80-9baa-f4d20e1c7a6e" --- # Fabric authority boundary for State Hub retirement ## Goal Keep **fabric graph data authority** in fin-hub (or its specialized engine), define any hub-core projection, and support State Hub fabric route disposition (`move` → fin-hub). ## Confirm authority and APIs ```task id: FIN-WP-0003-T01 status: done priority: high state_hub_task_id: "c6f6d2c5-4df2-5f8a-a838-76e4a0cb2974" ``` Document which fabric entities/APIs are authoritative here vs State Hub read models; publish consumer contract for migration. Completed 2026-08-31: `docs/fabric-authority-consumer-contract-v1.md` assigns topology, containment, ownership, accepted snapshots, and exports to the specialized `railiance-fabric` engine. Fin-hub retains financial-domain accountability and identifier joins only; State Hub remains a temporary read model and neither fin-hub nor hub-core receives copied authority tables. ## Migration path from State Hub fabric routes ```task id: FIN-WP-0003-T02 status: done priority: high state_hub_task_id: "9743357c-d32d-5508-845e-d341fd611c49" ``` With STATE-WP-0079, plan cutover for fabric ingest/read routes and dashboard consumers; row-count and provenance checks. Completed 2026-08-31: implemented `finhub fabric-cutover-check`. It gates the switch on export identity, canonical content hash, five row counts, and exact source revision/path/time provenance. The route map replaces State Hub ingest with Fabric registry snapshot acceptance, points reads at Fabric graph/export surfaces, points UI use at the graph explorer, and retains State Hub only as a dual-read rollback during the cutover window. ## Optional hub projection ```task id: FIN-WP-0003-T03 status: done priority: low state_hub_task_id: "b57b5135-7e77-5cbe-9da8-fa226e43a0a5" ``` If orientation needs a hub-core projection, define port usage without copying authority tables into hub-core. Completed 2026-08-31: explicitly deferred. The caller scan found no external consumer of State Hub's Fabric routes, while Railiance Fabric already serves a graph API and explorer. A future need must use a versioned read-only port with source revision/content hash and a rebuildable bounded cache; it may not create hub-core authority tables. ## Acceptance - [x] Authority boundary documented - [x] Migration path agreed with State Hub strangler - [x] Projection decision recorded (implement or explicitly defer)