공개 문서

LAB topic-map

아래는 learn/lab/topic-map.md 와 동일한 원문입니다. Markdown과 HTML 변환 결과를 각각 복사할 수 있습니다.

공개 문서 원문 (Markdown)

# Topic Map — Learning Hub 주제별 재분류

Phase 순서가 아닌 **학습 주제** 기준으로 run-001 ~ run-017을 재분류한다.  
각 주제 ID는 `source-map.json`의 `topics` 배열과 교차 참조한다.

---

## 1. Multi-Agent Starter 구조

**topic_id:** `multi-agent-starter`

### 개요

Cursor Harness의 file-as-memory run 패턴 — run.md → approval → brief → output → envelope → final-report — 을 LAB에서 최초 검증한 주제이다.

### 관련 Phase / Run

| Phase | Run | 핵심 산출물 |
|---|---|---|
| 10 | run-001-production-like | `run.md`, `approval.md`, `context.md`, `envelope/`, `worker-briefs/`, `worker-outputs/` |

### 학습 목표

- production-like run 템플릿 구조 이해
- `safe_to_apply: false` 기본 원칙
- envelope(json+md) 집계 패턴

### 권장 import 순서

1. `run-001/run.md`
2. `run-001/envelope/run-envelope.md`
3. `run-001/final-report.md`

### 주의

- 외부 프로젝트 자동 적용 금지; LAB 검증 전용

---

## 2. Cursor MCP 연결

**topic_id:** `cursor-mcp`

### 개요

Codex MCP를 primary 경로로 사용하고 CLI fallback을 병행하는 패턴. Phase 11부터 후속 Phase 전반에서 MCP 상태를 기록한다.

### 관련 Phase / Run

| Phase | Run | 핵심 산출물 |
|---|---|---|
| 11 | run-002-mcp-slack-stub | `mcp/codex-mcp-check.md`, `mcp/codex-mcp-output.md` |
| 14–24 | run-005 ~ run-015 | 각 run `mcp/` 폴더, PHASE report MCP 섹션 |
| 23 | run-014-wrapper-integration-dry-run | MCP primary SUCCESS — GO Phase 24 prep |

### 학습 목표

- MCP primary vs codex CLI fallback 판단
- MCP 결과를 envelope에 반영하는 방법
- live 실행 전 MCP GO/NO-GO 기록

### 권장 import 순서

1. run-002 MCP 문서
2. run-005 gateway contract (MCP 연계)
3. run-014 PHASE report §5 Cursor MCP 상태

### 주의

- MCP SUCCESS ≠ live execution 승인

---

## 3. Codex / Claude / Gemini worker smoke

**topic_id:** `worker-smoke`

### 개요

세 worker(codex-planning, claude-implementation, gemini-vision) CLI smoke 테스트. Phase 10부터 Phase 24까지 대부분의 run에서 3종 worker를 호출한다.

### 관련 Phase / Run

| Phase | Run | 비고 |
|---|---|---|
| 10–24 | run-001 ~ run-015 | worker brief/output 3종 |
| 20–21 | run-011, run-012 | worker 호출 없음 (readiness/retry 전용) |
| 25–26 | run-016, run-017 | worker 호출 없음 |

### 학습 목표

- worker brief → output → envelope 집계 흐름
- CLI 인증 상태 표 (codex/claude/agy/jq)
- `manual_action_required` 분기 (gemini 수동알림)

### 권장 import 순서

1. run-001 PHASE report §4 Worker 호출 결과
2. run-001 `worker-outputs/` 3종
3. run-004 final-report worker 표

### 주의

- worker output에 예시 redaction 패턴 포함 가능 — Hub import 시 교육용 예시와 실제 값 구분

---

## 4. Slack 승인 흐름

**topic_id:** `slack-approval`

### 개요

Slack 요청 수신 → Approve/Reject/Hold → Hermes handoff까지의 stub 및 limited live 승인 패키지 흐름.

### 관련 Phase / Run

| Phase | Run | 핵심 산출물 |
|---|---|---|
| 11 | run-002-mcp-slack-stub | `slack-stub/` |
| 13 | run-004-e2e-stub-chain | `chain/01-slack-request.md`, `chain/02-slack-approval.md` |
| 16–21 | run-007 ~ run-012 | `approval.md`, `approval-package/`, pilot/live 문서 |
| 24 | run-015 | `env-readiness/07-user-approval-message.md` |

