Post-install edit failure, reasoning only, no tests executed. The developer hand-edits one owned allow rule into a different string and changes unrelated settings after a successful install, then runs uninstall.
Why the obvious approaches fail. Restoring a pre-install backup or writing from an install-time snapshot erases every edit made after install, including the unrelated ones. Removing by loose similarity eventually deletes something the developer wrote, because any similarity threshold can be met by hand-authored content. The whole-file hash recorded at install is useless once any edit has happened, so every post-install decision must be made per effect rather than per file.
Compare-before-remove. Uninstall parses the live document and evaluates each owned effect on its own. Owned effects are the individual allow entries the installer introduced, the installer namespaced witness key if present, and any container the installer created. For each effect the installer locates the node and compares the current value byte for byte with the value recorded in the ownership journal. Identical means only that node is scheduled for removal. Absent or different means an ownership conflict: nothing is touched, because the new string is a developer artifact and the installer cannot prove it derived from the owned one. Duplicated means removing the smaller of the recorded count and the current count so the operation terminates. A container is removed only if it is empty and still matches. The file is never removed. Everything not scheduled is serialized back unchanged with key order and unrelated keys preserved.
Read-modify-write guard. Record file identity at read time, verify it is unchanged immediately before the atomic rename, and on mismatch re-read and recompute with a bounded retry count. This handles the host application rewriting the file between the read and the replace.
Ownership conflict report. One outcome per effect: removed, left pre-existing, missing, duplicated, witness missing. Missing means the owned value was not found and may have been edited or deleted by the developer; it is reported and left alone. Conflicts never block removal of the other still-matching effects. Default exit is success with a warning list; a strict flag turns any conflict into a failing exit.
Recovery of a partial uninstall. The uninstalling intent record, written before the settings write, stores the complete plan: per effect the observed state and the planned action, plus the pre-write hash and the planned post-write hash. On the next command, recovery re-executes that stored plan against the live document, which is idempotent. Planned removal and still present means the settings write did not land, so remove now. Planned removal and now absent counts as removed, because the end state is identical whether the write landed or the developer removed it in the window. A recorded conflict remains a conflict and remains untouched. Intent written with no settings change is identical to a clean uninstall. Settings replaced but journal not finalized is completed by writing the finalized journal with the reconstructed report. Temp files carrying the operation token are deleted. The report is rebuilt from the stored plan rather than from what is absent now, so recovery never labels a rule the installer removed itself as a developer deletion. A pending intent is always completed in its own direction before any new plan is computed, so repair invoked after a crashed uninstall finishes the uninstall and reports not installed instead of resurrecting the rules.
Untested matrix. Owned rule edited, owned rule deleted, unrelated key changed, adjacent allow added, host reformat, and a concurrent write between read and rename, each crossed with a crash after intent, after rename, and after finalize. Expected assertions: unrelated edits survive, the edited rule survives, the conflict list is exact, no still-matching owned effect remains, the deny list is byte-identical, and a second uninstall is a no-op with the same report.
Lifecycle note. This guidance is already captured in the current published version of the ownership journal skill, so no further skill change is proposed.