coding-agent-harness 1.0.2 → 1.0.5

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 (219) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/CONTRIBUTING.md +98 -0
  3. package/LICENSE +661 -21
  4. package/LICENSE-EXCEPTION.md +37 -0
  5. package/README.md +244 -87
  6. package/README.zh-CN.md +77 -35
  7. package/SKILL.md +32 -24
  8. package/docs-release/README.md +9 -5
  9. package/docs-release/architecture/overview.md +17 -5
  10. package/docs-release/architecture/overview.zh-CN.md +9 -5
  11. package/docs-release/architecture/system-explainer/01-system-overview.md +217 -0
  12. package/docs-release/architecture/system-explainer/02-module-dependency.md +257 -0
  13. package/docs-release/architecture/system-explainer/03-task-lifecycle.md +304 -0
  14. package/docs-release/architecture/system-explainer/04-check-and-governance.md +239 -0
  15. package/docs-release/architecture/system-explainer/05-data-flow.md +276 -0
  16. package/docs-release/architecture/system-explainer/06-preset-and-migration.md +303 -0
  17. package/docs-release/architecture/system-explainer/README.md +67 -0
  18. package/docs-release/architecture/system-explainer/en-US/01-system-overview.md +226 -0
  19. package/docs-release/architecture/system-explainer/en-US/02-module-dependency.md +263 -0
  20. package/docs-release/architecture/system-explainer/en-US/03-task-lifecycle.md +319 -0
  21. package/docs-release/architecture/system-explainer/en-US/04-check-and-governance.md +250 -0
  22. package/docs-release/architecture/system-explainer/en-US/05-data-flow.md +290 -0
  23. package/docs-release/architecture/system-explainer/en-US/06-preset-and-migration.md +323 -0
  24. package/docs-release/architecture/system-explainer/en-US/README.md +70 -0
  25. package/docs-release/assets/dashboard-overview.png +0 -0
  26. package/docs-release/guides/agent-installation.en-US.md +39 -15
  27. package/docs-release/guides/agent-installation.md +43 -16
  28. package/docs-release/guides/contributing.md +100 -0
  29. package/docs-release/guides/contributing.zh-CN.md +99 -0
  30. package/docs-release/guides/document-audience-and-surfaces.en-US.md +3 -2
  31. package/docs-release/guides/document-audience-and-surfaces.md +3 -2
  32. package/docs-release/guides/full-legacy-migration-subagent-strategy.md +2 -2
  33. package/docs-release/guides/full-legacy-migration-subagent-strategy.zh-CN.md +2 -2
  34. package/docs-release/guides/legacy-migration-agent-prompt.md +0 -11
  35. package/docs-release/guides/legacy-migration-agent-prompt.zh-CN.md +0 -11
  36. package/docs-release/guides/migration-playbook.en-US.md +14 -15
  37. package/docs-release/guides/migration-playbook.md +14 -15
  38. package/docs-release/guides/parent-control-repository-pattern.en-US.md +7 -5
  39. package/docs-release/guides/parent-control-repository-pattern.md +7 -5
  40. package/docs-release/guides/preset-development.md +238 -0
  41. package/docs-release/guides/repository-operating-models.en-US.md +5 -4
  42. package/docs-release/guides/repository-operating-models.md +5 -4
  43. package/docs-release/guides/task-state-machine.en-US.md +224 -0
  44. package/docs-release/guides/task-state-machine.md +231 -0
  45. package/docs-release/intl/en-US.md +1 -1
  46. package/docs-release/intl/zh-CN.md +1 -1
  47. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/INDEX.md +60 -0
  48. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/findings.md +7 -0
  49. package/package.json +10 -4
  50. package/presets/legacy-migration/checks/preset-check.mjs +3 -0
  51. package/presets/legacy-migration/preset.yaml +134 -0
  52. package/presets/legacy-migration/scripts/plan-work-queue.mjs +4 -0
  53. package/presets/legacy-migration/scripts/scaffold-task-contracts.mjs +4 -0
  54. package/presets/legacy-migration/templates/execution_strategy.append.md +18 -0
  55. package/presets/legacy-migration/templates/findings.seed.md +17 -0
  56. package/presets/legacy-migration/templates/review.seed.md +12 -0
  57. package/presets/legacy-migration/templates/task_plan.append.md +9 -0
  58. package/presets/legacy-migration/templates/visual_map.append.md +12 -0
  59. package/presets/legacy-migration/workbench/dashboard-panels.yaml +2 -0
  60. package/presets/legacy-migration/workbench/migration-queue.schema.json +23 -0
  61. package/presets/lesson-sedimentation/preset.yaml +23 -0
  62. package/presets/lesson-sedimentation/templates/prompt.md +23 -0
  63. package/presets/module/preset.yaml +25 -0
  64. package/presets/module/templates/execution_strategy.append.md +8 -0
  65. package/presets/module/templates/task_plan.append.md +17 -0
  66. package/presets/standard-task/preset.yaml +31 -0
  67. package/presets/standard-task/templates/task_plan.append.md +7 -0
  68. package/references/adversarial-review-standard.md +2 -2
  69. package/references/agents-md-pattern.md +2 -2
  70. package/references/delivery-operating-model-standard.md +3 -3
  71. package/references/docs-directory-standard.md +6 -7
  72. package/references/harness-ledger.md +53 -96
  73. package/references/lessons-governance.md +88 -93
  74. package/references/module-parallel-standard.md +14 -14
  75. package/references/planning-loop.md +12 -6
  76. package/references/pull-request-standard.md +118 -0
  77. package/references/repo-governance-standard.md +11 -2
  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/walkthrough-closeout.md +7 -7
  82. package/scripts/check-harness.mjs +40 -301
  83. package/scripts/commands/dashboard-command.mjs +67 -0
  84. package/scripts/commands/migration-command.mjs +126 -0
  85. package/scripts/commands/preset-command.mjs +73 -0
  86. package/scripts/commands/task-command.mjs +328 -0
  87. package/scripts/harness.mjs +59 -260
  88. package/scripts/lib/capability-registry.mjs +82 -28
  89. package/scripts/lib/check-module-parallel.mjs +230 -0
  90. package/scripts/lib/check-profiles.mjs +90 -228
  91. package/scripts/lib/check-task-contracts.mjs +55 -0
  92. package/scripts/lib/core-shared.mjs +65 -2
  93. package/scripts/lib/dashboard-data.mjs +155 -24
  94. package/scripts/lib/dashboard-workbench.mjs +131 -12
  95. package/scripts/lib/dashboard-writer.mjs +20 -4
  96. package/scripts/lib/git-status-summary.mjs +46 -0
  97. package/scripts/lib/governance-index-generator.mjs +174 -0
  98. package/scripts/lib/governance-sync.mjs +611 -0
  99. package/scripts/lib/governance-table-boundary.mjs +175 -0
  100. package/scripts/lib/harness-core.mjs +6 -0
  101. package/scripts/lib/lesson-maintenance.mjs +36 -29
  102. package/scripts/lib/markdown-utils.mjs +33 -0
  103. package/scripts/lib/migration-planner.mjs +4 -6
  104. package/scripts/lib/migration-support.mjs +1 -1
  105. package/scripts/lib/phase-kind.mjs +50 -0
  106. package/scripts/lib/preset-audit-contracts.mjs +37 -0
  107. package/scripts/lib/preset-engine.mjs +494 -0
  108. package/scripts/lib/preset-registry.mjs +776 -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-builder.mjs +88 -0
  112. package/scripts/lib/status-dashboard-renderer.mjs +105 -0
  113. package/scripts/lib/subagent-authorization-audit.mjs +196 -0
  114. package/scripts/lib/task-audit-metadata.mjs +385 -0
  115. package/scripts/lib/task-audit-migration.mjs +350 -0
  116. package/scripts/lib/task-completion-consistency.mjs +26 -0
  117. package/scripts/lib/task-index.mjs +93 -0
  118. package/scripts/lib/task-lesson-candidates.mjs +242 -0
  119. package/scripts/lib/task-lesson-sedimentation.mjs +326 -0
  120. package/scripts/lib/task-lifecycle/create-task-helpers.mjs +67 -0
  121. package/scripts/lib/task-lifecycle/phase-sync.mjs +88 -0
  122. package/scripts/lib/task-lifecycle/review-confirm.mjs +112 -0
  123. package/scripts/lib/task-lifecycle/review-gates.mjs +73 -0
  124. package/scripts/lib/task-lifecycle/review-submission.mjs +63 -0
  125. package/scripts/lib/task-lifecycle/scaffold-provenance.mjs +49 -0
  126. package/scripts/lib/task-lifecycle/template-files.mjs +53 -0
  127. package/scripts/lib/task-lifecycle/text-utils.mjs +24 -0
  128. package/scripts/lib/task-lifecycle.mjs +338 -477
  129. package/scripts/lib/task-metadata.mjs +118 -0
  130. package/scripts/lib/task-review-model.mjs +455 -0
  131. package/scripts/lib/task-scanner.mjs +193 -372
  132. package/scripts/lib/task-tombstone-commands.mjs +140 -0
  133. package/scripts/postinstall.mjs +14 -0
  134. package/skills/preset-creator/SKILL.md +179 -0
  135. package/skills/preset-creator/references/complex-task-skeleton/README.md +31 -0
  136. package/skills/preset-creator/references/complex-task-skeleton/artifacts/INDEX.md +12 -0
  137. package/skills/preset-creator/references/complex-task-skeleton/brief.md +43 -0
  138. package/skills/preset-creator/references/complex-task-skeleton/execution_strategy.md +71 -0
  139. package/skills/preset-creator/references/complex-task-skeleton/findings.md +24 -0
  140. package/skills/preset-creator/references/complex-task-skeleton/lesson_candidates.md +70 -0
  141. package/skills/preset-creator/references/complex-task-skeleton/long-running-task-contract.md +76 -0
  142. package/skills/preset-creator/references/complex-task-skeleton/progress.md +33 -0
  143. package/skills/preset-creator/references/complex-task-skeleton/references/INDEX.md +13 -0
  144. package/skills/preset-creator/references/complex-task-skeleton/review.md +107 -0
  145. package/skills/preset-creator/references/complex-task-skeleton/task_plan.md +111 -0
  146. package/skills/preset-creator/references/complex-task-skeleton/visual_map.md +50 -0
  147. package/skills/preset-creator/references/preset-package-skeleton.md +296 -0
  148. package/templates/AGENTS.md.template +24 -18
  149. package/templates/dashboard/assets/app-src/00-state.js +13 -0
  150. package/templates/dashboard/assets/app-src/10-router.js +5 -1
  151. package/templates/dashboard/assets/app-src/20-overview.js +18 -8
  152. package/templates/dashboard/assets/app-src/30-tasks.js +92 -246
  153. package/templates/dashboard/assets/app-src/35-task-detail.js +286 -0
  154. package/templates/dashboard/assets/app-src/45-review.js +241 -22
  155. package/templates/dashboard/assets/app-src/50-migration.js +24 -10
  156. package/templates/dashboard/assets/app-src/55-presets.js +375 -0
  157. package/templates/dashboard/assets/app-src/60-shared.js +3 -1
  158. package/templates/dashboard/assets/app-src/90-bindings.js +302 -29
  159. package/templates/dashboard/assets/app.css +1501 -376
  160. package/templates/dashboard/assets/app.css.manifest.json +10 -0
  161. package/templates/dashboard/assets/app.js +1240 -101
  162. package/templates/dashboard/assets/app.manifest.json +2 -0
  163. package/templates/dashboard/assets/css-src/00-foundation.css +346 -0
  164. package/templates/dashboard/assets/css-src/10-panels-flow.css +236 -0
  165. package/templates/dashboard/assets/css-src/20-briefs-controls.css +398 -0
  166. package/templates/dashboard/assets/css-src/30-task-index.css +739 -0
  167. package/templates/dashboard/assets/css-src/35-review-workspace.css +507 -0
  168. package/templates/dashboard/assets/css-src/40-detail-modules-migration.css +489 -0
  169. package/templates/dashboard/assets/css-src/45-presets.css +516 -0
  170. package/templates/dashboard/assets/css-src/50-responsive-overrides.css +551 -0
  171. package/templates/dashboard/assets/i18n.js +263 -23
  172. package/templates/ledger/Harness-Ledger.md +13 -25
  173. package/templates/lessons/lesson-arch-process-change.md +1 -1
  174. package/templates/lessons/lesson-new-doc.md +1 -1
  175. package/templates/lessons/lesson-ref-change.md +1 -1
  176. package/templates/planning/INDEX.md +87 -0
  177. package/templates/planning/brief.md +1 -1
  178. package/templates/planning/execution_strategy.md +31 -0
  179. package/templates/planning/lesson_candidates.md +18 -6
  180. package/templates/planning/module_session_prompt.md +1 -0
  181. package/templates/planning/optional/artifacts/INDEX.md +3 -3
  182. package/templates/planning/optional/references/INDEX.md +3 -3
  183. package/templates/planning/review.md +41 -0
  184. package/templates/planning/task_plan.md +5 -21
  185. package/templates/planning/visual_map.md +13 -9
  186. package/templates/planning/visual_map.simple.md +52 -0
  187. package/templates/reference/execution-workflow-standard.md +31 -3
  188. package/templates/reference/pull-request-standard.md +80 -0
  189. package/templates/reference/repo-governance-standard.md +7 -6
  190. package/templates/reference/review-routing-standard.md +6 -0
  191. package/templates/reference/walkthrough-standard.md +2 -1
  192. package/templates/verifier/verifier-output.md +1 -1
  193. package/templates-zh-CN/AGENTS.md.template +25 -19
  194. package/templates-zh-CN/ledger/Harness-Ledger.md +17 -40
  195. package/templates-zh-CN/planning/INDEX.md +87 -0
  196. package/templates-zh-CN/planning/brief.md +1 -1
  197. package/templates-zh-CN/planning/execution_strategy.md +30 -0
  198. package/templates-zh-CN/planning/lesson_candidates.md +18 -6
  199. package/templates-zh-CN/planning/module_session_prompt.md +1 -0
  200. package/templates-zh-CN/planning/review.md +41 -1
  201. package/templates-zh-CN/planning/task_plan.md +4 -44
  202. package/templates-zh-CN/planning/visual_map.md +14 -7
  203. package/templates-zh-CN/planning/visual_map.simple.md +48 -0
  204. package/templates-zh-CN/reference/adversarial-review-standard.md +1 -1
  205. package/templates-zh-CN/reference/docs-library-standard.md +1 -1
  206. package/templates-zh-CN/reference/execution-workflow-standard.md +33 -7
  207. package/templates-zh-CN/reference/harness-ledger-standard.md +2 -2
  208. package/templates-zh-CN/reference/pull-request-standard.md +106 -0
  209. package/templates-zh-CN/reference/repo-governance-standard.md +4 -3
  210. package/templates-zh-CN/reference/review-routing-standard.md +8 -1
  211. package/templates-zh-CN/reference/walkthrough-standard.md +3 -2
  212. package/templates-zh-CN/walkthrough/Closeout-SSoT.md +1 -1
  213. package/docs-release/assets/dashboard-overview-en.png +0 -0
  214. package/scripts/smoke-dashboard.mjs +0 -92
  215. package/scripts/test-harness.mjs +0 -1395
  216. package/templates/ssot/Feature-SSoT.md +0 -43
  217. package/templates/ssot/Lessons-SSoT.md +0 -44
  218. package/templates-zh-CN/ssot/Feature-SSoT.md +0 -49
  219. package/templates-zh-CN/ssot/Lessons-SSoT.md +0 -49
@@ -4,9 +4,11 @@ window.HarnessI18n = {
4
4
  "projectCockpit": "Console",
5
5
  "overview": "Overview",
6
6
  "taskIndex": "Task Index",
7
- "reviewQueue": "Review Queue",
7
+ "reviewQueue": "Lifecycle Queue Workbench",
8
8
  "moduleView": "Modules",
9
9
  "readiness": "Readiness",
10
+ "snapshotStatus": "Snapshot status",
11
+ "snapshot": "Snapshot",
10
12
  "tasks": "Tasks",
11
13
  "blockers": "Blockers",
12
14
  "advice": "Advice",
@@ -23,6 +25,7 @@ window.HarnessI18n = {
23
25
  "missingBriefs": "tasks still need human visibility briefs.",
24
26
  "reviewAdvice": "Continue, but keep adoption advice visible.",
25
27
  "noBlockers": "No blockers in this snapshot.",
28
+ "snapshotNotValidated": "Snapshot only; run validated status before release decisions.",
26
29
  "firstLook": "First look",
27
30
  "projectFlow": "Project Flow",
28
31
  "projectProgress": "Project Progress",
@@ -77,12 +80,6 @@ window.HarnessI18n = {
77
80
  "moduleTasks": "Module Tasks",
78
81
  "noModuleTasks": "No module tasks.",
79
82
  "migration": "Migration",
80
- "migrationSnapshot": "Migration Snapshot",
81
- "taskPreset": "Task preset",
82
- "targetLevel": "Target level",
83
- "achievedLevel": "Achieved level",
84
- "strictDeferred": "Strict deferred",
85
- "evidenceBundle": "Evidence bundle",
86
83
  "migrationSummary": "Migration Attention",
87
84
  "migrationWorkbench": "Migration Workbench",
88
85
  "aggregateMigrationView": "aggregate migration view",
@@ -138,6 +135,7 @@ window.HarnessI18n = {
138
135
  "state_pass": "pass",
139
136
  "state_warn": "warn",
140
137
  "state_fail": "fail",
138
+ "state_snapshot": "snapshot",
141
139
  "state_in_progress": "in progress",
142
140
  "state_planned": "planned",
143
141
  "state_review": "review",
@@ -174,20 +172,39 @@ window.HarnessI18n = {
174
172
  "layout": "View Layout",
175
173
  "layoutList": "List View",
176
174
  "layoutGrid": "Grid View",
175
+ "sortByTime": "Time order",
176
+ "sortNewest": "Newest first",
177
+ "sortOldest": "Oldest first",
178
+ "activeBriefCount": "{count} briefs · {order}",
179
+ "copyTaskName": "Copy task folder name",
180
+ "copyTaskNameShort": "Copy",
181
+ "copyTaskNameSuccess": "Copied",
182
+ "copyTaskNameFailed": "Failed",
177
183
  "legacyState": "Task state",
178
184
  "lifecycleState": "Lifecycle",
179
185
  "reviewStatus": "Review",
180
- "closeoutStatus": "Closeout",
186
+ "sedimentationStatus": "Sedimentation",
187
+ "closeoutStatus": "Finalization",
188
+ "lifecycleQueues": "Lifecycle queues",
189
+ "queueReasons": "Queue reasons",
181
190
  "state_closing": "closing",
182
191
  "state_closed": "closed",
183
192
  "state_ready": "ready",
184
193
  "state_in_review": "in review",
185
194
  "state_review-blocked": "review blocked",
195
+ "state_closed-review-pending": "closed, review pending",
186
196
  "state_missing": "missing",
187
197
  "state_required": "required",
188
- "state_reviewed-unconfirmed": "reviewed",
198
+ "state_agent-reviewed": "agent reviewed",
189
199
  "state_confirmed": "confirmed",
190
200
  "state_blocked-open-findings": "blocked findings",
201
+ "state_not-in-queue": "not in queue",
202
+ "state_needs-material": "needs material",
203
+ "state_ready-to-confirm": "ready to confirm",
204
+ "state_closed-debt": "closed debt",
205
+ "state_missing-materials": "missing materials",
206
+ "state_soft-deleted-superseded": "soft-deleted / superseded",
207
+ "state_finalized": "finalized",
191
208
  "reviewActions": "Review Actions",
192
209
  "reviewWorkspace": "Review Workspace",
193
210
  "openReviewWorkspace": "Open Review Workspace",
@@ -197,14 +214,52 @@ window.HarnessI18n = {
197
214
  "documentMissing": "Document missing from this snapshot.",
198
215
  "staticReadOnly": "Static snapshot is read-only",
199
216
  "staticReadOnlyDetail": "Use the dynamic workbench to submit review or governance actions.",
200
- "reviewQueueSubtitle": "Only tasks currently in the execution Review stage appear here. Closeout is tracked separately.",
217
+ "reviewQueueSubtitle": "Routes tasks by lifecycle queue so review work, repairs, blockers, lessons, finalized records, and superseded history stay separate.",
218
+ "reviewQueueTabs": "Lifecycle queues",
219
+ "queueReview": "Review",
220
+ "queueReviewDesc": "Only tasks whose taskQueues include review. These are ready for human review confirmation.",
221
+ "queueMissingMaterials": "Missing Materials",
222
+ "queueMissingMaterialsDesc": "Tasks missing review submissions, walkthroughs, lesson decisions, or other required materials.",
223
+ "queueBlocked": "Blocked",
224
+ "queueBlockedDesc": "Tasks with open blocking findings or state conflicts that prevent confirmation.",
225
+ "queueLessons": "Lessons",
226
+ "queueLessonsDesc": "Tasks with lesson candidates or promotion work that still needs governance routing.",
227
+ "queueConfirmedFinalized": "Confirmed / Finalized",
228
+ "queueConfirmedFinalizedDesc": "Human-confirmed tasks and finalized records kept for audit and closeout follow-through.",
229
+ "queueSoftDeletedSuperseded": "Soft-deleted / Superseded",
230
+ "queueSoftDeletedSupersededDesc": "Historical tasks with tombstones, replacements, merges, archives, or abandoned state.",
231
+ "reasonFilter": "Reason filter",
232
+ "allReasons": "All reasons",
233
+ "reason": "Reason",
234
+ "sortBy": "Sort by",
235
+ "sortQueuePriority": "Queue priority",
236
+ "sortTaskId": "Task ID",
237
+ "reviewSubmitted": "Review submitted",
238
+ "materialsReady": "Materials ready",
239
+ "yes": "Yes",
240
+ "no": "No",
241
+ "copyRepairPrompt": "Copy repair prompt",
242
+ "copyRepairPromptSuccess": "Prompt copied",
243
+ "copyLessonPrompt": "Copy lesson prompt",
244
+ "createLessonTask": "Create sedimentation task",
245
+ "openFollowUpTask": "Open follow-up task",
246
+ "lessonSedimentationActions": "Sedimentation actions",
247
+ "lessonWorkbenchRequired": "Creation is available in the dynamic workbench. The prompt can still be copied from this snapshot.",
248
+ "moreLessonCandidates": "+{count} more candidates in full workspace",
249
+ "lessonTaskCreating": "Creating task...",
250
+ "lessonTaskCreated": "Task created",
251
+ "lessonTaskCreateFailed": "Lesson task creation failed",
252
+ "noQueueTasks": "No tasks in this lifecycle queue.",
201
253
  "reviewReady": "Ready",
254
+ "reviewNeedsMaterial": "Needs material",
255
+ "reviewClosedDebt": "Closed debt",
202
256
  "reviewBlockedQueue": "Blocked",
203
257
  "reviewConfirmedQueue": "Confirmed",
204
258
  "noReviewTasks": "No tasks are currently in review.",
205
259
  "reviewAlreadyConfirmed": "Human review is already confirmed.",
206
260
  "reviewBlocked": "Close P0-P2 open or release-blocking findings before confirming.",
207
261
  "reviewWalkthroughRequired": "Add and link a walkthrough in Closeout SSoT before confirming human review.",
262
+ "reviewQueueRequired": "This task is not in the canonical Review queue.",
208
263
  "reviewWorkbenchReady": "Confirm the human review when the evidence and findings are checked.",
209
264
  "reviewConfirmChecklist": "I checked the walkthrough, task review evidence, and open findings.",
210
265
  "confirmReviewComplete": "Confirm Human Review",
@@ -212,16 +267,83 @@ window.HarnessI18n = {
212
267
  "reviewConfirmTextMismatch": "Type the task id shown in the input hint.",
213
268
  "reviewSubmitting": "Submitting review confirmation...",
214
269
  "reviewCompleteSuccess": "Review confirmed. Reloading snapshot...",
215
- "reviewCompleteFailed": "Review confirmation failed"
270
+ "reviewCompleteFailed": "Review confirmation failed",
271
+ "presetCatalog": "Presets",
272
+ "presetCatalogSubtitle": "Manage project, user, and bundled task method packages. Precedence is project first, then user, then bundled.",
273
+ "presetSearch": "Search presets",
274
+ "presetSearchPlaceholder": "Search id, purpose, kind, source, or path",
275
+ "presetSourceFilter": "Preset source filter",
276
+ "allPresets": "All",
277
+ "presetSourceProject": "Project",
278
+ "presetSourceUser": "User",
279
+ "presetSourceBuiltin": "Builtin",
280
+ "presetSource_project": "Project",
281
+ "presetSource_user": "User",
282
+ "presetSource_builtin": "Builtin",
283
+ "presetEffective": "Effective",
284
+ "presetShadowed": "Shadowed",
285
+ "presetSources": "Preset Sources",
286
+ "presetSourcesHint": "Roots are read in precedence order. Higher layers override lower layers with the same id.",
287
+ "presetPriorityTitle": "Preset precedence",
288
+ "presetCollection": "Preset collection",
289
+ "presetCollectionHint": "Select a preset to inspect its manifest and actions.",
290
+ "presetLayerStack": "Layer stack for this id",
291
+ "presetLayerStackHint": "Project presets override user presets. User presets override bundled presets.",
292
+ "presetContextActions": "Selected preset actions",
293
+ "presetCheckHint": "Validate the currently selected preset manifest.",
294
+ "presetShadowedActionHint": "This layer is shadowed. CLI check and inspect commands resolve the effective preset by id, so they are disabled here.",
295
+ "presetCheckSelected": "Check selected preset",
296
+ "presetUninstallSelected": "Uninstall selected layer",
297
+ "presetUninstallHint": "Scope is locked to the selected project or user layer.",
298
+ "presetBuiltinImmutable": "Bundled presets are package defaults and cannot be uninstalled.",
299
+ "presetImportTitle": "Import preset",
300
+ "presetImportHint": "Install a local folder, .zip archive, or bundled preset id into a project or user layer.",
301
+ "presetRestoreBundled": "Restore bundled presets",
302
+ "presetRestoreBundledHint": "Copies bundled presets into the selected local layer. CLI name: preset seed.",
303
+ "presetCommandsEffectiveOnly": "CLI inspect/check commands resolve the effective preset by id. This shadowed layer is shown for comparison only.",
304
+ "noPresets": "No presets found.",
305
+ "version": "Version",
306
+ "manifestVersion": "Manifest version",
307
+ "manifestPath": "Manifest path",
308
+ "source": "Source",
309
+ "scope": "Scope",
310
+ "taskKind": "Task kind",
311
+ "budgets": "Budgets",
312
+ "inputs": "Inputs",
313
+ "writeScopes": "Write scopes",
314
+ "requiredReads": "Required reads",
315
+ "presetActions": "Preset Actions",
316
+ "presetWorkbenchRequired": "Use the dynamic workbench to manage presets. Static snapshots are read-only.",
317
+ "presetCheck": "Check preset",
318
+ "presetInstall": "Install preset",
319
+ "presetSeed": "Restore bundled presets",
320
+ "presetUninstall": "Uninstall preset",
321
+ "presetInstallSourcePlaceholder": "Local folder, .zip, or bundled preset id",
322
+ "forceOverwrite": "Force overwrite",
323
+ "confirmPresetId": "Confirm preset id",
324
+ "copyPresetId": "Copy preset ID",
325
+ "copyIdShort": "Copy ID",
326
+ "copyCommand": "Copy command",
327
+ "useSelectedId": "Use selected ID",
328
+ "presetConfirmRequired": "Use the selected ID before uninstalling.",
329
+ "presetActionRunning": "Running preset action",
330
+ "presetActionSuccess": "Preset action completed",
331
+ "presetActionFailed": "Preset action failed",
332
+ "created": "created",
333
+ "skipped": "skipped",
334
+ "removed": "removed",
335
+ "notInstalled": "not installed"
216
336
  },
217
337
  "zh": {
218
338
  "eyebrow": "Coding Agent Harness 控制台",
219
339
  "projectCockpit": "控制台",
220
340
  "overview": "总览",
221
341
  "taskIndex": "任务索引",
222
- "reviewQueue": "审查队列",
342
+ "reviewQueue": "生命周期队列工作台",
223
343
  "moduleView": "模块",
224
344
  "readiness": "发布状态",
345
+ "snapshotStatus": "快照状态",
346
+ "snapshot": "快照",
225
347
  "tasks": "任务",
226
348
  "blockers": "阻塞",
227
349
  "advice": "建议",
@@ -238,6 +360,7 @@ window.HarnessI18n = {
238
360
  "missingBriefs": "个任务缺少给人看的 brief。",
239
361
  "reviewAdvice": "可以继续,但升级建议必须保持可见。",
240
362
  "noBlockers": "当前快照没有阻塞项。",
363
+ "snapshotNotValidated": "这里只是快照;发布决策前请运行完整验证状态。",
241
364
  "firstLook": "第一眼",
242
365
  "projectFlow": "项目流程图",
243
366
  "projectProgress": "项目进度",
@@ -292,12 +415,6 @@ window.HarnessI18n = {
292
415
  "moduleTasks": "模块任务",
293
416
  "noModuleTasks": "没有模块任务。",
294
417
  "migration": "迁移",
295
- "migrationSnapshot": "迁移快照",
296
- "taskPreset": "任务 preset",
297
- "targetLevel": "目标等级",
298
- "achievedLevel": "实际完成等级",
299
- "strictDeferred": "Strict deferred",
300
- "evidenceBundle": "证据包",
301
418
  "migrationSummary": "迁移关注项",
302
419
  "migrationWorkbench": "迁移工作台",
303
420
  "aggregateMigrationView": "聚合迁移视图",
@@ -346,6 +463,7 @@ window.HarnessI18n = {
346
463
  "state_pass": "通过",
347
464
  "state_warn": "警告",
348
465
  "state_fail": "失败",
466
+ "state_snapshot": "快照",
349
467
  "state_in_progress": "进行中",
350
468
  "state_planned": "计划中",
351
469
  "state_review": "审查中",
@@ -389,20 +507,39 @@ window.HarnessI18n = {
389
507
  "layout": "展示布局",
390
508
  "layoutList": "列表布局",
391
509
  "layoutGrid": "网格布局",
510
+ "sortByTime": "时间排序",
511
+ "sortNewest": "最新优先",
512
+ "sortOldest": "最早优先",
513
+ "activeBriefCount": "{count} 个 Brief · {order}",
514
+ "copyTaskName": "复制任务文件夹名",
515
+ "copyTaskNameShort": "复制",
516
+ "copyTaskNameSuccess": "已复制",
517
+ "copyTaskNameFailed": "失败",
392
518
  "legacyState": "任务状态",
393
519
  "lifecycleState": "生命周期",
394
520
  "reviewStatus": "审查状态",
395
- "closeoutStatus": "收口状态",
396
- "state_closing": "收口中",
521
+ "sedimentationStatus": "沉淀状态",
522
+ "closeoutStatus": "结项状态",
523
+ "lifecycleQueues": "生命周期队列",
524
+ "queueReasons": "队列原因",
525
+ "state_closing": "结项中",
397
526
  "state_closed": "已关闭",
398
527
  "state_ready": "就绪",
399
528
  "state_in_review": "审查中",
400
529
  "state_review-blocked": "审查阻塞",
530
+ "state_closed-review-pending": "已结项待人审",
401
531
  "state_missing": "缺失",
402
532
  "state_required": "待审查",
403
- "state_reviewed-unconfirmed": "已审未确认",
533
+ "state_agent-reviewed": "Agent 自查",
404
534
  "state_confirmed": "已确认",
405
535
  "state_blocked-open-findings": "发现阻塞",
536
+ "state_not-in-queue": "不在队列",
537
+ "state_needs-material": "材料不齐",
538
+ "state_ready-to-confirm": "可确认",
539
+ "state_closed-debt": "结项待确认",
540
+ "state_missing-materials": "材料不齐",
541
+ "state_soft-deleted-superseded": "软删除 / 已替代",
542
+ "state_finalized": "已最终结项",
406
543
  "reviewActions": "审查操作",
407
544
  "reviewWorkspace": "审查工作台",
408
545
  "openReviewWorkspace": "打开审查工作台",
@@ -412,14 +549,52 @@ window.HarnessI18n = {
412
549
  "documentMissing": "当前快照中没有这个文档。",
413
550
  "staticReadOnly": "静态快照只读",
414
551
  "staticReadOnlyDetail": "需要提交审查或治理动作时,请使用动态 workbench。",
415
- "reviewQueueSubtitle": "这里只显示当前处在执行审查阶段的任务;收口状态单独跟踪。",
552
+ "reviewQueueSubtitle": "按生命周期队列拆分审查、材料修复、阻塞、教训沉淀、已确认结项和已替代历史任务。",
553
+ "reviewQueueTabs": "生命周期队列",
554
+ "queueReview": "Review",
555
+ "queueReviewDesc": "只显示 taskQueues 包含 review 的任务,这些任务等待人工审查确认。",
556
+ "queueMissingMaterials": "Missing Materials",
557
+ "queueMissingMaterialsDesc": "缺少审查提交、Walkthrough、lesson 判定或其他必需材料的任务。",
558
+ "queueBlocked": "Blocked",
559
+ "queueBlockedDesc": "存在开放阻塞发现或状态冲突,当前不能确认审查的任务。",
560
+ "queueLessons": "Lessons",
561
+ "queueLessonsDesc": "还有 lesson candidate 或 promotion 治理动作需要处理的任务。",
562
+ "queueConfirmedFinalized": "Confirmed / Finalized",
563
+ "queueConfirmedFinalizedDesc": "已经人工确认或最终结项的任务,用于审计和结项追踪。",
564
+ "queueSoftDeletedSuperseded": "Soft-deleted / Superseded",
565
+ "queueSoftDeletedSupersededDesc": "带 tombstone、替代、合并、归档或废弃状态的历史任务。",
566
+ "reasonFilter": "原因筛选",
567
+ "allReasons": "全部原因",
568
+ "reason": "原因",
569
+ "sortBy": "排序",
570
+ "sortQueuePriority": "队列优先级",
571
+ "sortTaskId": "任务 ID",
572
+ "reviewSubmitted": "已提交审查",
573
+ "materialsReady": "材料就绪",
574
+ "yes": "是",
575
+ "no": "否",
576
+ "copyRepairPrompt": "复制修复提示",
577
+ "copyRepairPromptSuccess": "已复制提示",
578
+ "copyLessonPrompt": "复制沉淀提示",
579
+ "createLessonTask": "创建沉淀任务",
580
+ "openFollowUpTask": "打开后续任务",
581
+ "lessonSedimentationActions": "沉淀操作",
582
+ "lessonWorkbenchRequired": "创建任务需要使用动态 workbench;当前快照仍可复制沉淀提示。",
583
+ "moreLessonCandidates": "还有 {count} 个候选,请进详情查看",
584
+ "lessonTaskCreating": "正在创建任务...",
585
+ "lessonTaskCreated": "任务已创建",
586
+ "lessonTaskCreateFailed": "沉淀任务创建失败",
587
+ "noQueueTasks": "这个生命周期队列暂无任务。",
416
588
  "reviewReady": "待确认",
589
+ "reviewNeedsMaterial": "材料不齐",
590
+ "reviewClosedDebt": "收口待确认",
417
591
  "reviewBlockedQueue": "阻塞",
418
592
  "reviewConfirmedQueue": "已确认",
419
593
  "noReviewTasks": "当前没有处在审查阶段的任务。",
420
594
  "reviewAlreadyConfirmed": "人工审查已经确认。",
421
595
  "reviewBlocked": "先关闭 P0-P2 开放项或阻塞发布的发现,再确认审查。",
422
596
  "reviewWalkthroughRequired": "先在 Closeout SSoT 中补充并链接 Walkthrough,再确认人工审查。",
597
+ "reviewQueueRequired": "这个任务不在 canonical Review 队列中。",
423
598
  "reviewWorkbenchReady": "确认前请核对审查证据与开放发现。",
424
599
  "reviewConfirmChecklist": "我已核对 Walkthrough、任务审查证据和开放发现。",
425
600
  "confirmReviewComplete": "确认人工审查",
@@ -427,6 +602,71 @@ window.HarnessI18n = {
427
602
  "reviewConfirmTextMismatch": "请输入提示中的任务 ID。",
428
603
  "reviewSubmitting": "正在提交审查确认...",
429
604
  "reviewCompleteSuccess": "审查已确认,正在刷新快照...",
430
- "reviewCompleteFailed": "审查确认失败"
605
+ "reviewCompleteFailed": "审查确认失败",
606
+ "presetCatalog": "Preset",
607
+ "presetCatalogSubtitle": "管理项目级、用户级和内置任务方法包。优先级是项目级、用户级、内置。",
608
+ "presetSearch": "搜索 preset",
609
+ "presetSearchPlaceholder": "搜索 ID、用途、类型、来源或路径",
610
+ "presetSourceFilter": "Preset 来源筛选",
611
+ "allPresets": "全部",
612
+ "presetSourceProject": "项目级",
613
+ "presetSourceUser": "用户级",
614
+ "presetSourceBuiltin": "内置",
615
+ "presetSource_project": "项目级",
616
+ "presetSource_user": "用户级",
617
+ "presetSource_builtin": "内置",
618
+ "presetEffective": "生效",
619
+ "presetShadowed": "被覆盖",
620
+ "presetSources": "Preset 来源",
621
+ "presetSourcesHint": "系统按优先级读取来源;同名时高优先级会覆盖低优先级。",
622
+ "presetPriorityTitle": "Preset 优先级",
623
+ "presetCollection": "Preset 列表",
624
+ "presetCollectionHint": "选择一个 preset,查看 manifest 详情和可用操作。",
625
+ "presetLayerStack": "同名层级",
626
+ "presetLayerStackHint": "项目级覆盖用户级,用户级覆盖内置。",
627
+ "presetContextActions": "当前 preset 操作",
628
+ "presetCheckHint": "校验当前选中的 preset manifest。",
629
+ "presetShadowedActionHint": "当前层级已被覆盖。CLI 检查和详情命令会按 ID 解析到生效 preset,因此这里禁用。",
630
+ "presetCheckSelected": "检查当前 preset",
631
+ "presetUninstallSelected": "卸载当前层级",
632
+ "presetUninstallHint": "范围会锁定到当前选中的项目级或用户级层。",
633
+ "presetBuiltinImmutable": "内置 preset 是包默认内容,不能卸载。",
634
+ "presetImportTitle": "导入 preset",
635
+ "presetImportHint": "把本地文件夹、.zip 压缩包或内置 preset ID 安装到项目级或用户级。",
636
+ "presetRestoreBundled": "恢复内置 preset",
637
+ "presetRestoreBundledHint": "把包内置 presets 写入选中的本地层级。CLI 名称是 preset seed。",
638
+ "presetCommandsEffectiveOnly": "CLI 详情/检查命令会按 ID 解析到生效 preset;当前被覆盖层只用于对比查看。",
639
+ "noPresets": "没有找到 preset。",
640
+ "version": "版本",
641
+ "manifestVersion": "Manifest 版本",
642
+ "manifestPath": "Manifest 路径",
643
+ "source": "来源",
644
+ "scope": "范围",
645
+ "taskKind": "任务类型",
646
+ "budgets": "预算",
647
+ "inputs": "输入项",
648
+ "writeScopes": "写入范围",
649
+ "requiredReads": "必读引用",
650
+ "presetActions": "Preset 操作",
651
+ "presetWorkbenchRequired": "管理 preset 需要使用动态 workbench;静态快照只读。",
652
+ "presetCheck": "检查 preset",
653
+ "presetInstall": "安装 preset",
654
+ "presetSeed": "恢复内置 preset",
655
+ "presetUninstall": "卸载 preset",
656
+ "presetInstallSourcePlaceholder": "本机文件夹、.zip 或内置 preset ID",
657
+ "forceOverwrite": "强制覆盖",
658
+ "confirmPresetId": "确认 preset ID",
659
+ "copyPresetId": "复制 preset ID",
660
+ "copyIdShort": "复制 ID",
661
+ "copyCommand": "复制命令",
662
+ "useSelectedId": "使用当前 ID",
663
+ "presetConfirmRequired": "卸载前请先使用当前 ID 完成确认。",
664
+ "presetActionRunning": "正在执行 preset 操作",
665
+ "presetActionSuccess": "Preset 操作完成",
666
+ "presetActionFailed": "Preset 操作失败",
667
+ "created": "已创建",
668
+ "skipped": "已跳过",
669
+ "removed": "已移除",
670
+ "notInstalled": "未安装"
431
671
  }
432
672
  };
@@ -2,38 +2,26 @@
2
2
 
3
3
  ## Purpose
4
4
 
5
- Track whether each meaningful task kept the harness contract intact: planning, scope control, SSoT updates, regression evidence, review, walkthrough, lessons, and reference routing.
5
+ Generated canonical task lifecycle index. Humans should use the Dashboard for current status; agents should use `task-list`, `task-index`, or this generated ledger for low-cost lookup.
6
6
 
7
- ## Status Legend
7
+ This file is not a hand-written work log. Do not edit lifecycle rows manually. Update task-local facts (`task_plan.md`, `progress.md`, `review.md`, `lesson_candidates.md`, closeout / walkthrough evidence), then run `harness governance rebuild --archive --apply`.
8
8
 
9
- | Status | Meaning | Required Next Step |
10
- | --- | --- | --- |
11
- | proposed | Work is identified but not accepted into active execution. | Assign an owner or reject with a reason. |
12
- | planned | Scope, owner, and expected evidence are known. | Start execution or update schedule. |
13
- | active | Work is in progress. | Keep task plan and evidence current. |
14
- | review | Implementation is complete and waiting for review or verification. | Complete review and regression gates. |
15
- | blocked | Work cannot proceed without a decision or dependency. | Record blocker owner and unblock condition. |
16
- | closed | Work is complete and closeout evidence exists. | Archive only when no longer operationally useful. |
17
- | archived | Entry is historical and no longer part of active coordination. | Keep a pointer to the archive location. |
9
+ Repo Governance / CI-CD changes remain routed through their reference standards and task evidence. Regression gates, delivery sequencing, cadence rules, closeout contracts, and module ownership remain in their dedicated governance files until explicitly replaced by equivalent scanner-supported facts.
18
10
 
19
11
  ## Active Ledger
20
12
 
21
- | ID | Task or Change | Owner | Status | Plan | Feature or Delivery SSoT | Regression Evidence | Review Evidence | Walkthrough | Lessons Check | Residual | Updated |
13
+ | ID | Scope | Module | Task | State | Queues | Plan | Review | Lessons Check | Closeout | Residual | Updated |
22
14
  | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
23
- | HL-YYYY-MM-DD-001 | Short operational title | owner | planned | docs/09-PLANNING/TASKS/.../task_plan.md | F-000 or D-000 | RG-000 or n/a | review.md or n/a | pending | pending | none | YYYY-MM-DD |
15
+ | HL-YYYY-MM-DD-001 | task | none | Short operational title | planned | none | docs/09-PLANNING/TASKS/.../task_plan.md | pending | pending | pending | none | YYYY-MM-DD |
24
16
 
25
- ## Routing Rules
17
+ ## Field Rules
26
18
 
27
- 1. Create or update one ledger row for every non-trivial feature, refactor, release, harness update, or multi-agent handoff.
28
- 2. Link to durable files and commands. Do not rely on chat history as evidence.
29
- 3. If a task changes product behavior, route it through Feature SSoT or Delivery SSoT.
30
- 4. If a task changes regression expectations, route it through Regression SSoT and Cadence Ledger.
31
- 5. If a task changes agent process, documentation standards, or repeatable checks, route it through Lessons SSoT.
32
- 6. A row can move to `closed` only when the walkthrough, regression evidence, review disposition, and lessons check are recorded.
19
+ - `Scope`: `task` for root planning tasks, `module` for module-local tasks.
20
+ - `Module`: module key, or `none`.
21
+ - `Queues`: scanner-derived lifecycle queues; query with `harness task-list --queue`.
22
+ - `Review`, `Lessons Check`, `Closeout`, and `Residual`: scanner-derived summaries and routes. Detailed evidence stays in task-local files.
23
+ - `Updated`: generation date, not a manual edit timestamp.
33
24
 
34
- ## Archive Rules
25
+ ## Legacy Tables
35
26
 
36
- - Keep active, blocked, review, and recently closed rows in this file.
37
- - Move old closed rows to `docs/01-GOVERNANCE/archive/` or the project archive path when they no longer affect current coordination.
38
- - Preserve the ledger ID, final status, closeout link, and archive date in any archive entry.
39
- - Never delete a row to hide skipped verification, `accepted-risk`, or unresolved review feedback.
27
+ `Feature-SSoT.md` and `Private-Feature-SSoT.md` are legacy task lifecycle projections. Current Harness versions archive them during `harness governance rebuild --archive --apply` and do not regenerate them.
@@ -39,7 +39,7 @@ Describe the recurring architecture, ownership, phase-gate, or operating-process
39
39
  ## Acceptance Criteria
40
40
 
41
41
  - The new rule has a durable home in a reference, template, checker, or project operating model.
42
- - The Lessons SSoT row links this detail doc and the applied change.
42
+ - This promoted lesson detail doc links the applied change and the closeout record.
43
43
  - Existing active tasks know whether the new rule applies immediately or only to future work.
44
44
 
45
45
  ## Disposition
@@ -43,7 +43,7 @@ Describe the missing reference document, template, checklist, or operating guide
43
43
 
44
44
  - The new document exists at the target path and is linked from the relevant index or entrypoint.
45
45
  - The document contains operational rules, not background essay content.
46
- - The Lessons SSoT row links this detail doc and the new document.
46
+ - This promoted lesson detail doc links the new document and the closeout record.
47
47
 
48
48
  ## Disposition
49
49
 
@@ -37,7 +37,7 @@ ref-change
37
37
  ## Acceptance Criteria
38
38
 
39
39
  - The target reference, template, or checker is updated.
40
- - The update is linked from Lessons SSoT.
40
+ - The update is linked from this promoted lesson detail doc and the closeout record.
41
41
  - Any active task affected by the rule has a migration or no-impact note.
42
42
 
43
43
  ## Disposition
@@ -0,0 +1,87 @@
1
+ # {{TASK_TITLE}} - Task Package Index
2
+
3
+ Task Contract: harness-task/v1
4
+
5
+ ## Task Identity
6
+
7
+ | Field | Value |
8
+ | --- | --- |
9
+ | Task ID | `{{TASK_ID}}` |
10
+ | Budget | `{{TASK_BUDGET}}` |
11
+ | Preset | `{{TASK_PRESET}}` |
12
+ | Module | `{{TASK_MODULE}}` |
13
+ | Long-running | `{{TASK_LONG_RUNNING}}` |
14
+ | Created | {{DATE}} |
15
+
16
+ ## Task Audit Metadata
17
+
18
+ | Field | Value |
19
+ | --- | --- |
20
+ | Created By | {{TASK_AUDIT_CREATED_BY}} |
21
+ | Created At | {{TASK_AUDIT_CREATED_AT}} |
22
+ | Command Shape | {{TASK_AUDIT_COMMAND_SHAPE}} |
23
+ | Budget | {{TASK_AUDIT_BUDGET}} |
24
+ | Template Source | {{TASK_AUDIT_TEMPLATE_SOURCE}} |
25
+ | Task Creator | {{TASK_AUDIT_TASK_CREATOR}} |
26
+ | Task Creator Source | {{TASK_AUDIT_TASK_CREATOR_SOURCE}} |
27
+ | Human Review Status | {{TASK_AUDIT_HUMAN_REVIEW_STATUS}} |
28
+ | Confirmation ID | {{TASK_AUDIT_CONFIRMATION_ID}} |
29
+ | Confirmed At | {{TASK_AUDIT_CONFIRMED_AT}} |
30
+ | Reviewer | {{TASK_AUDIT_REVIEWER}} |
31
+ | Reviewer Email | {{TASK_AUDIT_REVIEWER_EMAIL}} |
32
+ | Confirm Text | {{TASK_AUDIT_CONFIRM_TEXT}} |
33
+ | Evidence Checked | {{TASK_AUDIT_EVIDENCE_CHECKED}} |
34
+ | Review Commit SHA | {{TASK_AUDIT_REVIEW_COMMIT_SHA}} |
35
+ | Audit Source | {{TASK_AUDIT_AUDIT_SOURCE}} |
36
+ | Audit Status | {{TASK_AUDIT_AUDIT_STATUS}} |
37
+ | Exception Reason | {{TASK_AUDIT_EXCEPTION_REASON}} |
38
+ | Message | {{TASK_AUDIT_MESSAGE}} |
39
+ | Migration Status | {{TASK_AUDIT_MIGRATION_STATUS}} |
40
+ | Migrated From | {{TASK_AUDIT_MIGRATED_FROM}} |
41
+ | Legacy Extra Fields | {{TASK_AUDIT_LEGACY_EXTRA_FIELDS}} |
42
+ | Migration Notes | {{TASK_AUDIT_MIGRATION_NOTES}} |
43
+
44
+ ## Core Contract Files
45
+
46
+ | File | Purpose |
47
+ | --- | --- |
48
+ | `brief.md` | Human-readable task summary and context entry. |
49
+ | `task_plan.md` | Current task goal, scope, selected budget, acceptance, and operating decisions. |
50
+ | `visual_map.md` | Phase map, evidence status, next lifecycle commands, and supporting diagrams. |
51
+ | `progress.md` | Execution log, verification evidence, decisions, and handoff notes. |
52
+
53
+ ## Standard Task Files
54
+
55
+ These files exist for standard and complex tasks.
56
+
57
+ | File | Purpose |
58
+ | --- | --- |
59
+ | `execution_strategy.md` | Execution mode, ownership, conflict control, and evidence strategy. |
60
+ | `findings.md` | Findings, research notes, accepted risks, and unresolved questions. |
61
+ | `lesson_candidates.md` | Task-local lesson candidate decisions before closeout. |
62
+ | `review.md` | Agent review submission, adversarial review, findings, evidence, and routing. |
63
+
64
+ ## Optional Indexes
65
+
66
+ | Index | Purpose |
67
+ | --- | --- |
68
+ | `references/INDEX.md` | References and preset-provided required reads. |
69
+ | `artifacts/INDEX.md` | Generated outputs, evidence bundles, screenshots, reports, and command artifacts. |
70
+
71
+ ## Preset Summary
72
+
73
+ This section is system-rendered. Presets may not add custom root-level files or arbitrary root `INDEX.md` content.
74
+
75
+ | Field | Value |
76
+ | --- | --- |
77
+ | Preset | `{{TASK_PRESET}}` |
78
+ | Preset Version | `{{TASK_PRESET_VERSION}}` |
79
+ | Evidence Bundle | `{{TASK_EVIDENCE_BUNDLE}}` |
80
+ | Resource Indexes | `references/INDEX.md`; `artifacts/INDEX.md` |
81
+
82
+ ## Update Rules
83
+
84
+ - Update status and decisions in `progress.md`.
85
+ - Keep task-specific goals and acceptance in `task_plan.md`.
86
+ - Put large command output, screenshots, reports, and generated files in `artifacts/INDEX.md`.
87
+ - Put source material, external links, and preset required reads in `references/INDEX.md`.
@@ -24,7 +24,7 @@ State the user-visible or project-visible result this task must deliver.
24
24
 
25
25
  - Owner: coordinator
26
26
  - Lifecycle state: not_started
27
- - Required files: `task_plan.md`, `execution_strategy.md`, `visual_map.md`, `progress.md`, `findings.md`, `review.md`
27
+ - Required files: `INDEX.md`, `task_plan.md`, `execution_strategy.md`, `visual_map.md`, `progress.md`, `findings.md`, `review.md`
28
28
  - Required closeout: verification evidence recorded in `progress.md`
29
29
 
30
30
  ## First Next Step
@@ -4,6 +4,37 @@
4
4
 
5
5
  [Describe the execution approach, including why this operating model fits the risk and scope.]
6
6
 
7
+ ## Subagent Authorization
8
+
9
+ Read this section at the start of the task and report the current authorization state before delegating.
10
+ This is an audit record, not an execution sandbox.
11
+
12
+ | Role | Status | Permission | Authorized By | Authorized At | Scope | Worktree / Branch | Reuse |
13
+ | --- | --- | --- | --- | --- | --- | --- | --- |
14
+ | reviewer subagent | allowed by default | read-only | harness task policy | task creation | current task review | n/a | allowed within this task |
15
+ | worker subagent | not authorized | write only after user approval | pending | pending | pending | pending | allowed only within approved task/scope |
16
+
17
+ ## Subagent Delegation Decision
18
+
19
+ At task start, the coordinator must make this decision from the user's goal, even if the user never mentions subagents.
20
+ Do not expect the user to know what a subagent or worker is. If delegation would help, explain the benefit in plain language and ask for permission once.
21
+ It is fine to say "subagent" or "worker" to the user; the important rule is that the agent must not wait for the user to ask for them.
22
+ If the task is clearly split into independent slices, decide `ask-user` before implementation. If exact file paths are still unknown, first identify the paths, then immediately ask for the independent execution helper authorization.
23
+
24
+ | Question | Decision | Reason | Next Action |
25
+ | --- | --- | --- | --- |
26
+ | Should a reviewer subagent be used? | yes / no | [why reviewer review helps or is unnecessary] | If yes, call a read-only reviewer without asking for extra permission. |
27
+ | Would a worker subagent materially help? | no / ask-user / already-authorized | [parallel slice, independent implementation, focused investigation, or not useful] | If ask-user, ask directly: "This task is suitable for a worker subagent. Do you authorize me to assign one worker subagent to modify only [scope] in [worktree/branch] while I coordinate and review the result?" |
28
+
29
+ ## User Authorization Decision
30
+
31
+ If the worker decision above is `ask-user`, implementation is blocked until this table records the user's answer.
32
+ Allowed resolved states are `authorized`, `denied`, or `not-needed`. Do not leave this as `pending` after choosing `ask-user`.
33
+
34
+ | Gate | State | Decided By | Decided At | Scope | Worktree / Branch | Notes |
35
+ | --- | --- | --- | --- | --- | --- | --- |
36
+ | worker subagent | pending | pending | pending | pending | pending | Fill only after directly asking the user. |
37
+
7
38
  ## Operating Model
8
39
 
9
40
  - Model: solo / team / split-repo / program / waterfall / kanban / module-parallel