Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ project metadata (a2ml is TOML-flavoured, not Guile Scheme):
| Banned | Replacement |
|--------|-------------|
| TypeScript | AffineScript |
| ReScript | AffineScript |
| AffineScript | AffineScript |
| Node.js | Deno |
| npm | Deno |
| Bun | Deno |
Expand All @@ -63,7 +63,7 @@ Both are FOSS with independent governance (no Big Tech).

### Enforcement Rules

1. **No new TypeScript or ReScript files** - Use AffineScript; meaningfully migrate existing TS/JS to AffineScript when touched (per-language `examples/` references may stay)
1. **No new TypeScript or AffineScript files** - Use AffineScript; meaningfully migrate existing TS/JS to AffineScript when touched (per-language `examples/` references may stay)
2. **No package.json for runtime deps** - Use deno.json imports
3. **No node_modules in production** - Deno caches deps automatically
4. **No Go code** - Use Rust instead
Expand All @@ -74,7 +74,7 @@ Both are FOSS with independent governance (no Big Tech).
### Package Management

- **Primary**: Guix (guix.scm)
- **Fallback**: Nix (flake.nix)
- **Fallback**: Guix (flake.guix)
- **JS deps**: Deno (deno.json imports)

### Security Requirements
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/governance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# in hyperpolymath/standards instead of carrying per-repo copies.
#
# Replaces the per-repo governance scaffolding removed in the same commit:
# quality.yml, guix-nix-policy.yml, npm-bun-blocker.yml, ts-blocker.yml,
# quality.yml, guix-guix-policy.yml, npm-bun-blocker.yml, ts-blocker.yml,
# security-policy.yml, rsr-antipattern.yml, wellknown-enforcement.yml,
# workflow-linter.yml
#
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/language-policy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
# Block new Python files (except SaltStack)
NEW_PY=$(git diff --name-only --diff-filter=A HEAD~1 2>/dev/null | grep -E '\.py$' | grep -v 'salt' || true)
if [ -n "$NEW_PY" ]; then
echo "❌ New Python files detected. Use Rust or ReScript instead."
echo "❌ New Python files detected. Use Rust or AffineScript instead."
echo "$NEW_PY"
exit 1
fi
Expand Down
10 changes: 5 additions & 5 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,16 @@ build:typescript:
- node_modules/
expire_in: 1 hour

build:rescript:
build:affinescript:
stage: build
image: node:18
script:
- npm install -g rescript@11.1
- cd interpreters/rescript
- npx rescript build
- npm install -g affinescript@11.1
- cd interpreters/affinescript
- npx affinescript build
artifacts:
paths:
- interpreters/rescript/lib/
- interpreters/affinescript/lib/
expire_in: 1 hour

# ============================================================================
Expand Down
6 changes: 3 additions & 3 deletions .machine_readable/bot_directives/hypatia.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ workflow = ".github/workflows/hypatia-scan.yml"

[[accepted-findings]]
id = "banned-language-example-files"
finding = "cicd_rules/banned_language_file hits under examples/ (go, java, kotlin, swift, ...) and legacy ReScript paths"
finding = "cicd_rules/banned_language_file hits under examples/ (go, java, kotlin, swift, ...) and legacy AffineScript paths"
reason = "absolute-zero is the canonical cross-language nop-semantics demonstration repo; example files in banned languages are the point, not load-bearing code. Each accepted path is enumerated in .hypatia-ignore. After standards#180 (file_pattern glob support) the per-file entries collapse to a single examples/** pattern."
status = "accepted"

Expand All @@ -34,8 +34,8 @@ reason = "Deliberate: top-level `permissions: read-all` with job-level `security
status = "accepted"

[[accepted-findings]]
id = "stale-hypatia-ignore-rescript-entries"
finding = ".hypatia-ignore lists ReScript paths (src/AuditTrail.res, interpreters/rescript/malbolgeInterpreter.res, examples/SafeDOMExample.res) that no longer exist in the tree"
id = "stale-hypatia-ignore-affinescript-entries"
finding = ".hypatia-ignore lists AffineScript paths (src/AuditTrail.res, interpreters/affinescript/malbolgeInterpreter.res, examples/SafeDOMExample.res) that no longer exist in the tree"
reason = "Harmless staleness — ignore entries for deleted files have no effect. Cleanup is proposed as a maintainer issue rather than bot-edited, since .hypatia-ignore is security policy."
status = "accepted-pending-cleanup"

Expand Down
30 changes: 15 additions & 15 deletions .machine_readable/contractiles/Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ default:
# ============================================================================

# Build everything
build-all: build-rescript build-coq build-lean build-agda build-isabelle build-typescript
build-all: build-affinescript build-coq build-lean build-agda build-isabelle build-typescript
@echo "✓ All builds complete"

