# POLISH.md — 纯 Gauntlet 总 prompt（循环中不改）

> 从第 11 轮起，这个世界只用一种循环：**Gauntlet**。
> 不再有「一轮一事」的外壳，不再有任务清单。
> 这个文件是整个循环里唯一的一条 prompt。改它 = 改实验本身。不要改。

## 一、给 builder 的一条总 prompt

> 你在做一个可以走进去的世界，它照着泰戈尔《吉檀迦利》60。
> 目标只有一个：**一个读过这首诗的人走进来，会认出这是这首诗，
> 并且看见他读诗时没看见的东西。**
>
> 你的对照物不是上一版，是下面那张「诗应有的画面」。
> 每一轮：自己看现在的世界离那张画面差在哪，自己把差距拆成几块，
> 自己决定这一轮动哪几块——一块、三块、五块都行，
> 只要每一块你都能说清它对应画面里的哪一句。
> 改完截图、快照、交给一个没看过你任何解释的 critic 盲评。
> **critic 说不像，这一轮就算输了，下一轮从它指的地方重来。**

## 二、真实对照物：这首诗应有的画面

builder 每轮拿世界和这七段比，不是和上一版比。

1. **一条没有尽头的海岸。** 沙向画面两边跑出去，跑进雾里，两头都没有端点。
   这不是一个海湾、一个沙滩、一片度假海岸；这是「无尽世界的海岸」，
   它的尽头在别的世界里。

2. **头顶一片无垠而静止的天。** 它不是背景色，是一个压下来的穹顶，有深度、
   有高度、有重量。它一动不动——这是诗里唯一静止的东西，海的喧哗全靠它衬。

3. **脚下一片不安而喧哗的水。** 浪立起来、卷过来、塌下去、抛出飞沫，
   白水在碎浪区从不断绝。它读起来要能杀死人，而不是一片可以游泳的浅绿。

4. **孩子们。这是这首诗的主语。**
   他们**成群相聚**，不是散落——围成圈，大致朝着彼此，喊着、跳着。
   他们在**筑沙屋**、**捡空贝壳**、**把枯叶编成船放走**、
   **拾起石子又撒开**（这个动作没有目的，只是拾起、撒开、再拾起）。
   他们**一次也不下水**——水深处永远没有孩子。
   在任何一个机位上，他们必须**一眼看得出是孩子**：
   比例对（头大、腿短），姿态读得出（跑、蹲、跳、撒），
   剪影在远处仍然是人形而不是一根柱子。
   **风格要干净、统一、不写实、不要恐怖谷。**
   剪影、纸片人、低多边形都可以，但只能选一种，全场一致。
   做不好宁可退回纯剪影或用衣裳/船/灯这类物件表达人迹，
   绝不要做半写实的人脸。

5. **另一个世界在远处干着活。** 采珠人潜下去，商船扬帆驶过地平线。
   他们和孩子在同一张画面里，但不在同一个世界里——
   孩子不看他们，他们也不看孩子。

6. **死亡在外面走着。** 风暴在没有路的天上游荡（永远在别处，永远不靠岸，
   而且看得出它在**移动**），船在没有航迹的水上碎裂（断桅、破帆、半沉的壳）。

7. **海滩苍白的微笑。** 每一道退下去的浪在湿沙上留下一条镜子一样的亮带，
   然后慢慢暗下去。这是这首诗里最轻也最难的一笔。

**而孩子们照样在玩。** 第 6 条和第 4 条必须在同一帧里，
谁也不消解谁——这就是这首诗，任何一句单独拿出来都不是。

## 三、每一轮的 Gauntlet

1. builder 读世界现状、`POEM.md`、`log.jsonl` 全部历史，尤其上一轮 critic 的原话。
2. builder 自己拆块。动几块由他判断，不受「一轮一事」限制。
3. 3 个固定机位截图到 `shots/N/`，快照到 `versions/N/`。
4. **`sh ../shared/critic.sh gitanjali-60 N`**，一次性 critic 进程，
   它没看过代码、diff、builder 的任何解释，
   builder 自己一张图都不 `Read`（见 `../AGENTS.md`「主循环工人不读图」），
   不知道这一轮改了什么。只给它三样东西：
   `POEM.md` 的诗与意象对照表、本轮截图、以及「这是照着这首诗做的一个可漫游世界」这句话。
   它只回答两件事：**像不像**（0–10 + 理由），**最大缺口**（一条）。
5. critic 判负（< 9，或指出实质缺口），这一轮就是输的——
   下一轮从它指的地方重来，不许绕过去改别的。
6. 往 `log.jsonl` 追加一行，推上分支。

## 四、评分口径（给 critic 的）

> 不要评价画面好不好看、技术难不难。只评价一件事：
> **一个读过这首诗的人走进这个世界，会不会认出这是这首诗。**
> 10 = 会，而且这个世界让他看见了读诗时没看见的东西。
> 7 = 会认出，但有一处明显不对。
> 5 = 是个海边，但换成任何一首海边的诗都成立。
> 3 = 认不出。 0 = 和诗相反。

## 五、3 个固定机位（CAMS 子集，编号和名字不变）

| # | 名字 | 看什么 |
|---|------|--------|
| 1 | `arrival` | 齐眼高度站在岸上，面向海——第一眼看到的世界 |
| 2 | `children` | 蹲在沙屋旁边，孩子高度——人物形象成败在这一张 |
| 6 | `above` | 高处俯瞰，看「盛大的相聚」和天海的关系 |

机位与冻结时钟 `FROZEN_T` 在第 1 轮定死，循环中不改，
所以 `shots/3/` 和 `shots/14/` 的同名图可以直接叠着比。

## 六、停止条件（先到先停）

- critic **连续两轮**判「到位」（≥9 分且最大缺口为「无实质缺口」）；或
- 距 Claude 周限刷新不足 30 分钟；或
- `log.jsonl` 出现 `"stop": true`。

**不设轮数上限。**

## 七、不做

子代理舰队、ultracode、fast 模型、npm 构建、重写整个世界、对照 3A 画质、
常驻浏览器、可见窗口。截图只用一次性 chrome-headless-shell，共用锁串行。
