← Memory KeeperCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Memory Keeper
Snapshot Sep 30, 2026 · 23:16 UTC · version 0.5.0
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Use when a persistent read, write, move, rename, delete, upload, or verification times out, is interrupted, partially succeeds, returns ambiguous status, repeatedly mismatches, or resumes after a mid-transaction stop.",
"included_files": [],
"name": "recovering-persistent-work",
"skill_md_contents": "---\nname: recovering-persistent-work\ndescription: Use when a persistent read, write, move, rename, delete, upload, or verification times out, is interrupted, partially succeeds, returns ambiguous status, repeatedly mismatches, or resumes after a mid-transaction stop.\n---\n\n# Recovering Persistent Work\n\n## Core principle\n\n**Recovery is bounded at both operation and transaction level. Failure never creates an infinite repair loop and never weakens verification.**\n\n## Observe before recovery\n\nAfter timeout/interruption/ambiguous result/failed post-write verification:\n\n1. stop mutation;\n2. fresh re-read/re-list the actual persistent surface;\n3. compare observed state with pre-state and target;\n4. classify failed, succeeded-despite-timeout, or partial success;\n5. never repeat an ambiguous write if target state already holds.\n\n## Stable operation fingerprint\n\nBefore an automatic recovery mutation, define an **operation fingerprint** from logical operation kind + canonical source identity + intended destination/target identity + intended postcondition. **renaming or subdividing a step does not reset** this fingerprint or its retry history.\n\n## Bounded budgets\n\nA **transaction** is one naturally atomic user-requested persistent target state. Independent operations may be separate transactions only when they have independent success criteria; never split or rename one failing transaction merely to refresh the budget.\n\n\n- per operation fingerprint: at most **one automatic recovery attempt**;\n- **transaction recovery budget:** **maximum 2 automatic recovery mutations** across the whole persistent transaction, even when fingerprints differ;\n- observation/re-read does not consume mutation budget.\n\nA recovery mutation is allowed only when unambiguous, safe, and it preserves the last known-good canon.\n\n## Progress rule\n\nAfter each recovery mutation, re-observe. Require **monotonic progress** toward the target: the set/severity of mismatches must strictly decrease. **no progress** (unchanged state), regression, or a state that **oscillates** A↔B stops automatic recovery immediately.\n\nAlso stop when the **same failing step** / fingerprint fails again, the global budget is exhausted, capability is missing, or the next action is destructive/ambiguous.\n\n## Terminal state\n\nPreserve last known-good truth where possible, report observed mismatch and smallest next decision/action, and mark **BLOCKED / NOT COMPLETE**. Never recursively rename repair steps to gain retries. Never relax a completion gate.\n\nA later user action or newly available capability starts from a fresh audit; it does not retroactively make the failed transaction complete.\n"
}SHA-256 of public snapshot: 95d64d03e7663704945ba7cc940539f92fb875e39a8d387618e78b5543ff8913