Skip to content

fix: isGitIgnored fails for tracked files — add --no-index (#703)#815

Open
ethan-hurst wants to merge 6 commits intogsd-build:mainfrom
ethan-hurst:fix/703-isgitignored-no-index
Open

fix: isGitIgnored fails for tracked files — add --no-index (#703)#815
ethan-hurst wants to merge 6 commits intogsd-build:mainfrom
ethan-hurst:fix/703-isgitignored-no-index

Conversation

@ethan-hurst
Copy link
Contributor

Summary

  • Adds --no-index flag to git check-ignore in isGitIgnored() so it evaluates .gitignore rules regardless of whether the file is tracked
  • Without this, .planning added to .gitignore after being committed was not detected as ignored, causing commit_docs bypass logic to silently fail
  • Adds regression test covering untracked ignored, untracked not-ignored, and tracked-but-ignored scenarios

Test plan

  • New test: returns true for tracked file that is in .gitignore (#703) — commits .planning, then adds it to .gitignore, verifies isGitIgnored returns true
  • All 66 core tests pass

Closes #703

Ethan Hurst added 6 commits February 28, 2026 20:28
Command shipped in a92512a but was missing from all documentation.
Added to help.md (full reference + common workflows), README.md
command table, and USER-GUIDE.md command reference.
Add centralized path resolution layer (paths.cjs) that enables
milestone-scoped directories for parallel milestone work. All 11 lib
files refactored to use resolvePlanningPaths() instead of hardcoded
.planning/ paths.

Key changes:
- New paths.cjs: resolvePlanningPaths(cwd, milestoneOverride) resolves
  abs/rel paths based on ACTIVE_MILESTONE file or --milestone CLI flag
- --milestone <name> CLI flag parsed in gsd-tools.cjs
- New commands: milestone create/switch/list/status
- All init commands output milestone, is_multi_milestone, planning_base
- Legacy mode (no ACTIVE_MILESTONE) returns identical paths to before
- Auto-migration: first milestone create copies existing global state
- 25 new tests for paths and milestone commands (457 total, 0 failures)
Replace hardcoded .planning/ paths in bash commands and commit
file lists with init JSON variables ({state_path}, {roadmap_path},
{planning_base}/...). Workflows without init calls gain appropriate
init calls. Global paths (PROJECT.md, codebase/) left unchanged.
…tusline, and docs (gsd-build#291)

Phase 5: polish for concurrent milestone execution.
- Milestone-scoped commit prefixes in execute-plan.md (v2.0/08-02)
- cmdMilestoneSwitch warns about in-progress work before switching
- /gsd:switch-milestone workflow and command
- Statusline shows active milestone in cyan [v2.0]
- new-milestone.md calls milestone create for multi-milestone mode
- Help and README updated with switch-milestone and concurrent docs
…itch-warning tests (gsd-build#291)

- USER-GUIDE: add /gsd:switch-milestone, concurrent milestones section,
  multi-milestone directory layout
- CHANGELOG: add [Unreleased] entry for concurrent milestone execution
- planner-subagent-prompt.md: replace hardcoded .planning/ paths with
  milestone-aware template variables
- 4 new tests: switch in-progress warning, idle switch, same-milestone
  switch, and auto-migration on first milestone create (461 total)
…tected (gsd-build#703)

Without --no-index, git check-ignore skips files already in the index,
so .planning added to .gitignore after being committed was not detected
as ignored. This caused commit_docs bypass logic to silently fail.

Closes gsd-build#703
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

isGitIgnored() fails for tracked files — missing --no-index flag

1 participant