← 작업일지

2026-06-01 · v1.0.0

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

한 줄 요약

5노드 신뢰성 버그 4건을 잡아 가드로 박은 오전, 그리고 “내가 매번 손대던 세션 클리어 판단”을 통째로 인프라로 옮긴 저녁 — 컨텍스트 40% 자동 하드클리어를 5노드에 깔고, 첫이름 디자인을 코덱스 5대로 만들어 베이스를 확정했다.

1. 오전 — 5노드 신뢰성 버그 사냥 (가드로 박기)

오늘 오전은 어제~오늘 표면화된 노드 신뢰성 사고들을 근본 원인까지 파고 forcing-function 가드로 닫는 작업이 줄을 이었다.

  • 라이덴(🪟) 텔레그램 이중송신 (T-260601-01) — 같은 보고 메시지가 토씨 그대로 2번 발사. transcript 실측 = stop-hook 버그가 아니라 라이덴이 reply 툴 자체를 동일 텍스트로 2회 호출(헛걸음-reply=2). 조치 = telegram-reply-dedup.sh PreToolUse 신설(reply 직전 chat_id+text sha256, 120s 내 동일 차단). 5노드 settings.json 멱등 등록, 맥미니 기능검증(1통과/2차단) PASS. 커밋 dd1164a, 이슈 2026-06-01-laiden-reply-tool-verbatim-double-send.md.
  • cc nightly-update false alarm (T-260601-02) — Linux 3노드(🪟🖥💻)가 “바이너리 복구 실패” 오보. 진단 = 4노드 다 2.1.159 정상, 근본원인은 health_check가 bare claude --version을 부르는데 cron 비대화형 PATH에 nvm/.npm-global이 없어 command-not-found → 멀쩡한 바이너리를 “복구 실패”로 오판(macOS는 homebrew=PATH라 안 뜸→Linux만). 조치 = resolve_claude_bin() 풀패스 리졸버 + bare claude 7곳 치환. 커밋 667c386/1dafa2b, 3노드 배포 검증 PASS.
  • directive 미러 UTF-8 400 (T-260531-05) — GNU cut -c가 바이트 단위로 잘라 한글/이모지를 토막내 텔레그램 sendMessage 400. 조치 = utf8-head.sh 글자단위 truncate. 커밋 3a23a07/40ce409.
  • 세션클리어 ‘클리어 완료’ 알림 간헐 미발송 (T-260601-05) — clear 후 ”🔄 새 세션 시작됨” 1통이 간헐 누락. 진단 = 훅 로직 정상이나 curl -m 3 전체 타임아웃이 콜드 DNS에 빡빡 + 무로그라 침묵 실패. 조치 = --connect-timeout 4 -m 9 + HTTP 결과·SKIP 사유 로깅(blind→observable), 게이트-이전 무조건 ENTER 계측 추가(2차). 커밋 48dcb27/9cb82e0.

부수 작업: issue 스킬에 prevention-action 필수 필드 추가(#94), codex-mesh-vote에 🧠 DeepSeek 이질표 추가(v0.3, #93), next-cycle.md v2.8 완전 폐기 globals 반영(59681ab), pii-guard 본인 이메일 화이트리스트(da3651a).

2. 저녁 — OpenAI $5.55 미상 결제 추적

5/26 토스카드 “OPENAI” $5.55 결제가 OpenAI 빌링 히스토리·영수증 어디에도 없던 건. 추적: API 빌링(both orgs) X, ChatGPT 웹(Apple App Store 청구) X, 영수증 메일 X, 계정 보안 clean(신뢰기기 3대 다 본인). 돌파구 = 토스 매출전표 “Fee Charged 0.55 USD” → 실제 OpenAI 결제 = $5.00(API 카드검증/최소크레딧 금액). 케이스 09464670에 환불 요청 회신 발송, 자동응답(전문 상담원 에스컬레이션, 며칠 내 답) 수신.

3. 저녁 핵심 — 컨텍스트 40% 자동 하드클리어 인프라 (T-260601-08)

아니키가 초소에서 본진 컨텍스트가 50% 부근까지 오른 걸 보고 “클리어해야겠다” 하던 순간 5%로 뚝 떨어지는 걸 목격 → 자동컴팩트 의심. 본진이 처음 “자동컴팩트는 90%에서 뜬다”고 측정 없이 단정했으나 아니키 지적으로 세션 로그 실측:

  • 현재 세션(4cdf19a9) peak 컨텍스트 546k 토큰 = 54.6%, isCompactSummary 4회.
  • 즉 자동컴팩트는 90%가 아니라 ~55%(약 540k)에서 발동. 50% 셀프클리어가 컴팩트 지점과 거의 붙어 매번 lossy 컴팩트로 넘어가던 것.

설계(아니키 픽: 항상 40%, 클로드 노드만, 투표 생략):

  • context-hard-clear.sh (Stop 훅): 컨텍스트 ≥40%(400k)면 {"decision":"block"} forcing function으로 깨끗한 셀프클리어 강제 — tasks.md [~]/[?] 마킹 + resume-task 포인터 이어받기(자동컴팩트보다 정확).
  • compact-count.sh (SessionStart 훅): 자동컴팩트 2회 누적 시 force-clear-now 무장(즉시 클리어, 비상 백스톱).
  • 무한루프 가드 DO NOT REMOVE 마커(clear=카운터 리셋·카운트 안 올림, stop_hook_active/marker skip).

검증 = dry-run 5/5 PASS + WSL(Linux) 45%block/14%통과 기능검증 PASS. 5노드(본진+wsl/mac-mini/desktop/notebook) 멱등 등록(register-hardclear-hooks.sh). 커밋 7f5dbcd/06d1767, 이슈 2026-06-01-compact-counter-backstop.md. 이후 본진은 40% 닿으면 사람 손 없이 자동 클리어+이어받기.

4. 저녁 — 첫이름 디자인 코덱스 5대 빌드 (T-260601-09/10)

토큰 남는 codex 5노드에 첫이름(AI 사주작명, 19,900원 단발) 디자인을 분배:

  1. 5노드가 각 앵글(작명경쟁/단발결제랜딩/타이포감성/모던미니멀/결과화면UX)로 벤치마크 리서치 → 디자인 샘플 1개씩 빌드(HTML) → cheotireum.pages.dev 프리뷰 배포(토큰 없는 3노드는 본진이 wrangler로 대신 배포).
  2. 아니키가 🪟 프리미엄 단발결제 랜딩 픽 → 브랜드(도장+붓글씨 ‘첫이름’ 락업, 두잎새싹 도장 아이콘) 입혀 WSL codex가 v2로 다듬기 → 본진 배포 cheotireum-v2.cheotireum.pages.dev.
  3. 제품 결정 잠금: 결과물 = 작명서 PDF/이미지 한 장(가족투표·다단계 reveal·복잡 인터랙션 OUT), CS=0 구조(결제전 실제샘플 노출+자동 즉시전달+환불불가 사전동의+영구 재다운로드+FAQ).

토스 PG 심사는 이메일 확인 결과 영업일 약 1~2달(백로그 적체). 전략 = 그 동안 전부 TEST 모드로 완성 → “승인=test_ck→live_ck 한 줄 교체” 즉시 라이브. 풀빌드 백로그 = tasks.md T-260601-10(굿나잇 후 코덱스 fan-out 예정).

배운 것

  • 상태 단정은 실측 후에만. “자동컴팩트 90%“를 측정 없이 단정했다가 로그 실측(546k/55%)으로 정정. 초소 노드% = 빌링이 아니라 실제 컨텍스트 사용률(choso-ping.sh 확인). 아니키의 지적→실측→설계가 한 흐름으로 굴렀고, 그 실측이 곧바로 40% 임계 숫자로 들어갔다.
  • 반복되는 사람 판단은 인프라로 옮긴다. “50% 보고 클리어할까” 하던 수동 판단을 forcing function으로 박으니 손0 한 칸이 채워졌다. 자동컴팩트보다 먼저(40%) 잡아 lossy 요약 대신 tasks.md 정확본으로 이어받게 한 게 핵심.
  • single-thread 직렬화 = 부하 지연. 맥미니 codex가 샘플 빌드(11분)로 바빠서 챗 답이 큐에 밀린 걸 “답장 안 옴”으로 체감(실제론 크롬 텔레그램 웹 렉도 한몫). 버그가 아니라 부하 직렬화였다.