Overview
The Panic Protocol is a built-in fail-safe mechanism that allows human referees to instantly override automation in case of edge cases, disputes, technical issues, or any situation requiring manual intervention. Panic mode is a global interrupt that can be triggered by anyone in the lobby and immediately halts all automated processes.What Triggers Panic Mode
Panic mode can be triggered in several scenarios:Player-Initiated
- Disputed scores: A player believes the score was calculated incorrectly
- Technical issues: Lag, disconnections, or client crashes during a map
- Rule violations: Suspicion of cheating or unfair play
- Map issues: Wrong map loaded or incorrect mods applied
Referee-Initiated
- System malfunction: The automaton behaves unexpectedly
- Connection issues: IRC connection unstable or dropping messages
- Match irregularities: Something doesn’t match the expected flow
- Safety precaution: Proactive intervention to prevent issues
Automatic Triggers
While not explicitly automatic, panic should be used when:- State machine enters an unexpected state
- Timers fail to start or abort
- BanchoBot commands don’t execute as expected
- Scores are missing or incomplete
How to Trigger Panic
The !panic Command
Anyone in the lobby can type:- All active timers are aborted (
!mp aborttimer) - State machine transitions to
MatchOnHold - All referees are pinged in Discord
- A notification is posted with who triggered panic
Automation Halts
The automaton enters
MatchOnHold state:- No further automatic actions are taken
- State machine waits indefinitely
- Manual commands still work (referee can use IRC)
Manual Intervention Workflow
Once panic mode is active, the referee takes over:Step 1: Join the Lobby Manually
When a match starts, the bot outputs an IRC join command in Discord:Popular IRC clients for osu! referees:
- HexChat (Windows, Linux)
- Textual (macOS)
- IRCCloud (Web-based)
- osu! in-game chat (built-in IRC)
Step 2: Assess the Situation
Review the Discord thread logs to understand:- What was happening when panic was triggered
- Which map was being played (or was about to be played)
- Current score and match state
- Who triggered panic and why
Step 3: Manual Control
While inMatchOnHold, you have full manual control:
Manual IRC Commands Available:
Step 4: Resolve the Issue
Common resolutions:| Issue | Resolution |
|---|---|
| Wrong map loaded | Use !mp map <id> to load correct map |
| Incorrect mods | Use !mp mods to fix mods |
| Player disconnected | Wait for reconnect, use !mp invite |
| Disputed score | Replay the map manually |
| Automation error | Manually complete current map, then resume |
Step 5: Communicate with Players
Keep players informed via IRC chat:Resuming Automation
The >panic_over Command
Only the assigned referee can resume automation:- System posts: “The automated refereeing system is back online”
- State transitions to
WaitingForStart - A 10-second timer is automatically started
- Automation resumes from the prepared state
Ensure Match is Ready
Before resuming:
- Correct map is loaded
- Correct mods are applied
- All players are in the lobby
- Any disputes are resolved
Resume Automation
- Start a 10-second countdown
- Wait for players to ready up
- Resume normal state machine flow
Safety Guarantees
The panic protocol provides several safety guarantees:1. Universal Access
Anyone can trigger panic—not just referees or staff:2. Immediate Effect
Panic is processed before state machine logic:AutoRefQualifiersStage.cs:200-226, AutoRefEliminationStage.cs:292-316
3. Complete Halt
WhenMatchOnHold is active:
4. Full Logs Retained
All IRC messages are mirrored to Discord in real-time, including:- Chat before panic was triggered
- The panic trigger itself
- All manual referee commands
- Actions taken during panic mode
- Resumption of automation
5. Referee Notification
When panic is triggered, all referees are pinged:AutoRefQualifiersStage.cs:213-215, AutoRefEliminationStage.cs:305-307
Best Practices
For Referees
Always Monitor the Thread
Keep the Discord thread open during matches to catch panic triggers immediately.
Communicate Clearly
When taking manual control:
- Announce your presence in IRC
- Explain what you’re doing
- Tell players when to expect resumption
- Confirm when automation is resuming
For Players
Use Panic Responsibly
Only trigger
!panic when there’s a legitimate issue:- Technical problems
- Scoring errors
- Map/mod mistakes
- Rule violations
Common Panic Scenarios
Scenario 1: Wrong Map Loaded
Scenario 2: Player Disconnection Mid-Map
Scenario 3: Score Calculation Error
Technical Implementation
Panic Detection
Both qualifier and elimination automatons check for!panic in every IRC message:
AutoRefQualifiersStage.cs:208-216, AutoRefEliminationStage.cs:300-307
Panic Recovery
Recovery requires the assigned referee:AutoRefQualifiersStage.cs:202-207, AutoRefEliminationStage.cs:294-299