Skip to content

contracts: add Exodus evidence-fabric contract bootstrap#5

Merged
mdheller merged 73 commits into
mainfrom
evidence-fabric-dashboard-contracts-v01
Jun 11, 2026
Merged

contracts: add Exodus evidence-fabric contract bootstrap#5
mdheller merged 73 commits into
mainfrom
evidence-fabric-dashboard-contracts-v01

Conversation

@mdheller

@mdheller mdheller commented May 5, 2026

Copy link
Copy Markdown
Member

Summary

Adds the initial Exodus evidence-fabric contract bootstrap: dashboard state, migration planning, proof packs, provider/source coverage, notes, owned media, playlists, AI chat exports, report/visibility records, conversion/redaction records, and exit-readiness records.

What this PR adds

Core dashboard and migration contracts

  • docs/evidence-fabric-integration.md
  • packages/contracts/evidence-dashboard-state.schema.json
  • packages/contracts/migration-wave-plan.schema.json
  • packages/contracts/proof-pack-summary.schema.json

Provider/source coverage

  • backlog/provider-coverage-roadmap.md
  • packages/contracts/provider-topology-snapshot.schema.json
  • packages/contracts/source-alias-report.schema.json
  • packages/contracts/blocked-object-report.schema.json

Notes and AI chat exports

  • docs/notes-provider-ingest.md
  • packages/contracts/notes-source-profile.schema.json
  • docs/ai-chat-export-ingest.md
  • packages/contracts/ai-chat-source-profile.schema.json
  • packages/contracts/ai-chat-conversation-document.schema.json
  • packages/contracts/conversation-reuse-policy.schema.json

Owned media, playlists, and attestation

  • docs/owned-media-ingest.md
  • docs/owned-media-export-conversion-architecture.md
  • docs/owned-media-ownership-attestation.md
  • packages/contracts/owned-media-source-profile.schema.json
  • packages/contracts/owned-media-conversion-profile.schema.json
  • packages/contracts/owned-media-attestation-record.schema.json
  • packages/contracts/playlist-migration-record.schema.json

Receipts, redaction, and exit readiness

  • packages/contracts/conversion-receipt.schema.json
  • packages/contracts/redaction-review-record.schema.json
  • packages/contracts/deletion-eligibility-record.schema.json
  • packages/contracts/provider-downgrade-plan.schema.json

Examples and validators

  • example fixtures for every contract family
  • validators for each thematic group
  • final aggregate validator: scripts/validate_exodus_evidence_fabric_all.py
  • Makefile wiring so make validate runs the final aggregate evidence-fabric validator

Design posture

  • Source systems are ingress only.
  • Raw custody precedes parsing, conversion, chunking, redaction, or semantic projection.
  • Provider IDs, paths, playlist IDs, conversation IDs, and library IDs are source aliases, not canonical truth.
  • User-owned media uses attestation plus evidence/context capture for private migration and local Linux-ready derivatives.
  • Public/marketplace distribution remains separately gated.
  • Access-control-limited media is blocked or metadata-only; Exodus does not bypass access controls.
  • AI chat exports become historical conversation documents, not verified facts.
  • Proof packs, source aliases, blocked objects, conversion receipts, redaction reviews, and deletion/downgrade readiness are all explicit records.

Validation

Run:

make validate

This runs:

python3 scripts/validate_examples.py
python3 scripts/validate_exodus_evidence_fabric_all.py

Boundary

Exodus owns user experience, migration planning, scoring, proof summaries, and provider-exit guidance.

The evidence fabric owns raw custody, hash identity, source alias preservation, manifests, parser runs, and validation records.

Follow-on

  1. split this bootstrap into dedicated implementation repos when repo creation is available;
  2. implement evidence-contracts, evidence-broker, and evidence-storage-infra;
  3. add live dashboard panels against these fixtures;
  4. add connector-specific ingest implementations for local files, Google Drive, iCloud Drive, email, notes, AI chat exports, and owned media.

mdheller commented May 5, 2026

Copy link
Copy Markdown
Member Author

Follow-up update: this PR now also adds MigrationWavePlan and ProofPackSummary contracts, example fixtures, and an aggregate validator (scripts/validate_evidence_fabric_dashboard_contracts.py). The Exodus consumer surface now covers dashboard state, migration planning, and proof-pack reporting for evidence-fabric-backed provider exits.

mdheller commented May 5, 2026

Copy link
Copy Markdown
Member Author

Follow-up update: this PR now adds first-class notes-provider ingest planning and contracts for Google Keep, Apple/iCloud Notes, and Microsoft OneNote.

Added:

  • docs/notes-provider-ingest.md
  • packages/contracts/notes-source-profile.schema.json
  • examples/notes-source-profile.example.json for Google Keep
  • examples/notes-source-profile.icloud-notes.example.json for iCloud Notes
  • examples/notes-source-profile.onenote.example.json for OneNote
  • scripts/validate_notes_source_profiles.py

The notes path follows the same custody rule as the rest of the evidence fabric: preserve raw exports first, treat provider metadata as source aliases/evidence rather than authority, and normalize rich text, attachments, OCR/transcripts, and open-format derivatives only after raw custody is established.

mdheller commented May 5, 2026

Copy link
Copy Markdown
Member Author

Follow-up update: added the aggregate validator and dashboard backlog.

New files:

  • scripts/validate_evidence_fabric_contracts.py
  • backlog/evidence-fabric-dashboard-backlog.md

The aggregate validator runs the dashboard-state, migration/proof-pack, and notes-source validators together. The backlog maps the contracts to concrete Exodus Dashboard panels: provider control overview, migration wave planner, evidence landing monitor, notes migration, proof-pack center, and blocker/next-action review.

mdheller commented May 5, 2026

Copy link
Copy Markdown
Member Author

Follow-up update: added a repo-level Makefile validation entrypoint.

New targets:

  • make validate
  • make validate-examples
  • make validate-evidence-fabric-contracts

make validate now runs the existing example JSON validator plus the aggregate evidence-fabric contract validator.

mdheller commented May 5, 2026

Copy link
Copy Markdown
Member Author

Follow-up update: added owned-media migration coverage so Exodus can capture and plan export/conversion for user-owned music and videos.

New files:

  • docs/owned-media-ingest.md
  • packages/contracts/owned-media-source-profile.schema.json
  • examples/owned-media-source-profile.example.json
  • scripts/validate_owned_media_source_profile.py

This intentionally keeps the next discussion open for codec/container policy. The current tranche freezes the custody-first rule: preserve raw media first, create Linux-ready derivatives later, record conversion targets and metadata, and treat DRM-locked/non-exportable assets as blocked or metadata-only rather than attempting bypass behavior.

mdheller commented May 5, 2026

Copy link
Copy Markdown
Member Author

Follow-up update: added a complete evidence-fabric validator that includes owned media.

New files:

  • scripts/validate_all_evidence_fabric_contracts.py
  • docs/evidence-fabric-validation.md

Preferred complete validation command:

python3 scripts/validate_all_evidence_fabric_contracts.py

This runs dashboard state, migration/proof-pack, notes-provider, and owned-media validators together. A later small follow-up should update the current Makefile target to call this complete validator by default.

mdheller commented May 5, 2026

Copy link
Copy Markdown
Member Author

Follow-up update: added provider coverage roadmap and conversation reuse policy.

New files:

  • backlog/provider-coverage-roadmap.md
  • packages/contracts/conversation-reuse-policy.schema.json
  • examples/conversation-reuse-policy.example.json
  • scripts/validate_conversation_reuse_policy.py

The provider roadmap now establishes that Exodus should eventually cover all major personal cloud, AI chat, email/calendar/contact, notes/document/knowledge-base, collaboration, media, developer, financial/legal/medical, and social/creator export surfaces.

The conversation reuse policy defines safe reuse of imported AI chats in future open chat/workspace surfaces: historical outputs remain historical records, citation is required, redaction review is required for SourceOS chat reuse, and imported provider chats do not become verified truth by default.

mdheller commented May 5, 2026

Copy link
Copy Markdown
Member Author

Follow-up update: added the first report/visibility tranche for provider discovery, source aliases, and blocked objects.

New files:

  • packages/contracts/provider-topology-snapshot.schema.json
  • packages/contracts/source-alias-report.schema.json
  • packages/contracts/blocked-object-report.schema.json
  • examples/provider-topology-snapshot.example.json
  • examples/source-alias-report.example.json
  • examples/blocked-object-report.example.json
  • scripts/validate_exodus_report_contracts.py

These reports are central to the Exodus proof story: what provider surfaces were discovered, which original aliases map to canonical blobs, and which objects remain blocked, metadata-only, or require next actions.

mdheller commented May 5, 2026

Copy link
Copy Markdown
Member Author

Follow-up update: added conversion receipt and redaction review records.

New files:

  • packages/contracts/conversion-receipt.schema.json
  • packages/contracts/redaction-review-record.schema.json
  • examples/conversion-receipt.example.json
  • examples/redaction-review-record.example.json
  • scripts/validate_conversion_and_redaction_records.py

These contracts close two important proof gaps: every derived conversion can carry tool/profile/input/output/raw-custody evidence, and sensitive exports can be gated by redaction review while preserving raw private custody.

@mdheller mdheller changed the title contracts: add evidence fabric dashboard state integration contracts: add Exodus evidence-fabric contract bootstrap May 5, 2026

mdheller commented May 5, 2026

Copy link
Copy Markdown
Member Author

Review / merge guidance:

This PR is now a complete Exodus evidence-fabric contract bootstrap.

Recommended merge options:

  1. Merge as one foundation tranche if the goal is to establish the full contract baseline quickly. The PR is additive-only and now has a single make validate entrypoint that runs the full aggregate validator.

  2. Split after review if smaller thematic PRs are preferred. Natural split boundaries are:

    • dashboard + migration + proof packs
    • notes + AI chat exports + conversation reuse
    • owned media + playlists + attestation + conversion
    • provider topology + aliases + blocked objects + receipts/redaction + exit readiness

Either way, this PR should stop growing here. The next work should move into implementation repos (evidence-contracts, evidence-broker, evidence-storage-infra) instead of adding more contracts to this bootstrap branch.

@mdheller mdheller marked this pull request as ready for review June 1, 2026 11:01
@mdheller mdheller merged commit 6c690cb into main Jun 11, 2026
6 checks passed
@mdheller mdheller deleted the evidence-fabric-dashboard-contracts-v01 branch July 4, 2026 03:24
mdheller added a commit that referenced this pull request Jul 6, 2026
…#25)

* feat(tokenize): Chameleon pseudonyms + key-evolving re-keying + FPE (reference engine)

Implements the masking-layer desensitisation primitives (the one piece not yet on
main after the gate + sealing PRs landed). Algebraic pseudonym is homomorphic under
re-keying, so domain re-tokenisation and key rotation never touch cleartext:

  token = H(value)^2 ^ k(domain,epoch) mod P;  retoken tweak = k2 * k1^-1 mod Q

scripts/exodus_tokenize.py
  - chameleon_token / domain_tweak / retokenize (domain-scoped, cross-domain
    unlinkable, key-evolving epochs).
  - hmac_pseudonym + build_reid_lookup (governed re-identification dictionary).
  - fpe_encrypt/decrypt (reference balanced Feistel, even-length digits).
  - one_way_hash / redact / generalize / suppress.
  - apply_profile() dispatches by tokenization-profile.v1 scheme.
  - stdlib-only; BLAKE3 opportunistic like exodus_seal.py.

scripts/test_exodus_tokenize.py (8 tests, plain-assert idiom)
  - verifies the 256-bit reference group is a safe prime; determinism;
    cross-domain unlinkability; homomorphic re-tokenisation == native token;
    epoch-rotation consistency; FPE round-trip + format; re-id lookup; dispatch.

Reference impl: production needs >=2048-bit MODP/EC group, constant-time bigint,
HSM-held scalars, and NIST FF1 FPE (documented in the module).

* feat(mask): masking PDP — policy veto + tokenize + BEACON_COMMIT seal -> masking-decision

Composes the shipped pieces into one enforcement step (P1 #5), evaluated at
read/export/activate/re-identify time:

  policy veto (forbidden identity mixtures, e.g. no_health_adtech)
    + exodus_tokenize (per-field Chameleon/FPE/hash/redact)
    + exodus_seal (BEACON_COMMIT receipt over the decision)
  -> a masking-decision.v1 record (the decision is itself verifiable evidence)

scripts/exodus_mask.py
  - evaluate_masking(record, requesting_realm, audience, profiles, policy, ...):
    verdict allow / allow_masked / deny / review_required; applies field transforms;
    re-identification is reason-gated + profile-attr gated; emits masking-decision.v1
    with a policy-decision ref + (signed) BEACON_COMMIT receipt.
  - unlinkable-identifier / side-channel mitigations recorded on every decision.

scripts/test_exodus_mask.py (5 tests)
  - no_health_adtech veto (deny, no record returned); allow_masked tokenizes the
    field; re-identify requires reason + authz; signed receipt verifies via
    exodus_seal.verify_receipt; masking-decision.v1 shape.

Depends on exodus_tokenize (PR #24). Gateway HTTP wiring (prophet-platform) is the
remaining P1 #6 integration; this is the reusable PDP engine.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant