From b48857c2ebafe1a8381826668f95cf2c680280d3 Mon Sep 17 00:00:00 2001 From: tegwick Date: Mon, 5 Oct 2026 00:21:06 +0200 Subject: [PATCH] Confirm native human acceptance and durable lifecycle production delivery Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a10780-6d41-7952-9718-dfbc1f41236f --- README.md | 19 +- SCOPE.md | 6 +- deploy/lifecycle/README.md | 3 +- .../acceptance-summary.json | 45 +++++ .../human-outcome-after-restart.json | 29 +++ .../human-outcome.json | 29 +++ .../native-audit-after-acceptance.json | 186 ++++++++++++++++++ ...FD-WP-0005-frictionless-decision-intake.md | 23 ++- ...INFD-WP-0007-decision-lifecycle-service.md | 28 ++- 9 files changed, 354 insertions(+), 14 deletions(-) create mode 100644 docs/evidence/2026-10-05-lifecycle-cutover/acceptance-summary.json create mode 100644 docs/evidence/2026-10-05-lifecycle-cutover/human-outcome-after-restart.json create mode 100644 docs/evidence/2026-10-05-lifecycle-cutover/human-outcome.json create mode 100644 docs/evidence/2026-10-05-lifecycle-cutover/native-audit-after-acceptance.json diff --git a/README.md b/README.md index bb854bf..32cc98c 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,15 @@ # informed-decision Decision lifecycle service for agents and humans: research, retrieve, prepare, -evaluate, register, publish, comment, refine and human acceptance. The target +evaluate, register, publish, comment, refine and human acceptance. The deployed initial architecture separates a headless foundation from the UI at `decisions.coulomb.social`; new decisions are runtime data, requiring no per-decision infrastructure rollout. See the [product and architecture contract](docs/specs/DecisionLifecycleService.md) and [delivery workplan](workplans/INFD-WP-0007-decision-lifecycle-service.md). -These define the requested expansion; [SCOPE.md](SCOPE.md) records what exists. +The initial production audience is live and human acceptance is confirmed. +[SCOPE.md](SCOPE.md) records the delivered boundary and remaining work. A **Decision Memo** carries a question, the context needed to answer it, the requested act, and a binding between *identity*, *what was shown*, and *what was @@ -42,3 +43,17 @@ This repository renders questions and records answers. It does **not** decide (`access-engine`), does not own the approval object (`approval-engine`), does not author approval doctrine (`gate-house`), does not authenticate anyone (`key-cape`), and does not archive the trail (`audit-core`). + +## Production intake and historical fallback + +For the admitted State Hub / decision-record audience, register, revise and +publish through the private lifecycle API, request review, then explicitly queue +the returned envelope in the State Hub dispatcher. The human reviews through +the existing protected browser path. See [the deployed release](deploy/lifecycle/README.md). + +`tools/create_sitting_approvals.py` / `.sh`, `tools/attach_compact_bindings.py` and +`tools/load_sitting_memos.py` are historical compact-sitting fallback tools. They +are not the normal path for new admitted decisions. Their original attended +custody and approval requirements still apply; do not use them to bypass intake, +uncertain-create handling, policy checks or human binding. Historical batch +runbooks remain provenance, not the current intake workflow. diff --git a/SCOPE.md b/SCOPE.md index 5c5d39d..b2789bf 100644 --- a/SCOPE.md +++ b/SCOPE.md @@ -22,9 +22,11 @@ dispatcher pod recreation retained revision 2, custody and the same receipt. Missing/crossed-audience/unregistered callers are refused. Independent Audit Core counts match; prior 24 confirmed submissions were preserved. -Human acceptance of the new lifecycle review is still pending. Broader binding +Human acceptance of source revision 2 is confirmed at 2026-10-04T22:17:19Z, +with an exact presentation/disposition link and independent audit reconciliation. +Broader binding profiles and browser acceptance remain live tasks in INFD-WP-0007; intake -continuation is INFD-WP-0005. Issuer rotation is separately governed under Platform +initial delivery is completed in INFD-WP-0005. Issuer rotation is separately governed under Platform RPF-IN-0004. Automatic Hub resolution write-back remains disabled. Release/cutover procedure: `deploy/lifecycle/README.md`. Native receipts: diff --git a/deploy/lifecycle/README.md b/deploy/lifecycle/README.md index 36ef4af..9aca5df 100644 --- a/deploy/lifecycle/README.md +++ b/deploy/lifecycle/README.md @@ -164,6 +164,7 @@ recreation retains the same version and single approval receipt; explicit re-enqueue is replay. Temporary negative-verification resources were deleted. Human review remains at /review?memo_id=review-0d55a416-178c-46f5-b74b-b9b668390448. -No native human disposition is claimed yet. Evidence and exact pins are retained +Human acceptance is confirmed at 2026-10-04T22:17:19Z and linked to source +revision 2, the exact presentation and independent audit receipts. Evidence and exact pins are retained in docs/evidence/2026-10-05-lifecycle-cutover/. Issuer rotation is a separate Platform residual, RPF-IN-0004; it was neither performed nor authorized here. diff --git a/docs/evidence/2026-10-05-lifecycle-cutover/acceptance-summary.json b/docs/evidence/2026-10-05-lifecycle-cutover/acceptance-summary.json new file mode 100644 index 0000000..8320c7d --- /dev/null +++ b/docs/evidence/2026-10-05-lifecycle-cutover/acceptance-summary.json @@ -0,0 +1,45 @@ +{ + "recorded_at": "2026-10-04T22:20:52.645654+00:00", + "status": "initial-audience-production-accepted", + "cutover_approval_decision": "d2eaa2e9-6d11-4676-a07f-e3b7e59a88e3", + "source_memo": "infd-20261005-lifecycle-production-proof", + "source_version": 2, + "review_memo": "review-0d55a416-178c-46f5-b74b-b9b668390448", + "approval_id": "22b30fe7-c565-46f2-8193-d8875975ad9e", + "presentation_id": "pres-484c0ef3-0a87-4dbf-aa30-05fd21e19c91", + "view_hash": "946bee42ec960377625d0a135935121d64fc6e132e3419adcbcf40770cd6bd6d", + "human_accepted_at": "2026-10-04T22:17:19+00:00", + "submission_state": "confirmed", + "confirmed_submissions_before": 24, + "confirmed_submissions_after": 25, + "independent_audit_counts_match": true, + "lifecycle_pending": 0, + "post_acceptance_restart_outcome_equal": true, + "post_restart_packet_integrity": true, + "requester_projection": { + "mode": "0440", + "read_only": true, + "signed_create_only_exchange": true + }, + "authentication_checks": { + "selected_workload": 200, + "missing_bearer": 401, + "intake_audience_on_lifecycle": 401, + "lifecycle_audience_on_intake": 401, + "unregistered_caller_correct_audience": 401 + }, + "public_checks": { + "healthz": 200, + "readyz": 200, + "v1_decisions": 404, + "v1_memos": 404 + }, + "temporary_negative_resources_deleted": true, + "new_decisions_required_deployment_change": false, + "remaining_work_records": [ + "INFD-WP-0007-T02", + "INFD-WP-0007-T05", + "RPF-IN-0004" + ], + "human_reported_error": "Truncated review URL; complete URL successfully read, acknowledged and accepted." +} diff --git a/docs/evidence/2026-10-05-lifecycle-cutover/human-outcome-after-restart.json b/docs/evidence/2026-10-05-lifecycle-cutover/human-outcome-after-restart.json new file mode 100644 index 0000000..738ce33 --- /dev/null +++ b/docs/evidence/2026-10-05-lifecycle-cutover/human-outcome-after-restart.json @@ -0,0 +1,29 @@ +{ + "dispositions": [ + { + "approved_at": "2026-10-04T22:17:19+00:00", + "disposition": { + "actor": { + "kind": "person", + "sub": "uid=platform-root,ou=people,dc=netkingdom,dc=local" + }, + "approval_id": "22b30fe7-c565-46f2-8193-d8875975ad9e", + "at": "2026-10-04T22:17:19Z", + "id": "disp-85ddaab7-8c8d-4bf3-8d39-e0e3c28c1c16", + "memo_id": "review-0d55a416-178c-46f5-b74b-b9b668390448", + "memo_version": 1, + "note": null, + "presentation_id": "pres-484c0ef3-0a87-4dbf-aa30-05fd21e19c91", + "reasons": [], + "verb": "accept" + }, + "submission_state": "confirmed" + } + ], + "review": { + "intake_state": "ready", + "memo_id": "review-0d55a416-178c-46f5-b74b-b9b668390448", + "path": "/review?memo_id=review-0d55a416-178c-46f5-b74b-b9b668390448", + "stale": false + } +} diff --git a/docs/evidence/2026-10-05-lifecycle-cutover/human-outcome.json b/docs/evidence/2026-10-05-lifecycle-cutover/human-outcome.json new file mode 100644 index 0000000..738ce33 --- /dev/null +++ b/docs/evidence/2026-10-05-lifecycle-cutover/human-outcome.json @@ -0,0 +1,29 @@ +{ + "dispositions": [ + { + "approved_at": "2026-10-04T22:17:19+00:00", + "disposition": { + "actor": { + "kind": "person", + "sub": "uid=platform-root,ou=people,dc=netkingdom,dc=local" + }, + "approval_id": "22b30fe7-c565-46f2-8193-d8875975ad9e", + "at": "2026-10-04T22:17:19Z", + "id": "disp-85ddaab7-8c8d-4bf3-8d39-e0e3c28c1c16", + "memo_id": "review-0d55a416-178c-46f5-b74b-b9b668390448", + "memo_version": 1, + "note": null, + "presentation_id": "pres-484c0ef3-0a87-4dbf-aa30-05fd21e19c91", + "reasons": [], + "verb": "accept" + }, + "submission_state": "confirmed" + } + ], + "review": { + "intake_state": "ready", + "memo_id": "review-0d55a416-178c-46f5-b74b-b9b668390448", + "path": "/review?memo_id=review-0d55a416-178c-46f5-b74b-b9b668390448", + "stale": false + } +} diff --git a/docs/evidence/2026-10-05-lifecycle-cutover/native-audit-after-acceptance.json b/docs/evidence/2026-10-05-lifecycle-cutover/native-audit-after-acceptance.json new file mode 100644 index 0000000..9f69b6d --- /dev/null +++ b/docs/evidence/2026-10-05-lifecycle-cutover/native-audit-after-acceptance.json @@ -0,0 +1,186 @@ +{ + "events": [ + { + "id": "8bc87458-c042-4e45-883d-d7c189a089f7", + "memo_id": "infd-20261005-lifecycle-production-proof", + "version": 1, + "kind": "registered", + "at": "2026-10-04T22:07:33.060609+00:00" + }, + { + "id": "ef7c9698-8466-45c8-872e-d6375b11bfa7", + "memo_id": "infd-20261005-lifecycle-recovery-notes", + "version": 1, + "kind": "registered", + "at": "2026-10-04T22:07:33.131538+00:00" + }, + { + "id": "db6229d0-ed8e-460a-8c56-778f2477244c", + "memo_id": "infd-20261005-lifecycle-production-proof", + "version": 1, + "kind": "source", + "at": "2026-10-04T22:07:33.201167+00:00" + }, + { + "id": "15249473-4736-4f1c-bb6c-d130aeb473c8", + "memo_id": "infd-20261005-lifecycle-production-proof", + "version": 1, + "kind": "evaluation", + "at": "2026-10-04T22:07:33.254457+00:00" + }, + { + "id": "9b51d039-4ded-41b4-b083-178644d25eb4", + "memo_id": "infd-20261005-lifecycle-production-proof", + "version": 1, + "kind": "comment", + "at": "2026-10-04T22:07:33.300510+00:00" + }, + { + "id": "85c3b0aa-46f9-4e96-b8eb-e7c48f70e732", + "memo_id": "infd-20261005-lifecycle-production-proof", + "version": 2, + "kind": "revised", + "at": "2026-10-04T22:07:33.355967+00:00" + }, + { + "id": "9a363333-5891-462a-af39-54e3161b7f6b", + "memo_id": "infd-20261005-lifecycle-production-proof", + "version": 2, + "kind": "published", + "at": "2026-10-04T22:07:33.401132+00:00" + }, + { + "id": "5a2e81e3-70fd-4ad4-8be4-140c5d88a8b8", + "memo_id": "infd-20261005-lifecycle-production-proof", + "version": 2, + "kind": "review_requested", + "at": "2026-10-04T22:07:33.595603+00:00" + }, + { + "id": "240451dc-4ef6-43d6-a5cd-99c098ae0d14", + "memo_id": "infd-20261005-lifecycle-production-proof", + "version": 2, + "kind": "source", + "at": "2026-10-04T22:09:20.847454+00:00" + } + ], + "receipts": [ + { + "id": "8bc87458-c042-4e45-883d-d7c189a089f7", + "class": "informed-decision.lifecycle", + "at": "2026-10-04T22:07:33.060609+00:00", + "state": "delivered", + "receiver_reference": "audit:8bc87458-c042-4e45-883d-d7c189a089f7" + }, + { + "id": "ef7c9698-8466-45c8-872e-d6375b11bfa7", + "class": "informed-decision.lifecycle", + "at": "2026-10-04T22:07:33.131538+00:00", + "state": "delivered", + "receiver_reference": "audit:ef7c9698-8466-45c8-872e-d6375b11bfa7" + }, + { + "id": "db6229d0-ed8e-460a-8c56-778f2477244c", + "class": "informed-decision.lifecycle", + "at": "2026-10-04T22:07:33.201167+00:00", + "state": "delivered", + "receiver_reference": "audit:db6229d0-ed8e-460a-8c56-778f2477244c" + }, + { + "id": "15249473-4736-4f1c-bb6c-d130aeb473c8", + "class": "informed-decision.lifecycle", + "at": "2026-10-04T22:07:33.254457+00:00", + "state": "delivered", + "receiver_reference": "audit:15249473-4736-4f1c-bb6c-d130aeb473c8" + }, + { + "id": "9b51d039-4ded-41b4-b083-178644d25eb4", + "class": "informed-decision.lifecycle", + "at": "2026-10-04T22:07:33.300510+00:00", + "state": "delivered", + "receiver_reference": "audit:9b51d039-4ded-41b4-b083-178644d25eb4" + }, + { + "id": "85c3b0aa-46f9-4e96-b8eb-e7c48f70e732", + "class": "informed-decision.lifecycle", + "at": "2026-10-04T22:07:33.355967+00:00", + "state": "delivered", + "receiver_reference": "audit:85c3b0aa-46f9-4e96-b8eb-e7c48f70e732" + }, + { + "id": "9a363333-5891-462a-af39-54e3161b7f6b", + "class": "informed-decision.lifecycle", + "at": "2026-10-04T22:07:33.401132+00:00", + "state": "delivered", + "receiver_reference": "audit:9a363333-5891-462a-af39-54e3161b7f6b" + }, + { + "id": "5a2e81e3-70fd-4ad4-8be4-140c5d88a8b8", + "class": "informed-decision.lifecycle", + "at": "2026-10-04T22:07:33.595603+00:00", + "state": "delivered", + "receiver_reference": "audit:5a2e81e3-70fd-4ad4-8be4-140c5d88a8b8" + }, + { + "id": "d94d567c-f7e0-48f1-980e-9609d69c5eec", + "class": "informed-decision.memo.posed", + "at": "2026-10-04T22:07:34.878488+00:00", + "state": "delivered", + "receiver_reference": "audit:d94d567c-f7e0-48f1-980e-9609d69c5eec" + }, + { + "id": "240451dc-4ef6-43d6-a5cd-99c098ae0d14", + "class": "informed-decision.lifecycle", + "at": "2026-10-04T22:09:20.847454+00:00", + "state": "delivered", + "receiver_reference": "audit:240451dc-4ef6-43d6-a5cd-99c098ae0d14" + }, + { + "id": "ev-9880cf77-3141-451b-852c-503610d37fb3", + "class": "informed-decision.presentation", + "at": "2026-10-04T22:16:37.000000+00:00", + "state": "delivered", + "receiver_reference": "audit:ev-9880cf77-3141-451b-852c-503610d37fb3" + }, + { + "id": "ev-b1d79a94-66aa-459d-bf10-3aff8c8c2d10", + "class": "informed-decision.presentation", + "at": "2026-10-04T22:17:06.000000+00:00", + "state": "delivered", + "receiver_reference": "audit:ev-b1d79a94-66aa-459d-bf10-3aff8c8c2d10" + }, + { + "id": "ev-60bf8da4-429e-4da8-8871-fdea5e8867b3", + "class": "informed-decision.disposition", + "at": "2026-10-04T22:17:19.000000+00:00", + "state": "delivered", + "receiver_reference": "audit:ev-60bf8da4-429e-4da8-8871-fdea5e8867b3" + }, + { + "id": "ev-6ad11d46-07a2-4f58-9d2b-6b8af3eafcb4", + "class": "informed-decision.disposition", + "at": "2026-10-04T22:17:19.000000+00:00", + "state": "delivered", + "receiver_reference": "audit:ev-6ad11d46-07a2-4f58-9d2b-6b8af3eafcb4" + } + ], + "receiver_counts": { + "audit-core.heartbeat": 2, + "informed-decision.disposition": 2, + "informed-decision.lifecycle": 9, + "informed-decision.memo.posed": 1, + "informed-decision.presentation": 2 + }, + "local_counts": { + "audit-core.heartbeat": 2, + "informed-decision.disposition": 2, + "informed-decision.lifecycle": 9, + "informed-decision.memo.posed": 1, + "informed-decision.presentation": 2 + }, + "counts_match": true, + "submissions": { + "confirmed": 25 + }, + "pending": 0 +} diff --git a/workplans/INFD-WP-0005-frictionless-decision-intake.md b/workplans/INFD-WP-0005-frictionless-decision-intake.md index fe338ca..5580dcb 100644 --- a/workplans/INFD-WP-0005-frictionless-decision-intake.md +++ b/workplans/INFD-WP-0005-frictionless-decision-intake.md @@ -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: finished flavor: implementation owner: claude topic_slug: netkingdom @@ -124,7 +124,7 @@ memo, and records the receipt. Replaces OPERATOR step A3. ```task id: INFD-WP-0005-T06 -status: progress +status: done priority: high state_hub_task_id: "c03016da-a795-5c5c-b86e-0ce9afc67be6" ``` @@ -159,7 +159,7 @@ evidence, notification and gated resolution delivery. Live acceptance remains T1 ```task id: INFD-WP-0005-T08 -status: progress +status: done priority: medium state_hub_task_id: "ce2b36b4-ef82-53b7-aee7-e0063855370b" ``` @@ -188,7 +188,7 @@ Record gate-house's answer in the spec; adjust ยง5 if doctrine requires it. ```task id: INFD-WP-0005-T10 -status: progress +status: done priority: low depends_on: [INFD-WP-0005-T05, INFD-WP-0005-T06] state_hub_task_id: "e7d98fc0-0e56-50e6-955d-c70209ad4712" @@ -291,3 +291,18 @@ restart and same-envelope replay preserve that one native receipt. T05 is done. T06/T08/T10 remain in progress for the human browser/acceptance return and final fallback documentation. Resolution write-back stays disabled. Platform RPF-IN-0004 tracks separately governed issuer rotation proof. No renewed cutover go is needed. + +## Initial audience accepted โ€” 2026-10-05 + +Native human acceptance is confirmed at 2026-10-04T22:17:19Z for approval +22b30fe7-c565-46f2-8193-d8875975ad9e. The selected workload retrieves the exact +source revision, human disposition and confirmation; Audit Core independently +reconciles. The initial intake scope is complete. Manual compact-sitting scripts +are documented as historical fallback only; new admitted decisions use the +lifecycle handoff and private dispatcher without per-record deployment. + +Residuals remain live: INFD-WP-0007-T02 owns broader profile/optional Hub +write-back contracts; INFD-WP-0007-T05 owns workspace/overview discovery follow-up. +Platform RPF-IN-0004 owns separately governed issuer rotation proof. Write-back +stays disabled and no extra caller is admitted. No residual is closed by this +workplan's completion. diff --git a/workplans/INFD-WP-0007-decision-lifecycle-service.md b/workplans/INFD-WP-0007-decision-lifecycle-service.md index 4747815..4bacfa0 100644 --- a/workplans/INFD-WP-0007-decision-lifecycle-service.md +++ b/workplans/INFD-WP-0007-decision-lifecycle-service.md @@ -51,14 +51,16 @@ Define versioned API schemas, application service interfaces, caller/tenant context, source/evaluation/comment companion records, revision concurrency, publication audience, idempotency, errors, limits and result retrieval. Resolve the spec's open identity/publication/source/non-approval binding contracts. -Review against existing schema and engine contracts. Preserve private intake +Review against existing schema and engine contracts. Residual from INFD-WP-0005: +retain separate optional Hub outcome write-back and broader profile contracts; +write-back remains disabled until independently admitted. Preserve private intake and current review URLs. Produce a reviewed migration and compatibility plan. ## Implement durable headless lifecycle foundation ```task id: INFD-WP-0007-T03 -status: progress +status: done priority: high depends_on: [INFD-WP-0007-T02] state_hub_task_id: "2a206bc2-cb92-539d-9014-9ba71f70277c" @@ -75,7 +77,7 @@ and absence of UI imports. No mirrored approval state. ```task id: INFD-WP-0007-T04 -status: progress +status: done priority: high depends_on: [INFD-WP-0007-T03] state_hub_task_id: "65c760da-de7e-5e85-9817-6f3e2b46c8f9" @@ -96,6 +98,10 @@ depends_on: [INFD-WP-0007-T04] state_hub_task_id: "a6a7c9a8-760e-52dd-80d3-d36f43f0a86a" ``` +Residual from INFD-WP-0005: review overview listing currently remains exact-record +only; define attribute-based discovery with Access Engine while retaining fresh +read/act decisions. The lifecycle workspace already lists published records. + Add discovery, authoring, research/evaluation views, publication audience controls, discussion, revision comparison and human review through the shared foundation. Keep agents clearly attributed, acceptance revision-specific and authentication @@ -105,7 +111,7 @@ step-up understandable. Verify existing URLs and old records remain usable. ```task id: INFD-WP-0007-T06 -status: progress +status: done priority: high depends_on: [INFD-WP-0007-T04, INFD-WP-0007-T05] state_hub_task_id: "aa839bea-cc4c-5ee0-85e7-87c881e8e578" @@ -121,7 +127,7 @@ packet before requesting the separately required live rollout approval. ```task id: INFD-WP-0007-T07 -status: progress +status: done priority: high depends_on: [INFD-WP-0007-T06] state_hub_task_id: "25fa4743-5c7e-5609-9872-7c5971ff62bc" @@ -353,3 +359,15 @@ Review memo: review-0d55a416-178c-46f5-b74b-b9b668390448; Approval Engine id: are settled. Human disposition remains pending; no agent acceptance is claimed. Evidence: docs/evidence/2026-10-05-lifecycle-cutover/. T07 stays in progress; broader browser profiles and unresolved spec items remain in T02/T05/T06. + +## Native acceptance complete โ€” 2026-10-05 + +The human accepted at 2026-10-04T22:17:19Z. Native entry correlation: +approval 22b30fe7-c565-46f2-8193-d8875975ad9e, presentation +pres-484c0ef3-0a87-4dbf-aa30-05fd21e19c91, disposition +disp-85ddaab7-8c8d-4bf3-8d39-e0e3c28c1c16, source revision 2. +The selected workload retrieved confirmation; Audit Core counts match and +lifecycle pending is zero. T03/T04/T06/T07 are done for the admitted initial +audience. T02 and T05 remain active for the named broader contracts and UI work. +The first reported review error was a truncated URL missing its final UUID +segment; the complete link passed read, acknowledgment and acceptance checks.