Skip to content

Provenance: Exhibit-B signed records (ML-DSA-65) to make provenance unforgeable #173

Closed

Description

@hyperpolymath

Decision

Owner decision (2026-11-05): PanLL's provenance is unforgeable when each provenance record follows EXHIBIT-B-QUANTUM-SAFE.txt. The definition is recorded in PROOF-NEEDS.adoc (Provenance engine row, #172).

Today src-gossamer/src/provenance/commands.rs reports git blame authors and Co-Authored-By trailers. Anyone can set both, so until this lands that output counts only as claimed, never verified.

Shape of the work (multi-session)

  1. Record format. Fields: author-identity, timestamp (ISO 8601 with zone), content-hash (SHA3-256), optional parent-hash (chain), platform, witnesses. Serialised as canonical JSON (Exhibit B §3, §4.1c).
  2. Signing. ML-DSA-65 (FIPS 204) over the canonical JSON; SLH-DSA or FALCON are the Exhibit B alternates. Pick a Rust implementation that is audited or FIPS-aligned, and record the choice.
  3. Keys. Contributor public keys under .well-known/keys/ (Exhibit B §5.1), with a rotation policy (§5.2).
  4. Verifier. Implements §4.2 a–e: signature, content hash, timestamp window, and parent-hash chain. Add a new IPC command next to provenance_analyse_file that returns per-record verified / claimed / invalid.
  5. Witnesses. Third-party attestation signatures over the same record.
  6. Proof obligation (PROOF-NEEDS): verification rejects any record whose fields, content hash or chain link were altered. Start with property tests (field mutation, chain splice), then a formal model.

Out of scope

  • Re-signing past history. Records start from adoption, and older history stays "claimed".

Activity

  1. coderabbitai commented on Nov 5, 2026

    @coderabbitai
    Contributor
    🔗 Related PRs

    #163 - docs(proofs): reconcile PROOF-NEEDS and the proof-debt ledger with the tree [merged]


    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

  2. added
    enhancementNew capability or improvement to existing behaviour
    securitySecurity posture, secrets, scanning, advisories, supply chain
    on Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew capability or improvement to existing behavioursecuritySecurity posture, secrets, scanning, advisories, supply chain

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions