docs(notice): rename NOTICE.md -> NOTICE; add CLA third-party section#1073
docs(notice): rename NOTICE.md -> NOTICE; add CLA third-party section#1073danielmeppiel merged 4 commits intomainfrom
Conversation
Two changes, one file rename:
1. Rename NOTICE.md -> NOTICE, matching the Apache / CNCF convention used
by upstream third-party-attribution files (kubernetes-sigs/kro,
kubernetes-sigs/headlamp, etc.). The .md extension was non-idiomatic
for a generated legal artifact -- NOTICE files are read by tooling
(license scanners, SBOM generators) that match on the bare filename.
Generator (scripts/generate-notice.py), Makefile target, and the
NOTICE Drift Check workflow are all updated to operate on the
extension-less path.
2. Add a 'Submitted on behalf of a third-party' section to NOTICE,
crediting five contributors whose pull requests landed before the
microsoft-github-policy-service CLA bot recorded a signature on
file. The repo transferred from danielmeppiel/awd-cli to the
microsoft org; some early PRs predate CLA enforcement, and we
could not retroactively reach all contributors. Mirrors section 7
of common CLA texts (the wording adopted by CNCF NOTICE files).
Driven by a new _third_party_submissions block in
scripts/notice-metadata.yaml -- legally-significant wording stays
alongside the per-component data, not buried in code.
Contributors named (verified via Check Runs API against the
microsoft-github-policy-service app, license/cla check on every
merged PR by each suspected author):
- @pofallon (PR #4)
- @richgo (PRs #8, #25, #26, #33, #34)
- @ryanfk (PR #92 -- bot ran with conclusion=null,
output: 'Contributor License Agreement is not agreed yet.')
- @foutoucour (PR #108)
- @Jah-yee (PR #184)
Listed contributors who later sign the CLA (or who were signed
under a different GitHub account at the time) can request removal
via issue.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Renames the repository’s third-party attribution artifact from NOTICE.md to extension-less NOTICE and extends the NOTICE generator/metadata to include a “Submitted on behalf of a third-party” contributor section.
Changes:
- Rename NOTICE output path to
NOTICEand update the generator, Makefile targets, and CI drift workflow accordingly. - Add a
_third_party_submissionsmetadata block and render it into the generated NOTICE. - Add Unreleased changelog entries describing the rename and the new NOTICE section.
Show a summary per file
| File | Description |
|---|---|
scripts/notice-metadata.yaml |
Adds _third_party_submissions block (preamble + contributor PR lists) to drive new NOTICE content. |
scripts/generate-notice.py |
Changes output filename to NOTICE and implements parsing/rendering of third-party submissions. |
NOTICE |
Updates generated artifact to include the new third-party submissions section. |
Makefile |
Updates comments/documentation to refer to NOTICE instead of NOTICE.md. |
CHANGELOG.md |
Adds Unreleased entries documenting the rename and new NOTICE section. |
.github/workflows/notice-drift.yml |
Updates workflow comments/step names to refer to NOTICE and continues to run the generator in --check mode. |
Copilot's findings
Comments suppressed due to low confidence (2)
scripts/generate-notice.py:363
- The comment says the NOTICE file ends with
---\n\n, but when the third-party submissions section is appended the file no longer ends with that delimiter (and the extra section formatting changes the end-of-file structure). Please either update this comment to reflect the new output or adjust the renderer so the file still ends with the expected trailing delimiter whentpsis present.
# Trailing blank line between components (and after the last one)
# to match the CELA template -- the file ends `---\n\n`.
out.append("\n")
if tps is not None and tps.contributors:
out.append(render_third_party_submissions(tps))
NOTICE:1220
- There are two consecutive section delimiters (
---) here before the new third-party submissions section. This looks like an output-formatting bug in the generator (the last dependency section already ends with---, and the new section starts with another). Please adjust generation so only one delimiter is emitted, then re-runmake notice.
- Files reviewed: 6/6 changed files
- Comments generated: 3
| REPO_ROOT = Path(__file__).resolve().parent.parent | ||
| PYPROJECT = REPO_ROOT / "pyproject.toml" | ||
| METADATA_YAML = REPO_ROOT / "scripts" / "notice-metadata.yaml" | ||
| NOTICE_OUT = REPO_ROOT / "NOTICE.md" | ||
| NOTICE_OUT = REPO_ROOT / "NOTICE" | ||
|
|
||
| # Header that prefixes every NOTICE.md. The explanatory paragraph is in | ||
| # Header that prefixes every NOTICE file. The explanatory paragraph is in | ||
| # the YAML (`_header.preamble`) so legal-review of wording lives next | ||
| # to the per-component data, not in code. | ||
| _FIXED_TOP = ( |
There was a problem hiding this comment.
NOTICE_OUT was renamed to NOTICE, but this module still contains several references to NOTICE.md in the top-level docstring and other docstrings/comments. Please update those remaining mentions to NOTICE so the script's documentation matches the new filename.
This issue also appears on line 359 of the same file.
| def render_third_party_submissions(tps: ThirdPartySubmissions) -> str: | ||
| lines = [ | ||
| "---\n", | ||
| "\n", | ||
| "Submitted on behalf of a third-party\n", | ||
| "\n", | ||
| tps.preamble, | ||
| "\n\n", | ||
| ] | ||
| for entry in tps.contributors: | ||
| prs = ", ".join(f"#{n}" for n in entry["prs"]) | ||
| suffix = f" (PRs: {prs})" if prs else "" | ||
| lines.append(f"Submitted on behalf of a third-party: @{entry['github']}{suffix}\n") | ||
| lines.append("\n") | ||
| return "".join(lines) |
There was a problem hiding this comment.
render_third_party_submissions() begins with a --- separator, but every component section already ends with ---\n\n (via render_component() + the trailing blank line in render_notice()). This currently generates two consecutive --- lines in NOTICE. Consider emitting only a single separator between the last component and the third-party section (e.g., drop the leading --- here or conditionally omit the extra separator/blank line in render_notice).
| - **Renamed `NOTICE.md` → `NOTICE`** to follow the Apache / CNCF convention used by upstream third-party-attribution files (e.g. `kubernetes-sigs/kro`, `kubernetes-sigs/headlamp`). The generator (`scripts/generate-notice.py`), `make notice` target, and `NOTICE Drift Check` workflow now operate on the extension-less path. | ||
| - **NOTICE: added "Submitted on behalf of a third-party" section** crediting five contributors whose pull requests landed before the `microsoft-github-policy-service` CLA bot recorded a signature on file -- in keeping with the section-7 wording adopted by CNCF NOTICE files. Driven by a new `_third_party_submissions` block in `scripts/notice-metadata.yaml`. |
There was a problem hiding this comment.
These new Unreleased changelog bullets don't end with a PR reference like (#NNNN). This repo's changelog entries are consistently tagged with PR numbers, so please append the appropriate (#PR_NUMBER) suffix to each new line.
Strip the historical/CNCF-citation paragraph and the verbatim CLA-section-7 quote. Keep only the active sentence (what the listing means + how to request removal). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Three fixes from copilot-pull-request-reviewer: 1. Drop spurious leading '---' separator in the third-party-submissions renderer. render_component already ends each component with '---\n\n', so prepending another '---' produced two consecutive separators in NOTICE. Verified: separator count dropped from 17 to 16. 2. Sweep stale 'NOTICE.md' references in scripts/generate-notice.py (top-level docstring, Modes section, ComponentMeta and DepSpec field docstrings). The constant was renamed; the docs lagged. 3. Append (#1073) PR refs to both CHANGELOG entries; ASCII-correct the arrow ('->' instead of '->'). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Summary
Two changes, one file rename.
1. Rename
NOTICE.md->NOTICEAligns with the Apache / CNCF convention used by upstream third-party-attribution files (
kubernetes-sigs/kro,kubernetes-sigs/headlamp, Apache projects, etc.). The.mdextension was non-idiomatic for a generated legal artifact -- license scanners and SBOM generators match on the bareNOTICEfilename.Updated everywhere:
scripts/generate-notice.py(NOTICE_OUTconstant + all docstring / error /--checkstrings)Makefile(make noticetarget reference).github/workflows/notice-drift.yml(workflow comments, step name)CHANGELOG.md2. NOTICE: add 'Submitted on behalf of a third-party' section
When the repo transferred from
danielmeppiel/awd-clito themicrosoftorg, several PRs had already merged from contributors for whom themicrosoft-github-policy-serviceCLA bot did not record a signature. We could not retroactively reach all of them.Per industry convention (CNCF NOTICE files mirror this exact wording from section 7 of common CLA texts), each such contribution is identified as submitted on behalf of a third-party.
Driven by a new
_third_party_submissionsblock inscripts/notice-metadata.yaml-- legally-significant text stays alongside per-component data, not hidden in code.Contributors named
Verified via the GitHub Check Runs API against the
microsoft-github-policy-serviceapp'slicense/clacheck, on every merged PR by each suspected author. None has a successful CLA check on file:output.title = 'Contributor License Agreement is not agreed yet.'Listed contributors who later sign the CLA -- or who were signed under a different GitHub account at the time -- can request removal via issue.
Verification
uv run python scripts/generate-notice.py --checkexits 0 (NOTICE is up to date).NOTICE Drift Checkworkflow updated to operate on the renamed path; expected to pass.src//tests/code changes -> Lint / Build & Test untouched.Out of scope
apm audit --drift/apm install --check).Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com