fix: repair chained imports and track blocked evidence dependencies
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s

Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a1046e-465c-7d43-8c4c-d10f0a1feadd
This commit is contained in:
tegwick 2026-10-04 11:36:06 +02:00
parent 28b567e588
commit 146f4e1dd3
21 changed files with 869 additions and 95 deletions

View file

@ -24,7 +24,8 @@ description: >
deny/redact/not_applicable without a durable record when the outbox commit
fails and counts them as released_uncommitted, and for the token lane.
created: '2026-09-23'
updated: '2026-09-24'
updated: '2026-10-04'
work: AUDIT-WP-0013-T02
outcome: accepted-with-corrections-registration-deferred
resolution: '(1) One sender per pin: accepted, since each pin can reconcile only
what it committed. Correction: may_read false, not true. A writer counts its
@ -54,6 +55,9 @@ resolution: '(1) One sender per pin: accepted, since each pin can reconcile only
openbao-attended-exec.py, as for tenant-engine (AUDIT-WP-0010-T02).
Registration entries are deferred until the flex-auth outbox exists
(FLEX-WP-0031-T03), at flex-auth''s own request.'
follow_up: 'AUDIT-WP-0013-T02/T03: FLEX-WP-0031-T03 outbox is already done.
Await final per-pin payloads, catalog and attended custody; final GH-WP-0004-T12
ruling remains separate from transport. Requirements: docs/cross-repo-evidence-admission.md.'
recorded_in: intakes/intakes.md
state_hub_intake_id: "01a0d1e0-e10c-714e-9485-9dd841dafbbb"
```
@ -208,7 +212,7 @@ state_hub_intake_id: "01a08b76-05b9-7a53-8359-9cda50755f28"
id: AUDIT-IN-0002
kind: intake
title: 'Register tenant-engine as an attributive audit-core sender'
status: open
status: closed
origin: cross-repo
origin_ref: TEN-WP-0011-T04
priority: high
@ -232,26 +236,16 @@ description: >
Requested: sender registration + token lane, or a correction if the
envelope needs a field this engine is not sending.
created: '2026-08-29'
updated: '2026-09-10'
outcome: registered-with-a-blocking-correction
resolution: 'Registered attributive with the declared completeness_trade
recorded receiver-side, tenants ["*"] justified per sender, source pinned
exact, ingress added — all inert pending the token
(docs/tenant-engine-source-registration.md, AUDIT-WP-0010 T01/T03/T04).
Taking the correction the intake invited: the envelope does not match.
envelope_for sends five required fields under other names (event_id, action,
resource, observed_at, details) and omits correlation_id entirely, so
normalize() raises invalid_event and every event would 400 and dead-letter.
Because the drain treats 400 as terminal, the outbox row is marked handled
while audit-core holds only a dead letter — lost on both sides, silently,
presenting as a working integration. normalize() is not being relaxed to
accept the alternate spellings: guessing which sender key means which stored
field would make the mapping audit-core''s rather than the sender''s, and
correlation_id cannot be synthesized at all. Root cause is audit-core''s —
the wire envelope was documented nowhere a sender could read it, and
schema_version audit-core.event.v1alpha1 selects nothing here. Contract now
published at docs/event-envelope.md. Stays OPEN until tenant-engine corrects
the emitter and T05 records live evidence.'
updated: '2026-10-04'
closed: '2026-09-15'
work: AUDIT-WP-0010-T05
outcome: promoted
resolution: 'Reconciled 2026-10-04 against AUDIT-WP-0010-T05: completed
2026-09-15, native tenant-engine Job accepted 202 then duplicate 200 with
intact 60-event chain. Receipt docs/evidence/2026-09-15-tenant-engine-accept.json.
This supersedes the historical envelope/input wait. Ongoing producer Deployment
drain wiring remains tenant-engine-owned and is not re-opened as audit-core
sender admission.'
state_hub_intake_id: "01a04d8f-b1c1-746a-8007-15221ebf0a48"
```
@ -316,14 +310,21 @@ state_hub_intake_id: "01a04d8f-be67-75ed-a221-d50f99dbb78e"
id: AUDIT-IN-0004
kind: intake
title: Repair SQLite import into chained PostgreSQL custody
status: open
status: closed
origin: residual
origin_ref: AUDIT-WP-0005
priority: medium
owner: audit-core
requested_by: codex
created: '2026-09-11'
updated: '2026-09-11'
updated: '2026-10-04'
closed: '2026-10-04'
work: AUDIT-WP-0012
outcome: repaired-and-postgres-verified
resolution: 'Snapshot import shares native chain lock, follows stored links without
rewriting historical times/links, and uses transactional replay receipts for
dead letters and incremental findings. Full PostgreSQL suite passes without
migration exclusions. Source completion only; no native import performed.'
description: >
The 2026-09-11 receiver release rehearsal enables real PostgreSQL tests.
Five tests in tests/test_migrate_store.py fail because _import_event omits