Skip to content

core+cli+shared: marrow redact, part one: the audited tombstone (R26-a, FOUNDER-GATED) - #77

Draft
ElxMaj wants to merge 1 commit into
mainfrom
feat/redact-tombstone
Draft

core+cli+shared: marrow redact, part one: the audited tombstone (R26-a, FOUNDER-GATED)#77
ElxMaj wants to merge 1 commit into
mainfrom
feat/redact-tombstone

Conversation

@ElxMaj

@ElxMaj ElxMaj commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Roadmap item R26, PR one of two (docs/roadmap/2026-2027.md). DRAFT + do-not-merge: this amends the append-only rule and merges only after your explicit yes.

The decision you are being asked to make

Evidence is append-only and immutable, by design and by sacred rule. A leaked credential that slips past the pre-append scrub is therefore immortal. This PR creates the single, deliberate exception: a human at the CLI can destroy the payload bytes of ONE evidence row, loudly and auditably. If you would rather keep append-only absolute (accepting immortal secrets as the price), close both R26 PRs and the roadmap stands with deletion completeness marked not-offered.

What it does

  • Migration 0018 (additive): redacted_at/redacted_reason on evidence.
  • store.redactEvidence: payload becomes [redacted: <reason>]; id, source, date, citations survive; second redaction refused.
  • Marrow.redact: reason required; refuses while distilled nodes cite the row (prints the blast radius; cascade is PR two); writes the audit as a normal append-only evidence row that never contains the secret.
  • CLI marrow redact; no MCP tool, pinned by a test so no agent and no injected instruction can trigger destruction; append_evidence's description names the exception honestly.

What stays true

Every other row untouched and untouchable; audit trail append-only; no status writes; agent surfaces unchanged.

Tests

Tombstone identity survival, search cleanliness, double-redact refusal, cited-row refusal with blast radius, audit-row hygiene, MCP no-tool pin. Full suite + smoke:packed + drift gate green.

🤖 Generated with Claude Code

…ER-GATED)

THE ONE VISIBLE AMENDMENT TO APPEND-ONLY EVIDENCE. This PR does not merge
without the founder's explicit yes.

A credential that slipped past the pre-append scrub was immortal: evidence
has no update or delete path by design, and the research's deletion
completeness metric was unsatisfiable. Redaction is the deliberate,
narrow, loud exception:

- Migration 0018: redacted_at / redacted_reason on evidence (additive).
- store.redactEvidence: overwrite ONE row's payload with the fixed
  tombstone '[redacted: <reason>]', stamp the moment; id, source,
  created_at, and every citation survive. A second redaction is refused.
- Marrow.redact: requires a reason, refuses when distilled nodes still
  cite the row (prints the blast radius: the human must see what quotes
  the secret before anything is destroyed; cascade is part two), and
  writes the audit trail as a NORMAL append-only evidence row
  (redactions/<id>) that never contains the secret.
- CLI: marrow redact <evidenceId> --reason. Deliberately NO MCP tool,
  pinned by a test; append_evidence's description now names the exception
  honestly as human-only.

What stays true: every other evidence row is untouched and untouchable;
the audit record is append-only; nothing writes any status; no agent
surface can reach this path.

Roadmap: R26 part one of two.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge Founder-gated: the loop never merges this

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant