INFD-WP-0010: record founder decisions 2026-11-01; outcome read for State Hub's pull (T04)
Founder decisions relayed 2026-11-01: GH-DEC-2026-026 accepted as drafted
(unblocks S4 doctrine; S4 now waits only on access-engine policy), and the
hub pulls decision outcomes through its STATE-WP-0096 dispatch worker.
S3 re-scoped: GET /v1/memos/{id}/outcome on the private listener returns
informed-decision.decision-outcome v1 for memos the caller posed, only for
a submitter row with outcome_read: true. Read-only and value-free.
T05 (enable after STATE-WP-0101) and T06 (retire push write-back) added.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 5502@bnt-lap001
Assistant-Session: 68b3b02f-5d0f-4e71-8421-796f62e50196
This commit is contained in:
parent
ba7a797160
commit
8787e1a14a
7 changed files with 515 additions and 36 deletions
|
|
@ -4,17 +4,19 @@ type: workplan
|
|||
title: "Present existing approvals, proportionate C1 confirm and hub write-back"
|
||||
domain: infotech
|
||||
repo: informed-decision
|
||||
status: proposed
|
||||
status: active
|
||||
owner: claude-code
|
||||
topic_slug: netkingdom
|
||||
created: "2026-10-31"
|
||||
updated: "2026-10-31"
|
||||
updated: "2026-11-01"
|
||||
flavor: implementation
|
||||
depends_on: []
|
||||
related:
|
||||
- NK-WP-0056
|
||||
- INFD-WP-0005
|
||||
- APPROVAL-WP-0007
|
||||
- STATE-WP-0096
|
||||
- STATE-WP-0101
|
||||
state_hub_workstream_id: "d1363acf-35c2-56ce-be1b-ecebd15b5253"
|
||||
---
|
||||
|
||||
|
|
@ -26,6 +28,30 @@ surface. It should be light for simple decisions and complete for risky ones, an
|
|||
should be explicit: approval-engine holds the object, created by the actor who uses it, and informed-decision
|
||||
presents it and records the human's act.
|
||||
|
||||
## Founder decisions, 2026-11-01
|
||||
|
||||
Relayed by the net-kingdom coordinator on 2026-11-01 (quoted as relayed):
|
||||
|
||||
1. **gate-house GH-DEC-2026-026 accepted as drafted.** Decision classes C0–C3; a decision is at least C2 when
|
||||
anyone relies on it as authority for an act its standing mandate doesn't cover; C3 reserved; the actor that
|
||||
files a C2 approval may never approve it; agents never approve at C1+.
|
||||
*Unblocks:* S4's doctrine dependency (T03) and the founder's answer on class cuts. Consequences here:
|
||||
informed-decision still does not decide a class (the poser declares it, gate-house owns the doctrine); a C1
|
||||
confirm is never authority for an unmandated act, because such reliance makes the decision C2 by definition,
|
||||
so a C1 confirm needs no approval object; only human dispositions bind (already enforced: agent and service
|
||||
actors cannot resolve). S1 already satisfies "filer never approves": the executor files the approval as
|
||||
`service:nk-bind-executor` and only a human enters it.
|
||||
2. **State Hub write-back is a pull.** State Hub's existing STATE-WP-0096 dispatch worker fetches decision
|
||||
outcomes from informed-decision; informed-decision gets no hub credential. state-hub needs an outcome read
|
||||
returning `informed-decision.decision-outcome` v1 (fields: state-hub
|
||||
`docs/decision-services-alignment-answer.md` §5.2). informed-decision's hub write-back is switched on once
|
||||
STATE-WP-0101 lands.
|
||||
*Unblocks / re-scopes:* S3 (T04 re-scoped to the outcome read; T05 enablement; T06 retirement of the push
|
||||
path). `INFD_HUB_WRITEBACK` (push) stays off: it has no credential to use under this decision.
|
||||
3. access-engine (review policy for requester `service:nk-bind-executor`) and key-cape (`approval:read` for
|
||||
`informed-decision-sitting-requester`) are being asked by separate workers. Affects T02 and T03; nothing
|
||||
changes here until they answer.
|
||||
|
||||
## S1: present_existing intake profile
|
||||
|
||||
```task
|
||||
|
|
@ -79,26 +105,65 @@ state_hub_task_id: "0b3750f5-47c3-5874-bebb-7ebab385a3df"
|
|||
|
||||
A lighter memo profile with one question, one packet item, one required highlight and options. It needs a fresh
|
||||
aal1 session and creates no approval object. It records view_hash and disposition and resolves the served hub
|
||||
decision. Waits on gate-house doctrine for decision classes C0–C3 (review S5), an access-engine policy action for
|
||||
an approval-less confirm, and the founder's answer on class cuts.
|
||||
decision (through T04's outcome read).
|
||||
|
||||
**Blockers after the 2026-11-01 founder decisions:** the gate-house doctrine (GH-DEC-2026-026) and the class cuts
|
||||
are settled. The only remaining external blocker is **access-engine policy work**: a review-policy action for a
|
||||
confirm without an approval object (today review refuses `missing_act_binding`), at aal1 for C1. The C1 profile's
|
||||
own design (how the poser declares the class at intake, and refusing C2+ on this profile) is in-repo work for when
|
||||
the task starts. Not started by decision: implement after access-engine answers.
|
||||
|
||||
**Done when:** a C1 decision is confirmed in the browser and resolves its hub decision with evidence. No approval
|
||||
object is created.
|
||||
|
||||
## S3: hub write-back enablement and structured links
|
||||
## S3: decision outcome read for State Hub's pull (re-scoped 2026-11-01)
|
||||
|
||||
```task
|
||||
id: INFD-WP-0010-T04
|
||||
status: wait
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "8c649193-f274-5463-9897-7010a5bb4a9d"
|
||||
```
|
||||
|
||||
The write-back exists (INFD-WP-0005, `INFD_HUB_WRITEBACK`). Remaining work:
|
||||
Re-scoped by founder decision 2 (2026-11-01): the hub fetches, so informed-decision provides a read of the outcome
|
||||
of its own memos to the hub's existing intake identity, instead of pushing.
|
||||
|
||||
- the founder's decision to enable it in production;
|
||||
- with state-hub: structured decision links (`memo_id`, `approval_id`, `view_hash`, `evidence_ref`) that replace
|
||||
the rationale-text idempotency check.
|
||||
`GET /v1/memos/{memo_id}/outcome` on the private workload listener (same TokenReview, audience
|
||||
`informed-decision-intake`). Admitted only for a submitter row with `outcome_read: true` (reviewed deployment
|
||||
data; never combined with `present_existing`), and only for memos that submitter posed (others: 404, no existence
|
||||
oracle). The memo must serve a hub decision with `resolves: on-answer`. Responses: 202 `pending` (no terminal
|
||||
human answer yet, or an accept whose approval entry is not yet confirmed); 200 the
|
||||
`informed-decision.decision-outcome` v1 record; 409 `approval_entry_unresolved`, `assurance_unrecorded`,
|
||||
`memo_does_not_resolve`. Read-only, spends no budget, writes nothing.
|
||||
|
||||
**Done when:** a served hub decision is resolved by a human disposition in production, and its link fields are
|
||||
populated.
|
||||
**Done 2026-11-01 (local):** `informed_decision/outcome.py`, routing in `intake_service.py` / `workload.py`,
|
||||
issuer wiring in `requester.py`; tests in `tests/test_decision_outcome.py`. Not deployed.
|
||||
|
||||
## S3 enablement: hub write-back on via the pull
|
||||
|
||||
```task
|
||||
id: INFD-WP-0010-T05
|
||||
status: wait
|
||||
priority: medium
|
||||
depends_on: [INFD-WP-0010-T04]
|
||||
```
|
||||
|
||||
Waits on state-hub STATE-WP-0101 (decision columns, `resolve-evidence` route, worker pull). Then here: set
|
||||
`outcome_read: true` on the `system:serviceaccount:state-hub:state-hub` row of `intake-submitters.json` and ship a
|
||||
release (founder runs). The worker's egress to the private listener (8081) already exists.
|
||||
|
||||
**Done when:** a served C1/C2 hub decision is resolved in production from an outcome record this service returned.
|
||||
|
||||
## S3 cleanup: retire the push write-back
|
||||
|
||||
```task
|
||||
id: INFD-WP-0010-T06
|
||||
status: wait
|
||||
priority: low
|
||||
depends_on: [INFD-WP-0010-T05]
|
||||
```
|
||||
|
||||
Once T05 is live, remove the push path (`hub_writeback.py`, the `hub-resolution` delivery kind and
|
||||
`INFD_HUB_WRITEBACK`), keeping already-queued rows readable. It must never be switched on under decision 2.
|
||||
|
||||
**Done when:** no code path in informed-decision can write to State Hub's decision routes.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue