002-pinned-trust-roots

Pinned trust roots for anchor verification

Lifecycle approvedImplementation completeVerification unknownQualification unknown

The released anchor verifier checks a chain anchor's Ed25519 signature against the public key the anchor itself carries, so anyone can mint a self-consistent chain. That proves integrity, not authorship. Add a pinned trust-root input: a canonical, digestible set of accepted Ed25519 keys, each with a key id derived from its bytes and an optional chain-id scope, and root-pinned variants of the anchor, anchor-chain and head verifiers that pass only when the anchor's key is pinned, in scope, and produced a signature that verifies under strict Ed25519 rules. Add the matching CLI input and exit code. Existing APIs, hashes, signatures, head commitments and CLI stdout and exit codes are unchanged. Release as an additive 0.2.0.

Read the full pinned specification ↗

Relationships

Claimed units

  • establishes
    {
      "kind": "file",
      "path": "crates/types/src/trust_roots.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/core/src/trust_roots.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/cli/tests/trust_roots_cli.rs"
    }
  • establishes
    {
      "id": "attest_ledger_types::trust_roots::TrustRootsV1",
      "kind": "symbol"
    }
  • establishes
    {
      "id": "attest_ledger_core::trust_roots::verify_anchor_with_roots",
      "kind": "symbol"
    }
  • extends
    {
      "nature": "additive",
      "spec": "000-attest-ledger-bootstrap",
      "unit": {
        "anchor": "workspace.package",
        "file": "Cargo.toml",
        "kind": "section"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "000-attest-ledger-bootstrap",
      "unit": {
        "anchor": "workspace.dependencies",
        "file": "Cargo.toml",
        "kind": "section"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "000-attest-ledger-bootstrap",
      "unit": {
        "kind": "file",
        "path": "Cargo.lock"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "000-attest-ledger-bootstrap",
      "unit": {
        "kind": "file",
        "path": "crates/types/src/lib.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "000-attest-ledger-bootstrap",
      "unit": {
        "kind": "file",
        "path": "crates/core/src/lib.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "000-attest-ledger-bootstrap",
      "unit": {
        "kind": "file",
        "path": "crates/core/src/signing.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "000-attest-ledger-bootstrap",
      "unit": {
        "kind": "file",
        "path": "crates/core/src/record_chain.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "000-attest-ledger-bootstrap",
      "unit": {
        "kind": "file",
        "path": "crates/cli/Cargo.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "000-attest-ledger-bootstrap",
      "unit": {
        "kind": "file",
        "path": "crates/cli/src/main.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "000-attest-ledger-bootstrap",
      "unit": {
        "kind": "file",
        "path": "README.md"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "000-attest-ledger-bootstrap",
      "unit": {
        "kind": "file",
        "path": "CHANGELOG.md"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "000-attest-ledger-bootstrap",
      "unit": {
        "kind": "file",
        "path": "spec-spine.toml"
      }
    }

Source headings

  1. 002: Pinned trust roots for anchor verification
  2. 1. Purpose
  3. 2. Scope, compatibility, and claimed units
  4. 3. The trust-root set
  5. 3.1 Wire shape
  6. 3.2 Key id
  7. 3.3 Validity and canonical form
  8. 3.4 Canonical bytes and digest
  9. 3.5 Errors
  10. 4. Root-pinned verification
  11. 4.1 Functions
  12. 4.2 Order of checks
  13. 4.3 Strict Ed25519 only
  14. 5. CLI contract
  15. 5.1 Root-pinned verification
  16. 5.2 Without roots
  17. 5.3 Exit codes
  18. 6. Deprecation decision
  19. 7. Room for later steps
  20. 8. Functional requirements and acceptance
  21. 9. Release boundary
  22. 10. Verifier trust policy (2026-10-10)
  23. 11. Decision entries
  24. 2026-10-10: "integrity only" output label conflicts with section 5 (resolved)

Frozen anchors

No frozen anchors declared.