Skip to content

Commit 5c5f23b

Browse files
hyperpolymathclaude
andcommitted
policy: ban V-lang/ATS2/Bun, add --integ/--disinteg, Rust means Rust/SPARK
Consolidated policy update from the 2026-04-10 reconciliation session. Five files touched across the language policy, launcher standard, and the comprehensive launcher template. LANGUAGE-POLICY.adoc (rhodium-standard-repositories/spec/): - Bumped to v1.1.0, v1.0.0 freeze lifted. - License header corrected to PMPL-1.0-or-later with proper author attribution (Jonathan D.A. Jewell). - New §Terminology: "Rust" always means "Rust with SPARK integration as the default stance". All references to Rust in hyperpolymath documentation are to be read as Rust/SPARK. - Added to ALLOWED: Zig (FFI + V-lang migration target), Idris2 (sole formal-verification language), Elixir, Haskell. Ada marked (legacy) with Rust/SPARK as the absorption target. - Added to BANNED: V-lang (migrate to Zig), ATS2 (superseded by Idris2 and Rust/SPARK), Bun (ditched after brief consideration; pnpm is the Node fallback), Flutter/Dart, React Native. Python SaltStack exception removed (was already removed 2026-01-03). - New §Amendments recording the full 2026-04-10 change set with rationale. - New §JavaScript / Node Ecosystem Policy: Deno first, pnpm as the Node-runtime fallback, everything else banned. launcher-standard.adoc (docs/UX-standards/): - Added --integ, --disinteg, --help to required modes. - New §System Integration Modes: cross-platform path tables (Linux, macOS, Windows-via-Git-Bash), idempotency rules, what --disinteg removes vs preserves, launcher-copy-not-symlink principle, no-sudo rule. comprehensive-launcher-template.sh (docs/UX-standards/): - Ported the cross-platform --integ / --disinteg implementation from stapeln-launcher.sh so future launchers inherit the pattern. - Added A2ML metadata block template at the top. - Added platform detection (uname -s dispatch to linux/macos/windows). - Added write_linux_desktop_file with 444 permissions per LM-LA-LIFECYCLE and freedesktop icon fallback. .github/workflows/language-policy.yml: - Added V-lang check (via v.mod / vpkg.json — not *.v, because .v collides with Verilog hardware sources). - Added Flutter/Dart check. - Added ATS2 check. .claude/CLAUDE.md: - Added Rust/SPARK terminology note. - Updated ALLOWED tables: Zig, Idris2, Elixir, Haskell added; Ada marked (legacy). - Updated BANNED tables: V-lang, ATS2 added; Bun moved from "allowed fallback" to banned. - Added note that V-lang, ATS2, and Python are enforced by language-policy.yml. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 2776eed commit 5c5f23b

5 files changed

Lines changed: 689 additions & 74 deletions

File tree

.claude/CLAUDE.md

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,42 +17,61 @@ See: https://github.com/hyperpolymath/standards
1717

1818
## Language Policy (Hyperpolymath Standard)
1919

20+
### Terminology note — "Rust" always means "Rust/SPARK"
21+
22+
As of 2026-04-10, the word **Rust** in all hyperpolymath documentation is
23+
shorthand for **Rust with SPARK integration as the default stance**. SPARK
24+
integration is the transition direction — Rust-primary now, with SPARK/Ada
25+
modules called via the standard Idris2-ABI / Zig-FFI pattern for the
26+
correctness-critical parts. New Rust projects should be *designed* to admit
27+
SPARK modules even if they do not yet contain any. See
28+
`spec/LANGUAGE-POLICY.adoc §Terminology` in `rhodium-standard-repositories`
29+
for the canonical statement.
30+
2031
### ALLOWED Languages & Tools
2132

2233
| Language/Tool | Use Case | Notes |
2334
|---------------|----------|-------|
2435
| **ReScript** | Primary application code | Compiles to JS, type-safe |
2536
| **Deno** | Runtime & package management | Replaces Node/npm/bun |
26-
| **Rust** | Performance-critical, systems, WASM | Preferred for CLI tools |
37+
| **Rust/SPARK** | Performance-critical, systems, WASM, CLI tools, safety-critical | "Rust" always means "Rust/SPARK" per terminology note above. Preferred over Ada where reachable. |
38+
| **Zig** | FFI layer (hyperpolymath ABI/FFI standard), memory-safe systems where Rust/SPARK is overkill | Also the migration target for V-lang |
39+
| **Idris2** | Formal verification (sole option) | ATS2 rejected. Proven-library status in `proven` repo. |
2740
| **Tauri 2.0+** | Mobile apps (iOS/Android) | Rust backend + web UI |
2841
| **Dioxus** | Mobile apps (native UI) | Pure Rust, React-like |
2942
| **Gleam** | Backend services | Runs on BEAM or compiles to JS |
43+
| **Elixir** | Backend services, distributed systems | BEAM, Phoenix, OTP |
44+
| **Haskell** | Type-heavy tools, registry validation | Scaffoldia CLI |
3045
| **Bash/POSIX Shell** | Scripts, automation | Keep minimal |
3146
| **JavaScript** | Only where ReScript cannot | MCP protocol glue, Deno APIs |
3247
| **Nickel** | Configuration language | For complex configs |
3348
| **A2ML** | State/meta files | STATE.a2ml, META.a2ml, etc. (TOML-like format) |
3449
| **Julia** | Batch scripts, data processing | Per RSR |
3550
| **OCaml** | AffineScript compiler | Language-specific |
36-
| **Ada** | Safety-critical systems | Where required |
51+
| **Ada** (legacy) | Safety-critical systems where Rust/SPARK is not yet reachable | Rust/SPARK is absorbing most Ada work over time. Do not start new pure-Ada projects unless Rust/SPARK cannot reach. |
3752

3853
### BANNED - Do Not Use
3954

40-
| Banned | Replacement |
41-
|--------|-------------|
42-
| TypeScript | ReScript |
43-
| Node.js | Deno |
44-
| npm | Deno |
45-
| Bun | Deno |
46-
| pnpm/yarn | Deno |
47-
| Go | Rust |
48-
| **Python** | ReScript/Rust |
49-
| Java/Kotlin | Rust/Tauri/Dioxus |
50-
| Swift | Tauri/Dioxus |
51-
| React Native | Tauri/Dioxus |
52-
| Flutter/Dart | Tauri/Dioxus |
53-
| **Makefiles** | Mustfile/justfile |
54-
55-
**NOTE:** Python is fully banned. There are no exceptions (SaltStack exception removed 2026-01-03).
55+
| Banned | Replacement | Notes |
56+
|--------|-------------|-------|
57+
| TypeScript | ReScript | |
58+
| Node.js | Deno | |
59+
| npm | Deno | |
60+
| Bun | Deno | |
61+
| pnpm/yarn | Deno | |
62+
| Go | Rust/SPARK | |
63+
| **Python** | ReScript/Rust/SPARK/Julia | Fully banned, no exceptions (SaltStack exception removed 2026-01-03) |
64+
| Java/Kotlin | Rust/SPARK, Tauri, Dioxus | |
65+
| Swift | Tauri/Dioxus | |
66+
| React Native | Tauri/Dioxus | |
67+
| Flutter/Dart | Tauri/Dioxus | Google lock-in |
68+
| **V-lang** | Zig | Banned 2026-04-10. "Too many things, and V does not live up to it." Detected via `v.mod` / `vpkg.json` (not `.v` files, because that collides with Verilog). Migration is a direction, not a rip-out. |
69+
| **ATS2** | Idris2 (formal), Rust/SPARK (safety-critical operational) | Rejected in favour of Idris2 and Rust/SPARK. |
70+
| **Makefiles** | Mustfile/justfile | |
71+
72+
**NOTE:** Python is fully banned. V-lang is fully banned (2026-04-10). ATS2 is
73+
fully banned in favour of Idris2 + Rust/SPARK. All three bans are enforced by
74+
`.github/workflows/language-policy.yml`.
5675

5776
### Build System
5877

.github/workflows/language-policy.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,46 @@ jobs:
8686
fi
8787
echo "✓ No Swift files found"
8888
89+
- name: Check for V-lang code
90+
run: |
91+
# V-lang is banned as of 2026-04-10. Migration target: Zig.
92+
# We detect by v.mod (V-lang's module manifest) rather than *.v
93+
# extension because .v collides with Verilog hardware sources.
94+
V_MOD_FILES=$(find . -name "v.mod" -not -path "*/node_modules/*" -not -path "*/.git/*" || true)
95+
if [ -n "$V_MOD_FILES" ]; then
96+
echo "::error::V-lang code found (detected via v.mod). V-lang is banned since 2026-04-10. Migrate to Zig."
97+
echo "$V_MOD_FILES"
98+
exit 1
99+
fi
100+
# Also check for vpkg.json (alternative V package manifest)
101+
VPKG_FILES=$(find . -name "vpkg.json" -not -path "*/node_modules/*" -not -path "*/.git/*" || true)
102+
if [ -n "$VPKG_FILES" ]; then
103+
echo "::error::V-lang code found (detected via vpkg.json). V-lang is banned since 2026-04-10. Migrate to Zig."
104+
echo "$VPKG_FILES"
105+
exit 1
106+
fi
107+
echo "✓ No V-lang code found"
108+
109+
- name: Check for Flutter/Dart files
110+
run: |
111+
if find . -name "*.dart" -o -name "pubspec.yaml" | head -1 | grep -q .; then
112+
echo "::error::Flutter/Dart code found. Use Tauri/Dioxus instead (Google lock-in policy)."
113+
find . -name "*.dart" -o -name "pubspec.yaml"
114+
exit 1
115+
fi
116+
echo "✓ No Flutter/Dart code found"
117+
118+
- name: Check for ATS2 files
119+
run: |
120+
# ATS2 is rejected in favour of Idris2 (formal verification) and
121+
# Rust/SPARK (safety-critical operational code). See LANGUAGE-POLICY.adoc §Amendments v1.1.0.
122+
if find . -name "*.dats" -o -name "*.sats" -o -name "*.hats" | head -1 | grep -q .; then
123+
echo "::error::ATS2 files found. Use Idris2 (formal verification) or Rust/SPARK (safety-critical code) instead."
124+
find . -name "*.dats" -o -name "*.sats" -o -name "*.hats"
125+
exit 1
126+
fi
127+
echo "✓ No ATS2 files found"
128+
89129
check-required-files:
90130
name: Check Required Files
91131
runs-on: ubuntu-latest

0 commit comments

Comments
 (0)