← 작업일지

2026-06-07 · v1.0.0

작업일지 2026-06-07 (일) v1.0.0

한 줄 요약

Siri 음성으로 “에어컨 꺼줘”가 안 되던 버그를 잡는 과정에서, 본진(Claude) 자신이 stale 전제 위에서 두 번 헛다리를 짚었고, 그걸 매번 실측이 막아 결국 가장 단순한 정답(로컬 tmux inject)으로 수렴했다. 같은 날 함대 인프라도 “성급한 단정 금지”라는 한 가지 테마로 정비됐다.

1. araseo-voice — 음성으로 본진을 깨우다 (이번 세션 핵심)

증상

Siri 음성비서(araseo-voice)로 home(본진) 타겟 명령(“다음 할일 뭐야”, “에어컨 꺼줘”)을 말하면 전부 실행 안 됨. 폰엔 dispatch home rc=4 ❌ self-target 가드 상태 메시지만 떴다.

근본원인

araseo-siri-route.pydispatch() 가 home 타겟에서 mac-directive.sh 를 호출. 그런데 그 스크립트는 노드→본진 SSH 주입용이라, 본진 자신에서 실행되면 self-target 가드(hostname 감지)가 rc=4 abort. 본진→본진 SSH는 publickey 거부 = 잘못된 진단 함정.

두 번의 stale 전제 (본진 자기교정)

  1. tuya 클라우드 만료 오진 — “에어컨 꺼줘”가 안 되자 tuya-control.py 에어컨꺼 직접 호출 → “subscription expired” 클라우드 에러를 보고 “Tuya 죽음”으로 단정. 실제론 로컬 LAN 경로가 정상이고, 로컬 맵엔 토글형 에어컨만 있어 클라우드용 키 에어컨꺼가 미스→만료 클라우드 폴백한 것. 아니키 “투야 로컬로 돌린지가 언젠데” 지적으로 교정.
  2. Telethon “검증 경로” 가정 — mesh-vote/trio-vote가 (a) Telethon을 “daemon.py가 이미 쓰는 검증된 경로”라 가정하고 골랐으나, 구현 직전 실측에서 Telethon 완전 미설정(.env 없음=API키 미발급, 유저봇 .session 부재, daemon 한번도 성공실행 안됨) 발견. 코드 존재 ≠ 런타임 동작.

의사결정 경로

mesh-vote((a) Telethon, stale 전제) → trio-vote(3-0 (a), stale 전제) → 실측으로 전제 붕괴 → codex-mesh-vote 시도(codex 월한도 0% 소진, 0/5 실패) → claude mesh-vote((b) 4-0) → 구현.

해결

home 분기 dispatch_home_local() — mac-directive.sh가 SSH 후 하는 tmux load-buffer/paste-buffer + send-keys -t claude를 SSH 없이 로컬에서 직접 실행해 본진 claude 세션에 음성명령 주입. 핵심 통찰: (a) Telethon이 푸는 문제(봇 자기발신 inbound 미수신)가 home엔 애초에 없다 — home은 로컬이라 텔레그램 왕복 자체가 불필요.

검증

격리 tmux 세션 주입 rc=0 + 텍스트 랜딩 → 실제 Siri 음성(“안녕하세요” 응답 / “선풍기 켜줘” 실행 / “클로드” / “굿나잇”) end-to-end 통과. 커밋 araseo-voice main 1bcf9e5.

박제

메모리(reference_araseo_voice_home_local_inject) + 이슈(2026-06-07-araseo-voice-home-self-target-dispatch) + 대종페이지 노하우(self-orchestration-home-local-inject, work.kangdaejong.com/knowhow 라이브) 3곳.

후속(별건)

tuya 에어컨/선풍기가 IR 토글(단일 전원토글)이라 음성 “켜줘/꺼줘” 분리 불가 → SmartLife에 ON/OFF IR 씬 별도 등록 필요(아니키 앱 작업). 라이덴에 셋업 가이드+코드 스캐폴딩 위임.

2. “성급한 단정 금지” 인프라 정비 (타 세션/노드, 같은 테마)

  • secret-find.sh — 자격증명 “없음” 단정 전 5노드 ~/.claude/secrets 전수 스윕 (automations 8ac7127). 이슈 2026-06-07-premature-credential-not-found.
  • stop-unverified-claim-detect 훅 — 검증 없는 완료/진단 단정 경고 (4502cb5).
  • preflight-evidence-gate observe 모드 — 큰작업 stale 오판 canary (f812af2).
  • node-session-check.sh — 노드 세션 생존확인 RUNNING/ABSENT/UNREACHABLE 3-상태(false-negative 3회차 재발 코드 forcing) + 노하우 박제.
  • claude-headless-retry.sh (529 백오프), fleet-status.sh (5노드 스냅샷) 등 insights 데이터레이어.

3. 공개 페이지

  • 가계부(Mini Expense) privacy policy 페이지 추가 (daejong-page 55047c7).
  • 공개 자동화 쇼케이스 페이지 “나” + index 메뉴타일 (35932d6, 머지 4cef8cf).

커밋 집계

daejong-page 10 · automations 15 · skills 12 · araseo-voice 2 (총 39). 이슈 신규 2건.