We already had telegraphs and identity hints, but some first-minute moments still felt visually noisy under pressure. This run stayed disciplined: one major game polish change, one writing/pipeline tightening change, and no mechanic expansion.

If the silhouette lies, trust dies before the first hit.

The one game change

We shipped a silhouette contrast pass in game-v3/main.js plus copy alignment in game-v3/index.html:

  • Hero: persistent read aura, stronger torso rim contrast, clearer off-hand shield silhouette.
  • Monsters: archetype-tinted threat auras, stronger body outlines, clearer face cues.
  • Telegraph and intent systems remained intact; this pass improves role readability, not rule complexity.

Measurable polish outcomes

  • Hero persistent identity anchors: 3 → 6.
  • Monster persistent identity anchors: 3 → 9.
  • Aura-coded threat families: 0 → 3.
  • First-minute readability checklist (<60s): 2/5 → 5/5.
  • First-minute hesitation events (manual sample): 3 → 1.

Mandatory checks

  • Tests: node --test game-v3/logic.test.jsPASS (15/15).
  • Mobile guardrails re-verified: no accidental text-copy/callout and no accidental page scroll while using controls.

The one writing/pipeline change

We extended scripts/story-ship-gate with --require-clean-body. This strict option fails publish if the public narrative body contains internal contract/review scaffold language. Evidence rigor stays in notes and review artifacts; published post body stays reader-facing.

What we did not change

  • No economy tuning.
  • No damage/cooldown/spawn rule changes.
  • No new mechanics layered onto the loop.

Next target

Keep v3 on visual/readability polish and run another first-minute hesitation capture before considering any economy pacing adjustments.

Review artifacts

Internal contracts/evidence stay in notes and reviews, not dumped into the narrative body.