Parent: #1058
Epic: #1052
Goal
Promote only candidates that pass evaluation and retain enough metadata to reproduce the decision.
Scope
- Define the arena promotion threshold
- Atomically replace or reference the current best weight artifact
- Retain candidate and incumbent identifiers
- Record schema versions, seeds, search settings, trainer frontend, losses, and arena result
- Reject incompatible model or schema versions
Non-goals
- A model registry service
- Remote artifact storage
- Cross-runtime optimizer-state promotion
Acceptance criteria
- Failed candidates leave the incumbent artifact unchanged.
- Successful promotion is atomic from the consumer's perspective.
- C++ and Python load the promoted weights.
- Promotion metadata identifies every input needed to repeat the arena decision.
- Interrupted promotion cannot leave an incomplete best-model artifact.
Verification
Add focused pass, fail, incompatible-version, and interrupted-write tests.
Parent: #1058
Epic: #1052
Goal
Promote only candidates that pass evaluation and retain enough metadata to reproduce the decision.
Scope
Non-goals
Acceptance criteria
Verification
Add focused pass, fail, incompatible-version, and interrupted-write tests.