coding-agent-harness 1.0.4 → 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.
- package/CHANGELOG.md +7 -0
- package/LICENSE +661 -21
- package/LICENSE-EXCEPTION.md +37 -0
- package/README.md +33 -1
- package/README.zh-CN.md +23 -1
- package/SKILL.md +9 -8
- package/docs-release/architecture/overview.md +1 -1
- package/docs-release/architecture/overview.zh-CN.md +1 -1
- package/docs-release/architecture/system-explainer/01-system-overview.md +217 -0
- package/docs-release/architecture/system-explainer/02-module-dependency.md +257 -0
- package/docs-release/architecture/system-explainer/03-task-lifecycle.md +304 -0
- package/docs-release/architecture/system-explainer/04-check-and-governance.md +239 -0
- package/docs-release/architecture/system-explainer/05-data-flow.md +276 -0
- package/docs-release/architecture/system-explainer/06-preset-and-migration.md +303 -0
- package/docs-release/architecture/system-explainer/README.md +67 -0
- package/docs-release/architecture/system-explainer/en-US/01-system-overview.md +226 -0
- package/docs-release/architecture/system-explainer/en-US/02-module-dependency.md +263 -0
- package/docs-release/architecture/system-explainer/en-US/03-task-lifecycle.md +319 -0
- package/docs-release/architecture/system-explainer/en-US/04-check-and-governance.md +250 -0
- package/docs-release/architecture/system-explainer/en-US/05-data-flow.md +290 -0
- package/docs-release/architecture/system-explainer/en-US/06-preset-and-migration.md +323 -0
- package/docs-release/architecture/system-explainer/en-US/README.md +70 -0
- package/docs-release/guides/agent-installation.en-US.md +8 -7
- package/docs-release/guides/agent-installation.md +9 -7
- package/docs-release/guides/preset-development.md +26 -2
- package/docs-release/guides/task-state-machine.en-US.md +30 -13
- package/docs-release/guides/task-state-machine.md +30 -13
- package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/INDEX.md +60 -0
- package/package.json +3 -2
- package/references/harness-ledger.md +1 -1
- package/scripts/commands/migration-command.mjs +30 -0
- package/scripts/commands/task-command.mjs +26 -25
- package/scripts/harness.mjs +7 -3
- package/scripts/lib/capability-registry.mjs +17 -21
- package/scripts/lib/check-module-parallel.mjs +9 -16
- package/scripts/lib/check-profiles.mjs +35 -81
- package/scripts/lib/check-task-contracts.mjs +13 -5
- package/scripts/lib/core-shared.mjs +55 -2
- package/scripts/lib/dashboard-data.mjs +126 -18
- package/scripts/lib/dashboard-workbench.mjs +80 -1
- package/scripts/lib/dashboard-writer.mjs +6 -2
- package/scripts/lib/git-status-summary.mjs +1 -1
- package/scripts/lib/governance-sync.mjs +180 -83
- package/scripts/lib/harness-core.mjs +1 -0
- package/scripts/lib/markdown-utils.mjs +33 -0
- package/scripts/lib/migration-planner.mjs +4 -6
- package/scripts/lib/phase-kind.mjs +50 -0
- package/scripts/lib/preset-engine.mjs +5 -8
- package/scripts/lib/preset-registry.mjs +188 -39
- package/scripts/lib/review-confirm-git-gate.mjs +1 -1
- package/scripts/lib/status-builder.mjs +88 -0
- package/scripts/lib/status-dashboard-renderer.mjs +7 -4
- package/scripts/lib/task-audit-metadata.mjs +385 -0
- package/scripts/lib/task-audit-migration.mjs +350 -0
- package/scripts/lib/task-completion-consistency.mjs +11 -1
- package/scripts/lib/task-lifecycle/create-task-helpers.mjs +67 -0
- package/scripts/lib/task-lifecycle/phase-sync.mjs +88 -0
- package/scripts/lib/task-lifecycle/review-confirm.mjs +40 -29
- package/scripts/lib/task-lifecycle/review-gates.mjs +13 -10
- package/scripts/lib/task-lifecycle/review-submission.mjs +63 -0
- package/scripts/lib/task-lifecycle/scaffold-provenance.mjs +49 -0
- package/scripts/lib/task-lifecycle/template-files.mjs +53 -0
- package/scripts/lib/task-lifecycle.mjs +114 -147
- package/scripts/lib/task-metadata.mjs +118 -0
- package/scripts/lib/task-review-model.mjs +54 -68
- package/scripts/lib/task-scanner.mjs +70 -143
- package/skills/preset-creator/references/complex-task-skeleton/brief.md +11 -0
- package/templates/AGENTS.md.template +7 -5
- package/templates/dashboard/assets/app-src/00-state.js +12 -0
- package/templates/dashboard/assets/app-src/10-router.js +3 -0
- package/templates/dashboard/assets/app-src/20-overview.js +7 -3
- package/templates/dashboard/assets/app-src/35-task-detail.js +46 -6
- package/templates/dashboard/assets/app-src/55-presets.js +375 -0
- package/templates/dashboard/assets/app-src/60-shared.js +3 -1
- package/templates/dashboard/assets/app-src/90-bindings.js +131 -0
- package/templates/dashboard/assets/app.css +583 -0
- package/templates/dashboard/assets/app.css.manifest.json +1 -0
- package/templates/dashboard/assets/app.js +578 -10
- package/templates/dashboard/assets/app.manifest.json +1 -0
- package/templates/dashboard/assets/css-src/00-foundation.css +4 -0
- package/templates/dashboard/assets/css-src/40-detail-modules-migration.css +62 -0
- package/templates/dashboard/assets/css-src/45-presets.css +516 -0
- package/templates/dashboard/assets/i18n.js +140 -2
- package/templates/planning/INDEX.md +87 -0
- package/templates/planning/brief.md +1 -1
- package/templates/planning/module_session_prompt.md +1 -0
- package/templates/planning/review.md +0 -18
- package/templates/planning/task_plan.md +4 -43
- package/templates/planning/visual_map.md +13 -9
- package/templates/planning/visual_map.simple.md +52 -0
- package/templates/reference/execution-workflow-standard.md +29 -2
- package/templates-zh-CN/AGENTS.md.template +7 -5
- package/templates-zh-CN/planning/INDEX.md +87 -0
- package/templates-zh-CN/planning/brief.md +1 -1
- package/templates-zh-CN/planning/module_session_prompt.md +1 -0
- package/templates-zh-CN/planning/review.md +0 -18
- package/templates-zh-CN/planning/task_plan.md +3 -63
- package/templates-zh-CN/planning/visual_map.md +14 -7
- package/templates-zh-CN/planning/visual_map.simple.md +48 -0
- package/templates-zh-CN/reference/execution-workflow-standard.md +31 -6
|
@@ -7,6 +7,8 @@ window.HarnessI18n = {
|
|
|
7
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",
|
|
@@ -132,6 +135,7 @@ window.HarnessI18n = {
|
|
|
132
135
|
"state_pass": "pass",
|
|
133
136
|
"state_warn": "warn",
|
|
134
137
|
"state_fail": "fail",
|
|
138
|
+
"state_snapshot": "snapshot",
|
|
135
139
|
"state_in_progress": "in progress",
|
|
136
140
|
"state_planned": "planned",
|
|
137
141
|
"state_review": "review",
|
|
@@ -263,7 +267,72 @@ window.HarnessI18n = {
|
|
|
263
267
|
"reviewConfirmTextMismatch": "Type the task id shown in the input hint.",
|
|
264
268
|
"reviewSubmitting": "Submitting review confirmation...",
|
|
265
269
|
"reviewCompleteSuccess": "Review confirmed. Reloading snapshot...",
|
|
266
|
-
"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"
|
|
267
336
|
},
|
|
268
337
|
"zh": {
|
|
269
338
|
"eyebrow": "Coding Agent Harness 控制台",
|
|
@@ -273,6 +342,8 @@ window.HarnessI18n = {
|
|
|
273
342
|
"reviewQueue": "生命周期队列工作台",
|
|
274
343
|
"moduleView": "模块",
|
|
275
344
|
"readiness": "发布状态",
|
|
345
|
+
"snapshotStatus": "快照状态",
|
|
346
|
+
"snapshot": "快照",
|
|
276
347
|
"tasks": "任务",
|
|
277
348
|
"blockers": "阻塞",
|
|
278
349
|
"advice": "建议",
|
|
@@ -289,6 +360,7 @@ window.HarnessI18n = {
|
|
|
289
360
|
"missingBriefs": "个任务缺少给人看的 brief。",
|
|
290
361
|
"reviewAdvice": "可以继续,但升级建议必须保持可见。",
|
|
291
362
|
"noBlockers": "当前快照没有阻塞项。",
|
|
363
|
+
"snapshotNotValidated": "这里只是快照;发布决策前请运行完整验证状态。",
|
|
292
364
|
"firstLook": "第一眼",
|
|
293
365
|
"projectFlow": "项目流程图",
|
|
294
366
|
"projectProgress": "项目进度",
|
|
@@ -391,6 +463,7 @@ window.HarnessI18n = {
|
|
|
391
463
|
"state_pass": "通过",
|
|
392
464
|
"state_warn": "警告",
|
|
393
465
|
"state_fail": "失败",
|
|
466
|
+
"state_snapshot": "快照",
|
|
394
467
|
"state_in_progress": "进行中",
|
|
395
468
|
"state_planned": "计划中",
|
|
396
469
|
"state_review": "审查中",
|
|
@@ -529,6 +602,71 @@ window.HarnessI18n = {
|
|
|
529
602
|
"reviewConfirmTextMismatch": "请输入提示中的任务 ID。",
|
|
530
603
|
"reviewSubmitting": "正在提交审查确认...",
|
|
531
604
|
"reviewCompleteSuccess": "审查已确认,正在刷新快照...",
|
|
532
|
-
"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": "未安装"
|
|
533
671
|
}
|
|
534
672
|
};
|
|
@@ -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
|
|
@@ -34,6 +34,7 @@ Do not edit shared SSoT files, coordinator-owned integration files, or unrelated
|
|
|
34
34
|
|
|
35
35
|
- Keep `task.state`, `lifecycleState`, `reviewStatus`, and `closeoutStatus` separate when reporting progress.
|
|
36
36
|
- `done` means the implementation step finished. It is not `closed` until closeout evidence is recorded.
|
|
37
|
+
- Use the current task `visual_map.md` phase table as the lifecycle map. At the end of a slice, inspect the current gate phase and follow its `Exit Command` only when its `Actor` is `agent`.
|
|
37
38
|
- If review is required, update `review.md`. Human review completion must be confirmed through the local dashboard workbench or by the coordinator with `harness review-confirm`; do not mark it complete while open P0/P1/P2 findings remain.
|
|
38
39
|
|
|
39
40
|
## Shared Sync Rule
|
|
@@ -61,24 +61,6 @@ Do not keep sample findings. If there are no material findings, leave only the h
|
|
|
61
61
|
|
|
62
62
|
[If no material findings remain, state what evidence was checked and why no material finding remains.]
|
|
63
63
|
|
|
64
|
-
## Human Review Confirmation
|
|
65
|
-
|
|
66
|
-
This section must only be completed by a human reviewer or by a command/workbench action acting on explicit human confirmation. Agent review submission, self-review, and subagent review do not satisfy this gate.
|
|
67
|
-
|
|
68
|
-
| Field | Value |
|
|
69
|
-
| --- | --- |
|
|
70
|
-
| Confirmation ID | [generated by review-confirm] |
|
|
71
|
-
| Confirmed At | [timestamp] |
|
|
72
|
-
| Reviewer | [human name] |
|
|
73
|
-
| Reviewer Email | [email, if available] |
|
|
74
|
-
| Task Key | {{TASK_ID}} |
|
|
75
|
-
| Confirm Text | [must match the task id or confirmation phrase required by the command] |
|
|
76
|
-
| Evidence Checked | [review packet / tests / diff summary] |
|
|
77
|
-
| Commit SHA | [confirmation commit SHA generated by review-confirm] |
|
|
78
|
-
| Audit Status | committed / blocked |
|
|
79
|
-
|
|
80
|
-
Do not fill this section when the task still belongs in Missing Materials, Blocked, or Lessons routing. `review-confirm` and the Dashboard Workbench must reject dirty Git state, missing commit identity, hook failures, or writes outside the current task `review.md` / `progress.md` allowlist.
|
|
81
|
-
|
|
82
64
|
## Evidence Checked
|
|
83
65
|
|
|
84
66
|
| Evidence ID | Type | Path | Summary |
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# [Task Name]
|
|
2
2
|
|
|
3
3
|
Task Contract: harness-task/v1
|
|
4
|
+
Task Package Index: required
|
|
4
5
|
|
|
5
6
|
## Goal
|
|
6
7
|
|
|
@@ -11,58 +12,18 @@ Task Contract: harness-task/v1
|
|
|
11
12
|
- In scope: [specific files, modules, behavior, or docs]
|
|
12
13
|
- Out of scope: [explicit exclusions]
|
|
13
14
|
|
|
14
|
-
##
|
|
15
|
-
|
|
16
|
-
| Budget | Use When | Required Structure |
|
|
17
|
-
| --- | --- | --- |
|
|
18
|
-
| simple | One owner, no subagent, L0/L1 evidence, no formal review gate | `brief.md`, `task_plan.md`, `visual_map.md`, `progress.md` |
|
|
19
|
-
| standard | Normal feature, fix, or documentation change | `brief.md`, `task_plan.md`, `execution_strategy.md`, `visual_map.md`, `findings.md`, `lesson_candidates.md`, `progress.md`, `review.md` |
|
|
20
|
-
| complex | Multi-hour work, L2/L3 evidence, subagent/reviewer, or optional artifact/reference indexes | Standard files plus `references/INDEX.md` and `artifacts/INDEX.md` |
|
|
15
|
+
## Selected Budget
|
|
21
16
|
|
|
22
17
|
Selected budget: {{TASK_BUDGET}}
|
|
23
18
|
|
|
19
|
+
Rationale: [why this budget fits this task]
|
|
20
|
+
|
|
24
21
|
## Context Packet
|
|
25
22
|
|
|
26
23
|
| ID | Type | Path | Why It Matters | Used By |
|
|
27
24
|
| --- | --- | --- | --- | --- |
|
|
28
25
|
| C-001 | public-doc / private-plan / external / code | PUBLIC:path or PRIVATE:path or TARGET:path or URL:https://example.com | [why this source matters] | coordinator / reviewer / worker |
|
|
29
26
|
|
|
30
|
-
## Required Files
|
|
31
|
-
|
|
32
|
-
Do not hand-copy this template to create task directories. Use `harness new-task`
|
|
33
|
-
so the selected budget creates the correct file set and `harness check` can
|
|
34
|
-
enforce it.
|
|
35
|
-
|
|
36
|
-
| Budget | Required Files |
|
|
37
|
-
| --- | --- |
|
|
38
|
-
| simple | `brief.md`, `task_plan.md`, `visual_map.md`, `progress.md` |
|
|
39
|
-
| standard | simple files plus `execution_strategy.md`, `findings.md`, `lesson_candidates.md`, `review.md` |
|
|
40
|
-
| complex | standard files plus `references/INDEX.md`, `artifacts/INDEX.md` |
|
|
41
|
-
| long-running add-on | `long-running-task-contract.md` when `--long-running` is selected |
|
|
42
|
-
|
|
43
|
-
Optional subdirectories are created only when triggered:
|
|
44
|
-
|
|
45
|
-
- `lessons/LC-*.md`: task-local detail artifacts for lesson candidates marked `needs-promotion`.
|
|
46
|
-
- `references/INDEX.md`: complex-task source package and reference index.
|
|
47
|
-
- `artifacts/INDEX.md`: complex-task generated evidence and artifact index.
|
|
48
|
-
|
|
49
|
-
File purposes:
|
|
50
|
-
|
|
51
|
-
| Contract File | Purpose |
|
|
52
|
-
| --- | --- |
|
|
53
|
-
| `brief.md` | Human-readable task summary and current context packet |
|
|
54
|
-
| `task_plan.md` | Goal, scope, budget, acceptance, and operating decisions |
|
|
55
|
-
| `execution_strategy.md` | Operating model, allocation, conflict control, and evidence strategy |
|
|
56
|
-
| `visual_map.md` | Diagram collection: phase map, optional architecture/sequence/data-flow/state diagrams, completion state, evidence state, and blocking risk |
|
|
57
|
-
| `progress.md` | Execution log, decisions, and handoff |
|
|
58
|
-
| `findings.md` | Findings, research notes, and unresolved risks |
|
|
59
|
-
| `lesson_candidates.md` | Task-local lesson candidate queue. Human review must accept no-candidate, reject candidates, or queue promotion before review confirmation |
|
|
60
|
-
| `lessons/LC-*.md` | Optional task-local lesson detail artifacts written while source context is fresh and linked from `Detail Artifact` |
|
|
61
|
-
| `review.md` | Agent review submission, adversarial review, or specialist review report |
|
|
62
|
-
| `references/INDEX.md` | Complex-task source package and reference index |
|
|
63
|
-
| `artifacts/INDEX.md` | Complex-task generated evidence and artifact index |
|
|
64
|
-
| `long-running-task-contract.md` | Continuous execution permission, loop rules, and stop conditions |
|
|
65
|
-
|
|
66
27
|
## Steps
|
|
67
28
|
|
|
68
29
|
1. [First concrete step]
|
|
@@ -15,22 +15,26 @@ Include only diagrams that materially help a human or agent understand the task.
|
|
|
15
15
|
|
|
16
16
|
```mermaid
|
|
17
17
|
flowchart LR
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
INIT01["INIT-01 Scope and Context\nkind=init"] --> EXEC01["EXEC-01 Implementation Slice\nkind=execution"]
|
|
19
|
+
EXEC01 --> GATE01["GATE-01 Agent Review Submission\nkind=gate"]
|
|
20
|
+
GATE01 --> GATE02["GATE-02 Human Review Confirmation\nkind=gate"]
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
## Phase Table
|
|
24
24
|
|
|
25
|
-
| Phase ID | Depends On | State | Completion | Output | Required Evidence | Evidence Status | Blocking Risk | Owner / Handoff |
|
|
26
|
-
| --- | --- | --- | ---: | --- | --- | --- | --- | --- |
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
25
|
+
| Phase ID | Kind | Depends On | State | Completion | Output | Required Evidence | Exit Command | Actor | Evidence Status | Blocking Risk | Owner / Handoff |
|
|
26
|
+
| --- | --- | --- | --- | ---: | --- | --- | --- | --- | --- | --- | --- |
|
|
27
|
+
| INIT-01 | init | none | planned | 0 | Approved task plan and execution strategy | `task_plan.md`, `execution_strategy.md` | `harness task-start {{TASK_ID}}` | agent | missing | none | coordinator |
|
|
28
|
+
| EXEC-01 | execution | INIT-01 | planned | 0 | Scoped implementation, document update, and verification evidence | diff, commands, worker handoff, or artifact path | `harness task-phase {{TASK_ID}} EXEC-01 --state done --completion 100 --evidence present` | agent | missing | [risk] | [owner] |
|
|
29
|
+
| GATE-01 | gate | EXEC-01 | planned | 0 | Agent Review Submission | `review.md`, progress update, lesson routing | `harness task-review {{TASK_ID}} --message "<summary>"` | agent | missing | [risk] | coordinator |
|
|
30
|
+
| GATE-02 | gate | GATE-01 | planned | 0 | Human Review Confirmation | review packet and human confirmation | `harness review-confirm {{TASK_ID}} --confirm {{TASK_ID}}` | human | missing | agent must not perform human confirmation | human |
|
|
31
31
|
|
|
32
|
+
Allowed Kind: init, execution, gate.
|
|
33
|
+
Allowed Actor: agent, human, coordinator.
|
|
32
34
|
Allowed Evidence Status: missing, partial, present, waived.
|
|
33
35
|
|
|
36
|
+
Dashboard implementation completion is computed from non-skipped `execution` phases only. `init` and `gate` phases route lifecycle readiness and next actions; they must not make implementation progress look incomplete.
|
|
37
|
+
|
|
34
38
|
## Supporting Maps
|
|
35
39
|
|
|
36
40
|
Add optional diagrams only when useful:
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# [Task Name] - Visual Map
|
|
2
|
+
|
|
3
|
+
Visual Map Contract: v1.0
|
|
4
|
+
|
|
5
|
+
This file is the task's diagram collection. It is not only a phase roadmap.
|
|
6
|
+
Include only diagrams that materially help a human or agent understand the task.
|
|
7
|
+
|
|
8
|
+
## Map Index
|
|
9
|
+
|
|
10
|
+
| ID | Type | Purpose | Required For Understanding | Source Evidence | Promotion Candidate |
|
|
11
|
+
| --- | --- | --- | --- | --- | --- |
|
|
12
|
+
| MAP-01 | phase | Show the execution phases and dependencies | yes | `task_plan.md` | no |
|
|
13
|
+
|
|
14
|
+
## Phase Graph
|
|
15
|
+
|
|
16
|
+
```mermaid
|
|
17
|
+
flowchart LR
|
|
18
|
+
INIT01["INIT-01 Scope and Context\nkind=init"] --> EXEC01["EXEC-01 Implementation Slice\nkind=execution"]
|
|
19
|
+
EXEC01 --> GATE01["GATE-01 Direct Completion\nkind=gate"]
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Phase Table
|
|
23
|
+
|
|
24
|
+
| Phase ID | Kind | Depends On | State | Completion | Output | Required Evidence | Exit Command | Actor | Evidence Status | Blocking Risk | Owner / Handoff |
|
|
25
|
+
| --- | --- | --- | --- | ---: | --- | --- | --- | --- | --- | --- | --- |
|
|
26
|
+
| INIT-01 | init | none | planned | 0 | Task scope is clear enough to execute | `task_plan.md` | `harness task-start {{TASK_ID}}` | agent | missing | none | coordinator |
|
|
27
|
+
| EXEC-01 | execution | INIT-01 | planned | 0 | Simple implementation or documentation change is complete | diff, command, or artifact path | `harness task-phase {{TASK_ID}} EXEC-01 --state done --completion 100 --evidence present` | agent | missing | [risk] | [owner] |
|
|
28
|
+
| GATE-01 | gate | EXEC-01 | planned | 0 | Direct task completion | progress update and final evidence note | `harness task-complete {{TASK_ID}} --message "<summary>"` | agent | missing | [risk] | coordinator |
|
|
29
|
+
|
|
30
|
+
Allowed Kind: init, execution, gate.
|
|
31
|
+
Allowed Actor: agent, human, coordinator.
|
|
32
|
+
Allowed Evidence Status: missing, partial, present, waived.
|
|
33
|
+
|
|
34
|
+
Dashboard implementation completion is computed from non-skipped `execution` phases only. `init` and `gate` phases route lifecycle readiness and next actions; they must not make implementation progress look incomplete.
|
|
35
|
+
|
|
36
|
+
## Supporting Maps
|
|
37
|
+
|
|
38
|
+
Add optional diagrams only when useful:
|
|
39
|
+
|
|
40
|
+
- architecture: module, component, or service structure.
|
|
41
|
+
- sequence: frontend/backend/service/database/agent interaction.
|
|
42
|
+
- data-flow: data movement and ownership.
|
|
43
|
+
- state: state machine or lifecycle.
|
|
44
|
+
- topology: repo, service, worker, or worktree layout.
|
|
45
|
+
- decision: branch and tradeoff tree.
|
|
46
|
+
|
|
47
|
+
## Map Notes
|
|
48
|
+
|
|
49
|
+
- Use `missing` when no evidence has been checked.
|
|
50
|
+
- Use `partial` when some evidence exists but required checks remain.
|
|
51
|
+
- Use `present` when the phase has sufficient evidence for its current claim.
|
|
52
|
+
- Use `waived` only when the reason and owner are recorded in `progress.md`.
|
|
@@ -13,16 +13,43 @@ Define the standard lifecycle for non-trivial work from intake through planning,
|
|
|
13
13
|
5. Run checks that match the risk surface before claiming completion.
|
|
14
14
|
6. Route material findings through review and do not bury unresolved issues in summaries.
|
|
15
15
|
7. Proactively commit each verified, meaningful slice. A completed slice should not remain only as unstaged or staged working-tree state unless the user explicitly asked to defer commits, checks failed, dirty ownership is unclear, or a documented blocker prevents a clean commit. Deferred commits require a no-commit reason, owner, and next step.
|
|
16
|
-
8. Use CLI lifecycle commands for mechanical Harness writes whenever available. CLI-owned writes use locked, allowlisted auto-commit
|
|
17
|
-
9.
|
|
16
|
+
8. Use CLI lifecycle commands for mechanical Harness writes whenever available. CLI-owned writes use locked, allowlisted auto-commit. `new-task` may preserve unrelated dirty files while committing only its own write scope; overlapping dirty paths or unrelated staged files still block the command. Other lifecycle commands may still require a clean tree. Agent-owned manual edits still need an explicit task commit or deferred-commit rationale.
|
|
17
|
+
9. Treat `visual_map.md` as the lifecycle phase map. `init` phases prepare work, `execution` phases define implementation completion, and `gate` phases define review, human confirmation, lesson routing, and closeout. Follow a phase `Exit Command` only when its `Actor` matches the current operator; agents must not perform `human` gates.
|
|
18
|
+
10. New task directories must carry machine-readable Task Audit Metadata in `INDEX.md`. The normal path is `Created By: harness new-task`; manual creation is allowed only as `manual-exception` with a concrete reason, and historical migration must use `historical-backfill`.
|
|
19
|
+
11. Close the loop by updating walkthrough, SSoT, regression, ledger, or docs artifacts when the work changes durable project knowledge. New non-simple tasks should keep `lesson_candidates.md` reviewable before human review confirmation.
|
|
20
|
+
|
|
21
|
+
## Task Package Structure
|
|
22
|
+
|
|
23
|
+
Use `harness new-task` instead of hand-copying task files. The CLI creates the selected budget file set and records task audit metadata in `INDEX.md` so `harness check` can validate it.
|
|
24
|
+
|
|
25
|
+
| Budget | Required Files |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| simple | `INDEX.md`, `brief.md`, `task_plan.md`, `visual_map.md`, `progress.md` |
|
|
28
|
+
| standard | simple files plus `execution_strategy.md`, `findings.md`, `lesson_candidates.md`, `review.md` |
|
|
29
|
+
| complex | standard files plus `references/INDEX.md`, `artifacts/INDEX.md` |
|
|
30
|
+
| long-running add-on | `long-running-task-contract.md` when `--long-running` is selected |
|
|
31
|
+
|
|
32
|
+
`INDEX.md` is the task package navigation page and audit metadata SSoT. It points to contract files and optional indexes but does not replace them.
|
|
33
|
+
|
|
34
|
+
Optional directories are created only when triggered:
|
|
35
|
+
|
|
36
|
+
- `references/INDEX.md`: task-local sources, external links, reviewer input packages, and preset-provided required reads.
|
|
37
|
+
- `artifacts/INDEX.md`: command output, screenshots, fixtures, generated reports, reviews, and other evidence.
|
|
38
|
+
- `lessons/LC-*.md`: task-local lesson detail artifacts for candidates marked `needs-promotion`.
|
|
39
|
+
- `slices/<slice-id>/`: multi-slice task material, when a task explicitly uses slice packets.
|
|
40
|
+
|
|
41
|
+
Preset packages must not add or replace root-level base scaffold documents. Presets may append controlled sections to fixed base documents or add isolated resources under `references/**` and `artifacts/**`. Resource rows belong only in `references/INDEX.md` and `artifacts/INDEX.md`; the root `INDEX.md` may show only system-rendered preset summary fields.
|
|
18
42
|
|
|
19
43
|
## Required Checklist
|
|
20
44
|
|
|
21
45
|
- Goal, scope, acceptance criteria, and constraints are written down.
|
|
46
|
+
- Task Audit Metadata is present in `INDEX.md`, or the manual/historical exception reason is explicit.
|
|
47
|
+
- The task package `INDEX.md` is present for new generated tasks.
|
|
22
48
|
- Current repo state and ownership boundaries were checked.
|
|
23
49
|
- Implementation notes identify changed surfaces.
|
|
24
50
|
- Required checks and evidence are captured.
|
|
25
51
|
- Verified slices have commit SHAs, or the no-commit reason, owner, and next step are written down.
|
|
52
|
+
- The current lifecycle gate in `visual_map.md` has either been executed or has a recorded blocker.
|
|
26
53
|
- Review status and material findings are recorded.
|
|
27
54
|
- Residuals are explicit and assigned.
|
|
28
55
|
- Closeout artifacts are updated when required.
|
|
@@ -15,10 +15,11 @@
|
|
|
15
15
|
|
|
16
16
|
1. 遵守 `docs/11-REFERENCE/engineering-standard.md` 中的架构边界。
|
|
17
17
|
2. 不提交密钥、令牌、私有接口、用户隐私数据或生产凭据。
|
|
18
|
-
3.
|
|
18
|
+
3. 非平凡任务先用 Harness CLI 在 `docs/09-PLANNING/TASKS/` 下建立任务目录。
|
|
19
19
|
4. 声称完成前必须记录证据。
|
|
20
20
|
5. 保护无关工作区改动,不回滚任务范围外文件。
|
|
21
21
|
6. 已验证的、有意义的工作切片要主动提交。除非用户明确暂停提交、检查失败、dirty 归属不清,或安全边界导致无法形成干净提交,否则不要把已完成工作只留在未提交文件里;不能提交时,必须在 progress、handoff 或 closeout 中写明 no-commit reason、owner 和下一步。不要把无关 dirty 改动混入本任务提交。
|
|
22
|
+
7. 最终回复前检查当前任务 `visual_map.md` 的 gate 阶段。如果当前 `Exit Command` 的 `Actor` 是 `agent`,就执行它或记录 blocker。不得执行 `review-confirm` 这类 `human` gate,除非用户已经明确完成或委托了人工确认。
|
|
22
23
|
|
|
23
24
|
## 任务阅读矩阵
|
|
24
25
|
|
|
@@ -32,7 +33,7 @@
|
|
|
32
33
|
| API、event、webhook、SDK、第三方契约 | `docs/06-INTEGRATIONS/README.md` 和相关契约文件 |
|
|
33
34
|
| 测试、冒烟、回归 | `docs/11-REFERENCE/testing-standard.md`、`docs/05-TEST-QA/Regression-SSoT.md` |
|
|
34
35
|
| 开发执行、提交、PR、发布 | `docs/11-REFERENCE/execution-workflow-standard.md`、`docs/11-REFERENCE/repo-governance-standard.md`、`docs/11-REFERENCE/pull-request-standard.md`、`docs/11-REFERENCE/ci-cd-standard.md` |
|
|
35
|
-
| 创建或推进任务 | `docs/09-PLANNING/TASKS/` 下的当前任务目录;如果本项目已配置 Harness CLI
|
|
36
|
+
| 创建或推进任务 | `docs/09-PLANNING/TASKS/` 下的当前任务目录;如果本项目已配置 Harness CLI,使用 `harness new-task` / lifecycle 命令 |
|
|
36
37
|
| Brief、Execution Strategy、Visual Map | 当前任务的 `brief.md`、`execution_strategy.md`、`visual_map.md` |
|
|
37
38
|
| 长程任务 | `docs/11-REFERENCE/long-running-task-standard.md` |
|
|
38
39
|
| reviewer、subagent、对抗性审查 | `docs/11-REFERENCE/review-routing-standard.md`、`docs/11-REFERENCE/adversarial-review-standard.md` |
|
|
@@ -47,7 +48,7 @@
|
|
|
47
48
|
## 标准执行流程
|
|
48
49
|
|
|
49
50
|
1. 先确认请求、范围和受影响文件。
|
|
50
|
-
2.
|
|
51
|
+
2. 非平凡任务先创建或更新任务计划,再改代码。优先使用 `harness new-task`;CLI 不可用时必须在任务 `INDEX.md` 保留任务审计元数据,并把 `Created By` 设为 `manual-exception`,写清具体原因。
|
|
51
52
|
3. 根据用户目标主动判断是否需要分工;用户不需要知道或主动要求 subagent。
|
|
52
53
|
4. 只读取任务阅读矩阵要求的 reference 文档。
|
|
53
54
|
5. 保留已有项目事实;新增上下文使用 merge / append,不覆盖历史。
|
|
@@ -55,8 +56,9 @@
|
|
|
55
56
|
7. 只在确认范围内实现。
|
|
56
57
|
8. 运行相关检查,并把证据写入任务记录。
|
|
57
58
|
9. 按需触发 review,关闭阻塞发现。
|
|
58
|
-
10.
|
|
59
|
-
11.
|
|
59
|
+
10. 按当前 `visual_map.md` lifecycle gate 的 `Exit Command` / `Actor` 收口。
|
|
60
|
+
11. 写入或更新 walkthrough 与 closeout 记录。
|
|
61
|
+
12. 只更新本任务实际触达的 SSoT / ledger;任务生命周期总账优先由 Harness CLI 生成,不手写任务行。
|
|
60
62
|
|
|
61
63
|
## 协作规则
|
|
62
64
|
|