From 9c1eba59915f93c63077820c43d126da59b43450 Mon Sep 17 00:00:00 2001 From: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com> Date: Sun, 31 May 2026 08:06:54 +0100 Subject: [PATCH] docs(npm-to-deno): declare estate-wide migration substantially complete (closes #253, #275) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Campaign closeout for the npm → Deno estate-wide migration. All seven STEP issues (#261/#262/#265/#268/#270/#273/#275) are closed. ~22 physical-migration PRs landed across STEP 3 (smallest-first) plus named-bucket audits for STEPS 4/5/6 closed `SUBSTANTIALLY DONE`. STEP 7 (workspace finalisation) closed alongside this PR, with the 8 ssg-collection adapter migrations shipped in ssg-collection#25 as the workspace-finalisation proof point. Updates: - `rhodium-standard-repositories/spec/LANGUAGE-POLICY.adoc` - §Banned Languages "Node.js" row: list the nine carve-out classes (six original + three added during the migration via hypatia#405: `vscode-` substring, `tree-sitter-` substring, `**/.lake/`, `**/office-addin/`, `**/bindings/{javascript,typescript}/`). Note that migration is substantially complete with per-repo follow-up trackers for the residual longtail. - §Migration Priority item 3: change "Medium-term" → "✅ Done 2026-05-31" (parallels the V-lang→Zig "Done 2026-05-28" entry). - `docs/JS-RUNTIME-POLICY.adoc` - Add `:issue-253:` attribute + a campaign-complete NOTE in the front matter, cross-referencing the umbrella close and the per-repo migration recipe at `docs/migrations/npm-to-deno-template/MIGRATION.md`. - Bump `:revdate:` 2026-05-19 → 2026-05-31. - `.claude/CLAUDE.md §npm Exemptions (Approved)` - Reword "In-flight migration tracked under #253" → "Migration substantially complete 2026-05-31 under umbrella #253", with the same close-tally summary as the LANGUAGE-POLICY.adoc note. What's NOT changed: the carve-out table itself (already authoritative post hypatia#405 + standards#320), the runtime-hierarchy table, the hard-rules section. The closeout is purely a status update — npm is still banned, the hypatia rule remains armed with nine carve-out classes, the per-repo recipe stays canonical. Carry-forward: residual longtail per-repo follow-ups (flat-mate, accessibility-everywhere, kaldor-iiot, excel-economic-numbers-tool, ubicity, heavier Vite/Vitest/Jest/Express stacks) are tracked as per-repo PRs as they ship; they don't gate the umbrella close. Closes #253. Closes #275. Co-Authored-By: Claude Opus 4.7 (1M context) --- .claude/CLAUDE.md | 2 +- docs/JS-RUNTIME-POLICY.adoc | 20 +++++++++- .../spec/LANGUAGE-POLICY.adoc | 40 +++++++++++++------ 3 files changed, 46 insertions(+), 16 deletions(-) diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index 2bec9503..859ab953 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -167,7 +167,7 @@ Existing pre-2026-05-25 `.res`/`.resi` outside these carve-outs is grandfathered The hyperpolymath "npm banned" policy (2026-05-25) has the following approved exemptions on the hypatia rule `cicd_rules/nodejs_detected` (matches `package-lock.json`). -In-flight migration tracked under `hyperpolymath/standards#253` (172 manifests across the estate; see `project_estate_npm_to_deno_2026_05_28.md`). +Migration substantially complete 2026-05-31 under umbrella `hyperpolymath/standards#253` (172 manifests at campaign start; all seven STEP issues #261/#262/#265/#268/#270/#273/#275 closed; ~22 physical-migration PRs landed plus three named-bucket audits closed `SUBSTANTIALLY DONE`; per-repo follow-up trackers cover the residual longtail). See `project_estate_npm_to_deno_2026_05_28.md`. Per-repo recipe: `docs/migrations/npm-to-deno-template/MIGRATION.md`. | Path / Pattern | Class | Rationale | Unblock condition | |---|---|---|---| diff --git a/docs/JS-RUNTIME-POLICY.adoc b/docs/JS-RUNTIME-POLICY.adoc index 318e5c55..879b7bdc 100644 --- a/docs/JS-RUNTIME-POLICY.adoc +++ b/docs/JS-RUNTIME-POLICY.adoc @@ -1,16 +1,32 @@ // SPDX-License-Identifier: PMPL-1.0-or-later = JS Runtime & Package Management Policy -:revdate: 2026-05-19 +:revdate: 2026-05-31 :status: ACTIVE :issue-67: hyperpolymath/standards#67 :issue-68: hyperpolymath/standards#68 +:issue-253: hyperpolymath/standards#253 This document is the canonical estate-wide policy for JavaScript/TypeScript runtimes and package management. It is referenced by `governance-reusable.yml` (enforcement) and the canonical template `.gitignore` files (rsr-template-repo, v3-templater). -See also: `scripts/purge-node-modules.sh` (remediation utility). +See also: `scripts/purge-node-modules.sh` (remediation utility) and +`docs/migrations/npm-to-deno-template/MIGRATION.md` (per-repo recipe). + +[NOTE] +==== +*npm → Deno migration: substantially complete 2026-05-31.* Umbrella +{issue-253} and the seven STEP issues (#261/#262/#265/#268/#270/#273/#275) +all closed. ~22 physical-migration PRs landed in STEP 3 plus +named-bucket audits closed `SUBSTANTIALLY DONE` for STEPS 4/5/6/7. +Residual longtail repos (`flat-mate`, `accessibility-everywhere`, +`kaldor-iiot`, `excel-economic-numbers-tool`, `ubicity`, a handful of +heavier Vite/Vitest/Jest/Express stacks) are tracked as per-repo +follow-ups rather than blocking the umbrella close. The hypatia rule +`cicd_rules/nodejs_detected` remains armed with nine carve-out classes +(see `.claude/CLAUDE.md §npm Exemptions`). +==== == Runtime Hierarchy diff --git a/rhodium-standard-repositories/spec/LANGUAGE-POLICY.adoc b/rhodium-standard-repositories/spec/LANGUAGE-POLICY.adoc index 2f3d7031..43f56035 100644 --- a/rhodium-standard-repositories/spec/LANGUAGE-POLICY.adoc +++ b/rhodium-standard-repositories/spec/LANGUAGE-POLICY.adoc @@ -190,23 +190,30 @@ NOTE: For full rationale and migration guides, see the link:{source-repo}[CCCP r | Deno | Insecure by default. Detection via hypatia `cicd_rules/nodejs_detected` (matches `package-lock.json`) with - `path_allow_prefixes` covering six carve-out classes: - (1) `**/vscode/**` VSCode extension host-required toolchain - (extension toolchain runs under Node; lockfile contractually - required by the host); + `path_allow_prefixes` covering nine carve-out classes (six original + + three added during the migration via hypatia#405): + (1a) `**/vscode/**` VSCode extension host-required toolchain; + (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; (3) `rescript/`, `servers/`, `repos-monorepo/`, `linguist/` upstream forks; (4) `hyperpolymath-archive/**` archived repos; - (5) `**/deps/**`, `**/node_modules/**` vendored package-manager - deps; + (5) `**/deps/**`, `**/node_modules/**`, `**/.lake/**` (Lean4), + `**/office-addin/**`, `**/bindings/{javascript,typescript}/**` + vendored / host-required / consumer-export deps; (6) `**/example/**`, `**/examples/**`, `**/test-fixtures/**`, - `**/fixtures/**` example/test fixtures (demonstrate npm consumer - without making the repo itself an npm consumer). - In-flight migration tracked under hyperpolymath/standards#253 - (172 `package.json` manifests; tracker - `project_estate_npm_to_deno_2026_05_28.md`; STEPS - #261/#262/#265/#268/#270/#273/#275). + `**/fixtures/**` example/test fixtures. + *Migration substantially complete 2026-05-31* under umbrella + hyperpolymath/standards#253: STEPS + #261/#262/#265/#268/#270/#273/#275 all closed; 22+ physical-migration + PRs landed across STEP 3 (smallest-first), the 4/5/6 named-bucket + audits closed `SUBSTANTIALLY DONE` with per-repo follow-up trackers + for the residual longtail (`flat-mate`, `accessibility-everywhere`, + `kaldor-iiot`, `excel-economic-numbers-tool`, `ubicity`, and a + handful of heavier Vite/Vitest/Jest/Express stacks). Tracker: + `project_estate_npm_to_deno_2026_05_28.md`. | *npm/Bun/pnpm/yarn* | Deno @@ -357,7 +364,14 @@ When encountering banned languages: are blocked by hypatia `cicd_rules/typescript_detected` (with `path_allow_prefixes` for documented carve-outs) and the `language-policy.yml` reusable. -3. *Medium-term*: Replace Node/npm with Deno +3. ✅ *Done 2026-05-31*: Replace Node/npm with Deno across the estate + (substantially complete under umbrella hyperpolymath/standards#253; + STEPS #261/#262/#265/#268/#270/#273/#275 closed; ~22 physical-migration + PRs in STEP 3 plus 4/5/6 named-bucket audits each closed + `SUBSTANTIALLY DONE`; longtail repos tracked as per-repo follow-ups + rather than blocking the umbrella close; Layer-1 carve-out classes + extended via hypatia#405 to nine; tracker + `project_estate_npm_to_deno_2026_05_28.md`) 4. ✅ *Done 2026-05-28*: V-lang → Zig migration complete across the estate (16 admin-merged PRs; hypatia detection rule armed) 5. *Long-term*: Rewrite Go/Python in Rust/SPARK; absorb most Ada work into