AUDIT-WP-0009-T11 — register informed-decision, and answer GH-DEC-2026-014
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:
parent
565e7e38d4
commit
c4016a70d5
8 changed files with 486 additions and 4 deletions
|
|
@ -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`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue