Skip to content

Commit e237d56

Browse files
hyperpolymathclaude
andcommitted
chore: batch RSR compliance + proof fixes
- Workflow fixes (hypatia-scan path, SHA-pinning, SPDX headers) - SCM migration to A2ML format - CODE_OF_CONDUCT.md, CONTRIBUTING.md - Lean4/Coq proof completions where applicable - forbid(unsafe_code) for safe Rust crates Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
0 parents  commit e237d56

803 files changed

Lines changed: 101116 additions & 0 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: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
## Machine-Readable Artefacts
2+
3+
The following files in `.machine_readable/` contain structured project metadata:
4+
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
11+
12+
---
13+
14+
# CLAUDE.md - AI Assistant Instructions
15+
16+
## Language Policy (Hyperpolymath Standard)
17+
18+
### ALLOWED Languages & Tools
19+
20+
| Language/Tool | Use Case | Notes |
21+
|---------------|----------|-------|
22+
| **ReScript** | Primary application code | Compiles to JS, type-safe |
23+
| **Deno** | Runtime & package management | Replaces Node/npm/bun |
24+
| **Rust** | Performance-critical, systems, WASM | Preferred for CLI tools |
25+
| **Tauri 2.0+** | Mobile apps (iOS/Android) | Rust backend + web UI |
26+
| **Dioxus** | Mobile apps (native UI) | Pure Rust, React-like |
27+
| **Gleam** | Backend services | Runs on BEAM or compiles to JS |
28+
| **Bash/POSIX Shell** | Scripts, automation | Keep minimal |
29+
| **JavaScript** | Only where ReScript cannot | MCP protocol glue, Deno APIs |
30+
| **Nickel** | Configuration language | For complex configs |
31+
| **Guile Scheme** | State/meta files | STATE.scm, META.scm, ECOSYSTEM.scm |
32+
| **Julia** | Batch scripts, data processing | Per RSR |
33+
| **OCaml** | AffineScript compiler | Language-specific |
34+
| **Ada** | Safety-critical systems | Where required |
35+
36+
### BANNED - Do Not Use
37+
38+
| Banned | Replacement |
39+
|--------|-------------|
40+
| TypeScript | ReScript |
41+
| Node.js | Deno |
42+
| npm | Deno |
43+
| Bun | Deno |
44+
| pnpm/yarn | Deno |
45+
| Go | Rust |
46+
| Python | Julia/Rust/ReScript |
47+
| Java/Kotlin | Rust/Tauri/Dioxus |
48+
| Swift | Tauri/Dioxus |
49+
| React Native | Tauri/Dioxus |
50+
| Flutter/Dart | Tauri/Dioxus |
51+
52+
### Mobile Development
53+
54+
**No exceptions for Kotlin/Swift** - use Rust-first approach:
55+
56+
1. **Tauri 2.0+** - Web UI (ReScript) + Rust backend, MIT/Apache-2.0
57+
2. **Dioxus** - Pure Rust native UI, MIT/Apache-2.0
58+
59+
Both are FOSS with independent governance (no Big Tech).
60+
61+
### Enforcement Rules
62+
63+
1. **No new TypeScript files** - Convert existing TS to ReScript
64+
2. **No package.json for runtime deps** - Use deno.json imports
65+
3. **No node_modules in production** - Deno caches deps automatically
66+
4. **No Go code** - Use Rust instead
67+
5. **No Python anywhere** - Use Julia for data/batch, Rust for systems, ReScript for apps
68+
6. **No Kotlin/Swift for mobile** - Use Tauri 2.0+ or Dioxus
69+
70+
### Package Management
71+
72+
- **Primary**: Guix (guix.scm)
73+
- **Fallback**: Nix (flake.nix)
74+
- **JS deps**: Deno (deno.json imports)
75+
76+
### Security Requirements
77+
78+
- No MD5/SHA1 for security (use SHA256+)
79+
- HTTPS only (no HTTP URLs)
80+
- No hardcoded secrets
81+
- SHA-pinned dependencies
82+
- SPDX license headers on all files
83+

.clusterfuzzlite/Containerfile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
FROM gcr.io/oss-fuzz-base/base-builder-rust
2+
RUN apt-get update && apt-get install -y make autoconf automake libtool
3+
<<<<<<< HEAD
4+
COPY . $SRC/project
5+
WORKDIR $SRC/project
6+
=======
7+
COPY . $SRC/my-lang
8+
WORKDIR $SRC/my-lang
9+
>>>>>>> 7f63c53cc206ad0448f9e17e5b74dde7cf393117
10+
COPY .clusterfuzzlite/build.sh $SRC/

.clusterfuzzlite/build.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#!/bin/bash -eu
2+
<<<<<<< HEAD
3+
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/
13+
done
14+
>>>>>>> 7f63c53cc206ad0448f9e17e5b74dde7cf393117

.clusterfuzzlite/project.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
homepage: "https://github.com/hyperpolymath/my-lang"
2+
language: rust
3+
main_repo: "https://github.com/hyperpolymath/my-lang"
4+
sanitizers:
5+
- address
6+
- undefined

.editorconfig

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# RSR-template-repo - Editor Configuration
2+
# https://editorconfig.org
3+
4+
root = true
5+
6+
[*]
7+
charset = utf-8
8+
end_of_line = lf
9+
indent_size = 2
10+
indent_style = space
11+
insert_final_newline = true
12+
trim_trailing_whitespace = true
13+
14+
[*.md]
15+
trim_trailing_whitespace = false
16+
17+
[*.adoc]
18+
trim_trailing_whitespace = false
19+
20+
[*.rs]
21+
indent_size = 4
22+
23+
[*.ex]
24+
indent_size = 2
25+
26+
[*.exs]
27+
indent_size = 2
28+
29+
[*.zig]
30+
indent_size = 4
31+
32+
[*.ada]
33+
indent_size = 3
34+
35+
[*.adb]
36+
indent_size = 3
37+
38+
[*.ads]
39+
indent_size = 3
40+
41+
[*.hs]
42+
indent_size = 2
43+
44+
[*.res]
45+
indent_size = 2
46+
47+
[*.resi]
48+
indent_size = 2
49+
50+
[*.ncl]
51+
indent_size = 2
52+
53+
[*.rkt]
54+
indent_size = 2
55+
56+
[*.scm]
57+
indent_size = 2
58+
59+
[*.nix]
60+
indent_size = 2
61+
62+
[Justfile]
63+
indent_style = space
64+
indent_size = 4
65+
66+
[justfile]
67+
indent_style = space
68+
indent_size = 4

.gitattributes

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
3+
# Auto detect text files and perform LF normalization
4+
* text=auto
5+
6+
# Source code
7+
*.rs text eol=lf diff=rust
8+
*.ex text eol=lf diff=elixir
9+
*.exs text eol=lf diff=elixir
10+
*.ml text eol=lf diff=ocaml
11+
*.mli text eol=lf diff=ocaml
12+
*.res text eol=lf diff=javascript
13+
*.resi text eol=lf diff=javascript
14+
*.ts text eol=lf diff=typescript
15+
*.js text eol=lf diff=javascript
16+
*.idr text eol=lf
17+
*.v text eol=lf
18+
*.zig text eol=lf
19+
20+
# Configuration
21+
*.toml text eol=lf
22+
*.json text eol=lf
23+
*.yml text eol=lf
24+
*.yaml text eol=lf
25+
*.scm text eol=lf linguist-language=Scheme
26+
27+
# Documentation
28+
*.md text eol=lf diff=markdown
29+
*.adoc text eol=lf
30+
*.txt text eol=lf
31+
32+
# Scripts
33+
*.sh text eol=lf
34+
*.bash text eol=lf
35+
36+
# Build artifacts (binary)
37+
*.wasm binary
38+
*.rlib binary
39+
*.beam binary
40+
*.so binary
41+
*.dylib binary
42+
*.dll binary
43+
*.exe binary
44+
45+
# Lock files (generated)
46+
Cargo.lock linguist-generated=true
47+
package-lock.json linguist-generated=true
48+
mix.lock linguist-generated=true

.github/FUNDING.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# These are supported funding model platforms
2+
3+
github: hyperpolymath
4+
patreon: cc_studio
5+
open_collective: jonathan-jewell
6+
ko_fi: hyperpolymath
7+
tidelift (sonar): # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9+
liberapay: hyperpolymath
10+
issuehunt: # Replace with a single IssueHunt username
11+
lfx_crowdfunding: hyperpolymath
12+
polar: # Replace with a single Polar username
13+
buy_me_a_coffee: jonathan.jewell
14+
thanks_dev: https://thanks.dev/dashboard
15+
indieweb: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

.github/dependabot.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
version: 2
3+
updates:
4+
- package-ecosystem: "github-actions"
5+
directory: "/"
6+
schedule:
7+
interval: "daily"
8+
open-pull-requests-limit: 10
9+

.github/workflows/cflite_batch.yml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
<<<<<<< HEAD
3+
name: ClusterFuzzLite Batch
4+
on:
5+
schedule:
6+
- cron: '0 0 * * 0'
7+
permissions: read-all
8+
jobs:
9+
BatchFuzzing:
10+
runs-on: ubuntu-latest
11+
strategy:
12+
fail-fast: false
13+
matrix:
14+
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
29+
steps:
30+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
31+
- uses: google/clusterfuzzlite/actions/build_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1
32+
with:
33+
>>>>>>> 7f63c53cc206ad0448f9e17e5b74dde7cf393117
34+
language: rust
35+
- uses: google/clusterfuzzlite/actions/run_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1
36+
with:
37+
github-token: ${{ secrets.GITHUB_TOKEN }}
38+
fuzz-seconds: 1800
39+
<<<<<<< HEAD
40+
sanitizer: ${{ matrix.sanitizer }}
41+
mode: batch
42+
output-sarif: true
43+
- uses: github/codeql-action/upload-sarif@662472033e021d55d94146f66f6058822b0b39fd # v3
44+
if: always()
45+
with:
46+
sarif_file: vulnerabilities.sarif
47+
=======
48+
>>>>>>> 7f63c53cc206ad0448f9e17e5b74dde7cf393117

.github/workflows/cflite_pr.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
<<<<<<< HEAD
3+
name: ClusterFuzzLite PR
4+
=======
5+
name: ClusterFuzzLite PR Fuzzing
6+
>>>>>>> 7f63c53cc206ad0448f9e17e5b74dde7cf393117
7+
on:
8+
pull_request:
9+
paths:
10+
- '**/*.rs'
11+
<<<<<<< HEAD
12+
permissions: read-all
13+
jobs:
14+
PR:
15+
runs-on: ubuntu-latest
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
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
32+
steps:
33+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
34+
- uses: google/clusterfuzzlite/actions/build_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1
35+
with:
36+
>>>>>>> 7f63c53cc206ad0448f9e17e5b74dde7cf393117
37+
language: rust
38+
- uses: google/clusterfuzzlite/actions/run_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1
39+
with:
40+
github-token: ${{ secrets.GITHUB_TOKEN }}
41+
fuzz-seconds: 300
42+
<<<<<<< HEAD
43+
sanitizer: ${{ matrix.sanitizer }}
44+
mode: code-change
45+
output-sarif: true
46+
- uses: github/codeql-action/upload-sarif@662472033e021d55d94146f66f6058822b0b39fd # v3
47+
if: always()
48+
with:
49+
sarif_file: vulnerabilities.sarif
50+
=======
51+
>>>>>>> 7f63c53cc206ad0448f9e17e5b74dde7cf393117

0 commit comments

Comments
 (0)