|
| 1 | +// SPDX-License-Identifier: AGPL-3.0-or-later |
| 2 | +// SPDX-FileCopyrightText: 2025-2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> |
| 3 | += Session overview — idaptik migration corpus + string/float walls (2026-06-14) |
| 4 | +:toc: macro |
| 5 | + |
| 6 | +toc::[] |
| 7 | + |
| 8 | +This note consolidates one session's work so the repo carries a single honest |
| 9 | +record. Per-area detail lives in the linked evidence docs. |
| 10 | + |
| 11 | +== What was delivered (all merged to `main`) |
| 12 | + |
| 13 | +[cols="2,4,1",options="header"] |
| 14 | +|=== |
| 15 | +| Area | Summary | PRs |
| 16 | +| Migration corpus |
| 17 | +| Exhaustive sweep + classification of the idaptik logic corpus into AffineScript |
| 18 | + `Int(...)->Int` "brains" (compile -> differential parity vs an independent JS |
| 19 | + oracle -> assail). **62 -> 94 brains.** |
| 20 | +| #584–#591 |
| 21 | +| String wall |
| 22 | +| `==`/`!=` and `<`/`<=`/`>`/`>=` on `String` lowered to a *pointer* compare; now |
| 23 | + byte-wise value / lexicographic compares via a type-directed elaboration |
| 24 | + (`ExprStringEq` / `ExprStringRel`). |
| 25 | +| #587, #588 |
| 26 | +| String-wall cleanup + test harness |
| 27 | +| Hardened the dead `OpConcat` placeholder; extended affine-parity to pass |
| 28 | + **String** args (and **Float** via f64). Demo proves runtime-string compares. |
| 29 | +| #592 |
| 30 | +| Float wall |
| 31 | +| `Float` binops lowered i32 ops on f64 operands (invalid wasm); now the f64 |
| 32 | + family + f64 params/results/typed-locals (`ExprFloatBinary`). |
| 33 | +| #593 |
| 34 | +|=== |
| 35 | + |
| 36 | +== Honest scope — what "migrated" does and does NOT mean |
| 37 | + |
| 38 | +* *Exhaustively classified, yes.* Every non-test idaptik `.res` source file is |
| 39 | + accounted for: ~94 new brains, ~88 already-migrated (earlier clusters), ~195 |
| 40 | + documented `NO_NEW_BRAINS` host-side senses (render-glue, FFI shims, |
| 41 | + string/JSON/wire cores, orchestration). The 195 *stay ReScript* — they have no |
| 42 | + separable integer/float brain. |
| 43 | +* *Demonstration corpus, NOT the game.* The 94 brains live in |
| 44 | + `proposals/idaptik/migrated/` as a proof-of-pattern + compiler stress-test. |
| 45 | + *The idaptik game itself is not rewritten* — it still runs ReScript; the wasm |
| 46 | + brains are not wired back in (host bindings + `.res`-consumer replacement is a |
| 47 | + separate, larger downstream effort). |
| 48 | +* *Float tier newly unblocked, not yet swept.* The float wall makes the ~12 |
| 49 | + float-domain modules that were `NO_NEW_BRAINS` *only* for the integer-only ABI |
| 50 | + now compilable. They have NOT been re-swept — that is the obvious next wave. |
| 51 | + |
| 52 | +== Compiler follow-ons (open) |
| 53 | + |
| 54 | +* *Float unary negation* (`-x`) still routes through `gen_unop` (i32). |
| 55 | +* *Internal calls passing `Float` args* — call-instruction type builders still |
| 56 | + assume i32 args (external entry points unaffected). |
| 57 | +* *Soundness items remain* (not attempted this session): `#554` use-after-move |
| 58 | + (Polonius residual `#553`), `#555` `handle` is a feature gap (its silent |
| 59 | + mis-lowering is already a loud error), `#556` async sync-fallback, `#558`/`#559`. |
| 60 | + |
| 61 | +== Linked evidence |
| 62 | + |
| 63 | +* Migration: `proposals/idaptik/migrated/EVIDENCE-C13-logic-sweep.adoc`, |
| 64 | + `…/EVIDENCE-C14-sense-sweep.adoc`, `…/EVIDENCE-C15-stragglers.adoc` |
| 65 | + (per-file disposition + the corpus capstone). |
| 66 | +* String wall: `proposals/EVIDENCE-stringwall-slices9-10.adoc` (+ slices 1–8 in |
| 67 | + the sibling `EVIDENCE-stringwall-slice{1..7}` / `DESIGN-string-concat`). |
| 68 | +* Float wall: `proposals/EVIDENCE-float-wall-finding.adoc` (finding + fix shape), |
| 69 | + `proposals/EVIDENCE-float-wall-implementation.adoc` (the implementation). |
0 commit comments