easy-coding-harness 0.10.0-beta.5 → 0.10.0-beta.7
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 +33 -0
- package/README.md +17 -10
- package/package.json +1 -1
- package/templates/claude/agents/ec-implementer.md +10 -0
- package/templates/claude/agents/ec-reviewer.md +6 -1
- package/templates/codex/agents/ec-implementer.toml +10 -0
- package/templates/codex/agents/ec-reviewer.toml +6 -1
- package/templates/common/bundled-skills/ec-init/SKILL.md +8 -1
- package/templates/common/skills/ec-analysis/SKILL.md +74 -21
- package/templates/common/skills/ec-implementing/SKILL.md +27 -2
- package/templates/common/skills/ec-reviewing/SKILL.md +11 -1
- package/templates/common/skills/ec-workflow/SKILL.md +33 -17
- package/templates/main-constraint/AGENTS.md.tpl +5 -0
- package/templates/main-constraint/CLAUDE.md.tpl +5 -0
- package/templates/qoder/agents/ec-implementer.md +10 -0
- package/templates/qoder/agents/ec-reviewer.md +6 -1
- package/templates/shared-hooks/easy_coding_state.py +126 -48
- package/templates/shared-hooks/easy_dev_spec.py +385 -46
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,39 @@
|
|
|
6
6
|
- `y`:常规功能升级
|
|
7
7
|
- `z`:日常 bug 修复
|
|
8
8
|
|
|
9
|
+
## 0.10.0-beta.7
|
|
10
|
+
|
|
11
|
+
- Workflow floor 改为 Standard 居中的复合判定:单仓、单 Unit、非并行且最多 5 个文件的
|
|
12
|
+
低风险局部修改优先 Fast;普通业务、多 Unit/文件、闭合的跨仓修改默认 Standard;只有
|
|
13
|
+
明确高风险与真实复杂度/大影响面同时存在才进入 Strict。
|
|
14
|
+
- 仓库数量只统计 execution plan 中实际修改文件所属的 Git root。Canonical Spec 的未选
|
|
15
|
+
task、依赖摘要、未使用 `repo_paths`,以及 supermodule 已登记但未修改的子项目不再抬高
|
|
16
|
+
Workflow;风险描述、标题或文件路径中仅出现 `payment` / `schema` 等普通领域词也不再
|
|
17
|
+
单独触发 Strict,并行执行本身也只作为 Standard 信号。
|
|
18
|
+
- ANALYSIS 新增渐进成本预算和 `Local Baseline`:只读取当前变更需要的最近邻同类代码、
|
|
19
|
+
合同和测试,按证据继承命名、空值/异常处理、分层、方法粒度、常量与注释习惯,避免
|
|
20
|
+
无关全仓扫描、投机性抽象和碎片化小方法。
|
|
21
|
+
- IMPLEMENT/REVIEW 与三平台子代理统一克制设计合同:允许符合局部惯例的直观魔法值,
|
|
22
|
+
禁止为单个 getter return 创建常量;新增核心 Java 类的全部方法/字段、已有核心类中新增或
|
|
23
|
+
实质修改的方法/字段必须有 Javadoc,核心或复杂逻辑补充必要意图/约束注释,且不批量改造
|
|
24
|
+
未触碰历史代码。
|
|
25
|
+
|
|
26
|
+
## 0.10.0-beta.6
|
|
27
|
+
|
|
28
|
+
- Canonical Spec 首次路由新增 `inspect-dev-spec --manifest-only`:只通过 normalized remote
|
|
29
|
+
识别当前 worktree、展示任务目录和共享 execution 状态,不再为未选仓库解析本地路径或
|
|
30
|
+
为任何未选任务计算 baseline;`path_hint` 明确降级为提示信息。
|
|
31
|
+
- 用户选定 task 后,`inspect-dev-spec --spec-task ...` 只检查所选任务所属仓库及其
|
|
32
|
+
change/test 范围;当前 worktree remote 唯一匹配时无需手工传 `--repo-path`,即使旧
|
|
33
|
+
`path_hint` 指向仍存在的原 checkout,也优先绑定当前 worktree。
|
|
34
|
+
- `ec-workflow` 不再在路由阶段提前读取消费闭包;`ec-analysis` 负责唯一一次精确 selector
|
|
35
|
+
调用,并对 `exact` / `scope-unchanged` 使用快速投影,对 `scope-drifted` 只分析所选任务
|
|
36
|
+
的漂移文件和符号,派生 dev-spec 不再被解释为第二轮 Spec 创作。
|
|
37
|
+
- 共享 `EDS:EXECUTION` 固化为依赖事实来源:已完成 hard task 或已满足依赖边直接放行;
|
|
38
|
+
禁止通过另一个本地 Harness task、Git 历史或 Agent 推断重复考古完成状态。
|
|
39
|
+
- 保持项目外原始 Spec absolute locator、身份校验 rebind、共享 writer/CAS 及旧版全量
|
|
40
|
+
`inspect-dev-spec` 调用兼容;新增 worktree、未选仓库隔离和三平台安装产物回归测试。
|
|
41
|
+
|
|
9
42
|
## 0.10.0-beta.5
|
|
10
43
|
|
|
11
44
|
- 兼容新版 `easy-dev-spec/v1` 共享执行区:同步设计/整文双摘要与 execution 投影协议,新增
|
package/README.md
CHANGED
|
@@ -85,7 +85,10 @@ any stage --[user abort via ec-task-close]--> CLOSED
|
|
|
85
85
|
逐边确认,`guard` 确认 ANALYSIS → IMPLEMENT 与 VERIFICATION → MEMORY,`confirm` 只在
|
|
86
86
|
ANALYSIS → IMPLEMENT 确认一次,随后各阶段在质量门禁通过后自动推进,`auto` 从开始即
|
|
87
87
|
自动推进。
|
|
88
|
-
- 工作流模式优先级为 session 覆盖 > 项目 `behavior.workflow_mode` > `adaptive`。Adaptive
|
|
88
|
+
- 工作流模式优先级为 session 覆盖 > 项目 `behavior.workflow_mode` > `adaptive`。Adaptive
|
|
89
|
+
以 Standard 作为普通业务默认:单仓单 Unit、非并行且不超过 5 个文件的低风险局部修改
|
|
90
|
+
优先 Fast;只有明确高风险与真实复杂度/大影响面同时存在才进入 Strict。仓库数只按当前
|
|
91
|
+
execution plan 实际修改的 Git root 计算,用户可在机械风险下限之上调整。
|
|
89
92
|
- ANALYSIS 会先通过问答闭合影响技术路线、接口、模型、状态、范围或验收的实质性问题,
|
|
90
93
|
并在 Dev-Spec 中记录唯一的 `decision_status: closed`。会话只展示核心方案、验收摘要、
|
|
91
94
|
Workflow Mode 与主要风险;完整 `dev-spec.md` 通过绝对本地链接或路径按需查看。
|
|
@@ -101,15 +104,19 @@ any stage --[user abort via ec-task-close]--> CLOSED
|
|
|
101
104
|
|
|
102
105
|
Harness 可选择性消费 easy-dev-spec 生成的单文件 `easy-dev-spec/v1` Canonical Spec:
|
|
103
106
|
|
|
104
|
-
1. `ec-workflow`
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
107
|
+
1. `ec-workflow` 先用 `inspect-dev-spec --manifest-only` 只读校验 manifest,通过 normalized
|
|
108
|
+
remote 识别当前 worktree,并展示任务 DAG 与共享 execution;不会解析未选仓库路径,也
|
|
109
|
+
不在选择前计算任何任务的 baseline。旧 Spec 仍可只读检查,但成为可执行任务前必须
|
|
110
|
+
初始化共享执行区。
|
|
111
|
+
2. 用户明确选择一个或多个 Spec task 后,Harness 用 `--spec-task` 只检查所选任务仓库和
|
|
112
|
+
change/test 范围。当前 worktree remote 唯一匹配时无需手工路径;`path_hint` 不一致只会
|
|
113
|
+
形成一次运行时映射提示,不会复制或修复原 Spec。
|
|
114
|
+
3. 一次选择创建一个 Harness task;ANALYSIS 唯一一次调用 `select-dev-spec-scope` 提取确定性
|
|
115
|
+
消费闭包。`exact` / `scope-unchanged` 直接快速投影为 Unit、测试策略和派生 dev-spec,
|
|
116
|
+
`scope-drifted` 才读取所选范围内的漂移文件与符号;未选任务正文始终不进入上下文。
|
|
117
|
+
4. `EDS:EXECUTION` 是依赖事实来源:`hard` 依赖决定执行顺序,冻结的 `contract` 依赖允许
|
|
118
|
+
并行编码,`integration` 依赖在证据闭合前阻止全链路完成;不会再从本地任务或 Git 历史
|
|
119
|
+
重复推断共享状态。
|
|
113
120
|
|
|
114
121
|
Canonical Spec 的静态设计由 design revision + `design_sha256` 冻结;共享
|
|
115
122
|
`EDS:EXECUTION` 则接收 Harness 的 Task/Step/dependency 投影。写回使用
|
package/package.json
CHANGED
|
@@ -16,7 +16,17 @@ complete exactly that unit. Your reply IS the return value, not a message to a h
|
|
|
16
16
|
file. All context you need is already in the task card.
|
|
17
17
|
- Make no workflow stage-transition decisions. You do not know the state machine exists.
|
|
18
18
|
- Follow the coding rules and architecture context embedded in the card.
|
|
19
|
+
- Follow the task card's `Local Baseline`: match nearby naming, control flow, null/error handling,
|
|
20
|
+
layering, object modeling, method granularity, literal usage, and comment style unless a stated
|
|
21
|
+
correctness, security, requirement, or hard-rule reason requires a deviation.
|
|
19
22
|
- Treat the task card's `Code Comments` author value and field/member/constant rules as mandatory.
|
|
23
|
+
- Do not add generic defensive null checks, speculative abstractions/layers, fragmented one-use
|
|
24
|
+
micro-methods, or a constant that exists only to hold one getter return.
|
|
25
|
+
- Local, obvious magic values are allowed when they match surrounding code; create constants for
|
|
26
|
+
reuse, stable domain/config/protocol semantics, or established project convention.
|
|
27
|
+
- Every method and field in a new core Java class, and every added or materially modified method
|
|
28
|
+
or field in an existing core Java class, must have meaningful Javadoc; comment complex logic
|
|
29
|
+
where intent or constraints are not obvious.
|
|
20
30
|
- Treat acceptance criteria, test points, contracts, and risks in the card as required inputs.
|
|
21
31
|
- Run the exact targeted checks requested by the card and report their real outcome.
|
|
22
32
|
- Preserve each existing file's original encoding; never silently convert.
|
|
@@ -15,7 +15,12 @@ dimension named in your task card. Your reply IS the return value.
|
|
|
15
15
|
- correctness → does the implementation match the dev-spec requirement? edge cases,
|
|
16
16
|
null/empty handling, races, off-by-one.
|
|
17
17
|
- compliance → does the code obey the RULES sections in the card? naming, format, comment
|
|
18
|
-
language, error handling.
|
|
18
|
+
language, error handling, and the evidenced Local Baseline.
|
|
19
|
+
- Do not request defensive null checks, abstraction, constant extraction, or legacy-wide comment
|
|
20
|
+
cleanup solely as generic best practice. Flag unjustified local-style deviations, speculative
|
|
21
|
+
layers, fragmented one-use micro-methods, constants created only for a getter return, and
|
|
22
|
+
missing Javadoc on any method/field in a new core Java class or any added/materially modified
|
|
23
|
+
method/field in an existing core Java class.
|
|
19
24
|
- `error` means a demonstrated acceptance, contract, security, or build failure. Use `warning`
|
|
20
25
|
for a credible risk and `info` for non-blocking maintainability advice.
|
|
21
26
|
|
|
@@ -15,7 +15,17 @@ Hard constraints:
|
|
|
15
15
|
the card.
|
|
16
16
|
- Make no workflow stage-transition decisions; you do not know the state machine exists.
|
|
17
17
|
- Follow the coding rules and architecture context embedded in the card.
|
|
18
|
+
- Follow the task card's "Local Baseline": match nearby naming, control flow, null/error handling,
|
|
19
|
+
layering, object modeling, method granularity, literal usage, and comment style unless a stated
|
|
20
|
+
correctness, security, requirement, or hard-rule reason requires a deviation.
|
|
18
21
|
- Treat the task card's "Code Comments" author value and field/member/constant rules as mandatory.
|
|
22
|
+
- Do not add generic defensive null checks, speculative abstractions/layers, fragmented one-use
|
|
23
|
+
micro-methods, or a constant that exists only to hold one getter return.
|
|
24
|
+
- Local, obvious magic values are allowed when they match surrounding code; create constants for
|
|
25
|
+
reuse, stable domain/config/protocol semantics, or established project convention.
|
|
26
|
+
- Every method and field in a new core Java class, and every added or materially modified method
|
|
27
|
+
or field in an existing core Java class, must have meaningful Javadoc; comment complex logic
|
|
28
|
+
where intent or constraints are not obvious.
|
|
19
29
|
- Treat acceptance criteria, test points, contracts, and risks in the card as required inputs.
|
|
20
30
|
- Run the exact targeted checks requested by the card and report their real outcome.
|
|
21
31
|
- Preserve each existing file's original encoding; never silently convert.
|
|
@@ -14,7 +14,12 @@ Stance:
|
|
|
14
14
|
- correctness -> does the implementation match the dev-spec requirement? edge cases,
|
|
15
15
|
null/empty handling, races, off-by-one.
|
|
16
16
|
- compliance -> does the code obey the RULES sections in the card? naming, format, comment
|
|
17
|
-
language, error handling.
|
|
17
|
+
language, error handling, and the evidenced Local Baseline.
|
|
18
|
+
- Do not request defensive null checks, abstraction, constant extraction, or legacy-wide comment
|
|
19
|
+
cleanup solely as generic best practice. Flag unjustified local-style deviations, speculative
|
|
20
|
+
layers, fragmented one-use micro-methods, constants created only for a getter return, and
|
|
21
|
+
missing Javadoc on any method/field in a new core Java class or any added/materially modified
|
|
22
|
+
method/field in an existing core Java class.
|
|
18
23
|
- error means a demonstrated acceptance, contract, security, or build failure. Use warning
|
|
19
24
|
for a credible risk and info for non-blocking maintainability advice.
|
|
20
25
|
|
|
@@ -147,7 +147,14 @@ agent must be able to see what was generated and on what evidence.
|
|
|
147
147
|
- Naming conventions actually in use (scan representative files)
|
|
148
148
|
- Comment language: if more than 70% of existing comments are Chinese, the rule is
|
|
149
149
|
"comments in Chinese"; same logic for English; mixed → follow each file's dominant language
|
|
150
|
-
-
|
|
150
|
+
- Null/empty handling and error-handling style, including where the project intentionally
|
|
151
|
+
relies on upstream contracts instead of adding defensive checks
|
|
152
|
+
- Existing class/method extraction granularity and architecture boundaries; do not turn a
|
|
153
|
+
preference for single responsibility into a generic demand for many one-use helpers
|
|
154
|
+
- Literal and constant conventions, including when local magic values are accepted and when
|
|
155
|
+
a stable domain/config/protocol value is promoted to a named constant
|
|
156
|
+
- Javadoc/doc-comment coverage for core code and the inline-comment style used for complex logic
|
|
157
|
+
- Import ordering and formatter/linter in use (read their configs)
|
|
151
158
|
Structure as one section per language plus a General section. Every rule must be
|
|
152
159
|
mechanically checkable — "be clean" is not a rule; "exported functions carry explicit
|
|
153
160
|
return types" is.
|
|
@@ -21,15 +21,25 @@ 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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
Apply a progressive cost budget while doing this work. A likely Fast task reads only the nearest
|
|
25
|
+
comparable implementation, its direct contracts, and targeted tests. Standard reads the affected
|
|
26
|
+
module closure. Expand into cross-module or repository-wide context only after concrete evidence
|
|
27
|
+
shows the compound high-risk and complexity signals required for Strict. Do not scan unrelated
|
|
28
|
+
repositories, the full Spec, broad Git history, or every architecture section merely to prove
|
|
29
|
+
that a bounded task might be complicated.
|
|
30
|
+
|
|
31
|
+
For a task with `task.json.spec_source`, re-run `inspect-dev-spec` against the stored source, exact
|
|
32
|
+
`selected_spec_tasks`, and only their stored `task.repo_paths` bindings. Schema, Spec ID, design
|
|
33
|
+
revision, and `design_sha256` must still match. A changed `document_sha256` with the same design is
|
|
34
|
+
normal shared progress; refresh `execution_revision` without invalidating plan/review/verify
|
|
35
|
+
evidence. An execution revision rollback is blocking. Then call the selector once for the exact
|
|
36
|
+
selection:
|
|
29
37
|
|
|
30
38
|
```bash
|
|
31
39
|
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py inspect-dev-spec \
|
|
32
|
-
--spec <stored-source>
|
|
40
|
+
--spec <stored-source> \
|
|
41
|
+
--spec-task <selected-task-id> [--spec-task <selected-task-id>]... \
|
|
42
|
+
[--repo-path <repo-id>=<stored-path>]...
|
|
33
43
|
|
|
34
44
|
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py select-dev-spec-scope \
|
|
35
45
|
--spec <stored-source> --spec-task <selected-task-id> [--spec-task <selected-task-id>]...
|
|
@@ -38,8 +48,33 @@ An execution revision rollback is blocking. Then call the selector for the exact
|
|
|
38
48
|
Load only the returned per-repository consumption closures: manifest/global context, selected
|
|
39
49
|
task and repository sections, related contracts, direct dependency summaries, selected
|
|
40
50
|
changes/steps/tests, and relevant integration rows. Never replace the selector with a whole-file
|
|
41
|
-
read.
|
|
42
|
-
|
|
51
|
+
read. Treat the Canonical closure as frozen design, not as a prompt to design the task again:
|
|
52
|
+
|
|
53
|
+
- `exact` and `scope-unchanged` use the fast projection path. Confirm the selected paths, symbols,
|
|
54
|
+
and test entry points, then map the closure into Units, `test-strategy.md`, and the derived
|
|
55
|
+
`dev-spec.md` in one pass. Do not reselect interfaces, fields, task boundaries, Steps, or Tests,
|
|
56
|
+
and do not ask questions already answered by the source Spec.
|
|
57
|
+
- `scope-drifted` reads and analyzes only changed files and symbols in the selected task scope.
|
|
58
|
+
Escalate to a static design revision only when that evidence changes a frozen contract or task
|
|
59
|
+
boundary; unrelated repository or completed-task changes are background, not current drift.
|
|
60
|
+
- `baseline-unavailable` or unresolved selected-repository identity remains blocked in ANALYSIS.
|
|
61
|
+
|
|
62
|
+
Use shared execution dependency status directly. Do not inspect another local Harness task or Git
|
|
63
|
+
history to re-prove a completed hard dependency, and do not repeat dependency or baseline
|
|
64
|
+
explanations after the selected inspection has recorded them.
|
|
65
|
+
|
|
66
|
+
## Local implementation baseline
|
|
67
|
+
|
|
68
|
+
For every code unit, inspect the nearest same-module, same-role implementation before planning.
|
|
69
|
+
Record a concise `local_baseline` covering only evidenced conventions that affect this change:
|
|
70
|
+
naming and control flow, null/empty and error handling, layering and dependency direction, object
|
|
71
|
+
modeling, method extraction granularity, literal/constant usage, and comments/Javadoc. Prefer the
|
|
72
|
+
closest comparable code over a repository-wide average. Explicit requirements, correctness,
|
|
73
|
+
security, and project hard rules still take precedence; otherwise do not replace safe local
|
|
74
|
+
conventions with generic best practices.
|
|
75
|
+
|
|
76
|
+
Do not ask the user to choose a style already answered consistently by comparable code. Ask only
|
|
77
|
+
when local evidence conflicts or a deviation can change the contract, risk, or acceptance result.
|
|
43
78
|
|
|
44
79
|
## Analysis artifacts
|
|
45
80
|
|
|
@@ -86,6 +121,7 @@ Execution plan records use:
|
|
|
86
121
|
"test_points": ["targeted check"],
|
|
87
122
|
"contracts": ["input/output/invariant or none"],
|
|
88
123
|
"risks": ["known risk or none"],
|
|
124
|
+
"local_baseline": ["evidenced local convention and source path"],
|
|
89
125
|
"repo_id": "R1",
|
|
90
126
|
"source_task_id": "R1-T1",
|
|
91
127
|
"source_step_ids": ["S1"],
|
|
@@ -107,14 +143,20 @@ digest, current document digest/execution revision/writeback status, selected ta
|
|
|
107
143
|
and repositories, baseline/conflict result, Unit mapping, source test mapping, and pending
|
|
108
144
|
integration edges.
|
|
109
145
|
|
|
146
|
+
The required skeleton is a mechanical artifact schema. For a Canonical-backed task it is filled
|
|
147
|
+
from the selected closure and current-code delta; it must never become a second round of Spec
|
|
148
|
+
authoring.
|
|
149
|
+
|
|
110
150
|
Every source test command remains mandatory. Additional commands from the current repository are
|
|
111
151
|
allowed only when `test-strategy.md` records why the Canonical command alone is insufficient.
|
|
112
152
|
For every selected source test, `test-strategy.md` must spell out its Test ID, source task ID,
|
|
113
153
|
owning Unit ID, repository-relative test file, and exact Canonical command; the state gate checks
|
|
114
154
|
these markers mechanically.
|
|
115
155
|
|
|
116
|
-
Prefer one coherent unit over artificial file-level splitting.
|
|
117
|
-
|
|
156
|
+
Prefer one coherent unit over artificial file-level splitting. Do not split a class or method by
|
|
157
|
+
line count, or create many one-use helpers, merely to make the plan look modular. Extract only a
|
|
158
|
+
clear semantic boundary, reuse point, or independently testable responsibility. Use parallel only
|
|
159
|
+
for truly independent write scopes. Better unit contracts reduce later REVIEW rework.
|
|
118
160
|
|
|
119
161
|
Code tasks require `test-strategy.md`; explicit `doc`, `analysis`, and `report` tasks do not.
|
|
120
162
|
|
|
@@ -177,19 +219,30 @@ Use its `minimum_mode` and `reasons` as the proposal floor. You may raise this r
|
|
|
177
219
|
uncertainty or user preference requires more rigor, but never lower or replace it with a
|
|
178
220
|
self-reported floor. The state API rechecks the floor when the proposal is saved and frozen.
|
|
179
221
|
|
|
180
|
-
The calculation
|
|
181
|
-
|
|
182
|
-
- `fast`: one
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
- `
|
|
187
|
-
|
|
188
|
-
|
|
222
|
+
The calculation is intentionally Standard-centered:
|
|
223
|
+
|
|
224
|
+
- `fast`: one coherent, non-parallel unit in one actually modified repository, at most five
|
|
225
|
+
changed files, no explicit high-risk signal, and no public or cross-repository contract impact.
|
|
226
|
+
Small parameter changes, bounded field/mapping edits, and a few ordinary model files should
|
|
227
|
+
normally remain Fast.
|
|
228
|
+
- `standard`: the default for ordinary business work. Multiple units/files, bounded compatibility
|
|
229
|
+
work, actual but contained multi-repository changes, broad low-risk work, and bounded high-risk
|
|
230
|
+
work remain Standard.
|
|
231
|
+
- `strict`: requires both an explicit high-risk signal and concrete complexity/blast-radius
|
|
232
|
+
evidence. Complexity means actual multi-repository edits, at least four units, at least ten
|
|
233
|
+
changed files, or a public/cross-repository contract. Parallel execution is a Standard signal
|
|
234
|
+
by itself. Generic domain words in a risk description, title, file path, Spec repository
|
|
235
|
+
catalog, or unselected task are never sufficient evidence of high risk.
|
|
236
|
+
|
|
237
|
+
Repository count comes only from repositories that own files in current plan units. Canonical
|
|
238
|
+
Spec metadata, unselected tasks, dependency summaries, unused `repo_paths`, and supermodule child
|
|
239
|
+
registrations do not raise the mode. A real multi-repository change is a Standard signal by
|
|
240
|
+
itself and reaches Strict only when an explicit high-risk signal is also present.
|
|
189
241
|
|
|
190
242
|
If configuration is concrete, it is also a floor. The selected mode may be raised by the user
|
|
191
|
-
but never placed below either floor.
|
|
192
|
-
|
|
243
|
+
but never placed below either floor. The Agent must not raise an adaptive proposal to Strict from
|
|
244
|
+
vague uncertainty or a domain keyword; cite both the explicit risk and the concrete complexity
|
|
245
|
+
signal. Explain the decision and state-specific effects in the dev-spec.
|
|
193
246
|
|
|
194
247
|
Persist the proposal before requesting ANALYSIS -> IMPLEMENT:
|
|
195
248
|
|
|
@@ -47,6 +47,24 @@ Communicate with the user in the user's language.
|
|
|
47
47
|
Describe the semantic meaning and, when relevant, units, format, allowed values, nullability,
|
|
48
48
|
default behavior, or compatibility constraints. A type-level comment does not replace comments
|
|
49
49
|
on its fields or members; do not add low-value comments to ordinary local variables.
|
|
50
|
+
10. Treat the task card's `Local Baseline` as the default implementation shape. Match the nearest
|
|
51
|
+
comparable code's naming, control flow, null/empty and error handling, layering, object model,
|
|
52
|
+
and extraction granularity unless correctness, security, an explicit requirement, or a hard
|
|
53
|
+
project rule requires a deviation. Do not add defensive null checks solely because they are a
|
|
54
|
+
generic best practice when the evidenced local contract intentionally omits them.
|
|
55
|
+
11. Implement the smallest coherent design. Do not add speculative abstractions, wrappers,
|
|
56
|
+
factories, layers, or extension points, and do not fragment one readable flow into many
|
|
57
|
+
single-use micro-methods. Extract code only for a clear semantic boundary, real reuse,
|
|
58
|
+
independent testability, or a material reduction in complexity.
|
|
59
|
+
12. Literals and magic values are allowed when they are obvious, local, and consistent with the
|
|
60
|
+
surrounding code. Introduce a constant for repeated use, stable domain/config/protocol
|
|
61
|
+
semantics, or an established project convention—not merely to hold the single return value of
|
|
62
|
+
a getter.
|
|
63
|
+
13. In a newly added core Java class, every method and field requires meaningful Javadoc. In an
|
|
64
|
+
existing core Java class, every added or materially modified method and field requires it.
|
|
65
|
+
Add focused inline comments to core or complex logic to explain intent, constraints, or
|
|
66
|
+
non-obvious tradeoffs. Do not mass-retrofit untouched legacy code, and for non-Java code
|
|
67
|
+
follow the language's doc-comment form plus the evidenced project convention.
|
|
50
68
|
|
|
51
69
|
## Choose the execution owner
|
|
52
70
|
|
|
@@ -92,6 +110,7 @@ Sub-agents never dispatch other sub-agents or read `.easy-coding` workflow asset
|
|
|
92
110
|
## Test Points {unit.test_points and exact targeted commands}
|
|
93
111
|
## Contracts {inputs, outputs, invariants shared with other units}
|
|
94
112
|
## Risks {known edge cases and compatibility risks}
|
|
113
|
+
## Local Baseline {nearest comparable code conventions and evidence paths}
|
|
95
114
|
## Code Comments {resolved host Agent author value; model-field, enum-member, and constant rules}
|
|
96
115
|
## Coding Rules {pre-digested RULES sections}
|
|
97
116
|
## Architecture {pre-digested ABSTRACT sections}
|
|
@@ -110,11 +129,13 @@ deliverable|null, checks:[{command,passed,failures:[]}], issues:[], needs_attent
|
|
|
110
129
|
hard/contract dependencies are ready; do not batch-start dependent tasks at the initial
|
|
111
130
|
IMPLEMENT boundary.
|
|
112
131
|
Populate `Code Comments` on every code task card with the resolved user-facing host Agent
|
|
113
|
-
author value
|
|
132
|
+
author value, the field/member/constant rules, and the core Java Javadoc rule above. Populate
|
|
133
|
+
`Local Baseline` from the Unit's analyzed evidence; sub-agents do not read this Skill.
|
|
114
134
|
2. Execute according to dependency order and selected owner.
|
|
115
135
|
3. Run targeted unit tests and self-audit scope, contracts, TODOs, and introduced warnings.
|
|
116
136
|
Also audit new author attributions and every new model field, enum member, and constant against
|
|
117
|
-
the comment requirements above
|
|
137
|
+
the comment requirements above, then check local-style deviations, unnecessary abstractions,
|
|
138
|
+
one-use constant extraction, and affected core Java Javadoc before recording success.
|
|
118
139
|
4. Append one `result` record. Only a successful unit uses `status:"completed"`; include
|
|
119
140
|
unresolved issues rather than hiding them, and do not advance while `issues` or
|
|
120
141
|
`needs_attention` is non-empty.
|
|
@@ -150,6 +171,10 @@ conversation overhead while keeping work observable.
|
|
|
150
171
|
- [ ] Every unit has a dispatch/result pair and satisfied its acceptance criteria.
|
|
151
172
|
- [ ] Targeted tests ran or a concrete blocker is recorded.
|
|
152
173
|
- [ ] Cross-unit contracts still match.
|
|
174
|
+
- [ ] The implementation follows the evidenced Local Baseline or records a required deviation.
|
|
175
|
+
- [ ] No speculative layer, fragmented micro-method set, or single-use getter constant was added.
|
|
153
176
|
- [ ] New author attributions use the user-facing host `<Current Agent Name> with Easy Coding`.
|
|
154
177
|
- [ ] Every new model field, enum member, and constant has a meaningful field-level comment.
|
|
178
|
+
- [ ] Every method/field in a new core Java class, and every added or materially modified one in
|
|
179
|
+
an existing core Java class, has Javadoc.
|
|
155
180
|
- [ ] Code tasks enter REVIEW, regardless of workflow mode.
|
|
@@ -12,7 +12,17 @@ Every new code task enters REVIEW. Read-only tasks do not. Obtain the current fi
|
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
Review the final diff against `dev-spec.md`, RULES, unit acceptance criteria, tests, contracts,
|
|
15
|
-
and obvious security risks. Every finding cites `file:line`.
|
|
15
|
+
the Unit's Local Baseline, and obvious security risks. Every finding cites `file:line`.
|
|
16
|
+
|
|
17
|
+
Review local fit before recommending generic cleanup. Flag an implementation when it departs from
|
|
18
|
+
the nearest comparable naming, control flow, null/error handling, layering, modeling, or method
|
|
19
|
+
granularity without a correctness, security, requirement, or hard-rule reason. Also flag
|
|
20
|
+
speculative layers, fragmented one-use micro-methods, constants created only for one getter
|
|
21
|
+
return, and missing Javadoc in core Java code: check every method/field in a new core class and
|
|
22
|
+
each added or materially modified one in an existing core class. Do not demand defensive null
|
|
23
|
+
checks, abstraction, constant extraction, or legacy-wide comment retrofits merely because they
|
|
24
|
+
are generic best practices. A violation of an explicit task-card coding/comment contract is a
|
|
25
|
+
contract defect, not optional stylistic advice.
|
|
16
26
|
|
|
17
27
|
For Canonical-backed tasks, group evidence by `repo_id` and `source_task_id`. Every selected
|
|
18
28
|
Spec task needs an implementation result and source test evidence; file references remain
|
|
@@ -61,36 +61,52 @@ plan decision; Auto continues immediately. Both remove later waiting, not qualit
|
|
|
61
61
|
- Present with `status != "COMPLETE"`: invoke `{{skill_trigger}}ec-init`, then stop.
|
|
62
62
|
- `[easy-coding:upgrade-init-pending:X]`: recommend `{{skill_trigger}}ec-init` for vX
|
|
63
63
|
adaptation, but allow the user to continue; this reminder is not a workflow block.
|
|
64
|
-
3. When the user explicitly references a Dev-Spec, run
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
64
|
+
3. When the user explicitly references a Dev-Spec, first run read-only `inspect-dev-spec
|
|
65
|
+
--manifest-only`. This routing pass validates the document, identifies the current worktree by
|
|
66
|
+
normalized remote, and returns the task catalog without resolving unrelated repositories. For
|
|
67
|
+
`protocol=canonical-v1`, show every task ID, repository, title, static status, actual execution
|
|
68
|
+
status, and dependency; never select all tasks by default and never calculate baseline drift
|
|
69
|
+
before selection.
|
|
70
|
+
|
|
71
|
+
After the user chooses one or more tasks, run one selected inspection with repeated
|
|
72
|
+
`--spec-task`. Resolve paths only for repositories that own selected tasks. The current
|
|
73
|
+
worktree needs no explicit mapping when its normalized remote matches uniquely; pass
|
|
74
|
+
`--repo-path` only for an additional selected repository or to confirm an ambiguous current
|
|
75
|
+
match. A differing `path_hint` is a one-time runtime mapping notice, not a Spec portability
|
|
76
|
+
failure: never copy, mirror, or rewrite the source Spec because of it.
|
|
77
|
+
|
|
78
|
+
Then call `create-task-from-spec` once for the complete selection. Do not call
|
|
79
|
+
`select-dev-spec-scope` during routing; `ec-analysis` owns the single consumption-closure read
|
|
80
|
+
after task creation. A document without a Canonical manifest remains a legacy ANALYSIS input
|
|
81
|
+
for an ordinary task. A malformed, DRAFT, or otherwise non-READY Canonical Spec stays blocked
|
|
82
|
+
and must never be downgraded to the legacy route. A READY Canonical Spec without shared
|
|
83
|
+
execution remains readable, but run `initialize-spec-execution` before selection can become an
|
|
84
|
+
executable Harness task.
|
|
73
85
|
|
|
74
86
|
```bash
|
|
75
87
|
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py inspect-dev-spec \
|
|
76
|
-
--spec <path>
|
|
88
|
+
--spec <path> --manifest-only
|
|
89
|
+
|
|
90
|
+
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py inspect-dev-spec \
|
|
91
|
+
--spec <path> --spec-task <task-id> [--spec-task <task-id>]... \
|
|
92
|
+
[--repo-path <repo-id>=<path>]...
|
|
77
93
|
|
|
78
94
|
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py initialize-spec-execution \
|
|
79
95
|
--spec <path>
|
|
80
96
|
|
|
81
|
-
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py select-dev-spec-scope \
|
|
82
|
-
--spec <path> --spec-task <task-id> [--spec-task <task-id>]...
|
|
83
|
-
|
|
84
97
|
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py create-task-from-spec \
|
|
85
98
|
--spec <path> --spec-task <task-id> [--spec-task <task-id>]... \
|
|
86
99
|
--task-id <harness-task-id> --type <type> --title <title> \
|
|
87
|
-
--repo-path <repo-id>=<path>
|
|
100
|
+
[--repo-path <repo-id>=<path>]... \
|
|
101
|
+
[--dependency-evidence <dependency-id>=<evidence>]... \
|
|
88
102
|
--agent <agent-id> --session-file <P>
|
|
89
103
|
```
|
|
90
104
|
|
|
91
|
-
`
|
|
92
|
-
|
|
93
|
-
|
|
105
|
+
Shared `EDS:EXECUTION` is the dependency fact source. Accept a completed hard dependency or a
|
|
106
|
+
satisfied edge directly from that snapshot. Only accept manual dependency evidence when the
|
|
107
|
+
shared edge is still pending and the user explicitly supplies independently verifiable
|
|
108
|
+
evidence; never reconstruct completion from another local Harness task, Git history, or an
|
|
109
|
+
agent's inference.
|
|
94
110
|
|
|
95
111
|
When multiple selected tasks depend on the same target, disambiguate creation evidence with
|
|
96
112
|
`<source-task-id>-><dependency-task-id>=<evidence>`.
|
|
@@ -92,6 +92,11 @@ First run `ec-init`; daily work goes through `ec-workflow`.
|
|
|
92
92
|
external explicit Spec paths are allowed and may be repaired only with identity-checked rebind.
|
|
93
93
|
Runtime progress must use the shared writer with CAS/idempotency and reconciliation; static
|
|
94
94
|
design changes require revision + READY + `sync-spec-design`. Never hand-edit `EDS:EXECUTION`.
|
|
95
|
+
- Canonical routing is two-pass: first use manifest-only discovery for the current worktree, then
|
|
96
|
+
inspect only the explicitly selected task IDs and repositories. A remote-confirmed worktree
|
|
97
|
+
overrides a stale `path_hint`; never mirror the source Spec or re-check unselected repositories.
|
|
98
|
+
ANALYSIS reads the selected consumption closure once and treats exact/scope-unchanged as a fast
|
|
99
|
+
projection, while shared execution is the dependency fact source.
|
|
95
100
|
- MEMORY combines short-memory creation and the conditional long-memory gate. Entry follows the
|
|
96
101
|
effective confirmation mode; once memory processing completes, COMPLETE is automatic.
|
|
97
102
|
- NO CODE-TASK COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
|
|
@@ -90,6 +90,11 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
|
|
|
90
90
|
external explicit Spec paths are allowed and may be repaired only with identity-checked rebind.
|
|
91
91
|
Runtime progress must use the shared writer with CAS/idempotency and reconciliation; static
|
|
92
92
|
design changes require revision + READY + `sync-spec-design`. Never hand-edit `EDS:EXECUTION`.
|
|
93
|
+
- Canonical routing is two-pass: first use manifest-only discovery for the current worktree, then
|
|
94
|
+
inspect only the explicitly selected task IDs and repositories. A remote-confirmed worktree
|
|
95
|
+
overrides a stale `path_hint`; never mirror the source Spec or re-check unselected repositories.
|
|
96
|
+
ANALYSIS reads the selected consumption closure once and treats exact/scope-unchanged as a fast
|
|
97
|
+
projection, while shared execution is the dependency fact source.
|
|
93
98
|
- MEMORY combines short-memory creation and the conditional long-memory gate. Entry follows the
|
|
94
99
|
effective confirmation mode; once memory processing completes, COMPLETE is automatic.
|
|
95
100
|
- NO CODE-TASK COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
|
|
@@ -18,7 +18,17 @@ complete exactly that unit. Your reply IS the return value, not a message to a h
|
|
|
18
18
|
context is in the card.
|
|
19
19
|
- Make no workflow stage-transition decisions; you do not know the state machine exists.
|
|
20
20
|
- Follow the coding rules and architecture context embedded in the card.
|
|
21
|
+
- Follow the task card's `Local Baseline`: match nearby naming, control flow, null/error handling,
|
|
22
|
+
layering, object modeling, method granularity, literal usage, and comment style unless a stated
|
|
23
|
+
correctness, security, requirement, or hard-rule reason requires a deviation.
|
|
21
24
|
- Treat the task card's `Code Comments` author value and field/member/constant rules as mandatory.
|
|
25
|
+
- Do not add generic defensive null checks, speculative abstractions/layers, fragmented one-use
|
|
26
|
+
micro-methods, or a constant that exists only to hold one getter return.
|
|
27
|
+
- Local, obvious magic values are allowed when they match surrounding code; create constants for
|
|
28
|
+
reuse, stable domain/config/protocol semantics, or established project convention.
|
|
29
|
+
- Every method and field in a new core Java class, and every added or materially modified method
|
|
30
|
+
or field in an existing core Java class, must have meaningful Javadoc; comment complex logic
|
|
31
|
+
where intent or constraints are not obvious.
|
|
22
32
|
- Treat acceptance criteria, test points, contracts, and risks in the card as required inputs.
|
|
23
33
|
- Run the exact targeted checks requested by the card and report their real outcome.
|
|
24
34
|
- Preserve each existing file's original encoding; never silently convert.
|
|
@@ -17,7 +17,12 @@ dimension named in your task card. Your reply IS the return value.
|
|
|
17
17
|
- correctness → does the implementation match the dev-spec requirement? edge cases,
|
|
18
18
|
null/empty handling, races, off-by-one.
|
|
19
19
|
- compliance → does the code obey the RULES sections in the card? naming, format, comment
|
|
20
|
-
language, error handling.
|
|
20
|
+
language, error handling, and the evidenced Local Baseline.
|
|
21
|
+
- Do not request defensive null checks, abstraction, constant extraction, or legacy-wide comment
|
|
22
|
+
cleanup solely as generic best practice. Flag unjustified local-style deviations, speculative
|
|
23
|
+
layers, fragmented one-use micro-methods, constants created only for a getter return, and
|
|
24
|
+
missing Javadoc on any method/field in a new core Java class or any added/materially modified
|
|
25
|
+
method/field in an existing core Java class.
|
|
21
26
|
- `error` means a demonstrated acceptance, contract, security, or build failure. Use `warning`
|
|
22
27
|
for a credible risk and `info` for non-blocking maintainability advice.
|
|
23
28
|
|