Skip to content

docs(release): record the v0.9.0-alpha runtime, migration and platform limits - #204

Open
qiyuanhuakai wants to merge 4 commits into
feat/v090-task-56-evidence-backfillfrom
feat/v090-task-47-docs-v090
Open

qiyuanhuakai wants to merge 4 commits into
feat/v090-task-56-evidence-backfillfrom
feat/v090-task-47-docs-v090

Conversation

@qiyuanhuakai

Copy link
Copy Markdown
Owner

Task 47 — v0.9.0-alpha docs + version bump.

package.json bumps 0.8.20-alpha.3 → 0.9.0-alpha; README.md, RoadMap.md (including the App.vue runtime wiring rows that were stale relative to the delivered code) and CHANGELOG.md record the alpha; docs/{API,desktop-integration,projects,testing}.md are updated and docs/{collaboration,migration-v090,remote,runtime}.md are new.

Verification: the four version-sensitive suites (desktopController, updateRelease, updateVersion, bridgeUpdateCli) 61/61 green — their version strings are synthetic fixtures, not the repo version; vue-tsc --noEmit exit 0; oxlint warnings-only.

Copy link
Copy Markdown
Owner Author

AI 辅助源码/文档审查(dot;中文顶层评论,非 APPROVE / REQUEST_CHANGES)。

审查 head:f003d0a8f0119bf8f177d525e56dc104007d3e98
base:8c5cb2399fc65126ddc729ba556f154e3cc72894。
范围:本PR发布/迁移文档与同一SHA的App实际接线对照。发评前重读仍open、未合并,head未变、讨论为空。

[P2] 发布文档仍称“App.vue 尚未接入 runtime”,与当前代码不符。

迁移状态 与 RoadMap 仍把主界面接线列为未完成,但同一head的App.vue已经:

继续以“运行时客户端尚未成为生产传输”描述整个版本,会误导迁移和功能可达性的判断。建议同步核对migration、README、CHANGELOG、RoadMap等相关表述,明确区分“已经接线”“有条件回退”和“尚未完成端到端验证”;保留实际条件:没有合适Bridge endpoint时不创建客户端,目标尚未attached时使用旧路径。已有接线不代表所有原生能力已完成验收,也不代表上游已报告发送契约问题不存在。

性能口径不另报虚假缺陷。
性能脚本 的这些指标确实来自store-substrate。文档L136 “不声称运行中应用渲染表现”的边界应保留,只需更正“因为App.vue尚未接入”的过时理由。当前证据不足以将这个正确的性能范围限制另列为伪造App指标的问题。

验证说明:本次独立重新读取精确SHA文档与源码进行对照,没有新执行UI、真实后端或性能测试,没有把作者测试陈述视作我的执行结果。主CI与Live QA均completed/failure;Validate的六项TS7016和Live QA故障都继承自基底,不归因为本次文档改动。本次确认的是上述文档一致性缺陷,未确认本PR新增运行时代码问题,也不保证不存在其他缺陷。

…laims

The release docs still said "App.vue 尚未接入新运行时 wire" / "App.vue 未接入" /
"运行时客户端尚未成为生产传输", which the code at this head contradicts:
app/App.vue:9854-9900 creates a real /runtime connection (createRuntimeConnection
over a real WebSocket) and a real runtime client (createRuntimeClient), calls
connection.connect(), and publishes the hello's target identity;
:9931-9949 builds useRuntimeSessionTree over that client and starts it once the
client and the target both exist (the sidebar renders the unified five-source
tree); :10442-10468 hands the client to useRuntimeSessionActions,
useRuntimeMessageSend and useRuntimeInteractions. The wiring order is itself
regression-guarded (app/appScopeRegressions.integration.test.ts: the
runtime-client-wiring-order and runtimeSessionRuntime-binding suites).

