Skip to content

Commit 8b59a2d

Browse files
committed
fix: harden task continuity and artifact templates
1 parent b536139 commit 8b59a2d

58 files changed

Lines changed: 4408 additions & 469 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.

‎changelogs/unreleased.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
66
## 当前未发布实现候选
77

8+
- **正式任务连续性、人类主阅读与模板资格 Stage A**:正式任务写入增加 state-sequence/writer-generation 双栅栏、精确 `TaskOperation` 与 terminal CAS;legacy no-owner 可在稳定身份下单次 claim,TTL 不再产生或转移写权。`LanguageContextV2` 进入热/冷/临时/超大恢复投影,中性“确认”不再让中文任务漂移到英文;用户主响应只显示本地化的人话结论,audit 保留结构化证据。正式 CP/计划/进度/报告/任务记忆/SUMMARY 通过 `ArtifactSlotRegistryV2` 绑定真实 Prompt,写后稳定读回并校验必需结构与顺序,允许 additive extension;missing/wrong/stale template、wrong slot、no-readback 与 validator 删除均失败关闭。Stage B 内部语义迁移、`.devcodex` 实际删除、tag/publish/deploy 不在本候选内。
89
- **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)。
910
- **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)。
1011
- **治理台账 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按审计策略保留。

‎content/README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
## 目录
66

7-
- `instructions.md`、`instructions/`、`prompts/`、`skills/*/SKILL.md`:135 个可物化 source entry。
7+
- `instructions.md`、`instructions/`、`prompts/`、`skills/*/SKILL.md`:136 个可物化 source entry。
88
- `shared/`:至少有两个真实消费者的单层 include 片段。
99
- `manifest.json`:source、delivery、companion 和 compatibility mirror 合同。
1010
- `duplication-inventory.json`、`duplication-dispositions.json`:重复候选与人工处置。

‎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": "e8315986b381e45d034931d80e9a63248319d6d64c0f11e759a1b821fe93fe45",
3+
"sourceBundleDigest": "cbf837692008a55d9d70b7a7b577bb12eaf939eeb4edde78808046295c24ebd3",
44
"thresholds": {
55
"minParagraphChars": 100,
66
"sectionThreshold": 0.94,

‎content/instructions.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -426,8 +426,8 @@ CP1(需求确认)→ CP2(方案确认)→ [plan-review] → CP3(实施
426426
- **CP3**:条件触发。default/refactor/database/optimization/scenario-test 必须执行;docs/init/plan-review 按子类型规则豁免,并记录 `CP3: N/A(<子类型> 子类型豁免)`。实施计划必须消费 `WorkflowPlanDecisionV1` 三个独立轴和强制义务,不得用其中一个轴替代另两个轴。
427427
- **WorkflowPlanDecisionV1**:入口先根据用户当前消息与 `extensions.devcodex.workflowRouting` 形成 precheck 初判,完成唯一项目和有界项目事实读取后形成 post-context 二次判断;只有真实范围扩张才形成 scope-expansion 第三次判断。优先级固定为“用户当前任务明确意图 > Profile 配置 > 智能识别 > 回退”。配置只为流程仪式提供默认值;公共契约、状态连续性、迁移、安全、package、发布和外部副作用等 `mandatoryObligations` 独立执行,任何 simple/minimal/targeted 选择都不能省略。旧 `ImplementationComplexityLevel` / `ImplementationComplexityPreference` 仅允许读取兼容并映射到 `designDepth`,禁止新生产者继续写入,也不得影响 `ceremonyTier` 或 `assuranceLevel`。
428428
- **SimpleTaskFastPath**:非常明确且仅涉及同一 module/artifact boundary 内最多 2 个 exact 低风险源码或叙述型文档路径时,必须先通过 `memory_task_fast_path_lease` 取得 server-owned `SimpleTaskFastPathLeaseV1`,才可不创建完整需求/bug 目录并改用内联 CP 摘要。租约最多消费 2 次且只允许 create-or-update;正式产物、公共 API/Schema/配置/控制面/安全/依赖/发布/台账、跨模块或第 3 个路径必须在 mutation 前撤销轻路径并完成正式准入。`ceremonyTier=simple` 只表达用户可见流程仪式,不能自行签发 FastPath mutation authority。PC0~PC10、Profile、报告、记忆、安全底线、必要验证和 ECR 不可省略。
429-
- **FormalTaskAdmission / Mutation**:CP confirmation 本身不等于工作流 mutation authority。`memory_task_admit_v2` 默认原子执行 `admit/adopt/bind → owner acquire → finalize`,不可变 ingress snapshot 负责跨 PostToolUse/只读工具/进程重启续接;分步兼容路径只能使用一次性 `AdmissionContinuationLeaseV1`。正式 mutation 仍必须同时具备 finalized admission、当前 exact CP 与 active `FencedTaskWriteOwnerLeaseV2`,并按 `MutationFootprintV2 → ArtifactSlotDecisionV2 → TaskOwnedMutationLeaseV2 → TaskRecoveryStoreV5 prewrite → MutationObservationReceiptV1` 单次闭环;0-target、unknown、partial、越界或 required effect 未发生都进入 `needs-reconcile`。实际工具操作权限仍由宿主决定。`needs-reconcile` 不是永久终态:准入事务对同一请求精确 readback 最大完整阶段前缀并自动补齐阶段内缺失文件;artifact closeout 只能由 `memory_artifact_mutation_reconcile_v1` 绑定当前 ingress、formal route、operation、closeout CAS 与实际文件系统快照收口。partial/零效果必须消费 V5 prewrite 保存的完整 pre-observation 重观察;reserve 还须匹配 operation/decision/lease/footprint,整个恢复过程不签发 mutation authority。
430-
- **TaskRecoveryStoreV5**:正式 task 数量无计数硬上限;每个 task 使用稳定 hot A/B,语义不变返回 `semantic-noop`,普通 Hook/工具/租约状态变化不得新建 UUID generation。可重建且 checkpoint 安全时才 coldify 为有界 resume stub;terminal 四类独立证据经 `memory_task_terminal_v1` closeout 后立即解绑 route/owner,Stop/PreCompact 仅 checkpoint,显式 reopen 才获得新 owner generation。容量采用 256 MiB soft、512 MiB hard 与 8 MiB terminal/abort/reconcile reserve;压力回收只针对可重建 runtime cache,不得删除正式任务文档、identity 或用户产物,legacy generations 默认只读且不自动删除。任何 durable fail-closed 状态必须同时提供 exact、CAS-bound、server-owned 恢复路径;reserve 恢复仅可接管主状态中同一 in-flight operation,禁止覆盖已推进状态。
429+
- **FormalTaskAdmission / Mutation**:CP confirmation 本身不等于工作流 mutation authority。`memory_task_admit_v2` 默认原子执行 `admit/adopt/bind → owner acquire → finalize`,不可变 ingress snapshot 负责跨 PostToolUse/只读工具/进程重启续接;分步兼容路径只能使用一次性 `AdmissionContinuationLeaseV1`。每次 owner claim/transition 必须从 V5 readback 返回 `CanonicalTaskWriteContextV1`(task/root、lifecycle revision、state sequence、writer generation、holder session、operation/settled set、runtime generation 与 context digest),正式 writer 只能消费这份当前上下文。正式 mutation 仍必须同时具备 finalized admission、当前 exact CP 与 active `FencedTaskWriteOwnerLeaseV2`,并按 `MutationFootprintV2 → ArtifactSlotDecisionV2 → TaskOwnedMutationLeaseV2 → TaskOperationRecordV1 prepare/dispatch → TaskRecoveryStoreV5 prewrite → observe/settle` 单次闭环;每个任务最多一个未结算 mutating operation,已派发且 effect unknown 禁止自动重试,必须绑定同一 operation/targets 进入 reconcile。0-target、unknown、partial、越界或 required effect 未发生都进入 `needs-reconcile`。实际工具操作权限仍由宿主决定。`needs-reconcile` 不是永久终态:准入事务对同一请求精确 readback 最大完整阶段前缀并自动补齐阶段内缺失文件;artifact closeout 只能由 `memory_artifact_mutation_reconcile_v1` 绑定当前 ingress、formal route、operation record、closeout CAS 与实际文件系统快照收口。partial/零效果必须消费 V5 prewrite 保存的完整 pre-observation 重观察;reserve 还须推进主状态中同一已派发 operation record,并匹配 decision/lease/footprint,整个恢复过程不签发 mutation authority。
430+
- **TaskRecoveryStoreV5**:正式 task 数量无计数硬上限;每个 task 使用稳定 hot A/B,所有正式 envelope commit 都必须精确匹配 `TaskRecoveryCommitFenceV1.stateSequence + writerGeneration`,`force` 不能绕过 stale fence,writer generation 只能由受控 owner transition 增加 1。语义不变返回 `semantic-noop`,普通 Hook/工具/租约状态变化不得新建 UUID generation。owner/operation 的 `expiresAt` 只作 freshness、清理和诊断,不能产生、转移或抢占写权;恢复由 exact owner/state CAS、turn/operation liveness 与副作用证据决定。可重建且 checkpoint 安全时才 coldify 为有界 resume stub,并且 writer、open operation、terminal 与 `LanguageContextV2` 等 continuity minimum 不得裁剪;terminal 必须用当前 write context 的 lifecycle revision、state sequence、writer generation 与 settled-set digest,加上四类独立证据经 `memory_task_terminal_v1` 原子 closeout 后立即解绑 route/owner。Stop/PreCompact 仅 checkpoint,显式 reopen 才获得 revision+1 与新 owner generation。容量采用 256 MiB soft、512 MiB hard 与 8 MiB terminal/abort/reconcile reserve;压力回收只针对可重建 runtime cache,不得删除正式任务文档、identity 或用户产物,legacy generations 默认只读且不自动删除。任何 durable fail-closed 状态必须同时提供 exact、CAS-bound、server-owned 恢复路径;reserve 恢复禁止覆盖另一 operation 或已推进状态。
431431
- **ReceiptOwnedCleanupGate**:清理只允许作用于当前 runner/writer 的 mutation/cleanup receipt 精确拥有且已纳入当前任务范围的临时产物;实际文件权限由宿主策略决定。用户、并行任务、未知归属或不属于当前 receipt 的 dirty 只能报告、排除或隔离,禁止以清理为由扩大任务范围;全局安装与全局环境变更另需用户明确授权。
432432
- **ConvergenceFirstValidationV1**:同一正式任务发现多个相关问题,或任务进入发布收口时,必须先形成有界 inventory 并冻结完整 issue set,再按依赖批量修复;批次中只允许语法/格式/identity 等 edit-time check,禁止逐问题重复执行 affected/heavy/full。全部修复完成后统一执行一次 affected V2;候选 identity 冻结后只执行一次 release V3/full。验证失败应一次收集同批失败集、统一修复后再续跑,禁止恢复为“一问题一重测”。
433433
- **ExistingRequirementArtifactOverride**:当用户表达“调整/修改/补充/变更需求或问题”且已存在 `00-需求概况.md`、`00-需求变更概况.md`、`01-需求确认.md`、`01-产品需求.md`、`01-需求变更确认.md`、历史 `01-需求概述.md`、`00-问题概况.md`、`01-问题确认.md`、bug CP 产物、Profile 声明的正式需求文件或 website requirement 时,SimpleTaskFastPath 只能跳过**新建**完整产物,不能跳过**更新已有真相源**;必须先增量编辑对应文件,用户回复只作为摘要。若无法定位既有产物,先按项目 Profile/当前任务线索定位,仍无法确认时再最小澄清,禁止静默只在回复中变更口径。

‎content/instructions/02-output-paths.instructions.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ reports/<子目录>/<agent>/YYYYMMDD/NN--<简述>.md
205205

206206
```markdown
207207
#### 完成交付文件
208-
- [最终执行与验证报告](E:/Worker/.devcodex/devcodex/reports/.../12--最终执行报告.md) — 汇总完成范围、验证结果和残余风险;路径:`.devcodex/devcodex/reports/.../12--最终执行报告.md`;操作:查看结论
208+
- [最终执行与验证报告]({{workspaceRoot}}/.devcodex/devcodex/reports/.../12--最终执行报告.md) — 汇总完成范围、验证结果和残余风险;路径:`.devcodex/devcodex/reports/.../12--最终执行报告.md`;操作:查看结论
209209
```
210210

211211
自由文本表示例:

‎content/instructions/15-memory.instructions.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,10 @@ daily/SUMMARY 仍是唯一真相源:受管 writer 在文件提交后刷新索
8383

8484
### TaskRouteAdmissionRecoveryGate
8585

86-
- `ActualInstructionEnvelopeV1/WorkflowRouteDecisionV2`、`WorkspaceSessionRouteIndexV1` 与 `ProjectTargetLeaseV2` 只建立 instruction/route/project identity;它们本身不授 mutation/release。`memory_task_admit_v2` 默认原子取得 `FencedTaskWriteOwnerLeaseV2` 并 finalize admission;CP confirmation 后若 owner 的 CP observation 尚未刷新,调用 `memory_task_write_owner renew` 复证当前 exact CP。只有 finalized admission + exact CP + active owner 才形成正式 mutation authority。
86+
- `ActualInstructionEnvelopeV1/WorkflowRouteDecisionV2`、`WorkspaceSessionRouteIndexV1` 与 `ProjectTargetLeaseV2` 只建立 instruction/route/project identity;它们本身不授 mutation/release。`memory_task_admit_v2` 默认原子取得 `FencedTaskWriteOwnerLeaseV2` 并 finalize admission;CP confirmation 后若 owner 的 CP observation 尚未刷新,调用 `memory_task_write_owner renew` 复证当前 exact CP。每次 claim/owner transition 都必须回读 `CanonicalTaskWriteContextV1`,正式 writer 绑定其中的 task/root、lifecycle revision、state sequence、writer generation、holder session、operation set、runtime generation 与 context digest;只有 finalized admission + exact CP + active owner + fresh write context 才形成正式 mutation authority。owner TTL 只作诊断/清理,不能转移写权。
8787
- `SimpleTaskFastPathLeaseV1` 只能由 `memory_task_fast_path_lease` 签发,最多 2 个同一边界 exact 低风险路径、最多 2 次 create-or-update;正式产物、公共契约、控制面、安全、依赖、发布、跨模块或第 3 个路径必须在写入前升级正式准入。低风险叙述型 Markdown 可走 `dev.docs` 轻路径,配置/API/schema/security/release 文档不得借此绕过。
8888
- 每次实际 mutation 使用一次性 `TaskOwnedMutationLeaseV2` 并在 V5 prewrite 后执行;Post actual effects 为 partial/unknown/越界、required effect 未发生或 tool failure 时写 `needs-reconcile`,禁止把退出码 0 当完成。
89-
- `memory_task_terminal_v1` 必须回读 ECR/report/memory/completion 四类独立证据,成功后立即 terminal-unbind route/owner;Stop/PreCompact 只 checkpoint。显式 reopen 必须产生新 admission generation 与 owner nonce。
89+
- `memory_task_terminal_v1` 必须精确消费当前 write context 的 lifecycle revision、state sequence、writer generation 与 settled-set digest,并回读 ECR/report/memory/completion 四类独立证据;存在未结算/待 reconcile operation、stale fence 或证据漂移时零终态提交。成功后立即 terminal-unbind route/owner;相同请求 replay 为零新写。Stop/PreCompact 只 checkpoint,显式 reopen 必须产生 revision+1、新 admission generation 与 owner nonce。
9090

9191
### MemoryFileTransactionGate
9292

@@ -108,7 +108,7 @@ daily/SUMMARY 仍是唯一真相源:受管 writer 在文件提交后刷新索
108108
| 8 MiB closeout reserve | 仅 terminal/abort/reconcile;耗尽明确失败,不旁路普通 mutation |
109109
| legacy | 只读保留;maintenance 不自动删除或迁移 |
110110

111-
V5 只保存 admission、fenced owner、mutation preflight/closeout、validation terminal 等有界恢复投影,不复制正文或大 stdout。容量字节预算不是任务数量上限,也不能授权删除正式任务产物。
111+
V5 只保存 admission、fenced owner、`TaskRecoveryCommitFenceV1`、`TaskOperationSetV1`、mutation preflight/closeout、validation terminal 等有界恢复投影,不复制正文或大 stdout。所有正式 commit 精确比较 state sequence + writer generation;force 不可绕过 stale fence。operation 必须按 prepare→dispatch→observe→settle/reconcile 推进,已派发 unknown effect 不自动重试;紧急 reserve 只能推进同一 operation。容量字节预算不是任务数量上限,也不能授权删除正式任务产物。
112112

113113
### ArtifactLinkProjectionGate
114114

‎content/manifest.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"schemaVersion": "ControlContentManifestV1",
33
"sourceRoot": "content",
44
"sharedRoot": "shared",
5-
"expectedMarkdownEntries": 135,
5+
"expectedMarkdownEntries": 136,
66
"selectors": [
77
{
88
"source": "instructions.md",

0 commit comments

Comments
 (0)