Rapid short games with a parallel chaos loop that has a 5% per-turn chance of firing one of: - rapid_clicks: 5 quick clicks at the player's own cards - tab_blur: window blur/focus event pair - brief_offline: 300ms network outage via context.setOffline Chaos counts roll up into ScenarioResult.customMetrics.chaos_fired. Important detail: chaos loop has a 3-second initial delay so room creation, joiners, and game start can complete without interference. Chaos during lobby setup (especially brief_offline) was causing #create-room-btn to go unstable. Verified: stress smoke with --games-per-room=3, 4 accounts + 1 CPU, first game completed with 37 turns and chaos events fired across all three event types. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
25 lines
578 B
TypeScript
25 lines
578 B
TypeScript
/**
|
|
* Scenario registry — name → Scenario mapping.
|
|
*
|
|
* Runner looks up scenarios by name. Add a new scenario by importing
|
|
* it here and adding an entry to `registry`. No filesystem scanning,
|
|
* no magic.
|
|
*/
|
|
|
|
import type { Scenario } from '../core/types';
|
|
import populate from './populate';
|
|
import stress from './stress';
|
|
|
|
const registry: Record<string, Scenario> = {
|
|
populate,
|
|
stress,
|
|
};
|
|
|
|
export function getScenario(name: string): Scenario | undefined {
|
|
return registry[name];
|
|
}
|
|
|
|
export function listScenarios(): Scenario[] {
|
|
return Object.values(registry);
|
|
}
|