← 작업일지

2026-05-13 · v1.0.3

2026.05.13 작업일지 v1.0.3

D09 fleet-director 사이클에서 review-before-push 룰을 4회 연속으로 위반한 끝에, 가드 + parity + sequential verification 룰 3종을 박제한 사이클. 아침 08:36 ~ 11:15 KST.

오늘의 궤적

새벽엔 /loop 잡일 트랙 12 iter (v1.0.0/1/2 박제됨). 그 다음 아침 08:36 KST 에 “뭐할까” 한 마디로 시작해 D09 fleet-director 사이클을 4시간에 걸쳐 진행했다. plan §Day 9 의 13 fleet shell primitive 를 만들고, bats 4 PASS 받고, push side-effect 로 source commit 이 origin 에 끌려나간 걸 감지하고, 가드를 박고, 또 가드 적용 전에 baseline bats 가 또 push 하고, 또 reviewer parity 가 가드 없는 source 위에서 검증해서 또 push 하고… 같은 family 사고를 4번 반복한 끝에 룰을 세 개 박제했다.

후속으로 P1 fix-now (plan §9.8 sync) 처리하고, WSL 이 별도 디렉티브로 보낸 session-clear v2.4 keepalive PR 머지 + 4기기 회수까지 진행했다. desktop3060ti 에서 ~/.claude/automations/ repo 자체가 부재라는 gap 도 발견.

D09 fleet-director 사이클

컨텍스트

전날 D08 (gate A+B+C + bats-core + 5필드 evidence) 클로즈된 상태. D09 plan = 13 fleet shell primitive (fleet-status / ack / reject / pause / resume / abort / abort-mission / promote / log / budget / devices / mission / kill) + tests/primitives.bats 4 케이스 + Mac mini scp.

sweep family 4회 사고 chain

sweepnoise commitrevert직접 원인
1차 (4)f14bba6 + 11b7dce + 306ed02 + 64a111a개별 4 revert (55a5269..c4b5a55)implementer 첫 bats — plan §9.8 mission cleanup git push + fleet-kill/mission primitive 내부 push 가 unpushed D09 source 3680caf 끌고 origin 박힘
2차 (8)27b21a6..cf2014bcombined empty revert d8bf73aFLEET_NO_PUSH guard fix-attempt subagent 가 guard 적용 baseline bats 실행, 가드 없는 primitive 가 push 발화 (2 라운드)
3차 (8)a13fbce..4ec8fadcombined empty revert efe5d4dspec-reviewer 가 mac-mini parity 단계에서 git format-patch -1 3680caf 로 D09 source 단일 패치를 apply — 가드 빠진 bats setup. apply 후 bats 실행 시 setup() FLEET_NO_PUSH=1 export 없음. 병렬 reviewer 2 라운드
4차 (4)eda8f33..95beb9ecombined empty revert b0343d2원인 가설 — mac-mini SSH-경유 FLEET_NO_PUSH propagate 미흡 또는 본진 BEFORE/AFTER race. 사후 empirical 검증 시 PUSH BLOCKED OK 일관 — 정확한 원인 미확정

총 24 noise commit + 24 audit-trail revert. tree 영향 모두 net 0 (KILL/—release + mission_proposed/cleanup 쌍 self-cancel). 강대종 force-push 금지 룰 따라 forward-only revert chain.

D09 fix 1b2c08b — FLEET_NO_PUSH 가드

10 primitive (fleet-{ack,reject,abort,abort-mission,promote,pause,resume,mission,kill[2]}.sh) + tests/primitives.bats setup() 에 가드 패턴:

... && { [ "${FLEET_NO_PUSH:-0}" = "1" ] || git push --quiet origin main; }

bats setup() 가 export FLEET_NO_PUSH=1 → child bash 가 inherit → primitive 가 push 스킵. set -euo pipefail 하에서 || short-circuit 안전 (code-quality-reviewer empirical 3 케이스 검증 PASS).

박제된 룰 3종 (D10+ 영구 적용)

~/.claude/projects/-/memory/feedback_subagent_no_push_isolation.md 에 박힘. D10+ 모든 subagent prompt 에 inline 의무.

  • 룰 1: push-capable primitive/bats 실행 전 export FLEET_NO_PUSH=1 또는 격리 throwaway repo. baseline/smoke/verify/debug 어떤 명목이든 예외 X.
  • 룰 2: reviewer parity patch-apply 시 source commit 단독 금지. 최종 guarded range 또는 git pull --ff-only 기준.
  • 룰 3: 최종 verification 병렬 reviewer 금지. sequential + 실행 전후 git rev-parse origin/main 비교 필수.

검증

  • Mac 본진: bats 4 PASS + origin 3955b08 변화 0 (PUSH BLOCKED OK).
  • mac-mini: 한 번 divergence 발견 (reviewer parity 시점에 mac-mini local 만 fixture commit 4개 누적) → git reset --hard origin/main 후 재실행 → bats 4 PASS + origin 변화 0.

시간 비용

  • 시작: 08:36 KST (“뭐할까”)
  • 종료: 11:15 KST (P1 fix-now 완료, plan §9.8 sync)
  • 약 4 시간

P1 fix-now — plan §9.8 sync

D09 사이클 root cause 가 plan §9.8 본문에 그대로 남아있으면 D10/D11 implementer 가 같은 함정 재발. plan 본문 자체를 sync.

  • plan §Day 9 헤더에 D09 사후 학습 5-rule annotation 박음 (라인 2118-2125)
  • plan §9.8 setup() 에 export FLEET_NO_PUSH=1 추가 (라인 2340)
  • plan §9.8 mission cleanup 라인: git add .git add mission.json queue/ + 가드 패턴 (라인 2365-2368)

D09 follow-up queue P1 → ✅ CLOSED 표시 (project_fleet_d09_followup_queue.md).

plan 파일은 ~/.claude/plans/ 위치 (git untracked) → 로컬 edit 만. origin/main 3955b08 무변화 verified.

WSL session-clear v2.4 keepalive 회수

D09 close 직후 WSL 가 별도 디렉티브 보냄 (tmux paste 경유). 강대종 명시 ack 받고 진행.

머지 디렉티브 (1/2)

  • PR #14 (claude-automations) hook: session-clear-trigger.sh v2.4 — WSL idle keepalive (#14) → squash merge b921190
  • PR #34 (claude-skills) session-clear v2.0: WSL idle keepalive 절차 추가 (#34) → squash merge 0ba9ae3

본진 self pull + 검증:

  • ~/.claude/automations main = b921190
  • ~/claude-skills main = 0ba9ae3
  • bash -n hooks/session-clear-trigger.sh PASS
  • grep -F 'wsl keepalive 3600s armed' → 1 match

회수 디렉티브 (2/2) — 4기기 분배

기기claude-automationsclaude-skills결과
🍎 Mac 본진b921190 ✅0ba9ae3 ✅bats -n PASS, grep 1
🏭 Mac minib921190 ✅0ba9ae3 ✅scope respected, syntax PASS
🖥 desktop3060ti❌ repo 미설치0ba9ae3 ✅본진 결정 보류 (gap surface)
💻 hermes(미회신)(미회신)회신 대기 중

desktop3060ti gap — ~/.claude/automations/ repo 부재

scripts/ 디렉토리만 (mac-report.sh / macmini-report.sh / wsl-directive.sh) 있고 hooks/ 자체 없음. WSL 디렉티브 “타 OS 는 코드만 박힘 (no-op)” 가정이 이 기기엔 안 맞음 (코드 자체 부재). issue 박제 (2026-05-13-desktop3060ti-claude-automations-absent.md). case A (clone 필요) / case B (chatbot 노드만이라 hooks 불필요) 결정 미정.

cross-bot ack 채널 함정

WSL 봇 (@Myclaude2) 이 본진 봇 (@MyClaude) 으로 디렉티브 paste 시 “강대종 명시 승인 텔레그램 msg NNNN” 클레임. 그러나 본진 챗봇은 다른 봇 채팅 메시지 verify 불가 (Telegram Bot API 한계). 본진 봇 채팅에서 강대종 직접 ack (“WSL 디렉티브 머지 + 회수 OK”) 받기 전엔 외부 영향 행위 hold. 후일 인프라 보강 후보 3 case 등재 (project_cross_bot_ack_channel_followup.md).

박제된 issue 3건

~/.claude/skills/issues/ (claude-skills 자동 commit+push hook 작동):

  1. 2026-05-13-d09-fleet-sweep-family-4-rounds.md — high severity, 사이클 전체 박제
  2. 2026-05-13-fleet-state-mac-mini-divergence.md — low, reset 한 줄로 해결
  3. 2026-05-13-desktop3060ti-claude-automations-absent.md — medium, 결정 보류

박제된 메모리

  • feedback_subagent_no_push_isolation.md — 룰 3종
  • project_fleet_d09_followup_queue.md — 7 follow-up (P1 CLOSED + P2 2 + P3 4)
  • fleet_director_d01_trigger.md — D09 close 갱신 (D10 trigger)
  • project_cross_bot_ack_channel_followup.md — 인프라 보강 후보 3 case
  • MEMORY.md 인덱스 3 라인 추가

todo 자동 매칭

todos line 18 (🚨 fleet-state test harness push 격리, D07 cron 전 blocker) → ✅ 완료 처리. 이유: D09 fix 1b2c08b (FLEET_NO_PUSH guard) 가 같은 root cause mechanism 차단. 단 D07 코드 (run-worker.sh / task-picker.sh / tests/*.test.sh) 같은 가드 적용은 D07 system install ack 별도 트랙으로 분리.

관련 커밋

repoSHA메시지
agent-fleet-state3955b08D09 housekeeping: README sweep 4회 분리 기록 + 박제된 새 룰 명시
agent-fleet-stateb0343d2Revert 4 D09 4차 ambiguous-source bats noise commits
agent-fleet-stateefe5d4dRevert 8 D09 reviewer bats noise commits (3차 sweep)
agent-fleet-state12867c3D09 housekeeping: README D09 row 추가
agent-fleet-stated8bf73aRevert 8 D09 fix-attempt bats noise commits
agent-fleet-state1b2c08bfix(D09): FLEET_NO_PUSH guard — bats push side-effect 차단 (condition #6)
agent-fleet-statec4b5a55Revert “fleet: KILL human_emergency by user” (1차 4-revert 끝)
agent-fleet-state91355d1D08 housekeeping: README 구현 히스토리 D08 row 추가
agent-fleet-state36108d8feat(D08): gate A+B+C 3-layer + 5-field evidence + bats tests
agent-fleet-state3680caffeat(D09): 13 fleet shell primitives + bats tests
claude-automationsb921190hook: session-clear-trigger.sh v2.4 — WSL idle keepalive (#14)
claude-skills0ba9ae3session-clear v2.0: WSL idle keepalive 절차 추가 (#34)
claude-skills442e00eauto: issues/2026-05-13-d09-fleet-sweep-family-4-rounds.md
claude-skillsefb0fd0auto: issues/2026-05-13-fleet-state-mac-mini-divergence.md
claude-skills2af8337auto: issues/2026-05-13-desktop3060ti-claude-automations-absent.md
todo(auto-sync)todo: 완료 - fleet-state test harness push 격리 (D09 fix 1b2c08b mechanism 차단)

남은 작업

  • desktop3060ti claude-automations case A/B 결정 (강대종 ack 대기)
  • hermes reverse reply 회신 (안 옴) — WSL 디렉티브 회수 phase 3 종합 보고 보류 (강대종이 “여기까지 하고 굿나잇” 명시)
  • D07 system install ack (별도 트랙, 여전히 미진행)
  • D09 follow-up queue P2 2건 + P3 4건 (D10+ 또는 별 사이클)
  • D10 시작 결정 (scope read 완료, main 직접 push 룰 vs branch+PR 절차 결정 필요)

학습·교훈

  • plan 본문 자체에 push 라인이 박혀있으면 implementer 가 따라도 사고 — plan 검수 단계에서 push-capable 라인은 가드 패턴 default 로 박을 것. P1 fix-now 로 §Day 9 본문 sync 완료.
  • subagent 가 baseline 검증을 가드 없이 돌리면 또 사고 — 룰 1 박제 (any 명목, 어떤 단계든 가드 강제).
  • reviewer parity 가 source 단일 commit 패치만 보면 또 사고 — 룰 2 박제 (range 또는 pull —ff-only 기준).
  • 병렬 reviewer 가 같은 함정을 동시에 두 번 발화 — 룰 3 박제 (sequential + origin BEFORE/AFTER 비교).
  • forward-only revert chain 이 정직한 audit-trail — force-push 금지 룰 따라 history 박힘이 어수선해도 review-before-push 룰 위반 사실은 다 시각화됨.
  • cross-bot 사이의 강대종 ack 가 본진 봇 채팅으로 안 오면 본진 챗봇이 verify 불가 — 인프라 follow-up 후보 3 case 등재.