coding-agent-harness 1.0.2 → 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.
- package/CHANGELOG.md +25 -0
- package/CONTRIBUTING.md +98 -0
- package/README.md +211 -86
- package/README.zh-CN.md +54 -34
- package/SKILL.md +25 -18
- package/docs-release/README.md +9 -5
- package/docs-release/architecture/overview.md +17 -5
- package/docs-release/architecture/overview.zh-CN.md +9 -5
- package/docs-release/assets/dashboard-overview.png +0 -0
- package/docs-release/guides/agent-installation.en-US.md +31 -8
- package/docs-release/guides/agent-installation.md +34 -9
- package/docs-release/guides/contributing.md +100 -0
- package/docs-release/guides/contributing.zh-CN.md +99 -0
- package/docs-release/guides/document-audience-and-surfaces.en-US.md +3 -2
- package/docs-release/guides/document-audience-and-surfaces.md +3 -2
- package/docs-release/guides/full-legacy-migration-subagent-strategy.md +2 -2
- package/docs-release/guides/full-legacy-migration-subagent-strategy.zh-CN.md +2 -2
- package/docs-release/guides/legacy-migration-agent-prompt.md +0 -11
- package/docs-release/guides/legacy-migration-agent-prompt.zh-CN.md +0 -11
- package/docs-release/guides/migration-playbook.en-US.md +14 -15
- package/docs-release/guides/migration-playbook.md +14 -15
- package/docs-release/guides/parent-control-repository-pattern.en-US.md +7 -5
- package/docs-release/guides/parent-control-repository-pattern.md +7 -5
- package/docs-release/guides/preset-development.md +214 -0
- package/docs-release/guides/repository-operating-models.en-US.md +5 -4
- package/docs-release/guides/repository-operating-models.md +5 -4
- package/docs-release/guides/task-state-machine.en-US.md +207 -0
- package/docs-release/guides/task-state-machine.md +214 -0
- package/docs-release/intl/en-US.md +1 -1
- package/docs-release/intl/zh-CN.md +1 -1
- package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/findings.md +7 -0
- package/package.json +8 -3
- package/presets/legacy-migration/checks/preset-check.mjs +3 -0
- package/presets/legacy-migration/preset.yaml +134 -0
- package/presets/legacy-migration/scripts/plan-work-queue.mjs +4 -0
- package/presets/legacy-migration/scripts/scaffold-task-contracts.mjs +4 -0
- package/presets/legacy-migration/templates/execution_strategy.append.md +18 -0
- package/presets/legacy-migration/templates/findings.seed.md +17 -0
- package/presets/legacy-migration/templates/review.seed.md +12 -0
- package/presets/legacy-migration/templates/task_plan.append.md +9 -0
- package/presets/legacy-migration/templates/visual_map.append.md +12 -0
- package/presets/legacy-migration/workbench/dashboard-panels.yaml +2 -0
- package/presets/legacy-migration/workbench/migration-queue.schema.json +23 -0
- package/presets/lesson-sedimentation/preset.yaml +23 -0
- package/presets/lesson-sedimentation/templates/prompt.md +23 -0
- package/presets/module/preset.yaml +25 -0
- package/presets/module/templates/execution_strategy.append.md +8 -0
- package/presets/module/templates/task_plan.append.md +17 -0
- package/presets/standard-task/preset.yaml +31 -0
- package/presets/standard-task/templates/task_plan.append.md +7 -0
- package/references/adversarial-review-standard.md +2 -2
- package/references/agents-md-pattern.md +2 -2
- package/references/delivery-operating-model-standard.md +3 -3
- package/references/docs-directory-standard.md +6 -7
- package/references/harness-ledger.md +53 -96
- package/references/lessons-governance.md +88 -93
- package/references/module-parallel-standard.md +14 -14
- package/references/planning-loop.md +12 -6
- package/references/pull-request-standard.md +118 -0
- package/references/repo-governance-standard.md +11 -2
- package/references/review-routing-standard.md +7 -1
- package/references/ssot-governance.md +67 -59
- package/references/taskr-gap-analysis.md +600 -0
- package/references/walkthrough-closeout.md +7 -7
- package/scripts/check-harness.mjs +40 -301
- package/scripts/commands/dashboard-command.mjs +67 -0
- package/scripts/commands/migration-command.mjs +96 -0
- package/scripts/commands/preset-command.mjs +73 -0
- package/scripts/commands/task-command.mjs +327 -0
- package/scripts/harness.mjs +55 -260
- package/scripts/lib/capability-registry.mjs +66 -8
- package/scripts/lib/check-module-parallel.mjs +237 -0
- package/scripts/lib/check-profiles.mjs +61 -153
- package/scripts/lib/check-task-contracts.mjs +47 -0
- package/scripts/lib/core-shared.mjs +10 -0
- package/scripts/lib/dashboard-data.mjs +29 -6
- package/scripts/lib/dashboard-workbench.mjs +52 -12
- package/scripts/lib/dashboard-writer.mjs +14 -2
- package/scripts/lib/git-status-summary.mjs +46 -0
- package/scripts/lib/governance-index-generator.mjs +174 -0
- package/scripts/lib/governance-sync.mjs +514 -0
- package/scripts/lib/governance-table-boundary.mjs +175 -0
- package/scripts/lib/harness-core.mjs +5 -0
- package/scripts/lib/lesson-maintenance.mjs +36 -29
- package/scripts/lib/migration-support.mjs +1 -1
- package/scripts/lib/preset-audit-contracts.mjs +37 -0
- package/scripts/lib/preset-engine.mjs +497 -0
- package/scripts/lib/preset-registry.mjs +627 -0
- package/scripts/lib/preset-resource-contracts.mjs +83 -0
- package/scripts/lib/review-confirm-git-gate.mjs +248 -0
- package/scripts/lib/status-dashboard-renderer.mjs +102 -0
- package/scripts/lib/subagent-authorization-audit.mjs +196 -0
- package/scripts/lib/task-completion-consistency.mjs +16 -0
- package/scripts/lib/task-index.mjs +93 -0
- package/scripts/lib/task-lesson-candidates.mjs +242 -0
- package/scripts/lib/task-lesson-sedimentation.mjs +326 -0
- package/scripts/lib/task-lifecycle/review-confirm.mjs +101 -0
- package/scripts/lib/task-lifecycle/review-gates.mjs +70 -0
- package/scripts/lib/task-lifecycle/text-utils.mjs +24 -0
- package/scripts/lib/task-lifecycle.mjs +297 -403
- package/scripts/lib/task-review-model.mjs +469 -0
- package/scripts/lib/task-scanner.mjs +130 -236
- package/scripts/lib/task-tombstone-commands.mjs +140 -0
- package/scripts/postinstall.mjs +14 -0
- package/skills/preset-creator/SKILL.md +179 -0
- package/skills/preset-creator/references/complex-task-skeleton/README.md +31 -0
- package/skills/preset-creator/references/complex-task-skeleton/artifacts/INDEX.md +12 -0
- package/skills/preset-creator/references/complex-task-skeleton/brief.md +32 -0
- package/skills/preset-creator/references/complex-task-skeleton/execution_strategy.md +71 -0
- package/skills/preset-creator/references/complex-task-skeleton/findings.md +24 -0
- package/skills/preset-creator/references/complex-task-skeleton/lesson_candidates.md +70 -0
- package/skills/preset-creator/references/complex-task-skeleton/long-running-task-contract.md +76 -0
- package/skills/preset-creator/references/complex-task-skeleton/progress.md +33 -0
- package/skills/preset-creator/references/complex-task-skeleton/references/INDEX.md +13 -0
- package/skills/preset-creator/references/complex-task-skeleton/review.md +107 -0
- package/skills/preset-creator/references/complex-task-skeleton/task_plan.md +111 -0
- package/skills/preset-creator/references/complex-task-skeleton/visual_map.md +50 -0
- package/skills/preset-creator/references/preset-package-skeleton.md +296 -0
- package/templates/AGENTS.md.template +19 -15
- package/templates/dashboard/assets/app-src/00-state.js +1 -0
- package/templates/dashboard/assets/app-src/10-router.js +2 -1
- package/templates/dashboard/assets/app-src/20-overview.js +11 -5
- package/templates/dashboard/assets/app-src/30-tasks.js +92 -246
- package/templates/dashboard/assets/app-src/35-task-detail.js +246 -0
- package/templates/dashboard/assets/app-src/45-review.js +241 -22
- package/templates/dashboard/assets/app-src/50-migration.js +24 -10
- package/templates/dashboard/assets/app-src/90-bindings.js +171 -29
- package/templates/dashboard/assets/app.css +698 -156
- package/templates/dashboard/assets/app.css.manifest.json +9 -0
- package/templates/dashboard/assets/app.js +662 -91
- package/templates/dashboard/assets/app.manifest.json +1 -0
- package/templates/dashboard/assets/css-src/00-foundation.css +342 -0
- package/templates/dashboard/assets/css-src/10-panels-flow.css +236 -0
- package/templates/dashboard/assets/css-src/20-briefs-controls.css +398 -0
- package/templates/dashboard/assets/css-src/30-task-index.css +739 -0
- package/templates/dashboard/assets/css-src/35-review-workspace.css +507 -0
- package/templates/dashboard/assets/css-src/40-detail-modules-migration.css +427 -0
- package/templates/dashboard/assets/css-src/50-responsive-overrides.css +551 -0
- package/templates/dashboard/assets/i18n.js +123 -21
- package/templates/ledger/Harness-Ledger.md +13 -25
- package/templates/lessons/lesson-arch-process-change.md +1 -1
- package/templates/lessons/lesson-new-doc.md +1 -1
- package/templates/lessons/lesson-ref-change.md +1 -1
- package/templates/planning/execution_strategy.md +31 -0
- package/templates/planning/lesson_candidates.md +18 -6
- package/templates/planning/optional/artifacts/INDEX.md +3 -3
- package/templates/planning/optional/references/INDEX.md +3 -3
- package/templates/planning/review.md +59 -0
- package/templates/planning/task_plan.md +36 -13
- package/templates/reference/execution-workflow-standard.md +4 -3
- package/templates/reference/pull-request-standard.md +80 -0
- package/templates/reference/repo-governance-standard.md +7 -6
- package/templates/reference/review-routing-standard.md +6 -0
- package/templates/reference/walkthrough-standard.md +2 -1
- package/templates/verifier/verifier-output.md +1 -1
- package/templates-zh-CN/AGENTS.md.template +20 -16
- package/templates-zh-CN/ledger/Harness-Ledger.md +17 -40
- package/templates-zh-CN/planning/execution_strategy.md +30 -0
- package/templates-zh-CN/planning/lesson_candidates.md +18 -6
- package/templates-zh-CN/planning/review.md +59 -1
- package/templates-zh-CN/planning/task_plan.md +30 -10
- package/templates-zh-CN/reference/adversarial-review-standard.md +1 -1
- package/templates-zh-CN/reference/docs-library-standard.md +1 -1
- package/templates-zh-CN/reference/execution-workflow-standard.md +4 -3
- package/templates-zh-CN/reference/harness-ledger-standard.md +2 -2
- package/templates-zh-CN/reference/pull-request-standard.md +106 -0
- package/templates-zh-CN/reference/repo-governance-standard.md +4 -3
- package/templates-zh-CN/reference/review-routing-standard.md +8 -1
- package/templates-zh-CN/reference/walkthrough-standard.md +3 -2
- package/templates-zh-CN/walkthrough/Closeout-SSoT.md +1 -1
- package/docs-release/assets/dashboard-overview-en.png +0 -0
- package/scripts/smoke-dashboard.mjs +0 -92
- package/scripts/test-harness.mjs +0 -1395
- package/templates/ssot/Feature-SSoT.md +0 -43
- package/templates/ssot/Lessons-SSoT.md +0 -44
- package/templates-zh-CN/ssot/Feature-SSoT.md +0 -49
- package/templates-zh-CN/ssot/Lessons-SSoT.md +0 -49
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# 任务状态机与生命周期队列
|
|
2
|
+
|
|
3
|
+
English mirror: `docs-release/guides/task-state-machine.en-US.md`
|
|
4
|
+
|
|
5
|
+
Coding Agent Harness 的任务状态不是一个单字段。Dashboard 里看到的生命周期由多个文件共同推导:
|
|
6
|
+
|
|
7
|
+
- `progress.md` 记录原始 `task.state` 和执行证据。
|
|
8
|
+
- `review.md` 记录 Agent Review Submission、material findings 和 Human Review Confirmation。
|
|
9
|
+
- `lesson_candidates.md` 记录 lesson candidate 的人工判定和后续沉淀路由。
|
|
10
|
+
- `10-WALKTHROUGH/Closeout-SSoT.md` 记录任务是否完成收口,并链接 walkthrough。
|
|
11
|
+
- Tombstone / supersede 信息记录任务是否被软删除、合并、归档或替代。
|
|
12
|
+
- Scanner 从这些文件推导 `lifecycleState`、`reviewStatus`、`closeoutStatus`、`taskQueues[]`、`queueReasons[]` 和 `repairPrompt`。
|
|
13
|
+
|
|
14
|
+
旧版 `reviewQueueState` 只适合表示单一审查页面。PF-024 后,公开模型改为多个生命周期队列:Review、Missing Materials、Blocked、Lessons、Confirmed / Finalized、Soft-deleted / Superseded。
|
|
15
|
+
|
|
16
|
+
## 原始任务命令流
|
|
17
|
+
|
|
18
|
+
```mermaid
|
|
19
|
+
stateDiagram-v2
|
|
20
|
+
[*] --> not_started: new-task
|
|
21
|
+
not_started --> in_progress: task-start
|
|
22
|
+
planned --> in_progress: task-start
|
|
23
|
+
in_progress --> in_progress: task-log / task-phase
|
|
24
|
+
in_progress --> blocked: task-block
|
|
25
|
+
blocked --> in_progress: blocker fixed
|
|
26
|
+
in_progress --> review_submitted: task-review
|
|
27
|
+
review_submitted --> missing_materials: returned for materials
|
|
28
|
+
missing_materials --> in_progress: repair materials
|
|
29
|
+
review_submitted --> blocked: blocking finding
|
|
30
|
+
review_submitted --> human_confirmed: review-confirm
|
|
31
|
+
human_confirmed --> finalized: task-complete + closeout
|
|
32
|
+
finalized --> [*]
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
`task-review` 表示 Agent 提交审查材料包,不表示人工批准。`review-confirm` 才表示 Human Review Confirmation。`task-complete` / closeout 也不是 review confirmation 的替代品。
|
|
36
|
+
|
|
37
|
+
## 派生状态
|
|
38
|
+
|
|
39
|
+
```mermaid
|
|
40
|
+
flowchart TB
|
|
41
|
+
Progress["progress.md<br/>task.state + evidence"]
|
|
42
|
+
Review["review.md<br/>Agent Review Submission + findings + Human Review Confirmation"]
|
|
43
|
+
Lessons["lesson_candidates.md<br/>decision + sedimentation route"]
|
|
44
|
+
Closeout["Closeout-SSoT.md<br/>closeout row + walkthrough"]
|
|
45
|
+
Tombstone["tombstone / supersede metadata"]
|
|
46
|
+
Scanner["scanner"]
|
|
47
|
+
|
|
48
|
+
Progress --> Scanner
|
|
49
|
+
Review --> Scanner
|
|
50
|
+
Lessons --> Scanner
|
|
51
|
+
Closeout --> Scanner
|
|
52
|
+
Tombstone --> Scanner
|
|
53
|
+
|
|
54
|
+
Scanner --> Lifecycle["lifecycleState"]
|
|
55
|
+
Scanner --> ReviewStatus["reviewStatus"]
|
|
56
|
+
Scanner --> CloseoutStatus["closeoutStatus"]
|
|
57
|
+
Scanner --> Queues["taskQueues[]"]
|
|
58
|
+
Scanner --> Reasons["queueReasons[]"]
|
|
59
|
+
Scanner --> Prompt["repairPrompt"]
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
| 字段 | 来源 | 作用 |
|
|
63
|
+
| --- | --- | --- |
|
|
64
|
+
| `task.state` | `progress.md` | 原始执行阶段。 |
|
|
65
|
+
| `reviewStatus` | `review.md` + findings + Human Review Confirmation | 区分缺审查、Agent 已提交审查、阻塞、人工确认。 |
|
|
66
|
+
| `closeoutStatus` | `Closeout-SSoT.md` | 区分收口缺失、待处理、已关闭。 |
|
|
67
|
+
| `lifecycleState` | scanner 派生 | Dashboard 的主生命周期语义。 |
|
|
68
|
+
| `taskQueues[]` | scanner 派生 | 任务属于哪些生命周期队列。一个任务可同时在多个治理队列中可见。 |
|
|
69
|
+
| `queueReasons[]` | scanner 派生 | 为什么进入队列,以及对应源文件、字段和修复动作。 |
|
|
70
|
+
| `repairPrompt` | scanner 派生 | 可复制给 Coding Agent 的受限修复提示。 |
|
|
71
|
+
|
|
72
|
+
## 生命周期矩阵
|
|
73
|
+
|
|
74
|
+
| 条件 | `lifecycleState` | 含义 |
|
|
75
|
+
| --- | --- | --- |
|
|
76
|
+
| 有 tombstone、superseded-by、archive 或 abandoned 标记 | `soft-deleted-superseded` | 默认隐藏,但保留审计和替代链。 |
|
|
77
|
+
| 有 open P0-P2 finding、非法状态转换、审计失败或人审门禁失败 | `blocked` | 不能进入人工确认,必须先修 blocker 或记录 waiver。 |
|
|
78
|
+
| 标准/复杂任务缺必需文件、章节、证据、lesson decision 或 review submission | `missing-materials` | 需要 Agent 补材料,不属于人审队列。 |
|
|
79
|
+
| 已执行 `task-review`,材料齐全,且未 Human Review Confirmation | `review-submitted` | 真正等待人审。 |
|
|
80
|
+
| 已 Human Review Confirmation,但 closeout / ledger / lessons 仍未全部收口 | `confirmed-finalization-pending` | 责任已转移给确认人,但治理收口仍待完成。 |
|
|
81
|
+
| 已 Human Review Confirmation,且 closeout / ledger / lesson routing 完成 | `finalized` | 真正完成,可只读追溯。 |
|
|
82
|
+
| `task.state = blocked` 但没有 review blocker | `active-blocked` | 执行阻塞。 |
|
|
83
|
+
| `task.state = in_progress` | `active` | 执行中。 |
|
|
84
|
+
| `task.state = planned/not_started` | `ready` | 准备中,默认不进入人审队列。 |
|
|
85
|
+
|
|
86
|
+
## 审查状态
|
|
87
|
+
|
|
88
|
+
| `reviewStatus` | 含义 |
|
|
89
|
+
| --- | --- |
|
|
90
|
+
| `missing` | 没有可用 review 文档或缺 Agent Review Submission。 |
|
|
91
|
+
| `required` | 有 review 文档,但还没有足够材料可提交人审。 |
|
|
92
|
+
| `submitted` | Agent 已提交审查材料包;这不是人工确认。 |
|
|
93
|
+
| `blocked-open-findings` | 有 open P0-P2 finding,或 finding 阻塞发布 / 确认。 |
|
|
94
|
+
| `confirmed` | 已写入 `Human Review Confirmation`。 |
|
|
95
|
+
|
|
96
|
+
Agent 自查、subagent 审查和 coordinator 审查都只能让任务接近 `submitted`。只有 `review-confirm` 或 Workbench 的明确人工确认动作会写入 `Human Review Confirmation`。
|
|
97
|
+
|
|
98
|
+
## 生命周期队列
|
|
99
|
+
|
|
100
|
+
Dashboard 的 lifecycle workbench 是多个队列,不是一个混合 review 列表。
|
|
101
|
+
|
|
102
|
+
```mermaid
|
|
103
|
+
flowchart TD
|
|
104
|
+
Task["task facts"]
|
|
105
|
+
Task --> Deleted{"tombstone / superseded / archived?"}
|
|
106
|
+
Deleted -->|yes| QDeleted["Soft-deleted / Superseded"]
|
|
107
|
+
Deleted -->|no| Blocker{"blocking finding or invalid transition?"}
|
|
108
|
+
Blocker -->|yes| QBlocked["Blocked"]
|
|
109
|
+
Blocker -->|no| Missing{"required materials missing?"}
|
|
110
|
+
Missing -->|yes| QMissing["Missing Materials"]
|
|
111
|
+
Missing -->|no| Submitted{"Agent Review Submission exists?"}
|
|
112
|
+
Submitted -->|yes + not human confirmed| QReview["Review"]
|
|
113
|
+
Submitted -->|no| Out["not in human review queue"]
|
|
114
|
+
Submitted -->|yes + human confirmed| Confirmed{"finalization complete?"}
|
|
115
|
+
Confirmed -->|no| QConfirmed["Confirmed / Finalized"]
|
|
116
|
+
Confirmed -->|yes| QFinal["Confirmed / Finalized"]
|
|
117
|
+
Task --> Lessons{"lesson candidate needs decision or sedimentation?"}
|
|
118
|
+
Lessons -->|yes| QLessons["Lessons"]
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
| 队列 | 进入条件 | 主要责任方 | 退出条件 |
|
|
122
|
+
| --- | --- | --- | --- |
|
|
123
|
+
| Review | 已提交 review packet,材料齐,且未人工确认。 | human | 人工确认或退回。 |
|
|
124
|
+
| Missing Materials | 缺文件、缺章节、缺证据、缺 lesson decision、缺 review submission 或 phase 未完成。 | agent | 补齐材料并重新提交 review。 |
|
|
125
|
+
| Blocked | 有 blocking finding、状态矛盾、Git 审计失败、完成门禁失败或需要 human waiver。 | agent + human | 修复、关闭、或人工豁免。 |
|
|
126
|
+
| Lessons | lesson candidate 需要判定、保留、拒绝、dry-run promotion 或创建沉淀任务。 | human + agent | 决策完成,或创建可追踪沉淀任务。 |
|
|
127
|
+
| Confirmed / Finalized | 已人工确认,或已结项需要只读追溯。 | coordinator | closeout、ledger、lesson routing 全部完成;之后只读。 |
|
|
128
|
+
| Soft-deleted / Superseded | 任务被软删除、替代、合并、归档或废弃。 | coordinator | 只读追溯;必要时 reopen。 |
|
|
129
|
+
|
|
130
|
+
Review 队列只等人确认。缺材料、阻塞、lesson 沉淀、已确认待结项、历史替代任务都不应伪装成 Review 队列项。
|
|
131
|
+
|
|
132
|
+
## 全局表边界
|
|
133
|
+
|
|
134
|
+
全局治理表只保留索引、状态、路由和审计摘要。它们帮助 Dashboard 找到事实位置,
|
|
135
|
+
但不承载模块局部事实、长证据、执行流水或临时修复提示。
|
|
136
|
+
|
|
137
|
+
| 层级 | 应该记录什么 | 不应该记录什么 |
|
|
138
|
+
| --- | --- | --- |
|
|
139
|
+
| 全局表:Harness Ledger、Closeout SSoT、Regression SSoT、Cadence Ledger、Delivery SSoT | 当前状态、负责人、任务/模块/详情文档链接、回归 gate、交付顺序、收口或审计摘要 | 模块内步骤、未判定 lesson candidate、完整命令输出、长证据段落、review transcript、临时 repair prompt |
|
|
140
|
+
| 模块层:Module Registry、`module_plan.md` | 模块边界、模块内步骤、handoff、当前阻塞和局部证据索引 | 已 promotion 的全局 lesson 正文、跨模块发布审计总账 |
|
|
141
|
+
| 任务层:`brief.md`、`task_plan.md`、`progress.md`、`review.md`、`lesson_candidates.md`、`lessons/LC-*.md`、`artifacts/INDEX.md` | 执行细节、证据、agent review、候选 lesson、task-local lesson 详情、修复提示和 raw artifact 路由 | 跨任务总账或 promoted lesson 详情正文 |
|
|
142
|
+
|
|
143
|
+
Checker 对新增全局表行执行该边界。2026-05-24 之前已经存在的过载行默认作为
|
|
144
|
+
`legacy-report-only` 出现在 Dashboard 迁移建议里,不会被自动删除或批量改写。
|
|
145
|
+
新增行如果把 task/module 局部细节继续塞进全局表,会作为 `governance-table-entropy`
|
|
146
|
+
失败项报告。Lesson candidate 留在 `lesson_candidates.md`;进入 `needs-promotion`
|
|
147
|
+
的候选必须链接任务本地 `lessons/LC-*.md` 详情文件,已接受的经验再写入
|
|
148
|
+
`docs/01-GOVERNANCE/lessons/*.md` promoted 详情文档。修复方式是保留必要全局摘要行,
|
|
149
|
+
把细节移动到 module/task/detail 文档并在全局表中链接过去。
|
|
150
|
+
|
|
151
|
+
## 人工确认闭环
|
|
152
|
+
|
|
153
|
+
```mermaid
|
|
154
|
+
sequenceDiagram
|
|
155
|
+
autonumber
|
|
156
|
+
participant Agent as Agent / coordinator
|
|
157
|
+
participant Human as Human reviewer
|
|
158
|
+
participant UI as Dashboard Workbench
|
|
159
|
+
participant API as workbench API
|
|
160
|
+
participant Lifecycle as task lifecycle writer
|
|
161
|
+
participant Docs as markdown files
|
|
162
|
+
participant Scanner as scanner
|
|
163
|
+
|
|
164
|
+
Agent->>Docs: write Agent Review Submission + evidence
|
|
165
|
+
Agent->>UI: submit task-review
|
|
166
|
+
Human->>UI: open Review queue item
|
|
167
|
+
UI->>API: POST /api/tasks/review-complete
|
|
168
|
+
API->>Scanner: read current task facts
|
|
169
|
+
Scanner-->>API: taskQueues, queueReasons, reviewStatus
|
|
170
|
+
alt not in Review queue
|
|
171
|
+
API-->>UI: reject with target queue
|
|
172
|
+
else missing material or blocker
|
|
173
|
+
API-->>UI: reject with repairPrompt
|
|
174
|
+
else accepted
|
|
175
|
+
API->>Lifecycle: confirmTaskReview()
|
|
176
|
+
Lifecycle->>Lifecycle: verify Git clean, identity, hooks, allowlist
|
|
177
|
+
Lifecycle->>Docs: write Human Review Confirmation
|
|
178
|
+
Lifecycle->>Docs: append review-confirm log
|
|
179
|
+
Lifecycle->>Lifecycle: commit allowlisted review/progress files
|
|
180
|
+
Lifecycle->>Docs: record confirmation commit SHA + committed audit status
|
|
181
|
+
API->>Scanner: regenerate dashboard snapshot
|
|
182
|
+
API-->>UI: confirmed task
|
|
183
|
+
end
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
严格规则:Agent 可以准备 review evidence,也可以提交审查;但任务只有在 Human Review Confirmation block 存在后,才算人工确认。确认动作必须通过 gated auto-commit:Git 状态不干净、提交身份缺失、hook/preflight 失败,或待写文件超出当前任务 `review.md` / `progress.md` 白名单时,CLI 和 Workbench 都会拒绝并返回恢复建议。
|
|
187
|
+
|
|
188
|
+
CLI-owned 机械写入和 agent-owned 手工切片是两条边界。`new-task`、`task-*`、`task-phase`、`module-step`、`review-confirm`、`lesson-sediment` 和 `lesson-promote --apply` 会在干净 Git root 中加锁、限制写入范围并自动提交。Agent 手工编辑代码、模板或任务文档时仍要在验证后主动提交;无法提交时必须记录 no-commit reason、owner 和下一步,不能把 unrelated dirty changes 混入任务提交。
|
|
189
|
+
|
|
190
|
+
## Lesson 沉淀
|
|
191
|
+
|
|
192
|
+
Lesson promotion 默认不写共享 Lessons 表。Dashboard 或 CLI 应优先创建 dry-run 或后续沉淀任务,让执行者先完成:
|
|
193
|
+
|
|
194
|
+
- 分类 scope 和边界原因。
|
|
195
|
+
- 读取候选行的 `Detail Artifact` 指向的任务本地详情文件,不从表格 brief 复写正文。
|
|
196
|
+
- 检查既有 lesson candidate、lesson detail doc、reference standard、template、checker 是否冲突。
|
|
197
|
+
- 给出目标 diff 或 no-action 理由。
|
|
198
|
+
- 由人工批准后再写 promoted lesson 详情文档或标准文档。
|
|
199
|
+
|
|
200
|
+
`needs-promotion` 不应阻塞人审确认本身,但必须进入 Lessons 队列,并在 closeout / ledger 中可追踪。
|
|
201
|
+
|
|
202
|
+
## 软删除与替代
|
|
203
|
+
|
|
204
|
+
文档库默认不 hard delete 任务目录。
|
|
205
|
+
|
|
206
|
+
| 状态 | 含义 | 要求 |
|
|
207
|
+
| --- | --- | --- |
|
|
208
|
+
| `active` | 正常任务。 | Dashboard 默认显示。 |
|
|
209
|
+
| `soft-deleted` | 任务被废弃但保留目录。 | 写 tombstone,记录操作者、时间、原因和 reopen eligibility。 |
|
|
210
|
+
| `superseded` | 任务被新任务替代或合并。 | 旧任务记录 `Superseded By`,新任务记录 `Supersedes`。 |
|
|
211
|
+
| `archived` | 任务移入归档。 | 必须先通过引用检查,并留下 redirect stub 或 generated index entry。 |
|
|
212
|
+
| `hard-deleted` | 物理删除。 | 默认禁止;只允许误创建且无引用、无 ledger、无 progress、无 review 证据的任务。 |
|
|
213
|
+
|
|
214
|
+
Soft-deleted / Superseded 队列用于只读追溯,帮助用户看清“为什么这个任务不在活跃队列里”以及替代任务是谁。
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Coding Agent Harness keeps coding-agent work inside the repository instead of leaving it buried in chat history. Plans, progress, reviews, migration notes, and dashboard snapshots stay with the code.
|
|
4
4
|
|
|
5
|
-

|
|
6
6
|
|
|
7
7
|
## How It Works
|
|
8
8
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "coding-agent-harness",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Document governance kernel for long-running coding agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -31,17 +31,22 @@
|
|
|
31
31
|
"status": "node scripts/harness.mjs status --json .",
|
|
32
32
|
"dashboard": "node scripts/harness.mjs dashboard --out tmp/harness-dashboard.html examples/minimal-project",
|
|
33
33
|
"dashboard:folder": "node scripts/harness.mjs dashboard --out-dir tmp/harness-dashboard examples/minimal-project",
|
|
34
|
-
"
|
|
35
|
-
"
|
|
34
|
+
"pack:dry-run": "npm pack --dry-run --json",
|
|
35
|
+
"postinstall": "node scripts/postinstall.mjs",
|
|
36
|
+
"smoke:dashboard": "node tests/smoke-dashboard.mjs",
|
|
37
|
+
"test": "node tests/run-all.mjs"
|
|
36
38
|
},
|
|
37
39
|
"files": [
|
|
38
40
|
"README.md",
|
|
39
41
|
"README.en-US.md",
|
|
40
42
|
"README.zh-CN.md",
|
|
43
|
+
"CONTRIBUTING.md",
|
|
41
44
|
"CHANGELOG.md",
|
|
42
45
|
"SKILL.md",
|
|
43
46
|
"LICENSE",
|
|
44
47
|
"references/",
|
|
48
|
+
"skills/",
|
|
49
|
+
"presets/",
|
|
45
50
|
"templates/",
|
|
46
51
|
"templates-zh-CN/",
|
|
47
52
|
"scripts/",
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
id: legacy-migration
|
|
2
|
+
version: 2
|
|
3
|
+
compatibleBudgets: [complex]
|
|
4
|
+
localeSupport: [en-US, zh-CN]
|
|
5
|
+
purpose: migrate legacy Harness projects into v1 task readability and cutover gates
|
|
6
|
+
task:
|
|
7
|
+
kind: project-migration
|
|
8
|
+
defaultTaskId: harness-v1-migration
|
|
9
|
+
defaultOutcome: Create a controlled Harness v1 migration task from the recorded migrate-run session without rewriting history automatically.
|
|
10
|
+
requiresFromSession: true
|
|
11
|
+
projectLevelOnly: true
|
|
12
|
+
migrationTargetLevel: migration-baseline
|
|
13
|
+
inputs:
|
|
14
|
+
session:
|
|
15
|
+
type: json-file
|
|
16
|
+
flag: --from-session
|
|
17
|
+
required: true
|
|
18
|
+
validateOperation: migrate-run
|
|
19
|
+
rejectPlanOnly: true
|
|
20
|
+
requireTarget: true
|
|
21
|
+
targetFromSession: true
|
|
22
|
+
templateValues:
|
|
23
|
+
preset:
|
|
24
|
+
value: legacy-migration
|
|
25
|
+
presetVersion:
|
|
26
|
+
value: 2
|
|
27
|
+
evidenceBundle:
|
|
28
|
+
from: computed.evidenceBundle
|
|
29
|
+
migrationTargetLevel:
|
|
30
|
+
from: computed.migrationTargetLevel
|
|
31
|
+
migrationAchievedLevel:
|
|
32
|
+
from: computed.migrationAchievedLevel
|
|
33
|
+
strictDeferred:
|
|
34
|
+
from: computed.strictDeferred
|
|
35
|
+
fullCutoverClaimAllowed:
|
|
36
|
+
from: computed.fullCutoverClaimAllowed
|
|
37
|
+
warnings:
|
|
38
|
+
from: computed.warnings
|
|
39
|
+
taskActions:
|
|
40
|
+
from: computed.taskActions
|
|
41
|
+
legacyResiduals:
|
|
42
|
+
from: computed.legacyResiduals
|
|
43
|
+
entrypoints:
|
|
44
|
+
newTask:
|
|
45
|
+
type: template
|
|
46
|
+
writes: [docs/09-PLANNING/TASKS/**]
|
|
47
|
+
reads: [session.json]
|
|
48
|
+
audit: true
|
|
49
|
+
templates:
|
|
50
|
+
taskPlanAppend: templates/task_plan.append.md
|
|
51
|
+
executionStrategyAppend: templates/execution_strategy.append.md
|
|
52
|
+
visualMapAppend: templates/visual_map.append.md
|
|
53
|
+
findingsSeed: templates/findings.seed.md
|
|
54
|
+
reviewSeed: templates/review.seed.md
|
|
55
|
+
plan:
|
|
56
|
+
type: script
|
|
57
|
+
command: scripts/plan-work-queue.mjs
|
|
58
|
+
writes: [docs/09-PLANNING/TASKS/**]
|
|
59
|
+
reads: [docs/**, .git/**]
|
|
60
|
+
audit: true
|
|
61
|
+
scaffold:
|
|
62
|
+
type: script
|
|
63
|
+
command: scripts/scaffold-task-contracts.mjs
|
|
64
|
+
writes: [docs/09-PLANNING/TASKS/**]
|
|
65
|
+
reads: [docs/**]
|
|
66
|
+
audit: true
|
|
67
|
+
check:
|
|
68
|
+
type: check
|
|
69
|
+
command: checks/preset-check.mjs
|
|
70
|
+
writes: [docs/09-PLANNING/TASKS/**]
|
|
71
|
+
reads: [docs/**]
|
|
72
|
+
audit: true
|
|
73
|
+
workbench:
|
|
74
|
+
panels: workbench/dashboard-panels.yaml
|
|
75
|
+
migrationQueueSchema: workbench/migration-queue.schema.json
|
|
76
|
+
evidence:
|
|
77
|
+
bundleDir: evidence
|
|
78
|
+
files:
|
|
79
|
+
session:
|
|
80
|
+
path: session.json
|
|
81
|
+
type: input-json
|
|
82
|
+
value: inputs.session
|
|
83
|
+
migratePlan:
|
|
84
|
+
path: migrate-plan.json
|
|
85
|
+
type: json
|
|
86
|
+
value: inputs.session.plan
|
|
87
|
+
normalCheck:
|
|
88
|
+
path: normal-check.json
|
|
89
|
+
type: json
|
|
90
|
+
value: inputs.session.checks.normal
|
|
91
|
+
strictCheck:
|
|
92
|
+
path: strict-check.json
|
|
93
|
+
type: json
|
|
94
|
+
value: inputs.session.checks.strict
|
|
95
|
+
migrateVerify:
|
|
96
|
+
path: migrate-verify.json
|
|
97
|
+
type: migration-verify
|
|
98
|
+
migrationLedger:
|
|
99
|
+
path: migration-ledger.json
|
|
100
|
+
type: migration-ledger
|
|
101
|
+
presetManifest:
|
|
102
|
+
path: preset-manifest.json
|
|
103
|
+
type: preset-manifest
|
|
104
|
+
presetAudit:
|
|
105
|
+
path: preset-audit.json
|
|
106
|
+
type: preset-audit
|
|
107
|
+
writeScope:
|
|
108
|
+
path: write-scope.json
|
|
109
|
+
type: write-scope
|
|
110
|
+
dashboardHash:
|
|
111
|
+
path: dashboard.hash.txt
|
|
112
|
+
type: dashboard-hash
|
|
113
|
+
targetGitStatus:
|
|
114
|
+
path: target-git-status.txt
|
|
115
|
+
type: target-git-status
|
|
116
|
+
targetCommit:
|
|
117
|
+
path: target-commit.txt
|
|
118
|
+
type: target-commit
|
|
119
|
+
harnessVersion:
|
|
120
|
+
path: harness-version.txt
|
|
121
|
+
type: harness-version
|
|
122
|
+
generatedAt:
|
|
123
|
+
path: generated-at.txt
|
|
124
|
+
type: generated-at
|
|
125
|
+
review:
|
|
126
|
+
required: true
|
|
127
|
+
materialFindingPolicy: block-open-p0-p2
|
|
128
|
+
audit:
|
|
129
|
+
manifestRequired: true
|
|
130
|
+
evidenceFiles: [preset-manifest.json, preset-audit.json, write-scope.json]
|
|
131
|
+
writeScopes:
|
|
132
|
+
taskArtifacts:
|
|
133
|
+
path: docs/09-PLANNING/TASKS/**
|
|
134
|
+
access: write
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
## Legacy Migration Preset Strategy
|
|
2
|
+
|
|
3
|
+
This preset keeps migration inside the Complex Task contract.
|
|
4
|
+
|
|
5
|
+
| Area | Rule |
|
|
6
|
+
| --- | --- |
|
|
7
|
+
| Write boundary | Do not rewrite historical task bodies unless the user explicitly confirms that phase. |
|
|
8
|
+
| Evidence source | Use `{{evidenceBundle}}/` as the handoff bundle. Absolute session paths are origin data only. |
|
|
9
|
+
| Target level | `{{migrationTargetLevel}}` |
|
|
10
|
+
| Achieved level | `{{migrationAchievedLevel}}` |
|
|
11
|
+
|
|
12
|
+
## Subagent Lane Table
|
|
13
|
+
|
|
14
|
+
Declare lanes before dispatching workers.
|
|
15
|
+
|
|
16
|
+
| Lane ID | Allowed globs | Forbidden globs | Shared file owner | Worktree / branch | Handoff path | Merge order | Verification command |
|
|
17
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
18
|
+
| coordinator | docs/09-PLANNING/TASKS/** | AGENTS.md, CLAUDE.md, docs/Harness-Ledger.md until closeout | coordinator | current | progress.md | 1 | harness check --profile target-project . |
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## Legacy Migration Action Buckets
|
|
2
|
+
|
|
3
|
+
| Bucket | Count | Owner | Status | Next Action |
|
|
4
|
+
| --- | ---: | --- | --- | --- |
|
|
5
|
+
| warnings | {{warnings}} | coordinator | open | Triage before increasing target level |
|
|
6
|
+
| taskActions | {{taskActions}} | coordinator | open | Upgrade only current/reopened/current-evidence tasks |
|
|
7
|
+
| legacyResiduals | {{legacyResiduals}} | coordinator | open | Assign real owner before full cutover |
|
|
8
|
+
|
|
9
|
+
## Residual Policy
|
|
10
|
+
|
|
11
|
+
Residuals require reason, owner, trigger, next action, and reviewer. Placeholder owner `migration-owner` is not a real owner.
|
|
12
|
+
|
|
13
|
+
## Status Conflict Table
|
|
14
|
+
|
|
15
|
+
| Item | Competing Evidence | Chosen Classification | Confidence | Human Needed |
|
|
16
|
+
| --- | --- | --- | --- | --- |
|
|
17
|
+
| pending | session / SSoT / progress / git | pending | medium | yes |
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
## Legacy Migration Preset Gate
|
|
2
|
+
|
|
3
|
+
`migration-full-cutover` can only be claimed when the final session proves all gates:
|
|
4
|
+
|
|
5
|
+
- final session result is `complete`
|
|
6
|
+
- strict check passes
|
|
7
|
+
- `migrate-verify --full-cutover` passes
|
|
8
|
+
- warnings/actions/residuals/strictDeferred are zero
|
|
9
|
+
- dashboard evidence is readable
|
|
10
|
+
- review has no open P0/P1/P2 blocker
|
|
11
|
+
|
|
12
|
+
Current achieved level: `{{migrationAchievedLevel}}`.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
## Legacy Migration Preset
|
|
2
|
+
|
|
3
|
+
This Complex Task uses the `{{preset}}` preset package. The preset only scaffolds the migration task and records evidence at creation time. It does not run migration, rewrite historical task bodies, stage files, or commit changes.
|
|
4
|
+
|
|
5
|
+
- Preset version: `{{presetVersion}}`
|
|
6
|
+
- Baseline session: `{{evidenceBundle}}/session.json`
|
|
7
|
+
- Migration plan: `{{evidenceBundle}}/migrate-plan.json`
|
|
8
|
+
- Strict deferred: {{strictDeferred}}
|
|
9
|
+
- Full-cutover claim allowed now: {{fullCutoverClaimAllowed}}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
## Legacy Migration Preset Flow
|
|
2
|
+
|
|
3
|
+
```mermaid
|
|
4
|
+
flowchart TD
|
|
5
|
+
A["Recorded migrate-run session"] --> B["Create Complex Task preset"]
|
|
6
|
+
B --> C["Baseline usable"]
|
|
7
|
+
C --> D{"User confirms deeper cutover?"}
|
|
8
|
+
D -- no --> E["Keep residuals owned"]
|
|
9
|
+
D -- yes --> F["Current work cutover"]
|
|
10
|
+
F --> G["Historical consolidation"]
|
|
11
|
+
G --> H["Strict / full-cutover verify"]
|
|
12
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "legacy-migration-queue/v2",
|
|
3
|
+
"staticDashboardRole": "evidence-snapshot",
|
|
4
|
+
"workbenchRole": "human-confirmation-control-plane",
|
|
5
|
+
"requiredItemFields": [
|
|
6
|
+
"taskId",
|
|
7
|
+
"phase",
|
|
8
|
+
"mechanicalState",
|
|
9
|
+
"semanticState",
|
|
10
|
+
"evidenceSources",
|
|
11
|
+
"reviewState",
|
|
12
|
+
"confirmationState",
|
|
13
|
+
"owner",
|
|
14
|
+
"residual"
|
|
15
|
+
],
|
|
16
|
+
"allowedPhases": [
|
|
17
|
+
"baseline",
|
|
18
|
+
"mechanical-scaffold",
|
|
19
|
+
"semantic-reconstruction",
|
|
20
|
+
"cutover-review"
|
|
21
|
+
],
|
|
22
|
+
"semanticRule": "Semantic reconstruction requires evidenceSources and cannot be marked complete by scaffold-only automation."
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
id: lesson-sedimentation
|
|
2
|
+
version: 1
|
|
3
|
+
purpose: Create a follow-up task for reviewing and sedimenting an accepted lesson candidate into a promoted detail doc.
|
|
4
|
+
compatibleBudgets: [standard, complex]
|
|
5
|
+
localeSupport: [en-US, zh-CN]
|
|
6
|
+
task:
|
|
7
|
+
kind: lesson-sedimentation
|
|
8
|
+
projectLevelOnly: true
|
|
9
|
+
entrypoints:
|
|
10
|
+
newTask:
|
|
11
|
+
type: template
|
|
12
|
+
writes: [docs/09-PLANNING/TASKS/**]
|
|
13
|
+
reads: [docs/09-PLANNING/TASKS/**/lesson_candidates.md]
|
|
14
|
+
audit: true
|
|
15
|
+
templates:
|
|
16
|
+
prompt: templates/prompt.md
|
|
17
|
+
writeScopes:
|
|
18
|
+
taskDocs:
|
|
19
|
+
path: docs/09-PLANNING/TASKS/**
|
|
20
|
+
access: write
|
|
21
|
+
audit:
|
|
22
|
+
manifestRequired: true
|
|
23
|
+
evidenceFiles: [preset-audit.json]
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
You are executing a lesson sedimentation follow-up task.
|
|
2
|
+
|
|
3
|
+
Source task: {{sourceTaskId}}
|
|
4
|
+
Source candidate: {{candidateId}} - {{candidateTitle}}
|
|
5
|
+
Follow-up task: {{followUpTaskId}}
|
|
6
|
+
|
|
7
|
+
Candidate scope: {{candidateScope}}
|
|
8
|
+
Candidate module key: {{candidateModuleKey}}
|
|
9
|
+
Detail artifact: {{detailArtifact}}
|
|
10
|
+
Boundary reason: {{boundaryReason}}
|
|
11
|
+
Why it might matter: {{whyItMightMatter}}
|
|
12
|
+
Promotion target: {{promotionTarget}}
|
|
13
|
+
Conflict check: {{conflictCheck}}
|
|
14
|
+
Required standard update: {{requiredStandardUpdate}}
|
|
15
|
+
|
|
16
|
+
Instructions:
|
|
17
|
+
|
|
18
|
+
1. Read the source task, its review, findings, progress, lesson_candidates.md, and the task-local detail artifact.
|
|
19
|
+
2. Classify whether the lesson is task-local, module-local, or global; if module-local, preserve the module key/path.
|
|
20
|
+
3. Check for conflicts with existing lesson candidates, promoted lesson detail docs, public docs, and relevant standards.
|
|
21
|
+
4. Propose the smallest diff needed to preserve the lesson.
|
|
22
|
+
5. Do not write a shared Lessons table; accepted candidates become promoted lesson detail docs or target standard updates.
|
|
23
|
+
6. Record evidence and residual risks in the follow-up task before asking for review.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
id: module
|
|
2
|
+
version: 1
|
|
3
|
+
purpose: Create module-scoped tasks with module context entry points and auditable preset metadata.
|
|
4
|
+
compatibleBudgets: [simple, standard, complex]
|
|
5
|
+
localeSupport: [en-US, zh-CN]
|
|
6
|
+
task:
|
|
7
|
+
kind: module-task
|
|
8
|
+
entrypoints:
|
|
9
|
+
newTask:
|
|
10
|
+
type: template
|
|
11
|
+
writes: [docs/09-PLANNING/**]
|
|
12
|
+
audit: true
|
|
13
|
+
templates:
|
|
14
|
+
taskPlanAppend: templates/task_plan.append.md
|
|
15
|
+
executionStrategyAppend: templates/execution_strategy.append.md
|
|
16
|
+
templateValues:
|
|
17
|
+
moduleKey:
|
|
18
|
+
from: task.moduleKey
|
|
19
|
+
audit:
|
|
20
|
+
manifestRequired: true
|
|
21
|
+
evidenceFiles: [preset-audit.json]
|
|
22
|
+
writeScopes:
|
|
23
|
+
planningDocs:
|
|
24
|
+
path: docs/09-PLANNING/**
|
|
25
|
+
access: write
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
## Module Preset Strategy
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
| --- | --- |
|
|
5
|
+
| Module Key | {{moduleKey}} |
|
|
6
|
+
| Module Plan | docs/09-PLANNING/MODULES/{{moduleKey}}/module_plan.md |
|
|
7
|
+
|
|
8
|
+
Keep shared module decisions in the module plan or module context files. Keep task-specific evidence in this task directory.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## Module Preset
|
|
2
|
+
|
|
3
|
+
This module task was created through the `module` preset.
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
| --- | --- |
|
|
7
|
+
| Module Key | {{moduleKey}} |
|
|
8
|
+
|
|
9
|
+
## Module Context Entry Points
|
|
10
|
+
|
|
11
|
+
Read these module-level entry points before changing shared module behavior. Continue into narrower context only when the task surface requires it.
|
|
12
|
+
|
|
13
|
+
| Reference | Path | Why / When |
|
|
14
|
+
| --- | --- | --- |
|
|
15
|
+
| Module brief | docs/09-PLANNING/MODULES/{{moduleKey}}/brief.md | Start here for the module purpose and current scope. |
|
|
16
|
+
| Module plan | docs/09-PLANNING/MODULES/{{moduleKey}}/module_plan.md | Use this for module steps, active task links, and handoff state. |
|
|
17
|
+
| Module visual map | docs/09-PLANNING/MODULES/{{moduleKey}}/visual_map.md | Inspect when the change affects module sequencing or dependencies. |
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
id: standard-task
|
|
2
|
+
version: 1
|
|
3
|
+
purpose: Create a standard task using the generic declarative preset engine.
|
|
4
|
+
compatibleBudgets: [standard, complex]
|
|
5
|
+
localeSupport: [en-US, zh-CN]
|
|
6
|
+
task:
|
|
7
|
+
kind: standard-task
|
|
8
|
+
defaultTaskId: standard-task
|
|
9
|
+
entrypoints:
|
|
10
|
+
newTask:
|
|
11
|
+
type: template
|
|
12
|
+
writes: [docs/09-PLANNING/TASKS/**]
|
|
13
|
+
audit: true
|
|
14
|
+
templates:
|
|
15
|
+
taskPlanAppend: templates/task_plan.append.md
|
|
16
|
+
templateValues:
|
|
17
|
+
title:
|
|
18
|
+
from: task.title
|
|
19
|
+
evidence:
|
|
20
|
+
bundleDir: artifacts/preset
|
|
21
|
+
files:
|
|
22
|
+
presetAudit:
|
|
23
|
+
path: preset-audit.json
|
|
24
|
+
type: preset-audit
|
|
25
|
+
audit:
|
|
26
|
+
manifestRequired: true
|
|
27
|
+
evidenceFiles: [preset-audit.json]
|
|
28
|
+
writeScopes:
|
|
29
|
+
taskDocs:
|
|
30
|
+
path: docs/09-PLANNING/TASKS/**
|
|
31
|
+
access: write
|