fix(shims): add per-package LICENSE files and enforce shim license sync#370
Merged
Conversation
Each shim is published from its own subtree, and registries detect license info from files inside the package — not the repository root. Most acute for the Go shim: a subdirectory module's zip excludes the repo-root LICENSE, so pkg.go.dev reported "no license". The synced shim READMEs also carry the root's relative `[Apache-2.0](LICENSE.md)` link, which only resolves with a sibling LICENSE.md in each package. - Add Apache-2.0 LICENSE.md to all five shim dirs (go, maven, nuget, pypi, rubygem), byte-identical to the root; bundle it in the gem via spec.files - Add a package doc comment to the Go shim (pkg.go.dev synopsis) - Enrich discoverability metadata: PyPI Documentation/Changelog URLs; RubyGem documentation_uri/changelog_uri/rubygems_mfa_required - Enforce parity: new ARCH-013/shim-license-sync rule (parallel to shim-readme-sync) and .simple-release.js propagation of root LICENSE.md to every shim at release - Update ARCH-013 to document the LICENSE sync requirement Signed-off-by: Rhuan Barreto <rhuan@barreto.work>
Contributor
Code Coverage
Full HTML report available in workflow artifacts. Per-directory breakdown
|
Deploying archgate-cli with
|
| Latest commit: |
87e3f6d
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://4657e586.archgate-cli.pages.dev |
| Branch Preview URL: | https://claude-friendly-dirac-31aa28.archgate-cli.pages.dev |
Make the registry description consistent across all shims so search and listing pages show the same product tagline everywhere. - Maven: replace the shim-internal description with the product tagline (Maven Central uses <description> as the primary search/display text) and add an <issueManagement> block linking to GitHub issues - NuGet + RubyGem: normalize the description to the canonical em-dash to match the npm/PyPI tagline byte-for-byte Signed-off-by: Rhuan Barreto <rhuan@barreto.work>
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.
Summary
Distribution shims were missing per-package license files, which broke license discoverability across registries. The trigger was pkg.go.dev showing "no license" for the Go shim: it is published as a subdirectory module (
github.com/archgate/cli/shims/go), and a subdir module's zip only contains files under that subtree — so the repo-rootLICENSE.mdis never included. Registries detect license info from files inside the package, not the repo root. On top of that, the synced shim READMEs (kept byte-identical to root byARCH-013/shim-readme-sync) carry the root's relative[Apache-2.0](LICENSE.md)badge/link, which only resolves when aLICENSE.mdsits beside the README in each shim dir — so that link was broken in every published README.What changed
LICENSE.md(byte-identical to root) to all five shim dirs —go,maven,nuget/Archgate.Tool,pypi,rubygem. RubyGem also bundles it viaspec.files.package maindoc comment to the Go shim so pkg.go.dev renders a synopsis.Documentation+ChangelogURLs; RubyGemdocumentation_uri,changelog_uri,rubygems_mfa_required.ARCH-013/shim-license-syncrule (parallel toshim-readme-sync) failsarchgate checkon any drift from the rootLICENSE.md;.simple-release.jsbump()now propagates the rootLICENSE.mdto every shim at release time.ARCH-013updated to document the LICENSE sync requirement as active, enforced behavior.NuGet (license expression + packed README) and Maven (pom
<licenses>) already exposed license metadata via their manifests; npm auto-publishes the root README/LICENSE. No hardcoded version strings were introduced (per ARCH-013).Reviewer notes
v0.40.0) is already registered on pkg.go.dev; once this merges and ships, the license will be detected fromshims/go/LICENSE.md.shim-license-syncpath list and the.simple-release.jsblock intentionally mirror the existing README sync; the LICENSE block's path order matches the sibling README block in the same file (order is behavior-irrelevant).Test plan
bun run validatepasses (lint--deny-warnings, typecheck, format, 1231 tests,archgate check31/31 incl. new rule, knip, build)go build ./.../go vet ./...clean inshims/goLICENSE.md→shim-license-syncfailed with the correctcpfix → restoredgithub.com/archgate/cli/shims/go