easy-coding-harness 0.10.0-beta.1 → 0.10.0-beta.10

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.
Files changed (33) hide show
  1. package/CHANGELOG.md +151 -0
  2. package/README.md +50 -20
  3. package/dist/cli.js +478 -47
  4. package/dist/cli.js.map +1 -1
  5. package/package.json +1 -1
  6. package/templates/claude/agents/ec-implementer.md +11 -0
  7. package/templates/claude/agents/ec-reviewer.md +6 -1
  8. package/templates/codex/agents/ec-implementer.toml +11 -0
  9. package/templates/codex/agents/ec-reviewer.toml +6 -1
  10. package/templates/common/bundled-skills/ec-init/SKILL.md +18 -6
  11. package/templates/common/bundled-skills/ec-meta/references/local-architecture/README.md +27 -12
  12. package/templates/common/bundled-skills/ec-meta/references/platform-files/README.md +1 -1
  13. package/templates/common/skills/ec-analysis/SKILL.md +141 -35
  14. package/templates/common/skills/ec-config/SKILL.md +24 -2
  15. package/templates/common/skills/ec-git/SKILL.md +7 -1
  16. package/templates/common/skills/ec-implementing/SKILL.md +61 -1
  17. package/templates/common/skills/ec-memory/SKILL.md +76 -6
  18. package/templates/common/skills/ec-reviewing/SKILL.md +21 -3
  19. package/templates/common/skills/ec-task-close/SKILL.md +4 -0
  20. package/templates/common/skills/ec-task-management/SKILL.md +7 -1
  21. package/templates/common/skills/ec-tdd-init/SKILL.md +101 -0
  22. package/templates/common/skills/ec-verification/SKILL.md +68 -26
  23. package/templates/common/skills/ec-workflow/SKILL.md +81 -22
  24. package/templates/main-constraint/AGENTS.md.tpl +49 -14
  25. package/templates/main-constraint/CLAUDE.md.tpl +46 -14
  26. package/templates/qoder/agents/ec-implementer.md +11 -0
  27. package/templates/qoder/agents/ec-reviewer.md +6 -1
  28. package/templates/runtime/templates/dev-spec-skeleton.md +8 -1
  29. package/templates/runtime/tools/easy_coding_tdd_readiness.py +306 -0
  30. package/templates/shared-hooks/easy_coding_state.py +3878 -259
  31. package/templates/shared-hooks/easy_dev_spec.py +444 -30
  32. package/templates/shared-hooks/easy_dev_spec_execution.py +1014 -0
  33. package/templates/shared-hooks/easy_dev_spec_protocol.py +1426 -18
package/CHANGELOG.md CHANGED
@@ -6,6 +6,157 @@
6
6
  - `y`:常规功能升级
7
7
  - `z`:日常 bug 修复
8
8
 
