The contract T05 waited on is published: info-tech-canon emission-cadence wire schema 0.1, contract digest b08b4d95fc4b0bd3. A source-owned declaration now travels as emission_cadence on the sender registration; expected-rate entries raise below_declared_cadence on /v1/stream-findings from the same counts /v1/reconciliation returns. heartbeat-or-reconciliation entries are validated and left to T04/T06. Records the observer evaluation of net-kingdom's local-identity declaration: structurally clean, not operationally evaluated, one heartbeat event_class mapping incompatibility. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 151986@bnt-lap001 Assistant-Session: ccd02b6b-80ae-48e5-8cad-9c8f74d21a67
5.8 KiB
SCOPE
Boundary contract for audit-core, aligned to NetKingdom Security Layer Model
v0.7 (accepted) and its working companion. INTENT.md says what Audit Core is
for; this file says what it does and does not do, and is the file to check
before adding a surface.
One-liner
The estate's Evidence engine: durable, tenant-aware custody of audit events, with an honest and bounded integrity claim.
Layer and role
Engine / Evidence (statute §3.3, §4). Deterministic API over one modeled
concept — the audit event. Declared in INTENT.md frontmatter and layer.yaml.
Audit Core is not a PDP, not a PIP, and not PEP-shaped. It renders no decision, supplies no claim a decision consumes, and causes no protected side effect of its own.
In Scope
Custody and integrity
- Event ingestion, validation, normalization to the Audit Core envelope, redaction, and append-only operational custody.
- Sender registration and binding; tenant and scope attribution.
- Hash-chain integrity: link, verify, chain-head attestation, and the
GET /v1/integrityoperator surface. - The honest custody claim —
custody_class,immutable,tamper_evidence,recoverable_days— stated at no more thandocs/integrity.mddelivers. - Retention profiles, search and export entitlements, dead-letter and secret-finding surfaces.
Evidence-role obligations under v0.7 §9.6 (largely not yet built — see
workplans/AUDIT-WP-0009-evidence-role-conformance.md)
- Recording, per source, whether its evidence is load-bearing or attributive, because the obligations differ.
- Accepting and storing a source's declared emission cadence, and raising a finding when the stream falls below it — the stream observed, not only its contents.
- Heartbeat ingestion and missing-heartbeat findings for low-volume load-bearing classes, where rate monitoring cannot work.
- A reconciliation surface: per-source, per-class event counts a source can compare against its own state transitions.
- Registering
approval-engineas a distinct source carrying issuance, use, supersession, and revocation (§9.4,AUDIT-IN-0001).
Conformance
- Machine-readable layer declaration (
layer.yaml) and a conformance test. - A total list of infrastructure contacts, catalogued or not, so the §5 check is total rather than vacuous.
Out of Scope
Boundaries fixed by the statute — these are permanent, not "not yet"
- Any authorization decision.
access-engineis the only decision point (§6). Audit Core renders and caches none. - An approval-validity query. Records, yes; a verdict on whether an approval is still valid, never (§9.4). A consumer branching on such an answer would route an authorization decision through the audit fabric.
- Operative approval state — the durable object, atomic supersession, single
consumption, revocation. That is
approval-engine's (§9.4). - Emission atomicity at the source. Completeness at the boundary is the emitter's obligation; an archive cannot retrofit it (§9.6).
- Any claim that the archive proves an event occurred, or that absence proves it did not (§9.6).
- Policy decision making, per
INTENT.md.
Not owned here
- Procuring or operating S3 / Barman / WAL; the
platform:audit-storagebooked cost or a second usage stream. - WORM, object lock, or ITC-CAP
data.archive. Ruled a different store with a different owner (statute §16); the stronger-custody gap is withdrawn, not pending. - A
rapp.yamlin this repo (schema requiresrapp-*). - Public ingest.
- Unrelated adjacent systems; irreversible operational decisions without human approval.
Current State
- Status: production. Receiver on railiance01 (
namespace audit-core), Postgres operational custody onplatform-pg, senderuser-engine. - Recovery is the platform
data.backupwindow (30 days)./readyzreportscustody_class=operational,recoverable_days=30. - Hash chain verified on 30 live events
(
docs/evidence/chain-head-20260816.json). - ITC-CAP case:
data/capability/audit-core-operational.jsonat D4. - Tenancy posture:
tenancy.yaml— declaredI1 A2 E1 P1 R1, targetE3/R2.
Known conformance gaps (assessed 2026-08-29,
history/2026-08-29-v0.7-alignment-and-scope-assessment.md):
Closed 2026-09-06 (tamper_evidence=Truereturned unconditionally by the Postgres backendAUDIT-WP-0009-T01). The flag is now derived per read from live chain and attestation state against a declared 168h freshness window. UntilAUDIT-WP-0009-T02schedules attestation, the honest answer in production isfalse— the overclaim is gone, the precondition is not yet met.No cadence, heartbeat, or reconciliation surface exists.Closed. Heartbeats and missing-heartbeat findings (AUDIT-WP-0009-T04) and the reconciliation surface (T06) landed 2026-09-10; declared emission cadence against info-tech-canon wire schema 0.1 (T05) landed 2026-09-22 —docs/stream-completeness.md. None of them covers a compromised source suppressing an event and its own count together.- Load-bearing classification does now exist:
evidence_kindonSenderIdentityand the registration schema, defaulting toattributive(AUDIT-WP-0009-T03, closed 2026-09-06). approval-engineregistration inputs are prepared and inert pending its token, a confirmed tenant scope, and an operator apply —docs/approval-engine-source-registration.md(AUDIT-WP-0009-T09).No negative test asserts the absence of an approval-validity surface.Closed 2026-09-06 (AUDIT-WP-0009-T08),tests/test_approval_validity_prohibition.py.
Getting Oriented
- Start with:
INTENT.md, thennet-kingdom/SECURITY-COMPANION.md - Bound on what may be claimed:
docs/integrity.md - Agent instructions:
AGENTS.md - Workplans:
workplans/