|
| 1 | +# v1.16.5 |
| 2 | + |
| 3 | +> 发布日期:2026-08-09 |
| 4 | +> 类型:Patch |
| 5 | +
|
| 6 | +## 摘要 |
| 7 | + |
| 8 | +本版本修复 SkillRoute 在同一 context epoch 内累计正文预算已经耗尽时,仍返回不可执行 `load_stage` / closeout 下一动作并被宿主重复提示的问题。修复把预算从单次调用或当前 generation 的局部判断提升为持久、可校验、可预留的 epoch 级资源契约,同时保持正常 ContextRead → rebind、条件重规划和跨版本恢复路径可用。 |
| 9 | + |
| 10 | +## 主要修复 |
| 11 | + |
| 12 | +- 新增 `SkillRouteBodyChargeLedgerV1`,以稳定正文 identity 记录 epoch 内已经实际交付的正文;账本条目、未归因字节与 `bodyBytesConsumed` 必须严格相等,冲突或算术不一致时 fail closed。 |
| 13 | +- 旧状态从当前计划的已加载正文和成功响应缓存有界迁移;无法归因的历史消耗保留为 `unattributedBodyBytes`,不把未知历史猜成零消耗。 |
| 14 | +- commit/rebind 在写入 route、generation 或 stage progress 前,为完整待执行计划同时验证基础路线与 workspace/native coexistence 场景;预留不足返回 `BUDGET_RESERVATION_BLOCKED` 且状态零写入。 |
| 15 | +- load_stage 在正文成功交付前执行原子 charge;同一正文跨 generation、进程重开或 response cache replay 不重复计费,首次正文才增加累计消耗。 |
| 16 | +- status 在投影 ContextRead stale 恢复前先判断所有 pending stage 的累计预算可执行性;预算耗尽返回 `BUDGET_BLOCKED`,`nextCall=null`,不再建议无效 rebind/load_stage。 |
| 17 | +- lifecycle coordinator 将预算不足、预留不足与账本无效识别为有限退役终态;100 次 Stop 不增加 no-progress 计数、不重放旧 Hook 文本。若业务核心尚未满足,唯一允许的后续动作是 `satisfy_business`。 |
| 18 | +- 在线发布审计发现维护者本地站点的 Mermaid 10.9.6、DOMPurify 3.4.12 与 React Router 7.18.1 出现新 advisory;本地分别锁定到官方修复版 10.9.8、3.4.13 与 7.18.2。React Router 修复线满足 Rspress 的 `^7.18.1` 与 Node 合同,因此移除原 unstable RSC 临时例外,站点生产依赖审计恢复为零 advisory;已跟踪策略记录官方范围、tarball 完整性与最低版本门禁。维护者站点仍按既有边界不进入公共 Git/npm 包。 |
| 19 | + |
| 20 | +## 截图场景 |
| 21 | + |
| 22 | +- 精确复现值:epoch 已消耗 `250072` bytes,closeout 为 `44087` bytes,总需求 `294159` bytes,超过 `262144` bytes 上限 `32015` bytes。 |
| 23 | +- 修复后该状态直接投影预算终态:`processComplete=false`、`required=false`、`nextCall=null`,不会继续显示或执行旧 `load_stage`。 |
| 24 | +- exact boundary 可执行;仅超限 1 byte 即零写入失败。cache reopen、legacy 错误 nextCall、预算优先于 stale-context 与 commit/rebind reservation 均有独立负向探针。 |
| 25 | + |
| 26 | +## 测试与风险覆盖 |
| 27 | + |
| 28 | +- 新增 `npm run test:skill-route-budget`,覆盖账本 canonical sum、跨 context epoch 拒绝、同 identity 字节冲突、legacy cache epoch 隔离、legacy migration、unattributed bytes、cache 去重、全计划预留、截图精确算术、边界/+1 byte、真实 Tool 原子性、100 次 Stop 与 commit/rebind 零写入。 |
| 29 | +- npm tarball 显式携带预算诊断脚本;`test-pack-clean` 自动核对所有 `test:skill-route*` 直接脚本目标,阻断“源码测试存在但发布包遗漏”的回归。 |
| 30 | +- SkillRoute 诊断夹具同时识别源码 `content/skills` 与 npm 包 `skills` portfolio 布局,并用纯包布局负向探针验证;隔离安装后的 `npm run test:skill-route-budget` 必须真实通过。 |
| 31 | +- Skill intent 生成/校验同样使用 source/package 双布局解析,确保公开 tarball 内的完整 `npm run test:skill-route` 不再因源码专属路径产生假绿。 |
| 32 | +- contracts、lifecycle 与 closure 测试统一复用同一双布局运行时根;`test-pack-clean` 递归解析完整 `test:skill-route` npm 调用链,并拒绝直接测试脚本重新硬编码源码专属 `content/skills` 路径。 |
| 33 | +- workflow root registry 生成器在源码仓读取 control-content manifest,在 npm 安装包读取同内容的已渲染 `instructions/` / `skills/` 投影;包内 contracts 不再依赖未分发的 `content/manifest.json`。 |
| 34 | +- `test-pack-clean` 从 SkillRoute closure trace 自动派生全部 evidence owner,确保包内 closure 引用的 bootstrap-layout 证据脚本与后续新增 owner 不会被 packlist 遗漏。 |
| 35 | +- `CriticalRiskCoverageMapV1` 扩展为 BUG-01~BUG-15;BUG-15 直接绑定 PF-267 marker,证明累计预算耗尽后不得重放 `load_stage`。 |
| 36 | +- validation DAG 更新为 manifest 95、fast 84、full 93、profile-deploy 60、package-release 72;新预算节点进入四条必需路线。 |
| 37 | +- 源码候选真实 Codex S15 已完成 Profile/Memory/catalog/commit/conditional-replan/load_stage/status,entry/execution/closeout 全部加载,runtime/adapter digest 匹配且 retirement anomaly 全为 0。 |
| 38 | + |
| 39 | +## 兼容性 |
| 40 | + |
| 41 | +- MCP `skill_route` 输入 oneOf 与现有五个操作保持兼容;新增账本、预算投影和 recovery 均为运行态内部或 additive 输出。 |
| 42 | +- 不新增第三方依赖、网络监听、后台服务或常驻 daemon。 |
| 43 | +- 已打开的旧版会话继续使用启动时代次;安装 v1.16.5 后需新建或重启会话,才能读取新宿主运行时。 |
| 44 | + |
| 45 | +## 发布说明 |
| 46 | + |
| 47 | +- npm 包名:`devcodex` |
| 48 | +- registry:`https://registry.npmjs.org/` |
| 49 | +- 发布分支:`main` |
| 50 | +- 发布路径:最终候选通过 R4/ECR、main CI 和无 probe authority 的标准/rebind S15 后创建 tag `v1.16.5`;tag workflow 发布 npm 包,确认 registry 可见后再创建 GitHub Release。 |
0 commit comments