From 3a9cb17a5adaa925174f57cd49034e4f8169719b Mon Sep 17 00:00:00 2001 From: "Aaron D. Lee" Date: Thu, 2 Apr 2026 18:30:52 -0400 Subject: [PATCH] Update docs for v0.3.0 and bump attest module to v0.2.0 - Bump attest subpackage version from 0.1.0 to 0.2.0 - Add c2pa_bridge/ module to CLAUDE.md architecture tree - Add security/ and planning/ docs to CLAUDE.md and docs/index.md - Update federation architecture doc version to 0.3.0 - Verify zero remaining old branding references across all docs Co-Authored-By: Claude Opus 4.6 (1M context) --- CLAUDE.md | 15 ++++++++++++++- README.md | 2 +- docs/architecture/federation.md | 2 +- docs/index.md | 15 +++++++++++++++ src/fieldwitness/api.py | 2 +- src/fieldwitness/attest/__init__.py | 2 +- src/fieldwitness/attest/api.py | 2 +- 7 files changed, 34 insertions(+), 6 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 3245c7b..ff1d962 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -67,7 +67,7 @@ src/fieldwitness/ Core library image_utils.py / audio_utils.py / video_utils.py keygen.py / qr_utils.py / recovery.py / debug.py / utils.py - attest/ Provenance attestation engine (inlined from fieldwitness.attest v0.1.0) + attest/ Provenance attestation engine (inlined from fieldwitness.attest v0.2.0) attestation.py Core attestation creation + EXIF extraction verification.py Attestation verification crypto.py Ed25519 signing @@ -97,6 +97,12 @@ src/fieldwitness/ Core library models.py IdentityInfo, KeystoreStatus, RotationResult dataclasses export.py Encrypted key bundle export/import (SOOBNDL format) + c2pa_bridge/ C2PA (Content Authenticity) bridge + __init__.py Public API: export, has_c2pa() + cert.py Self-signed X.509 cert generation from Ed25519 key + export.py AttestationRecord -> C2PA manifest + vendor_assertions.py org.fieldwitness.* assertion schemas + fieldkit/ Field security features killswitch.py Emergency data destruction (PurgeScope.KEYS_ONLY | ALL, deep forensic scrub) deadman.py Dead man's switch (webhook warning + auto-purge) @@ -142,6 +148,13 @@ docs/ Documentation chain-format.md Chain record spec (CBOR, entropy witnesses, serialization) export-bundle.md Export bundle spec (FIELDWITNESSX1 binary format, envelope encryption) federation-protocol.md Federation server protocol (CT-inspired, gossip, storage tiers) + security/ + threat-model.md Adversary model, guarantees, non-guarantees, known limitations + planning/ + why-fieldwitness.md Problem statement, positioning, scenarios + c2pa-integration.md C2PA bridge architecture, concept mapping, implementation phases + packaging-strategy.md Hosted demo, standalone binary, mobile app, onboarding flow + gtm-feasibility.md Phased plan for credibility, funding, field testing training/ reporter-quickstart.md One-page reporter quick-start for Tier 1 USB (print + laminate) reporter-field-guide.md Comprehensive reporter guide: attest, stego, killswitch, evidence diff --git a/README.md b/README.md index 2dcf114..3b1d0a9 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ Pull USB = zero trace Web UI + federation API Zero knowledge of \_____ sneakernet ____+____ gossip API ____/ ``` -Stego (steganography, v4.3.0) and Attest (attestation, v0.1.0) are included as +Stego (steganography, v4.3.0) and Attest (attestation, v0.2.0) are included as subpackages (`import fieldwitness.stego`, `import fieldwitness.attest`). Everything ships as one install: `pip install fieldwitness`. diff --git a/docs/architecture/federation.md b/docs/architecture/federation.md index 9aec837..d8b62a8 100644 --- a/docs/architecture/federation.md +++ b/docs/architecture/federation.md @@ -1,7 +1,7 @@ # Federated Attestation System — Architecture Overview **Status**: Design -**Version**: 0.1.0-draft +**Version**: 0.3.0 **Last updated**: 2026-04-01 ## 1. Problem Statement diff --git a/docs/index.md b/docs/index.md index d1e3c78..3c720ee 100644 --- a/docs/index.md +++ b/docs/index.md @@ -24,6 +24,12 @@ | [Evidence Guide](evidence-guide.md) | Evidence packages, cold archives, selective disclosure, chain anchoring, legal discovery workflow. | | [Source Drop Box](source-dropbox.md) | Anonymous file intake: tokens, EXIF pipeline, receipt codes, operational security. | +## Security + +| Document | Description | +|---|---| +| [Threat Model](security/threat-model.md) | Adversary model, security guarantees, non-guarantees, cryptographic primitives, key management, known limitations. | + ## Architecture (Developer Reference) | Document | Description | @@ -32,3 +38,12 @@ | [Chain Format Spec](architecture/chain-format.md) | CBOR record format, entropy witnesses, serialization, storage format, content types. | | [Export Bundle Spec](architecture/export-bundle.md) | FIELDWITNESSX1 binary format, envelope encryption (X25519 + AES-256-GCM), Merkle trees. | | [Federation Protocol Spec](architecture/federation-protocol.md) | CT-inspired server protocol: API endpoints, gossip, storage tiers, receipts, security model. | + +## Planning + +| Document | Description | +|---|---| +| [Why FieldWitness](planning/why-fieldwitness.md) | Problem statement, positioning, scenarios, and technical overview for non-technical audiences. | +| [C2PA Integration](planning/c2pa-integration.md) | C2PA bridge architecture, concept mapping, implementation phases, privacy design. | +| [Packaging Strategy](planning/packaging-strategy.md) | Hosted demo, standalone binary, mobile app, and onboarding flow design. | +| [GTM Feasibility](planning/gtm-feasibility.md) | Phased plan for credibility, community engagement, funding, and field testing. | diff --git a/src/fieldwitness/api.py b/src/fieldwitness/api.py index 17c1fff..5b87966 100644 --- a/src/fieldwitness/api.py +++ b/src/fieldwitness/api.py @@ -11,7 +11,7 @@ from fastapi import FastAPI app = FastAPI( title="FieldWitness API", - version="0.1.0", + version="0.2.0", description="Unified steganography and attestation API", ) diff --git a/src/fieldwitness/attest/__init__.py b/src/fieldwitness/attest/__init__.py index 7af747b..07f3bd1 100644 --- a/src/fieldwitness/attest/__init__.py +++ b/src/fieldwitness/attest/__init__.py @@ -6,7 +6,7 @@ Part of the Soo Suite: - Attest: overt attestation, proving provenance and building decentralized reputation """ -__version__ = "0.1.0" +__version__ = "0.2.0" try: from .models import Attestation, AttestationRecord, Identity diff --git a/src/fieldwitness/attest/api.py b/src/fieldwitness/attest/api.py index a33d10a..8f101af 100644 --- a/src/fieldwitness/attest/api.py +++ b/src/fieldwitness/attest/api.py @@ -38,7 +38,7 @@ BASE_URL = os.environ.get("FIELDWITNESS_BASE_URL", "https://attest.io") app = FastAPI( title="Attest", description="Decentralized image provenance and attestation API", - version="0.1.0", + version="0.2.0", docs_url="/docs", redoc_url="/redoc", )