Skip to content

Commit c3cf61a

Browse files
Merge branch 'main' into cicd/codeql-cron-monthly
Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
2 parents b60280f + 5404cbe commit c3cf61a

446 files changed

Lines changed: 20102 additions & 3205 deletions

File tree

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: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,22 @@
1+
<!--
2+
SPDX-License-Identifier: MPL-2.0
3+
Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
-->
15
## Machine-Readable Artefacts
26

3-
The following files in `.machine_readable/` contain structured project metadata:
7+
The following files in `.machine_readable/6a2/` contain structured project
8+
metadata (a2ml format; the earlier `.scm` root-level names are retired):
49

5-
- `STATE.scm` - Current project state and progress
6-
- `META.scm` - Architecture decisions and development practices
7-
- `ECOSYSTEM.scm` - Position in the ecosystem and related projects
8-
- `AGENTIC.scm` - AI agent interaction patterns
9-
- `NEUROSYM.scm` - Neurosymbolic integration config
10-
- `PLAYBOOK.scm` - Operational runbook
10+
- `6a2/STATE.a2ml` - Current project state and progress
11+
- `6a2/META.a2ml` - Architecture decisions (ADRs) and development practices
12+
- `6a2/ECOSYSTEM.a2ml` - Position in the ecosystem and related projects
13+
- `6a2/AGENTIC.a2ml` - AI agent interaction patterns
14+
- `6a2/NEUROSYM.a2ml` - Neurosymbolic integration config
15+
- `6a2/PLAYBOOK.a2ml` - Operational runbook
16+
17+
Self-validation / service metadata lives in `.machine_readable/svc/`
18+
(`svc/k9/my-lang-metadata.k9.ncl`, `svc/README.adoc`). The scope-arrest anchor
19+
is the top-level `ANCHOR.scope-arrest.2026-01-01.Jewell.scm`.
1120

1221
---
1322

@@ -19,14 +28,14 @@ The following files in `.machine_readable/` contain structured project metadata:
1928

2029
| Language/Tool | Use Case | Notes |
2130
|---------------|----------|-------|
22-
| **ReScript** | Primary application code | Compiles to JS, type-safe |
31+
| **AffineScript** | Primary application code | Compiles to JS, type-safe |
2332
| **Deno** | Runtime & package management | Replaces Node/npm/bun |
2433
| **Rust** | Performance-critical, systems, WASM | Preferred for CLI tools |
2534
| **Tauri 2.0+** | Mobile apps (iOS/Android) | Rust backend + web UI |
2635
| **Dioxus** | Mobile apps (native UI) | Pure Rust, React-like |
2736
| **Gleam** | Backend services | Runs on BEAM or compiles to JS |
2837
| **Bash/POSIX Shell** | Scripts, automation | Keep minimal |
29-
| **JavaScript** | Only where ReScript cannot | MCP protocol glue, Deno APIs |
38+
| **JavaScript** | Only where AffineScript cannot | MCP protocol glue, Deno APIs |
3039
| **Nickel** | Configuration language | For complex configs |
3140
| **Guile Scheme** | State/meta files | STATE.scm, META.scm, ECOSYSTEM.scm |
3241
| **Julia** | Batch scripts, data processing | Per RSR |
@@ -37,13 +46,13 @@ The following files in `.machine_readable/` contain structured project metadata:
3746

3847
| Banned | Replacement |
3948
|--------|-------------|
40-
| TypeScript | ReScript |
49+
| TypeScript | AffineScript |
4150
| Node.js | Deno |
4251
| npm | Deno |
4352
| Bun | Deno |
4453
| pnpm/yarn | Deno |
4554
| Go | Rust |
46-
| Python | Julia/Rust/ReScript |
55+
| Python | Julia/Rust/AffineScript |
4756
| Java/Kotlin | Rust/Tauri/Dioxus |
4857
| Swift | Tauri/Dioxus |
4958
| React Native | Tauri/Dioxus |
@@ -53,18 +62,18 @@ The following files in `.machine_readable/` contain structured project metadata:
5362

5463
**No exceptions for Kotlin/Swift** - use Rust-first approach:
5564

56-
1. **Tauri 2.0+** - Web UI (ReScript) + Rust backend, MIT/Apache-2.0
65+
1. **Tauri 2.0+** - Web UI (AffineScript) + Rust backend, MIT/Apache-2.0
5766
2. **Dioxus** - Pure Rust native UI, MIT/Apache-2.0
5867

5968
Both are FOSS with independent governance (no Big Tech).
6069

6170
### Enforcement Rules
6271

63-
1. **No new TypeScript files** - Convert existing TS to ReScript
64-
2. **No package.json for runtime deps** - Use deno.json imports
72+
1. **No new TypeScript files** - Convert existing TS to AffineScript
73+
2. **No package.json - use deno.json deps** - Use deno.json imports
6574
3. **No node_modules in production** - Deno caches deps automatically
6675
4. **No Go code** - Use Rust instead
67-
5. **No Python anywhere** - Use Julia for data/batch, Rust for systems, ReScript for apps
76+
5. **No Python anywhere** - Use Julia for data/batch, Rust for systems, AffineScript for apps
6877
6. **No Kotlin/Swift for mobile** - Use Tauri 2.0+ or Dioxus
6978

7079
### Package Management

.claude/PROJECT.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
# My Lang - Claude Code Instructions
26

37
This repository contains the My Lang programming language implementation.

.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
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
---
2+
name: Bug report
3+
about: Create a report to help us improve
4+
title: ''
5+
labels: ''
6+
assignees: ''
7+
8+
---
9+
10+
**Describe the bug**
11+
A clear and concise description of what the bug is.
12+
13+
**To Reproduce**
14+
Steps to reproduce the behavior:
15+
1. Go to '...'
16+
2. Click on '....'
17+
3. Scroll down to '....'
18+
4. See error
19+
20+
**Expected behavior**
21+
A clear and concise description of what you expected to happen.
22+
23+
**Screenshots**
24+
If applicable, add screenshots to help explain your problem.
25+
26+
**Desktop (please complete the following information):**
27+
- OS: [e.g. iOS]
28+
- Browser [e.g. chrome, safari]
29+
- Version [e.g. 22]
30+
31+
**Smartphone (please complete the following information):**
32+
- Device: [e.g. iPhone6]
33+
- OS: [e.g. iOS8.1]
34+
- Browser [e.g. stock browser, safari]
35+
- Version [e.g. 22]
36+
37+
**Additional context**
38+
Add any other context about the problem here.

.github/ISSUE_TEMPLATE/custom.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
name: Custom issue template
3+
about: Describe this issue template's purpose here.
4+
title: ''
5+
labels: ''
6+
assignees: ''
7+
8+
---
9+
10+
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
name: Feature request
3+
about: Suggest an idea for this project
4+
title: ''
5+
labels: ''
6+
assignees: ''
7+
8+
---
9+
10+
**Is your feature request related to a problem? Please describe.**
11+
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12+
13+
**Describe the solution you'd like**
14+
A clear and concise description of what you want to happen.
15+
16+
**Describe alternatives you've considered**
17+
A clear and concise description of any alternative solutions or features you've considered.
18+
19+
**Additional context**
20+
Add any other context or screenshots about the feature request here.

.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/cflite_batch.yml

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,31 @@
11
# SPDX-License-Identifier: MPL-2.0
2-
<<<<<<< HEAD
32
name: ClusterFuzzLite Batch
43
on:
54
schedule:
6-
- cron: '0 0 * * 0'
5+
- cron: '0 0 * * 0' # Weekly
76
permissions: read-all
87
jobs:
98
BatchFuzzing:
109
runs-on: ubuntu-latest
10+
timeout-minutes: 60
1111
strategy:
1212
fail-fast: false
1313
matrix:
1414
sanitizer: [address, undefined]
15-
steps:
16-
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
17-
- uses: google/clusterfuzzlite/actions/build_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1
18-
with:
19-
sanitizer: ${{ matrix.sanitizer }}
20-
=======
21-
name: ClusterFuzzLite Batch Fuzzing
22-
on:
23-
schedule:
24-
- cron: '0 0 * * 0' # Weekly
25-
permissions: read-all
26-
jobs:
27-
fuzz:
28-
runs-on: ubuntu-latest
2915
steps:
3016
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
3117
- uses: google/clusterfuzzlite/actions/build_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1
3218
with:
33-
>>>>>>> 7f63c53cc206ad0448f9e17e5b74dde7cf393117
3419
language: rust
20+
sanitizer: ${{ matrix.sanitizer }}
3521
- uses: google/clusterfuzzlite/actions/run_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1
3622
with:
3723
github-token: ${{ secrets.GITHUB_TOKEN }}
3824
fuzz-seconds: 1800
39-
<<<<<<< HEAD
4025
sanitizer: ${{ matrix.sanitizer }}
4126
mode: batch
4227
output-sarif: true
4328
- uses: github/codeql-action/upload-sarif@662472033e021d55d94146f66f6058822b0b39fd # v3
4429
if: always()
4530
with:
4631
sarif_file: vulnerabilities.sarif
47-
=======
48-
>>>>>>> 7f63c53cc206ad0448f9e17e5b74dde7cf393117

