coding-agent-harness 1.0.1 → 1.0.4

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 (262) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/CONTRIBUTING.md +98 -0
  3. package/README.en-US.md +14 -0
  4. package/README.md +230 -80
  5. package/README.zh-CN.md +290 -0
  6. package/SKILL.md +132 -198
  7. package/docs-release/README.md +80 -9
  8. package/docs-release/architecture/overview.md +298 -28
  9. package/docs-release/architecture/overview.zh-CN.md +292 -0
  10. package/docs-release/assets/dashboard-overview.png +0 -0
  11. package/docs-release/assets/harness-architecture.svg +163 -0
  12. package/docs-release/assets/harness-workflow.svg +64 -0
  13. package/docs-release/guides/agent-installation.en-US.md +237 -0
  14. package/docs-release/guides/agent-installation.md +149 -27
  15. package/docs-release/guides/contributing.md +100 -0
  16. package/docs-release/guides/contributing.zh-CN.md +99 -0
  17. package/docs-release/guides/document-audience-and-surfaces.en-US.md +113 -0
  18. package/docs-release/guides/document-audience-and-surfaces.md +113 -0
  19. package/docs-release/guides/full-legacy-migration-subagent-strategy.md +334 -0
  20. package/docs-release/guides/full-legacy-migration-subagent-strategy.zh-CN.md +334 -0
  21. package/docs-release/guides/legacy-migration-agent-prompt.md +373 -0
  22. package/docs-release/guides/legacy-migration-agent-prompt.zh-CN.md +350 -0
  23. package/docs-release/guides/migration-playbook.en-US.md +324 -0
  24. package/docs-release/guides/migration-playbook.md +328 -0
  25. package/docs-release/guides/parent-control-repository-pattern.en-US.md +254 -0
  26. package/docs-release/guides/parent-control-repository-pattern.md +254 -0
  27. package/docs-release/guides/preset-development.md +214 -0
  28. package/docs-release/guides/repository-operating-models.en-US.md +197 -0
  29. package/docs-release/guides/repository-operating-models.md +197 -0
  30. package/docs-release/guides/task-state-machine.en-US.md +207 -0
  31. package/docs-release/guides/task-state-machine.md +214 -0
  32. package/docs-release/intl/README.md +15 -0
  33. package/docs-release/intl/de-DE.md +18 -0
  34. package/docs-release/intl/en-US.md +18 -0
  35. package/docs-release/intl/es-ES.md +18 -0
  36. package/docs-release/intl/fr-FR.md +18 -0
  37. package/docs-release/intl/ja-JP.md +18 -0
  38. package/docs-release/intl/ko-KR.md +18 -0
  39. package/docs-release/intl/zh-CN.md +18 -0
  40. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/brief.md +13 -0
  41. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/findings.md +7 -0
  42. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/lesson_candidates.md +24 -0
  43. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/progress.md +1 -1
  44. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/task_plan.md +4 -2
  45. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/{visual_roadmap.md → visual_map.md} +9 -1
  46. package/package.json +10 -3
  47. package/presets/legacy-migration/checks/preset-check.mjs +3 -0
  48. package/presets/legacy-migration/preset.yaml +134 -0
  49. package/presets/legacy-migration/scripts/plan-work-queue.mjs +4 -0
  50. package/presets/legacy-migration/scripts/scaffold-task-contracts.mjs +4 -0
  51. package/presets/legacy-migration/templates/execution_strategy.append.md +18 -0
  52. package/presets/legacy-migration/templates/findings.seed.md +17 -0
  53. package/presets/legacy-migration/templates/review.seed.md +12 -0
  54. package/presets/legacy-migration/templates/task_plan.append.md +9 -0
  55. package/presets/legacy-migration/templates/visual_map.append.md +12 -0
  56. package/presets/legacy-migration/workbench/dashboard-panels.yaml +2 -0
  57. package/presets/legacy-migration/workbench/migration-queue.schema.json +23 -0
  58. package/presets/lesson-sedimentation/preset.yaml +23 -0
  59. package/presets/lesson-sedimentation/templates/prompt.md +23 -0
  60. package/presets/module/preset.yaml +25 -0
  61. package/presets/module/templates/execution_strategy.append.md +8 -0
  62. package/presets/module/templates/task_plan.append.md +17 -0
  63. package/presets/standard-task/preset.yaml +31 -0
  64. package/presets/standard-task/templates/task_plan.append.md +7 -0
  65. package/references/adversarial-review-standard.md +2 -2
  66. package/references/agents-md-pattern.md +5 -5
  67. package/references/delivery-operating-model-standard.md +3 -3
  68. package/references/docs-directory-standard.md +53 -10
  69. package/references/external-source-intake-standard.md +75 -0
  70. package/references/harness-ledger.md +53 -94
  71. package/references/legacy-12-phase-bootstrap.md +41 -0
  72. package/references/lessons-governance.md +100 -88
  73. package/references/module-parallel-standard.md +14 -14
  74. package/references/planning-loop.md +51 -7
  75. package/references/project-onboarding-audit.md +10 -0
  76. package/references/pull-request-standard.md +118 -0
  77. package/references/repo-governance-standard.md +12 -1
  78. package/references/review-routing-standard.md +7 -1
  79. package/references/ssot-governance.md +67 -59
  80. package/references/taskr-gap-analysis.md +600 -0
  81. package/references/testing-standard.md +50 -0
  82. package/references/walkthrough-closeout.md +10 -9
  83. package/scripts/check-harness.mjs +111 -331
  84. package/scripts/commands/dashboard-command.mjs +67 -0
  85. package/scripts/commands/migration-command.mjs +96 -0
  86. package/scripts/commands/preset-command.mjs +73 -0
  87. package/scripts/commands/task-command.mjs +327 -0
  88. package/scripts/harness.mjs +106 -20
  89. package/scripts/lib/capability-registry.mjs +591 -0
  90. package/scripts/lib/check-module-parallel.mjs +237 -0
  91. package/scripts/lib/check-profiles.mjs +418 -0
  92. package/scripts/lib/check-task-contracts.mjs +47 -0
  93. package/scripts/lib/core-shared.mjs +196 -0
  94. package/scripts/lib/dashboard-data.mjs +412 -0
  95. package/scripts/lib/dashboard-workbench.mjs +257 -0
  96. package/scripts/lib/dashboard-writer.mjs +107 -4
  97. package/scripts/lib/git-status-summary.mjs +46 -0
  98. package/scripts/lib/governance-index-generator.mjs +174 -0
  99. package/scripts/lib/governance-sync.mjs +514 -0
  100. package/scripts/lib/governance-table-boundary.mjs +175 -0
  101. package/scripts/lib/harness-core.mjs +15 -1318
  102. package/scripts/lib/lesson-maintenance.mjs +152 -0
  103. package/scripts/lib/markdown-utils.mjs +158 -0
  104. package/scripts/lib/migration-planner.mjs +478 -0
  105. package/scripts/lib/migration-support.mjs +312 -0
  106. package/scripts/lib/preset-audit-contracts.mjs +37 -0
  107. package/scripts/lib/preset-engine.mjs +497 -0
  108. package/scripts/lib/preset-registry.mjs +627 -0
  109. package/scripts/lib/preset-resource-contracts.mjs +83 -0
  110. package/scripts/lib/review-confirm-git-gate.mjs +248 -0
  111. package/scripts/lib/status-dashboard-renderer.mjs +102 -0
  112. package/scripts/lib/subagent-authorization-audit.mjs +196 -0
  113. package/scripts/lib/task-completion-consistency.mjs +16 -0
  114. package/scripts/lib/task-index.mjs +93 -0
  115. package/scripts/lib/task-lesson-candidates.mjs +242 -0
  116. package/scripts/lib/task-lesson-sedimentation.mjs +326 -0
  117. package/scripts/lib/task-lifecycle/review-confirm.mjs +101 -0
  118. package/scripts/lib/task-lifecycle/review-gates.mjs +70 -0
  119. package/scripts/lib/task-lifecycle/text-utils.mjs +24 -0
  120. package/scripts/lib/task-lifecycle.mjs +649 -0
  121. package/scripts/lib/task-review-model.mjs +469 -0
  122. package/scripts/lib/task-scanner.mjs +576 -0
  123. package/scripts/lib/task-tombstone-commands.mjs +140 -0
  124. package/scripts/postinstall.mjs +14 -0
  125. package/skills/preset-creator/SKILL.md +179 -0
  126. package/skills/preset-creator/references/complex-task-skeleton/README.md +31 -0
  127. package/skills/preset-creator/references/complex-task-skeleton/artifacts/INDEX.md +12 -0
  128. package/skills/preset-creator/references/complex-task-skeleton/brief.md +32 -0
  129. package/skills/preset-creator/references/complex-task-skeleton/execution_strategy.md +71 -0
  130. package/skills/preset-creator/references/complex-task-skeleton/findings.md +24 -0
  131. package/skills/preset-creator/references/complex-task-skeleton/lesson_candidates.md +70 -0
  132. package/skills/preset-creator/references/complex-task-skeleton/long-running-task-contract.md +76 -0
  133. package/skills/preset-creator/references/complex-task-skeleton/progress.md +33 -0
  134. package/skills/preset-creator/references/complex-task-skeleton/references/INDEX.md +13 -0
  135. package/skills/preset-creator/references/complex-task-skeleton/review.md +107 -0
  136. package/skills/preset-creator/references/complex-task-skeleton/task_plan.md +111 -0
  137. package/{templates/planning/visual_roadmap.md → skills/preset-creator/references/complex-task-skeleton/visual_map.md} +24 -2
  138. package/skills/preset-creator/references/preset-package-skeleton.md +296 -0
  139. package/templates/AGENTS.md.template +51 -36
  140. package/templates/architecture/Architecture-SSoT.md +21 -0
  141. package/templates/architecture/README.md +49 -0
  142. package/templates/architecture/critical-flows.md +22 -0
  143. package/templates/architecture/local-repo-context.md +20 -0
  144. package/templates/architecture/service-catalog.md +17 -0
  145. package/templates/architecture/services/service-template.md +31 -0
  146. package/templates/architecture/system-map.md +22 -0
  147. package/templates/dashboard/assets/app-src/00-state.js +42 -0
  148. package/templates/dashboard/assets/app-src/10-router.js +77 -0
  149. package/templates/dashboard/assets/app-src/20-overview.js +241 -0
  150. package/templates/dashboard/assets/app-src/30-tasks.js +409 -0
  151. package/templates/dashboard/assets/app-src/35-task-detail.js +246 -0
  152. package/templates/dashboard/assets/app-src/40-modules.js +58 -0
  153. package/templates/dashboard/assets/app-src/45-review.js +347 -0
  154. package/templates/dashboard/assets/app-src/50-migration.js +183 -0
  155. package/templates/dashboard/assets/app-src/60-shared.js +61 -0
  156. package/templates/dashboard/assets/app-src/90-bindings.js +524 -0
  157. package/templates/dashboard/assets/app.css +3107 -300
  158. package/templates/dashboard/assets/app.css.manifest.json +9 -0
  159. package/templates/dashboard/assets/app.js +2068 -306
  160. package/templates/dashboard/assets/app.manifest.json +12 -0
  161. package/templates/dashboard/assets/css-src/00-foundation.css +342 -0
  162. package/templates/dashboard/assets/css-src/10-panels-flow.css +236 -0
  163. package/templates/dashboard/assets/css-src/20-briefs-controls.css +398 -0
  164. package/templates/dashboard/assets/css-src/30-task-index.css +739 -0
  165. package/templates/dashboard/assets/css-src/35-review-workspace.css +507 -0
  166. package/templates/dashboard/assets/css-src/40-detail-modules-migration.css +427 -0
  167. package/templates/dashboard/assets/css-src/50-responsive-overrides.css +551 -0
  168. package/templates/dashboard/assets/i18n.js +531 -44
  169. package/templates/dashboard/assets/mermaid-renderer.js +58 -8
  170. package/templates/development/README.md +52 -0
  171. package/templates/development/codebase-map.md +11 -0
  172. package/templates/development/cross-repo-debugging.md +18 -0
  173. package/templates/development/external-context/service-template.md +33 -0
  174. package/templates/development/external-source-packs/README.md +24 -0
  175. package/templates/development/external-source-packs/digest-template.md +28 -0
  176. package/templates/development/local-setup.md +16 -0
  177. package/templates/development/stubs-and-mocks.md +11 -0
  178. package/templates/integrations/README.md +40 -0
  179. package/templates/integrations/api-contract.md +42 -0
  180. package/templates/integrations/event-contract.md +46 -0
  181. package/templates/integrations/third-party/vendor-template.md +42 -0
  182. package/templates/integrations/webhook-contract.md +41 -0
  183. package/templates/ledger/Harness-Ledger.md +13 -25
  184. package/templates/lessons/lesson-arch-process-change.md +1 -1
  185. package/templates/lessons/lesson-new-doc.md +1 -1
  186. package/templates/lessons/lesson-ref-change.md +1 -1
  187. package/templates/planning/brief.md +32 -0
  188. package/templates/planning/execution_strategy.md +31 -0
  189. package/templates/planning/lesson_candidates.md +70 -0
  190. package/templates/planning/long-running-task-contract.md +7 -0
  191. package/templates/planning/module_brief.md +25 -0
  192. package/templates/planning/module_session_prompt.md +6 -0
  193. package/templates/planning/optional/artifacts/INDEX.md +3 -3
  194. package/templates/planning/optional/references/INDEX.md +3 -3
  195. package/templates/planning/review.md +59 -0
  196. package/templates/planning/task_plan.md +40 -15
  197. package/templates/planning/visual_map.md +50 -0
  198. package/templates/reference/docs-library-standard.md +31 -0
  199. package/templates/reference/execution-workflow-standard.md +5 -2
  200. package/templates/reference/external-source-intake-standard.md +82 -0
  201. package/templates/reference/harness-ledger-standard.md +1 -0
  202. package/templates/reference/pull-request-standard.md +80 -0
  203. package/templates/reference/repo-governance-standard.md +8 -5
  204. package/templates/reference/review-routing-standard.md +6 -0
  205. package/templates/reference/walkthrough-standard.md +3 -1
  206. package/templates/verifier/verifier-output.md +1 -1
  207. package/templates/walkthrough/walkthrough-template.md +2 -2
  208. package/templates-zh-CN/AGENTS.md.template +73 -70
  209. package/templates-zh-CN/architecture/Architecture-SSoT.md +21 -0
  210. package/templates-zh-CN/architecture/README.md +51 -0
  211. package/templates-zh-CN/architecture/critical-flows.md +24 -0
  212. package/templates-zh-CN/architecture/local-repo-context.md +20 -0
  213. package/templates-zh-CN/architecture/service-catalog.md +17 -0
  214. package/templates-zh-CN/architecture/services/service-template.md +31 -0
  215. package/templates-zh-CN/architecture/system-map.md +22 -0
  216. package/templates-zh-CN/development/README.md +54 -0
  217. package/templates-zh-CN/development/codebase-map.md +11 -0
  218. package/templates-zh-CN/development/cross-repo-debugging.md +18 -0
  219. package/templates-zh-CN/development/external-context/service-template.md +33 -0
  220. package/templates-zh-CN/development/external-source-packs/README.md +24 -0
  221. package/templates-zh-CN/development/external-source-packs/digest-template.md +28 -0
  222. package/templates-zh-CN/development/local-setup.md +16 -0
  223. package/templates-zh-CN/development/stubs-and-mocks.md +11 -0
  224. package/templates-zh-CN/integrations/README.md +42 -0
  225. package/templates-zh-CN/integrations/api-contract.md +42 -0
  226. package/templates-zh-CN/integrations/event-contract.md +46 -0
  227. package/templates-zh-CN/integrations/third-party/vendor-template.md +42 -0
  228. package/templates-zh-CN/integrations/webhook-contract.md +41 -0
  229. package/templates-zh-CN/ledger/Harness-Ledger.md +17 -40
  230. package/templates-zh-CN/planning/brief.md +32 -0
  231. package/templates-zh-CN/planning/execution_strategy.md +30 -0
  232. package/templates-zh-CN/planning/lesson_candidates.md +70 -0
  233. package/templates-zh-CN/planning/long-running-task-contract.md +1 -1
  234. package/templates-zh-CN/planning/module_brief.md +25 -0
  235. package/templates-zh-CN/planning/module_plan.md +2 -2
  236. package/templates-zh-CN/planning/module_session_prompt.md +4 -3
  237. package/templates-zh-CN/planning/review.md +59 -1
  238. package/templates-zh-CN/planning/task_plan.md +37 -11
  239. package/templates-zh-CN/planning/{visual_roadmap.md → visual_map.md} +21 -2
  240. package/templates-zh-CN/reference/adversarial-review-standard.md +1 -1
  241. package/templates-zh-CN/reference/docs-library-standard.md +36 -1
  242. package/templates-zh-CN/reference/execution-workflow-standard.md +10 -2
  243. package/templates-zh-CN/reference/external-source-intake-standard.md +82 -0
  244. package/templates-zh-CN/reference/harness-ledger-standard.md +7 -4
  245. package/templates-zh-CN/reference/pull-request-standard.md +106 -0
  246. package/templates-zh-CN/reference/repo-governance-standard.md +4 -1
  247. package/templates-zh-CN/reference/review-routing-standard.md +8 -1
  248. package/templates-zh-CN/reference/walkthrough-standard.md +6 -5
  249. package/templates-zh-CN/walkthrough/Closeout-SSoT.md +2 -2
  250. package/templates-zh-CN/walkthrough/walkthrough-template.md +2 -2
  251. package/scripts/smoke-dashboard.mjs +0 -70
  252. package/scripts/test-harness.mjs +0 -483
  253. package/templates/ssot/Feature-SSoT.md +0 -43
  254. package/templates/ssot/Lessons-SSoT.md +0 -44
  255. package/templates-zh-CN/dashboard/assets/app.css +0 -399
  256. package/templates-zh-CN/dashboard/assets/app.js +0 -435
  257. package/templates-zh-CN/dashboard/assets/i18n.js +0 -47
  258. package/templates-zh-CN/dashboard/assets/markdown-reader.js +0 -116
  259. package/templates-zh-CN/dashboard/assets/mermaid-renderer.js +0 -59
  260. package/templates-zh-CN/dashboard/index.html +0 -18
  261. package/templates-zh-CN/ssot/Feature-SSoT.md +0 -49
  262. package/templates-zh-CN/ssot/Lessons-SSoT.md +0 -49
@@ -0,0 +1,214 @@
1
+ # Preset Development
2
+
3
+ Harness presets are declarative task method packages. A preset can add task metadata, render Markdown templates, require CLI inputs, generate evidence files, and pre-load shared reference bundles without writing JavaScript.
4
+
5
+ Use a preset when multiple tasks should start from the same method, evidence contract, or shared context. Do not create a preset for one-off prose. Good presets encode repeatable task behavior: required inputs, task kind, review/evidence expectations, shared references, and a small amount of task-plan guidance that tells the next agent what to read first.
6
+
7
+ `preset.yaml` uses the Harness manifest subset: nested mappings, scalar strings/numbers/booleans, and inline arrays such as `[standard, complex]`. Do not use block strings or dash-list YAML forms in preset manifests.
8
+
9
+ ## Install Location
10
+
11
+ Project presets live in:
12
+
13
+ ```text
14
+ <target>/.coding-agent-harness/presets/<preset-id>/
15
+ ```
16
+
17
+ User-installed presets live in:
18
+
19
+ ```text
20
+ ~/.coding-agent-harness/presets/<preset-id>/
21
+ ```
22
+
23
+ When a target is supplied, Harness discovers project presets first, then user presets, then bundled presets under the package `presets/` directory. Use project presets when a repository needs to override or pin a task method. Use user presets for personal reusable methods across repositories.
24
+
25
+ Bundled presets are not only fallback files. `npm install -g coding-agent-harness`
26
+ and `harness install-user` seed them into the user preset root, while
27
+ `harness init` seeds them into the project preset root. Re-run
28
+ `harness preset seed` for the user root or `harness preset seed --project <target>`
29
+ for the project root when a preset root is missing or incomplete.
30
+
31
+ ## Package Layout
32
+
33
+ ```text
34
+ my-preset/
35
+ preset.yaml
36
+ templates/
37
+ task_plan.append.md
38
+ references/
39
+ upstream-contract.md
40
+ resources/
41
+ service-runbook.md
42
+ ```
43
+
44
+ ## Minimal Manifest
45
+
46
+ ```yaml
47
+ id: custom-review
48
+ version: 1
49
+ purpose: Create a review task with preset evidence.
50
+ compatibleBudgets: [standard, complex]
51
+ localeSupport: [en-US, zh-CN]
52
+ task:
53
+ kind: review-task
54
+ defaultTaskId: custom-review-task
55
+ entrypoints:
56
+ newTask:
57
+ type: template
58
+ writes: [docs/09-PLANNING/TASKS/**]
59
+ audit: true
60
+ templates:
61
+ taskPlanAppend: templates/task_plan.append.md
62
+ inputs:
63
+ subject:
64
+ type: text
65
+ flag: --subject
66
+ required: true
67
+ templateValues:
68
+ subject:
69
+ from: inputs.subject
70
+ metadata:
71
+ ReviewSubject:
72
+ label: Review Subject
73
+ from: inputs.subject
74
+ evidence:
75
+ bundleDir: artifacts/preset
76
+ files:
77
+ subject:
78
+ path: subject.txt
79
+ type: text
80
+ value: inputs.subject
81
+ audit:
82
+ manifestRequired: true
83
+ evidenceFiles: [preset-audit.json, preset-manifest.json, write-scope.json]
84
+ writeScopes:
85
+ taskDocs:
86
+ path: docs/09-PLANNING/TASKS/**
87
+ access: write
88
+ ```
89
+
90
+ ## Reference Bundles
91
+
92
+ Use `resources.references` when a family of tasks shares the same outside context, such as another microservice, API contract, migration packet, reviewer input, or local verification runbook. Harness copies or renders these files into each created task directory, appends `references/INDEX.md` rows, and can add a required-read section to `task_plan.md`.
93
+
94
+ ```yaml
95
+ resources:
96
+ references:
97
+ upstreamContract:
98
+ path: references/upstream-contract.md
99
+ template: templates/references/upstream-contract.md
100
+ index:
101
+ id: REF-001
102
+ type: code
103
+ summary: Shared upstream {{service}} contract for every task created by this preset.
104
+ usedBy: coordinator,worker,reviewer
105
+ serviceRunbook:
106
+ path: references/service-runbook.md
107
+ source: resources/service-runbook.md
108
+ index:
109
+ id: REF-002
110
+ type: runbook
111
+ summary: Local verification notes for the shared upstream service.
112
+ usedBy: worker
113
+ context:
114
+ requiredReads: [REF-001, REF-002]
115
+ ```
116
+
117
+ Use `template` when the file needs `{{valueName}}` substitution. Use `source` when the file should be copied as static Markdown. `path`, `source`, and `template` must stay inside the preset package and generated task directory boundaries.
118
+
119
+ ## Artifact Bundles
120
+
121
+ Use `resources.artifacts` for preset-provided fixtures, generated input packets, or review material that supports the task but is not a reference source of truth. Harness writes these files into the task's `artifacts/` area and appends `artifacts/INDEX.md`.
122
+
123
+ ```yaml
124
+ resources:
125
+ artifacts:
126
+ inputPacket:
127
+ path: artifacts/input-packet.md
128
+ source: resources/artifacts/input-packet.md
129
+ index:
130
+ id: ART-001
131
+ type: fixture
132
+ summary: Shared fixture packet copied by the preset.
133
+ producedBy: preset
134
+ ```
135
+
136
+ ## Template Rendering
137
+
138
+ Templates use `{{valueName}}` placeholders from `templateValues`. `templateValues` and `metadata` support literal `value`, `default`, and dot-path `from` references such as `inputs.subject` or `task.title`; they do not evaluate arbitrary expressions.
139
+
140
+ `metadata` entries render first-class task plan lines such as `Review Subject: API contracts`.
141
+
142
+ ```md
143
+ ## Custom Review
144
+
145
+ Subject: {{subject}}
146
+ ```
147
+
148
+ ## Inputs
149
+
150
+ Supported input types:
151
+
152
+ | Type | Use |
153
+ | --- | --- |
154
+ | `text` | Reads a CLI flag value such as `--subject "API"` |
155
+ | `flag` | Reads a boolean CLI flag |
156
+ | `json-file` | Reads and validates a JSON file such as `--from-session session.json` |
157
+
158
+ `json-file` inputs can validate `validateOperation`, reject `planOnly`, require a target path, and route the task target from the JSON session.
159
+
160
+ ## Evidence
161
+
162
+ Evidence files are written under the task directory and must match `writeScopes`.
163
+
164
+ Supported evidence types:
165
+
166
+ | Type | Output |
167
+ | --- | --- |
168
+ | `text` | Plain text from a value path |
169
+ | `json` | JSON from a value path |
170
+ | `input-json` | Raw resolved JSON input |
171
+ | `preset-audit` | Manifest audit payload |
172
+ | `preset-manifest` | Manifest snapshot |
173
+ | `write-scope` | Declared write scopes |
174
+ | `migration-verify` | Built-in migrate session verification |
175
+ | `migration-ledger` | Built-in migration phase ledger |
176
+ | `dashboard-hash` | Hash of the migration dashboard snapshot |
177
+ | `target-git-status` | Target Git status from migration session |
178
+ | `target-commit` | Current target commit |
179
+ | `harness-version` | Current package version |
180
+ | `generated-at` | Generation timestamp |
181
+
182
+ ## Commands
183
+
184
+ ```bash
185
+ harness preset check ./my-preset
186
+ harness preset install ./my-preset
187
+ harness preset install ./my-preset --project /path/to/project
188
+ harness preset install legacy-migration --force
189
+ harness preset seed
190
+ harness preset seed --project /path/to/project
191
+ harness preset list --json /path/to/project
192
+ harness preset inspect custom-review --json /path/to/project
193
+ harness new-task custom-review-task --preset custom-review --subject "API contracts" /path/to/project
194
+ harness preset uninstall custom-review
195
+ ```
196
+
197
+ ## Validation Method
198
+
199
+ For every preset, prove both the manifest and downstream task behavior:
200
+
201
+ 1. Run `harness preset check ./my-preset`.
202
+ 2. Install into an isolated HOME or disposable environment.
203
+ 3. Create at least one task with `harness new-task --preset`.
204
+ 4. For reference bundles, create two different tasks from the same preset and verify both contain the same shared `references/` files and independent audit/evidence bundles.
205
+ 5. Run `harness status --json`, `harness task-index --json`, and `harness check --profile target-project <target>`.
206
+ 6. Inspect `task_plan.md` to confirm required reads are visible before implementation starts.
207
+
208
+ ## Boundaries
209
+
210
+ - Presets cannot write outside declared `writeScopes`.
211
+ - Presets do not run arbitrary JavaScript during `new-task`.
212
+ - Reference bundles are task-local snapshots. If the shared upstream context changes later, create a new preset version or a follow-up task rather than silently mutating historical tasks.
213
+ - Script and check entrypoints may exist in bundled packages, but the task creation path is YAML + templates + built-in processors.
214
+ - Use a new built-in processor only when multiple presets need the same capability and the behavior can be tested centrally.
@@ -0,0 +1,197 @@
1
+ # Repository Operating Models
2
+
3
+ Chinese mirror: `docs-release/guides/repository-operating-models.md`
4
+
5
+ Coding Agent Harness can live inside different repository structures. If you choose the wrong one, the main problem is not "not enough docs." The harness itself becomes another source of confusion.
6
+
7
+ This guide explains three common models:
8
+
9
+ - Single-repo model: one code repository, one harness.
10
+ - Independent multi-repo model: multiple code repositories, each with its own harness.
11
+ - Parent-control repository model: one parent control repository owns the harness, while child repositories hold implementation facts.
12
+
13
+ ## Quick Choice
14
+
15
+ | Model | Fits | Does not fit | Harness source of truth |
16
+ | --- | --- | --- | --- |
17
+ | Single repo | One product, one code repository, clear team boundary | A system already split across independently released repositories | Current repo `AGENTS.md` + `docs/` |
18
+ | Independent multi-repo | Frontend, backend, SDK, or services evolve independently and cross-repo work is rare | Frequent cross-repo features and one shared release plan | Each repo's own `AGENTS.md` + `docs/` |
19
+ | Parent-control repo | Microservices, many subsystems, shared roadmap, cross-repo releases, agents need one startup point | Small projects or short-lived script repositories | Parent repo `AGENTS.md` + `docs/` |
20
+
21
+ ## Single-Repo Model
22
+
23
+ The single-repo model is the simplest. Code, plans, regression state, and walkthroughs live in one repository.
24
+
25
+ ```text
26
+ product-repo/
27
+ AGENTS.md
28
+ docs/
29
+ 03-ARCHITECTURE/
30
+ 04-DEVELOPMENT/
31
+ 05-TEST-QA/
32
+ 09-PLANNING/
33
+ 10-WALKTHROUGH/
34
+ 11-REFERENCE/
35
+ src/
36
+ tests/
37
+ ```
38
+
39
+ The agent starts at the repository root, reads `AGENTS.md`, then moves into task files and code.
40
+
41
+ ### When To Choose It
42
+
43
+ - The application, service, script, or library is in one repository.
44
+ - A feature usually modifies only this repository.
45
+ - Regression commands can run inside one checkout.
46
+ - The team wants to adopt Harness quickly without first changing repository structure.
47
+
48
+ ### Risk
49
+
50
+ When the project later splits into several repositories, the single-repo harness can lose global visibility. Frontend, backend, and SDK repositories may each have local state, but no single place explains whether the cross-repo task is actually complete.
51
+
52
+ ## Independent Multi-Repo Model
53
+
54
+ The independent multi-repo model gives each repository its own harness.
55
+
56
+ ```text
57
+ frontend-repo/
58
+ AGENTS.md
59
+ docs/
60
+
61
+ backend-repo/
62
+ AGENTS.md
63
+ docs/
64
+
65
+ sdk-repo/
66
+ AGENTS.md
67
+ docs/
68
+ ```
69
+
70
+ Each repository entrypoint only governs that repository. Frontend tasks are planned and closed in the frontend repo. Backend tasks are planned and closed in the backend repo.
71
+
72
+ ### When To Choose It
73
+
74
+ - The repositories are genuinely independent from an organizational point of view.
75
+ - Each repository has its own owners, release cadence, and review rules.
76
+ - Cross-repo tasks are rare, or humans coordinate them manually.
77
+ - One repository's harness should not know another repository's internal state.
78
+
79
+ ### Required External Context
80
+
81
+ Independent multi-repo mode is not just "copy the template into every repo." If you do that, cross-repo context disappears.
82
+
83
+ Each repository should document its external boundary in:
84
+
85
+ - `docs/03-ARCHITECTURE/`: where this repository sits in the overall system.
86
+ - `docs/04-DEVELOPMENT/`: sibling repo dependencies and local integration startup.
87
+ - `docs/06-INTEGRATIONS/`: APIs, events, SDKs, queues, databases, auth, and other contracts.
88
+ - `docs/05-TEST-QA/Regression-SSoT.md`: which checks cover this repository only and which require integration across repositories.
89
+ - `AGENTS.md`: whether agents should stop, switch repositories, or ask humans when a task crosses repository boundaries.
90
+
91
+ ### Risk
92
+
93
+ The risk is harness fragmentation:
94
+
95
+ - The frontend local task state says a task is complete while the backend Regression SSoT is still red.
96
+ - An SDK breaking change is not projected into the product shell.
97
+ - An agent starts from a child repository, sees only local facts, and incorrectly treats the global task as complete.
98
+
99
+ If this happens often, move to the parent-control repository model.
100
+
101
+ ## Parent-Control Repository Model
102
+
103
+ The parent-control model puts the harness in a parent repository. Child repositories hold implementation facts.
104
+
105
+ ```text
106
+ product-control-repo/
107
+ AGENTS.md
108
+ docs/
109
+ 03-ARCHITECTURE/
110
+ 04-DEVELOPMENT/
111
+ 05-TEST-QA/
112
+ 06-INTEGRATIONS/
113
+ 09-PLANNING/
114
+ 10-WALKTHROUGH/
115
+ 11-REFERENCE/
116
+ tools/
117
+ frontend/ -> child repository
118
+ backend/ -> child repository
119
+ sdk/ -> child repository
120
+ service-a/ -> child repository
121
+ service-b/ -> child repository
122
+ ```
123
+
124
+ The parent repository is the control plane. It owns:
125
+
126
+ - Overall architecture and repo topology.
127
+ - Cross-repo task lifecycle Ledger.
128
+ - Delivery SSoT when release or block orchestration is needed.
129
+ - Task plans, reviews, and walkthroughs.
130
+ - Regression SSoT and cross-repo cadence.
131
+ - Agent entrypoint and reading matrix.
132
+ - Evidence for child repository commits, branches, submodule pointers, or release versions.
133
+
134
+ Child repositories are the execution plane. They own:
135
+
136
+ - Code implementation.
137
+ - Repository-local dependencies and lockfiles.
138
+ - Repository-local tests and CI.
139
+ - Repository-local `AGENTS.md`.
140
+ - Concrete commits and pull requests.
141
+
142
+ ### When To Choose It
143
+
144
+ - One product is delivered by multiple repositories.
145
+ - Features often touch frontend, backend, SDKs, or services together.
146
+ - You want every agent to start from one entrypoint.
147
+ - You need unified task state, review gates, and release closeout.
148
+ - There are many services, and you cannot let each repository maintain its own global plan.
149
+
150
+ ### Main Benefit
151
+
152
+ The parent-control model fixes global truth in one place. Even if there are 100 child repositories, the agent first reads the parent task contract, then enters the specific child repository to execute.
153
+
154
+ This avoids:
155
+
156
+ - Conflicting handwritten task lifecycle tables.
157
+ - Each child repo saying "done" while the release still cannot ship.
158
+ - Agents starting from the wrong repository and seeing only local context.
159
+ - Cross-repo review and regression evidence scattered across many places.
160
+
161
+ See `docs-release/guides/parent-control-repository-pattern.en-US.md` for the full method.
162
+
163
+ ## Moving Between Models
164
+
165
+ ### Single Repo To Multi-Repo
166
+
167
+ When a single repository splits into frontend, backend, or SDK repositories, do not copy the same `docs/` tree into every repository.
168
+
169
+ Decide first:
170
+
171
+ - Which tasks remain global?
172
+ - Which tasks become repository-local?
173
+ - Does the old Regression SSoT stay at a parent layer or split into local gates?
174
+ - Where should agents start in the future?
175
+
176
+ If cross-repo features remain common, create a parent-control repository.
177
+
178
+ ### Independent Multi-Repo To Parent-Control
179
+
180
+ Migration order:
181
+
182
+ 1. Create the parent `AGENTS.md` and repo topology.
183
+ 2. Move global Harness Ledger, Delivery SSoT, Regression SSoT, and walkthrough index into the parent repository.
184
+ 3. Keep local `AGENTS.md` files in child repositories, but point global planning back to the parent.
185
+ 4. Create new cross-repo tasks only in the parent repository.
186
+ 5. Treat child repository commits as evidence for parent tasks.
187
+
188
+ Do not rewrite all historical tasks at once. Start by moving the current release and active features into the parent repository.
189
+
190
+ ## Recommended Defaults
191
+
192
+ - New small project: single-repo model.
193
+ - Several strongly independent teams: independent multi-repo model.
194
+ - One product, multiple code repositories, one release target: parent-control model.
195
+ - Many microservices that need unified agent collaboration: parent-control model.
196
+
197
+ The real decision is not the number of repositories. It is whether global decisions need one source of truth.
@@ -0,0 +1,197 @@
1
+ # 仓库运行模式选择指南
2
+
3
+ English mirror: `docs-release/guides/repository-operating-models.en-US.md`
4
+
5
+ Coding Agent Harness 可以落在不同的仓库组织方式里。选择错了,后面最常见的问题不是“文档少”,而是 Harness 自己变成新的混乱源。
6
+
7
+ 这份指南解释三种常见模式:
8
+
9
+ - 单仓模式:一个代码仓库,一套 Harness。
10
+ - 多仓独立模式:多个代码仓库,每个仓库有自己的 Harness。
11
+ - 主控仓库模式:一个父级控制仓库管理 Harness,多个子仓库只承载代码执行事实。
12
+
13
+ ## 快速选择
14
+
15
+ | 模式 | 适合 | 不适合 | Harness 事实源 |
16
+ | --- | --- | --- | --- |
17
+ | 单仓模式 | 单产品、单代码仓库、团队边界清楚 | 已经拆成多个独立发布仓库 | 当前仓库 `AGENTS.md` + `docs/` |
18
+ | 多仓独立模式 | 前端、后端、SDK 等仓库长期独立迭代,跨仓任务少 | 大量跨仓 feature 和统一 release 计划 | 每个仓库自己的 `AGENTS.md` + `docs/` |
19
+ | 主控仓库模式 | 微服务、多子系统、多仓统一路线图、跨仓 release、Agent 需要从一个地方启动 | 小项目,或只有一个短期脚本仓库 | 父仓库 `AGENTS.md` + `docs/` |
20
+
21
+ ## 单仓模式
22
+
23
+ 单仓模式最简单。代码、计划、回归、walkthrough 都在同一个仓库里。
24
+
25
+ ```text
26
+ product-repo/
27
+ AGENTS.md
28
+ docs/
29
+ 03-ARCHITECTURE/
30
+ 04-DEVELOPMENT/
31
+ 05-TEST-QA/
32
+ 09-PLANNING/
33
+ 10-WALKTHROUGH/
34
+ 11-REFERENCE/
35
+ src/
36
+ tests/
37
+ ```
38
+
39
+ Agent 从仓库根目录启动,读 `AGENTS.md`,然后进入任务文件和代码。
40
+
41
+ ### 什么时候选
42
+
43
+ - 应用、服务、脚本或库都在一个仓库里。
44
+ - Feature 通常只改这个仓库。
45
+ - 回归命令可以在一个 checkout 内完成。
46
+ - 团队希望快速接入 Harness,不想先改组织结构。
47
+
48
+ ### 风险
49
+
50
+ 当项目后来拆出多个仓库时,单仓 Harness 容易失去全局视野。前端、后端、SDK 各自都有状态,但没有一个地方能说明跨仓任务到底完成到哪一步。
51
+
52
+ ## 多仓独立模式
53
+
54
+ 多仓独立模式让每个仓库都有自己的 Harness。
55
+
56
+ ```text
57
+ frontend-repo/
58
+ AGENTS.md
59
+ docs/
60
+
61
+ backend-repo/
62
+ AGENTS.md
63
+ docs/
64
+
65
+ sdk-repo/
66
+ AGENTS.md
67
+ docs/
68
+ ```
69
+
70
+ 每个仓库的 Agent 入口只管本仓库。前端任务在前端仓库计划和收口,后端任务在后端仓库计划和收口。
71
+
72
+ ### 什么时候选
73
+
74
+ - 仓库之间组织上确实独立。
75
+ - 每个仓库有自己的 owner、release 节奏和 review 规则。
76
+ - 跨仓任务少,或者跨仓任务由人手动协调。
77
+ - 某个仓库的 Harness 不应该知道另一个仓库的内部状态。
78
+
79
+ ### 必须补的外围文档
80
+
81
+ 多仓独立模式不能只给每个仓库复制一套模板。否则跨仓上下文会断。
82
+
83
+ 每个仓库至少要在这些位置写清楚外部边界:
84
+
85
+ - `docs/03-ARCHITECTURE/`:本仓库在整体系统中的位置。
86
+ - `docs/04-DEVELOPMENT/`:依赖哪些 sibling repo、本地联调怎么启动。
87
+ - `docs/06-INTEGRATIONS/`:API、事件、SDK、队列、数据库、鉴权等外部契约。
88
+ - `docs/05-TEST-QA/Regression-SSoT.md`:哪些检查只覆盖本仓库,哪些需要跨仓联调。
89
+ - `AGENTS.md`:遇到跨仓任务时,Agent 应该停下来、切仓库,还是交给人协调。
90
+
91
+ ### 风险
92
+
93
+ 多仓独立模式的风险是 Harness 分裂:
94
+
95
+ - 前端局部任务状态认为任务完成,后端 Regression SSoT 仍是红灯。
96
+ - SDK 的 breaking change 没有投影到产品 shell。
97
+ - Agent 从子仓库启动后,只看到局部事实,误以为全局任务已经结束。
98
+
99
+ 如果这种情况频繁发生,应升级到主控仓库模式。
100
+
101
+ ## 主控仓库模式
102
+
103
+ 主控仓库模式把 Harness 放在父仓库。子仓库只承载代码执行事实。
104
+
105
+ ```text
106
+ product-control-repo/
107
+ AGENTS.md
108
+ docs/
109
+ 03-ARCHITECTURE/
110
+ 04-DEVELOPMENT/
111
+ 05-TEST-QA/
112
+ 06-INTEGRATIONS/
113
+ 09-PLANNING/
114
+ 10-WALKTHROUGH/
115
+ 11-REFERENCE/
116
+ tools/
117
+ frontend/ -> child repository
118
+ backend/ -> child repository
119
+ sdk/ -> child repository
120
+ service-a/ -> child repository
121
+ service-b/ -> child repository
122
+ ```
123
+
124
+ 父仓库是 control plane。它管理:
125
+
126
+ - 总体架构和 repo topology。
127
+ - 跨仓任务生命周期 Ledger。
128
+ - Delivery SSoT(需要 release / block 编排时)。
129
+ - 任务计划、review、walkthrough。
130
+ - Regression SSoT 和跨仓 cadence。
131
+ - Agent 启动入口和读文件矩阵。
132
+ - 子仓库 commit、分支、submodule pointer 或 release version 的证据。
133
+
134
+ 子仓库是 execution plane。它们管理:
135
+
136
+ - 代码实现。
137
+ - 本仓库依赖和 lockfile。
138
+ - 本仓库局部测试和 CI。
139
+ - 本仓库局部 `AGENTS.md`。
140
+ - 具体提交和 PR。
141
+
142
+ ### 什么时候选
143
+
144
+ - 一个产品由多个仓库共同交付。
145
+ - Feature 经常跨前端、后端、SDK、微服务。
146
+ - 你希望 Agent 永远从同一个入口启动。
147
+ - 你需要统一的任务状态、review 门禁和 release closeout。
148
+ - 微服务数量很多,不能让每个仓库各自维护一套全局计划。
149
+
150
+ ### 核心好处
151
+
152
+ 主控仓库模式把“全局事实”固定在一个地方。即使有 100 个子仓库,Agent 也先读父仓库的任务合同,然后再进入具体子仓库执行。
153
+
154
+ 这能避免:
155
+
156
+ - 多个手写任务生命周期表互相冲突。
157
+ - 每个子仓库都声称自己已经完成,但 release 仍不能发。
158
+ - Agent 从错误仓库启动,只看到局部上下文。
159
+ - 跨仓 review 和 regression 证据散落在不同地方。
160
+
161
+ 完整方法见 `docs-release/guides/parent-control-repository-pattern.md`。
162
+
163
+ ## 从一种模式迁移到另一种
164
+
165
+ ### 单仓到多仓
166
+
167
+ 当一个单仓拆出前端、后端、SDK 时,不要直接复制 `docs/` 到每个仓库。
168
+
169
+ 先决定:
170
+
171
+ - 哪些任务仍是全局任务?
172
+ - 哪些任务变成子仓库局部任务?
173
+ - 原来的 Regression SSoT 是保留在父层,还是拆成局部 gate?
174
+ - Agent 未来从哪里启动?
175
+
176
+ 如果跨仓 feature 仍然很多,优先创建主控仓库。
177
+
178
+ ### 多仓独立到主控仓库
179
+
180
+ 迁移顺序:
181
+
182
+ 1. 创建父仓库 `AGENTS.md` 和 repo topology。
183
+ 2. 把全局 Harness Ledger、Delivery SSoT、Regression SSoT、walkthrough index 收到父仓库。
184
+ 3. 子仓库保留局部 `AGENTS.md`,但把全局计划指向父仓库。
185
+ 4. 新跨仓任务只在父仓库创建 task。
186
+ 5. 子仓库提交只作为父任务的 evidence。
187
+
188
+ 不要一次性重写所有历史任务。先把当前 release 和活跃 feature 接到父仓库。
189
+
190
+ ## 推荐默认值
191
+
192
+ - 新的小项目:单仓模式。
193
+ - 已经有多个强独立团队:多仓独立模式。
194
+ - 一个产品、多个代码仓库、一个 release 目标:主控仓库模式。
195
+ - 微服务很多但需要统一 Agent 协作:主控仓库模式。
196
+
197
+ 真正的判断标准不是仓库数量,而是全局决策是否需要一个唯一事实源。