Skip to content

Commit 2abcca4

Browse files
committed
fix: harden runtime integrity and skill routing
1 parent bc86a46 commit 2abcca4

91 files changed

Lines changed: 5993 additions & 852 deletions

File tree

Some content is hidden

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

‎.github/workflows/ci.yml‎

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,39 +10,45 @@ permissions:
1010
contents: read
1111

1212
jobs:
13-
core:
14-
name: Core (${{ matrix.os }}, Node ${{ matrix.node }})
13+
supported-control-plane:
14+
name: Control plane (${{ matrix.os }}, Node ${{ matrix.node }})
1515
runs-on: ${{ matrix.os }}
1616
strategy:
1717
fail-fast: false
1818
matrix:
1919
include:
2020
- os: ubuntu-latest
2121
node: 18.17.0
22-
- os: ubuntu-latest
23-
node: 20.x
22+
route: test:supported-runtime-control-plane
2423
- os: ubuntu-latest
2524
node: 22.x
25+
route: test:supported-runtime-control-plane
26+
- os: ubuntu-latest
27+
node: 26.x
28+
route: test:supported-runtime-control-plane
2629
- os: windows-latest
27-
node: 22.x
30+
node: 18.17.0
31+
route: test:windows-control-plane
32+
- os: windows-latest
33+
node: 24.17.0
34+
route: test:windows-control-plane
2835
steps:
2936
- uses: actions/checkout@v6
3037
- uses: actions/setup-node@v6
3138
with:
3239
node-version: ${{ matrix.node }}
3340
cache: npm
3441
- run: npm ci
35-
- run: npm run test:core
36-
- run: npm run test:checked-command
42+
- run: npm run ${{ matrix.route }}
3743

3844
full-quality:
39-
name: Full quality (Node 20.19)
45+
name: Full quality (Node 24.17)
4046
runs-on: ubuntu-latest
4147
steps:
4248
- uses: actions/checkout@v6
4349
- uses: actions/setup-node@v6
4450
with:
45-
node-version: 20.19.0
51+
node-version: 24.17.0
4652
cache: npm
4753
- run: npm ci
4854
- if: ${{ hashFiles('website/package-lock.json') != '' }}
@@ -52,13 +58,13 @@ jobs:
5258
- run: npm run test:audit
5359

5460
website-package:
55-
name: Package boundary (Node 22.14)
61+
name: Package boundary (Node 24.17)
5662
runs-on: ubuntu-latest
5763
steps:
5864
- uses: actions/checkout@v6
5965
- uses: actions/setup-node@v6
6066
with:
61-
node-version: 22.14.0
67+
node-version: 24.17.0
6268
cache: npm
6369
- run: npm ci
6470
- run: npm run release:dry-run:all

‎.github/workflows/publish.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
- name: Setup Node.js
2424
uses: actions/setup-node@v6
2525
with:
26-
node-version: 24
26+
node-version: 24.17.0
2727
registry-url: https://registry.npmjs.org
2828
package-manager-cache: false
2929

‎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.17.6.md`](./changelogs/releases/v1.17.6.md)
5-
> **最后更新**: 2026-08-14
6-
> **当前版本**: v1.17.6 修复非显式 SkillRoute 在无工具最终 Stop 可绕过 0/1 决策的问题;统一路由、CLI/MCP schema 与六宿主能力边界保持不变,版本发布权威以对应 Git tag、npm registry 与 GitHub Release 为准。
4+
> **最新版本详细变更文档**: [`changelogs/releases/v1.17.7.md`](./changelogs/releases/v1.17.7.md)
5+
> **最后更新**: 2026-08-15
6+
> **当前版本**: v1.17.7 收敛 ContextRead/SkillRoute 首轮绑定、首次分页、Memory/CP、全局配置事务、Readiness 与真实宿主证据边界;版本发布权威以对应 Git tag、npm registry 与 GitHub Release 为准。
77
88
---
99

1010
## 版本概览
1111

1212
| 版本 | 日期 | 变更摘要 | 详细 |
1313
|------|------|---------|------|
14+
| [v1.17.7](./changelogs/releases/v1.17.7.md) | 2026-08-15 | 🔧 **全局运行态一致性与首载闭环修复**:正文读取绑定持久计划并在源层有界;未解析目标、catalog sidecar、Memory 状态、配置 CAS/Readiness、命令/对象身份与 CLI/Desktop 证据分层完成跨消费者收敛 | [查看](./changelogs/releases/v1.17.7.md) |
1415
| [v1.17.6](./changelogs/releases/v1.17.6.md) | 2026-08-14 | 🔧 **SkillRoute 最终 Stop 完备性修复**:非显式未提交路由在最终回复前返回 exact catalog action,阻止自然语言 workspace Skill 被无工具回复静默跳过;统一路由与宿主能力边界保持不变 | [查看](./changelogs/releases/v1.17.6.md) |
1516
| [v1.17.5](./changelogs/releases/v1.17.5.md) | 2026-08-14 | 🔧 **发布包 npm scripts 闭包修复**:最终 tarball 仅公开 8 个安装态入口,从最终 manifest 验证脚本与运行依赖闭包,并以事务保证源码 manifest 原字节恢复 | [查看](./changelogs/releases/v1.17.5.md) |
1617
| [v1.17.4](./changelogs/releases/v1.17.4.md) | 2026-08-14 | 🧹 **工作区临时产物与六宿主卸载治理**:统一 `<workspace>/.tmp/devcodex/`、manifest/TTL/lease/backup 边界与 `tmp status/prune`;新增默认预览的跨六宿主安全卸载,强化所有权、reparse/TOCTOU、并发回滚与用户内容保留 | [查看](./changelogs/releases/v1.17.4.md) |

‎RULES.md‎

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

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

‎changelogs/releases/v1.17.7.md‎

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# v1.17.7
2+
3+
> 发布日期:2026-08-15
4+
> 类型:Patch / 全局运行态一致性与首次加载闭环
5+
6+
## 摘要
7+
8+
本版本关闭第二轮深审确认的 22 项问题,覆盖 ContextRead、Profile/Memory、首次 SkillRoute、catalog 首载、全局配置事务、Readiness、临时对象、命令传输、宿主证据与发布矩阵。实现保持在既有 owner 内,仅为多个真实消费者抽取有界文本读取、Memory 状态折叠、宿主命令、Readiness 与诊断作用域等小型共享模块。
9+
10+
## 主要修复
11+
12+
- Profile/Memory 正文读取必须匹配当前 active-root 的持久 `ContextReadPlanV2`;Profile section 和 Memory fallback 在源文件层分块读取,超限返回 partial/continuation,不再先全文载入。
13+
- 未解析项目目标会持久化 `SkillRoutePendingEnvelopeV1`;PreToolUse 与 Stop 共同阻止跳过 target resolution、catalog 与 commit。
14+
- `ProfileRouteLoadRecipeV2` 使用语义 selector 与 headroom;catalog served pages 与 ledger 双向完备,sidecar 主/备损坏和 malformed JSON 均失败关闭。
15+
- Memory fresh index 与 fallback 共用 append-only last-event-wins 折叠;CP artifact 先完成 task-root containment、regular-file、reparse/object identity 再验证摘要。
16+
- 全局配置解析异常不再覆盖用户内容;计划操作全量携带 CAS,rename-window 再验备份摘要;activation receipt、retained generation、status/doctor 与 `DevCodexReadinessV1` 使用同一事实投影。
17+
- Hook 使用绝对 Node executable 与 canonical argv 编码;Windows 字符串宿主拒绝不能安全表达的 `%`、`!` 和 shell 元字符;临时对象与 synthetic tool invocation 增加实例身份。
18+
- nested workspace namespace、Profile schema、Grok host scope 与最终 prompt carrier 使用同一 identity;重复、过大或不可读 carrier 不再静默跳过路由。
19+
- Codex CLI 探针显式清除 Desktop ambient marker;Desktop 证据必须来自当前 Desktop task 且匹配候选 runtime contract digest,CLI 结果不能替代。
20+
- `generate:control-content` 与 `check:control-content` 现在同步生成并校验 workflow root registry,版本头或公共指令变化不再遗留旧 source digest。
21+
- CI 增加 Linux/Windows 最低兼容控制面、Node 22 LTS、Node 24 LTS full/package/publish 与 Node 26 current compatibility。Node 20 已结束官方维护,不再承担完整发布质量路线。
22+
23+
## 防回归验证
24+
25+
- ContextRead/Profile/Memory/MCP、SkillRoute state/lifecycle/contracts/closure、hooks runtime。
26+
- 配置 parse/CAS/metadata/rollback、rename-window 竞态、activation/readiness、真实全局 install/remove。
27+
- nested project/prompt、Windows checked-command、temp object replacement、Copilot invocation collision、CP path traversal/reparse。
28+
- fresh/fallback parity、malformed sidecar、catalog backup recovery、CLI/Desktop entrySurface 与旧 runtime evidence mismatch。
29+
- source/full、coverage、audit、Profile、package-release、registry dry-run、exact tarball 隔离安装、自打包与六宿主回归。
30+
31+
## 兼容性与已知边界
32+
33+
- 这是向后兼容 patch;不新增网络服务、第三方运行时依赖或远程内容面。
34+
- MCP 正文读取从兼容性无绑定放行改为要求持久 ContextRead binding;纯 metadata/plan 入口保持可用。
35+
- Windows DACL 精确保真在缺少可证明平台回执时继续标为条件性 `UNVERIFIED/WARN`,不得由 mode fixture 冒充 PASS。
36+
- DCX2-013(Grok 自定义 rules 权威行为)与 DCX2-015(Profile 深层 merge 契约)仍是明确延期项,不在本版本中暗改。
37+
- 已打开的宿主任务不会热替换运行时;升级后请新建任务或重启宿主以加载新 generation。
38+
39+
## 升级
40+
41+
```bash
42+
npm install -g devcodex@1.17.7
43+
devcodex global-adapters apply
44+
```
45+
46+
## 发布拓扑
47+
48+
- npm 包名:`devcodex`
49+
- registry:`https://registry.npmjs.org/`
50+
- 发布分支:`main`
51+
- 目标 Tag:`v1.17.7`
52+
- 上一版本:`v1.17.6`
53+
- 关联修复:`.devcodex/devcodex/bugs/第二轮深审问题与全局运行态一致性修复/`

‎changelogs/unreleased.md‎

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

33
> **用途**: 记录尚未正式发版的实现级变更。
4-
> **当前**: v1.17.5 发布包 npm scripts 闭包修复已迁入 `changelogs/releases/v1.17.5.md`;v1.17.4 工作区临时产物与六宿主安全卸载见 `v1.17.4.md`,正式已发布事实以 Git tag、npm registry 与 GitHub Release 为准。
4+
> **当前**: v1.17.7 全局运行态一致性与首次加载闭环修复已冻结为发布候选;正式发布事实仍以 Git tag、npm registry 与 GitHub Release 为准。
55
66
## 当前未发布实现候选
77

8+
- **v1.17.7 全局运行态一致性与首次加载闭环修复候选**:22 项确认问题按 12 个根因域在原 owner 内收敛。Profile/Memory 正文读取必须绑定持久 ContextRead plan,section/fallback 在源层有界;未解析目标由 pending envelope 的 PreToolUse/Stop owner 强制;catalog recipe/ledger/sidecar 可恢复且 fail closed;Memory 使用 append-only last-event-wins;CP artifact、临时对象、Copilot 调用、nested project/prompt、Node 命令与宿主 entrySurface 均增加规范身份。全局配置增加解析失败关闭、全量 CAS、rename-window 复核、activation/readiness 同源;CI 覆盖最低兼容、Windows 控制面、Node 24 LTS full/package/publish 与 Node 26 current。三轮逃逸扫描和本地 full 95/95 已通过,正式 R4~R7 仍待发布链完成。完整说明见 `changelogs/releases/v1.17.7.md`。
89
- **v1.17.6 工作区 Skill 非显式 Stop 完备性修复已归档(VL-098 / PF-296 / GR-088)**:非显式 `PLAN_NOT_COMMITTED` 除既有 PreToolUse 外,在最终 Stop 也 fail closed,并复用 `NextActionEnvelopeV1` 返回精确首个 catalog 调用;普通聊天通过统一 catalog 后 `commit(null)` 完成 0/1 决策,Hook 不恢复关键词 auto-match 或新增 final-text classifier。重复 Stop 继续使用现有 3 次饱和与 notice fingerprint,PreCompact、ContextRead allowlist、retirement 与 must-reply 合同不变。完整说明见 `changelogs/releases/v1.17.6.md`;正式发布事实仍以 Git tag、npm registry 与 GitHub Release 为准。
910
- **v1.17.5 发布包 npm scripts 闭包修复已归档(PF-294 / GR-086)**:`PublishedPackageScriptsContractV1` 让源码保留完整维护脚本,同时把最终 tarball manifest 投影为 8 个 lifecycle / validate / global-adapters 入口;prepack/postpack 通过摘要收据事务原字节恢复源码 manifest。发布门禁从最终 manifest 建立 direct/nested/require/path.join/spawn 闭包,并执行真实 `pack → 隔离 HOME 安装 → installed validate → installed self-pack`;缺入口、缺依赖、source-only 泄漏、lifecycle 单边、恢复冲突或状态残留均失败关闭。完整说明见 `changelogs/releases/v1.17.5.md`,正式发布事实仍以 Git tag、npm registry 与 GitHub Release 为准。
1011
- **v1.17.4 工作区临时产物与六宿主安全卸载已归档(PI-241 / PF-290 / PI-242 / PF-291)**:统一 `<workspace>/.tmp/devcodex/`、受管 manifest/TTL/lease/backup 与 `tmp status/prune`;新增默认预览的 `devcodex uninstall` / `global-adapters remove`,以跨宿主单事务、路径与所有权 fail-closed、并发安全回滚和用户内容保留完成清理。完整候选见 `changelogs/releases/v1.17.4.md`;正式发布事实仍以 Git tag、npm registry 与 GitHub Release 为准。

‎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": "12749f1862d29224383e10e48a5c7abc3a09a37c2fa0ccb7d0a82a6ecda34df4",
3+
"sourceBundleDigest": "36d62dd1ff0bb610cdfe4c57004d1154b43c22c16000441e41e53c08d69dd134",
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.17.6
5+
version: 1.17.7
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.17.6
5+
version: 1.17.7
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.17.6
5+
version: 1.17.7
66
---
77
# Profile 加载与项目现实扩展
88

0 commit comments

Comments
 (0)