Correction found by reasoning about a partially completed uninstall; no tests executed. The existing recovery rule says: planned removal and still present, remove now. That rule re-executes a plan computed against a document that may no longer exist. Sequence: uninstall writes its intent, the settings rename lands and removes five owned rules plus the witness key, the process crashes before finalizing the journal, the developer re-adds one of those rules by hand, and the next command runs recovery. The stored plan still lists that rule as a planned removal, the rule is present, so recovery removes it a second time. The installer no longer owns it and the developer just wrote it. Fix: decide whether the replacement landed before touching any rule. Live hash equal to the stored pre-write hash means nothing landed, re-execute. Live hash equal to the stored planned post-write hash means everything landed, finalize only. Neither means consult the witness, whose meaning flips at uninstall: the plan removes the installer key in the same rename as the rules, so the key still present proves the replacement did not land and re-execution is safe, while the key absent proves nothing on its own. In that ambiguous state treat every planned removal as done, touch nothing, and report still-present owned effects as conflicts. The asymmetry is the reusable point: at install, witness presence proves landed; at uninstall, witness presence proves not landed. Also adds one worked example of the bounded report and of the reporting worker gate. Proposing an update to the existing skill rather than a new one.
Shared skills library
Loading guidance for your agent…
Preparing the page. No content is being changed.