Files
MapLibreParticleLab/docs/50_Step记录/STEP-047_Runtime_Timeline与Playback_v4.md
OpenAI Codex 46dceb5cb6
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs: close STEP-047 timeline playback validation
2026-09-04 10:24:04 +08:00

2.3 KiB
Raw Permalink Blame History

STEP-047 Runtime Timeline 与 Playback 最终验收

状态:CLOSED / PASS

功能代码最终 Android 验证基线:1343929474796b1313489ee9fecbf23b949580a7(fix: keep particle timeline playback ticking)。本文件后续的文档收尾提交不是功能实现提交。

历史与最终结论

  • 初次实现后 Android Round 1 为 PARTIAL / NEEDS FIX:主链和 reuse 通过,但 Timeline 过短、状态机交互、异常入口和可观测性需要修正。
  • 集中修复后 Android Round 2 仍发现 tick 仅在非连续 layer update 中执行;0609199c... 修正 playback 验收控制,134392947... 将 tick 接入连续 State drawable frame。
  • Android 最终复验完成,STEP-047 CLOSED / PASS。

Android 最终验收 PASS

  • 持续 Playback Tick、Pause/Resume、0.5x/1x/2x、Seek、Step Prev/Next 均通过。PAUSE 冻结 cursor/mix 而粒子 simulation 继续;Resume 不补算暂停时间。
  • PLAYING seek 保持 PLAYING,PAUSED seek 保持 PAUSED,Seek END 进入 ENDED,ENDED seek 非末尾可回到可继续状态;跨非连续 window 的可解释 reset 合法。
  • GAP 在 boundary WAITING/GAP_HOLD、mix=1 时保持最后有效 Field 且不黑屏;RECOVER 后继续。INVALID NEXT 以 TIMELINE_REJECTED reason=INVALID_NEXT fail-closed,当前有效窗口与 Renderer 保持,Recover 后继续。
  • 自动推进保持 40-04 契约:OLD_T1 → NEW_T0 reuse,只上传 NEW_T1,simulationRebuild=false、trailCleared=false;正常播放不 reset simulation、不 clear trail。
  • Preload/Cache PASS:TIMELINE_PRELOAD 与 TIMELINE_CACHE_HIT 可见。Validation timeline 为 snapshots=6、cacheCapacity=8,未出现 CACHE_EVICT 是容量未满的正常结果。
  • VIS runtime、MAP/MORE 与 Compact Validation UI 均通过。

非阻塞记录

Validation 状态栏对自动 MIX、WAITING/INVALID 等状态的可观测性仍可优化,分类为 Validation UI observability 的 NON-BLOCKING 技术债;不是 Timeline Core 或 Renderer failure,不阻塞本阶段关闭。

TimeStats: RenderEngineTimes are already at its maximum size[64] 是 Android/RenderEngine 环境噪音;未伴随 crash、ANR、GL resource failure 或 Renderer failure,不判定为粒子系统失败。

本收尾未修改功能代码,未执行 Android Gradle、ADB 或 Jest。