chore(license): relicense from PolyForm-Noncommercial-1.0.0 to MIT - #41
Conversation
The org collapsed its licence tiering to a single licence: every published @bounded-systems package declares MIT, the runtime included (bounded-systems/.github-private#669, superseding #659). door-kit was one of only two packages still declaring PolyForm; guest-room is the other. The split held noncommercial protection on the door/room runtime for its option value — charging for it later. That option is not going to be exercised. Meanwhile PolyForm is not OSI-approved and not in GitHub's recognised licence set, so the repo reported no spdxIdentifier at all (null in the API, no badge) and was excluded from pkg.go.dev's redistributable allowlist and from clean crates.io metadata. - jsr.json + package.json: license -> MIT - LICENSE: added. The repo carried no LICENSE file at all, even though jsr.json's publish.include already listed one — so published tarballs were shipping without the licence they claimed to include. Byte-identical to bounded-systems/mint's LICENSE (sha256 77b8ef3c…), copyright vesting in the individual author since the org is not a legal entity. - .release/license-mit.md: minor-bump intent. mint owns manifest versions, so the bump is recorded as an intent rather than hand-edited; `mint plan` resolves 0.11.0 -> 0.12.0 and converges package.json's lagging 0.6.0 onto the same number at release time. One-way door per published version: every version from here is MIT forever, already-published versions stay under PolyForm. Intended. Refs bounded-systems/.github-private#669 Closes #40 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DEKPrVGzxQHvCdRxRLZLc
|
CI is green — all 10 checks pass on I could not merge it, and I could not take it out of draft. Both are session-capability limits, not anything wrong with the branch:
So this needs a human: click "Ready for review", then merge. Nothing else is outstanding on the branch — it is pushed, in sync with As the description says, merging still does not finish the job. The One more thing for whoever picks this up: issue #40 is claimed by hand ( Generated by Claude Code |
|
Follow-ups from this PR are now filed, so nothing here is carried in prose alone:
Generated by Claude Code |
Closes #40. Part of
bounded-systems/.github-private#669(supersedes #659) — the org collapsing its licence tiering to a single licence: every published@bounded-systemspackage declaresMIT, the runtime included.door-kitwas one of only two packages still declaring PolyForm;guest-roomis the other.The licence change
PolyForm-Noncommercial-1.0.0→MIT, in both manifests (jsr.jsonandpackage.json— this repo has nodeno.json/deno.jsonc).The split held noncommercial protection on the door/room runtime for its option value: charging for it later. That option is not going to be exercised — profit, if pursued, comes from new software rather than from monetising this codebase. Meanwhile PolyForm is not OSI-approved and not in GitHub's recognised licence set, so this repo reported no
spdxIdentifierat all ("license": nullonGET /repos/bounded-systems/door-kit, no badge), and was excluded frompkg.go.dev's redistributable allowlist and from cleancrates.iometadata.LICENSEwas missing entirelyWorth calling out separately, because it is not what the sweep expected to find here:
door-kitcarried noLICENSEfile at all — nothing to replace.jsr.json'spublish.includehas listedLICENSEall along, so every published tarball has been shipping without the licence it claimed to include. Same class of defect as the two other repos caught in this sweep, but worse: those shipped a stale licence, this one shipped none.The new
LICENSEis byte-identical tobounded-systems/mint's (sha256 77b8ef3ca0165fc861dc7567f97d242f6eec582e316304862741fb17f5f1e49e), so the copyright line matches the other relicensed repos exactly:Copyright vests in the individual author because the org is not a legal entity.
publish.includealready listsLICENSE, so no manifest change was needed there — the file now exists to satisfy it.Version bump — via a mint intent, not a hand edit
0.11.0 → 0.12.0(minor), recorded as.release/license-mit.mdrather than typed into the manifests.This is a deliberate deviation from the hand-off, which asked for the manifests to be edited directly.
mintowns manifest versions in this repo (.release/README.md,cut-release.yml):mint versionbumps every manifest present and consumes the intents. Hand-editing the version would have been bumped on top of at release time — a double bump — and theversionCI job runsmint planon every PR, so an intent is also what makes the bump visible in CI.The intent produces exactly the requested bump. Verified locally against
mint@v0.5.0, the ref this repo pins:It also fixes a discrepancy nobody asked about:
jsr.jsondeclared0.11.0whilepackage.jsondeclared0.6.0.mintreads the current version from the first manifest with one (deno.json,jsr.json,package.json— sojsr.json) and writes the next version to all of them, sopackage.jsonconverges onto0.12.0at release time. Nothing here relies on that; it just stops drifting further.One-way door
Per published version. Every version from here is MIT forever; already-published versions (through
0.11.0) stay under PolyForm. MIT cannot be walked back for a version once it is out. Understood and intended — not a question this PR is reopening.What I verified
bun install --frozen-lockfile && bun test— the exacttest-commandstandard.ymlpasses torepo-standard.yml. 6 pass, 0 fail, across 3 files.bunx jsr publish --dry-runon the committed tree — succeeds, andLICENSEnow appears in the published file list (it could not have before; the file did not exist).mint versionto a throwaway copy of this branch:Simulating publish of @bounded-systems/door-kit@0.12.0,MITin both manifests,LICENSEin the file list,Success. That copy was discarded — this branch still declares0.11.0, as it should, since the bump is CI's to apply.GET /repos/bounded-systems/door-kit→license: null, confirming the missing-SPDX symptom first-hand rather than taking it on faith.What I could not run: nothing repo-local. Outside the repo, two things did not work from this session and are described below rather than glossed over.
The claim window was down
claim-ticket.ymlinbounded-systems/.githubcould not be dispatched. Everybounded-systems/.githubAPI endpoint — contents, actions, workflow dispatches — returns403 GitHub access to this repository is not enabled for this session, and the session tooling structurally refuses to attach the repo: a repository whose name begins with.cannot be added to a session. The window was unreachable, not red.So #40 was claimed by hand, per the fallback the org
CLAUDE.mdnames for exactly this case, in the shapeclaim-ticket.ymldefines a claim to be: theclaimedlabel plus a marker comment namingclaude/license-mit-door-kit. The assignee projection was not made — butclaim-ticket.ymltreats assignment as best-effort and explicitly non-load-bearing, and skips it itself whenever the actor is not assignable. The hand claim carries none of the window's serialization guarantee, so it does not defend against a racing claim.Also worth recording:
bash .claude/org-repair.shprintedORG_BOOT_SHA256 unset — not a bounded-systems cloud session; nothing to doand exited 0 — neitherbootstrap in effectnorREFUSED. And no org context block loaded, so this was a degraded-mode session under theCLAUDE.mdstanza: this repo only, no org-level or cross-repo changes. That is within scope for this PR, which touches nothing outsidedoor-kit.Merging does not finish the job
The org's
licgate reads each package's latest published version, not whatmaindeclares. It stays red fordoor-kitafter this merges, untildoor-kitis actually released — dispatchingcut-release.yml, which runsmint version, commits the bump, and cutsv0.12.0, which drivespublish.ymlto JSR.I have not tagged or published, and this PR does not. That is gated on a broker credential that does not exist yet —
bounded-systems/.github#243.Still owed after this: release
door-kitonce #243 lands, and the same relicense forguest-room, the last package still on PolyForm.Not changed
No README or docs line states the licence —
door-kit's README has no licence section — so there was nothing to update for step 6. I did not add one; that is a new section rather than a correction, and it is not what this PR was asked to do.Refs
bounded-systems/.github-private#669,bounded-systems/.github#243.Generated by Claude Code