Require airplanes-uuid compat symlink only on the legacy contract#115
Merged
Conversation
The /usr/local/share/airplanes/airplanes-uuid -> feeder-id symlink is created by create-uuid.sh on update.sh-driven installs. The overlay-managed new image generates the canonical feeder-id inline and does not ship the legacy symlink (its own overlay smoke asserts the absence). Scope the harness assertion to the legacy contract so the new-contract boot smoke stops failing on a back-compat shim apl-feed does not require.
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.
The boot-smoke harness required
/usr/local/share/airplanes/airplanes-uuidto be a symlink tofeeder-idon every contract. That symlink is created bycreate-uuid.shon installs that runupdate.sh. The overlay-managed image generates the canonical/etc/airplanes/feeder-idinline at first boot and deliberately omits the legacy symlink — the image's own overlay smoke asserts its absence on that contract. The harness assertion was only passing because the boot smoke used to runupdate.sh; now that the overlay guard correctly stops it, the new-contract boot smoke fails on a back-compat shim it never ships.Scope the assertion to the legacy contract.
apl-feedresolves the feeder ID from the canonical path first and only falls back to the legacy paths, so the symlink isn't a functional dependency on the new contract. The check asserts presence on legacy rather than absence on new, since a non-overlay install that still runsupdate.shwould legitimately create it — the invariant that holds is "required on legacy", not "forbidden on new".