Skip to content

Add verifiable visual redaction of shared copies with the original left sealed #303

Description

@ChelseaKR

What

Shared copies can already have location stripped by policy. Photographs of a bedroom mould patch often include a child, a face, or a prescription bottle. Add visual redaction for shared copies: the tenant draws boxes in the app (or supplies coordinates on the CLI), the derived copy is rendered with those regions blacked out, and a redaction record (region list, method, hash of the derived copy) is committed to custody and bound to the sealed original. The packet shows the redacted copy, states "N regions redacted by the tenant", and verify proves the derived copy descends from the sealed original whose hash the timestamp covers.

Why it matters

The threat model is a landlord who retaliates; over-sharing is a harm the tool should prevent at the point of export, and minimal disclosure (docs/legal/minimal-disclosure.md, RR-15) is a stated goal. Doing it verifiably keeps the tamper-evidence story intact: the original is never edited, and a reviewer later granted the original can confirm the redaction was only what was declared. It reuses the media-policy pipeline that already produces location-stripped copies.

Scope

  • A redaction record type; capture redact on the CLI and an app editor with keyboard-operable region entry; a pure-Python raster fill for JPEG and PNG.
  • Disclosure policy and packet copy (EN/ES); a decision-table row.
  • A guard test: the sealed original's bytes and hash are unchanged by any redaction.

Out of scope

  • Automatic face or text detection.
  • Redacting video or audio (declared as a limit).

Done when

  • A redacted copy verifies as derived from its original with the declared regions; an undeclared extra edit fails.
  • The original in the vault is byte-identical before and after.
  • A redaction with an empty region list is refused.

Pointers

Proposed with AI assistance.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestfeatureMajor new capability proposal

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions