From b4f637326ba3c2526f4648c4c90544948408d53f Mon Sep 17 00:00:00 2001 From: tegwick Date: Sat, 3 Oct 2026 22:27:26 +0200 Subject: [PATCH] Record that hub forwarding preserves governed booleans. state-hub d61ba32 accepts requires_new_bind, required_ack, and sealed. The p01 cross-repo check now expects a delivered pose that keeps those bools. T08 stays waiting on the service account, grant, and T05/T06. Assistant: grok Assistant-Session: 01a10286-9185-7bb2-b411-89cf6ab4c0c6 --- docs/intake-dependency-requirements.md | 23 ++++++++++++------- tests/test_intake_delivery_runtime.py | 17 ++++++++------ ...FD-WP-0005-frictionless-decision-intake.md | 14 +++++------ 3 files changed, 32 insertions(+), 22 deletions(-) diff --git a/docs/intake-dependency-requirements.md b/docs/intake-dependency-requirements.md index a6ec9c9..31be1f6 100644 --- a/docs/intake-dependency-requirements.md +++ b/docs/intake-dependency-requirements.md @@ -95,13 +95,13 @@ Existing request: `e30dea31-90e3-4fc0-954a-ed8412b52aca`. Deliver forwarding with the projected intake-audience SA token, bounded envelope, stable idempotency key, durable retry and receipt retention. Owner commit `49eeddb` provides a dev-only forwarding fixture and retained notification -receipts. Its `_bounded_tree` accepts only int/float/null scalar leaves and -rejects governed memo booleans (`requires_new_bind`, `required_ack`, `sealed`) -with `invalid_type`; a cross-repo negative fixture reproduces this using p01. -Accept boolean leaves without removing or coercing shared-schema binding fields, -then provide pose/replay/conflict and browser/PDP acceptance evidence. The -fixture is unscheduled and does not choose/admit an account. Identify the actual -SA and supply runtime forwarding to review into the submitter registry. +receipts. `d61ba32` accepts governed memo booleans (`requires_new_bind`, +`required_ack`, `sealed`) as boolean leaves; a cross-repo fixture submits the +real p01 envelope and checks those values are preserved. Do not strip or coerce +shared-schema binding fields. Pose/replay/conflict evidence exists in the dev +fixture. Browser/PDP acceptance remains open. The fixture is unscheduled and +does not choose/admit an account. Identify the actual SA and supply runtime +forwarding to review into the submitter registry. Forwarding proves the hub identity; drafted_by remains visibly asserted. The dedicated endpoint `POST /informed-decision/notifications` accepts only id/question/class/submitter using our stable delivery id as Idempotency-Key. @@ -162,6 +162,13 @@ Full suite with `INFD_AUDIT_CORE_SOURCE=/home/worsch/audit-core` and Checks include posed receiver acceptance/lost-reply replay, immutable local evidence/counts, readiness refusal, notification contract/receipt matching, resolution retry on unreadable conflicts, explicit runtime configuration and -the State Hub forwarder's governed-boolean refusal. `git diff --check` passed. +the State Hub forwarder's governed-boolean refusal at `49eeddb`. No new tasks/workplans or live changes were created. T07 is complete locally; T05/T06/T08/T10 remain waiting and INFD-WP-0005 remains blocked. + +Boolean follow-up, same source roots: state-hub `d61ba32` delivers the real p01 +envelope and preserves `requires_new_bind`, `required_ack`, and `sealed`. +Focused intake tests: 46 passed, 3 skipped. A later full local run was +449 passed, 64 skipped, and 4 failed outside this change (`waitress` is not +installed, and one access-token audience case in `test_browser_auth.py`). +`git diff --check` passed for this follow-up. T08 stays waiting. diff --git a/tests/test_intake_delivery_runtime.py b/tests/test_intake_delivery_runtime.py index 1b0d55e..d624e26 100644 --- a/tests/test_intake_delivery_runtime.py +++ b/tests/test_intake_delivery_runtime.py @@ -162,7 +162,7 @@ def hub_contract(): return informed_decision_contract, memo_forwarding -def test_actual_hub_forwarder_refuses_governed_boolean_fields(setup, hub_contract, tmp_path): +def test_actual_hub_forwarder_preserves_governed_boolean_fields(setup, hub_contract, tmp_path): service, store, creates, _ = setup contract, forwarding = hub_contract body = envelope() @@ -176,12 +176,15 @@ def test_actual_hub_forwarder_refuses_governed_boolean_fields(setup, hub_contrac fixture = forwarding.DevIntakeFixture(tmp_path / 'hub.sqlite', transport=transport, intake_base_url='https://intake.test', hub_base_url='https://hub.test', token_reader=lambda: 'projected-token') - # Owner commit 49eeddb only permits int/float/null leaves, rejecting the - # shared schema's actual bools. Do not strip or change those binding fields. - with pytest.raises(contract.ContractError) as refused: - fixture.submit(body) - assert refused.value.code == 'invalid_type' - assert not store.memos_for('keycape-human') and not creates and not calls + # Owner commit d61ba32 accepts the shared schema's bool leaves. Do not strip + # or coerce requires_new_bind, required_ack, or sealed. + posed = fixture.submit(body) + assert posed.status == 'delivered' and len(calls) == 1 and len(creates) == 1 + memo = calls[0]['memo'] + assert memo['binding']['target']['requires_new_bind'] is False + assert memo['highlights'][0]['required_ack'] is True + assert memo['sealed'] is False + assert store.memos_for('keycape-human') assert b'projected-token' not in Path(fixture.path).read_bytes() diff --git a/workplans/INFD-WP-0005-frictionless-decision-intake.md b/workplans/INFD-WP-0005-frictionless-decision-intake.md index 341a736..73ee780 100644 --- a/workplans/INFD-WP-0005-frictionless-decision-intake.md +++ b/workplans/INFD-WP-0005-frictionless-decision-intake.md @@ -167,18 +167,18 @@ id: INFD-WP-0005-T08 status: wait priority: medium blocked_on: message-from:state-hub -blocking_reason: "Owner dev forwarder 49eeddb refuses governed bool fields (invalid_type); state-hub must fix its contract, choose the actual SA and supply reviewed grant/runtime forwarding (msg e30dea31), alongside T05/T06" +blocking_reason: "state-hub must choose the actual SA and supply reviewed grant/runtime forwarding (msg e30dea31), alongside T05/T06" 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. -The owner's DevIntakeFixture now has a cross-repo negative fixture against the -real p01 envelope: `_bounded_tree` refuses `requires_new_bind`, `required_ack` -and `sealed` booleans. The owner must accept shared-schema boolean leaves; -removing or coercing binding fields here is not a compatible workaround. -Production submitter registration and browser/PDP acceptance also wait on -T05/T06 and the owner's chosen SA/runtime forwarding. +state-hub `d61ba32` accepts shared-schema boolean leaves. The cross-repo +fixture submits the real p01 envelope and preserves `requires_new_bind`, +`required_ack`, and `sealed`. Stripping or coercing those fields is not a +compatible workaround. Production submitter registration and browser/PDP +acceptance still wait on T05/T06 and the chosen SA and reviewed runtime +forwarding. ## Doctrine response