@kodevibe/harness 0.11.0 → 0.11.2

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 CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  > **AI 코딩 에이전트는 세션이 끝나면 모든 것을 잊습니다. kode:harness는 목표, 결정, 실패, 프로젝트 방향을 기억하게 합니다.**
13
13
 
14
- AI 코딩 에이전트를 위한 프로덕션급 가드레일. 컨텍스트 부패를 방지하고, 프로젝트 방향을 강제하며, 세션 간 상태를 유지합니다. **Copilot, Claude, Cursor, Codex, Windsurf, Gemini** 지원. 의존성 제로.
14
+ AI 코딩 에이전트를 위한 pre-1.0 가드레일입니다. 실제 프로젝트 파일럿과 팀 사용을 기준으로 방향, proof, 세션 간 메모리를 유지합니다. 컨텍스트 부패를 방지하고, 프로젝트 방향을 강제하며, 세션 간 상태를 유지합니다. **Copilot, Claude, Cursor, Codex, Windsurf, Gemini** 지원. 의존성 제로.
15
15
 
16
16
  > **에코시스템 내 위치.** kode:harness는 **kode:vibe** 에코시스템의 *실행(execution)* 레이어입니다 — 계획 레이어(PRD / 아키텍처 / ARB)와 인프라 레이어(CI / 런타임) 사이에 위치하며, 코딩 중 AI의 방향을 잡아주는 역할을 합니다. 다른 레이어는 선택이며, kode:harness만 독립적으로 쓸 수 있습니다.
17
17
 
@@ -32,6 +32,8 @@ npx @kodevibe/harness init # IDE 선택
32
32
 
33
33
  끝입니다. 이제 AI는 영속적인 메모리, 방향 가드레일, 자기 교정 루프를 갖게 됩니다.
34
34
 
35
+ 처음이라면 [docs/GETTING_STARTED.md](docs/GETTING_STARTED.md)부터 보세요. proof-first 흐름은 [docs/PROOF_LEDGER_WALKTHROUGH.md](docs/PROOF_LEDGER_WALKTHROUGH.md), 팀 도입은 [docs/TEAM_ONBOARDING.md](docs/TEAM_ONBOARDING.md), 설치/제거 안전 경계는 [docs/SAFETY_GUIDE.md](docs/SAFETY_GUIDE.md)에 정리했습니다.
36
+
35
37
  v0.11부터는 **Proof-First Enforcement**가 Common Mode Confidence Loop 위에 추가됩니다. pm은 실행 가능한 proof를 계획해야 하고, lead는 증거 없이 Story를 완료 처리하지 않으며, reviewer는 proof가 없거나 실패하면 커밋 안내 전에 멈추고, state-check는 Proof Ledger 누락을 점검합니다.
36
38
 
37
39
  <details>
@@ -64,6 +66,56 @@ npx @kodevibe/harness init --ide antigravity
64
66
 
65
67
  ---
66
68
 
69
+ ## 기존 설치 업그레이드
70
+
71
+ 이미 kode:harness가 설치된 프로젝트에서 `init`을 다시 실행하면 project state와 agent memory는 보존하고 IDE 설정 파일만 최신 버전으로 갱신합니다. 기본 동작은 데이터 손실 없이 진행되며, 덮어쓴 IDE 설정은 자동 백업됩니다.
72
+
73
+ | 범주 | 기본 동작 | 세부 내용 |
74
+ |------|----------|----------|
75
+ | **State files** | 보존 | `project-state.md`, `failure-patterns.md`, `dependency-map.md`, `features.md`, `project-brief.md` |
76
+ | **Agent memory** | 보존 | solo 모드에서는 `docs/agent-memory/`, team 모드에서는 `.harness/agent-memory/` |
77
+ | **IDE config** | 매 실행 갱신 | `.github/copilot-instructions.md`, `CLAUDE.md`, `.claude/`, `.cursor/`, `.codex/`, `.windsurf/`, `.agents/`, `AGENTS.md` |
78
+ | **백업 위치** | 자동 생성 | 기존 IDE 설정 → `.harness/init-backups/<ISO-timestamp>/...` |
79
+
80
+ ```bash
81
+ npx @kodevibe/harness init --ide <vscode|claude|cursor|codex|windsurf|antigravity> --batch
82
+ ```
83
+
84
+ `--overwrite`는 state files까지 초기화하므로, 손상된 상태 파일을 재생성해야 할 때만 사용하세요.
85
+
86
+ ---
87
+
88
+ ## 안전 제거
89
+
90
+ `init`은 `.harness/install-manifest.json`에 생성 파일, hash, IDE 대상, 모드, 백업 경로를 기록합니다. `uninstall`은 이 manifest를 사용해 kode:harness가 관리한 파일만 제거합니다.
91
+
92
+ ```bash
93
+ # 먼저 미리보기. 파일은 변경되지 않습니다.
94
+ npx @kodevibe/harness uninstall --ide claude --dry-run
95
+
96
+ # 적용. state files와 agent memory는 기본 보존됩니다.
97
+ npx @kodevibe/harness uninstall --ide claude --yes
98
+ ```
99
+
100
+ 안전 규칙:
101
+
102
+ - `docs/project-state.md`, `docs/project-brief.md`, `docs/features.md`, `docs/dependency-map.md`, `docs/failure-patterns.md`, agent memory는 기본 보존됩니다.
103
+ - 기존 `CLAUDE.md` 또는 `AGENTS.md`를 `init`이 덮어쓴 경우 `.harness/init-backups/<timestamp>/...`에서 복원합니다.
104
+ - 설치 후 수정된 managed file은 `--force` 없이는 건드리지 않고 skip합니다.
105
+ - `AGENTS.md`, `.agents/skills/*`처럼 여러 IDE가 공유하는 경로는 다른 active install이 소유 중이면 보존하거나 남은 owner의 내용으로 되돌립니다.
106
+ - 삭제/복원 전 파일은 `.harness/uninstall-backups/<timestamp>/...`에 백업됩니다.
107
+
108
+ ```bash
109
+ npx @kodevibe/harness uninstall --all --dry-run # 감지된 전체 IDE 제거 계획 확인
110
+ npx @kodevibe/harness uninstall --ide vscode --yes # 특정 IDE 표면만 제거
111
+ npx @kodevibe/harness uninstall --ide vscode --yes --purge-state
112
+ npx @kodevibe/harness uninstall --all --yes --purge-state --purge-backups
113
+ ```
114
+
115
+ `--purge-state`는 생성된 state files까지 의도적으로 삭제할 때만 사용하세요. `--purge-state --purge-backups`를 함께 쓰면 active install이 모두 제거된 뒤 `.harness/install-manifest.json`까지 삭제되어 kode:harness 흔적을 남기지 않습니다.
116
+
117
+ ---
118
+
67
119
  ## 문제: 컨텍스트 부패 (Context Rot)
68
120
 
69
121
  AI 코딩 에이전트는 매 세션 제로에서 시작합니다. 세션 3에서는 세션 1의 아키텍처 결정을 잊고, 세션 10에서는 이미 확정된 사항을 다시 논의하며 자신의 이전 작업과 모순됩니다.
@@ -101,9 +153,10 @@ kode:harness는 세 가지 메커니즘으로 해결합니다:
101
153
  | ✅ **Evidence-Gated Progress Board** | 테스트/스모크 증거가 있어야 Planned → Proof Pending → Proven으로 진행 |
102
154
  | 📒 **Proof Ledger** | review/wrap-up 출력에 명령어, 결과, 관찰 증거를 짧게 기록 |
103
155
  | 🔒 **Proof-First Enforcement** | pm/lead/reviewer/state-check가 모호한 계획, 증거 없는 완료, 실패한 테스트, 누락된 proof 기록을 막음 |
156
+ | 🗂️ **Project Docs Bridge** | 원본과 visibility 경계를 보존하며 로컬 docs hub 인덱스 생성 |
104
157
  | 📝 **상태 영속성** | LLM 세션 간 프로젝트 지식을 유지하는 5개 마크다운 파일 |
105
158
  | 🔄 **5개 파이프라인** | 🟢 신규 → 🔵 계속 → 🔴 버그 수정 → 🟡 방향 전환 → 🟣 Crew 기반 |
106
- | 🛠️ **11개 스킬** | 단계별 절차: setup, debug, breakdown, review, pivot, state-check 등 |
159
+ | 🛠️ **12개 스킬** | 단계별 절차: setup, debug, breakdown, docs-bridge, review, pivot, state-check 등 |
107
160
  | 🤖 **4개 에이전트** | 역할 기반 페르소나: pm, reviewer, lead, architect |
108
161
  | ⚠️ **실패 패턴** | 세션 간 같은 실수를 방지하는 프로젝트별 실패 기록 |
109
162
  | 📋 **Decision Log** | 결정의 이유를 기록해 LLM이 확정된 사항을 재논의하지 않도록 방지 |
@@ -116,8 +169,30 @@ kode:harness는 세 가지 메커니즘으로 해결합니다:
116
169
  ```bash
117
170
  npx @kodevibe/harness doctor # 파일 설치 상태 확인
118
171
  npx @kodevibe/harness validate # state 파일에 실제 내용 확인
172
+ npx @kodevibe/harness uninstall --dry-run --ide vscode # 안전 제거 미리보기
173
+ ```
174
+
175
+ 소스 repo maintainer는 결정론 guard와 model-tier 증거 체크도 함께 실행할 수 있습니다:
176
+
177
+ ```bash
178
+ npm run harness:check-pack
179
+ npm run harness:guard:all
180
+ npm run harness:guard:wrap-up -- --quiet
181
+ npm run harness:state-sync
182
+ npm run harness:dependency-scan
183
+ npm run harness:llm-bench:smoke
119
184
  ```
120
185
 
186
+ 릴리즈 증거로 인정하려면 예시 fixture 대신 실제 3개 이상 모델 tier의 sealed result를 `docs/llm-bench-results.json`에 기록한 뒤 실행하세요. 각 run은 `docs/llm-bench-scenarios.json`의 표준 시나리오를 사용해야 하며, `capturedAt`, 일치하는 `promptHash`, `outputHash` 또는 `transcriptHash`가 필요합니다.
187
+
188
+ ```bash
189
+ npm run harness:llm-bench:export
190
+ node scripts/llm-bench.js --collect-results --model-id local-small-2026-06-08 --tier constrained --outputs bench/r10/local-small-2026-06-08 --out docs/llm-bench-results.json --append
191
+ npm run harness:llm-bench:real
192
+ ```
193
+
194
+ 전체 3-model 증거 생성 절차는 `docs/LLM_BENCH_GUIDE.md`를 참고하세요.
195
+
121
196
  ---
122
197
 
123
198
  ## 지원 IDE
@@ -155,6 +230,7 @@ npx @kodevibe/harness validate # state 파일에 실제 내용 확인
155
230
  | **debug** | 4단계 체계적 디버깅 (증거 → 범위축소 → 수정 → 검증) |
156
231
  | **check-impact** | 공유 모듈 수정 전 영향 범위 평가 |
157
232
  | **breakdown** | 기능을 의존성 순서대로 구현 태스크로 분해 |
233
+ | **docs-bridge** | 원본 문서를 보존하면서 repository docs를 wiki/docs hub와 연결할 수 있는 로컬 인덱스 생성 |
158
234
  | **pr-review** | PR 코드 리뷰: 품질, 보안, 방향 정렬 확인 |
