# 程序化构建：双客户端同步演示

## 一键录制

在仓库根目录运行（已有本机依赖、证书及保留的可执行文件）：

```powershell
node scripts/authoring/record-building.mjs --bins target/whitepaper-recording-binaries --character-cache target/structural-collapse-evidence/host/authoring/characters/meshy-hero --ffmpeg C:/Python312/Lib/site-packages/imageio_ffmpeg/binaries/ffmpeg-win-x86_64-v7.1.exe --out target/building-new-run --seconds 90 --fps 6
```

每次使用新的输出目录。通用依赖见 [RECORDING_REHEARSAL.md](RECORDING_REHEARSAL.md)。
脚本创建隔离的本地服务器，先启动两个原生客户端录制空地，再通过
AuthoringRuntime 发布建筑程序。服务器运行 Luau 循环，按每批最多 10 个构件、
每 15 tick 一批的节奏执行 `build_prefab`，完成 399 个构件。摄像机分别位于
建筑两侧；视频上方为 left 机位，下方为 right 机位。

这次演示复用已有 Agent 编写的建筑算法，并由录制脚本调整节奏；没有展示
新的在线模型推理或远端 Agent 对话。发布、程序执行和客户端画面均为真实运行。
使用的是普通独立静态构件版本，不宣称本次验证结构承重或坍塌。

## 分镜与讲解稿

各段属于同一次连续录制，两个窗口使用同一时间轴和相同播放速度。

| 段落 | 画面 | 建议讲解 |
| --- | --- | --- |
| 空地 | 两个机位显示尚未搭建的场地 | “Agent 提交的不是整栋建筑模型，而是一段构建程序。” |
| 楼层和外墙 | 地板、立柱、窗间墙逐批出现，建筑向上生长 | “服务器验证并运行程序，通过循环和参数逐批创建构件，两个客户端同步接收结果。” |
| 建筑细节 | 楼梯、屋顶护栏、雨棚和设备补齐 | “同一套程序继续补齐楼梯与屋顶细节。” |
| 观察塔 | 侧边观察塔逐层升起，连接桥与顶部标志出现 | “观察塔和连接桥也由程序构建，不需要重新启动服务器。” |
| 完工 | 两个视角保留完整建筑约数秒 | “最终，服务器生成 399 个构件，两端都显示完整建筑。” |

白皮书图注：**Agent 编写的 Luau 程序在权威服务器上逐批构建建筑，两个原生客户端从不同视角同步呈现构建过程。** 展示加速版时标注“1.25 倍速”。

## 输出与核验

- `rehearsal.mp4`：完整上下排列视频，960×1080。
- `whitepaper/construction-stacked-1.25x.mp4`：从首次构建前 2 秒到两端完工后 4 秒的连续片段，1.25 倍速。
- `whitepaper/edit.json`：精确剪切区间和速度。
- `construction.input.json`：本次完整包源码；`construction.receipt.json` 与 `construction.active.json` 为发布记录。
- `construction-proof.json`：服务器构件数量轨迹及 399 个最终实体文档。
- `result.json`：录制与客户端核验。要求每个机位自身的实体数增长 399，且至少显示三个中间阶段；原有场景实体数量可能因视角而不同。

原生录制为 6 Hz 采样，视频编码为 30 fps 保持帧。两端按实际采集时间对齐，
不表示每帧在同一个网络 tick 渲染；实体数量、服务器文档与人工画面检查共同
提供证据，不将计数相等宣称为逐实体网络一致性证明。自动画质结果与丢帧记录
保留在结果中。分享 `whitepaper/` 素材，不要分享 `host/` 中的本地配置和密钥。

## 本次实录

`target/whitepaper-building-20260921-01/result.json` 为 `verified`。两端各录得
540 帧，无采集丢帧；均记录 39 个中间构建数量，最终实体数分别由 26→425、
27→426，建筑增量都是 399。剪辑版长约 28.35 秒，完整片与剪辑版均通过完整
FFmpeg 解码检查。检查了中间楼层、完工画面与上下合成预览。画质自动评估仍为
`review`，不据此宣称渲染验收通过。

首次后处理错误地比较两端总实体数，因不同场景基线而拒绝通过；修正为各自
基线上的构建增量后，复用完整录制离线校验与编码，原失败记录保留为
`recovered-failure.json`。可重复运行的录制入口已包含这一修正。

```powershell
node --test scripts/authoring/construction-recording.test.mjs scripts/authoring/recording-evidence.test.mjs scripts/authoring/authoring.test.mjs
```
