# World Cup Simulation Report

- Run ID: `20260602-110210`
- Generated At (UTC): `2026-06-02T11:02:11.232Z`
- Cleanup: `disabled`
- Overall Status: **PASS**

## FIFA World Cup 2026 Edge Cases (Tie + Penalties + Lock Boundaries)

- Fixture ID: `wc2026-edgecases`
- Competition ID: `29`
- Group ID: `36`
- Status: **PASS**

### User Points

| User | Expected | Actual Group | Actual Competition | Status |
|---|---:|---:|---:|---|
| Oracle | 250 | 250 | 250 | PASS |
| Penalty Master | 155 | 155 | 155 | PASS |
| Outcome Only | 150 | 150 | 150 | PASS |
| Wrong Winner | 132 | 132 | 132 | PASS |

### Qualification + Knockout Checks

- Expected qualifiers: `32`
- Actual qualifiers: `32`
- Round of 32 matches generated: `16`
- Third-place cutoff points (8th): `4`

Expected third-placed ranking (top 8):

- Nation A3 (4 pts, GD 0, GF 2)
- Nation B3 (4 pts, GD 0, GF 2)
- Nation C3 (4 pts, GD 0, GF 2)
- Nation D3 (4 pts, GD 0, GF 2)
- Nation E3 (4 pts, GD 0, GF 2)
- Nation F3 (4 pts, GD 0, GF 2)
- Nation G3 (4 pts, GD 0, GF 2)
- Nation H3 (4 pts, GD 0, GF 2)

### Lock Mode Boundary Checks

| Check | Result | Details |
|---|---|---|
| per_match future kickoff allows prediction | PASS | success |
| per_match past kickoff blocks prediction | PASS | Predictions are closed for this match |
| force_locked blocks even before kickoff | PASS | Predictions are closed for this match |
| per_stage stage2 blocked until stage1 finished | PASS | Predictions are closed for this stage |
| per_stage opens after previous stage completion and before start | PASS | success |
| per_stage blocks after stage2 start time | PASS | Predictions are closed for this stage |

### Knockout Scoring Samples

