Implement offline workload intake and record blocked owner dependencies

Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a1029c-c003-7283-acc9-930b434e6cae
This commit is contained in:
tegwick 2026-10-03 18:45:10 +02:00
parent c1a75e85aa
commit c1cf6cf54c
13 changed files with 790 additions and 25 deletions

View file

@ -4,7 +4,7 @@ type: workplan
title: "Frictionless decision intake — agents pose memos, only answering is human"
domain: infotech
repo: informed-decision
status: active
status: blocked
flavor: implementation
owner: claude
topic_slug: netkingdom
@ -23,11 +23,11 @@ state_hub_workstream_id: "c9407d2e-fd51-5afe-be4c-24483d1b2dbc"
Design: `docs/specs/FrictionlessDecisionIntake.md`.
Lifecycle review (2026-10-03): active implementation. T01–T03 have shipped
design and offline implementation, and T04 is actionable without live access.
The remaining owner responses, credential custody, doctrine review, and rollout
approvals remain explicit task gates; this status correction grants none of
those approvals. T07 still depends on T04.
Lifecycle review (2026-10-03): blocked after completing the local intake
service, durable ledger/outbox and doctrine-response incorporation. The remaining
runtime composition, custody, policy, receiver contracts and rollout require
owner deliveries or founder approval. Requirements and acceptance evidence are
in `docs/intake-dependency-requirements.md`; no live change was made.
Today a drafted memo reaches the review page only after an attended requester
login (A3), a hand-edited exact-record admission package with CI build and pin
@ -49,7 +49,7 @@ Owner messages sent 2026-10-03 (hub message ids):
| gate-house | `6ab42744-b651-4136-9794-c0dc092509b7` | doctrine check: no human act required at posing time |
| the-custodian | `35a87432-b0d5-4301-9fb9-d6a99bac4e0c` | close-down checklist rows R1–R8 |
## Tasks
## Intake design
```task
id: INFD-WP-0005-T01
@ -63,6 +63,8 @@ identity, validation, idempotency, approval creation without a human login,
attribute admission, load/notify, invariants, write-back, build-mode
relaxations, migration.
## Offline validation
```task
id: INFD-WP-0005-T02
status: done
@ -75,6 +77,8 @@ Offline intake validation: `informed_decision/intake.py` and
(closed envelope, unsigned draft, one question, bundled acts, packet digests,
secret-marker scan without echo, submitter/class/group grants, idempotency).
## Hub write-back adapter
```task
id: INFD-WP-0005-T03
status: done
@ -86,9 +90,11 @@ Hub write-back adapter `informed_decision/hub_writeback.py` behind
`INFD_HUB_WRITEBACK=1` (default off), with tests in `tests/test_hub_writeback.py`.
Not wired into the disposition path yet (T07).
## Authenticated intake service and ledger
```task
id: INFD-WP-0005-T04
status: todo
status: done
priority: high
state_hub_task_id: "2fe63827-25cb-5a2d-88a7-35414f5718ae"
```
@ -99,6 +105,8 @@ the projected SA token (audience `informed-decision-intake`),
written in one transaction, principal resolved from `deploy/review-groups.json`.
Offline-testable with a fake TokenReview and fake approval client.
## Requester custody and runtime composition
```task
id: INFD-WP-0005-T05
status: wait
@ -115,6 +123,8 @@ Intake creates the approval itself with `informed-decision-sitting-requester`
`binding.actor = informed-decision`), pins approval id and engine digest on the
memo, and records the receipt. Replaces OPERATOR step A3.
## Attribute admission consumer
```task
id: INFD-WP-0005-T06
status: wait
@ -130,9 +140,13 @@ Consumer side of attribute admission: carry `review_group`, `memo_class`,
update `docs/flex-auth-review-contract.md`; keep exact-record memos working.
Replaces OPERATOR step A4.
## Notification, audit and write-back delivery
```task
id: INFD-WP-0005-T07
status: todo
status: wait
blocked_on: message-from:audit-core
blocking_reason: "Local queued notification/posed events and disposition write-back implemented; audit-core event registration and State Hub deduplicated notification contracts required for runtime wiring (docs/intake-dependency-requirements.md)"
priority: medium
depends_on: [INFD-WP-0005-T04]
state_hub_task_id: "22d361cc-4bf2-59d4-9b97-728d42b1aeee"
@ -144,6 +158,8 @@ Notification and evidence: hub message to the founder on each posed memo
wire `hub_writeback.write_back` into the terminal-disposition path with a local
outbox. Replaces OPERATOR step A5.
## State Hub forwarding acceptance
```task
id: INFD-WP-0005-T08
status: wait
@ -156,17 +172,19 @@ state_hub_task_id: "ce2b36b4-ef82-53b7-aee7-e0063855370b"
Register state-hub as a submitter and run an end-to-end pose from a hub
decision through to the founder's review page in a dev stack.
## Doctrine response
```task
id: INFD-WP-0005-T09
status: wait
status: done
priority: medium
blocked_on: message-from:gate-house
blocking_reason: "Doctrine check that no human act is required at posing time (msg 6ab42744)"
state_hub_task_id: "403b0a7a-26c8-5893-b7ab-84579877d540"
```
Record gate-house's answer in the spec; adjust §5 if doctrine requires it.
## Approved live rollout
```task
id: INFD-WP-0005-T10
status: wait
@ -192,3 +210,19 @@ class grant was found; the real draft refuses submitter_unknown without a grant.
The alternative authenticated intake remains T04–T10. Gate House's T09 reply
4a290496 is described with its proposed-record conditions, without changing
authority or task states. No submission, provisioning or human answer occurred.
## Implementation evidence — 2026-10-03
T04: `intake_service.py`, `intake_approval.py`, Store schema 3 and empty reviewed
registries. Offline tests cover authentication/audience refusal, runtime
revocation, replay/restart, collisions, daily budget, atomic rollback, uncertain
create refusal and receipt-based load recovery. No deployed listener is enabled.
T05 local create-only transport is implemented; workload token exchange and
custody remain external. T07 local integration jobs are durable and terminal
human dispositions enqueue resolution atomically; the worker preserves stable
ids and leaves unconfigured adapters and disabled write-back pending. Receiver
contracts and scheduled runtime composition remain blocked.
T09: reply 4a290496 incorporated into the spec, with proposed-decision status
preserved. No founder ruling or deployment permission is inferred.