@zq-silk/yui 2.6.0 → 2.8.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 (126) hide show
  1. package/README.md +23 -0
  2. package/dist/cli/commandCatalog.js +34 -7
  3. package/dist/cli/updateCommand.js +3 -0
  4. package/dist/commands/configCommands.js +1 -0
  5. package/dist/commands/globalRoleCommands.js +62 -35
  6. package/dist/commands/inboxCommands.js +372 -0
  7. package/dist/commands/roleSkillValidation.js +2 -0
  8. package/dist/commands/taskCommands.js +39 -7
  9. package/dist/commands/taskRoleRuntimeStatus.js +2 -0
  10. package/dist/context/currentSkills.js +48 -0
  11. package/dist/context/roleSessionContext.js +13 -16
  12. package/dist/context/runContextPack.js +50 -3
  13. package/dist/context/runInputContract.js +1 -1
  14. package/dist/context/sessionBootstrapManifest.js +27 -4
  15. package/dist/context/skillCatalog.js +2 -3
  16. package/dist/context/taskContext.js +38 -12
  17. package/dist/controlPlaneCli.js +58 -7
  18. package/dist/controller/controller.js +8 -2
  19. package/dist/controller/fileSchedulerStoreAdapter.js +26 -6
  20. package/dist/controller/globalInputDelivery.js +86 -16
  21. package/dist/controller/globalRuntimeAttention.js +136 -6
  22. package/dist/controller/operatorNotification.js +6 -1
  23. package/dist/controller/providerRetryDelivery.js +3 -5
  24. package/dist/controller/runtime.js +6 -2
  25. package/dist/controller/structuredProviderObservation.js +51 -15
  26. package/dist/controller/taskHostTerminalRecovery.js +33 -0
  27. package/dist/doctor/doctor.js +25 -2
  28. package/dist/executor/effectiveLaunch.js +2 -2
  29. package/dist/executor/fileRoleLaunchPlanner.js +8 -15
  30. package/dist/interaction/notificationPresentation.js +2 -2
  31. package/dist/interaction/operatorPresentation.js +1 -1
  32. package/dist/message/globalInputBacklog.js +69 -0
  33. package/dist/message/globalMessageQuery.js +1 -0
  34. package/dist/message/inboxReceipt.js +62 -0
  35. package/dist/message/message.js +6 -1
  36. package/dist/message/messageContinuation.js +34 -13
  37. package/dist/message/taskInboxOwnership.js +43 -0
  38. package/dist/models/modelManagement.js +469 -0
  39. package/dist/models/modelManagementConfig.js +46 -0
  40. package/dist/models/modelManagementFiles.js +90 -0
  41. package/dist/models/modelManagementHttp.js +90 -0
  42. package/dist/models/modelManagementTypes.js +1 -0
  43. package/dist/nativeAgent/session/backends.js +1 -1
  44. package/dist/observability/runtimeIdentity.js +1 -1
  45. package/dist/output/boundedRead.js +43 -14
  46. package/dist/resources/sqliteResourceRegistry.js +1 -1
  47. package/dist/runtime/agentEndpointIdentity.js +8 -4
  48. package/dist/runtime/agentEndpointOwnership.js +5 -6
  49. package/dist/runtime/agentHost.js +165 -24
  50. package/dist/runtime/agentHostImplementation.js +18 -0
  51. package/dist/runtime/managedCaller.js +25 -1
  52. package/dist/runtime/managedIdentity.js +1 -1
  53. package/dist/runtime/providerRetry.js +19 -1
  54. package/dist/runtime/sessionCaller.js +53 -0
  55. package/dist/scheduler/operatorEvent.js +49 -0
  56. package/dist/scheduler/operatorInputNotificationProcessor.js +5 -4
  57. package/dist/scheduler/taskWake.js +5 -0
  58. package/dist/sqlite/driver.js +108 -0
  59. package/dist/storage/contextRecords.js +28 -0
  60. package/dist/storage/sqliteSchema.js +21 -1
  61. package/dist/storage/sqliteStore.js +64 -1
  62. package/dist/storage/storageSchema.js +1 -1
  63. package/dist/storage/storageVersions.js +1 -1
  64. package/dist/storage/storeRpc.js +1 -0
  65. package/dist/storage/taskStore.js +4 -0
  66. package/dist/storage/upgrade/upgradeOrchestrator.js +1 -1
  67. package/dist/task/completionReadiness.js +13 -6
  68. package/dist/telemetry/sqliteTelemetryStore.js +1 -1
  69. package/dist/web/assets/assetManifest.js +28 -2
  70. package/dist/web/assets/client/app/manage.js +6 -0
  71. package/dist/web/assets/client/app/models.js +20 -0
  72. package/dist/web/assets/client/app/settings.js +41 -9
  73. package/dist/web/assets/client/i18n/en.js +180 -2
  74. package/dist/web/assets/client/i18n/zh-CN.js +178 -2
  75. package/dist/web/assets/client/index.js +8 -0
  76. package/dist/web/assets/client/layout/manageShell.js +94 -0
  77. package/dist/web/assets/client/lib/api.js +13 -1
  78. package/dist/web/assets/client/lib/i18n.js +5 -3
  79. package/dist/web/assets/client/views/dock/conversation.js +231 -80
  80. package/dist/web/assets/client/views/models.js +777 -0
  81. package/dist/web/assets/client/views/skills.js +22 -15
  82. package/dist/web/assets/shared/icons.js +2 -0
  83. package/dist/web/assets/shared/manageNav.js +13 -0
  84. package/dist/web/assets/shell/manage.js +54 -0
  85. package/dist/web/assets/shell/models.js +7 -0
  86. package/dist/web/assets/shell/settings.js +1 -35
  87. package/dist/web/assets/shell/settingsContent.js +30 -0
  88. package/dist/web/assets/shell/sidebar.js +1 -0
  89. package/dist/web/assets/styles/index.js +6 -0
  90. package/dist/web/assets/styles/views/conversation.js +133 -0
  91. package/dist/web/assets/styles/views/manage.js +71 -0
  92. package/dist/web/assets/styles/views/models.js +129 -0
  93. package/dist/web/assets/styles/views/settings.js +28 -14
  94. package/dist/web/assets/styles/views/sidebar.js +1 -0
  95. package/dist/web/webServer.js +59 -9
  96. package/docs/cli-information-contract.md +42 -11
  97. package/docs/cli-information-contract.zh-CN.md +28 -7
  98. package/docs/managed-turn-and-session-runtime.md +127 -5
  99. package/docs/managed-turn-and-session-runtime.zh-CN.md +83 -3
  100. package/docs/release-workflow.md +105 -9
  101. package/docs/release-workflow.zh-CN.md +73 -5
  102. package/docs/storage-baseline.md +22 -7
  103. package/docs/storage-baseline.zh-CN.md +14 -5
  104. package/docs/task-delivery.md +17 -8
  105. package/docs/task-delivery.zh-CN.md +11 -5
  106. package/docs/testing/review-evaluation.md +148 -0
  107. package/docs/testing/review-evaluation.zh-CN.md +117 -0
  108. package/docs/testing/verification-levels.md +26 -4
  109. package/docs/testing/verification-levels.zh-CN.md +11 -1
  110. package/i18n/README.zh-CN.md +19 -0
  111. package/package.json +5 -2
  112. package/skills/yui-leader/SKILL.md +28 -11
  113. package/skills/yui-leader/VERSION +1 -0
  114. package/skills/yui-leader/references/execution.md +29 -0
  115. package/skills/yui-leader/references/replicated-execution.md +7 -0
  116. package/skills/yui-operator/SKILL.md +15 -3
  117. package/skills/yui-operator/VERSION +1 -0
  118. package/skills/yui-operator/references/task-delivery.md +2 -0
  119. package/skills/yui-reviewer/SKILL.md +43 -1
  120. package/skills/yui-reviewer/VERSION +1 -0
  121. package/skills/yui-runtime/SKILL.md +144 -15
  122. package/skills/yui-runtime/VERSION +1 -0
  123. package/skills/yui-runtime/references/publication.md +16 -5
  124. package/skills/yui-runtime/references/recovery.md +24 -5
  125. package/skills/yui-worker/SKILL.md +8 -1
  126. package/skills/yui-worker/VERSION +1 -0
