easy-coding-harness 0.9.1-beta.0 → 0.10.0-beta.0
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/README.md +17 -0
- package/package.json +1 -1
- package/templates/common/bundled-skills/ec-meta/references/local-architecture/README.md +19 -3
- package/templates/common/skills/ec-analysis/SKILL.md +43 -1
- package/templates/common/skills/ec-git/SKILL.md +4 -0
- package/templates/common/skills/ec-implementing/SKILL.md +14 -3
- package/templates/common/skills/ec-reviewing/SKILL.md +9 -0
- package/templates/common/skills/ec-task-management/SKILL.md +7 -0
- package/templates/common/skills/ec-verification/SKILL.md +24 -1
- package/templates/common/skills/ec-workflow/SKILL.md +32 -3
- package/templates/runtime/templates/dev-spec-skeleton.md +12 -5
- package/templates/shared-hooks/easy_coding_state.py +1055 -49
- package/templates/shared-hooks/easy_dev_spec.py +417 -0
- package/templates/shared-hooks/easy_dev_spec_protocol.py +1971 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,31 @@
|
|
|
6
6
|
- `y`:常规功能升级
|
|
7
7
|
- `z`:日常 bug 修复
|
|
8
8
|
|
|
9
|
+
## 0.10.0-beta.0
|
|
10
|
+
|
|
11
|
+
- 接入 `easy-dev-spec/v1` Canonical Spec:同步最终 producer 协议实现并新增只读
|
|
12
|
+
`inspect-dev-spec`、确定性 `select-dev-spec-scope`、选择式 `create-task-from-spec` 与
|
|
13
|
+
依赖证据 `satisfy-spec-dependency` 状态 API;用户选择多个 Spec task 后仍只创建一个
|
|
14
|
+
Harness task,消费上下文按仓库形成闭包。
|
|
15
|
+
- Task、Unit 与执行证据新增来源 Spec SHA、仓库、source task/step、符号和测试命令追踪;
|
|
16
|
+
ANALYSIS 使用最终 READY 语义机械校验全局、契约、仓库、任务和验收闭环,并继续校验
|
|
17
|
+
仓库身份、基线、hard 依赖及 task/change/step/test 追踪。
|
|
18
|
+
- IMPLEMENT、REVIEW、VERIFICATION 与 Git 范围按 `repo_id` 隔离;pending integration
|
|
19
|
+
依赖允许完成本地检查,但在证据闭合前禁止进入 MEMORY 或宣称全链路完成。
|
|
20
|
+
- 保持历史/legacy task、现有状态图、approval/workflow mode 与指纹证据兼容;Canonical
|
|
21
|
+
Spec 始终只读,本地 dev-spec、execution plan 和 test strategy 作为带来源哈希的派生物。
|
|
22
|
+
- 补齐 Codex 根身份兼容:真实运行时写入的裸 `root`、既有 `/root` 及其协作子路径统一
|
|
23
|
+
规范化为 `codex`,避免状态行、breadcrumb、任务列表与 claim 再次误报跨 Agent handoff。
|
|
24
|
+
|
|
25
|
+
## 0.9.1
|
|
26
|
+
|
|
27
|
+
- 正式发布 Codex Agent 身份归一化修复:协作路径 `/root`、`/root/...` 与平台身份
|
|
28
|
+
`codex` 视为同一所有者,不再错误展示 `Handoff -> /root`。
|
|
29
|
+
- 状态写入统一保存规范化身份,同时兼容存量任务数据;Claude Code、Codex、Qoder
|
|
30
|
+
之间的真实跨平台交接语义保持不变。
|
|
31
|
+
- 汇总 `0.9.1-beta.0` 的状态行、机器 breadcrumb、任务列表、claim 判定、回归测试与
|
|
32
|
+
架构文档验证结果。
|
|
33
|
+
|
|
9
34
|
## 0.9.1-beta.0
|
|
10
35
|
|
|
11
36
|
- 修复 Codex 根代理把协作路径 `/root` 写入 `task.json.last_agent` 后,hook 运行时身份
|
package/README.md
CHANGED
|
@@ -92,6 +92,23 @@ any stage --[user abort via ec-task-close]--> CLOSED
|
|
|
92
92
|
并留下当前指纹下的绿色证据,就不算通过。
|
|
93
93
|
- `MEMORY` 先写入本次任务短期记忆,再执行长期记忆阈值门禁;未超过阈值时长期沉淀为 no-op。
|
|
94
94
|
|
|
95
|
+
## Canonical Dev Spec
|
|
96
|
+
|
|
97
|
+
Harness 可选择性消费 easy-dev-spec 生成的单文件 `easy-dev-spec/v1` Canonical Spec:
|
|
98
|
+
|
|
99
|
+
1. `ec-workflow` 先只读检查 manifest、仓库、任务 DAG、依赖和 baseline,不创建任务。
|
|
100
|
+
2. 用户明确选择一个或多个 Spec task;`select-dev-spec-scope` 按仓库提取确定性消费
|
|
101
|
+
闭包,Harness 不默认导入整份 Spec,也不会读取未选任务正文。
|
|
102
|
+
3. 一次选择创建一个 Harness task;ANALYSIS 使用最终 producer READY 门禁,并将
|
|
103
|
+
selected task 映射为带 `repo_id`、`source_task_id`、source steps、文件、符号和测试
|
|
104
|
+
命令的 Unit。
|
|
105
|
+
4. `hard` 依赖决定执行顺序,冻结的 `contract` 依赖允许并行编码,`integration` 依赖
|
|
106
|
+
在证据闭合前阻止全链路完成。
|
|
107
|
+
|
|
108
|
+
Canonical Spec 是只读设计源;`.easy-coding/tasks/<task-id>/` 下的 `dev-spec.md`、
|
|
109
|
+
`execution.jsonl` 和 `test-strategy.md` 是绑定来源 SHA-256 的运行时派生物,不会把开发
|
|
110
|
+
进度写回源 Spec。无 Canonical manifest 的历史 Dev-Spec 继续走原有整文分析流程。
|
|
111
|
+
|
|
95
112
|
## Supermodule 模型
|
|
96
113
|
|
|
97
114
|
在包含 `.gitmodules` 的父仓中,Easy Coding Harness 按 git 边界分层运行:
|
package/package.json
CHANGED
|
@@ -73,6 +73,21 @@ frozen concrete mode, and any `pending_transition`; `dev-spec.md` is the human-r
|
|
|
73
73
|
/`review`/`verify`/`handoff` records). Because plan and log live on disk, not in an agent's
|
|
74
74
|
context window, a task survives session end and agent switches with zero information loss.
|
|
75
75
|
|
|
76
|
+
## Canonical Spec integration
|
|
77
|
+
|
|
78
|
+
An `easy-dev-spec/v1` Canonical Spec is a read-only design source, not progress storage.
|
|
79
|
+
`inspect-dev-spec` validates the document with the protocol implementation pinned from
|
|
80
|
+
`easy-dev-spec@7eb9b64`; after explicit task selection, `select-dev-spec-scope` returns one
|
|
81
|
+
deterministic producer-compatible closure per repository, and `create-task-from-spec` creates one
|
|
82
|
+
Harness task with the source ID/revision/SHA, selected task IDs, portable repository bindings,
|
|
83
|
+
baseline classifications, and dependency evidence.
|
|
84
|
+
|
|
85
|
+
ANALYSIS derives local `dev-spec.md`, `execution.jsonl`, and `test-strategy.md` for the selected
|
|
86
|
+
consumption closure. Canonical-backed units keep repository, source task/steps, files, symbols,
|
|
87
|
+
and test commands. Hard dependencies shape the Unit DAG, READY contracts can run in parallel,
|
|
88
|
+
and integration dependencies block end-to-end completion until evidence is recorded. The source
|
|
89
|
+
Canonical Spec is never rewritten with Harness runtime state.
|
|
90
|
+
|
|
76
91
|
## Memory system
|
|
77
92
|
|
|
78
93
|
Short memory: one schema-v2 file per task, sliding window (max 10, keep 5). Long memory:
|
|
@@ -93,9 +108,10 @@ demand.
|
|
|
93
108
|
continues. All platform-agnostic artifacts (dev-spec, execution.jsonl, task.json, memory)
|
|
94
109
|
make cross-agent handoff lossless. `task.json.last_agent` records the last owner so a new
|
|
95
110
|
agent knows a task was handed off rather than self-interrupted.
|
|
96
|
-
Owner identities use platform namespaces. Codex
|
|
97
|
-
|
|
98
|
-
handoff; existing task files with those
|
|
111
|
+
Owner identities use platform namespaces. Codex root identities such as `root`, `/root`, and
|
|
112
|
+
their collaboration subpaths normalize to `codex`, so internal Codex delegation is not mistaken
|
|
113
|
+
for a cross-agent handoff; existing task files with those identities remain compatible without
|
|
114
|
+
migration.
|
|
99
115
|
|
|
100
116
|
Handoff is target-less. The leaving agent writes a `handoff` record with `from`, `stage`,
|
|
101
117
|
`summary`, and `timestamp`, then releases its session pointer. It does not know or record the
|
|
@@ -21,6 +21,24 @@ Communicate with the user in the user's language.
|
|
|
21
21
|
4. Inspect concrete code paths and tests. Expand context only when evidence reveals another
|
|
22
22
|
dependency or risk.
|
|
23
23
|
|
|
24
|
+
For a task with `task.json.spec_source`, re-run `inspect-dev-spec` against the stored source and
|
|
25
|
+
every stored `task.repo_paths` repository binding. The schema, spec ID, revision, and SHA-256
|
|
26
|
+
must still match. Then call the read-only selector for the exact stored selection:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py inspect-dev-spec \
|
|
30
|
+
--spec <stored-source> --repo-path <repo-id>=<stored-path> [--repo-path <repo-id>=<stored-path>]...
|
|
31
|
+
|
|
32
|
+
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py select-dev-spec-scope \
|
|
33
|
+
--spec <stored-source> --spec-task <selected-task-id> [--spec-task <selected-task-id>]...
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Load only the returned per-repository consumption closures: manifest/global context, selected
|
|
37
|
+
task and repository sections, related contracts, direct dependency summaries, selected
|
|
38
|
+
changes/steps/tests, and relevant integration rows. Never replace the selector with a whole-file
|
|
39
|
+
read. `scope-drifted` requires current-code conflict analysis before confirmation;
|
|
40
|
+
`baseline-unavailable` or unresolved repository identity remains blocked in ANALYSIS.
|
|
41
|
+
|
|
24
42
|
## Analysis artifacts
|
|
25
43
|
|
|
26
44
|
Copy `.easy-coding/templates/dev-spec-skeleton.md` first, then replace every `[[EC_TODO:...]]`.
|
|
@@ -43,11 +61,33 @@ Execution plan records use:
|
|
|
43
61
|
"acceptance_criteria": ["observable result"],
|
|
44
62
|
"test_points": ["targeted check"],
|
|
45
63
|
"contracts": ["input/output/invariant or none"],
|
|
46
|
-
"risks": ["known risk or none"]
|
|
64
|
+
"risks": ["known risk or none"],
|
|
65
|
+
"repo_id": "R1",
|
|
66
|
+
"source_task_id": "R1-T1",
|
|
67
|
+
"source_step_ids": ["S1"],
|
|
68
|
+
"symbols": ["Class#method"],
|
|
69
|
+
"test_commands": ["exact source test command", "optional local command"]
|
|
47
70
|
}]
|
|
48
71
|
}
|
|
49
72
|
```
|
|
50
73
|
|
|
74
|
+
The five source fields are mandatory only for Canonical-backed code units. Default to one unit
|
|
75
|
+
per selected Spec task. A split may cover only one `repo_id` and one `source_task_id`, and all
|
|
76
|
+
units together must cover every source step exactly once. Map selected hard dependencies into
|
|
77
|
+
`depends_on`, contract dependencies into `contracts`, and dependency levels into
|
|
78
|
+
`parallel_groups`.
|
|
79
|
+
|
|
80
|
+
Canonical-backed `dev-spec.md`, `execution.jsonl`, and `test-strategy.md` are runtime-derived
|
|
81
|
+
evidence, not a second maintained Spec. Record the source path/ID/revision/SHA, selected tasks
|
|
82
|
+
and repositories, baseline/conflict result, Unit mapping, source test mapping, and pending
|
|
83
|
+
integration edges.
|
|
84
|
+
|
|
85
|
+
Every source test command remains mandatory. Additional commands from the current repository are
|
|
86
|
+
allowed only when `test-strategy.md` records why the Canonical command alone is insufficient.
|
|
87
|
+
For every selected source test, `test-strategy.md` must spell out its Test ID, source task ID,
|
|
88
|
+
owning Unit ID, repository-relative test file, and exact Canonical command; the state gate checks
|
|
89
|
+
these markers mechanically.
|
|
90
|
+
|
|
51
91
|
Prefer one coherent unit over artificial file-level splitting. Use parallel only for truly
|
|
52
92
|
independent write scopes. Better unit contracts reduce later REVIEW rework.
|
|
53
93
|
|
|
@@ -120,3 +160,5 @@ controls waiting; it never changes the selected execution depth.
|
|
|
120
160
|
- No code task with an empty change scope.
|
|
121
161
|
- No unit without acceptance criteria, test points, contracts, and risks.
|
|
122
162
|
- No transition without a valid workflow proposal.
|
|
163
|
+
- No Canonical-backed transition with changed source SHA, unresolved repository identity,
|
|
164
|
+
incomplete selected-task coverage, or an open Unit/Step/File/Symbol/Test traceability gap.
|
|
@@ -44,6 +44,9 @@ with `.easy-coding/sessions/` always excluded. The CLI already added it to `.git
|
|
|
44
44
|
`repo_paths`), the commit/push covers every involved repo. Read `repo_paths` from the
|
|
45
45
|
current task state to locate each checkout, check changes, and commit/push them as one
|
|
46
46
|
coherent change set — do not leave a sub-repo behind.
|
|
47
|
+
For Canonical-backed tasks, this set is exactly the repositories referenced by
|
|
48
|
+
`selected_spec_tasks` and resolved in `spec_repositories`; unselected Spec repositories stay
|
|
49
|
+
out of scope.
|
|
47
50
|
5. **Supermodule two-step commits.** If the current repo has `.gitmodules`, or the current
|
|
48
51
|
task touches a git submodule path, treat each submodule as an independent git boundary:
|
|
49
52
|
commit and push child repos first, then commit and push the parent gitlink update. If a
|
|
@@ -59,6 +62,7 @@ with `.easy-coding/sessions/` always excluded. The CLI already added it to `.git
|
|
|
59
62
|
- Do not commit `spec/dev/` unless the user explicitly asks.
|
|
60
63
|
- Do not omit managed `easy-coding upgrade` changes merely because they were created outside
|
|
61
64
|
the current agent turn.
|
|
65
|
+
- Never modify or stage the source Canonical Spec merely to record Harness execution progress.
|
|
62
66
|
- In a supermodule task launched from the parent root, parent `.easy-coding/` belongs to the
|
|
63
67
|
parent git. Child `.easy-coding/memory/` changes created by memory archive belong to the
|
|
64
68
|
owning child git and must be committed before the parent gitlink update.
|
|
@@ -60,6 +60,11 @@ Sub-agents never dispatch other sub-agents or read `.easy-coding` workflow asset
|
|
|
60
60
|
## Identity Easy Coding implementation unit
|
|
61
61
|
## Workflow Mode {fast|standard|strict}
|
|
62
62
|
## Task {unit description}
|
|
63
|
+
## Source Spec {spec_id@revision + sha256 | NONE}
|
|
64
|
+
## Source Task {source_task_id | NONE}
|
|
65
|
+
## Repository {repo_id + resolved repository root | current project}
|
|
66
|
+
## Source Steps {source_step_ids | NONE}
|
|
67
|
+
## Symbols {symbols | confirmed local symbols}
|
|
63
68
|
## Editable Scope {unit.files | NONE — read-only}
|
|
64
69
|
## Acceptance {unit.acceptance_criteria}
|
|
65
70
|
## Test Points {unit.test_points and exact targeted commands}
|
|
@@ -68,17 +73,23 @@ Sub-agents never dispatch other sub-agents or read `.easy-coding` workflow asset
|
|
|
68
73
|
## Coding Rules {pre-digested RULES sections}
|
|
69
74
|
## Architecture {pre-digested ABSTRACT sections}
|
|
70
75
|
## Output
|
|
71
|
-
|
|
76
|
+
status:"completed", repo_id|null, source_task_id|null, changed_files[], summary,
|
|
77
|
+
deliverable|null, issues:[], needs_attention:[]
|
|
72
78
|
```
|
|
73
79
|
|
|
74
80
|
## Dispatch and result loop
|
|
75
81
|
|
|
76
|
-
1. Append a `dispatch` record before work begins.
|
|
82
|
+
1. Append a `dispatch` record before work begins. Canonical-backed records include `repo_id` and
|
|
83
|
+
`source_task_id`; resolve every file relative to `task.repo_paths[repo_id]` before dispatch.
|
|
77
84
|
2. Execute according to dependency order and selected owner.
|
|
78
85
|
3. Run targeted unit tests and self-audit scope, contracts, TODOs, and introduced warnings.
|
|
79
|
-
4. Append one `result` record.
|
|
86
|
+
4. Append one `result` record. Only a successful unit uses `status:"completed"`; include
|
|
87
|
+
unresolved issues rather than hiding them, and do not advance while `issues` or
|
|
88
|
+
`needs_attention` is non-empty.
|
|
80
89
|
5. If a result changes a cross-unit contract, stop dependent units and return to ANALYSIS.
|
|
81
90
|
6. For parallel units, detect overlapping writes before advancing.
|
|
91
|
+
7. If implementation needs a file, symbol, repository, or source step outside the mapped
|
|
92
|
+
Canonical change set, stop and return to ANALYSIS instead of expanding scope implicitly.
|
|
82
93
|
|
|
83
94
|
Do not emit a progress message for every trivial edit. Report at unit boundaries to reduce
|
|
84
95
|
conversation overhead while keeping work observable.
|
|
@@ -14,6 +14,13 @@ Every new code task enters REVIEW. Read-only tasks do not. Obtain the current fi
|
|
|
14
14
|
Review the final diff against `dev-spec.md`, RULES, unit acceptance criteria, tests, contracts,
|
|
15
15
|
and obvious security risks. Every finding cites `file:line`.
|
|
16
16
|
|
|
17
|
+
For Canonical-backed tasks, group evidence by `repo_id` and `source_task_id`. Every selected
|
|
18
|
+
Spec task needs an implementation result and source test evidence; file references remain
|
|
19
|
+
repo-relative within the owning repository. Missing or expanded source change/step coverage is
|
|
20
|
+
a blocking correctness finding. Every Canonical review record includes its `repo_id` and
|
|
21
|
+
`source_task_id`; emit at least one current-fingerprint record per selected task and required
|
|
22
|
+
review dimension. A global record without source ownership cannot satisfy the gate.
|
|
23
|
+
|
|
17
24
|
## Depth by workflow mode
|
|
18
25
|
|
|
19
26
|
- `fast`: main Agent performs one final-diff self-review across correctness, scope, tests, and
|
|
@@ -67,6 +74,8 @@ Fast and Standard normally use `combined`; Strict uses at least two distinct dim
|
|
|
67
74
|
"reviewer": "main-or-independent-agent",
|
|
68
75
|
"implementation_fingerprint": "<state-api value>",
|
|
69
76
|
"timestamp": "<ISO-8601>",
|
|
77
|
+
"repo_id": "<canonical repo-id; omit for non-Canonical tasks>",
|
|
78
|
+
"source_task_id": "<canonical task-id; omit for non-Canonical tasks>",
|
|
70
79
|
"findings": []
|
|
71
80
|
}
|
|
72
81
|
```
|
|
@@ -18,6 +18,8 @@ Call the state API snapshot and show:
|
|
|
18
18
|
- task `concrete_workflow_mode` or ANALYSIS proposal when present;
|
|
19
19
|
- harness enabled/disabled state;
|
|
20
20
|
- active and resumable tasks.
|
|
21
|
+
- for Canonical-backed tasks: source Spec ID/revision/SHA, selected task IDs, repository
|
|
22
|
+
bindings/baseline status, and pending dependency evidence.
|
|
21
23
|
|
|
22
24
|
Explain precedence:
|
|
23
25
|
|
|
@@ -50,3 +52,8 @@ confirmed interaction.
|
|
|
50
52
|
Support listing, creating, selecting, claiming, handing off, and closing tasks through the
|
|
51
53
|
state API. Preserve pending transitions when merely changing approval mode. Never infer user
|
|
52
54
|
acceptance from opening this panel.
|
|
55
|
+
|
|
56
|
+
When creating from a Canonical Spec, call `inspect-dev-spec`, display the complete task and
|
|
57
|
+
dependency selection, then call `select-dev-spec-scope` and `create-task-from-spec` only after
|
|
58
|
+
explicit user selection. Multiple selected Spec tasks still create one Harness task, while the
|
|
59
|
+
selector returns one deterministic consumption closure per selected repository.
|
|
@@ -42,7 +42,9 @@ Append one record per executed check:
|
|
|
42
42
|
"passed": true,
|
|
43
43
|
"implementation_fingerprint": "<state-api value>",
|
|
44
44
|
"config_fingerprint": "<state-api value>",
|
|
45
|
-
"timestamp": "<ISO-8601>"
|
|
45
|
+
"timestamp": "<ISO-8601>",
|
|
46
|
+
"repo_id": "<canonical repo-id; omit for non-Canonical tasks>",
|
|
47
|
+
"source_task_id": "<canonical task-id; omit for non-Canonical tasks>"
|
|
46
48
|
}
|
|
47
49
|
```
|
|
48
50
|
|
|
@@ -64,5 +66,26 @@ do not append a later synthetic pass without rerunning the failed command.
|
|
|
64
66
|
user wait.
|
|
65
67
|
- A reported in-scope problem returns to IMPLEMENT; out-of-scope work becomes a separate task.
|
|
66
68
|
|
|
69
|
+
For Canonical-backed tasks, run each repository's commands from `task.repo_paths[repo_id]` and
|
|
70
|
+
cover every selected task's source test IDs. Report pending integration edges separately from
|
|
71
|
+
local green checks. They do not block local implementation evidence, but the state API blocks
|
|
72
|
+
`VERIFICATION -> MEMORY` until evidence is recorded with `satisfy-spec-dependency`. Never claim
|
|
73
|
+
end-to-end completion while an integration edge remains pending. Every Canonical verify record
|
|
74
|
+
includes the owning `repo_id` and `source_task_id`; duplicate check names in different source
|
|
75
|
+
tasks remain separate evidence records. In `strict`, every involved repository independently
|
|
76
|
+
records all four check types; a repository-specific non-applicable record still needs its reason
|
|
77
|
+
and source ownership.
|
|
78
|
+
|
|
79
|
+
Record the exact integration edge only after its evidence exists:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py satisfy-spec-dependency \
|
|
83
|
+
--task-id <harness-task-id> \
|
|
84
|
+
--source-task <source-spec-task-id> \
|
|
85
|
+
--spec-task <target-spec-task-id> \
|
|
86
|
+
--evidence "<verifiable evidence>" \
|
|
87
|
+
--agent <agent>
|
|
88
|
+
```
|
|
89
|
+
|
|
67
90
|
The state API rejects VERIFICATION -> MEMORY unless all evidence for the current implementation
|
|
68
91
|
and config fingerprints is green.
|
|
@@ -52,7 +52,36 @@ plan decision; Auto continues immediately. Both remove later waiting, not qualit
|
|
|
52
52
|
- Present with `status != "COMPLETE"`: invoke `{{skill_trigger}}ec-init`, then stop.
|
|
53
53
|
- `[easy-coding:upgrade-init-pending:X]`: recommend `{{skill_trigger}}ec-init` for vX
|
|
54
54
|
adaptation, but allow the user to continue; this reminder is not a workflow block.
|
|
55
|
-
3.
|
|
55
|
+
3. When the user explicitly references a Dev-Spec, run the read-only `inspect-dev-spec` command
|
|
56
|
+
before ordinary task creation. For `protocol=canonical-v1`, show every task ID, repository,
|
|
57
|
+
title, dependency, and baseline status; never select all tasks by default. After the user
|
|
58
|
+
chooses one or more tasks and resolves repository paths or omitted hard-dependency evidence,
|
|
59
|
+
call `create-task-from-spec` once for the complete selection. A document without a Canonical
|
|
60
|
+
manifest remains a legacy ANALYSIS input for an ordinary task. A malformed, DRAFT, or otherwise
|
|
61
|
+
non-READY Canonical Spec stays blocked and must never be downgraded to the legacy route. Never
|
|
62
|
+
edit the source Spec.
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py inspect-dev-spec \
|
|
66
|
+
--spec <path> [--repo-path <repo-id>=<path>]...
|
|
67
|
+
|
|
68
|
+
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py select-dev-spec-scope \
|
|
69
|
+
--spec <path> --spec-task <task-id> [--spec-task <task-id>]...
|
|
70
|
+
|
|
71
|
+
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py create-task-from-spec \
|
|
72
|
+
--spec <path> --spec-task <task-id> [--spec-task <task-id>]... \
|
|
73
|
+
--task-id <harness-task-id> --type <type> --title <title> \
|
|
74
|
+
--repo-path <repo-id>=<path> [--dependency-evidence <dependency-id>=<evidence>]... \
|
|
75
|
+
--agent <agent-id> --session-file <P>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
`select-dev-spec-scope` is read-only and may run only after explicit task selection. Its
|
|
79
|
+
per-repository payload is the authoritative ANALYSIS context; do not load unselected task
|
|
80
|
+
bodies from the source document.
|
|
81
|
+
|
|
82
|
+
When multiple selected tasks depend on the same target, disambiguate creation evidence with
|
|
83
|
+
`<source-task-id>-><dependency-task-id>=<evidence>`.
|
|
84
|
+
4. Match the user's intent against `current_task` and the active task list before resuming.
|
|
56
85
|
If the user names or clearly matches another task, confirm the switch and call
|
|
57
86
|
`claim-task --task-id <id> --agent <agent-id> --session-file <P>`. Do not execute task A
|
|
58
87
|
under task B's request.
|
|
@@ -64,10 +93,10 @@ plan decision; Auto continues immediately. Both remove later waiting, not qualit
|
|
|
64
93
|
to the requested deliverable. Feature, bugfix, refactor, performance, and workflow changes
|
|
65
94
|
are code tasks. Use `doc`, `analysis`, or `report` only when the user explicitly requested
|
|
66
95
|
a no-code deliverable; never downgrade a code request to the read-only completion path.
|
|
67
|
-
|
|
96
|
+
5. Resume the matched/current task, then load only state-relevant assets. Do not read five full
|
|
68
97
|
memories at every startup; ANALYSIS searches memory metadata and opens relevant entries on
|
|
69
98
|
demand.
|
|
70
|
-
|
|
99
|
+
6. If another Agent last owned the task, summarize the stored handoff before continuing.
|
|
71
100
|
|
|
72
101
|
## Stage dispatch
|
|
73
102
|
|
|
@@ -24,6 +24,13 @@
|
|
|
24
24
|
- 需求 vs 现有代码:[[EC_TODO:填写结果或“无冲突”]]
|
|
25
25
|
- Dev-Spec vs 现有代码:[[EC_TODO:填写结果或“无冲突”]]
|
|
26
26
|
|
|
27
|
+
### Canonical Spec 来源
|
|
28
|
+
- **来源**:[[EC_TODO:非 Canonical 任务写“无”;否则填写 repo-relative path、spec_id、revision、SHA-256]]
|
|
29
|
+
- **选择任务 / 仓库**:[[EC_TODO:非 Canonical 任务写“无”;否则填写 selected task IDs 与 repo IDs]]
|
|
30
|
+
- **消费闭包**:[[EC_TODO:非 Canonical 任务写“无”;否则填写 contracts、direct dependencies、changes、steps、tests 摘要]]
|
|
31
|
+
- **基线与冲突**:[[EC_TODO:非 Canonical 任务写“无”;否则逐仓填写 exact/scope-unchanged/scope-drifted/baseline-unavailable 及处理结论]]
|
|
32
|
+
- **待闭合 integration**:[[EC_TODO:非 Canonical 任务或不存在时写“无”;否则列依赖边和证据要求]]
|
|
33
|
+
|
|
27
34
|
### 影响面分析
|
|
28
35
|
- **涉及模块**:[[EC_TODO:涉及模块]]
|
|
29
36
|
- **核心类 / 页面 / 接口**:[[EC_TODO:核心类 / 页面 / 接口]]
|
|
@@ -49,11 +56,11 @@
|
|
|
49
56
|
|
|
50
57
|
### 实施拆解
|
|
51
58
|
|
|
52
|
-
| 单元 | 说明 | 类型 | 涉及文件 | 依赖 | 验收条件 | 测试点 | 跨单元契约 |
|
|
53
|
-
|
|
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
|
|
59
|
+
| 单元 | 说明 | 类型 | 仓库 / 来源任务 / 步骤 | 涉及文件 / 符号 | 依赖 | 验收条件 | 测试点 / 命令 | 跨单元契约 |
|
|
60
|
+
|------|------|------|----------------------|-----------------|------|---------|---------------|-----------|
|
|
61
|
+
| U1 | [[EC_TODO:单元标题]] | [[EC_TODO:backend/frontend/test/...]] | [[EC_TODO:普通任务写“当前仓库 / 无 / 无”;Canonical 写 repo_id / source_task_id / source_step_ids]] | [[EC_TODO:文件与 symbols]] | — | [[EC_TODO:可验证结果]] | [[EC_TODO:定向验证与 test_commands]] | [[EC_TODO:输入输出或“无”]] |
|
|
62
|
+
| U2 | [[EC_TODO:单元标题]] | [[EC_TODO:单元类型]] | [[EC_TODO:仓库 / 来源任务 / 步骤]] | [[EC_TODO:文件与 symbols]] | — | [[EC_TODO:可验证结果]] | [[EC_TODO:定向验证与命令]] | [[EC_TODO:输入输出或“无”]] |
|
|
63
|
+
| U3 | [[EC_TODO:单元标题]] | [[EC_TODO:单元类型]] | [[EC_TODO:仓库 / 来源任务 / 步骤]] | [[EC_TODO:文件与 symbols]] | U1, U2 | [[EC_TODO:可验证结果]] | [[EC_TODO:定向验证与命令]] | [[EC_TODO:与 U1/U2 的契约]] |
|
|
57
64
|
|
|
58
65
|
**执行策略**:[[EC_TODO:parallel / sequential / single]]
|
|
59
66
|
- 第一批(并行):U1 [[EC_TODO:单元标题]] | U2 [[EC_TODO:单元标题]]
|