Skip to content

保持报告协议,迁移 Calcit 并修复刷新后的布局类型恢复 - #4

Merged
tiye merged 1 commit into
mainfrom
migrate/edn-renderer031
Oct 21, 2026
Merged

tiye merged 1 commit into
mainfrom
migrate/edn-renderer031

Conversation

@tiye

@tiye tiye commented Oct 20, 2026

Copy link
Copy Markdown
Member

用户需要注意的影响

旧存档格式、频道、relay 请求/ack、报告存储路径及前端部署地址不变。恢复布局时不再把 EDN 解析出的匿名 Enum 直接当作应用 LayoutNode,而是从原有 DSL 重新校验构造;修复严格解码后刷新初始化中断、频道/workspace 恢复的问题。无效存档或输入可能更早报错,不以强转隐藏错误。

CLI/runtime 配对升级到 0.30.1-alpha.5。正式 0.30.1 release 在本轮验收时尚无 macOS 资产,因此明确是 alpha.5 实测,不冒称稳定版跨平台验收。仅前端迁移,不修改 relay 后端或报告存储,不合并或部署生产。

具体修改

  • 正式依赖图:Alerts0.10.56、Reel0.6.39、UI0.7.41、Respo0.16.122,传递Router0.8.36 / JS-FFI0.2.3。原 Yarn/Vite/Mermaid/ECharts 版本不变,lock 仅变更 procs。
  • 在唯一 legacy Reel callback 入口检查 store、op-id、op-time,保留业务 updater 的具体签名;预览 LayoutNode 和热重载 Map 返回值改为运行时解码。
  • hydration、频道和 workspace 恢复复用原 validate-layout 从原 DSL 重建派生模型;不改变保存格式或业务协议。
  • 结构化审阅并删除21处冗余do;12处兼容调用迁到公开match、Option构造和remove-watch!,字面量分支/default/执行顺序保留。
  • 仅在原channel-cache脚本补充真实刷新故障回归;不增加独立脚本、验证框架、质量预算或编译器规则。
  • CI保留原检查和内置COS verify,新增现有full strict与deprecated=0门禁。PR仍不上传,main部署路径及条件不变。

验证与实际故障闭环

  • 旧0.30.0图复现完整strict失败;候选完整strict通过,diagnostics/safe/source均0。公开定义108/108,全定义含闭包319/319;335项开放类型边界仍记录,不称零债务或放宽预算。
  • 官方mutation均dry-run+scoped revision、前后tree核对;format dry-run无变化,deprecated calls12→0。无compact.cirru或生成产物提交,本地未运行Caps。
  • immutable安装、成功生成JS、Vite构建、原channel-cache和真实relay snapshot脚本通过。Vite原大chunk提示保留。
  • 独立回环preview/relay与全新合成频道,实际status、混合Markdown/Mermaid/图表、MathML、snapshot、History、patch验证。发现刷新后“expected enum LayoutNode, got enum”的真实失败,修复后同一旧合成存档恢复、patch后再次刷新成功。
  • 原缓存脚本新增EDN往返确实失去Enum prototype的断言,以及hydrate/channel/workspace恢复到正确名义类型的断言;不是空通过或重复COS验证。
  • 按原TESTING状态变更清单,仅在新合成频道Save一条MathML报告,Library加载显示loaded,切回current workspace显示workspace且Reports仍1;未访问已有业务频道或删除报告。
  • 自建浏览器/服务验收后清理;仅保留合成测试报告及本地截图。首次脚本误用Node20后按规定Node24重跑,不把该环境误用说成项目回归。

风险与上游反馈

主要风险是alpha工具链及存档边界;类型检查、回放和真实浏览器覆盖不能替代所有生产数据。业务DSL仍是开放边界,不为清零而发明类型或加防御脚本。

已向既有上游Reel问题反馈真实回调逆变/返回值边界: Respo/reel.calcit#75 (comment) 。独立核实正式Reel0.6.40也保留legacy公共回调合同,因此没有空发Alerts patch或假称换版本即可修复。EDN默认解析为匿名值是当前已知语义,应用从DSL重建模型,不误报为新编译器缺陷。此PR本身回传应用恢复缺陷与退役调用清单,无需硬编码迁移规则。

@tiye

tiye commented Oct 20, 2026

Copy link
Copy Markdown
Member Author

最终 CI 39512164477 / job118935580724 已通过,精确提交0e08379feba5358628ad209ccccfaf1ff33576ec。Linux独立验证6个正式模块及配对alpha.5工具链,实际执行新增full strict/deprecated=0门禁;原channel-cache与persisted layout/channel/workspace恢复回归通过。COS上传和服务器部署全部跳过。真实本地relay/browser已覆盖混合布局、MathML、History、patch后刷新恢复、仅新合成频道Save一条报告、Library加载与current workspace切换;自建页与服务已关闭。仍有335条类型审阅记录,含16条既有unsafe,并非每条都已证明必要,不宣称零债务;后续继续专项审阅,不放宽预算。当前无已发布评审线程,保持PR待审,不合并或部署。

@tiye
tiye merged commit 375fd5c into main Oct 21, 2026
1 check passed
@tiye
tiye deleted the migrate/edn-renderer031 branch October 21, 2026 03:29
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