diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index 296e9fe..b6193aa 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -1,3 +1,7 @@ + ## Machine-Readable Artefacts The following files in `.machine_readable/` contain structured project metadata: @@ -63,7 +67,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) -2. **No package.json for runtime deps** - Use deno.json imports +2. **No package.json - use deno.json deps** - Use deno.json imports 3. **No node_modules in production** - Deno caches deps automatically 4. **No Go code** - Use Rust instead 5. **No Python anywhere** - Use Julia for data/batch, Rust for systems, AffineScript for apps diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..3a3b7f2 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,34 @@ +# SPDX-License-Identifier: MPL-2.0 +# CODEOWNERS - Define code review assignments for GitHub +# See: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners + +# Default: sole maintainer for all files +* @hyperpolymath + +# Security-sensitive files require explicit ownership +SECURITY.md @hyperpolymath +.github/workflows/ @hyperpolymath +.machine_readable/ @hyperpolymath +contractiles/ @hyperpolymath + +# License files +LICENSE @hyperpolymath +LICENSES/ @hyperpolymath + +# Configuration +.gitignore @hyperpolymath +.github/ @hyperpolymath + +# Documentation +README* @hyperpolymath +CONTRIBUTING* @hyperpolymath +CODE_OF_CONDUCT* @hyperpolymath +GOVERNANCE* @hyperpolymath +MAINTAINERS* @hyperpolymath +CHANGELOG* @hyperpolymath +ROADMAP* @hyperpolymath + +# Build and CI +Justfile @hyperpolymath +Makefile @hyperpolymath +*.sh @hyperpolymath diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 987aab6..45a6c02 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,3 +1,7 @@ + --- name: Bug report about: Create a report to help us improve diff --git a/.github/ISSUE_TEMPLATE/documentation.md b/.github/ISSUE_TEMPLATE/documentation.md index 4fcb9f9..b1d16df 100644 --- a/.github/ISSUE_TEMPLATE/documentation.md +++ b/.github/ISSUE_TEMPLATE/documentation.md @@ -1,3 +1,7 @@ + --- name: Documentation about: Report unclear, missing, or incorrect documentation diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 3e8fa7e..a5a5693 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,3 +1,7 @@ + --- name: Feature request about: Suggest an idea for this project diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md index fd0e2a5..c2d1f57 100644 --- a/.github/ISSUE_TEMPLATE/question.md +++ b/.github/ISSUE_TEMPLATE/question.md @@ -1,3 +1,7 @@ + --- name: Question about: Ask a question about usage or behaviour diff --git a/.github/copilot/coding-agent.yml b/.github/copilot/coding-agent.yml new file mode 100644 index 0000000..a719a77 --- /dev/null +++ b/.github/copilot/coding-agent.yml @@ -0,0 +1,6 @@ +mcp_servers: + boj-server: + command: npx + args: ["-y", "@hyperpolymath/boj-server@latest"] + env: + BOJ_URL: http://localhost:7700 diff --git a/.github/workflows/cflite_batch.yml b/.github/workflows/cflite_batch.yml index 733d394..600d1b8 100644 --- a/.github/workflows/cflite_batch.yml +++ b/.github/workflows/cflite_batch.yml @@ -4,12 +4,11 @@ on: schedule: - cron: '0 3 * * 0' workflow_dispatch: - permissions: read-all - jobs: BatchFuzzing: runs-on: ubuntu-latest + timeout-minutes: 15 strategy: fail-fast: false matrix: @@ -21,7 +20,6 @@ jobs: with: language: rust sanitizer: ${{ matrix.sanitizer }} - - name: Run Fuzzers (${{ matrix.sanitizer }}) id: run uses: google/clusterfuzzlite/actions/run_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1 diff --git a/.github/workflows/cflite_pr.yml b/.github/workflows/cflite_pr.yml index fd2d04e..49f1eaf 100644 --- a/.github/workflows/cflite_pr.yml +++ b/.github/workflows/cflite_pr.yml @@ -3,12 +3,11 @@ name: ClusterFuzzLite PR fuzzing on: pull_request: branches: [main] - permissions: read-all - jobs: PR: runs-on: ubuntu-latest + timeout-minutes: 15 strategy: fail-fast: false matrix: @@ -16,14 +15,12 @@ jobs: steps: - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - name: Build Fuzzers (${{ matrix.sanitizer }}) id: build uses: google/clusterfuzzlite/actions/build_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1 with: language: rust sanitizer: ${{ matrix.sanitizer }} - - name: Run Fuzzers (${{ matrix.sanitizer }}) id: run uses: google/clusterfuzzlite/actions/run_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1 diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index e71132c..d313c34 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,6 +1,5 @@ # SPDX-License-Identifier: MPL-2.0 name: CodeQL Security Analysis - on: push: branches: [main, master] @@ -8,7 +7,6 @@ on: branches: [main, master] schedule: - cron: '0 6 * * 1' - # Estate guardrail: cancel superseded runs so re-pushes / rebased PR # updates do not pile up queued runs against the shared account-wide # Actions concurrency pool. Applied only to read-only check workflows @@ -16,12 +14,11 @@ on: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true - permissions: read-all - jobs: analyze: runs-on: ubuntu-latest + timeout-minutes: 15 permissions: contents: read security-events: write @@ -31,17 +28,14 @@ jobs: include: - language: javascript-typescript build-mode: none - steps: - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - name: Initialize CodeQL uses: github/codeql-action/init@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v3.28.1 with: languages: ${{ matrix.language }} build-mode: ${{ matrix.build-mode }} - - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v3.28.1 with: diff --git a/.github/workflows/deno-ci.yml b/.github/workflows/deno-ci.yml index 7290371..2608b3c 100644 --- a/.github/workflows/deno-ci.yml +++ b/.github/workflows/deno-ci.yml @@ -2,19 +2,16 @@ # Thin wrapper around the estate-wide reusable Deno CI bundle. # See: hyperpolymath/standards/.github/workflows/deno-ci-reusable.yml name: Deno CI - on: push: branches: [main, master] pull_request: - concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true - permissions: contents: read - jobs: deno-ci: - uses: hyperpolymath/standards/.github/workflows/deno-ci-reusable.yml@c3a62f0cfd993c23661519f571087ed16e13631c # standards#168 head + uses: hyperpolymath/standards/.github/workflows/deno-ci-reusable.yml@f5f0506a6ec88e574753eee701a268e0d4b3a7f2 # standards#168 head + timeout-minutes: 10 diff --git a/.github/workflows/governance.yml b/.github/workflows/governance.yml index d894006..8161ec2 100644 --- a/.github/workflows/governance.yml +++ b/.github/workflows/governance.yml @@ -1,34 +1,16 @@ -# SPDX-License-Identifier: MPL-2.0 -# governance.yml — single wrapper calling the shared estate governance bundle -# 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, -# security-policy.yml, rsr-antipattern.yml, wellknown-enforcement.yml, -# workflow-linter.yml -# -# Load-bearing build/security workflows stay standalone in the repo -# (rust-ci, codeql, dependabot, release, scan/mirror/pages plumbing). - +# SPDX-License-Identifier: PMPL-1.0-or-later name: Governance on: push: branches: [main, master] pull_request: + branches: [main, master] workflow_dispatch: -# Estate guardrail: cancel superseded runs so re-pushes / rebased PR -# updates do not pile up queued runs against the shared account-wide -# Actions concurrency pool. Applied only to read-only check workflows -# (no publish/mutation), so cancelling a superseded run is always safe. -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - permissions: contents: read jobs: governance: - uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@5eb28d7d8790d5389b7b6a5233fe6265a775e3d0 # main 2026-05-27 (post-#219 workflow_sha fix) + uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@5a93d9d57cc04de4002d6d0ecd336fc7a8698910 diff --git a/.github/workflows/hypatia-scan.yml b/.github/workflows/hypatia-scan.yml index bf6304a..e715848 100644 --- a/.github/workflows/hypatia-scan.yml +++ b/.github/workflows/hypatia-scan.yml @@ -1,7 +1,4 @@ -# SPDX-License-Identifier: MPL-2.0 -# Thin wrapper around hyperpolymath/standards hypatia-scan-reusable.yml. -# See standards#191 for the reusable's purpose and design. - +# SPDX-License-Identifier: PMPL-1.0-or-later name: Hypatia Security Scan on: @@ -13,17 +10,10 @@ on: - cron: '0 0 * * 0' workflow_dispatch: -# Estate guardrail: cancel superseded runs so re-pushes don't pile up. -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - permissions: contents: read - security-events: write - pull-requests: write + security-events: read jobs: - hypatia: - uses: hyperpolymath/standards/.github/workflows/hypatia-scan-reusable.yml@5eb28d7d8790d5389b7b6a5233fe6265a775e3d0 - secrets: inherit + scan: + uses: hyperpolymath/standards/.github/workflows/hypatia-scan-reusable.yml@5a93d9d57cc04de4002d6d0ecd336fc7a8698910 diff --git a/.github/workflows/language-policy.yml b/.github/workflows/language-policy.yml index 3479fa3..d2ce45e 100644 --- a/.github/workflows/language-policy.yml +++ b/.github/workflows/language-policy.yml @@ -1,12 +1,11 @@ # SPDX-License-Identifier: MPL-2.0-or-later name: Language Policy Enforcement on: [push, pull_request] - permissions: read-all - jobs: check: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Enforce language policies @@ -18,7 +17,7 @@ jobs: echo "$NEW_PY" exit 1 fi - + # Block new Ruby files NEW_RB=$(git diff --name-only --diff-filter=A HEAD~1 2>/dev/null | grep -E '\.rb$' || true) if [ -n "$NEW_RB" ]; then @@ -26,7 +25,7 @@ jobs: echo "$NEW_RB" exit 1 fi - + # Block new Perl files NEW_PL=$(git diff --name-only --diff-filter=A HEAD~1 2>/dev/null | grep -E '\.(pl|pm)$' || true) if [ -n "$NEW_PL" ]; then @@ -34,7 +33,7 @@ jobs: echo "$NEW_PL" exit 1 fi - + # Block new Java/Kotlin (except in LSP projects) if [[ ! "$GITHUB_REPOSITORY" =~ "language-server" ]]; then NEW_JAVA=$(git diff --name-only --diff-filter=A HEAD~1 2>/dev/null | grep -E '\.(java|kt)$' || true) @@ -44,5 +43,5 @@ jobs: exit 1 fi fi - + echo "✅ Language policy check passed" diff --git a/.github/workflows/mirror.yml b/.github/workflows/mirror.yml index a0d5420..0afc687 100644 --- a/.github/workflows/mirror.yml +++ b/.github/workflows/mirror.yml @@ -1,15 +1,13 @@ # SPDX-License-Identifier: MPL-2.0-or-later name: Mirror to Git Forges - on: push: branches: [main] workflow_dispatch: - permissions: contents: read - jobs: mirror: uses: hyperpolymath/standards/.github/workflows/mirror-reusable.yml@e6b2884722350515934d443daf23442f2195796f + timeout-minutes: 10 secrets: inherit diff --git a/.github/workflows/publish-container.yml b/.github/workflows/publish-container.yml index f55889c..c829cf8 100644 --- a/.github/workflows/publish-container.yml +++ b/.github/workflows/publish-container.yml @@ -1,28 +1,24 @@ # SPDX-License-Identifier: MPL-2.0 name: Publish Container - on: release: types: [published] workflow_dispatch: - permissions: contents: read packages: write - jobs: publish: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4 - - name: Log in to GitHub Container Registry uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Extract metadata id: meta uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v5 @@ -33,7 +29,6 @@ jobs: type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha - - name: Build and push uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v6 with: diff --git a/.github/workflows/rust-ci.yml b/.github/workflows/rust-ci.yml index 7f0b7f8..154fabd 100644 --- a/.github/workflows/rust-ci.yml +++ b/.github/workflows/rust-ci.yml @@ -3,18 +3,16 @@ # hyperpolymath/standards. Configure once, propagate everywhere. # See: docs/CI-REUSABLE-WORKFLOWS.adoc in standards. name: Rust CI - on: push: branches: [main, master] pull_request: - permissions: contents: read - jobs: rust-ci: - uses: hyperpolymath/standards/.github/workflows/rust-ci-reusable.yml@4fdf4314b4ab54269adbaff10e30e483b5e86845 + uses: hyperpolymath/standards/.github/workflows/rust-ci-reusable.yml@f5f0506a6ec88e574753eee701a268e0d4b3a7f2 + timeout-minutes: 10 with: enable_audit: true enable_coverage: true diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 3f73a64..47acbb5 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -1,19 +1,16 @@ -# SPDX-License-Identifier: MPL-2.0 -name: Scorecards supply-chain security +# SPDX-License-Identifier: PMPL-1.0-or-later +name: OSSF Scorecard on: - branch_protection_rule: - schedule: - - cron: '23 4 * * 1' push: - branches: [main] + branches: [main, master] + schedule: + - cron: '0 4 * * *' + workflow_dispatch: -permissions: read-all +permissions: + contents: read jobs: - analysis: - permissions: - security-events: write - id-token: write - uses: hyperpolymath/standards/.github/workflows/scorecard-reusable.yml@e0caf11508a3989574713c78f5f444f2ce5e33ef - secrets: inherit + scorecard: + uses: hyperpolymath/standards/.github/workflows/scorecard-reusable.yml@5a93d9d57cc04de4002d6d0ecd336fc7a8698910 diff --git a/.github/workflows/secret-scanner.yml b/.github/workflows/secret-scanner.yml index c041f5d..7bea43b 100644 --- a/.github/workflows/secret-scanner.yml +++ b/.github/workflows/secret-scanner.yml @@ -1,19 +1,26 @@ # SPDX-License-Identifier: MPL-2.0-or-later name: Secret Scanner - on: pull_request: push: branches: [main] - concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true - permissions: contents: read - jobs: scan: uses: hyperpolymath/standards/.github/workflows/secret-scanner-reusable.yml@3e4bd4c93911750727e2e4c66dff859e00079da0 + timeout-minutes: 10 secrets: inherit + trufflehog: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: TruffleHog Secret Scan + uses: trufflesecurity/trufflehog@main + with: + extra_args: --only-verified --fail diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 936c5c3..75f202c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,14 +10,11 @@ stages: - verify - test - deploy - variables: DEBIAN_FRONTEND: noninteractive - # ============================================================================ # Build Stage # ============================================================================ - build:typescript: stage: build image: node:18 @@ -29,7 +26,6 @@ build:typescript: - dist/ - node_modules/ expire_in: 1 hour - build:rescript: stage: build image: node:18 @@ -41,11 +37,9 @@ build:rescript: paths: - interpreters/rescript/lib/ expire_in: 1 hour - # ============================================================================ # Verification Stage # ============================================================================ - verify:coq: stage: verify image: coqorg/coq:latest @@ -59,7 +53,6 @@ verify:coq: - proofs/coq/**/*.vo expire_in: 1 day allow_failure: false - verify:z3: stage: verify image: ubuntu:22.04 @@ -69,7 +62,6 @@ verify:z3: - cd proofs/z3 - z3 cno_properties.smt2 allow_failure: false - verify:lean4: stage: verify image: leanprover/lean4:latest @@ -80,19 +72,16 @@ verify:lean4: paths: - proofs/lean4/.lake/ expire_in: 1 day - allow_failure: true # Lean 4 may not be fully set up - + allow_failure: true # Lean 4 may not be fully set up verify:isabelle: stage: verify image: makarius/isabelle:latest script: - isabelle build -D proofs/isabelle - allow_failure: true # Isabelle setup may vary - + allow_failure: true # Isabelle setup may vary # ============================================================================ # Test Stage # ============================================================================ - test:interpreters: stage: test image: python:3.10 @@ -100,7 +89,6 @@ test:interpreters: - python3 interpreters/brainfuck/brainfuck.py - python3 interpreters/whitespace/whitespace.py allow_failure: false - test:typescript: stage: test image: node:18 @@ -109,11 +97,9 @@ test:typescript: script: - npm test || echo "No tests configured yet" allow_failure: true - # ============================================================================ # Documentation # ============================================================================ - pages: stage: deploy image: node:18 @@ -128,11 +114,9 @@ pages: - public only: - main - # ============================================================================ # Multi-Prover Verification Summary # ============================================================================ - verify:summary: stage: verify image: ubuntu:22.04 @@ -140,18 +124,16 @@ verify:summary: - echo "==========================================" - echo "Multi-Prover Verification Summary" - echo "==========================================" - - echo "Coq: ✓ (if verify:coq passed)" - - echo "Z3: ✓ (if verify:z3 passed)" - - echo "Lean 4: ⚠ (if verify:lean4 passed, else optional)" + - echo "Coq: ✓ (if verify:coq passed)" + - echo "Z3: ✓ (if verify:z3 passed)" + - echo "Lean 4: ⚠ (if verify:lean4 passed, else optional)" - echo "Isabelle: ⚠ (if verify:isabelle passed, else optional)" - echo "" - echo "Multi-prover agreement increases confidence!" when: always - # ============================================================================ # Performance Benchmarks # ============================================================================ - benchmark:interpreters: stage: test image: python:3.10 @@ -160,11 +142,9 @@ benchmark:interpreters: - time python3 interpreters/brainfuck/brainfuck.py - time python3 interpreters/whitespace/whitespace.py allow_failure: true - # ============================================================================ # Code Quality # ============================================================================ - lint:typescript: stage: build image: node:18 @@ -172,22 +152,18 @@ lint:typescript: - npm install - npm run lint || echo "No linting configured" allow_failure: true - # ============================================================================ # Security Scanning # ============================================================================ - security:dependencies: stage: build image: node:18 script: - npm audit || echo "Dependency audit complete" allow_failure: true - # ============================================================================ # Release # ============================================================================ - release:tag: stage: deploy image: alpine:latest @@ -197,3 +173,8 @@ release:tag: only: - tags when: manual +trufflehog: + stage: security + image: trufflesecurity/trufflehog:latest + script: + - trufflehog git file://. --only-verified --fail diff --git a/.machine_readable/6a2/0-AI-MANIFEST.a2ml b/.machine_readable/6a2/0-AI-MANIFEST.a2ml new file mode 100644 index 0000000..6bf1f8c --- /dev/null +++ b/.machine_readable/6a2/0-AI-MANIFEST.a2ml @@ -0,0 +1,31 @@ +# AI Manifest for 6a2 Directory + +## Purpose + +This manifest declares the AI-assistant context for the 6a2 machine-readable metadata directory. + +## Canonical Locations + +The 6 core A2ML files MUST exist in this directory: +1. AGENTIC.a2ml +2. ECOSYSTEM.a2ml +3. META.a2ml +4. NEUROSYM.a2ml +5. PLAYBOOK.a2ml +6. STATE.a2ml + +## Invariants + +- No duplicate files in root directory +- Single source of truth: this directory is authoritative +- No stale metadata + +## Protocol + +When multiple agents may write to A2ML files concurrently: +1. Read file and record git-sha-at-read in [provenance] section +2. Lock by creating .lock- +3. Write updated file with new [provenance] metadata +4. Release by removing lock file +5. On conflict: re-read and retry if git-sha-at-read does not match HEAD + diff --git a/.machine_readable/6a2/README.adoc b/.machine_readable/6a2/README.adoc new file mode 100644 index 0000000..bc033d7 --- /dev/null +++ b/.machine_readable/6a2/README.adoc @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell +# A2ML 6a2 Directory + +This directory contains the 6 core A2ML machine-readable metadata files for this repository. + +## Files + +- `AGENTIC.a2ml` - AI agent operational gating, safety controls +- `ECOSYSTEM.a2ml` - Project ecosystem position, relationships, explicit boundaries +- `META.a2ml` - Architecture decisions (ADRs), development practices, design rationale +- `NEUROSYM.a2ml` - Symbolic semantics, composition algebra +- `PLAYBOOK.a2ml` - Executable plans, operational runbooks +- `STATE.a2ml` - Project state, phase, milestones, session history + +## Standards Compliance + +These files follow the A2ML Format Family specification from: +https://github.com/hyperpolymath/standards/tree/main/a2ml + +## Generation + +These files may be generated from .scm source files using transpilation tools. +Source .scm files should be removed after successful transpilation. + +## See Also + +- [A2ML Repository Template](https://github.com/hyperpolymath/standards/blob/main/A2ML-REPO-TEMPLATE.adoc) +- [6A2 Format Family](https://github.com/hyperpolymath/standards#a2ml-format-family-7-formats) + diff --git a/.machine_readable/6a2/anchor/0-AI-MANIFEST.a2ml b/.machine_readable/6a2/anchor/0-AI-MANIFEST.a2ml new file mode 100644 index 0000000..0dd6825 --- /dev/null +++ b/.machine_readable/6a2/anchor/0-AI-MANIFEST.a2ml @@ -0,0 +1,21 @@ +# AI Manifest for Anchor Directory + +## Purpose + +This manifest declares the AI-assistant context for the anchor machine-readable metadata directory. + +## Canonical Locations + +ANCHOR.a2ml files MUST exist in this directory. + +## Multiple Versions + +Unlike other A2ML files, multiple versions of ANCHOR.a2ml with different dates MAY exist. +Each version represents a specific recalibration point. + +## Invariants + +- Multiple versions with different dates are permitted +- No other A2ML files in this directory +- Single source of truth for anchor documents + diff --git a/.machine_readable/6a2/anchor/README.adoc b/.machine_readable/6a2/anchor/README.adoc new file mode 100644 index 0000000..bd23e35 --- /dev/null +++ b/.machine_readable/6a2/anchor/README.adoc @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell +# A2ML Anchor Directory + +This directory contains ANCHOR.a2ml files for project recalibration and scope intervention. + +## Files + +- `ANCHOR.a2ml` - Project recalibration, scope intervention, canonical authority + +## Multiple Versions + +Unlike other A2ML files, multiple versions of ANCHOR.a2ml with different dates may exist. +Each version represents a specific recalibration point in the project history. + +## Standards Compliance + +These files follow the ANCHOR.a2ml specification from: +https://github.com/hyperpolymath/standards/tree/main/anchor-a2ml + +## See Also + +- [A2ML Repository Template](https://github.com/hyperpolymath/standards/blob/main/A2ML-REPO-TEMPLATE.adoc) +- [Anchor A2ML Spec](https://github.com/hyperpolymath/standards/tree/main/anchor-a2ml) + diff --git a/.machine_readable/AGENTIC.scm b/.machine_readable/AGENTIC.scm deleted file mode 100644 index 3131977..0000000 --- a/.machine_readable/AGENTIC.scm +++ /dev/null @@ -1,16 +0,0 @@ -;; SPDX-License-Identifier: MPL-2.0 -;; AGENTIC.scm - AI agent interaction patterns for absolute-zero - -(define agentic-config - `((version . "1.0.0") - (claude-code - ((model . "claude-opus-4-5-20251101") - (tools . ("read" "edit" "bash" "grep" "glob")) - (permissions . "read-all"))) - (patterns - ((code-review . "thorough") - (refactoring . "conservative") - (testing . "comprehensive"))) - (constraints - ((languages . ()) - (banned . ("typescript" "go" "python" "makefile")))))) diff --git a/.machine_readable/ECOSYSTEM.scm b/.machine_readable/ECOSYSTEM.scm deleted file mode 100644 index 8458f0c..0000000 --- a/.machine_readable/ECOSYSTEM.scm +++ /dev/null @@ -1,37 +0,0 @@ -;; SPDX-License-Identifier: MPL-2.0 -;; ECOSYSTEM.scm - Ecosystem position for absolute-zero -;; Media-Type: application/vnd.ecosystem+scm - -(ecosystem - (version "1.0") - (name "absolute-zero") - (type "research-project") - (purpose "Formal verification of Certified Null Operations (CNOs): - programs proven to compute nothing. Multi-prover theorem proving - with thermodynamic, categorical, and quantum foundations.") - - (position-in-ecosystem - (category "formal-methods") - (subcategory "program-verification") - (unique-value - ("First formal treatment of computational nullity" - "Multi-prover verification across 6 proof systems" - "Category-theoretic model independence" - "Thermodynamic grounding via Landauer/Bennett"))) - - (related-projects - (("echidna" "sibling-standard" "Security scanning; potential CNO verifier integration") - ("echidnabot" "potential-consumer" "GitHub bot; could automate CNO checks in PRs") - ("valence-shell" "integration-target" "Filesystem ops library proven in FilesystemCNO.v") - ("rsr-template-repo" "infrastructure" "Repository standards template"))) - - (what-this-is - ("Formal verification research" - "Multi-prover theorem proving" - "Theoretical CS contribution" - "Bridge: computation theory <-> thermodynamics")) - - (what-this-is-not - ("Runtime library" - "Programming language" - "Production software"))) diff --git a/.machine_readable/META.scm b/.machine_readable/META.scm deleted file mode 100644 index 0fac187..0000000 --- a/.machine_readable/META.scm +++ /dev/null @@ -1,38 +0,0 @@ -;; SPDX-License-Identifier: MPL-2.0 -;; META.scm - Meta-level information for absolute-zero -;; Media-Type: application/meta+scheme - -(meta - (architecture-decisions - (("ADR-001" "accepted" "ProofIrrelevance for morphism equality in category theory") - ("ADR-002" "accepted" "Dual Landauer formalization: axiom (StatMech.v) + derivation (LandauerDerivation.v)") - ("ADR-003" "accepted" "Lambda CNO = identity property only, not termination") - ("ADR-004" "accepted" "post_execution_dist specialized for CNOs (identity on distributions)") - ("ADR-005" "proposed" "Fix QuantumCNO.v Cexp: real exp -> complex phase factor") - ("ADR-006" "accepted" "state_eq excludes state_pc — PC is control-flow bookkeeping, not observable side effect (2026-05-18 rescue)") - ("ADR-007" "accepted" "Discharge eval_deterministic Axiom → Theorem via step_deterministic_strong helper (2026-05-20, PR #24); first post-T0 axiom audit win") - ("ADR-008" "accepted" "Delete unsound eval_respects_state_eq_{left,right} axioms; weaken logically_reversible to =st= (observational reversibility); re-prove cno_eval_on_equal_states + cno_logically_reversible via cno_terminates + cno_preserves_state (2026-05-20)") - ("ADR-009" "accepted" "Delete unsound alignmentMatchesPlatformWord Idris2 postulate (HasAlignment carries no evidence; would derive So (1 mod 8 == 0) from CNOResultLayout.alignment); replace single consumer with per-Platform decidable proof. Consolidate remaining alignedSizeCorrect postulate into shared AbsoluteZero.ABI.Proofs.DivMod module as the estate-wide div/mod lemma surface (absolute-zero#27, civic-connect alignUpDivides/mkFieldsAligned/offsetInBoundsPrf migrate here)") - ("ADR-010" "accepted" "Phase 1 per-axiom triage of 72 Coq Axioms per standards#203 trusted-base policy (2026-05-27, PR #58): 52 §c TRUSTED-BASE + 17 §a DISCHARGE backlog + 3 §b PROPERTY-TEST; canonical disposition in docs/proof-debt-triage.md") - ("ADR-011" "accepted" "Phase 2a–2e Lean triage + inline annotations across Lambda, CNOCategory, Filesystem, Quantum, StatMech clusters (2026-05-27, PRs #60/#61/#62/#63/#66): 52 Lean axioms classified (49 §c + 3 §d); 4 §d Coq DISCHARGE entries surfaced for Physics cluster") - ("ADR-012" "accepted" "Follow-ups 1–3 consolidation: physics constants → common/PhysicsConstants.v, statmech basis (prob_*/state_dec/shannon_entropy*) → common/StatMechBasis.v, dead QuantumMechanicsExact.v duplicates of unitary_preserves_entropy + no_cloning removed (2026-05-27, PR #67); net 129 → 118 trusted-base markers (−11)"))) - - (development-practices - (code-style "Coq proof engineering") - (security - (principle "Defense in depth")) - (testing "Multi-prover cross-validation") - (versioning "SemVer") - (documentation "AsciiDoc") - (branching "main for stable") - (proof-methodology - ("Prefer Qed over Admitted" - "Axiomatize physical laws" - "Document all Admitted with rationale" - "Separate helpers into dedicated files"))) - - (design-rationale - ("CNOs are identity morphisms in categories" - "Multi-prover for maximum confidence" - "Thermodynamic grounding via Landauer/Bennett" - "Progressive: axiom -> theorem -> verified"))) diff --git a/.machine_readable/NEUROSYM.scm b/.machine_readable/NEUROSYM.scm deleted file mode 100644 index 7d505de..0000000 --- a/.machine_readable/NEUROSYM.scm +++ /dev/null @@ -1,13 +0,0 @@ -;; SPDX-License-Identifier: MPL-2.0 -;; NEUROSYM.scm - Neurosymbolic integration config for absolute-zero - -(define neurosym-config - `((version . "1.0.0") - (symbolic-layer - ((type . "scheme") - (reasoning . "deductive") - (verification . "formal"))) - (neural-layer - ((embeddings . false) - (fine-tuning . false))) - (integration . ()))) diff --git a/.machine_readable/PLAYBOOK.scm b/.machine_readable/PLAYBOOK.scm deleted file mode 100644 index 6db4d05..0000000 --- a/.machine_readable/PLAYBOOK.scm +++ /dev/null @@ -1,13 +0,0 @@ -;; SPDX-License-Identifier: MPL-2.0 -;; PLAYBOOK.scm - Operational runbook for absolute-zero - -(define playbook - `((version . "1.0.0") - (procedures - ((deploy . (("build" . "just build") - ("test" . "just test") - ("release" . "just release"))) - (rollback . ()) - (debug . ()))) - (alerts . ()) - (contacts . ()))) diff --git a/.machine_readable/contractiles/Adjustfile.a2ml b/.machine_readable/contractiles/Adjustfile.a2ml new file mode 100644 index 0000000..6f01e89 --- /dev/null +++ b/.machine_readable/contractiles/Adjustfile.a2ml @@ -0,0 +1,72 @@ +# SPDX-License-Identifier: MPL-2.0 +# Adjustfile — Drift-tolerance contract for rsr-template-repo +# Author: Jonathan D.A. Jewell +# +# Cumulative-drift catchment: tolerance bands + corrective actions. +# Authority: advisory (Yard) — continue-with-warnings; auto_fix where deterministic. +# Run with: adjust check +# Fix with: adjust fix (applies deterministic patches; advisory otherwise) + +@abstract: +Drift tolerances and corrective actions for rsr-template-repo. Unlike +MUST (hard gate), ADJUST tracks cumulative drift against tolerance bands +and proposes corrective actions. Advisory — it warns and trends, it does +not block. +@end + +## Template Drift + +### placeholder-drift +- description: Template placeholders should be replaced when copied +- tolerance: 0 placeholder markers in copied repos +- corrective: Search and replace all {{PLACEHOLDER}} markers +- severity: advisory +- notes: This check only applies to repos that copied from this template + +### template-version-drift +- description: Template version should match RSR spec version +- tolerance: Template version matches current RSR spec +- corrective: Update template to match latest RSR spec +- severity: advisory + +## Documentation Drift + +### readme-completeness +- description: README should document all template features +- tolerance: README covers all contractiles and directory structure +- corrective: Update README.adoc with missing sections +- severity: advisory + +### example-accuracy +- description: Examples in documentation should match actual template content +- tolerance: All code examples in docs are accurate +- corrective: Audit and fix examples in documentation +- severity: advisory + +## Structural Drift + +### contractile-sync +- description: All contractiles should have matching a2ml and ncl implementations +- tolerance: Every .a2ml has a corresponding .ncl +- corrective: Generate missing .ncl files from .a2ml +- severity: advisory + +### no-broken-symlinks +- description: No broken symbolic links in template structure +- tolerance: 0 broken symlinks +- corrective: Run symlink-check script +- severity: advisory + +## Accessibility Drift + +### adoc-not-md +- description: Template docs should prefer AsciiDoc +- tolerance: New prose docs are *.adoc +- corrective: Convert any new *.md to *.adoc +- severity: advisory + +### spdx-header-consistency +- description: All template files have correct SPDX headers +- tolerance: 0 files missing SPDX-License-Identifier +- corrective: Add SPDX headers to files that need them +- severity: advisory diff --git a/.machine_readable/contractiles/Intentfile.a2ml b/.machine_readable/contractiles/Intentfile.a2ml new file mode 100644 index 0000000..ef74f45 --- /dev/null +++ b/.machine_readable/contractiles/Intentfile.a2ml @@ -0,0 +1,99 @@ +# SPDX-License-Identifier: MPL-2.0 +# Intentfile (A2ML Canonical) — north-star contractile for rsr-template-repo +# Author: Jonathan D.A. Jewell +# +# Paired runner: intend.ncl +# Verb: intend +# +# Semantics: North-star contractile. Declares BOTH concrete committed +# next-actions AND horizon aspirations the project wishes to +# become. Two sections share one file because they answer +# the same question at different ranges: +# [[intents]] — "we WILL do this; track progress" +# status: declared → in_progress → done | +# deferred | retired +# [[wishes]] — "we WISH this were true; revisit later" +# status: declared → in_progress → achieved | +# abandoned +# grouped by horizon: near / mid / far. +# Non-gating — this is a report, not a gate. See the `must` +# contractile for hard gates. + +@abstract: +North-star contractile for rsr-template-repo. This repository is the +canonical template for Rhodium Standard Repository compliance. It provides +the scaffold that all hyperpolymath repos should copy and customize. +@end + +## Purpose + +The rsr-template-repo serves as the master template for all hyperpolymath +repositories. It contains the complete set of contractile files, machine-readable +specifications, and governance documentation that define the Rhodium Standard. + +Every new repository in the hyperpolymath estate should be initialized by +copying this template and substituting the placeholder values with +repo-specific content. + +## Anti-Purpose + +This repository is NOT: +- A general-purpose project scaffold for external use (hyperpolymath-only) +- A replacement for per-repo customization (all files must be bespoke) +- A static template that never changes (evolves with RSR spec) +- A runtime library or framework (build-time only) + +## If In Doubt + +If you are unsure whether a change is in scope, ask. Sensitive areas: +- .machine_readable/ contractile definitions +- RSR specification files +- Governance templates +- License policy documents + +## Committed Next-Actions + +### repo-initialization +- description: Provide just copy-and-substitute template for new repos +- probe: test -f scripts/init-repo.sh +- status: done +- notes: Run with source scripts/init-repo.sh + +### contractile-completeness +- description: Every RSR contractile has an a2ml and ncl implementation +- probe: ls .machine_readable/contractiles/*.a2ml | wc -l | grep -q "^6$" +- status: in_progress +- notes: Currently 6 contractile verbs: intend, must, trust, adjust, bust, dust + +### automation-scripts +- description: All repetitive tasks have just recipes +- probe: grep -c "^# " Justfile | grep -q "^[6-9][0-9]*$" +- status: in_progress + +## Wishes + +### Near Horizon + +#### cross-repo-validation +- description: Tooling to validate all repos against RSR spec +- horizon: near +- status: declared + +#### automated-substitution +- description: Script to automate repo-specific substitution in template +- horizon: near +- status: declared + +### Mid Horizon + +#### formal-verification +- description: Idris2 proofs for all critical contractile invariants +- horizon: mid +- status: declared + +### Far Horizon + +#### ecosystem-visualization +- description: Interactive graph of all hyperpolymath repos and dependencies +- horizon: far +- status: declared diff --git a/.machine_readable/contractiles/Justfile b/.machine_readable/contractiles/Justfile new file mode 100644 index 0000000..59a033e --- /dev/null +++ b/.machine_readable/contractiles/Justfile @@ -0,0 +1,415 @@ +# Absolute Zero Build Automation +# +# Modern build automation using `just` (https://github.com/casey/just) +# Install: cargo install just +# +# Author: Jonathan D. A. Jewell +# Project: Absolute Zero + +# Default recipe (show help) +default: + @just --list + +# ============================================================================ +# Build Commands +# ============================================================================ + +# Build everything +build-all: build-rescript 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 Coq proofs +build-coq: + @echo "Building Coq proofs..." + @if command -v coqc >/dev/null 2>&1; then \ + cd proofs/coq/common && coqc CNO.v && \ + cd ../physics && coqc -R ../common CNO StatMech.v && \ + coqc -R ../common CNO LandauerDerivation.v && \ + cd ../quantum && coqc -R ../common CNO QuantumMechanicsExact.v && \ + cd ../malbolge && coqc -R ../common CNO MalbolgeCore.v && \ + echo "✓ Coq proofs compiled"; \ + else \ + echo "⚠ coqc not found, skipping Coq build"; \ + fi + +# Build Lean 4 proofs +build-lean: + @echo "Building Lean 4 proofs..." + cd proofs/lean4 && lake build + +# Build Agda proofs +build-agda: + @echo "Building Agda proofs..." + cd proofs/agda && agda CNO.agda + +# Build Isabelle/HOL proofs +build-isabelle: + @echo "Building Isabelle/HOL proofs..." + isabelle build -D proofs/isabelle + +# Build TypeScript +build-typescript: + @echo "Building TypeScript..." + npm run build + @echo "✓ TypeScript compiled" + +# ============================================================================ +# Verification Commands +# ============================================================================ + +# Verify all proofs +verify-all: verify-coq verify-z3 verify-lean verify-agda verify-isabelle + @echo "✓ All verifications complete" + +# Verify Coq proofs +verify-coq: build-coq + @echo "✓ Coq proofs verified" + +# Verify Z3 SMT properties +verify-z3: + @echo "Verifying Z3 SMT properties..." + @if command -v z3 >/dev/null 2>&1; then \ + z3 proofs/z3/cno_properties.smt2 && echo "✓ Z3 verification complete"; \ + else \ + echo "⚠ z3 not found, skipping Z3 verification"; \ + fi + +# Verify Lean 4 proofs +verify-lean: + @echo "Verifying Lean 4 proofs..." + cd proofs/lean4 && lake build + +# Verify Agda proofs +verify-agda: build-agda + @echo "✓ Agda proofs verified" + +# Verify Isabelle/HOL proofs +verify-isabelle: build-isabelle + @echo "✓ Isabelle/HOL proofs verified" + +# ============================================================================ +# Testing Commands +# ============================================================================ + +# Run all tests +test-all: test-interpreters test-proofs + @echo "✓ All tests passed" + +# Test interpreters +test-interpreters: + @echo "Testing Brainfuck interpreter..." + python3 interpreters/brainfuck/brainfuck.py + @echo "" + @echo "Testing Whitespace interpreter..." + python3 interpreters/whitespace/whitespace.py + +# Test proofs +test-proofs: + @echo "Testing proof verification..." + just verify-z3 + +# Run TypeScript tests (when available) +test-typescript: + npm test + +# ============================================================================ +# Example Execution +# ============================================================================ + +# Run example CNO +run-example LANG FILE: + @echo "Running {{LANG}} example: {{FILE}}" + @just run-{{LANG}} {{FILE}} + +# Run Brainfuck example +run-brainfuck FILE: + python3 interpreters/brainfuck/brainfuck.py examples/brainfuck/{{FILE}} + +# Run Whitespace example +run-whitespace FILE: + python3 interpreters/whitespace/whitespace.py examples/whitespace/{{FILE}} + +# Run Malbolge example (ReScript) +run-malbolge FILE: + cd interpreters/rescript && node -e "require('./malbolgeInterpreter.bs.js').execute('$(cat ../../examples/malbolge/{{FILE}})')" + +# ============================================================================ +# Documentation +# ============================================================================ + +# Generate documentation +docs: + @echo "Generating documentation..." + @echo "Theoretical foundations: docs/theory.md" + @echo "Examples: docs/examples.md" + @echo "Proof guide: docs/proofs-guide.md" + @echo "Philosophy: docs/philosophy.md" + +# View documentation +view-docs: + @echo "Documentation files:" + @ls -lh docs/ + +# ============================================================================ +# Cleanup +# ============================================================================ + +# Clean all build artifacts +clean: clean-coq clean-lean clean-typescript clean-rescript + @echo "✓ All build artifacts cleaned" + +# Clean Coq artifacts +clean-coq: + @echo "Cleaning Coq artifacts..." + find proofs/coq -name "*.vo" -delete + find proofs/coq -name "*.vok" -delete + find proofs/coq -name "*.vos" -delete + find proofs/coq -name "*.glob" -delete + find proofs/coq -name ".*.aux" -delete + +# Clean Lean artifacts +clean-lean: + @echo "Cleaning Lean artifacts..." + cd proofs/lean4 && lake clean + +# Clean TypeScript artifacts +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 + +# ============================================================================ +# Development +# ============================================================================ + +# Watch TypeScript for changes +watch: + npm run watch + +# Format code +format: + @echo "Formatting code..." + cd interpreters/rescript && npx rescript format + +# Lint code +lint: + @echo "Linting TypeScript..." + npm run lint || true + +# ============================================================================ +# CI/CD +# ============================================================================ + +# Run CI pipeline locally +ci: build-all test-all verify-all + @echo "✓ CI pipeline completed successfully" + +# ============================================================================ +# Installation +# ============================================================================ + +# Install dependencies +install: install-npm install-python + @echo "✓ Dependencies installed" + +# Install npm dependencies +install-npm: + @echo "Installing npm dependencies..." + npm install + +# Install Python dependencies +install-python: + @echo "Installing Python dependencies..." + pip3 install --user pytest hypothesis + +# Install proof assistants (Fedora) +install-provers-fedora: + @echo "Installing proof assistants (Fedora)..." + sudo dnf install -y coq z3 nodejs opam + npm install -g rescript@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 + +# ============================================================================ +# Container (Podman/Docker) +# ============================================================================ + +# Build container image (Podman preferred) +container-build: + @echo "Building container image..." + podman build -t absolute-zero:latest . + +# Run verification in container +container-verify: + @echo "Running verification in container..." + podman run --rm absolute-zero:latest just verify-all + +# Run container interactively +container-shell: + @echo "Starting interactive shell..." + podman run --rm -it absolute-zero:latest /bin/bash + +# Run all language examples in container +container-test-all: + @echo "Testing all languages in container..." + podman run --rm absolute-zero:latest just test-all + +# Docker compatibility aliases +docker-build: container-build +docker-verify: container-verify + +# ============================================================================ +# Research +# ============================================================================ + +# Generate LaTeX paper +paper: + @echo "Generating research paper..." + cd papers && pdflatex main.tex + +# Count lines of code +stats: + @echo "Project statistics:" + @echo "" + @echo "Proof code:" + @find proofs -name "*.v" -o -name "*.lean" -o -name "*.agda" -o -name "*.thy" -o -name "*.miz" -o -name "*.smt2" | xargs wc -l | tail -1 + @echo "" + @echo "Implementation code:" + @find interpreters ts -name "*.res" -o -name "*.py" -o -name "*.ts" | xargs wc -l | tail -1 + @echo "" + @echo "Documentation:" + @find docs -name "*.md" | xargs wc -l | tail -1 + @echo "" + @echo "Total:" + @find . -name "*.v" -o -name "*.lean" -o -name "*.agda" -o -name "*.thy" -o -name "*.miz" -o -name "*.smt2" -o -name "*.res" -o -name "*.py" -o -name "*.ts" -o -name "*.md" | xargs wc -l | tail -1 + +# Check proof completion status +proof-status: + @echo "=== Proof Completion Status ===" + @echo "" + @echo "Coq proofs:" + @admitted=$$(grep -r "Admitted\." proofs/coq/ 2>/dev/null | wc -l); \ + total=$$(grep -r "Theorem\|Lemma\|Corollary" proofs/coq/ 2>/dev/null | wc -l); \ + if [ $$total -gt 0 ]; then \ + complete=$$((total - admitted)); \ + percent=$$((complete * 100 / total)); \ + echo " Theorems: $$total"; \ + echo " Complete: $$complete"; \ + echo " Admitted: $$admitted"; \ + echo " Completion: $$percent%"; \ + else \ + echo " No Coq files found"; \ + fi + @echo "" + @echo "Lean 4 proofs:" + @sorry=$$(grep -r "sorry" proofs/lean4/ 2>/dev/null | wc -l); \ + total=$$(grep -r "theorem\|lemma" proofs/lean4/ 2>/dev/null | wc -l); \ + if [ $$total -gt 0 ]; then \ + complete=$$((total - sorry)); \ + percent=$$((complete * 100 / total)); \ + echo " Theorems: $$total"; \ + echo " Complete: $$complete"; \ + echo " Sorry: $$sorry"; \ + echo " Completion: $$percent%"; \ + else \ + echo " No Lean files found"; \ + fi + @echo "" + @echo "Z3 SMT specifications:" + @theorems=$$(grep -c "assert.*theorem" proofs/z3/cno_properties.smt2 2>/dev/null || echo 0); \ + echo " Theorems: $$theorems" + +# ============================================================================ +# Help +# ============================================================================ + +# Show detailed help +help: + @echo "Absolute Zero - Build Automation" + @echo "" + @echo "Common commands:" + @echo " just build-all - Build everything" + @echo " just verify-all - Verify all proofs" + @echo " just test-all - Run all tests" + @echo " just clean - Clean build artifacts" + @echo " just ci - Run full CI pipeline" + @echo "" + @echo "For all commands: just --list" + +# ============================================================================ +# Elm GUI Playground +# ============================================================================ + +# Build Elm playground +build-elm: + @echo "Building Elm playground..." + @if command -v elm >/dev/null 2>&1; then \ + cd elm && elm make src/Main.elm --output=dist/main.js && echo "✓ Elm compiled"; \ + else \ + echo "⚠ elm not found, skipping Elm build"; \ + fi + +# Run Elm playground (opens in browser) +run-elm: build-elm + @echo "Opening Elm playground..." + @python3 -m http.server 8000 & + @sleep 2 + @xdg-open http://localhost:8000/elm-playground.html || open http://localhost:8000/elm-playground.html + +# Clean Elm artifacts +clean-elm: + @echo "Cleaning Elm artifacts..." + rm -rf elm/dist elm/elm-stuff + + +# ============================================================================ +# ECHIDNA Integration (Neurosymbolic Proof Assistant) +# ============================================================================ + +# List all Admitted proofs needing completion +echidna-list: + @./scripts/use-echidna.sh list-admitted + +# Get tactic suggestions for a proof file +echidna-suggest FILE: + @./scripts/use-echidna.sh suggest {{FILE}} + +# Attempt to auto-complete proofs in a file +echidna-complete FILE: + @./scripts/use-echidna.sh complete {{FILE}} + +# Verify all proofs with multi-prover consensus +echidna-verify: + @./scripts/use-echidna.sh verify-all + +# Start ECHIDNA interactive REPL +echidna-repl: + @./scripts/use-echidna.sh repl + +# Check ECHIDNA installation +echidna-check: + @echo "Checking ECHIDNA installation..." + @if [ -x ~/Documents/hyperpolymath-repos/echidna/target/release/echidna ]; then \ + echo "✓ ECHIDNA binary found"; \ + ~/Documents/hyperpolymath-repos/echidna/target/release/echidna --version; \ + else \ + echo "❌ ECHIDNA not built. Run:"; \ + echo " cd ~/Documents/hyperpolymath-repos/echidna && cargo build --release"; \ + fi + + +secret-scan-trufflehog: + @command -v trufflehog >/dev/null && trufflehog filesystem . --only-verified || true diff --git a/.machine_readable/contractiles/Mustfile.a2ml b/.machine_readable/contractiles/Mustfile.a2ml new file mode 100644 index 0000000..55f8ab4 --- /dev/null +++ b/.machine_readable/contractiles/Mustfile.a2ml @@ -0,0 +1,102 @@ +# SPDX-License-Identifier: MPL-2.0 +# Mustfile — Physical state contract for rsr-template-repo +# Author: Jonathan D.A. Jewell +# +# What MUST be true about this repository. Hard requirements. +# Run with: must check +# Fix with: must fix (where a deterministic fix exists) + +@abstract: +Physical-state invariants for rsr-template-repo. This is the canonical +RSR template repository. These are hard requirements — CI and pre-commit +hooks fail if any check fails. +@end + +## File Presence + +### license-present +- description: LICENSE file must exist +- run: test -f LICENSE +- severity: critical + +### readme-present +- description: README.adoc must exist +- run: test -f README.adoc +- severity: critical + +### security-policy +- description: SECURITY.md must exist +- run: test -f SECURITY.md +- severity: critical + +### ai-manifest +- description: 0-AI-MANIFEST.a2ml must exist +- run: test -f 0-AI-MANIFEST.a2ml +- severity: critical + +### governance-docs +- description: GOVERNANCE.adoc, MAINTAINERS.adoc, CODEOWNERS must exist +- run: test -f GOVERNANCE.adoc && test -f MAINTAINERS.adoc && test -f .github/CODEOWNERS +- severity: critical + +### machine-readable-dir +- description: .machine_readable/ directory must exist +- run: test -d .machine_readable +- severity: critical + +## Directory Structure + +### contractiles-complete +- description: All required contractile directories exist +- run: test -d .machine_readable/contractiles && test -d .machine_readable/contractiles/bust && test -d .machine_readable/contractiles/dust +- severity: critical + +### contractiles-files-present +- description: All four primary contractile files exist +- run: test -f .machine_readable/contractiles/Intentfile.a2ml && test -f .machine_readable/contractiles/Mustfile.a2ml && test -f .machine_readable/contractiles/Trustfile.a2ml && test -f .machine_readable/contractiles/Adjustfile.a2ml +- severity: critical + +### bust-dust-files-present +- description: Bustfile and Dustfile exist in their directories +- run: test -f .machine_readable/contractiles/bust/Bustfile.a2ml && test -f .machine_readable/contractiles/dust/Dustfile.a2ml +- severity: critical + +### six-directory-present +- description: 6a2 directory exists with required files +- run: test -d .machine_readable/6a2 && test -f .machine_readable/6a2/META.a2ml && test -f .machine_readable/6a2/ECOSYSTEM.a2ml && test -f .machine_readable/6a2/STATE.a2ml && test -f .machine_readable/6a2/PLAYBOOK.a2ml && test -f .machine_readable/6a2/AGENTIC.a2ml && test -f .machine_readable/6a2/NEUROSYM.a2ml +- severity: critical + +### anchors-directory +- description: anchors directory exists in 6a2 +- run: test -d .machine_readable/6a2/anchors +- severity: warning + +### self-validating-structure +- description: self-validating directory has k9-svc and examples +- run: test -d .machine_readable/self-validating && test -d .machine_readable/self-validating/k9-svc && test -d .machine_readable/self-validating/examples +- severity: warning + +## Template Integrity + +### no-placeholder-values +- description: No placeholder values remain in template files +- run: test -z "$(grep -r '{{' .machine_readable/contractiles/ 2>/dev/null)" +- severity: critical +- notes: All placeholders must be substituted when copying this template + +### template-readonly +- description: Template marker files are not modified +- run: grep -q 'RSR_TEMPLATE_DO_NOT_EDIT' .machine_readable/0.1-AI-MANIFEST.a2ml +- severity: warning + +## Git State + +### no-untracked-contractiles +- description: All contractile files are tracked in git +- run: test -z "$(git ls-files -o --exclude-standard .machine_readable/contractiles/ 2>/dev/null)" +- severity: critical + +### signed-commits +- description: All commits must be signed +- run: git verify-commit HEAD +- severity: critical diff --git a/.machine_readable/contractiles/Trustfile.a2ml b/.machine_readable/contractiles/Trustfile.a2ml new file mode 100644 index 0000000..e2028b5 --- /dev/null +++ b/.machine_readable/contractiles/Trustfile.a2ml @@ -0,0 +1,88 @@ +# SPDX-License-Identifier: MPL-2.0 +# Trustfile — Trust boundaries and integrity invariants for rsr-template-repo +# Author: Jonathan D.A. Jewell +# +# Defines what LLM/SLM agents are trusted to do without asking, and +# integrity invariants that verify the repo has not been tampered with. + +@abstract: +Trust boundaries and integrity checks for rsr-template-repo. This file +combines the trust-level definitions from the original TRUST.contractile +with the integrity invariants from the old Trustfile.a2ml. It defines +what AI agents may do autonomously and what requires human approval, +plus checks that verify repository integrity. +@end + +## Trust Levels + +The rsr-template-repo operates at trust level: maximal + +Trust levels: +- maximal: Agent may read, build, test, lint, format, heal freely. + Only destructive/external actions require approval. +- standard: Agent may read and build. Test/lint need approval. +- restricted: Agent may read only. All modifications need approval. +- minimal: Agent may read specific files only. Everything else blocked. + +Current trust level: maximal + +## Integrity Invariants + +### Secrets + +#### no-secrets-committed +- description: No credential files in repo +- run: test ! -f .env && test ! -f credentials.json && test ! -f .env.local && test ! -f .env.production +- severity: critical + +#### no-private-keys +- description: No private key files committed +- run: "! find . -name '*.pem' -o -name '*.key' -o -name 'id_rsa' -o -name 'id_ed25519' 2>/dev/null | grep -v node_modules | head -1 | grep -q ." +- severity: critical + +#### no-tokens-in-source +- description: No hardcoded API tokens in source +- run: "! grep -rE '(api[_-]?key|secret|token|password)\s*[:=]\s*[\"'\\''][A-Za-z0-9]{16,}' --include='*.js' --include='*.ts' --include='*.res' --include='*.py' . 2>/dev/null | grep -v node_modules | head -1 | grep -q ." +- severity: critical + +## Provenance + +#### author-correct +- description: Git author matches expected identity +- run: "git log -1 --format='%ae' | grep -qE '(hyperpolymath|j\\.d\\.a\\.jewell)'" +- severity: warning + +#### license-content +- description: LICENSE contains expected identifier +- run: grep -q 'PMPL\|MPL\|MIT\|Apache\|LGPL' LICENSE +- severity: warning + +## Template-Specific Trust + +### template-files-readonly +- description: Template scaffold files should not be modified except by maintainer +- run: test -z "$(git status --short .machine_readable/ 2>/dev/null | grep -v '^??' || true)" +- severity: advisory +- notes: Changes to template files require careful review + +### trust-deny-areas +- description: Sensitive areas from INTENT.contractile require explicit approval +- run: echo "Check .machine_readable/ contractiles and governance docs" +- severity: advisory +- areas: + - .machine_readable/ + - GOVERNANCE.adoc + - MAINTAINERS.adoc + - .github/CODEOWNERS + +## Container Security + +#### container-images-pinned +- description: Containerfile uses pinned base images +- run: test ! -f Containerfile || grep -q 'cgr.dev\|@sha256:' Containerfile +- severity: warning + +#### no-dockerfile +- description: No Dockerfile (use Containerfile) +- run: test ! -f Dockerfile +- severity: warning diff --git a/.machine_readable/contractiles/bust/Bustfile.a2ml b/.machine_readable/contractiles/bust/Bustfile.a2ml deleted file mode 100644 index fcda3df..0000000 --- a/.machine_readable/contractiles/bust/Bustfile.a2ml +++ /dev/null @@ -1,28 +0,0 @@ -// Bustfile.a2ml — meta-repo bust contractile (breakage / rollback) -// SPDX-License-Identifier: MPL-2.0 - -Bust { - name: "absolute-zero" - version: "1.0.0" - description: "Rollback procedures when something breaks in the meta-repo" - - scenarios: { - "bad-pointer-bump": "git revert in meta-repo; child repo itself untouched" - "submodule-pointer-points-at-missing-sha": "git submodule update --init --checkout resets child to parent-recorded SHA; OR revert the stale bump commit" - "submodule-orphan-after-local-only-commit": "roll back locally with git reset to before the stranded commit; fix remote situation before re-attempting" - "accidental-private-repo-content-leaked-to-public-submodule": "hard-rotate the leaked secret immediately; git-filter-repo or BFG on the submodule's own history; public re-publication only after rotation complete" - } - - escalation-ladder: [ - "1. revert the meta-repo commit (reversible, low blast radius)", - "2. reset the local submodule clone (affects only local workspace)", - "3. force-push to main — PROHIBITED without explicit user confirmation (violates branch protection)", - "4. registry-level (delete/archive the GitHub repo) — human-only action, never by AI" - ] - - backup-points: [ - "GitHub serves as the durable backup for every submodule's own history", - "Meta-repo history on origin/main is the durable backup for pointer state", - "Local backup tags (backup/pre--) retained on risky rewrites" - ] -} diff --git a/.machine_readable/contractiles/bust/bust.ncl b/.machine_readable/contractiles/bust/bust.ncl deleted file mode 100644 index fc8cb8c..0000000 --- a/.machine_readable/contractiles/bust/bust.ncl +++ /dev/null @@ -1,66 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Bust — error-handling / failure-recovery runner -# -# Pairs with: Bustfile.a2ml (same directory) -# Verb: bust -# Semantics: every declared failure mode must have a recovery path that has -# been exercised. Runner injects failures (via declared probes) -# and verifies the recovery path works. Hard gate on any -# failure-mode with missing or broken recovery. -# CLI: `contractile bust check` → list failure modes + recovery status -# `contractile bust drill` → inject declared failures, verify recovery -# -# Anything else in this directory is human-only notes/archive; machines ignore. -# -# Base: ../_base.ncl provides pedigree_schema, run_defaults, probe_schema. -# See: docs/CONTRACTILE-SPEC.adoc - -let base = import "../_base.ncl" in - -{ - pedigree = base.pedigree_schema & { - contractile_verb = "bust", - semantics = "error handling + failure recovery", - security = { - leash = 'Kennel, - trust_level = "controlled failure injection; scoped to system-under-test", - allow_network = false, - allow_filesystem_write = true, # drills may write transient state (tmp dirs, test DBs) - allow_subprocess = true, - injection_scope = "system-under-test-only", - }, - metadata = { - name = "bust-runner", - version = "1.0.0", - description = "Exercises declared failure modes and verifies recovery paths. Hard-gates on any failure mode without working recovery.", - paired_xfile = "Bustfile.a2ml", - author = "Jonathan D.A. Jewell ", - }, - }, - - schema = { - failure_modes - | Array { - id | String, - description | String, - class | [| 'network, 'disk_full, 'oom, 'timeout, 'partial_write, 'panic, 'crash, 'rollback, 'concurrency |], - # TODO: migrate to base.probe_schema (structured probe) when CLI supports it - injection_probe | String, # command that deterministically causes this failure - # TODO: migrate to base.probe_schema (structured probe) when CLI supports it - recovery_probe | String, # command that verifies recovery (exit 0 = recovered) - expected_recovery_time_seconds | Number | default = 30, - # status_core values: 'declared, 'verified, 'failing; bust adds 'drilled - status | [| 'declared, 'drilled, 'verified, 'failing |] | default = 'declared, - notes | String | optional, - }, - }, - - # Runner behaviour — inherits from base.run_defaults. - # bust adds record_recovery_times for performance tier feeding. - run = base.run_defaults & { - on_any_fail = "exit-nonzero", # missing or broken recovery blocks merge - report_format = "a2ml", - emit_summary = true, - record_recovery_times = true, # feeds the performance tier - }, -} diff --git a/.machine_readable/contractiles/trust/Trustfile.a2ml b/.machine_readable/contractiles/trust/Trustfile.a2ml deleted file mode 100644 index bfb1b5b..0000000 --- a/.machine_readable/contractiles/trust/Trustfile.a2ml +++ /dev/null @@ -1,93 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Trustfile — Integrity and provenance verification for absolute-zero -# Author: Jonathan D.A. Jewell -# -# STATUS: SCAFFOLD ONLY — contractile runner NOT enabled. -# Do NOT activate any runner until Jonathan has reviewed this file. -# When activating: uncomment the [runner] section below and test locally first. - -@abstract: -Integrity invariants for the absolute-zero repository. Verifies that no -secrets have been committed, provenance is traceable, and dangerous proof -patterns (sorry/Admitted without rationale) stay within known bounds. -@end - -# [runner] -# DISABLED — scaffold only. To enable, uncomment and configure: -# command = "just trust-check" -# on-push = false -# on-pr = false - -## Secrets - -### no-secrets-committed -- description: No credential files in repo -- run: test ! -f .env && test ! -f credentials.json && test ! -f .env.local && test ! -f .env.production -- severity: critical - -### no-private-keys -- description: No private key files committed -- run: "! find . -name '*.pem' -o -name '*.key' -o -name 'id_rsa' -o -name 'id_ed25519' 2>/dev/null | grep -v node_modules | head -1 | grep -q ." -- severity: critical - -### no-tokens-in-source -- description: No hardcoded API tokens in source files -- run: "! grep -rE '(api[_-]?key|secret|token|password)\s*[:=]\s*[\"'\'''][A-Za-z0-9]{16,}' --include='*.js' --include='*.res' --include='*.py' --include='*.rs' . 2>/dev/null | grep -v node_modules | head -1 | grep -q ." -- severity: critical - -## Provenance - -### author-correct -- description: Git author matches expected identity -- run: "git log -1 --format='%ae' | grep -qE '(hyperpolymath|j\\.d\\.a\\.jewell)'" -- severity: warning - -### license-content -- description: LICENSE contains expected PMPL/MPL identifier -- run: grep -q 'PMPL\|MPL' LICENSE -- severity: warning - -## Container Security - -### container-images-pinned -- description: Containerfile uses pinned/Chainguard base images -- run: test ! -f Containerfile || grep -q 'cgr.dev\|@sha256:' Containerfile -- severity: warning - -### no-dockerfile -- description: No Dockerfile (use Containerfile) -- run: test ! -f Dockerfile -- severity: warning - -## Dangerous Patterns - -### no-dangerous-proof-patterns -- description: No believe_me, assert_total, unsafeCoerce, Obj.magic in non-proof source -- run: "! grep -rE 'believe_me|assert_total|unsafeCoerce|Obj\\.magic' --include='*.idr' --include='*.ml' --include='*.hs' --include='*.rs' . 2>/dev/null | head -1 | grep -q ." -- severity: critical - -### lean4-sorry-bounded -- description: Lean 4 sorry count does not exceed known baseline (18) -- run: "count=$(grep -rn 'sorry' proofs/lean4/ 2>/dev/null | grep -v '^\s*--' | wc -l); test \"$count\" -le 18" -- severity: high -# NOTE: baseline is 18 sorries as of 2026-04-17; blocked on mathlib build. -# Update the threshold only after resolving entries in coordination with Jonathan. - -### coq-admitted-bounded -- description: Coq Admitted count does not exceed known baseline (19) -- run: "count=$(grep -rn 'Admitted' proofs/coq/ 2>/dev/null | wc -l); test \"$count\" -le 19" -- severity: high -# NOTE: baseline is 19 Admitted entries as of 2026-02-05. -# Decrement as proofs are closed; never increment without a documented rationale. - -### no-unsafe-rust-without-comment -- description: All unsafe blocks in Rust must have SAFETY comments -- run: "! grep -B1 'unsafe {' --include='*.rs' -r . 2>/dev/null | grep -v SAFETY | grep 'unsafe {' | head -1 | grep -q ." -- severity: warning - -## Service Security (n/a — research repo; included for estate consistency) - -### localhost-only-bindings -- description: No wildcard service bindings in source (not a deployed service) -- run: "! grep -rE 'bind\\(\"0\\.0\\.0\\.0' --include='*.rs' --include='*.ex' --include='*.res' . 2>/dev/null | head -1 | grep -q ." -- severity: critical diff --git a/.machine_readable/svc/k9/README.adoc b/.machine_readable/self-validating/README.adoc similarity index 85% rename from .machine_readable/svc/k9/README.adoc rename to .machine_readable/self-validating/README.adoc index 657168a..909ebcf 100644 --- a/.machine_readable/svc/k9/README.adoc +++ b/.machine_readable/self-validating/README.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = K9 Contractiles :toc: left :icons: font @@ -71,13 +72,13 @@ Choose the appropriate security level for your use case: [source,bash] ---- # Kennel: Pure configuration -cp contractiles/k9/examples/project-metadata.k9.ncl config/metadata.k9.ncl +cp contractiles/self-validating/examples/project-metadata.k9.ncl config/metadata.k9.ncl # Yard: Validated configuration -cp contractiles/k9/examples/ci-config.k9.ncl .github/ci.k9.ncl +cp contractiles/self-validating/examples/ci-config.k9.ncl .github/ci.k9.ncl # Hunt: Full automation -cp contractiles/k9/examples/setup-repo.k9.ncl scripts/setup.k9.ncl +cp contractiles/self-validating/examples/setup-repo.k9.ncl scripts/setup.k9.ncl ---- === 2. Validate Components @@ -130,7 +131,7 @@ K9 contractiles integrate with other RSR standards: ⚠️ **Never run as root unless required** + ⚠️ **Sandbox external components** -**See:** https://github.com/hyperpolymath/k9-svc/blob/main/docs/SECURITY-BEST-PRACTICES.adoc +**See:** https://github.com/hyperpolymath/self-validating/blob/main/docs/SECURITY-BEST-PRACTICES.adoc == Template Files @@ -159,9 +160,9 @@ git clone https://github.com/hyperpolymath/k9-svc.git == Learn More -- **K9-SVC Specification:** https://github.com/hyperpolymath/k9-svc/blob/main/SPEC.adoc -- **K9 User Guide:** https://github.com/hyperpolymath/k9-svc/blob/main/GUIDE.adoc -- **Security Documentation:** https://github.com/hyperpolymath/k9-svc/blob/main/docs/SECURITY-FAQ.adoc +- **K9-SVC Specification:** https://github.com/hyperpolymath/self-validating/blob/main/SPEC.adoc +- **K9 User Guide:** https://github.com/hyperpolymath/self-validating/blob/main/GUIDE.adoc +- **Security Documentation:** https://github.com/hyperpolymath/self-validating/blob/main/docs/SECURITY-FAQ.adoc - **IANA Media Type:** `application/vnd.k9+nickel` == Contributing diff --git a/.machine_readable/svc/k9/examples/ci-config.k9.ncl b/.machine_readable/self-validating/examples/ci-config.k9.ncl similarity index 100% rename from .machine_readable/svc/k9/examples/ci-config.k9.ncl rename to .machine_readable/self-validating/examples/ci-config.k9.ncl diff --git a/.machine_readable/svc/k9/examples/project-metadata.k9.ncl b/.machine_readable/self-validating/examples/project-metadata.k9.ncl similarity index 100% rename from .machine_readable/svc/k9/examples/project-metadata.k9.ncl rename to .machine_readable/self-validating/examples/project-metadata.k9.ncl diff --git a/.machine_readable/svc/k9/examples/setup-repo.k9.ncl b/.machine_readable/self-validating/examples/setup-repo.k9.ncl similarity index 99% rename from .machine_readable/svc/k9/examples/setup-repo.k9.ncl rename to .machine_readable/self-validating/examples/setup-repo.k9.ncl index bcc51ce..71f5d3c 100644 --- a/.machine_readable/svc/k9/examples/setup-repo.k9.ncl +++ b/.machine_readable/self-validating/examples/setup-repo.k9.ncl @@ -95,7 +95,7 @@ K9! commands = [ "mkdir -p src/ docs/ tests/ scripts/", "mkdir -p .github/workflows/", - "mkdir -p contractiles/k9/", + "mkdir -p contractiles/self-validating/", "echo '✓ Directory structure created'", ], }, diff --git a/.machine_readable/svc/k9/template-hunt.k9.ncl b/.machine_readable/self-validating/template-hunt.k9.ncl similarity index 100% rename from .machine_readable/svc/k9/template-hunt.k9.ncl rename to .machine_readable/self-validating/template-hunt.k9.ncl diff --git a/.machine_readable/svc/k9/template-kennel.k9.ncl b/.machine_readable/self-validating/template-kennel.k9.ncl similarity index 100% rename from .machine_readable/svc/k9/template-kennel.k9.ncl rename to .machine_readable/self-validating/template-kennel.k9.ncl diff --git a/.machine_readable/svc/k9/template-yard.k9.ncl b/.machine_readable/self-validating/template-yard.k9.ncl similarity index 100% rename from .machine_readable/svc/k9/template-yard.k9.ncl rename to .machine_readable/self-validating/template-yard.k9.ncl diff --git a/.machine_readable/svc/README.adoc b/.machine_readable/svc/README.adoc index 3228ec7..7581569 100644 --- a/.machine_readable/svc/README.adoc +++ b/.machine_readable/svc/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = `.machine_readable/svc/` — Service components for absolute-zero :toc: diff --git a/.migration/RUBY_TO_RUST.md b/.migration/RUBY_TO_RUST.md index 92af08c..5c97205 100644 --- a/.migration/RUBY_TO_RUST.md +++ b/.migration/RUBY_TO_RUST.md @@ -1,3 +1,7 @@ + # Ruby → Rust Migration Guide ## Policy diff --git a/AUDIT.adoc b/AUDIT.adoc index 5fb82ba..ff5eb17 100644 --- a/AUDIT.adoc +++ b/AUDIT.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Absolute Zero — Audit Trail Jonathan D. A. Jewell :toc: diff --git a/CHANGELOG.md b/CHANGELOG.md index 20ca61e..5fb6b54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,7 @@ - # Changelog All notable changes to `absolute-zero` will be documented in this file. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index efde91a..9020def 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,4 +1,7 @@ - + # Contributor Covenant Code of Conduct ## Our Pledge diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc index 1f34e60..2ead10c 100644 --- a/CONTRIBUTING.adoc +++ b/CONTRIBUTING.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Contributing Guide == Getting Started diff --git a/ECHIDNA.adoc b/ECHIDNA.adoc index 2642506..5ec39bf 100644 --- a/ECHIDNA.adoc +++ b/ECHIDNA.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = ECHIDNA Neurosymbolic Integration for Absolute Zero Jonathan D. A. Jewell :toc: left diff --git a/GOVERNANCE.adoc b/GOVERNANCE.adoc new file mode 100644 index 0000000..8bbf167 --- /dev/null +++ b/GOVERNANCE.adoc @@ -0,0 +1,162 @@ +// SPDX-License-Identifier: MPL-2.0 +// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell += Governance Model +:toc: preamble + +This document describes the governance model for this repository. + +== Overview + +This repository follows a **Sole Maintainer Governance Model**: + +* Single maintainer (@hyperpolymath) has full authority over the project +* All contributions are welcome and reviewed by the maintainer +* Decisions are made transparently through GitHub issues and discussions +* The project adheres to the hyperpolymath estate policies where applicable + +== Core Principles + +[cols="1,2"] +|=== +| Principle | Description + +| **Benevolent Dictatorship** | Maintainer has final decision authority but seeks community input + +| **Meritocracy** | Contributions are judged on technical merit, not contributor identity + +| **Transparency** | All significant decisions are documented publicly + +| **Consensus-Seeking** | Maintainer prefers consensus but will decide when necessary + +| **Open Contribution** | Anyone can contribute via fork and pull request + +|=== + +== Roles and Permissions + +[cols="1,2,2"] +|=== +| Role | Permissions | Assignment + +| **Maintainer** | Write access, merge rights, admin | @hyperpolymath +| **Contributors** | Read access, fork, submit PRs | All GitHub users +| **Users** | Use the software, report issues | All GitHub users + +|=== + +== Decision Making Framework + +=== Routine Decisions + +* Bug fixes +* Documentation improvements +* Minor feature additions +* Dependency updates + +**Process**: Maintainer reviews and merges PRs that meet quality standards. + +=== Significant Changes + +* New major features +* API changes +* Architecture modifications +* Breaking changes + +**Process**: +. Open issue describing the change +. Discuss with community (minimum 72 hours) +. Maintainer makes final decision +. Document rationale in issue/PR + +=== Structural Decisions + +* Repository purpose/renaming +* License changes +* Ownership transfer +* Deprecation/archival + +**Process**: +. Extended discussion (minimum 1 week) +. Maintainer makes final decision +. Document in CHANGELOG and governance docs + +== Contribution Lifecycle + +[cols="1,2"] +|=== +| Stage | Process + +| **Ideation** | Open issue, discuss feasibility + +| **Development** | Fork, implement, test thoroughly + +| **Review** | Submit PR, maintainer reviews within 7 days + +| **Merge** | Maintainer merges or requests changes + +| **Release** | Maintainer publishes according to project conventions + +|=== + +== Conflict Resolution + +In case of disagreements: + +. Discuss in the relevant GitHub issue or PR +. Provide technical justification for positions +. Maintainer mediates and makes final decision +. Decision is documented and can be revisited later + +== Project Policies + +This repository adheres to hyperpolymath estate-wide policies: + +* **License**: MPL-2.0 for code, CC-BY-SA-4.0 for prose (per standards/LICENCE-POLICY.adoc) +* **Code of Conduct**: Follows hyperpolymath CODE_OF_CONDUCT.md +* **Security**: Follows hyperpolymath SECURITY.md +* **Contributing**: Follows hyperpolymath CONTRIBUTING.adoc conventions + +== Repository-Specific Conventions + +[cols="1,2"] +|=== +| Convention | Description + +| **Signing** | All commits must be signed (SSH or GPG) + +| **SPDX Headers** | All source files must have SPDX license identifiers + +| **Contractiles** | Mustfile, Trustfile, Intendfile, Adjustfile in root + +| **Machine Readable** | META.a2ml in .machine_readable/6a2/ + +| **CI/CD** | GitHub Actions workflows in .github/workflows/ + +|=== + +== Governance Evolution + +As the project grows, this governance model may evolve: + +* **Adding Co-Maintainers**: When contribution volume warrants it +* **Forming a Team**: For complex multi-maintainer projects +* **Adopting TPCF**: For large, multi-repository projects (see rhodium-standard-repositories) + +Changes to this document require the same process as Significant Changes above. + +== See Also + +* link:MAINTAINERS.adoc[Maintainers] +* link:CODE_OF_CONDUCT.md[Code of Conduct] +* link:CONTRIBUTING.adoc[Contributing Guide] +* link:https://github.com/hyperpolymath/standards/blob/main/LICENCE-POLICY.adoc[Estate License Policy] +* link:https://github.com/hyperpolymath/standards[rhodium-standard-repositories (TPCF)] + +== Changelog + +[cols="1,1,1"] +|=== +| Date | Change | By + +| 2026-06-07 | Initial governance model established | @hyperpolymath +|=== diff --git a/Justfile b/Justfile index a09f6e5..59a033e 100644 --- a/Justfile +++ b/Justfile @@ -410,3 +410,6 @@ echidna-check: echo " cd ~/Documents/hyperpolymath-repos/echidna && cargo build --release"; \ fi + +secret-scan-trufflehog: + @command -v trufflehog >/dev/null && trufflehog filesystem . --only-verified || true diff --git a/LICENSE b/LICENSE index 2a8b960..d0a1fa1 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,3 @@ -SPDX-License-Identifier: MPL-2.0 - Mozilla Public License Version 2.0 ================================== @@ -37,7 +35,7 @@ Mozilla Public License Version 2.0 means any form of the work other than Source Code Form. 1.7. "Larger Work" - means a work that combines Covered Software with other material, in + means a work that combines Covered Software with other material, in a separate file or files, that is not Covered Software. 1.8. "License" @@ -359,7 +357,7 @@ Exhibit A - Source Code Form License Notice This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. + file, You can obtain one at https://mozilla.org/MPL/2.0/. If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE diff --git a/MAINTAINERS.adoc b/MAINTAINERS.adoc new file mode 100644 index 0000000..9910dd8 --- /dev/null +++ b/MAINTAINERS.adoc @@ -0,0 +1,65 @@ +// SPDX-License-Identifier: MPL-2.0 +// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell += Maintainers +:toc: preamble + +== Current Maintainers + +[cols="2,3,2",options="header"] +|=== +| Name | Role | Contact + +| Jonathan D.A. Jewell | Sole Maintainer | https://github.com/hyperpolymath[@hyperpolymath] +|=== + +== Maintainer Responsibilities + +As the sole maintainer, all responsibilities apply to @hyperpolymath: + +* Reviewing and merging pull requests +* Triaging issues and feature requests +* Ensuring code quality and security standards +* Managing releases and versioning +* Upholding the project's Code of Conduct +* Maintaining documentation and examples +* Responding to security vulnerabilities + +== Contribution Process + +This is a sole-maintainer project. All contributions are welcome via: + +1. **Issues**: Report bugs, request features, ask questions +2. **Pull Requests**: Submit improvements for review +3. **Discussions**: Engage in community discussions + +All contributions will be reviewed by the maintainer. + +== Decision Making + +* Routine decisions (bug fixes, minor improvements): Made by maintainer +* Significant changes: Discussed in issues before implementation +* Breaking changes: Announced in advance with migration path + +== Becoming a Maintainer + +This project currently has a single maintainer. If you're interested in becoming a co-maintainer: + +1. Demonstrate consistent, high-quality contributions +2. Show understanding of project goals and standards +3. Participate constructively in discussions +4. Express interest to the current maintainer + +Co-maintainers may be added at the discretion of the current maintainer. + +== Contact + +For questions about project governance: + +* Open a GitHub issue in this repository +* Contact: https://github.com/hyperpolymath + +== See Also + +* link:GOVERNANCE.adoc[Governance Model] +* link:CODE_OF_CONDUCT.md[Code of Conduct] +* link:CONTRIBUTING.adoc[Contributing Guide] diff --git a/README.adoc b/README.adoc index 8b71f36..7ecf531 100644 --- a/README.adoc +++ b/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell # Absolute Zero **Formal Verification of Certified Null Operations: When Doing Nothing Is Everything** @@ -5,6 +7,8 @@ image:https://img.shields.io/badge/License-MPL_2.0-blue.svg[MPL-2.0] == License +image:https://img.shields.io/badge/OpenSSF-Best_Practices-green?logo=openssourcesecurity[OpenSSF Best Practices,link="https://www.bestpractices.dev/en/projects/new?repo_url=https://github.com/hyperpolymath/absolute-zero"] + **SPDX-License-Identifier: MPL-2.0** diff --git a/ROADMAP.adoc b/ROADMAP.adoc index 715b085..21b6260 100644 --- a/ROADMAP.adoc +++ b/ROADMAP.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Absolute Zero: Roadmap to v12.0 Jonathan D. A. Jewell :toc: left diff --git a/RSR_COMPLIANCE.adoc b/RSR_COMPLIANCE.adoc index f07505a..b49114e 100644 --- a/RSR_COMPLIANCE.adoc +++ b/RSR_COMPLIANCE.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Absolute Zero — Rhodium Standard Repository (RSR) Compliance Jonathan D. A. Jewell :toc: diff --git a/SECURITY.md b/SECURITY.md index 7a6ce9c..f19fd6d 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,4 +1,7 @@ - + # Security Policy ## Supported Versions diff --git a/contractiles/README.adoc b/contractiles/README.adoc deleted file mode 100644 index d19a387..0000000 --- a/contractiles/README.adoc +++ /dev/null @@ -1,19 +0,0 @@ -= Contractiles Template Set -:toc: -:sectnums: - -This directory contains the generalized contractiles templates. Copy the `contractiles/` directory into a new repo to establish a consistent operational, validation, trust, recovery, and intent framework. - -== Fill-In Instructions - -1. Update the Mustfile to reflect your real invariants (paths, schema versions, ports). -2. Replace Trustfile.hs placeholders with your actual key paths and verification commands. -3. Adjust Dustfile handlers to match your rollback and recovery tooling. -4. Update Intentfile to mirror the roadmap you want the system to evolve toward. - -== Contents - -* `must/Mustfile` - required invariants and validations. -* `trust/Trustfile.hs` - cryptographic verification steps. -* `dust/Dustfile` - rollback and recovery semantics. -* `lust/Intentfile` - future intent and roadmap direction. diff --git a/contractiles/dust/Dustfile b/contractiles/dust/Dustfile deleted file mode 100644 index 314903c..0000000 --- a/contractiles/dust/Dustfile +++ /dev/null @@ -1,29 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Dustfile template - recovery and rollback semantics - -version: 1 - -recovery: - logs: - - name: decision-log - path: logs/decisions.json - reversible: true - handler: "log-replay --reverse logs/decisions.json" - - policy: - - name: policy-rollback - path: policy/policy.ncl - rollback: "git checkout HEAD~1 -- policy/policy.ncl" - notes: "Rollback policy to the previous known-good revision." - - gateway: - - name: bad-deployment - event: "deploy.failure" - undo: "kubectl rollout undo deployment/gateway" - notes: "Undo a failed deployment while preserving audit logs." - - dust-events: - - name: decision-log-to-dust - source: logs/decisions.json - transform: "dustify --input logs/decisions.json --output logs/dust-events.json" - notes: "Map gateway decision logs into reversible dust events." diff --git a/contractiles/must/Mustfile b/contractiles/must/Mustfile deleted file mode 100644 index dc7b3be..0000000 --- a/contractiles/must/Mustfile +++ /dev/null @@ -1,35 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Mustfile - declarative state contract (template) -# See: https://github.com/hyperpolymath/mustfile - -version: 1 - -metadata: - name: project-state-contract - spec: v0.0.1 - description: "Invariant checks for config, policy, gateway, logs, and schema." - -parameters: - gateway_port: "8080" - schema_version: "v0.0.1" - -checks: - - name: config-valid - description: "config/service.yaml must be valid." - run: "yq -e '.' config/service.yaml >/dev/null" - - - name: policy-compiles - description: "policy/policy.ncl must compile." - run: "nickel check policy/policy.ncl" - - - name: gateway-exposes-port - description: "Service must expose the configured port." - run: "bash -uc 'ss -lnt | rg \":${GATEWAY_PORT:-8080}\"'" - - - name: logs-are-json - description: "Logs must be JSON." - run: "bash -uc 'rg --files -g \"*.json\" logs | xargs -r jq -e .'" - - - name: schema-version-matches - description: "Schema must match version spec." - run: "bash -uc 'rg -n \"${SCHEMA_VERSION:-v0.0.1}\" schema'" diff --git a/contractiles/trust/Trustfile.hs b/contractiles/trust/Trustfile.hs deleted file mode 100644 index 00b313f..0000000 --- a/contractiles/trust/Trustfile.hs +++ /dev/null @@ -1,105 +0,0 @@ --- SPDX-License-Identifier: MPL-2.0 --- Trustfile template - cryptographic and provenance verification - -module Trustfile where - -import Control.Monad (forM) -import System.Directory (doesFileExist) -import System.Environment (lookupEnv) -import System.Exit (exitFailure, exitSuccess) -import System.Process (readProcessWithExitCode) - -policyPath :: FilePath -policyPath = "policy/policy.ncl" - -policyHashPath :: FilePath -policyHashPath = "policy/policy.ncl.sha256" - -schemaPath :: FilePath -schemaPath = "schema/schema.json" - -schemaSigPath :: FilePath -schemaSigPath = "schema/schema.sig" - -schemaPubPath :: FilePath -schemaPubPath = "schema/schema.pub" - -driverPaths :: [FilePath] -driverPaths = ["drivers/gateway-driver.bin"] - -migrationsPath :: FilePath -migrationsPath = "migrations/provenance.json" - -migrationsSigPath :: FilePath -migrationsSigPath = "migrations/provenance.sig" - -migrationsPubPath :: FilePath -migrationsPubPath = "migrations/provenance.pub" - -runCmd :: String -> [String] -> IO Bool -runCmd cmd args = do - (code, _out, _err) <- readProcessWithExitCode cmd args "" - pure (code == mempty) - -readFirstWord :: FilePath -> IO (Maybe String) -readFirstWord path = do - exists <- doesFileExist path - if not exists - then pure Nothing - else do - content <- readFile path - pure (case words content of - [] -> Nothing - (w:_) -> Just w) - -verifyPolicyHash :: IO Bool -verifyPolicyHash = do - expected <- readFirstWord policyHashPath - case expected of - Nothing -> pure False - Just hash -> do - (code, out, _err) <- readProcessWithExitCode "sha256sum" [policyPath] "" - if code /= mempty - then pure False - else do - let actual = case words out of - [] -> "" - (w:_) -> w - pure (actual == hash) - -verifySchemaSignature :: IO Bool -verifySchemaSignature = do - filesOk <- and <$> mapM doesFileExist [schemaPath, schemaSigPath, schemaPubPath] - if not filesOk - then pure False - else runCmd "openssl" ["dgst", "-sha256", "-verify", schemaPubPath, "-signature", schemaSigPath, schemaPath] - -verifyKyber1024Signatures :: IO Bool -verifyKyber1024Signatures = do - cmd <- lookupEnv "KYBER_VERIFY_CMD" - let kyberCmd = maybe "kyber-verify" id cmd - results <- forM driverPaths $ \path -> do - let sig = path <> ".sig" - let pub = path <> ".pub" - filesOk <- and <$> mapM doesFileExist [path, sig, pub] - if not filesOk - then pure False - else runCmd kyberCmd ["--pub", pub, "--sig", sig, "--file", path] - pure (and results) - -verifyMigrationProvenance :: IO Bool -verifyMigrationProvenance = do - filesOk <- and <$> mapM doesFileExist [migrationsPath, migrationsSigPath, migrationsPubPath] - if not filesOk - then pure False - else runCmd "openssl" ["dgst", "-sha256", "-verify", migrationsPubPath, "-signature", migrationsSigPath, migrationsPath] - -main :: IO () -main = do - policyOk <- verifyPolicyHash - schemaOk <- verifySchemaSignature - driversOk <- verifyKyber1024Signatures - migrationsOk <- verifyMigrationProvenance - if and [policyOk, schemaOk, driversOk, migrationsOk] - then exitSuccess - else exitFailure diff --git a/docs/ABI-FFI.md b/docs/ABI-FFI.md index 08d35da..cf73490 100644 --- a/docs/ABI-FFI.md +++ b/docs/ABI-FFI.md @@ -1,3 +1,7 @@ + {{~ Aditionally delete this line and fill out the template below ~}} # {{PROJECT}} ABI/FFI Documentation diff --git a/docs/CITATIONS.adoc b/docs/CITATIONS.adoc index 060c8c6..4a899f6 100644 --- a/docs/CITATIONS.adoc +++ b/docs/CITATIONS.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = absolute-zero - Citation Guide :toc: diff --git a/docs/CLAUDE.adoc b/docs/CLAUDE.adoc index 83c1571..b66f08e 100644 --- a/docs/CLAUDE.adoc +++ b/docs/CLAUDE.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell # CLAUDE.md ## Project Overview diff --git a/docs/COOKBOOK.adoc b/docs/COOKBOOK.adoc index 647c8d9..83054f1 100644 --- a/docs/COOKBOOK.adoc +++ b/docs/COOKBOOK.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Absolute Zero Cookbook Jonathan D. A. Jewell v1.0, 2025-11-22 diff --git a/docs/JUSTFILE-COOKBOOK.adoc b/docs/JUSTFILE-COOKBOOK.adoc index ab3756d..a3f530b 100644 --- a/docs/JUSTFILE-COOKBOOK.adoc +++ b/docs/JUSTFILE-COOKBOOK.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Justfile Cookbook for Absolute Zero Jonathan D. A. Jewell v1.0, 2025-11-22 diff --git a/docs/MACHINE_VERIFICATION.adoc b/docs/MACHINE_VERIFICATION.adoc index 6db3f64..4b3485e 100644 --- a/docs/MACHINE_VERIFICATION.adoc +++ b/docs/MACHINE_VERIFICATION.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell # Machine Verification Guide ## Current Status: PARTIAL VERIFICATION diff --git a/docs/MAINTAINERS.adoc b/docs/MAINTAINERS.adoc index a1c6544..becaa3e 100644 --- a/docs/MAINTAINERS.adoc +++ b/docs/MAINTAINERS.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Maintainers :toc: preamble diff --git a/docs/PROOF-CLASSIFICATION.adoc b/docs/PROOF-CLASSIFICATION.adoc index c9a2e30..ab3ddfa 100644 --- a/docs/PROOF-CLASSIFICATION.adoc +++ b/docs/PROOF-CLASSIFICATION.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Proof Classification: CNO Core Theory Focus :toc: :sectnums: diff --git a/docs/PROOF-COMPLETION-PLAN.adoc b/docs/PROOF-COMPLETION-PLAN.adoc index 9e6f973..93fdfa5 100644 --- a/docs/PROOF-COMPLETION-PLAN.adoc +++ b/docs/PROOF-COMPLETION-PLAN.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Proof Completion Strategy :toc: :sectnums: diff --git a/docs/PROOF-INSIGHTS.md b/docs/PROOF-INSIGHTS.md index aa86f74..6a26f67 100644 --- a/docs/PROOF-INSIGHTS.md +++ b/docs/PROOF-INSIGHTS.md @@ -1,3 +1,7 @@ + # Proof Insights: Opus-Level Knowledge for CNO Proof Engineering **Author**: Claude Opus 4.5 (AI pair programmer) diff --git a/docs/PROOF-VS-TEST-SUBJECTS.adoc b/docs/PROOF-VS-TEST-SUBJECTS.adoc index 1923a97..e704281 100644 --- a/docs/PROOF-VS-TEST-SUBJECTS.adoc +++ b/docs/PROOF-VS-TEST-SUBJECTS.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Proof Systems vs. Test Subject Languages Jonathan D. A. Jewell :toc: diff --git a/docs/RSR_OUTLINE.adoc b/docs/RSR_OUTLINE.adoc index 94a49d8..3b3ca3a 100644 --- a/docs/RSR_OUTLINE.adoc +++ b/docs/RSR_OUTLINE.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = RSR Template Repository image:[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-license"] diff --git a/docs/VERIFICATION_RESULTS.adoc b/docs/VERIFICATION_RESULTS.adoc index 1b6f10c..2b1a08d 100644 --- a/docs/VERIFICATION_RESULTS.adoc +++ b/docs/VERIFICATION_RESULTS.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell # Verification Results: Phase 1 Completion and Cross-Solver Proofs **Date**: 2025-11-22 diff --git a/docs/archive/CURRENT-STATUS-2026-02-05.md b/docs/archive/CURRENT-STATUS-2026-02-05.md index 96b9285..88fabd4 100644 --- a/docs/archive/CURRENT-STATUS-2026-02-05.md +++ b/docs/archive/CURRENT-STATUS-2026-02-05.md @@ -1,3 +1,7 @@ + # Current Status - 2026-02-05 ## ✅ Tasks COMPLETED (Today) diff --git a/docs/archive/ECHIDNA-2025-11-22.adoc b/docs/archive/ECHIDNA-2025-11-22.adoc index cb6b275..16211fb 100644 --- a/docs/archive/ECHIDNA-2025-11-22.adoc +++ b/docs/archive/ECHIDNA-2025-11-22.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Echidna Integration for Absolute Zero Jonathan D. A. Jewell v1.0, 2025-11-22 diff --git a/docs/archive/INTEGRATION-STATUS-2026-02-05.adoc b/docs/archive/INTEGRATION-STATUS-2026-02-05.adoc index f73257c..3288daf 100644 --- a/docs/archive/INTEGRATION-STATUS-2026-02-05.adoc +++ b/docs/archive/INTEGRATION-STATUS-2026-02-05.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Integration Status Report :toc: :sectnums: diff --git a/docs/archive/LICENSE-AUDIT-2026-02-05.adoc b/docs/archive/LICENSE-AUDIT-2026-02-05.adoc index a628444..3fd7f42 100644 --- a/docs/archive/LICENSE-AUDIT-2026-02-05.adoc +++ b/docs/archive/LICENSE-AUDIT-2026-02-05.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = License Audit: Absolute Zero & ECHIDNA :toc: :sectnums: @@ -79,9 +80,6 @@ license = "MIT OR Palimpsest-0.6" ❌ OUTDATED **Source files** (mixed): ```rust -// SPDX-License-Identifier: MIT OR Palimpsest-0.6 ❌ OUTDATED (some files) -// SPDX-License-Identifier: MPL-2.0 ✅ CORRECT (other files) -// SPDX-License-Identifier: MPL-2.0 ✅ CORRECT (LICENSE) ``` === Required Actions diff --git a/docs/archive/PROOF-COMPLETION-2026-02-06.md b/docs/archive/PROOF-COMPLETION-2026-02-06.md index 14d1192..c171ced 100644 --- a/docs/archive/PROOF-COMPLETION-2026-02-06.md +++ b/docs/archive/PROOF-COMPLETION-2026-02-06.md @@ -1,3 +1,7 @@ + # Absolute Zero: Proof Completion Summary **Date**: 2026-02-06 diff --git a/docs/archive/PROOF-STATUS-2026-05-18.md b/docs/archive/PROOF-STATUS-2026-05-18.md index 9cacf5a..6a214db 100644 --- a/docs/archive/PROOF-STATUS-2026-05-18.md +++ b/docs/archive/PROOF-STATUS-2026-05-18.md @@ -1,3 +1,7 @@ + # Proof Status — 2026-05-18 (Review & Repair) **Author of this analysis:** Claude (review session, 2026-05-18) diff --git a/docs/archive/ROADMAP-2026-02-05.adoc b/docs/archive/ROADMAP-2026-02-05.adoc index 2043e4d..41d82f5 100644 --- a/docs/archive/ROADMAP-2026-02-05.adoc +++ b/docs/archive/ROADMAP-2026-02-05.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Absolute Zero Roadmap Jonathan D. A. Jewell :toc: diff --git a/docs/archive/ROADMAP-UPDATED-2026-02-05.adoc b/docs/archive/ROADMAP-UPDATED-2026-02-05.adoc index af55322..5f40e29 100644 --- a/docs/archive/ROADMAP-UPDATED-2026-02-05.adoc +++ b/docs/archive/ROADMAP-UPDATED-2026-02-05.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Absolute Zero: Updated Roadmap (v1.0 → v12.0) Jonathan D. A. Jewell :toc: left diff --git a/docs/archive/SESSION-2026-05-25-HANDOFF.adoc b/docs/archive/SESSION-2026-05-25-HANDOFF.adoc index 76d9429..f0f6454 100644 --- a/docs/archive/SESSION-2026-05-25-HANDOFF.adoc +++ b/docs/archive/SESSION-2026-05-25-HANDOFF.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Session Handoff — 2026-05-25 Repo Tidy Claude (session 7927557c-2938-4d53-b987-a6f8ebc44611) :toc: diff --git a/docs/archive/SESSION-COMPLETE-2026-02-05.adoc b/docs/archive/SESSION-COMPLETE-2026-02-05.adoc index 4dc9e70..7bdd1b4 100644 --- a/docs/archive/SESSION-COMPLETE-2026-02-05.adoc +++ b/docs/archive/SESSION-COMPLETE-2026-02-05.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Session Complete: All Three Tasks :toc: :sectnums: @@ -65,7 +66,6 @@ $ grep "license =" Cargo.toml license = "MPL-2.0" $ head -1 src/rust/main.rs -// SPDX-License-Identifier: MPL-2.0 ``` **Result**: Both repos consistently use MPL-2.0 ✅ diff --git a/docs/archive/SONNET-HANDOFF.md b/docs/archive/SONNET-HANDOFF.md index 30f0954..433afc2 100644 --- a/docs/archive/SONNET-HANDOFF.md +++ b/docs/archive/SONNET-HANDOFF.md @@ -1,3 +1,7 @@ + # Sonnet Handoff: Continuing the Absolute Zero + ECHIDNA Work **From**: Claude Opus 4.5 session (2026-02-05) diff --git a/docs/proof-debt-triage.md b/docs/proof-debt-triage.md index 805f7cf..e463e3c 100644 --- a/docs/proof-debt-triage.md +++ b/docs/proof-debt-triage.md @@ -1,8 +1,7 @@ - # Proof Debt — Per-Marker Triage (Coq Axioms) Companion to [`docs/proof-debt.md`](./proof-debt.md) (the standards#203 diff --git a/docs/proof-debt.md b/docs/proof-debt.md index 5cf6a98..42a9bd5 100644 --- a/docs/proof-debt.md +++ b/docs/proof-debt.md @@ -1,8 +1,7 @@ - # Proof Debt — absolute-zero **Schema**: [hyperpolymath/standards `TRUSTED-BASE-REDUCTION-POLICY.adoc`](https://github.com/hyperpolymath/standards/blob/main/docs/TRUSTED-BASE-REDUCTION-POLICY.adoc) (standards#203). diff --git a/docs/tech-debt-2026-05-26.md b/docs/tech-debt-2026-05-26.md index 3f5b438..7d14b04 100644 --- a/docs/tech-debt-2026-05-26.md +++ b/docs/tech-debt-2026-05-26.md @@ -1,8 +1,7 @@ - # Tech-Debt Audit — absolute-zero — 2026-05-26 **Source:** estate-wide automated scan 2026-05-26. diff --git a/docs/wiki/ABI.md b/docs/wiki/ABI.md index f88a7b7..5265c84 100644 --- a/docs/wiki/ABI.md +++ b/docs/wiki/ABI.md @@ -1,4 +1,7 @@ - + # ABI The Idris2 ABI surface at `src/abi/` declares the FFI boundary that the diff --git a/docs/wiki/Architecture.md b/docs/wiki/Architecture.md index d1f84c5..76ca643 100644 --- a/docs/wiki/Architecture.md +++ b/docs/wiki/Architecture.md @@ -1,4 +1,7 @@ - + # Architecture Three layers, loosely coupled. diff --git a/docs/wiki/Audit-Trail.md b/docs/wiki/Audit-Trail.md index 248b29b..3beae12 100644 --- a/docs/wiki/Audit-Trail.md +++ b/docs/wiki/Audit-Trail.md @@ -1,4 +1,7 @@ - + # Audit Trail Short summary; the authoritative ledger is [`AUDIT.adoc`](../../AUDIT.adoc). diff --git a/docs/wiki/Contributing.md b/docs/wiki/Contributing.md index 3502f01..6e0a297 100644 --- a/docs/wiki/Contributing.md +++ b/docs/wiki/Contributing.md @@ -1,4 +1,7 @@ - + # Contributing Short summary; the authoritative version is [`CONTRIBUTING.adoc`](../../CONTRIBUTING.adoc) at the root. diff --git a/docs/wiki/FAQ.md b/docs/wiki/FAQ.md index 3110eea..9f7fa98 100644 --- a/docs/wiki/FAQ.md +++ b/docs/wiki/FAQ.md @@ -1,4 +1,7 @@ - + # FAQ ### Why prove that a program does nothing? diff --git a/docs/wiki/Glossary.md b/docs/wiki/Glossary.md index 4291bb9..d86bcb2 100644 --- a/docs/wiki/Glossary.md +++ b/docs/wiki/Glossary.md @@ -1,4 +1,7 @@ - + # Glossary | Term | Definition | diff --git a/docs/wiki/Home.md b/docs/wiki/Home.md index 98f98d1..03bb468 100644 --- a/docs/wiki/Home.md +++ b/docs/wiki/Home.md @@ -1,4 +1,7 @@ - + # Absolute Zero — Wiki > **Formal Verification of Certified Null Operations: When Doing Nothing Is Everything.** diff --git a/docs/wiki/Proof-Systems.md b/docs/wiki/Proof-Systems.md index 52f427a..0c50be5 100644 --- a/docs/wiki/Proof-Systems.md +++ b/docs/wiki/Proof-Systems.md @@ -1,4 +1,7 @@ - + # Proof Systems ## Why six? diff --git a/docs/wiki/README.md b/docs/wiki/README.md index 8cd7028..f892fe8 100644 --- a/docs/wiki/README.md +++ b/docs/wiki/README.md @@ -1,4 +1,7 @@ - + # docs/wiki — In-repo source for the GitHub Wiki These markdown pages are the canonical source for diff --git a/docs/wiki/Roadmap.md b/docs/wiki/Roadmap.md index d2dd47a..9f1785e 100644 --- a/docs/wiki/Roadmap.md +++ b/docs/wiki/Roadmap.md @@ -1,4 +1,7 @@ - + # Roadmap Short summary; the authoritative version is [`ROADMAP.adoc`](../../ROADMAP.adoc) at the root. diff --git a/docs/wiki/Verification.md b/docs/wiki/Verification.md index 8c9a0d2..a75057b 100644 --- a/docs/wiki/Verification.md +++ b/docs/wiki/Verification.md @@ -1,4 +1,7 @@ - + # Verification How to verify locally and what CI does. diff --git a/docs/wiki/_Sidebar.md b/docs/wiki/_Sidebar.md index addbd51..a74d637 100644 --- a/docs/wiki/_Sidebar.md +++ b/docs/wiki/_Sidebar.md @@ -1,4 +1,7 @@ - + **[Home](Home)** **Project** diff --git a/examples/c/balanced_ops.c b/examples/c/balanced_ops.c index b1f37bd..b26ce01 100644 --- a/examples/c/balanced_ops.c +++ b/examples/c/balanced_ops.c @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell /** * Balanced Operations CNO in C * diff --git a/examples/c/nop.c b/examples/c/nop.c index 9b90dbc..7a37ddc 100644 --- a/examples/c/nop.c +++ b/examples/c/nop.c @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell /** * Certified Null Operation in C * diff --git a/examples/elixir/nop.ex b/examples/elixir/nop.ex index 99bd196..b0fa19f 100644 --- a/examples/elixir/nop.ex +++ b/examples/elixir/nop.ex @@ -1,5 +1,6 @@ +# SPDX-License-Identifier: MPL-2.0 +# Copyright (c) Jonathan D.A. Jewell # nop.ex - Computing No Output in Elixir -# Copyright: Absolute Zero Project # License: AGPL-3.0 / PALIMPS # # ELIXIR CNO: FUNCTIONAL ELEGANCE ON THE ERLANG VM diff --git a/examples/javascript/nop.js b/examples/javascript/nop.js index c736b60..46b07de 100755 --- a/examples/javascript/nop.js +++ b/examples/javascript/nop.js @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell #!/usr/bin/env node /** * JavaScript CNO (Code with No Output) - Absolute Zero Example diff --git a/examples/rust/balanced_ops.rs b/examples/rust/balanced_ops.rs index f132262..68d820a 100644 --- a/examples/rust/balanced_ops.rs +++ b/examples/rust/balanced_ops.rs @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell /** * Balanced Operations CNO in Rust * diff --git a/examples/rust/nop.rs b/examples/rust/nop.rs index da87605..86ececd 100644 --- a/examples/rust/nop.rs +++ b/examples/rust/nop.rs @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell /** * Certified Null Operation in Rust * diff --git a/examples/special-ops/os/futex_nop.c b/examples/special-ops/os/futex_nop.c index 72d662f..bc3af3f 100644 --- a/examples/special-ops/os/futex_nop.c +++ b/examples/special-ops/os/futex_nop.c @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell /* * futex_nop.c - Futex Wait/Wake CNO Example * diff --git a/examples/special-ops/os/ioctl_nop.c b/examples/special-ops/os/ioctl_nop.c index 5a180ab..534373e 100644 --- a/examples/special-ops/os/ioctl_nop.c +++ b/examples/special-ops/os/ioctl_nop.c @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell /* * ioctl_nop.c - ioctl Query CNO Example * diff --git a/examples/special-ops/os/sched_yield.c b/examples/special-ops/os/sched_yield.c index 230a552..d378b1a 100644 --- a/examples/special-ops/os/sched_yield.c +++ b/examples/special-ops/os/sched_yield.c @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell /* * sched_yield.c - Scheduler Yield CNO Example * diff --git a/examples/special-ops/os/signal_nop.c b/examples/special-ops/os/signal_nop.c index 4f048a6..0600af0 100644 --- a/examples/special-ops/os/signal_nop.c +++ b/examples/special-ops/os/signal_nop.c @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell /* * signal_nop.c - Signal Handler CNO Example * diff --git a/examples/special-ops/os/syscall_nop.c b/examples/special-ops/os/syscall_nop.c index 065b286..f3faf3d 100644 --- a/examples/special-ops/os/syscall_nop.c +++ b/examples/special-ops/os/syscall_nop.c @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell /* * syscall_nop.c - System Call CNO Example * diff --git a/ffi/zig/build.zig b/ffi/zig/build.zig index fe27f5e..c02617f 100644 --- a/ffi/zig/build.zig +++ b/ffi/zig/build.zig @@ -1,5 +1,6 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // {{PROJECT}} FFI Build Configuration -// SPDX-License-Identifier: AGPL-3.0-or-later const std = @import("std"); diff --git a/ffi/zig/src/main.zig b/ffi/zig/src/main.zig index 8f897a2..f1b2633 100644 --- a/ffi/zig/src/main.zig +++ b/ffi/zig/src/main.zig @@ -1,9 +1,10 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // {{PROJECT}} FFI Implementation // // This module implements the C-compatible FFI declared in src/abi/Foreign.idr // All types and layouts must match the Idris2 ABI definitions. // -// SPDX-License-Identifier: AGPL-3.0-or-later const std = @import("std"); diff --git a/ffi/zig/test/integration_test.zig b/ffi/zig/test/integration_test.zig index e5ba919..e481508 100644 --- a/ffi/zig/test/integration_test.zig +++ b/ffi/zig/test/integration_test.zig @@ -1,5 +1,6 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // {{PROJECT}} Integration Tests -// SPDX-License-Identifier: AGPL-3.0-or-later // // These tests verify that the Zig FFI correctly implements the Idris2 ABI diff --git a/fuzz/fuzz_targets/fuzz_input.rs b/fuzz/fuzz_targets/fuzz_input.rs index aefae70..34dcbd9 100644 --- a/fuzz/fuzz_targets/fuzz_input.rs +++ b/fuzz/fuzz_targets/fuzz_input.rs @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell //! Generic fuzz target for arbitrary input processing #![no_main] diff --git a/manifest.scm b/manifest.scm new file mode 100644 index 0000000..dd942c7 --- /dev/null +++ b/manifest.scm @@ -0,0 +1,24 @@ +;;; SPDX-License-Identifier: MPL-2.0 +;;; manifest.scm — Generic Guix manifest for RSR-compliant projects +;;; +;;; Usage: +;;; guix shell -m manifest.scm +;;; + +(specifications->manifest + '(;; Core development tools + "git" + "just" + "nickel" + "curl" + "bash" + "coreutils" + + ;; Documentation + "asciidoctor" + "pandoc" + + ;; Common build dependencies + "openssl" + "zlib" + "pkg-config")) diff --git a/proofs/agda/README.adoc b/proofs/agda/README.adoc index 8dd2f60..14bb74b 100644 --- a/proofs/agda/README.adoc +++ b/proofs/agda/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Agda Proofs (absolute-zero) This directory currently contains: diff --git a/src/abi/Foreign.idr b/src/abi/Foreign.idr index f7d2293..df4baaa 100644 --- a/src/abi/Foreign.idr +++ b/src/abi/Foreign.idr @@ -1,3 +1,5 @@ +-- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) Jonathan D.A. Jewell ||| Foreign Function Interface Declarations ||| ||| This module declares all C-compatible functions that will be @@ -6,7 +8,6 @@ ||| All functions are declared here with type signatures and safety proofs. ||| Implementations live in ffi/zig/ --- SPDX-License-Identifier: MPL-2.0 module AbsoluteZero.ABI.Foreign diff --git a/src/abi/Layout.idr b/src/abi/Layout.idr index 994ed35..c5af802 100644 --- a/src/abi/Layout.idr +++ b/src/abi/Layout.idr @@ -1,3 +1,5 @@ +-- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) Jonathan D.A. Jewell ||| ABI Memory Layout Verification ||| ||| This module provides compile-time verification of memory layouts @@ -6,7 +8,6 @@ ||| ||| @see https://github.com/hyperpolymath/absolute-zero --- SPDX-License-Identifier: MPL-2.0 module AbsoluteZero.ABI.Layout diff --git a/src/abi/Proofs/DivMod.idr b/src/abi/Proofs/DivMod.idr index f00cb2f..691b679 100644 --- a/src/abi/Proofs/DivMod.idr +++ b/src/abi/Proofs/DivMod.idr @@ -1,3 +1,5 @@ +-- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) Jonathan D.A. Jewell ||| Div/mod lemma library for ABI alignment proofs. ||| ||| Consolidates the trusted base of number-theoretic lemmas used by ABI @@ -25,7 +27,6 @@ ||| ||| @see https://github.com/hyperpolymath/absolute-zero/issues/27 --- SPDX-License-Identifier: MPL-2.0 module AbsoluteZero.ABI.Proofs.DivMod diff --git a/src/abi/Types.idr b/src/abi/Types.idr index 8488dda..63d62e7 100644 --- a/src/abi/Types.idr +++ b/src/abi/Types.idr @@ -1,3 +1,5 @@ +-- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) Jonathan D.A. Jewell ||| ABI Type Definitions for Absolute Zero ||| ||| This module defines the Application Binary Interface (ABI) for the @@ -6,7 +8,6 @@ ||| ||| @see https://github.com/hyperpolymath/absolute-zero --- SPDX-License-Identifier: MPL-2.0 module AbsoluteZero.ABI.Types diff --git a/src/brainfuck/src/lib.rs b/src/brainfuck/src/lib.rs index 2509cda..80cfd38 100644 --- a/src/brainfuck/src/lib.rs +++ b/src/brainfuck/src/lib.rs @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell //! Brainfuck Interpreter with CNO Detection //! //! Brainfuck is an esoteric language with only 8 instructions. diff --git a/src/brainfuck/src/main.rs b/src/brainfuck/src/main.rs index 60b8c7e..28571b4 100644 --- a/src/brainfuck/src/main.rs +++ b/src/brainfuck/src/main.rs @@ -1,6 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) - +// Copyright (c) Jonathan D.A. Jewell //! Brainfuck CNO Detection CLI //! //! Tests various Brainfuck programs for CNO properties. diff --git a/src/main.rs b/src/main.rs index 6f79c5d..17d2e5a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) - +// Copyright (c) Jonathan D.A. Jewell //! Certified Null Operation in Rust //! //! A program that does absolutely nothing at the application level. diff --git a/src/whitespace/src/lib.rs b/src/whitespace/src/lib.rs index 49a8609..5c5d24c 100644 --- a/src/whitespace/src/lib.rs +++ b/src/whitespace/src/lib.rs @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell //! Whitespace Interpreter with CNO Detection //! //! Whitespace is an esoteric language that uses only spaces, tabs, and linefeeds. diff --git a/tests/README.adoc b/tests/README.adoc index 7038039..4d8cf5c 100644 --- a/tests/README.adoc +++ b/tests/README.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = tests/ — Test suite root This directory is the conventional RSR location for tests. For diff --git a/tools/README.adoc b/tools/README.adoc index 6bce419..2994a65 100644 --- a/tools/README.adoc +++ b/tools/README.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = tools/ — Developer tools RSR-conventional location for developer utilities (scripts that build, diff --git a/verification/README.adoc b/verification/README.adoc index ba5d043..c9a819c 100644 --- a/verification/README.adoc +++ b/verification/README.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = verification/ — Formal verification entry points RSR-conventional location for verification scripts. These wrap the