Non-blocking follow-ups triaged by the final whole-branch review of PR 1:
- sequence.ts: scale arithmetic distractors to the sequence's range; extract shared a/d range constants (construct vs verifier duplication)
- levers.ts: goldReward is dead code (imported nowhere) — delete or wire into PR 2, then test; pin the remaining 4 severity-table cells in noncombat-levers.test.ts
- cipher.ts: remove unused Rng import; add an assertion that partialKey values decode correctly
- theming.ts: fix RUNE_GLYPHS range comment (says U+16A0–16B8, spans to U+16DF)
- tile-path.ts: why-safe comment on the mkWithFill non-null assertion (params table-locked)
- riddle-frames.ts: fix duel speaker-rule prose at partySize=2; test the party-size stakes + theme-fallback branches
- Theme content: add a lint (or content pass) for materials used attributively ('the iron horseshoes guardian')
- puzzle-generator.ts: note — id omits theme, so same seed + different explicit themes collide in history dedupe (revisit with PR 2 history keys)
Non-blocking follow-ups triaged by the final whole-branch review of PR 1: