@kodevibe/harness 0.9.6 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +100 -14
- package/README.md +112 -14
- package/harness/agents/lead.md +31 -8
- package/harness/agents/pm.md +42 -35
- package/harness/agents/reviewer.md +25 -3
- package/harness/core-rules.md +30 -14
- package/harness/project-brief.md +56 -28
- package/harness/project-state.md +31 -5
- package/harness/skills/breakdown.md +1 -0
- package/harness/skills/docs-bridge.md +161 -0
- package/harness/skills/pivot.md +2 -0
- package/harness/skills/setup.md +29 -1
- package/harness/skills/state-check.md +34 -2
- package/harness/skills/wrap-up.md +21 -0
- package/package.json +4 -2
- package/src/init.js +755 -9
package/README.ko.md
CHANGED
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
|
|
14
14
|
AI 코딩 에이전트를 위한 프로덕션급 가드레일. 컨텍스트 부패를 방지하고, 프로젝트 방향을 강제하며, 세션 간 상태를 유지합니다. **Copilot, Claude, Cursor, Codex, Windsurf, Gemini** 지원. 의존성 제로.
|
|
15
15
|
|
|
16
|
+
> **에코시스템 내 위치.** kode:harness는 **kode:vibe** 에코시스템의 *실행(execution)* 레이어입니다 — 계획 레이어(PRD / 아키텍처 / ARB)와 인프라 레이어(CI / 런타임) 사이에 위치하며, 코딩 중 AI의 방향을 잡아주는 역할을 합니다. 다른 레이어는 선택이며, kode:harness만 독립적으로 쓸 수 있습니다.
|
|
17
|
+
|
|
18
|
+
> **Pre-1.0 안정성 고지.** 0.x 활발 개발 단계. CLI 플래그·상태 파일·스킬/에이전트 계약은 minor 버전 간 변경될 수 있습니다. v1.0.0은 IDE 호환·외부 production 사용이 30일 이상 동결된 후에야 컷합니다.
|
|
19
|
+
|
|
16
20
|
---
|
|
17
21
|
|
|
18
22
|
## 빠른 시작
|
|
@@ -28,6 +32,8 @@ npx @kodevibe/harness init # IDE 선택
|
|
|
28
32
|
|
|
29
33
|
끝입니다. 이제 AI는 영속적인 메모리, 방향 가드레일, 자기 교정 루프를 갖게 됩니다.
|
|
30
34
|
|
|
35
|
+
v0.11부터는 **Proof-First Enforcement**가 Common Mode Confidence Loop 위에 추가됩니다. pm은 실행 가능한 proof를 계획해야 하고, lead는 증거 없이 Story를 완료 처리하지 않으며, reviewer는 proof가 없거나 실패하면 커밋 안내 전에 멈추고, state-check는 Proof Ledger 누락을 점검합니다.
|
|
36
|
+
|
|
31
37
|
<details>
|
|
32
38
|
<summary>추가 설치 옵션</summary>
|
|
33
39
|
|
|
@@ -58,6 +64,56 @@ npx @kodevibe/harness init --ide antigravity
|
|
|
58
64
|
|
|
59
65
|
---
|
|
60
66
|
|
|
67
|
+
## 기존 설치 업그레이드
|
|
68
|
+
|
|
69
|
+
이미 kode:harness가 설치된 프로젝트에서 `init`을 다시 실행하면 project state와 agent memory는 보존하고 IDE 설정 파일만 최신 버전으로 갱신합니다. 기본 동작은 데이터 손실 없이 진행되며, 덮어쓴 IDE 설정은 자동 백업됩니다.
|
|
70
|
+
|
|
71
|
+
| 범주 | 기본 동작 | 세부 내용 |
|
|
72
|
+
|------|----------|----------|
|
|
73
|
+
| **State files** | 보존 | `project-state.md`, `failure-patterns.md`, `dependency-map.md`, `features.md`, `project-brief.md` |
|
|
74
|
+
| **Agent memory** | 보존 | solo 모드에서는 `docs/agent-memory/`, team 모드에서는 `.harness/agent-memory/` |
|
|
75
|
+
| **IDE config** | 매 실행 갱신 | `.github/copilot-instructions.md`, `CLAUDE.md`, `.claude/`, `.cursor/`, `.codex/`, `.windsurf/`, `.agents/`, `AGENTS.md` |
|
|
76
|
+
| **백업 위치** | 자동 생성 | 기존 IDE 설정 → `.harness/init-backups/<ISO-timestamp>/...` |
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npx @kodevibe/harness init --ide <vscode|claude|cursor|codex|windsurf|antigravity> --batch
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
`--overwrite`는 state files까지 초기화하므로, 손상된 상태 파일을 재생성해야 할 때만 사용하세요.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 안전 제거
|
|
87
|
+
|
|
88
|
+
`init`은 `.harness/install-manifest.json`에 생성 파일, hash, IDE 대상, 모드, 백업 경로를 기록합니다. `uninstall`은 이 manifest를 사용해 kode:harness가 관리한 파일만 제거합니다.
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# 먼저 미리보기. 파일은 변경되지 않습니다.
|
|
92
|
+
npx @kodevibe/harness uninstall --ide claude --dry-run
|
|
93
|
+
|
|
94
|
+
# 적용. state files와 agent memory는 기본 보존됩니다.
|
|
95
|
+
npx @kodevibe/harness uninstall --ide claude --yes
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
안전 규칙:
|
|
99
|
+
|
|
100
|
+
- `docs/project-state.md`, `docs/project-brief.md`, `docs/features.md`, `docs/dependency-map.md`, `docs/failure-patterns.md`, agent memory는 기본 보존됩니다.
|
|
101
|
+
- 기존 `CLAUDE.md` 또는 `AGENTS.md`를 `init`이 덮어쓴 경우 `.harness/init-backups/<timestamp>/...`에서 복원합니다.
|
|
102
|
+
- 설치 후 수정된 managed file은 `--force` 없이는 건드리지 않고 skip합니다.
|
|
103
|
+
- `AGENTS.md`, `.agents/skills/*`처럼 여러 IDE가 공유하는 경로는 다른 active install이 소유 중이면 보존하거나 남은 owner의 내용으로 되돌립니다.
|
|
104
|
+
- 삭제/복원 전 파일은 `.harness/uninstall-backups/<timestamp>/...`에 백업됩니다.
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
npx @kodevibe/harness uninstall --all --dry-run # 감지된 전체 IDE 제거 계획 확인
|
|
108
|
+
npx @kodevibe/harness uninstall --ide vscode --yes # 특정 IDE 표면만 제거
|
|
109
|
+
npx @kodevibe/harness uninstall --ide vscode --yes --purge-state
|
|
110
|
+
npx @kodevibe/harness uninstall --all --yes --purge-state --purge-backups
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
`--purge-state`는 생성된 state files까지 의도적으로 삭제할 때만 사용하세요. `--purge-state --purge-backups`를 함께 쓰면 active install이 모두 제거된 뒤 `.harness/install-manifest.json`까지 삭제되어 kode:harness 흔적을 남기지 않습니다.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
61
117
|
## 문제: 컨텍스트 부패 (Context Rot)
|
|
62
118
|
|
|
63
119
|
AI 코딩 에이전트는 매 세션 제로에서 시작합니다. 세션 3에서는 세션 1의 아키텍처 결정을 잊고, 세션 10에서는 이미 확정된 사항을 다시 논의하며 자신의 이전 작업과 모순됩니다.
|
|
@@ -71,6 +127,7 @@ kode:harness는 세 가지 메커니즘으로 해결합니다:
|
|
|
71
127
|
| **상태 영속성** | AI가 세션 간 목표, 결정, 진행 상황을 잊는 것 |
|
|
72
128
|
| **방향 가드** | AI가 프로젝트 목표에서 이탈하거나 과거 결정과 모순되는 것 |
|
|
73
129
|
| **실패 패턴** | AI가 세션 간 같은 실수를 반복하는 것 |
|
|
130
|
+
| **Proof Ledger** | 테스트·스모크 증거 없이 진행됐다고 착각하는 것 |
|
|
74
131
|
|
|
75
132
|
---
|
|
76
133
|
|
|
@@ -90,10 +147,14 @@ kode:harness는 세 가지 메커니즘으로 해결합니다:
|
|
|
90
147
|
| 기능 | 설명 |
|
|
91
148
|
|------|------|
|
|
92
149
|
| 🛡️ **Direction Guard** | 모든 코딩 요청을 프로젝트 목표/비목표와 대조 후 실행 |
|
|
93
|
-
| 🧭 **
|
|
150
|
+
| 🧭 **Quiet Navigator** | 현재 목표와 필요한 증거 중심의 짧은 다음 행동 안내 |
|
|
151
|
+
| ✅ **Evidence-Gated Progress Board** | 테스트/스모크 증거가 있어야 Planned → Proof Pending → Proven으로 진행 |
|
|
152
|
+
| 📒 **Proof Ledger** | review/wrap-up 출력에 명령어, 결과, 관찰 증거를 짧게 기록 |
|
|
153
|
+
| 🔒 **Proof-First Enforcement** | pm/lead/reviewer/state-check가 모호한 계획, 증거 없는 완료, 실패한 테스트, 누락된 proof 기록을 막음 |
|
|
154
|
+
| 🗂️ **Project Docs Bridge** | 원본과 visibility 경계를 보존하며 로컬 docs hub 인덱스 생성 |
|
|
94
155
|
| 📝 **상태 영속성** | LLM 세션 간 프로젝트 지식을 유지하는 5개 마크다운 파일 |
|
|
95
156
|
| 🔄 **5개 파이프라인** | 🟢 신규 → 🔵 계속 → 🔴 버그 수정 → 🟡 방향 전환 → 🟣 Crew 기반 |
|
|
96
|
-
| 🛠️ **
|
|
157
|
+
| 🛠️ **12개 스킬** | 단계별 절차: setup, debug, breakdown, docs-bridge, review, pivot, state-check 등 |
|
|
97
158
|
| 🤖 **4개 에이전트** | 역할 기반 페르소나: pm, reviewer, lead, architect |
|
|
98
159
|
| ⚠️ **실패 패턴** | 세션 간 같은 실수를 방지하는 프로젝트별 실패 기록 |
|
|
99
160
|
| 📋 **Decision Log** | 결정의 이유를 기록해 LLM이 확정된 사항을 재논의하지 않도록 방지 |
|
|
@@ -106,20 +167,23 @@ kode:harness는 세 가지 메커니즘으로 해결합니다:
|
|
|
106
167
|
```bash
|
|
107
168
|
npx @kodevibe/harness doctor # 파일 설치 상태 확인
|
|
108
169
|
npx @kodevibe/harness validate # state 파일에 실제 내용 확인
|
|
170
|
+
npx @kodevibe/harness uninstall --dry-run --ide vscode # 안전 제거 미리보기
|
|
109
171
|
```
|
|
110
172
|
|
|
111
173
|
---
|
|
112
174
|
|
|
113
175
|
## 지원 IDE
|
|
114
176
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
|
118
|
-
|
|
119
|
-
| **
|
|
120
|
-
| **
|
|
121
|
-
| **
|
|
122
|
-
| **
|
|
177
|
+
어떤 걸 고를지 모르겠다면? 이미 코딩하고 있는 IDE를 그대로 고르면 됩니다 — 모든 경로는 동일한 `harness/` 소스에서 생성되므로 스킬/에이전트 내용은 동일합니다:
|
|
178
|
+
|
|
179
|
+
| IDE | 이럴 때 고르세요 | 디스패처 (always-on) | 스킬 | 에이전트 |
|
|
180
|
+
|-----|--------------------|---------------------|------|----------|
|
|
181
|
+
| **VS Code Copilot** | VS Code를 주로 쓰고 GitHub Copilot Chat 사용. | `.github/copilot-instructions.md` | `.github/skills/*/SKILL.md` | `.github/agents/*.agent.md` |
|
|
182
|
+
| **Claude Code** | 터미널/Claude Code CLI 선호. | `CLAUDE.md` (+ `.claude/rules/core.md`) | `.claude/skills/*/SKILL.md` | `.claude/agents/*.md` |
|
|
183
|
+
| **Cursor** | Cursor 에디터 사용. | `.cursor/rules/core.mdc` (+ `AGENTS.md`) | `.agents/skills/*/SKILL.md` (cross-tool) | `.cursor/rules/<agent>.mdc` |
|
|
184
|
+
| **Codex** | OpenAI Codex CLI 서브에이전트 사용. | `AGENTS.md` | `.agents/skills/*/SKILL.md` | `.codex/agents/*.toml` |
|
|
185
|
+
| **Windsurf** | Codeium/Windsurf 사용. | `.windsurf/rules/core.md` | `.windsurf/skills/*/SKILL.md` | *(스킬로 설치)* |
|
|
186
|
+
| **Antigravity** | Google Antigravity / Gemini 사용. | `AGENTS.md` | `.agents/skills/*/SKILL.md` (cross-tool) | `.agents/rules/<agent>.md` |
|
|
123
187
|
|
|
124
188
|
모든 IDE에 `docs/` 디렉토리에 State 파일(`project-state.md`, `project-brief.md`, `features.md`, `failure-patterns.md`, `dependency-map.md`)도 함께 설치됩니다.
|
|
125
189
|
|
|
@@ -143,6 +207,7 @@ npx @kodevibe/harness validate # state 파일에 실제 내용 확인
|
|
|
143
207
|
| **debug** | 4단계 체계적 디버깅 (증거 → 범위축소 → 수정 → 검증) |
|
|
144
208
|
| **check-impact** | 공유 모듈 수정 전 영향 범위 평가 |
|
|
145
209
|
| **breakdown** | 기능을 의존성 순서대로 구현 태스크로 분해 |
|
|
210
|
+
| **docs-bridge** | 원본 문서를 보존하면서 repository docs를 wiki/docs hub와 연결할 수 있는 로컬 인덱스 생성 |
|
|
146
211
|
| **pr-review** | PR 코드 리뷰: 품질, 보안, 방향 정렬 확인 |
|
|
147
212
|
| **release** | 배포 전 검증 체크리스트 (테스트, state 파일, 보안, 버전) |
|
|
148
213
|
|
|
@@ -165,6 +230,8 @@ npx @kodevibe/harness validate # state 파일에 실제 내용 확인
|
|
|
165
230
|
| **dependency-map.md** | 영향 분석을 위한 모듈 의존성 그래프 ("어떻게"에 대한 기록) |
|
|
166
231
|
| **failure-patterns.md** | 반복 실수를 방지하는 프로젝트별 실패 패턴 ("주의사항") |
|
|
167
232
|
|
|
233
|
+
`project-brief.md`에는 필요 시 **Project Docs Hub Index**를 함께 둘 수 있습니다. 로컬 문서를 wiki, Confluence, Obsidian vault, 사내 문서 허브에서 찾을 수 있게 연결할 때 사용합니다. tracked index에는 repository-relative source와 정제된 hub alias만 두고, PC별 resolver 정보는 ignored `.harness/docs-bridge.local.*` 파일에 둡니다.
|
|
234
|
+
|
|
168
235
|
---
|
|
169
236
|
|
|
170
237
|
## 작동 방식
|
|
@@ -244,7 +311,7 @@ npx @kodevibe/harness init --team
|
|
|
244
311
|
|
|
245
312
|
## Iron Laws
|
|
246
313
|
|
|
247
|
-
|
|
314
|
+
11개 규칙이 모든 스킬과 에이전트에 적용됩니다. kode:harness로 관리되는 프로젝트의 품질 근간을 형성합니다.
|
|
248
315
|
|
|
249
316
|
| # | 규칙 | 적용 대상 |
|
|
250
317
|
|---|------|----------|
|
|
@@ -256,6 +323,9 @@ npx @kodevibe/harness init --team
|
|
|
256
323
|
| 6 | **의존성 맵** — 모듈 추가/수정 → 같은 커밋에서 `dependency-map.md` 업데이트 | `reviewer`, `wrap-up` |
|
|
257
324
|
| 7 | **기능 레지스트리** — 새 기능 → 같은 커밋에서 `features.md`에 등록 | `reviewer`, `wrap-up` |
|
|
258
325
|
| 8 | **세션 핸드오프** — 세션 종료 → `project-state.md` Quick Summary 업데이트 | `wrap-up` |
|
|
326
|
+
| 9 | **Common First** — Common 모드는 crew 산출물 없이 동작해야 하며 crew-only 로직은 marker block 안에만 둠 | 모든 에이전트 |
|
|
327
|
+
| 10 | **Self-Verify** — DONE 보고 전 `state-check` 실행. FAIL이면 DONE 금지 | 모든 에이전트 |
|
|
328
|
+
| 11 | **Proof First** — passing proof 없이는 Story를 Proven, Reviewed, DONE, commit guidance로 이동 금지 | `pm`, `lead`, `reviewer`, `state-check` |
|
|
259
329
|
|
|
260
330
|
---
|
|
261
331
|
|
|
@@ -283,6 +353,16 @@ Bootstrap이 `docs/crew/`, `docs/PM/`, `docs/Analyst/`, `docs/ARB/`에서 crew
|
|
|
283
353
|
|
|
284
354
|
원본 crew 문서는 **절대 수정되지 않습니다**. 인덱스와 트래커만 생성됩니다.
|
|
285
355
|
|
|
356
|
+
### Project Docs Bridge
|
|
357
|
+
|
|
358
|
+
프로젝트 문서가 README, `docs/`, ADR, runbook, API spec, 기획 산출물로 흩어져 있다면 `docs-bridge`를 실행합니다:
|
|
359
|
+
|
|
360
|
+
```bash
|
|
361
|
+
> "이 프로젝트 문서를 wiki/docs hub와 연결해줘"
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
`project-brief.md`에 Project Docs Hub Index를 추가해 각 로컬 원본, 역할, 정제된 hub 대상, sync 방향, visibility, 상태, 검토일을 기록합니다. 원본은 repository에 남깁니다. 외부 hub에 요약이나 링크를 쓰는 작업은 사용자가 명시적으로 요청하고 visibility boundary를 확인한 뒤에만 진행합니다.
|
|
365
|
+
|
|
286
366
|
### 다른 프레임워크와의 비교
|
|
287
367
|
|
|
288
368
|
| | BMAD v6.2.2 | gstack v0.15.1 | GSD v1.33.0 | **kode:harness** |
|
|
@@ -292,7 +372,7 @@ Bootstrap이 `docs/crew/`, `docs/PM/`, `docs/Analyst/`, `docs/ARB/`에서 crew
|
|
|
292
372
|
| 의존성 | Node 20+ | Bun + Node + Playwright | Node 18+ | **Zero** |
|
|
293
373
|
| IDE 지원 | 20+ (installer) | 5 (setup --host) | 13 (runtime select) | 6 (네이티브 포맷) |
|
|
294
374
|
| 방향 관리 | ❌ | ❌ | ❌ | ✅ (Direction Guard + pivot + Decision Log) |
|
|
295
|
-
| Iron Laws (코드 품질 규칙) | ❌ | ❌ | ❌ | ✅ (
|
|
375
|
+
| Iron Laws (코드 품질 규칙) | ❌ | ❌ | ❌ | ✅ (11개 규칙이 스킬에 임베딩) |
|
|
296
376
|
| Cold start | ❌ | ❌ | `/gsd-new-project` | ✅ (`setup` 스킬) |
|
|
297
377
|
| 태스크당 컨텍스트 | 4-6 파일 | 1 파일 | 매번 200k 플랜 | **2-3 파일 (136줄 디스패처)** |
|
|
298
378
|
|
|
@@ -300,7 +380,7 @@ Bootstrap이 `docs/crew/`, `docs/PM/`, `docs/Analyst/`, `docs/ARB/`에서 crew
|
|
|
300
380
|
|
|
301
381
|
## 로드맵
|
|
302
382
|
|
|
303
|
-
kode:harness는 현재 **v0.
|
|
383
|
+
kode:harness는 현재 **v0.11.1** — manifest 기반 안전 제거를 추가해 설치 흔적을 미리보기, 보존, 복원, purge 흐름으로 관리합니다. Common Mode의 proof-first 동작도 계속 강제합니다.
|
|
304
384
|
|
|
305
385
|
| 단계 | 버전 | 상태 | 초점 |
|
|
306
386
|
|------|------|------|------|
|
|
@@ -312,11 +392,17 @@ kode:harness는 현재 **v0.9.6** — init이 덮어쓰는 IDE 파일을 `.harne
|
|
|
312
392
|
| **Self-Verify** | v0.9.2 | ✅ 완료 | state-check 스킬, Iron Law #10, Confirmation Gate Defaults, 멀티 IDE 수정, CI Artifact Index |
|
|
313
393
|
| **IDE Realignment** | v0.9.4 | ✅ 완료 | 6개 IDE 어댑터 공식 문서 정합; Antigravity `.agents/`, Codex `.toml`, Cursor `.cursor/rules/`; release 스킬 Step 6.5 + qa-check.sh §10 회귀 가드 |
|
|
314
394
|
| **Consistency & Budget** | v0.9.5 | ✅ 완료 | reviewer.md Iron Laws stale 수정, 디스패처 동기화, 경량성 예산 재교정(40K/1500/2500) 및 근거 기록 |
|
|
315
|
-
| **
|
|
395
|
+
| **Drift Guard & Positioning** | v0.9.7 | ✅ 완료 | `harness/`↔`.github/` drift 가드, reviewer working-proof 게이트, kode:vibe 위치 안내, IDE 선택 가이드, project-brief 예시 |
|
|
396
|
+
| **Confidence Loop** | v0.10.0 | ✅ 완료 | Goal Card, Quiet Navigator, Evidence-Gated Progress Board, Proof Ledger, QA/content 회귀 테스트 |
|
|
397
|
+
| **Proof-First Enforcement** | v0.11.0 | ✅ 완료 | Mandatory Proof Plan, lead proof blocker, reviewer proof blocker, state-check Proof Ledger coverage |
|
|
398
|
+
| **Uninstall Safety** | v0.11.1 | ✅ 현재 | Manifest 기반 uninstall, state 기본 보존, shared owner 복원, purge cleanup |
|
|
399
|
+
| **Docs Bridge** | v0.11.1 | 🧪 Experimental | Project Docs Hub Index, docs-bridge 스킬, visibility 경계를 가진 로컬 docs hub 인덱스 |
|
|
400
|
+
| **Safety & Branding** | v0.9.6 | ✅ 완료 | init overwrite 백업, 배포 파일 pm 네이밍 정리, LICENSE 브랜딩 정리 |
|
|
316
401
|
| **Validation** | v1.0 | 🔜 다음 | 실사용 검증, 사용자 피드백 수집 |
|
|
317
402
|
|
|
318
403
|
### 다음 단계
|
|
319
404
|
|
|
405
|
+
- [ ] 파일럿: 실제 프로젝트에서 v0.11 Common Mode proof coverage 측정
|
|
320
406
|
- [ ] 파일럿: 외부 기획 산출물을 kode:harness의 🟣 파이프라인으로 실제 프로젝트에 적용
|
|
321
407
|
- [ ] 실제 프로젝트에 kode:harness를 적용하고 사용 데이터 수집
|
|
322
408
|
- [ ] 사용 사례 문서화: Solo vs Team, crew vs no-crew
|
package/README.md
CHANGED
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
|
|
14
14
|
Production-grade guardrails for AI coding agents. Prevents context rot, enforces project direction, and persists state across sessions. Works with **Copilot, Claude, Cursor, Codex, Windsurf, and Gemini**. Zero dependencies.
|
|
15
15
|
|
|
16
|
+
> **Where this fits.** kode:harness is the *execution* layer of the **kode:vibe** ecosystem — it sits between a planning layer (PRD / architecture / ARB) and an infrastructure layer (CI / runtime). kode:harness keeps the AI on direction while you code; the other layers are optional. You can use kode:harness alone.
|
|
17
|
+
|
|
18
|
+
> **Pre-1.0 stability notice.** Active 0.x development. CLI flags, state files, and skill/agent contracts may change between minor versions. v1.0.0 ships only after 30 days of frozen IDE compatibility matrix + external production usage.
|
|
19
|
+
|
|
16
20
|
---
|
|
17
21
|
|
|
18
22
|
## Quick Start
|
|
@@ -28,6 +32,8 @@ npx @kodevibe/harness init # pick your IDE
|
|
|
28
32
|
|
|
29
33
|
That's it. Your AI now has persistent memory, direction guardrails, and self-correction loops.
|
|
30
34
|
|
|
35
|
+
v0.11 adds **Proof-First Enforcement** on top of the Common Mode Confidence Loop: pm must define runnable proof, lead cannot mark a Story done without passing evidence, reviewer blocks commit guidance when proof is missing or failing, and state-check audits Proof Ledger coverage.
|
|
36
|
+
|
|
31
37
|
<details>
|
|
32
38
|
<summary>More install options</summary>
|
|
33
39
|
|
|
@@ -58,6 +64,68 @@ npx @kodevibe/harness init --ide antigravity
|
|
|
58
64
|
|
|
59
65
|
---
|
|
60
66
|
|
|
67
|
+
## Upgrade an existing install
|
|
68
|
+
|
|
69
|
+
If you already have kode:harness installed, running `init` again refreshes IDE configuration files while preserving project state and agent memory. **No data loss by default** — only IDE config files are updated, and previous versions are automatically backed up.
|
|
70
|
+
|
|
71
|
+
| Category | Behavior (default) | Details |
|
|
72
|
+
|----------|-------------------|---------|
|
|
73
|
+
| **State files** (preserved) | Not overwritten | `project-state.md`, `failure-patterns.md`, `dependency-map.md`, `features.md`, `project-brief.md` |
|
|
74
|
+
| **Agent memory** (preserved) | Not overwritten | `agent-memory/{architect,lead,pm,reviewer}.md` (under `docs/` in solo mode or `.harness/` in team mode) |
|
|
75
|
+
| **IDE config** (refreshed) | Overwritten each run | `.github/copilot-instructions.md`, `CLAUDE.md`, `.claude/`, `.cursor/`, `.codex/`, `.windsurf/`, `.agents/`, `AGENTS.md` |
|
|
76
|
+
| **Backup location** | Automatic (v0.9.6+) | Previous IDE config files → `.harness/init-backups/<ISO-timestamp>/...` |
|
|
77
|
+
|
|
78
|
+
### Safe re-init (recommended for version upgrades)
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
npx @kodevibe/harness init --ide <vscode|claude|cursor|codex|windsurf|antigravity> --batch
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
State files and agent memory remain intact.
|
|
85
|
+
|
|
86
|
+
### Force overwrite (caution)
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npx @kodevibe/harness init --ide vscode --batch --overwrite
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
⚠️ `--overwrite` will erase your current `project-state.md`, `failure-patterns.md`, and agent memory files. Recover the previous versions from `.harness/init-backups/<ISO-timestamp>/` if needed.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Uninstall Safely
|
|
97
|
+
|
|
98
|
+
Every `init` now writes `.harness/install-manifest.json`, which records the generated files, hashes, IDE target, mode, and backup paths. `uninstall` uses that manifest to remove only kode:harness-managed files.
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
# Preview first. No files are changed.
|
|
102
|
+
npx @kodevibe/harness uninstall --ide claude --dry-run
|
|
103
|
+
|
|
104
|
+
# Apply. State files and agent memory are preserved by default.
|
|
105
|
+
npx @kodevibe/harness uninstall --ide claude --yes
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Safety rules:
|
|
109
|
+
|
|
110
|
+
- `docs/project-state.md`, `docs/project-brief.md`, `docs/features.md`, `docs/dependency-map.md`, `docs/failure-patterns.md`, and agent memory are kept by default.
|
|
111
|
+
- Existing root files such as `CLAUDE.md` or `AGENTS.md` are restored from `.harness/init-backups/<timestamp>/...` when `init` overwrote them.
|
|
112
|
+
- Files modified after install are skipped unless `--force` is used.
|
|
113
|
+
- Shared cross-tool paths such as `AGENTS.md` and `.agents/skills/*` are kept while another active IDE install still owns them.
|
|
114
|
+
- Deleted/restored files are copied to `.harness/uninstall-backups/<timestamp>/...` before changes are applied.
|
|
115
|
+
|
|
116
|
+
Additional options:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
npx @kodevibe/harness uninstall --all --dry-run # preview all detected IDE installs
|
|
120
|
+
npx @kodevibe/harness uninstall --ide vscode --yes # remove one IDE surface
|
|
121
|
+
npx @kodevibe/harness uninstall --ide vscode --yes --purge-state
|
|
122
|
+
npx @kodevibe/harness uninstall --all --yes --purge-state --purge-backups
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Use `--purge-state` only when you intentionally want to delete generated state files too. Backup directories are kept unless `--purge-backups` is explicitly provided. Combining `--purge-state --purge-backups` removes `.harness/install-manifest.json` too once no active installs remain, leaving no kode:harness state behind.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
61
129
|
## The Problem: Context Rot
|
|
62
130
|
|
|
63
131
|
Your AI coding agent starts every session from zero. By session 3, it's forgotten the architecture decisions from session 1. By session 10, it's re-debating settled choices and contradicting its own earlier work.
|
|
@@ -71,6 +139,7 @@ kode:harness solves this with three mechanisms:
|
|
|
71
139
|
| **State Persistence** | AI forgetting goals, decisions, and progress between sessions |
|
|
72
140
|
| **Direction Guard** | AI drifting away from project goals or contradicting past decisions |
|
|
73
141
|
| **Failure Patterns** | AI repeating the same mistakes across sessions |
|
|
142
|
+
| **Proof Ledger** | AI claiming progress without tests, smoke proof, or user-visible evidence |
|
|
74
143
|
|
|
75
144
|
---
|
|
76
145
|
|
|
@@ -90,10 +159,14 @@ kode:harness solves this with three mechanisms:
|
|
|
90
159
|
| Feature | Description |
|
|
91
160
|
|---------|-------------|
|
|
92
161
|
| 🛡️ **Direction Guard** | Every coding request is checked against project goals/non-goals before execution |
|
|
93
|
-
| 🧭 **
|
|
162
|
+
| 🧭 **Quiet Navigator** | Short next-action guidance centered on current goal and required evidence |
|
|
163
|
+
| ✅ **Evidence-Gated Progress Board** | Stories move from Planned → Proof Pending → Proven only when tests or smoke proof exist |
|
|
164
|
+
| 📒 **Proof Ledger** | Review and wrap-up outputs record compact proof: command, result, and observation |
|
|
165
|
+
| 🔒 **Proof-First Enforcement** | pm/lead/reviewer/state-check block vague plans, unproven completion, failing tests, and missing proof records |
|
|
166
|
+
| 🗂️ **Project Docs Bridge** | Creates a local docs hub index while preserving originals and visibility boundaries |
|
|
94
167
|
| 📝 **State Persistence** | 5 markdown files that persist project knowledge across LLM sessions |
|
|
95
168
|
| 🔄 **5 Pipelines** | 🟢 New Dev → 🔵 Continue → 🔴 Bug Fix → 🟡 Direction Change → 🟣 Crew-Driven |
|
|
96
|
-
| 🛠️ **
|
|
169
|
+
| 🛠️ **12 Skills** | Step-by-step procedures: setup, debug, breakdown, docs-bridge, review, pivot, state-check, and more |
|
|
97
170
|
| 🤖 **4 Agents** | Role-based personas: pm, reviewer, lead, architect |
|
|
98
171
|
| ⚠️ **Failure Patterns** | Project-specific failure log that prevents repeat mistakes across sessions |
|
|
99
172
|
| 📋 **Decision Log** | Records why decisions were made so LLMs don't re-debate settled choices |
|
|
@@ -106,18 +179,21 @@ kode:harness solves this with three mechanisms:
|
|
|
106
179
|
```bash
|
|
107
180
|
npx @kodevibe/harness doctor # verify files are installed
|
|
108
181
|
npx @kodevibe/harness validate # verify state files have real content
|
|
182
|
+
npx @kodevibe/harness uninstall --dry-run --ide vscode # preview safe removal
|
|
109
183
|
```
|
|
110
184
|
|
|
111
185
|
## Supported IDEs
|
|
112
186
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
|
116
|
-
|
|
117
|
-
| **
|
|
118
|
-
| **
|
|
119
|
-
| **
|
|
120
|
-
| **
|
|
187
|
+
Not sure which to pick? Use the IDE you already code in — each install path is generated from the same `harness/` source, so the underlying skills/agents are identical:
|
|
188
|
+
|
|
189
|
+
| IDE | Pick this if… | Dispatcher (always-on) | Skills | Agents |
|
|
190
|
+
|-----|---------------|----------------------|--------|--------|
|
|
191
|
+
| **VS Code Copilot** | You use VS Code daily and have GitHub Copilot Chat. | `.github/copilot-instructions.md` | `.github/skills/*/SKILL.md` | `.github/agents/*.agent.md` |
|
|
192
|
+
| **Claude Code** | You prefer Claude in the terminal / Claude Code CLI. | `CLAUDE.md` (+ `.claude/rules/core.md`) | `.claude/skills/*/SKILL.md` | `.claude/agents/*.md` |
|
|
193
|
+
| **Cursor** | You use Cursor as your editor. | `.cursor/rules/core.mdc` (+ `AGENTS.md`) | `.agents/skills/*/SKILL.md` (cross-tool) | `.cursor/rules/<agent>.mdc` |
|
|
194
|
+
| **Codex** | You use OpenAI Codex CLI subagents. | `AGENTS.md` | `.agents/skills/*/SKILL.md` | `.codex/agents/*.toml` |
|
|
195
|
+
| **Windsurf** | You use Codeium/Windsurf. | `.windsurf/rules/core.md` | `.windsurf/skills/*/SKILL.md` | *(agents installed as skills)* |
|
|
196
|
+
| **Antigravity** | You use Google Antigravity / Gemini. | `AGENTS.md` | `.agents/skills/*/SKILL.md` (cross-tool) | `.agents/rules/<agent>.md` |
|
|
121
197
|
|
|
122
198
|
All IDEs also get state files (`project-state.md`, `project-brief.md`, `features.md`, `failure-patterns.md`, `dependency-map.md`) in the `docs/` directory.
|
|
123
199
|
|
|
@@ -135,6 +211,7 @@ All IDEs also get state files (`project-state.md`, `project-brief.md`, `features
|
|
|
135
211
|
- **debug** — 4-phase systematic debugging (evidence → scope → fix → verify)
|
|
136
212
|
- **check-impact** — Assess change blast radius before modifying shared modules
|
|
137
213
|
- **breakdown** — Decompose features into dependency-ordered implementation tasks
|
|
214
|
+
- **docs-bridge** — Create a local index that can connect repository docs to a wiki/docs hub while preserving originals and visibility boundaries
|
|
138
215
|
- **pr-review** — Review incoming Pull Requests for quality, security, and direction alignment
|
|
139
216
|
- **release** — Pre-release validation checklist (tests, state files, security, versioning)
|
|
140
217
|
|
|
@@ -151,6 +228,8 @@ All IDEs also get state files (`project-state.md`, `project-brief.md`, `features
|
|
|
151
228
|
- **dependency-map.md** — Module dependency graph for impact analysis (the "how")
|
|
152
229
|
- **failure-patterns.md** — Project-specific failure patterns that prevent repeat mistakes (the "watch out")
|
|
153
230
|
|
|
231
|
+
`project-brief.md` can also carry a **Project Docs Hub Index** when you want local docs discoverable from a wiki, Confluence space, Obsidian vault, or other documentation hub. The tracked index stores repo-relative sources and sanitized hub aliases only; machine-specific resolver details belong in ignored `.harness/docs-bridge.local.*` files.
|
|
232
|
+
|
|
154
233
|
## How It Works
|
|
155
234
|
|
|
156
235
|
### 1. Bootstrap (once)
|
|
@@ -218,7 +297,7 @@ npx @kodevibe/harness init --team
|
|
|
218
297
|
|
|
219
298
|
## Iron Laws
|
|
220
299
|
|
|
221
|
-
These
|
|
300
|
+
These 11 rules are enforced across all skills and agents. They form the quality backbone of every kode:harness project managed with harness engineering.
|
|
222
301
|
|
|
223
302
|
| # | Law | Enforced By |
|
|
224
303
|
|---|-----|-------------|
|
|
@@ -230,6 +309,9 @@ These 10 rules are enforced across all skills and agents. They form the quality
|
|
|
230
309
|
| 6 | **Dependency Map** — New/modified module → update `dependency-map.md` in the same commit. | `reviewer`, `wrap-up` |
|
|
231
310
|
| 7 | **Feature Registry** — New feature → register in `features.md` in the same commit. | `reviewer`, `wrap-up` |
|
|
232
311
|
| 8 | **Session Handoff** — Session end → update `project-state.md` Quick Summary. | `wrap-up` |
|
|
312
|
+
| 9 | **Common First** — Common mode must work without crew artifacts; crew-only logic stays in crew marker blocks. | All agents |
|
|
313
|
+
| 10 | **Self-Verify** — Run `state-check` before reporting DONE. FAIL blocks DONE. | All agents |
|
|
314
|
+
| 11 | **Proof First** — No Story moves to Proven, Reviewed, DONE, or commit guidance without passing proof. | `pm`, `lead`, `reviewer`, `state-check` |
|
|
233
315
|
|
|
234
316
|
## Documentation
|
|
235
317
|
|
|
@@ -259,6 +341,16 @@ Bootstrap auto-detects crew artifacts in `docs/crew/`, `docs/PM/`, `docs/Analyst
|
|
|
259
341
|
|
|
260
342
|
Original crew documents are **never modified**. Only the index and tracker are created.
|
|
261
343
|
|
|
344
|
+
### Project Docs Bridge
|
|
345
|
+
|
|
346
|
+
When a project already has useful docs spread across README files, `docs/`, ADRs, runbooks, API specs, or planning artifacts, run `docs-bridge`:
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
> "connect this project's docs to our wiki/docs hub"
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
It adds a Project Docs Hub Index to `project-brief.md` with each local source, role, sanitized hub target, sync direction, visibility, status, and review date. The repository keeps the originals. External hub summaries or links are written only when the user explicitly asks and visibility boundaries are confirmed.
|
|
353
|
+
|
|
262
354
|
### How It Compares
|
|
263
355
|
|
|
264
356
|
| | BMAD v6.2.2 | gstack v0.15.1 | GSD v1.33.0 | kode:harness |
|
|
@@ -268,13 +360,13 @@ Original crew documents are **never modified**. Only the index and tracker are c
|
|
|
268
360
|
| Dependencies | Node 20+ | Bun + Node + Playwright | Node 18+ | Zero |
|
|
269
361
|
| IDE support | 20+ (installer) | 5 (setup --host) | 13 (runtime select) | 6 (native format) |
|
|
270
362
|
| Direction management | ❌ | ❌ | ❌ | ✅ (Direction Guard + pivot + Decision Log) |
|
|
271
|
-
| Iron Laws (code quality rules) | ❌ | ❌ | ❌ | ✅ (
|
|
363
|
+
| Iron Laws (code quality rules) | ❌ | ❌ | ❌ | ✅ (11 laws embedded in skills) |
|
|
272
364
|
| Cold start | ❌ | ❌ | `/gsd-new-project` | ✅ (`setup` skill) |
|
|
273
365
|
| Context per task | 4-6 files | 1 file | Fresh 200k per plan | 2-3 files (136-line dispatcher) |
|
|
274
366
|
|
|
275
367
|
## Roadmap
|
|
276
368
|
|
|
277
|
-
kode:harness is at **v0.
|
|
369
|
+
kode:harness is at **v0.11.1** — adds manifest-based safe uninstall so generated IDE files can be previewed, preserved, restored, or purged intentionally. Common Mode proof-first behavior remains enforceable.
|
|
278
370
|
|
|
279
371
|
| Phase | Version | Status | Focus |
|
|
280
372
|
|---|---|---|---|
|
|
@@ -286,11 +378,17 @@ kode:harness is at **v0.9.6** — init now backs up overwritten IDE files under
|
|
|
286
378
|
| **Self-Verify** | v0.9.2 | ✅ Done | state-check skill, Iron Law #10, Confirmation Gate Defaults, multi-IDE fix, CI Artifact Index |
|
|
287
379
|
| **IDE Realignment** | v0.9.4 | ✅ Done | All 6 IDE adapters aligned with official docs; Antigravity `.agents/`, Codex `.toml`, Cursor `.cursor/rules/`; release skill Step 6.5 + qa-check.sh §10 regression guards |
|
|
288
380
|
| **Consistency & Budget** | v0.9.5 | ✅ Done | Iron Laws stale-copy fix (reviewer.md), dispatcher sync (core-rules.md ↔ copilot-instructions.md), lightness budgets recalibrated (40K/1500/2500) with rationale |
|
|
289
|
-
| **
|
|
381
|
+
| **Drift Guard & Positioning** | v0.9.7 | ✅ Done | `harness/`↔`.github/` drift detector, reviewer working-proof gate, kode:vibe positioning, IDE selection guide, project-brief example |
|
|
382
|
+
| **Confidence Loop** | v0.10.0 | ✅ Done | Goal Card, Quiet Navigator, Evidence-Gated Progress Board, Proof Ledger, QA/content regression tests |
|
|
383
|
+
| **Proof-First Enforcement** | v0.11.0 | ✅ Complete | Mandatory Proof Plan, lead proof blockers, reviewer proof blockers, state-check Proof Ledger coverage |
|
|
384
|
+
| **Uninstall Safety** | v0.11.1 | ✅ Current | Manifest-based uninstall, default state preservation, shared owner restore, purge cleanup |
|
|
385
|
+
| **Docs Bridge** | v0.11.1 | 🧪 Experimental | Project Docs Hub Index, docs-bridge skill, local docs hub index with visibility boundaries |
|
|
386
|
+
| **Safety & Branding** | v0.9.6 | ✅ Done | init overwrite backups, shipped pm naming cleanup, LICENSE branding cleanup |
|
|
290
387
|
| **Validation** | v1.0 | 🔜 Next | Real-world project adoption, user feedback collection |
|
|
291
388
|
|
|
292
389
|
### What's Next
|
|
293
390
|
|
|
391
|
+
- [ ] Pilot: Run v0.11 proof-first Common Mode on a real project and measure proof coverage
|
|
294
392
|
- [ ] Pilot: Run external planning artifacts through kode:harness's 🟣 pipeline on a real project
|
|
295
393
|
- [ ] Adopt kode:harness in real projects and collect usage data
|
|
296
394
|
- [ ] Document case studies: solo vs team, crew vs no-crew
|
package/harness/agents/lead.md
CHANGED
|
@@ -67,7 +67,12 @@ User request: "next task", "current status", "story done", "new sprint", "scope
|
|
|
67
67
|
After every status check, recommend the next action based on current context:
|
|
68
68
|
|
|
69
69
|
1. Read `docs/project-state.md`, `docs/features.md`, `docs/project-brief.md`, `docs/failure-patterns.md`
|
|
70
|
-
2.
|
|
70
|
+
2. MUST render a compact **Evidence-Gated Progress Board** before recommending action:
|
|
71
|
+
- Goal: one-line Goal Card from project-brief or current Story
|
|
72
|
+
- State: `Planned | Implementing | Proof Pending | Proven | Reviewed | Blocked`
|
|
73
|
+
- Evidence: last passing test/smoke proof, or `missing`
|
|
74
|
+
- Blocker: one line, or `none`
|
|
75
|
+
3. Determine the project phase and recommend accordingly:
|
|
71
76
|
|
|
72
77
|
| Situation | Recommendation |
|
|
73
78
|
|-----------|---------------|
|
|
@@ -83,10 +88,12 @@ After every status check, recommend the next action based on current context:
|
|
|
83
88
|
| All ARB Fail items resolved | → "ARB Fail items all resolved — deployment readiness can be checked" |
|
|
84
89
|
<!-- CREW_MODE_END -->
|
|
85
90
|
|
|
86
|
-
|
|
91
|
+
4. Format the recommendation as a quiet 🧭 Next Step block. Prefer one next action and one required evidence item; do not restate the full pipeline unless the user asks.
|
|
87
92
|
```
|
|
88
93
|
---
|
|
89
94
|
🧭 Next Step
|
|
95
|
+
→ Goal: [Goal Card in one line]
|
|
96
|
+
→ Evidence: [test command / smoke proof / state-check needed]
|
|
90
97
|
→ Next: `[skill or agent name]` (슬래시 메뉴에서 선택하거나, 채팅에 아래 프롬프트 입력)
|
|
91
98
|
→ Prompt: "[copy-paste ready prompt]"
|
|
92
99
|
→ Why: [one-sentence reason]
|
|
@@ -96,12 +103,16 @@ After every status check, recommend the next action based on current context:
|
|
|
96
103
|
```
|
|
97
104
|
|
|
98
105
|
**Request: "story done" / "S{N}-{M} done"**
|
|
99
|
-
1.
|
|
100
|
-
2.
|
|
101
|
-
|
|
106
|
+
1. Read the Story's Proof Plan and current Evidence-Gated Progress Board row.
|
|
107
|
+
2. Require proof before marking done:
|
|
108
|
+
- Passing proof → set state to `Proven`, update Story status to `✅ done`, append Proof Ledger / Evidence Summary row.
|
|
109
|
+
- Missing proof → keep state `Proof Pending`, output `[BLOCKER: PROOF_MISSING]`, and do not advance to the next Story.
|
|
110
|
+
- Failing proof → keep state `Implementing`, output `[BLOCKER: PROOF_FAILING]`, and fix within current Story.
|
|
111
|
+
3. Add completion record to "Recent Changes" section only after passing proof.
|
|
112
|
+
4. **Commit/Push check**: If changes are uncommitted, remind:
|
|
102
113
|
- "⚠️ S{N}-{M} 완료 — 커밋하셨나요? `git add <files> && git commit -m \"S{N}-{M}: {description}\"`"
|
|
103
114
|
- Team mode: Also remind to push — "팀원에게 공유하려면 `git push origin {branch}` 실행"
|
|
104
|
-
|
|
115
|
+
5. Guide to next Story only after proof passes.
|
|
105
116
|
|
|
106
117
|
**Request: "new story" / "next task"**
|
|
107
118
|
1. Find next `todo` Story in docs/project-state.md
|
|
@@ -136,9 +147,10 @@ When invoked after pm approval, verify that pm wrote state files correctly:
|
|
|
136
147
|
|
|
137
148
|
When a Story contains multiple Tasks/Waves (from breakdown):
|
|
138
149
|
- Guide implementation **one Wave at a time** (not one file at a time, not all at once)
|
|
139
|
-
- After each Wave is implemented, **run tests
|
|
150
|
+
- After each Wave is implemented, **run tests or smoke proof** to verify the Wave is clean before proceeding
|
|
151
|
+
- Record a mini Proof Ledger row inline: Evidence, Result, Command / Observation
|
|
140
152
|
- Only after verification passes, prompt: "Wave {N} 완료 (tests pass). Wave {N+1}로 넘어갈까요?"
|
|
141
|
-
- If tests fail → fix within the current Wave
|
|
153
|
+
- If tests fail → output `[BLOCKER: WAVE_PROOF_FAILING]`, fix within the current Wave, and do NOT advance.
|
|
142
154
|
- This prevents context overload from modifying too many modules simultaneously
|
|
143
155
|
- Exception: If a Wave contains only a single trivial task, it may be combined with the next Wave
|
|
144
156
|
|
|
@@ -158,6 +170,17 @@ When a Story contains multiple Tasks/Waves (from breakdown):
|
|
|
158
170
|
```
|
|
159
171
|
## Sprint Status
|
|
160
172
|
|
|
173
|
+
### Goal Card
|
|
174
|
+
- Goal: {current project/story goal}
|
|
175
|
+
- First usable result: {smallest working outcome}
|
|
176
|
+
- Required proof: {test command / smoke proof}
|
|
177
|
+
|
|
178
|
+
### Evidence-Gated Progress Board
|
|
179
|
+
| Story | State | Evidence | Blocker |
|
|
180
|
+
|-------|-------|----------|---------|
|
|
181
|
+
| S{N}-1 | Reviewed | `npm test` ✅ | none |
|
|
182
|
+
| S{N}-2 | Proof Pending | missing | needs reviewer proof |
|
|
183
|
+
|
|
161
184
|
Sprint: {N} — {theme}
|
|
162
185
|
Progress: {done}/{total} Stories
|
|
163
186
|
|