Skip to content

[campaign #252] STEP 8 — MEGAPORT: idaptik (516, was 1235) + panll (726) batched conversion #279

Description

@hyperpolymath

Part of #252. Blocked by step 7.

Goal

Port the two single-largest repos in the estate: idaptik (1,235 files) + panll (726 files) — together = 1,961 files = ~50% of the entire 3,996-file backlog.

Scale context (from umbrella)

Metric This step Whole campaign
Files 1,961 3,996
% of total 49% 100%
Largest single idaptik 1,235 idaptik 1,235

Per umbrella scale summary, the whole campaign is "multi-month". Realistic share for STEP 8: many sessions, many PRs. Likely 50-150 PRs alone for these two repos combined.

Strategy

  • Per-subsystem batching essential — these repos are too large for whole-repo PRs
  • For idaptik: align with the existing idaptik dlc-reversible AS pilot (PR Wave 2: Nix-mirror retirement (LowLevel.jl…a2ml-rs) #107 merged) — that proved the upstream framework-binding development path. Lean on it.
  • For panll: align with panll panel-clades pivot (ADR-0001 SoT=panel-clades) — coordinate so RS→AS port doesn't conflict with concurrent clades work
  • Per-PR ownership gate (owner=hyperpolymath, isFork=false)
  • Track per-subsystem completion in memory tracker

Cross-references

Acceptance

  • idaptik 1,235 files migrated (across many PRs across many sessions)
  • panll 726 files migrated (coordinated with panel-clades work)
  • Per-subsystem batches landed under per-PR ownership gate
  • Memory tracker updated with multi-month completion track

Sequencing

Blocks: campaign completion. STEP 9 still parallel-runnable.

Activity

  1. hyperpolymath commented on May 30, 2026

    @hyperpolymath
    OwnerAuthor

    STEP 8 — Megaport: progress sweep 2026-05-30.

    Current state vs. issue body (filed 2026-05-28):

    Repo Original Now Δ
    idaptik 1,235 516 −719 (−58%)
    panll 726 726 0
    Total 1,961 1,242 −719 (−37%)

    idaptik progress drivers

    panll standing state

    panll remains at 726 files — no megaport work has started yet. Per memory's standing instruction, panll/.claude/CLAUDE.md is hands-off in sweeps (owner reverted panll#60 on 2026-05-30). The clade-portal subdirectory has 6 files; the bulk (720) lives under src/.

    Update

    Issue body still shows the 1,961 / 1,235 / 726 numbers from 2026-05-28. The 58% idaptik reduction is real and tracks campaign progress. Keeping this STEP OPEN — most of panll + remaining idaptik tail still ahead — but adding this comment as the canonical progress snapshot. Will re-survey when panll work begins or further idaptik PRs land.

    Cross-ref: STEP 3 #267 closed (seed proven via idaptik#107), STEP 4 #269 closed (stdlib substantially done), STEP 1 #260 closed (Layer-1 in via hypatia#391 + standards#285).

  2. changed the title [-][campaign #252] STEP 8 — MEGAPORT: idaptik (1235) + panll (726) batched conversion[/-] [+][campaign #252] STEP 8 — MEGAPORT: idaptik (516, was 1235) + panll (726) batched conversion[/+] on May 30, 2026
  3. hyperpolymath commented on May 31, 2026

    @hyperpolymath
    OwnerAuthor

    STEP 8 — Megaport progress sweep 2026-05-31 AM

    Following on from the 2026-05-30 PM sweep (which moved idaptik 1,235 → 516).
    This session: targeted first-compilable-Mode-A batch + the upstream
    AffineScript stdlib unblock needed to make those compiles real.

    What landed (3 PRs)

    Repo PR Status Effect
    affinescript #505 armed (auto-merge SQUASH) pub-marks 38 documented stdlib fns in string.affine + collections.affine. Unblocks consumers that need string::starts_with, collections::any, etc. — was the resolution blocker.
    idaptik #110 armed Completes migration/shared/PortNames.affine (adds isCoprocessorPort using newly-pub stdlib). First compilable Mode-A file in migration/shared/. Adds parity STATUS.md for all 10 Wave-3 pilot files.
    panll #72 armed Ports 11 panll module-config files (capability-sum + config record + helpers shape) into migration/modules/*.affine. All 11 type-check. 715 LoC of .res ported. First compilable Mode-A batch in panll.

    Current parity counts

    Repo .res source .affine Mode-A (passes affinescript check) .affine Mode-B (design demo, doesn't compile)
    idaptik 509 1 (migration/shared/PortNames.affine) 9 (rest of migration/shared/)
    panll 726 11 (migration/modules/*.affine) 0
    Total 1,235 12 9

    Replacement of .res still pending

    None of the 12 Mode-A .affine files yet replace their .res source in
    the build — both repos still compile src/**/*.res to .res.mjs via the
    root rescript.json. Replacement requires:

    1. AffineScript → ESM codegen for non-stdlib modules. AS has Deno-target
      codegen for stdlib + select consumers; module-tree codegen for arbitrary
      user files is the gap. Tracked AS-side.
    2. Consumer migration — every place that currently imports the
      compiled .res.mjs needs to switch to the .affine-compiled equivalent.
      Mechanical when (1) lands.

    The 12 Mode-A files discharge the design risk for these subsystems —
    when (1) lands, promotion is a one-PR cutover per subsystem, not an
    11-file rewrite.

    What's left structurally

    The 715 remaining .res files in panll (and 509 in idaptik) break
    down into these blocker categories:

    Category Estimate Blocker AS issue
    TEA framework consumers ~350 (panll components/update/view; src/App.res; src/View.res) Needs AS TEA bindings (Tea_App, Tea_Cmd, Tea_Html, Tea_Sub, Tea_Vdom) (none filed yet — propose follow-up)
    Gossamer IPC consumers ~10 (panll subscriptions, clade-portal, RuntimeBridge) Needs AS Gossamer IPC FFI (none filed yet — propose follow-up)
    ReScript JSX components ~126 (panll src/components) AS has different view story (parking pending TEA decision)
    Js.* interop ~50 scattered Needs use deno::{...} or carve-outs partial — Deno.affine landed
    Idaptik src/bindings (Pixi/Motion/PixiSound/PixiUI) 4 UNBLOCKED 2026-05-30 — stdlib/Pixi.affine + Motion + PixiSound + PixiUI all exist next session candidate
    Idaptik src/app (game proper) 215 Depends on the above bindings + cross-file use blocked
    Idaptik idaptik-ums (sub-project) 11 Pixi + Gossamer IPC blocked
    Idaptik vm/lib/ocaml (VM source) 47 Coupled with vm/tests + .res.mjs consumers needs build wiring
    Idaptik vm/wasm 2 UNBLOCKED 2026-05-30 — wasm_export_call shipped (affinescript#467) next session candidate

    Follow-up issues to consider filing

    • AffineScript TEA bindings — stdlib/Tea.affine parallel to existing stdlib/Pixi.affine / Motion.affine / PixiSound.affine / PixiUI.affine. Unblocks the entire panll components / update / view tree (~350 files).
    • AffineScript Gossamer IPC FFI — stdlib/Gossamer.affine extern declarations + Deno-target codegen. Unblocks panll clade-portal (6) + RuntimeBridge / subscriptions (~10), idaptik-ums (11).
    • Estate-wide pub sweep — affinescript io.affine (0/15 pub), math.affine (0/36 pub), option.affine (1/36 pub), result.affine (0/24 pub), testing.affine (0/26 pub) have the same pub gap that governance-reusable: two jobs cannot fail (Code quality + docs; Guix/Nix policy) + redundant trufflehog #505 closed for string + collections. Each is a tiny PR; the batch unblocks ~140 more potential stdlib consumers.
    • AffineScript → ESM codegen for user modules — currently Deno-target codegen covers stdlib + select harness; arbitrary-module codegen is the replacement-of-.res blocker for everything ported in this session.

    Will file these AS-side this session or queue for follow-up.

    Updated count delta

    Metric 2026-05-28 (filing) 2026-05-30 PM 2026-05-31 AM (this)
    idaptik .res 1,235 516 509 (-7 since 05-30 from local survey re-count)
    panll .res 726 726 726
    Mode-A .affine 0 0 12
    Total .res remaining 1,961 1,242 1,235

    Keeping STEP 8 OPEN — most of the bulk still ahead and gated on the
    framework-binding + codegen blockers above. This session set the
    Mode-A path-of-least-resistance baseline (1+11 files, ~715 LoC
    ported, design risk discharged for two subsystem-shapes) and the
    stdlib visibility unblock that makes future ports tractable.

    Cross-refs: affinescript#505, idaptik#110, panll#72.

  4. hyperpolymath commented on Jun 1, 2026

    @hyperpolymath
    OwnerAuthor

    Status update — AS stdlib codegen landed; campaign waypoint shift (2026-06-01) 📌

    For the campaign umbrella tracking here:

    What landed (sourced):

    • affinescript#522 (2026-06-01) — Sqlite.affine codegen foundation; first stdlib extern with full Deno-ESM lowering + tests end-to-end.
    • affinescript#504 (2026-06-01) — 6 Deno-ESM stdlib externs (stat helpers, byte ops, importMetaUrl) + wildcard-let codegen fix; closes 6 of 10 STEP-3 gaps in standards#242.
    • affinescript#463 (2026-05-30) — non-ASCII Unicode escape emit in Deno-ESM.
    • affinescript#421 — stdlib/json v0.3 via hpm-json-rsr Zig FFI.

    What this means for the campaign:

    Action: No new mass-port being kicked off from this post — surfacing the status so campaign waypoints stay accurate. Dependent sub-tickets can re-evaluate parking once they verify their specific blockers are in the "now-closed" set above.

    🤖 Cross-estate AS-status sweep on 2026-06-01.

  5. added
    migrationPorting between languages or toolchains (e.g. -> AffineScript)
    and removed on Aug 26, 2026
  6. hyperpolymath commented on Aug 27, 2026

    @hyperpolymath
    OwnerAuthor

    Re-measured 2026-08-27 — both numbers are zero, and that is bad news, not progress

    target claimed measured
    panll 726 .res 0
    idaptik 516 .res 0 (repo is now metadatastician/IDApTIK, and has no .res or .affine)

    The panll zero was reached by deletion

    panll has 747 .affine — and 726 of them are under 400 bytes, standing 1:1 against the 726 deleted .res. Median size 200 bytes. A complete file, verbatim:

    // SPDX-License-Identifier: MPL-2.0
    // Ported via Harvard Engine bulk-processor
    
    module App;
    
    // TODO: Complete semantic implementation
    

    That is the whole file. There are 726 of them.

    It is not confined to panll

    3,138 of 7,180 .affine files (43%) across 158 repos are stub-shaped with their sources deleted — rescript 1,236, panll 726, developer-ecosystem 208, affinescript 155, ssg-collection 143 of 143, proof-burrower 143.

    Recovery is git-history-only, and nothing is lost — but this campaign's completion metric cannot distinguish a port from a deletion.

    Filed as #664, which asks for a metric that deletion cannot satisfy. Recommend this issue is not closed on its zero counts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    meta:campaignCoordinated multi-repo push with a defined end statemigrationPorting between languages or toolchains (e.g. -> AffineScript)priority:p3Low - nice to havescope:estateAffects many or all repos across the estatestatus:blockedCannot proceed until a dependency clears

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions