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 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 在 ANALYSIS 结束时根据风险解析、展示并冻结为 `fast`、`standard` 或 `strict`,用户可在风险下限之上调整。
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` 先只读检查 manifest、仓库、任务 DAG、依赖、baseline 与共享 execution;
105
- Spec 仍可只读检查,但成为可执行任务前必须初始化共享执行区。
106
- 2. 用户明确选择一个或多个 Spec task;`select-dev-spec-scope` 按仓库提取确定性消费
107
- 闭包,Harness 不默认导入整份 Spec,也不会读取未选任务正文。
108
- 3. 一次选择创建一个 Harness task;ANALYSIS 使用最终 producer READY 门禁,并将
109
- selected task 映射为带 `repo_id`、`source_task_id`、source steps、文件、符号和测试
110
- 命令的 Unit
111
- 4. `hard` 依赖决定执行顺序,冻结的 `contract` 依赖允许并行编码,`integration` 依赖
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easy-coding-harness",
3
- "version": "0.10.0-beta.5",
3
+ "version": "0.10.0-beta.7",
4
4
  "description": "CLI scaffold for installing Easy Coding harness files into agent-native directories.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -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
- - Error handling style, import ordering, formatter/linter in use (read their configs)
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
- 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. Schema, Spec ID, design revision, and
26
- `design_sha256` must still match. A changed `document_sha256` with the same design is normal
27
- shared progress; refresh `execution_revision` without invalidating plan/review/verify evidence.
28
- An execution revision rollback is blocking. Then call the selector for the exact selection:
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> --repo-path <repo-id>=<stored-path> [--repo-path <repo-id>=<stored-path>]...
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. `scope-drifted` requires current-code conflict analysis before confirmation;
42
- `baseline-unavailable` or unresolved repository identity remains blocked in ANALYSIS.
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. Use parallel only for truly
117
- independent write scopes. Better unit contracts reduce later REVIEW rework.
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 classifies:
181
-
182
- - `fast`: one low-risk unit, local behavior, no public contract/schema/security/concurrency or
183
- migration impact, targeted test available.
184
- - `standard`: ordinary multi-file feature/fix, bounded contract impact, existing patterns and
185
- impacted tests available.
186
- - `strict`: state machine, configuration/schema migration, security/payment/data-loss risk,
187
- public or cross-repository contract, broad concurrency, platform generators, or uncertain
188
- blast radius.
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. Explain the decision and state-specific effects in the
192
- dev-spec.
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 and the field/member/constant rules above; sub-agents do not read this Skill.
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 before recording success.
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 the read-only `inspect-dev-spec` command
65
- before ordinary task creation. For `protocol=canonical-v1`, show every task ID, repository,
66
- title, dependency, and baseline status; never select all tasks by default. After the user
67
- chooses one or more tasks and resolves repository paths or omitted hard-dependency evidence,
68
- call `create-task-from-spec` once for the complete selection. A document without a Canonical
69
- manifest remains a legacy ANALYSIS input for an ordinary task. A malformed, DRAFT, or otherwise
70
- non-READY Canonical Spec stays blocked and must never be downgraded to the legacy route. A
71
- READY Canonical Spec without shared execution remains readable, but run
72
- `initialize-spec-execution` before selection can become an executable Harness task.
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> [--repo-path <repo-id>=<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> [--dependency-evidence <dependency-id>=<evidence>]... \
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
- `select-dev-spec-scope` is read-only and may run only after explicit task selection. Its
92
- per-repository payload is the authoritative ANALYSIS context; do not load unselected task
93
- bodies from the source document.
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