diff --git a/CLAUDE.md b/CLAUDE.md index 5e983c4..7dfec2d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -282,6 +282,129 @@ git push --- +--- + +## πŸ—οΈ ν•˜λ„€μŠ€ 섀계 μ•„ν‚€ν…μ²˜ (단계 7) + +### 핡심 원칙 + +Anthropic의 "harness-design-long-running-apps" 섀계λ₯Ό 적용: + +#### 1. Tractable Chunks (관리 κ°€λŠ₯ν•œ λ‹¨μœ„) +``` +λ³΅μž‘ν•œ μž‘μ—… λΆ„ν•΄ β†’ 각 μ—μ΄μ „νŠΈκ°€ ν•œ κ°€μ§€λ§Œ λ‹΄λ‹Ή + +/convert gasiseol +β”œβ”€ Stage 1: Research (도면 뢄석) +β”œβ”€ Stage 2: Pipeline (3D 생성) +β”œβ”€ Stage 3: WebUI (μ•± 개발, 병렬) +└─ Stage 4: Summary (병합 & 검증) +``` + +#### 2. Structured Artifacts (파일 기반 ν•Έλ“œμ˜€ν”„) +``` +μ—μ΄μ „νŠΈ κ°„ 톡신 = JSON/JS 파일 (μŠ€ν‚€λ§ˆ λͺ…μ‹œ) + +Research 생성 β†’ src/drawings/gasiseol.mjs +Pipeline 생성 β†’ out/gasiseol.obj +Validation β†’ baselines/gasiseol.volumes.json + +각 파일 = λͺ…ν™•ν•œ 계약 β†’ μ—μ΄μ „νŠΈκ°€ μ‹ λ’°ν•  수 있음 +``` + +#### 3. 체크포인트 기반 볡ꡬ +``` +각 μ—μ΄μ „νŠΈ μ™„λ£Œ ν›„: .claude/artifacts/ 에 μŠ€λƒ…μƒ· μ €μž₯ +μ‹€νŒ¨ μ‹œ: λ§ˆμ§€λ§‰ 성곡 μ§€μ μ—μ„œ 재개 + +예: Pipeline μ‹€νŒ¨ β†’ Research κ²°κ³ΌλŠ” μœ μ§€ β†’ Pipeline만 μž¬μ‹€ν–‰ +``` + +#### 4. 3-μ—μ΄μ „νŠΈ 검증 +``` +Generator (생성) ← Research, Pipeline, WebUI +Evaluator (검증) ← /validate μ»€λ§¨λ“œ +Reporter (보고) ← PROGRESS.md, /report +``` + +### μ—μ΄μ „νŠΈ μ˜μ‘΄μ„± + +``` + DXF 파일 + ↓ + [Research] ← 기쀀점 κ²€μΆœ, μ„€μ • 파일 생성 + ↓ + gasiseol.mjs + ↓ + [Pipeline] ← 3D 생성, λΆ€ν”Ό 검증 + ↓ + gasiseol.obj + ↓ + [WebUI] (병렬 κ°€λŠ₯) ← μ›Ήμ•± 개발 + [Deploy] ← CI/CD 배포 +``` + +**병렬**: Research ↔ WebUI (독립적) +**순차**: Research β†’ Pipeline β†’ Deploy + +### μƒνƒœ 관리 + +``` +PROGRESS.md + β”œβ”€ ν˜„μž¬ 단계 + β”œβ”€ μ™„λ£Œλœ μž‘μ—… + β”œβ”€ μ§„ν–‰ 쀑인 μž‘μ—… + └─ λ‹€μŒ μ˜ˆμ • + +.claude/artifacts/ + β”œβ”€ gasiseol-checkpoint-1.json (Research μ™„λ£Œ) + β”œβ”€ gasiseol-checkpoint-2.json (Pipeline μ™„λ£Œ) + └─ debug-*.log (였λ₯˜ μ‹œ) + +baselines/ + └─ gasiseol.volumes.json (κΈ°μ€€κ°’, νšŒκ·€ ν…ŒμŠ€νŠΈ) +``` + +### 였λ₯˜ 볡ꡬ 절차 + +``` +1️⃣ 였λ₯˜ 감지 + /validate μ‹€νŒ¨ β†’ μ–΄λŠ μ—μ΄μ „νŠΈ 문제? + +2️⃣ 원인 νŒŒμ•… + - κΈ°ν•˜ν•™ 였λ₯˜ β†’ Research μž¬μ‹€ν–‰ + - Boolean 였λ₯˜ β†’ Pipeline μž¬μ‹€ν–‰ + - λ Œλ”λ§ 였λ₯˜ β†’ WebUI μž¬μ‹€ν–‰ + +3️⃣ ν•΄λ‹Ή μ—μ΄μ „νŠΈλ§Œ 재개 + λ§ˆμ§€λ§‰ μ²΄ν¬ν¬μΈνŠΈμ—μ„œ μ‹œμž‘ + 이전 λ‹¨κ³„μ˜ νŒŒμΌμ€ μœ μ§€ + +4️⃣ μž¬κ²€μ¦ + /validate --level=full + +5️⃣ μ§„ν–‰ 상황 μ—…λ°μ΄νŠΈ + PROGRESS.md μˆ˜μ • +``` + +### ν’ˆμ§ˆ 계측 (λ‹€μΈ΅ λ°©μ–΄) + +``` +Layer 1: 파일 쑴재 확인 + └─ 각 μ—μ΄μ „νŠΈ 좜λ ₯ 파일 쑴재? + +Layer 2: μŠ€ν‚€λ§ˆ 검증 + └─ JSON/JS ꡬ쑰 μ˜¬λ°”λ¦„? + +Layer 3: κΈ°λŠ₯ 검증 + └─ κΈ°ν•˜ν•™? λΆ€ν”Ό? λ Œλ”λ§? + +Layer 4: νšŒκ·€ 검증 + └─ κΈ°μ€€κ°’κ³Ό 비ꡐ (였차 < 0.5%) +``` + +--- + ## λΌμ΄μ„ μŠ€ 이 ν”„λ‘œμ νŠΈλŠ” [`docs/dwg2model-CLAUDE.md`](docs/dwg2model-CLAUDE.md)λ₯Ό μƒμ†λ°›λŠ”λ‹€. diff --git a/HARNESS-DESIGN.md b/HARNESS-DESIGN.md new file mode 100644 index 0000000..0a44054 --- /dev/null +++ b/HARNESS-DESIGN.md @@ -0,0 +1,437 @@ +# ν•˜λ„€μŠ€ 섀계 상세 λ¬Έμ„œ (단계 7) + +> Anthropic μ—”μ§€λ‹ˆμ–΄λ§ λΈ”λ‘œκ·Έ "harness-design-long-running-apps" 기반 +> DXF to 3D ν”„λ‘œμ νŠΈμ˜ ꡬ체적인 κ΅¬ν˜„ + +--- + +## λͺ©μ°¨ + +1. [μ•„ν‚€ν…μ²˜ κ°œμš”](#μ•„ν‚€ν…μ²˜-κ°œμš”) +2. [μ—μ΄μ „νŠΈ μ˜μ‘΄μ„±](#μ—μ΄μ „νŠΈ-μ˜μ‘΄μ„±) +3. [체크포인트 μ‹œμŠ€ν…œ](#체크포인트-μ‹œμŠ€ν…œ) +4. [였λ₯˜ 볡ꡬ](#였λ₯˜-볡ꡬ) +5. [μƒνƒœ 관리](#μƒνƒœ-관리) +6. [λͺ¨λ‹ˆν„°λ§](#λͺ¨λ‹ˆν„°λ§) + +--- + +## μ•„ν‚€ν…μ²˜ κ°œμš” + +### 섀계 원칙 + +``` +λ³΅μž‘ν•œ μž‘μ—… (DXF β†’ μ›Ήμ•±) + ↓ +λ‹¨μœ„λ³„ λΆ„ν•΄ (4개 μ—μ΄μ „νŠΈ) + ↓ +파일 기반 ν•Έλ“œμ˜€ν”„ (JSON/JS/OBJ) + ↓ +μžλ™ 검증 (4단계) + ↓ +였λ₯˜ μ‹œ λΆ€λΆ„ 볡ꡬ (체크포인트) +``` + +### μ™œ 이 섀계인가? + +| 섀계 μš”μ†Œ | 문제 ν•΄κ²° | +|---------|---------| +| Tractable Chunks | 큰 μž‘μ—…μ΄ ν•œ μ—μ΄μ „νŠΈλ₯Ό μ••λ„ν•˜λŠ” 것 λ°©μ§€ | +| Structured Artifacts | μ—μ΄μ „νŠΈ κ°„ ν†΅μ‹ μ˜ μ‹ λ’°μ„± 보μž₯ | +| 체크포인트 | μ‹€νŒ¨ ν›„ μ²˜μŒλΆ€ν„° λ‹€μ‹œ μ‹œμž‘ν•˜λŠ” λ‚­λΉ„ λ°©μ§€ | +| λ‹€μΈ΅ 검증 | 쑰용히 ν‹€λ¦¬λŠ” 였λ₯˜ μ‘°κΈ° 발견 | + +--- + +## μ—μ΄μ „νŠΈ μ˜μ‘΄μ„± + +### μ˜μ‘΄μ„± κ·Έλž˜ν”„ + +``` +μž…λ ₯ λ ˆμ΄μ–΄: + RAG/κ°€μ‹œμ„€_*.dxf (7개 파일) + ↓ +처리 λ ˆμ΄μ–΄ 1 (병렬 κ°€λŠ₯): + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + ↓ ↓ +[Research Agent] [WebUI Agent] +도면 뢄석 μ›Ήμ•± 개발 +μ„€μ • 파일 생성 (독립적) + ↓ +src/drawings/gasiseol.mjs + ↓ +처리 λ ˆμ΄μ–΄ 2 (순차): +[Pipeline Agent] + 3D 생성 + λΆ€ν”Ό 검증 + ↓ +out/gasiseol.obj, out/gasiseol.ifc + ↓ +검증 λ ˆμ΄μ–΄: +[Validator] + 4단계 검증 + κΈ°μ€€κ°’ μ €μž₯ + ↓ +baselines/gasiseol.volumes.json + ↓ +좜λ ₯ λ ˆμ΄μ–΄: +[Deploy Agent] + μ›Ή λΉŒλ“œ + Vercel 배포 + ↓ +https://dxf-to-3d.tk +``` + +### 병렬 μ‹€ν–‰ μ „λž΅ + +``` +Timeline (μ΅œμ•…μ˜ 경우): + +Sequential (순차): + Research (5λΆ„) β†’ Pipeline (10λΆ„) β†’ Deploy (5λΆ„) = 20λΆ„ + +Parallel (병렬, 이상적): + Research (5λΆ„) ──┐ + WebUI (10λΆ„) ────┼→ Pipeline (10λΆ„) β†’ Deploy (5λΆ„) = 25λΆ„ + (μ—¬μ „νžˆ 더 빠름: 25 < 30) + +μ‹€μ œ κ΅¬ν˜„: + 1. Research + WebUI λ™μ‹œ μ‹œμž‘ + 2. Research μ™„λ£Œ λŒ€κΈ° + 3. Pipeline μ‹œμž‘ + 4. WebUI μ™„λ£Œ (이미 끝남) + 5. Deploy μ‹œμž‘ +``` + +### μ˜μ‘΄μ„± ν…Œμ΄λΈ” + +| μ—μ΄μ „νŠΈ | μž…λ ₯ 파일 | 좜λ ₯ 파일 | μ„ ν–‰ μš”κ΅¬ | +|---------|---------|---------|---------| +| Research | RAG/*.dxf | src/drawings/gasiseol.mjs | μ—†μŒ | +| Pipeline | src/drawings/gasiseol.mjs | out/gasiseol.obj | Research βœ“ | +| WebUI | out/gasiseol.obj | src/web/ | μ—†μŒ (선택) | +| Deploy | src/web/, out/gasiseol.obj | https://dxf-to-3d.tk | Pipeline βœ“ | +| Validator | λͺ¨λ“  파일 | baselines/gasiseol.volumes.json | Pipeline βœ“ | + +--- + +## 체크포인트 μ‹œμŠ€ν…œ + +### 체크포인트 지점 + +각 μ—μ΄μ „νŠΈ μ™„λ£Œ ν›„ μžλ™ μ €μž₯: + +``` +1️⃣ Research μ™„λ£Œ + └─ μ €μž₯: .claude/artifacts/gasiseol-cp-1-research.json + λ‚΄μš©: { + timestamp: "2026-10-19T14:30:00Z", + agent: "research", + output: "src/drawings/gasiseol.mjs", + status: "success|fail", + error: "..." (if fail) + } + +2️⃣ Pipeline μ™„λ£Œ + └─ μ €μž₯: .claude/artifacts/gasiseol-cp-2-pipeline.json + λ‚΄μš©: { + timestamp: "2026-10-19T14:45:00Z", + agent: "pipeline", + output: "out/gasiseol.obj", + volumes: { irVolume, realVolume, error }, + status: "success|fail" + } + +3️⃣ WebUI μ™„λ£Œ + └─ μ €μž₯: .claude/artifacts/gasiseol-cp-3-webui.json + +4️⃣ Deploy μ™„λ£Œ + └─ μ €μž₯: .claude/artifacts/gasiseol-cp-4-deploy.json + λ‚΄μš©: { + url: "https://dxf-to-3d.tk", + timestamp: "...", + status: "success|fail" + } +``` + +### 체크포인트 μ €μž₯ 방식 + +```bash +# Research μ™„λ£Œ ν›„ +cat > .claude/artifacts/gasiseol-cp-1.json << 'EOF' +{ + "stage": 1, + "agent": "research", + "timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)", + "output_file": "src/drawings/gasiseol.mjs", + "status": "success", + "md5": "$(md5sum src/drawings/gasiseol.mjs | cut -d' ' -f1)" +} +EOF +``` + +--- + +## 였λ₯˜ 볡ꡬ + +### 볡ꡬ μ „λž΅ + +#### Scenario 1: Research μ‹€νŒ¨ + +``` +상황: DXF 뢄석 였λ₯˜ +영ν–₯: μ„€μ • 파일 미생성 + +볡ꡬ: + 1. 였λ₯˜ 둜그 뢄석 (.claude/artifacts/debug-research.log) + 2. DXF 파일 검증 + 3. Research μž¬μ‹€ν–‰ + 4. 기쀀점 μˆ˜λ™ μ§€μ • (ν•„μš”μ‹œ) + 5. /validate --level=2 (κΈ°ν•˜ν•™λ§Œ 검증) + +λΉ„μš©: 5λΆ„ +영ν–₯ λ°›μŒ: λ‚˜λ¨Έμ§€ λͺ¨λ“  단계 (차단) +``` + +#### Scenario 2: Pipeline μ‹€νŒ¨ + +``` +상황: λΆ€ν”Ό 였차 > 0.5% +영ν–₯: 3D λͺ¨λΈ λΆ€μ •ν™• + +볡ꡬ: + 1. IR λΆ€ν”Ό vs μ‹€μ œ λΆ€ν”Ό 비ꡐ + 2. Boolean 손싀 확인 (modelCount) + 3. assemble() ν•¨μˆ˜ μž¬κ²€ν†  + 4. Research κ²°κ³Ό 파일 μœ μ§€ (체크포인트 μ‚¬μš©) + 5. Pipeline만 μž¬μ‹€ν–‰ + +λΉ„μš©: 10λΆ„ +영ν–₯ λ°›μŒ: Deploy (차단) +``` + +#### Scenario 3: WebUI μ‹€νŒ¨ + +``` +상황: React λΉŒλ“œ 였λ₯˜ +영ν–₯: μ›Ήμ•± 미생성 + +볡ꡬ: + 1. TypeScript 였λ₯˜ 확인 + 2. μ˜μ‘΄μ„± μ„€μΉ˜ μž¬μ‹œλ„ (npm ci) + 3. WebUI만 μž¬μ‹€ν–‰ + 4. Research, Pipeline은 μœ μ§€ + +λΉ„μš©: 10λΆ„ +영ν–₯ λ°›μŒ: Deploy (차단) +``` + +#### Scenario 4: Deploy μ‹€νŒ¨ + +``` +상황: Vercel 배포 였λ₯˜ +영ν–₯: μ›Ήμ‚¬μ΄νŠΈ λ―Έμ—…λ°μ΄νŠΈ + +볡ꡬ: + 1. GitHub Actions 둜그 확인 + 2. ν™˜κ²½ λ³€μˆ˜ 검증 + 3. Deploy만 μž¬μ‹€ν–‰ + 4. λ‚˜λ¨Έμ§€λŠ” λͺ¨λ‘ μœ μ§€ + +λΉ„μš©: 5λΆ„ +영ν–₯ λ°›μŒ: μ‚¬μš©μž (μž„μ‹œ) +``` + +### 볡ꡬ 검사λͺ©λ‘ + +각 μ—μ΄μ „νŠΈ μž¬μ‹€ν–‰ ν›„: + +``` +☐ 좜λ ₯ 파일 쑴재? +☐ 파일 크기 > 0? +☐ μŠ€ν‚€λ§ˆ 유효? +☐ /validate 톡과? +☐ κΈ°μ€€κ°’ λ³€κ²½ μ—†μŒ? (νšŒκ·€) +☐ PROGRESS.md μ—…λ°μ΄νŠΈ? +``` + +--- + +## μƒνƒœ 관리 + +### PROGRESS.md μƒνƒœ λ¨Έμ‹  + +``` +β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” +β”‚ Idle β”‚ +β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + ↓ /convert gasiseol + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Stage 1: Research β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + ↓ (Research μ™„λ£Œ) + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”Œβ”€β”€β”€β”€ Stage 2: Pipeline │◄──┐ (μ‹€νŒ¨ μ‹œ 루프) + β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ + β”‚ ↓ β”‚ + β”‚ (Pipeline 톡과) β”‚ + β”‚ ↓ β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + (μž¬μ‹€ν–‰) + + ↓ (성곡) + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”Œβ”€β”€β”€β”€ Stage 3: WebUI+Dep │◄──┐ + β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ + β”‚ ↓ β”‚ + β”‚ (배포 μ™„λ£Œ) β”‚ + β”‚ ↓ β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ +``` + +### PROGRESS.md μž‘μ„± κ·œμΉ™ + +```markdown +## ν˜„μž¬ μƒνƒœ + +### βœ… μ™„λ£Œ +- [x] Research + - 기쀀점 κ²€μΆœ: OK + - λ·° 뢄리: OK + - μ„€μ • 파일: src/drawings/gasiseol.mjs + +### πŸ”„ μ§„ν–‰ 쀑 +- [ ] Pipeline + - 3D 생성: μ§„ν–‰ 쀑... + - λΆ€ν”Ό 검증: λŒ€κΈ° 쀑 + +### ⏳ μ˜ˆμ • +- [ ] WebUI +- [ ] Deploy + +### ⚠️ 였λ₯˜ (있으면) +- [ ] Pipeline λΆ€ν”Ό 였차 > 0.5% + ν•΄κ²°: assemble() ν•¨μˆ˜ μž¬κ²€ν†  ν•„μš” +``` + +--- + +## λͺ¨λ‹ˆν„°λ§ + +### μžλ™ λͺ¨λ‹ˆν„°λ§ ν›… + +#### post-commit ν›… (λ§€ 컀밋 ν›„) + +```bash +# λŒ€μƒ 파일 λ³€κ²½ 감지 +if git diff --cached --name-only | grep -qE "src/drawings/|RAG/"; then + + # μžλ™ 검증 + node src/build.mjs gasiseol --validate + + if [ $? -ne 0 ]; then + # 였λ₯˜ μ‹œ κ²½κ³  + echo "⚠️ DXF μ„€μ • 였λ₯˜ 감지" + echo "상세: node src/build.mjs gasiseol --loops" + fi +fi +``` + +#### pre-deploy ν›… (배포 μ „) + +```bash +# λͺ¨λ“  검증 톡과 확인 +/validate --level=full + +# μ‹€νŒ¨ μ‹œ 배포 쀑단 +if [ $? -ne 0 ]; then + echo "❌ 배포 μ·¨μ†Œ: 검증 μ‹€νŒ¨" + exit 1 +fi +``` + +### μˆ˜λ™ λͺ¨λ‹ˆν„°λ§ + +```bash +# ν˜„μž¬ μƒνƒœ 확인 +/report + +# 상세 검증 +/validate --level=full + +# μ„±λŠ₯ 뢄석 +/web-dev --analyze + +# λΆ€ν”Ό νšŒκ·€ ν…ŒμŠ€νŠΈ +node src/measure.mjs gasiseol --ir --compare-baseline +``` + +--- + +## μ‹€ν–‰ 흐름 μ˜ˆμ‹œ + +### 성곡 경둜 (Happy Path) + +``` +1. /convert gasiseol + β”œβ”€ Research: βœ… (2λΆ„) + β”œβ”€ Pipeline: βœ… (8λΆ„) + β”œβ”€ WebUI: βœ… (병렬 λ™μ•ˆ) + └─ Deploy: βœ… (4λΆ„) + + 총 μ†Œμš”: ~15λΆ„ + κ²°κ³Ό: https://dxf-to-3d.tk βœ… +``` + +### 였λ₯˜ + 볡ꡬ 경둜 + +``` +1. /convert gasiseol + β”œβ”€ Research: βœ… + β”œβ”€ Pipeline: ❌ (λΆ€ν”Ό 였차 1.2%) + β”‚ └─ 체크포인트: .claude/artifacts/gasiseol-cp-1.json + β”‚ └─ 원인: assemble() ν•¨μˆ˜ 였λ₯˜ + β”‚ + └─ 볡ꡬ: + 1. assemble() ν•¨μˆ˜ μˆ˜μ • + 2. Pipeline μž¬μ‹€ν–‰ + 3. /validate --level=3 (3D κ²€μ¦λ§Œ) + 4. βœ… λΆ€ν”Ό 였차 0.3% + 5. Deploy μ§„ν–‰ + + μΆ”κ°€ μ†Œμš”: ~10λΆ„ + 총: ~25λΆ„ +``` + +--- + +## 베슀트 ν”„λž™ν‹°μŠ€ + +### βœ… ν•΄μ•Ό ν•  것 + +``` +βœ“ λ§€ μ—μ΄μ „νŠΈ μ™„λ£Œ ν›„ 체크포인트 μ €μž₯ +βœ“ 였λ₯˜ μ‹œ μ¦‰μ‹œ 원인 νŒŒμ•… +βœ“ PROGRESS.md μƒνƒœ μœ μ§€ +βœ“ λΆ€λΆ„ μ‹€νŒ¨ μ‹œ ν•΄λ‹Ή μ—μ΄μ „νŠΈλ§Œ μž¬μ‹€ν–‰ +βœ“ κΈ°μ€€κ°’κ³Ό 항상 비ꡐ (νšŒκ·€ λ°©μ§€) +βœ“ 성곡/μ‹€νŒ¨ λͺ¨λ‘ 둜그 기둝 +``` + +### ❌ ν•˜λ©΄ μ•ˆ λ˜λŠ” 것 + +``` +βœ— 였λ₯˜ λ¬΄μ‹œν•˜κ³  λ‹€μŒ 단계 μ§„ν–‰ +βœ— 쀑간 파일 직접 μˆ˜μ • (μ—μ΄μ „νŠΈκ°€ μ‹ λ’°ν•  수 μ—†μŒ) +βœ— 체크포인트 없이 전체 μž¬μ‹€ν–‰ +βœ— κΈ°μ€€κ°’ λ¬΄μ‹œ (였차율 승인 없이) +βœ— μ—μ΄μ „νŠΈ κ°„ μƒνƒœ 곡유 (파일 기반만 μ‚¬μš©) +βœ— 둜그 미기둝 (좔적 λΆˆκ°€) +``` + +--- + +## λ³€κ²½ 이λ ₯ + +- 2026-10-19: μ΄ˆμ•ˆ μž‘μ„± (단계 7) +