@ckanner/flywheel 0.31.0 → 0.32.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 (153) hide show
  1. package/CHANGELOG.md +122 -5
  2. package/CONTRIBUTING.md +19 -0
  3. package/LICENSE +21 -0
  4. package/README.en.md +4 -171
  5. package/README.md +152 -269
  6. package/README.zh-CN.md +116 -0
  7. package/bin/flywheel-claude-code-pro-worker.js +1 -1
  8. package/bin/flywheel-codex-pro-worker.js +1 -1
  9. package/bin/flywheel-dsh-worker.js +1 -1
  10. package/bin/flywheel.js +1 -1
  11. package/bin/runtime.js +1 -1
  12. package/docs/README.md +86 -0
  13. package/docs/README.zh-CN.md +64 -0
  14. package/docs/archive/README.md +13 -0
  15. package/docs/archive/codex-pro-adapter-handoff.md +197 -0
  16. package/docs/archive/design-v0.24.md +540 -0
  17. package/docs/design.md +812 -0
  18. package/docs/en/claude-code-pro.md +25 -16
  19. package/docs/en/configuration.md +405 -145
  20. package/docs/en/contributing.md +303 -0
  21. package/docs/en/flow-console.md +142 -24
  22. package/docs/en/getting-started.md +232 -126
  23. package/docs/en/investigation.md +263 -0
  24. package/docs/en/jev-shadow.md +5 -0
  25. package/docs/en/jev.md +240 -0
  26. package/docs/en/model-policy.md +154 -62
  27. package/docs/en/releasing.md +207 -0
  28. package/docs/en/session-evaluation.md +4 -2
  29. package/docs/en/session-recovery.md +88 -6
  30. package/docs/en/workflow.md +241 -114
  31. package/docs/evaluation/README.md +12 -0
  32. package/docs/evaluation/jev-historical-provisional.json +138 -0
  33. package/docs/evaluation/jev-historical-result-2026-11-10.json +174 -0
  34. package/docs/plans/2026-11-01-dsh-integration.md +67 -0
  35. package/docs/plans/2026-11-01-model-profiles-preflight.md +29 -0
  36. package/docs/plans/2026-11-01-npm-installation.md +19 -0
  37. package/docs/plans/2026-11-03-codex-pro-default.md +28 -0
  38. package/docs/plans/2026-11-06-adaptive-workflow.md +365 -0
  39. package/docs/plans/2026-11-07-session-lifecycle.en.md +424 -0
  40. package/docs/plans/2026-11-07-session-lifecycle.md +337 -0
  41. package/docs/plans/2026-11-08-flow-console.md +271 -0
  42. package/docs/plans/2026-11-10-jev-shadow.md +32 -0
  43. package/docs/plans/2026-11-10-task-discovery.md +17 -0
  44. package/docs/plans/2026-11-10-workbench-redesign.md +19 -0
  45. package/docs/plans/2026-11-12-feedback-driven-workflows.md +739 -0
  46. package/docs/plans/2026-11-12-unified-jev-decisions.md +89 -0
  47. package/docs/plans/2026-11-13-jev-execution-decisions.md +110 -0
  48. package/docs/plans/2026-11-13-p5-ready-queue-prewarm.md +178 -0
  49. package/docs/plans/README.md +25 -0
  50. package/docs/reviews/2026-08-24-v0.18-review-fixplan.md +265 -0
  51. package/docs/reviews/2026-09-12-pr4-pr5-review.md +70 -0
  52. package/docs/reviews/README.md +12 -0
  53. package/docs/validation/2026-11-01-npm-installation.md +105 -0
  54. package/docs/validation/2026-11-01-profiles-preflight.md +67 -0
  55. package/docs/validation/2026-11-01-results.md +114 -0
  56. package/docs/validation/2026-11-03-codex-pro-default.md +90 -0
  57. package/docs/validation/2026-11-04-dsh-native-view.md +85 -0
  58. package/docs/validation/2026-11-04-release-0.28.1.md +33 -0
  59. package/docs/validation/2026-11-04-release-0.28.2.md +35 -0
  60. package/docs/validation/2026-11-05-dsh-0.2.2-compatibility.md +26 -0
  61. package/docs/validation/2026-11-05-registry-smoke-recovery.md +26 -0
  62. package/docs/validation/2026-11-05-release-0.28.3.md +32 -0
  63. package/docs/validation/2026-11-05-subscription-model-access.md +60 -0
  64. package/docs/validation/2026-11-05-view-order.md +14 -0
  65. package/docs/validation/2026-11-07-adaptive-workflow.md +79 -0
  66. package/docs/validation/2026-11-07-claude-code-pro.md +144 -0
  67. package/docs/validation/2026-11-07-session-lifecycle.md +136 -0
  68. package/docs/validation/2026-11-08-session-p3-p4.md +99 -0
  69. package/docs/validation/2026-11-09-flow-console.md +81 -0
  70. package/docs/validation/2026-11-10-jev-shadow.md +50 -0
  71. package/docs/validation/2026-11-10-task-discovery.md +45 -0
  72. package/docs/validation/2026-11-10-workbench-redesign.md +54 -0
  73. package/docs/validation/2026-11-11-release-0.30.2.md +65 -0
  74. package/docs/validation/2026-11-11-release-0.31.0.md +46 -0
  75. package/docs/validation/2026-11-12-dsh-0.2.2-rc.2.md +58 -0
  76. package/docs/validation/2026-11-12-feedback-driven-workflows.md +187 -0
  77. package/docs/validation/2026-11-12-release-0.31.1.md +58 -0
  78. package/docs/validation/2026-11-12-session-console-ux.md +46 -0
  79. package/docs/validation/2026-11-12-unified-jev-decisions.md +93 -0
  80. package/docs/validation/2026-11-13-dsh-settings-controls.md +104 -0
  81. package/docs/validation/2026-11-13-jev-execution-decisions.md +140 -0
  82. package/docs/validation/2026-11-13-p5-ready-queue-prewarm.md +138 -0
  83. package/docs/validation/2026-11-13-p5-review-closure.md +114 -0
  84. package/docs/validation/2026-11-13-p5-tracked-runtime-fixes.md +108 -0
  85. package/docs/validation/2026-11-13-prewarm-receipts-and-expiry-tests.md +92 -0
  86. package/docs/validation/2026-11-13-workspace-redesign.md +66 -0
  87. package/docs/validation/README.md +51 -0
  88. package/docs/validation/evidence/2026-11-08-session-p3-p4.json +5430 -0
  89. package/docs/validation/evidence/2026-11-13-p5-npm-candidate.json +54 -0
  90. package/docs/validation/evidence/claude-node-bridges.txt +118 -0
  91. package/docs/validation/evidence/claude-npm-build.txt +15 -0
  92. package/docs/validation/evidence/claude-npm-candidate.json +54 -0
  93. package/docs/validation/evidence/claude-npm-install.txt +21 -0
  94. package/docs/validation/evidence/claude-npm-tests.txt +145 -0
  95. package/docs/validation/evidence/claude-plugin-tests.txt +205 -0
  96. package/docs/validation/evidence/claude-quality-gate.txt +29 -0
  97. package/docs/validation/evidence/claude-race.txt +7 -0
  98. package/docs/validation/evidence/codex-pro-070-probes.txt +4 -0
  99. package/docs/validation/evidence/dsh-bridge.txt +4 -0
  100. package/docs/validation/evidence/dsh-native-view-bridge-tests.txt +1 -0
  101. package/docs/validation/evidence/dsh-native-view-build.txt +15 -0
  102. package/docs/validation/evidence/dsh-native-view-candidate.json +54 -0
  103. package/docs/validation/evidence/dsh-native-view-inspect.txt +27 -0
  104. package/docs/validation/evidence/dsh-native-view-install-tests.txt +19 -0
  105. package/docs/validation/evidence/dsh-native-view-npm-tests.txt +143 -0
  106. package/docs/validation/evidence/dsh-native-view-plugin-tests.txt +99 -0
  107. package/docs/validation/evidence/dsh-native-view-quality-gate.txt +29 -0
  108. package/docs/validation/evidence/dsh-plugin-tests.txt +48 -0
  109. package/docs/validation/evidence/function-coverage.txt +378 -0
  110. package/docs/validation/evidence/npm-build.txt +13 -0
  111. package/docs/validation/evidence/npm-contract-tests.txt +65 -0
  112. package/docs/validation/evidence/npm-dsh-bridge.txt +18 -0
  113. package/docs/validation/evidence/npm-dsh-plugin-tests.txt +62 -0
  114. package/docs/validation/evidence/npm-function-coverage.txt +420 -0
  115. package/docs/validation/evidence/npm-install-tests.txt +20 -0
  116. package/docs/validation/evidence/npm-quality-gate.txt +29 -0
  117. package/docs/validation/evidence/npm-race.txt +7 -0
  118. package/docs/validation/evidence/pr-dsh-bridge.txt +4 -0
  119. package/docs/validation/evidence/pr-dsh-plugin-tests.txt +48 -0
  120. package/docs/validation/evidence/pr-function-coverage.txt +379 -0
  121. package/docs/validation/evidence/pr-quality-gate.txt +28 -0
  122. package/docs/validation/evidence/pr-race.txt +6 -0
  123. package/docs/validation/evidence/profiles-control-smoke.json +1 -0
  124. package/docs/validation/evidence/profiles-dsh-bridge.txt +18 -0
  125. package/docs/validation/evidence/profiles-dsh-plugin-tests.txt +59 -0
  126. package/docs/validation/evidence/profiles-function-coverage.txt +411 -0
  127. package/docs/validation/evidence/profiles-quality-gate.txt +29 -0
  128. package/docs/validation/evidence/profiles-race.txt +7 -0
  129. package/docs/validation/evidence/quality-gate.txt +28 -0
  130. package/docs/validation/evidence/race.txt +6 -0
  131. package/docs/validation/evidence/watchdog-startup-after.txt +2 -0
  132. package/docs/validation/evidence/watchdog-startup-before.txt +6 -0
  133. package/docs/validation/evidence/watchdog-startup-quality-gate.txt +29 -0
  134. package/docs/validation/evidence/watchdog-startup-race.txt +7 -0
  135. package/docs/{claude-code-pro.md → zh-CN/claude-code-pro.md} +23 -17
  136. package/docs/{configuration.md → zh-CN/configuration.md} +397 -142
  137. package/docs/zh-CN/contributing.md +240 -0
  138. package/docs/zh-CN/flow-console.md +216 -0
  139. package/docs/zh-CN/getting-started.md +352 -0
  140. package/docs/zh-CN/investigation.md +213 -0
  141. package/docs/zh-CN/jev-shadow.md +5 -0
  142. package/docs/zh-CN/jev.md +192 -0
  143. package/docs/zh-CN/model-policy.md +128 -0
  144. package/docs/zh-CN/releasing.md +120 -0
  145. package/docs/{session-evaluation.md → zh-CN/session-evaluation.md} +4 -2
  146. package/docs/{session-recovery.md → zh-CN/session-recovery.md} +75 -12
  147. package/docs/zh-CN/workflow.md +284 -0
  148. package/npm/install.js +1 -1
  149. package/package.json +12 -25
  150. package/docs/flow-console.md +0 -122
  151. package/docs/getting-started.md +0 -418
  152. package/docs/model-policy.md +0 -65
  153. package/docs/workflow.md +0 -314
@@ -0,0 +1,45 @@
1
+ # 任务发现与单阶段画布验收
2
+
3
+ ## 故障与修复范围
4
+
5
+ 基线为 `5d682291e39c46c4e5e7c275f3d195ffce7e5d6c`,当前工作分支 `codex/jev-workflow-shadow`;本轮准备统一版本 0.30.1,含前一轮默认关闭的 JEV 影子评估,具体源码身份以 v0.30.1 标签为准;本记录不表示 npm 已发布或桌面已更新。
6
+
7
+ 用户的 loveops 会话实际加载过两次 flywheel-task,但没有调用 flywheel_launch/flywheel_control;后续经 Bash 四次执行 verify、四次执行 review。Go 记录最后 review pass 0.92、整体 pending、revision 48、running=false。旧插件只从专用工具或 `/flywheel` 命令关联任务,因此视图为空。上轮通过 UI 填入已核实路径并只读刷新,确认关联由 null 变成 confirmed,画布恢复;没有启动用户任务或改写账本。
8
+
9
+ 本轮覆盖:
10
+
11
+ - 默认任务选择与本机最近任务;彻底移除路径输入框;位置有真实值时自动显示为只读信息。
12
+ - CLI 索引新增 hostSessionId;来自公开 DSH_SESSION_ID,仅作发现信息,不授予权限,不传给 Provider 或验收子进程。
13
+ - 插件控制子进程使用自身 Session.id,清除错误的环境继承;独立目录读取不清除未确认操作或手动选择。
14
+ - 当前会话唯一任务自动只读打开;多个、历史无归属任务需明确选择;其它会话不能自动选入。
15
+ - 单阶段使用 run.kind 与 control.kind 匹配回执,Review 默认 L1 → Review;本次通过与整体交付分开,失败/取消/未知不能继承旧绿色裁决。
16
+ - Run、HEAD 和摘要收起,任务位置自动只读显示,显示评审记录评分;完整运行需用户展开选择。
17
+ - 单阶段技能执行后显式查询 status 关联;任务技能区分正文加载、准备和实际启动,文档任务不因载体而静默跳过已请求流程。
18
+
19
+ DSH 环境依据:本机 deepseek-harness `63ef376c8c486925140a98b466db6fcebac051de` 的 `packages/terminal/terminal-bash/src/index.ts` 在 childEnvironment 中设置 `DSH_SESSION_ID: spec.owner.id`;原生 Session.id 来自持久 header。不是解析 Bash 文本或扫描项目目录猜测任务。索引身份仍不是调用授权;原有租约、revision、结果未知阻断和 Go 状态所有权保持不变。
20
+
21
+ ## 检查结果
22
+
23
+ - `make quality-gate` 通过:全部 Go 行为测试、vet、格式检查、逐函数 100% 覆盖率。日志 `/tmp/flywheel-no-input-quality.log`。
24
+ - 新增 Go 索引检查:有效/缺省/非法/过长宿主 ID、单阶段类型、终态回执;不向阶段和验收子进程传递宿主身份。
25
+ - 额外 CLI 集成检查通过:在临时 Git 项目真正执行 `run --only verify`,再从 `control runs` 读回 hostSessionId、kind、真实任务路径和完成时间;没有读取/修改用户的 SIP 项目。
26
+ - 插件全量 219 项测试、两版本原生宿主兼容检查 9 项通过;日志 `/tmp/flywheel-readonly-locations-final.log`。真实 renderer 测试保留旧绑定结果隔离、未确认操作与冻结目标验证,目录发现使用独立只读夹具并另外覆盖并发。
27
+ - 新增目录/画布测试覆盖没有路径输入框、未知位置不显示字段、准备中任务关联、同会话唯一候选、多候选与旧记录、跨会话晚到响应、手动选择、未确认操作、读取失败保留画布、Review 失败/取消及随后完整运行。索引先于状态发布/CAS 失败时,每次目录快照至多触发一次状态核对,不因 busy→idle 形成循环。
28
+ - DSH、Codex Pro、Claude Code Pro 三组 Go/Node 离线桥接通过;日志 `/tmp/flywheel-task-discovery-bridges.log`。Claude 0.4.0 仍是已核对的本地公开接口候选,不冒称新的 registry 发行。
29
+ - 根目录 `npm test` 141 项通过;日志 `/tmp/flywheel-readonly-locations-npm.log`。
30
+
31
+ ## 可见界面验证
32
+
33
+ 实际构建的客户端 bundle 使用 DSH 设计 tokens,在本机只读开发页显示真实评审的有界 Go 快照。预览阻止启动、停止、重跑和配置保存,不把快照展示当成正在运行的真实任务。
34
+
35
+ 已验证默认任务卡片、自动选入、切换任务、当前运行/完整流程切换、任务位置自动出现且不可编辑;浅色、深色和 390px 窄屏无页面横向溢出,页面不存在路径输入框。评审默认选择 Review 节点,记录评分 0.92;技术元信息收起。截图:
36
+
37
+ - `/tmp/flywheel-task-ui-20261110/task-canvas.jpg`
38
+ - `/tmp/flywheel-task-ui-20261110/dark-390.jpg`
39
+ - `/tmp/flywheel-task-ui-20261110/empty-390.jpg`
40
+
41
+ 这是客户端实际构建的浏览器验收,配合两版原生 renderer 离线检查;不是已安装 DSH 桌面新版的验收。本轮没有重启用户正在使用的 DSH。正式安装后的实机复查在批准发布/安装后进行。
42
+
43
+ ## 发行准备
44
+
45
+ 六包统一 0.30.1。开发候选从隔离快照打包;macOS/Linux 安装结果以 `/tmp/flywheel-task-install-macos-full.log`、`/tmp/flywheel-task-install-linux-full.log` 和候选 manifest 为证据。本记录不把候选验证当成 npm 已上传、latest 已提升或桌面已更新。正式发布须在批准提交/推送/标签后,从干净精确标签构建并重新验证正式同候选。
@@ -0,0 +1,54 @@
1
+ # 流程工作台界面改造验收
2
+
3
+ ## 范围与状态
4
+
5
+ 按用户已审阅的画布优先设计实现实际 DSH 插件。改动覆盖原生会话视图、画布与节点详情、配置编辑、运行记录和中英文指南;未修改 Go 状态机或 schema,未提交、推送、发布或替换真实桌面安装。
6
+
7
+ 源码基线为 `cd4fdd8a15dccaf4b3da76cc7d6d8b4f98390d1e`。六包仍使用工作区版本 `0.30.1` 进行隔离安装验证,候选明确标记 `source.dirty=true`,不能作为正式 npm 发行。已发布 0.30.1 的原始产物没有重建替换。
8
+
9
+ ## 实现
10
+
11
+ - 宽画布、平移/缩放/适合宽度、当前步骤跨分页定位、任务子图、列表切换;窄窗口默认列表,用户显式选择优先。
12
+ - 插件拥有的原生专注画布对话框,保留任务与分支,Escape 返回且不启停任务;未知操作退出专注模式以显示核对入口。
13
+ - 节点详情分进展、会话、本次配置。运行确认冻结 revision;重试保留失败记录并要求原因;依赖未交付的任务与红色 L1 的 Review 不可直接运行。
14
+ - Quick 验证同时读取 L1、终验与已记录的缺陷注入结果,不把 L1 单独通过显示为整体验证通过。单阶段结果不冒充整体交付。
15
+ - PR 未查询、结果未知、已关闭和已合并分别显示;新的引擎 revision 使旧远端快照过期。
16
+ - 配置自动读取一次,分组编辑、相邻保存、中文阶段/推理文案、分钟/秒精确换算。串行隐藏并发控件;Provider 名称不冒充某个默认模型。
17
+ - 范围切换/重读/重置保护草稿;当前 Session 内的任务切换保留草稿,恢复时重新读取文件,revision 不同则阻止保存。真实来源是文件级选择,不伪称逐字段继承。
18
+ - 运行记录列表与详情分开;对照对象不改变指标查询目标,指标范围明确为本次运行或任务全部调用;整组费用缺失显示未报告。
19
+ - 受管会话与 PR 写入沿用 Go 接口;终端续接命令优先使用原会话工作目录。JEV 保持默认关闭及影子建议语义。
20
+
21
+ ## 检查结果
22
+
23
+ | 检查 | 结果 | 证据 |
24
+ |---|---|---|
25
+ | 插件构建与全量测试 | 234/234,零跳过 | `/tmp/flywheel-workbench-accepted-check.log` |
26
+ | 旧 DSH 宿主兼容测试 | 9/9,零跳过 | 同上;真实发布的 renderer/slots 接口 |
27
+ | 根目录 npm 测试 | 141/141,零跳过 | `/tmp/flywheel-workbench-npm-final.log` |
28
+ | DSH / Codex Pro / Claude Code Pro 的 Go → Node 桥接 | 三组通过,显式 `FLYWHEEL_TEST_NODE_BRIDGE=1` | `/tmp/flywheel-workbench-bridges.log` |
29
+ | 同候选 macOS 安装 | 10/10,零跳过 | `/tmp/flywheel-workbench-final-install-macos.log` |
30
+ | 同候选 Linux 容器安装 | 10/10,零跳过,非 root 用户 | `/tmp/flywheel-workbench-final-install-linux.log` |
31
+ | CSS Modules 引用与格式 | 无缺失 class;`git diff --check` 通过 | 当前源码构建检查 |
32
+
33
+ 可选 Claude 0.4.0 后端安装测试使用此前审阅的真实源码 tarball `/tmp/flywheel-claude.WYp9T7/dsh-subagent-claude-code-pro-0.4.0.tgz`,没有将 optional peer 缺席的跳过当作通过。
34
+
35
+ ## 候选身份
36
+
37
+ 唯一验收候选目录:`/tmp/flywheel-workbench-final-validated`。
38
+
39
+ - 源码快照 SHA-256:`4affda190d9c74f62861af23592b496c1f2f94c198b4c5a871024db718344e39`
40
+ - 候选 manifest SHA-256:`2cc79687c4c52e6fac47134c3410cfcf4367c69760d2d813de1ef08926291004`
41
+ - `package/dist/client.js` SHA-256:`285ebd4dd77bbccd7019e21e264857bc8d6a5546e7443eae833a5e00a6e88161`
42
+ - 归档内 client 与本地实际构建逐字节一致。两个平台消费同一组六个 tarball,没有重新打包。
43
+
44
+ 本验收记录在候选完成后补写;实现代码与已安装验证的候选一致。正式发行仍需新版本、批准的提交与标签,以及干净源码构建。
45
+
46
+ ## 可视与真实边界
47
+
48
+ 浏览器加载实际 `plugins/dsh/dist/client.js` 与 DSH 主题,在浅色/深色、桌面与 390px 窄窗口检查画布、子图、详情、专注模式、弹窗 Escape 和固定动作区、配置与模型编辑。合成流程回执用于界面演练;没有把它们称作真实 SIP 任务执行或模型推理。
49
+
50
+ 配置读写通过当前源码构建的 Go 二进制,`FLYWHEEL_CONFIG` 指向 `/tmp/flywheel-workbench-preview/global-config.json`。将串行切换为并行后,Go 保存成功并生成 `global-config.json.backup-208416315`;实际用户配置没有作为写入目标。
51
+
52
+ 截图位于本机设计目录 `~/.codex/visualizations/2026/11/04/01a1a75a-cf63-7e31-a843-85a40a52a620/flywheel-redesign/`:`workbench-config-implemented.jpg`、`workbench-canvas-implemented.jpg`、`workbench-narrow-dialog.jpg`。
53
+
54
+ 未完成的发行边界:正式 npm 发布、真实 DSH 桌面安装/重载和真实 Provider 推理验证。本轮不据此宣称线上发行或桌面运行验收。
@@ -0,0 +1,65 @@
1
+ # 0.30.2 正式发行与桌面验收
2
+
3
+ 日期:2026-11-11。用户授权提交、推送、发布、安装,以及用安装版完整默认配置替换本地配置。六包与 `latest` 均完成公开核对;本机安装与原生桌面重载验收完成。真实模型推理不在本次验证范围。
4
+
5
+ ## 冻结身份
6
+
7
+ - 源码/不可移动标签:`8d84c71a5151fc9e27e1bc3fede3c19cdc864e8e` / `v0.30.2`。
8
+ - Git tree:`bcaac3ee0de43ed92ce0cd1b7efabc16117e8035`。
9
+ - 源码快照 SHA-256:`95fafa2584760eea917cc12299de73beb8aedf6b3731149e44308a8b8bee9813`。
10
+ - 正式候选:`/tmp/flywheel-0302-official`;从干净源码隔离构建,六个 tarball 只打包一次。
11
+ - `candidate.json` SHA-256:`fb8b836b07f3889d0fff955c8e6d860c813f91985a9f0f2ab8f809031cf63261`。
12
+ - GitHub Release 留存六个原始 tarball 与候选清单;后续本文的文档提交不移动发行标签,不替换已发布字节。
13
+
14
+ ## 测试与安装证据
15
+
16
+ 工具链:Go 1.27.3、Node 24.22.1、npm 12.2.1。Linux 容器使用普通用户,Claude 可选后端使用真实 `dsh-subagent-claude-code-pro@0.4.0` tarball,SHA-256 为 `125951f39d27a87072a9dc20c622a19089ad7ba84b69ba6228e1fbb03f46f581`。
17
+
18
+ | 范围 | 结果与证据 |
19
+ | --- | --- |
20
+ | macOS Go quality gate | vet、格式与逐函数 100% 覆盖率通过;`/tmp/flywheel-0302-quality-native-git.log` |
21
+ | DSH 插件 | 234/234,旧宿主兼容 9/9;`/tmp/flywheel-0302-plugin-check.log` |
22
+ | Go → Node 桥接 | DSH、Codex Pro、Claude Code Pro 三项实际执行通过;`/tmp/flywheel-0302-bridges.log` |
23
+ | npm 协议与发行工具 | 141/141;`/tmp/flywheel-0302-npm.log` |
24
+ | macOS session 配对 | 36 场景/96 调用,oracle 全通过;`/tmp/flywheel-0302-sessions-macos.log` |
25
+ | Linux 完整门禁 | Go 逐函数 100%、插件、三桥接、七个核心包 race、npm、36 场景通过;`/tmp/flywheel-0302-linux-final.log` |
26
+ | 同候选真实 npm 安装 | macOS 10/10、Linux 10/10,均零跳过;`/tmp/flywheel-0302-official-install-{macos,linux}.log` |
27
+ | 公开 registry 安装 | 原生 CLI、11 个 skills、真实 npm 安装通过;`/tmp/flywheel-0302-registry-install-final.log`;桌面注册为协议夹具,另见下方实机检查 |
28
+
29
+ Actions [CI 42985100717](https://github.com/ckanner/flywheel/actions/runs/42985100717) 和 [publish 42989428883](https://github.com/ckanner/flywheel/actions/runs/42989428883) 因账单/spending limit 未启动,publish 后续 jobs 跳过。本地通过不改写这些状态。
30
+
31
+ ## 失败与恢复
32
+
33
+ 1. macOS 首轮继承错误 GOROOT,改为命令级固定 Go 1.27.3。其后全量 machine 测试出现累计 600 秒超时;串行包运行也曾超时。没有放宽 timeout、覆盖率或断言。确认环境中的 Git shell wrapper 带来每次调用额外进程开销后,测试使用同一 Git 2.53.0 原生可执行文件及等价配置,最终 machine 包 297.850 秒、完整门禁通过。该测试环境不写入用户 launcher。
34
+ 2. Linux 首轮 npm 遇到 root 拥有的缓存目录 EACCES;仅改用可写的独立 npm cache,继续以普通用户完成全量门禁。
35
+ 3. 多次 npm 网页认证会话过期。重试只复用原始候选,先核对 registry 完整性;不重建同版本,也不依据用户点击完成就认定上传成功。
36
+ 4. 入口包被 npm 接收后,公开版本暂不可见,首次公开安装返回 ETARGET。等待传播后,同一版本安装通过;未重传不同内容。
37
+ 5. 提升第五个 `latest` 成功后,远端标签读取一次失败(exit 128),流程停止。重新运行同一提升程序,先重新核对源码/远端标签/候选/公开安装回执,跳过已完成的五个标签,再提升入口包;最终 `verifyLatest` 和源码/远端标签检查均通过。
38
+
39
+ ## 正式发行结果
40
+
41
+ 下列包的精确版本与 `latest` 均为 **0.30.2**,registry integrity 与 `candidate.json` 完全一致:
42
+
43
+ - `@ckanner/flywheel-darwin-arm64`
44
+ - `@ckanner/flywheel-darwin-amd64`
45
+ - `@ckanner/flywheel-linux-arm64`
46
+ - `@ckanner/flywheel-linux-amd64`
47
+ - `@ckanner/dsh-plugin-flywheel`
48
+ - `@ckanner/flywheel`
49
+
50
+ 顺序为平台包 → 插件 → 入口包,先 `candidate-0-30-2`,再在六包及公开安装核对后提升 `latest`。最终程序回执:`PROMOTION_COMPLETE: six latest tags match frozen 0.30.2 candidate`。没有降低更新的标签。
51
+
52
+ ## 本机与原生桌面
53
+
54
+ - 保留用户 Node 26.12.1 的全局安装位置。CLI、desktop profile 插件与托管安装记录均为 0.30.2;安装报告全部步骤 `ok`、`ready:true`。
55
+ - 旧配置与安装资料先备份到 `~/.config/flywheel/backups/before-0.30.2-1794388711`。通过安装版配置控制接口完整重置全局配置,并与安装版 `flywheel.config.example.json` 深比较一致。
56
+ - 配置 SHA-256:`31735a8974e50949ff9d480aee0168e8e6ddeb7c08ad01f44ad0da1e03901578`;桌面交互结束后 hash 未变化。默认同任务同角色续接、完全权限,JEV 关闭;凭证存储未改动。
57
+ - 四项 SDK 无推理探测通过。它们不证明账号额度、远端模型质量或真实推理已通过。
58
+ - 安装到磁盘时,桌面进程仍报告旧 0.30.0。用户最初要求等任务结束;虽然已检查的两个会话后台命令全部结束,宿主退出检查仍报告活动任务,因此第一次退出被取消。用户随后明确授权“现在重启那个 DSH”,才退出并重新启动。
59
+ - DSH 0.2.2-rc.1 原生插件页确认当前版本和来源均为 **0.30.2**,组件已启用并运行。版本验证来自重启后的运行界面,不只来自磁盘 package.json。
60
+ - 复用已有、持久化、带标题的离线会话“Flywheel 0.30.0 离线控制台验证”(名称保留历史版本,不代表正在运行旧插件)。task 为 `/private/tmp/flywheel-console-browser.Bs6wCy/project/docs/add`,六个 driver 为 mock。
61
+ - 自动关联任务并读取真实 Go 状态;完整流程/本次运行切换、横向任务子画布、节点失败原因与累计次数、处理卡点 → 节点 → 操作确认、专注模式、缩放 100% → 90%、Escape 退出均检查通过。确认框取消,未重跑夹具或真实任务。
62
+ - 配置自动读取,工作方式、模型分配、JEV 页面与模型编辑弹窗正常;编辑弹窗取消,未保存改动。运行记录中所选离线 run 的指标读取正常。
63
+ - 最终停留于原生完整流程的专注画布。旧 fixture 的 L1 失败仍如实显示红色,不伪称任务已完成;未派发付费模型、未创建或合并用户任务 PR。
64
+
65
+ 本轮验证证明正式安装与原生界面的已检查路径可用。全部调度分支、人工接管与真实 Provider 的端到端质量仍遵循各自验证边界,不由离线演练推断。
@@ -0,0 +1,46 @@
1
+ # 0.31.0 发行与桌面验收
2
+
3
+ ## 身份与授权
4
+
5
+ 用户明确批准提交、推送、发布并安装 0.31.0,配置先备份再采用完整新版默认值。
6
+
7
+ - 发行源码与不可变标签 `v0.31.0`:`b4e08986bb5f964bd00fe50397df9616b120e271`。
8
+ - Git tree:`6e1cb82889fc98dd5bd3eec2cbda07d98d10d35e`。
9
+ - 源码快照 SHA256:`c4a8418e9fdc9f7181dc89c9fa60bce4e7bd1864a63966fdae33c22a038bca37`。
10
+ - 正式候选清单 SHA256:`cc749de40d69b8a495c598afdfea63894c57f5d1ddfb820ba0d63c32fcd03d80`。
11
+ - 正式候选由干净且已打标签的 checkout 隔离构建,六包只打包一次;上传与重试使用相同 tarball。
12
+
13
+ ## 验证
14
+
15
+ | 检查 | 结果 |
16
+ | --- | --- |
17
+ | Linux `make quality-gate` | 通过,逐函数 100% |
18
+ | Linux 七个核心包 race | 通过 |
19
+ | macOS Go | 全量测试通过;同生产源码补充 L1 拒绝用例后,实际合并覆盖率逐函数 100% |
20
+ | DSH 插件 | 240 项,旧宿主 9 项,零跳过 |
21
+ | 根 npm 测试 | 141 项通过 |
22
+ | 公开 adapter 跨进程桥接 | DSH、Codex Pro、Claude Code Pro 离线通过 |
23
+ | 会话评估 | 36 组场景,96 次调用,独立 oracle 全部通过 |
24
+ | 同一正式六包候选安装 | macOS 10/10,Linux 10/10,零跳过 |
25
+ | 官方 registry 实际安装 | 通过;真实 npm、原生 Go、11 个 Skill;桌面注册为协议桩 |
26
+ | 真实 Mac 安装与 SDK | CLI/桌面插件 0.31.0,四项无推理 SDK 检查通过 |
27
+ | 原生桌面 | 原有任务均结束后正常退出、重开;画布、状态刷新、旧任务恢复、节点详情和执行目录正常 |
28
+ | 新配置交互 | 自动读取默认值;关闭 Worktree 的未保存草稿仍可选择并行/最大并发 2;放弃草稿后全局配置摘要不变 |
29
+
30
+ 当前默认值:`worktree.enabled=true`,`scheduler.mode=parallel`,`max-parallel=2`,`sessions.mode=scoped`,`permissions.mode=full-access`,`jev-shadow.enabled=false`。全局文件与已安装版本模板深比较完全一致,SHA256 为 `f35bde4c51ba5bf2b9dd7a469e44340d68af9317d26f0369d675a96c987a66ef`。
31
+
32
+ 本机备份:`~/.config/flywheel/backups/pre-0.31.0-20261112T013132Z/`。安装器自身保留配置后,另通过带 revision 的 `config-save reset:true` 执行用户已授权的完整默认配置覆盖;不能把安装器的 `preserved:true` 当成最终配置未替换。
33
+
34
+ ## 失败与边界保留
35
+
36
+ - GitHub CI [43131575689](https://github.com/ckanner/flywheel/actions/runs/43131575689) 和发布 [43131577361](https://github.com/ckanner/flywheel/actions/runs/43131577361) 均因账号付款/spending limit 未能启动;本机检查不冒充 Actions 通过。
37
+ - macOS 最初遇到累计 600 秒包级超时,最后一个测试仅执行 2 秒;后续全量测试完成。原始 `make quality-gate` 的覆盖率拒绝记录保留,不将补充测试后的合并覆盖率冒充原命令一次通过。
38
+ - Linux 初次覆盖率发现并行预算/取消时序分支缺口,增加确定性预算耗尽与报告收集失败用例后,完整原始门禁通过。插件测试按文件串行,保留原有断言和截止时间。
39
+ - Claude Code Pro 0.4.0 使用已审阅的真实 tarball,SHA256 `125951f39d27a87072a9dc20c622a19089ad7ba84b69ba6228e1fbb03f46f581`;不改版本、不伪称 registry 已发布,不接受跳过作为通过。
40
+ - npm 接收上传后部分版本超过首次 180 秒公开查询窗口。保持原候选,仅重复只读核对;一个 npm 只读查询进程曾 SIGABRT,后续查询恢复。六包公开完整性和官方安装均另行确认。
41
+ - 原生桌面验收使用已有隔离 mock 任务,故意失败的历史 L1 保持失败;不重跑真实模型、不更改历史 Session header、不为旧记录缺失的项目身份伪造值。
42
+ - 不能分离项目归属与沙箱根的原生 `workspace-write` 后端仍明确拒绝不支持的组合,不自动扩大权限。SDK 无推理探测不能证明账号额度、真实模型质量或历史恢复效果。
43
+
44
+ ## 发行状态
45
+
46
+ 六包先发布到 `candidate-0-31-0`;全部公开完整性一致且官方 registry 安装通过后,依次提升六个 `latest`。最终脚本再次校验六包完整性、全部 latest、干净发行源码和远端标签,返回退出码 0。当前六包 latest 均为 0.31.0。后续文档提交不改变不可变发行标签及 tarball。
@@ -0,0 +1,58 @@
1
+ # DSH 0.2.2-rc.2 兼容复核(Flywheel 0.31.1)
2
+
3
+ 用户桌面已更新到 DSH `0.2.2-rc.2`。已发布 Flywheel 0.31.0 的 `engines.dsh`
4
+ 只列到 `0.2.2-rc.1`,宿主因此跳过整个 DSH 插件;本记录覆盖 0.31.1 的兼容声明、
5
+ 测试与真实宿主挂载。
6
+
7
+ ## 结论
8
+
9
+ - 0.31.1 的 `engines.dsh` 为 `0.2.1-rc.5 || 0.2.2-rc.1 || 0.2.2-rc.2`;
10
+ 未知版本仍由宿主拒绝,不需要 exact-version exemption。
11
+ - `npm ci --ignore-scripts` 在本机通过;`dsh-subagent-codex-pro` 仍由
12
+ `file:vendor/dsh-subagent-codex-pro-0.9.0.tgz` 解析,未依赖不存在的 registry 版本。
13
+ - 插件测试在 rc.2 宿主包上通过:216 passed / 0 failed / 24 skipped;发布版
14
+ renderer 的 legacy-host 检查 9/9 passed。
15
+ - 真实 DSH `0.2.2-rc.2` 组合中,0.31.1 不再出现 `skipping profile bundle`;
16
+ 唯一剩余警告是无关的 `@deepseek-ai/dsh-web-search-exa@0.2.2-rc.1`。
17
+
18
+ ## 环境
19
+
20
+ | 项 | 值 |
21
+ |---|---|
22
+ | macOS | arm64 |
23
+ | DSH Desktop | 0.2.2-rc.2 |
24
+ | Node / npm | 26.12.1 / npm 随 Node |
25
+ | Flywheel DSH plugin | 0.31.1(工作树构建) |
26
+ | Vendored Codex Pro | 0.9.0 source candidate |
27
+ | Optional Claude Code Pro | 0.4.0(未发布,保持 optional peer) |
28
+
29
+ ## 复跑
30
+
31
+ ```sh
32
+ cd plugins/dsh
33
+ npm ci --ignore-scripts
34
+ npm test
35
+ ```
36
+
37
+ 宿主挂载使用同一 profile 的副本,替换已安装的 0.31.0 为工作树构建的 0.31.1,
38
+ 不添加 compatibility.json;启动日志只剩 EXA 的非本包警告。
39
+
40
+ ## 后续整合复核
41
+
42
+ 在合入 Skill 修复 #35 后,补齐入口包、四个平台包、内部精确依赖和构建命令的
43
+ 0.31.1 版本;原始 216 pass / 24 skipped 结果保留为首次检查,不能代表完整后端通过。
44
+
45
+ 本轮实际目标是已安装桌面及 `/usr/local/bin/dsh` 的 `0.2.2-rc.2`,不以 npm
46
+ 通用 latest 标签推断桌面版本,不放开未经核对的未来 rc。包一致性预检通过。
47
+
48
+ - 使用 Node 24.22.1 / npm 12.2.1 从锁文件安装,加入真实已审阅 Claude 0.4.0
49
+ tarball(SHA256 `125951f39d27a87072a9dc20c622a19089ad7ba84b69ba6228e1fbb03f46f581`),不修改版本或 lock。
50
+ - 插件主套件 240/240、旧宿主 9/9 通过,均无跳过;npm 根测试 141/141 通过。
51
+ - 六包开发候选实际安装 10/10 通过;这不等于正式发布或用户安装已更新。
52
+ - 用当前真实 DSH rc.2 执行临时 SDK doctor:目录、完全权限与正常收尾确认,
53
+ 未发送模型 prompt;既有用户配置、会话历史及桌面安装不因此改写。
54
+ - 跨进程检查首次在并行运行本机质量检查时,一个 Codex timeout/hang 用例未在
55
+ 1 秒截止前取得原生测试进程日志。单独复核同一截止通过;原失败保留,
56
+ 没有改断言或延长截止,不能将该次启动时序失败抹成首次通过。
57
+ - 随后完整重跑 DSH / Codex Pro / Claude Code Pro 三组 Go → Node 公共接口桥接,
58
+ 全部通过且没有跳过;保留上述首次时序失败作为测试稳定性限制。
@@ -0,0 +1,187 @@
1
+ # 反馈驱动工作流、受管调查与 JEV 有限决策:实现验收
2
+
3
+ [验收索引](README.md) · [设计提案](../plans/2026-11-12-feedback-driven-workflows.md) · [系统设计](../design.md) · [中文使用指南](../zh-CN/investigation.md) · [English guide](../en/investigation.md)
4
+
5
+ ## 来源与结论边界
6
+
7
+ 本记录对应 [PR #34](https://github.com/ckanner/flywheel/pull/34) 中包含本文件的实现提交。
8
+ 提案审阅基线为 `main@22156861a84cb834797ba23b07d3f0a651fd7b36`,实现以同一 PR
9
+ 的 `c350f169d800ab1ddbaeb06c87e714610bcf419a` 为父提交。保留原设计提案与历史验证,
10
+ 不将原来的文档检查冒充为本次代码验证。
11
+
12
+ 源码包版本仍为 `0.31.0`;本次没有发行、修改用户配置或变更默认模型绑定。验证环境
13
+ 是 Linux、Go `1.27.4`、Node `24.22.1`、npm `12.2.1`。源码从固定 Git tree 重建并
14
+ 逐 blob 校验;本地 Git index 对应原 PR HEAD,随后只修改本次实现文件。
15
+
16
+ 本次提供可审阅的实现和离线行为证据。真实模型质量、JEV 采用净收益、Provider
17
+ 缓存命中、生产延迟和 Mac 桌面验收均需要另外取证。`100%` statement coverage
18
+ 说明所计量代码被执行,不替代断言质量、真实场景或性能实验。
19
+
20
+ ## 提案到实现的对应
21
+
22
+ | 批次 | 本次实现 | 证据边界 |
23
+ | --- | --- | --- |
24
+ | P0:可观测基线 | 引擎、Plan、执行、验证、Review/Judge、受管调用、真实 backoff、持久化、交付及调查的 start/end;运行视图与会话评估识别新事件 | 累计区间与并行墙钟 union 分列;缺失结束保持 unknown。宿主准备、Provider 内部排队/推理/工具细分没有观测时不补造数据。 |
25
+ | P1:缩短闭环 | 稳定 check ID、候选/检查集/环境身份、完整输出摘要与有界头尾片段;保守进展判断;可信 Plan 检查点;执行者先跑相关检查 | Go 仍运行完整冻结验收并独立评审;文本中的“10→1”不被当成可信 oracle,候选变化但证据不足时为 unknown。 |
26
+ | P2:受管调查 | 版本化准备契约与状态、有界动作、报告、CLI 后台生命周期、桌面面板及实施交接 | 首个动作族仅 Go 读取文件、字面搜索、列目录名字。无任意 shell、外部查询或可写 Agent 调查;只调查不能转为实施。 |
27
+ | P3:执行策略与上下文 | 显式完整绑定允许集、质量升级/渠道后备分离、冻结选择记录、effort 冷启动、可信增量 Execute 上下文 | 默认仍固定绑定和既有上下文策略;离线验证协议与正确性,不证明哪种真实模型/effort 更优。 |
28
+ | P4:JEV 有限决策 | 独立默认关闭策略、Noul + Choice、固定版本、完整概率、数据允许集合、调用预算、持久回执、诊断动作采用、离线/显式 advisory CLI;旧影子改本地捕获 | 只允许从 Go 已批准的动作中选择;采用须显式开启。没有真实端到端净收益证据,不默认启用,不宣称提速或成本下降。 |
29
+ | P5:条件性调度优化 | 保留现有并行、共同候选复验、取消及交付机制 | 预热、新 ready queue、进一步流水化与已有候选接纳未新增;提案要求测量证明收益后再做,本次不以离线速度推断收益。 |
30
+
31
+ ## 日常入口与交付保证
32
+
33
+ - **Task:**从目标自动组织准备、调查或实施;Auto 仍只是 Quick/Full 的选择策略。
34
+ - **New → 审阅 → Run:**保留。New 对调查只保存准备契约,不运行取证动作;复杂任务
35
+ 可以先形成方案,后续获得实施授权再继续 Full。
36
+ - **Plan / Exec / Verify / Review / Status / Stop:**保留直接使用;调查和实施共用
37
+ 受管后台生命周期,阶段成功或调查报告均不冒充整项代码交付。
38
+ - **明确修复:**可直接 Auto/Quick,依旧经过资格、完整验收、独立最终 Review 与 Git 交付。
39
+ - **排查并修复:**只有原请求已授权、结论 supported、回执全部可结算且工作区一致时,
40
+ 才能进入实现。来源报告、原范围、已知/未知 JEV 用量继续绑定,不因切模式或恢复重置。
41
+
42
+ 报告的 `supported` 是分析者结论及引用的结构合法性,不是 Go 对因果关系的独立证明。
43
+ 首版语义报告由宿主模型根据收集的观察提交一次;skill 不承担逐动作循环。
44
+
45
+ ## 关键行为与恢复证据
46
+
47
+ ### 反馈与规划
48
+
49
+ 测试覆盖同一文件中的不同候选、同一候选的重复权威失败、检查集/环境变化、输出
50
+ 截断与物理取消。空转判定不再仅依赖文件集合;执行失败但没有权威验收观察时,
51
+ 依靠原有尝试/预算上限,不能臆造进展。
52
+
53
+ Plan 复用要求真实成功终态、重载合法契约、成功 Git 持久化及 worktree 同步。
54
+ 普通返修可以保留计划;显式 Plan、verification-gap、契约/验证/调度变化、未知
55
+ 外部 HEAD、旧任务没有可信证明及未解决调用都不会被缓存绕过。
56
+
57
+ ### 调查、取消与交接
58
+
59
+ 测试使用真实文件系统、Git 仓库、CLI 测试子进程与 localhost HTTP fixture,验证:
60
+
61
+ - CAS 竞争、不同工作区、损坏状态、符号链接、特殊文件、父目录替换与打开后 inode
62
+ 校验、UTF-8 截断、文件/总输出/动作数/deadline 上限。
63
+ - action intent 已保存但无可信 receipt 时保持 blocked;已有 immutable receipt
64
+ 可重复读取并只消费一次,不重新取证,不用后来的文件内容替换原观察。
65
+ - 后台子进程可启动、查询、停止。JEV 请求在飞时 token-bound Stop 取消请求,保留
66
+ unknown 用量,不派发下一诊断动作,不产生实施 `state.json`。
67
+ - 可选 JEV 的 pending 与实际 action 的 pending 分别处理:前者可只读核对后取消
68
+ 或退回确定性基线;后者缺少结果时不得假取消或重放。
69
+ - 实际 L1 diff 检查原 `implementation-scope`;后续 packet 扩大范围也不能扩权。
70
+ 修复接纳后的来源变更被拒绝;跨日恢复按原派发日期记账且不重复导入。
71
+ - 调查 CLI 的 `awaiting-report` 为退出码 `0`,blocked 为 `3`,取消为 `143`;后台
72
+ 控制可以返回对应真实快照。`control stop` 本身成功仍为 `0`。
73
+
74
+ ### JEV 与执行策略
75
+
76
+ - JEV 决策回执消费与唯一 action intent 在同一个 CAS 中保存;该 CAS 失败后只核对
77
+ 冻结请求,不新增请求。采用前重新验证 revision、候选、观察、契约和动作身份。
78
+ - 超时、取消、动作预算耗尽及提交报告时仍结算 pending advice;unknown 包含在调用
79
+ 上限中,缺失用量/费用不当作零。损坏配置不会阻止只读恢复,也不会授权采用。
80
+ - 合法调查内容超过决策快照边界时不派发 JEV、不伪计费,继续确定性动作;新 HTTP
81
+ 只能发生在显式允许的数据和独立预算内。硬预算无法证明单次上限时跳过可选请求。
82
+ - `decision replay` 强制 offline;`decision evaluate` 强制 advisory,使用独立
83
+ journal 与显式预算,不执行动作、不改任务。替换 policy 不继承省略的数据授权。
84
+ - 质量升级仅由权威 L1 stalled 触发,不能把 quota/auth 等渠道错误解释为能力不足;
85
+ 切换受允许集和次数约束,保留尝试与预算。未知调用不可通过换模型或 effort 绕过。
86
+ - 增量上下文只用于引擎明确标记的 Execute 模板,要求同角色/绑定、稳定可读契约
87
+ 和已消费、明确 dispatched 且 completed 的可信回执;人工 Prompt、Review/Judge
88
+ 与不匹配上下文仍发送完整内容。新增三轮持久恢复测试:旧上下文成功,新权威内容
89
+ 对应调用被拒或失败,重新加载后保留原线程并完整重发,不能把准备过当成送达过。
90
+
91
+ ### 控制台
92
+
93
+ 实际构建后的 React harness 检查调查面板、原 revision、unknown 阻断、原回执
94
+ 核对、Stop、双语报告、stdin 参数传递与畸形响应。调查准备态隐藏普通代码启动;
95
+ 已交接实施后,调查只读 status 仍能接受 Go 返回的正常实施快照。
96
+
97
+ ## 最终检查
98
+
99
+ 下表区分最终检查、环境缺口与未取得的证据。
100
+
101
+ | 检查 | 结果 |
102
+ | --- | --- |
103
+ | `make quality-gate` | PASS;最后的上下文修补后重新运行,vet、格式与逐函数 100% 全部通过 |
104
+ | 核心十包 `go test -race`,以及 `internal/investigation` 独立 race | PASS;全部无 data race |
105
+ | `npm test` | PASS;142 项通过,0 跳过 |
106
+ | `npm --prefix plugins/dsh run check` | PASS;冻结依赖树上主套件 251 项、旧宿主兼容套件 9 项,均零失败、零跳过 |
107
+ | 三适配器 Go → Node 离线桥接 | PASS;冻结依赖树上 DSH、Codex Pro、Claude Code Pro 三组全部通过,无跳过 |
108
+ | `make build` | PASS |
109
+ | `FLYWHEEL_EVAL_BINARY="$PWD/flywheel" npm run test:sessions` | PASS;36 个真实引擎/公开 adapter 离线配对 trial、96 次 fixture 调用,独立 oracle 全部通过 |
110
+ | 双语导航、相对链接/锚点、嵌入技能、schema 与 diff 检查 | PASS;31 个修改 Markdown 文件,409 处相对链接、70 个锚点、125 个代码围栏;嵌入技能/schema 已纳入 Go 门禁;`git diff --check` 通过 |
111
+
112
+ 核心 race 命令覆盖 `machine verify watchdog drivers cli modules diagnostic decision
113
+ metrics state`;调查包另外运行。最后的上下文送达修补另行通过相关 session 测试的
114
+ race。质量门禁包含 vet、gofmt 检查和逐函数 100% coverage,
115
+ 未降低阈值,未改写有效防线以制造覆盖率。新增技能的 YAML 与嵌入内容由既有 Go
116
+ 测试检查。文档路径/锚点检查为本次定向检查,不宣称仓库新增了独立文档 CI。
117
+
118
+ ### 可选 Claude 适配器的来源
119
+
120
+ 首次跨进程桥接中 DSH/Codex 通过,Claude 因可选 peer 未安装失败。精确
121
+ `dsh-subagent-claude-code-pro@0.4.0` 的 registry 请求返回结构化 E404,因此依据
122
+ 仓库既有 CI 与 vendor 记录构建其已审阅源码,未伪造 npm 发行:
123
+
124
+ - 上游:`ckanner/dsh-subagent-claude-code-pro`。
125
+ - commit:`ec0b99176b67512f3ca1838ec2a349dcb0189214`。
126
+ - tree:`13c6a3f7e3f332eee98f4e5cde77ba8806c608c1`。
127
+ - 实际 `npm pack` 产物 SHA-256:`125951f39d27a87072a9dc20c622a19089ad7ba84b69ba6228e1fbb03f46f581`,与既有审阅记录精确相同。
128
+
129
+ 最终测试环境从未改动的 lock 重新 `npm ci`,189 个已安装锁项逐一匹配版本;再放入
130
+ 独立 npm 安装的原始 Claude 包。Claude 的 45 个文件、Codex vendor 包的 79 个文件
131
+ 均与相应真实 tarball 逐字节一致。源 `package.json`/lock 未改动。最终插件与桥接
132
+ 检查在这棵冻结依赖树上重跑;此前临时安装造成的依赖版本漂移结果不算最终证据。
133
+
134
+ ## 未运行与后续采用条件
135
+
136
+ 没有调用真实 JEV 或模型服务,没有为实验新增付费渠道,也没有在用户机器上安装、
137
+ 登录、修改默认配置或执行桌面账号验收。没有构建/发布六包候选、合并 PR 或部署;
138
+ 本次未修改 npm 发行流程,因此六包候选安装不是本次源码变更的适用门禁。
139
+
140
+ 上线采用仍应比较冻结任务集上的基线、核心改进无 JEV、核心改进加单动作族三个版本,
141
+ 保留预算内成功率、独立 oracle、遗漏/返工、人工介入、完整墙钟和已知/未知用量。
142
+ 离线 fixture 的正确结果不能填补这项证据。真实收益成立前,JEV、可变执行绑定和
143
+ 增量上下文都保持显式 opt-in;P5 继续服从提案中的测量条件。
144
+
145
+ 远端 CI 必须按本次实际提交 SHA 查询;旧文档提交的 runner 失败不是此次代码结果。
146
+ 最新 PR Checks 与本记录的本地源码验证分别解读。
147
+
148
+ ## 后续整合复核:当前主分支、DSH rc.2 与 Mac
149
+
150
+ 本节补录初始实现之后的整合,不替换上文 `ac46b04` 的原始 Linux 验证身份。
151
+ 已合入 #35 的 Skill 清理及 #36 的 DSH `0.2.2-rc.2` 兼容和六包版本一致性修复。
152
+ 三个 Skill 冲突保留新的调查语义、较新 metadata 版本及只读关联/配置调度指令;
153
+ 验收索引保留两项独立记录。当前源码六包统一 0.31.1,尚未据此发布 npm 或更新用户安装。
154
+
155
+ 本轮额外修复三个 Mac 失败:非法 UTF-8 文件名通过目录读取注入缝验证拒绝行为;
156
+ 工作目录解析失败通过窄注入缝验证且保留已有状态;插件传输测试使用物理规范路径,
157
+ 避免 `/var` 与 `/private/var` 别名误判。生产路径默认仍调用 `filepath.Abs`,没有放宽
158
+ 断言、跳过失败路径或降低覆盖率。
159
+
160
+ 最终代码候选来源为 `828f54c9992360c356bb076e1c1b78ccb7315f51`,tree
161
+ `911f09f8362adfa3f8822159ea0708c57b7a2e45`;源码 snapshot SHA256
162
+ `5dfaa3d313f197a1df62f14360daf8e6e51b7418f75a2db9f3e242c43733f2b3`。
163
+ 六包候选清单 SHA256 为 `1d79ced0e82262c1099cb87c0379618b7cd68738887bf623e7c9388191de3316`。
164
+ 后续仅补录本节文档,另核对最终文档打包,不将其称为该候选原始字节。
165
+
166
+ | 本轮实际检查 | 结果 |
167
+ | --- | --- |
168
+ | macOS arm64 Go 1.27.3:`GOFLAGS=-timeout=20m make quality-gate` | 通过,逐函数 100% |
169
+ | Linux arm64 容器 Go 1.27.3:原始 `make quality-gate` | 通过,逐函数 100% |
170
+ | Linux 十包 race | machine、verify、watchdog、drivers、cli、modules、diagnostic、state、decision、investigation 全部通过 |
171
+ | rc.2 插件与旧宿主 | 251/251 + 9/9,无跳过 |
172
+ | 根 npm 测试 | 142/142,无跳过 |
173
+ | 三组 Go → Node 公开适配器桥接 | DSH、Codex Pro、Claude Code Pro 全部通过,无跳过 |
174
+ | 真实引擎离线会话评估 | 36 trials、96 次 fixture 调用,全部 oracle 通过 |
175
+ | 同一六包候选安装 | macOS arm64 10/10,Linux arm64 10/10,无跳过 |
176
+ | 当前实际 DSH rc.2 SDK 无推理探测 | cwd、完全权限与正常收尾确认,没有发送 prompt |
177
+ | 源码与候选文档检查 | 本地链接、锚点、JSON/shell 围栏及六包版本/许可证一致性通过 |
178
+
179
+ Mac 原始门禁先触发 Go 默认整包 600 秒累计超时;触发时当前子用例仅运行 1 秒,
180
+ 并非那个子用例卡住 10 分钟。保留首次失败,复跑只为整个测试包提供 20 分钟运行窗口;
181
+ 业务验收、单项超时和逐函数 100% 门禁保持原值。另见 rc.2 验证记录中保留的首次
182
+ Codex 启动时序失败;同一截止的单独与完整复跑通过,不将原失败抹除。
183
+
184
+ 上述 Go 门禁和 race 使用相同的 319 个 Go 源/测试文件;随后合入的 rc.2 manifests
185
+ 及 Markdown 不改变这些已验证文件。可选 Claude 0.4.0 使用原已审阅 tarball,
186
+ SHA256 `125951f39d27a87072a9dc20c622a19089ad7ba84b69ba6228e1fbb03f46f581`,未改
187
+ 版本冒充发行。真实模型质量、JEV 在线收益与用户桌面安装仍不在本轮离线验收结论中。
@@ -0,0 +1,58 @@
1
+ # 0.31.1 正式发行与桌面验收
2
+
3
+ 用户明确要求发布 0.31.1、安装到现有 DSH 桌面,并先备份旧配置,再完整替换为新版默认值。
4
+
5
+ ## 发行身份
6
+
7
+ - 发行源码/标签 `v0.31.1`:`c6d0c5b35418f4769b6059c33e10e3b9b498dc68`。
8
+ - Git tree:`754f4ca753369d0e4ce9c8f6c3e9e57f60e17bfc`。
9
+ - 源码 snapshot SHA256:`695a5a62189c7678f7d8c0d78a466c434a643fa4db0bfd57b3f02f12fb04094e`。
10
+ - 正式候选清单 SHA256:`e67d7e12fa849ad873067ee1a7c4fdf130152ad3e11ae14955deaa95192970f6`。
11
+
12
+ 已核对 429 个运行代码、测试、契约、技能和 package 输入与前一轮通过验收的整合版本
13
+ 一致;此次准备只整理 CHANGELOG。既有门禁和失败边界见
14
+ [整合验收](2026-11-12-feedback-driven-workflows.md)与[rc.2 兼容复核](2026-11-12-dsh-0.2.2-rc.2.md)。
15
+ 首次文档扫描误包含 Git 忽略的旧 `.delta` 临时树;正式检查改为实际发行源码快照,
16
+ 102 份 Markdown、链接、锚点及 JSON/shell 示例通过,未改动旧临时树。
17
+
18
+ 六包在干净、精确标签源码中隔离构建并只打包一次;后续认证重试均使用同一份 tarball。
19
+ 四个平台包、插件和入口包先发布到 `candidate-0-31-1`,全部公开 integrity 与候选一致,
20
+ 官方 registry 实际安装通过后才逐包提升 latest。最终六包 latest 和 integrity 均复核通过。
21
+
22
+ ## 实际验证
23
+
24
+ | 检查 | 结果 |
25
+ | --- | --- |
26
+ | 同一正式候选安装 | macOS arm64 10/10、Linux arm64 10/10,零跳过 |
27
+ | 官方 registry 安装 | 精确 0.31.1、真实 npm 与原生 CLI、11 个 Skill 通过;桌面注册为协议桩 |
28
+ | 用户 CLI/桌面插件 | 均为 0.31.1,安装报告 ok/ready 均为 true |
29
+ | 安装字节 | 入口包 134 文件、全局 worker 包 104、桌面插件 104、当前平台包 3,均与正式 tarball 一致 |
30
+ | 已安装技能 | 11 个 Skill/13 个内容文件与发行 tag 一致 |
31
+ | 实际 DSH | bundle 和 dsh 命令均为 0.2.2-rc.2;原生管理器显示 v0.31.1 启用、组件运行中 |
32
+ | SDK 探测 | 四项目录/权限/正常收尾检查通过,未发送推理 prompt |
33
+ | 原生界面 | Flywheel 标签恢复;既有离线任务画布、真实状态刷新、全局配置和 JEV 默认关闭可用 |
34
+ | 配置 | 与安装版模板深比较完全一致;界面检查后摘要仍一致 |
35
+
36
+ 默认配置为 scoped、full-access、parallel、最大并发 2、自动 Worktree 开启、JEV 关闭。
37
+ 全局文件 SHA256:`12acfcf0799b150d49f9ae10890dbab3aaca776a6be3363fad6614d61c7e77aa`。
38
+ 旧配置与安装元数据共六个文件已备份并校验,目录为
39
+ `~/.config/flywheel/backups/pre-0.31.1-20261113T002349Z/`(后缀为 UTC 时间)。
40
+
41
+ 安装器先保留配置,再通过带 revision 的 config-save reset:true 执行明确授权的完整覆盖;
42
+ 不能将中间安装报告的 preserved:true 当成最终配置未更新。账号凭证未随配置覆盖改写。
43
+ 重载前未观察到运行中会话,24 个后台任务均已结束;验收后恢复原会话导航。
44
+ 旧离线测试会话的标题和失败 L1 保留历史含义,不伪造任务完成或重写 Session header。
45
+
46
+ ## 保留的失败与限制
47
+
48
+ - [发布 Actions 43241496853](https://github.com/ckanner/flywheel/actions/runs/43241496853)
49
+ 和 [CI 43241491480](https://github.com/ckanner/flywheel/actions/runs/43241491480)
50
+ 因账号付款/spending limit 未启动,本机通过不冒充 Actions 通过。
51
+ - 首包和入口包出现 npm 认证会话失效(authId 404);重新验证、继续原候选。
52
+ 已接受但尚未公开的包仅重复只读核对,不重新构建或盲目重复上传。
53
+ - 整合期间的 Mac 累计测试超时、首次 Codex 启动时序失败及修复后的结果仍保留在原记录中。
54
+ - 本轮没有真实模型 coding 任务、JEV 在线收益或性能验收;SDK 探测和离线画布不能证明
55
+ 真实账号额度、模型质量、缓存节省或全部业务场景完成。
56
+
57
+ 发行内容与原始候选见 [v0.31.1 Release](https://github.com/ckanner/flywheel/releases/tag/v0.31.1)。
58
+ 本记录为发行后文档提交,不移动 tag,也不修改已发布 tarball。
@@ -0,0 +1,46 @@
1
+ # 会话工作台与静默读取验证
2
+
3
+ ## 范围与身份
4
+
5
+ 基于 `e035b5b5736c2d26da7ada2bf1ca97ee020fd5a2`,开发分支
6
+ `codex/session-console-ux`,未提交开发树。此次不发布 npm、不修改本机安装与用户配置,
7
+ 不重启或干扰正在运行的 DSH 会话。
8
+
9
+ 删除跨会话任务选择;会话投影优先,CLI 索引必须精确匹配 hostSessionId。
10
+ 投影版本 3 排除旧 UI 状态查询建立的无关关联。准备任务仍可由助手工具显式关联。
11
+ 自动读取走公开只读 Remote,不追加聊天命令事件;操作与未知结果核对保留持久回执。
12
+ 位置、操作、证据和来源直接显示;配置 JSON 编辑及环境检查使用独立导航。
13
+ 已有聊天事件不删除,单阶段成功不升级成完整交付。
14
+
15
+ ## 已执行检查
16
+
17
+ | 检查 | 结果与边界 |
18
+ | --- | --- |
19
+ | 插件 `npm run check` | 256/256;无跳过 |
20
+ | 固定 rc.5 宿主回归 | 10/10;包含真实公开 Gateway 的静默读取、会话身份与零事件追加 |
21
+ | Go → Node 三个离线 worker bridge | 通过;没有真实模型调用 |
22
+ | 根 npm 测试 | 142/142 |
23
+ | `go test ./internal/skillsembed` | 通过,六份 Skill 文案与版本更新保持嵌入约束 |
24
+ | 六包隔离构建与 npm 安装 | macOS ARM64 安装 10/10;验证纯 CLI 可导入宿主入口,不要求安装宿主可选 peers |
25
+ | 浏览器实际构建 | 亮/暗主题、390px 内容宽度、直接显示位置、配置操作行、节点证据;合成回执与隔离配置,不等于用户 DSH 桌面安装验收 |
26
+ | Go 全量质量门禁 | 未运行:没有改动 Go 源码;上述桥接与 Skill 检查覆盖受影响边界 |
27
+ | 文档与 diff | 隔离源码快照的 104 份 Markdown、638 个本地链接、144 个仓库链接、91 个锚点及 JSON/shell 示例检查通过;`git diff --check` 通过。此为本地检查,不是新增 CI 门禁 |
28
+ | GitHub Actions/发布/用户桌面安装 | 未运行 |
29
+
30
+ Claude Code Pro 离线检查使用已审查的 0.4.0 tarball,SHA256
31
+ `125951f39d27a87072a9dc20c622a19089ad7ba84b69ba6228e1fbb03f46f581`;
32
+ 未更改该依赖、模型或权限默认值。
33
+
34
+ ## 保留的失败与修复
35
+
36
+ - 第一轮界面用例仍依赖任务选择器、折叠节点和旧按钮文案。测试按新交互更新,保留
37
+ 单飞请求、未知结果锁、旧响应隔离、红色 L1 阻断 Review 等行为断言。
38
+ - 首次打包安装因新模块静态导入 `@deepseek-ai/cordis`,在纯 CLI 环境失败。
39
+ 改为 DSH 宿主启用 Typert 服务时才加载模块;最终六包安装通过。
40
+ - 完整插件重跑发现一条测试仍查找“展开阶段”,同步为“查看阶段流程”后通过。
41
+ 没有降低门禁或放宽计时。
42
+
43
+ 最终开发候选位于 `/tmp/flywheel-session-ux-verified-candidate`,源快照 SHA256:
44
+ `878af11d84c53b566c2e5dee9e4f7cf7da39cd934cb83efaa7029b452b6ae3a8`。
45
+ 候选沿用源码的 0.31.1 版本号,仅用于隔离安装、带 `dirty:true`,**不可发布**,
46
+ 与已发布的 npm 0.31.1 不是同一产物。本记录在验收后添加,不在该候选快照中。