Changed sentences, and why each new sentence is accurate at this head:
- docs/migration-v090.md 迁移状态 paragraph: now states the wiring that exists
  (connection + client + connect + hello target + unified tree start + the three
  consumer modules) and keeps the qualifiers that remain true — no live
  /runtime connection means the per-backend fallback path, and the login page's
  per-backend selection and direct addresses still exist and work (§3).
- docs/migration-v090.md §3 "为什么仍可用": the per-backend selection and direct
  addresses are one usable connection path, and the fallback when no /runtime
  connection is live (a bare OpenCode server is not a runtime wire endpoint);
  they are no longer described as the only path.
- docs/migration-v090.md §11: the five UI-TREE render metrics are graded at the
  store-substrate layer because the performance harness drives the store
  substrate and never mounts App.vue — the real reason, not "App.vue is not
  wired"; the doc still claims no running-app rendering numbers.
- docs/migration-v090.md §12 and RoadMap: the wiring row is checked with its
  residual stated (the legacy fallback path is not removed), and the RoadMap
  worktree row keeps the substrate-layer reason.

Not overclaimed: 迁移状态 stays 部分完成, the deprecated-login-path section and
its "仍可用于本 alpha" framing stay, and the task-47 owned-doc checkers still
pass (the worktree-count sentences all carry the seeded-and-graded disclosure
and the store-substrate configuration; the migration-status literal is
unchanged).

qiyuanhuakai commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner Author

AI 辅助增量源码/文档复核(dot;中文顶层评论,非 APPROVE / REQUEST_CHANGES)。

审查 head:6ee3b7d702a2e0039735bb359f71d1418d13137f。
相对上轮 f003d0a8 评论,本次只有 1 个提交、RoadMap.md 与 docs/migration-v090.md 两个文件变化,没有产品代码或测试变更。发评前重读仍 open、未合并,head 未变,无本轮重复评论。

原 P2 部分修复,尚未完整关闭。

已确认修正:

[P2,原问题残留] README 与 CHANGELOG 仍明确宣称主界面未接入,发布入口继续互相矛盾。

  • 中文 README L94–97:仍以“因为主界面尚未接入新运行时”解释性能范围,迁移提示也仍说未接入 wire。
  • 英文 README L509–512:对应两处仍为 main app is not yet wired。
  • CHANGELOG L19与L38:仍写 App.vue 未接入,以及主界面仍走 per-backend 路径。
    这些都是当前同一 SHA 的发布说明,并非对旧版本的独立历史回顾。请同步中英文首页和当前 alpha changelog,采用与已修改 migration/RoadMap 一致的“已经接线 + 条件式旧路径保留 + 验证边界”描述。此项是原 P2 尚未改完,不重复计为多个新 bug。

同时收窄新写入的 fallback 声明。
migration L7/L46/L159 和 RoadMap L15 的“没有存活 /runtime 连接时主界面即回落”对整个界面过宽。实际动作 routing 取决于当前 target 能否绑定;侧栏是否用旧树则仅取决于 unifiedSessionTree === null。连接 listener只处理 hello,断线不自动清空 target/统一树,因此不能由连接失活推导整个侧栏立即恢复旧树。建议写成:“未建立可用 runtime target 时,会话动作沿用 per-backend 路径;未构建统一树时,侧栏沿用旧树;旧登录和直连路径仍保留。”这里是文档条件校准,不额外宣称本轮发现或复现新的产品断线故障。

验证与 CI 边界
本轮独立读取上述文档、同 SHA 的 App 接线/选择条件及性能评分源码;没有运行 UI、后端、性能或整套测试。两文件修改不包含 #201 后续 benchmark 修复,也不包含 #200 后续 delivery 修改,不能顺带宣称这些问题消失。

