Skip to content

Commit 72a62c2

Browse files
docs(estate): #229 ledger — record-sigil correction + string ++ + 3 ports done (Refs #229) (#259)
From actually doing the 3 confirmed quick-win ports (git-scripts PR#9, game-server-admin PR#14, invariant-path PR#4 — each oracle-validated "Type checking passed" on main): 1. CORRECTION: the record sigil `#{` is *strictly expression-literal-only*. The earlier row's "applies to record patterns in match too" was WRONG (oracle: `#{`-pattern parse-errors; `{ }`-pattern passes). Record patterns and struct/enum/type decl bodies stay `{ }`. Codemod is standalone-`{`-then-`field:` → `#{`, not pattern/decl. 2. NEW Tier-1 construct: ReScript string `+` → AffineScript `++` (concat is `++` per stdlib/string.affine:98; `+` is numeric — left a Unify(String,Int) *beneath* the parse wall on 2 of the 3 files). Another layered RS-ism the text-scanner cannot see — reinforces the lower-bound-triage warning. 3. Per-repo plan item 1 marked DONE with PR refs. docs-only; gate unaffected by construction. Refs #229. Co-authored-by: hyperpolymath <hyperpolymath@users.noreply.github.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 367a7b0 commit 72a62c2

1 file changed

Lines changed: 25 additions & 14 deletions

File tree

docs/RESCRIPT-ELIMINATION.adoc

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -131,15 +131,24 @@ Every target form carries its grounding citation. Four tiers.
131131
|===
132132
|ReScript |AffineScript |Grounding
133133

134-
|*expression-/pattern-position record literal* `{ f: v }` → `#{ f: v }`;
135-
typed `T { f: v }` → `T #{ f: v }` |the *record sigil* `#{…}` |*The
136-
dominant estate blocker — and NOT in #229's named construct set.*
137-
`docs/spec.md:414-421` prescribes exactly this rewrite ("rewrite each
138-
expression-position record literal `{`→`#{`; leave struct/type declaration
139-
bodies"); examples `spec.md:901,1320`. Oracle-verified: bare `{x:1}` /
140-
`M{x:1}` / `M(x:1)` all parse-error; `Type #{…}` is the form. Applies to
141-
record *patterns* in `match` too. Position-aware codemod (expr/pattern vs
142-
decl), *not* naive regex.
134+
|*expression-position* record literal `{ f: v }` → `#{ f: v }` |the
135+
*record sigil* `#{…}` |*The dominant estate blocker — and NOT in #229's
136+
named construct set.* `docs/spec.md:414-421` prescribes exactly this
137+
rewrite ("rewrite each *expression-position* record literal `{`→`#{`;
138+
leave struct/type declaration bodies"); examples `spec.md:901,1320`.
139+
Oracle-verified (port-proven): bare `{x:1}` expr-literal parse-errors,
140+
`#{x:1}` passes. *Strictly expression-literal-only* — record *patterns*
141+
in `match` (`{ a: x } =>`) and `struct`/`enum`/`type` decl bodies stay
142+
`{ }` (oracle: `#{`-pattern parse-errors, `{ }`-pattern passes; earlier
143+
"applies to patterns" claim was wrong, corrected from doing the ports).
144+
Position-aware codemod (standalone-`{`-then-`field:` → `#{`), *not* naive
145+
regex; record patterns/decls untouched.
146+
|ReScript string `+` → `++` |`++` |Concat is `++` (`stdlib/string.affine:98`
147+
`a ++ b`); `+` is numeric — `"x" + s` left a `Unify(String,Int)` *beneath*
148+
the parse wall. Oracle-verified: `"a" ++ "b"` passes, `"a" + "b"` →
149+
`String/Int`. String-literal-adjacent only (numeric `+`/`-` untouched).
150+
*Another layered RS-ism the text-scanner cannot see* — found by
151+
oracle-peeling the quick-win ports.
143152
|`List(X)` |`[X]` |list type is `[T]`; oracle-verified `List(Int)`
144153
parse-errors, `[Int]` passes. `stdlib/collections.affine`,
145154
`stdlib/prelude.affine`
@@ -231,11 +240,13 @@ hands-off confirm before touching*: policy hands-off is the ReScript
231240
confirm per repo it is an intended AffineScript target, not a deliberate
232241
interop artefact (burble's standing caveat), before removal.
233242

234-
. *Smallest non-coupled (Tier-1, layered — not trivial):* `git-scripts`,
235-
`game-server-admin`, `invariant-path` (one file each: `List(X)` *and* the
236-
`#{` record sigil in expr + `match` pattern position; iterative
237-
oracle-peel). `panll` is *excluded* (no listed RS construct — see the
238-
lower-bound-triage warning above).
243+
. *Smallest non-coupled — DONE 2026-05-19:* `git-scripts`
244+
(PR #9), `game-server-admin` (PR #14), `invariant-path` (PR #4). One
245+
file each; layered: `List(X)`→`[X]` + expr record literals `{`→`#{`
246+
(patterns/decls left `{ }`) + ReScript string `+`→`++` (the latter two
247+
oracle-peeled, not scanner-visible). Each oracle-validated "Type
248+
checking passed" on `main`. `panll` *excluded* (no listed RS construct
249+
— scanner FP; see the lower-bound-triage warning).
239250
. *`burble`* (32): Tier-1 mechanical pass first (re-validated), Tier-2
240251
`mutable`/labelled per-case, Tier-3 constructs blocked on ESC-01..03.
241252
. *Small tail:* `standards`, `developer-ecosystem`, `stapeln`,

0 commit comments

Comments
 (0)