← /log
2026-05-08

wow factor 1주 sprint v2 + 강제 의존성 hooks 완료

2,004 words·raw from wai-vault/02-DevLog

2026-05-08 — wow factor 1주 sprint v2 + 강제 의존성 hooks 완료

한 줄 요약

deep-research 4갈래 인사이트 반영한 v2 plan 으로 7일 + F1/F4/F5 풀 완료. 35+ task / 28 commit / 모든 BE staging PASS / 21 신규 FE 컴포넌트 / 7 신규 BE 모듈. 도메인 산 후 활성화 대기.

사토시 의도 (반영)

"가입하고 5초만에 와 씨빨~ 소리 나게 하고, 왜 결제를 해야하는가를 똑바로 때려박아야함" "AX SaaS 의 본질을 진짜 제대로 유지해야함, 쓸수록 매일 발전하는" "moat 가 있는 것 ≠ moat 를 안 쓰면 안 됨" "브레인은 다운로드 하게 해주면 안되지 않나" "PG 재판매 X 씨발 뭔 개소리야"

v1 → v2 변경 (외부 리서치)

v1 가설v2 (deep-research 반영)출처
5질문 자유 텍스트클릭 3 + 자유 2 hybridPinterest survey conversion
5초 카운트다운streaming reveal (AI 거짓말 X)desisle 2026 / Reforge
단순 progress barDevin plan→tasks 트리Cognition Devin docs
결과물 한꺼번에1개씩 sequential + 1.2s teaserReforge first habit loop
Free trial 14일Reverse Trial 7일 (Cursor 패턴)OpenView 2026
Hard paywall 단독Soft → Hard 2단Halo AI 16.5% (hard 10.7%)
5 tier3 카드 (Pro/Business/Enterprise)Linear/Notion 패턴
⌘K 메인검색바 1차 + ⌘K 보조한국 SMB UX
30일 daily streak주 5일 + freeze passDuolingo 압박 비판
brain raw export Oraw export X, 미리보기만사토시 5/7 결정

Day 별 commit

Day 1 — Pinterest 5질문 wizard

  • db6f693 D1-T1 schema (companies 6컬럼 + onboarding_answers)
  • 0b6d4e2 D1-T2 API 4 endpoint
  • 5a22180 D1-T3 8업종 templates config
  • 88d34b0 USE wai_board; sweep (staging hijack 사고 수습)
  • e19f89d D1-T4 TemplateGallery.jsx
  • 7e9b596 D1-T5 SurveyWizard.jsx (276라인)
  • fced84e D1-T6 OnboardingFlow + App.jsx 강제 redirect

Day 2 — first_results chain + SSE + 트리 + reveal

  • 976190e D2-T3 first_results chain config
  • 0d7fb16 D2-T1 onboarding-stream-api.js (SSE)
  • 15c4919 D2-T1 hotfix (req._body — bridge body 이중 등록)
  • 79298aa D2-T2 AgentTreeViz.jsx
  • 1e225a8 D2-T4 SequentialReveal.jsx
  • 3d489e4 D2-T6 GeneratingScreen wrapper

Day 3 — 다운로드 + 자동 라우트

  • e574727 D3-T1 SwotPdfButton (FE jsPDF, 서버 OOM 회피)
  • 75d0473 D3-T3 onboarding-deploy.js (landing 1-click prod URL)
  • d9309b2 D3-T3 hotfix (폴백 output 차단)
  • dee3340 D3-T4 CitationLabel (Notion AI Q&A 패턴)

Day 4 — habit loop + 24h push + 톤

  • 5c3d9a0 D4-T1 HabitLoopCTA "1번만 더"
  • e2a3a32 D4-T2 onboarding-followup.js (24h cron)
  • 6ec109c D4-T3 microcopy polish

Day 5 — Reverse Trial + 토스 v2 + Pricing + Paywall

  • baec242 D5-T1 Reverse Trial 7일 + trial-expiry-cron
  • 1e58907 토스 v2 BE (billing-toss.js)
  • 2671fe2 토스 v2 FE (TossCheckoutButton + TossReturnPage)
  • da81e67 D5-T2 ROI 카운터 (billing-roi.js)
  • ea6772e D5-T3..T7 (PricingTable / CompareChatGPT / Soft / Hard / CancelLockIn)

