Skip to main content

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:

  1. There are 8 base tournament configurations defined in the version-controlled TypeScript configuration files.
  2. There are 3 variants: A (control), B (experiment), and H (challenger).
  3. The ABH instance will cycle through the 8 base tournaments, running each one three times, once for each variant (A, B, H).
  4. 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 ABH instance's 60-minute time slot, the first 20 minutes might be for A variants, the next 20 for B, and the last 20 for H.
  5. 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_VARIANT or similar environment variables for scheduling, which aligns with the adr://config-over-env decision 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.