Describe the Bug
.gitignore:241-242 carry two more bare, unanchored config rules alongside the one reported in #248:
config.yaml # .gitignore:240 — reported in #248
config.groq.yaml # .gitignore:241
config.*.yaml # .gitignore:242
A gitignore pattern with no slash in it is unanchored and matches at any depth, so line 242 behaves exactly like the config.yaml rule in #248: any config.<something>.yaml placed under examples/ is silently untrackable. git add exits 0 and stages nothing, and git status never mentions the file.
The evident intent is the same as line 240's — keep a developer's own top-level config files (which hold API keys) out of the repo. As written it also swallows example configs that are meant to be committed.
Two incidental notes on the same three lines, both confirmed with git check-ignore -v below:
- Line 241 is fully redundant.
config.*.yaml on line 242 already matches config.groq.yaml, and since git reports the last matching pattern, line 242 is what actually fires — line 241 is never the reported rule.
- Line 242 does not cover line 240.
config.*.yaml does not match config.yaml (the * sits between two dots, so it cannot match the empty middle), which is why line 240 has to exist separately.
To Reproduce
git clone the repo.
mkdir -p examples/demo && printf 'evaluation:\n name: demo\n' > examples/demo/config.groq.yaml
git add examples/demo/config.groq.yaml
git status --short — the file does not appear.
The same steps with examples/demo/config.dev.yaml reproduce identically.
Expected Behavior
A config.groq.yaml or config.<env>.yaml under examples/ is committable without -f, while the developer-secret case at the repository root stays ignored — i.e. the same anchoring treatment #248 asks for on line 240, applied to line 242:
/config.yaml
/config.*.yaml
Line 241 can be dropped at the same time, since line 242 already subsumes it — or kept and anchored, if you would rather name the Groq case explicitly.
Error Output
No error is produced — that is the problem. Verified on a clean checkout of main:
$ git check-ignore -v examples/demo/config.groq.yaml
.gitignore:242:config.*.yaml examples/demo/config.groq.yaml
$ git check-ignore -v examples/demo/config.dev.yaml
.gitignore:242:config.*.yaml examples/demo/config.dev.yaml
$ git check-ignore -v config.yaml
.gitignore:240:config.yaml config.yaml
Environment
- OS: Debian 13 (x86_64)
- Python version: 3.13
- OpenAgent Eval version: repo
main @ current HEAD
- Installation method: pip (editable checkout)
Additional Context
Found while fixing #248 — the one-line fix there anchors only line 240, so line 242 remains. Happy to fold the same anchoring into that PR or send it separately, whichever you prefer; the exact form (anchor 242 and drop the redundant 241, or anchor both) is your call.
Describe the Bug
.gitignore:241-242carry two more bare, unanchored config rules alongside the one reported in #248:A gitignore pattern with no slash in it is unanchored and matches at any depth, so line 242 behaves exactly like the
config.yamlrule in #248: anyconfig.<something>.yamlplaced underexamples/is silently untrackable.git addexits 0 and stages nothing, andgit statusnever mentions the file.The evident intent is the same as line 240's — keep a developer's own top-level config files (which hold API keys) out of the repo. As written it also swallows example configs that are meant to be committed.
Two incidental notes on the same three lines, both confirmed with
git check-ignore -vbelow:config.*.yamlon line 242 already matchesconfig.groq.yaml, and since git reports the last matching pattern, line 242 is what actually fires — line 241 is never the reported rule.config.*.yamldoes not matchconfig.yaml(the*sits between two dots, so it cannot match the empty middle), which is why line 240 has to exist separately.To Reproduce
git clonethe repo.mkdir -p examples/demo && printf 'evaluation:\n name: demo\n' > examples/demo/config.groq.yamlgit add examples/demo/config.groq.yamlgit status --short— the file does not appear.The same steps with
examples/demo/config.dev.yamlreproduce identically.Expected Behavior
A
config.groq.yamlorconfig.<env>.yamlunderexamples/is committable without-f, while the developer-secret case at the repository root stays ignored — i.e. the same anchoring treatment #248 asks for on line 240, applied to line 242:Line 241 can be dropped at the same time, since line 242 already subsumes it — or kept and anchored, if you would rather name the Groq case explicitly.
Error Output
No error is produced — that is the problem. Verified on a clean checkout of
main:Environment
main@ current HEADAdditional Context
Found while fixing #248 — the one-line fix there anchors only line 240, so line 242 remains. Happy to fold the same anchoring into that PR or send it separately, whichever you prefer; the exact form (anchor 242 and drop the redundant 241, or anchor both) is your call.