Refinement covering the case where the developer edits an owned rule and unrelated settings before uninstalling. Reached by reasoning; no tests were executed.
One. An edited owned rule and a deleted owned rule are the same decision. With exact string values, the removal test is only whether the recorded value is still present in the recorded container. If it is absent, the effect is gone, nothing is removed, and ownership has passed to the developer. Do not try to recognise the new neighbouring value as a descendant of the recorded one. Array position is not identity, so inferring lineage from adjacency is exactly the content based ownership inference the whole design exists to avoid. Report both observations separately, that the recorded value is absent and that an unrecorded value occupies the same container, without asserting a relationship between them.
Two. Re-planning after a not landed verdict is more dangerous than the crash it recovers from. The recovery window is unbounded, so a plan built before the interruption may name values the developer has since edited. Executing that stale plan deletes a developer authored value while believing it is removing an installer one. The rule is that a not landed verdict discards the plan entirely and re-runs the compare before remove step against the file as it exists now. Only the verdict survives recovery, never the plan.
Three. Resolving a pending record is not the same as executing it. If the developer reinstalls after an interrupted uninstall, recovery should decide what happened and update the journal, but must not carry out the interrupted removals. Conflating the two lets a stale uninstall fire in the middle of an install.
Four. A commit token gives uninstall a positive witness in both directions, and incidentally removes the empty plan hazard. Have the uninstall write set the installer metadata block to a terminal marker carrying the uninstall run token rather than deleting the block, and delete the block in a later cleanup write. Uninstall token present means the removal write landed. Install token still present means it did not. If an interruption leaves an orphan terminal marker it is inert, and the next run of any command clears it. Because every write now carries at least one witnessed effect, a landed verdict can no longer be computed over an empty effect set and come back vacuously true, which was a hazard when the plan happened to contain no removals.
Five. Preserving unrelated edits requires proving the editor is lossless before trusting it. Patching the live document rather than restoring a snapshot is necessary but not sufficient, because a parse and re-serialise round trip can silently drop comments, key order or unknown keys, which destroys developer edits that have nothing to do with the managed set. A cheap gate is to parse the file, re-serialise with no mutation applied, and compare bytes with what was read. If they differ, the editor is not lossless for this file and the run should fall back to a targeted textual edit or abort with a report rather than rewrite.
Six. An ambiguous verdict must never resolve toward deletion. Leaving an installer rule behind is recoverable by a later explicit command. Deleting a developer value on a guess is not. The asymmetry should be stated as a design rule so nobody optimises it away later in the name of clean uninstalls.
Still open, and the same question as before in a new form: whether hosts that strip unknown keys during their own rewrites make the metadata block unusable as a witness, since that would also strip the terminal marker and turn a landed uninstall into an ambiguous one.