升级 Timegrass 到 Calcit 0.22.1 并收窄类型 / Migrate Timegrass to Calcit 0.22.1 and strengthen types - #101
Conversation
中文最新 head EnglishExact-head |
中文继续在同一 draft 分支推进历史页迁移(dd3421d):将周边界和日期标签隔离到有类型的 Dayjs FFI adapter, 验证: 另外发现链式 EnglishContinued on the same draft branch (dd3421d): moved week bounds and date labels behind typed Dayjs FFI adapters, gave Validation: three navigation Calcit tests, compat JS build, Node 24 smoke, Vite release build, formatting, and diff check pass. Whole-app strict check still has two direct failures (overview and notes-page); the quality baseline remains red with 12 definition-level regressions despite 20 fewer unsafe-coerce occurrences overall. This PR remains draft; the baseline will not be widened or merged in this state. Nested typed method lowering is tracked in calcit-lang/calcit#1353; a local typed binding keeps this consumer path functional. |
中文继续在同一 draft 分支推进(1995687):notes 页面按原始 note key 分组,避免异构键值对列表丢失类型;overview 的日期与周数经 当前客户端严格检查:应用改动范围内的直接失败为 0;全入口仍有 3 个级联错误和 14 个阻塞定义,源于旧的服务端消息解码和依赖模块方法调用。 EnglishContinued on the same draft branch (1995687): the notes page groups by original note keys without erasing pair types, overview reads date/week labels through The changed app definitions now have zero direct strict failures. The full entry still has three cascaded errors and 14 blocked definitions from legacy message decoding and dependency methods. Three Calcit navigation tests, compat JS generation, Node 24 Dayjs smoke, Vite build, and dynamic-methods analysis pass. The quality baseline remains red: unsafe-coerce is down by 28 overall, while Dynamic slots in structured schemas increased. I am not relaxing the baseline or merging this draft. |
中文同一 draft 分支继续至 feb8e57: 严格客户端检查现在 0 个直接失败,仍有 2 个依赖级联错误、14 个阻塞定义:导入的 RetryBackoff trait EnglishContinued on the same draft branch through feb8e57. The strict client check has zero direct failures but still has two cascaded dependency errors and 14 blocked definitions: imported RetryBackoff trait methods |
中文同一 draft 分支继续至 PR 仍保持 draft:服务端严格检查还有 5 个直接失败、16 个阻塞和 2 个级联;旧质量基线仍有 18 个定义级回退(主要是旧组件的 Dynamic / unresolved),未放宽基线或改测试期望。继续在此分支清理这些门禁。 EnglishContinued on the same draft branch at The PR remains a draft. Server strict checking still has 5 direct failures, 16 blocked definitions, and 2 cascades; the existing quality baseline reports 18 definition-level regressions, mostly Dynamic/unresolved in older UI components. No baseline was widened and no test expectation was weakened. I will keep resolving these gates on this branch. |
中文同一 draft 分支继续至 剩余工作包括拆解下游 updater 的整函数 Dynamic、两处 EnglishContinued on the same draft branch at Remaining work: type downstream updater functions, resolve two |
中文同一 draft 分支推进至 服务端严格检查现为 0 个直接失败、1 个 updater 依赖级联、6 个阻塞;客户端仍 318/318 通过。兼容模式 33/33 个 Calcit 测试、JS 编译、Vite 构建、Snapshot 格式检查通过。旧 UI 质量基线仍有 18 项定义级回退,PR 保持 draft,不合并。 EnglishContinued on the same draft branch at Server strict checking is now at 0 direct failures, 1 updater-dependency cascade, and 6 blocked definitions; client strict checking remains 318/318 green. All 33 Calcit tests in compatibility mode, JS compilation, Vite build, and Snapshot formatting pass. The old UI quality baseline still has 18 definition-level regressions, so this PR remains a draft and will not be merged. |
中文同一 draft 分支推进到 EnglishThe same draft branch is now at |
中文推进到 通过 本地通过:客户端/服务端严格检查、11 + 79 项 Calcit 测试、JS 生成、Node 24/Vite 生产构建、Dayjs runtime smoke、immutable Yarn install、caps toolchain 校验,以及双入口零静态动态方法发现。未提交编译产物。 仍保持 Draft:#102 的完整数据库模型尚未完成;全项目 fix 仍遇到未引用的旧 EnglishUpdated to Applied revision-protected Local validation passed: both strict entry checks, 11 client + 79 server Calcit tests, JS generation, Node 24/Vite production build, Dayjs runtime smoke, immutable Yarn install, caps toolchain verification, and zero static dynamic-method findings for both entries. No generated artifacts are committed. This remains a Draft: the complete database model in #102 is unfinished, whole-project fix encounters an unreferenced legacy |
中文已发布上游 Cumulo Reel 0.0.46,发布提交 本 PR 更新至 仍保持 Draft,下一步继续 #102 的数据库/session/updater 类型收紧;依赖冲突不再是阻塞项。 EnglishPublished upstream Cumulo Reel 0.0.46 after successful main CI for release commit This PR advances to Still a Draft; next is the database/session/updater typing work in #102. The dependency conflict is no longer a blocker. |
中文
新增 Calcit tests 覆盖新旧输入、序列化往返、非法 ID、目标消息隔离、重复删除与缺失 session;新增生成 JS 的解码/updater smoke 并接入 CI。本地客户端 13 项、服务端 83 项测试、双入口严格检查、JS/Vite 构建、Dayjs smoke、immutable Yarn install 均通过;双入口静态动态方法报告均为零。未增加 unsafe-coerce,未提交编译产物。 这是 #102 的小步推进,不是完整 session/database Struct 迁移;PR 继续 Draft。下一步仍需明确 router/message/session 模型,再连接数据库根和 updater。 English
Added Calcit tests for both wire shapes, serialization round-trips, malformed IDs, message/session isolation, repeated removal, and missing sessions. Added generated-JS decoder/updater regression checks to CI. Local validation passes: 13 client tests, 83 server tests, both strict entry checks, JS/Vite build, Dayjs smoke, immutable Yarn install, and zero static dynamic-method findings. No new unsafe coercions or generated artifacts. This is an incremental step for #102, not the complete session/database Struct migration. The PR remains Draft; router/message/session modeling and the typed database/updater integration remain outstanding. |
|
Completed at
The PR body and |
中文
完成 Timegrass 的 Calcit 0.22.1 迁移与数据库类型加强。Fixes #102。关联 calcit-lang/calcit#1306、calcit-lang/calcit#1285、calcit-lang/calcit#1286。
本地验收
边界说明:仍保留旧存储/投影、UI state 和 ReelState 边界的 Dynamic。formatter 原始 unresolved 统计 55 → 62(新增明确的 legacy adapter/decoder);这不是零债务声明,也没有扩大旧 baseline。数据库/业务 updater 已闭合,未新增 unsafe-coerce;质量门禁为严格检查、定义测试和实际 runtime 回归。详见 迁移与验收记录。
English
Completes the Calcit 0.22.1 migration with closed database, session, user/task/note and route models. Business updaters now use DatabaseRecord throughout and safely ignore stale/missing entities. Explicit adapters preserve legacy Map storage and client projections, validate old data on load, drop transient sessions on save, and keep password fields out of the public user projection.
Includes typed operation/wire decoding, session-message removal, Dayjs adapters, the Struct-safe date timer and sync metrics fix, and whole-project compiler-guided syntax updates. Strict dependency resolution uses released Reel 0.0.46; Yarn 4.18.0 uses node-modules. No generated artifacts are committed and PR events do not deploy.
Local validation: strict client/server checks; 14 client + 90 server definition tests; zero static dynamic-method findings/deprecations; empty full-project syntax-fix preview; immutable install and toolchain verification; Node 24/Vite build; generated-JS regressions. A real browser against isolated native storage verified signup/login, tasks, history, notes, notifications, persistence/restart and the date timer.
Dynamic remains at explicit legacy serialization/projection, UI-state and library boundaries. Raw unresolved-slot counts rose from 55 to 62 with the new adapters; no unsafe coercions or legacy-budget expansion were introduced. Strict checks and native/JS/browser regressions are the reviewed replacement gates. This source migration awaits user review/merge.