Every league admin eventually spends a Tuesday evening deciding whether someone's disconnect was real. Two people are angry in DMs, one of them has a screenshot of a router light, and whatever you decide, somebody is going to say you decided it because you play with the other guy.
That situation is usually blamed on bad actors. It isn't. It's a rules problem, and specifically it's a problem with a rule that couldn't decide itself — one that reached the moment of use and demanded a human judgement about someone's intent.
This post is about writing the other kind.
Decidable Beats Fair
The instinct when writing league rules is to aim for fairness: cover the edge cases, allow for genuine bad luck, don't punish someone for something outside their control. All good goals, and all of them tend to produce rules that can't be applied without an argument.
Compare two rules for the same problem:
A. Players who leave a match early will be penalised, unless the disconnect was genuinely accidental.
B. If you aren't in the match voice channel two minutes after the match forms, you're replaced and you sit out the next ten minutes of queue. Admins can pardon it.
A is fairer in principle and it is unusable, because applying it requires determining intent — a fact that exists only inside someone's head and about which they are the sole witness and an interested party. Every application of rule A is a negotiation.
B decides itself. It reads a fact the system already knows, applies a consequence proportionate enough that nobody builds a case around it, and puts the mercy in an explicit, visible escape hatch instead of burying it in the wording.
That's the principle the rest of this follows from: write rules that resolve from evidence that already exists, and put the discretion in a named exception rather than in the rule itself. Not because intent doesn't matter, but because a rule that requires you to establish it will be argued with every single time.
The Adjudication Budget
Here's the part that decides how much rule-writing you can afford.
Disputes scale with matches. Admin attention doesn't. And a discretionary rule is worse on both axes at once — it produces more disputes and each one takes longer, because there's something to argue about. Say a mechanical rule generates a dispute on 1% of matches at three minutes each, and a discretionary one on 5% at twenty:
| Matches/week | Mechanical rule | Discretionary rule |
|---|---|---|
| 20 | 1 min | 20 min |
| 50 | 2 min | 50 min |
| 200 | 6 min | 3.3 h |
| 500 | 15 min | 8.3 h |
| 1000 | 30 min | 16.7 h |
33× at any volume. At twenty matches a week you'd never notice — twenty minutes of admin time is nothing, which is exactly why leagues write discretionary rules early and feel fine about it. At five hundred it's a part-time job, and it's a part-time job that consists entirely of arguing with people.
So the rule set has to get more mechanical as a league grows. Almost every league does the opposite: each contentious case produces a new exception, the rules accumulate nuance, and the adjudication cost climbs at the same time as the volume. That's how admins burn out, and burnt-out admins are how leagues die.
Your Most-Used Rule Is the One You Didn't Write
Ask an admin what happens when nobody reports a result. Most will say "I chase it up". That's not a rule; that's a person, and they won't be there every week.
The defaults fire far more often than the dramatic rules do, and they're the ones nobody writes down:
- Nobody reports the match. Does it not count, or does someone chase it?
- The two teams report different results. Now what?
- The result vote times out. What happens at the deadline?
- Only one team shows up. Forfeit win, or void?
- A player leaves at 3-0 down. Recorded as a loss, or void?
Every one of those has an answer today in your league, whether or not you chose it. If the system auto-records when a vote times out, that is your rule, and it's probably applied more often than anything in your rules channel. Find out what your defaults actually are and either endorse them or change them — but don't leave them undocumented, because they're the ones your members will run into.
Dodges and No-Shows: Make It Automatic
This is the clearest case for mechanising, because the fact is unambiguous and the system already has it: were you in the voice channel or not?
The mechanics worth setting deliberately:
- A grace period — how long after the match forms before a no-show counts. Two minutes is the sensible default. Long enough for a genuine "loading, one sec", short enough that nine people aren't sitting waiting.
- A reminder ping before the timeout fires. Off by default, and worth turning on: a large share of no-shows are people who alt-tabbed, not people dodging, and a ping converts them back into players instead of into a rules case. This is the single highest-value setting here, because it prevents disputes rather than resolving them.
- A cooldown locking a dodger out of the queue briefly. Ten minutes is the default, and short is right — the point is to stop instant re-queueing and to make dodging mildly costly, not to punish. Long cooldowns generate appeals, which is the thing you're trying to avoid.
- A pardon an admin can apply. This is where the mercy lives. Someone's power went out; you pardon it in one action, visibly, and no rule had to be bent.
The design here is worth naming because it generalises: automatic consequence, human exception. The rule never has to guess at intent, and the admin never has to relitigate the rule — they just apply a pardon, which is a much smaller and much less contentious act than deciding whether a rule applies.
Disputes: Consensus First, Adjudication Last
Result disputes are the other big category, and the structural fix is to make most of them never reach you.
The pattern that works is consensus reporting: both sides report the result, and if they agree, it's recorded and nobody is involved. Agreement is the overwhelmingly common case — most matches aren't contested, they're just unreported. Only genuine disagreement escalates.
That converts the admin's job from "record every match" to "handle the disagreements", which is a much smaller job, and it removes the reporting bottleneck that creates disputes in the first place — the gap between playing and recording is where memories diverge and stories form.
Three things to decide before you need them:
What happens at the timeout. If nobody votes, something has to happen. Auto-recording the reported result is usually right; voiding is defensible; leaving it open forever is not, because open matches accumulate and someone eventually has to clean them up under pressure.
Who can override. One role, named publicly. Not "the admins" collectively — a specific list, so members know who they're appealing to and admins know whose job it is.
Whether an override needs a reason. It should, and it should be recorded. Which brings us to the part most leagues skip.
Evidence Standards Should Match What People Actually Have
A rule requiring a VOD, in a community where nobody records, is not a strict evidence standard. It's a rule that always resolves to "insufficient evidence, no action" — which is a real policy, just one you adopted by accident.
Set the bar at what your members genuinely have at the moment a dispute happens:
- A post-match scoreboard screenshot is the realistic standard for most communities. People take them. They're timestamped by Discord upload. They're hard enough to fake that nobody bothers at this stakes level.
- Clips or VODs only if your community already records as a matter of course. Otherwise you're writing a rule for a different league.
- "Two teammates say so" is weaker than it sounds — teammates are correlated witnesses, and in a small league everyone is somebody's friend. Useful as corroboration, not as a standard on its own.
And write down what happens with no evidence, because that's the common case. "No evidence, the reported result stands" is a clear rule. "No evidence, we'll look into it" is how a dispute becomes a week-long argument.
Appeals, and Why You Want One
Leagues resist appeals processes because they sound like bureaucracy for a Discord server. But an appeal path doesn't create appeals — it contains them. Without one, every disagreement becomes a public argument in general chat, because that's the only channel available for expressing it.
The minimum viable version is three lines:
- Appeals go to one named person, in DMs or a ticket — not in public.
- They're heard once. The second decision is final.
- Decisions are posted with a one-line reason.
That's enough. The value isn't in the process being thorough; it's in there being somewhere for the frustration to go that isn't the channel everyone reads.
The Audit Log Is What Makes a Decision Survivable
One last thing, and it's the piece that determines whether your rules command any respect six months in.
Every admin action that changes a result or a rating should be logged somewhere members can see: what changed, who changed it, and why. Route it to an audit channel and forget about it.
Two reasons this matters more than it looks. First, the accusation you will eventually face isn't "your rule is wrong" — it's "you applied it differently for your friend". A log is the only answer to that, and it's an answer you can only give if the log already existed. Second, it disciplines the admins, including you: a decision you have to write a reason for is a decision you make more carefully.
The failure mode without one is quiet and corrosive. Ratings change, results get corrected, nobody knows why, and the story fills in — usually less charitably than the truth. That's the same problem a spreadsheet-run league has with silent corrections, and it costs trust rather than time.
Setting It Up
- Rewrite every rule that contains "genuinely", "intentionally" or "unless". Those words mark the places a human has to adjudicate intent.
- Turn on the dodge reminder ping. Preventing a no-show is cheaper than ruling on one.
- Set a short cooldown, ten minutes or so, and use pardons as the escape hatch rather than softening the rule.
- Use consensus reporting so agreed matches never reach an admin.
- Decide and publish the defaults — what happens on no report, on disagreement, on timeout, on a no-show team.
- Set an evidence standard your members can actually meet, and state what happens with none.
- Name one appeals contact. One hearing, final.
- Turn on an audit channel before you need it.
Frequently Asked Questions
Isn't an automatic penalty unfair to someone with a real disconnect?
Slightly, yes — and that's the trade being made deliberately. The automatic version misjudges a small number of genuine cases, and the discretionary version turns every case into a negotiation. The pardon exists precisely so the small number can be fixed in one action, without the rule itself having to be uncertain.
How harsh should a dodge cooldown be?
Milder than instinct suggests. The purpose is to make instant re-queueing impossible and dodging mildly annoying, not to punish — around ten minutes does that. Harsh penalties are what generate appeals, and appeals are the expensive part. If someone dodges repeatedly, that's a membership decision, not a cooldown-length decision.
What if the admin is also a player?
In a small league they always are, and recusal isn't available because there's nobody to recuse to. The answer isn't neutrality, which you can't achieve — it's removing discretion, so that who applied the rule doesn't change the outcome. A mechanical rule plus a logged pardon is defensible in a way that a judgement call by a participant never is.
Should a rage-quit count as a loss?
Pick one answer and write it down; both are defensible. What isn't defensible is deciding per case, because "was it a rage quit or a disconnect?" is exactly the unanswerable intent question this whole post is about. Most leagues land on "the match stands as it was going", which has the advantage of being readable off the scoreboard.
We already have twenty rules and constant arguments. Where do I start?
Count how many of your rules a stranger could apply without asking you anything. That's your real rule set; the rest is a workload. Delete or mechanise the others, and expect the rules document to get shorter — a long rules channel is a symptom of accumulated exceptions, not of thoroughness.
Running a league that's outgrown chasing results by hand? Team Up handles voice-join timeouts, dodge cooldowns and admin pardons automatically, records matches by team consensus so agreed results never reach an admin, and logs every admin action to an audit channel. Start with the matchmaking queue guide, or the admin dashboard guide for the audit and permissions side.
