@zq-silk/yui 2.9.0 → 2.10.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 (65) hide show
  1. package/README.md +5 -3
  2. package/dist/cli/commandCatalog.js +21 -9
  3. package/dist/cli/helpRenderer.js +3 -1
  4. package/dist/commands/globalRoleCommands.js +30 -9
  5. package/dist/commands/inboxCommands.js +79 -22
  6. package/dist/commands/taskCommands.js +6 -1
  7. package/dist/commands/taskProjectDeliveryCommand.js +56 -0
  8. package/dist/commands/taskRemoteDeliveryCommand.js +5 -3
  9. package/dist/context/runContextPack.js +1 -0
  10. package/dist/context/runInputContract.js +1 -0
  11. package/dist/context/taskContext.js +1 -1
  12. package/dist/context/taskPhase.js +1 -1
  13. package/dist/controlPlaneCli.js +32 -17
  14. package/dist/controller/fileSchedulerStoreAdapter.js +59 -15
  15. package/dist/controller/globalInputDelivery.js +17 -7
  16. package/dist/controller/inboxTurnCheck.js +64 -0
  17. package/dist/controller/providerRetryAdmission.js +2 -0
  18. package/dist/external/gitlabPublicationVerifier.js +10 -28
  19. package/dist/grant/taskAuthorization.js +7 -2
  20. package/dist/interaction/notificationPresentation.js +9 -0
  21. package/dist/message/globalInboxRecovery.js +44 -0
  22. package/dist/message/globalInterrupt.js +1 -1
  23. package/dist/message/inboxReceipt.js +14 -6
  24. package/dist/message/inboxTurn.js +86 -0
  25. package/dist/message/message.js +11 -0
  26. package/dist/message/taskInboxOwnership.js +20 -6
  27. package/dist/repository/workspaceCleanupInspection.js +6 -1
  28. package/dist/storage/sqliteSchema.js +21 -0
  29. package/dist/storage/sqliteStore.js +13 -1
  30. package/dist/storage/storageVersions.js +1 -1
  31. package/dist/task/archiveDiagnostics.js +1 -1
  32. package/dist/task/archivePreflight.js +1 -1
  33. package/dist/task/projectDeliveryScope.js +20 -0
  34. package/dist/task/publicationToolObservation.js +4 -6
  35. package/dist/task/remoteDelivery.js +19 -8
  36. package/dist/task/remoteDeliveryService.js +5 -4
  37. package/dist/web/assets/client/i18n/en.js +4 -2
  38. package/dist/web/assets/client/i18n/zh-CN.js +4 -2
  39. package/dist/web/assets/client/views/task/deliveryResults.js +6 -2
  40. package/dist/web/controllerWeb.js +73 -21
  41. package/dist/web/taskPreviews.js +21 -13
  42. package/dist/web/webAccess.js +109 -0
  43. package/dist/web/webServer.js +45 -44
  44. package/docs/architecture/capabilities-and-resources.md +6 -4
  45. package/docs/architecture/capabilities-and-resources.zh-CN.md +5 -4
  46. package/docs/cli-information-contract.md +14 -2
  47. package/docs/cli-information-contract.zh-CN.md +9 -1
  48. package/docs/project-delivery-scope.md +59 -0
  49. package/docs/release-workflow.md +43 -0
  50. package/docs/release-workflow.zh-CN.md +35 -0
  51. package/docs/storage-baseline.md +14 -1
  52. package/docs/storage-baseline.zh-CN.md +11 -1
  53. package/docs/task-delivery.md +8 -2
  54. package/docs/task-delivery.zh-CN.md +6 -0
  55. package/docs/testing/verification-levels.md +2 -2
  56. package/docs/testing/verification-levels.zh-CN.md +2 -2
  57. package/i18n/README.zh-CN.md +6 -3
  58. package/package.json +1 -1
  59. package/skills/yui-leader/SKILL.md +26 -0
  60. package/skills/yui-leader/VERSION +1 -1
  61. package/skills/yui-operator/SKILL.md +31 -0
  62. package/skills/yui-operator/VERSION +1 -1
  63. package/skills/yui-runtime/SKILL.md +58 -5
  64. package/skills/yui-runtime/VERSION +1 -1
  65. package/skills/yui-runtime/references/recovery.md +21 -0
@@ -51,6 +51,49 @@ 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.10.0 compatibility and migration notes
55
+
56
+ This stable minor includes exact-turn inbox handling and successor recovery
57
+ (Task131 / PR #463 and Task134 / PR #464), plus authenticated trusted-LAN Web
58
+ access and current Operator lifecycle controls (Task135 / PR #465).
59
+ It also includes explicit Task Project delivery scope and safe ordinary archive
60
+ (PR #462), and deployment-specific GitLab publication URLs (PR #461).
61
+
62
+ Web still defaults to loopback. Explicit private/wildcard binding requires
63
+ `--auth-file <absolute-path>` with an owner-only password file; the browser
64
+ username is `yui`. Authentication precedes workbench content, APIs and Terminal,
65
+ while sandbox previews retain their narrower, listener-scoped read tickets.
66
+ HTTP remains unencrypted: use a trusted network, not a public deployment.
67
+ Current Operator starts, `--detach`, and `--json` return Controller-owned
68
+ receipts; inspect with `yui web --status` and stop with `yui web --stop`.
69
+ Credential rotation requires stop/start, and Controller recovery does not
70
+ automatically reopen Web. See [controlled Web access](web-access.md).
71
+
72
+ Inbox consumers should use the current/history views and exact returned
73
+ identities. Missing acknowledgement is not proof that work was never executed.
74
+ A successor inspects original input and prior effects before settling a retained
75
+ claim; it does not replay the input or borrow another Session's authority.
76
+ Exact terminal handling checks remain bounded. Project delivery exclusions
77
+ require original scoped authorization and do not erase bindings or prove a merge.
78
+ See [CLI information contracts](cli-information-contract.md) and
79
+ [Project delivery scope](project-delivery-scope.md).
80
+
81
+ Storage advances from **1.11 to 1.13** through the centralized transitions:
82
+ **1.12** declares Project delivery decisions; **1.13** declares exact inbox
83
+ attempt/target identities, Global input retirement and terminal handling checks.
84
+ Historical messages, claims and acceptance evidence are preserved without
85
+ inventing old Turn ownership or ACKs. Supported **1.0–1.12** Homes use the
86
+ existing same-major update path. With separate update authorization, use
87
+ `yui update --version 2.10.0`; the updater owns preflight, backup, migration and
88
+ Controller handover. Do not open upgraded Homes with an older binary or edit
89
+ storage manually. Package minor numbering is not a blanket compatibility promise.
90
+
91
+ Release gates reuse exact-commit Core CI and test one runtime tarball on
92
+ Linux x64 and macOS x64/arm64 with Node 20/22/24/26 before npm publication.
93
+ These are deterministic and isolated runtime checks, not real-model validation.
94
+ Publishing does not update any global CLI, migrate a production Home, replace
95
+ an Agent Session or start a production Web listener.
96
+
54
97
  ### 2.9.0 compatibility and migration notes
55
98
 
56
99
  This stable minor includes scoped Job definitions and exact execution Runs,
@@ -36,6 +36,41 @@ Agent 选择一个预先声明的计划,设施从持久状态驱动该计划
36
36
  不能将不兼容冒称为兼容,也不为回避版本选择新增历史兼容机制。包版本与协议、
37
37
  持久存储契约仍然独立:兼容性检查和必要迁移要求不变,下文存储规则不授予发版权限。
38
38
 
39
+ ### 2.10.0 兼容性及迁移说明
40
+
41
+ 本稳定 minor 包含精确 Turn 收件箱处理与继任恢复(Task131 / PR #463、
42
+ Task134 / PR #464),以及受认证保护的可信内网 Web 和当前 Operator 生命周期
43
+ 控制(Task135 / PR #465)。同时纳入显式 Task Project 交付范围与安全普通归档
44
+ (PR #462),以及部署特定 GitLab 发布 URL 支持(PR #461)。
45
+
46
+ Web 默认仍为 loopback。显式私网/通配监听要求
47
+ `--auth-file <absolute-path>` 指向仅本用户可访问的密码文件,浏览器用户名为 `yui`。
48
+ 工作台页面、API 和 Terminal 之前必须认证;沙箱预览保留仅授权当前监听内特定
49
+ 服务读取的窄票据。HTTP 仍不加密,只应在可信网络使用,不用于公网部署。
50
+ 当前 Operator、`--detach` 和 `--json` 启动返回 Controller 持有的回执;
51
+ 通过 `yui web --status` 查询、`yui web --stop` 停止。轮换密码需停止后重启,
52
+ Controller 恢复不会自动重新开放 Web。详见[受控 Web 访问](web-access.md)。
53
+
54
+ 收件箱调用者应使用 current/history 视图及返回的精确身份;缺少 ACK 不代表
55
+ 工作未执行。继任 Session 先检查原始输入和既有效果,再处理保留的 claim,
56
+ 不重放输入,也不借用另一 Session 的权限。精确 terminal 的处理检查保持有界。
57
+ Project 交付排除须有原始范围授权,不删除 binding,也不证明代码已合并。
58
+ 详见 [CLI 信息契约](cli-information-contract.zh-CN.md)和
59
+ [Project 交付范围](project-delivery-scope.md)。
60
+
61
+ 存储经集中式连续迁移从 **1.11 升至 1.13**:**1.12** 声明 Project 交付决策;
62
+ **1.13** 声明精确 inbox attempt/target 身份、Global 输入退役及 terminal 处理检查。
63
+ 历史消息、claim 和验收证据保留,不猜造旧 Turn 归属或 ACK。受支持的
64
+ **1.0–1.12** Home 沿用同 major 更新路径。另获更新授权后使用
65
+ `yui update --version 2.10.0`,由更新器负责预检、备份、迁移与 Controller 交接;
66
+ 不要用旧程序打开升级后的 Home,也不要手工编辑存储。包 minor 编号不代表
67
+ 对所有接口作向后兼容承诺。
68
+
69
+ 发布门禁复用精确提交的 Core CI,并在 npm 发布前对同一 runtime tarball 执行
70
+ Linux x64、macOS x64/arm64 与 Node 20/22/24/26 的全新安装验证。
71
+ 这是确定性和隔离运行时证据,不是真实模型验证。发布不会更新全局 CLI、
72
+ 迁移生产 Home、替换 Agent Session 或启动生产 Web。
73
+
39
74
  ### 2.9.0 兼容性及迁移说明
40
75
 
41
76
  本稳定 minor 包含分作用域的 Job 定义与精确执行 Run、持久 Schedule、受控 Project
@@ -2,7 +2,20 @@
2
2
 
3
3
  # Storage baseline 1.0
4
4
 
5
- Current storage is 1.11. The declared 1.10 → 1.11 transition adds source provenance
5
+ Current storage is 1.13. The 1.12 → 1.13 transition permits exact native attempt
6
+ identity on new inbox claims, exact target identity on new steer controls,
7
+ explicit Global inbox retirement and terminal handling-check evidence.
8
+ It does not rewrite historical messages, infer old turn ownership or synthesize
9
+ ACKs. SQL layout is unchanged. Current inputs and historical missing handling
10
+ evidence have separate bounded discovery views; neither is a second queue.
11
+
12
+ The 1.11 → 1.12 transition admits append-only
13
+ `task.project-delivery-decided` events with Project requirement, reason, actor,
14
+ original Message/digest/quote and the previous decision ID. Existing records and
15
+ SQL layout are unchanged. No historical exclusions are inferred; absent decisions
16
+ retain the required-delivery default. See [Project delivery scope](project-delivery-scope.md).
17
+
18
+ The declared 1.10 → 1.11 transition adds source provenance
6
19
  to new activation-request event payloads: an existing Message/body digest or
7
20
  exact caller-attributed native input, plus the recorded Message boundary.
8
21
  Historical events are preserved without guessed sources or replay. Missing
@@ -2,7 +2,17 @@
2
2
 
3
3
  # 存储基线 1.0
4
4
 
5
- 当前存储为 1.11。1.10 → 1.11 为新 activation-request 事件增加来源证据:
5
+ 当前存储为 1.13。1.12 → 1.13 允许新 inbox claim 记录精确 native attempt、
6
+ 新 steer control 记录精确目标,以及 Global 输入显式退役和终态缺回执检查证据。
7
+ 不改写历史消息、不推断旧轮次归属、不补造 ACK;SQL 布局不变。
8
+ 当前输入和历史处理缺证据通过有界视图分别发现,不新增第二队列。
9
+
10
+ 1.11 → 1.12 允许追加 `task.project-delivery-decided` 事件,
11
+ 记录 Project 交付要求、原因、actor、原始 Message/digest/引用及前一决定 ID。
12
+ SQL 布局和历史记录不变,不自动推断历史排除;没有决定时仍按需交付处理。
13
+ 详见 [Project 交付范围](project-delivery-scope.md)。
14
+
15
+ 1.10 → 1.11 为新 activation-request 事件增加来源证据:
6
16
  已有 Message 及正文 digest,或带调用者归属的原生输入原文,以及当时的 Message 序号边界。
7
17
  历史事件保持原样,不推测缺失来源、不重放输入;缺失来源通过读取诊断明确展示。
8
18
  SQL 布局及冻结 digest 不变,集中迁移不改写历史正文。
@@ -273,8 +273,14 @@ Once recorded, verification is a fixed observation, not live monitoring or a
273
273
  unknown results never assert a fresh success. URL/target/candidate changes reset
274
274
  verification, while title-only changes can retain it.
275
275
  GitHub repository URL comparison respects case-insensitive owner/name identity.
276
- GitLab relative deployment paths are allowed, but the complete registered
277
- service prefix must still match. Adapter observations retain the observed target
276
+ GitLab browser routes are deployment-specific: standard `/-/merge_requests/`,
277
+ legacy `/merge_requests/`, and custom service paths are allowed in both entry
278
+ points. Identity comes from structured repository/MR evidence, not a URL path
279
+ template. The complete registered URL must still match after URL parsing and
280
+ removal of one trailing slash; HTTP(S) is required and credentials, query and
281
+ fragment remain forbidden. The provider URL is retained, not rewritten to a
282
+ guessed route. A successful HTTP response is not merge evidence.
283
+ Adapter observations retain the observed target
278
284
  branch even when the earlier Publication did not specify one; missing targets
279
285
  cannot establish new verification.
280
286
 
@@ -182,6 +182,12 @@ ISO 时间戳。`provider` 表示 GitHub/GitLab 服务,不表示工具品牌
182
182
  完整 JSON 最大 64 KiB。Yui 不执行 `command`,不解析任意自然语言来判定成功。
183
183
  Leader 负责实际检查和解释输出,Core 负责身份、服务 URL、目标、候选和时间绑定。
184
184
 
185
+ GitLab 浏览路径由服务部署决定:两个验证入口均允许标准 `/-/merge_requests/`、
186
+ legacy `/merge_requests/` 和自定义服务路径,不再用 URL 模板推断仓库/MR 身份。
187
+ 结构化身份仍须匹配;完整登记 URL 经 URL 解析及移除一个末尾斜杠后仍须一致。
188
+ 仅允许 HTTP(S),禁止凭据、query 和 fragment;保留 provider 返回的 URL,
189
+ 不改写为猜测的路由。HTTP 访问成功不是合并证据。
190
+
185
191
  新证据必须引用当前不可变 Publication,距登记不超过 24 小时且不能在未来。
186
192
  观察可以早于首次登记或仅标题更新;只有不可变历史中的候选、对象、目标或远程事实
187
193
  发生实质变化,才构成观察时间下界。候选改变后又恢复,也不能复用变化前的证据。
@@ -50,12 +50,12 @@ is required.
50
50
  ## Permanent core smoke
51
51
 
52
52
  `npm test` and `npm run test:core` build the checkout and run the maintained suite.
53
- The stable suite owns current storage 1.11 and its declared 1.0 through 1.10 minor
53
+ The stable suite owns current storage 1.13 and its declared 1.0 through 1.12 minor
54
54
  transition. It contains no undeclared historical format compatibility path.
55
55
 
56
56
  Current coverage includes:
57
57
 
58
- 1. Fresh storage 1.11, exact schema/record validation, no initialization over
58
+ 1. Fresh storage 1.13, exact schema/record validation, no initialization over
59
59
  unknown data, and rejection of old integer formats without mutation.
60
60
  2. Exact-version staging, mismatched-target refusal, same-major contiguous
61
61
  minor preflight, explicit maintenance-owner identity across handover, and
@@ -36,12 +36,12 @@ Yui 是一个单用户本地产品。永久验证保护关键的 happy path 和
36
36
  ## 永久 core smoke
37
37
 
38
38
  `npm test` 和 `npm run test:core` 构建当前 checkout 并运行维护中的套件。
39
- 稳定套件维护当前存储 1.11 和明确声明的 1.0 至 1.10 连续小版本迁移,
39
+ 稳定套件维护当前存储 1.13 和明确声明的 1.0 至 1.12 连续小版本迁移,
40
40
  不包含未声明的历史格式兼容路径。
41
41
 
42
42
  当前覆盖包括:
43
43
 
44
- 1. 新建存储 1.11、精确结构与记录校验、禁止覆盖未知数据库、无修改拒绝旧整数格式。
44
+ 1. 新建存储 1.13、精确结构与记录校验、禁止覆盖未知数据库、无修改拒绝旧整数格式。
45
45
  2. 精确版本暂存、目标不匹配拒绝、同主版本连续小版本预检、交接锁显式所有者,
46
46
  以及恢复时核对捕获的协议和存储身份,不接受缺失字段。
47
47
  3. 持久 Task/Message/Decision 上下文、Draft 激活权威、mailbox 认领、
@@ -27,7 +27,7 @@ Yui 是面向编程 Agent 的本地控制面。你只需用自然语言把目标
27
27
  - **自带 Agent** —— Codex CLI、Claude Code CLI 和 ACP 通过统一边界接入,
28
28
  可替换而不丢失 Task。
29
29
  - **本地优先、私有** —— 一切运行在你自己的机器上,面向单个受信任用户;
30
- Web 仅本地回环,包含只读视图和经认证的用户控制。
30
+ Web 默认本地回环,可显式开启带认证的可信内网访问。
31
31
  - **默认隔离** —— 仓库改动发生在受管 Git worktree 中,稳定 checkout 保持只读。
32
32
 
33
33
  > **状态:** 1.1.0,当前存储版本为 1.1,已声明从 1.0 基线升级。默认更新只执行同一存储
@@ -156,6 +156,9 @@ Agent 可以重新读取任务上下文,继续兼容的 Session,或在必要
156
156
  想直观看进展,可以在另一个终端运行 `yui web`。本地 Web 展示同一份任务与
157
157
  待回答问题,也允许发送消息、回答问题,以及显式 queue、steer 或 interrupt Task 输入。
158
158
  这些经认证的 Task 控制复用 CLI 的相同操作,不是另一套需要同步的任务系统。
159
+ 内网监听要求权限受限的凭证文件;浏览器使用原生认证提示(用户名 `yui`)。
160
+ 当前 Operator 可按用户请求启动、查询和停止,不能冒充浏览器用户。HTTP 不加密。
161
+ 详见[受控 Web 访问](../docs/web-access.md)的命令、地址发现、凭证轮换及安全边界。
159
162
  详情分为四个页签:概览(用户待办、任务进展和关键决定)、交付(工作项、评审、
160
163
  集成与远程交付,按需读取)、运行(Role、原生会话活动、进行中的执行和用量)、
161
164
  记录(决定、里程碑、执行与问题的时间线)。详见[用户关注与进展](../docs/observability/README.zh-CN.md#web-用户关注与进展)。
@@ -263,7 +266,7 @@ Yui 为你组织的东西 —— 是持久对象,而不是进程:
263
266
  它负责搬运工作、记录事实——但从不判断回答好坏
264
267
 
265
268
  Agent 在 Project 中工作:只读 checkout + 隔离 worktree。
266
- Web(yui web):本地回环视图 + 经认证的用户控制。
269
+ Web(yui web):默认本地回环 + 显式认证的内网访问。
267
270
  ```
268
271
 
269
272
  ### 分层设计
@@ -272,7 +275,7 @@ Yui 为你组织的东西 —— 是持久对象,而不是进程:
272
275
 
273
276
  ```text
274
277
  体验层 Experience — 你如何交互
275
- CLI(Operator)· Web(本地回环、经认证)· 原生 Agent 会话
278
+ CLI(Operator)· Web(本地 / 经认证内网)· 原生 Agent 会话
276
279
  采集输入 · 展示事实 · 确认操作 · 调用能力
277
280
  ▼
278
281
  决策层 Intelligence — 谁来决定
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zq-silk/yui",
3
- "version": "2.9.0",
3
+ "version": "2.10.0",
4
4
  "description": "Local control plane for long-running native agent CLI sessions backed by tmux.",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -142,6 +142,32 @@ heartbeat or unchanged wait. Ordinary fact edits need no self-wake.
142
142
 
143
143
  ## Close the current turn
144
144
 
145
+ ### Adjust Project delivery scope without erasing work
146
+
147
+ When explicit user intent or an original delegation allows a Project to leave
148
+ the final delivery, read that original Message and `task remote-delivery`.
149
+ Record the bounded decision with
150
+ `task project delivery <task> <project-id> --requirement excluded --reason <reason>
151
+ --source-message <message-id> --purpose <verbatim-authorization>
152
+ --if-current <scopeDecision.id|none>`.
153
+ Interpret whether the original really authorizes this scope change; a matching
154
+ quote alone is not semantic permission. Do not exclude a Project to conceal an
155
+ unmet commitment. Ask only for a genuinely missing scope decision, not a second
156
+ approval when existing user intent or delegated judgment already covers it.
157
+ Use the same operation with `--requirement required` and the latest decision ID
158
+ to restore normal checks. Reconcile a stale guard instead of overwriting newer
159
+ intent. These append-only decisions also work on completed, unarchived Tasks
160
+ without reopening, rewriting acceptance, or rerunning work.
161
+
162
+ Unchanged Projects need no exclusion. Required changed/unknown Projects still
163
+ need exact verified delivery. Excluded Projects retain their binding, code
164
+ changes and Publication facts and are not counted as merged or verified merely
165
+ because they are excluded. Scope is not execution, write, archive or deletion
166
+ authority: open commitments and unknown execution still need settlement, and
167
+ unique commits or dirty resources remain protected. With separate archive
168
+ authorization, use ordinary archive/preflight and report retained resources;
169
+ do not recommend force merely because an authorized Project is excluded.
170
+
145
171
  For external delivery, choose any available authorized CLI/API and follow
146
172
  [Publication evidence](../yui-runtime/references/publication.md). Record exact
147
173
  tool observations through `publication verify --observation`; gh/glab are optional
@@ -1 +1 @@
1
- 5
1
+ 6
@@ -183,6 +183,23 @@ user-owned configuration and external-effect boundaries.
183
183
  Escalate only a real product tradeoff, new authority, unavailable external fact,
184
184
  credential, irreversible effect, or safety boundary.
185
185
 
186
+ For user-requested Web lifecycle operations, use `yui web`, `yui web --status`
187
+ and `yui web --stop` with the current Operator identity and intended Home.
188
+ Operator starts return a Controller-owned receipt without holding this turn
189
+ open. Non-loopback binding requires `--auth-file <absolute-path>` containing
190
+ an owner-only (0600) regular file with a unique 32–128 character printable ASCII
191
+ password; browser username is `yui`. There is no default password.
192
+ Honor the user's exact network exposure and credential scope. Never clear
193
+ managed identity, impersonate a browser user, launch a bypass server or restart
194
+ the Controller merely to open Web. Report actual access URLs and failures,
195
+ never a wildcard address or an old snapshot as a working link. Explain that
196
+ HTTP is unencrypted, and keep credentials out of messages, logs and URLs.
197
+ Lifecycle authority does not authenticate visitors. On unknown startup outcome,
198
+ inspect status before retrying; a running listener is not proof of remote reachability.
199
+ Stopping Web closes browser connections without stopping Agents. Password
200
+ rotation requires explicit stop/start; changing the file alone does not revoke
201
+ the running credential. Controller recovery does not automatically reopen Web.
202
+
186
203
  ## Configure Yui through confirmed conversation
187
204
 
188
205
  Read both effective configuration and the catalog before explaining or changing
@@ -237,6 +254,10 @@ Apply **yui-runtime**'s own-inbox flow at useful routing boundaries and before
237
254
  handoff. `yui inbox list/show/claim/ack` processes Operator input in this turn;
238
255
  do not wait for another wake or copy pending notices into new input. Read every
239
256
  relevant original and finish the authorized routing/disposition before ack.
257
+ Routing to an owning Task, recording a necessary user question, or verifying
258
+ that a later request superseded a notice may settle this input immediately;
259
+ cite the durable reference and do not wait for the downstream Task to finish.
260
+ Use the Runtime current/history split and never replay effects to repair ACK.
240
261
 
241
262
  Use JSON reads and their top-level `data` field.
242
263
  Use Global Context's bounded `pending` page to find Messages, then
@@ -287,6 +308,16 @@ Distinguish settled business and stopped execution from safely retained
287
308
  physical resources. Ordinary archive may retain the latter; follow the shared
288
309
  archive diagnostics and exact cleanup actions instead of requesting force
289
310
  merely for old terminal Integration worktrees or preserved diagnostics.
311
+ When only some bound Projects remain in the final delivery, preserve the exact
312
+ user scope decision or delegation in the owning Task and route it to its Leader.
313
+ The Leader can record `task project delivery` with the original Message and
314
+ latest scope-decision guard; this also works for completed, unarchived Tasks
315
+ without reopening them. An unchanged Project already needs no delivery.
316
+ An explicitly excluded Project is not a verified merge and its data is not
317
+ disposable. Use the shared remote-delivery/preflight projection, settle open
318
+ business and execution independently, and use ordinary authorized archive
319
+ while reporting safely retained resources. Do not demand force, delete bindings,
320
+ or solicit repeated Operator approval when the original scope authority suffices.
290
321
  When the user explicitly authorizes force archive for an eligible terminal
291
322
  Task, archive even if delivery proof or cleanup is incomplete. Report the
292
323
  warnings and retained resources without claiming merge verification or physical
@@ -1 +1 @@
1
- 3
1
+ 6
@@ -191,11 +191,13 @@ unmanaged Session is not silently replaced or adopted; use an explicit Session
191
191
  lifecycle action before enabling controlled delivery.
192
192
 
193
193
  Context reads never consume queue entries. Global Context returns a bounded
194
- `pending` discovery page, not Message bodies, Profile bodies, recent history or
195
- accumulated retry details. The Manifest retains the exact Role profile.
194
+ `pending` discovery page of current-turn and available input, not Message bodies,
195
+ Profile bodies, historical receipt debt or accumulated retry details. Its
196
+ `historyCount` is a separate absence-of-handling-evidence count, not new work.
197
+ The Manifest retains the exact Role profile.
196
198
  Read a referenced
197
199
  original with `role message show <role> <message-id> --json`. Follow a pending
198
- page's `nextCursor` using `role message list <role> --pending --cursor <cursor>`
200
+ page's `nextCursor` using `role message list <role> --current --cursor <cursor>`
199
201
  when it is incomplete; accepted delivery does not erase the Message from the
200
202
  separate all-message list. Native/transport acceptance is not implementation, and
201
203
  `interrupt-requested` is not a stopped Turn or stopped background resources.
@@ -214,13 +216,24 @@ explicit new control attempt; uncertainty does not.
214
216
 
215
217
  ## Handle your own inbox in the current turn
216
218
 
219
+ For an automatic delivery naming an exact Message or wake, use that entry
220
+ directly: read its original, claim it, and record its semantic disposition
221
+ before ending this turn. Do not first enumerate history to rediscover it.
217
222
  After loading authorized context, at useful work boundaries and before handing
218
- off, use `yui inbox list --json` to discover pending input addressed to your
219
- current managed identity. This applies to Operator, custom GlobalRole, Leader,
223
+ off, use `yui inbox list --view current --json` to discover current-turn and
224
+ available input addressed to your current managed identity. This applies to Operator, custom GlobalRole, Leader,
220
225
  Worker and Reviewer. Do not poll an empty inbox or create another model turn.
221
226
  No target Role, Task or native Session is supplied: Yui resolves your current
222
227
  identity. A native child gains no separate actor or inbox.
223
228
 
229
+ `--view history` discovers old missing receipts explicitly; default `--view all`
230
+ prioritizes current inputs and labels each entry's category. Never treat an
231
+ absent historical ACK as proof that its work was not done. Read history when a
232
+ specific reminder, recovery or user request calls for it, not every turn.
233
+ Current correlation reuses exact delivery/continuation/control identities;
234
+ active claims retain their observed native attempt when available. Missing
235
+ historical correlation is not reconstructed from timestamps or final text.
236
+
224
237
  1. Read the selected `yui inbox show <entry> --json`. Reads never consume input.
225
238
  Follow `nextCursor` and all `contentPage` pages using the rules below.
226
239
  2. Before processing, reserve exact entries with
@@ -241,6 +254,33 @@ identity. A native child gains no separate actor or inbox.
241
254
  Record an obsolete notification as requiring no further action only after
242
255
  checking its originals and current facts, never based solely on age.
243
256
 
257
+ An input can be settled as executed, legally routed/delegated, a necessary user
258
+ question raised, or superseded/no action after inspecting authoritative
259
+ originals. Put that concrete disposition and useful Task/InputRequest/result/
260
+ Publication references in `--reason`. Routing may be complete while the Task
261
+ is still running; do not hold the input until all downstream work finishes.
262
+ For supersession, identify the later source, not merely its age.
263
+
264
+ At an exact native terminal, engineering checks for unacknowledged inputs
265
+ correlated to that turn and emits at most one existing notification. This is
266
+ missing-evidence detection, never semantic ACK or proof of absent effects.
267
+ Reminder-only turns do not generate another reminder. The retained originals
268
+ remain inspectable if the bounded reminder is also missed; do not start a
269
+ private polling/retry loop or copy the business input to obtain another turn.
270
+ Task Assignment checks go to Leader for inspection and existing handoff or
271
+ retirement, not automatic Worker/Reviewer replay. Exact terminal can end an
272
+ active-consumption notification reservation without acknowledging its input;
273
+ it does not infer or release an uncertain native writer.
274
+
275
+ For obsolete Global input that was conclusively not submitted, use
276
+ `yui inbox retire <entry> --request-id <stable-id> --reason "<disposition>"`
277
+ after inspecting the original and current facts. Retirement preserves the
278
+ original target, claim and explicit management evidence; it is not ACK.
279
+ Accepted input uses normal claim/ack reconciliation. Unknown/pending control,
280
+ transport acceptance and interrupt-then ownership cannot be retired through
281
+ this operation. Task Messages retain the existing Leader `task message retire`
282
+ and exact-Assignment handoff paths.
283
+
244
284
  Claiming prevents ordinary automatic delivery; it is not processing completion.
245
285
  Acknowledgement records Agent handling, not Host acceptance, result acceptance,
246
286
  Task completion, publication or archive. Never acknowledge merely to empty the
@@ -248,6 +288,13 @@ list. On failure or interruption, leave the claim unacknowledged; it remains
248
288
  discoverable and does not expire or replay automatically. A current rightful
249
289
  successor must inspect original input and prior effects before finishing and
250
290
  acknowledging a retained claim. Never replay uncertain external actions.
291
+ After legal Session replacement, initialization can arrive before old handling
292
+ is settled. This recovery notification is not the original business input or
293
+ an acknowledgement. Read the current inbox and prior effects first. For
294
+ `claimed-by-previous-session`, retain the original claim: do not claim again.
295
+ Finish only the still-authorized handling and use a new stable ack request ID
296
+ with a concrete disposition; the receipt retains both the old claimant and
297
+ the current acknowledging actor. New queued input remains separate.
251
298
  For an exact-Session input already claimed by its selected Session, a rightful
252
299
  successor may explicitly settle that handling after inspecting the original
253
300
  and prior effects. This preserves the original target and claim; it grants no
@@ -277,6 +324,12 @@ This claim never sends the input again. A current rightful successor may settle
277
324
  an accepted Global input or Leader window while retaining the original delivery
278
325
  target; it must inspect prior effects first. Pending/unknown acceptance stays
279
326
  blocked and cannot use claim as a replay path.
327
+ An explicitly released Leader notification (`notification.resolved` with
328
+ `released-without-replay`) can be claimed for evidence inspection and settlement
329
+ after verified native stop. Its original delivery status stays unknown or
330
+ unaccepted; handling it cannot retarget Session-specific instructions or
331
+ authorize re-executing unknown effects. If a required fact or user decision is
332
+ unavailable, preserve the claim and report that exact boundary.
280
333
 
281
334
  An ack belongs to the exact original and revision: fixed windows pin
282
335
  `message.updated` event identities, including same-timestamp edits. A later
@@ -1 +1 @@
1
- 8
1
+ 10
@@ -122,6 +122,27 @@ context and fixed notification references, then chooses which still-valid
122
122
  assignment to continue. Released Leaders retain scoped diagnostic reads but
123
123
  cannot regain write authority.
124
124
 
125
+ Leader initialization is delivered separately from old inbox handling and
126
+ new queued business. A retained claim cannot block this lifecycle notification.
127
+ The current Leader reads `yui inbox list --view history --json`, then the exact originals and
128
+ prior effects. Claims survive unchanged; use `inbox ack` only after actual
129
+ handling, with the successor's own disposition. Do not claim an already-claimed
130
+ entry again. Repeated reconciliation or Controller restart does not settle
131
+ anything or repeatedly wake an idle handler.
132
+
133
+ A legally started GlobalRole successor with claims from a previous Session
134
+ receives one Session-pinned recovery Message in its existing inbox. It requests
135
+ the same inspection, not replay of those Messages. A stopped Global Session
136
+ is not started by this notice. Worker/Reviewer Assignment changes still require
137
+ the existing explicit handoff or retirement; no bulk transfer is implied.
138
+
139
+ Replacement waits for exact native/resource stop and writer release. Missing
140
+ proof requires repairing that observation or a genuinely missing user decision,
141
+ not a timeout, another name, force-ACK or record deletion. Uncertain old
142
+ notification submissions are released from scheduling without replay, retaining
143
+ their fixed wakes and `notification.resolved` evidence. They become explicitly
144
+ inspectable/settleable, not automatically accepted or resubmitted.
145
+
125
146
  ## Handle uncertainty and failed cleanup
126
147
 
127
148
  Never replay a notification whose acceptance is unknown. After evidence