[fork] Make upstream alignment a load-bearing, enforced fork goal - #7
Merged
Merged
Conversation
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.
Stacked on #6 — base retargets to
mainonce that merges. Kept separate because folding it into the version bump would break the very "one change, one goal" rule it introduces.Why
The fork exists to carry a handful of upstream fixes, not to become a divergent vLLM. That was a convention held up by good intentions. This makes it a rule the repo enforces.
The charter (
FORK.md§ Charter)How it's enforced
fork/alignment.ledgerdeclares the entire divergence surface — 4 added paths, 6 deleted upstream workflows, each with rationale and lifetime.fork/scripts/check-alignment.shdiffsHEADagainst the merge-base withupstream/main(so unmerged upstream commits are never mistaken for fork changes) and fails on anything undeclared:Runs on every PR (
fork-alignment.yml) and as aneeds:gate onbuild-and-push, so a drifted fork can neither merge nor ship.Test results
Six cases, each run against a scratch worktree:
vllm/v1/core/sched/scheduler.pyin-treemodified ... FORBIDDENtools/mine/helper.pyadded ... UNDECLAREDstale.ymlresurrected ... DECLARED DELETEDCase 5 was added mid-review: the first version only warned when a declared-deleted workflow came back, while
FORK.mdclaimed it failed. A half-finished sync silently restoring the stale bot is exactly the drift this should catch, so the code was changed to match the claim — resurrection now fails, while a genuinely obsolete ledger entry still only warns.Also verified: both workflow files parse as YAML; the job graph is
build-and-push: needs: [alignment, resolve];actions/checkout@v5does support thefilter:input used for the blobless clone.AI assistance was used for this change (Claude Code).