Skip to content

fix: release-skill changelog-heading prose + AGPLv3 license declarations (2.6.1)#151

Merged
SUaDtL merged 2 commits into
mainfrom
fix/release-prose-and-license-notice
Jun 27, 2026
Merged

fix: release-skill changelog-heading prose + AGPLv3 license declarations (2.6.1)#151
SUaDtL merged 2 commits into
mainfrom
fix/release-prose-and-license-notice

Conversation

@SUaDtL

@SUaDtL SUaDtL commented Jun 27, 2026

Copy link
Copy Markdown
Collaborator

Two small, related cleanups under the 2.6.1 patch — both trailing inconsistencies from the v2.6.0 release work. Two commits, each type-homogeneous.

fix(release) — changelog roll uses the bracket heading (31bf775)

The release skill's Phase-1 prose told the orchestrator to roll the new section under a bare ## v<version> heading, but the repo's CHANGELOG.md (and every prior GitHub Release) uses the Keep-a-Changelog ## [<version>] form — the same form the _releaselib guards hardened in #150 now match. The prose was the last spot still naming the bare-v form. Aligned it and pinned it with a SkillProseTest assertion (## [MAJOR.MINOR.PATCH] present, ## vMAJOR.MINOR.PATCH absent).

Because this touches the published plugins/ca/ payload, the version-bump gate requires a bump: 2.6.0 → 2.6.1 (plugin.json + README version badge), reconciled by check_badge_consistency.py.

fix(license) — align manifest + README with the AGPLv3 relicense (c8237ed)

Two declarations were left stale after the relicense (#147/#149, ADR-0009):

  • plugin.json still declared "license": "MIT" — the machine-readable field plugin registries display. Now AGPL-3.0-only (SPDX -only per the v3, no-"or later" grant the docs/ADR state; per-file headers were explicitly declined), matching the LICENSE file and the README badge.
  • The top-of-README License notice still used the pre-docs(changelog): roll the 2.6.0 release notes #149 "available separately" offering language. docs(changelog): roll the 2.6.0 release notes #149 corrected only the detailed Dual-Licensing section and missed this callout. Now uses the same reserves-the-right / not-offered-at-this-time framing.

Verification

  • Full .github/scripts/test_*.py suite green (incl. the new SkillProse pin); py_compile clean.
  • check_badge_consistency.py green at 2.6.1; plugin.json parses (JSON-manifests parity).
  • License now consistent across LICENSE (AGPLv3), README badge, README callout, and the manifest.

https://claude.ai/code/session_015tNUy37dx7DJGDzmVUB8Wf

SUaDtL added 2 commits June 27, 2026 11:59
Phase 1 of the release skill instructed rolling the new section under a bare
`## v<version>` heading, but the repo's CHANGELOG.md -- and every prior GitHub
Release -- uses the Keep-a-Changelog `## [<version>]` form, which is also the
form the _releaselib notes/date guards (hardened in #150) now match. The roll
prose was the last spot still naming the bare-v form, so a literal reading would
have written a heading the guards don't recognize.

Aligns the roll instruction to the bracket form and pins it with a SkillProseTest
assertion. The version bump rides this commit because the change touches the
published `plugins/ca/` payload (the version-bump gate requires it).

CHANGELOG: the /ca:release skill now documents the Keep-a-Changelog `## [X.Y.Z]`
changelog heading, matching the repo convention and the hardened release guards.

Claude-Session: https://claude.ai/code/session_015tNUy37dx7DJGDzmVUB8Wf
Two declarations were left stale after the relicense (#147/#149, ADR-0009):

- plugins/ca/.claude-plugin/plugin.json still declared "license": "MIT" -- the
  machine-readable field plugin registries display. Now AGPL-3.0-only, matching
  the LICENSE file and the README badge. SPDX -only per the v3, no-or-later
  grant the docs and ADR state (per-file headers were explicitly declined).
- The top-of-README License notice still carried the pre-#149 "available
  separately" offering wording; #149 corrected only the detailed Dual-Licensing
  section and left this callout. Now uses the same reserves-the-right /
  not-offered-at-this-time framing as that section.

CHANGELOG: the plugin manifest now declares AGPL-3.0-only (was a stale MIT), and
the README license notice no longer implies commercial licenses are on offer.

Claude-Session: https://claude.ai/code/session_015tNUy37dx7DJGDzmVUB8Wf
@SUaDtL
SUaDtL merged commit 3b7559c into main Jun 27, 2026
22 checks passed
@SUaDtL
SUaDtL deleted the fix/release-prose-and-license-notice branch June 27, 2026 16:03
SUaDtL added a commit that referenced this pull request Jun 27, 2026
…aces (#152)

* fix(license): finish the AGPLv3 relicense on two stale surfaces

The v2.6.0 relicense (ADR-0009) left two more declarations on the old MIT terms,
beyond the ca manifest + README callout fixed in #151:

- plugins/ca-sandbox/.claude-plugin/plugin.json declared "license": "MIT" -- the
  sibling plugin's machine-readable field. Now AGPL-3.0-only (the repo LICENSE is
  AGPLv3 and ADR-0009 carves out no exception for ca-sandbox). 0.1.1 is untagged,
  so no version bump is required.
- .codearbiter/coding-standards.md still stated "License is MIT; copyright holder
  codeArbiter contributors". Corrected to AGPL-3.0-only / SUaDtL per ADR-0009.

CHANGELOG: ca-sandbox's plugin manifest now declares AGPL-3.0-only (was a stale MIT).

Claude-Session: https://claude.ai/code/session_015tNUy37dx7DJGDzmVUB8Wf

* ci: add a license-consistency check across declaration surfaces

A relicense must update several surfaces (both plugin manifests, LICENSE, the
README badge + notice) and human review keeps missing some -- the v2.6.0 AGPLv3
relicense left three stale (the ca manifest + README callout fixed in #151, the
ca-sandbox manifest fixed in the preceding commit). This adds a mechanical CI
guard so a partial relicense fails the build instead of shipping.

check_license_consistency.py is stdlib-only with pure functions that degrade to a
finding rather than raise. It reads ONLY the enumerated surfaces -- never a
repo-wide grep -- so third-party (package-lock) and historical (CHANGELOG/ADR)
license mentions can't false-positive. ca's plugin.json `license` is the
canonical SPDX; a LICENSE_FAMILIES table maps it to each surface's identifying
markers, so the check is license-agnostic (a future relicense adds an entry, not
a rewrite). A fixed forbidden-phrase set guards retired commercial-offering prose.

Wired as a repo-wide, always-on ci.yml job in the required-checks aggregation.
security-reviewer PASS (no untrusted-input / secret / privilege concerns). Spec:
.codearbiter/specs/license-consistency-check.md. 23 unit tests cover AC-1..10.

Claude-Session: https://claude.ai/code/session_015tNUy37dx7DJGDzmVUB8Wf

---------

Co-authored-by: SUaDtL <SUaDtL@users.noreply.github.com>
SUaDtL added a commit that referenced this pull request Jul 1, 2026
2.6.1 is a security-hardening release: the five P1 enforcement-bypass fixes
(#159-#163) plus the #158 task-id fix and the #151 release-skill/AGPLv3 surface
alignment. Version (plugin.json) and README badges were already at 2.6.1; this
adds the user-facing CHANGELOG section and is the last surface before tagging.


Claude-Session: https://claude.ai/code/session_01JqTxpxEkbDHb6AuADohtMR

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant