2026-10-22。结论:#155 的原始模型在 0.1.36 上复测通过。 普通属性的显式时间角色与用途不再丢失;日期自维度的 JSON/Markdown 也一致。本次为下载发行包的独立实测,不是引用发布说明作为通过依据。
| 项目 | 实际值 |
|---|---|
| Release | Launcher 0.1.36(prerelease) |
| Source commit | 09e8ac85d7ed31c1df5a6c8ed2066e84818c3059 |
| JAR SHA256 | de54f48ce6164fb557a4a667607d84da4c0898e2cb822c30abe98c0763205dc3 |
| 资源目录 | lab/releases/launcher-0.1.36,6 个附件均按 GitHub digest 校验,其中 5 个同时核对 SHA256SUMS;JAR 与 manifest 一致 |
| 启动 | 阅读包内 README,原样调用发行脚本,-Port 18136 -WorkDir <独立目录> |
| 实际监听 PID | 103580,核对与脚本返回一致,进程命令确实使用上述 0.1.36 JAR |
| Runtime / CLI | http://127.0.0.1:18136 / 已安装正式 CLI 0.1.25 |
| API / 安全模式 | Java,foggy-runtime-api/v1,schema 2026-06-06,none-dev-test-only |
| 默认功能 | lite,Console/FAP 未启用 |
启动时就绪检查在约 9 秒后成功;之前两次为服务尚未监听时的连接拒绝,未改启动脚本或重启重试。随后再次 wait-ready 与 capabilities 成功,响应保存在证据目录。
time-role-repro-035;这里只改变 Runtime 端口,保留原模型、字段名和显式注解。tables inspect 确认表,再 models validate,登记 Bundle、刷新、实时读取 JSON 和 Markdown。公开 CLI 命令顺序、完整响应和模型副本由复测脚本保存;不会运行旧 0.1.35 脚本中“断言错误仍然存在”的逻辑。
下表的角色和 recommendedUse 均在 JSON 与 Markdown 中逐项断言一致:
| 字段 | 配置与 0.1.36 实际角色 | 0.1.36 实际用途 | 0.1.35 原现象 |
|---|---|---|---|
| businessAt | business_date | business_axis_control | 角色碰巧正确,但用途丢失 |
| loadedAt | system_time | technical_ingestion_only | 错误推断为 business_date,用途丢失 |
| createdAt | business_date | explicit_business_axis | 错误推断为 system_time,用途丢失 |
| loadedTime$id | system_time | technical_ingestion_dimension_only | Markdown 正确,JSON 缺少角色与用途 |
未再次复现 #155。 修复不依赖表中存在数据,空表也返回相同的显式时间元数据。
共 6 组元数据场景、4 项预期校验拒绝、5 项日期查询:
ingestion_checkpoint、自维度 ID 重命名为 ingestedAt。非法注解的公开响应为 MODEL_VALIDATE_FAILED / models.validate。具体诊断在 diagnostics.attributes.validation.errors[].message,例如:
INVALID_TIME_METADATA: TimeRoleProbeModel.properties[2](../notes/a9bf46bf6928.md).timeRole must be a string or null; use a semantic role label for timeRole and explanatory text for recommendedUse (received Integer)
自维度错误也定位到 TimeRoleProbeModel.dimensions[0](../notes/e6f35675a606.md)。这里验证的是 models validate 的候选校验入口,没有绕过失败校验强行加载或执行无效模型。
lab/evidence/launcher-0.1.36-retest/runs/20261022-154642-668771,保存原始模型、查询、响应、精确校验诊断及前后文件摘要。复跑时先确认 18136 空闲,按发行脚本选择新的独立工作目录启动,并重新记录本轮 PID/JAR 身份到 runtime-identity.json,再运行 python lab/checks/retest-time-role-0.1.36.py。脚本每次创建独立时间戳证据,但数据源名与 Bundle 名固定;若复用已有测试进程,需要先确认其注册状态,不能直接反复添加同名对象。旧复现和旧验收证据全部保留。
临时 PID 103580 经进程身份核对后已停止,18136 释放,见收尾记录。原教学服务仍为 18067 / PID 150796 / Launcher 0.1.35,capabilities 正常;未切换默认启动入口。原 issue 模型、数据库、Chinook 和第十八章模型文件摘要均未改变。
本次没有执行跨数据库、完整时间分析、生产权限或 Console 的整包验收,也没有向 GitHub 追加评论或关闭 issue。第十八章仍保留其 0.1.35 的实际模型与验证语境;如后续采用 0.1.36,可再决定是否改回普通属性写法。