Skip to content

Commit 53ce8ae

Browse files
Merge branch 'main' into feat/stdlib-fs-env-format
Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
2 parents f9906f5 + 1a73433 commit 53ce8ae

625 files changed

Lines changed: 30174 additions & 5692 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: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,22 @@
1+
<!--
2+
SPDX-License-Identifier: CC-BY-SA-4.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,16 +28,16 @@ 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 |
31-
| **Guile Scheme** | State/meta files | STATE.scm, META.scm, ECOSYSTEM.scm |
40+
| **Guile Scheme** | State/meta files | `.machine_readable/6a2/{STATE,META,ECOSYSTEM}.a2ml` (the earlier `.scm` names are retired) |
3241
| **Julia** | Batch scripts, data processing | Per RSR |
3342
| **OCaml** | AffineScript compiler | Language-specific |
3443
| **Ada** | Safety-critical systems | Where required |
@@ -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: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<!--
2+
SPDX-License-Identifier: CC-BY-SA-4.0
3+
Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
-->
5+
# My Lang - Claude Code Instructions
6+
7+
This repository contains the My Lang programming language implementation.
8+
9+
## Project Structure
10+
11+
```
12+
my-lang/
13+
├── .claude/ # AI assistant instructions
14+
├── .git/ # Version control
15+
├── .gitignore # Git ignore rules
16+
├── .editorconfig # Editor configuration
17+
└── ... # Language files
18+
```
19+
20+
## Build Commands
21+
22+
Refer to project-specific documentation.
23+
24+
## Coding Conventions
25+
26+
- Follow hyperpolymath standards
27+
- All code must have SPDX license headers
28+
- Use approved languages only (see CLAUDE.md)
29+
- Document all non-obvious decisions
30+
31+
## Security
32+
33+
- No hardcoded secrets
34+
- All secrets through environment variables or secret management
35+
- SHA-pinned dependencies where applicable
36+
- HTTPS only, no HTTP URLs
37+
- No MD5/SHA1 for security purposes

.clusterfuzzlite/Containerfile

Lines changed: 0 additions & 10 deletions
This file was deleted.

.clusterfuzzlite/Dockerfile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
3+
#
4+
# ClusterFuzzLite / OSS-Fuzz build image. The ClusterFuzzLite actions
5+
# (google/clusterfuzzlite) build the project from `.clusterfuzzlite/Dockerfile`
6+
# by hard-coded convention, so this file MUST be named `Dockerfile`.
7+
FROM gcr.io/oss-fuzz-base/base-builder-rust
8+
RUN apt-get update && apt-get install -y make autoconf automake libtool
9+
COPY . $SRC/my-lang
10+
WORKDIR $SRC/my-lang
11+
COPY .clusterfuzzlite/build.sh $SRC/

.clusterfuzzlite/build.sh

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
#!/bin/bash -eu
2-
<<<<<<< HEAD
2+
# SPDX-License-Identifier: MPL-2.0
3+
# Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
#
5+
# OSS-Fuzz / ClusterFuzzLite build script: compile the cargo-fuzz targets in
6+
# `fuzz/` and stage each binary into $OUT. Run by `compile` inside the
7+
# base-builder-rust image (see .clusterfuzzlite/Dockerfile).
8+
cd "$SRC/my-lang"
9+
# Build for the sanitizer OSS-Fuzz requests (defaults to address). NOTE: only
10+
# `address` is configured — Rust/cargo-fuzz cannot emit a valid UBSan binary
11+
# (it links ASan regardless), which `bad_build_check` rejects; see project.yaml.
12+
cargo +nightly fuzz build -O --sanitizer "${SANITIZER:-address}"
313

4-
cd $SRC/project
5-
cargo +nightly fuzz build --release
6-
cp fuzz/target/*/release/fuzz_* $OUT/
7-
=======
8-
cd $SRC/*/fuzz
9-
cargo +nightly fuzz build
10-
for target in fuzz_targets/*; do
11-
target_name=$(basename ${target%.rs})
12-
cp target/x86_64-unknown-linux-gnu/release/$target_name $OUT/
14+
release="$SRC/my-lang/fuzz/target/x86_64-unknown-linux-gnu/release"
15+
for target in fuzz/fuzz_targets/*.rs; do
16+
name="$(basename "${target%.rs}")"
17+
cp "$release/$name" "$OUT/"
1318
done
14-
>>>>>>> 7f63c53cc206ad0448f9e17e5b74dde7cf393117

.clusterfuzzlite/project.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
homepage: "https://github.com/hyperpolymath/my-lang"
22
language: rust
33
main_repo: "https://github.com/hyperpolymath/my-lang"
4+
# Only ASan: Rust/cargo-fuzz does not produce a valid UndefinedBehaviorSanitizer
5+
# build (it links ASan regardless), which OSS-Fuzz's `bad_build_check` rejects
6+
# ("UBSan build ... seems to be compiled with ASan"). ASan is the supported,
7+
# meaningful sanitizer for Rust fuzzing here.
48
sanitizers:
59
- address
6-
- undefined

.gitattributes

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# SPDX-License-Identifier: PMPL-1.0-or-later
1+
# SPDX-License-Identifier: MPL-2.0
22

33
# Auto detect text files and perform LF normalization
44
* text=auto

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1-
# SPDX-License-Identifier: PMPL-1.0-or-later
1+
# SPDX-License-Identifier: MPL-2.0
22
version: 2
33
updates:
44
- package-ecosystem: "github-actions"
55
directory: "/"
66
schedule:
77
interval: "daily"
88
open-pull-requests-limit: 10
9+
# Batch this ecosystem into a single PR. Ungrouped, Dependabot
10+
# opens one PR per dependency, and each PR re-fires every
11+
# workflow in the repo.
12+
groups:
13+
github-actions:
14+
patterns:
15+
- "*"
916

0 commit comments

Comments
 (0)