repo-harness 0.5.3 → 0.6.0

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.
Files changed (34) hide show
  1. package/README.es.md +13 -7
  2. package/README.fr.md +14 -7
  3. package/README.ja.md +6 -6
  4. package/README.md +26 -17
  5. package/README.zh-CN.md +23 -15
  6. package/assets/reference-configs/external-tooling.md +11 -5
  7. package/assets/skill-version.json +6 -2
  8. package/assets/templates/helpers/workflow-contract.ts +11 -0
  9. package/assets/workflow-contract.v1.json +67 -0
  10. package/package.json +4 -2
  11. package/scripts/check-ci.sh +3 -0
  12. package/scripts/workflow-contract.ts +11 -0
  13. package/src/cli/commands/adopt-plan.ts +186 -0
  14. package/src/cli/commands/global-runtime.ts +6 -10
  15. package/src/cli/commands/init.ts +9 -16
  16. package/src/cli/commands/install.ts +19 -6
  17. package/src/cli/index.ts +124 -37
  18. package/src/cli/runtime/helper-runner.ts +13 -10
  19. package/src/cli/tools/codegraph.ts +9 -17
  20. package/src/core/adoption/gitignore-plan.ts +98 -0
  21. package/src/core/adoption/helper-wrapper-plan.ts +159 -0
  22. package/src/core/adoption/manifest-templates.ts +60 -0
  23. package/src/core/adoption/modes.ts +7 -0
  24. package/src/core/adoption/operations.ts +126 -0
  25. package/src/core/adoption/plan.ts +145 -0
  26. package/src/core/adoption/render.ts +70 -0
  27. package/src/core/adoption/rollback.ts +62 -0
  28. package/src/core/adoption/summary.ts +43 -0
  29. package/src/core/adoption/workflow-contract-asset.ts +12 -0
  30. package/src/core/adoption/workflow-contract-plan.ts +31 -0
  31. package/src/effects/fs-transaction.ts +265 -0
  32. package/src/effects/managed-block.ts +86 -0
  33. package/src/effects/path-safety.ts +47 -0
  34. package/src/effects/process-runner.ts +91 -0
package/README.es.md CHANGED
@@ -56,11 +56,17 @@ En un repositorio adoptado, la superficie se mantiene pequeña:
56
56
  | `tasks/contracts/`, `tasks/reviews/` y `.ai/harness/checks/` | Scope, verificación y evidencia de review para probar que el trabajo terminó. |
57
57
  | `.ai/harness/handoff/` y `tasks/current.md` | Session journal y estado resumible, derivados de workflow artifacts en vez de chat memory. |
58
58
 
59
- ## Novedades en 0.5.3
60
-
61
- - **Runtime updates con versión fija.** `repo-harness update --version <version>` ahora instala el package `repo-harness@<version>` solicitado, en vez de ser interceptado por el shortcut global de versión de la CLI.
62
- - **Version shortcut preservado.** `repo-harness --version` y `repo-harness -V` siguen mostrando la versión de la CLI cuando se usan en el nivel superior.
63
- - **Patch-only surface.** No cambian hook routes, setup checks, security scan ni workflow contracts, salvo el fix del option del comando update.
59
+ ## Novedades en 0.6.0
60
+
61
+ - **Transactional adoption plans.** `repo-harness adopt --dry-run --json` ahora
62
+ emite un operation plan protocol v1 con IDs estables, summary, content hashes
63
+ y rollback metadata.
64
+ - **Bootstrap files gestionados por el manifest.** Los templates iniciales
65
+ `docs/spec.md`, `tasks/todos.md`, `tasks/current.md` y `tasks/lessons.md`
66
+ ahora salen del workflow contract manifest, no de strings locales del planner.
67
+ - **Apply TypeScript experimental.** `repo-harness adopt --experimental-ts-apply`
68
+ puede aplicar el safe operation subset con atomic writes, target locks,
69
+ backups y preflight rejection para boundaries self-host no soportadas.
64
70
 
65
71
  ## Qué hace el producto
66
72
 
@@ -377,8 +383,8 @@ Guards habituales:
377
383
 
378
384
  ## Release actual
379
385
 
380
- - npm package: `repo-harness@0.5.3`
381
- - Generated workflow stamp: `repo-harness@0.5.3+template@0.5.3`
386
+ - npm package: `repo-harness@0.6.0`
387
+ - Generated workflow stamp: `repo-harness@0.6.0+template@0.6.0`
382
388
  - GitHub repository: `Ancienttwo/repo-harness`
383
389
  - Release history: [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
384
390
 
package/README.fr.md CHANGED
@@ -56,11 +56,18 @@ Dans un dépôt adopté, la surface à comprendre reste volontairement réduite
56
56
  | `tasks/contracts/`, `tasks/reviews/` et `.ai/harness/checks/` | Scope, vérification et preuves de review pour démontrer que le travail est terminé. |
57
57
  | `.ai/harness/handoff/` et `tasks/current.md` | Session journal et état resumable dérivés des workflow artifacts plutôt que de la chat memory. |
58
58
 
59
- ## Nouveautés de la 0.5.3
60
-
61
- - **Runtime updates épinglés.** `repo-harness update --version <version>` installe maintenant le package `repo-harness@<version>` demandé au lieu d'être intercepté par le raccourci global de version de la CLI.
62
- - **Version shortcut préservé.** `repo-harness --version` et `repo-harness -V` continuent d'afficher la version CLI lorsqu'ils sont utilisés au niveau supérieur.
63
- - **Patch-only surface.** Aucun changement de hook route, setup check, security scan ou workflow contract au-delà du fix de l'option du command update.
59
+ ## Nouveautés de la 0.6.0
60
+
61
+ - **Transactional adoption plans.** `repo-harness adopt --dry-run --json` émet
62
+ maintenant un operation plan protocol v1 avec IDs stables, summary, content
63
+ hashes et rollback metadata.
64
+ - **Bootstrap files gérés par le manifest.** Les templates initiaux
65
+ `docs/spec.md`, `tasks/todos.md`, `tasks/current.md` et `tasks/lessons.md`
66
+ viennent désormais du workflow contract manifest plutôt que de strings locales
67
+ au planner.
68
+ - **Apply TypeScript expérimental.** `repo-harness adopt --experimental-ts-apply`
69
+ peut appliquer le safe operation subset avec atomic writes, target locks,
70
+ backups et preflight rejection des boundaries self-host non prises en charge.
64
71
 
65
72
  ## Ce que fait le produit
66
73
 
@@ -381,8 +388,8 @@ Guards courants :
381
388
 
382
389
  ## Release actuelle
383
390
 
384
- - npm package : `repo-harness@0.5.3`
385
- - Generated workflow stamp : `repo-harness@0.5.3+template@0.5.3`
391
+ - npm package : `repo-harness@0.6.0`
392
+ - Generated workflow stamp : `repo-harness@0.6.0+template@0.6.0`
386
393
  - GitHub repository : `Ancienttwo/repo-harness`
387
394
  - Release history : [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
388
395
 
package/README.ja.md CHANGED
@@ -47,11 +47,11 @@ Agent に完全な PRD または Sprint を渡せば、あとは review and `nex
47
47
  | `tasks/contracts/`, `tasks/reviews/`, `.ai/harness/checks/` | 作業完了を証明する scope、verification、review evidence。 |
48
48
  | `.ai/harness/handoff/` と `tasks/current.md` | chat memory ではなく workflow artifacts から派生する session journal と resumable status。 |
49
49
 
50
- ## 0.5.3 の新機能
50
+ ## 0.6.0 の新機能
51
51
 
52
- - **Pinned runtime updates。** `repo-harness update --version <version>` は、top-level CLI version shortcut に横取りされず、指定された `repo-harness@<version>` package をインストールするようになりました。
53
- - **Version shortcut preserved。** `repo-harness --version` と `repo-harness -V` は、top level で使った場合は引き続き CLI version を出力します。
54
- - **Patch-only surface。** update command option fix 以外に、hook route、setup check、security scan、workflow contract の動作変更はありません。
52
+ - **Transactional adoption plans。** `repo-harness adopt --dry-run --json` は、安定した ID、summary、content hash、rollback metadata を含む protocol v1 operation plan を出力します。
53
+ - **Manifest-owned bootstrap files。** 初期 `docs/spec.md`、`tasks/todos.md`、`tasks/current.md`、`tasks/lessons.md` templates は、planner-local strings ではなく workflow contract manifest から来るようになりました。
54
+ - **Experimental TypeScript apply。** `repo-harness adopt --experimental-ts-apply` は、atomic writes、target locks、backups、unsupported self-host boundary の preflight rejection を使って safe operation subset を適用できます。
55
55
 
56
56
  ## repo-harness は何をするか
57
57
 
@@ -351,8 +351,8 @@ hook がブロックしたときは、まず terminal の構造化された出
351
351
 
352
352
  ## 現在の Release
353
353
 
354
- - npm package:`repo-harness@0.5.3`
355
- - Generated workflow stamp:`repo-harness@0.5.3+template@0.5.3`
354
+ - npm package:`repo-harness@0.6.0`
355
+ - Generated workflow stamp:`repo-harness@0.6.0+template@0.6.0`
356
356
  - GitHub repository:`Ancienttwo/repo-harness`
357
357
  - Release history:[`docs/CHANGELOG.md`](docs/CHANGELOG.md)
358
358
 
package/README.md CHANGED
@@ -50,15 +50,17 @@ In an adopted repo, the surface area is intentionally small:
50
50
  | `tasks/contracts/`, `tasks/reviews/`, and `.ai/harness/checks/` | Scope, verification, and review evidence for proving the work is done. |
51
51
  | `.ai/harness/handoff/` and `tasks/current.md` | Session journal and resumable status, derived from workflow artifacts instead of chat memory. |
52
52
 
53
- ## What's New in 0.5.3
54
-
55
- - **Pinned runtime updates.** `repo-harness update --version <version>` now
56
- installs the requested `repo-harness@<version>` package instead of being
57
- intercepted by the top-level CLI version shortcut.
58
- - **Version shortcut preserved.** `repo-harness --version` and
59
- `repo-harness -V` still print the CLI version when used at the top level.
60
- - **Patch-only surface.** No hook route, setup check, security scan, or workflow
61
- contract behavior changes beyond the update command option fix.
53
+ ## What's New in 0.6.0
54
+
55
+ - **Transactional adoption plans.** `repo-harness adopt --dry-run --json` now
56
+ emits a protocol v1 operation plan with stable IDs, summaries, content hashes,
57
+ and rollback metadata.
58
+ - **Manifest-owned bootstrap files.** The initial `docs/spec.md`,
59
+ `tasks/todos.md`, `tasks/current.md`, and `tasks/lessons.md` templates now
60
+ come from the workflow contract manifest instead of planner-local strings.
61
+ - **Experimental TypeScript apply.** `repo-harness adopt --experimental-ts-apply`
62
+ can apply the safe operation subset with atomic writes, target locks, backups,
63
+ and preflight rejection for unsupported self-host boundaries.
62
64
 
63
65
  ## What repo-harness Does
64
66
 
@@ -234,10 +236,10 @@ irm https://raw.githubusercontent.com/Ancienttwo/repo-harness/main/install.ps1 |
234
236
  ```bash
235
237
  # Bun
236
238
  bun add -g repo-harness
237
- repo-harness init
239
+ repo-harness install
238
240
 
239
241
  # Node/npm, with Bun already on PATH because the CLI runs on Bun
240
- npx -y repo-harness init
242
+ npx -y repo-harness install
241
243
  ```
242
244
 
243
245
  </details>
@@ -245,14 +247,15 @@ npx -y repo-harness init
245
247
  ### 2. Bootstrap the host runtime once
246
248
 
247
249
  ```bash
248
- repo-harness init
250
+ repo-harness install
249
251
  ```
250
252
 
251
- `init` is the first-run global bootstrap path. It installs the current npm
253
+ `install` is the first-run global bootstrap path. It installs the current npm
252
254
  package as the global CLI, refreshes repo-harness skill aliases, installs
253
255
  user-level hook adapters, configures Waza runtime skills, persists a brain root
254
256
  under `~/.repo-harness/config.json`, and configures CodeGraph MCP. It does not
255
- apply repo-local workflow files to the current directory.
257
+ apply repo-local workflow files to the current directory. `repo-harness init`
258
+ remains a compatibility alias for existing scripts.
256
259
 
257
260
  For an Agent-owned, read-only bootstrap audit, run `npx -y repo-harness setup
258
261
  check --json` or add `--check-updates` for version advisories. `setup check` is
@@ -265,11 +268,17 @@ optional command, and verification surface for the Agent to execute deliberately
265
268
 
266
269
  ```bash
267
270
  # First machine bootstrap after installing the CLI: skills, host adapters, Waza, brain, CodeGraph.
268
- repo-harness init
271
+ repo-harness install
269
272
 
270
273
  # Refresh user-level CLI/runtime pieces after a package update.
271
274
  repo-harness update
272
275
 
276
+ # Remove repo-harness managed host adapters without deleting sibling hooks or third-party tools.
277
+ repo-harness uninstall
278
+
279
+ # Install only the host hook adapters, preserving the older adapter-only surface.
280
+ repo-harness install --target both --location global
281
+
273
282
  # Ask for read-only repair guidance without writing files.
274
283
  repo-harness update --check
275
284
 
@@ -455,8 +464,8 @@ Most common guards:
455
464
 
456
465
  ## Current Release
457
466
 
458
- - npm package: `repo-harness@0.5.3`
459
- - Generated workflow stamp: `repo-harness@0.5.3+template@0.5.3`
467
+ - npm package: `repo-harness@0.6.0`
468
+ - Generated workflow stamp: `repo-harness@0.6.0+template@0.6.0`
460
469
  - GitHub repository: `Ancienttwo/repo-harness`
461
470
  - Release history: [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
462
471
 
package/README.zh-CN.md CHANGED
@@ -43,14 +43,16 @@ handoff、检查结果和 review evidence 写回项目文件,让下一个 agen
43
43
  | `tasks/contracts/`、`tasks/reviews/`、`.ai/harness/checks/` | 证明完成所需的 scope、verification 和 review evidence。 |
44
44
  | `.ai/harness/handoff/` 和 `tasks/current.md` | session journal 与可恢复状态,从 workflow artifacts 派生,而不是依赖聊天记忆。 |
45
45
 
46
- ## 0.5.3 新特性
46
+ ## 0.6.0 新特性
47
47
 
48
- - **可 pin 的 runtime update。** `repo-harness update --version <version>` 现在会
49
- 安装指定的 `repo-harness@<version>` package,不再被顶层 CLI version shortcut 抢占。
50
- - **保留 version shortcut。** `repo-harness --version` 和 `repo-harness -V` 在顶层使用时
51
- 仍然输出 CLI version。
52
- - **Patch-only surface。** 除 update command option 修复外,hook route、setup check、
53
- security scan 和 workflow contract 行为不变。
48
+ - **事务型 adoption plan。** `repo-harness adopt --dry-run --json` 现在输出
49
+ protocol v1 operation plan,包含稳定 ID、summary、content hash 和 rollback metadata。
50
+ - **Manifest-owned bootstrap 文件。** 初始 `docs/spec.md`、`tasks/todos.md`、
51
+ `tasks/current.md`、`tasks/lessons.md` 模板改由 workflow contract manifest 管理,
52
+ 不再放在 planner 本地字符串里。
53
+ - **实验性 TypeScript apply。** `repo-harness adopt --experimental-ts-apply`
54
+ 可以执行 safe operation subset,并使用 atomic write、target lock、backup 和
55
+ unsupported self-host boundary preflight。
54
56
 
55
57
  ## 产品做什么
56
58
 
@@ -204,10 +206,10 @@ irm https://raw.githubusercontent.com/Ancienttwo/repo-harness/main/install.ps1 |
204
206
  ```bash
205
207
  # Bun
206
208
  bun add -g repo-harness
207
- repo-harness init
209
+ repo-harness install
208
210
 
209
211
  # Node/npm;仍要求 Bun 已在 PATH 上,因为 CLI runtime 是 Bun
210
- npx -y repo-harness init
212
+ npx -y repo-harness install
211
213
  ```
212
214
 
213
215
  </details>
@@ -215,13 +217,13 @@ npx -y repo-harness init
215
217
  ### 2. 先做一次 host runtime bootstrap
216
218
 
217
219
  ```bash
218
- repo-harness init
220
+ repo-harness install
219
221
  ```
220
222
 
221
- `init` 是首次全局引导入口。它把当前 npm 包安装成全局 CLI,刷新 repo-harness
223
+ `install` 是首次全局引导入口。它把当前 npm 包安装成全局 CLI,刷新 repo-harness
222
224
  skill aliases,安装 user-level hook adapters,配置 Waza runtime skills,把 brain
223
225
  root 持久化到 `~/.repo-harness/config.json`,并配置 CodeGraph MCP。它不会把当前目录
224
- 默认迁移成 repo-local workflow。
226
+ 默认迁移成 repo-local workflow。`repo-harness init` 保留为兼容 alias,给已有脚本用。
225
227
 
226
228
  如果要让 Agent 做只读 bootstrap audit,运行 `npx -y repo-harness setup check
227
229
  --json`;需要版本提示时加 `--check-updates`。`setup check` 不是 runtime hook:
@@ -233,11 +235,17 @@ targets、可选 command 和 verification 的 `agent_actions`,由 Agent 再显
233
235
 
234
236
  ```bash
235
237
  # 安装 CLI 后做首次机器级 bootstrap:skills、host adapters、Waza、brain、CodeGraph。
236
- repo-harness init
238
+ repo-harness install
237
239
 
238
240
  # 包更新后刷新 user-level CLI/runtime。
239
241
  repo-harness update
240
242
 
243
+ # 移除 repo-harness 管理的 host adapters,不删除 sibling hooks 或第三方工具。
244
+ repo-harness uninstall
245
+
246
+ # 只安装 host hook adapters,保留旧版 adapter-only surface。
247
+ repo-harness install --target both --location global
248
+
241
249
  # 只读检查需要 agent 修复什么,不写文件。
242
250
  repo-harness update --check
243
251
 
@@ -410,8 +418,8 @@ hook block 工作时,先看 terminal 里的结构化输出。核心字段是
410
418
 
411
419
  ## 当前 Release
412
420
 
413
- - npm package:`repo-harness@0.5.3`
414
- - Generated workflow stamp:`repo-harness@0.5.3+template@0.5.3`
421
+ - npm package:`repo-harness@0.6.0`
422
+ - Generated workflow stamp:`repo-harness@0.6.0+template@0.6.0`
415
423
  - GitHub repository:`Ancienttwo/repo-harness`
416
424
  - Release history:[`docs/CHANGELOG.md`](docs/CHANGELOG.md)
417
425
 
@@ -14,11 +14,17 @@ source, while `~/.agents/skills` is only the skills CLI staging/cache path used
14
14
  to receive upstream `tw93/Waza` updates before syncing verified copies into
15
15
  Codex.
16
16
 
17
- `repo-harness init` is allowed to bootstrap the workflow-owned global runtime in
18
- one pass: the `repo-harness` CLI, repo-harness runtime aliases, user-level
17
+ `repo-harness install` is allowed to bootstrap the workflow-owned global runtime
18
+ in one pass: the `repo-harness` CLI, repo-harness runtime aliases, user-level
19
19
  Codex/Claude hook adapters, Waza (`think`, `hunt`, `check`, `health`), brain
20
- root persistence, Mermaid, and CodeGraph CLI/MCP configuration. It must not
21
- silently install unrelated toolchains or Claude marketplace plugins.
20
+ root persistence, Mermaid, and CodeGraph CLI/MCP configuration.
21
+ `repo-harness init` remains a compatibility alias for existing automation. The
22
+ bootstrap path must not silently install unrelated toolchains or Claude
23
+ marketplace plugins.
24
+
25
+ `repo-harness uninstall` removes repo-harness managed Codex/Claude hook
26
+ adapters. It intentionally does not uninstall Waza, Mermaid, CodeGraph, gbrain,
27
+ brain config, package-manager globals, or user-authored sibling hook entries.
22
28
 
23
29
  `repo-harness update` refreshes only the CLI and repo-harness-owned user-level
24
30
  runtime by default. Third-party tooling and CodeGraph registration stay
@@ -30,7 +36,7 @@ The cross-review skills are **harness-owned and self-contained** — their sourc
30
36
  lives in `assets/skills/<skill>/` and they wrap the peer CLI (`codex exec` /
31
37
  `claude -p`) in a read-only sandbox with no gstack dependency, so installing them
32
38
  is a workflow-owned runtime concern, not an unrelated toolchain. They install
33
- host-aware during `repo-harness init` and explicit external-skill refreshes:
39
+ host-aware during `repo-harness install`/`init` and explicit external-skill refreshes:
34
40
  `codex-review` only into `~/.claude/skills` (a Claude session asking
35
41
  Codex for an independent review) and `claude-review` only into `~/.codex/skills`
36
42
  (a Codex session asking Claude). When gstack is present, its `/codex` and
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.5.3",
3
- "templateVersion": "0.5.3",
2
+ "version": "0.6.0",
3
+ "templateVersion": "0.6.0",
4
4
  "skillName": "repo-harness",
5
5
  "contractId": "tasks-first-harness-v1",
6
6
  "retiredAliases": [
@@ -139,6 +139,10 @@
139
139
  {
140
140
  "version": "0.5.3",
141
141
  "description": "Fixes repo-harness update --version so the update command can install a pinned package version without being intercepted by the top-level CLI version flag"
142
+ },
143
+ {
144
+ "version": "0.6.0",
145
+ "description": "Adds the transactional adoption planner foundation with protocol v1 dry-run plans, manifest-owned bootstrap templates, experimental TypeScript apply, atomic writes, and rollback metadata"
142
146
  }
143
147
  ],
144
148
  "generatedProjectStamp": {
@@ -75,12 +75,23 @@ export type WorkflowContract = {
75
75
  };
76
76
  documents: {
77
77
  spec: string;
78
+ currentStatus?: string;
78
79
  planDirectory: string;
79
80
  taskChecklist?: string;
80
81
  deferredGoalLedger?: string;
81
82
  researchReportsDirectory: string;
82
83
  lessonsLog: string;
83
84
  };
85
+ adoptionTemplates?: {
86
+ files?: Record<
87
+ string,
88
+ {
89
+ document: string;
90
+ reason: string;
91
+ lines: string[];
92
+ }
93
+ >;
94
+ };
84
95
  migrations: {
85
96
  legacyVersions: string[];
86
97
  legacyPaths: string[];
@@ -266,12 +266,79 @@
266
266
  },
267
267
  "documents": {
268
268
  "spec": "docs/spec.md",
269
+ "currentStatus": "tasks/current.md",
269
270
  "planDirectory": "plans",
270
271
  "deferredGoalLedger": "tasks/todos.md",
271
272
  "implementationNotesDirectory": "tasks/notes",
272
273
  "lessonsLog": "tasks/lessons.md",
273
274
  "researchReportsDirectory": "docs/researches"
274
275
  },
276
+ "adoptionTemplates": {
277
+ "files": {
278
+ "spec": {
279
+ "document": "spec",
280
+ "reason": "Create deterministic product spec placeholder when missing",
281
+ "lines": [
282
+ "# Product Spec: {{repoName}}",
283
+ "",
284
+ "> **Status**: Draft",
285
+ "",
286
+ "Describe the product intent, users, workflows, acceptance scenarios, and constraints before implementation.",
287
+ ""
288
+ ]
289
+ },
290
+ "deferredGoalLedger": {
291
+ "document": "deferredGoalLedger",
292
+ "reason": "Create deferred-goal ledger when missing",
293
+ "lines": [
294
+ "# Deferred Goal Ledger",
295
+ "",
296
+ "> **Status**: Backlog",
297
+ "> **Updated**: (initial)",
298
+ "> **Scope**: Medium/long-term goals deferred from active plan execution",
299
+ "",
300
+ "Current plan tasks live in the active plan's `## Task Breakdown`.",
301
+ "Do not duplicate that execution checklist here. Record only work intentionally deferred beyond this slice, with the tradeoff and revisit trigger.",
302
+ "",
303
+ "## Deferred Goals",
304
+ "",
305
+ "| Goal | Why Deferred | Tradeoff | Revisit Trigger |",
306
+ "|------|--------------|----------|-----------------|",
307
+ "| (none) | No deferred medium/long-term goal recorded yet. | Keep the first sprint bounded. | Add a row when a real follow-up is postponed. |",
308
+ ""
309
+ ]
310
+ },
311
+ "currentStatus": {
312
+ "document": "currentStatus",
313
+ "reason": "Create tracked current-status snapshot when missing",
314
+ "lines": [
315
+ "# Current Status Snapshot",
316
+ "",
317
+ "<!-- generated-by: repo-harness refresh-current-status v1 -->",
318
+ "",
319
+ "> **Status**: Idle",
320
+ "> **Reason**: repo-harness adoption bootstrap",
321
+ "",
322
+ "This file is a tracked mainline snapshot derived from repo artifacts. It is not a live lock, not a kanban board, and not an implementation gate.",
323
+ ""
324
+ ]
325
+ },
326
+ "lessonsLog": {
327
+ "document": "lessonsLog",
328
+ "reason": "Create correction-derived lessons ledger when missing",
329
+ "lines": [
330
+ "# Lessons",
331
+ "",
332
+ "Correction-derived rules that should influence future repo work.",
333
+ "",
334
+ "## Active Lessons",
335
+ "",
336
+ "- (none yet)",
337
+ ""
338
+ ]
339
+ }
340
+ }
341
+ },
275
342
  "migrations": {
276
343
  "legacyVersions": [
277
344
  "pre-tasks-first",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "repo-harness",
3
- "version": "0.5.3",
3
+ "version": "0.6.0",
4
4
  "description": "Installs, migrates, audits, and repairs repo-local agentic development harnesses",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -32,6 +32,7 @@
32
32
  "benchmark:skills": "bun scripts/run-skill-evals.ts",
33
33
  "test": "bun test",
34
34
  "test:coverage": "bun test --coverage",
35
+ "check:type": "tsc --noEmit",
35
36
  "check:ci": "bash scripts/check-ci.sh",
36
37
  "check:release": "bash scripts/check-npm-release.sh",
37
38
  "check:brain-manifest": "bash scripts/check-brain-manifest.sh",
@@ -46,7 +47,8 @@
46
47
  },
47
48
  "devDependencies": {
48
49
  "@colbymchenry/codegraph": "1.0.1",
49
- "@types/bun": "latest"
50
+ "@types/bun": "latest",
51
+ "typescript": "^6.0.3"
50
52
  },
51
53
  "dependencies": {
52
54
  "commander": "^14.0.3"
@@ -10,6 +10,9 @@ BUN_TEST_MAX_CONCURRENCY="${BUN_TEST_MAX_CONCURRENCY:-4}"
10
10
  echo "[ci] install"
11
11
  bun install --frozen-lockfile
12
12
 
13
+ echo "[ci] typecheck"
14
+ bun run check:type
15
+
13
16
  echo "[ci] tests"
14
17
  bun test --timeout "$BUN_TEST_TIMEOUT_MS" --max-concurrency "$BUN_TEST_MAX_CONCURRENCY"
15
18
 
@@ -75,12 +75,23 @@ export type WorkflowContract = {
75
75
  };
76
76
  documents: {
77
77
  spec: string;
78
+ currentStatus?: string;
78
79
  planDirectory: string;
79
80
  taskChecklist?: string;
80
81
  deferredGoalLedger?: string;
81
82
  researchReportsDirectory: string;
82
83
  lessonsLog: string;
83
84
  };
85
+ adoptionTemplates?: {
86
+ files?: Record<
87
+ string,
88
+ {
89
+ document: string;
90
+ reason: string;
91
+ lines: string[];
92
+ }
93
+ >;
94
+ };
84
95
  migrations: {
85
96
  legacyVersions: string[];
86
97
  legacyPaths: string[];