plan(v0.38/v0.39): scope the starved old-issue band, and name why it starved - #928
Merged
Conversation
…starved Diagnosing why issues from April sat untouched while September ones were fixed within days. The cause is not neglect and not missing tracking. `release:` is optional and mostly absent, and a readiness query can only see artifacts that carry one. Measured across the store: 706 artifacts, 601 with NO release field (85%), and of those 601, 165 at status draft or proposed. That is 165 pieces of genuinely unstarted work no readiness query can surface. The issue board reads as fifteen open items while that population sits outside it. Worked example: #104 has been open since 2026-04-02 and is tracked by REQ-059 — which is draft with no release. Nothing was ever decided about it. Not deferred, not rejected, not scheduled, because nothing ever asked. Five months of silence produced by a missing field rather than by a judgement. An earlier comment on #104 claimed the issue was untracked. That was wrong and has been corrected on the thread. The check had scanned artifact TITLES for the issue number, which REQ-059 does not carry. Both automated approaches fail in opposite directions — a body scan matches REQ-202, an unrelated `--no-default-features` requirement that cites #104 in passing, and a title scan misses REQ-250, which covers #557 without naming it. Reading the artifacts is what produced the right answer. Scoped, each with the reason recorded on the artifact: REQ-059 (#104) unassigned -> v0.39.0 AI provenance command + prompt-hash REQ-247 (#468) v0.25.0 -> backlog stale scope on a long-past release; blocked on a spar-wasm build REQ-250 (#557) unassigned -> backlog crates.io, blocked by REQ-252 REQ-252 (#557) unassigned -> backlog the git-only dependency closure DD-074 (#557) unassigned -> backlog the rivet-sdlc-* naming decision All five verified surgical: only the `release` field differs, with description, tags and provenance byte-identical. New artifacts: REQ-343 v0.38.0 the liveness probe runs on ubuntu-latest, so it cannot report during the hosted starvation it exists to detect. Observed live: the probe queued ten minutes while twelve self-hosted runners sat idle. Proposed rather than fixed — a needs-based fallback CANNOT work, because a starved job stays queued rather than failing, and the choice of which blindness to accept is an architecture decision. REQ-344 v0.39.0 the sigil / SBOM / AIBOM bridge (#107), genuinely untracked, verified by reading rather than pattern-matching. REQ-345 v0.38.0 the 601-unscoped finding itself, with three candidate mechanisms and a recommendation. Deliberately NOT scoping the other 436. 290 are approved hazard-analysis and design artifacts for which a release field would be meaningless. Only the 165 draft/proposed are actionable, and for most of those the right outcome is `backlog` — which is a DECISION, where absence only resembles one from a distance. Confirmed with fmt 0, clippy 1.97.0 --all-targets -D warnings 0, cargo test --workspace 0 (2368 passed), cargo test -p rivet-cli --test cli_commands 0 (213 passed), rivet validate 0, rivet docs check 0, yamllint 0, diagnose_test.sh 0. 314 artifacts in requirements.yaml, no duplicate ids, provenance present on every artifact touched. Refs: FEAT-001 Trace: skip
📐 Rivet artifact delta
Graphgraph LR
REQ_343["REQ-343"]:::added
REQ_344["REQ-344"]:::added
REQ_345["REQ-345"]:::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
Added
Posted by |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Diagnosing why April issues sat untouched while September ones were fixed in days. The cause is neither neglect nor missing tracking.
The mechanism
release:is optional and mostly absent, and a readiness query can only see artifacts that carry one:release:fielddraft/proposed165 pieces of unstarted work that no readiness query can surface. The board reads as 15 open items while that population sits outside it.
Worked example: #104, open since 2026-04-02, is tracked by REQ-059 —
draft,release: None. Nothing was ever decided about it. Not deferred, not rejected, not scheduled, because nothing ever asked. Five months of silence produced by a missing field rather than a judgement.A correction
I commented on #104 that it was untracked. Wrong, and corrected on the thread. Both automated approaches fail in opposite directions:
--no-default-featuresrequirement citing it in passingReading the artifacts is what produced the right answer.
Scoped (all writes verified surgical — only
releasediffers)rivet provenancecmd +prompt-hashare real unshipped asksNew
ubuntu-latest, so it cannot report during the hosted starvation it exists to detect. Observed live: queued 10 min while 12 self-hosted runners sat idle.proposed, not fixed — aneeds-based fallback cannot work (a starved job stays queued, never fails), and choosing which blindness to accept is an architecture decision.Deliberately not done
Not scoping the other 436. 290 are approved hazard-analysis and design artifacts where
release:would be meaningless. Only the 165 draft/proposed are actionable, and most should land onbacklog— which is a decision, where absence merely resembles one.cargo fmt --all --check/clippy -D warnings(1.97.0)cargo test --workspacecargo test -p rivet-cli --test cli_commandsrivet validate/docs check/yamllint/diagnose_test.shRefs: FEAT-001