Add lifecycle browser authoring and durable review handoff retrieval
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a10780-6d41-7952-9718-dfbc1f41236f
This commit is contained in:
parent
52d372df0b
commit
9bc581a547
20 changed files with 632 additions and 74 deletions
|
|
@ -1,6 +1,8 @@
|
|||
# Revision-specific lifecycle review handoff
|
||||
|
||||
2026-10-04; INFD-WP-0007-T02 through T06. Source implementation, not deployed.
|
||||
2026-10-05; INFD-WP-0007-T02/T05. The initial handoff is deployed and
|
||||
human-accepted; browser document authoring and direct handoff retrieval below
|
||||
are the next source increment, not yet deployed.
|
||||
|
||||
## Headless contract
|
||||
|
||||
|
|
@ -22,8 +24,9 @@ The envelope is also retained in authorized event history for recovery.
|
|||
The handoff currently supports the platform tenant, English organizational
|
||||
`approve` memos at the current renderer release, and the intake's nonempty UTF-8
|
||||
packet profile. Unsupported projections are refused rather than dropping fields.
|
||||
Broader L0/L2 profiles, browser packet authoring and automated forwarding remain
|
||||
live work in T02/T04/T05 and WP-0005. There is no automatic submitter or default
|
||||
The admitted State Hub dispatcher performs explicit forwarding. Browser packet
|
||||
authoring and handoff preparation now have a source implementation; broader
|
||||
L0/L2 binding and automatic discovery remain separate contracts. There is no automatic submitter or default
|
||||
workload credential. A caller-selected submitter is a routing request, not identity.
|
||||
The local use of intake's shape validator does not grant admission: intake always
|
||||
reauthenticates the workload and reloads its actual grant and recipient mapping.
|
||||
|
|
@ -75,8 +78,8 @@ outboxes and receipt requirements. The integration test creates an approval via
|
|||
the real Approval Engine API, records a signed-fixture human entry, retrieves the
|
||||
confirmed result for source revision two, and delivers lifecycle and review
|
||||
commitments to the real Audit Core receiver. Identity and PDP transport are
|
||||
synthetic. Production grants, private listener/forwarding composition, full
|
||||
release/rollback evidence and separately approved rollout remain outstanding.
|
||||
synthetic. Native initial-audience grants, forwarding, human acceptance and
|
||||
restart/audit evidence are recorded in ../evidence/2026-10-05-lifecycle-cutover/.
|
||||
|
||||
## Migration and rollback boundary
|
||||
|
||||
|
|
@ -88,3 +91,37 @@ retain the normal database backup and image/config pins. An older-image rollback
|
|||
requires a compatible restored database plus reconciliation of any subsequent
|
||||
engine side effects; it cannot safely discard new review/entry evidence. A
|
||||
reviewed forward fix remains preferable once new handoffs have been written.
|
||||
|
||||
## Browser authoring and retained handoff retrieval
|
||||
|
||||
New browser drafts explicitly select organizational human approval or discussion
|
||||
only. Existing rendered forms without that field retain the earlier draft type;
|
||||
there is no silent conversion of existing records. Discussion drafts cannot
|
||||
enter the approval handoff. The shared structural profile check is descriptive,
|
||||
not an authorization grant.
|
||||
|
||||
A text document is appended through the shared revise command with its actual
|
||||
UTF-8 bytes, digest and optional required highlight. The complete form is limited
|
||||
to 64 KiB by the existing adapter; large/binary packets remain available through
|
||||
the bounded API. Previous packets and highlights are preserved, and a new
|
||||
revision requires new publication. Comparison shows changed documents/digests
|
||||
and acknowledgment text as well as the question and brief.
|
||||
|
||||
The browser prepares the same immutable request with an explicit approval purpose
|
||||
and responsible principal. Its initial routing is State Hub / decision-record /
|
||||
net-kingdom-admins. This route is checked by the existing PDP, and intake still
|
||||
authenticates the actual submitter and assigns the configured named recipient.
|
||||
Preparation alone does not enqueue, create an approval, notify or bind.
|
||||
|
||||
`GET /v1/decisions/{id}/review-requests?version=N` returns the exact retained
|
||||
`event_id`, `review_memo_id` and `envelope`. It requires a fresh `lifecycle.events`
|
||||
decision for that revision, preserving the permission already required to read
|
||||
the envelope in history. Missing requests return 404; invalid/nonpositive versions
|
||||
return 400. Reads do not create requests or repeat external effects. Historical
|
||||
exports remain historical: intake refuses a stale source revision.
|
||||
|
||||
The browser equivalent `/decisions/{id}/review-request?version=N` downloads
|
||||
only the envelope as an attachment. It uses the same service check, without
|
||||
credential copying or a public privileged forwarding API. A prepared current
|
||||
request links to this download; a loaded request links to protected human review.
|
||||
The original idempotency identity survives download, retry and process restart.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue