Skip to main content

RFC-012: Trust Evidence

FieldValue
RFC012
TitleTrust Evidence
StatusProposed
Depends onRFC-004, RFC-005, RFC-006
Updates,

Abstract​

This document defines trust evidence: the signed, auditable provenance bundle attached to lookup outcomes. Evidence links scores and drivers to events, producers, derivation rules, and verification hooks without exposing unauthorized cross-context data.

Motivation​

Explainability requires more than narrative text. Regulators and subjects need cryptographically verifiable chains showing how an outcome was produced. Trust evidence standardizes that export.

Background​

Evidence manifests summarize graph traversals (RFC-005) into consumer-safe structures. They power verification endpoints, PDF QR audits, and federated exchange packages (RFC-006).

Terminology​

TermDefinition
Trust evidenceProvenance bundle for a report
ManifestCanonical JSON structure describing evidence
manifest_idUnique evidence identifier
DriverWeighted factor explaining outcome movement
Verification hookPublic URL or token confirming report authenticity
Derivation ruleVersioned scoring logic reference

Specification​

1. Evidence attachment​

Every reports.generate response at basic tier and above MUST include trust_evidence object.

2. Manifest structure​

{
"manifest_id": "evm_22bd",
"schema_version": "trust_evidence.v1",
"report_id": "rpt_88ac",
"pti_id": "pti_k9m2",
"generated_at": "2026-07-01T09:00:00Z",
"contexts": ["lending"],
"outcomes": [
{
"context_id": "lending",
"outcome_id": "out_lending_20260701",
"band": "B+",
"value": 712,
"derived": false
}
],
"drivers": [
{
"driver_id": "drv_01",
"label": "on_time_repayments_12m",
"weight": 0.42,
"direction": "positive",
"event_refs": ["evt_7f3a"],
"derivation_rule": "lending_repayment_velocity@v3"
}
],
"sources": [
{
"event_id": "evt_7f3a",
"event_type": "loan_repayment",
"context_id": "lending",
"occurred_at": "2026-06-15T14:22:00Z",
"producer_ref": "producer_redacted_3"
}
],
"signature": {
"alg": "EdDSA",
"kid": "op_main_2026",
"value": "…"
}
}

3. Required fields by tier​

TierManifest requirements
basicoutcomes, top drivers (≤3), signature
detailedFull drivers, sources summary, verification hook
predictivemodel_version, feature family metadata
screening_dossierscreening_summary with list provenance

4. Signing​

  • Manifest MUST be canonicalized (JCS RFC 8785) before signing.
  • Signature MUST cover entire manifest excluding signature object.
  • Verification endpoint MUST recompute hash and validate signature.

5. Redaction rules​

  • Producer legal names MAY be redacted to producer_ref tokens.
  • Payload fields not entitled to consumer MUST NOT appear in sources.
  • Cross-context events MUST NOT appear unless context entitled.

6. Verification hook​

  • reports.verify MUST accept report_id or QR-encoded token.
  • Response MUST include verification_status: valid, revoked, expired, invalid.
  • Expired MUST apply when generated_at exceeds operator-configured max age.

7. Lens evidence​

Lens outcomes MUST include:

{
"context_id": "digital_platform",
"derived": true,
"feeds_from": ["merchant", "employment", "partnership"]
}

8. Revocation linkage​

Revoked manifests MUST appear on package revocation list (RFC-006). Verification MUST return revoked with reason code.

Security Considerations​

  • Signing keys MUST meet RFC-008 requirements.
  • Manifests MUST NOT leak HMAC secrets or internal admin URLs.
  • QR tokens SHOULD be single-purpose and rate-limited.

Privacy Considerations​

  • Evidence MUST minimize subject attributes in sources.
  • Subjects accessing own evidence MAY see less-redacted producer refs than consumers.

Examples​

Verification response​

{
"verification_status": "valid",
"manifest_id": "evm_22bd",
"report_id": "rpt_88ac",
"signed_at": "2026-07-01T09:00:00Z",
"signer": "op_main_2026"
}

Screening provenance snippet​

{
"screening_summary": {
"sanctions": { "status": "clear", "provider": "opensanctions", "checked_at": "2026-07-01T08:59:00Z" },
"pep": { "status": "match_review", "case_id": "scr_991" }
}
}

Implementation Notes​

  • Generate manifest from graph explain_outcome traversal; do not hand-build.
  • Store manifest immutably keyed by manifest_id.
  • Embed verification URL in PDF reports as QR for committee packs.

Future Work​

  • Evidence visualization standard for institution UIs
  • Zero-knowledge proofs for selective disclosure of drivers
  • Linked data (JSON-LD) serialization optional profile