Repository navigation
known-issues: fixed-in registry, version schemes and a ledger re-measure queue - #256
Merged
Merged
Conversation
…ure queue
Every upstream bug, behaviour change and advisory k3d-gpu depends on is now an
entry in pins/known-issues.toml with its affected range and the first release
that fixes it. hack/known-issues check (offline, in CI as the known-issues job)
fails when an "ours" pin stays inside a fixed issue's range ("bump <file> to >=
<fixed_in>"), when a workaround marker outlives its fix without a retained
reason, or when markers and entries disagree. eat-stock sites and ledger
references in range are reported, never failed. hack/known-issues poll reads
GitHub (read-only) and finds the first stable release containing each fix: the
fix commit is compared against release tags walked in version order, a
{repo, path, contains} fix reads the file at each tag, and advisories come from
the GitHub advisory database.
hack/pinver.py is the shared version library: semver, zerover, k8s, llama.cpp
builds and releases, calver, PEP 440, docker suffix tags, apt and Hugging Face
revisions, with ranges, update types and each scheme's breaking rule.
hack/ledger-freshness lists SUPPORTED ledger rows whose recorded component
versions are a minor or major behind today's pins, or inside a known issue's
range, ordered by ledger-rules rows, then rows docs claims cite (new
tests/claims_check.sh --cited), then the rest. It writes nothing.
Seeded: vllm-45844 (fixed in 0.25.0), vllm-50801, vllm-pr-51493,
linux-npu-driver-56, kserve-4592, eat-9, the LiteLLM 1.83.14 advisories and
the vLLM 0.32 num_speculative_tokens ordering bug, with markers at the
workaround sites in console/, scripts/k3d-gpu, docs and examples/kserve.
… real-repo tests The ledger re-measure test fixture names cryptoandcoffee/k3d-gpu:0.1.70 as a recorded node image, which the image pin gate (images-lock pins) flagged; it is now allowed in images.unpinned as a test input that is never pulled. The vllm-pr-51493 workaround in console/model_opt.py is one clause of a note string inside an if block, so it carries a single known-issue marker instead of a begin/end pair whose deletion would leave the block empty. The real-repo tests no longer name today's pins: the vLLM CPU pin is moved to v0.24.0 by pattern, and H34's recorded OVMS version is checked by shape, so a version bump that substitutes strings in tests/ does not turn them red.
88plug
force-pushed
the
claude/fresh-known-issues
branch
from
October 30, 2026 00:10
c3d495c to
56ce2e4
Compare
… EAT tag scheme The advisory poll read only the advisories that affect the lowest site version. A patched version could itself sit inside an advisory that does not affect that version, and a backport below the site version or a prerelease could be chosen as the fix. It now takes the first stable patched version above the site version, reads that candidate's own advisories, and moves on until a candidate has none. That changes the LiteLLM entry. GHSA-7hp6-4w63-5g45 (high, published 2026-10-27) affects 1.91.0 through 1.100.3, so the recorded fix 1.95.1 was itself vulnerable. The first release outside every advisory is 1.100.4; the entry now lists GHSA-7hp6 and the wider affected range. A live poll reads fixed_in 1.100.4 with no mismatch and no new advisories. EAT's releases are one stream of release-X.Y.Z and release-X.Y.Z-hotfix tags. Under docker-suffix a hotfix tag and a plain release are different flavours, so the eat-9 poll saw only hotfix releases and could never find a fix shipped in release-1.1.0 or later, and latest() could not move off a hotfix. pinver gains an eat scheme that orders the two forms in one stream, and eat-9 uses it. The re-measure queue gave two rows of one family the same suggested follow-up id; each suggestion is now taken before the next is chosen.
Merged
88plug
added a commit
that referenced
this pull request
Oct 30, 2026
88plug
added a commit
that referenced
this pull request
Oct 30, 2026
main added the known-issues job at the end of ci.yml (#256) where this branch adds canary-tests, so the two conflicted and gate_merge.sh's sync stops on a ci.yml conflict. Both jobs are kept as they are: known-issues as main has it, then canary-tests at the end of the file.
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.
The known-issues part of the freshness CI/CD design. Every upstream bug, behaviour change and advisory k3d-gpu depends on now has a registry entry with its fixed-in release. CI fails when an "ours" pin stays on a version that has a known fix. A read-only queue lists the SUPPORTED ledger rows that were measured on versions older than today's pins.
What is added
hack/pinver.py: the version library. It is stdlib only, has a small CLI, and later freshness tooling imports it.v1.37.1+k3s1/-k3s1), llama (bNNNNNbuilds andvX.Y.Zreleases), calver, pep440, docker-suffix, eat (release-X.Y.Zandrelease-X.Y.Z-hotfixin one stream), apt (dpkg order) and hf-sha.parse,compare,comparable,is_prerelease,in_range(*, comma AND,||unions),check_range,update_type,breaking,classifyandlatest.update_typereports where two versions differ.breakingapplies each scheme's rule: a zerover 0.24 -> 0.25 is a minor that is breaking, a k8s minor is breaking, and a llama.cpp build bump is a minor that is not breaking.latestskips prereleases, tags of another docker-suffix flavour, and anything not newer than the current version.pins/known-issues.tomlandhack/known-issues.checkis offline and deterministic, with its own stdlib validator. It fails on:fixed_inthat is insideaffected;known-issue-beginwith noknown-issue-end;affectedwhilefixed_inis set. The message isbump <file> to >= <fixed_in>;fixed_in, whileretainedis empty.checkonly reports eat-stock sites in range andledger_refsin range. It never fails on them.--jsonprints the full evaluation.pollreads GitHub throughghand writes nothing.fix.sha, the pull request's merge commit, or the issue timeline's closing commit.compare/<tag>...<sha>readsbehindoridentical.imagetemplate, the image tag of the fixing release must resolve (scripts/images-lock digest).{repo, path, contains}: fixed in the first release whose file contains the string. This is how kserve-4592 is tracked. The upstream PR merged in January, and every release since contains its commit, but no release's runtimes chart listskserve-openvino.{ecosystem, package}: reads the GitHub advisory database for advisories.hack/ledger-freshness: read-only.ledger()fromtests/ledger_drift_check.py. For each SUPPORTED row, it follows the Probe and Verdict cells' run anchors to the# Reproduce/# provenanceblocks and**Reproduce:**paragraphs.VERSION.tests/claims_check.sh --cited: prints the ledger rows that claims cite, using the guard's own claim and reference index, so the queue does not re-implement it.Markers (
known-issue:andknown-issue-begin/end) at the workaround sites:if, and deleting a begin/end block there would leave the block empty);No markers are under bench/ or in EXPERIMENTS.md.
ci.yml: a new
known-issuesjob at the end of the file. It hastimeout-minutes: 10,contents: read, and checkout at the v7.0.1 SHA (gh api: latest release). It runs the three new suites andhack/known-issues check.Seeded entries (each upstream state re-read with gh api on 2026-10-29)
Sites by class:
ledger_refs: H54a (bench/h54/h54.py) and H53 (bench/eatflow/live.sh) for vllm-45844, and H54q for the num_speculative_tokens bug.
Acceptance
hack/known-issues checkon this branch (rebased on main 74ff63e):known-issues: ok. It prints 8 issues, 12 sites, 10 markers, and 12 report lines: the eat-stock vLLM v0.24.0 and LiteLLM 1.83.14 sites, the H54a and H53 ledger refs, and the unfixed ours sites.Moving the ours vLLM CPU pin to v0.24.0 in a copy of the registry and its files fails (
tests/known_issues_test.py, RealRepo):Live, read-only
hack/known-issues poll --json, condensed (exit 0, 19 s, re-run after the rebase):hack/ledger-freshness --md(excerpt):H34 is measured on OVMS 2026.4.1, the current pin, so it is not queued. H57dm is queued because its llama.cpp b11749 is behind the b11960 pin.
The protected files are byte-identical after
--jsonand--md(sha256 before and after):436895781433b624316029350d0c2eeecb7b92e5e6550620830da3675b2d3964(main at 74ff63e)a83e85937868c0dfa97a872241fff9f2eb68765df27d2924e92ec67db47842ccTests run
--citedoutput identical)Second commit
The first CI run failed one job, "images.lock complete, every image pinned by digest": the re-measure test fixture's recorded node image
cryptoandcoffee/k3d-gpu:0.1.70is aname:tagreference, whichimages-lock pinsflags. It is now allowed in images.unpinned as a test input that is never pulled, like the other test fixtures there.The same commit:
CI on 56ce2e4 (rebased on main 74ff63e): 78 checks pass, including the image pin job and the new known-issues job; 2 are skipped (automerge and the Pages deploy).
Upstream states re-read with
gh apiafter the rebase:kserve-openvinoappears in neither config/runtimes/kustomization.yaml nor the runtimes chart at v0.21.0 or master. So fixed_in stays empty.Notes for review
New LiteLLM advisories. The task brief named advisories fixed in 1.84.0 and 1.88.6. The advisory database now also lists:
GHSA-g5ff-637f-6q2m (high, published 2026-10-27, fixed in 1.95.0);
GHSA-hhww-mrg2-969h (fixed in 1.85.0).
GHSA-7hp6-4w63-5g45 (high, published 2026-10-27, fixed in 1.100.4 with backports 1.101.3, 1.102.2 and 1.103.1). It affects 1.91.0 through 1.100.3, so it does not affect 1.83.14, but it does affect 1.95.1.
So the first release outside every range is 1.100.4 (on PyPI since 2026-09-29), and
affectedis a union. Both sites are EAT's stock gateway, so this reports and does not fail.workaroundsholds file paths. Each element is a file that carries the entry's markers. The check matches markers and entries in both directions on (file, id).Classes before pins/classes lands. Site and marker classes come from pins/classes when it exists, read in its documented
<glob> <class>line format with first match winning. Until then the defaults are used: EAT stock paths are eat-stock, bench/ is ledger, oracle/seed/ and console/matrix.v1.json are historical, and everything else is ours.EXPERIMENTS.md defect, not edited. A
```bashfence opened in the H18 section (around line 7417) is never closed. It swallows the### H20 pre-registrationand### H20 runheadings until H20's provenance block closes it. ledger-freshness detects this and lists H18 under "not machine-readable" rather than reading H20's versions as H18's. H16 and H40 link no run section from their Probe cells. The ledger fix is a ledger PR.Upstream report still to file. The vLLM v0.32.0
num_speculative_tokensordering bug has no upstream issue. Nothing was posted outside this repo.Review fixes (third commit)
release-X.Y.Zandrelease-X.Y.Z-hotfix. Under docker-suffix those are different flavours, so eat-9's poll saw only hotfix releases and could never find a fix in release-1.1.0 or later. pinver gains aneatscheme (a hotfix sorts after its release), and eat-9 uses it.Each fix has a test that failed first. Run on e7f4a86: pinver 57, known_issues 44 and ledger_freshness 15 OK (also under Python 3.12);
hack/known-issues checkok; claims_check, ledger_drift_check (and its test), claims_check_test 83, ci_wiring_test 72, images-lock check and pins, image_pins_test 43; actionlint 1.7.12 clean.