Skip to content

feat(hw_ci): fail infra boot-smoke on NO_MATCH, keep UNAVAILABLE a skip#110

Merged
tfcollins merged 1 commit into
mainfrom
fix/no-match-fails
Jul 2, 2026
Merged

feat(hw_ci): fail infra boot-smoke on NO_MATCH, keep UNAVAILABLE a skip#110
tfcollins merged 1 commit into
mainfrom
fix/no-match-fails

Conversation

@tfcollins

Copy link
Copy Markdown
Owner

What

The infra boot-smoke leg now fails on adi-lg request exit 10 (NO_MATCH) while keeping exit 11 (UNAVAILABLE) a neutral skip.

Why

Found via the daily job: mini2's daughter-board was swapped to ad9081, which isn't in the coordinator's board catalog (/api/match"unknown part"). That returns NO_MATCH (10), which the leg was lumping in with contention and silently skipping — so a real config gap (uncatalogued/stale part on a live board) went unsurfaced and just showed as a neutral "mixed" run in Prism. NO_MATCH for a place preflight discovered almost always means a catalog/config problem this job exists to catch, so it should redden the run, not hide.

  • 10 NO_MATCH ("request can never be satisfied — unknown part / no such board") → fail
  • 11 UNAVAILABLE ("board(s) exist but none free within --wait" — genuine contention) → skip (unchanged)
  • 0 → pass; 12 and any other non-zero → fail (unchanged)

How

The rc→status mapping is now a single unit-tested function boot_junit.boot_status_for_rc() (using the named exit-code constants), exposed as adi-lg-hw-ci boot-status --rc <n>. The infra-smoke.yml leg calls it instead of an untestable bash case, so there's one tested source of truth.

Tests

boot_status_for_rc unit tests (0→pass, 11→skip, 10→fail, 12→fail, parametrized other-nonzero→fail) + a CLI test for boot-status. Full tests/hw_ci/ green (248), lint/format clean, YAML valid.

Follow-on (yours)

Add an ad9081 entry to the coordinator board_catalog.yaml + redeploy so mini2 boots for real. After that + this change, an uncatalogued live board would turn the daily red (loud) instead of skipping.

https://claude.ai/code/session_01BuMAqiic68LrMr6wWC7NCe

A live place preflight discovered but that adi-lg request can't match (exit 10
NO_MATCH — an uncatalogued/stale part, e.g. a swapped daughter-board missing
from the coordinator catalog) was being lumped with contention and silently
skipped, so a real config gap went unsurfaced (showed as a neutral "mixed" in
Prism). Make NO_MATCH (10) fail while UNAVAILABLE (11, board just busy) stays a
neutral skip. The rc->status mapping is now a single tested function
(boot_status_for_rc) exposed as `adi-lg-hw-ci boot-status --rc`, which the
infra-smoke leg calls instead of a bash case.

Claude-Session: https://claude.ai/code/session_01BuMAqiic68LrMr6wWC7NCe
@tfcollins tfcollins merged commit f314ad4 into main Jul 2, 2026
6 checks passed
@tfcollins tfcollins deleted the fix/no-match-fails branch July 2, 2026 21:12
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