# 更新日志

本文记录 KCode 的重要版本变化。版本号以 `package.json` 为准。

## 未发布

- 暂无。

## 0.1.63 - 2026-06-08

### 修复

- 批量 open blocking question 支持结构化文本回答：用户可用 `Q-001: <答案>`、`Q-002: <答案>` 一次回答同一事实组问题，入口会先写入答案和 `run.facts`，再刷新门禁，避免多问题场景被 LLM 当普通输入重新分析。
- 无 UI 场景下 `kd_ask_user` 输出批量回答格式，不再只提示回答第一个问题。
- 清理 `kd_search`/`kd_table` 的旧 `edition` 参数和文档残留，产品上下文统一使用 `product`，避免旧参数和产品画像并存。
- 移除官方技能查找中的开发机绝对路径 fallback，运行时只使用 `KCODE_KINGDEE_SKILLS_ROOT` 或随包 `vendor/kingdee-skills`。

### 改进

- `release:check` 扩展为全量回归门禁，覆盖 knowledge、checker、harness、harness evals、CLI、official tools、build-debug、SDK signature、package smoke 和 dry pack。
- Harness 和命令文档补充批量问题组回答协议，明确回答先落状态再进入下一轮 prompt。

### 验证

- `npm run check`
- `npm run smoke:harness`
- `npm run release:check`（测试步骤通过；提交前因工作树有本轮改动触发发布保护）

## 0.1.62 - 2026-06-08

### 新增

- 新增元数据解析能力：`kcode metadata` 和 `kd_metadata_parse` 可解析企业版 SQL Server/Oracle `T_META_OBJECTTYPE.FKERNELXML`、苍穹/星瀚/旗舰版 PostgreSQL `t_meta_entitydesign.fdata` 或 MCP JSON 结果，输出 FormId/FID、继承链、实体/分录、表名、字段标识、数据库字段名和插件引用。
- 表单元数据解析成功时可写入 `evidence/data-source.md`，让数据源门禁消费结构化 evidence，而不是让 LLM 直接凭原始 XML 或示例 SQL 推断字段。

### 修复

- 修正 PostgreSQL 元数据验证结论：本地 Docker `postgres15` 的实际苍穹业务库是 `prod_kmlttest`，`public.t_meta_entitydesign` 已确认存在；默认 `postgres` 库只可用于连通性验证。
- PostgreSQL MCP launcher 启动前校验 `KCODE_POSTGRES_URL` 必须包含具体业务库名，并拒绝 `postgres`、`template0`、`template1` 等维护库。
- 数据库 MCP 配置和工程规则新增库作用域约束：SQL Server 必须指定具体 AIS 业务库，Oracle `serviceName` 必须绑定具体业务服务，禁止给 LLM 使用跨库或全库枚举权限。
- 新增字段标识/实体标识/数据库字段名使用规则：插件层和模型层使用 FormId、实体/分录标识、字段标识；SQL/报表/存储过程使用表名和数据库字段名；访问方式不明确时必须先澄清。

## 0.1.61 - 2026-06-08

### 修复

- 修复 Windows 下 PostgreSQL MCP launcher 直接启动 `npx.cmd` 可能触发 `spawn EINVAL` 导致 MCP 连接关闭的问题。
- 补充数据库 MCP 真实验证结论：SQL Server MCP 已通过本地企业版库只读查询；PostgreSQL MCP 当时仅验证 Docker PostgreSQL 默认库连通性，不能作为苍穹元数据表是否存在的结论；0.1.62 已改为要求连接实际业务库。
- 补充 Oracle 企业版元数据说明：Oracle 与 SQL Server 使用同一套企业版元数据表和字段名，查询时仅调整 SQL 方言。

## 0.1.60 - 2026-06-08

### 新增

- 新增 Pi MCP adapter 集成，KCode 通过成熟 `pi-mcp-adapter` 暴露单一 `mcp` 代理工具，避免自研半成品 MCP/数据库工具。
- 新增 `kcode mcp-db`，生成 PostgreSQL、SQL Server 和 Oracle 的项目级只读数据库 MCP 配置；Oracle 默认使用 MIT 的 `mcp-db-connect` 只读 YAML 模板；凭证只通过环境变量提供，不写入仓库。
- 新增数据库 MCP 文档，明确企业版 SQL Server、苍穹 PostgreSQL 元数据查询入口，以及修改类 SQL/存储过程只能生成脚本交给用户执行。

## 0.1.59 - 2026-06-08

### 改进

- 问题登记、问题回答和事实修订会同步更新 Working Set，将当前缺口、下一动作和禁止重复询问写入状态内核，避免问答后继续保留旧焦点或旧阻断动作。
- 新增内部 workflow prompt dispatch gate，同一 run、阶段和输入在短窗口内只允许注入一次，避免多个命令、自动推进或验证恢复路径重复向主会话注入控制帧。

### 验证

- `npm run check`
- `npm run smoke:harness`
- `npm run smoke:harness-evals`

## 0.1.58 - 2026-06-08

### 修复

- 清理技能文件、运行时错误分支和历史文档中的旧提问入口残留；当前可见代码、提示词、文档和测试统一只使用 `kd_ask_user` / `kd_answer_user`。
- `kd_answer_user` 未知 action 不再保留旧提问动作的专用兼容错误码，避免模型把旧动作当成可恢复路径。

### 验证

- `npm run check`
- `npm run smoke:harness`
- `npm run release:check`

## 0.1.57 - 2026-06-08

### 改进

- 新增 opencode 风格的 `kd_ask_user`，使用 `questions[]` 发起阻塞式用户澄清，支持 `{label, description}` 选项、默认自定义输入、同一事实组多问题和回答后写入 `run.facts`。
- 新增 `kd_answer_user`，只负责记录 open question 答案、修订结构化事实、列出问题和列出合法 `factLabel`。
- 移除旧提问工具注册、schema 和当前文档入口；当前代码、提示词、门禁消息和命令参考统一使用 `kd_ask_user` / `kd_answer_user`，避免新旧提问范式并存。
- 将 question 校验集中到 `question-interaction.ts`，统一处理未知标签、重复事实、已有 open question、上下文摘要、选项结构和批量问题上限。
- 一致性检查不再把同一事实组多个 open blocking question 视为错误；仍要求每个阻断问题保留 `contextSummary`，问题过多时提示焦点分散风险。

### 验证

- `npm run check`
- `npm run smoke:harness`
- `npm run smoke:harness-evals`
- `npm run build:cli`
- `npm run smoke:kcode-command`

## 0.1.56 - 2026-06-08

### 新增

- 新增 Working Set、Tool Result Contracts、Action Commit Log 和 Write Transactions，作为 run state 中的操作上下文骨架，保留当前焦点、工具结果、动作承诺和写入事务边界。
- 新增 Context Pack Validation，在 prompt 发送前检查上下文包一致性；缺少关键状态时阻断业务计划、提问和编码。
- 新增 Source Anchors 和 `kd_anchor_read`，source-like 生产源码写入前必须读取 `line#hash|content` 锚点；后续写入事务会阻断缺失或陈旧锚点的编辑。
- 新增 `kcode init-deep` 和 `kcode context --deep`，生成 `.pi/kd/DEEP_CONTEXT.md` 深度上下文索引；Context Pack 按 Working Set 自动摘取相关目录约定。
- 新增 Plan Readiness section，将“动手前先过脑子”的规划约束合并到 Harness 门禁视图。
- Handoff Capsule 和 workflow prompt 注入 Working Set、工具结果契约、动作承诺和写入事务，降低问答后遗忘文件来源、工具结果或写入边界的风险。

### 改进

- 工具成功和工具阻断会记录结构化 Tool Result Contract，并同步更新 Working Set。
- 每轮输入和命令生成 workflow prompt 前记录 Action Commit，保留 control frame 的焦点、意图和 requiredAction。
- `write`/`edit` 工具调用前记录 Write Transaction，`tool_result` 后执行后置条件并将事务完成为 verified 或 blocked；工作区外写入、源码写入门禁、Source Anchor 缺失/失效和失败写入会留下事务化轨迹。
- 源码写入门禁同时检查状态一致性、open blocking question、open resumeSnapshot、execute gate、PLAN 批准文件、Source Anchor、SDK/TDD/evidence 约束。
- Windows PowerShell 覆盖工具阻断文件变更命令，防止通过 shell 绕过 `write`/`edit` 的 Write Transaction 和 Source Anchor 门禁。
- 项目持久规则补充 Context Pack、Working Set、工具结果、动作承诺和写入事务的职责边界。
- 参考 oh-my-openagent 的 Hash-Anchored Edits、`/init-deep` 和 Prometheus 思路，收敛为 KCode 自有的 Source Anchors、Deep Context Index 和 Plan Readiness，不引入平行 agent/规则体系。

### 验证

- `npm run check`
- `npm run smoke:harness`
- `npm run smoke:harness-evals`
- `npm run smoke:kcode-command`

## 0.1.55 - 2026-06-08

### 新增

- Control Frame 新增 `consistency` 焦点；存在 Harness Consistency errors 时高于 open question、resume 和 gate，唯一动作是修复 run 状态链路或重新创建 run。
- 新增 `tool.succeeded` 事件观测，成功工具调用可写入事件账本。
- KCode 自有文件/文档/PowerShell 工具成功后写入短摘要和来源到 `run.contextEntries`，降低“读过文件后一轮问答就遗忘”的风险。
- Transcript replay 和 CLI replay 支持 `tool-success` 步骤。

### 改进

- Context budget 增加 `consistency` 焦点预算，保留更多 ledger 和状态相关上下文。
- 行为 eval 增加 `successful-tool-observation-survives-question-turn`，覆盖工具成功定位文件后仍保留来源路径。

## 0.1.54 - 2026-06-07

### 新增

- 新增 `src/harness/consistency.ts`，检查 active run 指针、RUN.json、ledger、open question、facts、answered question 和 gate 快照的一致性。
- `kcode doctor --deep` 增加 Harness Consistency Report，用于诊断已答问题未落 facts、ledger 坏行、多个 open blocking question、gate 陈旧等状态链路问题。
- Context Compiler 增加上下文预算报告，说明当前 focus、上下文条目、ledger、阶段产物和项目上下文的裁剪状态。

### 改进

- `workflowPromptForRun` 注入预算报告，明确被截断内容必须读取本地文件或 evidence 后才能作为完整事实使用。
- Handoff Capsule 增加预算报告，方便新会话、上下文压缩和子 agent 委派时检查交接包裁剪边界。
- Harness smoke 和 CLI smoke 增加预算报告与一致性检查回归断言。

## 0.1.53 - 2026-06-07

### 新增

- 新增 `src/harness/handoff-capsule.ts`，统一生成新会话、子 agent、压缩恢复和 replay 使用的交接包。
- 新增 `/kd-capsule [说明]`，输出当前 active run 的 Handoff Capsule。
- 新增 `kcode capsule [run-id]`，从 `.pi/kd` run state 输出 CLI 交接包。
- 新增 `kcode replay [run-id] [--json]`，从事件账本生成最小 transcript replay 场景。

### 改进

- 子 agent 委派改为消费统一 Handoff Capsule，避免 delegation 和 workflow prompt 维护两套上下文摘要。
- `smoke:kcode-command` 增加 fake run/ledger 回归，覆盖 CLI capsule 和 replay 输出。

## 0.1.52 - 2026-06-07

### 新增

- 新增 `src/harness/action-router.ts`，在 control frame 中输出结构化动作意图，区分回答问题、修订事实、读取上下文、写代码、验证结果和阶段输入。
- 新增 `src/harness/tool-error.ts`，对工具失败进行分类并给出恢复动作，覆盖网络、代理、权限、路径、shell、schema、业务门禁和外部验证。
- 新增 `src/harness/tool-postcondition.ts`，定义写入和读取工具的后置条件评估，避免把工具调用成功等同于任务完成。
- `transcriptScenarioFromLedger` 支持从事件账本生成最小 transcript replay 场景。

### 改进

- `formatControlFrame` 增加结构化意图、允许/阻断状态、意图原因和意图动作。
- `tool.blocked` 事件账本增加 `errorClass` 和 `recoveryAction`，用于复盘工具失败后的正确恢复路径。
- Harness smoke 增加 Action Router、Tool Error Taxonomy、Tool Postcondition 回归断言；行为 eval 增加 ledger 到 replay scenario 的断言。

## 0.1.51 - 2026-06-07

### 新增

- 新增 `src/harness/tool-gateway.ts`，统一评估工作区外写入、Windows 路径提示、文档读取重定向、子 agent 工具边界和产品源码写入门禁。
- 新增 `src/harness/context-compiler.ts`，按 control frame 焦点编译 prompt 上下文和预算，prompt 渲染层不再承担上下文选择。
- 新增 `src/harness/facts-contract.ts`，将实现契约、第三方对接上下文和业务数据源上下文表达为结构化必需事实契约。

### 改进

- 扩展层 `tool_call` 分支改为调用 Tool Gateway，工具拦截仍统一写入事件账本。
- `workflowPromptForRun` 增加必需事实契约摘要，明确当前编码前缺口。
- `dataSourceContextBlockReason` 改为基于结构化契约评估生成门禁阻断原因。
- Harness smoke 增加 Tool Gateway、Required Facts Contract 和 Context Compiler 回归断言。

## 0.1.50 - 2026-06-07

### 新增

- 新增 run 级 append-only 事件账本 `.pi/kd/runs/<run-id>/events/ledger.jsonl`，记录 run 创建、上下文、问题、事实、阶段、门禁、验证、输入和工具拦截事件。
- 新增 `src/harness/observation.ts`，集中封装用户输入、自动回答和工具拦截观测，扩展层只做平台事件适配。
- 新增 `/kd-ledger [数量]`，用于输出当前 run 最近事件轨迹。
- 新增 `src/harness/transcript-eval.ts`，支持确定性 replay 多轮输入、工具拦截、问答和 prompt 断言。

### 改进

- `workflowPromptForRun` 通过上下文包注入最近事件账本，并明确其为只读观测，不作为 FormId、字段、接口映射等业务事实源。
- 行为评估增加 observation ledger 和 transcript replay 场景，覆盖工具拦截后上下文保留、非法路径写入拦截轨迹和已确认接口文档事实注入。

## 0.1.49 - 2026-06-07

### 新增

- 新增 `scripts/smoke-harness-evals.ts` 和 `npm run smoke:harness-evals`，将真实 agent 失败模式转成确定性行为回归。
- 新增 [Harness 行为评估](HARNESS_EVALS.md)，明确 eval-driven 处理流程、当前覆盖场景和未覆盖风险。

### 改进

- 行为回归覆盖问答后保留文件上下文、open question 优先级、已确认事实禁止重复提问、子 agent 上下文注入和工具失败不得转移到子 agent。
- Harness 工作流文档补充行为评估入口，避免只依赖提示词或普通 smoke test 判断 agent 是否可靠。

### 验证

- `npm run check`
- `npm run smoke:harness`
- `npm run smoke:harness-evals`
- `npm run smoke:kcode-command`

## 0.1.48 - 2026-06-07

### 改进

- `control-frame` 新增本轮输入策略，按当前焦点明确用户最新输入的允许解释、禁止解释和第一动作，避免 open question 被新需求或工具输出覆盖。
- `workflowPromptForRun` 将用户输入传入 control frame，由状态机统一生成输入解释边界，不再只依赖自然语言约束。
- 上下文优先级调整为 open blocking question 高于 resumeSnapshot，和实际 focus 顺序保持一致。
- 新增 run 级持久上下文条目 `run.contextEntries`：普通讨论输入、文件结论和设计资料会落盘，并在每轮 prompt 中稳定注入，避免阶段切换或上下文压缩后丢失已确认资料。
- 新增 `buildWorkflowContextPacket` 上下文包边界，统一组合状态、control frame、上下文条目、阶段文档、facts/question 和项目上下文；`workflowPromptForRun` 只负责渲染。
- `formatStatus` 改为纯读门禁视图，避免 prompt/status 生成时用旧 run 对象覆盖新 facts 或问题状态。
- `resumeSnapshot` 增加归档生命周期，已回答并推进阶段后不再作为最高优先级恢复断点注入。

### 文档

- 更新 Harness 工作流文档，明确恢复断点通过 control frame 注入，并记录本轮输入策略。
- 补充状态内核与上下文包职责边界：上下文条目保存讨论资料，但不替代结构化 facts/evidence；不保留旧上下文字段兼容路径。

### 验证

- `npm run check`
- `npm run smoke:harness`
- `npm run smoke:kcode-command`

## 0.1.47 - 2026-06-07

### 改进

- 新增 `control-frame` 架构层：每轮 prompt 先生成统一控制框架，明确当前焦点、最高优先级动作、结构化 facts、恢复断点和上下文优先级，避免最新消息覆盖任务状态。
- 新增 `action-policy` 架构层：产品源码写入统一通过同一个策略函数检查，主 agent、子 agent 和工具拦截不再分别拼装写入门禁。
- `workflowPromptForRun` 改为消费 control frame，不再自行拼接恢复断点和注意力规则。

### 验证

- `npm run check`
- `npm run smoke:harness`

## 0.1.46 - 2026-06-07

### 改进

- Harness 新增 `lite`、`standard`、`strict` 三种模式：文档和低风险任务可跳过冗余阶段，第三方对接、SQL/KSQL、数据修复和高风险发布保留完整流程。
- `/kd-start` 支持 `--mode lite|standard|strict`，新增 `/kd-mode` 用于在当前阶段合法时切换模式。
- 运行时状态、标题栏、prompt 和项目持久规则显示当前模式与阶段序列；模式提示集中在 `prompt-policy.ts` 管理。
- 阶段门禁改为按模式要求阶段产物，同时保留 execute 前事实、数据源、PLAN、TDD、SDK 签名和 evidence 硬门禁。
- RUN 状态必须显式包含合法 `mode`；缺失或非法模式的旧状态按坏状态拒绝加载，不做迁移推断。
- 新增 run 级恢复断点 `resumeSnapshot`，把阻塞问题的缺口、来源、门禁原因和下一动作作为最高优先级上下文注入 prompt，避免最新消息覆盖任务断点。
- strict 模式要求升级为硬门禁：第三方对接、SQL/KSQL、数据修复、外部验证、生产发布和高风险改动禁止用 lite/standard 跳过 SHIP、风险和 KSQL/外部验证证据。

### 修复

- 当 `verify` 是当前模式最终阶段且门禁阻塞时，`/kd-advance` 会报告真实阻塞原因，不再误报“Run 已处于最终阶段”。
- 自动推进和 evidence 工具不再吞掉最终阶段的阻塞门禁。
- `verify` 阶段必须通过 `kd_verify_result` 记录 Exit 0 并生成 `evidence/verify-pass.md`，否则最终阶段或 ship 门禁保持阻塞。

### 验证

- `npm run check`
- `npm run smoke:harness`

## 0.1.45 - 2026-06-07

### 修复

- 旧提问入口登记阻塞问题时必须提供 `contextSummary`，用于保留提问前已读取文件逻辑、当前结论和恢复继续点。
- `KdQuestion` 状态新增 `contextSummary` 和 `sourceRefs`，并在问题列表、问答记忆和阶段文档中持久化。
- 运行时协议和文档明确：读取文件并提问前必须固化来源和逻辑摘要，避免用户回答后丢失上下文。

### 验证

- `npm run check`
- `npm run smoke:harness`

## 0.1.44 - 2026-06-07

### 修复

- 将 `~\\Desktop\\...` 等 home 简写路径纳入工作区外写入拦截，避免 LLM 绕过 `C:/Users` 绝对路径门禁。
- 路径规范化会展开 `~` 到用户 home 目录，再判断是否位于当前工作区内。
- 持久规则和提示文案明确禁止写入 `~\\Desktop`、Desktop 或其他非当前工作区路径。

### 验证

- `npm run check`
- `npm run smoke:harness`

## 0.1.43 - 2026-06-07

### 修复

- `write`/`edit` 工具调用新增工作区外绝对路径拦截，禁止直接写入 `C:/Users`、Desktop 或其他非当前工作区路径。
- Windows 路径规则补充为写入必须使用当前项目相对路径或工作区内路径，避免外部绝对路径触发上游写入超时。
- Harness smoke 增加 `C:/Users/...` 外部路径判定回归测试。

### 验证

- `npm run check`
- `npm run smoke:harness`

## 0.1.42 - 2026-06-07

### 改进

- 将运行时提示词工程化为集中协议：执行顺序、事实处理、提问、输出契约和禁止行为。
- 六个阶段入口 prompt 改为正式工程指令，统一要求读取状态、事实、门禁并只执行唯一下一动作。
- 核心 Harness skills 补充单问题门禁、事实来源、禁止模板代码、人工验证边界和企业版 Python 验证要求。

### 验证

- `npm run check`
- `npm run smoke:harness`

## 0.1.41 - 2026-06-07

### 修复

- 旧提问入口增加全局 open blocking 门禁：已有未回答阻断问题时，禁止继续登记第二个问题。
- 数据源、实现契约和第三方对接门禁只输出当前最阻塞缺失事实和唯一允许的提问命令，不再把完整问题清单作为下一步展示给 LLM。
- 项目持久规则和命令文档明确：用户回答当前问题并记录后，才能刷新门禁生成下一问。

### 验证

- `npm run check`
- `npm run smoke:harness`

## 0.1.40 - 2026-06-07

### 修复

- Windows 下覆盖 Pi 内置 `bash` 工具为 PowerShell 执行，避免未安装 Git Bash 时反复搜索 `C:\Program Files\Git\bin\bash.exe`。
- 新增 `kd_find_file` 和 `kd_list_dir`，用于不依赖 shell 的文件查找和目录探索。
- `kcode doctor --deep` 增加 Windows bash 状态诊断，并提示 KCode 的 PowerShell 覆盖和文件工具。
- 持久规则明确 Windows 文件定位优先使用 `kd_find_file`、`kd_list_dir` 或 PowerShell。
- 旧提问入口可列出合法 `factLabel`，未知标签错误会返回完整标签目录，避免 LLM 反复猜标签。
- 旧提问入口拒绝把产品类型和 FormId/字段/插件事件等多个事实塞进同一个 `factLabel`。

### 验证

- `npm run check`
- `npm run smoke:harness`
- `npm run smoke:kcode-command`
- `npm run smoke:package`
- `npm run smoke:official`
- `npm run build:cli`
- `git diff --check`

## 0.1.39 - 2026-06-07

### 修复

- 持久规则和核心约束新增工具环境规则：Windows 默认使用 PowerShell、`rg`、`Get-ChildItem`、`Get-Content`，禁止假设 bash 可用。
- 明确文件定位必须基于真实搜索或目录读取结果；工具不可用时记录阻塞原因，禁止猜测路径或反复自述工具失败。
- 强化 `kd_subagent` 委派边界：子 agent 不能作为 shell/read/grep 失败的替代方案，不能用来绕过基础文件搜索。

### 验证

- `npm run check`
- `npm run smoke:harness`
- `npm run smoke:kcode-command`
- `npm run build:cli`
- `git diff --check`

## 0.1.38 - 2026-06-07

### 修复

- 将用户要求的“足够事实后再编码”规则集中写入运行时策略，并自动生成到 `.pi/kd/PROJECT_CONTEXT.md` 的持久规则中，确保新会话继承约束。
- 明确 API/SDK 文档不能替代 FormId、字段/实体、插件事件、SQL/KSQL 表名、字段映射、并发、日志和验收数据等业务事实。
- `run.facts` 固化为唯一结构化事实源；已回答 questions 仅作为审计记录，读取状态时不再从历史问题答案反推门禁事实。
- 状态读取时过滤未知 `factLabel` 和无效事实值，规范化可识别事实标签，避免自造标签或占位答案污染门禁。

### 文档

- 在 Harness 工作流和证据门禁文档中补充项目持久规则、业务事实门禁和外部/BOS 人工验证边界。

### 验证

- `npm run check`
- `npm run smoke:harness`
- `npm run smoke:kcode-command`
- `npm run smoke:package`
- `npm run smoke:official`
- `npm run build:cli`
- `git diff --check`

## 0.1.37 - 2026-06-07

### 修复

- `factLabel` 限制为集中定义的事实标签或别名，禁止 LLM 自造标签写入门禁事实。
- 数据源上下文门禁只信任结构化 facts 和 evidence，不再仅凭 PLAN 自由文本证明 FormId、字段、插件事件或读写方式。
- 开放事实问题拒绝“可以、好的、是”等口头确认语；确认题只接受明确肯定或明确否定。
- 重复 open 问题不会再次写入阶段文档，`/kd-answer` 会区分已回答、无效答案和问题不存在。

### 验证

- `npm run check`
- `npm run smoke:harness`
- `npm run smoke:package`
- `npm run smoke:official`
- `npm run build:cli`
- `git diff --check`

## 0.1.36 - 2026-06-07

### 修复

- 旧提问入口改为结构化事实账本：带 `factLabel` 的答案会写入 current fact，否定确认题不会成为事实。
- 同一 `factLabel` 已有 open 问题或当前事实时禁止重复提问；事实更正必须使用 `action=revise`，旧值会标记为 superseded。
- 移除旧提问入口的交互输入/自定义输入路径；当前只有一个 open blocking 问题时，用户普通短答会自动记录为答案。
- 占位答案如“待确认、未知、按实际环境、TODO/TBD”不能解除门禁。
- 子 agent 上下文显式注入已问已答事实和未回答问题，避免委派任务丢失关键约束。
- Cosmic metadata 数据源证据要求 evidence index `exitCode=0` 且 JSON 内容可解析，避免失败或空证据通过门禁。
- `kd_verify_result` 拒绝空命令、`unknown` 和占位命令，避免坏 payload 写入验证证据。

### 验证

- `npm run check`
- `npm run smoke:harness`
- `npm run smoke:package`
- `npm run smoke:official`
- `npm run build:cli`
- `git diff --check`

## 0.1.35 - 2026-06-07

### 新增

- 新增集中式工程指令策略，统一管理实现契约、数据源上下文、第三方对接上下文、提示风格和阶段约束。
- 新增数据源与实现就绪门禁，产品代码写入前必须具备触发入口、源对象、目标对象、字段映射、业务规则、失败处理和验收样例。
- 新增第三方对接上下文门禁，要求接口文档、对接方向、认证配置、字段映射、并发幂等、重试限流、错误补偿、日志脱敏和验收样例齐全后再编码。

### 改进

- 将 Harness、extensions、CLI、工具说明、静态检查结果和文档中的用户/LLM 可见文本改为正式工程指令，减少口语化表达。
- 强化企业版 C#、企业版 Python、苍穹、星瀚和星空旗舰版的数据源证据要求。
- 企业版 Python 插件明确为用户侧 BOS 注册和功能测试证据，LLM 不能替代外部系统操作，只能要求用户提供可核验证据并记录来源。
- 子 agent、自动修复循环、项目上下文、SDK 签名和 KSQL/SQL lint 的输出改为“必须/禁止/执行/记录”式约束。

### 验证

- `npm run check`
- `npm run smoke:harness`
- `npm run smoke:package`
- `npm run smoke:checker`
- `npm run smoke:build-debug`
- `npm run smoke:official`
- `npm run build:cli`
- `git diff --check`

## 0.1.30 - 2026-06-07

### 新增

- 新增 `kd_subagent` 工具，用隔离 Pi 子进程执行调研、文档、代码、验证和交叉审查任务。
- 新增 `/kd-review` 命令，用只读子 agent 执行交叉自查。
- 新增 `/kd-delegate` 命令，支持按 `research/doc/code/review/verify` 角色委派任务，并可用 `--dry-run` 预览上下文包。
- `kd_subagent` 支持单任务、只读角色并行 `tasks` 和链式 `chain` 三种模式。

### 改进

- 子 agent 上下文由 `src/harness/delegation.ts` 集中生成，明确写入边界、主状态机边界和禁止递归委派。
- 工作流 prompt 增加自动委派策略：复杂调研、交叉审查和可并行拆分任务可主动调用 `kd_subagent`，但不自动推进阶段。
- 子 agent 进程使用角色环境标记和工具白名单；child 环境不注册 `kd_subagent`，避免递归委派。
- `research/review/verify` 为只读角色；`doc` 只能写 README、docs/ 和当前 run 阶段文档；`code` 只能在 `execute` 阶段写产品源码并继续受 PLAN/TDD/SDK 门禁约束。

### 验证

- `npm run smoke:harness` 覆盖委派参数解析、上下文包关键约束和写入边界预览。

## 0.1.29 - 2026-06-07

### 修复

- 修复自动修复循环达到上限后，即使后续验证通过也会被遗留阻断问题继续卡住的问题。
- 强化 `kd_verify_result` 输入容错，避免坏 payload 触发类似 `undefined.replace/trim` 的崩溃。
- 限制验证结果只能在 `verify` 阶段或自动修复中的 `execute` 阶段记录，避免非验证阶段污染 `VERIFY.md` 和 evidence。
- 收敛 `/kd-verify` 与 `kd-verify` skill 的验证结果入口，要求通过 `kd_verify_result` 进入同一修复闭环。

### 验证

- `npm run smoke:harness` 覆盖 repair 阻断问题关闭、坏验证 payload 容错和非法阶段拒绝。

## 0.1.28 - 2026-06-07

### 新增

- 新增 `kd_verify_result` 工具和 `/kd-verify-result` 命令，用于记录验证命令结果。
- 验证失败时自动写入 `evidence/verify-failure-###.md`，切回 `execute` 阶段并注入修复上下文。
- 验证通过时写入 `evidence/verify-pass.md`，重置修复状态并继续尝试推进。
- 自动修复循环默认最多 3 轮；达到上限后创建阻断问题，避免无限修复。

### 验证

- `npm run smoke:harness` 通过，覆盖验证失败回到 execute、三轮失败阻塞、验证通过重置修复状态。

## 0.1.27 - 2026-06-07

### 修复

- 强化 active run / RUN.json 读取容错，过滤异常 `questions`、`artifacts`、`riskAssessment`、`gate` 字段，避免旧状态或坏状态触发门禁崩溃。
- Header 渲染门禁时增加兜底，门禁异常会显示为阻塞状态，不再导致 TUI 进程退出。
- 阶段产物存在但不可读或误建为目录时，现在按缺失处理，不再在读取 `CONTEXT.md`、`PLAN.md`、`EXECUTION.md` 等文件时抛出异常。

### 验证

- `npm run smoke:harness` 通过，覆盖损坏 run state 和损坏 evidence index 的容错。

## 0.1.26 - 2026-06-07

### 修复

- 修复已有项目的 `evidence/index.json` 中存在异常 entry 时，Header 门禁渲染可能因读取 `path` 崩溃的问题。
- `readEvidenceIndex` 现在会过滤无效 evidence entry，`hasEvidenceEntry` 和 evidence 记录逻辑对坏数据保持容错。

### 验证

- `npm run smoke:harness` 通过，覆盖损坏 evidence index 不再触发崩溃。

## 0.1.25 - 2026-06-07

### 修复

- 修复 `/kd-risk`、`/kd-product`、`/kd-answer`、`/kd-artifact` 等命令在解除门禁后不会自动尝试推进下一阶段的问题。
- 修复旧提问入口回答阻断问题后只刷新门禁、不尝试推进的问题。
- 修复 `kd_cosmic_config`、`kd_cosmic_metadata`、`kd_cosmic_api`、`kd_sdk_signature`、`kd_ksql_lint` 写入证据后不反馈自动推进结果的问题。
- 修复官方 evidence 只要文件存在就可能满足门禁的问题；现在要求 evidence index 中记录的退出码为 `0`。

### 验证

- `npm run smoke:harness` 通过，覆盖阻断问题回答后的自动推进、风险更新后的自动推进尝试，以及失败 evidence 不能通过门禁。

## 0.1.24 - 2026-06-07

### 新增

- 新增更新日志文档，并在 README 文档导航中提供入口。
- 新增 `src/harness/prompt.ts`，集中管理运行时 Harness prompt。
- 新增 `src/harness/messages.ts`，集中管理 Harness 门禁、证据、路径、SDK/TDD 阻断消息。

### 改进

- 收敛运行时 prompt，只保留状态、最近阶段资料、项目上下文摘要、当前阶段任务和核心约束。
- 精简 `kd-plan`、`kd-execute`、`kd-verify` 命令入口指令，减少和 skills、门禁规则的重复。
- 移除不存在的 IDE 相关验证表述，保留 Gradle/dotnet 的真实构建验证策略。

### 验证

- `npm run release:check` 通过，包含 TypeScript 检查、CLI 构建、Harness smoke、KCode 命令 smoke、SDK 签名 smoke、package smoke 和 pack dry run。

## 0.1.23 - 2026-06-07

### 新增

- 支持工程化需求工作流，覆盖需求讨论、规格、计划、执行、验证和发布推进。

### 改进

- 将包版本更新到 `0.1.23`，并同步 `package-lock.json` 顶层版本信息。
- 改进文档示例、用户文档和 README 使用说明。
- 优化 Harness 门禁、证据跟踪、恢复流程和风险确认指令。
- 使用 Gradle 和 dotnet 作为对应产品画像的构建验证入口。
- 本地化 KCode prompts，并要求关键 SDK 结论提供签名证据。

### 验证

- `npm run release:check` 通过，包含 TypeScript 检查、CLI 构建、Harness smoke、KCode 命令 smoke、SDK 签名 smoke、package smoke 和 pack dry run。

## 0.1.12 - 2026-06-06

### 新增

- 增加本地 SDK 签名检查能力，用于从当前项目实际 jar/dll 中读取类和方法签名。
- 增加 Harness 阻断问题记录、回答和恢复流程。
- 增加生产就绪检查和更严格的 vendor runtime、reviewer 规则。

### 改进

- 强化 Harness run、问题状态和门禁修复指引。
- 启动后自动进入 Harness 引导，减少首次使用路径断点。

## 0.1.5 - 2026-06-06

### 新增

- 发布 `kcode-pi` npm 包，提供全局 `kcode` 命令和随包 Pi 工作环境。
- 打包金蝶专属 extensions、skills、prompts、themes、知识库和 vendor 资料。

## 0.1.4 - 2026-06-06

### 新增

- 准备 KCode npm 分发能力和基础 CLI 入口。

## 0.1.3 - 2026-06-06

### 新增

- 准备早期 `kcode-pi` 发布版本。
- 增加自定义模型供应商说明。
