#423: Download marking for leak tracing — pseudonymous marks, Trace tab, legality docs #444
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "download-marks-423"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implements #423 per the approved rev-2 mockup and the legality research posted to the issue.
Backend (TDD, witnessed compile-red on the runner): new
internal/markspackage — append-only JSONL ledger with a per-store HMAC secret and audit-coupled retention;CAIRNMARK1.<id>.<sig>tokens carrying a random id and its signature but never identity; O(1)-memory seek-preserving marking of PDF (trailing comment), Office zips (EOCD comment), PNG (tEXt before IEND) and JPEG (COM after SOI), with the original served untouched whenever a container does not validate. Storage decorator above audit marks authenticated reads only. Settings gainmarkDownloads(off by default, gated on the audit toggle at runtime). API:GET /api/v1/admin/audit/marksandPOST /api/v1/admin/audit/trace(extract → verify → ledger lookup, audited asmark-trace; newmarksverb group in the registry).Frontend: nested settings toggle with honest description + amber legal line; Trace tab present only while marking is enabled or historic marks remain traceable; drop zone → four result cards (hit / pruned ledger / foreign signature / no mark), hit card links to Query prefilled with the path and states the evidence-not-verdict caveat. i18n ×4.
Docs:
docs/handbook/leak-tracing.mdwith the per-country legality table (research snapshot 2026-09-07) and a model user notice; ARCHITECTURE decorator entry; CHANGELOG v0.6.137.Design decisions recorded in the issue on close: no per-download audit verb (ledger is the record), no content hash in v1, Stat not wrapped (sync-size caveat documented).