Train
How adjudication works
Numbers are read from the adjudication code and scenario files at build time; figures with a date are as of that date.
1. In short
In a battle case each course of action carries up to eight factors (force ratio, terrain, surprise, recon, supply, night, training, electronic jamming) that the scenario author assigned. Their fixed weights are added, passed through a curve and held between 5% and 95%: that is the odds of success, p. One random number r is then drawn from the battle's seed; the decision succeeds when r is below p. The result moves the mission, force-preservation and tempo scores and leaves flags that choose the next phase and the ending. Duels have no dice: the two decisions' category matchup plus named factors gives each phase its score from a published table, and the average decides the match. Neither generative AI nor the operator takes part in either.
2. The odds formula
p = clamp(sigmoid(Σw), 0.05, 0.95) sigmoid(x) = 1 / (1 + e^(−x))
Σw is the sum of the weights of the factors on the option. The table below is the whole set; the same constants apply to every battle, echelon and period.
| Factor | Values | Weight w |
|---|---|---|
| Force ratio | favourable / parity / unfavourable | +0.8 / 0 / −0.8 |
| Terrain | advantage / neutral / disadvantage | +0.5 / 0 / −0.5 |
| Surprise | yes | +0.6 |
| Recon | yes | +0.4 |
| Supply | good / strained / critical | 0 / −0.3 / −0.8 |
| Night | yes | −0.2 |
| Training | high / mid / low | +0.3 / 0 / −0.3 |
| Jammed (EW) | yes | −0.3 |
The weights are the design judgement of the first commit on 12 October 2026 and have not changed since. They were not taken from a manual or from ratios in any battle, and never calibrated against historical data. What they fix is an order: force ratio largest, surprise above terrain, recon about two thirds of surprise, critical supply as heavy as being outnumbered, and night small because it hinders both sides.
At Σw = 0, p = 0.50; a favourable force ratio alone (+0.8) gives 0.69. The result is then held to 0.05–0.95 (the clamp), so that no option is a sure success or a sure failure: the historical decision must be able to fail and a poor one to succeed. With today's constants the clamp is hardly touched: all eight factors favourable gives Σw +2.6 (p ≈ 0.93), all unfavourable −2.9 (p ≈ 0.052).
The band follows from p: 0.60 and above favourable, 0.40 and above even, below that unfavourable. The roll is one random number r in [0, 1); the decision succeeds when r < p. r is derived deterministically from the battle's seed, so the same seed and the same decisions give the same result.
Two things carry over from earlier phases
- Worn down: once force preservation is below 50, training drops one step (high to mid, mid to low). The chip reads "· worn down".
- From last recon: if a recon-type option succeeded in the phase just before, this option gets recon (+0.4) even if it had none. The chip reads "· from last recon".
- Nothing else carries over. Unplanned events (the "New report" cards) change the time budget and branch flags, never the odds.
Worked example: Chosin, phase 1
A company commander on an isolated hill above the pass. All four options are "well trained" (+0.3).
| Option | Factors | Σw | p | Band |
|---|---|---|---|---|
| A. All-round perimeter on the hill north of the road, 3d Platoon on the summit (history) | terrain advantage +0.5, reconnoitred +0.4, well trained +0.3 | +1.2 | 0.77 | favourable |
| B. Dig in astride the road at the bottom of the pass | terrain disadvantage −0.5, well trained +0.3 | −0.2 | 0.45 | even |
| C. Split the company to hold both sides of the pass | outnumbered −0.8, terrain advantage +0.5, well trained +0.3 | 0 | 0.50 | even |
| D. Climb to Hill 1653 and seize the dominant height | terrain advantage +0.5, supply strained −0.3, well trained +0.3 | +0.5 | 0.62 | favourable |
Figure 5 below is a play of option A: r came up 0.63, below p = 0.77, so it succeeded; at 0.77 about one roll in four still fails. p is not the probability that the decision succeeded in the real battle. It places the three or four options of one phase on the same ruler.
The gates that keep the formula honest
- Monte Carlo: for every scenario three bots (random, greedy, historical) each play 3,000 games (100,000 in CI). The chance that the all-historical path succeeds in every phase must lie between 5% and 95%, no option may beat its siblings on mission, preservation and tempo at once, and at least four distinct mission–preservation combinations must occur.
- Clue lint: the historical option has the strictly highest odds in at most 50% of phases (37% after the 16 October pass), the longest text in at most 35%, and no two options in a phase share identical factors. This stops the formula from giving the historical decision away as the answer.
3. Where the factors come from
The formula takes values from two layers. The weights (eight constants) are the design judgement above; the factor categories (is this option's force ratio parity or unfavourable?) are what the scenario author assigned after reading the sources. Where a source gives numbers (strength, guns, days of supply) the category follows the numbers; where it gives only narrative, it follows the author's reading.
| Layer | What | Who sets it | Where |
|---|---|---|---|
| Weights | constants such as force ratio favourable = +0.8 | design (2026-10-12, unchanged since) | odds.ts |
| Factor categories | this option's force ratio is parity, its terrain an advantage | the scenario author | each option in the scenario file |
| Factor source | the basis for those categories | the scenario author (optional) | the same option's factors_src |
Each option can record its basis in factors_src. A source id with a page shows the source's title and page on the "Source" line of the adjudication panel, linked to the source. "author" shows "Author's judgement": categories assigned from a reading of the sources as a whole that cannot be pinned to one page, not "no basis". Empty means not annotated yet, and no line appears.

Of the 2,468 options in the published scenarios, 153 carry a source entry today: 150 read "Author's judgement" and 3 name a source (counted from the scenario files at build time). The ones that name a source are below; in each the source was reopened and the category brought back in line with the record.
| Scenario | Option | Source | What it settles |
|---|---|---|---|
| Tra Binh Dong, phase 4 | a | Sillok (Blue Dragon Brigade) | 294 men in the company against about 2,400: force ratio unfavourable |
| Yongmunsan, phase 4 | b | Encyclopedia of Korean Culture | the regiment held "despite being outnumbered": concentrating leaves the ratio at parity |
| Yeongcheon, phase 6 | c | Appleman, ch. 22 | the Yeongcheon–Gyeongju road stayed cut until the 10th: supply stays strained |
A page reference supports the category (favourable, parity, unfavourable), never the weight: +0.8 remains design judgement. If you think an option's factors do not match the sources, use "Report a problem" at the foot of the review screen. The scenario id and phase are attached, so "this option's force ratio should be unfavourable, not parity; see … p. …" is enough. The operator checks the source and either corrects the category or records the page; a correction bumps the scenario version and goes into the change log below.
4. What you see on screen
Before the decision the odds appear only as a band: favourable, even or unfavourable. Before committing you may mark the band you expect under "Before the roll (optional)"; after the roll it is compared with the actual band. The prediction is kept in the record and never enters a score.

- Odds: before the decision, this one word is all the player knows.
- The bar and the needle: the filled width is p and the dashed line its edge. The needle sweeps once and stops at r; below p is success.
- Sound decision, friction won: a tag shown only when an option the author rated doctrinally sound fails. Read the quality of the decision and the result of the roll as two different things.
- Your call · actual: the band you marked before the roll against the actual band.
- How this was adjudicated (folded): p and r, chips for up to four of the largest factors, the source line, and the formula in one line.
- Had it gone the other way (folded): the outcome text of the opposite result and the most likely outcome for the band. No new numbers.
There are two reasons for no number before the decision. A "77% chance of success" shown first makes the player pick the largest number instead of reading the situation. And p is design constants passed through a curve, not a measured combat effect; two decimal places would read as accuracy the model does not have. Putting probability into words is a known problem in professional wargaming (Mouat, 2025), so the numbers stay available after the roll for anyone the band does not satisfy.
The clock and the time budget: each phase runs a decision clock (30–150 seconds by phase; none on Relaxed). Committing after it runs out records the decision as delayed and costs 10 points of tempo. Separately, the battle has a time budget (200–300 minutes by scenario) from which intelligence requests (5, 10 or 15 minutes) and each option's time cost are taken. Every decision taken while the budget is negative costs 10 tempo plus 3 for each full 10 minutes over.
5. Intelligence grades and the staff estimate
The two characters on an intelligence card (B2, say) are source reliability (A–F) and information credibility (1–6), graded apart. A source that has always been right (A) may pass on an unconfirmed rumour (A4); a source never seen before (F) may report something that fits every other report (F1). The grade is the author's assessment of the report's source and circumstances.
| Source reliability | Meaning | Information credibility | Meaning |
|---|---|---|---|
| A | Reliable | 1 | Confirmed by other sources |
| B | Usually reliable | 2 | Probably true |
| C | Fairly reliable | 3 | Possibly true |
| D | Not usually reliable | 4 | Doubtful |
| E | Unreliable | 5 | Improbable |
| F | Cannot be judged | 6 | Cannot be judged |
Each phase has zero to three cards, blurred at first. "Request (−N min)" pays 5, 10 or 15 minutes of the time budget and opens the card for the phase. The grade never enters the odds formula; the number of cards opened feeds the staff estimate's error and the "intel use" term of the judgement score. The scheme borrows only the name and the two axes of the source and information evaluation in NATO intelligence doctrine (AJP-2.1); using it is a design choice.

"Ask the staff" attaches an estimated band to every option.
- Cost: 10 minutes the first time, 20 the second, 30 the third; at most 3 times per battle and once per phase. The real-time decision clock also loses 20 seconds.
- Error: estimate = true p + noise × error width, where error width = 0.24 − 0.18 × (share of this phase's cards opened). With three cards: none ±0.24, one ±0.18, two ±0.12, all ±0.06. A phase with no cards is fixed at ±0.15.
- Confidence label: error width 0.10 or less "high", 0.17 or less "mid", above that "low".
- The noise is fixed by the battle seed, the phase and the option, so asking again gives the same value. The estimate is clamped to 0.05–0.95 and shown only as a band.
- The staff estimates only the odds, never whether the course of action is doctrinally sound. Each request takes 3 points off the judgement score.

To give ±0.24 a scale: an option whose true p is 0.50 can be reported anywhere from 0.26 (unfavourable) to 0.74 (favourable). That is how trusting the staff without reading the intelligence can mislead. In the phase of figure 7 all four options come back favourable, so the staff cannot tell them apart; what separates them is the order and the intent, and that is in the cards.
6. Endings and branches
Every battle has four or five endings; after the last phase the first ending whose condition matches is chosen. A condition is three sets of flags: every flag in all is set, at least one in any is set (when any is given), and none of the flags in none is set. Endings are read top to bottom, the first match wins, and the last ending has no condition and is the default.
| Kind | Meaning |
|---|---|
| history | as in history (in a fictional scenario, the ending of the doctrinal decisions) |
| better | better than history |
| partial | mission partly achieved |
| failed | mission failed |
Chosin, for example, reads its four endings in this order: hill abandoned (left) and not retaken → failed; otherwise any of summit, short or off → partial; otherwise redoubt → better than history; otherwise the history ending. Order matters: with both redoubt and summit set, the result is partial.
Flags come from three places. Options can leave one set of flags on success and another on failure; unplanned events (the "New report" cards) can leave flags too (one unconditioned event is drawn at random per play). Every option has a next phase on success and on failure, and nextIf can send a given combination of flags elsewhere, read with the same first-match rule. Flags are recomputed from the decision log, so the decisions and the seed alone reproduce the same ending.

Some phases of a historical scenario are what-if phases that did not happen. They ask what doctrine would require once the player is on a path the historical commander did not take. They carry no mark during play; only the review draws them as dashed squares and labels them "What-if phase · closest to doctrine", because a mark during play would read as "outside history, anything goes".
- At least 7 phases and at least 6 decisions on any path (8 and 8 for small-unit and fictional scenarios).
- At least 2 options whose failure leads somewhere other than their success.
- Exactly one history ending, every ending reachable, and the all-historical path ends in the history ending.
The dashed line on the branch map is the path actually taken, not the right path. The historical decision has the highest odds in only some phases, and the all-historical path succeeds throughout between 5% and 95% of the time. The historical commander rolled dice too, and the endings are built so that another path can reach a better one.
7. Duels
In a duel both sides pick one of four options each phase within the same time limit. Each decision is sealed on submission as sha256(option:salt), and the two are revealed together. There is no die: the same two decisions in the same situation always give the same score.
mission = clamp(5 + matchup + Σfactors, 0, 10)
| Term | Value |
|---|---|
| Base | 5 |
| Matchup | ±1 or ±2 on 33 category pairs; 0 for every other pair and for a category against itself. The same in every scenario and phase |
| Factors | 0 to 2 per cell, ±1 each, from a vocabulary of 16, set by the scenario author per cell |
| Range | cut to 0–10 |
The 10 categories are assault, flank, deception, fires, hold, reserve, recon, delay, withdraw, counter. The pairs at ±2 are flank over hold, reserve over flank, deception over reserve, recon over deception, assault over withdraw, fires over counter; the other 27 pairs are ±1. The table is antisymmetric: if a is +2 against b, b is −2 against a.
The 16 factors are terrain, positions, obstacle, observation, concealment, surveillance, surprise, deception, recon, timing, mass, exposure, overreach, reserve, pressed withdrawal, space. Each comes with one sentence of principle, so the screen always shows the number and the reason together.

Tempo and combat power come from the same cell. Tempo is (mission − 5) cut to ±2. Combat power spent is a fixed cost per category (counter 6, assault 5, flank 4, fires 4, hold 4, reserve 4, deception 3, recon 3, delay 3, withdraw 3) plus, for the side that lost the phase, 2 per point of margin up to 6: at most 12 a phase, so eight phases never go below zero.
Only initiative carries over. If the tempo of the last 2 phases sums to +2 or more, Red holds it; at −2 or less, Blue; the holder gets one point on the next phase's score. A side that misses the deadline plays its default option and loses a point of tempo; two misses in a row is an automatic resignation.
The winner is decided on the average mission score over all phases, from Red's side: above 5 (5.10 or more) Red wins, below 5 (4.90 or less) Blue wins. At exactly 5 the side with at least 1 more point of combat power wins; if that is level too, it is a draw. Tempo builds up structurally on the attacker's side, so it acts only through initiative; combat power is used only to break that tie.

After each phase one row and one column of the table open. "My best answer was … (6)" only points at the highest cell in that column; had the opponent chosen differently, the best answer would differ too. The gates below forbid dominant options, so no reply should always win, and if one does, the gate is what needs fixing.

The result screen recomputes the hashes in your browser from the published salts, showing that the server changed no decision. To do it by hand, run crypto.subtle.digest('SHA-256', new TextEncoder().encode('optionId:salt')) in the browser console and compare with the published hash.
All three bots (balanced, disposition, crowd) start from each phase's equilibrium strategy (fictitious play, 50,000 iterations). The disposition bot reads the carry-over state, picks a doctrine (preserve, press, absorb) and doubles that category's weight; the crowd bot mixes the real player distribution half and half with the equilibrium. Every tilt is trimmed so that an opponent who knows it gains no more than 0.08 points over the equilibrium value. None claims to reproduce a real commander or unit doctrine.
| Balance check | Threshold | v3 result (2026-10-16, 100,000 games) |
|---|---|---|
| Red win rate across nine bot pairings | 45–55% | 48.9–52.0% |
| Draw rate | ≤ 10% | 0.7–1.1% |
| Matches where initiative changes the winner | ≤ 10% | 4.7–5.7% |
| Share of mission-score variance explained by the category pair (R²) | ≥ 0.4 | 0.49–0.67 |
| Dominant strategy or pure saddle point in any phase table | none | none |
| Equilibrium usage of every option | ≥ 5% | lowest 10.7% |
| Every reachable decision path | combat power ≥ 0; every first-phase option can both win and lose | passed |
8. Scores, ratings and badges
When a battle ends four axes come out at 0–100: mission, force preservation, tempo and judgement. They are computed apart from the review, which describes and asks but never grades.
The first three start at 50, 70 and 50 and move with every decision. Each option carries its effect on success; on failure the changes are:
| Axis | Success | Failure |
|---|---|---|
| Mission | +effect | −(half the effect) − 5 |
| Force preservation | +effect | effect − 10 |
| Tempo | +effect | half the effect |
Tempo also loses the delayed-decision (−10) and over-budget penalties. At the end each axis is cut to 0–100.
| Judgement term | Value | Weight |
|---|---|---|
| Soundness | the author's rating of each decision, high 1 · mid 0.5 · low 0, averaged | 40 |
| Intel use | cards opened ÷ cards offered | 25 |
| Rationale | 1 if a rationale of 30 characters or more was written at least once, else 0 | 15 |
| Assumption check | share of decisions preceded by an assumption check (0.5 when the scenario offers none) | 20 |
| Staff requests | each | −3 |
Soundness is a three-step rating the author gave each option after reading the sources and doctrine. The historical decision need not be "high", and a decision unlike history may be. It is one reading, not a school solution, which is why it was cut to four tenths of the judgement score and the decision process (reading the intelligence, writing a rationale, checking assumptions) raised to six tenths (21 October 2026). The "Sound decision, friction won" tag on the roll screen comes from this rating.
Review queue: a decision worth re-asking comes back as a one-phase card after 1, 3, 7, 21 days (Leitner boxes). "Worth re-asking" means soundness was low, or the decision was neither historical nor rated high; success and failure play no part, so you revisit the decision, not the die.


- Command Rating: a Glicko-2 rating. Each decision is one game against its phase (rating 1500, deviation 200), scored by soundness (1, 0.5, 0). A new account starts at 1500 with deviation 350 and is shown as provisional while the deviation is above 110.
- Tiers: below 1350 squad; 1350 platoon; 1500 company; 1650 battalion; 1800 regiment; 1950 division. The names stand for span of command, not rank. At 2100 or above with a settled deviation (110 or less) the coup d'œil mark appears.
- Visibility: ratings, tiers and badges are seen by you and your instructor only. The leaderboards list only players who opt in on their profile, under an anonymous nickname, and the server returns only opted-in accounts.
- Duel rating: a separate Glicko-2 rating that counts only ranked games between signed-in accounts. Bot, ghost, friendly, classroom and daily duels never count.

| Badge | Condition |
|---|---|
| Recon first | Read every report before deciding, 10 times |
| Your own path | Achieve the mission with a different call than history, 3 times |
| 30-day streak | Today's TDG 30 days in a row |
| 100 decisions | Commit 100 decisions |
| Campaigner | Complete 10 different battles |
| Reasoned commander | Score 80 or more on judgement in 5 battles |
The six badges target habits: reading the intelligence, writing a rationale, playing a range of battles. Casualty figures, enemy losses and win rates enter nothing: not scores, ratings, badges, rankings, share cards or ending conditions. The four axes and the rating are in-game records and certify no military expertise or qualification (terms of service, section 16).
9. What the model does not do
| Item | Handled in | In the odds or score |
|---|---|---|
| Morale and will (cohesion, the individual commander) | situation and outcome narrative, the enemy's first-person note | no |
| The interplay of deception and counter-deception | narrative; the deception and recon matchups in duels | not in the battle odds |
| Civilians and non-combatants | narrative | no; never an option or an achievement |
| Detailed sustainment (ammunition by type, evacuation) | the time budget, fire-mission count, the three-step supply factor | nothing beyond the three-step category |
| Casualty figures | used nowhere | no |
The battle p is an ordering, "under these conditions it usually goes like this", not an estimate of combat effect, and the numbers in the duel tables are game rules. Neither reproduces nor predicts real combat (terms of service, section 16). The weights have no calibration record, so this page does not use the words validated, calibrated to history or prediction. Repeating a battle shows a tendency, but a tendency inside this model.
| Where | Generative AI? |
|---|---|
| Battle odds | no; the published formula |
| Duel results and phase scores | no; the published rules; neither AI nor the operator decides a result |
| Duel outcome narratives | written by people; a narrative puts a recorded result into words and never decides it |
| AI feedback on rationales | closed beta; only invited testers aged 18 or over who gave separate consent |
| Scenario text | written and checked by people (decision of 2026-10-17) |
Rule change history
Every change to a number used in adjudication is recorded here with its date. A change to a duel table raises the scenario version, and a duel in progress is judged to the end under the rules it started with.
| Date | Scope | Change | Kind |
|---|---|---|---|
| 2026-10-12 | battle cases | the eight factor weights published and fixed at their present values; unchanged since | design |
| 2026-10-14 | duel v2 | seeded ±1 swing removed; cumulative tempo → initiative and spent-force modifiers; victory to "mission first, combat-power gap of 5 only inside 4.5–5.5" | design |
| 2026-10-16 | battle cases | two carry-over rules, delayed decision −10 tempo, pre-roll band prediction, factor chips; option order shuffled by seed | design |
| 2026-10-16 | duel v3 | every table regenerated as 5 + matchup + Σfactors (33 matchups, 16 factors); initiative from the last 2 phases' tempo, spent-force modifier removed; victory by average mission above/below 5, combat-power gap of 1 at exactly 5. Over 100,000 games: Red win rate 47.5–54.5% → 48.9–52.0%, draws 10.8–16.8% → 0.7–1.1%, winner changed by carry-over 15.0–22.0% → 4.7–5.7% | design |
| 2026-10-16 | duels | cell values in ridge-defense phase 5 and bridgehead phase 6 adjusted (withdraw × glide bomb 5 → 4 and others) | design (balance) |
| 2026-10-16 | battle cases | clue removal: factors adjusted in 30 scenarios so the historical option does not stand out (historical = top odds 37%, longest text 10%, identical factors 0) | design |
| 2026-10-21 | battle cases | judgement weights 70·20·10 → soundness 40, intel 25, rationale 15, assumption check 20 (−3 per staff request kept); roll screen leads with the band, numbers folded into the adjudication panel; factors_src field added | design |
| 2026-10-21 | visibility | ratings, tiers and badges private by default; leaderboard opt-in | design |
| 2026-10-22 | battle cases | factor sources: Tra Binh Dong 4a, Yongmunsan 4b and Yeongcheon 6c move from author's judgement to named sources; categories unchanged | source |
| 2026-10-25 | publication | the eight-part adjudication series merged into this one page; no number changed | documentation |
Sources
- Odds formula: packages/engine/src/odds.ts (WEIGHTS, odds); carry-over, staff and scores: packages/engine/src/game.ts (carried, staffFog, staffEstimate, score, JUDGMENT_W); rating: glicko.ts; review queue: review.ts; badges: apps/web/src/badges.ts
- Duels: packages/resolver/src/index.ts (MATCHUPS, FACTOR_WHY, COST, cellOf, carry, scoreMatch); balance: scripts/balance.ts
- Gates: content/content.test.ts, content/clue-lint.test.ts
- Tom Mouat, "Dice, Risk and Adjudication", Connections UK 2025. https://www.professionalwargaming.co.uk/250906-DiceRiskAdjuducation-CUK-Mouat-O.pdf
- UK Ministry of Defence, DCDC, Wargaming Handbook (2017), 2.6. https://assets.publishing.service.gov.uk/media/5a82e90d40f0b6230269d575/doctrine_uk_wargaming_handbook.pdf
- NATO AJP-2.1, Allied Joint Doctrine for Intelligence Procedures (source reliability and information credibility). Only the name and the two axes are borrowed; no page is cited
Terms of service (section 16: scores, ratings and badges certify no expertise) → · About: principles →
