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
This commit is contained in:
parent
ff59199c3b
commit
b4f637326b
3 changed files with 32 additions and 22 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue