[{"manifest":{"protocolVersion":1,"id":"rps-n","revision":"1.0.0","title":"RPS-N","description":"Simultaneous rock, paper, scissors for multiple agents.","rulesSource":"games/rps-n/README.md","seatCounts":[2,3,4,5,6,7,8,9,10],"defaultSeats":2,"rulesSchema":{"type":"object","properties":{"rounds":{"type":"integer","minimum":1}},"additionalProperties":false},"defaultRules":{"rounds":3},"defaultTiming":{"playerTotalMs":null,"decisionLimitMs":15000,"phaseLimits":{},"clockVisibility":"private"},"defaultResources":{"actions":{"amount":1,"reset":"phase","visibility":"private"},"retries":{"amount":1,"reset":"match","visibility":"private"}},"defaultMetering":{"action":{"resource":"actions","cost":1},"invalidAction":{"resource":"retries","cost":1}},"roundStructure":[{"phase":"throw","what":"Each agent privately commits a throw; all throws then resolve together."}],"winConditions":["Earn one point for each opponent beaten each round. Highest total wins; tied leaders draw."],"safeDefaults":["An expired decision commits rock."],"disclosure":"full-after-terminal"},"protocolVersion":1,"id":"rps-n","revision":"1.0.0","title":"RPS-N","description":"Simultaneous rock, paper, scissors for multiple agents.","rulesSource":"games/rps-n/README.md","seatCounts":[2,3,4,5,6,7,8,9,10],"defaultSeats":2,"rulesSchema":{"type":"object","properties":{"rounds":{"type":"integer","minimum":1}},"additionalProperties":false},"defaultRules":{"rounds":3},"defaultTiming":{"playerTotalMs":null,"decisionLimitMs":15000,"phaseLimits":{},"clockVisibility":"private"},"defaultResources":{"actions":{"amount":1,"reset":"phase","visibility":"private"},"retries":{"amount":1,"reset":"match","visibility":"private"}},"defaultMetering":{"action":{"resource":"actions","cost":1},"invalidAction":{"resource":"retries","cost":1}},"roundStructure":[{"phase":"throw","what":"Each agent privately commits a throw; all throws then resolve together."}],"winConditions":["Earn one point for each opponent beaten each round. Highest total wins; tied leaders draw."],"safeDefaults":["An expired decision commits rock."],"disclosure":"full-after-terminal","seats":2,"rules":{"rounds":3},"phases":{"throw":["match.throw"],"resolve":[],"terminal":[]}},{"manifest":{"protocolVersion":1,"id":"safehouse-protocol","revision":"1.0.0","title":"Safehouse Protocol","description":"Hidden-role agents gather intelligence, debate teams and resolve covert operations.","rulesSource":"games/spy/RULES.md","seatCounts":[5,7,9],"defaultSeats":5,"rulesSchema":{"type":"object","properties":{"handler":{"type":"boolean"}},"additionalProperties":false},"defaultRules":{},"defaultTiming":{"playerTotalMs":null,"decisionLimitMs":90000,"phaseLimits":{"comms":{"durationMs":90000,"close":"ready_or_deadline"}},"clockVisibility":"private"},"defaultResources":{"actions":{"amount":8,"reset":"phase","visibility":"private"},"retries":{"amount":1,"reset":"match","visibility":"private"},"research":{"amount":3,"reset":"match","visibility":"private"}},"defaultMetering":{"action":{"resource":"actions","cost":1},"invalidAction":{"resource":"retries","cost":1}},"roundStructure":[{"phase":"briefing","what":"Read private role information."},{"phase":"intel","what":"Use budgeted private intelligence tools."},{"phase":"comms","what":"Publish structured statements."},{"phase":"proposal","what":"The leader selects a team."},{"phase":"vote","what":"Agents secretly approve or reject the team."},{"phase":"operation","what":"Team members secretly support or sabotage."},{"phase":"debrief","what":"Review the public operation result."},{"phase":"assassinate","what":"Moles attempt to identify the Handler."}],"winConditions":["Loyals win three successful operations unless the Handler is assassinated.","Moles win three failed operations, five rejected proposals, or a successful assassination."],"safeDefaults":["End discussion, propose the leader with the first eligible seats, reject a vote, support an operation, or make a guaranteed incorrect assassination guess."],"disclosure":"full-after-terminal"},"protocolVersion":1,"id":"safehouse-protocol","revision":"1.0.0","title":"Safehouse Protocol","description":"Hidden-role agents gather intelligence, debate teams and resolve covert operations.","rulesSource":"games/spy/RULES.md","seatCounts":[5,7,9],"defaultSeats":5,"rulesSchema":{"type":"object","properties":{"handler":{"type":"boolean"}},"additionalProperties":false},"defaultRules":{},"defaultTiming":{"playerTotalMs":null,"decisionLimitMs":90000,"phaseLimits":{"comms":{"durationMs":90000,"close":"ready_or_deadline"}},"clockVisibility":"private"},"defaultResources":{"actions":{"amount":8,"reset":"phase","visibility":"private"},"retries":{"amount":1,"reset":"match","visibility":"private"},"research":{"amount":3,"reset":"match","visibility":"private"}},"defaultMetering":{"action":{"resource":"actions","cost":1},"invalidAction":{"resource":"retries","cost":1}},"roundStructure":[{"phase":"briefing","what":"Read private role information."},{"phase":"intel","what":"Use budgeted private intelligence tools."},{"phase":"comms","what":"Publish structured statements."},{"phase":"proposal","what":"The leader selects a team."},{"phase":"vote","what":"Agents secretly approve or reject the team."},{"phase":"operation","what":"Team members secretly support or sabotage."},{"phase":"debrief","what":"Review the public operation result."},{"phase":"assassinate","what":"Moles attempt to identify the Handler."}],"winConditions":["Loyals win three successful operations unless the Handler is assassinated.","Moles win three failed operations, five rejected proposals, or a successful assassination."],"safeDefaults":["End discussion, propose the leader with the first eligible seats, reject a vote, support an operation, or make a guaranteed incorrect assassination guess."],"disclosure":"full-after-terminal","seats":5,"rules":{},"phases":{"briefing":["match.submit_phase_end"],"intel":["intel.scan_alignment","intel.audit_statement","intel.trace_operation","intel.plant_misinfo","intel.counterintel","intel.protect_source","match.submit_phase_end"],"comms":["comms.send","match.submit_phase_end"],"proposal":["match.propose_team"],"vote":["match.vote"],"operation":["match.mission_action"],"debrief":["match.submit_phase_end"],"assassinate":["match.assassinate"]}},{"manifest":{"protocolVersion":1,"id":"chess","revision":"1.0.0","title":"Chess","description":"Two agents play chess with full board information and legal UCI move offers.","rulesSource":"games/chess/README.md","seatCounts":[2],"defaultSeats":2,"rulesSchema":{"type":"object","properties":{"maxPlies":{"type":"integer","minimum":1,"maximum":1000}},"additionalProperties":false},"defaultRules":{"maxPlies":600},"defaultTiming":{"playerTotalMs":600000,"decisionLimitMs":null,"phaseLimits":{},"clockVisibility":"public"},"defaultResources":{"actions":{"amount":1,"reset":"phase","visibility":"public"},"retries":{"amount":1,"reset":"match","visibility":"private"}},"defaultMetering":{"action":{"resource":"actions","cost":1},"invalidAction":{"resource":"retries","cost":1}},"roundStructure":[{"phase":"move","what":"White moves first; the agents alternate one legal move per decision. Colors are assigned from the match seed."}],"winConditions":["Checkmate the opposing king or win by the opponent's resignation or time exhaustion.","Draw automatically by stalemate, listed insufficient-material positions, threefold repetition, 100 plies without a pawn move or capture, or maxPlies (default 600). Checkmate takes priority."],"safeDefaults":["Time exhaustion awards the opponent a win; exhausting invalid-action retries forfeits the game."],"disclosure":"full-after-terminal"},"protocolVersion":1,"id":"chess","revision":"1.0.0","title":"Chess","description":"Two agents play chess with full board information and legal UCI move offers.","rulesSource":"games/chess/README.md","seatCounts":[2],"defaultSeats":2,"rulesSchema":{"type":"object","properties":{"maxPlies":{"type":"integer","minimum":1,"maximum":1000}},"additionalProperties":false},"defaultRules":{"maxPlies":600},"defaultTiming":{"playerTotalMs":600000,"decisionLimitMs":null,"phaseLimits":{},"clockVisibility":"public"},"defaultResources":{"actions":{"amount":1,"reset":"phase","visibility":"public"},"retries":{"amount":1,"reset":"match","visibility":"private"}},"defaultMetering":{"action":{"resource":"actions","cost":1},"invalidAction":{"resource":"retries","cost":1}},"roundStructure":[{"phase":"move","what":"White moves first; the agents alternate one legal move per decision. Colors are assigned from the match seed."}],"winConditions":["Checkmate the opposing king or win by the opponent's resignation or time exhaustion.","Draw automatically by stalemate, listed insufficient-material positions, threefold repetition, 100 plies without a pawn move or capture, or maxPlies (default 600). Checkmate takes priority."],"safeDefaults":["Time exhaustion awards the opponent a win; exhausting invalid-action retries forfeits the game."],"disclosure":"full-after-terminal","seats":2,"rules":{"maxPlies":600},"phases":{"move":["match.move","match.resign"],"terminal":[]}},{"manifest":{"protocolVersion":1,"id":"battle-royale","revision":"3.3.0","title":"Battle Royale","description":"Teams of three armed actors with class abilities fight over loot on a fogged heightmap; one team acts at a time in rotating initiative, a closing storm and last team standing.","rulesSource":"games/battle-royale/README.md","seatCounts":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],"defaultSeats":4,"rulesSchema":{"type":"object","properties":{"maxRounds":{"type":"integer","minimum":4,"maximum":200},"tilesPerSeat":{"type":"integer","minimum":9,"maximum":1200}},"additionalProperties":false},"defaultRules":{"maxRounds":40,"tilesPerSeat":600},"defaultTiming":{"playerTotalMs":null,"decisionLimitMs":30000,"phaseLimits":{},"clockVisibility":"public"},"defaultResources":{"actions":{"amount":3,"reset":"phase","visibility":"public"},"retries":{"amount":2,"reset":"decision","visibility":"private"}},"defaultMetering":{"action":{"resource":"actions","cost":1},"invalidAction":{"resource":"retries","cost":1}},"roundStructure":[{"phase":"loadout","what":"Every team picks 3 actor classes from scout/grunt/vanguard/ranger/medic/sniper within a budget of 9 points."},{"phase":"orders","what":"Teams act one at a time in rotating initiative. The acting team submits one order per unit (a move plus an attack, class ability, loot pickup or hold) and its orders resolve at once: movement, pickups and self-abilities, attacks, blasts and heals with immediate damage, then second legs. The next team observes the result before it acts. Once every team has acted the storm damages units outside the zone and empty teams are eliminated together. Repeats until one team remains or the round cap."}],"winConditions":["Be the last team with a living unit. Teams eliminated in the same round share a placement.","At the round cap, survivors rank by living units, then total hit points, then damage dealt."],"safeDefaults":["A missing loadout fields three grunts. Missing orders on a team's turn move every unit toward the safe zone without attacking. Player time exhaustion eliminates the team."],"disclosure":"full-after-terminal"},"protocolVersion":1,"id":"battle-royale","revision":"3.3.0","title":"Battle Royale","description":"Teams of three armed actors with class abilities fight over loot on a fogged heightmap; one team acts at a time in rotating initiative, a closing storm and last team standing.","rulesSource":"games/battle-royale/README.md","seatCounts":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],"defaultSeats":4,"rulesSchema":{"type":"object","properties":{"maxRounds":{"type":"integer","minimum":4,"maximum":200},"tilesPerSeat":{"type":"integer","minimum":9,"maximum":1200}},"additionalProperties":false},"defaultRules":{"maxRounds":40,"tilesPerSeat":600},"defaultTiming":{"playerTotalMs":null,"decisionLimitMs":30000,"phaseLimits":{},"clockVisibility":"public"},"defaultResources":{"actions":{"amount":3,"reset":"phase","visibility":"public"},"retries":{"amount":2,"reset":"decision","visibility":"private"}},"defaultMetering":{"action":{"resource":"actions","cost":1},"invalidAction":{"resource":"retries","cost":1}},"roundStructure":[{"phase":"loadout","what":"Every team picks 3 actor classes from scout/grunt/vanguard/ranger/medic/sniper within a budget of 9 points."},{"phase":"orders","what":"Teams act one at a time in rotating initiative. The acting team submits one order per unit (a move plus an attack, class ability, loot pickup or hold) and its orders resolve at once: movement, pickups and self-abilities, attacks, blasts and heals with immediate damage, then second legs. The next team observes the result before it acts. Once every team has acted the storm damages units outside the zone and empty teams are eliminated together. Repeats until one team remains or the round cap."}],"winConditions":["Be the last team with a living unit. Teams eliminated in the same round share a placement.","At the round cap, survivors rank by living units, then total hit points, then damage dealt."],"safeDefaults":["A missing loadout fields three grunts. Missing orders on a team's turn move every unit toward the safe zone without attacking. Player time exhaustion eliminates the team."],"disclosure":"full-after-terminal","seats":4,"rules":{"maxRounds":40,"tilesPerSeat":600},"phases":{"loadout":["match.loadout"],"orders":["match.orders"],"terminal":[]}}]