@zq-silk/yui 2.20.0 → 2.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +5 -0
  2. package/dist/cli/commandCatalog.js +88 -28
  3. package/dist/cli/dynamicCompletion.js +4 -1
  4. package/dist/cli/helpRenderer.js +12 -1
  5. package/dist/cli/interactionPolicy.js +2 -0
  6. package/dist/cli/invocationAuthority.js +2 -6
  7. package/dist/cli/invocationRouter.js +5 -5
  8. package/dist/cli/managedDiagnostics.js +24 -16
  9. package/dist/cli/roleWizard.js +5 -1
  10. package/dist/commands/durableJobCommands.js +2 -3
  11. package/dist/commands/globalRoleCommands.js +33 -8
  12. package/dist/commands/inboxCommands.js +39 -12
  13. package/dist/commands/operatorCommands.js +2 -5
  14. package/dist/commands/releaseCommands.js +16 -2
  15. package/dist/commands/roleConfiguration.js +25 -2
  16. package/dist/commands/sessionCommands.js +5 -2
  17. package/dist/commands/taskCommands.js +225 -99
  18. package/dist/commands/taskContextCommand.js +26 -4
  19. package/dist/commands/taskFactCommands.js +20 -7
  20. package/dist/commands/taskIntegrationCommands.js +3 -3
  21. package/dist/commands/taskRoleRuntimeStatus.js +15 -5
  22. package/dist/commands/taskUsageCommand.js +2 -6
  23. package/dist/commands/textInput.js +2 -2
  24. package/dist/context/contextFamilies.js +10 -0
  25. package/dist/context/currentSkills.js +6 -4
  26. package/dist/context/runContextPack.js +44 -5
  27. package/dist/context/runInputContract.js +1 -1
  28. package/dist/context/sessionBootstrapManifest.js +7 -5
  29. package/dist/context/sessionSkillNotice.js +53 -0
  30. package/dist/context/taskCatalog.js +4 -13
  31. package/dist/context/taskContext.js +135 -103
  32. package/dist/context/taskSearch.js +3 -7
  33. package/dist/controlPlaneCli.js +23 -25
  34. package/dist/controller/agentRuntimeObserver.js +57 -12
  35. package/dist/controller/clientRuntime.js +37 -8
  36. package/dist/controller/controller.js +3 -1
  37. package/dist/controller/diagnosticJournal.js +10 -2
  38. package/dist/controller/fileSchedulerStoreAdapter.js +72 -24
  39. package/dist/controller/jobClient.js +2 -2
  40. package/dist/controller/jobControl.js +2 -2
  41. package/dist/controller/jobDefinitionControl.js +5 -1
  42. package/dist/controller/messageHealth.js +4 -3
  43. package/dist/controller/providerRetryAdmission.js +15 -1
  44. package/dist/controller/providerRetryDelivery.js +18 -2
  45. package/dist/controller/runtime.js +15 -5
  46. package/dist/controller/runtimeEventInbox.js +107 -13
  47. package/dist/controller/runtimeEventProcessor.js +3 -3
  48. package/dist/controller/taskRunRecovery.js +153 -0
  49. package/dist/core/controllerClient.js +16 -2
  50. package/dist/core/controllerServer.js +14 -5
  51. package/dist/core/controllerTelemetry.js +51 -5
  52. package/dist/errors/cliFailure.js +14 -5
  53. package/dist/executor/agentAdapter.js +32 -4
  54. package/dist/executor/agentConfigurationFields.js +2 -0
  55. package/dist/executor/taskAgentCapabilities.js +2 -2
  56. package/dist/integration/gitIntegrationService.js +3 -2
  57. package/dist/integration/integrationSourceApplication.js +12 -1
  58. package/dist/interaction/notificationPresentation.js +11 -16
  59. package/dist/interaction/operatorPresentation.js +1 -1
  60. package/dist/message/messageContinuation.js +3 -1
  61. package/dist/output/boundedRead.js +36 -7
  62. package/dist/output/rolePresentation.js +3 -1
  63. package/dist/runtime/agentHost.js +12 -3
  64. package/dist/runtime/codexAppServerRuntime.js +110 -24
  65. package/dist/runtime/codexInteractiveHost.js +46 -0
  66. package/dist/runtime/providerRetry.js +5 -2
  67. package/dist/runtime/providerRuntimeIdentity.js +1 -1
  68. package/dist/runtime/structuredProviderHost.js +32 -34
  69. package/dist/scheduler/wakeupQueue.js +10 -4
  70. package/dist/storage/sqliteSchema.js +9 -0
  71. package/dist/storage/storageVersions.js +1 -1
  72. package/dist/task/taskAuthority.js +7 -3
  73. package/dist/tmux/tmuxManager.js +4 -2
  74. package/dist/web/webSettings.js +2 -0
  75. package/docs/authorization.md +18 -3
  76. package/docs/cli-information-contract.md +245 -6
  77. package/docs/cli-information-contract.zh-CN.md +107 -5
  78. package/docs/managed-turn-and-session-runtime.md +82 -21
  79. package/docs/managed-turn-and-session-runtime.zh-CN.md +56 -13
  80. package/docs/provider-retry.md +11 -0
  81. package/docs/release-workflow.md +62 -0
  82. package/docs/release-workflow.zh-CN.md +46 -0
  83. package/docs/roles-and-configuration.md +28 -0
  84. package/docs/roles-and-configuration.zh-CN.md +21 -0
  85. package/docs/storage-baseline.md +4 -1
  86. package/docs/storage-baseline.zh-CN.md +1 -1
  87. package/docs/task-delivery.md +7 -0
  88. package/docs/task-delivery.zh-CN.md +5 -0
  89. package/docs/task-discovery.md +5 -5
  90. package/docs/task-discovery.zh-CN.md +4 -4
  91. package/docs/testing/review-evaluation.md +7 -7
  92. package/docs/testing/review-evaluation.zh-CN.md +7 -7
  93. package/docs/testing/verification-levels.md +45 -2
  94. package/docs/testing/verification-levels.zh-CN.md +21 -2
  95. package/i18n/README.zh-CN.md +6 -0
  96. package/package.json +1 -1
  97. package/skills/yui-leader/SKILL.md +98 -189
  98. package/skills/yui-leader/VERSION +1 -1
  99. package/skills/yui-leader/references/artifacts.md +41 -0
  100. package/skills/yui-leader/references/assignment-execution.md +140 -0
  101. package/skills/yui-leader/references/completion.md +79 -0
  102. package/skills/yui-leader/references/delivery-scope.md +26 -0
  103. package/skills/yui-leader/references/execution.md +16 -487
  104. package/skills/yui-leader/references/implementation.md +81 -0
  105. package/skills/yui-leader/references/planning.md +7 -45
  106. package/skills/yui-leader/references/review.md +90 -0
  107. package/skills/yui-leader/references/task-progress.md +23 -0
  108. package/skills/yui-leader/references/work-allocation.md +118 -0
  109. package/skills/yui-operator/SKILL.md +77 -331
  110. package/skills/yui-operator/VERSION +1 -1
  111. package/skills/yui-operator/references/body-transport.md +62 -0
  112. package/skills/yui-operator/references/configuration.md +47 -0
  113. package/skills/yui-operator/references/lifecycle.md +41 -0
  114. package/skills/yui-operator/references/progress.md +39 -0
  115. package/skills/yui-operator/references/routing.md +57 -0
  116. package/skills/yui-operator/references/submission.md +56 -0
  117. package/skills/yui-operator/references/task-delivery.md +5 -2
  118. package/skills/yui-operator/references/web-lifecycle.md +19 -0
  119. package/skills/yui-operator/scripts/verify-submission.mjs +37 -0
  120. package/skills/yui-reviewer/SKILL.md +4 -2
  121. package/skills/yui-reviewer/VERSION +1 -1
  122. package/skills/yui-runtime/SKILL.md +177 -505
  123. package/skills/yui-runtime/VERSION +1 -1
  124. package/skills/yui-runtime/references/archive.md +51 -0
  125. package/skills/yui-runtime/references/command-discovery.md +41 -0
  126. package/skills/yui-runtime/references/completed-followup.md +65 -0
  127. package/skills/yui-runtime/references/context-ordering.md +3 -34
  128. package/skills/yui-runtime/references/context-reads.md +61 -0
  129. package/skills/yui-runtime/references/dispatched-run.md +61 -0
  130. package/skills/yui-runtime/references/execution-failure.md +105 -0
  131. package/skills/yui-runtime/references/global-context.md +18 -0
  132. package/skills/yui-runtime/references/global-input-controls.md +44 -0
  133. package/skills/yui-runtime/references/host-custody.md +30 -0
  134. package/skills/yui-runtime/references/inbox-recovery.md +77 -0
  135. package/skills/yui-runtime/references/incremental-context.md +40 -0
  136. package/skills/yui-runtime/references/publication.md +4 -104
  137. package/skills/yui-runtime/references/recovery.md +32 -192
  138. package/skills/yui-runtime/references/session-identity.md +18 -0
  139. package/skills/yui-runtime/references/session-replacement.md +45 -0
  140. package/skills/yui-runtime/references/uncertain-execution.md +29 -0
  141. package/skills/yui-worker/SKILL.md +7 -4
  142. package/skills/yui-worker/VERSION +1 -1
