Skip to content

Migrate reposystem ReScript → AffineScript (213 .res files) #93

@hyperpolymath

Description

@hyperpolymath

Tracking issue for porting reposystem's ReScript to AffineScript (ReScript is banned-in-new-code per CLAUDE.md, 2026-04-30).

Current state

  • 213 .res files: 75 first-party (gui/src, recon-silly-ation, forge-ops/src, tools/dispatcher, tools/hud) + 138 vendored (gui/lib/rescript-webapi/).
  • The governance cicd_rules/banned_language_file gate flags all of them. They are baselined in .hypatia-ignore (PR docs: Phase-2 standalone-vs-local verification + ReScript governance baseline #91) so CI is green while this migration proceeds. New .res files are not baselined and remain blocked.

Evidence this is a human effort (not a mechanical transpile)

Ran AffineScript's own res-to-affine --partial over the 75 first-party files with a locally-built toolchain:

  • 0 / 75 compile; 0 declarations auto-translated; 397 TODO holes; 151 markers (144 untyped-exception, 7 raw-js).
  • WIP skeletons seeded in PR for branch claude/affinescript-migration-wip (migration/affinescript/).

Plan

  • Port first-party modules, filling TODO holes (untyped exceptions → Result/Validation; %%raw/@val external → typed extern/effects; module-load side effects → explicit registration), type-checking each with affinescript check.
  • Replace vendored gui/lib/rescript-webapi/ with AffineScript's native affinescript-dom (do not hand-port the binding library).
  • As each module lands and type-checks, delete its .res and remove its .hypatia-ignore line.
  • When the last .res is gone, delete .hypatia-ignore's ReScript section.

Upstream: affinescript#488 (partial-port mode). Methodology: affinescript repo tools/res-to-affine/CORPUS-RUN.md.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions