Skip to content

Commit 98b6a2c

Browse files
Merge branch 'main' into claude/tech-debt-2026-05-26
Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
2 parents 6cfc716 + c33f872 commit 98b6a2c

73 files changed

Lines changed: 1072 additions & 1518 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/CLAUDE.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
<!--
2+
SPDX-License-Identifier: MPL-2.0
3+
Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
-->
15
# CLAUDE.md - AI Assistant Instructions
26

37
## Language Policy (Hyperpolymath Standard)
@@ -6,14 +10,14 @@
610

711
| Language/Tool | Use Case | Notes |
812
|---------------|----------|-------|
9-
| **ReScript** | Primary application code | Compiles to JS, type-safe |
13+
| **AffineScript** | Primary application code | Affine-typed, compiles to typed-wasm or Deno-ESM |
1014
| **Deno** | Runtime & package management | Replaces Node/npm/bun |
1115
| **Rust** | Performance-critical, systems, WASM | Preferred for CLI tools |
1216
| **Tauri 2.0+** | Mobile apps (iOS/Android) | Rust backend + web UI |
1317
| **Dioxus** | Mobile apps (native UI) | Pure Rust, React-like |
1418
| **Gleam** | Backend services | Runs on BEAM or compiles to JS |
1519
| **Bash/POSIX Shell** | Scripts, automation | Keep minimal |
16-
| **JavaScript** | Only where ReScript cannot | MCP protocol glue, Deno APIs |
20+
| **JavaScript** | Only where AffineScript cannot | MCP protocol glue, Deno APIs |
1721
| **Nickel** | Configuration language | For complex configs |
1822
| **Guile Scheme** | State/meta files | .machine_readable/6a2/STATE.a2ml, .machine_readable/6a2/META.a2ml, .machine_readable/6a2/ECOSYSTEM.a2ml |
1923
| **Julia** | Batch scripts, data processing | Per RSR |
@@ -24,13 +28,13 @@
2428

2529
| Banned | Replacement |
2630
|--------|-------------|
27-
| TypeScript | ReScript |
31+
| TypeScript | AffineScript |
2832
| Node.js | Deno |
2933
| npm | Deno |
3034
| Bun | Deno |
3135
| pnpm/yarn | Deno |
3236
| Go | Rust |
33-
| Python | Julia/Rust/ReScript |
37+
| Python | Julia/Rust/AffineScript |
3438
| Java/Kotlin | Rust/Tauri/Dioxus |
3539
| Swift | Tauri/Dioxus |
3640
| React Native | Tauri/Dioxus |
@@ -40,18 +44,18 @@
4044

4145
**No exceptions for Kotlin/Swift** - use Rust-first approach:
4246

43-
1. **Tauri 2.0+** - Web UI (ReScript) + Rust backend, MIT/Apache-2.0
47+
1. **Tauri 2.0+** - Web UI (AffineScript) + Rust backend, MIT/Apache-2.0
4448
2. **Dioxus** - Pure Rust native UI, MIT/Apache-2.0
4549

4650
Both are FOSS with independent governance (no Big Tech).
4751

4852
### Enforcement Rules
4953

50-
1. **No new TypeScript files** - Convert existing TS to ReScript
54+
1. **No new TypeScript files** - Convert existing TS to AffineScript
5155
2. **No package.json for runtime deps** - Use deno.json imports
5256
3. **No node_modules in production** - Deno caches deps automatically
5357
4. **No Go code** - Use Rust instead
54-
5. **No Python anywhere** - Use Julia for data/batch, Rust for systems, ReScript for apps
58+
5. **No Python anywhere** - Use Julia for data/batch, Rust for systems, AffineScript for apps
5559
6. **No Kotlin/Swift for mobile** - Use Tauri 2.0+ or Dioxus
5660

5761
### Package Management

.github/CODEOWNERS

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# CODEOWNERS - Define code review assignments for GitHub
3+
# See: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
4+
5+
# Default: sole maintainer for all files
6+
* @hyperpolymath
7+
8+
# Security-sensitive files require explicit ownership
9+
SECURITY.md @hyperpolymath
10+
.github/workflows/ @hyperpolymath
11+
.machine_readable/ @hyperpolymath
12+
contractiles/ @hyperpolymath
13+
14+
# License files
15+
LICENSE @hyperpolymath
16+
LICENSES/ @hyperpolymath
17+
18+
# Configuration
19+
.gitignore @hyperpolymath
20+
.github/ @hyperpolymath
21+
22+
# Documentation
23+
README* @hyperpolymath
24+
CONTRIBUTING* @hyperpolymath
25+
CODE_OF_CONDUCT* @hyperpolymath
26+
GOVERNANCE* @hyperpolymath
27+
MAINTAINERS* @hyperpolymath
28+
CHANGELOG* @hyperpolymath
29+
ROADMAP* @hyperpolymath
30+
31+
# Build and CI
32+
Justfile @hyperpolymath
33+
Makefile @hyperpolymath
34+
*.sh @hyperpolymath

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
<!--
2+
SPDX-License-Identifier: MPL-2.0
3+
Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
-->
15
---
26
name: Bug report
37
about: Create a report to help us improve

.github/ISSUE_TEMPLATE/custom.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
<!--
2+
SPDX-License-Identifier: MPL-2.0
3+
Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
-->
15
---
26
name: Custom issue template
37
about: Describe this issue template's purpose here.

.github/ISSUE_TEMPLATE/documentation.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
<!--
2+
SPDX-License-Identifier: MPL-2.0
3+
Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
-->
15
---
26
name: Documentation
37
about: Report unclear, missing, or incorrect documentation

.github/ISSUE_TEMPLATE/feature_request.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
<!--
2+
SPDX-License-Identifier: MPL-2.0
3+
Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
-->
15
---
26
name: Feature request
37
about: Suggest an idea for this project

.github/ISSUE_TEMPLATE/question.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
<!--
2+
SPDX-License-Identifier: MPL-2.0
3+
Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
-->
15
---
26
name: Question
37
about: Ask a question about usage or behaviour

.github/copilot/coding-agent.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
mcp_servers:
2+
boj-server:
3+
command: npx
4+
args: ["-y", "@hyperpolymath/boj-server@latest"]
5+
env:
6+
BOJ_URL: http://localhost:7700

.github/workflows/boj-build.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ on:
77
jobs:
88
trigger-boj:
99
runs-on: ubuntu-latest
10+
timeout-minutes: 15
1011
steps:
1112
- name: Checkout
1213
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7

.github/workflows/casket-pages.yml

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,33 @@
11
# SPDX-License-Identifier: MPL-2.0
22
name: GitHub Pages
3-
43
on:
54
push:
65
branches: [main, master]
76
workflow_dispatch:
8-
97
permissions:
108
contents: read
119
pages: write
1210
id-token: write
13-
1411
concurrency:
1512
group: "pages"
1613
cancel-in-progress: false
17-
1814
jobs:
1915
build:
2016
runs-on: ubuntu-latest
17+
timeout-minutes: 15
2118
steps:
2219
- name: Checkout
2320
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
24-
2521
- name: Checkout casket-ssg
2622
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
2723
with:
2824
repository: hyperpolymath/casket-ssg
2925
path: .casket-ssg
30-
3126
- name: Setup GHCup
3227
uses: haskell-actions/setup@ec49483bfc012387b227434aba94f59a6ecd0900 # v2
3328
with:
3429
ghc-version: '9.8.2'
3530
cabal-version: '3.10'
36-
3731
- name: Cache Cabal
3832
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
3933
with:
@@ -42,11 +36,9 @@ jobs:
4236
~/.cabal/store
4337
.casket-ssg/dist-newstyle
4438
key: ${{ runner.os }}-casket-${{ hashFiles('.casket-ssg/casket-ssg.cabal') }}
45-
4639
- name: Build casket-ssg
4740
working-directory: .casket-ssg
4841
run: cabal build
49-
5042
- name: Prepare site source
5143
shell: bash
5244
run: |
@@ -89,26 +81,23 @@ jobs:
8981
echo "Project-specific site content can be added later under site/."
9082
} > .site-src/index.md
9183
fi
92-
9384
- name: Build site
9485
run: |
9586
mkdir -p _site
9687
cd .casket-ssg && cabal run casket-ssg -- build ../.site-src ../_site
9788
touch ../_site/.nojekyll
98-
9989
- name: Setup Pages
10090
uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5
101-
10291
- name: Upload artifact
10392
uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3
10493
with:
10594
path: '_site'
106-
10795
deploy:
10896
environment:
10997
name: github-pages
11098
url: ${{ steps.deployment.outputs.page_url }}
11199
runs-on: ubuntu-latest
100+
timeout-minutes: 15
112101
needs: build
113102
steps:
114103
- name: Deploy to GitHub Pages

0 commit comments

Comments
 (0)