Skip to content

[fork] Bump to upstream v0.28.0 - #8

Merged
Mazyod merged 612 commits into
mainfrom
fork/bump-v0.28.0
Aug 29, 2026
Merged

Mazyod merged 612 commits into
mainfrom
fork/bump-v0.28.0

Conversation

@Mazyod

@Mazyod Mazyod commented Aug 29, 2026

Copy link
Copy Markdown
Owner

Lockstep release sync from v0.27.1 to upstream v0.28.0, per FORK.md § Lockstep.

What changed

  • Merged the release tag, resolved wholesale against it. v0.27.1 is a release branch, not an ancestor: it carries 21 commits absent from v0.28.0 touching 37 files, and only 6 of those conflict. docker/Dockerfile auto-merges without conflicting and silently keeps two release-branch hunks — an R1 violation that conflict-only resolution cannot catch. Resolved with git read-tree -u --reset v0.28.0 plus a restore of the ledger's five add patterns, which makes "every upstream path is byte-identical to the tag" a property of the merge rather than something a human verifies file by file.
  • Retired the transformers==5.14.1 pin. Its exit criterion is met: 70b84f0bcb (Fix Gemma 4 for upcoming Transformers version vllm-project/vllm#49797) is in v0.28.0 and the fix is version-agnostic. Deleted rather than repinned — the fork's goal is parity with upstream, and a divergence survives only while necessary, not while precautionary.
  • Declared .github/workflows/buf.yml (new upstream, inert on a fork but carries a nightly cron) in fork/alignment.ledger.
  • Created fork/bench/configs/v0.28.0/. Engine flag content is byte-identical to v0.27.1 — a key-by-key audit found only two non-SAFE keys and nothing renamed. Comments were re-justified where the release changed their meaning, notably Qwen's no-enable-prefix-caching (v0.28.0 flips the hybrid default ON, [Mamba] enable prefix cache by default vllm-project/vllm#50991) and DeepSeek's cudagraph_mode (DSV4 now defaults to Model Runner V2, [Bugfix] Guard DeepSeek V4 MRV1 piecewise CUDA graphs vllm-project/vllm#51768/[Bugfix] Pick the DeepSeek V4 eager cudagraph region per model runner vllm-project/vllm#52401, making the runner the load-bearing knob).
  • Tied the release pins together. The release string was written down in six places; a new test asserts four of them agree, and the rest now derive from profiles.DEFAULT_TAG.
  • Made a negative arm that stops failing visible. profile.expect never reached a probe, verdict, or the report, so a boot_crash arm that served rendered as an ordinary pass. It now reports a mismatch — and a declared crash must prove it crashed, since R5 also fails on a zero-line log, and both negative arms carry R5 as their only probe.

Testing

  • fork/bench/tests: 441 passed, 4 skipped.
  • bash fork/bench/preflight.sh: PREFLIGHT GREEN (440 passed, 5 skipped).
  • fork/scripts/check-alignment.sh: Aligned, exit 0 — 102 declared adds, 10 declared deletes, zero modified upstream files.
  • Dry run against fixtures and the mock: exit 0, 51 probe results, 49 pass + 2 fail-as-expected.
  • Local image build against the real vllm/vllm-openai:v0.28.0 base succeeded: Ubuntu 24.04.3, glibc 2.39, patch 2.7.6, import av, soundfile clean, vllm 0.28.0, transformers 5.15.1 (now unpinned).
  • pre-commit run --files <branch changes>: clean apart from two pre-existing/upstream issues — fork/bench/gate.py:15's import re (predates this branch; regex is not importable in the bare uv run --no-project env the tooling uses) and shellcheck, which is repo-wide and fails on 15 upstream scripts with zero fork/ hits.

Hardware gate results will be added before promotion. :latest moves only via a promote_from dispatch on the gated digest.

AI assistance

AI assistance was used throughout, under human direction and review.

UgaTheDev and others added 30 commits August 11, 2026 21:35
…raising (vllm-project#51627)

Signed-off-by: Kush Zingade <kush.zingade@gmail.com>
…riton launcher) (vllm-project#51770)

Signed-off-by: Chaojun Zhang <chaojun.zhang@intel.com>
…benchmark (vllm-project#51308)

Signed-off-by: louie-tsai <louie.tsai@intel.com>
Signed-off-by: Clinton Thomas <1033162+KernelClint@users.noreply.github.com>
Co-authored-by: Lucas Bourtoule <35483370+dhalf@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Signed-off-by: Jee Jee Li <jeejeelee@inferact.ai>
…1768)

Signed-off-by: Woosuk Kwon <woosuk@inferact.ai>
Co-authored-by: OpenAI Codex <codex@openai.com>
…51819)

Signed-off-by: Andrii Skliar <askliar@nvidia.com>
Co-authored-by: Andrii Skliar <askliar@nvidia.com>
Co-authored-by: OpenAI Codex <codex@openai.com>
…49444)

Signed-off-by: pmanczak <pawel.manczak@intel.com>
Co-authored-by: Kunshang Ji <kunshang.ji@intel.com>
…1812)

