diff --git a/docs/50_Step记录/STEP-053_Windy-style_Canonical_Field与Host_MapLibre_Submission_Contract_v1.md b/docs/50_Step记录/STEP-053_Windy-style_Canonical_Field与Host_MapLibre_Submission_Contract_v1.md index 1eacccf36..6cf056ff7 100644 --- a/docs/50_Step记录/STEP-053_Windy-style_Canonical_Field与Host_MapLibre_Submission_Contract_v1.md +++ b/docs/50_Step记录/STEP-053_Windy-style_Canonical_Field与Host_MapLibre_Submission_Contract_v1.md @@ -1,6 +1,6 @@ # STEP-053 Windy-style Canonical Field 与 Host→MapLibre Submission Contract -- 状态:`IMPLEMENTED / WAITING_ANDROID_VALIDATION` +- 状态:`CLOSED / PASS` - Starting HEAD:`285d23a58f6ecb16f360748df688d9d03dad6b3d` - 分支:`particle/main` - 目标:让已经取得并规范化规则二维 U/V Field 的外部 Host,以低频 `metadata + contiguous binary payload` 提交给 MapLibre Native,并复用 STEP-049/051 的 Adapter、Snapshot、Timeline、Runtime Window 与 Renderer。 @@ -119,3 +119,34 @@ Android Validation Host 原有 STEP-053 控件和 JNI/API 已存在,但 MORE - 未新增 JNI forwarding,复用既有 `MapLibreMap → NativeMapView → RasterArraySource::submitHostField()` 薄桥。未修改 Adapter、Timeline、Runtime Field Window、Renderer 或任何 provider/network 逻辑。 Android Gradle、APK、ADB 和设备验收仍由用户手工执行;状态继续为:`IMPLEMENTED / WAITING_ANDROID_VALIDATION`。 + +## Android Host Submission 最终验收 + +用户已在 Android Validation Host 完成综合技术验收:`STEP-053 Android Host Submission Validation: PASS`。 + +| 验收项 | 结果 | +| --- | --- | +| `HOST FIELD` 与 STEP-051 `PRODUCTION FEED` 路径分离 | PASS | +| canonical `production-wind-t00` ~ `production-wind-t03` | PASS | +| Host Submission → Adapter → Snapshot → Timeline → Runtime Window → GPU Renderer | PASS | +| T0/T1 Initial Window、T2/T3 Next Submission | PASS | +| `PLAYBACK_PLAY`、Automatic MIX | PASS | +| production→production Window Boundary(至少 2 次) | PASS | +| `OLD_T1 → NEW_T0` reuse、only NEW_T1 upload | PASS | +| 正常 boundary `simulationRebuild=false`、`trailCleared=false` | PASS | +| `HOST DUPLICATE` / `DUPLICATE_NOOP` | PASS | +| `HOST INVALID` / Adapter fail-closed / last valid field retained | PASS | +| Renderer continuity(`ParticleRender stateSeed=CONTINUE`)、无黑屏、无 crash | PASS | + +两次已确认的连续 boundary 为: + +`production-wind-t00 / production-wind-t01 → production-wind-t01 / production-wind-t02`,以及 +`production-wind-t01 / production-wind-t02 → production-wind-t02 / production-wind-t03`。 + +正常 boundary 的 `fieldUploadCount` 从 `4 → 5 → 6`,每次只增加一个 NEW_T1 upload。`simulationResetCount=1` 仅来自旧 fixture `uniform-east / uniform-east` 首次切换到 Host `production-wind-t00 / production-wind-t01` 的允许初始化(该切换可出现 `simulationRebuild=true` 与 `trailCleared=true`);它不是 production→production boundary 回归。 + +用户正式风场数据集为 `NOT PROVIDED / NOT VALIDATED`。这不阻止本 Step 关闭:STEP-053 的目标是冻结并验证 Host→MapLibre canonical Field Submission Contract,已由本地 canonical T0~T3 驱动实际 Timeline、Runtime 和 GPU Renderer 完成验证。后续正式数据只是在同一 contract 下替换或追加验证。 + +Validation UI 的 MIX 文本可能滞后、WAITING/INVALID 视觉不够明显,继续归类为 `NON-BLOCKING observability`,不是 Core、Timeline、Runtime 或 Renderer 缺陷。本次仅文档收尾,未修改功能代码,也未执行 Android Gradle/APK/ADB/Jest。 + +最终状态:`CLOSED / PASS`。 diff --git a/粒子开发记录.md b/粒子开发记录.md index 20b595a32..63821985d 100644 --- a/粒子开发记录.md +++ b/粒子开发记录.md @@ -390,3 +390,11 @@ - STEP-053 Host submission API/JNI 和 Host 控件已在 `b31f80c...` 存在;为让手工入口与 STEP-051 `PRODUCTION FEED` 一眼区分,MORE 现显示 `PRODUCTION FEED → HOST FIELD → INVALID PROD → HOST DUPLICATE → HOST INVALID`。 - `HOST FIELD` 继续只读取既有 T0~T3 metadata/binary assets 并逐片调用正式 `MapLibreMap.submitRasterArraySourceHostField()`;新增低频 `HOST_FIELD_DATASET_LOAD` 日志,Native 继续输出带 fieldId/generation/validTime 的 Host submit 事件。 - Host duplicate 与 Host invalid 均重用同一 Host submission contract,不通过 style reload 伪造验证。未修改 Adapter、Timeline、Runtime Window、Renderer、JNI/Core 语义或任何网络/provider 逻辑;状态仍为 `IMPLEMENTED / WAITING_ANDROID_VALIDATION`。 + +## 2026-09-04 — STEP-053 Android 技术验收最终收尾 + +- STEP-053 正式 `CLOSED / PASS`。用户 Android 综合验收确认 `HOST FIELD` 与 STEP-051 `PRODUCTION FEED` 路径分离;canonical `production-wind-t00`~`t03` 真实经过 Host Submission、Adapter、Snapshot、Timeline、Runtime Window 和 GPU Renderer。 +- T0/T1 initial、T2/T3 next、PLAY、automatic MIX 和两次 production→production boundary 全部 PASS;两次 boundary 均为 `OLD_T1 → NEW_T0` reuse、only NEW_T1 upload、`simulationRebuild=false`、`trailCleared=false`。 +- `fieldUploadCount=4 → 5 → 6` 证明正常 boundary 每次仅上传一个 NEW_T1。唯一 `simulationResetCount=1` 属于旧 fixture 切到 Host dataset 的允许初始化,不是正常 production boundary 回归。 +- `HOST DUPLICATE` 返回 `DUPLICATE_NOOP` 且 upload/reset 不增长;`HOST INVALID` 经 Adapter reject fail-closed,last valid field 与 Renderer continuity(`stateSeed=CONTINUE`)保持,无黑屏、无 crash。 +- 用户正式风场数据集仍未提供、未验证,但不阻塞 contract 阶段关闭;后续可在同一 canonical contract 下追加。MIX 文本滞后及 WAITING/INVALID 视觉为 `NON-BLOCKING observability`,本次未修改功能代码或执行 Android/Jest。