fix(bin): restore project-less remote seeding on macOS - #1891
Closed
allstargg wants to merge 2 commits into
Closed
Conversation
Use the Bash 3.2-safe empty-array expansion for the project-less route while preserving nounset and project-bearing behavior. Strengthen the lifecycle fixture with readiness and lock-wait synchronization, and run the focused path in stock-macOS Bash CI.
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.
Intent
Repair Firstmate's remote project-less secondmate provisioning regression. The operator-facing path bin/fm-remote-home-seed.sh ... --no-projects must pass readiness, reach remote provisioning, and either publish a valid project-less home or roll back according to the injected remote outcome. Diagnose before assigning cause by separating the initiating trigger, any timing or fixture masking condition, and the visible early-exit symptom; compare with a successful project-bearing or equivalent remote seed path, inspect relevant history, test the smallest causal counterfactual, and seek disconfirming evidence rather than blaming the recently added parent binding. Implement the narrowest robust correction in the authoritative owner while preserving transactionality, remote unknown-completion handling, supplied-origin behavior, durable parent-binding publication order, and non-mutation of the local project tree. Turn the faithful lifecycle reproduction into executable regression coverage, including deterministic timing and concurrency assertions without sleeps that hide races. Validate the full remote lifecycle and parent-binding suites, all directly affected tests, shell lint, and documentation checks. Do not modify or rely on private secondmate-home parent records in the primary fleet. Drive no-mistakes through CI green and report the full PR URL.
What Changed
Risk Assessment
✅ Low: The Bash 3.2-safe empty-array expansion narrowly restores the project-less path while preserving project-bearing behavior, transactionality, readiness ordering, rollback semantics, and unknown-completion handling; the focused lifecycle coverage also replaces the affected race-masking delay with observable lock-wait synchronization.
Testing
Under Apple Bash 3.2, the operator-facing
--no-projectspath passed readiness and reached remote provisioning; deterministic contention exercised rollback and successful publication, while the full remote lifecycle, supplied-origin/non-mutation behavior, unknown-completion handling, durable parent-binding order, and trace-context suites all passed. CLI transcripts provide end-user evidence; no UI artifact applies to this shell-only change.Evidence: Full remote secondmate lifecycle
Evidence: Project-less seed lifecycle
Evidence: Parent-binding lifecycle
Evidence: Project-less trace-context lifecycle
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
✅ **Review** - passed
✅ No issues found.
✅ **Test** - passed
✅ No issues found.
Inspectedgit diff 70aeba855527f7693082f6dd1bc731e334d0269f..b4f97c5eb92d21694559810c5ab97916e1c0f768and relevant history.Confirmed/bin/bashis Apple Bash 3.2.57, reproducing the affected runtime.FM_TEST_SEED_ONLY=1 /bin/bash tests/fm-remote-secondmate-lifecycle-e2e.test.sh/bin/bash tests/fm-remote-secondmate-lifecycle-e2e.test.sh/bin/bash tests/fm-remote-secondmate-parent-binding.test.sh/bin/bash tests/fm-remote-secondmate-trace-context.test.shVerifiedgit status --shortremained empty after testing.✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.