Context
A 2026-05-30 estate-wide grep across ~/developer/repos/*/.claude/CLAUDE.md for the stale template row | TypeScript | ReScript | (the BANNED-replacement row that names ReScript as the AffineScript replacement, pre-2026-05-25 policy) returned 100 repos.
This is a documentation slice of the standards#252 ReScript→AffineScript code-migration tracker. The CLAUDE.md files are policy docs that should reflect target state, independent of how far the code migration has progressed in any given repo.
Inventory (100 repos)
| Category |
Count |
Strategy |
template-clone (0 .res files) |
55 |
Safe batch flip — identical 6-line sed substitution |
template-clone-with-stubs (1–4 .res files) |
13 |
Quick spot-check, then flip |
rescript-heavy (≥5 .res files) |
32 |
Per-repo review — panll-style nuance required; many will need migration-trajectory wording or stay as-is |
Survey TSV: ~/Documents/claude-md-survey-2026-05-30.tsv (will be saved on phase kickoff).
Lessons from initial sweep (developer-ecosystem#96/#97, phronesis#33, dotfiles#20, panll#60)
- panll/.claude/CLAUDE.md reverted by owner — the migration-trajectory note pattern wasn't wanted for that repo. Saved as feedback memory: ReScript-heavy repos where local reality dominates need owner judgment per repo, not a template flip.
- GitHub secondary rate limit — ~5 PR creates per 30 min triggers a block. 100 PRs is ~10 hours of throttled creation if done all-at-once.
- Standards-reusable interaction — flipping CLAUDE.md may surface latent anti-pattern violations elsewhere in the repo (cf. dev-eco#96 needing
.hypatia-ignore for vendored emoji-name .res fixtures). Each batch run should be ready for these.
Recommended phased strategy
Phase 1 — 55 template-clones (safe-flip)
Identical 6-line substitution per file (already validated on dev-eco#96/#97):
```
ReScript | Primary application code | Compiles to JS, type-safe
→ AffineScript | Primary application code | Affine-typed, compiles to typed-wasm or Deno-ESM
Only where ReScript cannot → Only where AffineScript cannot
| TypeScript | ReScript | → | TypeScript | AffineScript |
Web UI (ReScript) → Web UI (AffineScript)
Convert existing TS to ReScript → Convert existing TS to AffineScript
ReScript for apps → AffineScript for apps
```
Execution: subagent fan-out, 5 PRs per 30-min window, ~5.5 hours total throttled. All single-file docs PRs, GPG-signed, auto-merge.
Phase 2 — 13 template-clone-with-stubs (probably-safe)
Same 6-line sed but with a per-repo git ls-files '*.res' spot-check first to confirm the .res files are either test fixtures or one-off stubs (not load-bearing source).
Phase 3 — 32 rescript-heavy (per-repo review)
These need owner-shaped wording (or skip-list inclusion). Examples from initial survey:
kaldor-iiot (49 .res), patallm-gallery (38), svalinn (32), preference-injector (30), ambientops (28), grim-repo (27)
repos-monorepo (12707 — almost certainly the vendored rescript-compiler counted; needs disambiguation before any action)
Default action: no edit until per-repo decision recorded here. Mirrors the panll precedent.
Phase 1 candidates list (55)
- anvomidav
- bebop-ffi
- boinc-boinc
- branch-newspaper
- candy-crash
- casket-ssg
- cccp
- checky-monkey
- chimichanga
- conative-gating
- conflow
- defiant
- docudactyl
- echidnabot
- eclexia
- explicit-trust-plane
- feedback-o-tron
- heterogenous-mobile-computing
- http-capability-gateway
- hybrid-automation-router
- im-docs
- januskey
- laminar
- megadog
- modshells
- neural-foundations
- neurophone
- nextgen-languages
- oblibeny
- palimpsest-plasma
- php-aegis
- polysafe-gitfixer
- pow-the-game
- project-wharf
- proof-of-work
- reasonably-good-token-vault
- refugia
- resource-record-fluctuator
- robodog-ecm
- robot-vacuum-cleaner
- rpa-elysium
- rrecord-verity
- sanctify-php
- scripts
- seamstress
- snapcreate
- thejeffparadox
- thunderbird-template-reloaded
- tma-mark2
- tree-navigator
- universal-chat-extractor
- universal-language-server-plugin
- universal-project-manager
- v3-templater
- zerostep
Phase 2 candidates list (13)
- affinescript-stdlib-pr (1 .res files)
- anamnesis (4 .res files)
- befunge93-vault-cracker (1 .res files)
- blue-screen-of-app (2 .res files)
- bofig (2 .res files)
- bunsenite (3 .res files)
- maa-framework (1 .res files)
- palimpsest-license (1 .res files)
- qubes-sdp (1 .res files)
- safe-brute-force (1 .res files)
- volumod (3 .res files)
- voyage-enterprise-decision-system (4 .res files)
- wokelang (2 .res files)
Phase 3 candidates list (32 — needs per-repo decision)
- academic-workflow-suite (9 .res files)
- accessibility-everywhere (14 .res files)
- ambientops (28 .res files)
- civic-connect (5 .res files)
- coq-jr (7 .res files)
- dicti0nary-attack (8 .res files)
- dotmatrix-fileprinter (8 .res files)
- double-track-browser (10 .res files)
- empty-linter (16 .res files)
- excel-economic-numbers-tool (14 .res files)
- fireflag (7 .res files)
- grim-repo (27 .res files)
- julia-the-viper (5 .res files)
- kaldor-iiot (49 .res files)
- laniakea (7 .res files)
- misinformation-defence-platform (13 .res files)
- my-lang (9 .res files)
- nafa-app (8 .res files)
- network-ambulance (5 .res files)
- patallm-gallery (38 .res files)
- phantom-metal-taste (5 .res files)
- polyglot-i18n (11 .res files)
- poly-k8s-mcp (5 .res files)
- poly-observability-mcp (6 .res files)
- preference-injector (30 .res files)
- repos-monorepo (12707 .res files)
- social-media-polygraph (5 .res files)
- supernorma (12 .res files)
- svalinn (32 .res files)
- ubicity (9 .res files)
- valence-shell (6 .res files)
- vcs-ircd (5 .res files)
Owner decision needed
Pick one:
- (a) Approve Phase 1 fanout now → I throttle 55 single-purpose PRs over ~5.5 hours, batch under this issue, report per-wave.
- (b) Approve Phase 1 + Phase 2 now (68 PRs over ~7 hours) → same with quick
.res-content spot-checks for Phase 2.
- (c) Park this — the immediate sweep (dotfiles, phronesis, dev-eco) is enough for now. Reopen when bandwidth allows.
- (d) Different cut — e.g., "do the 10 most-active repos only" or "do Phase 1 minus forks".
For Phase 3 (rescript-heavy) I'll wait for explicit per-repo direction regardless.
Refs #252
Refs #239
Context
A 2026-05-30 estate-wide grep across
~/developer/repos/*/.claude/CLAUDE.mdfor the stale template row| TypeScript | ReScript |(the BANNED-replacement row that names ReScript as the AffineScript replacement, pre-2026-05-25 policy) returned 100 repos.This is a documentation slice of the standards#252 ReScript→AffineScript code-migration tracker. The CLAUDE.md files are policy docs that should reflect target state, independent of how far the code migration has progressed in any given repo.
Inventory (100 repos)
.resfiles)sedsubstitution.resfiles).resfiles)Survey TSV:
~/Documents/claude-md-survey-2026-05-30.tsv(will be saved on phase kickoff).Lessons from initial sweep (
developer-ecosystem#96/#97,phronesis#33,dotfiles#20,panll#60).hypatia-ignorefor vendored emoji-name.resfixtures). Each batch run should be ready for these.Recommended phased strategy
Phase 1 — 55 template-clones (safe-flip)
Identical 6-line substitution per file (already validated on dev-eco#96/#97):
```
ReScript | Primary application code | Compiles to JS, type-safe
→ AffineScript | Primary application code | Affine-typed, compiles to typed-wasm or Deno-ESM
Only where ReScript cannot → Only where AffineScript cannot
| TypeScript | ReScript | → | TypeScript | AffineScript |
Web UI (ReScript) → Web UI (AffineScript)
Convert existing TS to ReScript → Convert existing TS to AffineScript
ReScript for apps → AffineScript for apps
```
Execution: subagent fan-out, 5 PRs per 30-min window, ~5.5 hours total throttled. All single-file docs PRs, GPG-signed, auto-merge.
Phase 2 — 13 template-clone-with-stubs (probably-safe)
Same 6-line sed but with a per-repo
git ls-files '*.res'spot-check first to confirm the.resfiles are either test fixtures or one-off stubs (not load-bearing source).Phase 3 — 32 rescript-heavy (per-repo review)
These need owner-shaped wording (or skip-list inclusion). Examples from initial survey:
kaldor-iiot(49.res),patallm-gallery(38),svalinn(32),preference-injector(30),ambientops(28),grim-repo(27)repos-monorepo(12707 — almost certainly the vendored rescript-compiler counted; needs disambiguation before any action)Default action: no edit until per-repo decision recorded here. Mirrors the
panllprecedent.Phase 1 candidates list (55)
Phase 2 candidates list (13)
Phase 3 candidates list (32 — needs per-repo decision)
Owner decision needed
Pick one:
.res-content spot-checks for Phase 2.For Phase 3 (rescript-heavy) I'll wait for explicit per-repo direction regardless.
Refs #252
Refs #239