Skip to content

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

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

    documentationDocs, prose, diagrams, READMEs, ADRsgovernancePolicy, rulesets, standards, compliance, and their enforcementmeta:campaignCoordinated multi-repo push with a defined end statemeta:umbrellaParent issue aggregating child issues

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions