Complete intake delivery wiring and narrow remaining owner blockers

Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a1029c-c003-7283-acc9-930b434e6cae
This commit is contained in:
tegwick 2026-10-03 21:34:50 +02:00
parent 49f8eb4c4b
commit ff59199c3b
13 changed files with 452 additions and 60 deletions

View file

@ -10,8 +10,10 @@ a bounded transport. Store schema 3 migrates existing schema 1/2 databases and
adds the submission ledger and integration outbox. Packet bytes, pinned memo,
ready ledger and posed/notification jobs commit in one transaction. Terminal
human dispositions queue hub resolution in their existing evidence transaction.
`IntakeDeliveryWorker` dispatches injected audit, notification and hub transports
with leases, stable ids, bounded retries and a disabled-by-default write-back.
`IntakeDeliveryWorker` and the optional scheduled runtime dispatch audit,
notification and hub transports with leases, stable ids, bounded batches and a
disabled-by-default write-back. Posed events use the ordinary immutable audit
outbox, receipts, per-class reconciliation and readiness checks.
No listener is composed into the deployed runtime yet; shipped registries are
empty, so no caller is admitted. No live deployment occurred.
@ -75,31 +77,50 @@ condition on offline tests or initial dev rollout.
Existing request: `23b670ac-809e-49bf-9233-e0b62cf0a039`.
Register `informed-decision.memo.posed` for source informed-decision and tenant
Completed locally by AUDIT-WP-0011 (`audit_core/ingestion.py` and sender registry).
The registered contract accepts `informed-decision.memo.posed` for source informed-decision and tenant
platform; accept the locally retained event envelope containing memo/approval
ids, carried binding digest, authenticated forwarding submitter, memo class and
submission digest. No packet, brief, or secret content. Confirm sender custody,
Idempotency-Key receipts and heartbeat/reconciliation requirements for the new
class. Provide positive/duplicate/refusal fixtures. Only then connect posed
jobs to AuditCoreSink and include the class in runtime readiness/reconciliation.
submission digest. No packet, brief, or secret content. T07 now connects posed
jobs to AuditCoreSink, preserving the original event id on recovery and duplicate
receipts. The new class participates in readiness, reconciliation and optional
86400-second heartbeat. Actual receiver tests cover acceptance, lost replies and
duplicate receipts. Sender custody and deployed receiver/version acceptance
remain part of T10; owner-local registration is not deployment evidence.
## state-hub — T07, T08
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. Identify the actual
SA to review into the submitter registry. Forwarding proves the hub identity;
drafted_by remains asserted and must be visibly described that way. Add a dev
fixture for pose/replay/conflict and a deduplicated notification contract using
our stable delivery id. Notifications carry only id/question/class/submitter;
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.
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.
Its receipt and founder message commit in one transaction; the receipt is
retained independently of generic write-key TTL. `HubDelivery` checks the
delivery id, message UUID, all echoed metadata, accepted status and
signed-in-overview reference; queued
relay acknowledgements remain pending. Notifications carry only id/question/class/submitter;
the signed-in overview is the authoritative review entry point.
Confirm resolve semantics: terminal human accept/decline only; return/discuss
and resolves: never do not resolve. A 409 must allow reading an existing
resolution to correlate it. Delivery failure retains local evidence and retries;
other-memo conflicts block for review. Bind the hub transports and schedule
IntakeDeliveryWorker in the runtime after these contracts are accepted. Keep
other-memo conflicts block for review. T07 binds hub transports and schedules
IntakeDeliveryWorker in the runtime with explicit `intake_delivery` configuration.
Generic resolution idempotency retention defaults to 14 days. A resolved
decision refuses a repeated resolve and can be correlated by read after a 409;
unreadable conflicts remain retryable. Queued or mismatched success responses
are not delivery receipts. Keep
INFD_HUB_WRITEBACK unset until deployment approval and end-to-end evidence.
## gate-house and founder — T09, T10
@ -114,13 +135,33 @@ retirement of exact-record admission after its memos become terminal.
T10 resumes after T05–T08 acceptance and founder approval for the concrete
rollout. Record dev positive/negative traces first, then one live human answer
with audit and write-back receipts. The provisioning sitting's human binding
remains blocked in INFD-WP-ADHOC-2026-10-03-T02.
was completed in INFD-WP-ADHOC-2026-10-03-T02 (p01 accepted with native engine
and audit receipts); it does not approve a new intake rollout.
## Opt-in delivery configuration
The private review runtime v1 file may include:
```json
"intake_delivery": {
"hub_origin": "http://state-hub.state-hub.svc.cluster.local:8000"
}
```
Omitting this field preserves the existing runtime: no intake deliveries or new
posed heartbeat are scheduled. Configuration uses the existing audit custody;
it neither enables a listener nor grants submitter access. `INFD_HUB_WRITEBACK`
still defaults off. Terminal resolution failures retain the human's existing
evidence and pending delivery; they never repeat the human act.
## Verification
`uv run --extra dev python -m pytest -q`: 437 passed, 67 skipped (optional
component fixtures are not enabled in this run). After the final receipt-recovery
concurrency guard and nonempty-entry response refusal, the affected intake,
runtime migration, durable store and write-back suites: 63 passed, 1 skipped.
`git diff --check` passed. State Hub consistency reconciled the blocked plan,
completed T04/T09 and waiting T07; no registrar fallback was required.
Full suite with `INFD_AUDIT_CORE_SOURCE=/home/worsch/audit-core` and
`INFD_STATE_HUB_SOURCE=/home/worsch/state-hub`: 452 passed, 65 skipped
(optional Approval Engine/Flex Auth component fixtures are not enabled).
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.
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.

View file

@ -256,9 +256,11 @@ intake fact from a signed intake receipt. Then the PEP carries only ids.
(`deploy/review-groups.json`: review group → named recipient KeyCape `sub`),
never from memo content. Draft principal `pending-human-session` stays in the
unsigned record; the live bind still substitutes the authenticated subject.
- Notification: a State Hub message to the founder's inbox (`to_agent`
configured, default `bernd`) with memo id, question, class, submitter and the
review link. The signed-in overview (INFD-WP-0003) lists it as pending.
- Notification: the retained State Hub notification endpoint creates a message
to the founder's inbox (`bernd`) with memo id, question, class and submitter.
The owner contract prohibits URLs and names the signed-in overview as the
authoritative review entry point, replacing the initially proposed review
link. The overview (INFD-WP-0003) lists admissible memos as pending.
No packet content, no highlights, no secrets in the notification. Email/push
is a later channel owned elsewhere.
- audit-core receives `informed-decision.memo.posed` (submitter, class,
@ -369,7 +371,9 @@ R2/R5 re-arming includes authenticated drafting identity and independent grant
review. The unsigned PDP attribution gap remains explicitly declared.
The offline service and its durable integration worker are implemented; shipped
registries are empty and transports are injected. Runtime composition and live
registries are empty. Optional review-runtime delivery configuration now binds
State Hub transports and schedules posed audit evidence, notification and
disabled-by-default resolution. Private intake listener composition and live
acceptance remain blocked on the owner requirements in
`docs/intake-dependency-requirements.md`. These requirements do not arm a live
control or grant custody/deployment approval.