feat: add narrations for all 16 challenge types, eliminate generic fallback

Add dedicated narrations for: magic_duel, sports_showdown, vehicle_mayhem,
nature_clash, animal_kingdom, hack_battle (6 per type, 36 new narrations).
All 16 challenge types now have themed narrations — no generic fallback needed.
Add narration variety test verifying >1 unique narration per type.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-09 08:00:06 +00:00
co-authored by Claude Opus 4.6
parent 493983ccc0
commit 8d0eb4b5f9
2 changed files with 77 additions and 0 deletions
+29
View File
@@ -409,3 +409,32 @@ describe('creative scoring spam detection', () => {
expect(result.botBScore).toBeGreaterThan(2)
})
})
describe('narrations', () => {
const allTypes = [
'speed_blitz', 'math_blitz', 'riddle', 'hallucination_check', 'trap_card',
'magic_duel', 'sports_showdown', 'vehicle_mayhem', 'nature_clash', 'animal_kingdom',
'hack_battle', 'roast_battle', 'creative_writing', 'meme_war', 'code_golf', 'wrestling_match',
]
it('all 16 challenge types produce varied narrations', () => {
const botA = { id: 'a1', name: 'AlphaBot' }
const botB = { id: 'b1', name: 'BetaBot' }
for (const type of allTypes) {
const challenge = makeChallenge({ type, scoring: 'factual' })
const narrations = new Set<string>()
for (let i = 0; i < 20; i++) {
const result = scoreRound(
challenge, botA, botB,
makeResponse('4', 500),
makeResponse('banana', 500),
null, 0, 0,
)
narrations.add(result.narration)
}
// Should have variety (>1 unique narration across 20 rounds)
expect(narrations.size).toBeGreaterThan(1)
}
})
})