EPBDS-16211 F1 step 4: third-party notices, ahead of vendoring the CSS - #44
Merged
Merged
Conversation
The prerequisite for step 4's second half, and it has to land BEFORE the dependency goes: while the CSS is imported, each semantic module carries its own `/*!` banner into the build and the banners survive minification. Once the CSS is copied into this repository, nothing keeps them current automatically. `THIRD-PARTY-NOTICES.md` at the root, not in `static/all.css` — that file is a build artifact and is gitignored, so a notice there would not be in the tree and would be rewritten by the next build. Added to `package.json` `files`, or it would not ship to npm at all: there is no `.npmignore` fallback, `files` is an allowlist. THE LICENCE TEXTS ARE FETCHED, NOT RECALLED. Both are transcribed verbatim from the upstream repositories via the GitHub API, and one of them turned up an incomplete upstream record that is stated plainly rather than papered over: - `semantic-ui-less` ships NO licence file at all. Its package.json declares `"license": "MIT"` and `"author": "Jack Lukic <jack@semantic-ui.com>"`, and the Semantic-UI-LESS repository has no LICENSE either — GitHub's licence API returns 404 for it. - The licence text therefore comes from Semantic-Org/Semantic-UI, which these LESS definitions are published from — and THAT file contains no `Copyright (c)` line of its own, only the permission text. It is reproduced exactly as upstream publishes it, with the author recorded from the package manifest rather than invented. Writing a plausible-looking copyright line would have been the easy thing and the wrong one. - normalize.css v7.0.0 does carry a holder line, fetched verbatim: `Copyright © Nicolas Gallagher and Jonathan Neal`. It is in scope because `definitions/globals/reset` is largely normalize.css and its one-line banner already travels into our compiled output. Also fixes a malformed SPDX identifier found while editing the manifest: `"license": "Apache 2.0"` -> `"Apache-2.0"`. The former is not a valid SPDX expression, and it is what npm publishes as this package's licence metadata.
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 prerequisite for step 4's second half, and it has to land before the dependency goes: while the CSS is imported, each Semantic module carries its own
/*!banner into the build and those banners survive minification. Once the CSS is copied into this repository, nothing keeps them current automatically.THIRD-PARTY-NOTICES.mdat the root — not instatic/all.css, which is a build artifact and is gitignored, so a notice there would not be in the tree and would be rewritten by the next build. Added topackage.jsonfiles, or it would not ship to npm at all: there is no.npmignorefallback,filesis an allowlist.The licence texts are fetched, not recalled
Both are transcribed verbatim from upstream via the GitHub API. One of them turned up an incomplete upstream record, stated plainly rather than papered over:
semantic-ui-lessships no licence file at all. Itspackage.jsondeclares"license": "MIT"and"author": "Jack Lukic <jack@semantic-ui.com>", and the Semantic-UI-LESS repository has noLICENSEeither — GitHub's licence API returns 404 for it.Semantic-Org/Semantic-UI, which these LESS definitions are published from — and that file contains noCopyright (c)line of its own, only the permission text. It is reproduced exactly as upstream publishes it, with the author recorded from the package manifest rather than invented. Writing a plausible-looking copyright line would have been the easy thing and the wrong one.Copyright © Nicolas Gallagher and Jonathan Neal. It is in scope becausedefinitions/globals/resetis largely normalize.css, and its one-line banner already travels into our compiled output.One unrelated defect fixed while in the manifest
"license": "Apache 2.0"→"Apache-2.0". The former is not a valid SPDX expression, and it is what npm publishes as this package's licence metadata.Context: where step 4's second half stands
Measured since the parity gate landed, and it changed the method:
globals/resetcompiles to an exact byte-substring of the full build (26,224 bytes) — liftable verbatim.modules/dropdowndoes not — only 42.4% matches contiguously, because our:extendrules rewrite Semantic's selector lists. So the vendored CSS has to come from subtraction against the full build (what the fixture generator already does), and be placed as.lessso:extendstill reaches it.dropdown.lessis 1,422 lines reading 210 distinct variables through the theme cascade this step exists to delete.@size-base-pxmoves 63,@size-scale41,@radius-base19 — about 17% stop tracking those tokens. Our ownoverride/modules/dropdown.overrides(251 lines) stays LESS, so our design layer keeps full theming.🤖 Generated with Claude Code