← /log
2026-04-22

Daily build log

1,931 words·raw from wai-vault/02-DevLog

2026-04-22

Sprint F (서버 오류 일괄 수정) — 마무리 + F9 신규

이전 세션에서 F1~F8 까지 완료 후 F3 배포 검증 중 /audit/verify 가 신규 hash_mismatch 를 노출 → F9 로 후속 처리.

F9 — audit hash chain stringify 순서 정렬

  • 버그: webhook/modules/audit-verify-api.jsverifyChain()JSON.stringify(entry) + lastHash 로 raw 를 만들었는데, audit.js log()JSON.stringify(entry) 만 (lastHash 는 entry.prevHash 필드로 이미 포함). → 첫 엔트리부터 hash_mismatch.
  • 2차 버그: 1차 픽스 후 chain_broken 신규 발생. 구형 엔트리 (audit.js 가 prevHash 도입 전 기록) 는 prevHash 필드 없음 → storedPrev !== lastHash 강제 비교 실패.
  • 최종 픽스:
    • + lastHash concat 제거 (audit.js 와 동일 순서)
    • storedPrev !== undefined && lastHash !== null 가드 → 신형 엔트리 간에만 체인 연결성 검증
  • 결과: /audit/verify{"ok":true,"count":41} 전 엔트리 통과
  • 커밋: ea54049 + aa0d936

Sprint D (Agent / Dashboard 미완 4종)

형 PC 업그레이드 복귀 후 "agent 랑 dashboard 안 한 것들 한 번 밀어보자" → 테이블로 정리 후 일괄.

D1 — BrainHub 뉴런 trace 이력 drawer (board:172)

  • 백엔드 (webhook/modules/neuron-trace.js):
    • /neuron/trace[?path=&limit=] path prefix 필터, max 500
    • /neuron/corrections[?path=&limit=] 동일 시그니처
    • 공용 readJsonlTail() + parseQuery() 헬퍼
  • 프론트:
    • lib/api.js 시그니처 확장 — getNeuronTrace(path, limit), getNeuronCorrections(path, limit)
    • 신규 components/neurons/NeuronTraceDrawer.jsx (145줄) — trace + correction 통합 timestamp 정렬, 탭 분기 (전체/발자국/교정), 새로고침
    • NeuronBrowser.jsx — 뉴런 행의 이름 영역 button 화 → useDrawerStore.open() (DrawerHost 패턴)

D2 — AgentDetail 차등 컴파일 뇌 상태 시각화 (board:173)

  • 백엔드 신규 webhook/modules/agent-brain-api.js (87줄):
    • GET /agents/:id/brainagent_brains/<id>.md 메타 (size/mtime/lineCount/sections) + 첫 80줄 미리보기
    • parseSections()^#{1,3} 헤더 추출 (max 50)
    • claude-bridge.js wiring (init + handle dispatch)
  • 프론트:
    • lib/api.jsgetAgentBrain(agentId) 추가
    • 신규 components/agents/BrainStatePanel.jsx (167줄) — 메타 그리드 + 그룹 섹션 헤더 + 미리보기 토글
    • AgentDetail.jsx<BrainStatePanel agentId={agentId} /> 임베드
  • 현 상태: /home/wai/w-ai-brain/agent_brains/ 디렉토리 미생성 (sync_brain.py --all-agents 미실행). UI 가 "exists:false → sync_brain.py 실행 필요" 안내 표시. 형이 한번 돌리면 22 에이전트 자동 채워짐.

D3 — RxDB syncFromServer 최적화 (board:143)

  • 코드 보니 이미 80babf5 (4/13) 에서 처리find().exec() + Map 캐시로 N+1 제거. TODO.md 마크만 갱신. 작업 없음.

D4 — 디자인 리파인 일부 적용 (Stage P1 축소판)

  • 컬러 토큰 swap (src/index.css):
    • light: --nexus-accent #7C6AFF (purple) → #15803D (forest green-700)
    • light: --nexus-accent-hover#10A37F
    • dark: --nexus-accent #22C55E (green-500), hover #16A34A
    • --nexus-accent-muted / --nexus-border-accent 비례 변경
  • 폰트 (tailwind.config.js + index.html):
    • font-sans: Geist → Pretendard (system font 우선, OS 미설치 시 Apple SD Gothic Neo / Noto Sans KR 자동 fallback — Pretendard CDN 추가는 CSP 우회 필요해서 다음 라운드)
    • font-display: Fraunces 신규 (Google Fonts CDN, CSP 안전)
  • 워드마크 (Sidebar.jsx):
    • 사이드바 'Nexus' 워드마크에 font-display (Fraunces) 적용
    • 자간 tracking-[-0.02em]-0.01em, weight boldsemibold (Fraunces 의 우아한 곡선 살리기)

배포

Bridge (서버 재시작 2회)

  • F9 1차: ea54049 → 검증 → chain_broken 신규 발견
  • F9 2차: aa0d936 → {"ok":true,"count":41}
  • D1+D2: f91f950 → /neuron/trace?limit=3 200, /agents/ceo-vision/brain exists:false (정상)

Nexus 대시보드

  • board-approval-system: e96ad96 push
  • npx vite build → 1.64MB main chunk (gzip 492KB) 변동 미미
  • 서버 atomic swap: tar -xzfnexus-stagemv swap
  • https://1-234-23-23.nip.io/ HTTP 200 응답, index.html 에 Fraunces 링크 확인

결과 요약

Sprint항목커밋상태
F9audit verify stringify 정렬 + 체인 검증ea54049, aa0d936✅ ok=true 41/41
D1뉴런 trace drawere96ad96 + f91f950
D2에이전트 brain 패널e96ad96 + f91f950✅ (sync_brain 실행 후 자동 표시)
D3RxDB findOne 최적화(이미 80babf5 처리)✅ TODO 마크만
D4accent green + Fraunces + 워드마크e96ad96✅ HTTP 200
O1본 DevLog(이 파일)
P1.bPretendard npm self-host7334d70✅ woff2 200 + CSS 선언 확인
D2.fixsync_brain.py 허위 완료 마킹 정정214d2f9✅ TODO + 메모리 갱신

추가 세션 2 — 정확성 정정 + P1 정식판

형 "태스크 정리하고 디테일하게" 지시 → pending 실태 조사 중 sync_brain.py 서버 부재 발견.

P1.b — Pretendard Variable self-host

  • D4 에서 OS fallback 만 걸어둔 폰트를 정식 번들링.
  • npm i pretendard@1.3.9src/main.jsxpretendardvariable.css import (index.css 위).
  • Vite 가 PretendardVariable-*.woff2dist/assets/ 에 self-host → CSP 수정 불필요.
  • 배포 후 https://1-234-23-23.nip.io/assets/PretendardVariable-*.woff2 HTTP 200 확인.
  • 커밋 7334d70.
  • Stage P1 (#215) umbrella 도 completed 처리.

D2.fix — sync_brain.py 실태 조사

  • D2 배포 후 /agents/ceo-vision/brain 호출 결과 exists:false.
  • 서버 /home/wai/w-ai-brain/ 조사 → sync_brain.py 파일 자체 없음, agent_brains/ 디렉토리 없음.
  • TODO.md Phase 5-B / 5-C 는 "✅ 4/13 완료" 로 표기됐지만 실태는 미구현 (router.js 주입 코드는 있지만 읽을 파일이 없어 항상 빈 값 반환).
  • 정정 반영:
    • w-ai-agents/TODO.md 5-B/5-C ⚠️ 재마킹 (커밋 214d2f9)
    • memory/project_agents_not_operational.md 에 "2026-04-22 추가 확인" 섹션
  • 원인 추정: 4/13 커밋이 로컬에만 있거나, 서버 파일 시스템에 도달 못함. 또는 경로 이동/삭제. git log 로 확인 안 해서 후속.

새 pending 등록

  • Stage S1 — sync_brain.py 서버 복원 (설계+작성, 2~3h) — 22 에이전트 brain 차등 컴파일 로직
  • Stage W1.a/b/c — 웹사이트 로고·GA4·Naver (b/c 는 형 계정 발급 필요)

다음 세션 시작점 후보

  • Stage S1 — sync_brain.py 복원 (D2 실데이터 연결). 설계 재가 받은 뒤.
  • Stage P2 — 디자인 컨셉 deep-dive (한국 정통 / 극미니멀 / 브루탈리즘 / Spatial) — 미결정 장기 과제
  • #77 / #207 — 모바일 실기기 점검 (Loren 직접)
  • W1.b / W1.c — GA4 측정 ID + Naver 인증 코드 (형 콘솔에서 발급 후 붙여넣기)
  • Phase 6 로컬 추론 (Windows PC 기반 Ollama / LM Studio)

추가 세션 3 — 빠른 기술 부채 청소

형 "도메인 안 샀음, 기술적으로 할 수 있는 건 빠르게" → 외부 의존 없는 것만.

T1 — claude-bridge.js 500줄 룰 위배 해결

  • 529줄 → 486줄 (43줄 감소). 56줄의 require 블록을 webhook/setup-modules.js (67줄) 로 외부화 + destructure 12줄로 치환.
  • 사이드이펙트 동일 (순수 require 이동, init 순서/동작 변동 X).
  • 서버 배포 후 /health//audit/verify//neuron/trace//agents/ceo-vision/brain//dashboard/crisis 모두 200.
  • 커밋 28ae883.

T2 — npm audit 양 레포

  • board-approval-system: 0 vulnerabilities
  • w-ai-agents/webhook: 0 vulnerabilities
  • F4 (Vite 패치) 이후 clean 유지. 새 작업 없음.

T4 — TODO 허위 pending 정정

  • 양 레포 TODO 의 pending 항목 중 "외부 발급 대기" 인데 [ ] 로만 돼있어서 "할 수 있는 일" 로 오인되는 것 정정.
  • w TODO L122-124: biz-lookup.js 관련 3항목 → ⏸️ 국세청 API 키 발급 대기 (서버 모듈 구현됨 확인)
  • w TODO L240-243: 로고/GA4/Naver/nginx 독립 → ⏸️ 도메인 구매 대기
  • board TODO L92-94: SignupForm 사업자번호 3항목 → ⏸️ 국세청 API 키 대기
  • 커밋 e9cf7be (w) + cd23710 (board).
  • 남은 '진짜 pending (당장 할 수 있는 코드 작업)': Stage S1 sync_brain.py 복원, Stage P2 디자인 deep-dive, Stage W1.a 로고 디자인.

세션 3 결과

Stage커밋결과
T1 Bridge 분리28ae883486/500줄, 전체 endpoint 회귀 ok
T2 npm audit양 레포 0 vuln
T4 TODO 감사e9cf7be + cd237106항목 ⏸️ 표기

추가 세션 4 — S1 sync_brain.py 복원

조사 결과

  • brain_w_ai/ 는 7 영역 × 179 뉴런. 뉴런 = 디렉토리 이름 (必Loren_최종승인, 禁서버직접수정 등). 내부 파일은 N.neuron 카운터 (0바이트).
  • neuronfs_linux binary 의 --emit 옵션이 기본 CLAUDE.md 컴파일을 수행하지만, 22 에이전트별 차등 기능은 없음.
  • agent-registry.json 의 각 에이전트에 keywords 배열이 이미 정의돼 있어서, 이걸 기준으로 매칭.

설계 (MVP v1)

  • 공통 주입 (모든 에이전트): brainstem (P0) + limbic (P1) + ego (P5) + prefrontal (P6)
  • 차등 주입 (keyword 매칭): hippocampus (P2) + sensors (P3) + cortex (P4). 빈 keywords = 전체.
  • 출력: /home/wai/w-ai-brain/agent_brains/<id>.md — frontmatter + 공통/특화 섹션 + Subsumption 참고
  • 경로: w-ai-agents/scripts/sync_brain.py (178줄) — git 관리 + python3 3.10 실행

실행 결과

  • python3 scripts/sync_brain.py --all-agents22개 전부 생성 (0 skip)
  • 크기: 1449~1823 bytes (ceo-vision 1785, cto-tech 1458 등)
  • 검증: /agents/ceo-vision/brainexists:true size:2573 sections:11 (D2 UI 가 실데이터 표시 가능)

실행 의미

  • project_agents_not_operational.md 갱신: 차등 컴파일 파일 생성은 이제 정상. 단 "22 에이전트가 이 brain 기반으로 실제 판단한다" 는 여전히 부분 (router.js 가 주입은 하지만 실 실행 엔드포인트 사용 거의 없음).
  • TODO.md 5-B / 5-C ✅ 재갱신 (D2.fix 세션 2 에서 ⚠️ 로 뒤집었던 것 다시 ✅).

후속

  • cron 등록 (optional): 주 1회 또는 neuron_change watchdog 시 자동 재컴파일. 지금은 수동.
  • 22 에이전트 실가동 자체는 여전히 별도 과제 (OpenClaw + PC 24시간 가동 + 실제 엔드포인트 트래픽).

추가 세션 5 — 딥리서치 6 Agent 완주

형 "점검 window + 자율진화 루프" 딥리서치 요청 → 6 agent 병렬, 전부 완료. 합성은 내일.

세션 요약

  • 총 229 소스 수집 (A급 46 / B급 51 / C급 27 / D급 12 / E급 3+)
  • 6 주제: Maintenance+LLMOps / Self-heal+A/B+HITL / 내부 감사 / GTM+ICP / 트라이얼 퍼널 / 규제·인증 / Agentic stack
  • 원본: C:\Users\chyj1\RESEARCH\nexus-maintenance-window_20260422\artifacts\agent_results\

결정적 발견 (요약)

  1. 업계 전체가 "정기 정비 window" 공식화 X — Nexus 가 "주간 학습→검증→배포" 정례화하면 차별화 포지셔닝. Anthropic 2022 RLHF 논문이 "주간 반복" 공식 정당화.
  2. NeuronFS 원시 primitives obsolete — Anthropic Memory tool (memory_20250818) 과 기능 중복. Subsumption 의미론만 방어 가능 → 2주 내 Memory tool 백엔드로 리팩토링 필요 (지연 시 liability).
  3. 22 에이전트 over-engineered — 실제 3~5 에이전트 + 20 Skills 로 충분. C-suite 코스프레는 UI 표시만 유지.
  4. PIPA CEO 책임제 = 세일즈 킬러 소구점 — 해외 SaaS 사용 시 한국 CEO 매출 10% 벌금. Nexus 국내 호스팅은 법적 방패.
  5. 중기부 AI 바우처 2억×130건 (Q2) — NIPA 공급기업 풀 등록이 첫 매출 최단 경로.
  6. ⚠️ PIPA §34 유출 신고 — deadline 4/24 23:59 — 2026-04-21 Wacatac 사건 관련. Loren 감은 "유출 X" 쪽이지만 VPS 로그 감사로 공식 "추정 미해당" 판정서 필수 (위반 시 매출 3% 과징금).
  7. OpenAI Cookbook 2025-11-04 metaprompt 청사진 — Nexus 의 agent-improver + brain-writer + neuron-proposals 구조의 80% 일치 → "논문으로 나온 구조 운영 중" 내러티브.

내부 감사 — 7 비작동 영역 (Agent 3)

  1. brain-writer.append — watchdog/improver 미연결
  2. agent-improver — shared 미초기화 → NPE 예정
  3. neuron-proposals — JSON vs 디렉토리 경로 이원화
  4. pattern-tracker — users.status 컬럼 없음 / pending_pattern_executions 테이블 없음
  5. watchdog payment_failure_streak — disabled
  6. corrections.jsonl — 쓰기만 있고 로컬 읽기 없음
  7. 모듈 init 순서 미정의

+ Loren 명시: "22 에이전트 계속 안 돌렸음 + OpenClaw 연결 끊어둠" → Bridge 단독 LLM 호출만 돌고 에이전트 오케스트레이션은 off.

세션 4 결과 + 5

Sprint/Agent결과
P1.b Pretendard✅ 배포 woff2 200
D2.fix + S1✅ sync_brain.py 재작성, 22 brain 생성
T1✅ Bridge 486/500
T2✅ 0 vuln
T4✅ 6항목 ⏸️
Deep research✅ 6 agent, 229 소스

내일 (2026-04-23) 착수 순서

  1. PIPA §34 로그 감사 (최우선, deadline 4/24 23:59) — #246
  2. 6 agent 결과 → outputs/ Phase 5 합성 (Executive Summary + Roadmap 먼저)
  3. 우선순위 Sprint 재등록 — R1~R5 내부 수리 + Q2 사업 작업 (중기부 바우처, Pro Most Popular, Aha Moment 계측)
  4. #247 AI법 UI/약관 (계도 기간 2027-01 까지)

관련 링크