2026-10-25 更新:教学服务现为 Launcher 0.1.42 / CLI 0.1.25、18067,实际 PID 93792;七个原绑定保留。升级与回归已完成,第 26 章 5 项执行 / 1 项拒绝、第 27 章 10 项执行通过,第 28 章新增 10 项执行通过。当前结果位于 ../evidence/composition-0.1.42/。以下先保留 0.1.39 首次备课过程与计数。
2026-10-24。Launcher 0.1.39、项目内 CLI 0.1.25,Windows、Java 17、SQLite。当前复用 http://127.0.0.1:18067,Namespace chinook-composition、命名数据源 chinook-composition-sqlite、Bundle chinook-composition-teaching;匿名本地开发测试,Console/FAP 未启用。
进程 PID 133260 的命令行已核对指向 lab/releases/launcher-0.1.39/foggy-runtime-launcher-0.1.39.jar;JAR SHA256 为 8228d31c104d58b1b2f1d1c5bc856a25531e4d5af06e1e9eefed2be576f20bf9。不以 API schemaVersion 代替发行版本识别。
原 Chinook 通过 SQLite backup 复制为 data/Chinook.sqlite,不增加人工事实。三个 TM、三个 QM 复用已确认语义定义,字典文件另用独立字典 ID,避免覆盖原注册。完整来源摘要在 fixture.json。原模型和数据库摘要核对未变。
CLI 使用 lab/tools/cli/Scripts/foggy-runtime.exe。本机全局命令当前为 0.1.23,本轮未用它做验收;子进程显式固定 PYTHONUTF8=1 与 PYTHONIOENCODING=utf-8,避免管道输出编码影响中文元数据。
| 请求 | 预期 | 0.1.39 实际 |
|---|---|---|
| 阶段结果再筛选 | 按客户汇总,再保留金额至少为 10 的客户 | 20 位,与原始账单一致 |
| 客户 LEFT JOIN 账单 | 保留当期无账单客户 | 95 行:83 张账单+12 位未匹配客户 |
| 账单先汇总再关联客户 | 一行一客户 | 59 行,账单总额 477.53 |
| 两侧分别汇总再关联 | 按客户核对账单与明细金额 | 47 行,各客户一致,明细数量合计 447 |
| 无效右侧关联键 | 校验拒绝,指出缺失列 | COMPOSE_SCRIPT_INVALID,compose.validate;包含字段、路径和 availableFields,未执行 |
| 客户输入 limit 5 | 仅客户 1—5 | 实际 5 行,预览中输入 CTE 保留 LIMIT 5 |
| 基础输入 Top3 后关联账单 | 先选三位客户,再返回其全部当期账单 | 客户 26、34、13,共 7 张账单 |
| 派生阶段 Top3 后关联账单 | 与上一形状一致 | 同为三位客户、7 张账单,派生 CTE 保留 LIMIT 3 |
共 7 项实际执行和 1 项预期校验拒绝,本轮无新增失败。#150、#151 的旧复现未再出现;原 0.1.30 失败记录不改写。没有提交新 GitHub issue,也没有代替维护者关闭或评论旧 issue。
首次准备(已有教学副本时仅允许与登记源码一致,不覆盖自定义模型):
python lab/checks/prepare-composition-0.1.39.py
已有环境只读复跑:
python lab/checks/verify-composition-0.1.39.py
接入证据 · 查询证据 · 当前验收。各轮目录保留命令、退出码、实际请求脚本、实时元数据、校验响应、预览 SQL/参数和执行响应。
这里只是系列开写前的最小实测,不代表 UNION、多源、生产权限、多结果计划及所有 Compose 组合已通过。未另开干净 AI 会话仅凭教材提示词验收。阶段计划不等于把所有中间数据下载到 AI,也不承诺 CTE 必然物化。
当前没有修改或重启 Runtime;独立 Bundle 与数据源保留给后续章节。第二十六章现已补齐筛选后带客户名称的完整组合,见下节;后续差异列或内容分类仍需在各章最终选例时验证。
已完成Compose 与 CTE 入门实操:5 项执行和 1 项预期校验拒绝通过,正文实际使用的“年度汇总 → 金额筛选 → 关联姓名”得到 20 位客户 / 344.84。完整目录保留 59 位、无当期账单 12 位,空结果与阶段字段边界也已核对。
复跑为 python lab/checks/verify-chapter26-compose.py;计数与上方开写前最小验证分开保存,不将两轮计数相加当作新增能力。
本章实操已完成 10 项执行:两个 QM 分别按客户汇总,再关联计算差额、筛选差异与检查双向未匹配;另通过故意改变一个输入期间验证非空的差异与缺失结果。主例两侧均为 47 位客户 / 477.53,数据和模型不变。
复跑为 python lab/checks/verify-chapter27-reconciliation.py。0.1.39 的派生接口失败只校验,没有执行,不混入本章计数。后续已在 0.1.42 复测:计划对象 model 入口可用,不支持的派生参数明确拒绝。
本章实操已完成 10 项执行:先按 2012 年金额选前三客户,再返回其 7 张账单、75.36;改查 2013 年时保留圈选依据,返回 1 张账单、8.91。最终截断、LEFT JOIN、空集与基础输入 TopN 另验。复跑为 python -X utf8 lab/checks/verify-chapter28-selection.py。
首次准备与备课验证的脚本文件名仍保留 0.1.39,运行时已改为读取当前 composition_support.py 的版本及对应发行 manifest,证据按版本分目录;不将新的运行结果写回旧版验收。