2026-10-21。QM 具体列 name/alias(#146)与 DISTINCT 排序(#145)通过;专用成员接口仍异常,已登记目录的重复校验也失败,后者与已关闭 #106 的症状一致。 日常教学入口已升级到 0.1.29,保留原模型;第十三章未开始。
后续按用户授权已提交:成员接口 #148、重复校验疑似回归 #149,并在 #106 补充关联评论。两份正文及评论已回读核对,包含发行身份、0.1.29 复现步骤、源码、原始响应和脱敏日志;#106 保留关闭状态。
a3693d0a812129f51966ef9c18247b0094a4f7f7,内部 Java 项目版本 9.3.0-SNAPSHOT。start-foggy-runtime.ps1 安装、启动;六项 GitHub asset digest、SHA256SUMS 五项均匹配。JAR SHA256:f02ee6fabced558543b7da11c7b97da0469aaab5b0a32ff23d03a42b1eaf8595。chinook、named datasource chinook-sqlite。API foggy-runtime-api/v1、schema 2026-06-06,Java,none-dev-test-only,匿名本地查询。lab/runtime/work、lab/models、lab/data/Chinook_Sqlite.sqlite 和原数据源绑定;Console/FAP 未启用。| 范围 | 结果 |
|---|---|
| #146 最小原始请求 | JSON/Markdown 公开新查询名称;validate、execute、explain 通过,Iron Maiden / 90 / 34 条 / 33.66 |
| name 与 alias 不同 | 查询 albumArtistName,返回键 artistLabel;已选输出别名可排序 |
| 旧字段兼容 | 同一 QM 使用旧 artist 字段仍返回旧键与相同数据 |
| #145 DISTINCT | 119 位成交艺术家,升序、降序、第二页、末页及 total 正确,最终 SQL 含 ORDER BY |
| 第九至十二章有限回归 | 15 项与已验收结果一致,覆盖 having、固定均额、环比、LAG、关联排名、分页和下钻;均额另用 Decimal 核对 |
| 第十二章候选别名稿 | 11 项先校验后执行,与原基线一致;仅在新 Namespace 首次登记场景验收 |
| 日常教学升级后 | DISTINCT 119 组有序、全年金额 477.53、十月/十一月环比与原基线一致;模型、数据和两份注册文件哈希均未变 |
候选名称为 albumId、albumName、albumArtistId、albumArtistName,具体 ID/caption 列同时设置同值 name 和 alias。读者只需记住:name 用于查询,alias 决定返回键;正文可先把两者设为相同值。
仅设置 alias 不会自动把它变成新的查询标识。整维度 ref 的 alias 也不提供展开前缀重命名;0.1.29 按合同保留原展开并记录 QM_DIMENSION_NAME_OVERRIDE_IGNORED。这两种旧探查仍被新名称查询拒绝,不算 #146 修复失败。输出别名作为独立输入字段的反例也被校验拒绝,未执行;实际诊断是 QUERY_VALIDATE_FAILED,不是预填的 FIELD_NOT_FOUND。
原请求及重启后请求仍失败:
members list ChinookInvoiceLineQueryModel artist
→ code 200,但 total=3503,前两项是曲目 For Those About To Rock…、Balls to the Wall
members list ChinookInvoiceLineQueryModel artist$id
→ code 500,query model slot/name mismatch: ChinookInvoiceLineQueryModel#album
members list ChinookInvoiceLineQueryModel albumArtistId
→ code 500,cannot resolve synthetic member-QM from fieldName: albumArtistId
CLI 均退出 2,响应仍是 code/data 或 code/msg 格式,缺少 success 信封。物理 Artist 目录有 275 项,3503 是 Track 数量;上述结果不能当作有效艺术家目录,更不能与 2012 年成交的 119 位混为一谈。
重启后先调用 artist$id 也出现 slot/name mismatch,因此不能仅归因于此前先请求 artist 的顺序。这里未定位根因,也未把它当成 #145/#146 的未修复部分。第十二章仍可用已通过的 QM 分组/DISTINCT 查询发现成交成员。
同一六文件目录首次在新 Namespace 校验通过;已经作为 Bundle 登记后,再执行:
models validate --models-dir <已登记的同一路径> --include-stack-trace
→ MODEL_VALIDATE_FAILED / CATALOG_VALIDATION_FAILED
→ 3 个 TM 通过、3 个 QM 失败
→ duplicate query model resource in namespace: ChinookInvoiceLineQueryModel
重启、显式 --clear-existing 后仍出现。相同文件在新 Namespace 首次校验又是 6/6 通过;这提示应排查候选校验与已有资源的合并/去重,不能直接判定模型源码写错。原目录只有六个 TM/QM,注册表只有一个相应 Bundle。
与已关闭 #106 症状相同,属于疑似回归,具体根因待确认。本轮保存复现,未自动重开 issue、未删已登记 Bundle 来伪装模型更新通过;隔离 Namespace 只用于确认模型及别名查询本身有效。
随后已按用户授权创建 #149 并关联 #106;未变更 #106 的原关闭结论。
默认启动的 Console 页面、Analytics capabilities 均为 404;显式 -AnalyticsConsole 后,/analytics-console/ 返回 200,/analytics/api/v1/capabilities 返回成功,direct Analytics lane 可用。这里只验收入口和能力声明,没有进行浏览器交互或自然语言问数,未配置/发布 FAP 资源。
优先处理上述成员接口与重复校验。随后在日常教学 Namespace 完成正常“修改 → 校验 → 刷新 → 实时元数据 → 查询回归”,再把第十二章候选别名稿转为正式示例。下一章仍讲查询范围与权限,之后讲模型维护、Console/FAP;不在本轮提前进入新章节。
完整证据:launcher-0.1.29-retest。
install-verification.json、process-identity.json、teaching-process-identity.json:发行身份。alias-acceptance.json、distinct-acceptance.json、regression-acceptance.json、chapter-alias-acceptance.json:通过项及真实适用范围。member-observations.json、fresh-member-observations.json、*-candidate-models-stack.json:剩余问题,后者含实际重复资源诊断。default-runtime.out.log、console-runtime.out.log 及对应 err 日志:运行日志;whole-dimension-warning.txt:不支持展开前缀的警告。teaching-upgrade.json、teaching-acceptance.json、cleanup.json:升级、保护文件哈希和收尾。github-issues/submission.json:#148、#149 及 #106 关联评论的提交记录、正文哈希和远端核对结果;相邻 Markdown 为实际发布正文,相邻 remote JSON 为回读副本。checks/prepare-launcher-0.1.29.py、checks/retest-launcher-0.1.29.py、checks/upgrade-teaching-launcher-0.1.29.ps1:安装校验与分阶段操作。首次安装/登记步骤要求全新隔离状态,不要在现有工作目录盲目重放。本轮由当前 Codex 会话实际执行公开 CLI。未另开干净 Codex 会话仅靠短提示词验收,未做 Text-to-SQL 多次生成对比、生产权限验收或全量引擎测试。历史 0.1.25/0.1.26 证据均保留。