Skip to content

[campaign #254] STEP 3 — PORTS: physical migration of "portable now" subset, smallest-first #271

@hyperpolymath

Description

@hyperpolymath

Part of #254. Blocked by step 2.

Goal

Execute the physical .js/.jsx.affine ports for every file STEP 2 placed in the portable now bucket. Smallest-first to bank throughput and validate per-idiom-cluster patterns before tackling the long tail.

Expected idiom clusters (from #254 LAYER 3)

Many JS files likely fall in 1-2 idiom clusters; STEP 2's bucket comment should confirm:

  • Deno CLI scripts (small, .ts-equivalent surface)
  • VSCode extension JS (covered by Vscode.affine 55 fns)
  • MCP glue (likely stays as JS — async stdio loop, protocol) — should NOT appear in this bucket; if it does, re-triage
  • WebExtension scripts (blocked on host-API bindings, same as TS/RS) — should NOT appear in this bucket

If any of the "should NOT appear" categories show up in portable now, treat as a triage-tool bug and fix STEP 2 before porting them.

Top backlog candidates (informational, from #254 inventory)

The biggest backlog buckets are boj-server (144), panll (142), stapeln (105), proven-servers/idaptik (103). Smallest-first means starting elsewhere; the per-repo totals here are for scope tracking, not port order. STEP 2's output is the actual port order.

Acceptance

  • Every file in STEP 2's portable now bucket is either:
    • Ported (.affine builds, original .js/.jsx removed, downstream build wiring updated)
    • Re-classified (moved out of portable now, with STEP 2's triage tool updated to reflect the rule that placed it correctly)
  • Per-PR ownership gate on every PR (the gh repo view ... --json owner,isFork gate)
  • PRs grouped by repo, smallest-files-first within each repo
  • Carve-out classes from STEP 1 respected (no port attempts on vscode/**, **/deps/**, etc. — those belong to STEPs 4-5 or are permanent residue)
  • Updated bucket-count comment on [campaign] Unnecessarily-JavaScript → AffineScript estate migration (UMBRELLA) #254 once this step's PRs land (delta vs STEP 2's initial counts)

Sequencing

Blocks: nothing — but feeds the STEP 5 re-triage with empirical patterns.
Blocked by: STEP 2 (without the portable now bucket, this step has no scope).

Metadata

Metadata

Assignees

No one assigned

    Labels

    campaignMulti-PR multi-session estate campaignjs-to-affinescriptTracks the Unnecessarily-JavaScript → AffineScript migration campaign (umbrella #254)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions