What changed, and why
Every anachronism-wager string told the player the timeline swings "harder, both ways" — which reads as symmetric. It isn't. Reaching beyond a figure's own era amplifies losses faster than gains, so a bold reach is a bet against the house, not a free power-up. Playtesting flagged this as the single biggest legibility gap (~71 mentions): players couldn't tell the wager was asymmetric.
This PR rewords the four player-facing anachronism strings to name the asymmetry. No mechanics change — the factor tables, the amplifier, the dice are all untouched. The only edits are to copy. And one important non-edit: the stake mechanic also says "both ways," but staking genuinely doubles symmetrically (×2 up and down), so every stake string is left exactly as it was.
| String | Before | After |
|---|---|---|
play.vue wager-line | "the harder the timeline swings — both ways" | "the wider the timeline swings — gains gently, losses hard" |
play.vue wager chip | "swings harder, both ways" | "a wider swing, losses harder than gains" |
anachronism.ts ahead hint | "widens the swing both ways, losses a touch harder" | "widens the swing, losses a touch harder than gains" |
coaching.ts wager step | "swings harder, for you and against you" | "swings wider, but losses harder than gains: a bold reach is a bet, not a free boost" |
Why the old copy was wrong: the factor tables
The asymmetry is real and deterministic. Two tables in anachronism.ts set how much each anachronism tier multiplies the swing — and at every bold tier the loss factor exceeds the gain factor. At the extreme, an impossible reach grows a gain ×1.6 but roughly doubles a loss (×2.0). That gap is the whole strategic point of the wager, and the "both ways" copy hid it.
Gains amplify gently; losses harder — by design, so a bold reach is a real wager.
server/utils/anachronism.ts · 91 lines
⋯ 21 lines hidden (lines 1–21)
⋯ 51 lines hidden (lines 41–91)
The per-tier hover hints live in the same file. Three of the four already named the asymmetry ("losses harder than gains", "losses doubled"); the ahead tier was the straggler still saying "both ways." It now matches its siblings.
The 'ahead' hint reworded to match the gradient the other tiers already used.
server/utils/anachronism.ts · 91 lines
⋯ 59 lines hidden (lines 1–59)
⋯ 26 lines hidden (lines 66–91)
The compose-dock strings
The wager surfaces twice in the compose dock. When the Archive has stamped a known-since and a contact year is chosen, a chip translates the reach into the ⚡ tiers; otherwise a static wager-line states the general principle (and teaches it on the first turn). Both are reworded here.
Line 169: the static wager-line, shown when there's no chip to render yet.
pages/play.vue · 617 lines
⋯ 164 lines hidden (lines 1–164)
⋯ 448 lines hidden (lines 170–617)
Line 336: the chip text, built per tier from ANACHRONISM_LABEL.
pages/play.vue · 617 lines
⋯ 332 lines hidden (lines 1–332)
⋯ 280 lines hidden (lines 338–617)
The tutorial step — and what was left alone
The coaching tour's wager step described the same wager with the same symmetric tell, "for you and against you." It now names the asymmetry and the bet framing the playtesters were missing.
The wager step (id 'wager'): names the asymmetry, calls the reach a bet.
stores/coaching.ts · 242 lines
⋯ 56 lines hidden (lines 1–56)
⋯ 177 lines hidden (lines 66–242)
The separate fuse-stake step: 'double the swing, both ways' — STAKE copy, correctly symmetric, untouched.
stores/coaching.ts · 242 lines
⋯ 82 lines hidden (lines 1–82)
⋯ 152 lines hidden (lines 91–242)
Verification
- npx vitest run — 920/920 pass. - npx nuxt typecheck — clean (confirms the play.vue template literal stayed valid). - No unit, e2e, or eval test asserts on the old strings; the one ANACHRONISM_HINT test checks truthiness only, so the reworded hint still passes. - An independent adversarial review across three lenses — completeness (no symmetric anachronism copy left anywhere), no-collateral-damage (every stake string intact), and accuracy (the new claims are true at every tier) — returned zero actionable findings.