Ignore config/ as a directory and correct two stale hints - #44
Merged
Conversation
…unchenguid#1261) A name-by-name list of config/ entries silently stops ignoring any new or home-local file placed there, which makes the working tree read as dirty and blocks guarded sync paths that refuse to touch a dirty home. AGENTS.md already documents config/ as captain-private and gitignored as a category; this makes .gitignore match that contract.
…al coverage (kunchenguid#1304) The second assertion in fm-gitignore-config.test.sh (added by kunchenguid#1261) greps .gitignore for a specific spelling of the config/ ignore pattern. It fails on a semantically equivalent pattern like config/** and does not prove Git actually ignores anything, per the completed source-content-test audit. Replace it with a real git check-ignore control test on a generated unrelated path, and strengthen the existing directory-coverage test with generated unpredictable direct and nested config/ paths.
Ports two upstream commits and lands two fork-local corrections. Ported from upstream: - e595611 fix(gitignore): ignore config/ as a directory, not by exact filename (kunchenguid#1261) - a53ffc1 fix(tests): replace source-content .gitignore assertion with behavioral coverage (kunchenguid#1304) The .gitignore conflict is resolved to upstream's end state: every individual config/... entry, including this fork's config/primary-handoff, is replaced by a single config/ rule. The per-file list was the defect - on a public repo it leaves every future captain-private knob committable. Nothing under config/ is tracked today, and this keeps it that way. Fork-local corrections: - docs/configuration.md said Kimi Code 0.27.0 was verified only as a primary and that fm-spawn rejects Kimi workers. bin/fm-spawn.sh accepts --harness kimi, and AGENTS.md section 4 plus docs/kimi-harness.md carry the 2026-07-23 worker evidence. The doc sentence now matches the code. - bin/fm-spawn.sh printed the Pi install hint for @mariozechner/pi-coding-agent. The installed and tested lineage is @earendil-works/pi-coding-agent, which the Pi tests already reference. It was the only wrong-lineage reference.
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.
Batch B1 of the toolchain update programme: one security fix ported from upstream, plus two verified fork-local corrections.
Ported upstream commits
e595611- fix(gitignore): ignore config/ as a directory, not by exact filename (fix: ignore the entire config directory kunchenguid/firstmate#1261)a53ffc1- fix(tests): replace source-content .gitignore assertion with behavioral coverage (test: replace gitignore source assertion with behavioral coverage kunchenguid/firstmate#1304)The
.gitignoreconflict was resolved to upstream's end state: every individualconfig/...entry, including this fork'sconfig/primary-handoff, is replaced by a singleconfig/rule. The per-file list was the defect - on a public repo it leaves every future captain-private config knob committable. Nothing underconfig/is tracked today, and this keeps it that way permanently. Nothing else in.gitignorechanged.Fork-local corrections
docs/configuration.mdclaimed Kimi Code 0.27.0 was verified only as a primary and thatfm-spawn"deliberately rejects Kimi workers".bin/fm-spawn.shaccepts--harness kimi(adapter allowlists at lines 339 and 653, worker launch template at 420, worker model pin at 628), andAGENTS.mdsection 4 plusdocs/kimi-harness.mdcarry the 2026-07-23 worker evidence. The sentence now matches the code.bin/fm-spawn.sh:443printed the Pi install hint for@mariozechner/pi-coding-agent. The installed and tested lineage is@earendil-works/pi-coding-agent. It was the only wrong-lineage reference in the tree.Acceptance evidence
1.
git check-ignore -v- all four ignored, attributed to the singleconfig/rule:2.
git ls-files config/- empty (nothing private is tracked):3.
bash tests/fm-gitignore-config.test.sh:4.
git ls-files -s tests/fm-gitignore-config.test.sh- executable bit preserved by the cherry-pick:5.
bin/fm-lint.sh- clean:6.
bin/fm-leak-guard.sh- clean:7.
rg -n 'mariozechner'- no matches (exit 1).8.
rg -n 'deliberately rejects Kimi workers' docs/- no matches (exit 1).9.
bin/fm-test-run.sh --changed --base 054aa7f- green:Scoped to the change set rather than
--all: 35 scripts covering the backend/dispatch and spawn families plus the new gitignore test. The one gate skip is the standing Herdr-pin gate, owned by its dedicated CI lane.Note
no-mistakes-required.ymlis expected to fail here - it is advisory on this fork. The gate that matters isci.yml.