Skip to content

Commit 4068c00

Browse files
committed
fix: restore finalized formal tasks across sessions
1 parent e7eed48 commit 4068c00

40 files changed

Lines changed: 2730 additions & 167 deletions

‎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.19.4.md`](./changelogs/releases/v1.19.4.md)
5-
> **最后更新**: 2026-08-29
6-
> **当前版本**: v1.19.4 汇总发布自适应流程与入口增强、显式空目录 Profile 目标、按影响选择 CI、发布与 finalize 解耦,并修复 Codex Desktop 中 awaiting-owner admission 无法由可信新会话接管的 P0 死锁。版本发布权威以对应 Git tag、npm registry 与 GitHub Release 为准。
4+
> **最新版本详细变更文档**: [`changelogs/releases/v1.19.5.md`](./changelogs/releases/v1.19.5.md)
5+
> **最后更新**: 2026-08-30
6+
> **当前版本**: v1.19.5 修复正式任务在 finalized admission、过期/释放 owner 与 fresh resume 组合下无法恢复的 P0 死锁,并补齐 Stop/reacquire、单赢家 CAS、候选容量与滚动升级边界。版本发布权威以对应 Git tag、npm registry 与 GitHub Release 为准。
77
88
---
99

1010
## 版本概览
1111

1212
| 版本 | 日期 | 变更摘要 | 详细 |
1313
|------|------|---------|------|
14+
| [v1.19.5](./changelogs/releases/v1.19.5.md) | 2026-08-30 | 🚑 **正式任务连续性恢复**:finalized + expired/released owner 可由 fresh resume 原子换代;任务永久、owner 短租约;accepted Stop 停放、同会话重取、跨会话单赢家接管;旧 owner/nonce、活跃 turn/operation、漂移与终态继续失败关闭 | [查看](./changelogs/releases/v1.19.5.md) |
1415
| [v1.19.4](./changelogs/releases/v1.19.4.md) | 2026-08-29 | 🚑 **自适应流程与跨会话 owner 恢复**:PC0~PC10 与流程/方案/验证四轴决策落地;显式 `init --profile` 接受现存空目录;CI 按影响范围执行;publish/finalize 可恢复;awaiting-owner admission 可在严格身份与真相回读边界内安全换代接管 | [查看](./changelogs/releases/v1.19.4.md) |
1516
| [v1.19.3](./changelogs/releases/v1.19.3.md) | 2026-08-28 | 🚑 **确认持久化与任务 owner P0 修复**:有界恢复 taskless instruction/work-item/route/plan/project 绑定;超限降级为无 authority identity-only;CP writer 的安全链接投影可被 owner 精确复核,并提供 30 秒内专项快测 | [查看](./changelogs/releases/v1.19.3.md) |
1617
| [v1.19.2](./changelogs/releases/v1.19.2.md) | 2026-08-27 | 🔧 **宿主权限与文件交付修复**:DevCodex 对所有操作权限事件保持中立,不再产生 allow/deny/ask/block;文件入口按 hostSurface 与 presentationSurface 选择原生打开、IDE CLI 或绝对路径 fallback | [查看](./changelogs/releases/v1.19.2.md) |

‎README.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,10 @@ flowchart LR
237237

238238
恢复后仍然遵守原来的边界:原任务只读,续接后仍然只读;原任务没有 `push` 或发布权限,换会话后也不会自动获得。
239239

240+
正式任务本身不会因为等待、关机、断网、宿主退出或版本升级而过期。会短期过期的是 fenced owner——它只是防止两个会话同时写同一任务的写入租约,默认空闲租期为 5 分钟;租约过期或 accepted Stop 主动释放后,任务身份、概况、CP 确认、报告、记忆与检查点仍保留。新会话可发送 `继续 <准确任务名>`,DevCodex 会在服务端重新核对项目根、TaskIdentityV2、概况、CP 摘要、旧 turn/operation 状态并执行单赢家 CAS,成功后同时生成新的 admission generation 与 owner generation,无需重写任务或重复确认同一 CP。
241+
242+
如果旧 owner 仍有效、旧工具操作尚未收口、任务真相发生漂移、任务已经终态,或另一个会话先完成接管,恢复会失败关闭并返回可执行的 typed next step(等待租约、完成/对账旧操作、修复漂移、显式 reopen,或读取赢家),不会把“拒绝接管”误报成“任务已丢失”。
243+
240244
这带来几个实际结果:
241245

242246
- 不需要重新粘贴几十轮旧对话;

‎RULES.md‎

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

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

‎changelogs/releases/v1.19.5.md‎

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# DevCodex v1.19.5
2+
3+
> 发布日期:2026-08-30
4+
5+
v1.19.5 是正式任务状态连续性的 P0 补丁。它关闭 v1.19.4 尚未覆盖的真实象限:任务已有 `TaskIdentityV2` 与已确认 CP,admission 已 `finalized`,旧 fenced owner 已过期或被安全释放,而 fresh resume 因旧幂等绑定无法取得新的 admission/owner,导致任务永久卡住。
6+
7+
## 关键修复
8+
9+
- **finalized fresh resume 原子恢复**:`memory_task_admit_v2(bind|adopt + continue)` 接受 fresh selected resume ingress 或等价 `ContextReadBindingV1`,服务端生成 authority=false 的有界候选,并在一次 TaskRecoveryStoreV5 CAS 中同时创建 `admissionGeneration+1` 与 `ownerGeneration+1`。
10+
- **任务状态与写入租约分离**:任务身份、概况、CP、报告、记忆和检查点不设 owner TTL;fenced owner 的默认空闲租期缩短为 5 分钟。租约过期只撤销旧写入权,不删除或终结任务。
11+
- **Stop/PreCompact 生命周期收口**:hard-blocked Stop 不再错误标记 turn terminal 或释放 owner;accepted Stop 在无 in-flight operation 时立即停放 owner;PreCompact 只 checkpoint/按需续租;同会话下一次精确继续可用新 fence 自动重取。
12+
- **单赢家与响应丢失幂等**:两个 fresh session 并发接管时只有一个 V5 CAS 成功;同一 attempt 在响应丢失后重放会回读同一 admission、owner 和 ingress,不会创建第二 owner。
13+
- **公共失败出口**:owner 未过期、旧 turn/operation 仍 live、side effect unknown、TaskIdentity/overview/CP/project/runtime 漂移、终态任务与 CAS loser 均 typed fail closed,并返回等待、对账、修复、reopen 或读取赢家的下一步。
14+
- **候选缓存治理**:resume ingress candidate 使用单目录 writer lock、10 分钟 TTL、精确过期清理、单文件 512 KiB 与 128 个活跃候选上限;超限或锁竞争返回 typed capacity/lock 错误。
15+
- **状态语义修复**:admission `phase/status=finalized` 不再污染 `TaskRecoveryBindingV1.status`;所有非终态 fenced owner 对应业务任务状态均为 `active`,避免重开或续接选择错误 V5 分区。
16+
17+
## 兼容性与安全边界
18+
19+
- 这是向后兼容 patch;没有新增第三方依赖、数据库迁移、端口或常驻服务。
20+
- v1.19.4 写出的、尚无 resume capability 字段的 V5 状态仍可读取;旧 generation/owner nonce 不能获得新权限。
21+
- 恢复不会重写 TaskIdentity、canonical overview 或 CP artifact。只有 canonical 回读一致、旧 turn/operation 已安全结束且新 owner active 时才返回 `mutationAuthority=true`。
22+
- terminal task 仍必须显式 reopen;当前 owner 尚有效或旧副作用未知时不会用“提高可用性”为理由放宽 fencing。
23+
24+
## 验证重点
25+
26+
- finalized × owner 状态 × turn/operation/liveness × fresh session 的交叉矩阵;双 session 单赢家与 response-loss replay。
27+
- normal hook ingress 与 ContextRead fallback;返回 ingress 的 owner renew 和下一次 mutation preflight。
28+
- accepted/hard-blocked Stop、PreCompact、同会话 reacquire、终态 reopen 与任务/admission 状态分离。
29+
- candidate authority=false、锁/TTL/容量、v1.19.4 reader、旧 nonce/generation 拒绝与 runtime rolling upgrade。
30+
- affected、最终 full/package-release、exact-head required CI、npm provenance、GitHub Release 与本机全局安装回读。
31+
32+
## 恢复现有任务
33+
34+
升级并刷新宿主 adapter 后,在目标项目中新建会话并发送 `继续 <准确任务名>`。成功回执应显示新的 admission/owner generation、active owner 与标准 ingress;不需要重复确认已持久化且未漂移的 CP。若返回 typed block,按回执给出的等待、对账、修复或 reopen 步骤处理,不要复用旧 owner/nonce。

‎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.19.4 已进入发布候选资格链;本轮全部待发布变更已归档到 `changelogs/releases/v1.19.4.md`,正式发布事实只在 tag、registry、GitHub Release 与本机 R7 证据实际形成后成立。
4+
> **当前**: v1.19.5 已进入补丁发布候选资格链;本轮正式任务连续性修复已归档到 `changelogs/releases/v1.19.5.md`,正式发布事实只在 tag、registry、GitHub Release 与本机 R7 证据实际形成后成立。
55
66
## 当前未发布实现候选
77

8+
- **v1.19.5 补丁候选 — finalized 正式任务连续性恢复**:`memory_task_admit_v2` 支持 fresh selected resume 对 finalized admission 与过期/释放 owner 做服务端单赢家 CAS,同时换代 admission/owner;accepted Stop 停放、PreCompact 续租、同会话重取、候选锁/TTL/容量、v1.19.4 reader 与旧 nonce 拒绝均进入回归。完整说明见 [`changelogs/releases/v1.19.5.md`](./releases/v1.19.5.md)。
89
- **v1.19.4 归档候选 — 自适应流程与跨会话 owner 恢复**:汇总发布 `WorkflowPlanDecisionV1` / PC0~PC10、显式现存目录 `init --profile` 直通、按影响范围选择 GitHub CI、不可逆 publish 与可恢复 finalize 分离,并增加 `TaskAdmissionRecoveryV1/awaiting-owner-rebind`,让 CP 已持久化但 owner 尚未建立的孤儿事务在稳定任务身份、canonical truth 回读、无有效 continuation lease 且无 fenced owner 时安全换代。完整说明见 [`changelogs/releases/v1.19.4.md`](./releases/v1.19.4.md)。
910
- **治理台账 resolver、immutable 分片与 GR 试点**:新增 `GovernanceLedgerManifestV1`、共享 resolver、锁内单调 `nextSequence`、可重建 `GovernanceLedgerIndexV1` 与 `governance ledger init|plan|apply|rollback|index`。普通 `init/update` 只做零搬迁 manifest/index 初始化;active 是唯一 writer,archive 只读,reopened 通过 manifest overlay 表达。真实 active-root 的最终 GR 试点把 39 个自包含终态 H2 移入摘要绑定 shard,canonical 记录总数迁移前后均为 990;混合容器 GR-068 被负向探针排除。两次早期异常均由事务恢复或 exact rollback 收敛,未引用 immutable shard按审计策略保留。
1011
- **P1 产物打开 action/readback 闭环**:`ArtifactDeliveryResolver` 现在以 `presentationSurface + capability evidence` 为 renderer 主决策键,`hostSurface` 只验证 adapter 匹配;Codex Desktop 从无动作的“使用文件面板打开”文字改为真实本地文件 Markdown action。每个可见目标新增 `ArtifactDeliveryAttemptV1`,逐项记录 actionId、attempted、actionStatus、readback、status 与 fallbackReason;仅 action 与 readback 均成功才声明 opened,renderer-only、失败、不可回读或未知 surface 立即降级为绝对路径。报告/记忆相对内链仍由 `LinkCapabilityDecisionV1` 独立维护,不能冒充最终对话打开证据。

‎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": "b78d4a3755dd5d6c73c246406ce3c8b5edd396bbfbaf4b60a86f759ed52a0424",
3+
"sourceBundleDigest": "e8315986b381e45d034931d80e9a63248319d6d64c0f11e759a1b821fe93fe45",
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.19.4
5+
version: 1.19.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.19.4
5+
version: 1.19.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.19.4
5+
version: 1.19.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.19.4
5+
version: 1.19.5
66
---
77
# 任务边界与 RecordRouter
88

0 commit comments

Comments
 (0)