* fix: NBA play-in advancement writes E7/W7 to wrong participant slot advanceNBAPlayInWinner was writing the PIR1 7v8 winner to participant1Id of First Round M3/M7, but those slots already hold E2/W2 (seeded at generation time). The "already filled" guard fired, silently swallowing both the winner advancement and the loser's placement into Play-In Round 2 — so the 7/8 loser never appeared in the second play-in game. Fix: write the 7v8 winner to participant2Id (the correct null slot) and update the guard, doc comment, and load-bearing comment accordingly. Also swap the p2Override arguments in the simulator and test fixture to match the corrected slot layout (FR M3: E2=p1, E7=p2). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: hasGroupStage check for templates without groupStage property undefined !== null is true, so templates that omit groupStage (like nba_20) were incorrectly treated as group-stage templates, triggering the generate-groups action and the "Invalid template or template has no group stage" error. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| components | ||
| contexts | ||
| hooks | ||
| lib | ||
| models | ||
| routes | ||
| services | ||
| test | ||
| types | ||
| utils | ||
| welcome | ||
| app.css | ||
| entry.client.tsx | ||
| entry.server.tsx | ||
| root.tsx | ||
| routes.ts | ||