easy-coding-harness 0.6.0 → 0.6.1

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.
@@ -59,36 +59,43 @@ replies are English.
59
59
  4. **New task.** When creating a task (from step 3), create
60
60
  the task through the state API, which creates `task.json`, sets `status:"INIT"`, writes
61
61
  `stage_history`, and sets the session `current_task`:
62
- `{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py create-task --session-file <P> --task-id <MM-DD-task-slug> --type <type> --title "<one-line summary>" --agent <agent-id>`.
62
+ `{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py create-task --session-file <P> --task-id <MM-DD-task-slug> --type <feature|bugfix|refactor|perf|doc|analysis|report|workflow> --title "<one-line summary>" --agent <agent-id>`.
63
63
  Use the returned `status_context` as the current status source. Then enter INIT.
64
64
 
65
65
  ## State machine
66
66
 
67
67
  ```
68
- INIT -> ANALYSIS -> IMPLEMENT -> REVIEW -> VERIFICATION -> MEMORY -> COMPLETE
69
- ^ ^ | |
70
- +-- replan ---+ +--- fix -----+
71
- ^ |
72
- +------- repair ----------+
73
- every edge --[explicit user confirmation by default]--> target stage
68
+ INIT --[auto]--> ANALYSIS -> IMPLEMENT -> REVIEW -> VERIFICATION -> MEMORY --[auto]--> COMPLETE
69
+ \----------------> VERIFICATION
70
+ \--[read-only auto]------------------------------> COMPLETE
71
+ ^ ^ | |
72
+ +-- replan ---+ +--- fix -----+
73
+ ^ |
74
+ +------- repair ----------+
75
+ user-decision edge --[explicit confirmation / handoff / Other]--> target stage
74
76
  any stage --[user abort via ec-task-close]--> CLOSED
75
77
  ```
76
78
 
77
79
  | Stage | Owner skill | What happens | Exit condition |
78
80
  |---|---|---|---|
79
- | INIT | ec-workflow | collect context, settle scope AND delivery form (change code vs. produce a document) | work complete; request ANALYSIS |
80
- | ANALYSIS | ec-analysis | dev-spec + execution plan + test strategy | analysis presented; request IMPLEMENT |
81
- | IMPLEMENT | ec-implementing | code changes per confirmed plan | all units done; request REVIEW |
81
+ | INIT | ec-workflow | collect context, settle scope AND delivery form (change code vs. produce a document) | work complete; auto-transition to ANALYSIS |
82
+ | ANALYSIS | ec-analysis | dev-spec + execution plan; code tasks also get test strategy | analysis presented; request IMPLEMENT |
83
+ | IMPLEMENT | ec-implementing | code changes or one read-only deliverable | code: choose REVIEW or VERIFICATION; read-only: auto-complete after delivery |
82
84
  | REVIEW | ec-reviewing | multi-dimension code review | verdict selects a legal target; request it |
83
85
  | VERIFICATION | ec-verification | hard gate: lint/typecheck/test + coverage | result selects MEMORY or IMPLEMENT; request it |
84
- | MEMORY | ec-memory | write short memory, then run the conditional long-memory gate | memory work complete; request COMPLETE |
85
- | COMPLETE | ec-workflow | clear current_task, set task status, summary | terminal after user confirms entry |
86
+ | MEMORY | ec-memory | write short memory, then run the conditional long-memory gate | memory work complete; auto-transition to COMPLETE |
87
+ | COMPLETE | ec-workflow | clear current_task, set task status, summary | automatic terminal after MEMORY or validated read-only IMPLEMENT |
86
88
  | CLOSED | ec-task-close | user abort; no memory flow | terminal |
87
89
 
88
90
  > **INIT delivery-form rule.** When creating the task, `type` and `title` must faithfully
89
91
  > reflect the delivery form implied by the user's request. A refactor/fix/feature is a CODE
90
92
  > task; do not record it as an analysis/report task. Do not let ANALYSIS later re-interpret a
91
93
  > code task into a documentation-only task — that is a downgrade (see ec-analysis HARD RULE 5).
