Skip to content

fix(gitignore): 중첩 .suggested 가 git status 로 새던 것 — 리터럴 grep 검사의 사각지대 - #11

Merged
bluecheat merged 1 commit into
mainfrom
feature/gitignore-nested-suggested
Sep 9, 2026
Merged

bluecheat merged 1 commit into
mainfrom
feature/gitignore-nested-suggested

Conversation

@bluecheat

@bluecheat bluecheat commented Sep 8, 2026 •

Copy link
Copy Markdown
Owner

무엇이 문제였나

.ax/*.suggested 는 한 단계만 잡아요. provision.sh 는 세 곳 더 만들어요.

생성 위치 provision 기존 패턴
.ax/config.yml.suggested · .ax/AGENTS.md.suggested … §5, §6.5 ignored ✓
.ax/spirit/{values,tone,README}.md.suggested §6.10 샘
.ax/mistakes/README.md.suggested §6.5 샘
.ax/_templates/spec/<f>.suggested §4-b 샘

무시되지 않으니 git status 에 ?? 로 뜨고, git add -A 한 번이면 임시 머지본이 리포에 들어가요. 실사용 리포에서 업데이트 한 번에 spirit/README.md.suggested · spirit/tone.md.suggested 두 건이 실제로 샜어요.

왜 smoke 가 못 잡았나

기존 검사가 리터럴 grep 이에요.

for entry in ".ax/state.json" ... ".ax/*.suggested" ...; do
    grep -qxF "$entry" "$GI_TPL" || fail ...
done

.ax/*.suggested 라는 줄이 파일에 있는지만 봐요. 그 패턴이 무엇을 실제로 잡는지는 안 봐요. 그래서 다섯 엔트리가 다 있는 채로 중첩은 계속 새고 있었어요.

무엇을 바꿨나

  • 템플릿에 .ax/**/*.suggested 한 줄.
  • smoke 에 동작 검증 하나. 임시 repo 에 템플릿을 깔고 git check-ignore 로 네 경로의 실제 판정을 봐요.

릴리즈

버전은 올리지 않아요. 0.5.10 (#12) 위에 리베이스해서 그 릴리즈에 같이 실려요. templates/ 안의 수정이라 버전이 안 오르면 프로젝트에 안 닿는데(#7 이 그렇게 멈춰 있었죠), .gitignore 한 줄 때문에 릴리즈를 하나 더 파는 건 과해서요. changelog/0.5.10.md 에 항목을 더했어요.

검증

패치를 되돌려서 이 검사가 정말 회귀를 잡는지 확인했어요.

기존 엔트리 검사 신규 동작 검사
패치본 ✓ ✓
패치 되돌림 ✓ (못 봄) ✗ 중첩 3건 잡음
✓ .gitignore.template — runtime 엔트리 5종 모두 포함
✗ .gitignore.template — .ax/spirit/tone.md.suggested 가 무시되지 않음 (git status 로 샘)
✗ .gitignore.template — .ax/mistakes/README.md.suggested 가 무시되지 않음 (git status 로 샘)
✗ .gitignore.template — .ax/_templates/spec/spec.md.suggested 가 무시되지 않음 (git status 로 샘)

기존 검사가 되돌린 상태에서도 통과한다는 게 이 PR 이 필요한 이유예요.

  • 전체 smoke: 560 통과 / 0 실패 (0.5.10 리베이스 후 최종 상태)

🤖 Generated with Claude Code

https://claude.ai/code/session_01HMJX7Dvtu6KFKQH5sx9W5z

@bluecheat bluecheat changed the title fix(gitignore): 중첩 .suggested 가 git status 로 새던 것 fix(gitignore): 중첩 .suggested 가 git status 로 새던 것 — 리터럴 grep 검사의 사각지대 Sep 8, 2026
`.ax/*.suggested` 는 한 단계만 잡는다. provision 은 세 곳 더 만든다 —
.ax/spirit/{values,tone,README}.md.suggested (§6.10),
.ax/mistakes/README.md.suggested (§6.5),
.ax/_templates/spec/<f>.suggested (§4-b).
전부 무시되지 않아 git status 에 ?? 로 뜨고, 실수로 커밋될 수 있었다.
실사용 리포에서 업데이트 한 번에 두 건이 실제로 샜다.

.ax/**/*.suggested 를 더한다.

smoke 의 기존 검사가 이걸 못 본 건 리터럴 grep 이라서다 — 다섯 엔트리가
파일에 다 있어도 중첩은 안 잡히는데, 있는지만 봤다. 그래서 임시 repo 에
템플릿을 깔고 git check-ignore 로 실제 판정을 보는 검사를 더한다.

버전은 올리지 않는다. 0.5.10 (#12) 위에 리베이스해서 그 릴리즈에 같이 실린다 —
templates/ 안의 수정이라 버전이 안 오르면 프로젝트에 안 닿는데, .gitignore 한 줄
때문에 릴리즈를 하나 더 파는 건 과하다. changelog/0.5.10.md 에 항목을 더했다.

검증: 패치 되돌리면 중첩 3건이 실패하고 기존 엔트리 검사는 그대로 통과한다
(눈이 먼 자리가 그대로 드러난다). 전체 smoke 557 통과 0 실패.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HMJX7Dvtu6KFKQH5sx9W5z
@bluecheat
bluecheat force-pushed the feature/gitignore-nested-suggested branch from 154d1ef to 211626e Compare September 9, 2026 04:46
@bluecheat
bluecheat merged commit 5e02a5e into main Sep 9, 2026
2 checks passed
@bluecheat
bluecheat deleted the feature/gitignore-nested-suggested branch September 9, 2026 05:10
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.

2 participants