adarkroom PR #31 — 常驻目标行 Before / After
Status: ready-with-notes · base 1f0e6d1 → head 1ee6426
【新玩家】在【小黑屋开局】用【常驻目标行「火灭了,生火」】完成了【点「生火」后提示原地变成「火还在,添柴」】
MP4
Story scores (R1–R7)
| 候选 | R1 | R2 | R3 | R4 | R5 | R6 | R7 | 总分 |
|---|
| A | 3 | 4 | 3 | 3 | 4 | 3 | 4 | 66 |
| B ✓ | 4 | 5 | 5 | 4 | 5 | 4 | 4 | 88 |
| C | 2 | 4 | 3 | 2 | 4 | 4 | 3 | 59 |
| 新A | 4 | 5 | 3 | 4 | 3 | 5 | 2 | 72 |
Shot list
| id | t (s) | beat | framing/zoom | focus | pointer | glyph px | hold s |
|---|
| S1 | 0.0–0.6 | B0 establish | full 1.0 | Before chip + whole 小黑屋 page | idle (off ROI) | – | 0.6 |
| T12 | 0.6–1.2 | transition | medium 1.0->3.05 | log + 生火 button | idle | – | 0 |
| S2 | 1.2–2.32 | B1 before | close 3.05 | 生火 (no goal line in log) | glide to 生火, click at 2.32 s (bottom-right of button) | 29 | 1.12 |
| S3 | 2.32–5.0 | B3 result | close 3.05 | log 火光映出窗外 / 添柴 button | parked | 26 | 2.68 |
| S4 | 5.0–5.6 | B0 establish | full 1.0 | After chip + whole page | idle (off ROI) | – | 0.6 |
| T45 | 5.6–6.2 | transition | medium 1.0->3.05 | goal line + 生火 | idle | – | 0 |
| S5 | 6.2–7.34 | B2 action | close 3.05 | goal line 火灭了,生火 + 生火 button | glide to 生火, click at 7.34 s | 25 | 1.14 |
| S6 | 7.34–11.0 | B4 payoff | close 3.05 | goal line 火还在,添柴 | parked | 25 | 3.58 |
QA — §7.1 legibility at delivered 800 px (CJK glyph height)
| check | OCR (chi_sim) | px | min | verdict |
|---|
| control_before | 生火 | 29 | 9 | PASS |
| log_before_result | 火光上映出窗外 | 26 | 7 | PASS |
| goal_after_initial | 火灭了,生 | 25 | 16 | PASS |
| control_after | 生火 | 29 | 9 | PASS |
| goal_after_updated | 火还在,添 | 25 | 16 | PASS |
Result readable 3.58 s. 5/5 key texts OCR-matched with chi_sim (sim>=0.8) and 25-29 px CJK glyph height at delivered 800px (thresholds 16/9/7). Result 火还在,添柴 readable 7.42-11.0 s. MP4 crop-OCR at 9.0 s read 火还在,添集 (sim 0.83). Cold-viewer read only provisional.

Cold-viewer contact sheet (16 frames)
Deviations
- UI language: game UI is Chinese by design; English-UI hard rule cannot apply; CJK post-check N/A; OCR via tesseract chi_sim+eng; CJK full glyph height measured against cap-height thresholds.
- record_machine=box (headless Playwright Chromium 1248 chrome-headless-shell, playwright 1.56.1 via executablePath) instead of Mac mini / ui-demo / build_feature_media.py; derivatives encoded on box with scripts/camera.py.
- Capture: page.screenshot loop at DPR 2 (~12 fps, timestamped) resampled to 30 fps CFR GT (raw.mp4); recordVideo and CDP screencast rejected (scale bug / 1280 cap).
- Overlay: Before/After + sha7 chip added (user-requested for PR artifact); otherwise pure-screen; visible pointer is an injected DOM arrow (headless has no OS cursor).
- GIF is 11.0 s (Before 5 s + After 6 s) at 800x450, not 8 s/520 px: two sequential states each need establish + click + >=3 s hold; no speed-up.
- Build route: local static serve of godot/build/web via scripts/prepare-vercel.sh at base 1f0e6d1 and head 1ee6426 (python http.server with COOP/COEP); no per-commit Vercel deployment used (vercel.json disables git deploys except main/live branch; PR branch previews are skipped by vercel-ignore.sh).
- Telemetry requests (supabase / /api/*) aborted in Playwright so the recording does not pollute production playtest_events.
- ChatCut language/Mac-mini recording lock/stock footage + test-cutout + batch screening rules: N/A (browser game on box, no stock media, no ChatCut).
- Storage: per user steering, artifacts committed to private monorepo liush2yuxjtu/showcases (adarkroom-pr-before-after/), not feature-recorder. Nothing was pushed to feature-recorder.
- PR embed: adarkroom is PUBLIC and showcases is PRIVATE, so the PR body embeds the Funnel GIF URL; may not load in mainland China.
- Take verification frame strips are cropped to the ROI region (plus full-frame establish visible in contact sheets).
handoff.json