Skip to content

release: 0.6.2 — 완료 마킹이 본문에 언급된 다른 task 까지 켜던 것 (spec-implement §5 인라인 sed → mark-task.sh) - #19

Closed
bluecheat wants to merge 1 commit into
mainfrom
fix/mark-task-prefix-match
Closed

bluecheat wants to merge 1 commit into
mainfrom
fix/mark-task-prefix-match

Conversation

@bluecheat

Copy link
Copy Markdown
Owner

무엇이 잘못됐나

spec-implement §5 가 체크박스를 인라인 sed 로 켰어요:

sed -E "/^- \[ \] .*T013([^0-9A-Za-z]|$)/ s/^- \[ \]/- [x]/"

.* 때문에 줄 어디에든 ID 가 있으면 매칭돼요. tasks.md 본문이 다른 task 를 언급하는 건 권장 관행("T009 가 셋 다 해소" · "T005 의 상수와 맞춤")이라, 실측(statusface spec 024)에서 T005·T007·T009 를 켜자 아직 시작도 안 한 T008·T014·T058 이 검증 없이 완료가 됐어요. tasks-gate.sh 는 코디네이터가 켠 체크박스를 원장 없이도 정상으로 읽어서 잡지 못했고요. 그 sed 는 tasks.md.lock 도 안 잡았어요(lanes-dispatch.sh·tasks-gate.sh 와 lost-update 가능).

같은 §1 의 grep -m1 '^- \[ \]' 는 템플릿 "한 줄 형식" 코드 펜스 안 예시(- [ ] T001 [P] [AC2] <한 줄 설명>)를 첫 미완료 task 로 돌려줬어요.

고친 것

  • 신설 mark-task.sh — 결정론 경계(CLAUDE.md §Architecture 1)대로 SKILL 인라인 writer 를 스크립트로. 줄 앞 ID 만 매칭(- [ ] T013 · **T013** · [T013], 뒤 영숫자 금지라 T001≠T0011), 코드 펜스 건너뜀, goax_lock(같은 락 문자열 tasks.md.lock), goax_mktemp, 쓰기 전후 [x] 개수가 정확히 1 늘었는지 검증(어긋나면 exit 1). --next(펜스 밖 첫 미완료, exit 2 = 없음) · --state '~'(보류) · --dry-run · --json · goax_help.
  • skills/spec-implement/SKILL.md §1 NEXT_TASK · §5 마킹 → 스크립트 호출.
  • spec-review.sh --merge --json 에 merged_file(텍스트 모드만 찍던 것).
  • README 목록 1행 · CLAUDE.md 스크립트 수 37→38 · changelog 0.6.2.md · VERSION/plugin/marketplace 0.6.2.

검증

픽스처(펜스 예시 + 본문 언급 3줄 + **T014**·[T058] 장식 + [~]):

  • --next → 펜스 밖 T001(line 11), 펜스 안 예시(line 6) 아님
  • T009 마킹 → T008(본문에 "T009" 언급) 그대로 · T005 마킹 → T014·T058 그대로 · 장식 ID 둘 다 켜짐
  • idempotent changed:false · 없는 ID → error · --state '~' · --dry-run 무변경 · 락 파일 잔존 0
  • bash tests/smoke.sh 전부 통과

메모: bash case 패턴의 맨 ~ 가 $HOME 으로 틸드 확장돼요 — "~" 로 묶었어요(픽스처가 잡음).

🤖 Generated with Claude Code

https://claude.ai/code/session_01RJUj8ng7FfRCctDyceTGyd

…인 sed → mark-task.sh)

spec-implement §5 의 인라인 sed(`.*T013`)가 줄 어디에든 ID 가 있으면 매칭해, 본문에 다른 task 를
언급한 줄까지 [x] 로 뒤집었어요. 실측(statusface spec 024): T005·T007·T009 를 켜자 시작도 안 한
T008·T014·T058 이 검증 없이 완료가 됐고 tasks-gate 는 그걸 정상으로 읽었어요. 락도 없었어요.

- 신설 mark-task.sh — 줄 앞 ID 만 매칭(`- [ ] T013 `·`**T013**`·`[T013]`), 코드 펜스 건너뜀,
  tasks.md.lock, 쓰기 전후 [x] 개수 검증, `--next`(펜스 밖 첫 미완료), `--state '~'`, --dry-run/--json
- SKILL §1 NEXT_TASK 가 템플릿 펜스 안 예시(`- [ ] T001 [P] [AC2] <한 줄 설명>`)를 집던 것 → --next
- spec-review.sh --merge --json 에 merged_file
- README 목록·CLAUDE.md 스크립트 수(38)·changelog 0.6.2·VERSION/plugin/marketplace 0.6.2

검증: 픽스처(펜스 예시·본문 언급 3줄·장식 ID·[~]) 전 경로 + bash tests/smoke.sh 통과

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RJUj8ng7FfRCctDyceTGyd
@bluecheat

Copy link
Copy Markdown
Owner Author

#25 로 옮겨서 0.7.2 로 내요 (0.6.2 번호가 이미 쓰여 그대로는 머지할 수 없었어요).

@bluecheat bluecheat closed this Sep 25, 2026
@bluecheat
bluecheat deleted the fix/mark-task-prefix-match branch September 25, 2026 11:00
bluecheat added a commit that referenced this pull request Sep 25, 2026
spec-implement 의 인라인 sed(`.*T013`)가 줄 어디든 ID 가 있으면 매칭해 본문에 다른 task 를 언급한 줄까지 [x] 로
바꿨어요 (실측 3건 검증 없이 완료). PR #19 를 main 위로 옮겨 정리했어요.

- mark-task.sh 신설: 줄 앞 ID 만 · 코드 펜스 건너뜀 · tasks.md.lock(lanes-dispatch 와 같은 루트) · 쓰기 전후 [x] 개수 검증 · --next
- spec-implement §1·§5 가 mark-task.sh 사용, spec-review --merge --json 에 merged_file
- smoke §59, changelog/README 에 0.7.0~0.7.2


Claude-Session: https://claude.ai/code/session_01SnBEacbEqZHTmQJEG8VZeN

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.

1 participant