Skip to content

ci: require three counted live qualification trials per OS - #86

Merged
abrichr merged 1 commit into
mainfrom
ci/three-trial-qualification
Aug 21, 2026
Merged

ci: require three counted live qualification trials per OS#86
abrichr merged 1 commit into
mainfrom
ci/three-trial-qualification

Conversation

@abrichr

@abrichr abrichr commented Aug 21, 2026

Copy link
Copy Markdown
Member

Summary

Closes the counted-evidence gap (state doc item 3, 'three trials per OS'): the qualification workflow ran the live suite once per OS.

  • Each interactive job (Linux X64, macOS ARM64, Windows X64, all self-hosted) now runs the complete live suite three times against the exact candidate SHA.
  • Every trial's JUnit XML is skip-checked, then a new fail-closed aggregator (scripts/aggregate_qualification_trials.py) emits a per-OS summary recording trials_run, totals, silent_incorrect_success, and over_halt.
  • These trials inject no fault, so any halt is unjustified and must be zero; a success-shaped report over failures/errors/skips counts as silent incorrect success and also blocks. Missing, duplicate, unparsable, or short trial sets fail closed with named violations.
  • The seven-job release evidence contract is unchanged: the loop lives inside each existing interactive job, so check_release_ci.py validates the same job set.

Test evidence

10 new aggregator tests in tests/test_qualification_trials.py; actionlint clean; full fast suite locally: 464 passed, 2 skipped; ruff clean.

Each interactive qualification job now runs the complete live suite
three times against the exact candidate, rejects skipped trials, and
aggregates the JUnit evidence into a fail-closed per-OS summary that
records trials_run, totals, silent_incorrect_success, and over_halt.
These trials inject no fault, so any halt is unjustified and must be
zero; a success-shaped report over failures, errors, or skips counts as
a silent incorrect success and also blocks.

The seven-job release evidence contract is unchanged: the trial loop
lives inside each existing interactive job, so check_release_ci.py
keeps validating the same job set.
@abrichr
abrichr merged commit d1f6615 into main Aug 21, 2026
12 checks passed
@abrichr
abrichr deleted the ci/three-trial-qualification branch August 21, 2026 20:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant