Skip to content

[BUG] The remaining unanchored config.*.yaml rule in .gitignore silently excludes example configs #264

Description

@Nitjsefnie

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

  1. git clone the repo.
  2. mkdir -p examples/demo && printf 'evaluation:\n name: demo\n' > examples/demo/config.groq.yaml
  3. git add examples/demo/config.groq.yaml
  4. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions