Skip to content

Commit 4a4c534

Browse files
hyperpolymathclaude
andcommitted
policy(LANGUAGE-POLICY): Explicit-Escape Principle (v1.2.2)
Generalises the scoped convention override into a NORMATIVE estate law: every default/alias/convention must provide an explicit machine-readable escape; tools/agents must honour a declared escape and must never re-impose the default across it, in either direction. A re-emergence that occurs despite a declared escape is a tooling defect. \apt-style escape, but scoped at a .machine_readable/ boundary. Must be mirrored into the machine-readable policy. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 9d2cfc0 commit 4a4c534

1 file changed

Lines changed: 41 additions & 8 deletions

File tree

rhodium-standard-repositories/spec/LANGUAGE-POLICY.adoc

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,20 @@
33

44
= RSR Language Policy
55
:author: Jonathan D.A. Jewell (hyperpolymath)
6-
:revnumber: 1.2.1
6+
:revnumber: 1.2.2
77
:revdate: 2026-05-16
88
:toc: left
99
:icons: font
1010
:source-repo: https://github.com/hyperpolymath/cccp
1111

1212
[NOTE]
1313
====
14-
*Version Status*: v1.2.1 — adds the Naming Convention (separator semantics,
15-
RFC 8552-grounded, with scoped override for foreign/inverted conventions).
16-
v1.2.0 codified the Interface & Architecture Law (ABI=Idris2, API+FFI=Zig;
17-
strict typed boundaries; no gatekeeperless gateways). v1.1.0 amended the
18-
allowed/banned lists 2026-04-10. See §Amendments for the full change list.
14+
*Version Status*: v1.2.2 — adds the Explicit-Escape Principle (every estate
15+
default must offer a tool-honoured escape). v1.2.1 added the Naming Convention
16+
(separator semantics, RFC 8552-grounded, scoped override for foreign/inverted
17+
conventions). v1.2.0 codified the Interface & Architecture Law (ABI=Idris2,
18+
API+FFI=Zig; strict typed boundaries; no gatekeeperless gateways). v1.1.0
19+
amended the allowed/banned lists 2026-04-10. See §Amendments for the full list.
1920
====
2021

2122
== Terminology: "Rust" means "Rust/SPARK"
@@ -357,14 +358,46 @@ programs) is a **misnamed duplicate** introduced by tooling that did not know
357358
this convention — it is to be collapsed into the hyphen form, not treated as a
358359
valid parallel structure. Underscore is reserved for genuine data/content dirs.
359360

361+
== Explicit-Escape Principle (NORMATIVE, general)
362+
363+
The scoped convention override above is one instance of a general estate law.
364+
365+
*Every estate default, alias, or convention MUST provide an explicit,
366+
machine-readable escape; and any tool or agent MUST honour a declared escape
367+
and MUST NOT re-impose the default across it, in either direction.*
368+
369+
Rationale: a default with no escape becomes a trap, and "helpful" tooling that
370+
silently re-applies a default over a deliberate, declared opt-out is the single
371+
most common way hard-won corrections get undone (the estate's recurring
372+
re-emergence failure). Think of a shell alias (`apt` → `nala`) with `\apt` as
373+
the escape: the escape is sacrosanct — nothing may "correct" it back. The
374+
estate version is *scoped*: declare the escape once at a boundary
375+
(`.machine_readable/`), and everything inside is escaped, with tools required
376+
to detect and respect the marker rather than re-inferring the default.
377+
378+
Applies to: the separator convention, language/architecture layer rules,
379+
formatting/lint defaults, generated-vs-authored markers, vendored subtrees, and
380+
any future convention. No estate convention is exempt; an escape that tooling
381+
does not honour is a defect in the tooling, not in the escape.
382+
360383
== Machine-Readable Policy
361384

362385
See link:../spec.scm/language-policy.scm[spec.scm/language-policy.scm] for tooling integration.
363-
The separator convention above MUST be mirrored there so agents/tools enforce
364-
it from the machine-readable policy, not prose alone.
386+
The separator convention and the Explicit-Escape Principle above MUST be
387+
mirrored there so agents/tools enforce them from the machine-readable policy,
388+
not prose alone.
365389

366390
== Amendments
367391

392+
=== v1.2.2 — 2026-05-16 (Jonathan D.A. Jewell)
393+
394+
Generalised the scoped convention override into the *Explicit-Escape
395+
Principle* (NORMATIVE): every estate default/alias/convention must offer an
396+
explicit machine-readable escape; tools must honour a declared escape and must
397+
never re-impose the default across it, in either direction. Recurring
398+
re-emergence failures are tooling defects when an escape exists. Must be
399+
mirrored into the machine-readable policy.
400+
368401
=== v1.2.1 — 2026-05-16 (Jonathan D.A. Jewell)
369402

370403
Added the *Naming Convention: separator semantics* normative section:

0 commit comments

Comments
 (0)