159
235
  | **release** | 배포 전 검증 체크리스트 (테스트, state 파일, 보안, 버전) |
160
236
 
@@ -177,6 +253,8 @@ npx @kodevibe/harness validate # state 파일에 실제 내용 확인
177
253
  | **dependency-map.md** | 영향 분석을 위한 모듈 의존성 그래프 ("어떻게"에 대한 기록) |
178
254
  | **failure-patterns.md** | 반복 실수를 방지하는 프로젝트별 실패 패턴 ("주의사항") |
179
255
 
256
+ `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.*` 파일에 둡니다.
257
+
180
258
  ---
181
259
 
182
260
  ## 작동 방식
@@ -274,6 +352,12 @@ npx @kodevibe/harness init --team
274
352
 
275
353
  ---
276
354
 
355
+ ## 문서
356
+
357
+ 패키지 사용자는 이 README에서 시작하면 됩니다. 저장소 maintainer는 GitHub 전용 [docs/wiki-index.md](https://github.com/AIDD-Projects/harness/blob/main/docs/wiki-index.md)를 source repo 문서 지도로 사용합니다. 기여 가이드, 아키텍처 노트, 릴리스 기록, local docs hub 경계를 연결하되, source repo 안에 active harness instruction을 다시 설치하지 않습니다.
358
+
359
+ ---
360
+
277
361
  ## 왜 만들었나
278
362
 
279
363
  기존 AI 코딩 프레임워크는 **AI가 무엇을 하는지** — 코드 생성, 테스트 실행, 배포에 집중합니다. 하지만 진짜 문제는 능력이 아닙니다. **방향**입니다.
@@ -298,6 +382,16 @@ Bootstrap이 `docs/crew/`, `docs/PM/`, `docs/Analyst/`, `docs/ARB/`에서 crew
298
382
 
299
383
  원본 crew 문서는 **절대 수정되지 않습니다**. 인덱스와 트래커만 생성됩니다.
300
384
 
385
+ ### Project Docs Bridge
386
+
387
+ 프로젝트 문서가 README, `docs/`, ADR, runbook, API spec, 기획 산출물로 흩어져 있다면 `docs-bridge`를 실행합니다:
388
+
389
+ ```bash
390
+ > "이 프로젝트 문서를 wiki/docs hub와 연결해줘"
391
+ ```
392
+
393
+ `project-brief.md`에 Project Docs Hub Index를 추가해 각 로컬 원본, 역할, 정제된 hub 대상, sync 방향, visibility, 상태, 검토일을 기록합니다. 원본은 repository에 남깁니다. 외부 hub에 요약이나 링크를 쓰는 작업은 사용자가 명시적으로 요청하고 visibility boundary를 확인한 뒤에만 진행합니다.
394
+
301
395
  ### 다른 프레임워크와의 비교
302
396
 
303
397
  | | BMAD v6.2.2 | gstack v0.15.1 | GSD v1.33.0 | **kode:harness** |
@@ -315,7 +409,7 @@ Bootstrap이 `docs/crew/`, `docs/PM/`, `docs/Analyst/`, `docs/ARB/`에서 crew
315
409
 
316
410
  ## 로드맵
317
411
 
318
- kode:harness는 현재 **v0.11.0** — Common Mode의 proof-first 동작을 강제합니다. Proof Plan은 정확한 명령/체크여야 하고, Story 완료는 증거 없이는 막히며, reviewer는 proof 실패/누락 시 멈추고, state-check는 Proof Ledger 누락을 점검합니다.
412
+ kode:harness는 현재 **v0.11.2** — v0.11의 proof-first uninstall safety 기반 위에 deterministic source-repo guardrail과 manifest-sealed R10 model benchmark workflow를 추가했습니다.
319
413
 
320
414
  | 단계 | 버전 | 상태 | 초점 |
321
415
  |------|------|------|------|
@@ -329,7 +423,10 @@ kode:harness는 현재 **v0.11.0** — Common Mode의 proof-first 동작을 강
329
423
  | **Consistency & Budget** | v0.9.5 | ✅ 완료 | reviewer.md Iron Laws stale 수정, 디스패처 동기화, 경량성 예산 재교정(40K/1500/2500) 및 근거 기록 |
330
424
  | **Drift Guard & Positioning** | v0.9.7 | ✅ 완료 | `harness/`↔`.github/` drift 가드, reviewer working-proof 게이트, kode:vibe 위치 안내, IDE 선택 가이드, project-brief 예시 |
331
425
  | **Confidence Loop** | v0.10.0 | ✅ 완료 | Goal Card, Quiet Navigator, Evidence-Gated Progress Board, Proof Ledger, QA/content 회귀 테스트 |
332
- | **Proof-First Enforcement** | v0.11.0 | ✅ 현재 | Mandatory Proof Plan, lead proof blocker, reviewer proof blocker, state-check Proof Ledger coverage |
426
+ | **Proof-First Enforcement** | v0.11.0 | ✅ 완료 | Mandatory Proof Plan, lead proof blocker, reviewer proof blocker, state-check Proof Ledger coverage |
427
+ | **Uninstall Safety** | v0.11.1 | ✅ 완료 | Manifest 기반 uninstall, state 기본 보존, shared owner 복원, purge cleanup |
428
+ | **Deterministic Release Guard** | v0.11.2 | ✅ 현재 | R1-R10 guard scripts, package-boundary scan, dependency-map scan, R10 manifest-sealed bench workflow |
429
+ | **Docs Bridge** | v0.11.1 | 🧪 Experimental | Project Docs Hub Index, docs-bridge 스킬, visibility 경계를 가진 로컬 docs hub 인덱스 |
333
430
  | **Safety & Branding** | v0.9.6 | ✅ 완료 | init overwrite 백업, 배포 파일 pm 네이밍 정리, LICENSE 브랜딩 정리 |
334
431
  | **Validation** | v1.0 | 🔜 다음 | 실사용 검증, 사용자 피드백 수집 |
335
432
 
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  > **Your AI coding agent forgets everything between sessions. kode:harness makes it remember — goals, decisions, failures, and project direction.**
13
13
 
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.
14
+ Pre-1.0 guardrails for AI coding agents, designed for real project pilots and teams that need direction, proof, and memory across sessions. 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
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
17
 
@@ -32,6 +32,8 @@ npx @kodevibe/harness init # pick your IDE
32
32
 
33
33
  That's it. Your AI now has persistent memory, direction guardrails, and self-correction loops.
34
34
 
35
+ New to kode:harness? Start with [docs/GETTING_STARTED.md](docs/GETTING_STARTED.md), then read [docs/PROOF_LEDGER_WALKTHROUGH.md](docs/PROOF_LEDGER_WALKTHROUGH.md) for the proof-first loop. Teams should also read [docs/TEAM_ONBOARDING.md](docs/TEAM_ONBOARDING.md). For install and uninstall trust boundaries, see [docs/SAFETY_GUIDE.md](docs/SAFETY_GUIDE.md).
36
+
35
37
  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
38
 
37
39
  <details>
@@ -64,6 +66,68 @@ npx @kodevibe/harness init --ide antigravity
64
66
 
65
67
  ---
66
68
 
69
+ ## Upgrade an existing install
70
+
71
+ 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.
72
+
73
+ | Category | Behavior (default) | Details |
74
+ |----------|-------------------|---------|
75
+ | **State files** (preserved) | Not overwritten | `project-state.md`, `failure-patterns.md`, `dependency-map.md`, `features.md`, `project-brief.md` |
76
+ | **Agent memory** (preserved) | Not overwritten | `agent-memory/{architect,lead,pm,reviewer}.md` (under `docs/` in solo mode or `.harness/` in team mode) |
77
+ | **IDE config** (refreshed) | Overwritten each run | `.github/copilot-instructions.md`, `CLAUDE.md`, `.claude/`, `.cursor/`, `.codex/`, `.windsurf/`, `.agents/`, `AGENTS.md` |
78
+ | **Backup location** | Automatic (v0.9.6+) | Previous IDE config files → `.harness/init-backups/<ISO-timestamp>/...` |
79
+
80
+ ### Safe re-init (recommended for version upgrades)
81
+
82
+ ```bash
83
+ npx @kodevibe/harness init --ide <vscode|claude|cursor|codex|windsurf|antigravity> --batch
84
+ ```
85
+
86
+ State files and agent memory remain intact.
87
+
88
+ ### Force overwrite (caution)
89
+
90
+ ```bash
91
+ npx @kodevibe/harness init --ide vscode --batch --overwrite
92
+ ```
93
+
94
+ ⚠️ `--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.
95
+
96
+ ---
97
+
98
+ ## Uninstall Safely
99
+
100
+ 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.
101
+
102
+ ```bash
103
+ # Preview first. No files are changed.
104
+ npx @kodevibe/harness uninstall --ide claude --dry-run
105
+
106
+ # Apply. State files and agent memory are preserved by default.
107
+ npx @kodevibe/harness uninstall --ide claude --yes
108
+ ```
109
+
110
+ Safety rules:
111
+
112
+ - `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.
113
+ - Existing root files such as `CLAUDE.md` or `AGENTS.md` are restored from `.harness/init-backups/<timestamp>/...` when `init` overwrote them.
114
+ - Files modified after install are skipped unless `--force` is used.
115
+ - Shared cross-tool paths such as `AGENTS.md` and `.agents/skills/*` are kept while another active IDE install still owns them.
116
+ - Deleted/restored files are copied to `.harness/uninstall-backups/<timestamp>/...` before changes are applied.
117
+
118
+ Additional options:
119
+
120
+ ```bash
121
+ npx @kodevibe/harness uninstall --all --dry-run # preview all detected IDE installs
122
+ npx @kodevibe/harness uninstall --ide vscode --yes # remove one IDE surface
123
+ npx @kodevibe/harness uninstall --ide vscode --yes --purge-state
124
+ npx @kodevibe/harness uninstall --all --yes --purge-state --purge-backups
125
+ ```
126
+
127
+ 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.
128
+
129
+ ---
130
+
67
131
  ## The Problem: Context Rot
68
132
 
69
133
  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.
@@ -101,9 +165,10 @@ kode:harness solves this with three mechanisms:
101
165
  | ✅ **Evidence-Gated Progress Board** | Stories move from Planned → Proof Pending → Proven only when tests or smoke proof exist |
102
166
  | 📒 **Proof Ledger** | Review and wrap-up outputs record compact proof: command, result, and observation |
103
167
  | 🔒 **Proof-First Enforcement** | pm/lead/reviewer/state-check block vague plans, unproven completion, failing tests, and missing proof records |
168
+ | 🗂️ **Project Docs Bridge** | Creates a local docs hub index while preserving originals and visibility boundaries |
104
169
  | 📝 **State Persistence** | 5 markdown files that persist project knowledge across LLM sessions |
105
170
  | 🔄 **5 Pipelines** | 🟢 New Dev → 🔵 Continue → 🔴 Bug Fix → 🟡 Direction Change → 🟣 Crew-Driven |
106
- | 🛠️ **11 Skills** | Step-by-step procedures: setup, debug, breakdown, review, pivot, state-check, and more |
171
+ | 🛠️ **12 Skills** | Step-by-step procedures: setup, debug, breakdown, docs-bridge, review, pivot, state-check, and more |
107
172
  | 🤖 **4 Agents** | Role-based personas: pm, reviewer, lead, architect |
108
173
  | ⚠️ **Failure Patterns** | Project-specific failure log that prevents repeat mistakes across sessions |
109
174
  | 📋 **Decision Log** | Records why decisions were made so LLMs don't re-debate settled choices |
@@ -116,8 +181,30 @@ kode:harness solves this with three mechanisms:
116
181
  ```bash
117
182
  npx @kodevibe/harness doctor # verify files are installed
118
183
  npx @kodevibe/harness validate # verify state files have real content
184
+ npx @kodevibe/harness uninstall --dry-run --ide vscode # preview safe removal
185
+ ```
186
+
187
+ Source repo maintainers can also run the deterministic guard and model-tier evidence checks:
188
+
189
+ ```bash
190
+ npm run harness:check-pack
191
+ npm run harness:guard:all
192
+ npm run harness:guard:wrap-up -- --quiet
193
+ npm run harness:state-sync
194
+ npm run harness:dependency-scan
195
+ npm run harness:llm-bench:smoke
119
196
  ```
120
197
 
198
+ For release evidence, replace the example fixture with sealed results from at least three real model tiers. Each run must use the standard scenarios in `docs/llm-bench-scenarios.json` and include `capturedAt`, a matching `promptHash`, and `outputHash` or `transcriptHash`.
199
+
200
+ ```bash
201
+ npm run harness:llm-bench:export
202
+ node scripts/llm-bench.js --collect-results --model-id local-small-2026-06-08 --tier constrained --outputs bench/r10/local-small-2026-06-08 --out docs/llm-bench-results.json --append
203
+ npm run harness:llm-bench:real
204
+ ```
205
+
206
+ See `docs/LLM_BENCH_GUIDE.md` for the full three-model evidence workflow.
207
+
121
208
  ## Supported IDEs
122
209
 
123
210
  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:
@@ -147,6 +234,7 @@ All IDEs also get state files (`project-state.md`, `project-brief.md`, `features
147
234
  - **debug** — 4-phase systematic debugging (evidence → scope → fix → verify)
148
235
  - **check-impact** — Assess change blast radius before modifying shared modules
149
236
  - **breakdown** — Decompose features into dependency-ordered implementation tasks
237
+ - **docs-bridge** — Create a local index that can connect repository docs to a wiki/docs hub while preserving originals and visibility boundaries
150
238
  - **pr-review** — Review incoming Pull Requests for quality, security, and direction alignment
151
239
  - **release** — Pre-release validation checklist (tests, state files, security, versioning)
152
240
 
@@ -163,6 +251,8 @@ All IDEs also get state files (`project-state.md`, `project-brief.md`, `features
163
251
  - **dependency-map.md** — Module dependency graph for impact analysis (the "how")
164
252
  - **failure-patterns.md** — Project-specific failure patterns that prevent repeat mistakes (the "watch out")
165
253
 
254
+ `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.
255
+
166
256
  ## How It Works
167
257
 
168
258
  ### 1. Bootstrap (once)
@@ -248,7 +338,7 @@ These 11 rules are enforced across all skills and agents. They form the quality
248
338
 
249
339
  ## Documentation
250
340
 
251
- See [docs/reference.md](docs/reference.md) for detailed descriptions of every skill, agent, rule, and state file.
341
+ Package users can start with this README. Repository maintainers can use the GitHub-only [docs/wiki-index.md](https://github.com/AIDD-Projects/harness/blob/main/docs/wiki-index.md) as the source repo documentation map; it links the contribution guide, architecture notes, release history, and local docs hub boundaries without installing active harness instructions into this repo.
252
342
 
253
343
  ## Why We Built This
254
344
 
@@ -274,6 +364,16 @@ Bootstrap auto-detects crew artifacts in `docs/crew/`, `docs/PM/`, `docs/Analyst
274
364
 
275
365
  Original crew documents are **never modified**. Only the index and tracker are created.
276
366
 
367
+ ### Project Docs Bridge
368
+
369
+ When a project already has useful docs spread across README files, `docs/`, ADRs, runbooks, API specs, or planning artifacts, run `docs-bridge`:
370
+
371
+ ```bash
372
+ > "connect this project's docs to our wiki/docs hub"
373
+ ```
374
+
375
+ 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.
376
+
277
377
  ### How It Compares
278
378
 
279
379
  | | BMAD v6.2.2 | gstack v0.15.1 | GSD v1.33.0 | kode:harness |
@@ -289,7 +389,7 @@ Original crew documents are **never modified**. Only the index and tracker are c
289
389
 
290
390
  ## Roadmap
291
391
 
292
- kode:harness is at **v0.11.0** — makes Common Mode proof-first behavior enforceable: Proof Plans need exact commands/checklists, Story completion is blocked without evidence, reviewer must stop on missing/failing proof, and state-check audits Proof Ledger coverage.
392
+ kode:harness is at **v0.11.2** — adds deterministic source-repo guardrails and a manifest-sealed R10 model benchmark workflow on top of the v0.11 proof-first and uninstall safety foundation.
293
393
 
294
394
  | Phase | Version | Status | Focus |
295
395
  |---|---|---|---|
@@ -303,7 +403,10 @@ kode:harness is at **v0.11.0** — makes Common Mode proof-first behavior enforc
303
403
  | **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 |
304
404
  | **Drift Guard & Positioning** | v0.9.7 | ✅ Done | `harness/`↔`.github/` drift detector, reviewer working-proof gate, kode:vibe positioning, IDE selection guide, project-brief example |
305
405
  | **Confidence Loop** | v0.10.0 | ✅ Done | Goal Card, Quiet Navigator, Evidence-Gated Progress Board, Proof Ledger, QA/content regression tests |
306
- | **Proof-First Enforcement** | v0.11.0 | ✅ Current | Mandatory Proof Plan, lead proof blockers, reviewer proof blockers, state-check Proof Ledger coverage |
406
+ | **Proof-First Enforcement** | v0.11.0 | ✅ Complete | Mandatory Proof Plan, lead proof blockers, reviewer proof blockers, state-check Proof Ledger coverage |
407
+ | **Uninstall Safety** | v0.11.1 | ✅ Complete | Manifest-based uninstall, default state preservation, shared owner restore, purge cleanup |
408
+ | **Deterministic Release Guard** | v0.11.2 | ✅ Current | R1-R10 guard scripts, package-boundary scan, dependency-map scan, R10 manifest-sealed bench workflow |
409
+ | **Docs Bridge** | v0.11.1 | 🧪 Experimental | Project Docs Hub Index, docs-bridge skill, local docs hub index with visibility boundaries |
307
410
  | **Safety & Branding** | v0.9.6 | ✅ Done | init overwrite backups, shipped pm naming cleanup, LICENSE branding cleanup |
308
411
  | **Validation** | v1.0 | 🔜 Next | Real-world project adoption, user feedback collection |
309
412
 
@@ -77,6 +77,7 @@ When the user provides a feature request or development goal in their prompt:
77
77
  - Bug report or error → Start 🔴 Pipeline from `debug`
78
78
  - Structural/design change → Run `architect` first, then `pm`
79
79
  - Direction change → Start 🟡 Pipeline from `pivot`
80
+ - Docs/wiki request → Run `docs-bridge`
80
81
  <!-- CREW_MODE_START -->
81
82
  - Crew artifacts detected (`docs/crew/` exists, `docs/PM/`+`docs/Analyst/`+`docs/ARB/` exist, or user provided design docs) → Start 🟣 Pipeline from `setup`
82
83
  <!-- CREW_MODE_END -->
@@ -128,6 +129,7 @@ When a skill or agent reports STATUS: DONE, use the same block and point to the
128
129
  - docs/dependency-map.md — module dependency graph
129
130
  - docs/features.md — feature registry
130
131
  - docs/project-brief.md — project vision, goals, and non-goals
132
+ - Optional: `## Project Docs Hub Index` maps docs to hubs
131
133
 
132
134
  ## Iron Laws
133
135
 
@@ -52,6 +52,24 @@ _Example (kode:harness)_: Developers and small teams (1–10) using AI coding as
52
52
  - Manual proof: create item → refresh → item persists
53
53
  -->
54
54
 
55
+ ## Project Docs Hub Index
56
+
57
+ <!-- Optional — maintained by the `docs-bridge` skill when the project needs to
58
+ connect local documentation to a wiki/docs hub without copying whole documents.
59
+ Keep originals in place; index repo-relative paths, roles, sync intent,
60
+ sanitized hub aliases, and visibility boundaries here. Machine-specific
61
+ resolver details belong in ignored `.harness/docs-bridge.local.*` files.
62
+
63
+ | Local Source | Role | Hub Target | Sync Direction | Visibility | Status | Last Reviewed |
64
+ |--------------|------|------------|----------------|------------|--------|---------------|
65
+ | README.md | source | local-only | local-source -> hub-summary | public | active | YYYY-MM-DD |
66
+
67
+ Role: source, planning-artifact, decision-record, reference, runbook, state, generated
68
+ Sync Direction: local-source -> hub-summary, hub-reference -> local-index, bidirectional-index-only, local-only
69
+ Visibility: public, team, company-confidential, personal-private, do-not-share
70
+ Status: active, proposed, stale, archived
71
+ -->
72
+
55
73
  <!-- CREW_MODE_START -->
56
74
  ## Crew Artifact Index
57
75
 
@@ -0,0 +1,161 @@
1
+ # Docs Bridge
2
+
3
+ ## Purpose
4
+
5
+ Connect project-local documentation to a wiki, knowledge base, or docs hub through a small, safe index in `docs/project-brief.md`.
6
+ This keeps the repository as the source of truth for project-internal docs while letting a central hub discover, summarize, and link them safely.
7
+
8
+ ## Invoked By
9
+
10
+ - **User** — "connect this project to my wiki", "문서를 위키처럼 정리해줘", "sync docs to Confluence", "Obsidian docs hub"
11
+ - **setup** — after state files are filled, when the user asked for documentation organization or a central docs hub
12
+ - **wrap-up** — when documentation changed and `docs/project-brief.md` already has a Project Docs Hub Index
13
+ - **state-check** — validates the index shape and local path coverage
14
+
15
+ ## When to Apply
16
+
17
+ - A project has several documentation surfaces: README, `docs/`, ADRs, runbooks, API specs, planning artifacts, generated reports
18
+ - The user wants a central wiki/docs hub to know which project docs exist without copying every document into the hub
19
+ - The user wants LLMs to manage internal docs, source cards, meeting notes, or project cards across sessions
20
+ - Before promoting a local document into an external wiki, Confluence space, Obsidian vault, or team knowledge base
21
+
22
+ ## Boundaries
23
+
24
+ - Preserve original documents unless the user explicitly asks to edit them.
25
+ - Do not copy entire READMEs, specs, transcripts, or external pages into the hub. Summarize and link.
26
+ - Treat the hub as a reference layer: path/URL, role, key constraints, status, and visibility are enough.
27
+ - Respect visibility. Private or confidential rows need explicit user confirmation before any external target is written.
28
+ - Do not commit company-private URLs or personal vault paths into OSS templates. Those belong in the user's local project state.
29
+ - Keep tracked index rows sanitized: use `local-only`, `pending`, or a logical hub alias/note title, not machine-specific absolute paths.
30
+ - Store local resolver details such as Obsidian vault paths, personal Wiki names, page IDs, or sync scripts only in ignored local files such as `.harness/docs-bridge.local.json`.
31
+ - Keep uncertain relationships as `proposed`, `needs verification`, or `review required`.
32
+
33
+ ## Procedure
34
+
35
+ ### Phase 1: Discover Documentation Surfaces
36
+
37
+ Read only enough to classify documents. Prefer headers, tables of contents, and first sections before reading full files.
38
+
39
+ Common candidates:
40
+ - Root docs: `README*`, `CHANGELOG*`, `CONTRIBUTING*`, `SECURITY*`, `LICENSE`
41
+ - Project docs: `docs/`, `adr/`, `architecture/`, `design/`, `runbooks/`, `playbooks/`, `operations/`
42
+ - API and contract docs: `openapi*`, `swagger*`, `schema*`, `proto/`, `graphql/`
43
+ - AI/planning docs: planning artifact directories, role-based analysis folders, meeting notes, research notes
44
+ - Existing state: `docs/project-brief.md`, `docs/features.md`, `docs/dependency-map.md`, `docs/project-state.md`
45
+
46
+ Skip generated dependency/build directories: `node_modules/`, `dist/`, `build/`, `.next/`, coverage output, binary archives.
47
+
48
+ ### Phase 2: Classify Each Candidate
49
+
50
+ Use this vocabulary in the index:
51
+
52
+ | Role | Meaning |
53
+ |------|---------|
54
+ | `source` | Original project documentation maintained in this repo |
55
+ | `planning-artifact` | PRD, design, architecture, ARB, roadmap, or external planning output |
56
+ | `decision-record` | ADR, Decision Log, meeting decision, or governance note |
57
+ | `reference` | External guide, source card, example, standard, or adoption candidate |
58
+ | `runbook` | Operational procedure, deployment guide, incident response, support playbook |
59
+ | `state` | kode:harness state file used by LLM agents |
60
+ | `generated` | Derived output that should not be treated as an original source |
61
+
62
+ ### Phase 3: Confirm The Docs Hub Contract
63
+
64
+ Ask at most three questions if the prompt does not already answer them:
65
+
66
+ 1. Hub target: logical hub alias/note title, wiki space/page label, repository path, `pending`, or `local-only`? Do not ask for or write absolute local vault paths into tracked state.
67
+ 2. Visibility boundary: `public`, `team`, `company-confidential`, `personal-private`, or `do-not-share`?
68
+ 3. Sync intent: summarize local docs into the hub, index hub references locally, or only maintain a bidirectional map?
69
+
70
+ If the user skips the hub target, create a local map only and set Hub Target to `local-only`. If the user provides a local filesystem path, write only a sanitized alias or `local-only` in the tracked index and put the concrete path in `.harness/docs-bridge.local.json`.
71
+
72
+ ### Phase 4: Update Project Docs Hub Index
73
+
74
+ Ensure `docs/project-brief.md` contains this section. Add it if missing:
75
+
76
+ ```markdown
77
+ ## Project Docs Hub Index
78
+
79
+ | Local Source | Role | Hub Target | Sync Direction | Visibility | Status | Last Reviewed |
80
+ |--------------|------|------------|----------------|------------|--------|---------------|
81
+ | README.md | source | local-only | local-source -> hub-summary | public | active | YYYY-MM-DD |
82
+ ```
83
+
84
+ Column rules:
85
+ - **Local Source**: exact repository path, or external URL only when no local file exists.
86
+ - **Role**: use the Phase 2 vocabulary.
87
+ - **Hub Target**: `local-only`, `pending`, a sanitized external page label/URL, an Obsidian note title, a Confluence page label, or a logical hub alias. Never store `/Users/...`, `~/...`, `file://...`, drive-letter paths, personal vault paths, or tokens in this tracked table.
88
+ - **Sync Direction**: one of `local-source -> hub-summary`, `hub-reference -> local-index`, `bidirectional-index-only`, `local-only`.
89
+ - **Visibility**: one of `public`, `team`, `company-confidential`, `personal-private`, `do-not-share`.
90
+ - **Status**: `active`, `proposed`, `stale`, or `archived`.
91
+ - **Last Reviewed**: ISO date, or `pending` for proposed rows.
92
+
93
+ ### Phase 5: Promote Safely (Optional)
94
+
95
+ Only when the user asks to update the hub:
96
+
97
+ 1. Create or update a short hub summary that links back to the Local Source.
98
+ 2. Preserve originals. If a local source needs improvement, ask before editing it.
99
+ 3. Record relationships with evidence, for example:
100
+ - `project -> documents -> Local Source`
101
+ - `Local Source -> summarized_by -> Hub Target`
102
+ - `reference -> supports -> project decision`
103
+ 4. Put uncertain claims under `needs verification` or `proposed relationship`.
104
+ 5. Never expose private/confidential rows into a less-restricted hub target without explicit user confirmation.
105
+ 6. For local-only hubs, use `.harness/docs-bridge.local.json` for machine-specific resolver details. Do not write those details into tracked state, README, or OSS templates.
106
+
107
+ ### Phase 6: Verify
108
+
109
+ 1. Run `state-check` after updating `docs/project-brief.md`.
110
+ 2. Confirm local paths in the index exist, unless the row is intentionally external.
111
+ 3. Report any private/confidential row that has an external Hub Target and ask for confirmation before hub writes.
112
+ 4. If documentation files changed, include the proof in the response: paths updated, index rows added/changed, and any hub target touched.
113
+
114
+ ## Output Format
115
+
116
+ ```markdown
117
+ ## Docs Bridge Result
118
+
119
+ ### Index Updates
120
+ - Added/updated rows: N
121
+ - Local-only rows: N
122
+ - External hub rows: N
123
+
124
+ ### Visibility Warnings
125
+ - [none] or [row requiring confirmation]
126
+
127
+ ### Verification
128
+ - state-check: PASS | WARN | FAIL
129
+ - Missing local paths: [none or list]
130
+
131
+ ---
132
+ 🧭 Next Step
133
+ → Goal: Keep project docs discoverable without rewriting originals
134
+ → Evidence: `state-check` plus changed index rows
135
+ → Next: `wrap-up` or [Hub update]
136
+ → Prompt: "문서 허브 인덱스를 기준으로 다음 문서를 요약/연결해줘"
137
+ → Why: The docs map is now explicit enough for future LLM sessions
138
+ → Pipeline: utility skill (docs bridge)
139
+ ---
140
+ ```
141
+
142
+ ## Rules
143
+
144
+ - Use repository-relative paths for Local Source.
145
+ - Prefer summaries and links over copied bodies.
146
+ - Do not modify raw/source docs during discovery.
147
+ - Do not invent hub targets. Use `local-only` or `pending` when unknown.
148
+ - Keep visibility explicit on every row.
149
+ - Keep personal/local Wiki resolver details in ignored `.harness/docs-bridge.local.*` files only.
150
+ - Do not write absolute local paths, personal vault names, private page IDs, tokens, or company-private URLs into tracked templates or public docs.
151
+
152
+ ## Anti-patterns
153
+
154
+ | Anti-pattern | Correct Approach |
155
+ |---|---|
156
+ | Copy every project doc into the central wiki | Index local sources and promote concise summaries only |
157
+ | Treat generated reports as authoritative source | Mark as `generated` and link to the original input when known |
158
+ | Publish private docs to a team/public hub silently | Stop and ask for explicit confirmation |
159
+ | Rewrite READMEs while building the index | Preserve originals; ask before editing source docs |
160
+ | Leave Hub Target blank | Use `local-only` or `pending` with a follow-up |
161
+ | Put `/Users/...`, `~/...`, `file://...`, or personal vault paths in `project-brief.md` | Store only a logical alias in the index and keep resolver details in `.harness/docs-bridge.local.json` |
@@ -13,6 +13,12 @@ One command does everything — no manual editing required.
13
13
  - When state files are outdated and need a refresh
14
14
  - When any agent reports "state files are empty"
15
15
 
16
+ ## Re-running on an existing install (Upgrade flow)
17
+
18
+ On existing installs, default `init` preserves state (`project-state`, `features`, `dependency-map`, `failure-patterns`, `project-brief`, `agent-memory`) and refreshes IDE config (`.github/`, `.claude/`, `.cursor/`, `.codex/`, `.windsurf/`, `.agents/`, `CLAUDE.md`, `AGENTS.md`). Overwritten IDE files are backed up to `.harness/init-backups/<ISO-timestamp>/...`.
19
+
20
+ Use `--overwrite` only to reset corrupted state after backup; then rerun setup to repopulate files.
21
+
16
22
  ## Procedure
17
23
 
18
24
  ### Phase 1: Project Discovery (read-only)
@@ -62,6 +68,10 @@ One command does everything — no manual editing required.
62
68
 
63
69
  **Do NOT modify any code files in this phase.**
64
70
 
71
+ ### Phase 1.4: Project Docs Hub Detection (optional)
72
+
73
+ If user asked for wiki/docs-hub work, record candidate paths from Phase 1 without reading or rewriting full docs. After Phase 3, invoke `docs-bridge` to fill `## Project Docs Hub Index`. Otherwise skip.
74
+
65
75
  <!-- CREW_MODE_START -->
66
76
  ### Phase 1.5: Crew Artifact Detection + Indexing
67
77
 
@@ -115,6 +115,22 @@ If no Validation Tracker → skip.
115
115
  - Done Story with failing proof → FAIL: `[FAIL] Story {S-N-M} proof shows failure but status is done`
116
116
  - In-progress Story without proof → PASS; proof pending is normal
117
117
 
118
+ ### Check 8: Project Docs Hub Index (optional)
119
+
120
+ If `docs/project-brief.md` contains `## Project Docs Hub Index` with non-comment table rows:
121
+
122
+ 1. For each row, verify `Local Source`, `Sync Direction`, `Visibility`, `Status`, and `Last Reviewed` are not blank or `TBD`.
123
+ 2. If `Local Source` is a repository path, verify the file or directory exists. Skip existence checks for URLs and explicitly external rows.
124
+ 3. Verify `Sync Direction` is one of: `local-source -> hub-summary`, `hub-reference -> local-index`, `bidirectional-index-only`, `local-only`.
125
+ 4. Verify `Visibility` is one of: `public`, `team`, `company-confidential`, `personal-private`, `do-not-share`.
126
+ 5. If `Hub Target` contains an absolute/local machine path (`/Users/`, `~/`, `file://`, drive-letter paths, or backslash user paths), WARN: `[WARN] docs hub row contains local machine path — move resolver details to .harness/docs-bridge.local.*`.
127
+ 6. If Visibility is `company-confidential`, `personal-private`, or `do-not-share` and Hub Target is not `local-only` or `pending`, WARN: `[WARN] restricted docs row has external Hub Target — confirm disclosure boundary before hub writes`.
128
+
129
+ Outcomes:
130
+ - Complete rows with existing local paths → PASS
131
+ - Missing local path, blank required column, invalid vocabulary, local machine path leakage, or restricted row with external target → WARN
132
+ - No `Project Docs Hub Index` section or no real rows → skip; this project may not use docs-bridge
133
+
118
134
  ## Output Format
119
135
 
120
136
  ```
@@ -139,6 +155,9 @@ If no Validation Tracker → skip.
139
155
  ### Check 7: Proof Ledger Coverage
140
156
  - {N} done Stories checked / {M} missing proof / {K} failing proof
141
157
 
158
+ ### Check 8: Project Docs Hub Index
159
+ - {N} rows checked / {M} missing paths / {K} visibility warnings / skipped if unused
160
+
142
161
  <!-- CREW_MODE_START -->
143
162
  ### Check 6: Validation Tracker (🟣)
144
163
  - {N} FR references checked / {M} drifted