Day 6 — Help v2 + streak + nudge + nginx CSP

  • 80f9e3a D6-T5 streak + D6-T6 nudge cron
  • 4dfaa4f D6-T5 hotfix (KST UTC drift)
  • 5b3fb51 D6-T1/T2/T4 GlobalSearchBar + HelpIconButton + Coach 톤
  • (server) nginx CSP 토스 도메인 (Report-Only 유지)

Day 7 — Lock-in

  • c44f8c8 D7-T1 BE brain-summary
  • bf09764 D7-T1 BE hotfix (GET → POST)
  • 060a505 D7-T1/T2/T3 FE (BrainGraph + WorkflowArchive + TeamInviteCTA)
  • 544a0f0 D7-T1 FE hotfix

F1/F4/F5 — 강제 의존성

  • 804e05e F1 alimtalk-routes + F4 daily-report + F5 토스 결제→세금계산서 자동

사고 + hotfix 5건

  1. USE wai_board; staging hijack (5/7) — mysql ... wai_board_staging < onboarding-schema.sql 로 staging 명시했는데 파일 첫 줄 USE wai_board; 가 prod 로 redirect. 7 마이그 파일 sweep + feedback_sql_no_use_clause.md 메모리. 다행히 멱등 안전.
  2. bridge body 이중 등록 hang (D2-T1) — 4/30 csp-report 504 패턴. req.on('data') 새 등록 = event 안 발화. req._body 사용으로 fix.
  3. D3-T3 폴백 deploy — chain 폴백 실패 output ("[전체 폴백 실패]") 도 그대로 deploy. 폴백 마커 차단 + HTML validity 422.
  4. streak KST UTC drift (D6-T5) — mysql2 가 DATE 컬럼을 UTC 00:00 Date 로 반환. dateOnly 헬퍼 +9h 보정.
  5. dispatch GET body 안 받음 (D7-T1) — agent-detail GET 으로 body 못 받음 → POST 변경.

사토시 외부 액션 (도메인 산 후)

  • 도메인 결정 + DNS (nexus.[company-domain] 또는 독립)
  • Resend DNS 3 records (mailer 활성)
  • Kakao OAuth Developers 등록
  • 토스 가맹점 등록 (사장님 명의) + secretKey .env (staging 이미 박힘 — prod 만)
  • 알리고 비즈니스 채널 ([company] 명의) + ALIGO_API_KEY .env
  • popbill 가입 + POPBILL_LINK_ID .env
  • 사장님 가입 시 business_number 컬럼 저장 (signup.js 후속 1줄)

남은 backlog

  • #195 D2-T5 Playwright e2e — mkcert 자체 인증서 + staging HTTPS 30분 셋업이면 가능. 또는 NODE_ENV='staging' 분기로 cookie Secure 떼기 1줄 (도메인 사면 자동 제거 부채). 사토시 결정.
  • #225 D6-T3 Empty state sweep — 5-10 화면 일관성 sweep. 새 onboarding 컴포넌트는 이미 적용. PostList empty / Notifications empty 등 사이트-와이드.

핵심 디자인 결정 (사토시 5/7~5/8)

  • brain raw 다운로드 X — D7 BrainGraph + WorkflowArchive + CancelLockInModal 모두 명시
  • PG 재판매 X — F3 task description 변경, 토스는 사장님 명의 가맹점만, Nexus = SDK/UI/webhook 흡수
  • Reverse Trial 7일 (사토시 short Cursor 패턴 선호)
  • 3 카드 압축 (5 tier 결정 마비 회피)
  • microcopy 사장님 1:1 카톡 톤 — AI 티 0건 review 통과
  • 검색바 1차 / ⌘K 보조 — 사장님 단축키 학습 X 가정

moat 4묶음 (SaaStr "prompts are portable")

  1. 회사 brain 데이터 영구 학습 (Notion AI Q&A 패턴 — 인용 source 라벨)
  2. 한국 통합 6 특수 (사업자/카카오/토스/한국어/PIPA/KISA)
  3. 누적 ROI 카운터 (해지 시 자산 폐기 모달)
  4. 팀 협업 history (5명 = 이탈 비용 5배)

누적 코드 통계

  • BE: 7 신규 모듈 (modules/onboarding-stream-api / onboarding-followup / nudge-scheduler / trial-expiry-cron / daily-report) + 7 board plugin (onboarding / onboarding-deploy / billing-toss / billing-roi / brain-summary / streak / alimtalk-routes)
  • FE: 21 신규 컴포넌트 (onboarding 7 + billing 7 + brain 2 + team 1 + ui 3 + 1 wrapper)
  • 마이그: 7 컬럼 + 4 신규 테이블 (onboarding_answers / billing_orders / streak_pings / alimtalk_logs)
  • 모두 500라인 미만 / 모두 staging PASS / 빌드 32~39s 0 error
  • main bundle 686KB → jspdf lazy chunk 분리 후 678KB

메모리

  • project_2026_05_07_wow_factor_sprint.md (v2 plan)
  • project_2026_05_07_08_sprint_done.md (완료 archive — 본 DevLog 와 cross-reference)
  • feedback_sql_no_use_clause.md (USE 절 hijack 사고 학습)
  • feedback_research_before_implement.md (deep-research 먼저 학습)

2026-05-08 (저녁) — UX-fix + 모바일 sweep + Phase A/B/C + 뉴런 진화 + Codex 보안 sweep

한 줄 요약

오전 sprint v2 + 강제 의존성 완료 후 저녁에 사토시 검수 5건 → UX-fix → 모바일 sweep → Phase A (chain rerun) → Phase B (custom_context) → Phase C (C1C13) → 뉴런 진화 N1N5 → Codex 외부 점검 + S/U batch 7건. 1세션 누적 30+ task / 19 commit / 4 마이그.

사토시 의도

"정보를 넣어주고 재실행을 시켜야하는데 그 칸이 없음" → Phase A (chain rerun + feedback) "지피티처럼 개인 맞춤 설정, 본인의 정보 넣어달라 이런 템플릿" → Phase B (10 템플릿 + custom_context) "구성원 직책마다 데이터가 존나 많이 쌓이겠노" → Phase C 13 task (PIPA + onboarding + relevance + versioning + monitoring) "개인뉴런이 좋으면 공통뉴런, 좆같으면 밤시키고, 진짜 좋은 건 회사 뉴런(최고관리자)" → N1~N5 자동 진화 인프라 완성 "Codex 점검 결과" carbon-copy → S/U batch 7건 (Codex high 2 / medium 2 / low 1 + 정리 2)

Day 별 commit (저녁 batch)

UX-fix 5건 (사토시 검수 P0/P2-1, oldest first)

  • 검색바 중복 통합 + AgentChat select 줄바꿈
  • BrainGraph + WorkflowArchive 카피·CTA
  • 모바일 sweep — TabBar overflow / PostList stat / AgentList grid
  • BE chain 빈응답 retry + 매출분석 demo 추정 + WebCrafter agent ID mismatch (4섹션 instruction)
  • iframe srcDoc 미리보기

Phase A — Chain rerun + feedback

  • 2e0ccac BE — DB 마이그 + executeChain opts + rerunChain + POST /chain/rerun
  • d73ee4e FE — ChainRerunWithFeedback + ChainDetail + GeneratingScreen mount

Phase B — Custom context + 10 템플릿

  • 3ede5b1 BE — companies/users.custom_context 마이그 + me/context.js + getCompanyContext 확장
  • 5f1d254 FE — MyContextPanel + 10 템플릿 + applyTemplateToContext 함수

Phase C — C1~C13 (PIPA + onboarding + relevance + versioning + monitoring)

  • 72acea8 BE — C1 (share 컬럼) C2 (export 확장) C3 (탈퇴 cascade) C5 (audit) C7 (chain hint) C8 (length 가드) C9 (history) C10 (export/import) C12 (admin history) C13 (NeuronFS 동기화)
  • 12c3e72 FE — C4 (UserOnboardingPrompt) C6 (promotion 체크박스) C9 (HistoryModal) C10 (download/upload) C11 (impactLabel) C12 (admin/회사 토글)

뉴런 진화 N1~N5

  • b574bb9 N1 — co{id}-{NNN}-{slug} sequence (neuron-naming.js)
  • bb26e21 N2 — 별점 → success/error 뉴런 (agent-feedback.js)
  • a5d5bfa N3 — auto-promote cron 03:30 (neuron-auto-promote.js)
  • f77f5e4 N4 — auto-archive cron 04:00 (neuron-auto-archive.js)
  • ae17694 + 88fcdb2 N5 — POST /neuron/archive + NeuronBulkReview.jsx (BrainHub 'review' 탭)

Codex 보안 sweep (외부 점검 5건 + 정리 2건)

  • be41e4a U1 — GeneratingScreen api.request 죽은 코드 (FE)
  • (rm) U3 — root package.json 잡파일 정리
  • c15027b S5 — /memory/recent await 누락 fix + saveContext companyId
  • 998ec2b S4 — /neuron/count cross-tenant override super_admin only
  • 6a0fa58 S3 — neuron-evolution-lock.js + rename 직전 재검증
  • 48cc881 S2 — chain-executor 조립 후 prompt-injection-guard
  • 1dc7d6d S1 — 저장 시점 guard 4 곳 (custom_context PUT / import / chain rerun / onboarding)

마이그 (4 신규)

  • 2026-05-08-chain-rerun-feedback.sql — chain_executions.parent_execution_id + chain_feedback_inputs
  • 2026-05-08-custom-context.sql — companies/users.custom_context
  • 2026-05-08-context-share-column.sql — users.custom_context_share ENUM (PIPA opt-in 안전장치)
  • 2026-05-08-context-history.sql — context_history (versioning + restore)

누적 코드 통계 (저녁 batch)

  • BE: 4 신규 모듈 (neuron-naming / neuron-auto-promote / neuron-auto-archive / neuron-evolution-lock) + 1 신규 plugin (me/context.js)
  • FE: 4 신규 컴포넌트 (MyContextPanel / ContextTemplateGrid / TemplateModal / HistoryModal / NeuronBulkReview / UserOnboardingPrompt / ChainRerunWithFeedback)
  • 모두 500 라인 미만 (neuron.js 508 → naming 분리해서 475 로 회복)
  • 모두 prod 라이브 확인 (bridge restart uptime 2초 ok=true / nip.io 200 / endpoint auth gate 401)
  • main bundle 686KB → 696KB (Phase B + N5 추가)

차별화 카피 (사토시 발견)

"하네스는 도구를 엮지만, Nexus 는 사장님 회사를 학습합니다." "Cursor·Devin 은 개발자가 코드 짤 때. Nexus 는 사장님이 회사 운영할 때." "다른 곳은 도구만 연결합니다. Nexus 는 사장님 회사가 똑똑해집니다."

→ Hero / Pricing / 해지 모달 3 곳에 일관 적용 후보 (다음 batch L1)

메모리 (저녁 batch)

  • project_2026_05_08_chain_rerun.md — Phase A + B + C 통합 archive
  • project_2026_05_08_neuron_evolution.md (신규) — N1~N5 archive
  • project_2026_05_08_security_sweep.md (신규) — Codex S/U batch archive
  • feedback_no_concurrent_batch.md — 5/8 클라리피케이션 추가 (research/grep 병렬 OK / implementation 순차)

Codex 협업 패턴 학습

사토시가 다른 PC / Codex CLI 로 코드 점검 의뢰 → 결과 carbon-copy 로 공유 → 내가 fix 진행. 외부 시각이 발견한 약점 = 내가 못 본 표면.

  • await 누락 (S5) — 내 자체 점검 X
  • /neuron/count cross-tenant query — 내 점검 (C18) 안 닿은 영역
  • promote/archive race — cron 모듈 동시성 구조 의식 못함

→ 다음에도 큰 batch 후 Codex 외부 점검 1회 거치는 게 가치 있음.

다음 batch 후보 (M-batch)

뉴런 시스템 약점 보완:

  • M1: counter 가중 (chain importance × user role × 시간 decay)
  • M2: 시간 decay 부패 (90일 미사용 = -1)
  • M3: chain ↔ 뉴런 인용 추적 (chain_steps.referenced_neurons JSON)
  • M4: universal contributor metadata (_metadata.json: co_id 기록)
  • M5: super_admin 텔레그램 daily summary (promote/archive 결과)
  • M6: proprietary 승격 점수 컬럼 (counter × dopamine × 회사 다양성)
  • M7: universal 뉴런 PII auto-redact

L-batch (고급화 톤):

  • L1: Hero / Pricing / Dashboard prestige (Apple Vision Pro 톤)
  • L2: 영역별 tone 분리 (chrome=Apple, 사장님 입력=KakaoTalk warm)
  • L3: "220개 회사 검증된 패턴" 인용 라벨 (chain 결과)

T-batch (어필):

  • T1: Hero "ChatGPT 1명 vs Nexus 22명" 직접 비교
  • T2: Dashboard 첫 줄 "이번 주 chain N회 / brain M 뉴런" prestige 카드
  • T3: Pricing 비교 표 (vs ChatGPT / Cursor / Zapier / Devin)