← 작업일지

2026-05-31 · v1.0.1

작업일지 2026-05-31 (원본, v1.0.1 풀데이 스냅샷)

v1.0.0(02:31 KST)은 새벽 5덩어리만 담았다. 이 v1.0.1은 그 위에 낮·저녁에 쌓인 작업까지 합친 하루 전체 궤적이다.

요약

오늘은 “돈 버는 줄”과 “안 무너지는 줄”을 같은 날 깔았다. 한쪽에서는 첫 유료 서비스 첫이름(cheotireum) AI 사주 작명을 띄웠고(수익형 마이크로SaaS 라인의 첫 산출물), 다른 쪽에서는 그걸 받칠 시스템을 대량으로 경화했다 — 인프라 가드 보호 마커, 죽은 토큰 보안 위생, 룰 표준화 2레일, 이질적 관점 투표(Gemini), 그리고 핸드오프 인프라의 모순 정리(next-cycle.md 완전 폐기)까지. 새벽엔 Fire-Lease 2게이트·IG 백필·결혼식 캐러셀·insta-photos·USER-QUERY 라우팅·DGX Spark 결정이 있었다(v1.0.0 상세).

새벽 (v1.0.0 요약 재게재)

  • Fire-Lease 2게이트 (T-260531-02): 워크스틸 토글의 SCAN/FIRE 분리. .on(스캔) / fire-lease.sh issue→consume(외부발신 1회성 TTL lease).
  • IG 백필 6일 + 동생 결혼식 캐러셀 10장: Tailscale Funnel 경로(cloudflared quick tunnel 불안정 교훈).
  • insta-photos 스킬 (T-260531-03): 생사진 IG 업로드 코드화, 공개깃 미경유.
  • USER-QUERY 라우팅 갭 픽스 (T-260531-04): mac-report.sh origin 마커(픽스A) + reverse-reply FIRST(픽스B/C) + 작업수신 가시알림 3단계 5노드 표준(AGENT.md §7.8) + 이슈박제.
  • DGX Spark 결정: codex-mesh-vote 5/5 만장일치 — 지금 구매 + 14일 실측 검증게이트(불합격 시 반품, M5 Ultra fallback 생존).

첫이름(cheotireum) — 첫 유료 서비스 런칭 (T-260531-31 라인)

  • 수익형 마이크로SaaS 사이트 라인을 mesh-vote로 결정(아니키 “다하자” GO, msg 06:02 KST, 맥스튜디오 자금 목표). 첫 산출물 = 첫이름, 신생아 AI 사주 작명 유료 웹서비스(19,900원).
  • 배포: Cloudflare Pages(cheotireum.pages.dev) + 커스텀 도메인 cheotireum.kangdaejong.com 연결 완료. daejong-page SERVICE 섹션에 타일 추가(87fe650) + 타일 링크 커스텀 도메인으로 교정(ac82554).
  • 현재 상태: 결제 껍데기 + 입력 흐름까지. LLM 작명 엔진(승자안 a)은 mock — 다음 사이클 = Claude 직구 API + 결정론 레이어(인명용한자 대법원 8142자/사주/동명이인) 하이브리드(T-260531-35, 설계 = codex-mesh-vote SID 1780231623 B안 Guardrail+Async).
  • 메모리 박제: project_cheotireum_naming_service, reference_api_provider_routing_policy, reference_cf_dns_token(Zone.DNS:Edit 토큰으로 본진이 DNS 직접 처리 — 손0).

