feat(review): add multi-owner contracts and receipts
Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
This commit is contained in:
parent
52aefe39e4
commit
598f6418e7
13 changed files with 1401 additions and 9 deletions
|
|
@ -4,7 +4,7 @@ type: workplan
|
|||
title: "Multi-owner review contracts and receipts"
|
||||
domain: infotech
|
||||
repo: state-hub
|
||||
status: active
|
||||
status: finished
|
||||
owner: codex
|
||||
topic_slug: multi-owner-review-contracts
|
||||
created: "2026-08-22"
|
||||
|
|
@ -36,7 +36,7 @@ separable for later movement to `hub-core`.
|
|||
|
||||
```task
|
||||
id: STATE-WP-0082-T01
|
||||
status: progress
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "a6511423-78e0-51c6-8c7d-b91609e331ff"
|
||||
```
|
||||
|
|
@ -51,11 +51,15 @@ Done when the boundary preserves existing simple decisions, keeps repository
|
|||
files authoritative, treats State Hub as projection, and states explicitly
|
||||
that a satisfied procedure review is not an execution authorization.
|
||||
|
||||
Implemented in `docs/review-contracts-v1.md` and the
|
||||
`review-contract/v1` validator. The bounded WP-0024 adapter preserves the
|
||||
prototype source digest and derives stable assertion ids.
|
||||
|
||||
## Add projection persistence
|
||||
|
||||
```task
|
||||
id: STATE-WP-0082-T02
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "e2ac4ad6-91d9-5b4e-a0fb-7106c731e348"
|
||||
```
|
||||
|
|
@ -69,11 +73,15 @@ and optional links to a decision, workplan, or task.
|
|||
Done when upgrade/downgrade works and existing decision rows and routes require
|
||||
no data rewrite.
|
||||
|
||||
Implemented as separate `review_contracts` and append-only
|
||||
`review_receipts` tables in migration `c9e5a1b3d7f2`. A clean
|
||||
upgrade/downgrade/upgrade round trip passed.
|
||||
|
||||
## Implement validation and aggregation APIs
|
||||
|
||||
```task
|
||||
id: STATE-WP-0082-T03
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "48682d0c-e69f-5486-a007-472dea959994"
|
||||
```
|
||||
|
|
@ -88,11 +96,15 @@ For version 1, support the prototype's `all_required` policy only. A latest
|
|||
valid `request_changes` blocks its owner's gates; contract changes make prior
|
||||
receipts stale rather than mutating or deleting them.
|
||||
|
||||
Projection, receipt, exact listing, and aggregate routes enforce the v1
|
||||
contract. Linked required reviews now prevent legacy decision resolution from
|
||||
bypassing an unsatisfied gate.
|
||||
|
||||
## Provide a direct client and legacy adapter
|
||||
|
||||
```task
|
||||
id: STATE-WP-0082-T04
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "9ab5b022-25d0-556c-bca0-222c414bc18f"
|
||||
```
|
||||
|
|
@ -105,11 +117,15 @@ migrate without making State Hub execute its repository-specific checks.
|
|||
Done when callers no longer encode receipts as opaque agent-message bodies and
|
||||
message transport can carry stable contract/receipt references instead.
|
||||
|
||||
Implemented `statehub review project|submit|status`. The client derives the
|
||||
repository path and full revision from Git. Legacy message receipts remain
|
||||
historical notifications rather than canonical evidence.
|
||||
|
||||
## Pilot with railiance-infra
|
||||
|
||||
```task
|
||||
id: STATE-WP-0082-T05
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "90af0001-17c6-5cbb-9d08-64947211f956"
|
||||
```
|
||||
|
|
@ -123,11 +139,19 @@ The pilot must prove approval, request-changes supersession, artifact-change
|
|||
staleness, duplicate idempotency, wrong-owner rejection, canonical UTC receipt
|
||||
time, and rebuild from repository files.
|
||||
|
||||
Projected contract `01a02ac9-9e90-74c0-bdb2-a8604d32b542` from
|
||||
`railiance-platform@a557208a4a33520c39f749dcc26e6985386a96d4`.
|
||||
Projected railiance-infra receipt
|
||||
`01a02aca-02dd-7b16-93f2-7ab455976059` from
|
||||
`railiance-infra@d85237aee8080201ddacb2d4f34a15b6fc91609b`.
|
||||
Its owner state is approved while both gates remain unsatisfied and
|
||||
`authorizes_execution` remains false.
|
||||
|
||||
## Verify compatibility and extraction readiness
|
||||
|
||||
```task
|
||||
id: STATE-WP-0082-T06
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "c8486c31-d36b-5517-be2f-7efc715dfd79"
|
||||
```
|
||||
|
|
@ -138,6 +162,19 @@ future `hub-core` extraction boundary. Record any unimplemented authenticated
|
|||
actor-to-owner authorization as a live residual rather than implying that a
|
||||
caller-supplied owner string is authority.
|
||||
|
||||
Focused lint and 13 affected tests pass. The full suite reached 639 passing
|
||||
tests; its sole foreign-key inventory failure was updated for the two new
|
||||
CASCADE links and the affected suites then passed. Authenticated actor-to-owner
|
||||
delegation is live residual intake
|
||||
`01a02aca-2dfc-7e57-bebf-f5e970d7b403`.
|
||||
|
||||
## Residual handoff
|
||||
|
||||
Authenticated actor-to-owner delegation and authorization proof are tracked by
|
||||
State Hub intake `01a02aca-2dfc-7e57-bebf-f5e970d7b403` (`origin:
|
||||
residual`, `origin_ref: STATE-WP-0082`). Until that work is promoted, actor
|
||||
strings are coordination identities only.
|
||||
|
||||
## Acceptance
|
||||
|
||||
- Existing single-decider APIs remain backward compatible.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue