@zq-silk/yui 2.21.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.
- package/README.md +5 -0
- package/dist/cli/commandCatalog.js +85 -25
- package/dist/cli/dynamicCompletion.js +4 -1
- package/dist/cli/helpRenderer.js +12 -1
- package/dist/cli/interactionPolicy.js +2 -0
- package/dist/cli/invocationRouter.js +5 -5
- package/dist/cli/roleWizard.js +5 -1
- package/dist/commands/globalRoleCommands.js +33 -8
- package/dist/commands/inboxCommands.js +39 -12
- package/dist/commands/operatorCommands.js +2 -5
- package/dist/commands/releaseCommands.js +16 -2
- package/dist/commands/roleConfiguration.js +25 -2
- package/dist/commands/sessionCommands.js +5 -2
- package/dist/commands/taskCommands.js +217 -64
- package/dist/commands/taskContextCommand.js +26 -4
- package/dist/commands/taskFactCommands.js +15 -2
- package/dist/commands/taskIntegrationCommands.js +3 -3
- package/dist/commands/taskRoleRuntimeStatus.js +15 -5
- package/dist/commands/textInput.js +2 -2
- package/dist/context/contextFamilies.js +10 -0
- package/dist/context/currentSkills.js +6 -4
- package/dist/context/runContextPack.js +44 -5
- package/dist/context/runInputContract.js +1 -1
- package/dist/context/sessionBootstrapManifest.js +7 -5
- package/dist/context/sessionSkillNotice.js +53 -0
- package/dist/context/taskContext.js +100 -16
- package/dist/controlPlaneCli.js +17 -7
- package/dist/controller/agentRuntimeObserver.js +57 -12
- package/dist/controller/clientRuntime.js +37 -8
- package/dist/controller/controller.js +3 -1
- package/dist/controller/diagnosticJournal.js +10 -2
- package/dist/controller/fileSchedulerStoreAdapter.js +72 -24
- package/dist/controller/messageHealth.js +4 -3
- package/dist/controller/providerRetryAdmission.js +15 -1
- package/dist/controller/providerRetryDelivery.js +18 -2
- package/dist/controller/runtime.js +15 -5
- package/dist/controller/runtimeEventInbox.js +107 -13
- package/dist/controller/runtimeEventProcessor.js +3 -3
- package/dist/controller/taskRunRecovery.js +153 -0
- package/dist/core/controllerClient.js +16 -2
- package/dist/core/controllerServer.js +14 -5
- package/dist/core/controllerTelemetry.js +51 -5
- package/dist/errors/cliFailure.js +14 -5
- package/dist/executor/agentAdapter.js +32 -4
- package/dist/executor/agentConfigurationFields.js +2 -0
- package/dist/integration/gitIntegrationService.js +3 -2
- package/dist/integration/integrationSourceApplication.js +12 -1
- package/dist/interaction/notificationPresentation.js +11 -16
- package/dist/interaction/operatorPresentation.js +1 -1
- package/dist/message/messageContinuation.js +3 -1
- package/dist/output/boundedRead.js +36 -7
- package/dist/output/rolePresentation.js +3 -1
- package/dist/runtime/agentHost.js +12 -3
- package/dist/runtime/codexAppServerRuntime.js +110 -24
- package/dist/runtime/codexInteractiveHost.js +46 -0
- package/dist/runtime/providerRetry.js +5 -2
- package/dist/runtime/providerRuntimeIdentity.js +1 -1
- package/dist/runtime/structuredProviderHost.js +32 -34
- package/dist/scheduler/wakeupQueue.js +10 -4
- package/dist/storage/sqliteSchema.js +9 -0
- package/dist/storage/storageVersions.js +1 -1
- package/dist/tmux/tmuxManager.js +4 -2
- package/dist/web/webSettings.js +2 -0
- package/docs/authorization.md +18 -3
- package/docs/cli-information-contract.md +228 -6
- package/docs/cli-information-contract.zh-CN.md +95 -5
- package/docs/managed-turn-and-session-runtime.md +82 -21
- package/docs/managed-turn-and-session-runtime.zh-CN.md +56 -13
- package/docs/provider-retry.md +11 -0
- package/docs/release-workflow.md +37 -0
- package/docs/release-workflow.zh-CN.md +28 -0
- package/docs/roles-and-configuration.md +28 -0
- package/docs/roles-and-configuration.zh-CN.md +21 -0
- package/docs/storage-baseline.md +4 -1
- package/docs/storage-baseline.zh-CN.md +1 -1
- package/docs/task-delivery.md +7 -0
- package/docs/task-delivery.zh-CN.md +5 -0
- package/docs/testing/review-evaluation.md +7 -7
- package/docs/testing/review-evaluation.zh-CN.md +7 -7
- package/docs/testing/verification-levels.md +45 -2
- package/docs/testing/verification-levels.zh-CN.md +21 -2
- package/i18n/README.zh-CN.md +6 -0
- package/package.json +1 -1
- package/skills/yui-leader/SKILL.md +98 -193
- package/skills/yui-leader/VERSION +1 -1
- package/skills/yui-leader/references/artifacts.md +41 -0
- package/skills/yui-leader/references/assignment-execution.md +140 -0
- package/skills/yui-leader/references/completion.md +79 -0
- package/skills/yui-leader/references/delivery-scope.md +26 -0
- package/skills/yui-leader/references/execution.md +16 -487
- package/skills/yui-leader/references/implementation.md +81 -0
- package/skills/yui-leader/references/planning.md +7 -45
- package/skills/yui-leader/references/review.md +90 -0
- package/skills/yui-leader/references/task-progress.md +23 -0
- package/skills/yui-leader/references/work-allocation.md +118 -0
- package/skills/yui-operator/SKILL.md +77 -333
- package/skills/yui-operator/VERSION +1 -1
- package/skills/yui-operator/references/body-transport.md +62 -0
- package/skills/yui-operator/references/configuration.md +47 -0
- package/skills/yui-operator/references/lifecycle.md +41 -0
- package/skills/yui-operator/references/progress.md +39 -0
- package/skills/yui-operator/references/routing.md +57 -0
- package/skills/yui-operator/references/submission.md +56 -0
- package/skills/yui-operator/references/task-delivery.md +1 -1
- package/skills/yui-operator/references/web-lifecycle.md +19 -0
- package/skills/yui-operator/scripts/verify-submission.mjs +37 -0
- package/skills/yui-runtime/SKILL.md +177 -531
- package/skills/yui-runtime/VERSION +1 -1
- package/skills/yui-runtime/references/archive.md +51 -0
- package/skills/yui-runtime/references/command-discovery.md +41 -0
- package/skills/yui-runtime/references/completed-followup.md +65 -0
- package/skills/yui-runtime/references/context-ordering.md +3 -34
- package/skills/yui-runtime/references/context-reads.md +61 -0
- package/skills/yui-runtime/references/dispatched-run.md +61 -0
- package/skills/yui-runtime/references/execution-failure.md +105 -0
- package/skills/yui-runtime/references/global-context.md +18 -0
- package/skills/yui-runtime/references/global-input-controls.md +44 -0
- package/skills/yui-runtime/references/host-custody.md +30 -0
- package/skills/yui-runtime/references/inbox-recovery.md +77 -0
- package/skills/yui-runtime/references/incremental-context.md +40 -0
- package/skills/yui-runtime/references/publication.md +4 -111
- package/skills/yui-runtime/references/recovery.md +32 -192
- package/skills/yui-runtime/references/session-identity.md +18 -0
- package/skills/yui-runtime/references/session-replacement.md +45 -0
- package/skills/yui-runtime/references/uncertain-execution.md +29 -0
|
@@ -19,7 +19,7 @@ CLI 调用成功,不代表 Task、原生 Turn 或远端投递完成。
|
|
|
19
19
|
| 发生了什么变化? | `task context delta <task> --after <cursor>` | 固定上界内的不可变事件,不是可变当前状态的快照 |
|
|
20
20
|
| Global 收到了什么? | `session context <role>` | 身份、Profile 读取指针、权限、当前 Turn/retry 事实与小窗口 pending 页;历史按需读取 |
|
|
21
21
|
| 读取 Global 输入 | `role message list <role> [--pending]`、`role message show <role> <id>` | 在自身范围内发现,再读完整原文;队列接受不删除历史 |
|
|
22
|
-
| 本次唤醒带来什么? | `task wake show <task> <wake>` |
|
|
22
|
+
| 本次唤醒带来什么? | `task wake show <task> <wake>` | 固定窗口的输入/结果、有界完整普通输入和确切原文入口;`--history` 展开诊断历史 |
|
|
23
23
|
| 分配了什么? | `task run context <task>/<run>` | 冻结授权与有限 `pointers` 窗口,变化身份和活跃观察附总数;`--view refs/full` 按需扩展 |
|
|
24
24
|
| 实际配置是什么? | `task role session inspect <task> <role>` | Task/Role 身份、期望绑定、冻结 Session、当前 Provider 绑定、retry 与显式 Host 观察;不复制整个 Task/Role 或 Provider 会话历史 |
|
|
25
25
|
|
|
@@ -28,15 +28,42 @@ Task Message、事件、WorkItem、Run、决策、里程碑、publication 和 In
|
|
|
28
28
|
Role 发现返回 `recordedHealth` 与 `hostObservation: "not-requested"`,不是实时 Host
|
|
29
29
|
健康度。记录状态正常也不能排除 Host 失败或终态未确认;需沿条目的 `task role status`
|
|
30
30
|
读取指针检查。
|
|
31
|
+
`task role status <task> <role>` 默认 `--view current`:保留同一计算结果的
|
|
32
|
+
健康度、Host、投递/重试、清理与配置漂移观察,以 Run/WorkItem 身份和准确详情命令
|
|
33
|
+
替代输入、报告及历史正文。重试诊断仍通过当前 retry 详情读取;期望配置与实际配置
|
|
34
|
+
仍可见,未知证据不升级为成功。这是默认嵌套 JSON 契约变化;需要原有完整记录的
|
|
35
|
+
调用者使用 `--view full`,分页续读保留该选项。底层状态投影及 Web 数据不变。
|
|
31
36
|
Context 列表还暴露候选、Review、Job、Project Knowledge、工作区等获授权的记录。
|
|
32
37
|
`--status`、`--after`、`--work-item` 缩小发现范围;续读必须保留过滤条件。
|
|
33
38
|
Run 列表接受 Task 或 `task/work` 目标。
|
|
34
39
|
|
|
40
|
+
`task run show <task>/<run> --view status` 返回身份、记录状态、delivery/retry
|
|
41
|
+
观察、退役与结果可用性,不复制输入、启动配置或报告正文。重试观察使用与 Task Context
|
|
42
|
+
相同的当前摘要,并提供准确 Session retry 命令取回原始诊断与历史,不直接携带其正文。
|
|
43
|
+
它与默认 `--view full`
|
|
44
|
+
共用授权检查;完整视图仍保留全部审计证据和文档分页。
|
|
45
|
+
`--view result` 返回完整原始结果(包含失败与 Provider 字段)、Run 身份/状态、
|
|
46
|
+
退役与执行观察,不携带提交输入和启动配置。没有结果时为 `null`,不代表成功。
|
|
47
|
+
长报告仍需按同一视图续页;`reads.full` 提供完整审计入口,默认仍为 full。
|
|
48
|
+
处置前须通过 Message、result 或
|
|
49
|
+
完整 Run 视图读取原始结果;status 不是报告或验收。精确原文仍在当前上下文时,
|
|
50
|
+
用 status 补充执行事实,避免再读一份报告;不引入读取回执或模型记忆缓存。
|
|
51
|
+
|
|
35
52
|
当前 Context 的 `attention.messages` 排除明确 ack 或退役的 Message;投递成功不代表
|
|
36
53
|
处理完成。精确 wake 回执必须覆盖最新原文版本。用 `--view current` 续读当前视图,
|
|
37
54
|
默认分类列表仍保留完整历史。`collections` 计数与 `omitted` 明确表达发现不完整。抽样不能证明没有更早的待处理
|
|
38
55
|
或相关输入。读取相关固定 wake 与原始 Message;更广的需求/历史审计使用分类发现。
|
|
39
56
|
|
|
57
|
+
当前 Context 是工作索引,不是每轮重复的配置或需求全文。Task/Brief、Role、
|
|
58
|
+
Project policy、工作区、交付和决策记录即使很小,也只返回摘要与确切引用;
|
|
59
|
+
生命周期、执行权限、待处理数量和活跃执行/重试观察仍直接显示。
|
|
60
|
+
在依据需求或权限行动前,用 `context inspect` 读取相关原件;
|
|
61
|
+
`omitted: true` 不代表原件为空。每次读取仍重新计算当前身份并校验范围,
|
|
62
|
+
没有增加模型记忆缓存、推断 ACK 或陈旧状态自动复用。
|
|
63
|
+
当前工作区样本优先显示获授权的准确 Run 工作区投影,再显示 Task 主工作区,
|
|
64
|
+
然后才是其他工作区,避免历史集成目录挤掉主工作区。显式完整家族查询保留原有
|
|
65
|
+
排序、数量和记录;显示优先级不改变工作区权限,也不授予其他 Assignment 的访问权。
|
|
66
|
+
|
|
40
67
|
## 预算与续读
|
|
41
68
|
|
|
42
69
|
- 发现页默认 20 条,可选 1–100,紧凑 JSON 预算 32 KiB,计入成功 envelope、
|
|
@@ -46,7 +73,10 @@ Run 列表接受 Task 或 `task/work` 目标。
|
|
|
46
73
|
入口每个集合最多抽样八条。
|
|
47
74
|
- Global 入口最多八条本轮/可用输入,保留效果未知项;历史缺回执单独计数,
|
|
48
75
|
通过 `inbox list --view history` 显式发现,不把缺 ACK 当作未执行。
|
|
49
|
-
pending 页用 `role message list <role> --current --cursor`
|
|
76
|
+
pending 页用 `role message list <role> --current --cursor` 续读。
|
|
77
|
+
托管自身读取另含 `currentOriginals`:本页中与精确当前 Turn 关联的完整记录,
|
|
78
|
+
每项至多 4 KiB、合计 8 KiB。未来队列、历史和超限记录仍只提供发现信息与
|
|
79
|
+
原有精确读取入口;检查调用不内联原文。读取不 claim、投递或 ACK。不重复 recent、
|
|
50
80
|
Profile 正文、历史 Skill 包和累计 retry 详情。Profile 由 Manifest 精确指向。
|
|
51
81
|
- `inbox list --view current|history|all` 优先展示精确本轮输入,与自动投递共用原始记录。
|
|
52
82
|
`claim`、`ack` 接受 1–16 个精确 ID,分别返回结果。ACK 表示语义处置,
|
|
@@ -58,11 +88,19 @@ Run 列表接受 Task 或 `task/work` 目标。
|
|
|
58
88
|
`pointerPage.nextCursor` 发现更多引用;`--view full` 显式读取完整冻结包。
|
|
59
89
|
若 `input.directiveOmitted` 为 true,行动前用 `--view input` 全文读取分配指令;
|
|
60
90
|
默认入口的指令摘要不是指令正文。
|
|
91
|
+
新冻结的 Task 消息指针在原有 summary 中提供 `Excerpt:` 原文摘录,
|
|
92
|
+
最多160 UTF-8字节,保留原 revision 和 digest。摘录只辅助选择相关原文,
|
|
93
|
+
不代表完整正文或授权;后续消息修改不会改变该 Run 已冻结的摘录,
|
|
94
|
+
也不重新生成既有 Snapshot。
|
|
95
|
+
有指针时,`reads.expand` 直接展示已有的批量原文展开语法。用相关冻结
|
|
96
|
+
指针替换占位符,并非默认读全量;既有1–8项选择上限、准确Snapshot
|
|
97
|
+
校验、完整原文及分页预算不变。
|
|
61
98
|
- `session skills [--cursor ...]` 只检查当前元信息和可读性,不读技能正文;
|
|
62
99
|
配置元信息过大时使用相同文档分页。
|
|
63
100
|
- 不超过 16 KiB 的详情保持普通 JSON。更大详情返回 `contentPage`:确切来源、
|
|
64
101
|
SHA-256 digest、JSON 字符偏移、总字节数/字符数、文本、完整性与下一游标。
|
|
65
|
-
|
|
102
|
+
每块长度按完整编码后的 32 KiB 响应预算调整,计入身份与游标,并为小型命令包装
|
|
103
|
+
预留 256 字节。不拆代理对,偏移仍以 UTF-16 单元计,已发出的旧游标仍可续读。
|
|
66
104
|
不再因 4 MiB 上限而永久无法读取合法原文。
|
|
67
105
|
- Task 元信息/next-action/remote-delivery、Brief、WorkItem、Message、Run、
|
|
68
106
|
决策/里程碑/事件、Role show/status/Session 检查、wake 详情、InputRequest、
|
|
@@ -85,6 +123,27 @@ Session,也不授予外部效果权限。
|
|
|
85
123
|
`text`,校验相同 source 与 digest,最后一次性解析 JSON。不要分别解析块,也不要把
|
|
86
124
|
第一块当成完整报告。
|
|
87
125
|
|
|
126
|
+
可复制的 Node.js 消费示例见
|
|
127
|
+
[详情读取示例](cli-information-contract.md#copyable-detail-reading-example):
|
|
128
|
+
只对指定的 `task context inspect` 原文沿游标续读,验证 source/digest/连续 offset,
|
|
129
|
+
直到 `complete: true` 才拼接解析一次;不是“两页读完”,也不自动重试拒绝或源变化。
|
|
130
|
+
示例只读取,不代替 Agent 阅读、claim 或 ACK;大输出须保存在自有临时目录并分段读取。
|
|
131
|
+
不要把半页 `text` 传给 `jq fromjson`,其错误可能回显整段长文。
|
|
132
|
+
已获取页面的元数据可用
|
|
133
|
+
`.data.contentPage | {offset,len:(.text|length),complete,nextCursor}` 查看,不必重取正文。
|
|
134
|
+
此示例按需查阅,不是每次通知的新必读内容。
|
|
135
|
+
|
|
136
|
+
同一 Task 中已经确定的 1–8 条独立原文可一次读取:
|
|
137
|
+
`task context inspect <task> --refs '<发现结果中的 ref 对象 JSON 数组>'`。
|
|
138
|
+
手写命令可改用重复的 `--context-ref <store/refId@digest>`,复用 dispatch
|
|
139
|
+
的精确引用写法,避免 JSON 引号。两种选择格式不能混用,也不能混入单条选择参数。
|
|
140
|
+
每条必须含 `store`、`refId`、`digest`;可选 `revision` 仅为发现元数据,
|
|
141
|
+
不另作新鲜度校验。返回 `{taskId, items}`,每项与单条 inspect 相同。
|
|
142
|
+
整批共用原有 32 KiB 预算;出现 `contentPage` 时保留相同顺序的引用并沿
|
|
143
|
+
`--cursor` 续读。任一引用过期、重复、不可用或越权都拒绝整批读取。
|
|
144
|
+
各原文独立绑定 digest,不建立跨记录原子快照,不自动选材,不 claim/ACK,
|
|
145
|
+
也不扩大权限。只需一条时继续使用原有单条入口。
|
|
146
|
+
|
|
88
147
|
列表包含 `items`、`total`、`complete`、`nextCursor`。计数、条目和游标校验处于同一
|
|
89
148
|
授权范围。游标是不透明位置,不是通行令牌:每页重新授权。集合或文档改变时明确报错,
|
|
90
149
|
重新读取,不混合版本;无需持久分页 Session。可变集合不保证并发写入期间无中断遍历。
|
|
@@ -136,7 +195,23 @@ Run 增量基于精确父 Snapshot,返回完整变更 `refs` 与 `removedRefs`
|
|
|
136
195
|
## 效果与例外
|
|
137
196
|
|
|
138
197
|
Message send/queue/steer 回执保留身份、digest、正文字节数及原有提交/投递/control
|
|
139
|
-
|
|
198
|
+
状态,不回显正文。`operator submit --json`采用同一结构:
|
|
199
|
+
`data.taskId`、`data.message`(有界消息回执)、`data.submission`(保存时的
|
|
200
|
+
phase/planning/activation/delivery/next-step事实),不再只返回`output`字符串;
|
|
201
|
+
普通文本输出不变。同key重试复现原提交反馈,不用Task后来的状态重新解释。
|
|
202
|
+
回执不是原文,也不证明Leader已经完成。
|
|
203
|
+
`task decision record|supersede --json`返回有界保存回执:`data.taskId`、`effect: "saved"`、
|
|
204
|
+
`data.decision`(身份、状态、时间戳、整记录digest及rationale字节数)。
|
|
205
|
+
完整保存记录的JSON不超过2048 UTF-8字节时,
|
|
206
|
+
`decision`同时包含该记录全部字段,`contentOmitted: false`,可直接核对
|
|
207
|
+
实际短值,不再附带`read`后续读取指针;更大记录设`contentOmitted: true`,
|
|
208
|
+
附带准确`read`入口,省略标题、rationale及取代原因
|
|
209
|
+
正文而不截断。digest始终对应完整原始记录,不包含回执额外字段;
|
|
210
|
+
需要完整读取时仍用`decision show`。人类文本不变,
|
|
211
|
+
JSON调用方改读`data`而非旧`output`字符串。
|
|
212
|
+
这证明保存状态而非语义验收;丢失响应不授权重复record。
|
|
213
|
+
Brief 更新返回 saved 引用。
|
|
214
|
+
没有新增等待、重试、确认或审批阶段。
|
|
140
215
|
重复读游标绝不能重放变更。
|
|
141
216
|
|
|
142
217
|
激活、完成、集成和输入控制仍是完整事务业务操作,即使内部有多步工程机制。
|
|
@@ -148,6 +223,21 @@ Message send/queue/steer 回执保留身份、digest、正文字节数及原有
|
|
|
148
223
|
读取仍有自己的用途契约;不宣称它们全部受 32 KiB 限制。Web 全详情投影是独立消费者,
|
|
149
224
|
不会被 CLI 摘要悄悄替代。大 Project Knowledge 与 Task 证据用定向 Context 发现。
|
|
150
225
|
|
|
151
|
-
|
|
226
|
+
典型通知读取当前 Context 和固定 wake,再补取尚未完整返回的相关原文及其全部文档页。
|
|
227
|
+
聚焦 wake 的 JSON 对普通 Message 直接返回完整 `value`:每条最多 4 KiB,
|
|
228
|
+
合计最多 8 KiB,标记 `contentOmitted: false` 并附当前版本的精确 `ref`。
|
|
229
|
+
已有完整值可直接使用;长消息与结果报告保留读取入口,完成通知不替代报告。
|
|
230
|
+
完整内联值的 `refreshRead` 仅用于按需刷新当前来源,不是必需的后续读取;
|
|
231
|
+
只有原文省略时才返回 `read`。原先无条件跟随 `messages[].read` 的消费者应先检查
|
|
232
|
+
`contentOmitted`,完整时使用 `value`。纯文本输出只展示摘要,因此仍保留原文链接。
|
|
233
|
+
当前 Leader 的 `inbox show <wake>` 在 `originalContext` 返回相同聚焦原文;
|
|
234
|
+
已有完整值无需再次 `wake show`。权限、外层分页、claim/ACK 边界不变。
|
|
235
|
+
对已有 `wake-*` 的变更回执,导航字段由 `originals` 改为 `refreshOriginals`:
|
|
236
|
+
仅在聚焦原文缺失、不完整或需要刷新时使用,不因 claim 本身重复读取。
|
|
237
|
+
对 `pending-*` 的 claim(含相同请求的幂等重试)仍返回 `originals`,
|
|
238
|
+
因为初次查看尚未提供固定窗口原文。这是 JSON 导航字段变化,消费者需区分两类入口;
|
|
239
|
+
不记录读取历史,也不免除完整读取相关原文的要求。
|
|
240
|
+
固定窗口选择的是身份,不是可变消息正文的历史快照;后来修改由精确引用区分。
|
|
241
|
+
`--history` 不附带这些正文,claim 与 ACK 语义不变。
|
|
152
242
|
不要为了入口故意省略的详情重复读聚合。只有原文超过内联预算才增加原文分页调用;
|
|
153
243
|
摘要不能代替完整原文。
|
|
@@ -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
|
|
33
|
-
measured. These observations neither identify an old incident
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
-
|
|
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.
|
|
186
|
-
|
|
187
|
-
|
|
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.
|
|
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
|
|
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
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
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
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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
|
|
141
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
540
|
-
|
|
541
|
-
|
|
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
|
|
package/docs/provider-retry.md
CHANGED
|
@@ -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,
|
package/docs/release-workflow.md
CHANGED
|
@@ -51,6 +51,37 @@ 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
|
+
|
|
54
85
|
### 2.21.0 compatibility and migration notes
|
|
55
86
|
|
|
56
87
|
Ordinary Task, Assignment and frozen-context evidence reads now use the local
|
|
@@ -870,6 +901,12 @@ and timeout hierarchy. A no-target activation, help, `--json`, and every other
|
|
|
870
901
|
command remain on the global CLI. Activation does not add another ordinary CLI
|
|
871
902
|
routing path.
|
|
872
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
|
+
|
|
873
910
|
## Step catalog
|
|
874
911
|
|
|
875
912
|
The plan is a fixed, predeclared subset of operations. Each plan entry has an
|
|
@@ -36,6 +36,30 @@ 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
|
+
|
|
39
63
|
### 2.21.0 兼容性及迁移说明
|
|
40
64
|
|
|
41
65
|
普通 Task、Assignment 和冻结上下文证据读取改按本地资源边界处理,不再将 Task
|
|
@@ -647,6 +671,10 @@ CLI、Operator Session 和 Controller 替换保持兼容,而不必把每个命
|
|
|
647
671
|
`dist/cli.js`。因此目标发布拥有完整的交接协议和超时层级。一次无目标的激活、help、
|
|
648
672
|
`--json` 以及其他每个命令都留在全局 CLI 上。激活不新增另一条普通 CLI 路由路径。
|
|
649
673
|
|
|
674
|
+
激活的两次存储预检在隔离子进程中调用已验证目标包现有的只读升级原语,不经过目标包
|
|
675
|
+
尚未激活的普通 CLI 入口。每次预检前都要求目标已安装于此 Home,且完整性及冒烟回执
|
|
676
|
+
匹配。这既不迁移存储,也不允许 inactive release 或源码 checkout 的普通命令读写 Home。
|
|
677
|
+
|
|
650
678
|
## 步骤目录
|
|
651
679
|
|
|
652
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.
|