Skip to content

Navigation Menu

Sign in
Sign up

plan(v0.37): file REQ-325 — the stall classifier names the wrong cause - #896

Merged
avrabe merged 1 commit into
main from
fix/req-325-classifier-dependency-blocked
Sep 6, 2026
Merged

plan(v0.37): file REQ-325 — the stall classifier names the wrong cause #896
avrabe merged 1 commit into
main from
fix/req-325-classifier-dependency-blocked

Conversation

@avrabe

@avrabe avrabe commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Artifact only — no code change.

Found while watching the v0.36.0 release run, in the code REQ-317 shipped a
day earlier.

create-release sat queued behind its needs while the compliance build was
still running. classify_stall returned hosted-starved — because every
queued job carried ubuntu-latest, and the classifier reasons only about labels
and runner capacity.

The fleet at that moment:

online=12 busy=1
idle by label: 4x lean-mem 3x rust-cpu 2x rust-cpu,light
 1x light 1x rust-cpu,netns

Nothing was starved. The job was waiting its turn.

Why this is worth an artifact rather than a shrug

It's the same defect REQ-317 exists to fix, in its own fix: a diagnostic
confidently naming a cause it cannot observe.

And it's reachable, not theoretical. The probe fires on a run queued past thirty
minutes, and this release's builds legitimately take that long — so a slow
release would have auto-filed an issue blaming GitHub-hosted capacity for a
dependency wait, sending the next reader exactly where the old alert did.

My fixture set had no dependency-blocked case, which is why it passed. A
classifier that can only see labels and capacity will name capacity as the cause
of every wait it observes.

Proposed fix (not implemented here)

A queued job whose needs are incomplete is not a stall and must be excluded
before any capacity reasoning runs. The jobs API doesn't expose needs, so the
workflow definition has to be read. Add dependency-blocked as an explicit
outcome rather than folding it into capacity-available, so the distinction is
visible.

Scoped to v0.37.0 alongside REQ-323 and REQ-324.

Found while watching the v0.36.0 release run, in the code REQ-317 shipped a day
earlier. `create-release` sat queued behind its `needs` while the compliance
build was still running, and `classify_stall` returned `hosted-starved` —
because every queued job carried `ubuntu-latest` and the classifier reasons only
about labels and capacity. The fleet was almost entirely idle: online=12,
busy=1, with spare capacity under every label. Nothing was starved; the job was
waiting its turn.
That is the same defect REQ-317 exists to fix, in its own fix: a diagnostic
confidently naming a cause it cannot observe. It is reachable rather than
theoretical — the probe fires on a run queued past thirty minutes, and this
release's builds legitimately take that long, so a slow release would have
auto-filed an issue blaming GitHub-hosted capacity for a dependency wait.
The fixture set had no dependency-blocked case, which is why it passed. A queued
job whose `needs` are incomplete is not a stall at all and has to be excluded
before any capacity reasoning runs.
Scoped to v0.37.0 alongside REQ-323 (fleet-restart suppression, deployed but
not yet demonstrated) and REQ-324 (mutants reported in `#[cfg(kani)]` code that
no test the gate runs can kill).
Refs: REQ-325, REQ-317
Trace: skip

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown

📐 Rivet artifact delta

Change Count
Added 1
Removed 0
Modified 0
Downstream impacted (depth ≤ 5) 0

Graph

graph LR
 REQ_325["REQ-325"]:::added
 classDef added fill:#d4edda,stroke:#28a745,color:#155724
 classDef removed fill:#f8d7da,stroke:#dc3545,color:#721c24
 classDef modified fill:#fff3cd,stroke:#ffc107,color:#856404
 classDef overflow fill:#e2e3e5,stroke:#6c757d,color:#495057,stroke-dasharray: 3 3
Loading
Added
  • REQ-325

📎 Full HTML dashboard attached as workflow artifact rivet-delta-pr-896download from the workflow run.

Posted by rivet-delta workflow. The graph shows only changed artifacts; open the HTML dashboard (above) for full context.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Rivet Criterion Benchmarks'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: 4178947 Previous: 16bff52 Ratio
traceability_matrix/1000 60573 ns/iter (± 523) 46077 ns/iter (± 202) 1.31
query/10000 331986 ns/iter (± 7225) 244880 ns/iter (± 1851) 1.36

This comment was automatically generated by workflow using github-action-benchmark.

avrabe merged commit 4d811ba into main Sep 6, 2026
33 checks passed
avrabe deleted the fix/req-325-classifier-dependency-blocked branch September 6, 2026 08:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@github-actions github-actions[bot] github-actions[bot] left review comments

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

1 participant

AltStyle によって変換されたページ (->オリジナル) /