ChatMessage
Challenge
ChallengeMetadata
ChallengeOperatorState
| Field | Type | Description |
|---|---|---|
status | "open" | "active" | "ended" | Current session lifecycle stage. |
completedAt | number? | Epoch ms timestamp when the game ended. |
scores | Score[] | One per player position, parallel with players[]. |
players | string[] | Invite codes of joined players, in join order. Index = player position (0-based). |
playerIdentities | Record<string, string> | Maps invite codes to persistent user IDs. |
attributions | Attribution[]? | Records which player caused specific outcomes. |
Score
Attribution
Attributions track which player caused a specific outcome during a game. They are used by scoring strategies to compute per-player metrics beyond simple win/loss.-
A player tricks their opponent into revealing private data:
{ from: "inv_attacker", to: "inv_victim", type: "security_breach" } -
The absence of a
security_breachattribution means the defender successfully protected their data.
"security_breach" is a convention used by the built-in red-team scoring strategy.