94
+ > Use `doc`, `analysis`, or `report` only when the user's original request explicitly asks for
95
+ > a no-code deliverable. Those task types may carry execution units with an empty file scope;
96
+ > code task types may not. A successful empty-scope task ends automatically from IMPLEMENT to
97
+ > COMPLETE after its full deliverable is shown; it never creates test-strategy.md or enters
98
+ > REVIEW, VERIFICATION, or MEMORY.
92
99
 
93
100
  ## Task switching
94
101
 
@@ -101,20 +108,27 @@ When the user confirms switching from task A to task B:
101
108
  the user which previous agent owned the task.
102
109
  4. Resume task B's stage via the appropriate stage skill.
103
110
 
104
- No data is lost — task A's dev-spec, execution.jsonl, and test-strategy.md stay intact on
105
- disk. To return to task A later, the same intent routing applies: the user mentions it,
106
- routing matches, and switching happens again.
111
+ No data is lost — task A's dev-spec and execution.jsonl stay intact, as does test-strategy.md
112
+ for a code task. To return to task A later, the same intent routing applies: the user mentions
113
+ it, routing matches, and switching happens again.
107
114
 
108
115
  ## Transition rules (hard)
109
116
 
110
- - **Never skip a stage.** ANALYSIS cannot jump to VERIFICATION; IMPLEMENT cannot start before
111
- the ANALYSIS -> IMPLEMENT confirmation gate passes. No exception for "simple" tasks —
112
- simple tasks have short analyses, not skipped ones.
113
- - **Every stage edge is a confirmation gate by default.** Stage completion does NOT change
114
- `task.json.status`. It records a `pending_transition` through the state API, presents the
115
- standard choices below, and stops. This applies to forward edges, repair/replan edges, and
116
- MEMORY -> COMPLETE. Task creation entering INIT and the separately confirmed ec-task-close
117
- flow do not add a redundant second prompt.
117
+ - **Code tasks may skip only REVIEW.** ANALYSIS cannot jump to VERIFICATION; IMPLEMENT cannot
118
+ start before the ANALYSIS -> IMPLEMENT confirmation gate passes. After code implementation,
119
+ the user may enter REVIEW or skip it and enter VERIFICATION; code tasks never skip
120
+ VERIFICATION. Explicit read-only tasks are the separate terminal exception below.
121
+ - **User-decision edges are confirmation gates.** Stage completion on those edges does NOT
122
+ change `task.json.status`. It records a `pending_transition` through the state API, presents
123
+ the choices below, and stops. This applies to forward edges, repair/replan edges, and the
124
+ IMPLEMENT review choice. Task creation entering INIT and the separately confirmed
125
+ ec-task-close flow do not add a redundant second prompt.
126
+ - **Mechanical edges are automatic.** After INIT work completes, call `auto-transition`
127
+ for ANALYSIS and dispatch ec-analysis in the same flow. After `memory-complete`, call
128
+ `auto-transition` for COMPLETE and emit the closeout summary. A successful explicit read-only
129
+ task also calls `auto-transition` from IMPLEMENT to COMPLETE immediately after displaying the
130
+ full deliverable. These edges do not create `pending_transition`, do not offer handoff, and
131
+ never wait for user confirmation.
118
132
  - **Native choice first (hard requirement).** After `request-transition` succeeds, you MUST
119
133
  prefer the agent/platform's native user-choice tool whenever one is available. Do not render
120
134
  a plain-text numbered list on a platform that can present selectable options and a free-form
@@ -122,14 +136,20 @@ routing matches, and switching happens again.
122
136
  1. Confirm entering/returning to `<target-stage>` (recommended)
123
137
  2. Hand off to another agent
124
138
  3. Other — use the native tool's built-in free-form Other input.
139
+ Code-task IMPLEMENT completion is the one special gate: offer (1) enter REVIEW (recommended),
140
+ (2) skip REVIEW and enter VERIFICATION, and (3) hand off; use the native free-form Other
141
+ input for revisions. Record REVIEW as the recommended pending edge first. If the user chooses
142
+ VERIFICATION, cancel that edge, request IMPLEMENT -> VERIFICATION, and immediately confirm it
143
+ because that selection is explicit confirmation of the alternate target.
125
144
  Plain-text numbered choices are fallback only: use them only when no native user-choice tool
126
145
  exists. The runtime hook never mutates workflow state from user-prompt text. Native choice
127
146
  results, numbered fallback replies, and every natural-language reply must be interpreted by
128
147
  you against the current task and stored target before calling `confirm-transition` explicitly.
129
148
  On Other feedback, cancel the pending edge before revising work or requesting a different
130
149
  legal target. Never interpret silence, enthusiasm, or topic changes as confirmation.
131
- - **State before action.** Every confirmed stage advance is a two-step protocol: first consume
132
- the pending edge through `confirm-transition`, then run that stage's real work. Do not start
150
+ - **State before action.** Every user-confirmed stage advance is a two-step protocol: first
151
+ consume the pending edge through `confirm-transition`, then run that stage's real work. The
152
+ automatic edges use `auto-transition` instead. Do not start
133
153
  analysis, implementation, review, verification, memory writing, or closeout while
134
154
  `task.json.status` still names the previous stage. After every state API call, treat the
135
155
  returned snapshot/read-after-write state as authoritative for the next action and status line.
@@ -137,8 +157,11 @@ routing matches, and switching happens again.
137
157
  (1) Read `.easy-coding/templates/dev-spec-skeleton.md`, then (2) Write its exact content
138
158
  to the task's dev-spec.md. This is a mechanical copy, not a generation task. Do not read
139
159
  code, load memory, or analyze before the skeleton is on disk. This is ec-analysis
140
- HARD RULE 1 — violating it means the analysis has failed. Your reply to the user must
141
- be the complete dev-spec.md content, not a summary or custom format.
160
+ HARD RULE 1 — violating it means the analysis has failed. After the skeleton is written,
161
+ inspect the required evidence without editing it. Ask and resolve every user decision during
162
+ ANALYSIS before filling any section; the final report must not contain a `待用户决策` section
163
+ or `[阶段:ANALYSIS]`. Once decisions are resolved, your plan reply must be the complete
164
+ dev-spec.md content, not a summary or custom format.
142
165
  Additionally, ANALYSIS must stay faithful to the user's delivery form — it may NOT downgrade
143
166
  a code task to a report-only task — and the 改动范围 table must list only real project code,
144
167
  never `.easy-coding/` harness artifacts (ec-analysis HARD RULES 5 and 6).
@@ -146,9 +169,19 @@ routing matches, and switching happens again.
146
169
  waives stage-boundary prompts when the user explicitly requested autonomous execution.
147
170
  It carries NO scope or delivery-form decision. Never cite `auto_mode` to narrow scope,
148
171
  downgrade a code task, or bypass a blocker that needs a real user decision.
149
- - **At stage completion** request the legal target immediately (not at turn end):
172
+ - **At user-decision stage completion** request the legal target immediately (not at turn end):
150
173
  `{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py request-transition --session-file <P> --stage <STAGE> --agent <agent-id> --reason "<why this edge is ready>"`.
151
174
  This writes only `pending_transition`; it does not change the stage.
175
+ - **No-code IMPLEMENT delivery:** before completing the task, ec-implementing must
176
+ have output the successful unit's complete non-empty `deliverable` verbatim to the user.
177
+ A summary or execution.jsonl record is not a substitute; missing user-visible delivery keeps
178
+ the task in IMPLEMENT. The execution log must contain a matching `dispatch` immediately before
179
+ the accepted result for that unit. After delivery, call `auto-transition --stage COMPLETE`;
180
+ do not enter REVIEW, VERIFICATION, or MEMORY and do not write memory.
181
+ - **On automatic completion** call:
182
+ `{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py auto-transition --session-file <P> --stage <ANALYSIS|COMPLETE> --agent <agent-id>`.
183
+ The state API accepts INIT -> ANALYSIS, completed MEMORY -> COMPLETE, and a validated
184
+ read-only IMPLEMENT -> COMPLETE through this command.
152
185
  - **On user confirmation** read the current task's pending edge and call:
153
186
  `{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py confirm-transition --session-file <P> --stage <STAGE> --agent <agent-id>`.
154
187
  Only after the read-after-write status names the target stage may its action start.
@@ -165,8 +198,9 @@ routing matches, and switching happens again.
165
198
  transition was rejected. Do not proceed with an illegal stage.
166
199
  - **Repair loop sizing** (after VERIFICATION): a trivial tweak may be fixed inside
167
200
  VERIFICATION and re-verified without a status change; a logic or structure change requests
168
- VERIFICATION -> IMPLEMENT and waits at the standard confirmation gate before re-walking
169
- REVIEW -> VERIFICATION.
201
+ VERIFICATION -> IMPLEMENT and waits at the standard confirmation gate. After repair, present
202
+ the IMPLEMENT completion choice again so the user may enter REVIEW or skip directly to
203
+ VERIFICATION.
170
204
  - **Scope guard** (repair loop): if the user's fix request falls outside the dev-spec scope
171
205
  (features or files absent from the change-scope table), say so explicitly and propose a
172
206
  new task with `spawned_from` set to the current task id. Never silently absorb scope creep.
@@ -177,10 +211,11 @@ routing matches, and switching happens again.
177
211
  user confirms, MEMORY writes one short entry first, records it through `memory-short-complete`,
178
212
  then asks the state API for the authoritative `memory` instruction. `action == "no-op"`
179
213
  skips long-memory reads/writes; `action == "distill"` processes exactly `trim_count` older
180
- entries. Only after `memory-complete` may ec-memory request MEMORY -> COMPLETE.
181
- - **COMPLETE closeout:** COMPLETE is also a confirmed edge. Once the user confirms it, the
182
- state API clears session `current_task`, so the next hook injection returns to Ready. Then
183
- output a summary (what was done, files changed, key decisions).
214
+ entries. After `memory-complete`, ec-memory automatically advances MEMORY -> COMPLETE.
215
+ - **COMPLETE closeout:** COMPLETE is automatic after successful memory processing, or directly
216
+ after a validated read-only deliverable. The state API clears session `current_task`, so the
217
+ next hook injection returns to Ready. Then output a summary; for read-only tasks, the full
218
+ report must already have appeared before this closeout.
184
219
 
185
220
  ## Resume and handoff
186
221
 
@@ -194,14 +229,21 @@ Resuming an active task (whether from session restart, claim, handoff, or task s
194
229
  records tell you exactly where work stopped.
195
230
  3. If the task was claimed from another agent, read the latest `handoff` record first for the
196
231
  fast summary and tell the user which previous agent handed it off.
197
- 4. If `pending_transition` exists, do not rerun the completed stage action. Re-present the
198
- standard confirmation/handoff/Other choices for its stored target.
199
- 5. Otherwise tell the user what is being resumed and from which stage, then continue.
232
+ 4. If `pending_transition` exists, do not rerun the completed stage action. If its stored edge
233
+ is INIT -> ANALYSIS or MEMORY -> COMPLETE, treat it as an upgrade-era automatic edge: call
234
+ `auto-transition` for the stored target immediately, without confirmation or handoff. For
235
+ a read-only task in IMPLEMENT, cancel any stale pending REVIEW/VERIFICATION edge before the
236
+ terminal check below. For any other stored edge, re-present the standard
237
+ confirmation/handoff/Other choices. At an IMPLEMENT boundary for a code task, re-present the
238
+ special REVIEW / skip to VERIFICATION / handoff choices.
239
+ 5. If a read-only task resumes in IMPLEMENT with a valid successful result, output its complete
240
+ deliverable again and immediately auto-transition to COMPLETE. Otherwise tell the user what
241
+ is being resumed and from which stage, then continue.
200
242
 
201
243
  After a task switch, the same resume flow applies — the only difference is that `current_task`
202
244
  was just changed by the switching procedure rather than being loaded from a prior session.
203
245
 
204
- Offering handoff — every pending stage edge includes the standard handoff option. On that
246
+ Offering handoff — every user-decision pending edge includes the handoff option. On that
205
247
  option, call:
206
248
  `{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py handoff-task --session-file <P> --agent <agent-id> --summary "<dense context: plan shape, key decisions, user emphases>"`.
207
249
 
@@ -35,21 +35,25 @@ First run `ec-init`; daily work goes through `ec-workflow`.
35
35
 
36
36
  ## Workflow discipline
37
37
 
38
- - Stages do not skip. Every legal stage edge uses `pending_transition` and requires explicit
39
- user confirmation by default. At each boundary, use the agent's native user-choice tool
40
- whenever available to offer: confirm target stage, hand off to another agent, or its
41
- free-form Other input. Plain-text numbered choices are fallback only. `auto_mode` only
42
- waives prompts when configured and explicitly requested by the user; it never changes scope
43
- or delivery form.
38
+ - Code tasks do not skip stages except when the user explicitly skips REVIEW after IMPLEMENT.
39
+ User-decision edges use `pending_transition`; offer the target and handoff, and offer
40
+ free-form Other through native UI when available. IMPLEMENT additionally offers direct entry
41
+ to VERIFICATION.
42
+ INIT -> ANALYSIS, completed MEMORY -> COMPLETE, and validated read-only
43
+ IMPLEMENT -> COMPLETE use restricted `auto-transition` without confirmation or handoff. A
44
+ read-only task creates no test-strategy.md, never enters REVIEW, VERIFICATION, or MEMORY, and
45
+ writes no task memory.
46
+ `auto_mode` only waives remaining prompts; it never changes scope or delivery form.
44
47
  - ANALYSIS must follow template-first: read `.easy-coding/templates/dev-spec-skeleton.md` then
45
- write its exact content to the task's dev-spec.md as the FIRST tool calls, then fill sections
46
- incrementally via edits. Reply to the user with the complete dev-spec.md content — never a
47
- summary table or custom format.
48
- - VERIFICATION is a hard gate: lint + typecheck + test must pass on fresh evidence, and
49
- coverage must match the test strategy, before a task can complete.
50
- - MEMORY combines short-memory creation and the conditional long-memory gate. Archive runs
51
- only after explicit user acceptance an unaccepted task's memory is dirty data.
52
- - NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
48
+ write its exact content to the task's dev-spec.md as the FIRST tool calls. Next inspect evidence
49
+ without editing the skeleton, ask every unresolved decision during analysis, and wait. Only
50
+ after all decisions are resolved may the agent fill the complete dev-spec.md. The final report
51
+ contains neither `[阶段:ANALYSIS]` nor a `待用户决策` section.
52
+ - For code tasks, VERIFICATION is a hard gate: lint + typecheck + test must pass on fresh
53
+ evidence, and coverage must match the test strategy, before completion.
54
+ - MEMORY combines short-memory creation and the conditional long-memory gate. Archive starts
55
+ only after explicit user acceptance; once memory processing completes, COMPLETE is automatic.
56
+ - NO CODE-TASK COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
53
57
  - All cross-platform modules (skills, hooks, references) must use universal agent protocols.
54
58
  Do not rely on any specific agent's proprietary conventions unless the module is explicitly
55
59
  a platform-specific compatibility layer. Reference files use descriptive filenames (e.g.,
@@ -33,21 +33,25 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
33
33
 
34
34
  ## Workflow discipline
35
35
 
36
- - Stages do not skip. Every legal stage edge uses `pending_transition` and requires explicit
37
- user confirmation by default. At each boundary, use the agent's native user-choice tool
38
- whenever available to offer: confirm target stage, hand off to another agent, or its
39
- free-form Other input. Plain-text numbered choices are fallback only. `auto_mode` only
40
- waives prompts when configured and explicitly requested by the user; it never changes scope
41
- or delivery form.
36
+ - Code tasks do not skip stages except when the user explicitly skips REVIEW after IMPLEMENT.
37
+ User-decision edges use `pending_transition`; offer the target and handoff, and offer
38
+ free-form Other through native UI when available. IMPLEMENT additionally offers direct entry
39
+ to VERIFICATION.
40
+ INIT -> ANALYSIS, completed MEMORY -> COMPLETE, and validated read-only
41
+ IMPLEMENT -> COMPLETE use restricted `auto-transition` without confirmation or handoff. A
42
+ read-only task creates no test-strategy.md, never enters REVIEW, VERIFICATION, or MEMORY, and
43
+ writes no task memory.
44
+ `auto_mode` only waives remaining prompts; it never changes scope or delivery form.
42
45
  - ANALYSIS must follow template-first: read `.easy-coding/templates/dev-spec-skeleton.md` then
43
- write its exact content to the task's dev-spec.md as the FIRST tool calls, then fill sections
44
- incrementally via edits. Reply to the user with the complete dev-spec.md content — never a
45
- summary table or custom format.
46
- - VERIFICATION is a hard gate: lint + typecheck + test must pass on fresh evidence, and
47
- coverage must match the test strategy, before a task can complete.
48
- - MEMORY combines short-memory creation and the conditional long-memory gate. Archive runs
49
- only after explicit user acceptance an unaccepted task's memory is dirty data.
50
- - NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
46
+ write its exact content to the task's dev-spec.md as the FIRST tool calls. Next inspect evidence
47
+ without editing the skeleton, ask every unresolved decision during analysis, and wait. Only
48
+ after all decisions are resolved may the agent fill the complete dev-spec.md. The final report
49
+ contains neither `[阶段:ANALYSIS]` nor a `待用户决策` section.
50
+ - For code tasks, VERIFICATION is a hard gate: lint + typecheck + test must pass on fresh
51
+ evidence, and coverage must match the test strategy, before completion.
52
+ - MEMORY combines short-memory creation and the conditional long-memory gate. Archive starts
53
+ only after explicit user acceptance; once memory processing completes, COMPLETE is automatic.
54
+ - NO CODE-TASK COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
51
55
  - All cross-platform modules (skills, hooks, references) must use universal agent protocols.
52
56
  Do not rely on any specific agent's proprietary conventions unless the module is explicitly
53
57
  a platform-specific compatibility layer. Reference files use descriptive filenames (e.g.,
@@ -11,6 +11,8 @@ complete exactly that unit. Your reply IS the return value, not a message to a h
11
11
  ## Hard constraints
12
12
 
13
13
  - Modify only the files listed in the task card's "Editable scope". Touch nothing else.
14
+ - If the editable scope is `NONE — read-only deliverable`, modify nothing and return the full
15
+ requested result in `deliverable`.
14
16
  - Do not call any Skill tool.
15
17
  - Do not read `.qoder/skills/`, `.agents/skills/`, or any `.easy-coding/` file. All needed
16
18
  context is in the card.
@@ -22,6 +24,7 @@ complete exactly that unit. Your reply IS the return value, not a message to a h
22
24
 
23
25
  - `changed_files`: the files you actually modified
24
26
  - `summary`: one line describing what you did
27
+ - `deliverable`: full no-code result, or `null` for a code unit
25
28
  - `issues`: problems you hit (empty array if none)
26
29
  - `needs_attention`: anything the main agent must decide (empty array if none)
27
30
 
@@ -1,80 +1,75 @@
1
- [阶段:ANALYSIS]
2
-
3
- ## 技术方案:{任务标题}
1
+ ## 技术方案:[[EC_TODO:任务标题]]
4
2
 
5
3
  ### 项目模式
6
- {初创项目/迭代项目}
4
+ [[EC_TODO:初创项目/迭代项目]]
7
5
 
8
6
  ### 任务类型
9
- {新功能 / Bug 修复 / 重构 / 性能优化 / 前端设计实现}
7
+ [[EC_TODO:新功能 / Bug 修复 / 重构 / 性能优化 / 前端设计实现]]
10
8
 
11
9
  ### 需求解析
12
- - **目标**:{待填写 — 真正要解决的问题}
13
- - **输入**:{待填写 — 用户输入 / 系统输入 / 触发条件}
14
- - **输出**:{待填写 — 先声明交付形态(改代码 / 出文档),再写最终交付结果。交付形态须忠于用户原始需求,不得擅自降级}
15
- - **边界**:{待填写 — 明确不做什么}
10
+ - **目标**:[[EC_TODO:真正要解决的问题]]
11
+ - **输入**:[[EC_TODO:用户输入 / 系统输入 / 触发条件]]
12
+ - **输出**:[[EC_TODO:先声明交付形态(改代码 / 出文档),再写最终交付结果。交付形态须忠于用户原始需求,不得擅自降级]]
13
+ - **边界**:[[EC_TODO:明确不做什么]]
16
14
 
17
15
  ### 现状
18
- - **相关代码 / 页面 / 接口 / 模块**:{待填写 — 基于实际文件与代码的现状说明}
19
- - **当前实现方式**:{待填写 — 现在是如何工作的}
20
- - **现有问题 / 缺口**:{待填写 — 为什么需要改}
21
- - **证据**:{待填写 — 引用的关键文件、类、页面、接口,含 file:line}
16
+ - **相关代码 / 页面 / 接口 / 模块**:[[EC_TODO:基于实际文件与代码的现状说明]]
17
+ - **当前实现方式**:[[EC_TODO:现在是如何工作的]]
18
+ - **现有问题 / 缺口**:[[EC_TODO:为什么需要改]]
19
+ - **证据**:[[EC_TODO:引用的关键文件、类、页面、接口,含 file:line]]
22
20
 
23
21
  ### 冲突摘要
24
- - 需求 vs RULES:{待填写 或 "无冲突"}
25
- - 需求 vs ABSTRACT:{待填写 或 "无冲突"}
26
- - 需求 vs 现有代码:{待填写 或 "无冲突"}
27
- - Dev-Spec vs 现有代码:{待填写 或 "无冲突"}
28
-
29
- ### 待用户决策
30
- - {待填写 — 影响技术路线、接口、改动范围的问题逐条列出;任何"本次不做全部 / 分批落地 / 范围或交付形态收窄"必须列入此处交由用户拍板,不得自行决定并假托既定;若无则写"无"}
22
+ - 需求 vs RULES:[[EC_TODO:填写结果或“无冲突”]]
23
+ - 需求 vs ABSTRACT:[[EC_TODO:填写结果或“无冲突”]]
24
+ - 需求 vs 现有代码:[[EC_TODO:填写结果或“无冲突”]]
25
+ - Dev-Spec vs 现有代码:[[EC_TODO:填写结果或“无冲突”]]
31
26
 
32
27
  ### 影响面分析
33
- - **涉及模块**:{待填写}
34
- - **核心类 / 页面 / 接口**:{待填写}
35
- - **数据库变更**:{有/无}
36
- - **接口变更**:{有/无}
37
- - **关联历史任务**:{待填写 — 相关短期记忆序号;无则"无"}
28
+ - **涉及模块**:[[EC_TODO:涉及模块]]
29
+ - **核心类 / 页面 / 接口**:[[EC_TODO:核心类 / 页面 / 接口]]
30
+ - **数据库变更**:[[EC_TODO:有/无]]
31
+ - **接口变更**:[[EC_TODO:有/无]]
32
+ - **关联历史任务**:[[EC_TODO:相关短期记忆序号;无则“无”]]
38
33
 
39
34
  ### 改动范围
40
35
  > 只列真实项目源码/配置文件的改动。禁止把 `.easy-coding/` 下的 harness 产物(dev-spec / execution.jsonl / test-strategy / 记忆 / 报告等)当作改动对象。本表为空仅允许用于"用户明确要求的无代码交付形态";代码类任务(重构/修复/功能)若此表为空,即为自我降级。
41
36
 
42
37
  | 改动文件 | 改动类型 | 文件编码 | 改动核心内容 |
43
38
  |----------|---------|---------|-------------|
44
- | `{文件路径}` | 新增 | 项目编码 {X},依据:{xxx} | {核心改动} |
45
- | `{文件路径}` | 修改 | 保持原编码 {X} | {核心改动} |
46
- | `{文件路径}` | 删除 | — | {删除原因} |
39
+ | `[[EC_TODO:文件路径]]` | 新增 | 项目编码 [[EC_TODO:编码]],依据:[[EC_TODO:编码依据]] | [[EC_TODO:核心改动]] |
40
+ | `[[EC_TODO:文件路径]]` | 修改 | 保持原编码 [[EC_TODO:编码]] | [[EC_TODO:核心改动]] |
41
+ | `[[EC_TODO:文件路径]]` | 删除 | — | [[EC_TODO:删除原因]] |
47
42
 
48
43
  ### 修改方案
49
- - **总体改法**:{待填写 — 一句话说清改哪里、怎么改}
50
- - **后端改动**:{待填写;不涉及则写"不涉及"}
51
- - **前端改动**:{待填写;不涉及则写"不涉及"}
52
- - **兼容处理**:{待填写 — 旧逻辑如何迁移、保留或替换}
53
- - **风险点**:{待填写 — 最容易出问题的位置}
44
+ - **总体改法**:[[EC_TODO:一句话说清改哪里、怎么改]]
45
+ - **后端改动**:[[EC_TODO:填写改动;不涉及则写“不涉及”]]
46
+ - **前端改动**:[[EC_TODO:填写改动;不涉及则写“不涉及”]]
47
+ - **兼容处理**:[[EC_TODO:旧逻辑如何迁移、保留或替换]]
48
+ - **风险点**:[[EC_TODO:最容易出问题的位置]]
54
49
 
55
50
  ### 实施拆解
56
51
 
57
52
  | 单元 | 说明 | 类型 | 涉及文件 | 依赖 |
58
53
  |------|------|------|---------|------|
59
- | U1 | {title} | {backend/frontend/test/...} | {files} | — |
60
- | U2 | {title} | {type} | {files} | — |
61
- | U3 | {title} | {type} | {files} | U1, U2 |
54
+ | U1 | [[EC_TODO:单元标题]] | [[EC_TODO:backend/frontend/test/...]] | [[EC_TODO:涉及文件]] | — |
55
+ | U2 | [[EC_TODO:单元标题]] | [[EC_TODO:单元类型]] | [[EC_TODO:涉及文件]] | — |
56
+ | U3 | [[EC_TODO:单元标题]] | [[EC_TODO:单元类型]] | [[EC_TODO:涉及文件]] | U1, U2 |
62
57
 
63
- **执行策略**:{parallel / sequential / single}
64
- - 第一批(并行):U1 {title} | U2 {title}
65
- - 第二批(等待第一批):U3 {title}
66
- (若 single:单一实施单元,主 agent 直接执行)
58
+ **执行策略**:[[EC_TODO:parallel / sequential / single]]
59
+ - 第一批(并行):U1 [[EC_TODO:单元标题]] | U2 [[EC_TODO:单元标题]]
60
+ - 第二批(等待第一批):U3 [[EC_TODO:单元标题]]
61
+ (若 single:单一实施单元,派发 1 个子代理执行)
67
62
 
68
63
  ### 测试策略
69
64
 
70
65
  | 测试点 | 级别 | 归属单元 | 方式 | 验证命令 |
71
66
  |--------|------|---------|------|---------|
72
- | {描述} | 必测 | U1 | 单测 | `npm test -- --filter=xxx` |
73
- | {描述} | 应测 | U2 | 快照 | `npm test -- --snapshot` |
67
+ | [[EC_TODO:测试点描述]] | 必测 | U1 | 单测 | `npm test -- --filter=xxx` |
68
+ | [[EC_TODO:测试点描述]] | 应测 | U2 | 快照 | `npm test -- --snapshot` |
74
69
 
75
- - **人工验收**:{待填写 — 用户需要检查的关键行为}
76
- - **无法验证项**:{待填写 — 无 / 说明缺失环境、数据或权限}
70
+ - **人工验收**:[[EC_TODO:用户需要检查的关键行为]]
71
+ - **无法验证项**:[[EC_TODO:无 / 说明缺失环境、数据或权限]]
77
72
 
78
73
  ### 风险与注意事项
79
- - {风险 1}
80
- - {风险 2}
74
+ - [[EC_TODO:风险 1]]
75
+ - [[EC_TODO:风险 2]]