9
+ ## 0.10.0-beta.10
10
+
11
+ - `.easy-coding/sessions/` 改为事件触发的有界 GC:只在创建新逻辑 session 前执行,
12
+ 无任务绑定的 session 保留 7 天、仍绑定任务的 session 保留 30 天,并按最近活动时间将
13
+ 根目录 session JSON 控制在 100 个以内;创建前会预留一个名额,已存在 session 的日常
14
+ turn 不重复扫描。
15
+ - 清理依据 session 内容与活动时间,不依赖 Codex、Claude Code、Qoder、PPID 或旧文件名
16
+ 的字符串匹配;缺失或损坏的时间字段回退到文件修改时间,删除前重新比对内容,避免覆盖
17
+ 并发刷新。
18
+ - `easy-coding upgrade` 在实际升级目标中执行一次存量 GC,`--dry-run` 仅展示影响而不删除;
19
+ acceptance 快照只清理任务不存在、任务已终态或不再被当前验收检查点引用的孤儿文件,
20
+ tasks、memory、spec、project.yaml 与项目知识文件保持不变。
21
+ - 新增 TypeScript、共享 Python hook 与 upgrade 集成回归,覆盖双 TTL、LRU 上限、损坏旧
22
+ session、仅新建触发、dry-run 和活动验收证据保留。
23
+
24
+ ## 0.10.0-beta.9
25
+
26
+ - 工作流 owner 改为规范平台身份边界:每份安装后的状态脚本固化宿主身份,新写入只接受
27
+ `claude-code` / `codex` / `qoder`,脚本身份、`--agent` 与已注入 session 命名空间三方
28
+ 不一致时在落盘前拒绝;`Codex with Easy Coding` 等作者/Canonical 展示归属不再允许进入
29
+ `last_agent`。
30
+ - Codex 与 Qoder 共用的 `AGENTS.md` 生成区改为安装顺序无关的双平台路径合同,
31
+ 明确当前宿主只能调用自己的状态脚本,防止 Qoder 最后写入后误导 Codex 执行
32
+ `.qoder/hooks/easy_coding_state.py`。
33
+ - handoff 提示改为显式协调事件驱动:只有未消费的 `handoff` 记录才显示交接,
34
+ `claim-task` 新增 immutable `claim` 审计记录并关闭交接;单纯 owner 差异不再被伪造成
35
+ handoff。
36
+ - upgrade 与首次 SessionStart 幂等迁移旧任务/session 中的 `root` 系列和误写展示名,
37
+ 即使版本号已经更新也能继续检测并自愈,但保留 `execution.jsonl` 及 Canonical Spec 的
38
+ 历史审计展示;新增生产形态、跨平台路径冲突、安装顺序和真实 handoff/claim 回归测试。
39
+
40
+ ## 0.10.0-beta.8
41
+
42
+ - VERIFICATION 绿色后新增可审计验收检查点。无漂移时 `confirm` / `auto` 继续按原审批模式
43
+ 自动流转;检查点后出现代码变化时,所有模式只临时暂停一次,返回完整文本 diff、二进制/
44
+ mode 变化、逐文件 old/new SHA-256 和稳定 `diff_sha256`,防止把同一次外部保存误判成必须
45
+ 重走完整流程;执行计划中的非 Git 文件同样支持精确差异确认。
46
+ - 用户确认精确差异后保留原 REVIEW 结论,不回退 IMPLEMENT 或重复审查;非执行差异可
47
+ `carry-forward` 原验证,可执行差异必须补当前指纹的 `targeted` 验证,`waived` 仅用于用户
48
+ 显式接受未验证风险;Canonical 多任务只要求实际受影响 source task 留下当前指纹的定向
49
+ 验证。配置、计划、Workflow、Canonical 设计或嵌套仓状态变化仍按正常门禁返回相应阶段。
50
+ - Canonical task 在 Harness 本地验证完成后保持 `implemented`,仅在
51
+ VERIFICATION → MEMORY 边界按显式确认或既有 `confirm` / `auto` 授权真正应用时写为
52
+ `verified`;共享事件包含验收摘要,MEMORY → COMPLETE 仍负责写回 `completed`。
53
+ - `execution.jsonl` 新增 immutable acceptance 记录,短期记忆门禁会校验用户接受的授权来源、
54
+ 差异摘要、Review/验证策略、变更文件和完整 digest;状态 API 新增检查点、差异检查及精确
55
+ 确认参数,并补齐 Auto、定向验证、Canonical 边界与无重复 REVIEW 的回归测试。
56
+
57
+ ## 0.10.0-beta.7
58
+
59
+ - Workflow floor 改为 Standard 居中的复合判定:单仓、单 Unit、非并行且最多 5 个文件的
60
+ 低风险局部修改优先 Fast;普通业务、多 Unit/文件、闭合的跨仓修改默认 Standard;只有
61
+ 明确高风险与真实复杂度/大影响面同时存在才进入 Strict。
62
+ - 仓库数量只统计 execution plan 中实际修改文件所属的 Git root。Canonical Spec 的未选
63
+ task、依赖摘要、未使用 `repo_paths`,以及 supermodule 已登记但未修改的子项目不再抬高
64
+ Workflow;风险描述、标题或文件路径中仅出现 `payment` / `schema` 等普通领域词也不再
65
+ 单独触发 Strict,并行执行本身也只作为 Standard 信号。
66
+ - ANALYSIS 新增渐进成本预算和 `Local Baseline`:只读取当前变更需要的最近邻同类代码、
67
+ 合同和测试,按证据继承命名、空值/异常处理、分层、方法粒度、常量与注释习惯,避免
68
+ 无关全仓扫描、投机性抽象和碎片化小方法。
69
+ - IMPLEMENT/REVIEW 与三平台子代理统一克制设计合同:允许符合局部惯例的直观魔法值,
70
+ 禁止为单个 getter return 创建常量;新增核心 Java 类的全部方法/字段、已有核心类中新增或
71
+ 实质修改的方法/字段必须有 Javadoc,核心或复杂逻辑补充必要意图/约束注释,且不批量改造
72
+ 未触碰历史代码。
73
+
74
+ ## 0.10.0-beta.6
75
+
76
+ - Canonical Spec 首次路由新增 `inspect-dev-spec --manifest-only`:只通过 normalized remote
77
+ 识别当前 worktree、展示任务目录和共享 execution 状态,不再为未选仓库解析本地路径或
78
+ 为任何未选任务计算 baseline;`path_hint` 明确降级为提示信息。
79
+ - 用户选定 task 后,`inspect-dev-spec --spec-task ...` 只检查所选任务所属仓库及其
80
+ change/test 范围;当前 worktree remote 唯一匹配时无需手工传 `--repo-path`,即使旧
81
+ `path_hint` 指向仍存在的原 checkout,也优先绑定当前 worktree。
82
+ - `ec-workflow` 不再在路由阶段提前读取消费闭包;`ec-analysis` 负责唯一一次精确 selector
83
+ 调用,并对 `exact` / `scope-unchanged` 使用快速投影,对 `scope-drifted` 只分析所选任务
84
+ 的漂移文件和符号,派生 dev-spec 不再被解释为第二轮 Spec 创作。
85
+ - 共享 `EDS:EXECUTION` 固化为依赖事实来源:已完成 hard task 或已满足依赖边直接放行;
86
+ 禁止通过另一个本地 Harness task、Git 历史或 Agent 推断重复考古完成状态。
87
+ - 保持项目外原始 Spec absolute locator、身份校验 rebind、共享 writer/CAS 及旧版全量
88
+ `inspect-dev-spec` 调用兼容;新增 worktree、未选仓库隔离和三平台安装产物回归测试。
89
+
90
+ ## 0.10.0-beta.5
91
+
92
+ - 兼容新版 `easy-dev-spec/v1` 共享执行区:同步设计/整文双摘要与 execution 投影协议,新增
93
+ 单一共享 writer,将 Canonical Task、Step 和 dependency 的实施、验证、完成与取消结果
94
+ 写回原 Spec;本地 `execution.jsonl` 继续保存完整门禁证据。
95
+ - Canonical 绑定改为 `design_sha256 + document_sha256 + execution_revision`:执行进度更新不再
96
+ 误判为方案漂移;CAS 冲突只在设计未变时自动重试一次,稳定幂等键避免重复事件,pending
97
+ 写回可通过 `reconcile-spec-execution` 对账,revision 回退会被硬拦截。
98
+ - 支持用户显式选择项目外 Spec 绝对路径,并提供身份严格校验的 `rebind-spec-source`;静态
99
+ 设计调整必须 revision 恰好 +1、重新 READY 并调用 `sync-spec-design`,受影响任务及后继
100
+ 状态重置后回到 ANALYSIS,禁止手工编辑 `EDS:EXECUTION`。
101
+ - ANALYSIS→IMPLEMENT 只启动依赖已满足的来源任务;IMPLEMENT 按通过的本地测试证据回写
102
+ Step/implemented,REVIEW 写回阻塞,VERIFICATION 写回 verified,MEMORY→COMPLETE 自动
103
+ 写回 completed,关闭任务写回 cancelled。共享写回与 Git 提交/推送保持相互独立。
104
+ - 共享事件统一记录为 `easy-coding / <Agent> with Easy Coding`;单槽 pending 禁止被不同动作
105
+ 覆盖,可重试 CAS 冲突保留现场,旧设计动作、幂等键载荷冲突和确定性状态错误会清槽解锁。
106
+ result 只消费当前 `in_progress` 尝试之后的 dispatch/严格成功证据,repair 只重开 blocked
107
+ 来源任务;设计同步同时淘汰受影响依赖证据和旧实现指纹,本地 task.json 使用原子替换。
108
+
109
+ - 将日常任务记忆与架构维护解耦:每个代码任务只生成不可变短期记忆;仅当长期记忆触发
110
+ `distill` 时才执行独立架构评估,并默认选择 `no-op`,避免为了更新而更新。
111
+ - MEMORY 状态 API 新增冻结式架构评估契约和 `memory-architecture-assessment` 命令,记录
112
+ `action / trigger / reason / evidence / affected_sections`,并用 ABSTRACT 与架构 CHANGELOG
113
+ 指纹校验 `no-op / backfill / update` 的实际文件结果;评估失败时不得消费短期候选。
114
+ - 架构更新只接受模块边界、职责/依赖方向、核心流程、技术栈/运行基础设施或现有 ABSTRACT
115
+ 与稳定事实冲突等证据;普通 Bug 修复、字段/DTO 调整、局部重构、临时方案和例行依赖升级
116
+ 不触发更新。稳定编码约定只沉淀为 RULES 更新候选,不静默改写知识约束。
117
+ - 初创项目首个实质任务若缺失 ABSTRACT,可通过 `missing-abstract` 例外在未触发长期蒸馏时
118
+ 完成一次 `backfill`;0.10.0-beta.5 前已冻结的 MEMORY 指令及旧 MEMORY_LONG 恢复路径保持兼容。
119
+
120
+ ## 0.10.0-beta.4
121
+
122
+ - ANALYSIS 完成后不再向会话回贴整份 `dev-spec.md`,改为展示核心方案、验收摘要、
123
+ Workflow Mode 与主要风险,并在客户端支持时提供完整 Dev-Spec 的绝对 Markdown 文件链接,
124
+ 不支持本地链接时保留可复制的绝对路径。
125
+ - Dev-Spec 新增结构化“决策闭环”章节;技术路线、接口、模型、状态、范围或验收存在未决问题时,
126
+ Agent 必须停留在 ANALYSIS 逐项问答并回填结论。状态 API 要求唯一的
127
+ `decision_status: closed` 标记,未闭合方案不能进入 IMPLEMENT。
128
+ - `ec-implementing` 新增注释交付门禁:作者署名必须使用当前宿主 Agent 与 Easy Coding 的组合,
129
+ 例如 `Codex with Easy Coding`;新增数据模型字段、枚举成员和常量必须逐项说明语义及适用的
130
+ 单位、格式、取值、空值或兼容约束。
131
+
132
+ ## 0.10.0-beta.3
133
+
134
+ - TDD 业务任务的 `VERIFICATION` 门禁收口为本地证据:每个仓库(Canonical 场景下每个
135
+ source task)必须有通过的本地单测,以及达到冻结阈值的本地 JaCoCo changed-line
136
+ coverage;不再要求远程 GitLab pipeline URL、job identity 或成功状态。
137
+ - `ec-tdd-init` 继续在 TDD 关闭态生成并校验参数化 GitLab TEST-stage job、构建配置、
138
+ JaCoCo XML 与 readiness receipt,但远程 CI 只作为项目自动化能力,不再触发 Harness
139
+ 中间提交、推送或等待远程结果。
140
+ - beta.1/beta.2 任务中已有的 `coverage_scope=gitlab` 记录保持原样并从新验收集合中忽略,
141
+ 因此 pending/failed 远程记录不会阻塞升级后的本地门禁;本地 baseline、阈值、报告
142
+ 指纹及 TDD 生命周期/review 约束保持不变。
143
+
144
+ ## 0.10.0-beta.2
145
+
146
+ - 新增 `ec-tdd-init`,在 TDD 关闭态初始化或刷新 Java 单测执行、JaCoCo XML、GitLab
147
+ TEST job、报告 artifact 与 changed-line coverage gate;初始化只建设基础设施,不批量补
148
+ 存量业务单测,也不要求仓库全量覆盖率。
149
+ - 新增 `.easy-coding/tools/easy_coding_tdd_readiness.py` 与覆盖构建、GitLab CI、coverage
150
+ 工具的文件指纹 receipt;项目级 `easy-coding config`、session `set-tdd` 和 ANALYSIS →
151
+ IMPLEMENT 均在开启/冻结 TDD 前机械校验 readiness,缺失或漂移时只允许先初始化或
152
+ 保持关闭。TDD 关闭的普通 hook 不扫描这些文件。
153
+ - `tdd-init` 作为专用代码任务始终冻结 `tdd_enabled=false`,即使遗留项目/session 或暂停
154
+ 任务请求开启 TDD,也可正常创建和修改 CI,消除“开启 TDD 后又依赖尚未创建 CI”的
155
+ 循环阻塞;初始化完成后仍需用户显式开启 TDD。
156
+ - 配置 schema 升至 5;升级时没有 readiness 的 beta.1 项目与 session TDD 请求迁移为
157
+ 关闭并保留阈值,已冻结活动任务合同不被静默改写。后续业务任务仍只验收相对冻结
158
+ baseline 的新增/修改生产代码行,默认门槛 90%、测试设计目标接近 100%。
159
+
9
160
  ## 0.10.0-beta.1
10
161
 
11
162
  - 新增默认关闭的 Java TDD 模式,支持项目级 CLI 配置与 session 覆盖;覆盖率阈值默认
package/README.md CHANGED
@@ -84,32 +84,53 @@ any stage --[user abort via ec-task-close]--> CLOSED
84
84
  - 审批模式优先级为 session 覆盖 > 项目 `behavior.approval_mode` > `guard`;`approve`
85
85
  逐边确认,`guard` 确认 ANALYSIS → IMPLEMENT 与 VERIFICATION → MEMORY,`confirm` 只在
86
86
  ANALYSIS → IMPLEMENT 确认一次,随后各阶段在质量门禁通过后自动推进,`auto` 从开始即
87
- 自动推进。
88
- - 工作流模式优先级为 session 覆盖 > 项目 `behavior.workflow_mode` > `adaptive`。Adaptive 在 ANALYSIS 结束时根据风险解析、展示并冻结为 `fast`、`standard` 或 `strict`,用户可在风险下限之上调整。
89
- - Java TDD 默认关闭;优先级为 session 覆盖 > 项目配置 > `false/90%`。开启后在 ANALYSIS → IMPLEMENT 冻结开关与阈值,执行 RED/GREEN/REFACTOR(纯重构使用 characterization GREEN → GREEN),并以同一工具执行本地与 GitLab TEST-stage 差异覆盖率门禁。关闭时不扫描 CI/JaCoCo、不增加命令或提高原工作流验收深度。
87
+ 自动推进。所有模式仅在 VERIFICATION 绿色检查点之后又出现新代码差异时临时暂停:展示
88
+ 精确 diff 与摘要,由用户确认该摘要后继续;这不会把 `auto` 永久降级为人工审批。
89
+ - 工作流模式优先级为 session 覆盖 > 项目 `behavior.workflow_mode` > `adaptive`。Adaptive
90
+ 以 Standard 作为普通业务默认:单仓单 Unit、非并行且不超过 5 个文件的低风险局部修改
91
+ 优先 Fast;只有明确高风险与真实复杂度/大影响面同时存在才进入 Strict。仓库数只按当前
92
+ execution plan 实际修改的 Git root 计算,用户可在机械风险下限之上调整。
93
+ - ANALYSIS 会先通过问答闭合影响技术路线、接口、模型、状态、范围或验收的实质性问题,
94
+ 并在 Dev-Spec 中记录唯一的 `decision_status: closed`。会话只展示核心方案、验收摘要、
95
+ Workflow Mode 与主要风险;完整 `dev-spec.md` 通过绝对本地链接或路径按需查看。
96
+ - Java TDD 默认关闭;优先级为 session 覆盖 > 项目配置 > `false/90%`。首次开启前必须运行 `ec-tdd-init`,只建设 JUnit/JaCoCo/GitLab 增量覆盖率基础设施,不补存量业务单测;readiness 通过后才允许显式开启。开启后在 ANALYSIS → IMPLEMENT 冻结开关、baseline 与阈值,只验收本任务新增/修改生产代码行,执行 RED/GREEN/REFACTOR(纯重构使用 characterization GREEN → GREEN),并要求本地单测通过、本地差异覆盖率达到冻结阈值。GitLab TEST-stage job 仍会生成,但远程 pipeline 结果不属于 Harness 验收证据,也不会触发中间提交推送。关闭时普通任务不扫描 CI/JaCoCo、不增加命令或提高原工作流验收深度。
90
97
  - 所有新代码任务都完整进入 REVIEW;不同工作流模式只调整各状态内部的上下文加载、执行主体、审查独立性、验证范围和记忆深度,不绕过状态或证据门禁。
91
98
  - 显式 `doc` / `analysis` / `report` 只读任务不生成 `test-strategy.md`;展示完整报告后按生效模式进入 COMPLETE,不执行 REVIEW、VERIFICATION 或 MEMORY,也不写任务记忆。
92
99
  - `VERIFICATION` 是验证硬门控:Fast 运行最小充分检查,Standard 运行受影响范围检查,
93
100
  Strict 运行项目适用的完整 lint/typecheck/test/build;所选模式要求的检查未真实执行
94
- 并留下当前指纹下的绿色证据,就不算通过。
101
+ 并留下当前指纹下的绿色证据,就不算通过。绿色后会冻结验收检查点;若代码随后变化,
102
+ Harness 展示完整差异并绑定 `diff_sha256`。用户确认后不重跑 REVIEW:纯非执行差异可沿用
103
+ 原验证,可执行差异补定向验证,显式风险豁免单独记录。配置、方案或 Canonical 设计漂移
104
+ 不能走这条例外。
95
105
  - `MEMORY` 先写入本次任务短期记忆,再执行长期记忆阈值门禁;未超过阈值时长期沉淀为 no-op。
96
106
 
97
107
  ## Canonical Dev Spec
98
108
 
99
109
  Harness 可选择性消费 easy-dev-spec 生成的单文件 `easy-dev-spec/v1` Canonical Spec:
100
110
 
101
- 1. `ec-workflow` 先只读检查 manifest、仓库、任务 DAG、依赖和 baseline,不创建任务。
102
- 2. 用户明确选择一个或多个 Spec task;`select-dev-spec-scope` 按仓库提取确定性消费
103
- 闭包,Harness 不默认导入整份 Spec,也不会读取未选任务正文。
104
- 3. 一次选择创建一个 Harness task;ANALYSIS 使用最终 producer READY 门禁,并将
105
- selected task 映射为带 `repo_id`、`source_task_id`、source steps、文件、符号和测试
106
- 命令的 Unit。
107
- 4. `hard` 依赖决定执行顺序,冻结的 `contract` 依赖允许并行编码,`integration` 依赖
108
- 在证据闭合前阻止全链路完成。
109
-
110
- Canonical Spec 是只读设计源;`.easy-coding/tasks/<task-id>/` 下的 `dev-spec.md`、
111
- `execution.jsonl` `test-strategy.md` 是绑定来源 SHA-256 的运行时派生物,不会把开发
112
- 进度写回源 Spec。无 Canonical manifest 的历史 Dev-Spec 继续走原有整文分析流程。
111
+ 1. `ec-workflow` 先用 `inspect-dev-spec --manifest-only` 只读校验 manifest,通过 normalized
112
+ remote 识别当前 worktree,并展示任务 DAG 与共享 execution;不会解析未选仓库路径,也
113
+ 不在选择前计算任何任务的 baseline。旧 Spec 仍可只读检查,但成为可执行任务前必须
114
+ 初始化共享执行区。
115
+ 2. 用户明确选择一个或多个 Spec task 后,Harness 用 `--spec-task` 只检查所选任务仓库和
116
+ change/test 范围。当前 worktree remote 唯一匹配时无需手工路径;`path_hint` 不一致只会
117
+ 形成一次运行时映射提示,不会复制或修复原 Spec。
118
+ 3. 一次选择创建一个 Harness task;ANALYSIS 唯一一次调用 `select-dev-spec-scope` 提取确定性
119
+ 消费闭包。`exact` / `scope-unchanged` 直接快速投影为 Unit、测试策略和派生 dev-spec,
120
+ `scope-drifted` 才读取所选范围内的漂移文件与符号;未选任务正文始终不进入上下文。
121
+ 4. `EDS:EXECUTION` 是依赖事实来源:`hard` 依赖决定执行顺序,冻结的 `contract` 依赖允许
122
+ 并行编码,`integration` 依赖在证据闭合前阻止全链路完成;不会再从本地任务或 Git 历史
123
+ 重复推断共享状态。
124
+
125
+ Canonical Spec 的静态设计由 design revision + `design_sha256` 冻结;共享
126
+ `EDS:EXECUTION` 则接收 Harness 的 Task/Step/dependency 投影。写回使用
127
+ `execution_revision` CAS、幂等键和断点对账,执行区变化不会使本地 plan/review/verify
128
+ 指纹失效,设计变化或 revision 回滚仍会阻塞。显式项目外路径受支持,迁移后只能通过
129
+ 身份一致的 rebind 修复定位。静态设计调整必须 revision +1、READY 并执行 `sync-design`;
130
+ 机器执行区禁止手工编辑。Canonical task 在 Harness 本地校验完成后仍保持 `implemented`,
131
+ 只有 VERIFICATION → MEMORY 边界按显式确认或既有审批模式真正应用时才写为 `verified`,
132
+ 并携带验收差异摘要;MEMORY 完成后再写为 `completed`。无 Canonical manifest 的历史
133
+ Dev-Spec 继续走原有整文分析流程。
113
134
 
