Proposal: tamper-evident provenance via an optional verifiable-attestation convention
Statewave already tags memories with provenance (a free-form dict on episodes/derived memories). Today that field is useful for display and filtering, but nothing distinguishes claimed provenance from verifiable provenance — any client can write anything.
Idea: keep the schema untouched, define an optional convention inside provenance:
provenance = {
"source": "crm-import", # existing fields unchanged
"attestation": { # optional, new convention
"receipt_id": "<8-hex>", # locator for a public verification endpoint
"work_hash": "<sha256 of canonical payload>",
"verifier_url": "https://verify.aotrust.link/s/{receipt_id}",
}
}
The attestation is an Ed25519-signed receipt over the canonical payload hash, issued by an independent notary (we run a free public verifier — PDR receipts, 239 bytes, daily Merkle-anchored on NEAR testnet; verify URL is public and keyless). A consumer can then distinguish:
provenance.attestation present + verify passes → memory content is byte-identical to what the source system attested
- no attestation → exactly today's behavior
Why this fits statewave's philosophy: you already guarantee reproducible context internally; this adds provable origin for the ingest side — useful for audit/compliance consumers, agent-to-agent trust, and "prove this memory really came from system X at time T" questions. It's also deliberately boring: no schema migration, no required changes, opt-in per-episode.
I'd be happy to PR (1) a docs page defining the convention, (2) an optional statewave-aotrust helper (single function: attest(payload) -> attestation dict) + one round-trip test. If maintainers prefer, the convention alone (docs-only PR) is a fine first step.
Proposal: tamper-evident provenance via an optional verifiable-attestation convention
Statewave already tags memories with
provenance(a free-form dict on episodes/derived memories). Today that field is useful for display and filtering, but nothing distinguishes claimed provenance from verifiable provenance — any client can write anything.Idea: keep the schema untouched, define an optional convention inside
provenance:The attestation is an Ed25519-signed receipt over the canonical payload hash, issued by an independent notary (we run a free public verifier — PDR receipts, 239 bytes, daily Merkle-anchored on NEAR testnet; verify URL is public and keyless). A consumer can then distinguish:
provenance.attestationpresent + verify passes → memory content is byte-identical to what the source system attestedWhy this fits statewave's philosophy: you already guarantee reproducible context internally; this adds provable origin for the ingest side — useful for audit/compliance consumers, agent-to-agent trust, and "prove this memory really came from system X at time T" questions. It's also deliberately boring: no schema migration, no required changes, opt-in per-episode.
I'd be happy to PR (1) a docs page defining the convention, (2) an optional
statewave-aotrusthelper (single function:attest(payload) -> attestation dict) + one round-trip test. If maintainers prefer, the convention alone (docs-only PR) is a fine first step.