Skip to content

Commit bcaa977

Browse files
chore: settle the licence contradiction, drop dead code (closes #265, #266) (#359)
## Licence — a three-way contradiction, now settled This repo declared **three different licences at once**. Its own `docs/testing-and-bench-strategy.adoc` already diagnosed it and said the fix needed an owner decision: > "Licence single-source: `guix/pixi/stapeln` say PMPL-1.0-or-later, 255 headers say > MPL-2.0, only `LICENSES/MPL-2.0.txt` exists — a 3-way contradiction ... any FIX is > owner-manual, file-by-file" **Owner ruling applied: MPL-2.0 for code, CC-BY-SA-4.0 for documentation.** The most visible symptom: `README.adoc` declared `PMPL-1.0-or-later` as the primary licence and linked `LICENSES/PMPL-1.0-or-later.txt` — **a file that does not exist**. A broken licence link on a public README, contradicting both `LICENSE` and GitHub's own MPL-2.0 classification. | Where | Was | Now | |---|---|---| | `README.adoc` | PMPL primary, MPL "fallback", broken link | MPL-2.0 (code) / CC-BY-SA-4.0 (docs) | | `pixi.toml`, `stapeln.toml` | `PMPL-1.0-or-later` | `MPL-2.0` | | 5 crate manifests | `PMPL-1.0-or-later` | `MPL-2.0` | | `guix.scm` | custom PMPL constructor | `mpl2.0` | | `LICENSES/AGPL-3.0-or-later.txt` | present, referenced by nothing | removed | PMPL is **not a registered SPDX identifier**, so those manifest fields were invalid to any tool that read them, not merely inconsistent. Historical/diagnostic mentions of PMPL (CHANGELOG, tech-debt notes, the strategy doc quoted above) are deliberately left alone — they *describe* the problem rather than declare a licence. GitHub already classified this repo MPL-2.0, so no change was needed there; this makes the tree agree with it. ## `guix.scm` — a real parse hazard Line 2 was `// Owner: ...` — a **C-style comment in a Scheme file**. `//` is not a comment in Guile, so `guix shell -f guix.scm` could not have worked. Now `;;`. ## Dead code and a fake gate **closes #265** — deletes the orphaned OCaml "Choreographic Sessions" prototype: `src/lexer.mll`, `src/parser.mli`, `src/parser.mly`, `test/test_typecheck.ml`, and the stray `test_minimal.ml` in the repo root. Verified fully orphaned: no dune file, no opam file, no CI step, nothing in the tree imports them. **closes #266** — deletes `.github/workflows/boj-build.yml`. To answer the question in the issue directly: it is **not** an implementation of the cartridge, it is a *trigger* that POSTs to boj-server asking it to build this repo. It could never have worked, and was reporting green anyway: - `http://` — plaintext, violating estate policy - `boj-server.local` — an **mDNS hostname**, unresolvable from GitHub-hosted runners - **malformed JSON** payload (stray escaping plus an extra closing brace) - `continue-on-error: true` — which masked all three as a passing check That combination is a textbook fake gate: it has been showing "BoJ Server Build Trigger success" on the board while doing nothing. ## Follow-up, not done here With the OCaml prototype gone, the `ocaml 5.4.1` pin in `.tool-versions` is vestigial. Left in place deliberately — that file is the single source of truth for the prover toolchain and isn't worth churning in this PR. ## Verification - `git grep PMPL -- '*.toml' '*.scm' '*.a2ml'` returns nothing. - `LICENSES/` now contains exactly `MPL-2.0.txt` and `CC-BY-SA-4.0.txt`, matching what the tree actually declares — `reuse lint` was previously guaranteed to fail on the missing PMPL file. - Governance's "Licence consistency" job should stay green; the workflow-security linter loses one file to check. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
2 parents 92ad298 + 5eff763 commit bcaa977

20 files changed

Lines changed: 18 additions & 969 deletions

File tree

.github/workflows/boj-build.yml

Lines changed: 0 additions & 23 deletions
This file was deleted.

0-AI-MANIFEST.a2ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,4 @@ After reading this file, demonstrate understanding by stating:
6969
- **Format Version:** 1.0.0
7070
- **Last Updated:** 2026-04-23
7171
- **Maintained By:** Jonathan D.A. Jewell (hyperpolymath)
72-
- **License:** PMPL-1.0-or-later
72+
- **License:** MPL-2.0 (code), CC-BY-SA-4.0 (documentation)

LICENSES/AGPL-3.0-or-later.txt

Lines changed: 0 additions & 661 deletions
This file was deleted.

README.adoc

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -800,9 +800,12 @@ See `formal/PRESERVATION-DESIGN.md §12` and `PROOF-NEEDS.md §3`.
800800

801801
== Licence
802802

803-
PMPL-1.0-or-later — see link:LICENSES/PMPL-1.0-or-later.txt[PMPL-1.0-or-later.txt].
803+
Code is `MPL-2.0` — see link:LICENSES/MPL-2.0.txt[MPL-2.0.txt].
804804

805-
MPL-2.0 fallback available — see link:LICENSES/MPL-2.0.txt[MPL-2.0.txt].
805+
Documentation is `CC-BY-SA-4.0` — see link:LICENSES/CC-BY-SA-4.0.txt[CC-BY-SA-4.0.txt].
806+
807+
Every file carries its own `SPDX-License-Identifier:` header, so the applicable
808+
licence is always the one named in the file itself.
806809

807810
== Author
808811

ephapax-linear/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ name = "ephapax-linear"
77
version = "0.1.0"
88
edition = "2021"
99
rust-version = "1.83"
10-
license = "PMPL-1.0-or-later"
10+
license = "MPL-2.0"
1111
authors = ["Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>"]
1212
repository = "https://github.com/hyperpolymath/ephapax"
1313
description = "Standalone linear/affine discipline checker for ephapax — dual grammars with full substructural focusing"

guix.scm

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; SPDX-License-Identifier: MPL-2.0
2-
// Owner: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
2+
;; Owner: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
33
;; guix.scm — GNU Guix package definition for ephapax
44
;; Usage: guix shell -f guix.scm
55

@@ -15,5 +15,4 @@
1515
(synopsis "ephapax")
1616
(description "ephapax — part of the hyperpolymath ecosystem.")
1717
(home-page "https://github.com/hyperpolymath/ephapax")
18-
(license ((@@ (guix licenses) license) "PMPL-1.0-or-later"
19-
"https://github.com/hyperpolymath/palimpsest-license")))
18+
(license mpl2.0))

llm-warmup-dev.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ See README.adoc for overview.
1111
- `just heal` — attempt auto-repair
1212

1313
## Quick Context
14-
- License: PMPL-1.0-or-later
14+
- License: MPL-2.0 (code), CC-BY-SA-4.0 (documentation)
1515
- Part of hyperpolymath ecosystem
1616
- See EXPLAINME.adoc for architecture

llm-warmup-user.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ See README.adoc for overview.
1111
- `just heal` — attempt auto-repair
1212

1313
## Quick Context
14-
- License: PMPL-1.0-or-later
14+
- License: MPL-2.0 (code), CC-BY-SA-4.0 (documentation)
1515
- Part of hyperpolymath ecosystem
1616
- See EXPLAINME.adoc for architecture

pixi.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ name = "ephapax"
88
version = "0.1.0"
99
description = "A dyadic linear/affine type system language targeting WebAssembly"
1010
authors = ["Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>"]
11-
license = "PMPL-1.0-or-later"
11+
license = "MPL-2.0"
1212
channels = ["conda-forge"]
1313
platforms = ["linux-64", "osx-arm64", "osx-64"]
1414

src/ephapax-ir/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
name = "ephapax-ir"
77
version = "0.1.0"
88
edition = "2021"
9-
license = "PMPL-1.0-or-later"
9+
license = "MPL-2.0"
1010

1111
[dependencies]
1212
smol_str = { workspace = true }

0 commit comments

Comments
 (0)