@@ -26,9 +26,50 @@ v1에서 *Vite 8 + React 18 + TS 5.7 SPA + Node ESM CLI + 로컬 `.awm/`*를 사
26262 . * 1인 운영 가능성* (managed services 우선)
27273 . * 한국 latency·결제·세금계산서* 정합
2828
29- ## Build & Verify — 미정
29+ ## Build & Verify
3030
31- 본 단계엔 빌드 명령 없음. Claude.ai Artifacts에서 시안 작업.
31+ M0 Tech Validation 진입(2026-05-13) 후 v1 자산이 main에 통합돼 * 로컬 작동* . Stack 결정(M1)은 별개.
32+
33+ ### 빌드·테스트
34+
35+ ``` bash
36+ npm install # 첫 1회 (82 pkg, 0 vuln)
37+ npm run build # vite8 — web/ → dist/ (~170ms)
38+ cd web && npm test -- --run # web 67 case (jsdom)
39+ npx vitest run # root 40 case (hashchain 17 + match/persist/github)
40+ cd web && npx tsc --noEmit # TS strict
41+ ```
42+
43+ ### 로컬 서버 운영 (백그라운드 PID 관리)
44+
45+ ``` bash
46+ npm run serve # build(없으면) + ingest --limit 30 + serve --port 5173 (백그라운드)
47+ npm run serve:status # PID + lsof 포트 LISTEN
48+ npm run serve:logs # 마지막 40줄 (bash scripts/awm-serve.sh logs -f 로 follow)
49+ npm run serve:restart # stop + start
50+ npm run serve:stop # SIGTERM 5회 폴링 → SIGKILL fallback
51+
52+ # override
53+ AWM_PORT=5174 AWM_INGEST_LIMIT=50 npm run serve
54+ ```
55+
56+ PID/log: ` .awm/serve.pid ` ·` .awm/serve.log ` (gitignored). 진입점 http://127.0.0.1:5173/today .
57+
58+ ### Audit Layer (PRD §5.5)
59+
60+ ``` bash
61+ node bin/awm.mjs audit verify # SHA-256 chain 무결성, exit 1로 변조 차단
62+ node bin/awm.mjs audit rebuild # 기존 events 재해시 + .pre-chain-<ISO> 백업
63+ node bin/awm.mjs audit show --last 5 # 최근 N개의 prev/hash 디버그 출력
64+ ```
65+
66+ ### 캡처 hook (S2 측정 시작 시 1회)
67+
68+ ``` bash
69+ node bin/awm.mjs capture install claude # .awm/hooks/ + .awm/claude-settings-snippet.json 생성
70+ # snippet을 .claude/settings.json 에 머지 후 Claude Code 재시작
71+ node bin/awm.mjs capture install git-hooks
72+ ```
3273
3374## Non-Negotiables (advisory — 강제 미설치)
3475- ` .env ` , ` .secret/ ` , ` *.pem ` , ` *.key ` , 액세스 토큰을 커밋·로그·이슈에 노출하지 않는다.
0 commit comments