114
135
  ## Supermodule 模型
115
136
 
@@ -132,7 +153,7 @@ Canonical Spec 是只读设计源;`.easy-coding/tasks/<task-id>/` 下的 `dev-
132
153
  | `easy-coding add-agent` | 给已接入项目追加 Claude Code、Codex 或 Qoder 支持;supermodule 父仓可按已初始化子仓分层追加 |
133
154
  | `easy-coding upgrade` | CLI 升级后同步项目内生成文件,生成区覆盖,用户资产保留;supermodule 父仓会同步升级已初始化子仓 |
134
155
  | `easy-coding update` | 更新全局 CLI 到最新发布版 |
135
- | `easy-coding config` | 交互修改当前项目的 Approval、Workflow、Java TDD 与覆盖率阈值 |
156
+ | `easy-coding config` | 交互修改当前项目的 Approval、Workflow、Java TDD 与覆盖率阈值;开启 TDD 前要求 readiness |
136
157
  | `easy-coding status` | 查看已安装平台、harness 版本、当前任务状态 |
137
158
  | `easy-coding clear` | 移除 harness 安装物,保留 tasks、spec、memory、project.yaml 等用户资产;supermodule 父仓支持交互选择、`--submodules` 和 `--no-submodules` |
138
159
 
@@ -151,6 +172,7 @@ Canonical Spec 是只读设计源;`.easy-coding/tasks/<task-id>/` 下的 `dev-
151
172
  | `ec-memory` | 写短期记忆,并在超过阈值时沉淀长期记忆 |