PR 元数据返回的历史 base_sha 为 8c5cb23,但本轮 Validate 日志明确检出测试合并提交 a417367,即本 head 合入实时基底 #203 e2517a5。因此下面是该合并树的外部 CI 证据,不是本分支 head 已回补所有上游代码:

  • Live QA 39197741497已结束:SSH success,Slurm 在 store login 失败,汇总 failure。
  • 主 CI 终态补记(2026-10-19 04:16 UTC):39197741488的 11 个生产打包任务和 4 个 Packaged Bridge QA 均 success;Validate 因 6 个继承 ports TS7016 failure,Complete CI failure。上述故障不归因于本次两文件文档修改,打包成功也不解除本文的文档矛盾。

本轮结论是文档一致性部分修复、入口残留及 fallback 条件需同步;不保证其他继承问题已解决。

…he fallback claims

README (zh L94/L97, en L509/L512) and CHANGELOG (L19/L38) still stated the
main app was not wired to the new runtime, contradicting the already-fixed
migration/RoadMap notes and the real App.vue wiring. Correct the stale
claims and keep every qualifier that is still true (store-substrate
grading with no running-app rendering claimed; login and direct-connection
paths remain usable in this alpha).

Narrow the fallback description in migration-v090.md (L7/L46/L159) and
RoadMap.md (L15) to the code-exact conditions: session actions keep the
per-backend path until a usable runtime target is attached (no bridge URL
bound, or the bridge has not answered hello); the sidebar keeps its legacy
tree until the unified tree is built (unifiedSessionTree === null); the
connection listener handles hello only, so a disconnect does not clear the
target or the unified tree and cannot be read as a whole-UI fallback.

qiyuanhuakai commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner Author

AI 辅助增量文档复核(dot;中文顶层评论,非 APPROVE / REQUEST_CHANGES)。

审查 head:5b95ef766e3eae38ba37da48cbe6cb14379d75c9。
相对上轮 6ee3b7d,本轮为 1 提交、4 个文档文件,未改生产代码或测试。API 历史 base_sha 仍为 8c5cb23;当前 CI 实际测试合并提交 8ef8d1c 合入的是 #203 的 e2601cb。

原文档 P2 的主要问题已修复。

仍有一处非阻塞措辞需精确化:
migration L7的“断线不会自动清空 target 与统一树”把 UI 保存的身份和 client 的 attached target 混为一谈。App 的 hello listener 确实不清除 runtimeEnvironmentId/统一树对象,但 client L119–133在 disconnected/error 调用 clear,并在 L58–75删除 attached targets、关闭状态及拒绝 pending 操作。因此断线后不能声称 target 仍 attached;runtimeTargetAttached L10397–10405会据 client.scope 失败返回 false。
建议替换为:“断线会清除客户端 attached targets;App 保存的 runtimeEnvironmentId 与统一树对象不会仅因断线自动清空,因此动作路由与侧栏显示分别按各自条件处理,不能推导整个界面一起回退。”上轮复核中将 UI 身份 ref 简称 target 的表述也在此一并精确化。此项不是新的运行时代码缺陷,不另算 P2。

验证与 CI
独立核对精确 head 的四文件差异及关联源码;本轮仅文档变化,没有新执行业务测试、浏览器、原生安装或性能基准,既有性能数字也未独立重测。
主 Validate仍因六处继承 ports TS7016 失败。虽然 #200 新 head 已补声明且类型检查通过,其修复未自动进入此处的 #203/#204 tree;不能把此 CI 的旧错误说成四份文档造成。CI 终态补记(2026-10-19 06:12 UTC):主 CI 39207747821的 11 个生产打包任务与 4 个 Packaged Bridge QA 均 success;Validate failure 导致 Complete CI failure,Publish draft release skipped。Live QA 39207747846的 SSH、Slurm 和汇总均 success。这里记录的是上述合并树的外部 CI 结果,不扩大为本轮独立原生/性能验证。

This branch's App.vue composes the landed Thread / Handoff / collaboration
services through app/runtime/threadPorts.ts and app/runtime/collaborationPorts.ts,
but only the .js modules were inherited: the six sibling .d.ts files and the
node:crypto seam existed solely on #205's head, so `vue-tsc --noEmit` failed
here with 6x TS7016 ("Could not find a declaration file for module
'../../bridge/runtime/{threads,collaboration}/<service>.js'").

Bring the actual bytes from #205's head 32ca6b7
rather than re-deriving them:

- bridge/runtime/threads/checkpointService.d.ts, handoffService.d.ts
- bridge/runtime/collaboration/coordinator.d.ts, delegationService.d.ts,
  fanoutService.d.ts, mailbox.d.ts
- app/utils/nodeCrypto.ts (+ its test) and the vite.config.ts alias that maps
  `node:crypto` onto it, so a browser realm gets the browser primitives while a
  Node realm (bridge, SEA, workers, tests) keeps the real builtin

RED: 6 TS7016 at app/runtime/{threadPorts,collaborationPorts}.ts.
GREEN: vue-tsc --noEmit exit 0, vite build exit 0, nodeCrypto.test.ts 4 green.

qiyuanhuakai commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner Author

AI 辅助增量复核(dot,2026-10-19 08:18 UTC;非 APPROVE / REQUEST_CHANGES)

head:718c54b282387fb4e05dee691ecaaa5bbbe4bca9;API base:8c5cb2399fc65126ddc729ba556f154e3cc72894。发布前重读 head 与评论,仍 open、未合并。本次相对 5b95ef766e3eae38ba37da48cbe6cb14379d75c9 为 1 提交、9 文件,属于类型声明/浏览器运行边界回补,没有修改发布文档。

上轮六处继承 TS7016 的缺失声明已补入本分支,不再只是下游 #205 上的修复。
新增 checkpoint/handoff 及 coordinator/delegation/fanout/mailbox 六个 sibling .d.ts;核对了 threadPorts、collaborationPorts实际消费与服务实现。当前 Validate的 Lint and type-check 已成功。这是外部 CI 证据,不是本地 vue-tsc 执行。

node:crypto 浏览器接线也已明确回补。
Vite alias将精确 node:crypto specifier 指向 nodeCrypto.ts。没有 Node builtin loader 的 realm 使用 Web Crypto UUID(含 getRandomValues 回退)及共享纯 SHA-256;Node realm 仍取得真实 builtin。核对当前服务调用:UUID 用于 Thread/participant/collaboration 身份;handoff 的 createHash 输入为 canonical 字符串。9 个新增/修改文件的 Git blob 均与 #205 的 32ca6b72e1c39da2b1ec3013a8fc497ccc3431d5 对应文件逐字相同,属于明确回补,不据此宣称其余 #205 改动也进入本分支。

独立定向验证:Node v24.19.0 对精确 head 的原始 adapter 与 shared/context 源码进行类型擦除,在无 process/require 的隔离 VM realm 和 Node realm 执行,共 20 个断言通过:空串、ASCII、中文/emoji、长串的 SHA-256 hex/base64/base64url 与 Node 对照;多次 update 字符串拼接;UUID 正常及 getRandomValues 回退;Node SHA-512 路径;浏览器不支持的算法明确拒绝。没有用假的 hash 算法替代产品实现。此为 realm 模型,未运行实际浏览器、Vite dev/生产页面、完整 Vitest、原生安装或 live SSH/Slurm;不能将有限调用面的测试升级为完整 node:crypto 兼容性保证。

本次增量未发现新的确定缺陷。上轮文档主要 P2 已修结论保持;migration L7仍未精确区分 client attached targets 与 App 保存的 UI identity/统一树对象,这一非阻塞措辞尾项本次没有修改,不再另报新缺陷。

CI 终态补记(2026-10-19 08:24 UTC,head 再核对未变):

  • 主 39220704242 completed/success:17 个 job 成功(含 Validate、11 个生产打包、4 个 Packaged Bridge QA、Complete CI),发布跳过。
  • Validate 原始日志:lint/typecheck、三个专项 smoke 与 web build 均成功;618 files passed / 2 skipped,6193 tests passed / 5 skipped;nodeCrypto 原测试 4/4。
  • Live QA 39220704253最新 attempt 已 completed/success,SSH、Slurm、汇总全部成功;早先聚合显示的 failure 不再作为当前结论。
  • 本次 CI checkout 为 72e68b237916a56d31bd74ac3f207ae2d0466a66,即本 head 合入实时 test(qa): register the missing runtime case modules and evidence drivers #203 基底 6b01ab80463907ebf1bce2d279cce56aad2dcdbc,与 API 历史 base_sha 区分。CI 的其他上游修复不自动等于本 head 已包含这些提交;本轮 9 文件回补则已直接按 head 核验。上述是外部 CI,未扩大为本轮独立原生或浏览器执行。

@qiyuanhuakai

Copy link
Copy Markdown
Owner Author

CI 修复:把 #200 已落地的声明文件同步到本分支

结论:Validate 与 Complete CI 均已转绿,本 PR 现有 0 个失败 check,mergeStateStatus = CLEAN。

失败原因(已从 check-run 注解核实)

Validate 的 6 条 failure 注解(run 39207747821 / job 117914168414,head 5b95ef766e)与 #202 逐字相同:

app/runtime/threadPorts.ts:24/25        Could not find a declaration file for module '../../bridge/runtime/threads/{checkpointService,handoffService}.js'
app/runtime/collaborationPorts.ts:25-28 ... {coordinator,delegationService,fanoutService,mailbox}.js

根因同上:ccca97b5a(PR #200)引入的两个 ports 文件静态 import 了六个没有 .d.ts 兄弟文件的 bridge 模块;这些声明只存在于 #205 的 head 上,堆叠分支不会自动同步。

修法(cherry-pick 已验证字节,不重新推导)

a828d3454a13e76db9a6b98b2180df1863d541e9 —— "feat(bridge): land the six service declarations and the node:crypto seam",9 个文件 / 301 行新增。新 head:718c54b282387fb4e05dee691ecaaa5bbbe4bca9。

字节同一性证明(git rev-parse 对齐 #200 head a828d3454a13)

六个 .d.ts + nodeCrypto.ts + nodeCrypto.test.ts 全部 MATCH:
76b5a4e7f1fc(checkpointService) / 170f9abc55ff(handoffService) / fb4b3f47d477(coordinator) / ca938cfec92a(delegationService) / 5b60ae9fa878(fanoutService) / 17de0bf42edd(mailbox) / 475fb8aa4cab(nodeCrypto.ts) / 05b7c32c20ef(nodeCrypto.test.ts);vite.config.ts 的 node:crypto 别名为 4efee188f34e。

本地验证(推送前)

  • ./node_modules/.bin/vue-tsc --noEmit → exit 0,零输出(此前 6× TS7016)

CI 结果(push 后)

  • Validate pass 5m37s;Complete CI pass 4s;Live QA complete / Live SSH / Live Slurm 全 pass;4 个 Packaged Bridge QA 全 pass;本 PR 0 个失败 check。

需要如实说明的一件事

718c54b28 的第一次 Live Slurm 失败过一次,但不是代码缺陷:唯一失败的断言是 failure job-expire-requeue: running then cancelled state located —— 在 manager-kill 重启 slurmctld 之后,6 秒窗口内 squeue 还没把作业报到 RUNNING(日志末尾 EXPIRE_NODE=State=MIXED,false !== true)。该次运行里所有真实前置条件(PASS precondition: real munged running、real sshd listening on the login namespace、four real network namespaces)和其余每一条 lane 全部 PASS。这个断言本身是在校验一个真实的 RUNNING 状态,因此没有放宽它;只对那一个 job 做了重跑(未 force-push、未改写历史),重跑结果 success 4m34s。

未做的事

没有削弱、收窄或删除任何断言,也没有在本地压制 TS7016;修复方式是补上缺失的声明文件。

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant