AUDIT-WP-0009-T11 — register informed-decision, and answer GH-DEC-2026-014
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s

informed-decision is the browser-facing approver surface; GH-DEC-2026-012
limit 3 makes its evidence copy the one that must reach audit-core
independently of the emitter, because there the actor being audited and the
evidence source are the same component.

Registration accepted on every proposed field — exact source,
["tenant:platform"], write true, read false, load-bearing, secret_policy
redact. Prepared and inert: the scope overlay applies only to a sender the
Secret already carries, asserted by test rather than by reading. Ingress ANDs
namespace and pod label in one peer, following approval-engine rather than
user-engine's older breadth.

Gate House asked whether the record shape can carry a source-held-content
declaration with a retrieval expectation, and asked for a straight answer
rather than a rule the storage cannot meet. Both halves, which must travel
together:

  It CAN carry the declaration. data is stored verbatim into details.data and
  hash-chained, so content_exists and custody need no schema change and become
  as tamper-evident as the commitment they accompany.

  It CANNOT detect non-production. audit-core performs no retrieval and its
  egress permits Postgres and DNS only. Detection happens at retrieval, by the
  reviewer; the stored declaration is what turns a blank into a failure
  attributable to the named custodian.

Residual stated rather than left to be found: a custodian that never held the
content can emit a false content_exists. audit-core validates the declaration's
shape, never its truth — the same class as omission at source, and not closed
by the chain, by attestation, or by T04/T06. A test asserts no egress to the
emitter exists, because that claim silently stops being true if one appears.

Cadence: reconciliation plus heartbeat is right for a mixed-volume source, with
both scoped per class rather than per source — a per-source heartbeat is
satisfied by the high-volume presentation stream and says nothing about a quiet
month of dispositions. Bound: a compromised emitter suppresses the event and
its own count together.

Also recorded: commitment-only satisfies non-alteration and never
reconstructability, in this repo's documents as in theirs; and tenant
provenance under GH-DEC-2026-013 lands in the registration record, not the
envelope, since audit-core checks a value the credential may write rather than
resolving an identity claim.

No secret was created and no production manifest applied.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nb7Q6ZmXppNDkTWytfYqfv

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2069992@bnt-lap001
Assistant-Session: 167dd7f8-2a25-4be1-aa46-3b6f1a5f94c6
This commit is contained in:
tegwick 2026-09-10 15:15:35 +02:00
parent 565e7e38d4
commit c4016a70d5
8 changed files with 486 additions and 4 deletions

View file

@ -287,6 +287,62 @@ intervals for a store another layer reads, which `platform-pg` is. List it and
the State Hub now. Add a conformance script and test in the shape ops-warden
offered estate-wide.
```task
id: AUDIT-WP-0009-T11
status: progress
priority: high
```
Register `informed-decision` as a distinct load-bearing source under
`AUDIT-IN-0003`, and answer the doctrine question `GH-DEC-2026-014` put to
audit-core: whether the record shape can carry a source-held-content
declaration with a retrieval expectation.
`informed-decision` is the browser-facing approver surface. `GH-DEC-2026-012`
limit 3 makes its evidence copy the one that must reach audit-core
independently of the emitter, because there the actor being audited and the
evidence source are the same component. `GH-DEC-2026-014` then granted
commitment-only payloads for Stage 1 under a condition Gate House added: the
record must assert that committed content **exists** and where **custody**
sits, so non-production is a finding attributable to the custodian rather than
an unremarkable blank.
**Done 2026-09-10, prepared and inert:**
`docs/informed-decision-source-registration.md`, scope entries in
`deploy/senders-scope.{json,yaml}`, and
`audit-core-informed-decision-ingress` in `deploy/networkpolicies.yaml`
(namespace AND pod label in one peer, following approval-engine rather than
`user-engine`'s older breadth). Every proposed field accepted as-is: exact
source, `["tenant:platform"]`, write true, read false, `load-bearing`,
`secret_policy: redact`.
**The answer to Gate House's condition, in two halves that must travel
together.** The fabric *can* carry the declaration — `data` is stored verbatim
into `details.data` and chained, so `content_exists` and `custody` need no
schema change and become as tamper-evident as the commitment they accompany. It
*cannot* detect non-production: audit-core performs no retrieval and its egress
policy permits Postgres and DNS only, so it never learns whether a custodian
would produce. Detection happens at retrieval, by the reviewer, and the stored
declaration is what turns a blank into an attributable failure. Residual stated
rather than left to be found: a custodian that never held the content can emit a
false `content_exists`; audit-core validates the declaration's shape, never its
truth. Not a requirement nobody can meet, and not the stronger thing it might be
mistaken for.
**Cadence answered:** reconciliation-per-class plus heartbeat for the low-volume
classes is the right shape for a mixed-volume source, with both scoped **per
class** rather than per source — a per-source heartbeat is satisfied by the
high-volume presentation stream and says nothing about a quiet month of
dispositions. Bound stated: where the emitter itself is compromised, it
suppresses the event and its own count together, so neither control covers the
residual `GH-DEC-2026-012` limit 3 exists for. Depends on T04/T06 for the
detection half; declaring the cadence now is correct, describing it as operating
is not.
Remaining: token custody, the protected registry entry, operator manifest
application, and live ingestion evidence. No secret was created and no
production manifest applied.
## Acceptance
- No custody claim is returned unconditionally where `docs/integrity.md`