HAL Status Normalisation Policy
July 7, 2026 ยท View on GitHub
This document defines the frozen canonical status contract for hardware HAL adapters. Any alias change is a contract change and must follow the evidence gate below.
Canonical status set
submittedqueuedrunningcompletedcancelledfailedunknown(fallback only)
Frozen alias matrix
Two contract tiers are enforced:
- Extended tier (Azure, Braket, qBraid, Qiskit, IonQ, Strangeworks, Pasqal, OQC, IQM, Quantinuum): full matrix below.
- Baseline tier (currently QuEra Bloqade): only completion/queue/running/ cancellation/failure aliases.
| Canonical | Accepted aliases |
|---|---|
completed | complete, completed, success, succeeded |
running | running, in_progress, in-progress, inprogress |
submitted | submitted, initializing, initialising, starting, creating, created |
queued | queued, pending |
cancelled | cancelled, canceled, aborting, cancelling, canceling |
failed | failed, error |
Evidence-gated alias extension rule
New aliases are forbidden unless all conditions hold:
- A real provider token is captured in artifact evidence (
job metadata, provider payload, or execution logs) and linked from the session report. - The alias is added to the frozen matrix tests in
tests/test_hardware_hal_status_normalisation_contract.py. - Adapter-level tests are updated for impacted backends.
- Full HAL regression (
tests/test_hardware_hal_*.py) remains green. - This policy file is updated in the same change.
Without these five conditions, reject alias additions.
Baseline-tier completion extras
Baseline-tier adapters may additionally accept done and finished as
completion aliases, but those aliases are not part of the extended-tier common
contract.