Skip to content

policy: AffineScript is primary, ReScript is banned — finish the migration - #91

Merged
hyperpolymath merged 1 commit into
mainfrom
fix/rescript-is-banned-affinescript-is-primary
Aug 28, 2026
Merged

policy: AffineScript is primary, ReScript is banned — finish the migration#91
hyperpolymath merged 1 commit into
mainfrom
fix/rescript-is-banned-affinescript-is-primary

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

.claude/CLAUDE.md was left half-migrated, and #90 landed the Bun/Deno swap on top of it. main now reads:

| **ReScript** | Primary application code | Compiles to JS, type-safe |
| **Bun**      | JS runtime & package management (tier 1) | ... |

A file that bans Deno and mandates Bun, while still directing new application code at a language canon bans.

It contradicted itself, not just canon

Line 9 called ReScript primary. Twelve lines below, line 16 already said JavaScript is for use "Only where AffineScript cannot", and line 20 described OCaml as the "AffineScript compiler". Half the file had migrated and half had not.

That is what made it survive the fleet sweep: a half-migrated file looks current, because the modern half matches. #90 correctly changed only the runtime axis and left the language axis alone, so the contradiction rode straight through to main.

Aligned with ratified canon — ReScript banned, destination AffineScript

Line Was Now
Primary application code ReScript AffineScript
Banned table TypeScript | ReScript TypeScript | AffineScript + a ReScript | AffineScript row
Python replacement Julia/Rust/ReScript Julia/Rust/AffineScript
Tauri web UI ReScript AffineScript
Enforcement Rule 5 "ReScript for apps" "AffineScript for apps"

The last two were found only by grepping every remaining mention after the table edits. Stopping at the tables would have left ReScript prescribed as a destination in the prose — which is precisely how the file reached this state. ReScript now appears exactly once, as a banned row.

Not touched

Enforcement Rule 1. standards#655 records that collision as not resolvable unilaterally.

🤖 Generated with Claude Code

…ation

This file was left half-migrated. It named **ReScript** as "Primary application
code" while, twelve lines below, already saying JavaScript is for use "Only
where AffineScript cannot" and describing OCaml as the "AffineScript compiler".
The file contradicted itself about which language it targets.

The Bun/Deno PR (#90) swapped the runtime and correctly left the language axis
alone, so the contradiction survived onto main: a file that bans Deno and
mandates Bun, while still directing new application code at a language canon
bans.

Aligned with ratified canon — ReScript is banned, destination AffineScript:

  - Primary application code:  ReScript -> AffineScript
  - Banned table:  `TypeScript | ReScript` -> `TypeScript | AffineScript`,
    and ReScript added as its own banned row
  - `Python | Julia/Rust/ReScript` -> `Julia/Rust/AffineScript`
  - Tauri web UI: ReScript -> AffineScript
  - Enforcement Rule 5: "ReScript for apps" -> "AffineScript for apps"

The last two were caught by grepping for every remaining mention after the table
edits; stopping at the tables would have left ReScript prescribed as a
destination in the prose. ReScript now appears exactly once, as a banned row.

Enforcement Rule 1 is untouched: standards#655 records that collision as not
resolvable unilaterally.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 27, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: f4bf400f-55be-43eb-a9fa-0b10cff2327b

📥 Commits

Reviewing files that changed from the base of the PR and between 46aa864 and f0743cf.

📒 Files selected for processing (1)
  • .claude/CLAUDE.md

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.

📜 Recent review details
⏰ Context from checks skipped due to timeout. (20)
  • GitHub Check: Gitar
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: governance / Security policy checks
  • GitHub Check: governance / Workflow security linter
  • GitHub Check: governance / Language / package anti-pattern policy
  • GitHub Check: governance / Licence consistency
  • GitHub Check: governance / Guix primary / Nix fallback policy
  • GitHub Check: governance / Trusted-base reduction policy
  • GitHub Check: governance / Check Workflow Staleness
  • GitHub Check: governance / Well-Known (RFC 9116 + RSR)
  • GitHub Check: governance / Code quality + docs
  • GitHub Check: scan / rust-secrets
  • GitHub Check: scan / gitleaks
  • GitHub Check: scan / shell-secrets
  • GitHub Check: hypatia / Hypatia Neurosymbolic Analysis
  • GitHub Check: Analyze (javascript-typescript)
  • GitHub Check: Security Scan
  • GitHub Check: Backend Tests
  • GitHub Check: Analyze (actions)
  • GitHub Check: Frontend Tests
🔇 Additional comments (2)
.claude/CLAUDE.md (2)

27-34: LGTM!

Also applies to: 44-44, 55-55


9-9: 🎯 Functional Correctness

No change required to Line 9.

AffineScript supports a typed-wasm compilation path and a Deno-ESM emitter. The stated output targets are valid.


📝 Walkthrough

Summary by CodeRabbit

  • Documentation
    • Updated project guidance to identify AffineScript as the primary application language.
    • Revised allowed-tool references, language replacement guidance, Tauri mobile instructions, and Python fallback guidance to align with AffineScript.

Walkthrough

The project guidance changes its primary application language from ReScript to AffineScript. It updates language replacement rules, Tauri mobile guidance, and the “No Python anywhere” rule.

Changes

Application language guidance

Layer / File(s) Summary
Update application language references
.claude/CLAUDE.md
The guidance uses AffineScript as the primary application language, replacement option, Tauri mobile web UI language, and alternative for the “No Python anywhere” rule.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk: ⚪ Minimal · up to f0743

This localized documentation update aligns the migration guidance with AffineScript as the primary language and introduces no actionable merge-blocking risk beyond normal checks and review.

Suggested reviewers: metadatastician

Poem

A rabbit checks the language guide,
AffineScript hops inside.
ReScript leaves the table neat,
Tauri’s web UI finds its beat.
Python rules now point anew,
With crisp instructions hopping through.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarises the main change: completing the migration to AffineScript and banning ReScript.
Description check ✅ Passed The description directly explains the incomplete migration, the required replacements, and the unchanged Enforcement Rule 1.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sonarqubecloud

Copy link
Copy Markdown

@gitar-bot

gitar-bot Bot commented Aug 27, 2026

Copy link
Copy Markdown

Important

You are using the Gitar free plan. Upgrade to unlock code review, CI analysis, auto-apply, custom automations, and more.

Gitar

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

AI Reviewer: first review requested successfully. AI can make mistakes. Always validate suggestions.

Run reviewer

TIP This summary will be updated as you push new changes.

@codacy-production codacy-production Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

The PR successfully updates the core tables and specific sections of the .claude/CLAUDE.md policy to reflect the transition from ReScript to AffineScript. According to quality analysis, the changes are up to standards. However, a minor omission was identified in the 'Enforcement Rules' section where ReScript should be explicitly listed alongside TypeScript to ensure the migration is fully enforced during automated code generation and refactoring.

TIP Improve review quality by adding custom instructions
TIP How was this review? Give us feedback

Comment thread .claude/CLAUDE.md
|--------|-------------|
| TypeScript | ReScript |
| TypeScript | AffineScript |
| ReScript | AffineScript |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 MEDIUM RISK

Suggestion: The Enforcement Rules should be updated to reflect that ReScript is now banned. While the banned table is correct, Rule 1 (Line 51 in context) still only mentions TypeScript. It should be expanded to include ReScript to ensure consistent migration behavior. Suggestion: Update the rule to: "1. No new TypeScript or ReScript files - Convert existing TS/ReScript to AffineScript"

@hyperpolymath
hyperpolymath merged commit 4f8c811 into main Aug 28, 2026
25 of 28 checks passed
@hyperpolymath
hyperpolymath deleted the fix/rescript-is-banned-affinescript-is-primary branch August 28, 2026 00:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant