Answer flex-auth B3: the emitter is the section 4 source, not the archive
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s

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:
codex 2026-09-21 02:09:47 +02:00
parent 5dc70afe64
commit 40fc7d694c
5 changed files with 338 additions and 1 deletions

View file

@ -100,3 +100,49 @@ def test_the_receiver_has_no_api_server_egress():
assert "443" in attest
assert "6443" not in receiver
assert "443" not in receiver
# AUDIT-IN-0005 — §11's emission-guarantee check, made mechanical for audit-core's
# own declaration. The ruling itself lives in docs/section-4-source-of-evidence.md;
# these assert that the declaration keeps saying what the ruling says.
def test_audit_core_declines_the_source_of_evidence_role():
"""The archive is not the source. AUDIT-IN-0001, AUDIT-IN-0005."""
assert LAYER["source_of_evidence"] is False
note = LAYER["source_of_evidence_note"].lower()
assert "non-production" in note
assert "sender" in note
def test_the_attestation_emission_is_declared_and_not_rate_monitored():
"""A rare load-bearing class may not rest on rate monitoring (§11)."""
rows = {row["id"]: row for row in LAYER["emission_guarantee"]}
attestation = rows["chain-head-attestation"]
assert attestation["class"] == "load-bearing"
assert attestation["rarity"] == "rare"
assert attestation["rate_monitoring"] == "forbidden"
# All three things §11 asks a source to state.
assert attestation["cadence"]["interval"] == "daily"
assert attestation["detection_surface"]["form"] == "freshness-window"
def test_the_declared_cadence_matches_the_deployed_schedule():
"""Declared against the manifest, so drift fails here rather than at review."""
cronjob = (ROOT / "deploy" / "attest-cronjob.yaml").read_text()
declared = next(
row for row in LAYER["emission_guarantee"]
if row["id"] == "chain-head-attestation"
)["cadence"]
assert declared["schedule"] in cronjob
assert declared["published_to"].split()[-1] in cronjob
def test_the_declared_freshness_window_matches_the_contract():
surface = next(
row for row in LAYER["emission_guarantee"]
if row["id"] == "chain-head-attestation"
)["detection_surface"]
assert surface["window_hours"] == 168
contract = (ROOT / surface["contract"]).read_text()
assert "168 hours" in contract