### 학습 목표

- Slack stub 문서 구조 (API 미호출)
- explicit approval 게이트
- 1채널 제한·BLOCKED 사유 기록

### 권장 import 순서

1. run-002 slack-stub
2. run-004 chain/01–02
3. run-008 approval-package

### 주의

- `slack_api_called: false`가 기본; live post는 Phase 19+ 별도 승인 필요

---

## 5. Hermes read-only 연동

**topic_id:** `hermes-readonly`

### 개요

Hermes/OpenClaw handoff·execution stub부터 runtime path 설계, read-only wrapper 구현까지.

### 관련 Phase / Run

| Phase | Run | 핵심 산출물 |
|---|---|---|
| 12 | run-003-hermes-stub | `hermes-stub/` |
| 13 | run-004-e2e-stub-chain | `chain/03-hermes-handoff.md`, `chain/04-hermes-execution-stub.md` |
| 22–23 | run-013, run-014 | `runtime-path/02-hermes-readonly-client-path.md`, `wrappers/hermes-readonly-wrapper.py` |

### 학습 목표

- Hermes stub handoff/execution 분리
- read_only mode 강제
- wrapper dry_run_ready 상태 이해

### 권장 import 순서

1. run-003 hermes-stub
2. run-013 runtime-path Hermes 문서
3. run-014 hermes wrapper + output

### 주의

- OpenClaw/Hermes live 컨테이너 호출 없음 (LAB stub/design only)

---

## 6. Hub sandbox 저장

**topic_id:** `hub-sandbox`

### 개요

AI AX Learning Hub sandbox에 report를 저장하는 설계·contract·wrapper 흐름. production 반영 금지.

### 관련 Phase / Run

| Phase | Run | 핵심 산출물 |
|---|---|---|
| 13 | run-004-e2e-stub-chain | `chain/07-learning-hub-source.md` |
| 14 | run-005-gateway-contract-stub | `contracts/06-learning-hub-source-contract.md` |
| 22–23 | run-013, run-014 | `runtime-path/03-hub-sandbox-client-path.md`, `wrappers/hub-sandbox-wrapper.py`, `outputs/hub-sandbox-output.json` |

### 학습 목표

- Hub source artifact YAML 구조
- Contract 06 필드 매핑
- `sandbox=true` 강제, `hub_api_called: false` 기본

### 권장 import 순서

1. run-004 chain/07
2. run-005 contract 06
3. run-014 hub wrapper + integration summary

### 주의

- 본 Source Pack 자체가 Hub import 후보; live Hub API 미호출

---

## 7. 2019 → 2020 이전 및 readiness

**topic_id:** `migration-readiness`

### 개요

live BLOCKED/NO-GO 원인 분석, env readiness, Mac Terminal 확인, 2019→2020 마이그레이션 완료 기록.

### 관련 Phase / Run

| Phase | Run | 핵심 산출물 |
|---|---|---|
| 20 | run-011-live-blocker-readiness-check | `readiness/`, `terminal-checks/` |
| 21 | run-012-limited-live-pilot-retry-001 | `readiness/01-readiness-import.md` |
| 25 | run-016-env-false-nogo-remediation | `env-status/` (5종) |
| 26 | run-017-2020-readiness-confirmation | `README.md` |

### 학습 목표

- readiness not_confirmed → NO-GO → remediation → 2020 true 흐름
- env key **이름**만 문서화 (값 미포함)
- secret/env/token 미복사 원칙

### 권장 import 순서

1. run-011 PHASE report (NO-GO 기록)
2. run-016 env-status 보완 문서
3. run-017 README (2020 readiness true)

### 주의

- run-017은 formal PHASE report 없음 — README만 primary source
- live 실행은 **아직 없음** (NO LIVE EXECUTION YET)

---

## 주제 ↔ Phase 교차 참조

| topic_id | Phases |
|---|---|
| multi-agent-starter | 10 |
| cursor-mcp | 11, 14–24 |
| worker-smoke | 10–19, 21–24 |
| slack-approval | 11, 13, 16–21, 24 |
| hermes-readonly | 12, 13, 22–23 |
| hub-sandbox | 13, 14, 22–23 |
| migration-readiness | 20–21, 25–26 |

공개 문서 변환 코드 (HTML)

<h1>Topic Map — Learning Hub 주제별 재분류</h1>
<p>Phase 순서가 아닌 <strong>학습 주제</strong> 기준으로 run-001 ~ run-017을 재분류한다.<br>각 주제 ID는 <code>source-map.json</code>의 <code>topics</code> 배열과 교차 참조한다.</p>
<hr>
<h2>1. Multi-Agent Starter 구조</h2>
<p><strong>topic_id:</strong> <code>multi-agent-starter</code></p>
<h3>개요</h3>
<p>Cursor Harness의 file-as-memory run 패턴 — run.md → approval → brief → output → envelope → final-report — 을 LAB에서 최초 검증한 주제이다.</p>
<h3>관련 Phase / Run</h3>
<table>
<thead>
<tr>
<th>Phase</th>
<th>Run</th>
<th>핵심 산출물</th>
</tr>
</thead>
<tbody><tr>
<td>10</td>
<td>run-001-production-like</td>
<td><code>run.md</code>, <code>approval.md</code>, <code>context.md</code>, <code>envelope/</code>, <code>worker-briefs/</code>, <code>worker-outputs/</code></td>
</tr>
</tbody></table>
<h3>학습 목표</h3>
<ul>
<li>production-like run 템플릿 구조 이해</li>
<li><code>safe_to_apply: false</code> 기본 원칙</li>
<li>envelope(json+md) 집계 패턴</li>
</ul>
<h3>권장 import 순서</h3>
<ol>
<li><code>run-001/run.md</code></li>
<li><code>run-001/envelope/run-envelope.md</code></li>
<li><code>run-001/final-report.md</code></li>
</ol>
<h3>주의</h3>
<ul>
<li>외부 프로젝트 자동 적용 금지; LAB 검증 전용</li>
</ul>
<hr>
<h2>2. Cursor MCP 연결</h2>
<p><strong>topic_id:</strong> <code>cursor-mcp</code></p>
<h3>개요</h3>
<p>Codex MCP를 primary 경로로 사용하고 CLI fallback을 병행하는 패턴. Phase 11부터 후속 Phase 전반에서 MCP 상태를 기록한다.</p>
<h3>관련 Phase / Run</h3>
<table>
<thead>
<tr>
<th>Phase</th>
<th>Run</th>
<th>핵심 산출물</th>
</tr>
</thead>
<tbody><tr>
<td>11</td>
<td>run-002-mcp-slack-stub</td>
<td><code>mcp/codex-mcp-check.md</code>, <code>mcp/codex-mcp-output.md</code></td>
</tr>
<tr>
<td>14–24</td>
<td>run-005 ~ run-015</td>
<td>각 run <code>mcp/</code> 폴더, PHASE report MCP 섹션</td>
</tr>
<tr>
<td>23</td>
<td>run-014-wrapper-integration-dry-run</td>
<td>MCP primary SUCCESS — GO Phase 24 prep</td>
</tr>
</tbody></table>
<h3>학습 목표</h3>
<ul>
<li>MCP primary vs codex CLI fallback 판단</li>
<li>MCP 결과를 envelope에 반영하는 방법</li>
<li>live 실행 전 MCP GO/NO-GO 기록</li>
</ul>
<h3>권장 import 순서</h3>
<ol>
<li>run-002 MCP 문서</li>
<li>run-005 gateway contract (MCP 연계)</li>
<li>run-014 PHASE report §5 Cursor MCP 상태</li>
</ol>
<h3>주의</h3>
<ul>
<li>MCP SUCCESS ≠ live execution 승인</li>
</ul>
<hr>
<h2>3. Codex / Claude / Gemini worker smoke</h2>
<p><strong>topic_id:</strong> <code>worker-smoke</code></p>
<h3>개요</h3>
<p>세 worker(codex-planning, claude-implementation, gemini-vision) CLI smoke 테스트. Phase 10부터 Phase 24까지 대부분의 run에서 3종 worker를 호출한다.</p>
<h3>관련 Phase / Run</h3>
<table>
<thead>
<tr>
<th>Phase</th>
<th>Run</th>
<th>비고</th>
</tr>
</thead>
<tbody><tr>
<td>10–24</td>
<td>run-001 ~ run-015</td>
<td>worker brief/output 3종</td>
</tr>
<tr>
<td>20–21</td>
<td>run-011, run-012</td>
<td>worker 호출 없음 (readiness/retry 전용)</td>
</tr>
<tr>
<td>25–26</td>
<td>run-016, run-017</td>
<td>worker 호출 없음</td>
</tr>
</tbody></table>
<h3>학습 목표</h3>
<ul>
<li>worker brief → output → envelope 집계 흐름</li>
<li>CLI 인증 상태 표 (codex/claude/agy/jq)</li>
<li><code>manual_action_required</code> 분기 (gemini 수동알림)</li>
</ul>
<h3>권장 import 순서</h3>
<ol>
<li>run-001 PHASE report §4 Worker 호출 결과</li>
<li>run-001 <code>worker-outputs/</code> 3종</li>
<li>run-004 final-report worker 표</li>
</ol>
<h3>주의</h3>
<ul>
<li>worker output에 예시 redaction 패턴 포함 가능 — Hub import 시 교육용 예시와 실제 값 구분</li>
</ul>
<hr>
<h2>4. Slack 승인 흐름</h2>
<p><strong>topic_id:</strong> <code>slack-approval</code></p>
<h3>개요</h3>
<p>Slack 요청 수신 → Approve/Reject/Hold → Hermes handoff까지의 stub 및 limited live 승인 패키지 흐름.</p>
<h3>관련 Phase / Run</h3>
<table>
<thead>
<tr>
<th>Phase</th>
<th>Run</th>
<th>핵심 산출물</th>
</tr>
</thead>
<tbody><tr>
<td>11</td>
<td>run-002-mcp-slack-stub</td>
<td><code>slack-stub/</code></td>
</tr>
<tr>
<td>13</td>
<td>run-004-e2e-stub-chain</td>
<td><code>chain/01-slack-request.md</code>, <code>chain/02-slack-approval.md</code></td>
</tr>
<tr>
<td>16–21</td>
<td>run-007 ~ run-012</td>
<td><code>approval.md</code>, <code>approval-package/</code>, pilot/live 문서</td>
</tr>
<tr>
<td>24</td>
<td>run-015</td>
<td><code>env-readiness/07-user-approval-message.md</code></td>
</tr>
</tbody></table>
<h3>학습 목표</h3>
<ul>
<li>Slack stub 문서 구조 (API 미호출)</li>
<li>explicit approval 게이트</li>
<li>1채널 제한·BLOCKED 사유 기록</li>
</ul>
<h3>권장 import 순서</h3>
<ol>
<li>run-002 slack-stub</li>
<li>run-004 chain/01–02</li>
<li>run-008 approval-package</li>
</ol>
<h3>주의</h3>
<ul>
<li><code>slack_api_called: false</code>가 기본; live post는 Phase 19+ 별도 승인 필요</li>
</ul>
<hr>
<h2>5. Hermes read-only 연동</h2>
<p><strong>topic_id:</strong> <code>hermes-readonly</code></p>
<h3>개요</h3>
<p>Hermes/OpenClaw handoff·execution stub부터 runtime path 설계, read-only wrapper 구현까지.</p>
<h3>관련 Phase / Run</h3>
<table>
<thead>
<tr>
<th>Phase</th>
<th>Run</th>
<th>핵심 산출물</th>
</tr>
</thead>
<tbody><tr>
<td>12</td>
<td>run-003-hermes-stub</td>
<td><code>hermes-stub/</code></td>
</tr>
<tr>
<td>13</td>
<td>run-004-e2e-stub-chain</td>
<td><code>chain/03-hermes-handoff.md</code>, <code>chain/04-hermes-execution-stub.md</code></td>
</tr>
<tr>
<td>22–23</td>
<td>run-013, run-014</td>
<td><code>runtime-path/02-hermes-readonly-client-path.md</code>, <code>wrappers/hermes-readonly-wrapper.py</code></td>
</tr>
</tbody></table>
<h3>학습 목표</h3>
<ul>
<li>Hermes stub handoff/execution 분리</li>
<li>read_only mode 강제</li>
<li>wrapper dry_run_ready 상태 이해</li>
</ul>
<h3>권장 import 순서</h3>
<ol>
<li>run-003 hermes-stub</li>
<li>run-013 runtime-path Hermes 문서</li>
<li>run-014 hermes wrapper + output</li>
</ol>
<h3>주의</h3>
<ul>
<li>OpenClaw/Hermes live 컨테이너 호출 없음 (LAB stub/design only)</li>
</ul>
<hr>
<h2>6. Hub sandbox 저장</h2>
<p><strong>topic_id:</strong> <code>hub-sandbox</code></p>
<h3>개요</h3>
<p>AI AX Learning Hub sandbox에 report를 저장하는 설계·contract·wrapper 흐름. production 반영 금지.</p>
<h3>관련 Phase / Run</h3>
<table>
<thead>
<tr>
<th>Phase</th>
<th>Run</th>
<th>핵심 산출물</th>
</tr>
</thead>
<tbody><tr>
<td>13</td>
<td>run-004-e2e-stub-chain</td>
<td><code>chain/07-learning-hub-source.md</code></td>
</tr>
<tr>
<td>14</td>
<td>run-005-gateway-contract-stub</td>
<td><code>contracts/06-learning-hub-source-contract.md</code></td>
</tr>
<tr>
<td>22–23</td>
<td>run-013, run-014</td>
<td><code>runtime-path/03-hub-sandbox-client-path.md</code>, <code>wrappers/hub-sandbox-wrapper.py</code>, <code>outputs/hub-sandbox-output.json</code></td>
</tr>
</tbody></table>
<h3>학습 목표</h3>
<ul>
<li>Hub source artifact YAML 구조</li>
<li>Contract 06 필드 매핑</li>
<li><code>sandbox=true</code> 강제, <code>hub_api_called: false</code> 기본</li>
</ul>
<h3>권장 import 순서</h3>
<ol>
<li>run-004 chain/07</li>
<li>run-005 contract 06</li>
<li>run-014 hub wrapper + integration summary</li>
</ol>
<h3>주의</h3>
<ul>
<li>본 Source Pack 자체가 Hub import 후보; live Hub API 미호출</li>
</ul>
<hr>
<h2>7. 2019 → 2020 이전 및 readiness</h2>
<p><strong>topic_id:</strong> <code>migration-readiness</code></p>
<h3>개요</h3>
<p>live BLOCKED/NO-GO 원인 분석, env readiness, Mac Terminal 확인, 2019→2020 마이그레이션 완료 기록.</p>
<h3>관련 Phase / Run</h3>
<table>
<thead>
<tr>
<th>Phase</th>
<th>Run</th>
<th>핵심 산출물</th>
</tr>
</thead>
<tbody><tr>
<td>20</td>
<td>run-011-live-blocker-readiness-check</td>
<td><code>readiness/</code>, <code>terminal-checks/</code></td>
</tr>
<tr>
<td>21</td>
<td>run-012-limited-live-pilot-retry-001</td>
<td><code>readiness/01-readiness-import.md</code></td>
</tr>
<tr>
<td>25</td>
<td>run-016-env-false-nogo-remediation</td>
<td><code>env-status/</code> (5종)</td>
</tr>
<tr>
<td>26</td>
<td>run-017-2020-readiness-confirmation</td>
<td><code>README.md</code></td>
</tr>
</tbody></table>
<h3>학습 목표</h3>
<ul>
<li>readiness not_confirmed → NO-GO → remediation → 2020 true 흐름</li>
<li>env key <strong>이름</strong>만 문서화 (값 미포함)</li>
<li>secret/env/token 미복사 원칙</li>
</ul>
<h3>권장 import 순서</h3>
<ol>
<li>run-011 PHASE report (NO-GO 기록)</li>
<li>run-016 env-status 보완 문서</li>
<li>run-017 README (2020 readiness true)</li>
</ol>
<h3>주의</h3>
<ul>
<li>run-017은 formal PHASE report 없음 — README만 primary source</li>
<li>live 실행은 <strong>아직 없음</strong> (NO LIVE EXECUTION YET)</li>
</ul>
<hr>
<h2>주제 ↔ Phase 교차 참조</h2>
<table>
<thead>
<tr>
<th>topic_id</th>
<th>Phases</th>
</tr>
</thead>
<tbody><tr>
<td>multi-agent-starter</td>
<td>10</td>
</tr>
<tr>
<td>cursor-mcp</td>
<td>11, 14–24</td>
</tr>
<tr>
<td>worker-smoke</td>
<td>10–19, 21–24</td>
</tr>
<tr>
<td>slack-approval</td>
<td>11, 13, 16–21, 24</td>
</tr>
<tr>
<td>hermes-readonly</td>
<td>12, 13, 22–23</td>
</tr>
<tr>
<td>hub-sandbox</td>
<td>13, 14, 22–23</td>
</tr>
<tr>
<td>migration-readiness</td>
<td>20–21, 25–26</td>
</tr>
</tbody></table>