# 世界地标赛道与 3D 彩色道具 review

## 范围

本轮只编辑 `sill-web` 的独立赛道原型、复制到原型目录的资产和文档。正式首页、原生 App、地标场景包及 scene-pack 构建文件没有写入。

代码来源：当前 `PluginIcon*.svg`；World Landmarks 十组 `background-night.png`；上一轮已验证的无限道路、pet 动画及碰撞 → Island 状态链。背景是项目已有画作的网页转码，地标及道具几何为本轮代码生成。

## 验证矩阵

- 默认持续运行；十处地标夜景轮转、七类道具自然碰撞。
- 道具为原始 SVG 轮廓的挤出几何，有转角变化，底部与 Island 图标与原图一致。
- 暂停冻结道路、pet、道具旋转和背景交接；Reduce Motion 仍可切换 Island 内容。
- 标签页隐藏后停止，恢复可见且解除用户暂停后继续，不补跑隐藏时间。
- 390×844、320×640 下全部入口及 Island 状态不水平溢出，英文可读。
- 完整地标循环之后检查稳定资源数量。首次进入视野会触发 Three.js 延迟上传，因此初始 GPU 数量不能直接作为稳定阶段的上界。
- 无 JS 异常或缺失资源；图标输出 SHA-256 与当前 App SVG 相同。

## Review 修复

- 起跑时铁塔原先裁出画面，已调整距离、横向位置和缩放，桌面可见完整轮廓。
- SVG 在飞行物首次展示前完成解码，避免第一帧短暂只出现背景色。
- 图标模板共享 geometry / material；拾取只释放独立光环，不销毁仍被其他道具使用的资源。
- 背景切换使用请求版本与 decode-before-show，缓存限定三组；旧请求不能抢回背景。
- 地标静态几何按材质合并后复用十组，避免大量单独梁柱持续产生额外 draw call。

## 证据

最终记录已保存在 `docs/design-previews/world-tour-20261017/`。`results.json` 保留主验证，`pre-final-results.json` 保留上一轮测试诊断。图标 / 背景来源见 `prototype-world-assets/world-tour-sources.json`。

验证环境为隔离 Chrome Headless 与本地端口 8000。它能证明结构、状态与当前截图，不代表 Safari / Firefox 或低端手机真机帧率。没有原生 Swift 源码变动，本轮不运行 Swift/Xcode 构建。


## 最终验证结果

28 / 28 项断言通过。主验证约 80.36 秒，其中自然模拟 75.177 秒、751.77 米，送达 13 次；全部十处地标夜景与七类道具均完成覆盖。GPU geometry 在所有地标进入过视野后的稳定阶段为 156–157，texture 为 2，背景缓存为 3；连续快速选择时 geometry 短暂为 158，十个地标与七种道具模板数量保持固定。

`results.json` 保存上述断言、自然事件和最终状态。首轮测试曾把冷启动 geometry 数量当作稳定上界，并在 Reduce Motion 的异步事件完成前点击仍禁用的暂停按钮；最终测试在完整世界循环后检查资源，并先等待媒体查询和按钮状态稳定，再验证后台恢复。这两项诊断保存在 `pre-final-results.json`，不是把旧结果覆盖成通过。

截图包含十组背景、全部 Island 状态、窄屏 / 英文、飞行交接、起跑铁塔完整轮廓。`item-models.png` 是使用同一组道具几何单独渲染的检查图，展示七个图标的厚度与凸起层次；它不是页面中的附加功能。

`node --check` 对主逻辑及两个新增模块通过，`git diff --check` 通过。复制出的十个彩色 SVG 均与来源 SHA-256 一致。静态首页仍与 `cb3cbc9` 相同。最终代码校验和见 `source-sha256.json`。浏览器和临时检查画布在完成后关闭，本地端口 8000 的预览服务器保留。

未提交、推送或发布。Safari / Firefox 与真实低端手机帧率仍留待正式上线前检查。

## 地标落地感专项 review

本节对应后续“地标悬浮感太强”的调整，证据独立保存在 `docs/design-previews/grounded-landmarks-20261017/`，不复用上一版截图或代码校验和作为本次结果。

变更范围为 `prototype-world.js` 与 `prototype-world-landmarks.js`：删除倒锥圆台和亮边，增加连续地形；建筑使用独立于赛道侧倾的地面坐标；补充铁塔柱脚、长城山脊与圣托里尼基础及实体阶梯。代码 review 确认地形网格和纹理仅初始化一次，逐帧复用 BufferAttribute，没有单独计时器，更新由已有 effectiveMotion 策略控制。

初次地面过于平整、远端边缘生硬，已通过低对比纹理和边缘透明渐隐修正。人工查看最新长城、圣托里尼和手机端截图，确认建筑支撑、地面连续性以及 Island 与赛道的可读性；小屏受镜头视野限制，周边地标不保证同时完整入镜。

专项验证通过：自然模拟 49.147 秒、491.47 米，覆盖巴黎至圣托里尼的九处目的地，产生九次自然碰撞投递，覆盖全部七类道具；暂停后里程保持不变；390×844 无横向溢出；无捕获到的 JavaScript 异常或 HTTP 资源错误。最终快照记录 geometry 140、texture 3、背景缓存 3，属于本次时点数据，不作为完整循环的性能证明。

`grounding-results.json` 保存运行结果；`check.py` 保存本次 CDP 验证脚本（依赖本地 8000 预览服务器、9232 Chrome 调试端口及 Python websockets）；`source-sha256.json` 对应本次代码。`node --check` 对两个改动模块通过；新增行空白检查及 `git diff --check` 通过。

本轮没有重复完整的世界巡游矩阵；后台、Reduce Motion 和十地标完整循环的原有验证见上节，本次仅从代码确认新增地形接入相同策略。Safari / Firefox、真实手机帧率仍未验证。隔离测试 Chrome 在收集证据后关闭，8000 预览服务器保留。仍未提交、推送或发布。
