Pin CI verdicts to the commit under test, and surface native vs Actions lane health separately #380
No reviewers
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
toasterson/Anima!380
Loading…
Reference in a new issue
No description provided.
Delete branch "claude/wi-019f9980-pin-ci-verdicts-to-the-commit-under-test"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Anima work item
019f9980-ba66-7f20-90d9-d0abfe7fc35c.Correction history — read this first
This work item has been wrong twice, in opposite directions. Both errors came from checking the wrong CI lane.
Filing 1 (wrong): claimed Anima's native CI targeted a non-existent runner label and had never produced a run. False — the
rustlabel works,solstice-rust.qcow2exists, and 199 jobs have run on it. That conclusion came fromlist_runs(owner, repo), which cannot see native-dispatch rows because they leaverepo_owner/repo_nameNULL.Filing 2 (also wrong): claimed WI-328 had been handed a stale 2026-07-04 verdict while "CI was in fact green". The green signal was the Forgejo Actions lane. The native lane was genuinely red at the time.
What is actually true: the native
rustlane last passed 2026-07-11 20:56 and has run 36 jobs with 0 successes since 2026-07-20. Root cause was protoc 3.12 from jammy rejecting the proto3optionalfield added tothread.protoby commit5c1dd37on 2026-07-11. Fixed in PR #369. So theexit_code=101fed to implementers was a real, current failure, not a stale row.The lesson worth keeping: Anima has two CI lanes with independent health, and the one everybody looks at (Actions, green) is not the one the machine exit bar consumes (native, red for two weeks). A green badge on one lane actively concealed a total outage on the other.
Remaining scope — still worth doing
Two defects surfaced by the above are real regardless of the protoc fix:
1. Verdicts are not pinned to the commit under test. Nothing checks that a CI result's
commit_shamatches the commit the work item is on. Combined with Solstice job rows that never reach a terminal state (96runningrows against 5 live VMs, four stuck since 2026-07-05 — filed as solstice-ci019f998b-9cea-7bf3-87c4-c6a6ad24f0ef), a verdict for a different or long-dead commit can be presented as current.2. "No verdict" and "failed" are indistinguishable to an implementer. That conflation is what makes a wrong verdict expensive rather than merely confusing.
Required
commit_shais not the work item's HEAD is not a result for this work item — treat it as "no verdict yet", never as a failure.Acceptance criteria
runningrow upstream produces "pending", not pass or fail.Related
019f998b-be04-7f70-8138-27774a142d85— NULL repo attribution, which is what made the native lane invisible to repo-scoped queries and caused correction 1.019f998b-9cea-7bf3-87c4-c6a6ad24f0ef— jobs table never reconciles against live VMs.019f9698-6f38-70d3-a1f8-468e966dabc2— CI-red corrective loop.019f903c-eeb1-7e71-928b-e248db024384— fleet observability.WIP: Pin CI verdicts to the commit under test, and surface native vs Actions lane health separatelyto Pin CI verdicts to the commit under test, and surface native vs Actions lane health separately