2026.05.17 작업일지 v1.0.0
두 단계 — 메모요 sync 자율루프(00:30 ~ 11:37) → 큐 대시보드 인프라 셋업(11:40 ~ 14:25). 야간 cron이 알아서 굴리던 메모요 작업을 종료시키고, 첫 paid 도메인 + Cloudflare Zero Trust 까지 박은 하루.
오늘의 궤적
- 00:30~07:26: 메모요 sync 자율루프 cron 10회 fire. S1 spec → S2 design → S3 code → S4/S6/S7 사전 작업 위젯·문서 누적. S3 비가역 hold(Firebase 프로젝트+크레덴셜) 에 막혀 중단 마커 박음.
- 11:35: 형님 “메모요 세션 종료처리해도 되지 않나? 작업 없다며” — 정확히 진단. 자율루프 종료 결정.
- 11:37~11:50: launchd unload + tmux kill + SYNC_PROGRESS.md 종료 마커 push. 큐 가시성 문제 surface → GUI 대시보드 설계 논의.
- 11:50~12:47: 도메인 등록 결정 → kangdaejong.com Business 결제($10.46, 마이너스베타스튜디오 사업자 명의).
- 12:48~14:15: Cloudflare Zero Trust + Tunnel(Mac mini, queue-dashboard) + Public application route(queue.kangdaejong.com → localhost:7777) + Access policy(이메일 OTP). 인프라 100% 완성.
- 14:20: 5 PR squash 머지(wordyo/mini_expense/hanjul widget/hanjul lint/pomodoro), lotto-calc PR #17 fresh ack 대기.
- 14:25: 형님 /goodnight 트리거.
메모요 sync 자율루프 — 첫 야간 자율 진척
야간 자율 사이클의 첫 실험. launchd 45분 cron 이 fresh 컨텍스트로 tmux memoyo-loop 세션에 paste, Claude 가 SYNC_PROGRESS.md(S1~S8) 읽고 다음 단계 자율 진행하는 구조.
| Fire | Time(KST) | Commit | 단계 |
|---|---|---|---|
| #1 | 00:30 | 07d9b78 | SYNC_PROGRESS.md 셋업 |
| #1 | 00:37 | 69d5dad / c2dd61d | S1 spec — backend 비교 + Firebase 추천 + LWW |
| #2 | 01:19 | d19da5d / 46e3a10 | S2 design — Firestore 모델·트리거·오프라인 큐·마이그레이션 |
| #3 | 02:07 | 4f7db99 / 849cfed | S3 code — firebase_core/auth/firestore + bootstrap 가드 + 단위 4/4 |
| #4 | 02:50 | 180e97d | S7 사전 — privacy policy 동기화 갱신 초안 |
| #5 | 03:34 | 8836b0e | S7 사전 — 통합 테스트 시나리오 문서 |
| #6 | 04:19 | 32ad567 | S6 사전 — SyncStatusDot 위젯 + 위젯 테스트 5/5 |
| #7 | 05:03 | af8a2c5 | S4 — AuthService Firebase 가드 단위 6/6 |
| #8 | 05:49 | 2f1f80e | S4/S6 사전 — SyncEnableCard 위젯 + firestore.rules 분리 |
| #9 | 06:35 | d4ce0a1 | refactor — humanize 헬퍼 추출 + 7/7 PASS |
| #10 | 07:18 | 3d8c783 | test — SyncService 가드 단위 4/4 |
| #10 | 07:26 | 54b38ca | 중단 마커 + 다음 추천작업 박음 (S3 비가역 hold 인식) |
총 12+ commit mac/memoyo-sync-2026-05-17 브랜치 누적. PR 미생성, 형님 재개 시 결정.
종료 결정 (11:37)
형님이 “작업 없다며 종료처리해도 되지?” 트리거. 진단 정확 — S3 비가역 hold (Firebase 프로젝트 생성 + google-services.json/GoogleService-Info.plist 배치 = 형님 손) 풀리지 않으면 S4/S5/S6 wiring 다 막힘. 사전 작업(SyncStatusDot/SyncEnableCard/privacy 초안/test 시나리오) 도 다 끝나서 남은 사전 폭 거의 0. 다음 fire 가 무한 marginal polish 들어갈 가능성.
조치:
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.daejongkang.memoyo-sync-loop.plist→ launchctl list 에서 사라짐 확인tmux kill-session -t memoyo-loop→ ls 결과 없음 확인~/simple_memo_app/SYNC_PROGRESS.md상단에 종료 마커 박고 commita5eee9dpush toorigin/mac/memoyo-sync-2026-05-17- plist 는
~/Library/LaunchAgents/에 그대로 보존 → 재개 시launchctl bootstrap gui/$(id -u) <plist>한 줄로 복귀
메모리 project_memoyo_sync_loop_2026_05_17.md status: terminated 갱신, 진척 마커 S1/S2 완료, S3 코드 부분+나머지 단계 보류 inline.
큐 가시성 문제 → GUI 대시보드 설계 → 인프라 셋업
문제 surface (11:38, 형님)
“잡일이나 메인잡이 stale 이고, 상황 바뀌면서 안 할 작업도 꺼내서 함. 내가 잡일/메인잡 선택해서 돌리고 stale/안할 거 수정·삭제 지시하고 싶은데 UI 가 전혀 안 보임.”
진단 — 노드가 작업을 “이미 픽한 다음에” 결과만 텔레그램으로 surface, 픽 전에 끼어들 채널 없음. 5 노드 큐 분산.
설계 옵션 surface
- (1) 텔레그램 픽 전 60초 veto window — 노이즈 큼(5노드 × 잡일)
- (2) 일일 큐 매니페스트 — 아침 standup 1통
- (3) /queue 슬래시 — on-demand
- (4) 별도 GUI 화면 + 어디서나 폰으로 접근
형님 (4) 선택 → 인터넷 공개 사이트 결정. 도메인 신규 등록 동의.
도메인 등록 (11:50~12:47)
- 후보 가용성 확인: daejongkang.com / kangdaejong.com / ssamssae.com 등 비어있음, claw.kr / clawkang.com 누가 잡음
- 형님 선택: kangdaejong.com
- 등록처 후보: Cloudflare Registrar(at-cost ~$10, DNS 자동) vs 가비아(한국 사업자 처리)
- 형님 이미 CF 계정 있음(ssamssae@naver.com, daejong-page CF Pages 33m 전 active 확인) → CF Registrar
- 마이너스베타스튜디오 회사 이메일 가능성 고민 → minusbetastudio.com 추가 등록 vs kangdaejong.com 단일 → 형님 “$10 아깝다” → 단일
- WHOIS 입력: First=DAEJONG, Last=KANG, Phone +82, Address line 1=
4, Mallijae-ro 10-gil, line 2=Apt 102, City=Seoul, State=Seoul, ZIP=04185(마포구 공덕동 권역 확인), Country=South Korea - Account Type 전환: Personal → Business, Organization=
Minus Beta Studio, VAT/GST=878-21-02478(사업자등록번호) - 첫 시도 CF risk system 일시 차단(
temporarily blocked, please wait a few minutes). CAPTCHA 통과는 OK. 10분 대기 백그라운드 타이머(PID 84552, sleep 600 → curl Telegram) 셋업 - 재시도 성공 → “You bought kangdaejong.com” 12:47 KST, Updated 2026-05-17T03:46:36Z
- 결제 $10.46/yr, Auto-renew ON, 다음 갱신 2027-05-17, Naver Pay 글로벌브랜드 카드 SMS OTP 통과
Cloudflare Zero Trust 활성화 (12:48~12:51)
- Get started → Choose a plan Free($0/seat, 50 seat limit)
- “I authorize Cloudflare to charge for usage exceeding free limits” 체크(50명 초과시만, 형님 1명이라 발동 0) → Activate
- Team 자동 생성:
late-bird-2983.cloudflareaccess.com
Tunnel 생성 (12:51~13:13)
- Networks → Connectors → Add a tunnel (옛 “Tunnels” 메뉴가 Connectors 로 리브랜딩)
- Type: Cloudflared(Recommended, Mesh 베타는 Linux 전용)
- Name:
queue-dashboard - “Install and run a connector” 화면 → 토큰 발급(
eyJhIjoiMGY1NzQ2NjA3...) - 호스팅 결정: Mac 본진 vs Mac mini → Mac mini 채택
- Mac mini = 진짜 24/7 server-grade(launchd 워커 + 디스플레이 X), 본진은 작업 머신
- 본진은 sleep/restart/업그레이드 시 큐 대시보드 끊김 위험 → 서비스/작업 분리 원칙
- 5 노드 큐 통합 phase 2-3 도 Mac mini 가 SSH 로 끌어모으는 게 자연스러움
- JARVIS-like 시스템 방향성 일치(서비스=서버)
- 본진에서 SSH 로 Mac mini
brew install cloudflared(v2026.5.0 설치, /opt/homebrew/bin/cloudflared) - 형님이 Mac mini Terminal.app 에서
sudo cloudflared service install <token>직접 실행(passwordless sudo 안 켜져 있어 SSH 자동 불가) - “MacOS service for cloudflared installed successfully” 확인 → 데몬 launchd 등록 + 자동 시작
- 본진 verify: pgrep 2 PIDs(18792, 18831), 3 connections 등록(icn06/icn01 PoP, QUIC protocol)
- Tunnel HEALTHY ✓, uptime 11m
Public application route (13:24)
- Tunnel detail 페이지 → Published application routes 탭(옛 “Public Hostnames” 의 새 이름)
- Subdomain=
queue, Domain=kangdaejong.com, Path=빈칸(^/blog은 placeholder, 처음엔 실제 텍스트로 오인), Type=HTTP, URL=localhost:7777 - HTTP 채택 이유: cloudflared→localhost FastAPI 가 internal loopback, self-signed cert 불필요. 외부는 자동 HTTPS(CF 가 TLS terminate)
- 포트 7777 채택 이유: 1024 이상(root 불필요), commonly free, memorable
- Save → DNS 자동 생성(queue.kangdaejong.com CNAME → 터널)
- 검증:
dig queue.kangdaejong.com +short→ 172.67.179.228 / 104.21.40.68(CF edge),curl -sSI https://queue.kangdaejong.com→ 502 Bad Gateway(FastAPI 안 떠서 정상, tunnel→cloudflared 까지 경로 살아있음)
Access policy (14:05~14:15)
- Access controls → Applications → Add an application → Self-hosted and private → Public DNS
- Application name=
queue, Session=24h, Subdomain+Domain=queue.kangdaejong.com - Policy: name=
Allow Daejong, Action=Allow, Selector=Emails, Value=ssamssae@naver.com - Login methods: One-time PIN(이메일 OTP), 다른 OAuth 비활성
- MFA / Purpose justification / Temporary authentication / RDP Clipboard 다 OFF(개인 1명 사용)
- Save Policy → Save Application
- 검증:
curl -sSI https://queue.kangdaejong.com→ 302 redirect tolate-bird-2983.cloudflareaccess.com/cdn-cgi/access/login/.... Access 로그인 페이지 정상.
~/todo/ git sync (13:25)
- 본진 ~/todo/ 이미 git repo, origin:
ssamssae/todo, branch main, clean ✓ - 별도 sync repo 셋업 불필요(기존 활용)
- Mac mini
git clone git@github.com:ssamssae/todo.git ~/todo성공 - 양쪽 같은 commit c21113c 동기화
lotto-calc PR 사고 정리
WSL(DESKTOP-I4TR99I) 가 P2/P4 sweep 6 repo 중 lotto-calc 하나 step 0 git fetch+status 누락 → 옛 commit 563edca(PR #9 시드 파이프라인) 위에 분기 → PR #16 이 +296/-7 / 7 파일 / CONFLICTING 으로 본진 검증에 적발.
조치(WSL 자체):
- PR #16 close + comment 로 base mismatch 명시
- local main → origin/main reset —hard(12 commit fast-forward)
- 새 branch
wsl/lotto_calc-widget-test-fix-2026-05-17-v2를 origin/main 3c5d410 fresh 위에서 분기 - widget_test.dart 단독 patch(+6/-9, 1 파일) — origin/main UI 텍스트 매칭(
행운번호 생성기/번호 세트 5/새로 생성) + 패키지 이름(lottocalc→randompick) + A1~A5 라벨 → minimal smoke - push + PR #17 OPEN
본진 처리:
- GH API 로 PR 상태 검증 ✓(PR #16 CLOSED, #17 OPEN/base=main/+6-9/MERGEABLE/CLEAN, 5 PR 모두 MERGEABLE/CLEAN)
- 형님 사전 ack “5 PR 머지해줘” → 5 PR squash 머지(—delete-branch):
- wordyo #32 MERGED 02:41:12Z
- mini_expense #1 02:41:16Z
- hanjul widget #17 02:41:20Z
- hanjul lint #16 02:41:24Z
- pomodoro #1 02:41:28Z
- lotto-calc #17 fresh ack 필요로 hold
- 3-channel 완료: (1차) mac-report 수신 / (1.5차) WSL reverse reply 송신(1032 bytes) / (2차) 형님 텔레그램
이슈 박제: ~/.claude/skills/issues/2026-05-17-lotto-calc-pr16-stale-base-mismatch.md 신규. 교훈: 모든 repo sweep 시작 시 step 0 git fetch + git status 무조건. 기존 메모리 feedback_stale_branch_origin_default_check 적용 누락 사례 — 룰은 있었으나 sweep 코드 패스에 inline 안 됨이 root cause.
별건 — origin/main 자체의 broken state: test/lotto_history_seed_test.dart 2건이 assets/lotto_history.json 누락으로 fail. 본 PR scope 밖, 별 사이클로 별 PR 처리 예정.
인프라·스킬·자동화
- claude-automations 5 commit: mac-report-reverse-reply hook 의 grep list 에 mac-mini-directive.sh 추가(60070c9), 4 sister script self-reference path unification(cc61ab8), notebook3060-directive self-host skip(6f80a33), envtool remove subcommand 머지(#28), agent-msg-notify deprecated hermes 제거(cc6d567)
- claude-skills 3 commit: hermes → notebook3060 정리 spec PR #54 머지(eda2bbb), 신규 이슈 2건 auto-sync(stop-hook mac-mini-directive false positive bb1c194, lotto-calc base mismatch 5ed284b)
- daejong-page 3 commit: todos 스냅샷 2회 + 추가 todo(Tuya 에어컨 IR 등록)
- ~/todo 2 commit: D11 brainstorming + notebook3060 role 승격 신규, Tuya 에어컨 IR 등록 추가
- simple_memo_app 16 commit: 위 자율루프 표 + 종료 마커
학습·상담
- 형님 “FEDA 같은 시스템 구축 거의 되가는거지?” → JARVIS-like 시스템 비유 해석 + 현재 70~80% 진척 답변. 부족 부분: 음성 인터페이스, ambient 인지, 시각 통합 대시보드(큐 대시보드가 시작점).
- 형님 “마이너스베타스튜디오 회사 이메일 팔 수 있어? 블라인드 새회사 등록하려는데” → Cloudflare Email Routing 무료 옵션 surface. minusbetastudio.com 추가 등록 옵션 vs kangdaejong.com 단일 → 단일 선택, 블라인드 인증은 사업자등록증 추가 첨부로 시도 예정.
남은 작업
- Task #7 FastAPI 큐 대시보드 phase 1 — ~/todo/ 파서 + 모바일 HTML 렌더 + stale/promote/skip 액션 + write-back/git commit. Mac mini 배포. ~2-3h 예상, 별 사이클.
- Task #8 lotto-calc PR #17 fresh ack + squash 머지 — 형님 ack 대기.
- Email Routing(daejong@kangdaejong.com → ssamssae@naver.com forward) — 별 사이클 ~5분.
- 블라인드 가입 + 회사 인증 — Email Routing 셋업 후, 사업자등록증 첨부.
- origin/main lotto_history_seed_test 별 PR — assets/lotto_history.json 누락 fix.
- 메모요 sync 재개 보류 — 형님이 Firebase 프로젝트 만들고 크레덴셜 두 파일 배치하면 launchctl bootstrap 한 줄로 복귀.
관련 커밋
| repo | SHA | 메시지 |
|---|---|---|
| simple_memo_app | a5eee9d | docs(sync): 자율 루프 종료 마커 박음 (2026-05-17 KST) |
| simple_memo_app | 54b38ca | docs(sync): 자율 루프 중단 마커 + 다음 추천작업 박음 |
| claude-automations | 60070c9 | fix(hook): mac-report-reverse-reply grep list 에 mac-mini-directive.sh 추가 |
| claude-skills | 5ed284b | auto: skills update (issues/2026-05-17-lotto-calc-pr16-stale-base-mismatch) |
| claude-skills | bb1c194 | auto: skills update (issues/2026-05-17-stop-hook-mac-mini-directive-not-detected) |
메모리 갱신
project_memoyo_sync_loop_2026_05_17.md— status: terminated, 종료 절차 + 진척 상세 inlineproject_kangdaejong_domain_cf_infra_2026_05_17.md— 신규, 도메인+CF Tunnel+Access 인프라 박제MEMORY.md인덱스 갱신