@@ -0,0 +1,148 @@
1
+ <p align="right"><strong>English</strong> | <a href="./review-evaluation.zh-CN.md">简体中文</a></p>
2
+
3
+ # First-round review: materials and offline evaluation
4
+
5
+ The default is one Reviewer using risk-appropriate perspectives, not a fixed
6
+ number of Agents or findings. Leader judgment still owns acceptance. Generic
7
+ methods live in `skills/yui-reviewer` and `skills/yui-leader`; project commands
8
+ and architecture rules remain in Project Skills/Policy.
9
+
10
+ ## Material handoff
11
+
12
+ Use existing requirements, decisions and verification results. A complex change
13
+ may benefit from a short Task artifact index:
14
+
15
+ - Goal/non-goals and effective decision references.
16
+ - Observable scenarios, expected behavior and independent contract sources.
17
+ - Contract entry points, callers and key risks.
18
+ - Candidate identity and actual check results (commit, environment, command,
19
+ result), distinguishing unexecuted scenarios and uncovered boundaries.
20
+ - For full re-review: repair delta, previous findings' dispositions and still
21
+ applicable evidence. The complete current frozen candidate remains in scope.
22
+
23
+ Save the index with `task artifact save`, then place its returned
24
+ `git:<commit>:<relativePath>` in Brief. New Review snapshots include the Brief
25
+ and active decisions. Read relevant bodies using the exact `store/refId` from
26
+ the Context inventory, following content pagination. A same-Task artifact is
27
+ read at its pinned commit with `task artifact read <task> <path> <commit>`.
28
+ Later Brief/decision edits do not change an existing Review snapshot. This is
29
+ not a document-completeness gate, prose parser or Skill-version freeze.
30
+ Ordinary full review and the existing equivalence Delta Recheck remain distinct.
31
+
32
+ ## Small development corpus
33
+
34
+ `scripts/review-eval/` is an offline file tool, not a scheduler, model adapter or
35
+ new Core store. It never calls a provider. No historical Task cases or results
36
+ are inputs. All eight examples are newly constructed from explicit contracts.
37
+
38
+ | Cases | Capability | Shape |
39
+ | --- | --- | --- |
40
+ | E01 | Half-open interval behavior | Introductory single root |
41
+ | E02 | Persistence failure and repeat identity | Two independent roots in one complete candidate |
42
+ | E03 | Producer/consumer opaque-cursor contract | Two modules |
43
+ | E04–E06 | Lifecycle, partial-result correspondence, authorization effects | Intermediate state/contract cases |
44
+ | E07–E08 | Distinguishing permitted behavior from defects | LRU and progressive-display controls |
45
+
46
+ Every package supplies a complete candidate, not a historical patch; there is no
47
+ required repository baseline. Requirements define inputs, non-goals and effects.
48
+ The scorer catalogue holds root/trigger/violation/impact and repair controls.
49
+ `verify.mjs` probes observable behavior against independent literal expectations,
50
+ checks seven target roots, passing repairs and normal controls. It does not
51
+ prove exhaustive correctness, independent authorship verification or Agent
52
+ effectiveness. Additional valid findings require adjudication.
53
+
54
+ ```sh
55
+ node scripts/review-eval/evaluate.mjs verify
56
+ node scripts/review-eval/evaluate.mjs export E03 basic /absolute/new-participant-directory
57
+ ```
58
+
59
+ Export uses an explicit projection of candidate source and requirements; indexed
60
+ materials add only a navigation index. Both have identical necessary contracts
61
+ and source. Exports contain no gold, repair, scorer code, family labels or Git
62
+ history. Existing destinations are refused. A failed export may leave a partial
63
+ directory: inspect it, do not use it as a complete participant package.
64
+
65
+ Export is NOT a filesystem sandbox. A participant with access to this repository,
66
+ the scorer directory, prior sessions or the network can obtain answers.
67
+ Only claim blind evaluation after a separately provisioned isolated environment
68
+ denies those paths/tools, with access probes and exact evidence. Never use a
69
+ “do not read answers” instruction as isolation.
70
+
71
+ These are public development cases. Unknown holdouts must be separately authored
72
+ after the method/protocol is fixed, with independent contract checking and a
73
+ family-level overlap audit. Renamed, repaired or near-variant development cases
74
+ cannot become holdouts. Keep holdout source, labels and adjudication outside
75
+ participant access and method-tuning conversations. This tool deliberately
76
+ does not fabricate a holdout or claim one has been evaluated.
77
+
78
+ ## Freeze a comparison before running it
79
+
80
+ ```sh
81
+ node scripts/review-eval/evaluate.mjs plan protocol.json
82
+ node scripts/review-eval/evaluate.mjs score plan.json records.json
83
+ ```
84
+
85
+ Capture stdout as separate files using your normal artifact workflow. The
86
+ protocol is a JSON object with nonempty `model`, `effort`, `tools`, `environment`,
87
+ `budget`, `seed`; positive `repeats`; and `baseline`/`improved` maps of relative
88
+ Skill paths to exact UTF-8 contents, including their VERSION and required
89
+ references. Load these only in isolated evaluation configuration, not global
90
+ installation. This file is scorer-side; it contains both methods.
91
+
92
+ The plan assigns A=baseline/basic, B=improved/basic, C=baseline/indexed,
93
+ D=improved/indexed. It fixes corpus/config/source/material/Skill digests and run
94
+ IDs, seed-orders case/repeat blocks and balances group position by Latin rotation.
95
+ Three repeats over eight development cases means 96 runs, not an authorization
96
+ or statistical-power claim. Do not change models, budgets or tools between groups.
97
+ An extra independent-Reviewer comparison is a separate experiment with all
98
+ producer and synthesis costs, optionally with matched total budgets.
99
+
100
+ There is no live execution or automatic retry command. Actual runs require
101
+ explicit resource/effect authorization, fresh participant sessions and verified
102
+ isolation. Preserve exact inputs, actually loaded Skills/configuration, raw
103
+ outputs and execution/tool evidence. Do not infer a successful run from dispatch.
104
+ Predeclare any retry protocol separately, retain original failures and every
105
+ attempt's costs; do not replace a failed planned record with a successful retry
106
+ in the primary analysis. This minimal tool reports one attempt per planned run.
107
+
108
+ ## Adjudicate before aggregation
109
+
110
+ `records.json` is an array. Each supplied record contains its planned `id`,
111
+ `planDigest`, observed `candidateDigest`, `materialDigest`, `skillDigest`, `configDigest`, and
112
+ `status` (`completed`, `timeout`, `infra-failed`, `not-run`). Executed records
113
+ also contain `evidenceRef` and `rawOutput`; incomplete records require `reason`.
114
+ Identity digests are evidence supplied by the execution recorder, not attestation
115
+ by this offline tool. Preserve the actual model/tool/environment configuration
116
+ in that evidence and exclude protocol deviations rather than relabeling them.
117
+ `configDigest` hashes the JSON object containing `model`, `effort`, `tools`,
118
+ `environment`, `budget` in that order. Other digests use the exported `digest`
119
+ helper (SHA-256 of `JSON.stringify(value)`). Reports bind the complete supplied
120
+ record array with `recordsDigest`; retain that file alongside the plan/report.
121
+
122
+ Completed records require `findings` (empty is valid). Each finding contains
123
+ `id`, original `claim`, and `verdict`: `valid`, `invalid`, `pending`, `gap` or
124
+ `suggestion`. Valid/invalid adjudications also require `root`, `reason` and
125
+ `evidence`. Match meaning, triggers, violated constraints and impact, not wording
126
+ or line numbers. Use the catalogue root ID only after checking evidence.
127
+ Unlisted valid roots use `novel:<stable-key>` after separate verification;
128
+ never automatically label them false positives. Keep disputes pending.
129
+ Use a scorer who does not see group labels when practical; disclose if author,
130
+ checker and scorer are the same person/Agent.
131
+
132
+ Optional `coverage` entries contain `perspective`, `scenario`, `expected` and
133
+ `evidence`, using the case's applicable perspectives. These remain claims to
134
+ inspect, not automatic proof. Optional `metrics` contains nonnegative `wallMs`,
135
+ `agentCalls`, `toolCalls`, `inputTokens`, `outputTokens`, `contextBytes`, `cost`
136
+ (one predeclared currency). Missing values remain missing, never estimated.
137
+
138
+ The report includes per-case repeated recalls, macro/micro known-root recall,
139
+ adjudicated unique-root precision, false positives and control false-positive
140
+ rate, duplicate/novel/pending counts, planned completion and discovery yield,
141
+ cost availability and Skill/material/interaction contrasts. Zero denominators
142
+ are null. Partial outputs are retained in originals but excluded from completed
143
+ first-round metrics. Missing planned runs remain `not-run`; they are not clean
144
+ reviews. Failed-run costs still count. Completed-only contrasts can be biased:
145
+ inspect failures, denominators and per-case variation before interpretation.
146
+ If gold changes, preserve the old plan and rescore every group under the same
147
+ new adjudication version, reporting both results. No automatic acceptance
148
+ threshold or generalization claim follows from this small synthetic corpus.
@@ -0,0 +1,117 @@
1
+ <p align="right"><a href="./review-evaluation.md">English</a> | <strong>简体中文</strong></p>
2
+
3
+ # 首轮审查:材料与离线评测
4
+
5
+ 默认单 Reviewer 按风险使用互补视角,不固定 Agent 或 Findings 数量。
6
+ 验收仍由 Leader 判断。通用方法位于 `skills/yui-reviewer` 和
7
+ `skills/yui-leader`;项目命令与架构规则保留在 Project Skill/Policy。
8
+
9
+ ## 材料交接
10
+
11
+ 复用有效要求、决定和验证结果。复杂变更可以保存简短的 Task 工件索引:
12
+
13
+ - 目标/非目标及有效决定入口。
14
+ - 可观察场景、预期行为和独立契约依据。
15
+ - 契约入口、调用方及关键风险。
16
+ - 候选身份和实际检查结果(提交、环境、命令、结果),区分未执行场景与未覆盖边界。
17
+ - 完整复审追加修复 delta、历史 Findings 处置及仍适用证据;当前完整冻结候选仍在范围内。
18
+
19
+ 通过 `task artifact save` 保存索引,将返回的
20
+ `git:<commit>:<relativePath>` 放入 Brief。新的 Review Snapshot 包含 Brief
21
+ 及 active 决定。按 Context inventory 的精确 `store/refId` 读取相关正文并跟完内容分页。
22
+ 同 Task 工件通过 `task artifact read <task> <path> <commit>` 读取固定提交。
23
+ 后续 Brief/决定修改不改变既有 Review Snapshot。这不是文档齐全门禁、
24
+ 自然语言解析器或 Skill 版本冻结机制。普通完整复审与已有等价性 Delta Recheck 保持不同语义。
25
+
26
+ ## 小型开发集
27
+
28
+ `scripts/review-eval/` 是离线文件工具,不是调度器、模型适配器或新增 Core 存储。
29
+ 它不调用 Provider,不以任何历史 Task 案例或结果为输入。八个题目均由明确契约新构造。
30
+
31
+ | 案例 | 能力 | 形态 |
32
+ | --- | --- | --- |
33
+ | E01 | 半开区间行为 | 入门单根因 |
34
+ | E02 | 持久化失败与重试身份 | 一个完整候选内的两个独立根因 |
35
+ | E03 | 生产者/消费者不透明游标契约 | 两个模块 |
36
+ | E04–E06 | 生命周期、部分结果对应、授权副作用 | 中等状态/契约题 |
37
+ | E07–E08 | 区分合法行为与缺陷 | LRU 与渐进展示正确对照 |
38
+
39
+ 每包提供完整候选,不是历史补丁,也不要求仓库基线。要求明确输入、非目标和副作用。
40
+ 评分侧目录保存根因、触发、违反约束、影响及修复对照。
41
+ `verify.mjs` 用独立的字面预期检查可观察行为,验证七个目标根因、通过的修复及正常对照。
42
+ 这不证明穷尽正确性、独立出题核实或 Agent 效果。额外有效发现需要裁定。
43
+
44
+ ```sh
45
+ node scripts/review-eval/evaluate.mjs verify
46
+ node scripts/review-eval/evaluate.mjs export E03 basic /absolute/new-participant-directory
47
+ ```
48
+
49
+ 导出仅投影候选源码与要求;indexed 材料只增加导航索引。两组的必要契约与源码完全相同。
50
+ 导出不含 gold、修复、评分器、家族标签或 Git 历史,拒绝已有目标目录。
51
+ 导出失败可能留下部分目录,应检查并避免当作完整受测包使用。
52
+
53
+ 导出不是文件系统沙箱。若受测者能读本仓库、评分目录、先前会话或网络,仍可能获得答案。
54
+ 只有另行配置的隔离环境确实拒绝这些路径/工具访问,并留存探针证据,才能声称盲测。
55
+ “禁止看答案”的提示词不能代替隔离。
56
+
57
+ 这些是公开开发题。未知保留题必须在方法与协议确定后单独编写,独立核实契约并做家族重叠审计。
58
+ 开发题的改名、修复和近似变体不能变成保留题。保留源码、标签和裁定材料不得进入受测权限或
59
+ 方法调优会话。本工具明确不伪造保留集,也不声称已评测保留集。
60
+
61
+ ## 运行前固定比较协议
62
+
63
+ ```sh
64
+ node scripts/review-eval/evaluate.mjs plan protocol.json
65
+ node scripts/review-eval/evaluate.mjs score plan.json records.json
66
+ ```
67
+
68
+ 按正常工件流程将 stdout 保存为单独文件。协议 JSON 包括非空
69
+ `model`、`effort`、`tools`、`environment`、`budget`、`seed`,正整数 `repeats`,
70
+ 以及 `baseline`/`improved` 两个“Skill 相对路径 → 精确 UTF-8 内容”映射,
71
+ 包含 VERSION 和必要引用。只在隔离评测配置加载,不修改全局安装。
72
+ 协议文件属于评分侧,含两种方法,不能整体交给受测者。
73
+
74
+ 计划固定 A=baseline/basic、B=improved/basic、C=baseline/indexed、
75
+ D=improved/indexed,记录题库、配置、源码、材料、Skill 摘要与 run ID。
76
+ 按 seed 排列案例/重复块,并以拉丁轮换平衡组别位置。八题各重复三次是 96 次运行,
77
+ 不是资源授权或统计效力承诺。各组不得更换模型、预算或工具。
78
+ 额外独立 Reviewer 属于另一项试验,计入全部生产者与汇总成本,可补同总预算比较。
79
+
80
+ 没有真实执行或自动重试命令。实际运行需要明确资源/副作用授权、全新受测会话和已验证隔离。
81
+ 保留精确输入、实际加载的 Skill/配置、原始输出与执行/工具证据,不能把投递当成功执行。
82
+ 重试规则须另行预先规定,保留原失败及全部尝试成本;主分析不得以成功重试覆盖失败的计划记录。
83
+ 此最小工具每个计划 run 只统计一次尝试。
84
+
85
+ ## 先裁定,再汇总
86
+
87
+ `records.json` 是数组。每条记录包含计划 `id`、`planDigest`、
88
+ 实际观察到的 `candidateDigest`、`materialDigest`、`skillDigest`、`configDigest` 及 `status`
89
+ (`completed`、`timeout`、`infra-failed`、`not-run`)。
90
+ 已执行记录还包含 `evidenceRef`、`rawOutput`;未完成记录需要 `reason`。
91
+ 身份摘要来自执行记录者,本离线工具不为其真实性背书。
92
+ 实际模型/工具/环境配置保留在证据中;协议偏离应单列排除,不能重标为合规运行。
93
+ `configDigest` 对依次包含 `model`、`effort`、`tools`、`environment`、`budget`
94
+ 的 JSON 对象取摘要。其他摘要使用导出的 `digest` helper
95
+ (`JSON.stringify(value)` 的 SHA-256)。报告通过 `recordsDigest` 绑定完整输入记录数组;
96
+ 该文件应与计划、报告一同保留。
97
+
98
+ 完成记录必须有 `findings`(允许空数组)。每条含 `id`、原始 `claim` 和
99
+ `verdict`:`valid`、`invalid`、`pending`、`gap` 或 `suggestion`。
100
+ valid/invalid 还必须有 `root`、`reason`、`evidence`。
101
+ 按语义、触发、违反约束及影响匹配,不按标题或行号匹配;核实证据后才使用题库根因 ID。
102
+ gold 外有效根因经单独核实后用 `novel:<stable-key>`,不自动判误报;争议保留 pending。
103
+ 可行时让评分者不见组别;编题、核实和评分由同一人/Agent 完成时必须披露独立性限制。
104
+
105
+ 可选 `coverage` 条目含 `perspective`、`scenario`、`expected`、`evidence`,
106
+ 使用案例适用视角。它仍是待检查的覆盖声明,不是自动证明。
107
+ 可选 `metrics` 包含非负 `wallMs`、`agentCalls`、`toolCalls`、`inputTokens`、
108
+ `outputTokens`、`contextBytes`、`cost`(预先约定同一币种)。
109
+ 缺失值保持缺失,不估造。
110
+
111
+ 报告包含逐题重复召回、已知根因宏/微召回、已裁定去重有效比例、误报及正确对照误报率、
112
+ 重复/新增/待裁定数、计划完成率与发现产出、成本可得性、Skill/材料/交互差异。
113
+ 零分母为 null;部分输出保留在原记录,但不混入完整首轮指标。
114
+ 缺失计划 run 保持 not-run,不算“审查无问题”;失败运行成本仍计入。
115
+ 完成子集的比较可能有选择偏差,须结合失败、分母及逐题波动解释。
116
+ gold 修改后保留旧计划,在统一新裁定版本下重算所有组并同时报告新旧结果。
117
+ 此小型构造集不产生自动验收阈值或真实项目泛化结论。
@@ -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.6 and its declared 1.0/1.1/1.2/1.3/1.4/1.5 minor
53
+ The stable suite owns current storage 1.8 and its declared 1.0/1.1/1.2/1.3/1.4/1.5/1.6/1.7 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.6, exact schema/record validation, no initialization over
58
+ 1. Fresh storage 1.8, 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
@@ -86,6 +86,12 @@ a blacklist of retired field names.
86
86
  ## Skill and instruction changes
