Skip to content

迁移 Text Diff 至 Calcit 0.30.1,保留原 Enum 与 Map 存档合同 - #49

Merged
tiye merged 2 commits into
mainfrom
migrate/text-diff031
Oct 18, 2026
Merged

tiye merged 2 commits into
mainfrom
migrate/text-diff031

Conversation

@tiye

@tiye tiye commented Oct 17, 2026

Copy link
Copy Markdown
Member

用户需要注意的影响

  • 配对升级到 Calcit/procs 0.30.1-alpha.4(预发布版),依赖全部使用已发布正式 tag:Respo 0.16.122、Reel 0.6.39、UI 0.7.41、Markdown 0.4.56、JS-FFI 0.2.3。请完整刷新,不能保留旧 Map Reel 实例跨热重载运行。
  • 公开 updater 继续接受现有 Enum 操作,仍有内容更新、游标更新、Map/Struct 存档恢复和未知操作分支,不要求调用者改为新的 nominal Op 或载体。非法 content/cursor 在实际使用处检查,不强转或补默认值。
  • 存档仍输出原 Map 结构,storage key workflow、生产 COS 前缀、服务器部署目录和共享字体/图标不变。本 PR 不授权生产合并或部署。
  • 当前 Snapshot 实际只有示例工作流页面和 Store updater;历史简介的 diff 算法仍为 WIP,本迁移不补写或声称已验证不存在的算法,不据此发模块版本。

具体修改

  • 原 Map Reel 改为真实 reel.typed/State<Enum,Store>;组件和持久化通过静态字段读取 Store,不再从 Dynamic 读取后假装已知 Struct。使用既有 typed record/control/refresh API,保留原 Enum 身份和业务分支。
  • Dispatch 如实接受 Respo 的开放回调输入,先检查为 Enum;这是实际 UI 边界,不把接收较窄输入的函数冒充能处理任意 Dynamic。内容和游标分别用现有 String/List decoder,在 Map 状态树返回处检查现有字段合同,无 unsafe、额外载体或新定义。
  • 清理全部 import rule / refer 名称列表的旧 [] 标记,Unit 回调明确返回;不添加新的 fix/proof 规则或豁免。
  • CI 使用当前全部定义、公开 namespace、完整 strict 和零弃用/动态方法门禁,保留原 3 个业务测试,测试文件与断言未改。Action 使用同 commit 的精确正式 tag(用户已接受可移动 tag 风险)。
  • 沿用 COS action 内置 verify、原 PR 隔离路径、队列和 stale-main 检查,不添加上传检查脚本或 concurrently。

实际验证

  • 当前旧主分支 814a55a 的原 Upload CI 38343256199 成功;同提交另一失败为独立 Dependabot 任务,不混作迁移失败。原 Snapshot 无附着测试,保留已有 3 个 Node 业务测试。
  • alpha.4 全部定义 245/245;公开业务定义 16/16,complete=true;完整 strict workflow 通过,safe fixes 已为空。
  • immutable 安装、JS 编译及带 CDN base 的 Vite 构建成功。原 3 个 Node 测试 3/3,文件逐字节未改;真实 typed Reel Op identity、replay、Tag/String/Number 游标、unknown-op Store identity、原 Map 存档恢复通过。
  • 本机真实浏览器:中文输入 → run 输出同一 Store 内容 → 刷新后内容恢复,warning/error 日志为空。未读取生产数据或聊天中的密钥。
  • canonical format dry-run 无变化;deprecated calls / dynamic methods 为零;直接/传递依赖使用已核对的正式 Snapshot,新增 Markdown 0.4.56 blob 与正式 tag 一致;git diff --check 通过。
  • 本地未运行 Caps;干净 Caps/Yarn/toolchain 及远端门禁由本次 Actions 验收。

风险及后续

  • alpha.4 尚不是正式 0.30.1;Enum 是既有开放操作协议,状态树/外部 payload 仍有真实 Dynamic,不声称全库零动态边界。
  • Vite 保留超过 500 kB 包体的提示,未抬高阈值掩盖。
  • CDN 公共访问/证书问题尚未确认解决。若内置 public verify 失败,保留失败;不关闭 verify、不跳过 TLS、不把上传成功等同于公开可用,也不反复重跑上传。
  • 本轮没有新的编译器阻塞;Respo Dynamic callback 的 contravariance 诊断是有效门禁,已修复调用边界,不以新增规则或类型豁免绕过。此前已报告的 alias FFI 分类误报由 FFI 证据将纯 Calcit namespace alias 调用误报为 npm import 并建议多余 adapter calcit-lang/calcit#2155 跟踪,不重复建 issue。

@tiye

tiye commented Oct 17, 2026

Copy link
Copy Markdown
Member Author

当前提交 f8ec736a951d2db4c452dec4b8f013d7399d42c5 的 Actions 39067636445 已结束。

干净 Caps/Yarn/toolchain 安装、全部 Calcit 门禁(包括 full strict)、带 CDN URL 的构建及原有 3 个 Node 测试均成功。测试文件和断言未变,没有新增脚本或类型豁免。

COS 上传完成 3 个文件,但 action 自带 public verify 对 index.html 返回 fetch failed,最终 Public verification failed after COS upload、exit 2。不能将上传成功说成公开校验通过。已知 CDN 证书/公共访问问题尚未确认解决;当前日志没有更细的 TLS cause,不仅凭 generic fetch failed 断言本次根因。

保留失败,不关闭 verify、不绕过 TLS、不添加额外校验脚本、不重复触发上传。未合并或部署生产。后续先恢复 CDN 公共访问,再使用已有 action 验收。

@tiye

tiye commented Oct 18, 2026

Copy link
Copy Markdown
Member Author

本次公开访问验收已通过,原 CDN 阻塞不再作为当前失败结论。

同一源码提交的 Actions attempt 2 已 completed/success,日志明确 Public verification completed: 3 file(s)。没有关闭 verify、绕过 TLS 或增加项目校验脚本;这是 action 自带的实际公开内容校验,不是仅上传成功。

本轮只重跑一次原失败 PR job,没有修改源码、合并或部署生产。类型/构建/原有业务门禁均随本次 job 验收;后续仍需按 PR comments 和合并条件审阅。

@tiye
tiye merged commit 93825ae into main Oct 18, 2026
1 of 2 checks passed
@tiye
tiye deleted the migrate/text-diff031 branch October 18, 2026 18:12
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