-
-
Notifications
You must be signed in to change notification settings - Fork 0
docs(policy): retire dead TS/RS carve-outs; reframe affinescript-cli as npm front door #699
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -3,20 +3,20 @@ | |
|
|
||
| = RSR Language Policy | ||
| :author: Jonathan D.A. Jewell (hyperpolymath) | ||
| :revnumber: 1.2.2 | ||
| :revdate: 2026-05-16 | ||
| :revnumber: 1.5.0 | ||
| :revdate: 2026-08-31 | ||
| :toc: left | ||
| :icons: font | ||
| :source-repo: https://github.com/hyperpolymath/cccp | ||
|
|
||
| [NOTE] | ||
| ==== | ||
| *Version Status*: v1.2.2 — adds the Explicit-Escape Principle (every estate | ||
| default must offer a tool-honoured escape). v1.2.1 added the Naming Convention | ||
| (separator semantics, RFC 8552-grounded, scoped override for foreign/inverted | ||
| conventions). v1.2.0 codified the Interface & Architecture Law (ABI=Idris2, | ||
| API+FFI=Zig; strict typed boundaries; no gatekeeperless gateways). v1.1.0 | ||
| amended the allowed/banned lists 2026-04-10. See §Amendments for the full list. | ||
| *Version Status*: v1.5.0 — retires the telegram-bot, `affinescript-deno-test/` | ||
| and `tsconfig.json` carve-outs; reframes `affinescript-cli/` as the permanent | ||
| npm front door. v1.4.0 codified the ReScript/npm/Unnecessarily-JS Layer-1 | ||
| policy. v1.3.0 codified the TS → AffineScript migration state. v1.2.2 added | ||
| the Explicit-Escape Principle (every estate default must offer a tool-honoured | ||
| escape). See §Amendments for the full list. | ||
| ==== | ||
|
|
||
| == Terminology: "Rust" means "Rust/SPARK" | ||
|
|
@@ -131,31 +131,34 @@ NOTE: For full rationale and migration guides, see the link:{source-repo}[CCCP r | |
| (see project tracker | ||
| `project_estate_ts_to_affinescript_2026_05_28.md`). Detection is | ||
| the hypatia rule `cicd_rules/typescript_detected` (matches `*.ts`) | ||
| with `path_allow_prefixes` covering nine carve-out classes: | ||
| with `path_allow_prefixes` covering seven carve-out classes: | ||
| (1) `*.d.ts` declaration files (FFI/library type definitions — | ||
| these are headers, not implementation); (2) `*/bindings/deno/`, | ||
| `*/bindings/typescript/`, `*/bindings/ts/` interop targets where | ||
| we expose work to TS/Deno consumers without authoring TS as our | ||
| primary code path (exemplar: `proven/bindings/deno/`); | ||
| (3) `avow-protocol/telegram-bot/avow-telegram-bot/**` — Telegraf | ||
| is the canonical TS-native Bot-API library, no AffineScript | ||
| binding planned (PERMANENT exemption); (4) tooling configs | ||
| (`vite.config.ts`, `vitest.config.ts`, `tsup.config.ts`, | ||
| `tsconfig.json`) — these are build orchestration, not application | ||
| code; (5) bootstrap shims (`affinescript-deno-test/`, `affinescript-cli/`) | ||
| — TS/JS that bootstraps the AS toolchain itself; | ||
| (6) upstream forks not estate-authored (`rescript/` ReScript | ||
| (3) tooling configs | ||
| (`vite.config.ts`, `vitest.config.ts`, `tsup.config.ts`) | ||
| — these are build orchestration, not application | ||
| code; | ||
| (4) upstream forks not estate-authored (`rescript/` ReScript | ||
| compiler, `servers/` third-party MCP servers, `repos-monorepo/` | ||
| mass aggregator, `linguist/` GitHub language classifier whose | ||
| `samples/TypeScript/*.ts` are ML training fixtures); | ||
| (7) `hyperpolymath-archive/**` archived repos with dormant TS; | ||
| (8) `**/deps/**` Elixir Mix vendored package-manager directory | ||
| (5) `hyperpolymath-archive/**` archived repos with dormant TS; | ||
| (6) `**/deps/**` Elixir Mix vendored package-manager directory | ||
| (exemplar: `tma-mark2/deps/phoenix_live_view/assets/js/phoenix_live_view/*.ts` | ||
| ships Phoenix LiveView's authored TS, vendored as a hex-mix dep); | ||
| (9) `**/vscode/**` editor-host extensions (covers `editors/vscode/`, | ||
| (7) `**/vscode/**` editor-host extensions (covers `editors/vscode/`, | ||
| `extensions/vscode/`, `clients/vscode/`) — five estate repos have | ||
| a `vscode/extension.ts` blocked on AffineScript's VSCode-extension | ||
| API binding (top-50 roadmap, unshipped). Unsound gradual typing is | ||
| API binding (top-50 roadmap, unshipped). Retired 2026-08-31 (v1.5.0): | ||
| the telegram-bot PERMANENT carve-out (bot rewritten in AffineScript), | ||
| the `affinescript-deno-test/`/`affinescript-cli/` bootstrap-shim class | ||
| (harness self-hosted to `.affine`; the cli survives under the Node/JS | ||
| rules as the npm front door), and the dead `tsconfig.json` pattern | ||
|
Comment on lines
+155
to
+159
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win Synchronise the policy gate with the retired carve-outs.
🤖 Prompt for AI Agents |
||
| (the rule matches `*.ts`, so a `.json` path never reached the | ||
| allowlist). Unsound gradual typing is | ||
| the underlying technical objection; AffineScript provides affine/linear | ||
| types plus typed-wasm output. | ||
|
|
||
|
|
@@ -168,7 +171,7 @@ NOTE: For full rationale and migration guides, see the link:{source-repo}[CCCP r | |
| hyperpolymath/standards#252; STEPS #260/#264/#267/#269/#272/#276/#278/#279/#280). | ||
| Detection: hypatia rules `cicd_rules/rescript_detected` (matches | ||
| `*.res`) and `cicd_rules/rescript_interface_detected` (matches | ||
| `*.resi`) with `path_allow_prefixes` covering eight carve-out | ||
| `*.resi`) with `path_allow_prefixes` covering six carve-out | ||
| classes: | ||
| (1) `bsconfig.json`, `*.config.res` tooling configs; | ||
| (2) `rescript/`, `servers/`, `repos-monorepo/`, `linguist/` | ||
|
|
@@ -179,10 +182,11 @@ NOTE: For full rationale and migration guides, see the link:{source-repo}[CCCP r | |
| (5) `**/vscode/**` editor-host extensions (blocked on AS | ||
| VSCode-extension API binding); | ||
| (6) `**/lib/js/**`, `**/lib/es6/**`, `**/lib/bs/**` bsc compilation | ||
| output (not source); | ||
| (7) `affinescript-deno-test/`, `affinescript-cli/` bootstrap shims; | ||
| (8) `avow-protocol/telegram-bot/avow-telegram-bot/**` Telegraf | ||
| carve-out (PERMANENT exemption mirror of TS class 3). | ||
| output (not source). | ||
| Retired 2026-08-31 (v1.5.0): the bootstrap-shim and telegram-bot | ||
| mirror classes — all three directories are 100% AffineScript on main | ||
| and none ever tracked a `.res` file, so removal changes no scan | ||
| outcome. | ||
| Existing `.res` migrates to `.affine` directly (do not pass through | ||
| ReScript-to-TS first). | ||
|
|
||
|
|
@@ -197,7 +201,10 @@ NOTE: For full rationale and migration guides, see the link:{source-repo}[CCCP r | |
| (1b) `vscode-` substring (extension repos/subdirs); | ||
| (1c) `tree-sitter-` substring (grammar npm-publish targets, Class C | ||
| consumer artefact with native binding); | ||
| (2) `affinescript-deno-test/`, `affinescript-cli/` bootstrap shims; | ||
| (2) `affinescript-cli/` npm front door — the permanent npm | ||
| distribution shim for the AffineScript toolchain (reframed | ||
| 2026-08-31 from "bootstrap shim"; `affinescript-deno-test/` dropped | ||
| the same day — harness self-hosted to `.affine`); | ||
| (3) `rescript/`, `servers/`, `repos-monorepo/`, `linguist/` upstream | ||
| forks; | ||
| (4) `hyperpolymath-archive/**` archived repos; | ||
|
|
@@ -241,7 +248,9 @@ NOTE: For full rationale and migration guides, see the link:{source-repo}[CCCP r | |
| (1) `mcp-bridge/`, `**/plugins/**` host-required (JS is the host | ||
| contract); | ||
| (2) `**/*.config.{js,cjs,mjs}` tooling configs; | ||
| (3) `affinescript-deno-test/`, `affinescript-cli/` bootstrap shims; | ||
| (3) `affinescript-cli/` npm front door (permanent distribution shim; | ||
| `affinescript-deno-test/` dropped 2026-08-31 — harness self-hosted | ||
| to `.affine`); | ||
| (4) `rescript/`, `servers/`, `repos-monorepo/`, `linguist/` upstream | ||
| forks; | ||
| (5) `hyperpolymath-archive/**` archived repos; | ||
|
|
@@ -566,6 +575,27 @@ not prose alone. | |
|
|
||
| == Amendments | ||
|
|
||
| === v1.5.0 — 2026-08-31 (Jonathan D.A. Jewell) | ||
|
|
||
| Retired three dead carve-outs, verified no-op estate-wide against every | ||
| location the hypatia `path_allow_prefixes` substrings could match: | ||
| (1) the `avow-protocol/telegram-bot/**` TS/RS "PERMANENT" exemption — | ||
| the bot was rewritten in AffineScript (zero `.ts`/`.res` on main), so | ||
| the "no AffineScript binding planned" rationale no longer described | ||
| reality; (2) the `affinescript-deno-test/**` bootstrap-shim exemption | ||
| across all four rules — the test harness self-hosted to 100% `.affine` | ||
| (affinescript#735/#736), meeting its own unblock condition; (3) the | ||
| `tsconfig.json` pattern in the TS tooling class — dead entry, since | ||
| `cicd_rules/typescript_detected` matches `*.ts` and a `.json` path can | ||
| never reach the allowlist. `affinescript-cli/**` was simultaneously | ||
| reframed from "bootstrap shim" to *npm front door* — a permanent | ||
| runtime-agnostic JS distribution shim (downloads the pinned native | ||
| binary, SHA-256-verifies, caches, execs) — retained under the Node/npm | ||
| and JavaScript rules only, and removed from the TS/ReScript rules it | ||
| never needed. SSOT change: hypatia#739; mirrors updated here and in | ||
| `.claude/CLAUDE.md`. Also corrected `:revnumber:`, stale at 1.2.2 | ||
| since v1.3.0. | ||
|
|
||
| === v1.4.0 — 2026-05-30 (Jonathan D.A. Jewell) | ||
|
|
||
| Codified the *ReScript / npm / Unnecessarily-JavaScript Layer-1 policy | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Synchronise the VSCode exemption status.
.claude/CLAUDE.mdLine [256] records thataffinescript/stdlib/Vscode.affine,VscodeLanguageClient.affine, and the host shim shipped on August 28, 2026. It identifies migration effort as the remaining blocker.rhodium-standard-repositories/spec/LANGUAGE-POLICY.adocLine [155] still says the binding is unshipped. This new example repeats the stale blocker. Use one status and one unblock condition in all policy mirrors.🤖 Prompt for AI Agents