87
87
 
88
88
  Review the shared Runtime contract and affected Role/Project Skills together.
89
+ Managed Skills ship a separate integer `VERSION`; bump the owning version for
90
+ substantive body or required-reference changes. The per-turn read reports current
91
+ stable paths/versions, not remembered model state or a historical load receipt.
92
+ Regressions cover pre-1.5 Session records upgraded from an isolated 1.4 Home,
93
+ current Skill loading on resume, preserved original queued input and newly
94
+ arriving suffixes, plus missing current files versus missing audit packages.
89
95
  Check instruction boundaries with a few relevant scenarios: analysis remains
90
96
  read-only, existing mechanisms are reused, Session loss preserves Task intent,
91
97
  and execution failure does not prevent authorized supervision. This is a
@@ -96,6 +102,10 @@ including cross-Role links. Entry points and their referenced Markdown must
96
102
  ship together. File/format checks establish availability, not Agent behavior;
97
103
  do not add prose-matching tests or claim model validation from static checks.
98
104
 
105
+ For review-material handoff and the small original development corpus, see
106
+ [review evaluation](review-evaluation.md). Its offline contract probes and
107
+ adjudication aggregation are deterministic; they do not run or measure a model.
108
+
99
109
  ## CI and release
100
110
 
101
111
  `ci.yml` runs core plus one assembled-package normal-path smoke per supported
@@ -120,6 +130,13 @@ freshly installed package through
120
130
  artifact and provenance boundaries. This validates runtime integration, not
121
131
  real-model behavior. Pure contract and safety tests remain in `test/core`;
122
132
  production wiring is exercised here rather than only through mocked ports.
133
+ The same release matrix runs `test/core/sqlite-driver.test.js` against the
134
+ installed consumer: native selection boundaries plus real SQL, transactions,
135
+ JSON/RETURNING, WAL and backup for each usable optional SQLite candidate.
136
+ An unavailable optional candidate is explicitly skipped, not reported as
137
+ compatible; the normal selected-driver path must still pass. Doctor smoke
138
+ reports the selected driver, engine and fallback reason. This matrix does not
139
+ prove old-glibc compatibility.
123
140
  The native dependency check launches a fixed local program through PTY and
124
141
  requires its output and normal exit. Installed-package smoke explicitly checks
125
142
  default Doctor's PTY results using dependencies resolved from the consumer.
@@ -132,8 +149,13 @@ The package smoke also checks unconditional status identity and update-owned
132
149
  resource/identity capture through the assembled package. Real lifecycle children
133
150
  stop the exact Controller and restore its captured launch identity while their
134
151
  parent holds the handover lock. Unrelated callers remain fenced, the lock stays