152
173
  | `ec-task-management` | 任务面板:查看、创建、选择、恢复、交接任务 |
153
174
  | `ec-config` | 只读查看或显式修改项目/session 的 Approval、Workflow、TDD 与阈值 |
175
+ | `ec-tdd-init` | 在 TDD 关闭态初始化/刷新 Java changed-line coverage 基础设施,不补存量单测 |
154
176
  | `ec-task-close` | 用户主动中断任务并关闭 |
155
177
  | `ec-no-harness` | 当前会话仅旁路 Easy Coding Harness,使用原生 Agent 能力 |
156
178
  | `ec-git` | 约束 git diff、commit、push、跨仓库提交等交付动作 |
@@ -181,14 +203,22 @@ Canonical Spec 是只读设计源;`.easy-coding/tasks/<task-id>/` 下的 `dev-
181
203
  easy-coding upgrade
182
204
  ```
183
205
 
184
- `upgrade` 会刷新生成区内的 skills、hooks、agents、主约束模板和运行时模板,不会删除已有任务、spec、memory、project.yaml 或项目知识文件。
206
+ `upgrade` 会刷新生成区内的 skills、hooks、agents、主约束模板和运行时模板,不会删除已有任务、spec、memory、project.yaml 或项目知识文件。0.10.0-beta.10 起,实际升级还会执行一次 session GC;`--dry-run` 不删除数据。
185
207
 
186
208
  升级到 0.9.0 时,旧 `strict_confirm` / `auto_mode` / `confirm_mode` 会一次性迁移为
187
209
  `behavior.approval_mode` 与 `behavior.workflow_mode`;旧 `lite` 映射为 `guard + fast`。
188
210
  项目级模式用 `easy-coding config` 修改(要求
189
211
  项目 Harness 与 CLI 版本完全一致,否则先执行 `easy-coding upgrade` 或更新 CLI);当前
190
- session 临时覆盖统一通过 `ec-config` 对话修改。升级到 0.10.0-beta.1 时配置 schema 升至
191
- 4,旧项目、会话和在途任务均迁移为 TDD 关闭;同时部署共享 Java 差异覆盖率工具。
212
+ session 临时覆盖统一通过 `ec-config` 对话修改。升级到 0.10.0-beta.2 时配置 schema 升至
213
+ 5;未完成 `ec-tdd-init` readiness 的项目/session TDD 请求迁移为关闭并保留阈值,同时
214
+ 部署共享 Java 差异覆盖率与 readiness 工具。0.10.0-beta.3 起,TDD 业务任务只依赖本地
215
+ 单测与本地差异覆盖率,历史远程 CI 证据保留但不再参与验收。已经冻结的活动任务合同
216
+ 不会被静默改写。0.10.0-beta.4 起,仍停在 ANALYSIS 的旧任务必须补齐决策闭环后才能
217
+ 进入 IMPLEMENT;已经进入后续阶段的任务不受影响。
218
+
219
+ session GC 只在创建新逻辑会话前和实际升级时触发:无任务绑定的会话保留 7 天、仍绑定
220
+ 任务的会话保留 30 天,并按最近活动时间将根目录 JSON 控制在 100 个以内。活动任务仍在
221
+ 引用的 acceptance 验收快照会被保留;任务、记忆、Spec 和项目知识不参与清理。
192
222
 
193
223
  若当前会话不希望 Harness 接管,显式调用 `/ec-no-harness`(Codex 使用
194
224
  `$ec-no-harness`)。它只旁路 Easy Coding,不关闭其他 hooks,也不忽略其他 skills;