Repository navigation
feat(install): place a dckt alias beside the docket binary - #400
Merged
Merged
Conversation
…ike install.sh installHandoff mirrors internal/release/downloader/install.sh's fresh-install path but predated its alias step, so install check correctly reported the missing dckt and confirm-install's no-warning promise failed. Mirror the downloader: a relative dckt -> docket symlink beside the binary and alias= in the ownership record.
… install Review blocker: a looping dckt, a link through a regular file or into an unreadable directory, or an unreadable regular-file dckt made InspectBinaryAlias and planBinaryAlias return the resolution error, failing development install (filesystem-failed) and install check. Once the alias path is known to exist, any failure resolving or reading it is now an AliasForeign finding; only the Lstat error and failures canonicalising the binary path remain errors.
… is not a foreign alias Two review findings, batched: - A dckt docket recorded earlier and the user later replaced was reported foreign but its roleBinaryAlias record was carried forward forever (records with no harness are always carried). The development install now passes the foreign alias path to desiredState, which drops any prior roleBinaryAlias record for it, so the published state stops claiming a path docket no longer owns. The record never granted ownership; this keeps state truthful. - When the docket binary itself had vanished, check classified docket's own dckt -> docket link as AliasForeign with the "docket did not create what is at this path" remedy, contradicting the binary-drift report. checkBinaryAliases now skips the alias probe for an absent binary; binary drift (or a re-install) covers it. InspectBinaryAlias's primitive classification is unchanged, and an unresolvable alias beside a present binary is still foreign, never an error.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Every install now places
dckt, a symlink to thedocketbinary, in the same bin directory:internal/release/downloader/install.sh) creates a relativedckt -> docketlink after it places the binary.docket development install) creates the alias inside its journaled transaction, so a rolled-back install removes the alias it created and leaves any earlier alias alone.A foreign or unresolvable
dcktis never overwritten: the install still succeeds and prints a warning.docket install checkreports a missing or foreign alias as a warning finding (binary-alias-missing/binary-alias-foreign), anddocket uninstallleaves the alias in place, as it does the binary.Review (deep tier)
dckt, a link through a file, or an unreadabledcktmade install and check fail instead of reporting the alias as foreignbinary-aliasrecord in install statealias=record line is written but never readThe release smoke (
scripts/release-smoke.sh) now asserts the alias, but it runs only in release-candidate CI. Locally it was only syntax-checked.