135
- owned by the parent, and durable input survives. These checks have no installation
136
- or publication effect.
152
+ owned by the parent, and durable input survives. A live Operator Host also spans
153
+ that replacement: a Desktop-direct terminal is persisted during Controller
154
+ downtime, then the successor drains the queued user input and engineering notice
155
+ without changing their original identities or replacing the Host. This is a
156
+ current-contract process-handover regression, not proof of compatibility with
157
+ every historical Host build. These checks have no installation or publication
158
+ effect.
137
159
 
138
160
  Configured Agents acting as developers or reviewers are ordinary execution
139
161
  resources. Using a live provider or model as the subject of validation is
@@ -70,6 +70,9 @@ package-start 检查跟随已安装树中的本地 Skill 引用,包括跨 Role
70
70
  的 Markdown 必须一起发布。文件/格式检查确立可用性,而不是 Agent 行为;不要添加基于
71
71
  散文匹配的测试,也不要从静态检查中宣称模型验证。
72
72
 
73
+ 审查材料交接与小型原创开发集见[审查评测](review-evaluation.zh-CN.md)。
74
+ 其中离线契约探针和裁定汇总属于确定性检查,不运行或测量模型。
75
+
73
76
  ## CI 与发布
74
77
 
75
78
  `ci.yml` 在每个 PR 上构建一次,运行 core 及一个组装包正常链路检查,不重复 lint,
@@ -87,6 +90,10 @@ setup、输入跨重启持久化及幂等、scratch 激活、原生结果入库
87
90
  npm bin、依赖、受支持 Node 版本、产物和 provenance 边界。这证明运行时集成,不证明
88
91
  真实模型行为。纯契约与安全检查保留在 `test/core`,生产组件组装在这里验证,
89
92
  不只依赖模拟端口。
93
+ 同一发布矩阵还针对消费者安装包运行 `test/core/sqlite-driver.test.js`,验证原生
94
+ 选择边界,并对每个可用的可选 SQLite 候选执行真实 SQL、事务、JSON/RETURNING、
95
+ WAL 和备份检查。不可用候选会明确标记跳过,不视为兼容;正常选择路径仍必须通过。
96
+ Doctor 冒烟报告选中的驱动、引擎和回退原因。该矩阵不能证明旧 glibc 环境兼容。
90
97
  原生依赖检查必须通过 PTY 启动固定本地程序,确认输出和正常退出。安装包 smoke
91
98
  明确断言默认 Doctor 的 PTY 检查成功,并从消费者安装目录解析依赖。macOS 还会
92
99
  在可丢弃的依赖副本中移除 spawn-helper 执行权限,验证 Doctor 报出实际 helper
@@ -95,7 +102,10 @@ npm bin、依赖、受支持 Node 版本、产物和 provenance 边界。这证
95
102
  这不是整个 Doctor 一秒内返回的保证。
96
103
  组装包检查还验证固定身份输出,以及升级侧通过组装包采集资源和精确 Controller 身份,
97
104
  并在父进程持有交接锁时,通过真实生命周期子进程停止精确 Controller、恢复其已捕获的
98
- 启动身份。无关调用仍被锁阻止,锁保持由父进程持有,持久输入不变;
105
+ 启动身份。无关调用仍被锁阻止,锁保持由父进程持有,持久输入不变。
106
+ 同一个存活 Operator Host 跨越交接:在 Controller 停机期间持久保存 Desktop
107
+ 直接回合的终态,随后由新 Controller 推进排队的用户输入和工程通知,保留原始输入身份,
108
+ 不替换 Host。这是当前契约下的进程交接回归,不证明所有历史 Host 实现都兼容;
99
109
  这些检查不执行安装或发布效果。
100
110
 
101
111
  作为开发者或审查者的已配置 Agent 是普通执行资源。把一个真实 provider 或模型作为验证
@@ -56,6 +56,25 @@ Claude 自身的 key 确认、目录信任等交互仍可能需要你完成。
56
56
  npm install -g @zq-silk/yui
57
57
  ```
58
58
 
59
+ 打开真实 Home 前,Yui 会惰性选择 SQLite:先用 `sqlite-modern`
60
+ (`better-sqlite3@13.0.3`,N-API)建立可丢弃的内存连接,仅在明确的原生绑定缺失、
61
+ Node ABI 或系统动态库不兼容时尝试 `sqlite-compat`(`better-sqlite3@10.1.0`)。
62
+ 每个进程固定首次成功的选择;Home 权限、损坏、锁定、SQL 与迁移错误都不会
63
+ 触发驱动切换。`yui doctor` 单独报告驱动版本、实际 SQLite 引擎和回退原因,
64
+ 与 Home 健康检查区分。
65
+
66
+ N-API 驱动避开了旧驱动在 Node 24.19/24.20 上的原生 `ObjectWrap` 垃圾回收崩溃。
67
+ 它要求 Node-API 10;旧 API 的运行时(包括 Node 20 与 Node 22.9)会在加载
68
+ 原生模块前跳过它,使用兼容候选。此依赖修正不要求更换
69
+ 全局 Node 或迁移 Home。
70
+
71
+ npm 安装时会**分别尝试两个**固定 optional alias,并非新版失败后才安装旧版,
72
+ 因此下载体积、安装和编译时间可能增加。可选依赖安装失败不一定使 npm 失败,
73
+ 但两个候选都不可用时 Yui 仍无法运行;不要使用 `--omit=optional`。
74
+ 兼容驱动使用旧 SQLite(3.46.0),不包含后续修复,也不保证兼容任意旧 glibc、
75
+ 编译器或较新的 Node ABI。上述 Node 支持范围不变;仍可能需要升级系统或工具链。
76
+ 驱动选择不会降级或迁移 Home 数据。
77
+
59
78
  ### 2. 自己初始化,或交给 Agent
60
79
 
61
80
  在终端中运行交互式初始化:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zq-silk/yui",
3
- "version": "2.6.0",
3
+ "version": "2.8.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,
@@ -48,9 +48,12 @@
48
48
  "dependencies": {
49
49
  "@xterm/addon-fit": "^0.11.0",
50
50
  "@xterm/xterm": "^6.0.0",
51
- "better-sqlite3": "^12.11.1",
52
51
  "node-pty": "1.2.0-beta.15",
53
52
  "smol-toml": "1.8.0",
54
53
  "ws": "^8.21.1"
54
+ },
55
+ "optionalDependencies": {
56
+ "sqlite-modern": "npm:better-sqlite3@13.0.3",
57
+ "sqlite-compat": "npm:better-sqlite3@10.1.0"
55
58
  }
56
59
  }
@@ -1,11 +1,13 @@
1
1
  ---
2
2
  name: yui-leader
3
- description: Lead one Yui Task through authorized planning, activation handoff, execution and acceptance, choosing responsibilities and a useful stopping point from its current stage and user intent.
3
+ description: Lead one Yui Task through authorized planning, activation handoff, execution, acceptance and same-result follow-up, including reopening its completed, unarchived result for an explicit implementation or delivery request.
4
4
  ---
5
5
 
6
6
  # Yui Leader
7
7
 
8
- Follow [yui-runtime](../yui-runtime/SKILL.md) first. Load the exact Context Pack
8
+ Follow [yui-runtime](../yui-runtime/SKILL.md) first, including its lightweight
9
+ `yui session skills --json` check at the start of every turn and full reload when
10
+ versions change or context is missing/recovered. Load the exact Context Pack
9
11
  for an explicitly dispatched AgentRun; for direct conversation or a Task
10
12
  notification, read current Task context using `yui task context <task-id> --json`.
11
13
  No self-dispatch or old completed Run is needed. Read the actual Task
@@ -54,15 +56,22 @@ or planning work; the routes below do not override those restrictions.
54
56
  even on an active Task. Do not turn it into edits or dispatch. A result
55
57
  notification is different: read its original results and advance the
56
58
  outstanding authorized requirement.
57
- - **Completed, cancelled, retired or archived, or execution gate disabled:**
58
- explain/query authorized facts only unless a specific further action has
59
- been authorized and is legal. A conversation does not reopen, reactivate or
60
- resume execution. If new implementation is requested, identify the needed
61
- lifecycle/authority action for the Operator; do not manufacture a Run.
62
- An explicit same-result follow-up on a completed, unarchived Task can authorize
63
- the Operator's necessary reopen and submission without a second mechanical
64
- confirmation. Read the
65
- [post-completion routing boundary](../yui-runtime/references/publication.md#post-completion-routing-boundary).
59
+ - **Completed, unarchived, explicit same-result implementation or delivery request:**
60
+ the current matching Leader may call `task reopen <task-id>` for its own Task,
61
+ then continue that bounded request without a mandatory Operator handoff or
62
+ another “reopen” confirmation. Read the
63
+ [post-completion routing boundary](../yui-runtime/references/publication.md#post-completion-routing-boundary)
64
+ first, inspect the reopen result, and reassess current Session/workspace
65
+ authority and the execution gate before delivery. Reopening is lifecycle
66
+ management, not a planning Session's promotion to delivery.
67
+ - **Cancelled/retired, archived, execution gate disabled, or no new execution authority:**
68
+ explain/query authorized facts only unless a specific further action is
69
+ authorized and legal. The Leader cannot restore cancelled/retired intent;
70
+ archived Tasks cannot reopen. An independent stop needs its separately
71
+ authorized start/cleanup path; reopen does not lift it. Queries, discussion,
72
+ ordinary notifications and Session recovery do not authorize reopening or
73
+ resumption. Identify a genuinely missing lifecycle/authority action for the
74
+ Operator; do not manufacture a Run or reopen merely to obtain authority.
66
75
  Publication recording/adoption is not a way to start terminal-Task execution.
67
76
 
68
77
  These are instruction routes, not new lifecycle states or a scheduling
@@ -82,6 +91,14 @@ the failed target need not be running for you to act.
82
91
 
83
92
  ## Maintain useful durable context
84
93
 
94
+ Apply **yui-runtime**'s own-inbox flow before acceptance or completion and at
95
+ useful work boundaries. A Leader inbox contains its exact notification windows
96
+ and messages for its current managed Assignment, not every Task Message.
97
+ For a window, read its full focused wake and relevant originals; for an
98
+ Assignment message, read its complete original. Dispose of results explicitly,
99
+ then ack the exact entry. Inbox acknowledgement
100
+ never accepts a Candidate or completes the Task.
101
+
85
102
  The DB Brief is the current summary, not a full plan or a history of messages.
86
103
  After meaningful progress, use `task brief update` with only intended fields;
87
104
  read `task event list` before deliberately restoring an older value. Keep
@@ -0,0 +1 @@
1
+ 3
@@ -303,6 +303,24 @@ authority. Never invent authorization, impersonate Operator, or modify the core
303
303
 
304
304
  ## Validate and make the review judgment
305
305
 
306
+ Prepare useful evidence, not a documentation gate. Supply or reference the
307
+ effective goals/non-goals and decisions, independently grounded expected
308
+ behavior, key user paths/constraints, contract entry points and relevant callers.
309
+ Keep three things distinct: a behavioral scenario and its expectation, an
310
+ executable test reference, and an actual result with candidate/environment/
311
+ command. Disclose real gaps rather than deriving acceptance from current code.
312
+
313
+ Small tasks can reference existing materials directly. For complex tasks, put a
314
+ short review index in Task artifacts and its commit-pinned reference in Brief.
315
+ Keep Brief an up-to-date summary, not a copy of documents or accumulated history.
316
+ Review Context carries the frozen Brief and active decisions; inspect the
317
+ actual pointer inventory when a material's delivery is uncertain. Read referenced
318
+ same-Task artifacts at their fixed commits, not HEAD. Do not assume a path in
319
+ `--input`, a WorkItem-only `--context-ref` option, or a summary grants Review
320
+ access. Recover a missing authorized reference through existing mechanisms;
321
+ do not ask the Reviewer to bypass scope. Materials guide independent inspection,
322
+ not its upper bound.
323
+
306
324
  Use the smallest evidence that establishes the accepted behavior and material
307
325
  boundaries. Do not repeat a successful unchanged check. Run the Project's
308
326
  complete local delivery validation once on the final candidate when its Policy
@@ -328,6 +346,10 @@ Use one direct main Reviewer by default. If independent replicas materially
328
346
  improve evidence, read [replicated execution](replicated-execution.md)
329
347
  before dispatch or synthesis. Honor required review contracts even when a
330
348
  cheaper execution path is otherwise available.
349
+ One Reviewer should use the applicable complementary perspectives in one round.
350
+ Consider independent replication for genuinely complementary cross-system risks,
351
+ not a fixed headcount or file/frontend/backend partition. Keep the same candidate
352
+ and common requirements; risk emphasis must not hide cross-layer contracts.
331
353
 
332
354
  When several WorkItems contribute to one outcome, prefer one independent
333
355
  Task-final Review after their accepted results are integrated over repeating a
@@ -358,6 +380,13 @@ main synthesis through its exact AgentRun, preserving its selected source snapsh
358
380
  A Worker or Reviewer AgentRun result is evidence, not acceptance. Inspect the
359
381
  result, diff, checks, and current Candidate before deciding.
360
382
 
383
+ Group confirmed findings by root cause and repair other reachable instances
384
+ within scope together. For ordinary full re-review, preserve the current complete
385
+ candidate and requirements; add repair delta, prior finding dispositions and
386
+ still-valid evidence. Delta is an attention aid, not the full-review boundary.
387
+ Do not conflate this with an explicitly authorized equivalence Delta Recheck.
388
+ Neither finding counts, fixed round counts nor a majority vote decides acceptance.
389
+
361
390
  If a result is insufficient, reject it with bounded feedback and redispatch
362
391
  the same WorkItem and Role while scope remains valid. Before accepting isolated
363
392
  Git changes, read [Integration](integration.md) to capture and
@@ -31,6 +31,9 @@ Retry main synthesis through its exact AgentRun, preserving the source snapshot.
31
31
 
32
32
  A Producer independently inspects or implements its exact frozen Assignment
33
33
  in the supplied Lane workspace and returns one complete original result.
34
+ For Review, give Producers common requirements/contracts and the same candidate.
35
+ Different risk emphases are not file ownership or permission to omit cross-layer
36
+ interactions. Form independent initial results before reading sibling conclusions.
34
37
  Its evidence does not authorize a Candidate, ChangeSet, Integration or
35
38
  acceptance decision outside the assigned protocol.
36
39
 
@@ -40,3 +43,7 @@ judgment, and returns one authoritative report. Do not mutate source results,
40
43
  omit selected evidence, rerun Producers, or substitute a winning Lane for
41
44
  synthesis. A Review report remains evidence for Task acceptance, not acceptance
42
45
  itself.
46
+ Deduplicate by root cause while retaining distinct triggers, coverage and
47
+ unexamined risks. Explain disagreements and unresolved evidence; do not discard
48
+ a valid minority finding or substitute voting for checking its contract and
49
+ reachability.
@@ -5,7 +5,8 @@ description: Route requests and follow-up delivery through the owning Task Leade
5
5
 
6
6
  # Yui Operator
7
7
 
8
- Follow [yui-runtime](../yui-runtime/SKILL.md) for the Session's authorized entry. A global Operator reads
8
+ Follow [yui-runtime](../yui-runtime/SKILL.md) for the Session's authorized entry,
9
+ per-turn version/availability check and conditional full reload. A global Operator reads
9
10
  its Global Context without inventing a Task AgentRun. For explicit Task dispatch,
10
11
  load the exact Run Context Pack and preserve its scope and permission boundaries.
11
12
 
@@ -160,7 +161,9 @@ does not establish remote merge.
160
161
  For an explicitly requested continuation of a completed, unarchived result,
161
162
  use the existing `task reopen` then durable submission path. The user's request
162
163
  authorizes the necessary reopening within that scope; do not demand that they
163
- also say “reopen.” Ordinary messages do not auto-reopen a Task. Keep cancelled,
164
+ also say “reopen.” A current matching Leader may also reopen its own Task and
165
+ continue an already-received authorized request; Operator routing is not a
166
+ mandatory handoff. Ordinary messages do not auto-reopen a Task. Keep cancelled,
164
167
  archived and independently stopped execution boundaries separate, and do not
165
168
  use Session recovery to bypass them.
166
169
 
@@ -230,13 +233,22 @@ a dormant Role and verify the complete binding before the next launch.
230
233
 
231
234
  ## Present current progress
232
235
 
236
+ Apply **yui-runtime**'s own-inbox flow at useful routing boundaries and before
237
+ handoff. `yui inbox list/show/claim/ack` processes Operator input in this turn;
238
+ do not wait for another wake or copy pending notices into new input. Read every
239
+ relevant original and finish the authorized routing/disposition before ack.
240
+
233
241
  Use JSON reads and their top-level `data` field.
234
- Use Global Context's `pending`/`recent` pages to find Messages, then
242
+ Use Global Context's bounded `pending` page to find Messages, then
235
243
  `role message show operator <id>` for the original. A successful send receipt
236
244
  contains saved identity and delivery/control facts, not another copy of the
237
245
  submitted body. Follow Runtime's bounded-read contract for list continuations
238
246
  and long `contentPage` details; do not decode `output` as nested JSON or print
239
247
  an entire Context again merely to extract one already-returned reference.
248
+ History and diagnostic aggregates are explicit `role message list` reads.
249
+ Use `--diagnostics` for classified occurrence counts and `--diagnostic <key>`
250
+ for evidence discovery within the caller's authorized Role scope. Do not
251
+ automatically traverse all history or ask a failing Operator to wake itself.
240
252
 
241
253
  Report the facts needed to understand the outcome:
242
254
 
@@ -0,0 +1 @@
1
+ 3
@@ -39,6 +39,8 @@ Separate lifecycle, execution gate and Session authority:
39
39
  necessary `task reopen` before submitting that bounded request. Follow the
40
40
  [authorized two-step path](../../yui-runtime/references/publication.md#post-completion-routing-boundary);
41
41
  do not require a second mechanical “reopen” confirmation.
42
+ The current matching Leader may perform that reopen itself and continue
43
+ an already-received request; it need not send the work back to Operator.
42
44
  - Cancelled/retired intent is not active work. An archived Task cannot be reopened;
43
45
  retained workspaces and historical Sessions do not authorize execution.
44
46
  - Session loss or replacement is not a new result or an automatic lifecycle