返回正文目录

Launcher 0.1.37:#156 / #157 发行包复测

2026-10-23。两个原问题在本轮均未复现:原请求现可执行且结果正确,无效连接键和日期函数参数在校验阶段拒绝。共 53 项执行结果核对通过、8 项预期校验拒绝,没有执行被拒绝的输入。

环境与实际发行身份

本轮只是独立发行包复测。原 18067 日常启动入口仍指向 0.1.36;其启动记录、注册文件、三个教学数据库及原模型哈希均未改变。临时服务复测后已停止,18137 已释放。

#156:嵌套 JOIN 输出列传播

原脚本逐字复用,仍是“按对象求 MAX 日期 → 关联对应记录并投影 → 作为目录 LEFT JOIN 右侧”。每次 validate 后再 preview、execute:

原场景 0.1.36 0.1.37 实际结果
截至 1 月 4 日日末 校验成功,执行缺 last_date A=80、B=40、C=30,D 保留空;实际记录日正确
截至 1 月 5 日日末 同类缺列 A=120、B=40、C=30,D 保留空
截止前完全没有历史 同类缺列 四个目录对象均保留,日期与库存均为空

三个结果与 SQLite 原始行按对象逐一核对。预览 SQL 现在包含嵌套右侧实际输出列,不再仅保留目录列。原先可用的基础右侧、派生右侧、内层独立执行及两个命名输出方案也回归通过。

另有 3 项拒绝:左连接键不存在、右连接键不存在、键未从右侧前阶段投影。均在 compose.validate 返回 COMPOSE_SCRIPT_INVALID,明确指出 JoinPlan.on[0].left/right 和该侧实际输出列,未进入执行。

#157:日期差方言与诊断

原工单 1/2/3 的输入不变:

原表达式 0.1.36 0.1.37 实际结果
DATEDIFF(finishedAt, startedAt) 校验成功,SQLite 报函数不存在 0、1、1 天
TIMESTAMPDIFF('HOUR', startedAt, finishedAt) 校验成功,SQLite 报函数不存在 2、12、24 小时

本版的语义需分清:DATEDIFF(end,start) 是日历日期差;TIMESTAMPDIFF(unit,start,end) 是有符号的完整单位,向零截断,不等于保留小数的自然小时。

补测通过:

4 项日期函数错误在 query.validate 被拒绝:

输入问题 错误码
非法单位 FORTNIGHT DATE_FUNCTION_UNIT_INVALID
SQLite 不支持的 MICROSECOND DATE_FUNCTION_UNIT_UNSUPPORTED
DATEDIFF 参数数量不对 DATE_FUNCTION_ARITY_INVALID
用字段表达式代替字面量单位 DATE_FUNCTION_UNIT_INVALID

均有 path=calculatedFields[0].expression、field=badDate、phase=query.validate 和建议签名/方言说明。日期错误的 safeToAutoRepair=false,因此保留诊断、不自动执行修复猜测。没有把这些预期拒绝计为运行失败。

回归计数与依据

范围 执行通过
0.1.36 已验证的库存、耗时、同期群及滚动聚合器原输入,结果逐项比对 42
#156 原失败场景 3
#157 原失败请求 2
新增日期查询:全工单、裸单位、单位边界 3
原环比、YTD、LAG 代表回归 3
合计 53

8 项校验拒绝 = 3 项 JOIN + 4 项日期参数 + 1 项旧的不存在字段请求,均未执行。42 项旧值沿用已独立验收基线比对;原失败的 5 项另外按原始快照行 / datetime 重新核对,不只检查 success=true。

没有更改教学模型、数据、默认启动版本或引擎源码,也没有操作远端 issue。结论仅覆盖此批 SQLite 场景,不代替多数据库或全部组合路径验收。第十九、二十章正文尚未改成新版本教程,0.1.36 失败记录保留历史语境。

证据与复跑

最新运行入口 · 验收 JSON

运行目录 20261023-002851-771608 保留:release 与两个关闭 issue 的读回、六资产校验、启动与 PID 身份、capabilities、模型校验/实时 JSON/Markdown、复制的原始输入、validate/preview/execute 响应、commands.jsonl、原数据/模型/教学入口前后哈希,以及独立运行日志与清理记录。

已下载并准备独立工作目录后,复测脚本为:

python lab/checks/retest-launcher-0.1.37.py

重跑前需按发行启动脚本在同一独立端口启动 0.1.37;服务当前已停止。prepare-launcher-0.1.37-retest.py 为首次准备入口,已有测试工作目录时明确拒绝覆盖。原 0.1.36 脚本仍按旧版期望断言失败,不应用来验收新版本。