FROM THE WORKSHOP / 이슈
D07 install-launchd.sh smoke self-load — guard 검증 의도가 실 install 까지 가버린 사고
D07 install-launchd.sh smoke self-load — guard 검증 의도가 실 install 까지 가버린 사고
- 발생 일자: 2026-05-16 16:55 KST (즈음)
- 해결 일자: 2026-05-16 17:00 KST
- 심각도: medium (실 부작용 0, 5분 worker spawn 발화 전 rollback 성공)
- 재발 가능성: medium (스크립트 구조 단일 단계라 또 발생 가능)
- 영향 범위: Mac 본진
~/Library/LaunchAgents/(rollback 완료), agent-fleet-state D07 게이트 청소 사이클, D0N strict trigger 룰 위반 사례 1건
증상
D07 follow-up queue 의 q#4 (install-launchd.sh hostname guard 추가) 패치를 검증할 의도로 bash scripts/install-launchd.sh macbook 직접 실행. guard 통과 후 스크립트가 그대로 plist 복사 + launchctl load 까지 진행됨. 비가역 외부영향 작업(launchd job 등록)이 검증 의도 안에서 실 install 까지 가버린 D0N 룰 위반.
원인
install-launchd.sh 가 단일 entry 스크립트로 (a) hostname guard → (b) plist 복사 → (c) launchctl load 가 한 통에 묶여있음. 가드 한 부분만 떼서 검증할 dry-run 모드 / 단위 테스트 entry 부재. “guard 검증” 의도가 곧 “전체 install 실행” 이 되는 구조적 위험.
조치
launchctl unload ~/Library/LaunchAgents/com.fleet.*.plist즉시 실행rm ~/Library/LaunchAgents/com.fleet.*.plistplist 파일 제거launchctl list | grep fleetdirector0 entries 확인 — 5분 worker spawn 발화 전 rollback 완료, 실 부작용 0- trio-vote (C) stash + stop 결정 (msg_id 17835) 따라 D07 게이트 청소 패치 stash@{0} (
d07-gate-cleanup-pre-stop 2026-05-16) 보존 - 재진입은 명시 ack 대기 (todos.md
D07 게이트 청소 재진입항목으로 박힘)
예방 (Forcing function 우선)
후보 ranking, 강대종 결정 필요:
(1순위) install-launchd.sh 첫줄에 ack 환경변수 게이트 추가 — if [[ -z "$D0N_ACK" ]]; then echo "[D0N] 비가역 작업. D0N_ACK=yes 환경변수 필요."; exit 1; fi. 검증 의도면 D0N_ACK 빼고 호출 → 가드까지만 돌고 exit. 실 install 의도면 D0N_ACK=yes 명시. 가장 forcing.
(2순위) —dry-run 플래그 추가 — --dry-run 인자 받으면 guard / plist generate 까지만 가고 copy + load 직전 STOP + diff 출력. ack 우회 가능성은 있지만 사람 의지 의존도 줄임.
(3순위) guard 부분 별 함수 + 단위 테스트 entry 분리 — guard logic 을 lib/guard.sh 같이 sourced-only 함수로 빼고 tests/guard_test.bats 로 테스트. install-launchd.sh 는 guard 통과만 호출. 구조적 정합성 최고지만 작업 분량 큼.
본 작성 시점 1순위 채택 권장 — D0N strict trigger 룰을 스크립트 본체에 inline 으로 forcing function 화. 머지 사이클은 D07 게이트 청소 재진입 PR 에 묶어서.
재발 이력
관련 링크
- 메모리:
feedback_d0n_strict_trigger_no_chain.md(D0N — ambiguous ack 거부 + chain 금지) - todos:
~/todo/todos.md진행중 “D07 install-launchd.sh smoke self-load 사고 이슈 박제” - trio-vote: 텔레그램 msg_id 17835 (stash + stop 결정)
- 관련 이슈:
2026-04-21-launchd-silent-job-dropout.md,2026-05-11-launchd-clear-trigger-abort-loop.md(둘 다 install 자체 사고 아님 — 별건)