Skip to content

Commit 4aed5f8

Browse files
docs(licence-policy): A5 — scaffold-placeholder leak is NOT licence debt (#140)
Final step of the #3 campaign — the human SoT + machine mirror sync. Additive A5 (Rules 1–3 + A1–A4 unchanged): PLMP/PMLP sentinel = unsubstituted-scaffold leak (process bug, not licence debt); doubled suffix = same family (A3 refined). `.machine_readable/licensing-policy.toml` updated to match (`[scaffold_placeholder]`, `[guard]` hard_fails_on/warns_on). Pairs with the rsr-template-repo guard PR. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 57622fb commit 4aed5f8

2 files changed

Lines changed: 31 additions & 5 deletions

File tree

.machine_readable/licensing-policy.toml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,20 @@ exception = "an agent may author NEW files with correct SPDX; a brand-new repo's
4646

4747
[debt] # Addendum A3 — the ONLY licence debt
4848
type = "variant normalisation (manual, owner-driven)"
49-
fix = "PMPL-1.0 and PMPL-1.0-or-later-or-later -> PMPL-1.0-or-later"
49+
fix = "PMPL-1.0 -> PMPL-1.0-or-later (the only TRUE manual licence debt)"
50+
note = "PMPL-1.0-or-later-or-later is NOT hand-typed debt — it is a scaffold-substituter artifact; see [scaffold_placeholder]"
51+
52+
[scaffold_placeholder] # Addendum A5 — NOT licence debt
53+
sentinel = ["PLMP-1.0-or-later", "PMLP-1.0-or-later"]
54+
classification = "unsubstituted scaffold placeholder (process bug) — NOT licence debt"
55+
remediation = "re-run contractiles scaffold substitution; NEVER hand-edit as licence work"
56+
family = "PMPL-1.0-or-later-or-later (doubled suffix) is the same scaffold-substituter family"
57+
tripwire = "contractiles/must/Mustfile (groups with REPLACE-WITH-*)"
5058

5159
[guard]
5260
location = "rsr-template-repo/.github/workflows/spdx-policy-guard.yml"
5361
edits_files = false
5462
tolerates = ["PMPL-*"]
5563
fails_on = ["contradictory multi-SPDX in one file", "foreign licences outside the estate family"]
64+
hard_fails_on = ["PLMP-/PMLP- as a real SPDX value (scaffold-placeholder leak)"]
65+
warns_on = ["bare PMPL-1.0", "PMPL-1.0-or-later-or-later"]

LICENCE-POLICY.adoc

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,13 @@ top-level LICENSE — that is authoring, not relicensing.
127127

128128
=== A3 — Variant normalisation is the only standing debt
129129

130-
A few files carry malformed variants — `PMPL-1.0` (missing
131-
`-or-later`) and `PMPL-1.0-or-later-or-later` (doubled suffix). These
132-
should read `PMPL-1.0-or-later`. This is the *only* licence debt, and
133-
it is owner-driven manual cleanup (per A2) — not a drift to auto-fix.
130+
A 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*
132+
true licence debt, and it is owner-driven manual cleanup (per A2) —
133+
not 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
135+
scaffold-substituter artifact of the same family as A5, *not*
136+
hand-typed licence debt — see A5.
134137

135138
=== A4 — Open question (owner ruling pending)
136139

@@ -140,6 +143,19 @@ The Palimpsest family has a canonical member `PAGPL-1.0-or-later`
140143
`PAGPL-1.0-or-later` is an *open owner decision* — not yet ruled, not
141144
asserted here.
142145

146+
=== A5 — Scaffold-placeholder leak is NOT licence debt
147+
148+
`PLMP-1.0-or-later` / `PMLP-1.0-or-later` (anagrams of PMPL) are an
149+
*intentional scaffold placeholder sentinel* — the contractiles
150+
substitution step must rewrite them to `PMPL-1.0-or-later`. Their
151+
survival into a repo is an *unsubstituted-scaffold leak* (a process
152+
bug), *not licence debt*. They must NEVER be hand-edited as licence
153+
remediation; the fix is re-running scaffold substitution. The
154+
canonical tripwire is `contractiles/must/Mustfile` (groups the
155+
sentinel with `REPLACE-WITH-*`); `spdx-policy-guard.yml` hard-fails it
156+
as a real SPDX value (and surfaces A3 variants as non-failing
157+
warnings). Evidence: `LICENCE-DEBT-LEDGER-2026-05-18`.
158+
143159
== See Also
144160

145161
* `PALIMPSEST.adoc` (this directory) — full narrative

0 commit comments

Comments
 (0)