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:
parent
49f8eb4c4b
commit
ff59199c3b
13 changed files with 452 additions and 60 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue