Answer flex-auth B3: the emitter is the section 4 source, not the archive
AUDIT-IN-0005. flex-auth produces the decision record, declares no §11 emission guarantee, and declined to take the reading that moves the obligation to audit-core. audit-core declines it too, on its own authority: class, cadence and detection surface are properties of emitting; audit-core cannot detect non-production; the obligations already sit on each sender registration; archive-as-source would make §11's check vacuous; and no access-engine sender is registered at all. Binds audit-core, does not rule §11 — gate-house still owns that, so flex-auth's G2 stays open. Reflexive half: audit-core's own chain-head attestation emission is now declared in layer.yaml rather than only in docs/integrity.md prose, and asserted against the CronJob and the contract by test. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 63291@bnt-lap001 Assistant-Session: 8bd77868-ca68-4f49-bb1e-d539ecc0d703
This commit is contained in:
parent
5dc70afe64
commit
40fc7d694c
5 changed files with 338 additions and 1 deletions
50
layer.yaml
50
layer.yaml
|
|
@ -81,3 +81,53 @@ evidence_bound:
|
|||
- external chain-head attestation stored outside platform-pg
|
||||
contract: docs/integrity.md
|
||||
not_claimed: [WORM, object-lock, archival-custody]
|
||||
|
||||
# §11 emission guarantee — AUDIT-IN-0005, docs/section-4-source-of-evidence.md
|
||||
#
|
||||
# §11 requires the declaration from a repository catalogued in §4 as a SOURCE of
|
||||
# evidence. audit-core is catalogued as the Evidence engine — the custody and
|
||||
# detection half — and emits no event into another repository's custody. The
|
||||
# emission guarantee for an event belongs to the repository that emits it; that
|
||||
# is audit-core's standing boundary (AUDIT-IN-0001, AUDIT-WP-0009 non-goals) and
|
||||
# the reason audit-core declines the source role for access-engine's decision
|
||||
# record.
|
||||
#
|
||||
# The one artifact audit-core does produce on its own behalf is declared anyway,
|
||||
# in the same spirit as uncatalogued_infrastructure above: stated so the check is
|
||||
# total rather than vacuous, not because §11 is read to compel it. Prose in
|
||||
# docs/integrity.md is not a machine-readable declaration — the defect audit-core
|
||||
# raised against another repository, so not one it leaves standing in its own.
|
||||
source_of_evidence: false
|
||||
source_of_evidence_note: >-
|
||||
audit-core holds custody and the detection surface. Emission class, cadence and
|
||||
detection obligations sit on each sender's registration
|
||||
(deploy/senders-scope.{json,yaml}, heartbeat_classes per class), never on the
|
||||
archive. audit-core cannot detect non-production by a source and claims no
|
||||
ability to — AUDIT-IN-0003, GH-DEC-2026-014 limit 3.
|
||||
|
||||
emission_guarantee:
|
||||
- id: chain-head-attestation
|
||||
emits: external chain-head attestation for the audit event chain
|
||||
class: load-bearing
|
||||
rarity: rare # one scheduled artifact per day, never volume
|
||||
rate_monitoring: forbidden # §11 / emission-cadence profile, rare class
|
||||
cadence:
|
||||
form: scheduled
|
||||
interval: daily
|
||||
schedule: "17 3 * * *" # UTC, deploy/attest-cronjob.yaml
|
||||
producer: CronJob audit-core-attest-chain, its own ServiceAccount
|
||||
published_to: ConfigMap audit-core-chain-head
|
||||
detection_surface:
|
||||
form: freshness-window
|
||||
window_hours: 168 # 7x the cadence; widens, never removes
|
||||
on_absence: >-
|
||||
tamper_evidence degrades to False with the reason recorded, and a missing,
|
||||
unreadable, undated or stale attestation is treated the same as absent.
|
||||
Non-production is detected deterministically at read time by the consumer
|
||||
of the claim, not inferred from a rate.
|
||||
surfaces: ["GET /v1/integrity", "GET /readyz (last-known, no chain walk)"]
|
||||
contract: docs/integrity.md
|
||||
bound: >-
|
||||
The attestation proves the head it cites; it is not WORM and does not prove
|
||||
any record was ever sent. An operator-run offsite copy is a separate lane
|
||||
and is not claimed as part of this guarantee.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue