Repository navigation
v 1.13.0 — 비-git dispatch 자식 회수 복구 + 설계 문서는 개인 머신으로
·
28 commits
to main
since this release
v1.13.0 — 비-git dispatch 자식 회수 복구 + 설계 문서는 개인 머신으로
비-git 디렉토리에서 자식 4개가 전부 정상 완료했는데 부모가 받은 완료 통지가 0건이었다. 부모는 자식이 끝난 줄 모르고 턴을 종료했다.
🐛 Fix
- done-marker 가 사실상 한 경로에서만 기록되던 문제.
hooks/notify-slice-done.sh의 조기 종료가 4중이었다 — 비-cmux / 비-git / 일반 체크아웃(GIT_DIR==GIT_COMMON) /TOPLEVEL이*/.worktrees/*아님. 전 경로exit 0이라 실패가 로그에도 안 남았다. marker 부재가 reap fast-path ·reap-on-stop자동 통지 · (폴백인)wait-idle을 동시에 죽였다 — 벨트와 멜빵이 같은 못에 걸려 있었다. scripts/cbp-marker-path.sh신설 (공용 리졸버). writer 1곳과 reader 4곳(cmux-pane.sh×3,reap-on-stop.sh)이 각자 marker 경로를 계산해서, 한 곳만 고치면 writer/reader 가 갈라졌다. 우선순위:CBP_MARKER_DIR> git-common-dir >~/.cache/cbp/marker-<workspace>. 비-git 폴백 규칙은enforce-cmux-dispatch.sh가 이미 쓰던 것을 재사용했다.wait-idle이 살아있는 Claude TUI 상대로 원리상 반환하지 않던 문제. 화면 원본 sha 비교라 경과시간·비용·스피너가 매초 바뀌어 idle 에 도달하지 못했다(실측timeout (540s), 자식이 이미 파일을 쓴 뒤). 해시 전 변동 라인을 마스킹한다 — 단 맨 초 단위(42s)는 상태줄에서만 지운다. 전역으로 지우면 본문의 진행 변화까지 삼켜 "아직 일하는 중인데 idle" 로 조용히 오판한다.- 비-git dispatch 하드 실패.
git worktree add실패로 종료했고--worktree우회 안내도 없었다. 격리는 목적이 아니라 슬라이스간 파일 충돌 방지 수단이고 그 충돌은 plan 의 Slice File Map 이 관리하므로, 경고 1줄 후 cwd 로 진행한다. git repo 경로는 무변경. - 게이트 escape 안내가 코드와 불일치. 비-git 폴백의
-<sanitized workspace>접미사가 빠진 경로를 안내해서, 그대로touch하면 훅이 절대 보지 않는 파일이 생기고 재시도해도 같은 자리에서 다시 막혔다. 안내가 훅이 실제로 소비하는 변수를 그대로 출력하도록 단일 출처화. read-screen→capture.read-screen은 cmux CLI 명령이고cmux-pane.sh의 대응은capture다. 안내대로 하면 실패했다.- 비-git 에서 detached HEAD 오진단.
marker_path()안의die가 항상 command substitution 에서 실행돼 서브셸만 죽였고, 본체가 계속 진행해 사실과 다른 진단을 냈다. 판정을do_start진입부로 옮겨 실제로 종료되게 했다. - launch-time 사망의 원인 확정 (한 달 미해결).
cmux new-pane호출이 stderr 를 버려서, 실제 에러not_found: Workspace not found가 "PTY 미기동(not a terminal)" 이라는 엉뚱한 메시지로 나타났다. 세션이 자기 workspace 보다 오래 살아남으면(데몬 재시작·재호스팅)CMUX_WORKSPACE_ID가 stale 이 된다. stderr 보존 + stale 선검사 + 폴백 안내를 추가했다. 기존 가설("surface 는 생기나 terminal 미attach")은 틀렸다 — surface 는 애초에 만들어지지 않았다.
♻️ Refactor
- 설계 문서 기본 경로를
~/.claude/design/<repo>/로. v1.10.0 은 repodocs/design/에 두고 "인수인계·이력서 자산" 으로 규정했는데, 그 프레이밍은 모델이 얹은 것이고 사용자가 말한 "영속" 은 개인 머신 영속이었다. 이 저장소는 공개라 커밋하면 개인 작업 노트가 그대로 공개되고, 팀 저장소라면 타인에게 읽기·유지를 강요한다.CBP_DESIGN_DIRoverride 는 유지 — 팀과 공유할 문서만 repo 안 경로를 명시한다. 커밋돼 있던docs/design/plan-presentation.md는 제거했다.
📝 Docs
- dispatch 후 감시를 의무로 명시. 통지 체인은 조용히 실패할 수 있다(실측 0건). 감시 루프를 걸지 않은 채 턴을 종료하지 말 것.
- 설계 문서는 작성 직후
open으로 사용자 화면에 띄운다 — 못 본 상태의 승인은 승인이 아니다.
계약 변경: 일반 체크아웃과 .worktrees/ 밖 worktree 에서도 이제 통지·marker 가 기록된다. 구계약을 검사하던 테스트 2건을 새 계약으로 갱신했다.
테스트: 91개 전체 통과 (신규 27항목). 설계 문서의 재현 절차를 기준선으로 실행해 4단계 전부 증상 소멸을 확인했다.
업데이트: /plugin update sshworld