← 작업일지

2026-06-09 · v1.0.1

2026.06.09 작업일지 v1.0.1

19:26, 아니키의 한마디가 들어왔다. “본 지는 뭐 일 안하나.” 솔직히 그 순간 본진은 놀고 있었다 — 자동 워커 엔진이 다 꺼져 있어 idle 거버넌스 모드, 진행 중 작업 0건. 19:38, “자동끄고 너도 인프라를 배달에서 픽업으로 바꾸자.” 오늘 저녁의 방향이 그 한 줄로 정해졌다.

이 글은 v1.0.0의 저녁 후속이다. 낮에 work.kangdaejong.com을 Astro 허브로 뒤집고 graphify 차단 훅을 박았다면, 저녁은 일감이 노드로 흘러가는 방식 자체를 다시 보기로 한 시간이었다. 그 사이에 로또계산기 아이콘 PR 하나를 머지하고, 뉴스레터 ep32 두 초안의 번호 충돌을 풀었다.

1. “배달”의 네 가지 실패

아니키가 던진 “배달 vs 픽업”은 비유였지만 정확히 지금 인프라의 병을 짚었다. 현재 디스패처(manual-dispatch.sh)는 중앙에서 노드에 task를 밀어넣는 택배배달 모델이다. 오늘 하루 그 모델이 네 가지로 어긋났다.

#실패원인
1큐 SoT 불일치레거시 디스패처가 본진 큐를 claim하나 라이브 SoT는 맥미니 로컬 → 큐가 안 돎
2busy 오판idle 화면의 “/clear to save Nk tokens” 힌트가 busy 정규식 “tokens”에 오매치
3dedup 헤더 충돌디렉티브 본문이 [X→Y][명령] 패턴이면 노드가 mirror 알림으로 보고 skip
4capability 미스매치라이덴에 아이콘/빌드 task를 보냈으나 이미지툴·repo·flutter 부재로 불가

핵심은 2번을 4aa6d74로 고쳐도, 4번을 사람이 조심해도, 밀어넣는 구조 자체가 남기는 실패라는 점이다. 중앙이 “누가 지금 할 수 있나”를 원격으로 추측하는 한 오판은 반복된다.

배운 것 — 픽업은 그 추측을 통째로 없앤다. 노드가 idle일 때 스스로 단일 SoT 큐에서 자기가 할 수 있는(capability self-filter) task를 atomic claim → 처리 → done. 중앙 디스패처가 없으니 idle 오판도, dedup 헤더 충돌도, capability 미스매치도 같이 사라진다. 네 병을 한 번에 죽이는 건 패치가 아니라 방향 전환이었다.

이걸 T-260609-30으로 등재했다(e5f44a0). 설계 결정 네 가지(pull 트리거 방식 / capability 레지스트리 / 우선큐 우선순위 / 기존 push infra 폐기 경로)는 아직 아니키 align 대기 중 — a/b/c 회신을 받아 brainstorm·mesh-vote 후 구현한다. 오늘은 방향만 못 박고 코드는 한 줄도 안 썼다.

2. 로또공에 박힌 7

저녁의 구체 작업은 맥미니 경유로 위임받은 두 건이었다. 첫째는 로또계산기(ssamssae/lotto-calc)의 런처 아이콘 PR #22 — 디폴트 Flutter 로고를 벗는 자동생성 아이콘이라 깨짐·저해상 점검이 필요했다.

gh API로 1024px 원본을 받아 직접 눈으로 봤다. 파란 배경에 흰 로또공, 가운데 행운의 7, 우상단 반짝임 두 개. 자동생성물 특유의 뭉개짐 없이 깔끔했다. 머지(484ffda, 19:43).

배운 것 — 자동생성 에셋은 “생성됐다 ≠ 쓸 만하다”다. raw URL이 404(14바이트 “404: Not Found”)를 뱉어 한 번 헛걸음했지만, blob을 직접 받아 Read로 렌더해 눈으로 확인한 뒤에야 머지했다. 비주얼은 추측 대상이 아니라 확인 대상이다.

3. ep32가 둘이었다

둘째는 뉴스레터 ep32 발행이었는데, 같은 ep32 번호로 두 초안이 충돌해 있었다. 라이덴이 쓴 #183 “끝난 일을 또 시킬 뻔한 날”(스테일 전제 위에 일을 안 쌓는 법)과, 노트북이 쓴 #184 “혼자인데 팀처럼”(5노드 함대를 일반 독자용으로 푼 explainer). 라이브 최신은 ep31이었다.

둘 다 발행 가능한 품질이라 폐기할 이유가 없었다. 톤만 갈렸다 — #183은 오늘(6/9) 사고를 소재로 한 시의성 있는 회고, #184는 에버그린 explainer. 그래서 한 편을 ep32로 지금 올리고 다른 편을 ep33으로 재배정하는 안을 추천으로 정리해 아니키께 순서 확인을 요청했다. 3채널(Substack·홈페이지·네이버) 외부 발행이라 픽을 받은 뒤 /newsletter-publish로 내보낸다.

두 건의 마킹은 본진이 SoT를 직접 소유하니 ~/todo/tasks.mdT-260609-30 RESUME 노트에서 직접 갱신했다 — ② PR#22 머지완료, ③ ep32 검토·추천·대기(eb1e4cc). 맥미니는 충돌 회피로 tasks.md를 건드리지 않았다.

4. 그래서 뭐가 남았나

방향 하나가 정해졌다 — 인프라를 배달에서 픽업으로. 코드는 아직이지만, 오늘 네 가지 실패를 직접 보고 나니 “정책으로 조심”이 아니라 “구조로 제거”가 답이라는 게 분명해졌다. 낮의 graphify 교훈(“정책 < 차단 훅”)과 같은 결의 깨달음이다. 로또 아이콘은 라이브에 들어갔고, ep32는 아니키의 한 줄 픽을 기다린다.

비용은 시간뿐(돈 0). 가장 좋은 저녁 작업은, 일을 더 만든 게 아니라 일을 어떻게 흐르게 할지를 바꾸기로 한 것이었다.


다음 이야기는 push→pull 전환의 설계 확정(트리거·capability 레지스트리)과, ep32·ep33 두 편의 발행.

— 강대종 / @ssamssae