41. ABH Instance 24-Tournament Schedule
Status: Accepted Date: 2025-07-06
Context
The ABH (A/B/H Experimental) instance needs a deterministic and consistent way to schedule its various experimental tournaments. We need to test 8 base tournament configurations across 3 variants (A, B, and H), for a total of 24 distinct tournament runs per day, all within the time slots allocated to the ABH instance.
Decision
The ABH instance will be hardcoded to run exactly 24 tournaments per day. The scheduling logic will be as follows:
- There are 8 base tournament configurations defined in the version-controlled TypeScript configuration files.
- There are 3 variants:
A(control),B(experiment), andH(challenger). - The
ABHinstance will cycle through the 8 base tournaments, running each one three times, once for each variant (A,B,H). - The determination of which variant to run at which time will be based on the time slot, not on an environment variable. For example, within the
ABHinstance's 60-minute time slot, the first 20 minutes might be forAvariants, the next 20 forB, and the last 20 forH. - This logic ensures that all 24 unique experimental tournaments (
8 configs * 3 variants) are run consistently every day.
Consequences
Positive:
- Deterministic & Predictable: The schedule is completely deterministic and easy to reason about. We know exactly which tournament and variant should be running at any given time.
- Consistent Experiments: Ensures that all variants are tested against all base configurations with equal frequency, providing a solid foundation for statistical analysis.
- No Environment Dependency: This approach completely removes any dependency on
MERCURY_VARIANTor similar environment variables for scheduling, which aligns with theadr://config-over-envdecision and improves reliability.
Negative:
- Inflexibility: The schedule is rigid. It is not easy to change the number of base tournaments or variants without changing the core scheduling logic.
- Hardcoded Logic: The "24 tournament" rule is hardcoded into the application logic.
Mitigation:
- Fit-for-Purpose: This rigid schedule is fit for the purpose of a structured A/B/H testing framework, where consistency is more important than flexibility.
- Configuration-Driven: While the number 24 is hardcoded, the details of the 8 base tournaments are still driven by the flexible TypeScript configuration files.
- Clear Documentation: This ADR and the associated FDD clearly document this scheduling logic so there is no ambiguity.