@@ -29,9 +29,21 @@ submitting, unknown and interrupt-owned input still retain their handling path.
29
29
  scopes, phase/read costs and sampled event-loop lag are separate facts.
30
30
  Samples use a process-monotonic clock and hashed target/request labels, with
31
31
  at most 16 recent and 16 active samples plus the slowest completed sample.
32
- In-flight request count is not queue depth, and pre-routing wait is not
33
- measured. These observations neither identify an old incident retroactively
34
- nor establish quiescence; restarting a Controller does not refresh live Hosts.
32
+ In-flight request count is not queue depth; total client-to-route wait is not
33
+ measured by the server alone. These observations neither identify an old incident
34
+ retroactively nor establish quiescence; restarting a Controller does not refresh live Hosts.
35
+
36
+ `observations.commands.routes.transport` correlates socket accept-to-route,
37
+ complete-frame receive-to-route and route-to-local-flush stages by the same
38
+ request hash as route service time. A close before the response finishes is a
39
+ failed transport observation, even if the business handler later succeeds.
40
+ Client socket failures retain local monotonic connect/write/first-response/end
41
+ timestamps in `details.diagnostic.controller.timing`; null means not observed.
42
+ Match the request ID's SHA-256 prefix before comparing these with server stages.
43
+ These are local events, not peer acknowledgement or pure kernel queue time.
44
+ The interval before the server's accept callback includes unobserved socket and
45
+ event-loop delay; sampled lag alone cannot attribute it to a scheduler phase.
46
+ No timeout, coherence check, receipt, retry or stop/start policy is changed.
35
47
 
36
48
  `observations.persistence` separates main-thread database lock/body/commit
37
49
  costs from persistence-worker round trips, worker execution and worker reads.
@@ -54,6 +66,24 @@ admission and other lifecycle writes still require their own boundary analysis.
54
66
  Status responsiveness during these maintenance operations is not proof that
55
67
  every possible Controller stall has been eliminated.
56
68
 
69
+ The worker-backed runtime drain reads its immutable inbox files asynchronously,
70
+ as does native-Session discovery during launch. The 64-event fold limit is not
71
+ a limit on the initial directory scan: a large retained backlog must not be
72
+ read synchronously on the socket thread before that limit takes effect.
73
+ Sorting, per-file validation, event identities, fold order and commit-before-ACK
74
+ remain unchanged. This trades some backlog throughput for control responsiveness;
75
+ it is not a bound on total backlog memory or every CPU operation. Synchronous
76
+ producer deduplication and explicit worker-off drains still need separate
77
+ boundary analysis.
78
+
79
+ Controller stop retains the captured PID/start-generation fence through both
80
+ graceful drain and physical recovery. If the ownership inventory is unreadable,
81
+ a protected Home-validated discovery can retain that fence, but cannot authorize
82
+ a signal. No physical match is not proof of exit: before allowing successor
83
+ startup, the captured generation must be provably gone. A still-live generation
84
+ times out; unavailable generation evidence refuses recovery. Explicit physical
85
+ stop still revalidates UID, entrypoint, Home, PID and start identity before signalling.
86
+
57
87
  Idle Global inbox recovery and already-settled retry checks use read-only
58
88
  snapshots, without reserving SQLite's writer. Creating a recovery notice or
59
89
  settling an outstanding retry still rechecks the current Session/claim/input
@@ -85,12 +115,17 @@ pin a read snapshot, uncommitted writes cannot publish a reusable cache token,
85
115
  and only 16 recent Task projections are retained. Cache entries never authorize
86
116
  dispatch or replace exact mutation-time checks.
87
117
 
88
- A newly created global Operator conversation requests the native title
89
- `Yui · Operator · MMdd`, using Yui's configured time zone. The request is made
90
- only after the provider returns the exact new conversation identity; restore
91
- and reconnect paths never replay it. Providers without a post-create rename
92
- capability keep the usable Session and expose a diagnostic instead of treating
93
- metadata failure as Session-creation failure.
118
+ Role instance codes and generated Session/planning titles are Yui presentation
119
+ metadata, using Yui's configured time zone where a date is included.
120
+ Managed Codex retains this launch title but does not submit native title
121
+ synchronization, including on restore and reconnect. This intentional omission
122
+ is logged locally, not emitted as a failed operation or recovery notification.
123
+ An unsubmitted name is never persisted as an applied native title; the native
124
+ conversation and business execution remain usable.
125
+ The native title mutation has been observed to persist without replying and
126
+ block later Goal/Turn requests, even with a separate metadata client. Automatic
127
+ synchronization must not be restored merely by increasing a timeout or retrying
128
+ an unknown write; it requires a verified nonblocking native path.
94
129
 
95
130
  ## Authority
96
131
 
@@ -177,14 +212,27 @@ continuations and the complete-original reading protocol.
177
212
  Run Context freezes Assignment, source references, effective configuration and
178
213
  workspace boundaries. A Role edit does not rewrite an existing Assignment.
179
214
  Reading either Context does not acknowledge input or create execution authority.
180
- Every managed input points to the exact Session Manifest and CLI entry. The
215
+ Initial or changed managed input points to the exact Session Manifest and CLI entry. The
181
216
  Run Pack is a reference directory: read the relevant requirement and message
182
217
  bodies before acting, rather than treating a successful load as the deliverable.
183
218
  Planning Packs expose no Project write scope or Task-completion permission.
184
219
 
185
- The Manifest pointer is a recovery locator, not a read receipt. At the start of
186
- every turn run `yui session skills --json` through the Session's CLI/Home. It
187
- checks current paths, internal `VERSION` files and readability, without reading
220
+ The Manifest pointer is a recovery locator, not a read receipt. The managed Host
221
+ checks current paths, internal `VERSION` files and readability before submit/steer,
222
+ including the native Operator TUI relay. Unchanged inputs carry a short check
223
+ notice, not repeated Skill lists or a request for another Agent tool call.
224
+ The ordinary notice is only a check result: it does not repeat compaction or
225
+ loading procedures. Those belong to the launch contract and event-specific
226
+ entry guidance. After lost context, reconstruct the current working set from
227
+ the Runtime/Role entry points and references applicable to the next action;
228
+ do not restore the union of every procedure used earlier in the conversation.
229
+ This is instruction routing, not a claim that the Host detects compaction,
230
+ can evict old text, or knows what the model remembers.
231
+ First input, changed metadata and Host reattachment/recovery supply current pointers.
232
+ Only confirmed Provider acceptance advances the Host-local notice state; failures
233
+ and unknown submissions do not. This state is ephemeral, not a loading receipt.
234
+ Unmediated clients retain `yui session skills --json` through their Session CLI/Home.
235
+ The check operates without reading
188
236
  Skill bodies or walking/snapshotting resources. Builtins use the running
189
237
  installation's `skills/<id>` entry; configured Skills use `YUI_HOME/skills/<id>`.
190
238
  These paths do not contain a Session/content digest. After changing installation
@@ -200,6 +248,8 @@ compacted/uncertain context. Reuse only when versions are unchanged and the full
200
248
  instructions remain available now. Yui stores no "already read" state and does
201
249
  not claim to inspect the model's context. Historical packages remain audit only;
202
250
  missing/corrupt snapshots do not prevent valid Session resume or input delivery.
251
+ Provider compaction is not reliably observable here: missing instructions still
252
+ require Agent-directed reload even when engineering reports unchanged versions.
203
253
  Missing current files report their exact path and recovery action. Session
204
254
  identity, scope, writer fences and real CLI/Home incompatibility still reject.
205
255
  Always refresh dynamic facts. Leader notifications use
@@ -411,7 +461,7 @@ The three failure ingresses retain their native fencing/classification, while
411
461
  record creation and deduplication share one writer and supervisor notices use
412
462
  the existing event-routing boundary.
413
463
 
414
- Unknown Leader notifications preserve their wake and input window:
464
+ Unknown or rejected Leader notifications preserve their wake and input window:
415
465
 
416
466
  ```sh
417
467
  yui task wake show <task> <wake>
@@ -419,14 +469,20 @@ yui task wake resolve <task> <wake> --reason <quiescence-evidence>
419
469
  ```
420
470
 
421
471
  Resolve releases the claim after native-effect fences are clear. It neither
422
- replays the notification nor invents acceptance or completion. Independent
472
+ replays the notification nor invents acceptance or completion. A rejection,
473
+ including one recorded after an unknown outcome, is not quiescence evidence.
474
+ If an execution stop removed the operational mailbox, the exact durable
475
+ notification attempt can still be explicitly released for inbox inspection
476
+ and handling; a different current batch is never released. Missing delivery
477
+ evidence is refused, not guessed. Original delivery events and handling claims
478
+ remain unchanged; a repeated resolve adds no second disposition. Independent
423
479
  Role work and legal local facts are not a Task-wide recovery lock.
424
480
 
425
481
  Wake status records notification delivery, not Message implementation. For
426
482
  ordinary Leader notifications, `consumed` means native acceptance. Native Turn
427
483
  completion and Task delivery need their own runtime evidence and durable results.
428
- A rejected wake stays `dispatched` with its claim until explicit retry or Session
429
- replacement; an explicitly released historical wake can remain `dispatched`
484
+ A rejected wake stays `dispatched` with its claim until explicit retry, no-replay
485
+ resolve or Session replacement; an explicitly released historical wake can remain `dispatched`
430
486
  without a claim. Unknown acceptance cannot use `wake retry`.
431
487
  Session replacement preserves queued input for a new wake and current Context;
432
488
  it does not retroactively mark an old wake accepted. Late receipts cannot settle
@@ -725,10 +781,15 @@ Goal `stalled` alone neither establishes the cause nor warrants clearing Goal.
725
781
 
726
782
  In this candidate, `task wake retry` requires a proven-rejected, unconsumed
727
783
  exact claim, a corrected cause and no accepted/uncertain native execution.
728
- `task wake resolve` supports an unknown exact claim after shared-native
729
- quiescence; it releases scheduling without replay or semantic acknowledgement.
730
- Deferred delivery meets neither precondition. Do not assume another recovery
731
- package's extended behavior is installed. For Global Roles, this candidate
784
+ As an alternative, not a sequence, `task wake resolve` supports an unknown or
785
+ rejected exact notification attempt after shared-native/background/writer
786
+ quiescence and persisted evidence; rejection (including after unknown) is not
787
+ quiescence. It releases scheduling without replay or semantic acknowledgement.
788
+ If the operational mailbox is absent, exact durable wake/attempt evidence is
789
+ still required; another current batch is never released. Original claims,
790
+ delivery events and saved alerts remain unchanged. Deferred delivery meets
791
+ neither precondition. Refresh current installed capabilities before acting.
792
+ For Global Roles, this candidate
732
793
  does not establish a dedicated targeted Host-stop command: inspect original
733
794
  input/control and `session retry <role> show`, then discover current authorized
734
795
  capabilities. There is no guessed Task equivalent or stop-all fallback.
@@ -14,9 +14,20 @@ interrupt-owned 输入仍保留原处理路径。
14
14
  `controller status --json` 的 `identity.runtime.observations` 分别呈现已认证请求、
15
15
  调度待处理范围、阶段/读取成本及采样的事件循环延迟。样本使用进程单调时钟,
16
16
  目标/请求标签仅保存哈希;每组最多保留 16 个近期样本、16 个活动样本及最慢完成样本。
17
- in-flight 请求数不是排队数,路由前等待尚未测量。观测不能反推旧事故的唯一根因,
17
+ in-flight 请求数不是排队数,服务端不能独自测量客户端到路由的完整等待。
18
+ 观测不能反推旧事故的唯一根因,
18
19
  也不构成静止证明;重启 Controller 不会刷新存活 Host。
19
20
 
21
+ `observations.commands.routes.transport` 使用与 route service time 相同的请求哈希,
22
+ 分别关联 socket accept→route、完整帧 receive→route、route→本地 flush。
23
+ 响应完成前连接关闭会记录 transport 失败,即使业务 handler 随后成功。
24
+ 客户端 socket 失败在 `details.diagnostic.controller.timing` 保留单调时钟的
25
+ connect/write/首个 response/end 时间戳;null 表示未观测到。
26
+ 比较服务端阶段前须匹配 request ID 的 SHA-256 前缀。这些是本地事件,
27
+ 不是对端确认或纯内核排队时间。服务端 accept callback 之前仍有未观测到的
28
+ socket/事件循环延迟,不能仅凭采样 lag 归因到某个调度阶段。
29
+ timeout、coherence、receipt、重试及 stop/start 策略均未改变。
30
+
20
31
  `observations.persistence` 将主线程数据库锁等待/事务体/提交成本,与持久化
21
32
  worker 的往返耗时、执行和读取成本分开。worker 摘要搭载既有响应,保留 worker
22
33
  实例标识;status 只读缓存观测,不另发诊断 RPC。比较往返和执行时间时须匹配
@@ -31,6 +42,18 @@ worker 的往返耗时、执行和读取成本分开。worker 摘要搭载既有
31
42
  隔离:启动准入、邮箱领取、到期 Job 准入及其他生命周期写入仍需分别分析边界。
32
43
  这些维护操作期间状态请求可响应,不代表 Controller 的所有长停顿都已消除。
33
44
 
45
+ worker 模式的 runtime drain 改用异步读取不可变 inbox 文件,启动时的原生 Session
46
+ 发现也使用同一路径。64 条折叠上限不限制前置目录扫描,不能在该上限生效前,
47
+ 先在 socket 主线程同步读取整个积压。排序、逐文件校验、事件身份、折叠顺序及
48
+ 先提交后 ACK 保持不变。这以部分积压吞吐换取控制面响应,不构成总积压内存或
49
+ 全部 CPU 操作的上限;同步生产者去重及显式关闭 worker 的 drain 仍需分别分析。
50
+
51
+ Controller stop 在优雅停止和物理恢复两条分支都保留所捕获的 PID/启动代次。
52
+ 所有权扫描不可读时,经权限及 Home 校验的 discovery 可以保留该代次约束,但
53
+ 不能据此发信号。未找到物理匹配不等于已退出:允许启动后继前,必须证明原代次
54
+ 已消失;仍活着则超时,代次证据不可读则拒绝恢复。显式物理停止在发信号前,
55
+ 仍复核 UID、入口、Home、PID 及启动代次。
56
+
34
57
  空闲 Global 收件箱恢复检查、已处分的重试检查使用只读快照,不申请 SQLite
35
58
  写锁。真正创建恢复通知或处分未完成重试时,仍在原写事务内复核当前
36
59
  Session/claim/输入。这消除的是空操作等锁,不是所有实际写入的竞争。
@@ -90,10 +113,13 @@ Provider binding,再结算执行占用。Global 停止证据保存为仅记录
90
113
  不触发新的原生输入。待投递通知不能重启已明确停止的 Session;普通 Host 脱离仍
91
114
  保留 active Session,可正常重连。部分切换失败后,仍须先结算旧输入再选择新会话。
92
115
 
93
- 新建 global Operator 对话会按 Yui 当前配置时区请求原生标题
94
- `Yui · Operator · MMdd`。只有 Provider 返回新对话的确切身份后才执行该请求;
95
- 恢复与重连路径不会重放。若 Provider 不支持创建后改名,已创建的 Session 仍保持
96
- 可用,并留下诊断,而不会把元数据失败冒充为 Session 创建失败。
116
+ Role 实例码及生成的 Session/规划标题属于 Yui 展示元数据;包含日期时采用当前
117
+ 配置时区。托管 Codex 保留 launch 标题,但不提交原生标题同步,恢复与重连也不提交。
118
+ 这一有意省略只写本地日志,不作为失败操作或恢复通知;未提交的标题不能记作已应用的
119
+ 原生标题,原生对话与业务执行保持可用。
120
+ 原生命名曾出现写入已生效却无回执、随后 Goal/Turn 请求阻塞的情况,独立元数据
121
+ 连接也未解决。恢复自动同步需要验证不会阻塞执行的原生路径,不能仅增加超时或重试
122
+ 结果未知的写入。
97
123
 
98
124
  ## 权威
99
125
 
@@ -137,8 +163,16 @@ Run Context 冻结 Assignment、来源引用、生效配置和工作区边界。
137
163
  和消息正文,而不是把加载成功当成交付物。规划 Pack 不暴露 Project 写范围或 Task 完成
138
164
  权限。
139
165
 
140
- Manifest 指针是恢复定位入口,不是已读凭据。每轮开始通过本 Session 的 CLI/Home 执行
141
- `yui session skills --json`,轻量检查当前路径、内部 `VERSION` 和文件可读性,不读取
166
+ Manifest 指针是恢复定位入口,不是已读凭据。managed Host 在 submit/steer 前检查,
167
+ 原生 Operator TUI 代理也使用同一逻辑。普通未变化输入仅附短检查提示,不重复清单、
168
+ 不要求 Agent 再发工具调用;首次、元数据变化和 Host 重连/恢复才给当前入口。
169
+ 普通提示仅是工程检查结果,不逐轮重发压缩或加载操作说明;这些说明属于启动契约和
170
+ 事件触发的入口引导。丢失上下文后,从 Runtime/Role 入口和当前动作适用引用重建工作集,
171
+ 不恢复历史上用过的全部流程。这是指令路由,不声称 Host 能识别所有压缩、移除历史文本
172
+ 或判断模型记忆。任务原文和必要新鲜状态仍按业务需要读取。
173
+ 只有 Provider 明确接受才推进 Host 进程内的通知状态,失败与未知提交不推进;
174
+ 它不是持久化加载收据。不经过该 Host 的客户端仍通过本 Session CLI/Home 执行
175
+ `yui session skills --json`。检查当前路径、内部 `VERSION` 和文件可读性,不读取
142
176
  正文或遍历/冻结资源。内置入口是当前安装目录的 `skills/<id>`,自定义入口是
143
177
  `YUI_HOME/skills/<id>`,不包含 Session/内容摘要;安装位置变化后由检查重新解析当前入口。
144
178
  Global Manifest 的 `skillCheckCommand` 使用自包含的 `session context <role>`,
@@ -147,6 +181,8 @@ Global Manifest 的 `skillCheckCommand` 使用自包含的 `session context <rol
147
181
  首次进入、版本变化、恢复,以及压缩后全文缺失或可用性不确定时,读取当前 Runtime、
148
182
  Role/custom Skills 全文及必要引用、Manifest 的 profile。只有版本未变且全文仍在当前
149
183
  上下文时才复用。系统不保存“已经读过”状态,也不声称检查了模型上下文。
184
+ 当前接口不能可靠观察 Provider 压缩;即使工程报告版本未变,Agent 发现指令缺失时
185
+ 仍须补读,不能将未发变化提示当作全文仍在的证明。
150
186
  历史冻结包仅作审计:缺失或损坏不阻止合法 Session 恢复与消息投递;当前文件缺失则
151
187
  报告具体路径和修复动作。身份、作用域、writer fence 与实际 CLI/Home 不兼容仍会拒绝。
152
188
  动态事实仍须刷新:
@@ -302,19 +338,23 @@ retry 把被拒绝批次及后续排队输入交回现有 mailbox,不把旧 wa
302
338
  工作区条目或当前 Session 引导协议。三类错误入口保留各自的原生身份检查与分类,
303
339
  错误创建、去重统一一个写入入口,上级通知统一使用事件路由边界。
304
340
 
305
- 未知的 Leader 通知保留其唤醒和输入窗口:
341
+ 未知或被拒绝的 Leader 通知保留其唤醒和输入窗口:
306
342
 
307
343
  ```sh
308
344
  yui task wake show <task> <wake>
309
345
  yui task wake resolve <task> <wake> --reason <quiescence-evidence>
310
346
  ```
311
347
 
312
- resolve 在原生效果围栏清除后释放该认领。它既不重放通知,也不编造接受或完成。独立的
348
+ resolve 在原生效果围栏清除后释放该认领。它既不重放通知,也不编造接受或完成。
349
+ 被拒绝(包括先 unknown 后 rejected)不等于已经静止。执行停止移除临时 mailbox 后,
350
+ 仍可依据该 wake 的精确持久投递 attempt 显式释放,以便在 inbox 检查和结清;
351
+ 不得释放另一当前批次。缺失投递证据时拒绝猜测。原始投递事件与处理认领保持不变,
352
+ 重复 resolve 不增加第二次处分。独立的
313
353
  Role 工作和合法的本地事实不是一把 Task 范围的恢复锁。
314
354
 
315
355
  wake 状态记录通知投递,不记录 Message 的实施结果。普通 Leader 通知的 `consumed`
316
356
  表示原生接受;原生 Turn 完成与 Task 交付应分别依据运行证据和持久结果判断。
317
- 被拒绝的 wake 保持 `dispatched` 并保留 claim,直到显式重试或 Session 替换;
357
+ 被拒绝的 wake 保持 `dispatched` 并保留 claim,直到显式重试、无重放 resolve 或 Session 替换;
318
358
  已显式释放的历史 wake 可以保持 `dispatched` 而不占用 claim。
319
359
  接受状态未知的通知不能用 `wake retry` 重放。Session 替换把待投递输入
320
360
  保留给新 wake 与当前 Context,不会追溯把旧 wake 标成已接受;旧回执也不能结算
@@ -536,9 +576,12 @@ Host 中尚未持久化的事实。stop 请求保存不等于物理清理成功
536
576
  仅显示 Goal stalled 不能确定根因,也不能据此要求清 Goal。
537
577
 
538
578
  本候选的 `task wake retry` 仅适用已纠正原因、原准确 claim 仍未消费的明确 rejected,
539
- 且不能存在已接受或不确定原生执行;`task wake resolve` 仅支持准确 unknown claim
540
- 在共享原生静止证明后释放调度,不重放、不 ACK。deferred 不满足二者前提,不能假定
541
- 其他恢复包的扩展行为已经安装。GlobalRole 未确认有专用准确 Host-stop 命令时,读取
579
+ 且不能存在已接受或不确定原生执行。另一可选动作是 `task wake resolve`:准确 unknown
580
+ 或 rejected 通知 attempt 在共享原生/后台/writer 静止及持久证据确认后释放调度,
581
+ 不重放、不 ACK。两者不是自动依次执行的步骤;rejected(包括 unknown 后的拒绝)
582
+ 不等于静止。operational mailbox 缺失时仍须精确持久 wake/attempt 证据,不能释放
583
+ 另一当前批次。原始处理认领、投递事件与已保存告警不改写。deferred 不满足二者前提,
584
+ 执行前刷新实际安装能力。GlobalRole 未确认有专用准确 Host-stop 命令时,读取
542
585
  原输入/control 和 `session retry <role> show`,再发现当前权限下的能力;不臆造
543
586
  Task 等价命令,也不退化为 stop-all。
544
587
 
@@ -25,6 +25,17 @@ next input. Agents still own semantic recovery and acceptance.
25
25
  accepted failed Turn and original input. The error need not have qualified
26
26
  for automation; manual intent does not waive Session, authority, latest-Turn
27
27
  or background-quiescence checks.
28
+ - A current-owner manual execution retry can recover that same failed Turn
29
+ across a message continuation and subsequent retries only when the durable
30
+ chain proves every intervening attempt was rejected before a Provider write.
31
+ Session, authority, Assignment, launch configuration and workspace must match.
32
+ It carries the current continuation input, not the earlier business directive,
33
+ and preserves the original automatic budget. Missing proof or any intervening
34
+ accepted/unknown input leaves ordinary admission fenced.
35
+ - Once that exact recovery is accepted, its Agent can claim and acknowledge
36
+ the original continuation Message through the same verified lineage. This
37
+ is handling authority, not another delivery: recipient, continuation target,
38
+ prior claims and failure records stay unchanged; no Message is requeued.
28
39
 
29
40
  The records live on the existing Provider binding, with indexed pending-record
30
41
  reads and the existing Controller deadline timer. There is no retry Task status,
@@ -51,6 +51,62 @@ merely to avoid a version decision. Package versions remain distinct from protoc
51
51
  and persistent-storage contracts: their compatibility checks and required migrations
52
52
  are unchanged, and the storage rules below do not authorize a package release.
53
53
 
54
+ ### 2.22.0 compatibility and migration notes
55
+
56
+ Context reads now support bounded discovery, precise batched original retrieval,
57
+ body transport receipts and focused notifications. Runtime/Role Skills organize
58
+ required material around actions and recovery after compaction; pointers and
59
+ transport receipts never prove semantic reading or acknowledge an input.
60
+ Full originals remain available. Automated consumers must follow explicit
61
+ pagination and retrieval references rather than assuming every default response
62
+ contains every body. Help is focused by default; consumers needing the complete
63
+ recursive command tree must explicitly request recursive help, including JSON
64
+ consumers affected by the changed child projection.
65
+
66
+ Host restoration and Controller scheduling/SQLite transaction boundaries are
67
+ bounded without replaying unknown effects. Codex Host native title mutation is
68
+ omitted where it could stall execution; Yui presentation retains Role instance
69
+ codes and planning markers, but an unapplied native title is not recorded as
70
+ success. Codex temporary-directory exclusion options are preserved end to end.
71
+
72
+ Storage advances to **1.26** through the centralized **1.25 → 1.26** migration;
73
+ the already-published 1.24 → 1.25 migration is unchanged. Back up the Home and
74
+ use the normal upgrade/migration path; do not open a migrated Home with an older
75
+ binary. Controller/Host protocols remain v1. Publishing this version does not
76
+ update the global CLI, migrate a production Home or restart its services.
77
+
78
+ The maintained evaluation entry is `scripts/eval/`, with shared infrastructure
79
+ separate from context-specific logic. Context guidance and historical analyses
80
+ live under `docs/evaluations/context/`; the old `scripts/collaboration-eval/`
81
+ entry is retired. Engineering gathers measurements; Agents interpret actual
82
+ experimental and production traces, including compaction boundaries and missing
83
+ evidence. Local output reductions are not a claim of universal token savings.
84
+
85
+ ### 2.21.0 compatibility and migration notes
86
+
87
+ Ordinary Task, Assignment and frozen-context evidence reads now use the local
88
+ resource boundary rather than Task ownership as a confidentiality boundary.
89
+ Catalog/search and relevant records are readable without borrowing the target
90
+ Task's identity or execution authority. Cross-Task context explicitly reports
91
+ `reference-only`. Consumers must not treat readable records, returned instructions,
92
+ or a frozen pack as permission to write, claim input, dispatch, or control work.
93
+ Real user/tenant, filesystem, authenticated transport and explicit read limits
94
+ remain. Native conversation reads use existing legal native tools, not a new gateway.
95
+
96
+ Leader follow-up guidance permits the existing reopen operation for same-result
97
+ tracked diagnosis, evidence handoff, necessary coordination or delivery authorized
98
+ by the user's request or an explicit unfinished commitment. Simple questions stay
99
+ completed, diagnosis stays read-only, and reopen does not lift stop, archive,
100
+ cancelled-intent, Session, workspace or external-effect restrictions. Existing
101
+ reopen and InputRequest operations remain separate; no completed-state write
102
+ exception or automatic replay is introduced.
103
+
104
+ Storage remains **1.25** and Controller/Host protocols remain v1; no migration is
105
+ added. Runtime and Role Skill versions advance independently of the package.
106
+ Exact-merge Core CI and the same runtime archive's fresh-install matrix gate npm
107
+ publication. These deterministic checks do not establish model semantic behavior.
108
+ Publishing does not authorize a global installation update or production restart.
109
+
54
110
  ### 2.20.0 compatibility and migration notes
55
111
 
56
112
  This minor adds independent optional Role instance codes (`--instance-code` /
@@ -845,6 +901,12 @@ and timeout hierarchy. A no-target activation, help, `--json`, and every other
845
901
  command remain on the global CLI. Activation does not add another ordinary CLI
846
902
  routing path.
847
903
 
904
+ Activation's two storage preflights use the verified target's existing read-only
905
+ upgrade primitive in an isolated process, not its ordinary inactive CLI entry.
906
+ The target must be installed in this Home with matching integrity and smoke
907
+ evidence before each preflight. This neither migrates storage nor permits an
908
+ inactive release or checkout CLI to read/write the Home through ordinary commands.
909
+
848
910
  ## Step catalog
849
911
 
850
912
  The plan is a fixed, predeclared subset of operations. Each plan entry has an
@@ -36,6 +36,48 @@ Agent 选择一个预先声明的计划,设施从持久状态驱动该计划
36
36
  不能将不兼容冒称为兼容,也不为回避版本选择新增历史兼容机制。包版本与协议、
37
37
  持久存储契约仍然独立:兼容性检查和必要迁移要求不变,下文存储规则不授予发版权限。
38
38
 
39
+ ### 2.22.0 兼容性及迁移说明
40
+
41
+ 上下文读取增加有界发现、精确批量原文读取、正文传输回执及聚焦通知。
42
+ Runtime/Role Skill 按动作组织必需材料,并明确上下文压缩后的恢复路径;
43
+ 指针和传输回执不证明语义阅读,也不自动 ACK。完整原文仍可获取。
44
+ 自动化调用方应遵循明确的分页和原文入口,不再假定默认返回包含全部正文。
45
+ help 默认聚焦当前命令;需要完整递归命令树时须明确请求递归 help,
46
+ 使用 JSON 的调用方也应适配子命令投影变化。
47
+
48
+ Host 恢复、Controller 调度及 SQLite 事务边界改为有界处理,不重放未知效果。
49
+ Codex Host 在可能阻塞执行的路径省略原生标题变更;Yui 展示保留 Role 实例码及
50
+ planning 标记,但不会将未应用的原生标题记为成功。Codex 临时目录排除选项
51
+ 贯穿配置及启动链路保留。
52
+
53
+ 存储通过集中式 **1.25 → 1.26** 迁移升级至 **1.26**;已发布的 1.24 → 1.25
54
+ 迁移不变。升级前备份 Home,并使用正常升级/迁移路径;不要用旧二进制打开
55
+ 已迁移的 Home。Controller/Host 协议仍为 v1。发布本版本本身不更新全局 CLI、
56
+ 不迁移生产 Home,也不重启服务。
57
+
58
+ 受维护的评测入口为 `scripts/eval/`,公共基础设施与上下文专属逻辑分离;
59
+ 上下文指导及历史分析位于 `docs/evaluations/context/`,旧
60
+ `scripts/collaboration-eval/` 入口退役。工程负责数据统计,Agent 根据实验和
61
+ 线上实际轨迹分析,包括压缩边界及证据缺失;局部输出减量不代表普遍 token 收益。
62
+
63
+ ### 2.21.0 兼容性及迁移说明
64
+
65
+ 普通 Task、Assignment 和冻结上下文证据读取改按本地资源边界处理,不再将 Task
66
+ 归属本身作为保密边界。目录、搜索及相关记录可读,但不借用目标 Task 身份或执行权;
67
+ 跨 Task Context 明确标记 `reference-only`。调用方不得将可读记录、返回的指令或
68
+ 冻结包当作写入、领取输入、派发或控制执行的授权。真实用户/租户、文件系统、
69
+ 认证传输及明确阅读限制仍保留;原生会话读取复用合法原生工具,不增加专用网关。
70
+
71
+ Leader 可依据同结果用户请求或明确未履行承诺,为需要跟踪的诊断、证据交接、
72
+ 必要协调或交付使用既有 reopen。简单问答保持 completed,诊断保持只读;重开
73
+ 不解除停止、归档、撤销意图、Session、工作区或外部效果限制。reopen 与 InputRequest
74
+ 仍是独立操作,不新增 completed 写入例外或自动重放。
75
+
76
+ 存储仍为 **1.25**,Controller/Host 协议仍为 v1,不新增迁移。Runtime 与 Role Skill
77
+ 版本独立递增。npm 发布仍要求准确合入 commit 的 Core CI,以及同一 runtime archive
78
+ 的全新安装矩阵通过;这些确定性检查不证明模型语义行为。发布不授权全局安装更新
79
+ 或生产重启。
80
+
39
81
  ### 2.20.0 兼容性及迁移说明
40
82
 
41
83
  本 minor 增加按 Role 独立可选的实例码(`--instance-code` /
@@ -629,6 +671,10 @@ CLI、Operator Session 和 Controller 替换保持兼容,而不必把每个命
629
671
  `dist/cli.js`。因此目标发布拥有完整的交接协议和超时层级。一次无目标的激活、help、
630
672
  `--json` 以及其他每个命令都留在全局 CLI 上。激活不新增另一条普通 CLI 路由路径。
631
673
 
674
+ 激活的两次存储预检在隔离子进程中调用已验证目标包现有的只读升级原语,不经过目标包
675
+ 尚未激活的普通 CLI 入口。每次预检前都要求目标已安装于此 Home,且完整性及冒烟回执
676
+ 匹配。这既不迁移存储,也不允许 inactive release 或源码 checkout 的普通命令读写 Home。
677
+
632
678
  ## 步骤目录
633
679
 
634
680
  计划是一个固定、预先声明的操作子集。每个计划条目有一个 id(工作流内唯一)、一个
@@ -155,6 +155,23 @@ different contracts. Provider bypass does not grant writes to another Project.
155
155
  Managed workspace owner, exact Assignment and resource grants enforce Yui
156
156
  operations; broad native permissions are not an OS sandbox.
157
157
 
158
+ Codex configured permissions can explicitly exclude automatic writable temp roots:
159
+ `--sandbox workspace-write --exclude-tmpdir-env-var true --exclude-slash-tmp true`.
160
+ Each exclusion accepts `true` or `false`; `--clear-exclude-tmpdir-env-var` and
161
+ `--clear-exclude-slash-tmp` remove the respective override. Omission preserves
162
+ native defaults, not an implicit exclusion. Both fields require an explicit
163
+ `workspace-write` sandbox and reject other adapters or conflicting strategies.
164
+ Managed launches compile them into per-thread `sandbox_workspace_write`
165
+ configuration on start/resume, never shared-daemon defaults or account files.
166
+ Ordinary interactive launches use equivalent invocation-local structured options.
167
+ The mapping follows the native
168
+ [configuration reference](https://learn.chatgpt.com/docs/config-file/config-reference).
169
+ These exclude automatic `$TMPDIR` and `/tmp` grants, not explicitly authorized
170
+ writable roots within those paths. They do not establish read isolation or
171
+ prevent effects through an authorized Controller RPC. Inspect the actual native
172
+ receipt and validate enforcement in a separately authorized disposable fixture;
173
+ accepting the configuration does not prove OS sandbox enforcement.
174
+
158
175
  A write-intent delivery Leader launched in its own Task-owned main workspace
159
176
  captures that workspace's bound writable Projects without needing an open
160
177
  WorkItem. Accepted results do not remove this direct-delivery scope. An explicit
@@ -236,12 +253,23 @@ yui config role show <global-role>
236
253
  yui config profile show <profile>
237
254
  yui task role add <task> <role> --profile <profile>
238
255
  yui task role show <task> <role>
256
+ yui task role show <task> <role> --view full
239
257
  yui task role update <task> <role> --environment <preparation-id>
240
258
  yui task role update <task> <role> --managed-environment
241
259
  yui task role session inspect <task> <role>
242
260
  yui task role session new <task> <role> --reason "<why a fresh Session is useful>"
243
261
  ```
244
262
 
263
+ `task role show` defaults to the complete desired Role configuration and its
264
+ current recorded Session configuration, not historical Run snapshots. Recorded
265
+ configuration and a retained control target are not live-state or stop evidence;
266
+ use the returned status/session inspection commands for those questions.
267
+ `--view full` retains the previous complete `role`, `sessions`, and `runs`
268
+ document with bounded pagination. JSON consumers needing those historical
269
+ fields must now request that view and retain it on cursor continuations.
270
+ This changes the CLI default JSON view, not storage or the `task.role.show`
271
+ configuration RPC used by the interactive wizard.
272
+
245
273
  The global query uses the calling process's default native context. Task-scoped
246
274
  queries use the Controller's native account environment and the selected Role
247
275
  configuration; they never forward the caller's credentials to another Provider.
@@ -125,6 +125,18 @@ Provider 权限策略、Profile 访问意图和 Project 写范围是不同的合
125
125
  不授予对另一个 Project 的写入。受管工作区 owner、精确 Assignment 和资源 grant
126
126
  落实 Yui 操作;宽泛的原生权限不是 OS 沙箱。
127
127
 
128
+ Codex configured 权限可显式排除自动加入的可写临时目录:
129
+ `--sandbox workspace-write --exclude-tmpdir-env-var true --exclude-slash-tmp true`。
130
+ 两项均接受 `true`/`false`;`--clear-exclude-tmpdir-env-var` 和
131
+ `--clear-exclude-slash-tmp` 分别清除覆盖。省略时保留原生默认语义,不默认排除。
132
+ 两项都要求显式 `workspace-write`,其他 adapter 或冲突策略会被拒绝。
133
+ 受管 start/resume 编译到该 Thread 的 `sandbox_workspace_write`,不修改共享 daemon
134
+ 默认值或账户文件;普通交互启动使用等价的单次调用结构化选项。
135
+ 映射依据[原生配置参考](https://learn.chatgpt.com/docs/config-file/config-reference)。
136
+ 这只排除自动 `$TMPDIR`、`/tmp` 写授权,不排除位于其中且被显式授权的 writable root;
137
+ 也不证明读隔离或阻止合法 Controller RPC 的副作用。配置被接受不是 OS 沙箱生效证明;
138
+ 应检查原生回执,并在另行授权的可丢弃 fixture 内验证实际执行边界。
139
+
128
140
  以 write 意图在自己 Task-owned main 工作区启动的 delivery Leader,从该工作区
129
141
  捕获已绑定 Project 的写域,不要求存在 open WorkItem;已接受结果也不会移除这个
130
142
  直接交付写域。显式 Assignment(包括空写域)仍决定受派发执行的范围。
@@ -189,12 +201,21 @@ yui config role show <global-role>
189
201
  yui config profile show <profile>
190
202
  yui task role add <task> <role> --profile <profile>
191
203
  yui task role show <task> <role>
204
+ yui task role show <task> <role> --view full
192
205
  yui task role update <task> <role> --environment <preparation-id>
193
206
  yui task role update <task> <role> --managed-environment
194
207
  yui task role session inspect <task> <role>
195
208
  yui task role session new <task> <role> --reason "<why a fresh Session is useful>"
196
209
  ```
197
210
 
211
+ `task role show` 默认返回完整的期望 Role 配置及当前记录的 Session 配置,
212
+ 不再附带历史 Run 配置副本。记录配置和保留的控制目标不等于实时状态或停止
213
+ 证明;需要这些事实时使用返回的 status/session 检查入口。`--view full`
214
+ 保留原来的完整 `role`、`sessions`、`runs` 文档及有界分页。依赖这些历史
215
+ 字段的 JSON 消费者须显式选择 full,并在后续游标读取中保持同一视图。
216
+ 这是 CLI 默认 JSON 视图变更,不改变存储,也不改变交互配置向导使用的
217
+ `task.role.show` 配置 RPC。
218
+
198
219
  全局查询使用调用进程的默认原生环境;Task 查询使用 Controller 的原生账户环境及
199
220
  所选 Role 配置,不把调用方的凭据转交给其他 Provider。省略 `--error` 查看当前期望
200
221
  配置;指定错误记录时,使用失败时保存的模型、工作区、profile/settings 选项,不受
@@ -2,7 +2,10 @@
2
2
 
3
3
  # Storage baseline 1.0
4
4
 
5
- Current storage is 1.25. The 1.24 → 1.25 transition admits optional Role
5
+ Current storage is 1.26. The 1.25 → 1.26 transition admits optional Codex
6
+ workspace-write temporary-directory exclusions without changing historical
7
+ permission payloads. The published 1.24 → 1.25 transition remains unchanged
8
+ and admits optional Role
6
9
  `instanceCode` and Session `generatedTitle` presentation fields without rewriting
7
10
  existing records. Untagged historical titles remain user-owned; no code or
8
11
  title provenance is inferred. The 1.23 → 1.24 transition adds transaction-maintained
@@ -2,7 +2,7 @@
2
2
 
3
3
  # 存储基线 1.0
4
4
 
5
- 当前存储为 1.25。1.24 → 1.25 增加可选 Role `instanceCode` 和 Session `generatedTitle` 展示字段,不回填历史标题来源或实例码,不改写既有记录。1.23 → 1.24 为调度器的九类来源表增加事务维护的 Task 读取缓存修订号。插入、更新和删除只使对应 Task 的缓存失效,回滚同时回滚修订号。该值仅是派生缓存标识,不是 Task 权限或 Home revision CAS 的替代。历史 payload 不变,旧 Task 在首次修改前使用隐含的零修订号。
5
+ 当前存储为 1.26。1.25 → 1.26 增加 Codex workspace-write 可选临时目录排除字段,不改写历史权限 payload。已发布的 1.24 → 1.25 定义保持不变:增加可选 Role `instanceCode` 和 Session `generatedTitle` 展示字段,不回填历史标题来源或实例码,不改写既有记录。1.23 → 1.24 为调度器的九类来源表增加事务维护的 Task 读取缓存修订号。插入、更新和删除只使对应 Task 的缓存失效,回滚同时回滚修订号。该值仅是派生缓存标识,不是 Task 权限或 Home revision CAS 的替代。历史 payload 不变,旧 Task 在首次修改前使用隐含的零修订号。
6
6
  同时增加两个局部索引,支持按精确运行观测身份查找,不再扫描或反序列化历史观测集合。
7
7
 
8
8
  1.22 → 1.23 新增全局 Shell Job、版本化脚本文件及每次运行的配置快照,不改写已有 Job、计划和历史记录。
@@ -73,6 +73,13 @@ An existing merge/rebase/cherry-pick without the attempt's own progress receipt
73
73
  is not adopted from Git markers. Preserve the scene and choose explicit recovery;
74
74
  normal continuation uses the original receipt and never replays a completed step.
75
75
 
76
+ If Git stopped but persisting the conflict failed, explicit `task integration
77
+ continue` can resume that same operation when the original progress receipt,
78
+ workspace, branch, source and Git metadata all match. This recovery requires a
79
+ nonempty staged resolution with no unresolved, unstaged or untracked files.
80
+ Ordinary re-entry does not authorize it; missing evidence still refuses recovery.
81
+ It does not invent a conflict record, restart the source command or bypass checks.
82
+
76
83
  When checks are a DurableJob, the Integration retains that exact jobId while
77
84
  running. Once the Job settles, `task integration continue <task>/<integration>`
78
85
  consumes its result and performs the guarded finalization. Existing unsettled
@@ -58,6 +58,11 @@ Integration 在候选 worktree 中套用固定来源提交,运行已配置的
58
58
  已有 merge/rebase/cherry-pick 若缺少原尝试的进度回执,不根据 Git 标记接管。
59
59
  保留现场并选择显式恢复;正常续作使用原回执,不重放已完成步骤。
60
60
 
61
+ 若 Git 已停止而保存冲突的事务失败,显式 `task integration continue` 可以继续
62
+ 同一次操作,但原进度回执、工作区、分支、来源和 Git 元数据必须全部匹配。
63
+ 此恢复要求非空且全部暂存的解决结果,无未解决、未暂存或未跟踪文件。
64
+ 普通重入不授权恢复;缺少证据仍拒绝。不伪造冲突记录、不重新发起来源命令,也不跳过检查。
65
+
61
66
  当检查是一个 DurableJob 时,Integration 在运行期间保留那个确切的 jobId。Job 结算
62
67
  后,`task integration continue <task>/<integration>` 消费其结果并执行带守卫的收尾。
63
68
  未结算的 Integration(包括冲突)仍阻止完成,不依赖 Agent 采用了什么执行顺序。
@@ -116,11 +116,11 @@ source records; no report text is parsed into status. Web explicitly labels
116
116
  these facts and offers category navigation. Selected detail survives paging,
117
117
  filtering and refresh; only the detail read can establish absence.
118
118
 
119
- Task Leader Sessions see only their own Task. Assignment-scoped Workers and
120
- Reviewers use existing authorized Run Context instead of whole-Task discovery;
121
- the catalog rejects their request before counting. Global non-Operator and
122
- incomplete managed identities are rejected. Historical Leader diagnostic reads
123
- retain their original Task scope. A cursor is scope/filter-bound continuation,
119
+ Task Leaders, Workers and Reviewers may discover relevant ordinary records
120
+ under the local resource's access rules; Task/Assignment ownership does not
121
+ filter the catalog. Global non-Operator and incomplete or unknown managed
122
+ identities remain rejected. Historical readers retain read-only identity,
123
+ never another Task's execution authority. A cursor is scope/filter-bound continuation,
124
124
  not a credential. Read operations do not consume messages, acknowledge jobs,
125
125
  wake Roles or query providers.
126
126