# Build ReScript interpreters
build-rescript:
@echo "Building ReScript interpreters..."
cd interpreters/rescript && npx rescript build
# Build AffineScript interpreters
build-affinescript:
@echo "Building AffineScript interpreters..."
cd interpreters/affinescript && npx affinescript build

# Build Coq proofs
build-coq:
Expand Down Expand Up @@ -134,9 +134,9 @@ run-brainfuck FILE:
run-whitespace FILE:
python3 interpreters/whitespace/whitespace.py examples/whitespace/{{FILE}}

# Run Malbolge example (ReScript)
# Run Malbolge example (AffineScript)
run-malbolge FILE:
cd interpreters/rescript && node -e "require('./malbolgeInterpreter.bs.js').execute('$(cat ../../examples/malbolge/{{FILE}})')"
cd interpreters/affinescript && node -e "require('./malbolgeInterpreter.bs.js').execute('$(cat ../../examples/malbolge/{{FILE}})')"

# ============================================================================
# Documentation
Expand All @@ -160,7 +160,7 @@ view-docs:
# ============================================================================

# Clean all build artifacts
clean: clean-coq clean-lean clean-typescript clean-rescript
clean: clean-coq clean-lean clean-typescript clean-affinescript
@echo "✓ All build artifacts cleaned"

# Clean Coq artifacts
Expand All @@ -182,10 +182,10 @@ clean-typescript:
@echo "Cleaning TypeScript artifacts..."
rm -rf node_modules dist

# Clean ReScript artifacts
clean-rescript:
@echo "Cleaning ReScript artifacts..."
cd interpreters/rescript && rm -rf lib
# Clean AffineScript artifacts
clean-affinescript:
@echo "Cleaning AffineScript artifacts..."
cd interpreters/affinescript && rm -rf lib

# ============================================================================
# Development
Expand All @@ -198,7 +198,7 @@ watch:
# Format code
format:
@echo "Formatting code..."
cd interpreters/rescript && npx rescript format
cd interpreters/affinescript && npx affinescript format

# Lint code
lint:
Expand Down Expand Up @@ -235,13 +235,13 @@ install-python:
install-provers-fedora:
@echo "Installing proof assistants (Fedora)..."
sudo dnf install -y coq z3 nodejs opam
npm install -g rescript@11.1
npm install -g affinescript@11.1

# Install proof assistants (Ubuntu)
install-provers-ubuntu:
@echo "Installing proof assistants (Ubuntu)..."
sudo apt install -y coq z3 nodejs npm
npm install -g rescript@11.1
npm install -g affinescript@11.1

# ============================================================================
# Container (Podman/Docker)
Expand Down
2 changes: 1 addition & 1 deletion .well-known/humans.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ Contributors: see git log + docs/MAINTAINERS.adoc
/* SITE */
Last update: 2026-05-25
Standards: MPL-2.0, RSR (Rhodium Standard Repository) compliant
Components: Coq, Lean 4, Z3, Agda, Isabelle, Mizar, Idris2, ReScript, Rust
Components: Coq, Lean 4, Z3, Agda, Isabelle, Mizar, Idris2, AffineScript, Rust
2 changes: 1 addition & 1 deletion 0-AI-MANIFEST.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ legacy-scm-playbook = ".machine_readable/PLAYBOOK.scm"
[language-policy]
# Single source of truth lives in docs/CLAUDE.adoc + .github/workflows/language-policy.yml.
# Summary:
allowed = ["ReScript", "Deno", "Rust", "Tauri", "Dioxus", "Gleam", "Bash", "JavaScript (limited)", "Nickel", "Guile Scheme", "Julia", "OCaml", "Ada", "Idris2"]
allowed = ["AffineScript", "Deno", "Rust", "Tauri", "Dioxus", "Gleam", "Bash", "JavaScript (limited)", "Nickel", "Guile Scheme", "Julia", "OCaml", "Ada", "Idris2"]
banned = ["TypeScript", "Node.js", "npm", "Bun", "pnpm", "yarn", "Go", "Python", "Java", "Kotlin", "Swift", "React Native", "Flutter", "Dart", "Ruby", "Perl"]
reference = "docs/CLAUDE.adoc#language-policy"

Expand Down
28 changes: 14 additions & 14 deletions Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ default:
build-all: build-coq build-lean build-agda build-isabelle build-mizar build-idris
@echo "✓ All builds complete"

# Build ReScript interpreters
build-rescript:
@echo "Building ReScript interpreters..."
cd interpreters/rescript && npx rescript build
# Build AffineScript interpreters
build-affinescript:
@echo "Building AffineScript interpreters..."
cd interpreters/affinescript && npx affinescript build