Signed-off-by: zjy0516 <riverclouds.zhu@qq.com>
Co-authored-by: OpenAI Codex <codex@openai.com>
…t#51806)

Signed-off-by: zhenwei-intel <zhenwei.liu@intel.com>
Co-authored-by: Kunshang Ji <kunshang.ji@intel.com>
…ant KV cache (vllm-project#47896)

Signed-off-by: root <root@smci355-ccs-aus-m02-09.cs-aus.dcgpu>
Co-authored-by: root <root@smci355-ccs-aus-m02-09.cs-aus.dcgpu>
Co-authored-by: Andreas Karatzas <akaratza@amd.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
…project#50020)

Signed-off-by: Guan-Ming (Wesley) Chiu <105915352+guan404ming@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Signed-off-by: Harry Mellor <19981378+hmellor@users.noreply.github.com>
…#51749)

Signed-off-by: mgoin <mgoin64@gmail.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Signed-off-by: Taneem Ibrahim <taneem.ibrahim@gmail.com>
Co-authored-by: Wentao Ye <44945378+yewentao256@users.noreply.github.com>
Signed-off-by: Harry Mellor <19981378+hmellor@users.noreply.github.com>
…roject#51363)

Signed-off-by: yiliu30 <yi4.liu@intel.com>
Signed-off-by: Yi Liu <yi4.liu@intel.com>
Co-authored-by: OpenAI Codex <noreply@openai.com>
Co-authored-by: Wentao Ye <44945378+yewentao256@users.noreply.github.com>
)

Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
Signed-off-by: Andreas Karatzas <akaratza@amd.com>
Co-authored-by: OpenAI Codex <codex@openai.com>
…-project#51854)

Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
…vllm-project#51857)

Signed-off-by: Harry Mellor <19981378+hmellor@users.noreply.github.com>
Co-authored-by: Andreas Karatzas <akaratza@amd.com>
Signed-off-by: yewentao256 <zhyanwentao@126.com>
Signed-off-by: Andreas Karatzas <akaratza@amd.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
… under EP (vllm-project#49758)

Signed-off-by: Rohan Potdar <rohan.potdar@amd.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…d models (vllm-project#51837)

Signed-off-by: Stefan Koncarevic <stefan.koncarevic@amd.com>
Signed-off-by: Richard Zou <zou3519@gmail.com>
pavelzak and others added 28 commits August 16, 2026 20:04
…9514)

Signed-off-by: Andreas Karatzas <akaratza@amd.com>
Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
…ers (vllm-project#51852)

Signed-off-by: Ganesh R <Ganesh.R@amd.com>
Signed-off-by: R <Ganesh.R@amd.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Li, Jiang <jiang1.li@intel.com>
(cherry picked from commit f27ae25)
…f_comparison` (vllm-project#52608)

Signed-off-by: Stefan Koncarevic <Stefan.Koncarevic@amd.com>
Co-authored-by: Andreas Karatzas <akaratza@amd.com>
(cherry picked from commit 402547d)
Signed-off-by: Yan Ma <yan.ma@intel.com>
Co-authored-by: Kunshang Ji <kunshang.ji@intel.com>
(cherry picked from commit b0e9cff)
Signed-off-by: zhenwei-intel <zhenwei.liu@intel.com>
(cherry picked from commit b1d9337)
…small-M swapAB config (vllm-project#52775)

Signed-off-by: Zihua Wu <13583761+lucifer1004@users.noreply.github.com>
(cherry picked from commit 2b7fcbf)
Signed-off-by: Rohan138 <rohanpotdar138@gmail.com>
(cherry picked from commit 823ec22)
…its} → chunk (vllm-project#52812)

Signed-off-by: Ronen Schaffer <ronen.schaffer@ibm.com>
(cherry picked from commit 0a111cc)
…e_code (vllm-project#52952)

Signed-off-by: jperezde <jperezde@redhat.com>
(cherry picked from commit c0a25c0)
…llm-project#52578)

Signed-off-by: Isotr0py <Isotr0py@outlook.com>
(cherry picked from commit 5fd7a88)
…roject#52816)

(cherry picked from commit b389ac2)

Signed-off-by: khluu <khluu000@gmail.com>
Signed-off-by: Kevin Luu <51931015+khluu@users.noreply.github.com>
…t#53358)

Signed-off-by: Kevin Luu <51931015+khluu@users.noreply.github.com>
Co-authored-by: OpenAI Codex <codex@openai.com>
(cherry picked from commit e25c586)
Resolved wholesale against the tag: v0.27.1 is a release branch carrying 21
commits absent from v0.28.0, and 31 of the 37 files they touch auto-merge
without conflicting. docker/Dockerfile drifted silently that way.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Moves the four written-down copies of the release tag (Dockerfile.audio
ARG, build-vllm-audio.yml DEFAULT_BASE_TAG, profiles.DEFAULT_TAG,
preflight.sh --tag) from v0.27.1 to v0.28.0, and adds a test that fails
loudly if they ever disagree again.

Retires the transformers==5.14.1 pin outright rather than replacing it
with a v0.28.0-era pin: its stated exit criterion (70b84f0 / vllm-project#49797
landing upstream) is met, and the fix is version-agnostic, so the
divergence has no remaining justification. The fork's goal is closest
parity with upstream, and a divergence survives only while necessary.
After this, the audio image carries zero divergence from the stock
base beyond the vllm[audio] extra — the patch series is already empty.

Declares .github/workflows/buf.yml's deletion in the alignment ledger
(new upstream workflow, inert on a fork, no ledger entry until now).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Four docstrings/charter passages named v0.27.1 as the current release
after DEFAULT_TAG moved to v0.28.0 in the prior commit:

- profiles.get()'s docstring hard-coded the store's tag, which will just
  rot again on the next bump — made it name DEFAULT_TAG instead of a tag.
- Three verdict.py docstrings had the same "defaulting to v0.27.1" pattern.
- FORK.md still described the image as carrying "one dependency pin"
  (transformers==5.14.1) after that pin was deleted, and named v0.27.1 as
  both the current DEFAULT_BASE_TAG and the current image tag. Rewrote
  the patch-series paragraph to record the pin's retirement as history
  and state plainly that the image is now upstream + audio extra and
  nothing else; bumped the two "currently vX" tag references to v0.28.0.
  Left the "e.g." lockstep-example and the alignment console example
  untouched — illustrative, not claims about the current tag.
- fleet.yaml's manual deepseek-v4-tp2-h200 entry still carried
  `image: openimage/vllm-openai-audio:v0.27.1`, the same stale record its
  now-removed image_digest/validation_date were dropped for. Removed the
  key rather than inventing a v0.28.0 image reference that does not exist
  yet; the manual-entry schema has no required keys, so this is safe.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Round-1's replacement claim overstated the image's contents: "the image
is now the upstream release plus the audio extra, and nothing else" is
false. fork/docker/Dockerfile.audio still installs the OS patch package
and COPYs fork/patches and apply-patches.sh into every build regardless
of series length -- an empty series makes the apply step a no-op, it
does not remove the files. A confidently wrong charter is worse than a
stale one.

Scoped the claim to what is true and matters: the image adds no Python
package, no version pin, and no source patch beyond vllm[audio] itself,
and names the patch-application scaffolding directly as still present
and inert rather than implying it is absent.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Re-point the structural lint at fork/bench/configs/v0.28.0 and update
the witness fixtures' provenance comments: the frozen argv/metadata
are carried forward byte-identical from the v0.27.1 run because the
v0.28.0 flag audit deliberately found no flag needed to change, not
because they were copied without looking. Argv and metadata arrays
themselves are untouched.

Also fix test_local_launcher's hard-coded v0.27.1 engine path, the
last of the six literal-tag traps from this bump, to derive from
profiles.DEFAULT_TAG so it can't rot on the next release bump.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
profile.expect reached only the dry-run launcher: it picked which fixture
to replay and whether to hand back a URL, and never a probe, a verdict, or
the report. So a boot_crash arm that served rendered as an ordinary R5
pass, indistinguishable from a healthy profile — qwen-tp2-noflags served on
v0.27.1 and the run could only record it as "unverified beyond R5", losing
the finding that the all-reduce workarounds may be retirable.

Difference each profile's R5 outcome against its declared expect and render
the contradictions as their own report section. A profile with no R5 result
claims nothing rather than guessing, as gate.absorbed_by_patch does with
ancestry it cannot check.

The exit code is untouched. A first sighting on a new release is a finding
to investigate, not a reason to fail the gate.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The section's prose explained only the negative arm that stopped crashing,
so a serves -> failed row landed under a paragraph about a workaround being
retirable. Cover the other direction, which is the one the probes table
mislabels as "fail (as expected)" on a non-gating profile.

R5 fails on three conditions, and the third is an empty log from an engine
that served — a harness failure, not a crash. "did not serve" would have
contradicted the probes row for the same profile, so the observed column now
names the receipt and carries R5's own detail beside it.

DESIGN.md claimed the gate exits non-zero on any unexpected crash signature.
It never did and deliberately still does not; say what happens instead.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
R5 fails on three conditions: the engine never served, it left a crash
signature, or it emitted a zero-line log. expectation_mismatches already
reasoned about that ambiguity in one direction -- it is why a failure is
labelled with the non-causal "R5 failed" rather than a guessed cause -- but the
boot_crash arm accepted any R5 failure as confirmation.

Both negative arms carry R5 and no other probe. So a boot that hung to the
deadline, or one that logged nothing, produced: R5 fails, the probes table says
"fail (as expected)", no mismatch row, exit 0. The operator reads "the negative
arm still crashes, so the TP2 all-reduce workarounds are still justified" off a
measurement that never happened -- LESSONS rule 6 in mirror image, where a
missing measurement looks like a good one.

A declared crash is now held only when the receipt carries the crash signature
receipts.py already records for exactly this purpose. Without it the row says
"R5 failed (no crash signature)". A profile with no R5 result at all still
claims nothing: absent evidence yields no finding, and this is about evidence
that is present but hollow.

Also derive test_config_store's RELEASE from profiles.DEFAULT_TAG rather than
repeating the literal, closing the path where the parity witness validates one
release while the gate runs another; and correct the pin test's name and
docstring, which said three where it asserts four.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The bump left prose behind in six places, all of which still read as true.

FORK.md's alignment transcript printed the v0.27.1 tag and the file counts from
that release. dff0148 turned the behind-count into an `N` placeholder to
stop exactly this rot; the counts get the same treatment now, since writing in
102 and 10 only sets the next bump up to rot again. The tag is a real one
because a real tag is more illustrative than a placeholder -- and it is now the
current one, checked against what check-alignment.sh actually prints.

The two documented commands naming v0.27.1 still succeed, which is what makes
them worth fixing: a reader following either gets a green about a release that
is not under test. Both READMEs now name the release the pins do.

gate.py's two docstrings still described the profile store as defaulting to
v0.27.1, contradicting the corrected reads in verdict.py and profiles.py.

The DeepSeek config cited "Task 9" -- a plan in a session scratchpad that will
not survive. A committed config has to name the condition that clears it, not
the task that was going to check it.

The fleet fixture borrowed the argv fixture's justification, which is about
flags; this fixture pins no flags. Its payload is untouched -- only the comment,
which now claims what the fixture actually witnesses.

DESIGN.md listed two of the three ways the gate exits non-zero. The third is
_gates returning True on KeyError, a deliberate fail-closed choice: an
undocumented guard is one a future maintainer fixes into failing open.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
check-forbidden-imports fails on import re; the repo's answer, regex,
is not importable in the bare `uv run --no-project` environment every
fork/bench command relies on. Rewrite the four-pin check as anchored
line-based string parsing instead, preserving the anchoring (start of
line for the Dockerfile ARG, stripped-line key match for the indented
workflow field) and failing loudly if a pin is missing rather than
comparing None == None.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

Signed-off-by: Mazyad Alabduljaleel <mazjaleel@gmail.com>
@Mazyod
Mazyod merged commit 5e61958 into main Aug 29, 2026
1 check passed
@Mazyod
Mazyod deleted the fork/bump-v0.28.0 branch August 30, 2026 14:23
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.