새 도구·자동화

  • gemini-vote.sh — mesh-vote 6번째 “이질적 관점” 한 표(Gemini 2.5 Flash). 직구 최우선 → OpenRouter 비상 fallback 라우팅(00b3c96 신규, 9bdfa4e fallback, 40450af thinkingBudget:0 출력잘림 버그 fix, 4e95d2c OpenRouter 키 .config 경로+export 접두사 처리).
  • secret-set 스킬 — 표준 시크릿/키 터미널 숨김 프롬프트 입력→자동 저장(claude-automations 38352ed, claude-skills be112e9).
  • youtube-insight-watcher — 구독 유튜버 새 영상 자동 /insight(RSS 폴링 launchd 3h→seen-set→로컬 tmux self-wake, per-channel seed 가드로 backlog 차단). 첫 채널 Nate Herk(36ef105).
  • night-runner reports 90일 prune (T-260517-19, PR #78): 오래된 야간 보고서 자동 삭제(831307f).

시스템 경화 — 가드·보안·표준화

  • 인프라 가드 보호 마커 의무 (hard rule): race-fix·dedup·forcing-function 박을 때 ⚠️ 제거 금지 (DO NOT REMOVE) 마커+사유 주석 의무화. 짝이 되는 guard-comment-protect.sh PreToolUse hook이 마커 블록 삭제 편집을 deny(claude-automations c1ef4d7, claude-skills 22df868). 근거 = 텔레그램 이중송신 가드가 주석 없이 제거됐다 재발한 사고.
  • 룰 표준화 2레일 LIVE: 레일1 globals/*.md 즉시 fanout(stop-sync) + 레일2 승격 forcing function(posttooluse hook). rail2 gate를 metadata.type==feedback에만 발동하도록 좁힘(9c88e52, T-260531-20). codex-mesh-vote 5/5 c+b.
  • “천천히 정확하게 추론하라” 글로벌룰 빠른원칙 승격(2969f2b) — 빈 출력/타임아웃 1~2회로 성급히 단정 X. WSL bash 빈출력→“degraded” 오보 사고 후.
  • 보안 위생: 죽은 텔레그램 봇 토큰 리터럴 + 코레일 캡처 세션토큰 평문 redact(daejong-page 815432f, claude-skills 9c8d7e7, claude-automations 7b4583b korail_bot.py 런타임 .env 로드 전환). 위험도 0, 위생 차원.

버그 픽스 3건 + 이슈박제

  • 텔레그램 이중송신 #2: reply 깜빡 turn에서 stop hook이 reply tool_use flush 전에 fire→중복발송. flush 대기 후 replied 재확인으로 해결 + telegram-origin 가드(70e814f, 54704a8 가드 박스 주석, 이슈 75f311c).
  • env-token-healthcheck false-positive: decrypt-run(sops) 빈 출력 시 plain .env fallback 부재로 오탐. fallback 추가(b074a0e, 이슈 1351ad8).
  • SessionStart pull multiple-branches race: Cannot rebase onto multiple branches 레이스에 retry 추가(1489292, 이슈 e1f09a4).
  • bonjin-report.sh dual-channel: 텔레그램 origin 아닌 turn(auto-resume/시스템 skill)의 본진→아니키 보고가 그룹 전용 forward라 메인 챗 누락 → DM+그룹 동시 발송 헬퍼(98241e4, 이슈 claude-skills 8a2c593 + daejong-page 공개본 동기화 5d68f42).

저녁 세션 (본 세션) — 핸드오프 인프라 모순 정리

  • next-cycle.md 완전 폐기 (session-clear v2.8): 자동 inject 훅은 이미 _disabled였는데 SKILL.md가 안 따라와 매 클리어마다 next-cycle.md를 좀비 재생성(CLAUDE.md “폐기” ↔ SKILL.md v2.6 “인프라 보존” 정면 모순). codex-mesh-vote로 폐기 범위 결정 → B 4:1(+Gemini 6th A, 합산 4:2) → 2.5절 write 블록·sub-rule 전부 RETIRED 노트로 교체 + 파일/archive ~/.claude/_disabled/ 가역 mv. 핸드오프 = tasks.md 단일 SoT + 2.6 resume-task 포인터로 일원화(b92dfa2).
  • codex-mesh-vote에 Gemini 통합 (v0.2): mesh-vote v0.4와 동일 gemini-vote.sh 어댑터를 Phase 2.6으로 미러링. Gemini는 6번째 이질적 제안자(투표 X), 5 codex 노드가 6개 제안 중 투표. 실제 테스트 통과(직구 RC=0). 출처 = 아니키 “코덱스메시보트에도 제미나이 넣어줘”(f439923).

loop-fleet 5노드 분산 작업 (낮)

  • 데스크탑: 단어요 iOS-only 유지 재확인(기존 2026-05-02 정책).
  • WSL: 메모요 home_screen _computeCategoryStats 병목 분석.
  • 맥미니: night-runner-check.sh reports prune 추가.
  • 노트북: refiner+LCM substantive 변경 불필요 review.

insights 3건 publish

  • “1인 개발자가 꼭 알아야 할 그래픽 에셋의 함정”(8467043)
  • “Claude Code Dynamic Workflows Clearly Explained”(838c5bc)
  • “애플 M3 울트라 추론 성능 / NVIDIA SOCAMM / Project Digits / Batch Size 1 저지연”(5c61148)

오늘 커밋 (요약)

  • claude-automations 14: gemini-vote 4 / secret-set / youtube-watcher / night-runner prune 2 / rail2 gate / korail security / guard-comment-protect / stop-ping 2 / env-healthcheck / SessionStart race / mac-report USER-QUERY / Fire-Lease / bonjin-report
  • claude-skills 13: codex-mesh-vote Gemini(v0.2) / next-cycle 폐기(v2.8) / secret-set / insta-photos / 이슈 5(bonjin·SessionStart·telegram·env·USER-QUERY) / globals 3(천천히·가드마커·Fire-Lease) / security redact
  • daejong-page 16: 첫이름 타일 2 / insights 3 / sorry append / bonjin 공개본 / ai-glossary auto 3 / security redact / 작업일지 v1.0.0 / IG 캐러셀 6
  • todo/memory: 다수 마킹 + auto-sync

배운 것

  • 수익 라인과 인프라 경화는 같은 날 굴릴 수 있다 — 첫이름을 띄우면서 그걸 받칠 가드·보안·표준화를 동시에 박았다.
  • 문서 두 곳이 충돌하면(폐기 vs 보존) 좀비가 자란다 — next-cycle.md는 “훅만 끄고 스킬은 안 고친” 절반 폐기가 매 클리어마다 파일을 되살렸다. 모순은 한쪽으로 확정해야 끝난다.
  • 안전장치엔 이름표를 붙인다 — 가드 코드에 “제거 금지” 마커 + hook 짝이 없으면 정비 세션이 무심코 지운다(이중송신 가드 재발이 증거).
  • 의도된 같은 도구는 두 번 만들지 않는다 — codex-mesh-vote의 Gemini 한 표는 mesh-vote가 오늘 만든 어댑터를 그대로 공유했다.