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.
- package/README.es.md +13 -7
- package/README.fr.md +14 -7
- package/README.ja.md +6 -6
- package/README.md +26 -17
- package/README.zh-CN.md +23 -15
- package/assets/reference-configs/external-tooling.md +11 -5
- package/assets/skill-version.json +6 -2
- package/assets/templates/helpers/workflow-contract.ts +11 -0
- package/assets/workflow-contract.v1.json +67 -0
- package/package.json +4 -2
- package/scripts/check-ci.sh +3 -0
- package/scripts/workflow-contract.ts +11 -0
- package/src/cli/commands/adopt-plan.ts +186 -0
- package/src/cli/commands/global-runtime.ts +6 -10
- package/src/cli/commands/init.ts +9 -16
- package/src/cli/commands/install.ts +19 -6
- package/src/cli/index.ts +124 -37
- package/src/cli/runtime/helper-runner.ts +13 -10
- package/src/cli/tools/codegraph.ts +9 -17
- package/src/core/adoption/gitignore-plan.ts +98 -0
- package/src/core/adoption/helper-wrapper-plan.ts +159 -0
- package/src/core/adoption/manifest-templates.ts +60 -0
- package/src/core/adoption/modes.ts +7 -0
- package/src/core/adoption/operations.ts +126 -0
- package/src/core/adoption/plan.ts +145 -0
- package/src/core/adoption/render.ts +70 -0
- package/src/core/adoption/rollback.ts +62 -0
- package/src/core/adoption/summary.ts +43 -0
- package/src/core/adoption/workflow-contract-asset.ts +12 -0
- package/src/core/adoption/workflow-contract-plan.ts +31 -0
- package/src/effects/fs-transaction.ts +265 -0
- package/src/effects/managed-block.ts +86 -0
- package/src/effects/path-safety.ts +47 -0
- 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.
|
|
60
|
-
|
|
61
|
-
- **
|
|
62
|
-
|
|
63
|
-
|
|
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.
|
|
381
|
-
- Generated workflow stamp: `repo-harness@0.
|
|
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.
|
|
60
|
-
|
|
61
|
-
- **
|
|
62
|
-
|
|
63
|
-
|
|
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.
|
|
385
|
-
- Generated workflow stamp : `repo-harness@0.
|
|
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.
|
|
50
|
+
## 0.6.0 の新機能
|
|
51
51
|
|
|
52
|
-
- **
|
|
53
|
-
- **
|
|
54
|
-
- **
|
|
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.
|
|
355
|
-
- Generated workflow stamp:`repo-harness@0.
|
|
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.
|
|
54
|
-
|
|
55
|
-
- **
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
- **
|
|
59
|
-
`
|
|
60
|
-
|
|
61
|
-
|
|
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
|
|
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
|
|
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
|
|
250
|
+
repo-harness install
|
|
249
251
|
```
|
|
250
252
|
|
|
251
|
-
`
|
|
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
|
|
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.
|
|
459
|
-
- Generated workflow stamp: `repo-harness@0.
|
|
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.
|
|
46
|
+
## 0.6.0 新特性
|
|
47
47
|
|
|
48
|
-
-
|
|
49
|
-
|
|
50
|
-
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
|
209
|
+
repo-harness install
|
|
208
210
|
|
|
209
211
|
# Node/npm;仍要求 Bun 已在 PATH 上,因为 CLI runtime 是 Bun
|
|
210
|
-
npx -y repo-harness
|
|
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
|
|
220
|
+
repo-harness install
|
|
219
221
|
```
|
|
220
222
|
|
|
221
|
-
`
|
|
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
|
|
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.
|
|
414
|
-
- Generated workflow stamp:`repo-harness@0.
|
|
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
|
|
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.
|
|
21
|
-
|
|
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.
|
|
3
|
-
"templateVersion": "0.
|
|
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.
|
|
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"
|
package/scripts/check-ci.sh
CHANGED
|
@@ -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[];
|