V13-B Checklist

SafeGate V13-B External Anchor Implementation Checklist

V13-A public evidence chain is closed. V13-B now defines the implementation checklist for external timestamp anchoring of signed SafeGate checkpoints, while keeping payment rails, custody, escrow, and production anchor claims clearly out of scope.

V13-A Chain
CLOSED
V13-B Checklist
OPEN
External Anchor Live
FALSE
Production Claim
FALSE

1. Implementation Boundary

V13-B is not a payment integration milestone. It is an external anchor design and implementation-readiness milestone for SafeGate signed checkpoints.

V13-B may cover:
  • Checkpoint commitment format.
  • External timestamp proof attachment.
  • Anchor state model.
  • Verifier fail-secure behavior.
  • Pinned or well-known public key requirement.
  • OpenTimestamps/Bitcoin timestamp boundary.
V13-B does not claim:
  • Live external anchor.
  • Production anchor verification.
  • Bitcoin payment support.
  • Independent payment truth proof.
  • Custody, escrow, routing, exchange, or settlement.
  • Formal security audit completion.
Core rule: Payment rail is separate from anchor rail.

2. Required Anchor State Model

The verifier must never trust a self-declared anchor field as verified. Anchor verification must be explicit, conservative, and fail-secure.

{
  "anchor_pending": "No external timestamp proof is attached yet.",
  "anchor_unsupported": "The anchor type exists but this verifier does not support verification for it.",
  "anchor_claim_unverified": "The proof includes an anchor claim, but verification was not completed.",
  "anchor_verified": "The external timestamp proof verifies against the signed checkpoint commitment.",
  "anchor_mismatch": "The external timestamp proof does not match the signed checkpoint commitment.",
  "anchor_error": "The anchor proof could not be evaluated safely."
}
Fail-secure requirement: Unknown, malformed, unsupported, mismatched, ambiguous, or manually edited anchor data must never display as verified.

3. Checkpoint Commitment Direction

V13-B should anchor a commitment derived from the signed checkpoint, not arbitrary user text. The anchored value should be deterministic, public-safe, and reproducible by the verifier.

{
  "checkpointCommitmentCandidate": {
    "input": "canonical_signed_checkpoint_payload",
    "hash": "sha256(canonical_signed_checkpoint_payload)",
    "anchorTarget": "checkpointCommitmentHash",
    "publicSafe": true,
    "containsPaymentSecret": false,
    "containsPrivateUserData": false
  }
}

4. Public Key Pinning Requirement

The production verifier must not blindly trust a public key embedded inside a proof object. V13-B should prepare a pinned or well-known SafeGate log key path.

/.well-known/safegate-log-key.json
{
  "product": "SafeGate",
  "purpose": "transparency-log-checkpoint-verification",
  "environment": "staging",
  "keyId": "safegate-v13-staging-log-key-001",
  "algorithm": "Ed25519",
  "status": "active",
  "publicKey": "PUBLIC_KEY_PLACEHOLDER",
  "notBefore": "2026-07-03T00:00:00Z",
  "notAfter": null
}
Status: This checklist documents the requirement. It does not claim production key pinning is completed.

5. OpenTimestamps / Bitcoin Boundary

Bitcoin/OpenTimestamps belong to the anchor rail only. They are not SafeGate payment rails in V13-B. A Bitcoin timestamp anchor does not mean Bitcoin payment support is live.

Safe wording: V13-B prepares external anchoring of SafeGate signed checkpoints through Bitcoin/OpenTimestamps as timestamp infrastructure.

6. Implementation Work Items

  1. Define canonical signed checkpoint commitment format.
  2. Define external anchor proof attachment schema.
  3. Define anchor state model in verifier UI.
  4. Add fail-secure handling for unsupported or malformed anchor data.
  5. Prepare pinned / well-known public key path.
  6. Prepare test vector for pending anchor state.
  7. Prepare test vector for unsupported anchor claim.
  8. Prepare test vector for mismatched anchor proof.
  9. Prepare future test vector for verified anchor proof.
  10. Document that payment truth remains separate and deferred to V13-C.

7. Acceptance Criteria

8. Recommended V13-B Test Vectors

{
  "testVectors": [
    {
      "name": "anchor_pending_fixture",
      "expectedResult": "included_and_signed_external_anchor_pending"
    },
    {
      "name": "unsupported_anchor_claim_fixture",
      "expectedResult": "included_and_signed_anchor_claim_unsupported"
    },
    {
      "name": "malformed_anchor_fixture",
      "expectedResult": "included_and_signed_anchor_error_or_unsupported"
    },
    {
      "name": "mismatched_anchor_fixture",
      "expectedResult": "included_and_signed_anchor_mismatch"
    },
    {
      "name": "future_verified_anchor_fixture",
      "expectedResult": "included_signed_and_external_anchor_verified"
    }
  ]
}

9. Links

10. Machine-Readable Status

{
  "project": "SafeGate",
  "page": "v13-b-external-anchor-implementation-checklist.html",
  "status": "V13_B_EXTERNAL_ANCHOR_IMPLEMENTATION_CHECKLIST_OPEN",
  "v13AChain": "CLOSED",
  "v13BDesignPlan": "OPEN",
  "v13BImplementationChecklist": "OPEN",
  "externalAnchorLive": false,
  "productionAnchorClaim": false,
  "formalAuditClaim": false,
  "bitcoinPaymentAdapterLive": false,
  "bitcoinUsedAs": "external_timestamp_anchor_only",
  "openTimestampsRole": "candidate_external_timestamp_proof_layer",
  "paymentRailSeparatedFromAnchorRail": true,
  "paymentTruthDeferredTo": "V13-C Payment Commitment",
  "pinnedPublicKeyRequired": true,
  "verifierMustFailSecure": true,
  "safeGatePaymentProcessor": false,
  "safeGateCustody": false,
  "safeGateEscrow": false,
  "safeGateExchange": false,
  "safeGateWalletHolder": false,
  "nextStep": "Link this checklist from main landing, technical evidence archive, pilot review index, and roadmap"
}