Skip to content

Commit 5951ae9

Browse files
committed
fix: make skill route rebind resumable
1 parent e396971 commit 5951ae9

30 files changed

Lines changed: 446 additions & 155 deletions

‎CHANGELOG.md‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22

33
> **说明**: 版本概览摘要。最新版本的详细变更见下方表格首行的 `changelogs/releases/vX.Y.Z.md` 链接;历史版本见对应详细变更文件
44
> **最后更新**: 2026-08-03
5-
> **当前未发布**: v1.15.8 已归档;后续未发布实现继续记录到 [`changelogs/unreleased.md`](./changelogs/unreleased.md)。
5+
> **当前未发布**: v1.15.9 已归档;后续未发布实现继续记录到 [`changelogs/unreleased.md`](./changelogs/unreleased.md)。
66
77
---
88

99
## 版本概览
1010

1111
| 版本 | 日期 | 变更摘要 | 详细 |
1212
|------|------|---------|------|
13+
| [v1.15.9](./changelogs/releases/v1.15.9.md) | 2026-08-03 | 🔧 **SkillRoute 部分阶段 rebind 恢复防死锁**:相同语义的 ContextRead 刷新可安全迁移未完成阶段进度并重新签发新 plan cursor;rebind、status 与 Stop 返回同一可执行续页调用,语义或依赖漂移仍 fail closed | [查看](./changelogs/releases/v1.15.9.md) |
1314
| [v1.15.8](./changelogs/releases/v1.15.8.md) | 2026-08-03 | 🔧 **新电脑 Profile 初始化与 MCP source observation 防复发**:MCP 直接调用会从 workspace-namespace activeRoot 推断项目 hook state,避免已读 Profile/memory 后 `skill_route commit` 仍 `CONTEXT_BINDING_PENDING`;Profile README 缺失与 `status` 输出给出完整 `profile plan/init` 命令 | [查看](./changelogs/releases/v1.15.8.md) |
1415
| [v1.15.7](./changelogs/releases/v1.15.7.md) | 2026-07-31 | 🔧 **SkillRoute MCP schema + closeout/rebind 防复发**:`skill_route` schema 改为 per-op `oneOf`,禁止 `catalog/load_stage/status` 接收 `contextBinding`;`CONTEXT_BINDING_PENDING/STALE` 返回结构化恢复建议,Stop closeout 阻断给出可执行 `load_stage` 调用 | [查看](./changelogs/releases/v1.15.7.md) |
1516
| [v1.15.6](./changelogs/releases/v1.15.6.md) | 2026-07-31 | 🔧 **README 目录导航 + SkillRoute stale receipt 防复发**:README 增加用户章节目录导航并纳入公共 README 契约;修复 MCP source observation 遇到 stale receipt 时复用旧 receipt 导致 `skill_route commit` 继续 pending 的复发路径 | [查看](./changelogs/releases/v1.15.6.md) |
@@ -132,9 +133,9 @@
132133

133134
## 相关文档
134135

135-
- [`changelogs/releases/v1.15.8.md`](./changelogs/releases/v1.15.8.md) — 最新版本详细变更文档
136-
- [`changelogs/releases/v1.15.7.md`](./changelogs/releases/v1.15.7.md) — 上一版本详细变更文档
137-
- [`changelogs/releases/v1.15.6.md`](./changelogs/releases/v1.15.6.md) — 历史版本详细变更文档
136+
- [`changelogs/releases/v1.15.9.md`](./changelogs/releases/v1.15.9.md) — 最新版本详细变更文档
137+
- [`changelogs/releases/v1.15.8.md`](./changelogs/releases/v1.15.8.md) — 上一版本详细变更文档
138+
- [`changelogs/releases/v1.15.7.md`](./changelogs/releases/v1.15.7.md) — 历史版本详细变更文档
138139
- [`changelogs/releases/v1.15.0.md`](./changelogs/releases/v1.15.0.md) — 上一版本详细变更文档
139140
- [`changelogs/releases/v1.14.0.md`](./changelogs/releases/v1.14.0.md) — 历史版本详细变更文档
140141
- [`changelogs/releases/v1.11.21.md`](./changelogs/releases/v1.11.21.md) — 历史版本详细变更文档

‎RULES.md‎

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

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

‎changelogs/releases/v1.15.9.md‎

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# v1.15.9
2+
3+
> 发布日期:2026-08-03
4+
> 类型:Patch
5+
6+
## 摘要
7+
8+
本版本修复 SkillRoute 在阶段只加载部分页面后刷新 ContextRead 时的恢复死锁:旧绑定无法继续加载,而 `rebind` 又以 `LATE_REPLAN_STAGE_INCOMPLETE` 拒绝未完成阶段。现在,相同语义且阶段内容、依赖完全一致的 rebind 会原子迁移已观察页面前缀,并为新 plan 重新签发续页 cursor;真正的语义、内容或依赖漂移仍然 fail closed。
9+
10+
## 主要变更
11+
12+
- `rebind` 对兼容的 `loading` 与 `loaded` 阶段统一执行内容身份和依赖签名校验,不再无条件拒绝所有未完成阶段。
13+
- `SkillRouteRebindReceiptV1` 新增 additive `nextAction`,直接返回新 generation/planDigest 下可执行的 `load_stage` 调用。
14+
- `status` 与 Progressive SkillRoute Stop 对部分阶段返回同一重新签名 cursor,避免恢复后再次进入 `STAGE_CURSOR_OUT_OF_SEQUENCE`。
15+
- 保留安全边界:阶段内容或依赖变化继续返回 `LATE_REPLAN_LOADED_EVICTION`;非法进度前缀继续返回 `LATE_REPLAN_STAGE_INCOMPLETE`;真实 ContextRead 语义变化继续返回 `REBIND_SEMANTIC_DRIFT`。
16+
- 新增真实状态机回归:部分控制面阶段 → receipt stale → fresh ContextRead → rebind → status/Stop 一致续页 → closeout 完成;同时覆盖重复 rebind 幂等和依赖漂移拒绝。
17+
18+
## 验证
19+
20+
- `node scripts/test-skill-route-contracts.js`
21+
- `node scripts/test-skill-route-state.js`
22+
- `node scripts/test-skill-route-lifecycle.js`
23+
- `node scripts/test-mcp-servers.js`
24+
- `npm run test:host-parity`
25+
- `npm run test:full`
26+
- npm tarball 隔离安装与真实 Codex MCP 恢复回放
27+
28+
## 发布说明
29+
30+
- npm 包名:`devcodex`
31+
- registry:`https://registry.npmjs.org/`
32+
- 发布分支:`main`
33+
- 发布路径:tag `v1.15.9` 触发 GitHub Actions `Publish to npm`

‎changelogs/unreleased.md‎

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

33
> **用途**: 记录尚未正式发版的实现级变更。
4-
> **当前**: v1.15.8 已归档到 `changelogs/releases/v1.15.8.md`;本文件仅保留历史锚点索引与镜像供 validate 探针消费。发版后新实现再写入下方「当前未发布」。
4+
> **当前**: v1.15.9 已归档到 `changelogs/releases/v1.15.9.md`;本文件仅保留历史锚点索引与镜像供 validate 探针消费。发版后新实现再写入下方「当前未发布」。
55
66
## 当前未发布实现候选
7+
- **v1.15.9 已归档**:SkillRoute 相同语义 rebind 现在可迁移未完成阶段前缀、重新签发新 plan cursor,并让 rebind/status/Stop 返回一致且可执行的恢复调用;语义、阶段内容或依赖漂移仍 fail closed。
78
- **v1.15.8 已归档**:新电脑 Profile 初始化提示、MCP source observation workspace-namespace 推断与 `skill_route commit` pending 防复发已进入 `changelogs/releases/v1.15.8.md`。
89
- **README 首次信任与 workspace 初始化说明 + status 初始化误报修复**:公共 README 补充 `devcodex init`、多项目 workspace `.devcodex/layout.json` 基线、首次宿主 trust/allow 提示、工作区 Skill 路径、Profile missing 不是安装失败以及可选 `profile plan/init`;`devcodex status` 改为基于 workspace layout/runtime 证据判断 `.devcodex` 是否 ready,避免 fresh workspace 已初始化后仍提示 “Workspace runtime not initialized”;CLI 行为测试增加防复发断言。
910
- **v1.15.7 已归档**:SkillRoute MCP schema 与 closeout/rebind 防复发已进入 `changelogs/releases/v1.15.7.md`。

‎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": "a1b133b7d7ae0fd88e77c15fbd4e5b7ad83cfad7621c8c9abd5421b3cb512916",
3+
"sourceBundleDigest": "9094ea7de082ab1bb999727d88c3c12b2f4fbc680e3729070d64f55e96b2b66b",
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.15.8
5+
version: 1.15.9
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.15.8
5+
version: 1.15.9
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.15.8
5+
version: 1.15.9
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.15.8
5+
version: 1.15.9
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.15.8
5+
version: 1.15.9
66
---
77
# 意图扩展与上下文重建
88

0 commit comments

Comments
 (0)