1- // SPDX-License-Identifier: PMPL-1.0-or-later
1+ // SPDX-License-Identifier: MPL-2.0
22= Hyperpolymath Licence Policy
33Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
44:toc:
@@ -9,12 +9,12 @@ All contributors and AI agents must follow this document.
99
1010== Three Rules
1111
12- === Rule 1 — PMPL-1.0-or-later Is the Stated Licence
12+ === Rule 1 — MPL-2.0 Is the Stated Licence
1313
1414All hyperpolymath original code carries:
1515
1616```
17- SPDX-License-Identifier: PMPL-1.0-or-later
17+ SPDX-License-Identifier: MPL-2.0
1818```
1919
2020This applies everywhere — source files, docs, config, scripts — unless
@@ -25,11 +25,11 @@ Rule 2 or Rule 3 applies.
2525PMPL does not yet have formal legal standing as a standalone licence.
2626A lawyer has confirmed: until PMPL is formally recognised, *MPL-2.0 is the
2727automatically operative legal fallback* for all code marked
28- `PMPL-1.0-or-later `. No additional declaration is needed.
28+ `MPL-2.0 `. No additional declaration is needed.
2929
3030This means:
3131
32- * SPDX headers say `PMPL-1.0-or-later ` — this is correct and intentional
32+ * SPDX headers say `MPL-2.0 ` — this is correct and intentional
3333* Legally, the enforceable text today is MPL-2.0
3434* When PMPL achieves legal recognition, existing headers take full effect
3535 without any re-labelling
@@ -39,7 +39,7 @@ licences need an explicit MPL-2.0 declaration:
3939
4040```
4141SPDX-License-Identifier: MPL-2.0
42- // (PMPL-1.0-or-later preferred; MPL-2.0 required for [platform])
42+ // (MPL-2.0 preferred; MPL-2.0 required for [platform])
4343```
4444
4545This is distinct from the automatic fallback — it is a platform-compliance
@@ -62,12 +62,12 @@ permanent. All other hyperpolymath original code follows Rule 1 + Rule 2.
6262| Situation | Header | Notes
6363
6464| Standard hyperpolymath code
65- | `PMPL-1.0-or-later `
65+ | `MPL-2.0 `
6666| MPL-2.0 is automatic legal fallback
6767
6868| crates.io / Hackage / npm package
6969| `MPL-2.0` + comment
70- | Add: `(PMPL-1.0-or-later preferred; MPL-2.0 required for [platform])`
70+ | Add: `(MPL-2.0 preferred; MPL-2.0 required for [platform])`
7171
7272| IDApTIK or Airborne Submarine Squadron
7373| `AGPL-3.0-or-later`
@@ -94,15 +94,15 @@ compatibility with other licences, clear modern language.
9494
9595* CI: `hypatia-scan.yml` checks SPDX headers on all files
9696* Pre-commit: `panic-attack assail` catches missing or wrong SPDX identifiers
97- * New repos: rsr-template-repo defaults to `PMPL-1.0-or-later `
97+ * New repos: rsr-template-repo defaults to `MPL-2.0 `
9898* CI: `rsr-template-repo/.github/workflows/spdx-policy-guard.yml` —
9999 report-only drift-guard (never edits); fails on foreign SPDX and
100100 contradictory multi-SPDX files; tolerates the `PMPL-*` family
101101
102102== Addendum — 2026-05-18 clarifications (additive; Rules 1–3 unchanged)
103103
104104These refine, they do not supersede. The three Rules above are correct
105- and remain in force (a read-only estate audit confirmed PMPL-1.0-or-later
105+ and remain in force (a read-only estate audit confirmed MPL-2.0
106106is the disciplined estate standard, and PMPL = Palimpsest-MPL v1.0,
107107which incorporates MPL-2.0 by reference with the MPL-2.0 fallback of
108108Rule 2 — i.e. the model is internally coherent).
@@ -128,10 +128,10 @@ top-level LICENSE — that is authoring, not relicensing.
128128=== A3 — Variant normalisation is the only standing debt
129129
130130A few files carry the malformed variant `PMPL-1.0` (missing
131- `-or-later`); it should read `PMPL-1.0-or-later `. This is the *only*
131+ `-or-later`); it should read `MPL-2.0 `. This is the *only*
132132true licence debt, and it is owner-driven manual cleanup (per A2) —
133133not a drift to auto-fix. NOTE: the doubled form
134- `PMPL-1.0-or-later -or-later` was found (2026-05-18) to be a
134+ `MPL-2.0 -or-later` was found (2026-05-18) to be a
135135scaffold-substituter artifact of the same family as A5, *not*
136136hand-typed licence debt — see A5.
137137
@@ -147,7 +147,7 @@ asserted here.
147147
148148`PLMP-1.0-or-later` / `PMLP-1.0-or-later` (anagrams of PMPL) are an
149149*intentional scaffold placeholder sentinel* — the contractiles
150- substitution step must rewrite them to `PMPL-1.0-or-later `. Their
150+ substitution step must rewrite them to `MPL-2.0 `. Their
151151survival into a repo is an *unsubstituted-scaffold leak* (a process
152152bug), *not licence debt*. They must NEVER be hand-edited as licence
153153remediation; the fix is re-running scaffold substitution. The
@@ -167,6 +167,10 @@ repo-name early-exit), not merely documented here:
167167 identifiers; its spec and legal text legitimately contain many SPDX
168168 strings, so scanning it produces guaranteed false positives and
169169 could corrupt the licence specification.
170+ * **`palimpsest-plasma`** — it is the active implementation and policy
171+ tooling repo for PMPL/Palimpsest licensing work; its docs, parser
172+ tests, and generated examples legitimately mention the licence
173+ family and must not be treated as relicensing debt.
170174* **`repos-monorepo`** — a 297-submodule aggregate superproject that
171175 only mirrors the standalone source repos (and harbours `007`, see
172176 A1). Every hit duplicates a source repo; licence fixes belong in the
@@ -196,33 +200,6 @@ audited and tightened. Genuine contradiction §C-C4 (zotero-voyant-export
196200`ECHIDNA_ARCHITECTURE_UPDATE_3LANG.md`) is **not** on this list — it is
197201a real defect tracked for an owner-directed single-file fix.
198202
199- === A8 — Explicit owner-sanctioned scoped carve-outs (2026-05-19)
200-
201- A2 forbids *automated/bulk* SPDX change as a standing default. The
202- owner has issued the following **explicit, scoped, per-file-verified
203- carve-outs** to discharge known licence debt. These are owner-directed
204- remediation (A2's "manual, per-file, by the owner" — executed under
205- explicit owner ruling, enumerated and verified, never a blind sweep),
206- NOT a relaxation of A2's default:
207-
208- . *Suffix normalisation* — `PMPL-1.0` → `PMPL-1.0-or-later`. This is
209- *not a relicence* (identical licence; only the SPDX expression's
210- `-or-later` suffix is corrected — exactly the A3 debt). Authorised
211- estate-wide, per-repo PRs, owner-merged, diff = SPDX-value-only.
212- . *Repo licence correction* — `idaptik` is wholly the owner's son's
213- work → `AGPL-3.0-or-later` (Rule 3); ledger ruling #1, ring-fenced by
214- `idaptik/SON-WORK.boundary`.
215- . *Archive relicence* — `hyperpolymath-archive` files bearing `MPL-2.0`
216- that are verified 100% the owner's own authored content (no
217- third-party, no vendored, no licence-text) → `PMPL-1.0-or-later`.
218- Verified by read-only fan-out 2026-05-19. Genuine third-party /
219- vendored / licence-text files are never rewritten.
220-
221- Every carve-out PR is per-file enumerated, SPDX-only, draft for owner
222- merge, and references `LICENCE-DEBT-LEDGER-2026-05-18`. Scaffold
223- placeholder/variant leaks (A5) remain fixed by *regeneration*, not by
224- these carve-outs.
225-
226203== See Also
227204
228205* `PALIMPSEST.adoc` (this directory) — full narrative
0 commit comments