Skip to content

plan(v0.38/v0.39): scope the starved old-issue band, and name why it starved - #928

Merged
avrabe merged 1 commit into
mainfrom
plan/req-343-probe-blind-spot
Sep 10, 2026
Merged

plan(v0.38/v0.39): scope the starved old-issue band, and name why it starved#928
avrabe merged 1 commit into
mainfrom
plan/req-343-probe-blind-spot

Conversation

@avrabe

@avrabe avrabe commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

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:

count
total artifacts 706
no release: field 601 (85%)
of those, draft/proposed 165

165 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:

Reading the artifacts is what produced the right answer.

Scoped (all writes verified surgical — only release differs)

artifact move why
REQ-059 (#104) v0.39.0 rivet provenance cmd + prompt-hash are real unshipped asks
REQ-247 (#468) v0.25.0 → backlog stale scope on a long-past release; blocked on a spar-wasm build
REQ-250 / REQ-252 / DD-074 (#557) → backlog crates.io, blocked by the git-only dependency closure

New

  • 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: queued 10 min while 12 self-hosted runners sat idle. proposed, not fixed — a needs-based fallback cannot work (a starved job stays queued, never fails), and choosing which blindness to accept is an architecture decision.
  • REQ-344 (v0.39.0) — the sigil/SBOM/AIBOM bridge (Supply chain integration: Sigil attestations + SBOM/AIBOM + Rivet traceability bridge #107), genuinely untracked.
  • REQ-345 (v0.38.0) — the 601-unscoped finding, with three candidate mechanisms and a recommendation.

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 on backlog — which is a decision, where absence merely resembles one.

gate exit
cargo fmt --all --check / clippy -D warnings (1.97.0) 0 / 0
cargo test --workspace 0 — 2368 passed
cargo test -p rivet-cli --test cli_commands 0 — 213 passed
rivet validate / docs check / yamllint / diagnose_test.sh 0

Refs: FEAT-001

…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
@avrabe
avrabe merged commit 3d000bb into main Sep 10, 2026
32 checks passed
@avrabe
avrabe deleted the plan/req-343-probe-blind-spot branch September 10, 2026 02:52
@github-actions

Copy link
Copy Markdown

📐 Rivet artifact delta

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

Graph

graph 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
Loading
Added
  • REQ-343
  • REQ-344
  • REQ-345

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

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

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