# Build Coq proofs — all 14 theories (CNO + OND pillars) via coq_makefile
build-coq:
Expand Down Expand Up @@ -157,9 +157,9 @@ run-brainfuck FILE:
run-whitespace FILE:
python3 interpreters/whitespace/whitespace.py examples/whitespace/{{FILE}}

# Run Malbolge example (ReScript)
# Run Malbolge example (AffineScript)
run-malbolge FILE:
cd interpreters/rescript && node -e "require('./malbolgeInterpreter.bs.js').execute('$(cat ../../examples/malbolge/{{FILE}})')"
cd interpreters/affinescript && node -e "require('./malbolgeInterpreter.bs.js').execute('$(cat ../../examples/malbolge/{{FILE}})')"

# ============================================================================
# Documentation
Expand All @@ -183,7 +183,7 @@ view-docs:
# ============================================================================

# Clean all build artifacts
clean: clean-coq clean-lean clean-typescript clean-rescript
clean: clean-coq clean-lean clean-typescript clean-affinescript
@echo "✓ All build artifacts cleaned"

# Clean Coq artifacts
Expand All @@ -205,10 +205,10 @@ clean-typescript:
@echo "Cleaning TypeScript artifacts..."
rm -rf node_modules dist

# Clean ReScript artifacts
clean-rescript:
@echo "Cleaning ReScript artifacts..."
cd interpreters/rescript && rm -rf lib
# Clean AffineScript artifacts
clean-affinescript:
@echo "Cleaning AffineScript artifacts..."
cd interpreters/affinescript && rm -rf lib

# ============================================================================
# Development
Expand All @@ -221,7 +221,7 @@ watch:
# Format code
format:
@echo "Formatting code..."
cd interpreters/rescript && npx rescript format
cd interpreters/affinescript && npx affinescript format

# Lint code
lint:
Expand Down Expand Up @@ -258,13 +258,13 @@ install-python:
install-provers-fedora:
@echo "Installing proof assistants (Fedora)..."
sudo dnf install -y coq z3 nodejs opam
npm install -g rescript@11.1
npm install -g affinescript@11.1

# Install proof assistants (Ubuntu)
install-provers-ubuntu:
@echo "Installing proof assistants (Ubuntu)..."
sudo apt install -y coq z3 nodejs npm
npm install -g rescript@11.1
npm install -g affinescript@11.1

# ============================================================================
# Container (Podman/Docker)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ Both pillars are machine-checked. OND obligations OND-1..5 are proved with zero
| OND residue lists (model-vs-metal gap)

| `interpreters/`
| Malbolge (ReScript), Brainfuck (Python), Whitespace (Python) with CNO detection
| Malbolge (AffineScript), Brainfuck (Python), Whitespace (Python) with CNO detection

| `proofs/verify-all-provers.sh`
| One-shot gate: both pillars, all six provers + Idris ABI
Expand Down
2 changes: 1 addition & 1 deletion ROADMAP.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ coordinates as a pinned submodule. The theorem MAA actually cites is the
fix the `Types.idr` errors) so `idris2 --build absolute-zero-abi.ipkg` succeeds.
* [ ] Make CI truthful: run Coq(13) + Agda(3) + Rust; either add a real
`cno_properties.smt2` or delete the Z3 job and its "10 theorems" claim; drop
ReScript/TS/Python jobs; fix the mangled README table and the CNO-acronym
AffineScript/TS/Python jobs; fix the mangled README table and the CNO-acronym
inconsistency.

*Done means:* the proof ledger reflects only what actually checks, the
Expand Down
2 changes: 1 addition & 1 deletion RSR_COMPLIANCE.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ For the RSR taxonomy itself (what the template prescribes), see
|`tests/` exists but is empty (placeholder). Hypatia "no_tests" finding
will clear once at least one test file lands. Existing test coverage
lives under `proofs/` (multi-prover verification), `fuzz/`, and
ReScript test runners in `interpreters/rescript/`.
AffineScript test runners in `interpreters/affinescript/`.

|License headers
|🟡 Mostly passing
Expand Down
54 changes: 0 additions & 54 deletions deno.json

This file was deleted.

4 changes: 2 additions & 2 deletions docs/ABI-FFI.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ This library follows the **Hyperpolymath RSR Standard** for ABI and FFI design:
┌─────────────────────────────────────────────┐
│ Any Language via C ABI │
│ - Rust, ReScript, Julia, Python, etc. │
│ - Rust, AffineScript, Julia, Python, etc. │
└─────────────────────────────────────────────┘
```

Expand Down Expand Up @@ -79,7 +79,7 @@ This library follows the **Hyperpolymath RSR Standard** for ABI and FFI design:
└── bindings/ # Language-specific wrappers (optional)
├── rust/
├── rescript/
├── affinescript/
└── julia/
```

Expand Down
Loading
Loading