Skip to content

fix: verify released alpha24 client states / 校验 alpha24 客户端状态边界 - #75

Merged
tiye merged 2 commits into
mainfrom
chore/m57-alpha24-consumer
Oct 10, 2026
Merged

tiye merged 2 commits into
mainfrom
chore/m57-alpha24-consumer

Conversation

@tiye

@tiye tiye commented Oct 9, 2026 •

Copy link
Copy Markdown
Member

这次迁移让 Diary 在正式 Calcit alpha.25 与 Respo alpha.11 配对下继续保留混合 cursor、编辑草稿和已有恢复行为,同时在组件入口拒绝不符合约定的子状态键。它不改变存储数据或业务默认值;原严格检查、构建与实际界面回放已通过,但按维护者要求 PR 暂时保持开放、不自动合并。

中文

继续 calcit-lang/calcit#1529 的正式发布配对验收,基于已合并 #73。四处已授权的宏内 nil 判断迁移已合并,不重复提交。

修复与版本

原 comp-diary (>> states :diary) ... 在正式 alpha.24 完整 strict workflow 中产生 E_CALL_ARGUMENT_UNPROVEN:组件需要 Map<Tag, Dynamic>,Respo 为混合 cursor 提供 Map<Dynamic, Dynamic>。新增 checked-child-states,复用现有 decode-map-as 校验子状态键,仅替换该组件调用。保留 String/Tag/Number 混合 cursor、typed DiaryEditorState、原缺失分支种子和其他八处开放调用;错误 String 键明确拒绝。Snapshot 修改采用官方 guarded 事务、dry-run 与 scoped revision。

最新升级提交固定完整发布的 calcit / @calcit/procs 0.29.0-alpha.25、Respo 0.16.114-alpha.11,保留 std 0.2.39、JS-FFI 0.2.1-alpha.16、ws-edn 0.0.37。Respo alpha.11 已包含 #238 的 Task 持久化身份修复。正常 Caps/Yarn 安装、精确 npm 预批准,无模块缓存源码修改、通配符或年龄策略放宽。版本升级只改四个依赖/lock 文件,Snapshot、测试、断言与业务默认值未变。

最新版本验收

  • caps --ci、yarn install --immutable、caps verify --toolchain:17 模块,CLI/runtime 精确配对。保留原 transitive SemVer 和项目缺少 version 的警告,不冒称 Caps strict。
  • 原 CI 的 calcit fix --workflow strict --verify --format edn、格式化零 diff、client/server check-only、各 entry 全部原 public checks 均通过。
  • yarn test-boundaries 保留全部原断言及存储 fixture:76 native、61 同 AST JS、六项日期/两项登录,以及原 storage/credentials/patch/实际 dispatch 宿主合同通过。三项新增 definition :tests 验证混合 cursor/草稿、缺失分支和坏键拒绝。
  • yarn compile-page、yarn release-page 通过,保留原 500 kB chunk warning。Snapshot SHA256 仍为 50a2bdfdd9301b6cbe2a58ea1bf27923dd1117d6cd20deb2ce92659ee7cbe814。
  • 正式 alpha.25/Respo alpha.11 的隔离同源码副本,在 Codex 内置浏览器运行实际生成的应用和 Respo renderer,仅注入本地 WebSocket:真实 textarea 保存名义 DiaryEditorState;连续 patch 保持 raw/typed 一致,坏深层字段保留完整快照身份,仅一次恢复连接;增量不能假装恢复,完整替换恢复 count 5 并保留草稿。原 reload! callback 保留相同 state/快照并重绘,不冒称重新编译后的全 HMR。实际 PR 生成的生产 bundle SHA256 与该正常安装副本一致。旧 alpha.24 的真实 Chrome 证据是历史验证,不称新的 Chrome 证据。

主动关闭的 Lost connection!、原配置/拒绝日志未屏蔽。保留原 native/JS/browser target 边界,不宣称 browser entry 可运行整个 server all-defs,也不替代 Diary #61–#64 全业务验收。最新 HEAD 98fbbe110ecb060a04c0bc4ee4a9ebebf2ae7bca 的 完整 CI completed/success,包含 COS 资产校验与 PR preview;review threads 为零且 CLEAN。维护者于 2026-10-10 明确要求先保持 PR 开放,不自动合并;CI 成功或后续 review 出现不解除该决定,须由维护者明确允许后再进入合并门禁。

English

Continue released-pair consumer acceptance for calcit-lang/calcit#1529 on merged #73. The four approved macro-local nil-predicate edits are already merged and are not repeated.

Boundary fix and versions

The original comp-diary (>> states :diary) fails the full released alpha.24 strict workflow with E_CALL_ARGUMENT_UNPROVEN: the component expects Tag-keyed state while Respo intentionally returns an open Map supporting heterogeneous cursor keys. Reuse decode-map-as in one typed checked-child-states boundary. Preserve mixed String/Tag/Number cursors, nominal DiaryEditorState, original missing-branch seeds and the other eight open-state callers; reject invalid String keys. Snapshot mutations use the official guarded dry-run/scoped-revision transaction.

The latest upgrade pins fully published CLI/runtime 0.29.0-alpha.25 and Respo 0.16.114-alpha.11, retaining std 0.2.39, JS-FFI 0.2.1-alpha.16 and ws-edn 0.0.37. Respo alpha.11 includes #238's persisted Task identity repair. Normal Caps/Yarn installation and exact npm preapproval use no cache-source edits or wildcard/age-policy bypass. Only four dependency/lock files change in this upgrade; Snapshot, tests, assertions and business defaults remain unchanged.

Latest-pair validation

Normal Caps/immutable Yarn/toolchain verification passes for 17 modules with exact CLI/runtime pairing. Existing transitive SemVer and missing-project-version warnings remain; this is not strict-Caps proof. Every original CI strict, zero-format-diff, client/server entry and public-definition gate passes.

The unchanged yarn test-boundaries runner supplies storage fixtures and passes 76 native/61 same-AST JS tests, all six date/two login contracts and original storage/credential/patch/actual-dispatch host assertions. Three new attached Calcit tests cover mixed cursors/draft, missing branches and invalid-key rejection. Client compilation and production build pass with the original chunk warning. Snapshot SHA256 remains the value recorded above.

A normally installed, same-source alpha.25/Respo alpha.11 isolated copy runs the actual generated app and Respo renderer in the Codex in-app browser, using local injected WebSockets only. Actual textarea input retains nominal DiaryEditorState; valid patches synchronize raw/typed state; bad deep fields preserve the complete snapshot identity with one recovery connection; incremental patches cannot recover; full replacement restores count 5 and preserves the draft. The existing reload! callback retains identical state/snapshot and rerenders, without claiming full recompilation/HMR coverage. The actual PR's production-bundle SHA256 matches this verified isolated copy. Earlier actual Chrome proof belongs to alpha.24, not a new Chrome run.

Deliberate-close Lost connection! and original configuration/rejection logs remain visible. Existing native/JS/browser boundaries remain; no browser-entry server all-definitions or Diary #61–#64 whole-business acceptance is claimed. Complete CI 38005928408 succeeds for exact HEAD 98fbbe1, including COS asset validation and PR preview. On 2026-10-10 the maintainer explicitly requested that the PR remain open, with no auto-merge. Successful CI or a later review does not lift that hold; wait for explicit maintainer permission before applying merge gates.

@tiye

tiye commented Oct 9, 2026

Copy link
Copy Markdown
Member Author

中文

修复已发布为 0.16.114-alpha.11,annotated tag f72478aa peel 到仅版本提交 d3dc27ec2dc8e29992e24b30b64dc74fd3a66c24;精确合并 main 与版本提交的 Tests 均成功(37974908083、37975466786)。这是通过正常 Caps 消费的源码模块,没有 npm 发布步骤,也没有另一个 release workflow。

实际消费复验:隔离复制 Diary #75 的当前 d294773,仅在副本 deps.cirru 选择 alpha.11;caps --ci 和 yarn install --immutable、caps verify --toolchain 正常通过,17 个模块且 CLI/runtime 均为正式 alpha.24。安装 receipt 与 respo.calcit 源码 HEAD 为 d3dc27ec;未修改不可变模块源码。保留原有 transitive highest-SemVer 警告,不把本次普通 --ci 冒称严格 Caps。

副本的原 strict workflow、client/server check-only、各 entry 原 public checks、76 native tests、61 同 AST JS、原宿主边界、client/Vite build 均通过;Snapshot sha256 前后均为 50a2bdfdd9301b6cbe2a58ea1bf27923dd1117d6cd20deb2ce92659ee7cbe814。本次没有重做 Chrome:原 #238 最终源已经实际验证保存/刷新恢复任务;Diary #75 的实际 Chrome 证据在它的 PR,且尚待用户或 bot review,未因此合并。

English

Published source module alpha.11 has an annotated tag peeling to version-only d3dc27ec2dc8e29992e24b30b64dc74fd3a66c24. Both exact merged-main and version-only Tests succeed (37974908083/37975466786). There is no npm package or separate release workflow.

A fresh isolated copy of Diary #75 d294773 changes only its dependency choice to released alpha.11, installs normally through Caps/immutable Yarn, and verifies 17 modules with published CLI/runtime alpha.24. The installed Respo source HEAD is d3dc27ec, with no immutable-cache source edits. Existing highest-SemVer transitive warnings remain; this is not claimed as strict-Caps proof.

Original strict, client/server checking, entry-specific public checks, 76 native tests, 61 same-AST JS tests, host boundaries and client/Vite build pass. Snapshot SHA256 is unchanged as recorded above. No new Chrome run is claimed: #238's final source already has real persistence/reload proof; Diary #75 has its own bounded actual Chrome proof and still awaits review, without premature merge.

@tiye
tiye merged commit 14d0330 into main Oct 10, 2026
1 check passed
@tiye
tiye deleted the chore/m57-alpha24-consumer branch October 10, 2026 13:41
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