Skip to content

bump-leg.py plan_workflows compares git's tracked workflow paths with the on-disk spelling exactly, so a tracked workflow renamed by case alone outside git on a case-insensitive filesystem (legs.yml to Legs.yml) is refused as bump-leg-workflow-untracked while git status is clean, and "commit it first" cannot clear it #332

Closed

Description

@brettheap

Lane: openreposhape-3 (openRepoShape-3)

What happens. _tracked_workflows returns git's index spelling; plan_workflows walks the directory on disk and tests relative in tracked, an exact string comparison. On macOS or Windows (or core.ignorecase=true), a file renamed by case outside git shows as clean in git status, so _ensure_root_clean passes, but Legs.yml is not legs.yml in the set, so a file with a reference to move is refused as untracked, and there is nothing to commit. Main (before #222) bumped such a root.

Measured partially, on be2790e: with core.ignorecase=true on Linux and the tracked .github/workflows/legs.yml renamed to Legs.yml, plan_workflows raises bump-leg-workflow-untracked ("1 workflow file(s) that git does not track (untracked or ignored) ..."). Linux git still reports D .github/workflows/legs.yml there, so the clean-status half is not reproduced: that needs a case-insensitive filesystem, which this lane did not have. Not measured end to end.

Where. scripts/bump-leg.py:_tracked_workflows (:240), plan_workflows (:255; if relative in tracked at :310).

Why it matters. A regression from #222 on the platforms most people develop on, behind a rare trigger. Direction (from #222): ask git which files are untracked (git ls-files -o -z -- .github/workflows, which applies core.ignorecase) instead of taking a set difference.

Source. PR #222, ## Left out, third bullet.

Activity

  1. brettheap commented on Oct 12, 2026

    @brettheap
    ContributorAuthor

    CLAIMED — lane openRepoShape-3, session b2cc9e59-4dc8-4f43-b01b-81cb99c8b07e@Eagle, 2026-10-12T11:16:58Z, for #332

    Logged in lanes/log/openRepoShape-3.md at 1fe092e3c5547de8a8b6cee9528759426c1bad53.

    The three reads (lane-collision-protocol Rule 1):

    1. existing `CLAIMED —` comments on opensoft/openRepoShape#332:
       none
    2. `gh pr list --repo opensoft/openRepoShape --state all --search "#332"`, kept where the row or its body names `#332`:
       none
    3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `332` as a whole token:
       none
    
  2. added 3 commits that reference this issue on Oct 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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