.github/workflows/cflite_pr.yml

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,34 @@
11
# SPDX-License-Identifier: MPL-2.0
2-
<<<<<<< HEAD
32
name: ClusterFuzzLite PR
4-
=======
5-
name: ClusterFuzzLite PR Fuzzing
6-
>>>>>>> 7f63c53cc206ad0448f9e17e5b74dde7cf393117
73
on:
84
pull_request:
95
paths:
106
- '**/*.rs'
11-
<<<<<<< HEAD
7+
- 'Cargo.toml'
8+
- 'Cargo.lock'
129
permissions: read-all
1310
jobs:
1411
PR:
1512
runs-on: ubuntu-latest
13+
timeout-minutes: 30
1614
strategy:
1715
fail-fast: false
1816
matrix:
1917
sanitizer: [address, undefined]
20-
steps:
21-
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
22-
- uses: google/clusterfuzzlite/actions/build_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1
23-
with:
24-
sanitizer: ${{ matrix.sanitizer }}
25-
=======
26-
- 'Cargo.toml'
27-
- 'Cargo.lock'
28-
permissions: read-all
29-
jobs:
30-
fuzz:
31-
runs-on: ubuntu-latest
3218
steps:
3319
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
3420
- uses: google/clusterfuzzlite/actions/build_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1
3521
with:
36-
>>>>>>> 7f63c53cc206ad0448f9e17e5b74dde7cf393117
3722
language: rust
23+
sanitizer: ${{ matrix.sanitizer }}
3824
- uses: google/clusterfuzzlite/actions/run_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1
3925
with:
4026
github-token: ${{ secrets.GITHUB_TOKEN }}
4127
fuzz-seconds: 300
42-
<<<<<<< HEAD
4328
sanitizer: ${{ matrix.sanitizer }}
4429
mode: code-change
4530
output-sarif: true
4631
- uses: github/codeql-action/upload-sarif@662472033e021d55d94146f66f6058822b0b39fd # v3
4732
if: always()
4833
with:
4934
sarif_file: vulnerabilities.sarif
50-
=======
51-
>>>>>>> 7f63c53cc206ad0448f9e17e5b74dde7cf393117

.github/workflows/checker-scaling.yml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
# On Linux it also produces a dhat per-call-site heap profile and uploads it
99
# as an artifact for hotspot localisation (the step the issue asked for).
1010
name: Checker Scaling (#14)
11-
1211
on:
1312
push:
1413
paths:
@@ -18,9 +17,7 @@ on:
1817
paths:
1918
- 'crates/my-lang/**'
2019
- '.github/workflows/checker-scaling.yml'
21-
2220
permissions: read-all
23-
2421
jobs:
2522
scaling:
2623
name: scaling (${{ matrix.os }})
@@ -29,23 +26,20 @@ jobs:
2926
matrix:
3027
os: [ubuntu-latest, windows-latest]
3128
runs-on: ${{ matrix.os }}
29+
timeout-minutes: 30
3230
permissions:
3331
contents: read
3432
steps:
3533
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
36-
3734
- name: Setup Rust
3835
uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # stable
3936
with:
4037
toolchain: stable
41-
4238
- name: Run allocation-scaling harness
4339
run: cargo test -p my-lang --test checker_alloc_scaling --release -- --nocapture
44-
4540
- name: Run dhat heap profile (Linux only)
4641
if: matrix.os == 'ubuntu-latest'
4742
run: cargo run -p my-lang --example dhat_checker_profile --features dhat-heap --release
48-
4943
- name: Upload dhat heap profile
5044
if: matrix.os == 'ubuntu-latest'
5145
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2

0 commit comments

Comments
 (0)