Finalize profile comparison implementation

This commit is contained in:
2026-08-02 13:35:31 +00:00
parent faf547e4a8
commit 6c185b8d0e
12 changed files with 70 additions and 61 deletions

View File

@@ -10,15 +10,17 @@ Destination planning is read-only. It requires an exact absolute target that
is neither the filesystem root nor the working directory, rejects unsafe
symlinks and non-directories, accepts a missing or empty directory, and permits
replacement only for a recognized current bundle. Publication rechecks that
plan, writes a private sibling staging directory, and installs it atomically.
Replacement temporarily moves the recognized prior bundle aside, reauthorizes
that moved entry, and restores it if installation fails.
authorization immediately before it writes a private sibling staging directory.
For replacement, it moves the prior bundle to a private sibling backup,
reauthorizes that moved entry, and restores it if installing the new bundle
fails.
Publication reports whether the new bundle committed. Once the new bundle is
installed, a failure to remove the prior sibling backup does not roll it back.
The result retains the absolute backup path and returns an inspectable cleanup
error that unwraps the filesystem cause so an operator can recover the prior
bundle if needed.
The new bundle is committed only after the staged directory has been installed
at the target. From that point its artifact paths are authoritative: a failure
to remove the retained sibling backup does not roll back the new bundle.
Publication returns an inspectable cleanup error with the absolute backup path
and underlying filesystem cause so an operator can recover or remove that
backup manually.
The application preflights before prompt inspection and collection, then
preflights again before publication. A cancellation or any failure before the