Follow-up to #219 (Multi-Main as a first-class finals format).
The first-class multi-main format shipped in #219 is straight tiered mains: the qualifying-ranked field is split into A/B/C-mains by rank, the mains race in parallel, and their results stack into the final standings (A-main → places 1..N, B-main → N+1..2N, …). The mains are independent — there is no advancement between them.
A common MultiGP wrinkle is the bump-up: the top finisher(s) of a lower main advance into the next main up (the B-main winner earns a slot in the A-main, etc.), which turns the independent mains into a dependent ladder run bottom-up (run C-main → seed B-main from C's top + the qualifiers → run B-main → seed A-main → run A-main). This was deliberately deferred from #219.
Design notes (from the #219 generator docs)
- The generator's trait surface does not change for bump-up — it would emit the lowest main first and seed each higher main from the one below (the dependent-ladder variant), rather than emitting all mains at once.
- This is a model/engine change (the run order + cross-main seeding), so it should be its own slice, not folded into a UX/polish change.
- Decide: how many bump up (top 1? top 2?), how the stacked standings account for a bumped pilot's original tier, and how the UI shows the ladder progression.
Scope
- Engine: a bump-up mode for the
multi_main generator (emit lowest main first; seed each higher main from the prior main's top finisher(s) + that tier's qualifiers).
- Standings: define how a bumped pilot's final placement is computed.
- UI: surface the bottom-up ladder + which pilots bumped.
Tracking: follow-up to #219.
Follow-up to #219 (Multi-Main as a first-class finals format).
The first-class multi-main format shipped in #219 is straight tiered mains: the qualifying-ranked field is split into A/B/C-mains by rank, the mains race in parallel, and their results stack into the final standings (A-main → places 1..N, B-main → N+1..2N, …). The mains are independent — there is no advancement between them.
A common MultiGP wrinkle is the bump-up: the top finisher(s) of a lower main advance into the next main up (the B-main winner earns a slot in the A-main, etc.), which turns the independent mains into a dependent ladder run bottom-up (run C-main → seed B-main from C's top + the qualifiers → run B-main → seed A-main → run A-main). This was deliberately deferred from #219.
Design notes (from the #219 generator docs)
Scope
multi_maingenerator (emit lowest main first; seed each higher main from the prior main's top finisher(s) + that tier's qualifiers).Tracking: follow-up to #219.