docs(review): add multi-owner contract workplan
Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
This commit is contained in:
parent
70a708ff11
commit
ceab9ce279
1 changed files with 144 additions and 0 deletions
|
|
@ -0,0 +1,144 @@
|
||||||
|
---
|
||||||
|
id: STATE-WP-0082
|
||||||
|
type: workplan
|
||||||
|
title: "Multi-owner review contracts and receipts"
|
||||||
|
domain: infotech
|
||||||
|
repo: state-hub
|
||||||
|
status: active
|
||||||
|
owner: codex
|
||||||
|
topic_slug: multi-owner-review-contracts
|
||||||
|
created: "2026-08-22"
|
||||||
|
updated: "2026-08-22"
|
||||||
|
related:
|
||||||
|
- RAILIANCE-WP-0024
|
||||||
|
- RAIL-HO-WP-0011
|
||||||
|
origin: routed
|
||||||
|
origin_ref: "Operator request to generalize the RAILIANCE-WP-0024 owner-review interface"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Multi-owner review contracts and receipts
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
|
||||||
|
Generalize the hash-bound `RAILIANCE-WP-0024` owner-review prototype into a
|
||||||
|
file-authoritative, queryable review-contract projection. State Hub validates,
|
||||||
|
indexes, aggregates, and exposes contracts and immutable receipts; it does not
|
||||||
|
execute consumer-defined commands or turn procedure review into live-action
|
||||||
|
authorization.
|
||||||
|
|
||||||
|
This is a compatibility and extraction slice while State Hub retires. Contract
|
||||||
|
and receipt files remain authoritative in their owning repositories, messages
|
||||||
|
carry notification references only, and the implementation must remain
|
||||||
|
separable for later movement to `hub-core`.
|
||||||
|
|
||||||
|
## Define the review-contract boundary
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: STATE-WP-0082-T01
|
||||||
|
status: progress
|
||||||
|
priority: high
|
||||||
|
```
|
||||||
|
|
||||||
|
Specify a versioned canonical contract with typed subject and owner references,
|
||||||
|
explicit gates, stable assertion ids, revision-pinned artifact hashes, named
|
||||||
|
read-only checks, allowed dispositions, and deterministic canonical digesting.
|
||||||
|
Specify append-only receipt semantics, staleness, supersession, idempotency,
|
||||||
|
and aggregate state.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
## Add projection persistence
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: STATE-WP-0082-T02
|
||||||
|
status: todo
|
||||||
|
priority: high
|
||||||
|
```
|
||||||
|
|
||||||
|
Add review-contract and immutable receipt persistence through an Alembic
|
||||||
|
migration. Keep the review aggregate separate from the existing `decisions`
|
||||||
|
row rather than adding owner arrays or receipt blobs to it. Retain source repo,
|
||||||
|
path, full revision, contract digest, receipt digest, canonical UTC timestamps,
|
||||||
|
and optional links to a decision, workplan, or task.
|
||||||
|
|
||||||
|
Done when upgrade/downgrade works and existing decision rows and routes require
|
||||||
|
no data rewrite.
|
||||||
|
|
||||||
|
## Implement validation and aggregation APIs
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: STATE-WP-0082-T03
|
||||||
|
status: todo
|
||||||
|
priority: high
|
||||||
|
```
|
||||||
|
|
||||||
|
Provide contract projection, receipt submission, exact reads, and aggregate
|
||||||
|
status. Reject unknown owners, incomplete owner scopes, digest mismatches,
|
||||||
|
artifact drift, missing assertions/checks, unsafe dispositions, duplicate
|
||||||
|
non-idempotent submissions, and legacy decision resolution that would bypass a
|
||||||
|
required review gate.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
## Provide a direct client and legacy adapter
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: STATE-WP-0082-T04
|
||||||
|
status: todo
|
||||||
|
priority: medium
|
||||||
|
```
|
||||||
|
|
||||||
|
Add a State Hub CLI or import surface that can project an authoritative
|
||||||
|
contract, submit a file-backed receipt, and print owner/gate status. Provide a
|
||||||
|
bounded adapter for the `RAILIANCE-WP-0024` contract shape so the prototype can
|
||||||
|
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.
|
||||||
|
|
||||||
|
## Pilot with railiance-infra
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: STATE-WP-0082-T05
|
||||||
|
status: todo
|
||||||
|
priority: high
|
||||||
|
```
|
||||||
|
|
||||||
|
Use `railiance-infra` as the first consumer. Publish a canonical receipt file
|
||||||
|
for its existing `RAILIANCE-WP-0024-T03` procedure review, project it through
|
||||||
|
the generic interface, and prove the aggregate owner matrix matches the
|
||||||
|
prototype without authorizing a reboot.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
## Verify compatibility and extraction readiness
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: STATE-WP-0082-T06
|
||||||
|
status: todo
|
||||||
|
priority: medium
|
||||||
|
```
|
||||||
|
|
||||||
|
Run migration, router, service, CLI, and full-suite tests. Document the source
|
||||||
|
and projection contracts, operational rollback, message compatibility, and the
|
||||||
|
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.
|
||||||
|
|
||||||
|
## Acceptance
|
||||||
|
|
||||||
|
- Existing single-decider APIs remain backward compatible.
|
||||||
|
- Review contracts are separate aggregates linked to decisions/work records.
|
||||||
|
- Every valid approval is bound to the exact contract, assertions, artifacts,
|
||||||
|
checks, owner, actor, and canonical UTC receipt time.
|
||||||
|
- Contract or artifact change makes old receipts stale.
|
||||||
|
- State Hub never runs arbitrary commands from a contract.
|
||||||
|
- Aggregate satisfaction never by itself authorizes a live mutation.
|
||||||
|
- `railiance-infra` completes the first file-backed consumer round trip.
|
||||||
|
- The projection can be rebuilt from authoritative contract and receipt files.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue