Skip to content

修正客户端类型合同与真实 WebSocket 会话边界 - #46

Merged
tiye merged 5 commits into
mainfrom
fix/client-trait-boundary
Oct 4, 2026
Merged

tiye merged 5 commits into
mainfrom
fix/client-trait-boundary

Conversation

@tiye

@tiye tiye commented Oct 4, 2026 •

Copy link
Copy Markdown
Member

目标

处理 Respo 类型边界 milestone 的下游依赖阻塞。Cumulo/cumulo-reel.calcit#50 的发布依赖 CI 当前在 ws-connect! 的 WsClient/WsClient0 断言处失败。

变更

  • 验证实际 client state handle,并让 mutable Option Ref 保留完整 callback/client 合同。
  • Node HTTP/WebSocket callback 使用源码 Fn,保留不同 arity 的开放 callable。
  • 旧 Option/Result 构造迁移到具名构造,消除客户端 reset! Option 的两条生成告警;去掉已有 fn? 或参数合同证明的两处 Fn 强转。
  • 客户端、服务端显式声明 browser/node target,CI 检查完整公开命名空间及覆盖完整性。
  • 真实网络测试复现并修正缺省 callback 返回 %none 函数的问题;空 Option 按对应 callback 合同标注上下文。
  • 服务端正确调用 nanoid 并运行时验证 String,消除把函数对象强转为 session ID 的错误。
  • 新增双客户端本地 WebSocket EDN 往返回归并接入 CI。临时报告与生成 JS 未入库。

证据

正式 Calcit/procs 0.28.0。提交 54af1d5 的远端 CI 从固定发布标签安装 JS-FFI alpha.11 与 cumulo-util 0.0.24,严格解析及 toolchain 校验均通过:

  • 客户端和服务端入口严格检查通过。
  • 原生附属测试 12/12,原有 7 项名称与标签保留,新增 5 项 callback 反例/不同 arity 正例;候选 alpha.1 也通过 12/12。
  • 客户端/共享公开定义 34/34,服务端/共享公开定义 23/23,无诊断且 complete=true。
  • 正式新生成客户端 JS:generation 隔离、retry/heartbeat、cleanup 和 singleton Ref 回归通过。
  • 正式新生成服务端 JS:Node Buffer/Date 回归 2/2。
  • 真实网络回归 1/1:随机 loopback 端口、两个真实客户端、不同非空 String ID、Unicode/嵌套列表/nil/匿名 Enum 的 EDN 往返、关闭后注册表清空。
  • 原质量基线通过;unsafeCoerce 30 → 27、deprecatedCalls 0,预算未放宽。
  • Node 24 Vite 构建及 README snippet 检查通过。

待审阅与发布边界

远端完整 CI 已通过,原 Cumulo Util 依赖冲突已解除。此 PR 已转为正式待审阅状态,尚未合并和发布 0.0.33,下游仍固定旧版本;不会据局部通过关闭 Respo milestone。网络回归不覆盖 TLS 或真实浏览器页面。

详细中文记录:history/20261004-client-option-boundary.md。

Actions 失败修复结果

上游 cumulo-util #41 已合并,远端 0.0.24 标签指向 5d987ef,其清单与 JS-FFI alpha.11 对齐;本 PR 已升级该依赖,消除原严格解析冲突。

模块与 package 版本准备为 0.0.33,未发布标签。提交 54af1d5 的 Actions 37211163161 全部通过,包括真实 Caps 下载、严格解析、toolchain 校验、原质量预算、12 项原生测试、公开定义检查、README 示例、两入口生成、真实 WebSocket 往返及 Vite 构建。原先失败 run 已被此结果替代。

下游 cumulo-reel #50 仍消费已发布 0.0.32,需本 PR 合并并发布 0.0.33 后升级。其本地正式 Calcit 0.28 验证另有两条 nullable add-watch! 合同诊断,不能仅凭 ws-edn 升级宣称其 CI 已修复。

@tiye
tiye marked this pull request as ready for review October 4, 2026 15:11
@tiye
tiye merged commit 208c79b into main Oct 4, 2026
1 check passed
@tiye
tiye deleted the fix/client-trait-boundary branch October 4, 2026 16:44
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