Skip to content

[campaign] PMPL-1.0 → MPL-2.0 SPDX licence header sweep (~12,000 files) #308

@hyperpolymath

Description

@hyperpolymath

Finding

A 2026-05-30 estate-wide grep shows 12,223 files still carry `SPDX-License-Identifier: PMPL-1.0-or-later` (predecessor estate licence) vs 55,245 files on the target `SPDX-License-Identifier: MPL-2.0`. `MPL-1.0` is already at zero — that conversion completed.

Per estate language policy

Per [[feedback_estate_lang_policy_2026_05_25]] memory:

MPL-1.0/PMPL-1.0 → MPL-2.0

PMPL-1.0 is the predecessor estate licence; MPL-2.0 is the target.

Top hotspots by repo

Repo PMPL-1.0 files Notes
iser-tools 1,517 Likely all estate-authored
.claude (worktrees?) 1,310 Probably ephemeral worktree shadows
v-ecosystem 1,159 Vendored upstream V-lang — exempt
rescript-ecosystem 882 Vendored upstream ReScript — exempt
.github (workflows) 845 Mostly workflow files
asdf-augmenters 820 Estate-authored
asdf-plugin-collection 706 Estate-authored
docs (various) 495 Documentation
verification-ecosystem 453 Estate-authored
a2ml 325 Estate-authored
k9-svc 293 Estate-authored
affinescript-ecosystem 272 Estate-authored
... ... ...

Standards repo itself: 2,382 PMPL-1.0 vs 350 MPL-2.0 — the canonical-policy repo is itself ~87% on the predecessor licence.

Scope considerations

  • Vendored exclusions: v-ecosystem, rescript-ecosystem, hyperpolymath-archive/*, linguist, repos-monorepo — these are upstream forks and should keep their original headers per upstream-fidelity policy.
  • Realistic remaining scope: ~8,000 files across ~40 estate-authored repos.
  • Bulk-replace tractability: Mechanical sed substitution; per-PR scope = per-repo would be ~40 PRs.

Recommended approach

Phase 1 — standards itself

Convert standards' own files (2,032 estimated after carve-outs). Single large PR or 3-4 smaller PRs split by directory (workflows/, docs/, scripts/, lib/). Establishes the pattern.

Phase 2 — top-10 hotspots

Per-repo PRs for iser-tools, asdf-augmenters, asdf-plugin-collection, verification-ecosystem, a2ml, k9-svc, affinescript-ecosystem, container-stack, etc. Mechanical sed -i 's|PMPL-1.0-or-later|MPL-2.0|' plus header-only MPL-1.0 variants.

Phase 3 — long-tail

Subagent fan-out across remaining repos, paced for rate-limit. ~6-8 hours total.

Out of scope

  • Code-level licence changes (just SPDX headers)
  • Upstream-vendored content
  • Files where PMPL is INTENTIONAL (none currently identified)

Owner decision needed

  • (a) Approve Phase 1 (standards itself) now
  • (b) Defer — PMPL-1.0-or-later is contractually equivalent to MPL-2.0 in practice; cosmetic
  • (c) Trigger full sweep — would consume ~6-8 hours of CI/Actions budget

Refs [[feedback_estate_lang_policy_2026_05_25]] (policy source)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions