Plan: Local safety defaults for redaction and purge (1.1.2) - #10
Plan: Local safety defaults for redaction and purge (1.1.2)#10lodyai[bot] wants to merge 3 commits into
Conversation
Add the pre-implementation ExecPlan for roadmap item 1.1.2 that will ratify ADR 014, covering local safety defaults for workspace identity (normalized Git origins, BLAKE3-derived storage identifiers with a 12-hex presentational short form, non-Git canonical-path hashing, registration-time collision diagnostics), redaction (first-release detector classes, truffleHog-derived starting entropy thresholds, `globset` deny patterns, the two-value `store_raw_text` enum), and purge (typed-scope confirmation with a randomised challenge plus an irreversibility flag, MCP/RPC refusal of tenant-wide purge, and binding pre-purge SQLite/PostgreSQL/Qdrant backup completion). The plan is documentation-only and pre-approval. It records the Logisphere design review's eight must-fix concerns and six nice-to-have refinements that have already been applied to the draft, and signposts the documentation gates, hexagonal boundaries, and prior art the implementer must honour.
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Reviewer's GuideAdds a comprehensive pre-implementation ExecPlan document that formalises how ADR 014 will define workspace identity, redaction defaults, and purge behaviour, including architecture targets, constraints, validation, and implementation milestones, without making any Rust or configuration changes. File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
Split the 1.1.2 decision into two ADRs, both written in milestone 1: ADR 014 (workspace identity and purge, Accepted) and ADR 015 (redaction defaults, Proposed), with ADR 015 explicitly revisited and ratified in roadmap task 2.2.3 so the redaction detector list and entropy thresholds are confirmed against real transcripts. Make a small randomised challenge the primary purge confirmation. Commit to one short users-guide subsection. Signpost the inherited open questions in roadmap tasks 2.2.3, 2.2.4, and 5.3.1. Update the Decision Log, Progress, milestones, tolerances, risks, and interface sections to match, and accept the review's unresolved-risk signposts and improvements.
Add `.claude/` to `.gitignore` so transient agent state such as `scheduled_tasks.lock` (which carries a session ID and PID) is never committed to the repository.
Summary
docs/execplans/1-1-2-local-safety-defaults-for-redaction-and-purge.md.The plan settles Memoryd's local safety defaults for workspace identity,
redaction, and purge before any provider adapter, evidence inbox, or recall
use case is implemented.
configuration changes ship in this branch; the ADRs, source-document
alignment, and roadmap completion happen in later commits once the plan is
approved.
its eight must-fix concerns plus unresolved-risk signposts and improvements
were applied, and the rationale is captured in the plan's
Decision Log.Decision split (review direction)
On review, the 1.1.2 decision is split into two ADRs, both written in the
same milestone, so the difference in confidence is legible:
these gate workspace derivation (roadmap 2.2.4) and purge (roadmap 5.3.1)
without depending on real transcript content.
classes, entropy thresholds, deny-pattern syntax, and raw-text mode are
captured in full now but marked
Proposed, to be ratified or revisedagainst real Codex/Claude transcripts in roadmap task 2.2.3.
The relevant roadmap tasks (2.2.3, 2.2.4, 5.3.1) are signposted with the
decisions they inherit.
Highlights
derive_keywith context"memoryd v1 workspace-id". The full 32-byte output is the storageidentifier; the first 12 hex chars are presentational only. Git origin
normalization includes a documented case-insensitive host list; non-Git
workspaces hash a canonical configured root-path tuple; collision detection
runs at workspace registration.
classes, truffleHog-derived starting entropy thresholds (
b64 ≥ 4.5,hex ≥ 3.0, length≥ 20),globsetdeny patterns, anone | redactedstore_raw_textenum, andredact_before_*flags that stay non-disablablein every tenant mode (with an explicit
unsafe_disable_redactionescapehatch).
the resolved scope as the primary confirmation, defeating clipboard-paste
mistakes. MCP and internal RPC surfaces refuse
PurgeTenant; tenant-widepurge is operator-CLI-only behind
--force-tenant-scope. Pre-purge backupsteps (SQLite
VACUUM INTO, PostgreSQLpg_dump, per-collection Qdrantsnapshots) must complete with audited
(collection, snapshot_id)pairsbefore any tenant-owned row is touched; partial failure aborts the purge.
Test plan
make markdownlintmake nixiemake check-fmtmake typecheckmake lintmake testReferences
identity), ADR 008 (source health), ADR 013 (evidence store + manual backup
policy).