| Stage | Match | Match Path | User | Prediction | Points |
|---|---|---|---|---|---:|
| Quarter-finals | Nation E1 0-0 Nation F2 | et:1, pens:home | Oracle | 0-0 (et:1, pens:home) | 5 |
| Quarter-finals | Nation E1 0-0 Nation F2 | et:1, pens:home | Outcome Only | 0-0 (et:1, pens:home) | 5 |
| Quarter-finals | Nation E1 0-0 Nation F2 | et:1, pens:home | Penalty Master | 1-1 (et:1, pens:home) | 3 |
| Quarter-finals | Nation E1 0-0 Nation F2 | et:1, pens:home | Wrong Winner | 0-0 (et:1, pens:away) | 0 |
| Quarter-finals | Nation G1 3-3 Nation H2 | et:1, pens:away | Oracle | 3-3 (et:1, pens:away) | 5 |
| Quarter-finals | Nation G1 3-3 Nation H2 | et:1, pens:away | Outcome Only | 1-1 (et:1, pens:away) | 3 |
| Quarter-finals | Nation G1 3-3 Nation H2 | et:1, pens:away | Penalty Master | 2-2 (et:1, pens:away) | 3 |
| Quarter-finals | Nation G1 3-3 Nation H2 | et:1, pens:away | Wrong Winner | 3-3 (et:1, pens:home) | 0 |
| Quarter-finals | Nation I1 1-2 Nation J2 | et:1 | Oracle | 1-2 (et:1) | 4 |
| Quarter-finals | Nation I1 1-2 Nation J2 | et:1 | Outcome Only | 0-1 (et:1) | 2 |
| Quarter-finals | Nation I1 1-2 Nation J2 | et:1 | Penalty Master | 1-2 (et:1) | 4 |
| Quarter-finals | Nation I1 1-2 Nation J2 | et:1 | Wrong Winner | 2-1 (et:1) | 0 |
| Round of 16 - 1st Leg | Nation I1 1-0 Nation J2 | regular-time | Oracle | 1-0 | 3 |
| Round of 16 - 1st Leg | Nation I1 1-0 Nation J2 | regular-time | Outcome Only | 2-1 | 1 |
| Round of 16 - 1st Leg | Nation I1 1-0 Nation J2 | regular-time | Penalty Master | 1-0 | 3 |
| Round of 16 - 1st Leg | Nation I1 1-0 Nation J2 | regular-time | Wrong Winner | 0-1 | 0 |
| Round of 16 - 1st Leg | Nation K1 0-0 Nation L2 | regular-time | Oracle | 0-0 | 3 |
| Round of 16 - 1st Leg | Nation K1 0-0 Nation L2 | regular-time | Outcome Only | 0-0 | 3 |
| Round of 16 - 1st Leg | Nation K1 0-0 Nation L2 | regular-time | Penalty Master | 1-0 | 0 |
| Round of 16 - 1st Leg | Nation K1 0-0 Nation L2 | regular-time | Wrong Winner | 0-1 | 0 |
| Round of 32 | Nation A1 2-2 Nation B2 | et:1, pens:home | Oracle | 2-2 (et:1, pens:home) | 5 |
| Round of 32 | Nation A1 2-2 Nation B2 | et:1, pens:home | Outcome Only | 1-0 | 1 |
| Round of 32 | Nation A1 2-2 Nation B2 | et:1, pens:home | Penalty Master | 2-2 (et:1, pens:home) | 5 |
| Round of 32 | Nation A1 2-2 Nation B2 | et:1, pens:home | Wrong Winner | 2-2 (et:1, pens:away) | 0 |
| Round of 32 | Nation C1 1-1 Nation D2 | et:1, pens:away | Oracle | 1-1 (et:1, pens:away) | 5 |
| Round of 32 | Nation C1 1-1 Nation D2 | et:1, pens:away | Outcome Only | 1-0 | 0 |
| Round of 32 | Nation C1 1-1 Nation D2 | et:1, pens:away | Penalty Master | 0-0 (et:1, pens:away) | 3 |
| Round of 32 | Nation C1 1-1 Nation D2 | et:1, pens:away | Wrong Winner | 1-1 (et:1, pens:home) | 0 |
| Round of 32 | Nation K1 2-1 Nation L2 | et:1 | Oracle | 2-1 (et:1) | 4 |
| Round of 32 | Nation K1 2-1 Nation L2 | et:1 | Outcome Only | 2-1 | 3 |
| Round of 32 | Nation K1 2-1 Nation L2 | et:1 | Penalty Master | 1-0 (et:1) | 2 |
| Round of 32 | Nation K1 2-1 Nation L2 | et:1 | Wrong Winner | 1-2 (et:1) | 0 |

### Assertions

| Assertion | Result | Details |
|---|---|---|
| User total points: Oracle | PASS | expected=250, group=250, competition=250 |
| User total points: Penalty Master | PASS | expected=155, group=155, competition=155 |
| User total points: Outcome Only | PASS | expected=150, group=150, competition=150 |
| User total points: Wrong Winner | PASS | expected=132, group=132, competition=132 |
| 2026 qualifiers count | PASS | expected=32, actual=32 |
| 2026 qualifiers order | PASS | qualifier order matches expected |
| Round of 32 match count | PASS | generated=16 |
| Lock mode: per_match future kickoff allows prediction | PASS | success |
| Lock mode: per_match past kickoff blocks prediction | PASS | Predictions are closed for this match |
| Lock mode: force_locked blocks even before kickoff | PASS | Predictions are closed for this match |
| Lock mode: per_stage stage2 blocked until stage1 finished | PASS | Predictions are closed for this stage |
| Lock mode: per_stage opens after previous stage completion and before start | PASS | success |
| Lock mode: per_stage blocks after stage2 start time | PASS | Predictions are closed for this stage |
| Third-place full tie scenario present | PASS | tied third teams with 4 pts / GD 0 / GF 2 = 12 |

