Declare local-identity audit emission cadence for InfoTechCanon adoption
Source-owned declaration pinned to contract digest 972c0b6701d1693f (INFO-WP-0029-T02). Valid against the generic contract; fails the NetKingdom profile's rare-heartbeat MUST because local-identity emits no heartbeat. Findings record the session-scoped-silence incompatibility. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 236552@bnt-lap001 Assistant-Session: 8916a2bd-1a44-4ff9-83c1-96b34058e603
This commit is contained in:
parent
675a1582a2
commit
116643fafe
2 changed files with 86 additions and 0 deletions
41
local-identity/emission-cadence-findings.md
Normal file
41
local-identity/emission-cadence-findings.md
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
# local-identity emission cadence — fit findings (INFO-WP-0029-T02)
|
||||||
|
|
||||||
|
Declaration: `local-identity/emission-cadence.yaml`, pinned to InfoTechCanon
|
||||||
|
emission contract digest `972c0b6701d1693f` (document 0.2.0, wire schema 0.1).
|
||||||
|
Emitter: `local-identity/src/local_identity/audit.py`.
|
||||||
|
|
||||||
|
## Validation (2026-09-21)
|
||||||
|
|
||||||
|
- **Generic contract: valid.** Checked against
|
||||||
|
`info-tech-canon/infospace/schemas/emission-cadence.schema.yaml` through
|
||||||
|
`tools/emission-cadence-profile` (`contract_valid: true`). The
|
||||||
|
`info_tech_canon emission-review` CLI could not be run locally because
|
||||||
|
`infospace-bench==0.1.0` is not installable from the package index.
|
||||||
|
- **NetKingdom security profile v0.1: not conformant.** Both entries raise
|
||||||
|
`rare-heartbeat-missing` (MUST): rare load-bearing evidence requires a positive
|
||||||
|
heartbeat, and local-identity emits none. The declaration records
|
||||||
|
`heartbeat_emitted: false` instead of declaring a heartbeat that does not exist.
|
||||||
|
|
||||||
|
## Incompatibilities found
|
||||||
|
|
||||||
|
1. **Silence is scoped to process lifetime, and the contract has no field for
|
||||||
|
that.** `serve/*` events can occur only while an attended `local-identity serve`
|
||||||
|
process is running. CLI events occur only when an operator runs a command.
|
||||||
|
Neither `expected-rate` (there is no floor rate: `expected_min: 0` would make
|
||||||
|
silence carry no meaning) nor a heartbeat outside a session expresses "silent
|
||||||
|
because not running". The contract needs an activity-scope or session-bounded
|
||||||
|
form, or an explicit statement that session-scoped sources are out of scope.
|
||||||
|
2. **Only reconciliation fits, and it needs an observer that does not exist.**
|
||||||
|
The local count is the append-only `audit.log`, which is mode 600 on the
|
||||||
|
operator's machine. No observer ingests it, so `compare_observed` is a declared
|
||||||
|
reference and not an existing feed.
|
||||||
|
3. **Completeness cannot be claimed.** `audit.log_event` drops I/O failures
|
||||||
|
without reporting them, so the local count can under-count.
|
||||||
|
`completeness_claimed: false` is recorded.
|
||||||
|
|
||||||
|
## What would close the NetKingdom profile gap
|
||||||
|
|
||||||
|
To close the gap, `serve` would have to emit a periodic `nothing-to-report`
|
||||||
|
heartbeat and a start/stop pair so that observers can bound the silence. That is
|
||||||
|
a code change to a bootstrap-only tool and is not planned. This file records the
|
||||||
|
incompatibility as the adoption result.
|
||||||
45
local-identity/emission-cadence.yaml
Normal file
45
local-identity/emission-cadence.yaml
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
# Source-owned Emission Cadence declaration for local-identity (INFO-WP-0029-T02).
|
||||||
|
# Pinned to InfoTechCanon emission contract digest 972c0b6701d1693f
|
||||||
|
# (document 0.2.0, wire schema 0.1).
|
||||||
|
#
|
||||||
|
# This states intended cadence only. It is not evidence that the events are
|
||||||
|
# emitted, observed, or complete; no observer currently reads this stream.
|
||||||
|
# Emitter: local-identity/src/local_identity/audit.py (TSV, audit.log, mode 600).
|
||||||
|
# Fit findings against the contract: local-identity/emission-cadence-findings.md
|
||||||
|
schema_version: "0.1"
|
||||||
|
declaration_id: net-kingdom.local-identity.audit.v1
|
||||||
|
source: net-kingdom
|
||||||
|
stream_id: net-kingdom.local-identity.audit
|
||||||
|
extensions:
|
||||||
|
netkingdom:
|
||||||
|
contract_digest: 972c0b6701d1693f
|
||||||
|
contract_document_version: 0.2.0
|
||||||
|
sources:
|
||||||
|
- source_id: net-kingdom.local-identity.audit.token-issued
|
||||||
|
source_system: local-identity
|
||||||
|
event_class: serve/token.token_issued
|
||||||
|
form: heartbeat-or-reconciliation
|
||||||
|
reconciliation:
|
||||||
|
compare_local: audit_log_counts.serve/token.token_issued
|
||||||
|
compare_observed: evidence_counts.serve/token.token_issued
|
||||||
|
divergence: finding
|
||||||
|
extensions:
|
||||||
|
netkingdom:
|
||||||
|
evidence_class: load-bearing
|
||||||
|
rate_monitoring: forbidden
|
||||||
|
completeness_claimed: false
|
||||||
|
heartbeat_emitted: false
|
||||||
|
- source_id: net-kingdom.local-identity.audit.token-revoked
|
||||||
|
source_system: local-identity
|
||||||
|
event_class: revoke-token
|
||||||
|
form: heartbeat-or-reconciliation
|
||||||
|
reconciliation:
|
||||||
|
compare_local: audit_log_counts.revoke-token
|
||||||
|
compare_observed: evidence_counts.revoke-token
|
||||||
|
divergence: finding
|
||||||
|
extensions:
|
||||||
|
netkingdom:
|
||||||
|
evidence_class: load-bearing
|
||||||
|
rate_monitoring: forbidden
|
||||||
|
completeness_claimed: false
|
||||||
|
heartbeat_emitted: false
|
||||||
Loading…
Add table
Add a link
Reference in a new issue