070-an-authority-snapshot-says-what-it-read
An authority snapshot says what it read
A consumer that binds spec-spine's authority results to a revision needs five separate outputs today and still cannot answer four questions from them: whether the committed ledger matched the corpus (attestations recompute and never read the committed shards, and `check --json` reports booleans without the digests it compared), which configuration and governance files were read, what every spec's territory hashed to, and how much source no spec claims. This spec adds a third attestation scope, `attest --snapshot`, emitting an `AuthoritySnapshot`: the tool and schema versions, a digest of `spec-spine.toml`, the existing corpus hashes, the committed registry and index trees with a digest each and whether each matches the recompute, the governance inputs by path and digest, the gate verdicts, the ownership counts, the exclusions in force, and each spec's lifecycle with a framed digest of its resolved territory (plus, for joining records issued earlier, the hash of the `SpecAttestation` spec 039 would emit for it, or a stated reason where that construction has no answer). New members use a framed digest that binds normalized text rather than exact bytes, a contract 3.3 states explicitly and distinguishes from spec 068's, because the existing fold does not frame content and two trees can share one hash; existing members and payloads keep their constructions. The payload is pure, on demand, gitignored, sealable and verified under spec 068's rules. It commits to no git revision: the consumer binds the tree.
Read the full pinned specification ↗Relationships
depends on
- 021-ledger-seal
- 022-index-sharding
- 028-registry-freshness-check
- 029-ownership-coverage
- 039-per-spec-attestation
- 050-claimed-but-unwitnessed
- 062-one-name-one-freshness-verb
- 066-an-attestation-covers-the-territory-it-claims
- 068-a-verifier-checks-the-bytes-it-was-given
- 069-the-committed-index-is-compared-not-trusted
depended on by
Claimed units
- establishes
{ "kind": "file", "path": "crates/spec-spine-types/src/snapshot.rs" } - establishes
{ "kind": "file", "path": "crates/spec-spine-core/src/snapshot.rs" } - establishes
{ "kind": "file", "path": "crates/spec-spine-core/tests/snapshot.rs" } - extends
{ "nature": "additive", "spec": "021-ledger-seal", "unit": { "kind": "file", "path": "crates/spec-spine-cli/src/cmd_attest.rs" } } - extends
{ "nature": "additive", "spec": "021-ledger-seal", "unit": { "kind": "file", "path": "crates/spec-spine-cli/src/verify_attestation.rs" } } - extends
{ "nature": "additive", "spec": "001-compile-registry", "unit": { "kind": "file", "path": "crates/spec-spine-cli/src/main.rs" } } - extends
{ "nature": "additive", "spec": "001-compile-registry", "unit": { "kind": "file", "path": "crates/spec-spine-core/src/lib.rs" } } - extends
{ "nature": "additive", "spec": "000-spec-spine-bootstrap", "unit": { "kind": "file", "path": "crates/spec-spine-types/src/lib.rs" } } - extends
{ "nature": "additive", "spec": "000-spec-spine-bootstrap", "unit": { "kind": "file", "path": "crates/spec-spine-types/src/version.rs" } } - extends
{ "nature": "additive", "spec": "001-compile-registry", "unit": { "kind": "file", "path": "crates/spec-spine-cli/tests/cli.rs" } } - extends
{ "nature": "additive", "spec": "039-per-spec-attestation", "unit": { "kind": "file", "path": "crates/spec-spine-core/src/attest.rs" } } - extends
{ "nature": "additive", "spec": "004-codebase-index", "unit": { "kind": "file", "path": "crates/spec-spine-core/src/index.rs" } } - extends
{ "nature": "additive", "spec": "057-the-docs-name-what-adopters-derived", "unit": { "kind": "file", "path": "docs/schema-versioning.md" } }
Source headings
- 070: An authority snapshot says what it read
- 1. Purpose
- 2. Territory
- 3. Behavior
- 3.1 The payload
- 3.2 What each member covers
- 3.2.1 When the historical join hash has no answer
- 3.3 The framed digest
- 3.3.1 Which pieces a digest is taken over
- 3.4 Purity
- 3.5 Surface
- 3.6 What it proves, and what it does not
- 3.7 What must keep working
- 4. Out of scope
- 5. Resolved decisions
- Verification
Frozen anchors
No frozen anchors declared.