fix(bin): tolerate local Treehouse config during fleet sync - #4
Merged
Conversation
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
Fix fleet-sync dirtiness handling so the deliberate untracked root-level treehouse.toml machine configuration no longer permanently blocks project-clone refresh. Preserve every real safety property: modified tracked files, staged changes, every other untracked path, names that merely contain treehouse.toml, wrong branches, and divergence must still block or report STUCK; the existing conditional secondmate seed-marker tolerance must remain unchanged and must not mask real dirt. Use one narrow exact porcelain-record allowlist in the shared dirty-status owner, apply it to the real fleet-sync entry point and all reachable callers, do not touch project clones or their git configuration, and keep the change proportionate with regression coverage for every safety case. Raise the PR through the no-mistakes pipeline to sparkus/firstmate with base main, never by hand, and do not merge.
What Changed
treehouse.tomlwhile refreshing clones.Risk Assessment
✅ Low: The change implements a narrow exact-record exception in the shared dirty-status owner, routes fleet-sync through it, preserves the conditional seed-marker exception and other safety checks, and adds proportionate regression coverage.
Testing
Baseline provenance matched the supplied base and target; focused fleet-sync, secondmate, and update regressions passed; direct CLI evidence showed the behind clone syncing while preserving
treehouse.tomland its Git configuration, while genuine tracked dirt remained STUCK with HEAD and the edit untouched.Evidence: Direct fleet-sync operator transcript
Evidence: Fleet-sync regression transcript
Evidence: Secondmate shared-caller regression transcript
Evidence: Firstmate update shared-caller regression transcript
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.
Provenance:git status --short --branch,git rev-parse HEAD, andgit merge-base HEAD 79d84b682429c3c65e30d8f54840086ee687f6b9bash tests/fm-fleet-sync.test.shbash tests/fm-secondmate-sync.test.shbash tests/fm-update.test.shDirect isolatedbin/fm-fleet-sync.sh config-okrehearsal with an exact root-level untrackedtreehouse.tomlDirect isolatedbin/fm-fleet-sync.sh real-dirtrehearsal with a modified tracked fileCompared.git/confighashes before and after the successful fleet refreshVerified final HEAD remainsedab82238ffce53e9f14e703d10c964bbabebf6dand the worktree contains no transient test outputs✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.