|
3 | 3 |
|
4 | 4 | = RSR Language Policy |
5 | 5 | :author: Jonathan D.A. Jewell (hyperpolymath) |
6 | | -:revnumber: 1.2.1 |
| 6 | +:revnumber: 1.2.2 |
7 | 7 | :revdate: 2026-05-16 |
8 | 8 | :toc: left |
9 | 9 | :icons: font |
10 | 10 | :source-repo: https://github.com/hyperpolymath/cccp |
11 | 11 |
|
12 | 12 | [NOTE] |
13 | 13 | ==== |
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. |
19 | 20 | ==== |
20 | 21 |
|
21 | 22 | == Terminology: "Rust" means "Rust/SPARK" |
@@ -357,14 +358,46 @@ programs) is a **misnamed duplicate** introduced by tooling that did not know |
357 | 358 | this convention — it is to be collapsed into the hyphen form, not treated as a |
358 | 359 | valid parallel structure. Underscore is reserved for genuine data/content dirs. |
359 | 360 |
|
| 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 | + |
360 | 383 | == Machine-Readable Policy |
361 | 384 |
|
362 | 385 | 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. |
365 | 389 |
|
366 | 390 | == Amendments |
367 | 391 |
|
| 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 | + |
368 | 401 | === v1.2.1 — 2026-05-16 (Jonathan D.A. Jewell) |
369 | 402 |
|
370 | 403 | Added the *Naming Convention: separator semantics* normative section: |
|
0 commit comments