Skip to content

Commit e368823

Browse files
committed
fix: bound SkillRoute body budget and closeout
1 parent 26975e7 commit e368823

48 files changed

Lines changed: 1692 additions & 220 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎CHANGELOG.md‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
# 变更日志 (CHANGELOG)
22

33
> **说明**: 版本概览摘要;历史版本见对应详细变更文件。
4-
> **最新版本详细变更文档**: [`changelogs/releases/v1.16.4.md`](./changelogs/releases/v1.16.4.md)
5-
> **最后更新**: 2026-08-05
6-
> **当前未发布**: v1.16.4 已形成发布候选并归档到版本详情;后续未发布实现继续记录到 [`changelogs/unreleased.md`](./changelogs/unreleased.md)。
4+
> **最新版本详细变更文档**: [`changelogs/releases/v1.16.5.md`](./changelogs/releases/v1.16.5.md)
5+
> **最后更新**: 2026-08-09
6+
> **当前未发布**: v1.16.5 已形成发布候选并归档到版本详情;远端发布事实仍以 tag、npm registry 与最终回读为准,后续实现继续记录到 [`changelogs/unreleased.md`](./changelogs/unreleased.md)。
77
88
---
99

1010
## 版本概览
1111

1212
| 版本 | 日期 | 变更摘要 | 详细 |
1313
|------|------|---------|------|
14+
| [v1.16.5](./changelogs/releases/v1.16.5.md) | 2026-08-09 | 🔧 **SkillRoute 累计预算与有限退休修复**:持久化正文计费账本、全计划预算预留、原子计费和 cache 去重;预算不足时零写入、无 `nextCall` 有限退役;npm 包内完整路由验证与 Mermaid/DOMPurify/React Router 安全下限同步收敛 | [查看](./changelogs/releases/v1.16.5.md) |
1415
| [v1.16.4](./changelogs/releases/v1.16.4.md) | 2026-08-05 | 🔧 **审计缺陷收敛与上下文恢复修复**:修复 ProjectKnowledge 越界、SkillRoute/ContextRead 三次无进展循环、Memory 与 Profile 边界;增加 MCP/宿主有界 I/O、关键风险映射、验证 DAG 分层和安全审计证据闭环 | [查看](./changelogs/releases/v1.16.4.md) |
1516
| [v1.16.3](./changelogs/releases/v1.16.3.md) | 2026-08-04 | 🔧 **SkillRoute 无恢复循环与滚动升级修复**:不可执行旧路由自动退役并在下一轮重建;运行中会话与更新后新会话安全分流,ContextRead 仅迁移受支持的上一版本契约;Profile、memory、索引和治理台账同步加固 | [查看](./changelogs/releases/v1.16.3.md) |
1617
| [v1.16.2](./changelogs/releases/v1.16.2.md) | 2026-08-03 | 🔧 **ContextRead 回执耐久化与用户任务教程**:独立来源观察账本抵御 Hook/MCP 交错覆盖,修复空会话标识重放冲突;README 增加常见任务提示词与只读 CLI 帮助 | [查看](./changelogs/releases/v1.16.2.md) |

‎RULES.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# DevCodex v1.16.4 — 使用入口
1+
# DevCodex v1.16.5 — 使用入口
22

3-
> AI workflow injector for Copilot / Claude Code / Codex / Gemini / Grok · publisher: Rocky · version: 1.16.4
3+
> AI workflow injector for Copilot / Claude Code / Codex / Gemini / Grok · publisher: Rocky · version: 1.16.5
44
55
## 正式主支持客户端
66

‎changelogs/releases/v1.16.5.md‎

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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。

‎changelogs/unreleased.md‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
# 未发布变更(Unreleased)
22

33
> **用途**: 记录尚未正式发版的实现级变更。
4-
> **当前**: v1.16.4 已形成发布候选并归档到 `changelogs/releases/v1.16.4.md`;本文件仅保留历史锚点索引与镜像供 validate 探针消费。发版后新实现再写入下方「当前未发布」。
4+
> **当前**: v1.16.5 已形成发布候选并归档到 `changelogs/releases/v1.16.5.md`;本文件保留候选索引与历史镜像供 validate 探针消费,远端发布事实仍以 tag、npm registry 和最终回读为准。
55
66
## 当前未发布实现候选
77

8+
- **v1.16.5 发布候选已归档**:SkillRoute 累计正文预算循环修复已进入 `changelogs/releases/v1.16.5.md`。新增 `SkillRouteBodyChargeLedgerV1`、`SkillRouteBudgetProjectionV1` 与结构化预算 recovery;commit/rebind 全计划预留,load_stage 首次交付原子计费,跨 generation/cache reopen 去重;预算不足、预留不足或账本不一致时 fail closed、零写入并投影 `nextCall=null` 的有限退役终态。在线发布审计另将维护者本地站点 Mermaid、DOMPurify 与 React Router 安全下限分别提升至 10.9.8、3.4.13 与 7.18.2,移除旧 RSC 临时例外并恢复零 advisory;npm 包资格验证同步修复 SkillRoute 测试、intent/registry 生成器与 closure owner 的 source/package 布局闭环,隔离安装包内完整七段路由链已通过;最终 tarball production S15、远端 CI、tag/Release、npm publish 与 fresh-install R7 仍待发布阶段完成。
89
- **v1.16.4 发布候选已归档**:14 个审计与候选实机验证缺陷、8 项运行时/验证优化、截图所示 ContextRead/SkillRoute 三次无进展恢复修复,以及有界 MCP/宿主 I/O 与安全审计证据闭环已进入 `changelogs/releases/v1.16.4.md`;远端发布事实仍以 tag、npm registry 和最终回读为准。
910
- **v1.16.3 已归档**:Profile 目标解析、memory 会话写入绑定、SkillRoute 不可执行旧路由退役、ContextRead 上一版本兼容、宿主运行态滚动升级、索引证据和治理台账完整性修复已进入 `changelogs/releases/v1.16.3.md`。
1011
- **v1.16.2 已归档**:ContextRead 来源回执耐久化、空会话标识重放修复、README 常见任务教程与 CLI 只读帮助已进入 `changelogs/releases/v1.16.2.md`。
@@ -61,7 +62,7 @@
6162
- **R1a 复审收口**:`host-parity-scorecard` repairSteps / recommendedEntry / userVisibleSummary 接入 `describeGlobalAdapterRefresh*`(源码 → `global-adapters apply`,已发布 → `npm -g`);`global-adapters apply` 在主机事务已提交但 Grok 集成失败时返回 `GLOBAL_ADAPTERS_HOSTS_COMMITTED_GROK_FAILED` + `partialState`;npm pack `files` 不再包含 `test-global-adapters-cli.js`。
6263
- **MCP runtime dep 防断**:将 `global-adapter-refresh-guidance.js` 纳入 `MCP_RUNTIME_DEPS` / `CLAUDE_MCP_RUNTIME_SCRIPT_DEPS`;`host-parity-scorecard` 对 guidance 模块 soft-require,避免精简 runtime 缺文件时 `MODULE_NOT_FOUND`。
6364
- **Dialogue-Primary Closeout B1+B2**:新增 `classifyDialogueNarrativeSample` / `hasReadableNarrativeSnippet`;`classifyAnalysisArtifactDeliverySample` 返回 `link-only-thin`;`lifecycle-visible-reply` Stop/PreCompact 有正文时写入 `dialogueNarrativeStatus`/`analysisDeliveryStatus` 并在 dev+reportTouched 时 reminder;无正文仍 unverified。同步 Skill/13-analyze/16-report/prompt/V102/单测。需求:`完成态对话内可读收口` CP2。
64-
- **文档站依赖审计加固**:Rspress 提升到 2.0.18,`brace-expansion` 提升到 5.0.8;`test:audit` 改为 fail-closed 结构化审计。当前唯一例外为仅影响 unstable RSC 的 `GHSA-qwww-vcr4-c8h2`,本站静态运行面禁止 RSC 标记,例外于 2026-08-15 到期;任何新 advisory、依赖链变化、RSC 使用或到期都会重新阻断。
65+
- **文档站依赖审计加固**:Rspress 提升到 2.0.18,`brace-expansion` 提升到 5.0.9;`test:audit` 改为 fail-closed 结构化审计。v1.16.5 进一步将 React Router、DOMPurify 与 Mermaid 锁定到已修复版本,原 unstable RSC 临时例外已取消;任何新 advisory、依赖链变化或安全下限回退都会重新阻断。
6566
- **Grok 兼容导入去重**:Grok 原生会话兼容加载 `~/.claude/settings.json` 时,DevCodex Claude adapter 识别 Grok 的 camelCase payload 与 snake_case 事件并安全跳过重复 lifecycle;Grok 专用 plugin 保持唯一生命周期 owner,消除 `user_prompt_submit` / `stop` hook 报错和双重状态写入。
6667
- **五宿主全局 adapter 运行态修复**:`status`/`doctor` 从 receipt/files 假就绪升级为 `configured/adapterReady/contractStatus/nativeStatus/operationalState/ready/issues` 分层;五个可执行 adapter 均增加有界契约探针,只有原生 CLI 深探针通过才可标记 operational ready。doctor 增加原生版本与 Grok list/inspect、installed Hook contract、MCP initialize。Grok plugin source 改为用户级 runtime + cwd workspace 发现,同名受管 identity 经官方 CLI drain-all 后收敛到唯一 canonical;未知来源 mutation 前阻断,首次安装与多 identity 失败均保留/恢复原注册状态,受管恢复来源可继续收敛。Copilot CLI 按官方用户级目录部署 instructions、Hooks、MCP 与 Skills;Copilot IDE 仍保持独立 instruction-fallback ceiling。
6768
- **全局 adapter 终审防假绿**:stale managed 文件清理失败会写入 receipt 的 `pendingStaleManagedPaths` 并由后续全局升级重试,不能因首轮事务已提交而丢失;Copilot CLI 的 PascalCase Hook 输入与原生输出合同已接入共享 lifecycle,`PreToolUse` 与 `Stop` 的阻断能力按宿主事件分别声明。

‎content/duplication-inventory.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"schemaVersion": "ControlContentDuplicationInventoryV1",
3-
"sourceBundleDigest": "89392aa90356d8f75c56d9cbf38117da6457231764f98caea0934b75abd6899a",
3+
"sourceBundleDigest": "9611cdedd2ce5568b4556666c77fa60ff9724ec0cf0cb3679251d0b544d30f70",
44
"thresholds": {
55
"minParagraphChars": 100,
66
"sectionThreshold": 0.94,

‎content/instructions/00-safety.instructions.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
applyTo: "**"
33
description: 安全底线与输出语言规则,定义 S01~S07、违规处理与不可豁免边界
44
priority: P2
5-
version: 1.16.4
5+
version: 1.16.5
66
---
77
# 安全底线规范(S01~S07)
88

‎content/instructions/01-common.instructions.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
applyTo: "**"
33
description: 通用规范总则,覆盖优先级、意图路由、Profile/active-root、宿主适配与治理总线
44
priority: P5
5-
version: 1.16.4
5+
version: 1.16.5
66
---
77
# 通用规范
88

‎content/instructions/01a-profile-loading.instructions.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
applyTo: "**"
33
description: 意图驱动的 Profile 加载、active-root 路径、目标项目识别与项目现实扩展规范
44
priority: P5
5-
version: 1.16.4
5+
version: 1.16.5
66
---
77
# Profile 加载与项目现实扩展
88

‎content/instructions/01b-record-router.instructions.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
applyTo: "**"
33
description: 任务切换边界、RecordRouter 分流、Improvement Intake 与提交发布边界的通用规范
44
priority: P5
5-
version: 1.16.4
5+
version: 1.16.5
66
---
77
# 任务边界与 RecordRouter
88

‎content/instructions/01c-intent-expansion.instructions.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
applyTo: "**"
33
description: 意图识别、Intent Expansion Card、上下文重建与可见回复证据的通用规范
44
priority: P5
5-
version: 1.16.4
5+
version: 1.16.5
66
---
77
# 意图扩展与上下文重建
88

0 commit comments

Comments
 (0)