Skip to content

chore: correct copyright attribution across migrated and llm-d-original files - #2450

Open
elevran wants to merge 8 commits into
llm-d:mainfrom
elevran:worktree-copyright-notices
Open

chore: correct copyright attribution across migrated and llm-d-original files#2450
elevran wants to merge 8 commits into
llm-d:mainfrom
elevran:worktree-copyright-notices

Conversation

@elevran

@elevran elevran commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

What type of PR is this?
/kind cleanup

What this PR does / why we need it:

Corrects copyright notice attribution across the repo based on local git history provenance:

  • Adds hack/copyright.sh (verify/fix/classify modes) and wires verify-boilerplate into make presubmit so new files can't drift.
  • Backfills the 92 .go/.sh files that had no notice at all.
  • Adds the missing line to 6 GAIE-derived files that had only the llm-d notice, and to 283 GAIE-derived files that had only the Kubernetes notice, per the both-notice convention.
  • Corrects 160 llm-d-origin files that carried only the Kubernetes notice (git history shows their creation commit predates and is unrelated to any GAIE migration) to carry the llm-d notice instead.

Which issue(s) this PR fixes:
Fixes #2448

Release note (write NONE if no user-facing change):

NONE

Files migrated from sigs.k8s.io/gateway-api-inference-extension must
carry The Kubernetes Authors notice; llm-d-original files must carry
The llm-d Authors notice; GAIE files modified locally must carry both.
Current headers do not reliably match provenance.

hack/copyright.sh derives provenance from local git history: GAIE
commits are self-identifying (scripts/migrate-gaie-paths.sh rewrites
bare #NNN issue refs in migrated commit messages to the qualified
kubernetes-sigs/gateway-api-inference-extension#NNN form), and the
import-path-rewrite commits it creates are isolated by subject line.

Refs llm-d#2448

Signed-off-by: Etai Lev Ran <elevran@gmail.com>
Refs llm-d#2448

Signed-off-by: Etai Lev Ran <elevran@gmail.com>
mktemp creates files with mode 600; without chmod --reference before
the final mv, fix strips the executable bit from shell scripts.

Signed-off-by: Etai Lev Ran <elevran@gmail.com>
90 files with no notice, stamped The llm-d Authors via
hack/copyright.sh fix; 2 files (internal/runnable/leader_election.go,
pkg/epp/util/env/env_test.go) are unmodified GAIE imports per
hack/copyright.sh classify and get The Kubernetes Authors instead.

Refs llm-d#2448

Signed-off-by: Etai Lev Ran <elevran@gmail.com>
hack/copyright.sh classify flags 6 files with local changes beyond
the mechanical import rewrite that carry only the llm-d notice; add
the Kubernetes line above it per the both-notice convention.

Refs llm-d#2448

Signed-off-by: Etai Lev Ran <elevran@gmail.com>
hack/copyright.sh classify flags GAIE-origin files with local changes
beyond the mechanical import rewrite that carry only the Kubernetes
notice; add the llm-d line beneath it per the both-notice convention.

5 generated files (zz_generated.*.go, vllm_engine.pb.go) carry no
notice at all and are left to their codegen tooling.

Refs llm-d#2448

Signed-off-by: Etai Lev Ran <elevran@gmail.com>
160 files created in llm-d org history carry only the Kubernetes
Authors notice, likely copy-pasted from a neighboring GAIE-derived
file. hack/copyright.sh classify confirms their creation commit is
not GAIE-marked; replace the Kubernetes line with the llm-d one.

Refs llm-d#2448

Signed-off-by: Etai Lev Ran <elevran@gmail.com>
@github-actions github-actions Bot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. kind/cleanup and removed kind/cleanup labels Aug 19, 2026
@elevran
elevran marked this pull request as ready for review August 19, 2026 09:23
@roytman

roytman commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Q. Together with the llm-d Authors copyright message, it adds the year 2026. The combination below can look strange. Is that what we want?

Copyright 2025 The Kubernetes Authors.
Copyright 2026 The llm-d Authors.

@elevran

elevran commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator Author

Q. Together with the llm-d Authors copyright message, it adds the year 2026. The combination below can look strange. Is that what we want?

Copyright 2025 The Kubernetes Authors.
Copyright 2026 The llm-d Authors.

Yes. This reflects the commit history so the above means that the file was created and modifed in GAIE in 2025 and then migrated and changed in llmd during 2026.
Happy to change if you think this is confusing and have a clearer suggestion.

Comment thread hack/copyright.sh Outdated
Signed-off-by: Etai Lev Ran <elevran@gmail.com>
@elevran
elevran requested a review from roytman August 19, 2026 16:07
@nilig nilig mentioned this pull request Aug 19, 2026
Comment thread hack/copyright.sh

local llmd_only=0 k8s_only=0 both=0
local f origin creator
while IFS= read -r f; do

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: the loop has no is_generated check, unlike cmd_verify and cmd_fix. Running classify on the final tree reports 6 false positives (zz_generated.*.go x4, vllm_engine.pb.go, vllm_engine_grpc.pb.go) that are deliberately, correctly exempted everywhere else.
One-line fix: add is_generated "${f}" && continue to the loop, matching the other two modes.

Comment thread hack/copyright.sh
}

cmd_classify() {
echo "Building GAIE-commit marker set..." >&2

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

classify's history heuristic self-pollutes after this PR's own commits
internal/runnable/leader_election.go and pkg/epp/util/env/env_test.go were manually classified (correctly) as "unmodified GAIE import" and given only the Kubernetes notice. Re-running classify on the final tree now flags both as NEEDS-LLMD-NOTICE, because the backfill commit itself (chore: backfill missing copyright notices) is not GAIE-marked or in the mechanical-rewrite grep list, so it counts as a "local touch" that flips the classification. This means any future incidental commit (a typo fix, a lint pass) will permanently and falsely flag an otherwise-untouched GAIE file.
Since only verify (not classify) is gated in make presubmit, this doesn't block anything today, but it's worth a one-line comment in the script noting the limitation, or excluding commits that touch only the license header from the "local touch" set.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/cleanup size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Correct copyright attribution across migrated and llm-d-original files

2 participants