Skip to content

[campaign] npm → Deno estate migration (UMBRELLA) #253

@hyperpolymath

Description

@hyperpolymath

Campaign overview

Estate-wide migration of npm/Node.js (package.json runtime deps) to Deno (deno.json imports). Parallel to TS→AS (#239) and ReScript→AS (#252).

State: planning. NO step-issues filed (per operator directive 2026-05-28).

Scope safety: only hyperpolymath/ repos that are non-fork. Per-PR ownership gate mandatory.

Inventory snapshot 2026-05-28

  • 172 package.json files across the estate (post-excludes)
  • Top backlog (highest manifest counts):
Manifests Repo
20 developer-ecosystem
14 ssg-collection
8 burble, affinescript-stdlib-pr, affinescript, accessibility-everywhere
7 standards
6 stapeln
5 reposystem, boj-server
4 flat-mate
3 wordpress-tools, idaptik
2 zotero-tools, typed-wasm, proven, proof-burrower, patallm-gallery, my-lang, kaldor-iiot, julia-the-viper, ephapax, claude-integrations, bofj-kitt
≤1 tail

4-layer architecture

LAYER 1 — POLICY & ENFORCEMENT  PARTIAL
  hypatia :nodejs_detected (matches package-lock.json) exists. Needs:
  - path_allow_prefixes for legit cases (VSCode-extension package.json
    is loadable via Deno-VSCode-host shim; bootstrap shims)
  - rule extension to also flag standalone package.json without
    deno.json present (heuristic)
  - standards LANGUAGE-POLICY.adoc + .claude/CLAUDE.md + language-policy.yml
    parallel-update PRs (same 4-layer mirror pattern as TS/RS)

LAYER 2 — DENO REPLACEMENT SURFACE
  Deno equivalents needed for whatever npm packages each repo uses.
  Per-package decision: (a) direct Deno port (deno.json import map),
  (b) AS binding (if foundational), (c) keep on npm (forced-Node case).
  oikos Phase 5 already established the migration pattern (5 PRs merged).

LAYER 3 — PHYSICAL REPO MIGRATIONS  (~172 manifests)
  Per-manifest: replace package.json with deno.json import map, port
  scripts to tasks, drop node_modules from .gitignore exemption etc.
  Some repos have multiple package.json (workspaces, examples). Each is
  a per-PR slice.

LAYER 4 — PARALLEL DEPENDENCY: oikos / Deno-native tooling
  oikos Phase 5 + 5 follow-ups MERGED (per memory). Carry-forward:
  `deno run -A --allow-scripts=npm:rescript npm:rescript@^12.0.0` as
  Deno-native ReScript invocation.

Carve-out classes (to be encoded in hypatia rule)

# Class Pattern Notes
1 VSCode extensions **/editors/vscode/package.json, **/extensions/vscode/package.json VSCode extension manifest IS required by host; ship npm-style
2 bootstrap shims affinescript-deno-test/, affinescript-cli/ Same as TS bootstrap-shim class
3 upstream forks rescript/, servers/, repos-monorepo/, linguist/ Same as TS/RS
4 archived hyperpolymath-archive/** Same
5 vendored deps **/deps/**, **/node_modules/** Same
6 example/test fixtures **/example/**, **/test-fixtures/** Per-repo

Recommended step ordering (DEFERRED)

  1. STEP 1: Layer-1 PR set — hypatia path_allow_prefixes + standards mirror
  2. STEP 2: oikos pattern audit — what's the canonical deno.json shape post Phase 5?
  3. STEP 3: Smallest-first batch (≤2-manifest repos × many)
  4. STEP 4: Mid-tier (3-7 manifests × ~10 repos)
  5. STEP 5: Larger (8+ manifests × ~6 repos)
  6. STEP 6: developer-ecosystem (20 manifests, scattered sub-projects)
  7. STEP 7: workspace-style repos with multiple package.json (developer-ecosystem, ssg-collection)

Cross-references

Scale summary

172 manifests across the estate. Lower-bound PR count: ~100 (some repos have multi-manifest workspaces that consolidate). Sessions: 5-10. Significantly smaller than RS or TS in scope but touches more infrastructure (CI workflows, build chains).

Metadata

Metadata

Assignees

No one assigned

    Labels

    campaignMulti-PR multi-session estate campaigndocumentationImprovements or additions to documentationnpm-to-denonpm→Deno migration campaign 2026-05-30policyPolicy / governance workumbrellaUmbrella issue tracking multiple sub-issues

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions