Skip to content

[campaign #254] STEP 5 — RE-TRIAGE: iterate post-binding-fills, drive backlog to permanent residue #277

Description

@hyperpolymath

Part of #254. Blocked by step 4.

Goal

Re-run STEP 2's triage tool after each significant batch of bindings lands in STEP 4. Move newly-portable files into the active port queue (feeding STEP 3 in a second / third / Nth wave), and reclassify files that turned out to be permanent JS-residue. Iterate until the backlog is either ported or accounted-for as documented carve-outs.

Iteration pattern

  1. STEP 4 lands a batch of N bindings.
  2. Re-run STEP 2's tool with the same exclude-list as the initial enumeration.
  3. Diff the bucket counts vs the prior comment on [campaign] Unnecessarily-JavaScript → AffineScript estate migration (UMBRELLA) #254 — publish the delta as a fresh [campaign] Unnecessarily-JavaScript → AffineScript estate migration (UMBRELLA) #254 comment.
  4. Files that moved blocked on binding X → portable now feed a new wave of STEP 3 ports.
  5. Files that triage now classifies as keep as JS (because the binding-gap analysis confirmed a permanent-residue surface) get codified into STEP 1's carve-out classes via a hypatia-rule update.
  6. Repeat until the blocked on binding X bucket converges to "permanent residue or out-of-scope".

Acceptance

  • At least one re-triage cycle published as a [campaign] Unnecessarily-JavaScript → AffineScript estate migration (UMBRELLA) #254 comment after STEP 4's first batch
  • Subsequent cycles published after each material STEP 4 batch (operator decides cadence)
  • Convergence criterion documented: campaign considered "complete" when:
    • portable now bucket is empty (all ported via STEP 3 waves)
    • blocked on binding X bucket is empty OR every remaining entry has an open AS top-50 roadmap issue tracking the missing binding
    • keep as JS bucket is fully covered by STEP 1's carve-out rules (no unexplained residue)
  • Final closeout comment on [campaign] Unnecessarily-JavaScript → AffineScript estate migration (UMBRELLA) #254 records the realistic PR count (umbrella estimates 50-150 — refine with actual)
  • Per-PR ownership gate on any standards/hypatia PRs that update carve-out classes during this step

Sequencing

Blocks: campaign closeout. Once this step's convergence criterion is met, #254 can close.
Blocked by: STEP 4 (binding-fills are the input that makes re-triage meaningful). Also implicitly blocked by STEP 3 (each port wave shrinks the portable now bucket; without progress there, re-triage is mechanical only).

Activity

  1. hyperpolymath commented on May 30, 2026

    @hyperpolymath
    OwnerAuthor

    📚 Documentation landed in PR #314 — docs/migrations/js-to-affinescript/README.adoc §STEP 5 captures:

    • Iteration pattern (6-step loop: STEP 4 batch → re-run STEP 2 → delta-publish → wave to STEP 3 → carve-out updates → repeat)
    • Convergence criterion (all 3 buckets accounted for)
    • Final closeout records realistic PR count

    Still owed: the re-triage cycles themselves. Stays open through campaign duration; closes alongside #254 at convergence.

  2. hyperpolymath commented on May 30, 2026

    @hyperpolymath
    OwnerAuthor

    Closing per the 2026-05-30 documentation pass — the canonical campaign doc landed in PR #314. Implementation work (Hypatia rule, classifier tool, ports, bindings, re-triage cycles) can be tracked in fresh issues or referenced from the doc as it proceeds.

  3. added
    migrationPorting between languages or toolchains (e.g. -> AffineScript)
    and removed on Aug 26, 2026
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)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions