fin-hub/workplans/FIN-WP-0003-fabric-authority-boundary.md
tegwick debe67edf0
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
feat: complete fabric authority cutover contract
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a053ff-1d6f-7fe2-ac1c-a6eb40a42a0c
2026-08-31 22:18:39 +02:00

88 lines
2.7 KiB
Markdown

---
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)