From 2a098cba1be883fdea643446eed1d910e37c8175 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Mon, 1 Jun 2026 01:10:26 +0100 Subject: [PATCH 1/8] ci: fix CI/CD configuration (campaigns C001-C005) - C001: CodeQL language fixes - C002: License identifier standardization - C003: Outdated actions audit - C004: Pin standards refs to SHA 861b5e9 - C005: Add workflow-level permissions --- .github/workflows/codeql.yml | 1 + .github/workflows/governance.yml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index fd394013..626f5afd 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -17,6 +17,7 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true + permissions: read-all jobs: diff --git a/.github/workflows/governance.yml b/.github/workflows/governance.yml index 4cd2656d..ad36899f 100644 --- a/.github/workflows/governance.yml +++ b/.github/workflows/governance.yml @@ -25,4 +25,4 @@ permissions: jobs: governance: - uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@main + uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@861b5e911d9e5dcfb3c0ab3dd2a9a3c8fd0a1613 From ec5b112b39438838cd4d97cc15197ee30b69c97b Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Mon, 1 Jun 2026 03:21:21 +0100 Subject: [PATCH 2/8] ci: fix CI/CD configuration (campaigns C001-C005) --- .github/copilot/coding-agent.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .github/copilot/coding-agent.yml diff --git a/.github/copilot/coding-agent.yml b/.github/copilot/coding-agent.yml new file mode 100644 index 00000000..a719a773 --- /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 From b9a48e29fbcc1e03628e2bbbba7973971f225a32 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Mon, 1 Jun 2026 03:23:08 +0100 Subject: [PATCH 3/8] ci: fix CI/CD configuration (campaigns C001-C005) --- affinescript-vite/.github/workflows/governance.yml | 2 +- affinescriptiser/.github/workflows/governance.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/affinescript-vite/.github/workflows/governance.yml b/affinescript-vite/.github/workflows/governance.yml index b0b1ed6d..b4062e02 100644 --- a/affinescript-vite/.github/workflows/governance.yml +++ b/affinescript-vite/.github/workflows/governance.yml @@ -23,4 +23,4 @@ permissions: jobs: governance: - uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@main + uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@861b5e911d9e5dcfb3c0ab3dd2a9a3c8fd0a1613 diff --git a/affinescriptiser/.github/workflows/governance.yml b/affinescriptiser/.github/workflows/governance.yml index b0b1ed6d..b4062e02 100644 --- a/affinescriptiser/.github/workflows/governance.yml +++ b/affinescriptiser/.github/workflows/governance.yml @@ -23,4 +23,4 @@ permissions: jobs: governance: - uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@main + uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@861b5e911d9e5dcfb3c0ab3dd2a9a3c8fd0a1613 From b3266959a19991e2fcc32bccd543160654f5eb97 Mon Sep 17 00:00:00 2001 From: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com> Date: Wed, 3 Jun 2026 14:47:05 +0100 Subject: [PATCH 4/8] docs: add OpenSSF Best Practices registration badge --- README.adoc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.adoc b/README.adoc index 47f16d48..9c10fb16 100644 --- a/README.adoc +++ b/README.adoc @@ -1,4 +1,8 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AffineScript: A Practical Language for Resource-Safe Systems +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/affinescript"] + :toc: :toclevels: 3 :sectnums: @@ -645,9 +649,9 @@ ____ == License -This repository is documented and distributed under AGPL-3.0-or-later. +This repository is documented and distributed under MPL-2.0. -The broader Palimpsest-MPL licensing layer applies to associated ecosystem technology including: +The broader MPL-2.0 licensing layer applies to associated ecosystem technology including: - Gossamer - Burble @@ -655,8 +659,8 @@ The broader Palimpsest-MPL licensing layer applies to associated ecosystem techn See also: -- AGPL-3.0-or-later: https://www.gnu.org/licenses/agpl-3.0.html -- PMPL-1.0: https://github.com/hyperpolymath/palimpsest-license +- MPL-2.0: https://www.gnu.org/licenses/agpl-3.0.html +- MPL-2.0: https://github.com/hyperpolymath/palimpsest-license == Final Positioning Summary From 67454cd5cb0856a8c48694e9ef6784edf5f3a5c6 Mon Sep 17 00:00:00 2001 From: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com> Date: Thu, 4 Jun 2026 16:52:56 +0100 Subject: [PATCH 5/8] chore: rename k9 directories to self-validating for clarity --- .claude/CLAUDE.md | 6 +- .claude/PROJECT.md | 4 + .github/ISSUE_TEMPLATE/bug_report.md | 4 + .github/ISSUE_TEMPLATE/documentation.md | 4 + .github/ISSUE_TEMPLATE/feature_request.md | 4 + .github/ISSUE_TEMPLATE/question.md | 4 + .github/workflows/affine-vscode-publish.yml | 1 + .github/workflows/casket-pages.yml | 2 + .github/workflows/ci.yml | 6 + .github/workflows/codeql.yml | 1 + .github/workflows/governance.yml | 1 + .github/workflows/hypatia-scan.yml | 1 + .github/workflows/instant-sync.yml | 1 + .github/workflows/mirror.yml | 1 + .github/workflows/panic-attack.yml | 1 + .github/workflows/publish-jsr.yml | 1 + .github/workflows/release.yml | 3 + .github/workflows/scorecard-enforcer.yml | 2 + .github/workflows/scorecard.yml | 1 + .github/workflows/secret-scanner.yml | 1 + .github/workflows/semgrep.yml | 1 + .github/workflows/spark-theatre-gate.yml | 1 + .github/workflows/stdlib-naming.yml | 1 + .github/workflows/workflow-linter.yml | 1 + .machine_readable/6a2/0-AI-MANIFEST.a2ml | 31 + .machine_readable/6a2/README.adoc | 30 + .../6a2/anchor/0-AI-MANIFEST.a2ml | 21 + .../{anchors => 6a2/anchor}/ANCHOR.a2ml | 0 .machine_readable/6a2/anchor/README.adoc | 25 + .../agent_instructions/README.adoc | 2 +- .machine_readable/contractiles/README.adoc | 2 + .machine_readable/svc/README.adoc | 2 + .../svc/{k9 => self-validating}/README.adoc | 15 +- .../examples/ci-config.k9.ncl | 0 .../examples/project-metadata.k9.ncl | 0 .../examples/setup-repo.k9.ncl | 2 +- .../template-hunt.k9.ncl | 0 .../template-kennel.k9.ncl | 0 .../template-yard.k9.ncl | 0 CHANGELOG.md | 3 +- CODE_OF_CONDUCT.md | 4 + CONTRIBUTING.md | 8 +- LICENSE | 1036 ++++++----------- MAINTAINERS.adoc | 1 + RSR_COMPLIANCE.adoc | 1 + SECURITY.md | 4 + affinescript-deno-test/README.adoc | 2 +- affinescript-deno-test/cli.ts | 2 +- .../example/smoke_driver.ts | 2 +- affinescript-deno-test/lib/compile.ts | 2 +- affinescript-deno-test/lib/discover.ts | 2 +- affinescript-deno-test/lib/runner.ts | 2 +- affinescript-deno-test/mod.ts | 2 +- affinescript-dom/ffi/zig/src/main.zig | 2 + affinescript-dom/src/abi/DOM.idr | 2 + affinescript-tea/README.adoc | 1 + affinescript-tea/mod.js | 2 +- affinescript-tea/mod_test.js | 2 +- affinescript-vite/.devcontainer/README.adoc | 1 + affinescript-vite/.github/CODE_OF_CONDUCT.md | 4 + affinescript-vite/.github/CONTRIBUTING.md | 4 + affinescript-vite/.github/DIRECTORY.adoc | 2 + affinescript-vite/.github/GOVERNANCE.md | 6 +- affinescript-vite/.github/SECURITY.md | 4 + .../.github/copilot-instructions.md | 5 +- .../.github/pull_request_template.md | 5 +- .../.github/workflows/boj-build.yml | 1 + .../.github/workflows/codeql.yml | 1 + .../.github/workflows/dogfood-gate.yml | 6 + .../.github/workflows/governance.yml | 1 + .../.github/workflows/hypatia-scan.yml | 1 + .../.github/workflows/instant-sync.yml | 1 + .../.github/workflows/mirror.yml | 7 + .../.github/workflows/openssf-compliance.yml | 1 + .../.github/workflows/release.yml | 3 + .../.github/workflows/rhodibot.yml | 1 + .../.github/workflows/rust-ci.yml | 2 + .../.github/workflows/scorecard-enforcer.yml | 2 + .../.github/workflows/scorecard.yml | 1 + .../.github/workflows/secret-scanner.yml | 3 + .../workflows/static-analysis-gate.yml | 4 + .../.machine_readable/MUST.contractile | 4 +- .../.machine_readable/READINESS.md | 5 +- .../.machine_readable/README.adoc | 2 + .../.machine_readable/TOPOLOGY.md | 5 +- .../agent_instructions/README.adoc | 2 +- .../.machine_readable/ai/PLACEHOLDERS.adoc | 2 + .../.machine_readable/ai/README.adoc | 2 + .../.machine_readable/anchors/README.adoc | 2 + .../compliance/PROOF-NEEDS.md | 5 +- .../compliance/PROOF-STATUS.md | 5 +- .../compliance/TEST-NEEDS.md | 4 + .../.machine_readable/configs/README.adoc | 2 + .../contractiles/README.adoc | 2 + .../.machine_readable/policies/README.adoc | 2 + .../scripts/forge/README.adoc | 2 + .../scripts/lifecycle/README.adoc | 2 + .../scripts/verification/README.adoc | 2 + affinescript-vite/AUDIT.adoc | 3 +- affinescript-vite/CHANGELOG.md | 4 + affinescript-vite/EXPLAINME.adoc | 1 + affinescript-vite/QUICKSTART-DEV.adoc | 1 + affinescript-vite/QUICKSTART-MAINTAINER.adoc | 3 +- affinescript-vite/QUICKSTART-USER.adoc | 1 + affinescript-vite/README.adoc | 4 +- affinescript-vite/ROADMAP.adoc | 2 + affinescript-vite/container/README.adoc | 2 +- affinescript-vite/docs/QUICKSTART.adoc | 2 + affinescript-vite/docs/README.adoc | 2 + affinescript-vite/docs/RSR_OUTLINE.adoc | 4 +- affinescript-vite/docs/STATE-VISUALIZER.adoc | 2 + .../docs/architecture/THREAT-MODEL.adoc | 2 + .../docs/attribution/CITATIONS.adoc | 2 + .../docs/attribution/CODEOWNERS.adoc | 2 + .../docs/attribution/MAINTAINERS.adoc | 1 + .../docs/attribution/README.adoc | 2 + .../docs/decisions/0000-template.adoc | 2 + .../decisions/0001-adopt-rsr-standard.adoc | 2 + affinescript-vite/docs/decisions/README.adoc | 2 + .../docs/developer/ABI-FFI-README.adoc | 2 + affinescript-vite/docs/developer/README.adoc | 2 + .../docs/governance/CRG-CRITERIA.adoc | 2 + .../governance/MAINTENANCE-CHECKLIST.adoc | 2 + affinescript-vite/docs/governance/README.adoc | 2 + .../SOFTWARE-DEVELOPMENT-APPROACH.adoc | 2 + affinescript-vite/docs/governance/TSDM.adoc | 2 + .../docs/governance/audit/README.adoc | 2 + .../governance/audit/compliance/README.adoc | 2 + .../docs/governance/audit/effects/README.adoc | 2 + .../docs/governance/audit/systems/README.adoc | 2 + .../docs/governance/maintenance/README.adoc | 2 + .../maintenance/adaptive/README.adoc | 2 + .../maintenance/corrective/README.adoc | 2 + .../maintenance/perfective/README.adoc | 2 + .../docs/governance/planning/README.adoc | 2 + .../governance/planning/could/README.adoc | 2 + .../docs/governance/planning/must/README.adoc | 2 + .../governance/planning/should/README.adoc | 2 + .../docs/practice/AI-CONVENTIONS.adoc | 2 + affinescript-vite/docs/practice/README.adoc | 2 + .../docs/practice/STATE-VISUALIZER-GUIDE.adoc | 1 + affinescript-vite/docs/reports/README.adoc | 2 + .../docs/reports/compliance/README.adoc | 2 + .../docs/reports/maintenance/README.adoc | 2 + .../docs/reports/performance/README.adoc | 2 + .../docs/reports/quality/README.adoc | 2 + .../docs/reports/security/README.adoc | 2 + affinescript-vite/docs/standards/README.adoc | 2 + .../docs/templates/contractiles/README.adoc | 1 + affinescript-vite/docs/theory/README.adoc | 2 + .../docs/theory/computing/README.adoc | 2 + .../docs/theory/formalisms/README.adoc | 2 + .../docs/theory/mathematics/README.adoc | 2 + .../docs/theory/ontologies/README.adoc | 2 + .../docs/theory/other/README.adoc | 2 + .../docs/theory/socio-technical/README.adoc | 2 + .../docs/whitepapers/README.adoc | 2 + .../docs/whitepapers/academic/README.adoc | 2 + .../docs/whitepapers/industry/README.adoc | 2 + .../docs/whitepapers/outreach/README.adoc | 2 + affinescript-vite/docs/wikis/README.adoc | 2 + affinescript-vite/example/main.js | 2 + affinescript-vite/features/README.adoc | 2 + .../features/boj-server/README.adoc | 2 + .../features/panic-attacker/README.adoc | 2 + affinescript-vite/features/ssg/README.adoc | 2 + affinescript-vite/llm-warmup-dev.md | 4 + affinescript-vite/llm-warmup-user.md | 4 + affinescript-vite/src/README.adoc | 2 + .../src/affine-plugin-improved.js | 2 + affinescript-vite/src/affine-plugin.js | 2 + affinescript-vite/src/aspects/README.adoc | 2 + .../src/aspects/integrity/README.adoc | 2 + .../src/aspects/observability/README.adoc | 2 + .../src/aspects/security/README.adoc | 2 + affinescript-vite/src/contracts/README.adoc | 2 + affinescript-vite/src/definitions/README.adoc | 2 + affinescript-vite/src/errors/README.adoc | 2 + affinescript-vite/src/index.js | 2 + affinescript-vite/src/interface/README.adoc | 2 + .../src/interface/abi/Foreign.idr | 1 + .../src/interface/abi/Layout.idr | 1 + .../src/interface/abi/README.adoc | 2 + affinescript-vite/src/interface/abi/Types.idr | 1 + .../src/interface/ffi/README.adoc | 2 + affinescript-vite/src/interface/ffi/build.zig | 2 +- .../src/interface/ffi/src/README.adoc | 2 + .../src/interface/ffi/src/main.zig | 3 +- .../src/interface/ffi/test/README.adoc | 2 + .../interface/ffi/test/integration_test.zig | 4 +- .../src/interface/generated/README.adoc | 2 + .../src/interface/generated/abi/README.adoc | 2 + affinescript-vite/tests/fuzz/README.adoc | 2 +- affinescript-vite/verification/README.adoc | 2 + .../verification/benchmarks/README.adoc | 2 + .../verification/coverage/README.adoc | 2 + .../verification/fuzzing/README.adoc | 2 + .../verification/proofs/README.adoc | 3 +- .../proofs/idris2/ABI/Compliance.idr | 2 +- .../proofs/idris2/ABI/Foreign.idr | 2 +- .../verification/proofs/idris2/ABI/Layout.idr | 2 +- .../proofs/idris2/ABI/Platform.idr | 2 +- .../proofs/idris2/ABI/Pointers.idr | 2 +- .../verification/proofs/idris2/Types.idr | 2 +- .../verification/safety_case/README.adoc | 2 + .../verification/simulations/README.adoc | 2 + .../verification/tests/README.adoc | 2 + .../verification/traceability/README.adoc | 2 + affinescript-vite/vite.config.js | 2 + affinescriptiser/.claude/CLAUDE.md | 4 + affinescriptiser/.devcontainer/README.adoc | 1 + affinescriptiser/.github/CODE_OF_CONDUCT.md | 4 + affinescriptiser/.github/CONTRIBUTING.md | 4 + affinescriptiser/.github/DIRECTORY.adoc | 2 + affinescriptiser/.github/GOVERNANCE.md | 6 +- affinescriptiser/.github/SECURITY.md | 4 + .../.github/copilot-instructions.md | 5 +- .../.github/pull_request_template.md | 5 +- .../.github/workflows/boj-build.yml | 1 + .../.github/workflows/casket-pages.yml | 2 + affinescriptiser/.github/workflows/codeql.yml | 1 + .../.github/workflows/dogfood-gate.yml | 6 + .../.github/workflows/governance.yml | 1 + .../.github/workflows/hypatia-scan.yml | 1 + .../.github/workflows/instant-sync.yml | 1 + affinescriptiser/.github/workflows/mirror.yml | 7 + .../.github/workflows/release.yml | 3 + .../.github/workflows/rhodibot.yml | 1 + .../.github/workflows/rust-ci.yml | 2 + .../.github/workflows/scorecard-enforcer.yml | 2 + .../.github/workflows/scorecard.yml | 1 + .../.github/workflows/secret-scanner.yml | 3 + .../workflows/static-analysis-gate.yml | 3 + .../.machine_readable/MUST.contractile | 4 +- .../.machine_readable/README.adoc | 2 + .../agent_instructions/README.adoc | 2 +- .../.machine_readable/ai/PLACEHOLDERS.adoc | 2 + .../.machine_readable/ai/README.adoc | 2 + .../.machine_readable/anchors/README.adoc | 2 + .../.machine_readable/configs/README.adoc | 2 + .../contractiles/README.adoc | 2 + .../.machine_readable/policies/README.adoc | 2 + .../scripts/forge/README.adoc | 2 + .../scripts/lifecycle/README.adoc | 2 + .../scripts/verification/README.adoc | 2 + affinescriptiser/CHANGELOG.adoc | 1 + affinescriptiser/CODE_OF_CONDUCT.md | 5 +- affinescriptiser/CONTRIBUTING.adoc | 2 + affinescriptiser/EXPLAINME.adoc | 1 + affinescriptiser/QUICKSTART-DEV.adoc | 2 + affinescriptiser/QUICKSTART-MAINTAINER.adoc | 2 + affinescriptiser/QUICKSTART-USER.adoc | 2 + affinescriptiser/README.adoc | 2 +- affinescriptiser/ROADMAP.adoc | 2 +- affinescriptiser/SECURITY.md | 4 + affinescriptiser/TEST-NEEDS.md | 4 + affinescriptiser/TOPOLOGY.md | 5 +- affinescriptiser/container/README.adoc | 2 +- affinescriptiser/docs/QUICKSTART.adoc | 2 + affinescriptiser/docs/README.adoc | 2 + affinescriptiser/docs/RSR_OUTLINE.adoc | 4 +- affinescriptiser/docs/STATE-VISUALIZER.adoc | 2 + .../docs/architecture/THREAT-MODEL.adoc | 2 + .../docs/attribution/CITATIONS.adoc | 2 + .../docs/attribution/CODEOWNERS.adoc | 2 + .../docs/attribution/MAINTAINERS.adoc | 1 + affinescriptiser/docs/attribution/README.adoc | 2 + .../docs/decisions/0000-template.adoc | 2 + .../decisions/0001-adopt-rsr-standard.adoc | 2 + affinescriptiser/docs/decisions/README.adoc | 2 + .../docs/developer/ABI-FFI-README.adoc | 2 + affinescriptiser/docs/developer/README.adoc | 2 + .../docs/governance/CRG-CRITERIA.adoc | 2 + .../governance/MAINTENANCE-CHECKLIST.adoc | 2 + affinescriptiser/docs/governance/README.adoc | 2 + .../SOFTWARE-DEVELOPMENT-APPROACH.adoc | 2 + affinescriptiser/docs/governance/TSDM.adoc | 2 + .../docs/governance/audit/README.adoc | 2 + .../governance/audit/compliance/README.adoc | 2 + .../docs/governance/audit/effects/README.adoc | 2 + .../docs/governance/audit/systems/README.adoc | 2 + .../docs/governance/maintenance/README.adoc | 2 + .../maintenance/adaptive/README.adoc | 2 + .../maintenance/corrective/README.adoc | 2 + .../maintenance/perfective/README.adoc | 2 + .../docs/governance/planning/README.adoc | 2 + .../governance/planning/could/README.adoc | 2 + .../docs/governance/planning/must/README.adoc | 2 + .../governance/planning/should/README.adoc | 2 + .../docs/practice/AI-CONVENTIONS.adoc | 2 + affinescriptiser/docs/practice/README.adoc | 2 + .../docs/practice/STATE-VISUALIZER-GUIDE.adoc | 1 + affinescriptiser/docs/reports/README.adoc | 2 + .../docs/reports/compliance/README.adoc | 2 + .../docs/reports/maintenance/README.adoc | 2 + .../docs/reports/performance/README.adoc | 2 + .../docs/reports/quality/README.adoc | 2 + .../docs/reports/security/README.adoc | 2 + affinescriptiser/docs/standards/README.adoc | 2 + .../docs/templates/contractiles/README.adoc | 1 + affinescriptiser/docs/theory/README.adoc | 2 + .../docs/theory/computing/README.adoc | 2 + .../docs/theory/formalisms/README.adoc | 2 + .../docs/theory/mathematics/README.adoc | 2 + .../docs/theory/ontologies/README.adoc | 2 + .../docs/theory/other/README.adoc | 2 + .../docs/theory/socio-technical/README.adoc | 2 + affinescriptiser/docs/whitepapers/README.adoc | 2 + .../docs/whitepapers/academic/README.adoc | 2 + .../docs/whitepapers/industry/README.adoc | 2 + .../docs/whitepapers/outreach/README.adoc | 2 + affinescriptiser/docs/wikis/README.adoc | 2 + affinescriptiser/examples/README.adoc | 2 + affinescriptiser/examples/wasm-safe/core.rs | 1 + affinescriptiser/features/README.adoc | 2 + .../features/boj-server/README.adoc | 2 + .../features/panic-attacker/README.adoc | 2 + affinescriptiser/features/ssg/README.adoc | 2 + affinescriptiser/llm-warmup-dev.md | 4 + affinescriptiser/llm-warmup-user.md | 4 + affinescriptiser/src/README.adoc | 2 + affinescriptiser/src/abi/mod.rs | 2 +- affinescriptiser/src/aspects/README.adoc | 2 + .../src/aspects/integrity/README.adoc | 2 + .../src/aspects/observability/README.adoc | 2 + .../src/aspects/security/README.adoc | 2 + affinescriptiser/src/codegen/affine_gen.rs | 2 +- affinescriptiser/src/codegen/mod.rs | 2 +- affinescriptiser/src/codegen/parser.rs | 2 +- affinescriptiser/src/codegen/wasm_gen.rs | 2 +- affinescriptiser/src/contracts/README.adoc | 2 + affinescriptiser/src/definitions/README.adoc | 2 + affinescriptiser/src/errors/README.adoc | 2 + affinescriptiser/src/interface/README.adoc | 2 + .../src/interface/abi/Foreign.idr | 2 +- affinescriptiser/src/interface/abi/Layout.idr | 2 +- .../src/interface/abi/README.adoc | 2 + affinescriptiser/src/interface/abi/Types.idr | 2 +- .../src/interface/ffi/README.adoc | 2 + affinescriptiser/src/interface/ffi/build.zig | 4 +- .../src/interface/ffi/src/README.adoc | 2 + .../src/interface/ffi/src/main.zig | 4 +- .../src/interface/ffi/test/README.adoc | 2 + .../interface/ffi/test/integration_test.zig | 4 +- .../src/interface/generated/README.adoc | 2 + .../src/interface/generated/abi/README.adoc | 2 + affinescriptiser/src/lib.rs | 4 +- affinescriptiser/src/main.rs | 4 +- affinescriptiser/src/manifest/mod.rs | 2 +- affinescriptiser/tests/integration_tests.rs | 2 +- affinescriptiser/verification/README.adoc | 2 + .../verification/benchmarks/README.adoc | 2 + .../verification/coverage/README.adoc | 2 + .../verification/fuzzing/README.adoc | 2 + .../verification/proofs/README.adoc | 2 + .../verification/safety_case/README.adoc | 2 + .../verification/simulations/README.adoc | 2 + .../verification/tests/README.adoc | 2 + .../verification/traceability/README.adoc | 2 + ai-cli-crash-capture/README.adoc | 2 + conformance/README.md | 4 + distributions/rattlescript/README.adoc | 1 + distributions/rattlescript/build.rs | 1 + distributions/rattlescript/src/main.rs | 1 + docs/ALIB-INTEGRATION.md | 4 + docs/CAPABILITY-MATRIX.adoc | 1 + docs/CITATIONS.adoc | 4 +- docs/DESIGN-VISION.adoc | 1 + docs/ECOSYSTEM.adoc | 1 + docs/EFFECTS-IMPLEMENTATION.md | 4 + docs/EXPLAINME.adoc | 1 + docs/KNOWN-ISSUES.md | 5 +- docs/MIGRATION-ASSISTANT.adoc | 1 + docs/NAVIGATION.adoc | 1 + docs/PACKAGING.adoc | 1 + docs/PROOF-NEEDS.md | 4 + docs/README.adoc | 1 + docs/RESCRIPT-ELIMINATION.adoc | 1 + docs/ROADMAP.adoc | 2 + docs/STATE-2026-05-26.adoc | 3 +- docs/STDLIB-EXTERN-AUDIT.adoc | 1 + docs/TECH-DEBT.adoc | 1 + docs/academic/README.md | 4 + .../axiomatic-semantics.md | 4 + .../denotational-semantics.md | 4 + .../operational-semantics.md | 4 + .../formal-verification/solo-core/Context.idr | 1 + .../solo-core/Quantity.idr | 1 + .../formal-verification/solo-core/README.adoc | 1 + .../solo-core/Soundness.idr | 1 + .../formal-verification/solo-core/Syntax.idr | 1 + .../formal-verification/solo-core/Typing.idr | 1 + .../categorical-semantics.md | 4 + .../complexity-analysis.md | 4 + .../logic-foundations.md | 4 + docs/academic/mechanized/agda/README.md | 4 + docs/academic/mechanized/coq/README.md | 4 + docs/academic/mechanized/lean/README.md | 4 + .../proofs/coherence-parametricity.md | 4 + docs/academic/proofs/dependent-types.md | 4 + docs/academic/proofs/effect-soundness.md | 4 + docs/academic/proofs/inference-algorithm.md | 4 + docs/academic/proofs/ownership-soundness.md | 4 + docs/academic/proofs/quantitative-types.md | 4 + docs/academic/proofs/row-polymorphism.md | 4 + docs/academic/proofs/type-soundness.md | 4 + .../tropical-unification-2026-04-04.md | 4 + docs/academic/white-papers/language-design.md | 4 + docs/alib-roadmap.adoc | 2 + docs/alib/README.md | 6 +- docs/architecture/BACKEND-ANALYSIS.md | 4 + docs/architecture/BACKEND-IMPLEMENTATION.md | 4 + docs/bindings-roadmap.adoc | 4 +- .../decisions/0019-compiler-distribution.adoc | 1 + .../0022-polonius-origin-variables.adoc | 1 + docs/governance/CODE_OF_CONDUCT.md | 5 +- docs/governance/CONTRIBUTING.adoc | 1 + docs/governance/LICENSING-GUIDE.md | 52 +- docs/governance/MAINTAINERS.adoc | 1 + docs/governance/SECURITY-SETUP.md | 4 + docs/governance/SECURITY.md | 4 + docs/guides/TESTING-REPORT.adoc | 1 + docs/guides/WHAT-MAKES-IT-BRILLIANT.md | 4 + docs/guides/effects-migration-stance.adoc | 1 + docs/guides/frontier-guide.adoc | 1 + .../Human_Programming_Guide.adoc | 2 + docs/guides/lessons/01-hello-affinescript.md | 4 + docs/guides/lessons/README.md | 4 + .../lessons/migrations/idaptik-hitbox.adoc | 1 + .../lessons/migrations/idaptik-player-hp.adoc | 1 + .../migrations/idaptik-user-settings.adoc | 1 + docs/guides/migration-playbook.adoc | 1 + docs/guides/warmup/README.adoc | 1 + docs/history/ALPHA-1-RELEASE-NOTES.md | 8 +- .../BINDINGS-STDLIB-CODEGEN-2026-05-31.adoc | 1 + docs/history/FIXES_2026-01-23.md | 4 + docs/history/MODULE-SYSTEM-PROGRESS.md | 4 + docs/history/PHASE3-ASSESSMENT.md | 4 + docs/history/PHASE3-COMPLETE.md | 4 + docs/history/PHASE3-SESSION-SUMMARY.md | 4 + docs/history/REPLY-SUM-TYPES.md | 5 +- docs/history/SESSION-2026-01-23.md | 4 + docs/history/SESSION-COMPLETE.md | 4 + docs/history/SESSION-HANDOFF-2026-05-18.md | 5 +- docs/history/SESSION-HANDOFF-2026-05-18b.md | 5 +- docs/history/SESSION-HANDOFF-2026-05-27.adoc | 1 + docs/history/STDLIB-AOT-TRIAGE.md | 5 +- docs/history/TRAIT_SYSTEM_STATUS.md | 4 + .../TYPECHECKER-COMPLETION-2026-01-23.md | 4 + ...YPED-WASM-LEVEL-10-CLOSURE-2026-04-19.adoc | 1 + docs/reference/ABI-FFI.md | 4 + docs/reference/COMPILER-CAPABILITIES.md | 4 + .../AFFINESCRIPT-ROADMAP-STATUS-2026-04-13.md | 4 + docs/spec.md | 4 + docs/specs/SETTLED-DECISIONS.adoc | 1 + docs/specs/SPEC.adoc | 1 + .../specs/TYPED-WASM-COORDINATION-LEDGER.adoc | 1 + docs/specs/TYPED-WASM-INTERFACE.adoc | 1 + docs/specs/TYPED-WASM-ROADMAP.adoc | 1 + docs/specs/affex-spec.adoc | 1 + docs/specs/async-on-wasm-cps.adoc | 1 + docs/specs/codegen-environment.adoc | 1 + docs/specs/faces.adoc | 1 + docs/specs/zig-ffi-patterns.adoc | 1 + docs/standards/DECISIONS.md | 4 + docs/standards/PALIMPSEST.adoc | 14 +- docs/standards/PANIC-ATTACK.adoc | 1 + docs/standards/RELEASE.md | 4 + docs/standards/ROADMAP.md | 4 + docs/standards/RSR-OUTLINE.adoc | 4 +- docs/standards/TESTING.adoc | 1 + docs/stdlib-roadmap.adoc | 2 + docs/tech-debt-2026-05-26.md | 3 +- docs/tutorial/lesson-02-functions.md | 4 + docs/tutorial/lesson-03-data.md | 4 + docs/tutorial/lesson-04-patterns.md | 4 + docs/tutorial/lesson-05-types.md | 4 + docs/tutorial/lesson-06-errors.md | 4 + docs/tutorial/lesson-07-effects.md | 4 + docs/tutorial/lesson-08-generics.md | 4 + docs/tutorial/lesson-09-modules.md | 4 + docs/tutorial/lesson-10-building.md | 4 + docs/vision/AFFINESCRIPT-VISION.adoc | 1 + editors/tree-sitter-affinescript/README.md | 4 + editors/tree-sitter-affinescript/grammar.js | 3 +- editors/tree-sitter-rescript/README.md | 5 +- editors/vscode/README.md | 4 + editors/vscode/test/runTest.js | 3 +- editors/vscode/test/suite/extension.test.js | 3 +- editors/vscode/test/suite/index.js | 3 +- examples/faces/README.adoc | 3 +- ffi/zig/build.zig | 3 +- ffi/zig/src/main.zig | 3 +- ffi/zig/test/integration_test.zig | 3 +- ...float-arithmetic-operators-not-typeable.md | 4 + ...ype-syntax-not-parseable-in-user-source.md | 4 + .../03-effect-handling-migration-story.md | 4 + .../04-extern-declarations-not-parseable.md | 4 + lib/codegen_deno.ml | 22 + packages/affine-js/README.adoc | 1 + packages/affine-js/loader.js | 2 +- packages/affine-js/loader_test.js | 2 +- packages/affine-js/marshal.js | 2 +- packages/affine-js/mod.js | 2 +- packages/affine-js/runtime.js | 2 +- packages/affine-js/types.d.ts | 2 +- packages/affine-vscode/README.adoc | 2 +- packages/affine-vscode/mod.js | 2 +- packages/affinescript-cli/mod.d.ts | 2 +- packages/affinescript-cli/mod.js | 2 +- packages/affinescript-cli/mod_test.js | 2 +- packages/affinescript-cli/pins.js | 2 +- run_wasm.js | 2 + runtime/src/alloc.rs | 1 + runtime/src/effects.rs | 1 + runtime/src/ffi.rs | 1 + runtime/src/gc.rs | 1 + runtime/src/lib.rs | 1 + runtime/src/panic.rs | 1 + site/index.md | 4 + spec/ARG-PROFILE.adoc | 5 +- spec/CRG-PROFILE.adoc | 5 +- spec/FRG-PROFILE.adoc | 5 +- spec/TRG-PROFILE.adoc | 5 +- stdlib/README.md | 4 + stdlib/Websocket.affine | 110 ++ .../deno_scripting_part2.harness.mjs | 65 ++ tests/codegen-deno/websocket_smoke.affine | 36 + .../codegen-deno/websocket_smoke.harness.mjs | 63 + tests/codegen/README.md | 4 + tests/conformance/README.md | 4 + tests/faces/README.md | 4 + tests/modules/loader-bridge/README.adoc | 1 + tests/modules/xmod-link/README.adoc | 1 + tools/affine-doc/assets/search.js | 3 +- tools/affine-doc/src/extract.rs | 5 +- tools/affine-doc/src/html.rs | 5 +- tools/affine-doc/src/index.rs | 5 +- tools/affine-doc/src/main.rs | 5 +- tools/affine-doc/src/render.rs | 5 +- tools/affine-pkg/src/build.rs | 5 +- tools/affine-pkg/src/config.rs | 5 +- tools/affine-pkg/src/lockfile.rs | 5 +- tools/affine-pkg/src/main.rs | 4 +- tools/affine-pkg/src/manifest.rs | 5 +- tools/affine-pkg/src/registry.rs | 5 +- tools/affine-pkg/src/resolve.rs | 5 +- tools/affine-pkg/src/storage.rs | 5 +- tools/affine-pkg/src/workspace.rs | 5 +- tools/affinescript-dap/src/main.rs | 3 +- tools/affinescript-lsp/src/capabilities.rs | 3 +- tools/affinescript-lsp/src/compiler.rs | 3 +- tools/affinescript-lsp/src/diagnostics.rs | 3 +- tools/affinescript-lsp/src/document.rs | 3 +- tools/affinescript-lsp/src/handlers.rs | 3 +- tools/affinescript-lsp/src/main.rs | 4 +- tools/affinescript-lsp/src/symbols.rs | 3 +- tools/affinescript-lsp/src/text_index.rs | 3 +- tools/estate-rs-audit/README.adoc | 1 + .../estate-rs-audit/data/results.post228.tsv | 20 +- tools/estate-rs-audit/data/rs-inventory.tsv | 20 +- tools/res-to-affine/CORPUS-RUN.md | 5 +- tools/res-to-affine/README.md | 5 +- wiki/README.md | 5 +- wiki/compiler/architecture.md | 4 + wiki/compiler/borrow-checker.md | 4 + wiki/compiler/codegen.md | 4 + wiki/compiler/lexer.md | 4 + wiki/compiler/parser.md | 4 + wiki/compiler/type-checker.md | 4 + wiki/language-reference/dependent-types.md | 4 + wiki/language-reference/effects.md | 4 + wiki/language-reference/functions.md | 4 + wiki/language-reference/lexical.md | 4 + wiki/language-reference/modules.md | 4 + wiki/language-reference/ownership.md | 4 + wiki/language-reference/patterns.md | 4 + wiki/language-reference/rows.md | 4 + wiki/language-reference/traits.md | 4 + wiki/language-reference/types.md | 4 + wiki/stdlib/overview.md | 4 + wiki/testing/guide.md | 4 + wiki/testing/property-based.md | 4 + wiki/tooling/cli.md | 4 + wiki/tooling/repl.md | 4 + wiki/tutorials/introduction.md | 4 + wiki/tutorials/quickstart.md | 4 + 587 files changed, 2126 insertions(+), 908 deletions(-) create mode 100644 .machine_readable/6a2/0-AI-MANIFEST.a2ml create mode 100644 .machine_readable/6a2/README.adoc create mode 100644 .machine_readable/6a2/anchor/0-AI-MANIFEST.a2ml rename .machine_readable/{anchors => 6a2/anchor}/ANCHOR.a2ml (100%) create mode 100644 .machine_readable/6a2/anchor/README.adoc rename .machine_readable/svc/{k9 => self-validating}/README.adoc (84%) rename .machine_readable/svc/{k9 => self-validating}/examples/ci-config.k9.ncl (100%) rename .machine_readable/svc/{k9 => self-validating}/examples/project-metadata.k9.ncl (100%) rename .machine_readable/svc/{k9 => self-validating}/examples/setup-repo.k9.ncl (98%) rename .machine_readable/svc/{k9 => self-validating}/template-hunt.k9.ncl (100%) rename .machine_readable/svc/{k9 => self-validating}/template-kennel.k9.ncl (100%) rename .machine_readable/svc/{k9 => self-validating}/template-yard.k9.ncl (100%) create mode 100644 stdlib/Websocket.affine create mode 100644 tests/codegen-deno/deno_scripting_part2.harness.mjs create mode 100644 tests/codegen-deno/websocket_smoke.affine create mode 100644 tests/codegen-deno/websocket_smoke.harness.mjs diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index d24e231e..4aa79869 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -1,3 +1,7 @@ + ## 🚨 Disambiguation (read first) **This repo is `hyperpolymath/affinescript`.** It is **NOT** `hyperpolymath/ephapax`. @@ -103,7 +107,7 @@ Both are FOSS with independent governance (no Big Tech). 1. **No new TypeScript files** - Write new code in AffineScript (closed exemptions table below covers the residual `.d.ts` / Deno-test cases). 2. **No new ReScript files** - As of 2026-05-25 policy refresh; AffineScript is the go-forward. Existing `.res` files stay until migrated via #488. -3. **No package.json for runtime deps** - Use deno.json imports. +3. **No package.json - use deno.json deps** - Use deno.json imports. 4. **No node_modules in production** - Deno caches deps automatically. 5. **No Go code** - Use Rust instead. 6. **Python only for SaltStack** - All other Python must be rewritten. diff --git a/.claude/PROJECT.md b/.claude/PROJECT.md index e03dfb7a..090b68b8 100644 --- a/.claude/PROJECT.md +++ b/.claude/PROJECT.md @@ -1,3 +1,7 @@ + # AffineScript - Claude Code Instructions This is the AffineScript compiler, written in OCaml. diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 987aab6b..45a6c025 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 4fcb9f9f..b1d16dff 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 3e8fa7e7..a5a56933 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 fd0e2a5c..c2d1f57b 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/workflows/affine-vscode-publish.yml b/.github/workflows/affine-vscode-publish.yml index 45521698..443f492d 100644 --- a/.github/workflows/affine-vscode-publish.yml +++ b/.github/workflows/affine-vscode-publish.yml @@ -33,6 +33,7 @@ concurrency: jobs: publish: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout code uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/.github/workflows/casket-pages.yml b/.github/workflows/casket-pages.yml index 64c6da3e..acd07498 100644 --- a/.github/workflows/casket-pages.yml +++ b/.github/workflows/casket-pages.yml @@ -18,6 +18,7 @@ concurrency: jobs: build: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4 @@ -100,6 +101,7 @@ jobs: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest + timeout-minutes: 15 needs: build steps: - name: Deploy to GitHub Pages diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b704f5d9..fd5cc741 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,6 +19,7 @@ concurrency: jobs: build: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout code @@ -89,6 +90,7 @@ jobs: lint: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout code @@ -118,6 +120,7 @@ jobs: # §"Bench standards". Does NOT block merge. Promotion to a # ratcheted gate requires a calibrated baseline first. runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout code @@ -170,6 +173,7 @@ jobs: # docs/standards/TESTING.adoc §"Coverage (visibility-only)". # No merge-blocking floor today. runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout code @@ -232,6 +236,7 @@ jobs: # (previously gated on #104's npm publish). A real regression should # turn this job red and gate, so no `continue-on-error`. runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout code @@ -281,6 +286,7 @@ jobs: # commit still build cleanly and (b) gate `tools/res-to-affine/` # walker work that depends on the generated parser. runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout code diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 626f5afd..a37ff6f4 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -23,6 +23,7 @@ permissions: read-all jobs: analyze: runs-on: ubuntu-latest + timeout-minutes: 15 permissions: contents: read security-events: write diff --git a/.github/workflows/governance.yml b/.github/workflows/governance.yml index ad36899f..3e7ba200 100644 --- a/.github/workflows/governance.yml +++ b/.github/workflows/governance.yml @@ -26,3 +26,4 @@ permissions: jobs: governance: uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@861b5e911d9e5dcfb3c0ab3dd2a9a3c8fd0a1613 + timeout-minutes: 10 diff --git a/.github/workflows/hypatia-scan.yml b/.github/workflows/hypatia-scan.yml index bf6304a6..2755c53e 100644 --- a/.github/workflows/hypatia-scan.yml +++ b/.github/workflows/hypatia-scan.yml @@ -26,4 +26,5 @@ permissions: jobs: hypatia: uses: hyperpolymath/standards/.github/workflows/hypatia-scan-reusable.yml@5eb28d7d8790d5389b7b6a5233fe6265a775e3d0 + timeout-minutes: 10 secrets: inherit diff --git a/.github/workflows/instant-sync.yml b/.github/workflows/instant-sync.yml index 642c79ab..9b009c60 100644 --- a/.github/workflows/instant-sync.yml +++ b/.github/workflows/instant-sync.yml @@ -18,6 +18,7 @@ concurrency: jobs: dispatch: runs-on: ubuntu-latest + timeout-minutes: 15 # Skip the dispatch job entirely when the FARM_DISPATCH_TOKEN secret is # not configured (e.g. on forks, or before the secret is provisioned). # Without this gate the action errors with "Parameter token or opts.auth diff --git a/.github/workflows/mirror.yml b/.github/workflows/mirror.yml index 2083ca60..ee8ea027 100644 --- a/.github/workflows/mirror.yml +++ b/.github/workflows/mirror.yml @@ -12,4 +12,5 @@ permissions: jobs: mirror: uses: hyperpolymath/standards/.github/workflows/mirror-reusable.yml@e6b2884722350515934d443daf23442f2195796f + timeout-minutes: 10 secrets: inherit diff --git a/.github/workflows/panic-attack.yml b/.github/workflows/panic-attack.yml index dbf12330..2b045865 100644 --- a/.github/workflows/panic-attack.yml +++ b/.github/workflows/panic-attack.yml @@ -32,6 +32,7 @@ permissions: jobs: scan: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/.github/workflows/publish-jsr.yml b/.github/workflows/publish-jsr.yml index d8d378ad..ec012cd3 100644 --- a/.github/workflows/publish-jsr.yml +++ b/.github/workflows/publish-jsr.yml @@ -41,6 +41,7 @@ concurrency: jobs: publish: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@v6 - uses: denoland/setup-deno@v2 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e50791bc..c9decaa8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,6 +34,7 @@ concurrency: jobs: prepare: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout code uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -61,6 +62,7 @@ jobs: - os: macos-14 target: macos-arm64 runs-on: ${{ matrix.os }} + timeout-minutes: 15 steps: - name: Checkout code uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -105,6 +107,7 @@ jobs: checksums: needs: build runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Collect binaries and publish SHA256SUMS env: diff --git a/.github/workflows/scorecard-enforcer.yml b/.github/workflows/scorecard-enforcer.yml index 8c0ee356..c5e93dfd 100644 --- a/.github/workflows/scorecard-enforcer.yml +++ b/.github/workflows/scorecard-enforcer.yml @@ -22,6 +22,7 @@ permissions: read-all jobs: scorecard: runs-on: ubuntu-latest + timeout-minutes: 15 permissions: security-events: write id-token: write # For OIDC @@ -45,6 +46,7 @@ jobs: # Check specific high-priority items check-critical: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4 diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 3f73a647..09ccd95a 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -16,4 +16,5 @@ jobs: security-events: write id-token: write uses: hyperpolymath/standards/.github/workflows/scorecard-reusable.yml@e0caf11508a3989574713c78f5f444f2ce5e33ef + timeout-minutes: 10 secrets: inherit diff --git a/.github/workflows/secret-scanner.yml b/.github/workflows/secret-scanner.yml index 097d2af9..c7761fee 100644 --- a/.github/workflows/secret-scanner.yml +++ b/.github/workflows/secret-scanner.yml @@ -16,4 +16,5 @@ permissions: jobs: scan: uses: hyperpolymath/standards/.github/workflows/secret-scanner-reusable.yml@3e4bd4c93911750727e2e4c66dff859e00079da0 + timeout-minutes: 10 secrets: inherit diff --git a/.github/workflows/semgrep.yml b/.github/workflows/semgrep.yml index 58d2048e..801a9974 100644 --- a/.github/workflows/semgrep.yml +++ b/.github/workflows/semgrep.yml @@ -21,6 +21,7 @@ concurrency: jobs: semgrep: runs-on: ubuntu-latest + timeout-minutes: 15 permissions: security-events: write contents: read diff --git a/.github/workflows/spark-theatre-gate.yml b/.github/workflows/spark-theatre-gate.yml index a9e5e3ff..4e343e44 100644 --- a/.github/workflows/spark-theatre-gate.yml +++ b/.github/workflows/spark-theatre-gate.yml @@ -28,6 +28,7 @@ permissions: jobs: spark-theatre-gate: uses: hyperpolymath/standards/.github/workflows/spark-theatre-gate.yml@462003782f3ebb93ea763e81d0d199ce13ef7d73 + timeout-minutes: 10 with: paths: "." enforce_zero_contract: false diff --git a/.github/workflows/stdlib-naming.yml b/.github/workflows/stdlib-naming.yml index 3f3cb37a..6de59b6e 100644 --- a/.github/workflows/stdlib-naming.yml +++ b/.github/workflows/stdlib-naming.yml @@ -29,6 +29,7 @@ concurrency: jobs: enforce-lowercase-stdlib: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/.github/workflows/workflow-linter.yml b/.github/workflows/workflow-linter.yml index 99968724..3f92187f 100644 --- a/.github/workflows/workflow-linter.yml +++ b/.github/workflows/workflow-linter.yml @@ -21,6 +21,7 @@ concurrency: jobs: lint-workflows: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4 diff --git a/.machine_readable/6a2/0-AI-MANIFEST.a2ml b/.machine_readable/6a2/0-AI-MANIFEST.a2ml new file mode 100644 index 00000000..6bf1f8c7 --- /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 00000000..bc033d70 --- /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 00000000..0dd6825b --- /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/anchors/ANCHOR.a2ml b/.machine_readable/6a2/anchor/ANCHOR.a2ml similarity index 100% rename from .machine_readable/anchors/ANCHOR.a2ml rename to .machine_readable/6a2/anchor/ANCHOR.a2ml diff --git a/.machine_readable/6a2/anchor/README.adoc b/.machine_readable/6a2/anchor/README.adoc new file mode 100644 index 00000000..bd23e359 --- /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/agent_instructions/README.adoc b/.machine_readable/agent_instructions/README.adoc index 96dd0249..9660674e 100644 --- a/.machine_readable/agent_instructions/README.adoc +++ b/.machine_readable/agent_instructions/README.adoc @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell = AffineScript Agent Instructions :toc: preamble diff --git a/.machine_readable/contractiles/README.adoc b/.machine_readable/contractiles/README.adoc index d19a3877..70ad7126 100644 --- a/.machine_readable/contractiles/README.adoc +++ b/.machine_readable/contractiles/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Contractiles Template Set :toc: :sectnums: diff --git a/.machine_readable/svc/README.adoc b/.machine_readable/svc/README.adoc index 22c4cb02..7e86020c 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 affinescript :toc: diff --git a/.machine_readable/svc/k9/README.adoc b/.machine_readable/svc/self-validating/README.adoc similarity index 84% rename from .machine_readable/svc/k9/README.adoc rename to .machine_readable/svc/self-validating/README.adoc index 143e746c..2c074234 100644 --- a/.machine_readable/svc/k9/README.adoc +++ b/.machine_readable/svc/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 .machine_readable/contractiles/k9/examples/project-metadata.k9.ncl config/metadata.k9.ncl +cp .machine_readable/contractiles/self-validating/examples/project-metadata.k9.ncl config/metadata.k9.ncl # Yard: Validated configuration -cp .machine_readable/contractiles/k9/examples/ci-config.k9.ncl .github/ci.k9.ncl +cp .machine_readable/contractiles/self-validating/examples/ci-config.k9.ncl .github/ci.k9.ncl # Hunt: Full automation -cp .machine_readable/contractiles/k9/examples/setup-repo.k9.ncl scripts/setup.k9.ncl +cp .machine_readable/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/svc/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/svc/self-validating/examples/ci-config.k9.ncl diff --git a/.machine_readable/svc/k9/examples/project-metadata.k9.ncl b/.machine_readable/svc/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/svc/self-validating/examples/project-metadata.k9.ncl diff --git a/.machine_readable/svc/k9/examples/setup-repo.k9.ncl b/.machine_readable/svc/self-validating/examples/setup-repo.k9.ncl similarity index 98% rename from .machine_readable/svc/k9/examples/setup-repo.k9.ncl rename to .machine_readable/svc/self-validating/examples/setup-repo.k9.ncl index d1fc8bbe..c05a160d 100644 --- a/.machine_readable/svc/k9/examples/setup-repo.k9.ncl +++ b/.machine_readable/svc/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 .machine_readable/contractiles/k9/", + "mkdir -p .machine_readable/contractiles/self-validating/", "echo '✓ Directory structure created'", ], }, diff --git a/.machine_readable/svc/k9/template-hunt.k9.ncl b/.machine_readable/svc/self-validating/template-hunt.k9.ncl similarity index 100% rename from .machine_readable/svc/k9/template-hunt.k9.ncl rename to .machine_readable/svc/self-validating/template-hunt.k9.ncl diff --git a/.machine_readable/svc/k9/template-kennel.k9.ncl b/.machine_readable/svc/self-validating/template-kennel.k9.ncl similarity index 100% rename from .machine_readable/svc/k9/template-kennel.k9.ncl rename to .machine_readable/svc/self-validating/template-kennel.k9.ncl diff --git a/.machine_readable/svc/k9/template-yard.k9.ncl b/.machine_readable/svc/self-validating/template-yard.k9.ncl similarity index 100% rename from .machine_readable/svc/k9/template-yard.k9.ncl rename to .machine_readable/svc/self-validating/template-yard.k9.ncl diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ec39bc0..991ad482 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,7 @@ - # Changelog All notable changes to `affinescript` will be documented in this file. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 86acb0c6..da9e5bcd 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,3 +1,7 @@ + # Code of Conduct ## Our Pledge diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 41d3f311..e43e2cc5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,3 +1,7 @@ + # Contributing to AffineScript Thank you for your interest in AffineScript — a practical language for resource-safe systems, compiling to typed WebAssembly. This guide covers how to set up a working tree, file useful bugs, and submit changes. @@ -47,7 +51,7 @@ affinescript/ ├── .github/ # CI workflows, issue templates ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md # This file -├── LICENSE / LICENSES # MIT OR AGPL-3.0-or-later +├── LICENSE / LICENSES # MIT OR MPL-2.0 ├── MAINTAINERS.adoc ├── README.adoc ├── SECURITY.md @@ -152,4 +156,4 @@ This project follows the [Code of Conduct](CODE_OF_CONDUCT.md). By participating ## License -By contributing you agree your contribution is licensed under the project's dual licence (MIT OR AGPL-3.0-or-later), as recorded in [`LICENSE`](LICENSE) and per-file SPDX headers. +By contributing you agree your contribution is licensed under the project's dual licence (MIT OR MPL-2.0), as recorded in [`LICENSE`](LICENSE) and per-file SPDX headers. diff --git a/LICENSE b/LICENSE index 78c37b74..d0a1fa14 100644 --- a/LICENSE +++ b/LICENSE @@ -1,663 +1,373 @@ -SPDX-License-Identifier: AGPL-3.0-or-later - - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU Affero General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero General Public License from time to time. Such new versions -will be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU Affero General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU Affero General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU Affero General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If your software can interact with users remotely through a computer -network, you should also make sure that it provides a way for users to -get its source. For example, if your program is a web application, its -interface could display a "Source" link that leads users to an archive -of the code. There are many ways you could offer source, and different -solutions will be better for different programs; see section 13 for the -specific requirements. - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU AGPL, see -. +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + 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 + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +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 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 +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/MAINTAINERS.adoc b/MAINTAINERS.adoc index a1c65443..becaa3ea 100644 --- a/MAINTAINERS.adoc +++ b/MAINTAINERS.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Maintainers :toc: preamble diff --git a/RSR_COMPLIANCE.adoc b/RSR_COMPLIANCE.adoc index c42abb13..bfd97bf1 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 // SPDX-FileCopyrightText: 2024-2026 hyperpolymath = AffineScript RSR Compliance :toc: macro diff --git a/SECURITY.md b/SECURITY.md index 7dd7b29e..09fc7b85 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,3 +1,7 @@ + # Security Policy # Code of Conduct # Clone the repository git clone https://github.com/hyperpolymath/affinescript-vite.git cd affinescript-vite diff --git a/affinescript-vite/.github/DIRECTORY.adoc b/affinescript-vite/.github/DIRECTORY.adoc index a97d2202..b4caddfa 100644 --- a/affinescript-vite/.github/DIRECTORY.adoc +++ b/affinescript-vite/.github/DIRECTORY.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = .github Pillar diff --git a/affinescript-vite/.github/GOVERNANCE.md b/affinescript-vite/.github/GOVERNANCE.md index 527c72e6..f903cd50 100644 --- a/affinescript-vite/.github/GOVERNANCE.md +++ b/affinescript-vite/.github/GOVERNANCE.md @@ -1,5 +1,7 @@ - - + # Project Governance This document describes the governance model for **AffineScript-Vite**. diff --git a/affinescript-vite/.github/SECURITY.md b/affinescript-vite/.github/SECURITY.md index 862e5145..ac9bdb4a 100644 --- a/affinescript-vite/.github/SECURITY.md +++ b/affinescript-vite/.github/SECURITY.md @@ -1,3 +1,7 @@ + # Security Policy + diff --git a/affinescript-vite/.github/pull_request_template.md b/affinescript-vite/.github/pull_request_template.md index 63eb6ad7..9f5155ca 100644 --- a/affinescript-vite/.github/pull_request_template.md +++ b/affinescript-vite/.github/pull_request_template.md @@ -1,4 +1,7 @@ - + ## Summary diff --git a/affinescript-vite/.github/workflows/boj-build.yml b/affinescript-vite/.github/workflows/boj-build.yml index f9331541..20848c4e 100644 --- a/affinescript-vite/.github/workflows/boj-build.yml +++ b/affinescript-vite/.github/workflows/boj-build.yml @@ -18,6 +18,7 @@ permissions: jobs: trigger-boj: runs-on: ubuntu-latest + timeout-minutes: 15 if: ${{ vars.BOJ_SERVER_URL != '' || secrets.BOJ_SERVER_URL != '' }} steps: - name: Checkout diff --git a/affinescript-vite/.github/workflows/codeql.yml b/affinescript-vite/.github/workflows/codeql.yml index 8525011c..2ed349c7 100644 --- a/affinescript-vite/.github/workflows/codeql.yml +++ b/affinescript-vite/.github/workflows/codeql.yml @@ -15,6 +15,7 @@ permissions: jobs: analyze: runs-on: ubuntu-latest + timeout-minutes: 15 permissions: contents: read security-events: write diff --git a/affinescript-vite/.github/workflows/dogfood-gate.yml b/affinescript-vite/.github/workflows/dogfood-gate.yml index d00c7520..523b590f 100644 --- a/affinescript-vite/.github/workflows/dogfood-gate.yml +++ b/affinescript-vite/.github/workflows/dogfood-gate.yml @@ -22,6 +22,7 @@ jobs: a2ml-validate: name: Validate A2ML manifests runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository @@ -66,6 +67,7 @@ jobs: k9-validate: name: Validate K9 contracts runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository @@ -115,6 +117,7 @@ jobs: empty-lint: name: Empty-linter (invisible characters) runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository @@ -179,6 +182,7 @@ jobs: groove-check: name: Groove manifest check runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository @@ -237,6 +241,7 @@ jobs: eclexiaiser-validate: name: Validate eclexiaiser manifest runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository @@ -300,6 +305,7 @@ print(f'Valid: {project[\"name\"]} ({len(functions)} function(s))') dogfood-summary: name: Dogfooding compliance summary runs-on: ubuntu-latest + timeout-minutes: 15 needs: [a2ml-validate, k9-validate, empty-lint, groove-check, eclexiaiser-validate] if: always() diff --git a/affinescript-vite/.github/workflows/governance.yml b/affinescript-vite/.github/workflows/governance.yml index b4062e02..a0441740 100644 --- a/affinescript-vite/.github/workflows/governance.yml +++ b/affinescript-vite/.github/workflows/governance.yml @@ -24,3 +24,4 @@ permissions: jobs: governance: uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@861b5e911d9e5dcfb3c0ab3dd2a9a3c8fd0a1613 + timeout-minutes: 10 diff --git a/affinescript-vite/.github/workflows/hypatia-scan.yml b/affinescript-vite/.github/workflows/hypatia-scan.yml index 2144e9ab..1333454d 100644 --- a/affinescript-vite/.github/workflows/hypatia-scan.yml +++ b/affinescript-vite/.github/workflows/hypatia-scan.yml @@ -18,6 +18,7 @@ jobs: scan: name: Hypatia Neurosymbolic Analysis runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository diff --git a/affinescript-vite/.github/workflows/instant-sync.yml b/affinescript-vite/.github/workflows/instant-sync.yml index d022c3e0..e1d2d9d7 100644 --- a/affinescript-vite/.github/workflows/instant-sync.yml +++ b/affinescript-vite/.github/workflows/instant-sync.yml @@ -14,6 +14,7 @@ permissions: jobs: dispatch: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Trigger Propagation uses: peter-evans/repository-dispatch@28959ce8df70de7be546dd1250a005dd32156697 # v3 diff --git a/affinescript-vite/.github/workflows/mirror.yml b/affinescript-vite/.github/workflows/mirror.yml index efdb7b72..f86bc9cb 100644 --- a/affinescript-vite/.github/workflows/mirror.yml +++ b/affinescript-vite/.github/workflows/mirror.yml @@ -13,6 +13,7 @@ permissions: jobs: mirror-gitlab: runs-on: ubuntu-latest + timeout-minutes: 15 if: vars.GITLAB_MIRROR_ENABLED == 'true' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -31,6 +32,7 @@ jobs: mirror-bitbucket: runs-on: ubuntu-latest + timeout-minutes: 15 if: vars.BITBUCKET_MIRROR_ENABLED == 'true' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -49,6 +51,7 @@ jobs: mirror-codeberg: runs-on: ubuntu-latest + timeout-minutes: 15 if: vars.CODEBERG_MIRROR_ENABLED == 'true' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -67,6 +70,7 @@ jobs: mirror-sourcehut: runs-on: ubuntu-latest + timeout-minutes: 15 if: vars.SOURCEHUT_MIRROR_ENABLED == 'true' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -85,6 +89,7 @@ jobs: mirror-disroot: runs-on: ubuntu-latest + timeout-minutes: 15 if: vars.DISROOT_MIRROR_ENABLED == 'true' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -103,6 +108,7 @@ jobs: mirror-gitea: runs-on: ubuntu-latest + timeout-minutes: 15 if: vars.GITEA_MIRROR_ENABLED == 'true' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -121,6 +127,7 @@ jobs: mirror-radicle: runs-on: ubuntu-latest + timeout-minutes: 15 if: vars.RADICLE_MIRROR_ENABLED == 'true' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/affinescript-vite/.github/workflows/openssf-compliance.yml b/affinescript-vite/.github/workflows/openssf-compliance.yml index c2262edd..6f00e2a1 100644 --- a/affinescript-vite/.github/workflows/openssf-compliance.yml +++ b/affinescript-vite/.github/workflows/openssf-compliance.yml @@ -16,6 +16,7 @@ permissions: jobs: openssf-compliance: runs-on: ubuntu-latest + timeout-minutes: 15 permissions: contents: read steps: diff --git a/affinescript-vite/.github/workflows/release.yml b/affinescript-vite/.github/workflows/release.yml index e49a7b54..5f18a110 100644 --- a/affinescript-vite/.github/workflows/release.yml +++ b/affinescript-vite/.github/workflows/release.yml @@ -18,6 +18,7 @@ jobs: build: name: Build Artifacts runs-on: ubuntu-latest + timeout-minutes: 15 permissions: contents: read steps: @@ -78,6 +79,7 @@ jobs: changelog: name: Generate Changelog runs-on: ubuntu-latest + timeout-minutes: 15 permissions: contents: read outputs: @@ -124,6 +126,7 @@ jobs: name: Create GitHub Release needs: [build, changelog] runs-on: ubuntu-latest + timeout-minutes: 15 permissions: contents: write steps: diff --git a/affinescript-vite/.github/workflows/rhodibot.yml b/affinescript-vite/.github/workflows/rhodibot.yml index a82f1782..471d9d45 100644 --- a/affinescript-vite/.github/workflows/rhodibot.yml +++ b/affinescript-vite/.github/workflows/rhodibot.yml @@ -27,6 +27,7 @@ permissions: jobs: rhodibot: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 diff --git a/affinescript-vite/.github/workflows/rust-ci.yml b/affinescript-vite/.github/workflows/rust-ci.yml index 003d6113..607820d8 100644 --- a/affinescript-vite/.github/workflows/rust-ci.yml +++ b/affinescript-vite/.github/workflows/rust-ci.yml @@ -18,6 +18,7 @@ jobs: check: name: Cargo check + clippy + fmt runs-on: ubuntu-latest + timeout-minutes: 15 if: hashFiles('Cargo.toml') != '' steps: @@ -44,6 +45,7 @@ jobs: test: name: Cargo test runs-on: ubuntu-latest + timeout-minutes: 15 needs: check if: hashFiles('Cargo.toml') != '' diff --git a/affinescript-vite/.github/workflows/scorecard-enforcer.yml b/affinescript-vite/.github/workflows/scorecard-enforcer.yml index 124cdf86..f58a919c 100644 --- a/affinescript-vite/.github/workflows/scorecard-enforcer.yml +++ b/affinescript-vite/.github/workflows/scorecard-enforcer.yml @@ -15,6 +15,7 @@ permissions: jobs: scorecard: runs-on: ubuntu-latest + timeout-minutes: 15 permissions: security-events: write id-token: write # For OIDC @@ -53,6 +54,7 @@ jobs: # Check specific high-priority items check-critical: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/affinescript-vite/.github/workflows/scorecard.yml b/affinescript-vite/.github/workflows/scorecard.yml index 22305e1c..fdf0d026 100644 --- a/affinescript-vite/.github/workflows/scorecard.yml +++ b/affinescript-vite/.github/workflows/scorecard.yml @@ -13,6 +13,7 @@ permissions: jobs: analysis: runs-on: ubuntu-latest + timeout-minutes: 15 permissions: security-events: write id-token: write diff --git a/affinescript-vite/.github/workflows/secret-scanner.yml b/affinescript-vite/.github/workflows/secret-scanner.yml index 7cb561df..a90f0936 100644 --- a/affinescript-vite/.github/workflows/secret-scanner.yml +++ b/affinescript-vite/.github/workflows/secret-scanner.yml @@ -13,6 +13,7 @@ permissions: jobs: trufflehog: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: @@ -25,6 +26,7 @@ jobs: gitleaks: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: @@ -38,6 +40,7 @@ jobs: # Rust-specific: Check for hardcoded crypto values rust-secrets: runs-on: ubuntu-latest + timeout-minutes: 15 if: hashFiles('**/Cargo.toml') != '' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/affinescript-vite/.github/workflows/static-analysis-gate.yml b/affinescript-vite/.github/workflows/static-analysis-gate.yml index 6a871b54..2b364220 100644 --- a/affinescript-vite/.github/workflows/static-analysis-gate.yml +++ b/affinescript-vite/.github/workflows/static-analysis-gate.yml @@ -19,6 +19,7 @@ jobs: panic-attack-assail: name: panic-attack assail runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository @@ -123,6 +124,7 @@ jobs: hypatia-scan: name: Hypatia neurosymbolic scan runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository @@ -236,6 +238,7 @@ jobs: patch-bridge-triage: name: Patch Bridge CVE triage runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository @@ -325,6 +328,7 @@ jobs: deposit-findings: name: Deposit findings for gitbot-fleet runs-on: ubuntu-latest + timeout-minutes: 15 needs: [panic-attack-assail, hypatia-scan, patch-bridge-triage] if: always() diff --git a/affinescript-vite/.machine_readable/MUST.contractile b/affinescript-vite/.machine_readable/MUST.contractile index 1160f0ae..48ffff16 100644 --- a/affinescript-vite/.machine_readable/MUST.contractile +++ b/affinescript-vite/.machine_readable/MUST.contractile @@ -26,7 +26,7 @@ ; remain active until the feature is fully removed. ; ; Enforcement: -; K9 validators in contractiles/k9/ machine-check MUST constraints. +; K9 validators in contractiles/self-validating/ machine-check MUST constraints. ; CI runs these on every PR. Violations block merge. ; ; ── End Definitions ────────────────────────────────────────────── @@ -85,7 +85,7 @@ ; (must "# Add project-specific invariants here") (enforcement - (k9-validator "contractiles/k9/must-check.k9.ncl") + (k9-validator "contractiles/self-validating/must-check.k9.ncl") (ci "quality.yml runs must-check on every PR") ) ) diff --git a/affinescript-vite/.machine_readable/READINESS.md b/affinescript-vite/.machine_readable/READINESS.md index e270d5d4..e9ecef74 100644 --- a/affinescript-vite/.machine_readable/READINESS.md +++ b/affinescript-vite/.machine_readable/READINESS.md @@ -1,4 +1,7 @@ - + # affinescript-vite Component Readiness Assessment diff --git a/affinescript-vite/.machine_readable/README.adoc b/affinescript-vite/.machine_readable/README.adoc index 471d6c72..e72996df 100644 --- a/affinescript-vite/.machine_readable/README.adoc +++ b/affinescript-vite/.machine_readable/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = .machine_readable Pillar diff --git a/affinescript-vite/.machine_readable/TOPOLOGY.md b/affinescript-vite/.machine_readable/TOPOLOGY.md index c3107b39..98995e1c 100644 --- a/affinescript-vite/.machine_readable/TOPOLOGY.md +++ b/affinescript-vite/.machine_readable/TOPOLOGY.md @@ -1,4 +1,7 @@ - + # Architecture Topology diff --git a/affinescript-vite/.machine_readable/agent_instructions/README.adoc b/affinescript-vite/.machine_readable/agent_instructions/README.adoc index 6fa36e15..e5fec014 100644 --- a/affinescript-vite/.machine_readable/agent_instructions/README.adoc +++ b/affinescript-vite/.machine_readable/agent_instructions/README.adoc @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) {{CURRENT_YEAR}} hyperpolymath (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell = Agent Instructions :toc: preamble diff --git a/affinescript-vite/.machine_readable/ai/PLACEHOLDERS.adoc b/affinescript-vite/.machine_readable/ai/PLACEHOLDERS.adoc index ca63f47e..d7b0fefb 100644 --- a/affinescript-vite/.machine_readable/ai/PLACEHOLDERS.adoc +++ b/affinescript-vite/.machine_readable/ai/PLACEHOLDERS.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Template Placeholders # Template Placeholders diff --git a/affinescript-vite/.machine_readable/ai/README.adoc b/affinescript-vite/.machine_readable/ai/README.adoc index 121bbc8a..8cf2ea7c 100644 --- a/affinescript-vite/.machine_readable/ai/README.adoc +++ b/affinescript-vite/.machine_readable/ai/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AI Guidance Directory Put AI-facing instructions in this folder. diff --git a/affinescript-vite/.machine_readable/anchors/README.adoc b/affinescript-vite/.machine_readable/anchors/README.adoc index 1b27c02d..c264945d 100644 --- a/affinescript-vite/.machine_readable/anchors/README.adoc +++ b/affinescript-vite/.machine_readable/anchors/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = anchors Registry diff --git a/affinescript-vite/.machine_readable/compliance/PROOF-NEEDS.md b/affinescript-vite/.machine_readable/compliance/PROOF-NEEDS.md index d16a9516..7e8631a7 100644 --- a/affinescript-vite/.machine_readable/compliance/PROOF-NEEDS.md +++ b/affinescript-vite/.machine_readable/compliance/PROOF-NEEDS.md @@ -1,5 +1,8 @@ + # Proof Requirements — {{PROJECT}} - diff --git a/affinescript-vite/.machine_readable/compliance/PROOF-STATUS.md b/affinescript-vite/.machine_readable/compliance/PROOF-STATUS.md index 2be9f552..aed5e414 100644 --- a/affinescript-vite/.machine_readable/compliance/PROOF-STATUS.md +++ b/affinescript-vite/.machine_readable/compliance/PROOF-STATUS.md @@ -1,5 +1,8 @@ + # Proof Status — {{PROJECT}} - diff --git a/affinescript-vite/.machine_readable/compliance/TEST-NEEDS.md b/affinescript-vite/.machine_readable/compliance/TEST-NEEDS.md index ede88383..eff15a17 100644 --- a/affinescript-vite/.machine_readable/compliance/TEST-NEEDS.md +++ b/affinescript-vite/.machine_readable/compliance/TEST-NEEDS.md @@ -1,3 +1,7 @@ + # TEST-NEEDS: rsr-template-repo ## CRG Grade: C — ACHIEVED 2026-04-04 diff --git a/affinescript-vite/.machine_readable/configs/README.adoc b/affinescript-vite/.machine_readable/configs/README.adoc index 616b9e76..2ab097e7 100644 --- a/affinescript-vite/.machine_readable/configs/README.adoc +++ b/affinescript-vite/.machine_readable/configs/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = configs Registry diff --git a/affinescript-vite/.machine_readable/contractiles/README.adoc b/affinescript-vite/.machine_readable/contractiles/README.adoc index d40fcd18..2b8aed77 100644 --- a/affinescript-vite/.machine_readable/contractiles/README.adoc +++ b/affinescript-vite/.machine_readable/contractiles/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Contractiles Template Set :toc: :sectnums: diff --git a/affinescript-vite/.machine_readable/policies/README.adoc b/affinescript-vite/.machine_readable/policies/README.adoc index b7e25f57..045e5af7 100644 --- a/affinescript-vite/.machine_readable/policies/README.adoc +++ b/affinescript-vite/.machine_readable/policies/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = policies Registry diff --git a/affinescript-vite/.machine_readable/scripts/forge/README.adoc b/affinescript-vite/.machine_readable/scripts/forge/README.adoc index 31adef65..a43f1d26 100644 --- a/affinescript-vite/.machine_readable/scripts/forge/README.adoc +++ b/affinescript-vite/.machine_readable/scripts/forge/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Forge Scripts diff --git a/affinescript-vite/.machine_readable/scripts/lifecycle/README.adoc b/affinescript-vite/.machine_readable/scripts/lifecycle/README.adoc index 8d262b14..481283ef 100644 --- a/affinescript-vite/.machine_readable/scripts/lifecycle/README.adoc +++ b/affinescript-vite/.machine_readable/scripts/lifecycle/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Lifecycle Scripts diff --git a/affinescript-vite/.machine_readable/scripts/verification/README.adoc b/affinescript-vite/.machine_readable/scripts/verification/README.adoc index 277b4aa6..19fcf014 100644 --- a/affinescript-vite/.machine_readable/scripts/verification/README.adoc +++ b/affinescript-vite/.machine_readable/scripts/verification/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Verification Scripts diff --git a/affinescript-vite/AUDIT.adoc b/affinescript-vite/AUDIT.adoc index 491005a4..ec9863b2 100644 --- a/affinescript-vite/AUDIT.adoc +++ b/affinescript-vite/AUDIT.adoc @@ -1,6 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) - +// Copyright (c) Jonathan D.A. Jewell = Audit Gate Codex v1.0, 2026-03-30 diff --git a/affinescript-vite/CHANGELOG.md b/affinescript-vite/CHANGELOG.md index 81094769..66fa7a0b 100644 --- a/affinescript-vite/CHANGELOG.md +++ b/affinescript-vite/CHANGELOG.md @@ -1,3 +1,7 @@ + # Changelog All notable changes to this project will be documented in this file. diff --git a/affinescript-vite/EXPLAINME.adoc b/affinescript-vite/EXPLAINME.adoc index 7fcb1ae7..66191193 100644 --- a/affinescript-vite/EXPLAINME.adoc +++ b/affinescript-vite/EXPLAINME.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = {project-name} — Show Me The Receipts :toc: :icons: font diff --git a/affinescript-vite/QUICKSTART-DEV.adoc b/affinescript-vite/QUICKSTART-DEV.adoc index 511a925b..02957ea8 100644 --- a/affinescript-vite/QUICKSTART-DEV.adoc +++ b/affinescript-vite/QUICKSTART-DEV.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // Template: QUICKSTART-DEV.adoc — clone → build → test → PR // Replace rsr-template-repo, {{BUILD_CMD}}, {{TEST_CMD}}, {{LANG_STACK}} with actuals = rsr-template-repo — Quick Start for Developers diff --git a/affinescript-vite/QUICKSTART-MAINTAINER.adoc b/affinescript-vite/QUICKSTART-MAINTAINER.adoc index 3424f2db..cd30dd7f 100644 --- a/affinescript-vite/QUICKSTART-MAINTAINER.adoc +++ b/affinescript-vite/QUICKSTART-MAINTAINER.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // Template: QUICKSTART-MAINTAINER.adoc — packaging, deploying, and maintaining // Replace rsr-template-repo, {{PACKAGE_NAME}}, {{DEPS}} with actuals = rsr-template-repo — Quick Start for Platform Maintainers @@ -106,7 +107,7 @@ Or via OPSM: `opsm update {{PACKAGE_NAME}}` == Security Notes -* License: MPL-2.0 (Palimpsest License) +* License: MPL-2.0 (MPL-2.0) * All dependencies SHA-pinned * `panic-attacker` scan results: link:INSTALL-SECURITY-REPORT.adoc[] * OpenSSF Scorecard: see badge in README diff --git a/affinescript-vite/QUICKSTART-USER.adoc b/affinescript-vite/QUICKSTART-USER.adoc index c85eabee..4992e326 100644 --- a/affinescript-vite/QUICKSTART-USER.adoc +++ b/affinescript-vite/QUICKSTART-USER.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // Template: QUICKSTART-USER.adoc — 5-minute path to working software // Replace rsr-template-repo, Rsr Template Repo — See README.adoc for details., just run, Rsr Template Repo started successfully. with actuals = rsr-template-repo — Quick Start for Users diff --git a/affinescript-vite/README.adoc b/affinescript-vite/README.adoc index 726f9d8b..69d44400 100644 --- a/affinescript-vite/README.adoc +++ b/affinescript-vite/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AffineScript-Vite :toc: macro :toclevels: 3 @@ -85,7 +87,7 @@ gameLogic.init(); == License -This project is licensed under **AGPL-3.0-or-later**. +This project is licensed under **MPL-2.0**. == See Also diff --git a/affinescript-vite/ROADMAP.adoc b/affinescript-vite/ROADMAP.adoc index e69071af..edee3a38 100644 --- a/affinescript-vite/ROADMAP.adoc +++ b/affinescript-vite/ROADMAP.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AffineScript-Vite Roadmap :toc: macro :toclevels: 2 diff --git a/affinescript-vite/container/README.adoc b/affinescript-vite/container/README.adoc index d234919a..691cc1a5 100644 --- a/affinescript-vite/container/README.adoc +++ b/affinescript-vite/container/README.adoc @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) {{CURRENT_YEAR}} hyperpolymath (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell = AffineScript-Vite Container Templates :toc: left :toclevels: 3 diff --git a/affinescript-vite/docs/QUICKSTART.adoc b/affinescript-vite/docs/QUICKSTART.adoc index b20b3d0a..013bf344 100644 --- a/affinescript-vite/docs/QUICKSTART.adoc +++ b/affinescript-vite/docs/QUICKSTART.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Quickstart :toc: preamble diff --git a/affinescript-vite/docs/README.adoc b/affinescript-vite/docs/README.adoc index df45be70..adf6a028 100644 --- a/affinescript-vite/docs/README.adoc +++ b/affinescript-vite/docs/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Documentation Layout Primary tracks: diff --git a/affinescript-vite/docs/RSR_OUTLINE.adoc b/affinescript-vite/docs/RSR_OUTLINE.adoc index e07a65e4..1b940e9b 100644 --- a/affinescript-vite/docs/RSR_OUTLINE.adoc +++ b/affinescript-vite/docs/RSR_OUTLINE.adoc @@ -1,6 +1,8 @@ +// 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"] +image:[MPL-2.0-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-license"] :toc: :sectnums: diff --git a/affinescript-vite/docs/STATE-VISUALIZER.adoc b/affinescript-vite/docs/STATE-VISUALIZER.adoc index 422fcd5c..77c0248b 100644 --- a/affinescript-vite/docs/STATE-VISUALIZER.adoc +++ b/affinescript-vite/docs/STATE-VISUALIZER.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Project State Visualizer [source] ---- diff --git a/affinescript-vite/docs/architecture/THREAT-MODEL.adoc b/affinescript-vite/docs/architecture/THREAT-MODEL.adoc index 946b6f2f..3bddbb1c 100644 --- a/affinescript-vite/docs/architecture/THREAT-MODEL.adoc +++ b/affinescript-vite/docs/architecture/THREAT-MODEL.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Threat Model diff --git a/affinescript-vite/docs/attribution/CITATIONS.adoc b/affinescript-vite/docs/attribution/CITATIONS.adoc index cefafb2d..22d84bb4 100644 --- a/affinescript-vite/docs/attribution/CITATIONS.adoc +++ b/affinescript-vite/docs/attribution/CITATIONS.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AffineScript-Vite - Citation Guide :toc: diff --git a/affinescript-vite/docs/attribution/CODEOWNERS.adoc b/affinescript-vite/docs/attribution/CODEOWNERS.adoc index 3714055f..668df012 100644 --- a/affinescript-vite/docs/attribution/CODEOWNERS.adoc +++ b/affinescript-vite/docs/attribution/CODEOWNERS.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Code Ownership :icons: font diff --git a/affinescript-vite/docs/attribution/MAINTAINERS.adoc b/affinescript-vite/docs/attribution/MAINTAINERS.adoc index a173cdf0..ea862ff5 100644 --- a/affinescript-vite/docs/attribution/MAINTAINERS.adoc +++ b/affinescript-vite/docs/attribution/MAINTAINERS.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Maintainers :toc: preamble diff --git a/affinescript-vite/docs/attribution/README.adoc b/affinescript-vite/docs/attribution/README.adoc index b095612c..2e507216 100644 --- a/affinescript-vite/docs/attribution/README.adoc +++ b/affinescript-vite/docs/attribution/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = attribution Unit diff --git a/affinescript-vite/docs/decisions/0000-template.adoc b/affinescript-vite/docs/decisions/0000-template.adoc index 1e2b6710..0b1b164d 100644 --- a/affinescript-vite/docs/decisions/0000-template.adoc +++ b/affinescript-vite/docs/decisions/0000-template.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Architecture Decision Record: 0000-template diff --git a/affinescript-vite/docs/decisions/0001-adopt-rsr-standard.adoc b/affinescript-vite/docs/decisions/0001-adopt-rsr-standard.adoc index 091ee5a2..556f8bf4 100644 --- a/affinescript-vite/docs/decisions/0001-adopt-rsr-standard.adoc +++ b/affinescript-vite/docs/decisions/0001-adopt-rsr-standard.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Architecture Decision Record: 0001-adopt-rsr-standard diff --git a/affinescript-vite/docs/decisions/README.adoc b/affinescript-vite/docs/decisions/README.adoc index 153a5e78..af174f52 100644 --- a/affinescript-vite/docs/decisions/README.adoc +++ b/affinescript-vite/docs/decisions/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = decisions Unit diff --git a/affinescript-vite/docs/developer/ABI-FFI-README.adoc b/affinescript-vite/docs/developer/ABI-FFI-README.adoc index 06ea6180..1d9af2ce 100644 --- a/affinescript-vite/docs/developer/ABI-FFI-README.adoc +++ b/affinescript-vite/docs/developer/ABI-FFI-README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = ABI/FFI Standards {{~ Aditionally delete this line and fill out the template below ~}} diff --git a/affinescript-vite/docs/developer/README.adoc b/affinescript-vite/docs/developer/README.adoc index 1d00529d..2b328b44 100644 --- a/affinescript-vite/docs/developer/README.adoc +++ b/affinescript-vite/docs/developer/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = developer Unit diff --git a/affinescript-vite/docs/governance/CRG-CRITERIA.adoc b/affinescript-vite/docs/governance/CRG-CRITERIA.adoc index f8264e6d..926df5ae 100644 --- a/affinescript-vite/docs/governance/CRG-CRITERIA.adoc +++ b/affinescript-vite/docs/governance/CRG-CRITERIA.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Component Readiness Grades (CRG) Criteria :toc: preamble :icons: font diff --git a/affinescript-vite/docs/governance/MAINTENANCE-CHECKLIST.adoc b/affinescript-vite/docs/governance/MAINTENANCE-CHECKLIST.adoc index 4b760b51..d11eb72f 100644 --- a/affinescript-vite/docs/governance/MAINTENANCE-CHECKLIST.adoc +++ b/affinescript-vite/docs/governance/MAINTENANCE-CHECKLIST.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Maintenance Checklist # Maintenance Checklist (Cross-Repo) diff --git a/affinescript-vite/docs/governance/README.adoc b/affinescript-vite/docs/governance/README.adoc index 114ee94b..48cac0de 100644 --- a/affinescript-vite/docs/governance/README.adoc +++ b/affinescript-vite/docs/governance/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Governance Pillar (TSDM) diff --git a/affinescript-vite/docs/governance/SOFTWARE-DEVELOPMENT-APPROACH.adoc b/affinescript-vite/docs/governance/SOFTWARE-DEVELOPMENT-APPROACH.adoc index e8805c68..2bfa0ffd 100644 --- a/affinescript-vite/docs/governance/SOFTWARE-DEVELOPMENT-APPROACH.adoc +++ b/affinescript-vite/docs/governance/SOFTWARE-DEVELOPMENT-APPROACH.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Software Development Approach (General) :toc: left :toclevels: 2 diff --git a/affinescript-vite/docs/governance/TSDM.adoc b/affinescript-vite/docs/governance/TSDM.adoc index cbd582c0..6bf4ee84 100644 --- a/affinescript-vite/docs/governance/TSDM.adoc +++ b/affinescript-vite/docs/governance/TSDM.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Triaxial Software Development Methodology (TSDM) :toc: preamble :icons: font diff --git a/affinescript-vite/docs/governance/audit/README.adoc b/affinescript-vite/docs/governance/audit/README.adoc index fac37404..02aff131 100644 --- a/affinescript-vite/docs/governance/audit/README.adoc +++ b/affinescript-vite/docs/governance/audit/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Audit Axis diff --git a/affinescript-vite/docs/governance/audit/compliance/README.adoc b/affinescript-vite/docs/governance/audit/compliance/README.adoc index 876954fd..9948dbcd 100644 --- a/affinescript-vite/docs/governance/audit/compliance/README.adoc +++ b/affinescript-vite/docs/governance/audit/compliance/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Compliance Unit diff --git a/affinescript-vite/docs/governance/audit/effects/README.adoc b/affinescript-vite/docs/governance/audit/effects/README.adoc index 36347994..e5620ee7 100644 --- a/affinescript-vite/docs/governance/audit/effects/README.adoc +++ b/affinescript-vite/docs/governance/audit/effects/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Effects Unit diff --git a/affinescript-vite/docs/governance/audit/systems/README.adoc b/affinescript-vite/docs/governance/audit/systems/README.adoc index 8d179b4a..00a67dec 100644 --- a/affinescript-vite/docs/governance/audit/systems/README.adoc +++ b/affinescript-vite/docs/governance/audit/systems/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Systems Unit diff --git a/affinescript-vite/docs/governance/maintenance/README.adoc b/affinescript-vite/docs/governance/maintenance/README.adoc index 0ed2f1b5..7083a836 100644 --- a/affinescript-vite/docs/governance/maintenance/README.adoc +++ b/affinescript-vite/docs/governance/maintenance/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Maintenance Axis diff --git a/affinescript-vite/docs/governance/maintenance/adaptive/README.adoc b/affinescript-vite/docs/governance/maintenance/adaptive/README.adoc index 7b60992a..72d0381e 100644 --- a/affinescript-vite/docs/governance/maintenance/adaptive/README.adoc +++ b/affinescript-vite/docs/governance/maintenance/adaptive/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Adaptive Unit diff --git a/affinescript-vite/docs/governance/maintenance/corrective/README.adoc b/affinescript-vite/docs/governance/maintenance/corrective/README.adoc index ed904a81..9a0ed5d6 100644 --- a/affinescript-vite/docs/governance/maintenance/corrective/README.adoc +++ b/affinescript-vite/docs/governance/maintenance/corrective/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Corrective Unit diff --git a/affinescript-vite/docs/governance/maintenance/perfective/README.adoc b/affinescript-vite/docs/governance/maintenance/perfective/README.adoc index 8759d74d..12e3d14a 100644 --- a/affinescript-vite/docs/governance/maintenance/perfective/README.adoc +++ b/affinescript-vite/docs/governance/maintenance/perfective/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Perfective Unit diff --git a/affinescript-vite/docs/governance/planning/README.adoc b/affinescript-vite/docs/governance/planning/README.adoc index 62aa375f..2694fe9a 100644 --- a/affinescript-vite/docs/governance/planning/README.adoc +++ b/affinescript-vite/docs/governance/planning/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Planning Axis diff --git a/affinescript-vite/docs/governance/planning/could/README.adoc b/affinescript-vite/docs/governance/planning/could/README.adoc index ad5a6b82..acc41ce0 100644 --- a/affinescript-vite/docs/governance/planning/could/README.adoc +++ b/affinescript-vite/docs/governance/planning/could/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Could Unit diff --git a/affinescript-vite/docs/governance/planning/must/README.adoc b/affinescript-vite/docs/governance/planning/must/README.adoc index 47eb46dc..57595504 100644 --- a/affinescript-vite/docs/governance/planning/must/README.adoc +++ b/affinescript-vite/docs/governance/planning/must/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Must Unit diff --git a/affinescript-vite/docs/governance/planning/should/README.adoc b/affinescript-vite/docs/governance/planning/should/README.adoc index 605489c8..a00f585c 100644 --- a/affinescript-vite/docs/governance/planning/should/README.adoc +++ b/affinescript-vite/docs/governance/planning/should/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Should Unit diff --git a/affinescript-vite/docs/practice/AI-CONVENTIONS.adoc b/affinescript-vite/docs/practice/AI-CONVENTIONS.adoc index 4fd6403a..2b59cbbb 100644 --- a/affinescript-vite/docs/practice/AI-CONVENTIONS.adoc +++ b/affinescript-vite/docs/practice/AI-CONVENTIONS.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AI Conventions diff --git a/affinescript-vite/docs/practice/README.adoc b/affinescript-vite/docs/practice/README.adoc index ae3326b9..caceb5cd 100644 --- a/affinescript-vite/docs/practice/README.adoc +++ b/affinescript-vite/docs/practice/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = practice Unit diff --git a/affinescript-vite/docs/practice/STATE-VISUALIZER-GUIDE.adoc b/affinescript-vite/docs/practice/STATE-VISUALIZER-GUIDE.adoc index b44cc262..39e686ad 100644 --- a/affinescript-vite/docs/practice/STATE-VISUALIZER-GUIDE.adoc +++ b/affinescript-vite/docs/practice/STATE-VISUALIZER-GUIDE.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = TOPOLOGY.md — Generation Guide hyperpolymath (hyperpolymath) :toc: diff --git a/affinescript-vite/docs/reports/README.adoc b/affinescript-vite/docs/reports/README.adoc index 0c06c31d..e91d79e2 100644 --- a/affinescript-vite/docs/reports/README.adoc +++ b/affinescript-vite/docs/reports/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = reports Unit diff --git a/affinescript-vite/docs/reports/compliance/README.adoc b/affinescript-vite/docs/reports/compliance/README.adoc index c38c66a4..1f6b885f 100644 --- a/affinescript-vite/docs/reports/compliance/README.adoc +++ b/affinescript-vite/docs/reports/compliance/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Compliance Reports diff --git a/affinescript-vite/docs/reports/maintenance/README.adoc b/affinescript-vite/docs/reports/maintenance/README.adoc index f13abf79..82f845e0 100644 --- a/affinescript-vite/docs/reports/maintenance/README.adoc +++ b/affinescript-vite/docs/reports/maintenance/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Maintenance Reports diff --git a/affinescript-vite/docs/reports/performance/README.adoc b/affinescript-vite/docs/reports/performance/README.adoc index 037767d3..6473ed30 100644 --- a/affinescript-vite/docs/reports/performance/README.adoc +++ b/affinescript-vite/docs/reports/performance/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Performance Reports diff --git a/affinescript-vite/docs/reports/quality/README.adoc b/affinescript-vite/docs/reports/quality/README.adoc index d1be8484..dbdb3bac 100644 --- a/affinescript-vite/docs/reports/quality/README.adoc +++ b/affinescript-vite/docs/reports/quality/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Quality Reports diff --git a/affinescript-vite/docs/reports/security/README.adoc b/affinescript-vite/docs/reports/security/README.adoc index 9a78a8bc..76656ccc 100644 --- a/affinescript-vite/docs/reports/security/README.adoc +++ b/affinescript-vite/docs/reports/security/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Security Reports diff --git a/affinescript-vite/docs/standards/README.adoc b/affinescript-vite/docs/standards/README.adoc index 34a94c4f..41f7a317 100644 --- a/affinescript-vite/docs/standards/README.adoc +++ b/affinescript-vite/docs/standards/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Standards Unit diff --git a/affinescript-vite/docs/templates/contractiles/README.adoc b/affinescript-vite/docs/templates/contractiles/README.adoc index 121da7ae..c544de66 100644 --- a/affinescript-vite/docs/templates/contractiles/README.adoc +++ b/affinescript-vite/docs/templates/contractiles/README.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Contractile Templates Blank templates for projects that want to replace the hyperpolymath diff --git a/affinescript-vite/docs/theory/README.adoc b/affinescript-vite/docs/theory/README.adoc index c0ddf280..b2658b1e 100644 --- a/affinescript-vite/docs/theory/README.adoc +++ b/affinescript-vite/docs/theory/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = theory Unit diff --git a/affinescript-vite/docs/theory/computing/README.adoc b/affinescript-vite/docs/theory/computing/README.adoc index 4d0db25d..aec951f3 100644 --- a/affinescript-vite/docs/theory/computing/README.adoc +++ b/affinescript-vite/docs/theory/computing/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Computing Theory diff --git a/affinescript-vite/docs/theory/formalisms/README.adoc b/affinescript-vite/docs/theory/formalisms/README.adoc index 5d064c39..288a4101 100644 --- a/affinescript-vite/docs/theory/formalisms/README.adoc +++ b/affinescript-vite/docs/theory/formalisms/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Formalisms Theory diff --git a/affinescript-vite/docs/theory/mathematics/README.adoc b/affinescript-vite/docs/theory/mathematics/README.adoc index 356236f4..c9b223d8 100644 --- a/affinescript-vite/docs/theory/mathematics/README.adoc +++ b/affinescript-vite/docs/theory/mathematics/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Mathematics Theory diff --git a/affinescript-vite/docs/theory/ontologies/README.adoc b/affinescript-vite/docs/theory/ontologies/README.adoc index 6d16ecf9..9267ab0f 100644 --- a/affinescript-vite/docs/theory/ontologies/README.adoc +++ b/affinescript-vite/docs/theory/ontologies/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Ontologies Theory diff --git a/affinescript-vite/docs/theory/other/README.adoc b/affinescript-vite/docs/theory/other/README.adoc index 1861d6d5..0ec84325 100644 --- a/affinescript-vite/docs/theory/other/README.adoc +++ b/affinescript-vite/docs/theory/other/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Other Theory diff --git a/affinescript-vite/docs/theory/socio-technical/README.adoc b/affinescript-vite/docs/theory/socio-technical/README.adoc index 9ab4ee07..5c3c8196 100644 --- a/affinescript-vite/docs/theory/socio-technical/README.adoc +++ b/affinescript-vite/docs/theory/socio-technical/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Socio technical Theory diff --git a/affinescript-vite/docs/whitepapers/README.adoc b/affinescript-vite/docs/whitepapers/README.adoc index 88e83c5e..1ee0309f 100644 --- a/affinescript-vite/docs/whitepapers/README.adoc +++ b/affinescript-vite/docs/whitepapers/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = whitepapers Unit diff --git a/affinescript-vite/docs/whitepapers/academic/README.adoc b/affinescript-vite/docs/whitepapers/academic/README.adoc index 16c3f453..d6dc7a07 100644 --- a/affinescript-vite/docs/whitepapers/academic/README.adoc +++ b/affinescript-vite/docs/whitepapers/academic/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Academic Logic diff --git a/affinescript-vite/docs/whitepapers/industry/README.adoc b/affinescript-vite/docs/whitepapers/industry/README.adoc index 7bc7fcd6..2f795b79 100644 --- a/affinescript-vite/docs/whitepapers/industry/README.adoc +++ b/affinescript-vite/docs/whitepapers/industry/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Industry Logic diff --git a/affinescript-vite/docs/whitepapers/outreach/README.adoc b/affinescript-vite/docs/whitepapers/outreach/README.adoc index 8141463f..f3ea4da0 100644 --- a/affinescript-vite/docs/whitepapers/outreach/README.adoc +++ b/affinescript-vite/docs/whitepapers/outreach/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Outreach & Education :toc: preamble :icons: font diff --git a/affinescript-vite/docs/wikis/README.adoc b/affinescript-vite/docs/wikis/README.adoc index 71b60d1b..4d493b48 100644 --- a/affinescript-vite/docs/wikis/README.adoc +++ b/affinescript-vite/docs/wikis/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Project Wikis :toc: preamble :icons: font diff --git a/affinescript-vite/example/main.js b/affinescript-vite/example/main.js index 0ebc75cd..89b3027d 100644 --- a/affinescript-vite/example/main.js +++ b/affinescript-vite/example/main.js @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell import gameLogic from './logic.as'; document.querySelector('#app').textContent = ` diff --git a/affinescript-vite/features/README.adoc b/affinescript-vite/features/README.adoc index 3899280c..49228915 100644 --- a/affinescript-vite/features/README.adoc +++ b/affinescript-vite/features/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Project Features diff --git a/affinescript-vite/features/boj-server/README.adoc b/affinescript-vite/features/boj-server/README.adoc index 0039c37d..0ef03767 100644 --- a/affinescript-vite/features/boj-server/README.adoc +++ b/affinescript-vite/features/boj-server/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = BoJ Server Integration :icons: font diff --git a/affinescript-vite/features/panic-attacker/README.adoc b/affinescript-vite/features/panic-attacker/README.adoc index 72d56a42..de0bd9b7 100644 --- a/affinescript-vite/features/panic-attacker/README.adoc +++ b/affinescript-vite/features/panic-attacker/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Panic Attacker Feature :icons: font diff --git a/affinescript-vite/features/ssg/README.adoc b/affinescript-vite/features/ssg/README.adoc index e15687bf..a6ef2625 100644 --- a/affinescript-vite/features/ssg/README.adoc +++ b/affinescript-vite/features/ssg/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Ssg Feature diff --git a/affinescript-vite/llm-warmup-dev.md b/affinescript-vite/llm-warmup-dev.md index e616c995..99be7bca 100644 --- a/affinescript-vite/llm-warmup-dev.md +++ b/affinescript-vite/llm-warmup-dev.md @@ -1,3 +1,7 @@ + # LLM Warmup — rsr-template-repo (Developer) ## What is rsr-template-repo? diff --git a/affinescript-vite/llm-warmup-user.md b/affinescript-vite/llm-warmup-user.md index 18a327ef..a0992be8 100644 --- a/affinescript-vite/llm-warmup-user.md +++ b/affinescript-vite/llm-warmup-user.md @@ -1,3 +1,7 @@ + # LLM Warmup — rsr-template-repo (User) ## What is rsr-template-repo? diff --git a/affinescript-vite/src/README.adoc b/affinescript-vite/src/README.adoc index 5529f66f..d8c8116d 100644 --- a/affinescript-vite/src/README.adoc +++ b/affinescript-vite/src/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = src Pillar diff --git a/affinescript-vite/src/affine-plugin-improved.js b/affinescript-vite/src/affine-plugin-improved.js index 03b0b335..2cb93a43 100644 --- a/affinescript-vite/src/affine-plugin-improved.js +++ b/affinescript-vite/src/affine-plugin-improved.js @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell /** * AffineScript Vite Plugin - Improved Version * (c) 2026 hyperpolymath diff --git a/affinescript-vite/src/affine-plugin.js b/affinescript-vite/src/affine-plugin.js index 417a0bce..8fb18a37 100644 --- a/affinescript-vite/src/affine-plugin.js +++ b/affinescript-vite/src/affine-plugin.js @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell /** * AffineScript Vite Plugin * (c) 2026 hyperpolymath diff --git a/affinescript-vite/src/aspects/README.adoc b/affinescript-vite/src/aspects/README.adoc index 6456f962..9b7b80fc 100644 --- a/affinescript-vite/src/aspects/README.adoc +++ b/affinescript-vite/src/aspects/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Aspects Pillar diff --git a/affinescript-vite/src/aspects/integrity/README.adoc b/affinescript-vite/src/aspects/integrity/README.adoc index f15d829d..17a09db1 100644 --- a/affinescript-vite/src/aspects/integrity/README.adoc +++ b/affinescript-vite/src/aspects/integrity/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Integrity Aspect diff --git a/affinescript-vite/src/aspects/observability/README.adoc b/affinescript-vite/src/aspects/observability/README.adoc index 7852ee64..df2ca36e 100644 --- a/affinescript-vite/src/aspects/observability/README.adoc +++ b/affinescript-vite/src/aspects/observability/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Observability Aspect diff --git a/affinescript-vite/src/aspects/security/README.adoc b/affinescript-vite/src/aspects/security/README.adoc index 3c3536ec..11ad21be 100644 --- a/affinescript-vite/src/aspects/security/README.adoc +++ b/affinescript-vite/src/aspects/security/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Security Aspect diff --git a/affinescript-vite/src/contracts/README.adoc b/affinescript-vite/src/contracts/README.adoc index 9cfa2098..20dd4caa 100644 --- a/affinescript-vite/src/contracts/README.adoc +++ b/affinescript-vite/src/contracts/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Contracts Unit diff --git a/affinescript-vite/src/definitions/README.adoc b/affinescript-vite/src/definitions/README.adoc index 95483497..5a9912f1 100644 --- a/affinescript-vite/src/definitions/README.adoc +++ b/affinescript-vite/src/definitions/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Definitions Unit diff --git a/affinescript-vite/src/errors/README.adoc b/affinescript-vite/src/errors/README.adoc index 460fc1e9..eff7b29c 100644 --- a/affinescript-vite/src/errors/README.adoc +++ b/affinescript-vite/src/errors/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Errors Unit diff --git a/affinescript-vite/src/index.js b/affinescript-vite/src/index.js index d87abc74..bc1ec504 100644 --- a/affinescript-vite/src/index.js +++ b/affinescript-vite/src/index.js @@ -1,2 +1,4 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell import affinePlugin from './affine-plugin.js'; export default affinePlugin; diff --git a/affinescript-vite/src/interface/README.adoc b/affinescript-vite/src/interface/README.adoc index 8faf0aad..727b9e74 100644 --- a/affinescript-vite/src/interface/README.adoc +++ b/affinescript-vite/src/interface/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = interface Unit diff --git a/affinescript-vite/src/interface/abi/Foreign.idr b/affinescript-vite/src/interface/abi/Foreign.idr index 3f16342b..ca66b082 100644 --- a/affinescript-vite/src/interface/abi/Foreign.idr +++ b/affinescript-vite/src/interface/abi/Foreign.idr @@ -1,4 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) Jonathan D.A. Jewell ||| Foreign Function Interface Bridge ||| ||| This module defines the raw FFI calls and their safe wrappers, diff --git a/affinescript-vite/src/interface/abi/Layout.idr b/affinescript-vite/src/interface/abi/Layout.idr index fec979dc..e1f42759 100644 --- a/affinescript-vite/src/interface/abi/Layout.idr +++ b/affinescript-vite/src/interface/abi/Layout.idr @@ -1,4 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) Jonathan D.A. Jewell ||| ABI Layout Verification ||| ||| This module provides formal proofs about memory layout, alignment, diff --git a/affinescript-vite/src/interface/abi/README.adoc b/affinescript-vite/src/interface/abi/README.adoc index 2330304d..46743d76 100644 --- a/affinescript-vite/src/interface/abi/README.adoc +++ b/affinescript-vite/src/interface/abi/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = abi Logic diff --git a/affinescript-vite/src/interface/abi/Types.idr b/affinescript-vite/src/interface/abi/Types.idr index 6fc4d041..9d300513 100644 --- a/affinescript-vite/src/interface/abi/Types.idr +++ b/affinescript-vite/src/interface/abi/Types.idr @@ -1,4 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) Jonathan D.A. Jewell ||| ABI Type Definitions Template ||| ||| This module defines the Application Binary Interface (ABI) for this library. diff --git a/affinescript-vite/src/interface/ffi/README.adoc b/affinescript-vite/src/interface/ffi/README.adoc index 8fe57d34..b402d644 100644 --- a/affinescript-vite/src/interface/ffi/README.adoc +++ b/affinescript-vite/src/interface/ffi/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = ffi Logic diff --git a/affinescript-vite/src/interface/ffi/build.zig b/affinescript-vite/src/interface/ffi/build.zig index 69a63773..2607c110 100644 --- a/affinescript-vite/src/interface/ffi/build.zig +++ b/affinescript-vite/src/interface/ffi/build.zig @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell // // Template FFI Build Configuration (Zig 0.15.2+) // Note: This is a minimal build file that demonstrates Zig integration diff --git a/affinescript-vite/src/interface/ffi/src/README.adoc b/affinescript-vite/src/interface/ffi/src/README.adoc index a5c0c6d5..4228438a 100644 --- a/affinescript-vite/src/interface/ffi/src/README.adoc +++ b/affinescript-vite/src/interface/ffi/src/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Src Logic diff --git a/affinescript-vite/src/interface/ffi/src/main.zig b/affinescript-vite/src/interface/ffi/src/main.zig index 42147268..2fe164af 100644 --- a/affinescript-vite/src/interface/ffi/src/main.zig +++ b/affinescript-vite/src/interface/ffi/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: MPL-2.0 const std = @import("std"); diff --git a/affinescript-vite/src/interface/ffi/test/README.adoc b/affinescript-vite/src/interface/ffi/test/README.adoc index f6f38bf6..cdbb47d2 100644 --- a/affinescript-vite/src/interface/ffi/test/README.adoc +++ b/affinescript-vite/src/interface/ffi/test/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Test Logic diff --git a/affinescript-vite/src/interface/ffi/test/integration_test.zig b/affinescript-vite/src/interface/ffi/test/integration_test.zig index 361bd05f..484e1566 100644 --- a/affinescript-vite/src/interface/ffi/test/integration_test.zig +++ b/affinescript-vite/src/interface/ffi/test/integration_test.zig @@ -1,6 +1,6 @@ -// RSR Template FFI Integration Tests // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell +// RSR Template FFI Integration Tests // // These tests verify that the Zig FFI correctly implements the Idris2 ABI. // This is a TEMPLATE FILE — when instantiating a new project: diff --git a/affinescript-vite/src/interface/generated/README.adoc b/affinescript-vite/src/interface/generated/README.adoc index 3691b062..93daef2f 100644 --- a/affinescript-vite/src/interface/generated/README.adoc +++ b/affinescript-vite/src/interface/generated/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = generated Logic diff --git a/affinescript-vite/src/interface/generated/abi/README.adoc b/affinescript-vite/src/interface/generated/abi/README.adoc index aff61a99..0e29b69b 100644 --- a/affinescript-vite/src/interface/generated/abi/README.adoc +++ b/affinescript-vite/src/interface/generated/abi/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Abi Logic diff --git a/affinescript-vite/tests/fuzz/README.adoc b/affinescript-vite/tests/fuzz/README.adoc index 55b92f3a..44ae0584 100644 --- a/affinescript-vite/tests/fuzz/README.adoc +++ b/affinescript-vite/tests/fuzz/README.adoc @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell = Fuzz Testing :toc: diff --git a/affinescript-vite/verification/README.adoc b/affinescript-vite/verification/README.adoc index f07e7f34..efa7fb2f 100644 --- a/affinescript-vite/verification/README.adoc +++ b/affinescript-vite/verification/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Verification Pillar diff --git a/affinescript-vite/verification/benchmarks/README.adoc b/affinescript-vite/verification/benchmarks/README.adoc index 5db76486..beb83cde 100644 --- a/affinescript-vite/verification/benchmarks/README.adoc +++ b/affinescript-vite/verification/benchmarks/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Benchmarks Unit diff --git a/affinescript-vite/verification/coverage/README.adoc b/affinescript-vite/verification/coverage/README.adoc index 25669569..c10a6ace 100644 --- a/affinescript-vite/verification/coverage/README.adoc +++ b/affinescript-vite/verification/coverage/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Coverage Unit diff --git a/affinescript-vite/verification/fuzzing/README.adoc b/affinescript-vite/verification/fuzzing/README.adoc index edeb1792..b07ea68c 100644 --- a/affinescript-vite/verification/fuzzing/README.adoc +++ b/affinescript-vite/verification/fuzzing/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Fuzzing Unit diff --git a/affinescript-vite/verification/proofs/README.adoc b/affinescript-vite/verification/proofs/README.adoc index 29cf7e8a..520f5e9f 100644 --- a/affinescript-vite/verification/proofs/README.adoc +++ b/affinescript-vite/verification/proofs/README.adoc @@ -1,5 +1,6 @@ -= Formal Verification Proofs // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell += Formal Verification Proofs This directory contains formal proofs organised by proof assistant. diff --git a/affinescript-vite/verification/proofs/idris2/ABI/Compliance.idr b/affinescript-vite/verification/proofs/idris2/ABI/Compliance.idr index 15858d61..4de691a9 100644 --- a/affinescript-vite/verification/proofs/idris2/ABI/Compliance.idr +++ b/affinescript-vite/verification/proofs/idris2/ABI/Compliance.idr @@ -1,5 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 --- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- Copyright (c) Jonathan D.A. Jewell -- -- ABI Proof: C ABI compliance -- Proves that struct layouts are C ABI compliant. diff --git a/affinescript-vite/verification/proofs/idris2/ABI/Foreign.idr b/affinescript-vite/verification/proofs/idris2/ABI/Foreign.idr index 4d577528..5a4bbd15 100644 --- a/affinescript-vite/verification/proofs/idris2/ABI/Foreign.idr +++ b/affinescript-vite/verification/proofs/idris2/ABI/Foreign.idr @@ -1,5 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 --- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- Copyright (c) Jonathan D.A. Jewell -- -- ABI Proof: FFI function return type proofs -- Proves that all FFI functions return expected types. diff --git a/affinescript-vite/verification/proofs/idris2/ABI/Layout.idr b/affinescript-vite/verification/proofs/idris2/ABI/Layout.idr index 84fd6c06..78842efc 100644 --- a/affinescript-vite/verification/proofs/idris2/ABI/Layout.idr +++ b/affinescript-vite/verification/proofs/idris2/ABI/Layout.idr @@ -1,5 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 --- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- Copyright (c) Jonathan D.A. Jewell -- -- ABI Proof: Memory layout correctness -- Proves struct size, alignment, and padding properties. diff --git a/affinescript-vite/verification/proofs/idris2/ABI/Platform.idr b/affinescript-vite/verification/proofs/idris2/ABI/Platform.idr index 6d4ff9fa..d9b67ab0 100644 --- a/affinescript-vite/verification/proofs/idris2/ABI/Platform.idr +++ b/affinescript-vite/verification/proofs/idris2/ABI/Platform.idr @@ -1,5 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 --- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- Copyright (c) Jonathan D.A. Jewell -- -- ABI Proof: Platform-specific type size proofs -- Proves that C type sizes are correct per platform. diff --git a/affinescript-vite/verification/proofs/idris2/ABI/Pointers.idr b/affinescript-vite/verification/proofs/idris2/ABI/Pointers.idr index 0f695990..e295cad4 100644 --- a/affinescript-vite/verification/proofs/idris2/ABI/Pointers.idr +++ b/affinescript-vite/verification/proofs/idris2/ABI/Pointers.idr @@ -1,5 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 --- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- Copyright (c) Jonathan D.A. Jewell -- -- ABI Proof: Non-null pointer safety -- Template proof — customise for your project's pointer types. diff --git a/affinescript-vite/verification/proofs/idris2/Types.idr b/affinescript-vite/verification/proofs/idris2/Types.idr index df3497d6..e17ad0a2 100644 --- a/affinescript-vite/verification/proofs/idris2/Types.idr +++ b/affinescript-vite/verification/proofs/idris2/Types.idr @@ -1,5 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 --- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- Copyright (c) Jonathan D.A. Jewell -- -- Typing Proof: Core data type well-formedness -- Template — replace with your project's core types. diff --git a/affinescript-vite/verification/safety_case/README.adoc b/affinescript-vite/verification/safety_case/README.adoc index 47c8e368..ffb53bdc 100644 --- a/affinescript-vite/verification/safety_case/README.adoc +++ b/affinescript-vite/verification/safety_case/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Safety case Unit diff --git a/affinescript-vite/verification/simulations/README.adoc b/affinescript-vite/verification/simulations/README.adoc index 8e1b13aa..42e184c2 100644 --- a/affinescript-vite/verification/simulations/README.adoc +++ b/affinescript-vite/verification/simulations/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Simulations Unit diff --git a/affinescript-vite/verification/tests/README.adoc b/affinescript-vite/verification/tests/README.adoc index 344bf862..39309816 100644 --- a/affinescript-vite/verification/tests/README.adoc +++ b/affinescript-vite/verification/tests/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Tests Unit diff --git a/affinescript-vite/verification/traceability/README.adoc b/affinescript-vite/verification/traceability/README.adoc index ff23dd75..e6e54bc6 100644 --- a/affinescript-vite/verification/traceability/README.adoc +++ b/affinescript-vite/verification/traceability/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Traceability Unit diff --git a/affinescript-vite/vite.config.js b/affinescript-vite/vite.config.js index a98d85b8..eec414af 100644 --- a/affinescript-vite/vite.config.js +++ b/affinescript-vite/vite.config.js @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell import { defineConfig } from 'vite'; import affinePlugin from './src/index.js'; diff --git a/affinescriptiser/.claude/CLAUDE.md b/affinescriptiser/.claude/CLAUDE.md index 2f78a627..80769d5d 100644 --- a/affinescriptiser/.claude/CLAUDE.md +++ b/affinescriptiser/.claude/CLAUDE.md @@ -1,3 +1,7 @@ + # affinescriptiser — Project Instructions ## Overview diff --git a/affinescriptiser/.devcontainer/README.adoc b/affinescriptiser/.devcontainer/README.adoc index 00fef0a7..04377b3d 100644 --- a/affinescriptiser/.devcontainer/README.adoc +++ b/affinescriptiser/.devcontainer/README.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Dev Container Usage :author: Jonathan D.A. Jewell diff --git a/affinescriptiser/.github/CODE_OF_CONDUCT.md b/affinescriptiser/.github/CODE_OF_CONDUCT.md index 3f11d52e..ec3b305c 100644 --- a/affinescriptiser/.github/CODE_OF_CONDUCT.md +++ b/affinescriptiser/.github/CODE_OF_CONDUCT.md @@ -1,3 +1,7 @@ + # Code of Conduct # Clone the repository git clone https://github.com/hyperpolymath/affinescriptiser.git cd affinescriptiser diff --git a/affinescriptiser/.github/DIRECTORY.adoc b/affinescriptiser/.github/DIRECTORY.adoc index a97d2202..b4caddfa 100644 --- a/affinescriptiser/.github/DIRECTORY.adoc +++ b/affinescriptiser/.github/DIRECTORY.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = .github Pillar diff --git a/affinescriptiser/.github/GOVERNANCE.md b/affinescriptiser/.github/GOVERNANCE.md index 5880636b..93452ede 100644 --- a/affinescriptiser/.github/GOVERNANCE.md +++ b/affinescriptiser/.github/GOVERNANCE.md @@ -1,5 +1,7 @@ - - + # Project Governance This document describes the governance model for **{{PROJECT_NAME}}**. diff --git a/affinescriptiser/.github/SECURITY.md b/affinescriptiser/.github/SECURITY.md index 34ff1a2d..8edc6e8e 100644 --- a/affinescriptiser/.github/SECURITY.md +++ b/affinescriptiser/.github/SECURITY.md @@ -1,3 +1,7 @@ + # Security Policy + diff --git a/affinescriptiser/.github/pull_request_template.md b/affinescriptiser/.github/pull_request_template.md index 63eb6ad7..9f5155ca 100644 --- a/affinescriptiser/.github/pull_request_template.md +++ b/affinescriptiser/.github/pull_request_template.md @@ -1,4 +1,7 @@ - + ## Summary diff --git a/affinescriptiser/.github/workflows/boj-build.yml b/affinescriptiser/.github/workflows/boj-build.yml index dba7fc81..bda0eecc 100644 --- a/affinescriptiser/.github/workflows/boj-build.yml +++ b/affinescriptiser/.github/workflows/boj-build.yml @@ -7,6 +7,7 @@ on: jobs: trigger-boj: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 diff --git a/affinescriptiser/.github/workflows/casket-pages.yml b/affinescriptiser/.github/workflows/casket-pages.yml index ad8fd14c..87c1e3fb 100644 --- a/affinescriptiser/.github/workflows/casket-pages.yml +++ b/affinescriptiser/.github/workflows/casket-pages.yml @@ -18,6 +18,7 @@ concurrency: jobs: build: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 @@ -109,6 +110,7 @@ jobs: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest + timeout-minutes: 15 needs: build steps: - name: Deploy to GitHub Pages diff --git a/affinescriptiser/.github/workflows/codeql.yml b/affinescriptiser/.github/workflows/codeql.yml index 8525011c..2ed349c7 100644 --- a/affinescriptiser/.github/workflows/codeql.yml +++ b/affinescriptiser/.github/workflows/codeql.yml @@ -15,6 +15,7 @@ permissions: jobs: analyze: runs-on: ubuntu-latest + timeout-minutes: 15 permissions: contents: read security-events: write diff --git a/affinescriptiser/.github/workflows/dogfood-gate.yml b/affinescriptiser/.github/workflows/dogfood-gate.yml index 61d714cd..b53ccb9f 100644 --- a/affinescriptiser/.github/workflows/dogfood-gate.yml +++ b/affinescriptiser/.github/workflows/dogfood-gate.yml @@ -22,6 +22,7 @@ jobs: a2ml-validate: name: Validate A2ML manifests runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository @@ -66,6 +67,7 @@ jobs: k9-validate: name: Validate K9 contracts runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository @@ -115,6 +117,7 @@ jobs: empty-lint: name: Empty-linter (invisible characters) runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository @@ -179,6 +182,7 @@ jobs: groove-check: name: Groove manifest check runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository @@ -237,6 +241,7 @@ jobs: eclexiaiser-validate: name: Validate eclexiaiser manifest runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository @@ -300,6 +305,7 @@ print(f'Valid: {project[\"name\"]} ({len(functions)} function(s))') dogfood-summary: name: Dogfooding compliance summary runs-on: ubuntu-latest + timeout-minutes: 15 needs: [a2ml-validate, k9-validate, empty-lint, groove-check, eclexiaiser-validate] if: always() diff --git a/affinescriptiser/.github/workflows/governance.yml b/affinescriptiser/.github/workflows/governance.yml index b4062e02..a0441740 100644 --- a/affinescriptiser/.github/workflows/governance.yml +++ b/affinescriptiser/.github/workflows/governance.yml @@ -24,3 +24,4 @@ permissions: jobs: governance: uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@861b5e911d9e5dcfb3c0ab3dd2a9a3c8fd0a1613 + timeout-minutes: 10 diff --git a/affinescriptiser/.github/workflows/hypatia-scan.yml b/affinescriptiser/.github/workflows/hypatia-scan.yml index 16ddf9a5..39b0e4a7 100644 --- a/affinescriptiser/.github/workflows/hypatia-scan.yml +++ b/affinescriptiser/.github/workflows/hypatia-scan.yml @@ -18,6 +18,7 @@ jobs: scan: name: Hypatia Neurosymbolic Analysis runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository diff --git a/affinescriptiser/.github/workflows/instant-sync.yml b/affinescriptiser/.github/workflows/instant-sync.yml index 228dc438..01646a74 100644 --- a/affinescriptiser/.github/workflows/instant-sync.yml +++ b/affinescriptiser/.github/workflows/instant-sync.yml @@ -14,6 +14,7 @@ permissions: jobs: dispatch: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Trigger Propagation uses: peter-evans/repository-dispatch@28959ce8df70de7be546dd1250a005dd32156697 # v3 diff --git a/affinescriptiser/.github/workflows/mirror.yml b/affinescriptiser/.github/workflows/mirror.yml index efdb7b72..f86bc9cb 100644 --- a/affinescriptiser/.github/workflows/mirror.yml +++ b/affinescriptiser/.github/workflows/mirror.yml @@ -13,6 +13,7 @@ permissions: jobs: mirror-gitlab: runs-on: ubuntu-latest + timeout-minutes: 15 if: vars.GITLAB_MIRROR_ENABLED == 'true' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -31,6 +32,7 @@ jobs: mirror-bitbucket: runs-on: ubuntu-latest + timeout-minutes: 15 if: vars.BITBUCKET_MIRROR_ENABLED == 'true' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -49,6 +51,7 @@ jobs: mirror-codeberg: runs-on: ubuntu-latest + timeout-minutes: 15 if: vars.CODEBERG_MIRROR_ENABLED == 'true' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -67,6 +70,7 @@ jobs: mirror-sourcehut: runs-on: ubuntu-latest + timeout-minutes: 15 if: vars.SOURCEHUT_MIRROR_ENABLED == 'true' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -85,6 +89,7 @@ jobs: mirror-disroot: runs-on: ubuntu-latest + timeout-minutes: 15 if: vars.DISROOT_MIRROR_ENABLED == 'true' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -103,6 +108,7 @@ jobs: mirror-gitea: runs-on: ubuntu-latest + timeout-minutes: 15 if: vars.GITEA_MIRROR_ENABLED == 'true' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -121,6 +127,7 @@ jobs: mirror-radicle: runs-on: ubuntu-latest + timeout-minutes: 15 if: vars.RADICLE_MIRROR_ENABLED == 'true' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/affinescriptiser/.github/workflows/release.yml b/affinescriptiser/.github/workflows/release.yml index b80da1cf..e179cb3d 100644 --- a/affinescriptiser/.github/workflows/release.yml +++ b/affinescriptiser/.github/workflows/release.yml @@ -18,6 +18,7 @@ jobs: build: name: Build Artifacts runs-on: ubuntu-latest + timeout-minutes: 15 permissions: contents: read steps: @@ -42,6 +43,7 @@ jobs: changelog: name: Generate Changelog runs-on: ubuntu-latest + timeout-minutes: 15 permissions: contents: read outputs: @@ -88,6 +90,7 @@ jobs: name: Create GitHub Release needs: [build, changelog] runs-on: ubuntu-latest + timeout-minutes: 15 permissions: contents: write steps: diff --git a/affinescriptiser/.github/workflows/rhodibot.yml b/affinescriptiser/.github/workflows/rhodibot.yml index a82f1782..471d9d45 100644 --- a/affinescriptiser/.github/workflows/rhodibot.yml +++ b/affinescriptiser/.github/workflows/rhodibot.yml @@ -27,6 +27,7 @@ permissions: jobs: rhodibot: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 diff --git a/affinescriptiser/.github/workflows/rust-ci.yml b/affinescriptiser/.github/workflows/rust-ci.yml index 003d6113..607820d8 100644 --- a/affinescriptiser/.github/workflows/rust-ci.yml +++ b/affinescriptiser/.github/workflows/rust-ci.yml @@ -18,6 +18,7 @@ jobs: check: name: Cargo check + clippy + fmt runs-on: ubuntu-latest + timeout-minutes: 15 if: hashFiles('Cargo.toml') != '' steps: @@ -44,6 +45,7 @@ jobs: test: name: Cargo test runs-on: ubuntu-latest + timeout-minutes: 15 needs: check if: hashFiles('Cargo.toml') != '' diff --git a/affinescriptiser/.github/workflows/scorecard-enforcer.yml b/affinescriptiser/.github/workflows/scorecard-enforcer.yml index 67f5366a..ab023ff7 100644 --- a/affinescriptiser/.github/workflows/scorecard-enforcer.yml +++ b/affinescriptiser/.github/workflows/scorecard-enforcer.yml @@ -15,6 +15,7 @@ permissions: jobs: scorecard: runs-on: ubuntu-latest + timeout-minutes: 15 permissions: security-events: write id-token: write # For OIDC @@ -53,6 +54,7 @@ jobs: # Check specific high-priority items check-critical: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/affinescriptiser/.github/workflows/scorecard.yml b/affinescriptiser/.github/workflows/scorecard.yml index 22305e1c..fdf0d026 100644 --- a/affinescriptiser/.github/workflows/scorecard.yml +++ b/affinescriptiser/.github/workflows/scorecard.yml @@ -13,6 +13,7 @@ permissions: jobs: analysis: runs-on: ubuntu-latest + timeout-minutes: 15 permissions: security-events: write id-token: write diff --git a/affinescriptiser/.github/workflows/secret-scanner.yml b/affinescriptiser/.github/workflows/secret-scanner.yml index 7cb561df..a90f0936 100644 --- a/affinescriptiser/.github/workflows/secret-scanner.yml +++ b/affinescriptiser/.github/workflows/secret-scanner.yml @@ -13,6 +13,7 @@ permissions: jobs: trufflehog: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: @@ -25,6 +26,7 @@ jobs: gitleaks: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: @@ -38,6 +40,7 @@ jobs: # Rust-specific: Check for hardcoded crypto values rust-secrets: runs-on: ubuntu-latest + timeout-minutes: 15 if: hashFiles('**/Cargo.toml') != '' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/affinescriptiser/.github/workflows/static-analysis-gate.yml b/affinescriptiser/.github/workflows/static-analysis-gate.yml index 4fba8fbd..d4227ab4 100644 --- a/affinescriptiser/.github/workflows/static-analysis-gate.yml +++ b/affinescriptiser/.github/workflows/static-analysis-gate.yml @@ -19,6 +19,7 @@ jobs: panic-attack-assail: name: panic-attack assail runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository @@ -123,6 +124,7 @@ jobs: hypatia-scan: name: Hypatia neurosymbolic scan runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository @@ -235,6 +237,7 @@ jobs: deposit-findings: name: Deposit findings for gitbot-fleet runs-on: ubuntu-latest + timeout-minutes: 15 needs: [panic-attack-assail, hypatia-scan] if: always() diff --git a/affinescriptiser/.machine_readable/MUST.contractile b/affinescriptiser/.machine_readable/MUST.contractile index 3cabba22..61ec4a7d 100644 --- a/affinescriptiser/.machine_readable/MUST.contractile +++ b/affinescriptiser/.machine_readable/MUST.contractile @@ -26,7 +26,7 @@ ; remain active until the feature is fully removed. ; ; Enforcement: -; K9 validators in contractiles/k9/ machine-check MUST constraints. +; K9 validators in contractiles/self-validating/ machine-check MUST constraints. ; CI runs these on every PR. Violations block merge. ; ; ── End Definitions ────────────────────────────────────────────── @@ -85,7 +85,7 @@ ; (must "# Add project-specific invariants here") (enforcement - (k9-validator "contractiles/k9/must-check.k9.ncl") + (k9-validator "contractiles/self-validating/must-check.k9.ncl") (ci "quality.yml runs must-check on every PR") ) ) diff --git a/affinescriptiser/.machine_readable/README.adoc b/affinescriptiser/.machine_readable/README.adoc index 471d6c72..e72996df 100644 --- a/affinescriptiser/.machine_readable/README.adoc +++ b/affinescriptiser/.machine_readable/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = .machine_readable Pillar diff --git a/affinescriptiser/.machine_readable/agent_instructions/README.adoc b/affinescriptiser/.machine_readable/agent_instructions/README.adoc index 9bc2e24b..e5fec014 100644 --- a/affinescriptiser/.machine_readable/agent_instructions/README.adoc +++ b/affinescriptiser/.machine_readable/agent_instructions/README.adoc @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell = Agent Instructions :toc: preamble diff --git a/affinescriptiser/.machine_readable/ai/PLACEHOLDERS.adoc b/affinescriptiser/.machine_readable/ai/PLACEHOLDERS.adoc index 897fbca0..72a6201e 100644 --- a/affinescriptiser/.machine_readable/ai/PLACEHOLDERS.adoc +++ b/affinescriptiser/.machine_readable/ai/PLACEHOLDERS.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Template Placeholders # Template Placeholders diff --git a/affinescriptiser/.machine_readable/ai/README.adoc b/affinescriptiser/.machine_readable/ai/README.adoc index 121bbc8a..8cf2ea7c 100644 --- a/affinescriptiser/.machine_readable/ai/README.adoc +++ b/affinescriptiser/.machine_readable/ai/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AI Guidance Directory Put AI-facing instructions in this folder. diff --git a/affinescriptiser/.machine_readable/anchors/README.adoc b/affinescriptiser/.machine_readable/anchors/README.adoc index 1b27c02d..c264945d 100644 --- a/affinescriptiser/.machine_readable/anchors/README.adoc +++ b/affinescriptiser/.machine_readable/anchors/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = anchors Registry diff --git a/affinescriptiser/.machine_readable/configs/README.adoc b/affinescriptiser/.machine_readable/configs/README.adoc index 616b9e76..2ab097e7 100644 --- a/affinescriptiser/.machine_readable/configs/README.adoc +++ b/affinescriptiser/.machine_readable/configs/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = configs Registry diff --git a/affinescriptiser/.machine_readable/contractiles/README.adoc b/affinescriptiser/.machine_readable/contractiles/README.adoc index d40fcd18..2b8aed77 100644 --- a/affinescriptiser/.machine_readable/contractiles/README.adoc +++ b/affinescriptiser/.machine_readable/contractiles/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Contractiles Template Set :toc: :sectnums: diff --git a/affinescriptiser/.machine_readable/policies/README.adoc b/affinescriptiser/.machine_readable/policies/README.adoc index b7e25f57..045e5af7 100644 --- a/affinescriptiser/.machine_readable/policies/README.adoc +++ b/affinescriptiser/.machine_readable/policies/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = policies Registry diff --git a/affinescriptiser/.machine_readable/scripts/forge/README.adoc b/affinescriptiser/.machine_readable/scripts/forge/README.adoc index 31adef65..a43f1d26 100644 --- a/affinescriptiser/.machine_readable/scripts/forge/README.adoc +++ b/affinescriptiser/.machine_readable/scripts/forge/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Forge Scripts diff --git a/affinescriptiser/.machine_readable/scripts/lifecycle/README.adoc b/affinescriptiser/.machine_readable/scripts/lifecycle/README.adoc index 8d262b14..481283ef 100644 --- a/affinescriptiser/.machine_readable/scripts/lifecycle/README.adoc +++ b/affinescriptiser/.machine_readable/scripts/lifecycle/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Lifecycle Scripts diff --git a/affinescriptiser/.machine_readable/scripts/verification/README.adoc b/affinescriptiser/.machine_readable/scripts/verification/README.adoc index 277b4aa6..19fcf014 100644 --- a/affinescriptiser/.machine_readable/scripts/verification/README.adoc +++ b/affinescriptiser/.machine_readable/scripts/verification/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Verification Scripts diff --git a/affinescriptiser/CHANGELOG.adoc b/affinescriptiser/CHANGELOG.adoc index e7813385..d2fc7aa0 100644 --- a/affinescriptiser/CHANGELOG.adoc +++ b/affinescriptiser/CHANGELOG.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Changelog :toc: diff --git a/affinescriptiser/CODE_OF_CONDUCT.md b/affinescriptiser/CODE_OF_CONDUCT.md index 1f1548ca..9020def2 100644 --- a/affinescriptiser/CODE_OF_CONDUCT.md +++ b/affinescriptiser/CODE_OF_CONDUCT.md @@ -1,4 +1,7 @@ - + # Contributor Covenant Code of Conduct ## Our Pledge diff --git a/affinescriptiser/CONTRIBUTING.adoc b/affinescriptiser/CONTRIBUTING.adoc index a7cf8611..b1cb6ee8 100644 --- a/affinescriptiser/CONTRIBUTING.adoc +++ b/affinescriptiser/CONTRIBUTING.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Contributing to {project-name} :toc: preamble :icons: font diff --git a/affinescriptiser/EXPLAINME.adoc b/affinescriptiser/EXPLAINME.adoc index eb91b1e2..11a81a5a 100644 --- a/affinescriptiser/EXPLAINME.adoc +++ b/affinescriptiser/EXPLAINME.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Affinescriptiser — Show Me The Receipts :toc: :icons: font diff --git a/affinescriptiser/QUICKSTART-DEV.adoc b/affinescriptiser/QUICKSTART-DEV.adoc index e50917b8..f7076ec6 100644 --- a/affinescriptiser/QUICKSTART-DEV.adoc +++ b/affinescriptiser/QUICKSTART-DEV.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Affinescriptiser — Developer Quickstart :toc: preamble diff --git a/affinescriptiser/QUICKSTART-MAINTAINER.adoc b/affinescriptiser/QUICKSTART-MAINTAINER.adoc index dc402e8d..1d5ac3de 100644 --- a/affinescriptiser/QUICKSTART-MAINTAINER.adoc +++ b/affinescriptiser/QUICKSTART-MAINTAINER.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Affinescriptiser — Maintainer Quickstart :toc: preamble diff --git a/affinescriptiser/QUICKSTART-USER.adoc b/affinescriptiser/QUICKSTART-USER.adoc index a0375f3a..022506b7 100644 --- a/affinescriptiser/QUICKSTART-USER.adoc +++ b/affinescriptiser/QUICKSTART-USER.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Affinescriptiser — User Quickstart :toc: preamble diff --git a/affinescriptiser/README.adoc b/affinescriptiser/README.adoc index 1ef38f87..ebf4e393 100644 --- a/affinescriptiser/README.adoc +++ b/affinescriptiser/README.adoc @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell = Affinescriptiser Jonathan D.A. Jewell :toc: left diff --git a/affinescriptiser/ROADMAP.adoc b/affinescriptiser/ROADMAP.adoc index a3e55cb8..1e518291 100644 --- a/affinescriptiser/ROADMAP.adoc +++ b/affinescriptiser/ROADMAP.adoc @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell = Affinescriptiser Roadmap Jonathan D.A. Jewell :toc: left diff --git a/affinescriptiser/SECURITY.md b/affinescriptiser/SECURITY.md index 3af93199..3a765b89 100644 --- a/affinescriptiser/SECURITY.md +++ b/affinescriptiser/SECURITY.md @@ -1,3 +1,7 @@ + # Security Policy ## Supported Versions diff --git a/affinescriptiser/TEST-NEEDS.md b/affinescriptiser/TEST-NEEDS.md index c1e17111..248e3ea2 100644 --- a/affinescriptiser/TEST-NEEDS.md +++ b/affinescriptiser/TEST-NEEDS.md @@ -1,3 +1,7 @@ + # TEST-NEEDS.md — affinescriptiser ## CRG Grade: C — ACHIEVED 2026-04-04 diff --git a/affinescriptiser/TOPOLOGY.md b/affinescriptiser/TOPOLOGY.md index 547dd589..4c7572c3 100644 --- a/affinescriptiser/TOPOLOGY.md +++ b/affinescriptiser/TOPOLOGY.md @@ -1,4 +1,7 @@ - + # TOPOLOGY.md — Affinescriptiser Repository Map diff --git a/affinescriptiser/container/README.adoc b/affinescriptiser/container/README.adoc index 1c0044c8..0db8201e 100644 --- a/affinescriptiser/container/README.adoc +++ b/affinescriptiser/container/README.adoc @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell = {{PROJECT_NAME}} Container Templates :toc: left :toclevels: 3 diff --git a/affinescriptiser/docs/QUICKSTART.adoc b/affinescriptiser/docs/QUICKSTART.adoc index b20b3d0a..013bf344 100644 --- a/affinescriptiser/docs/QUICKSTART.adoc +++ b/affinescriptiser/docs/QUICKSTART.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Quickstart :toc: preamble diff --git a/affinescriptiser/docs/README.adoc b/affinescriptiser/docs/README.adoc index df45be70..adf6a028 100644 --- a/affinescriptiser/docs/README.adoc +++ b/affinescriptiser/docs/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Documentation Layout Primary tracks: diff --git a/affinescriptiser/docs/RSR_OUTLINE.adoc b/affinescriptiser/docs/RSR_OUTLINE.adoc index e07a65e4..1b940e9b 100644 --- a/affinescriptiser/docs/RSR_OUTLINE.adoc +++ b/affinescriptiser/docs/RSR_OUTLINE.adoc @@ -1,6 +1,8 @@ +// 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"] +image:[MPL-2.0-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-license"] :toc: :sectnums: diff --git a/affinescriptiser/docs/STATE-VISUALIZER.adoc b/affinescriptiser/docs/STATE-VISUALIZER.adoc index 422fcd5c..77c0248b 100644 --- a/affinescriptiser/docs/STATE-VISUALIZER.adoc +++ b/affinescriptiser/docs/STATE-VISUALIZER.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Project State Visualizer [source] ---- diff --git a/affinescriptiser/docs/architecture/THREAT-MODEL.adoc b/affinescriptiser/docs/architecture/THREAT-MODEL.adoc index 04829037..daa1706b 100644 --- a/affinescriptiser/docs/architecture/THREAT-MODEL.adoc +++ b/affinescriptiser/docs/architecture/THREAT-MODEL.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Threat Model diff --git a/affinescriptiser/docs/attribution/CITATIONS.adoc b/affinescriptiser/docs/attribution/CITATIONS.adoc index 3d483a97..3cbe00c4 100644 --- a/affinescriptiser/docs/attribution/CITATIONS.adoc +++ b/affinescriptiser/docs/attribution/CITATIONS.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = {{PROJECT_NAME}} - Citation Guide :toc: diff --git a/affinescriptiser/docs/attribution/CODEOWNERS.adoc b/affinescriptiser/docs/attribution/CODEOWNERS.adoc index 3714055f..668df012 100644 --- a/affinescriptiser/docs/attribution/CODEOWNERS.adoc +++ b/affinescriptiser/docs/attribution/CODEOWNERS.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Code Ownership :icons: font diff --git a/affinescriptiser/docs/attribution/MAINTAINERS.adoc b/affinescriptiser/docs/attribution/MAINTAINERS.adoc index a1c65443..becaa3ea 100644 --- a/affinescriptiser/docs/attribution/MAINTAINERS.adoc +++ b/affinescriptiser/docs/attribution/MAINTAINERS.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Maintainers :toc: preamble diff --git a/affinescriptiser/docs/attribution/README.adoc b/affinescriptiser/docs/attribution/README.adoc index b095612c..2e507216 100644 --- a/affinescriptiser/docs/attribution/README.adoc +++ b/affinescriptiser/docs/attribution/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = attribution Unit diff --git a/affinescriptiser/docs/decisions/0000-template.adoc b/affinescriptiser/docs/decisions/0000-template.adoc index b1a561f3..825ea4a3 100644 --- a/affinescriptiser/docs/decisions/0000-template.adoc +++ b/affinescriptiser/docs/decisions/0000-template.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Architecture Decision Record: 0000-template diff --git a/affinescriptiser/docs/decisions/0001-adopt-rsr-standard.adoc b/affinescriptiser/docs/decisions/0001-adopt-rsr-standard.adoc index 7e54838e..b4d89d2c 100644 --- a/affinescriptiser/docs/decisions/0001-adopt-rsr-standard.adoc +++ b/affinescriptiser/docs/decisions/0001-adopt-rsr-standard.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Architecture Decision Record: 0001-adopt-rsr-standard diff --git a/affinescriptiser/docs/decisions/README.adoc b/affinescriptiser/docs/decisions/README.adoc index 153a5e78..af174f52 100644 --- a/affinescriptiser/docs/decisions/README.adoc +++ b/affinescriptiser/docs/decisions/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = decisions Unit diff --git a/affinescriptiser/docs/developer/ABI-FFI-README.adoc b/affinescriptiser/docs/developer/ABI-FFI-README.adoc index fe01f125..ebffaa21 100644 --- a/affinescriptiser/docs/developer/ABI-FFI-README.adoc +++ b/affinescriptiser/docs/developer/ABI-FFI-README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = ABI/FFI Standards {{~ Aditionally delete this line and fill out the template below ~}} diff --git a/affinescriptiser/docs/developer/README.adoc b/affinescriptiser/docs/developer/README.adoc index 1d00529d..2b328b44 100644 --- a/affinescriptiser/docs/developer/README.adoc +++ b/affinescriptiser/docs/developer/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = developer Unit diff --git a/affinescriptiser/docs/governance/CRG-CRITERIA.adoc b/affinescriptiser/docs/governance/CRG-CRITERIA.adoc index f8264e6d..926df5ae 100644 --- a/affinescriptiser/docs/governance/CRG-CRITERIA.adoc +++ b/affinescriptiser/docs/governance/CRG-CRITERIA.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Component Readiness Grades (CRG) Criteria :toc: preamble :icons: font diff --git a/affinescriptiser/docs/governance/MAINTENANCE-CHECKLIST.adoc b/affinescriptiser/docs/governance/MAINTENANCE-CHECKLIST.adoc index 0b406548..b08a6e61 100644 --- a/affinescriptiser/docs/governance/MAINTENANCE-CHECKLIST.adoc +++ b/affinescriptiser/docs/governance/MAINTENANCE-CHECKLIST.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Maintenance Checklist # Maintenance Checklist (Cross-Repo) diff --git a/affinescriptiser/docs/governance/README.adoc b/affinescriptiser/docs/governance/README.adoc index 114ee94b..48cac0de 100644 --- a/affinescriptiser/docs/governance/README.adoc +++ b/affinescriptiser/docs/governance/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Governance Pillar (TSDM) diff --git a/affinescriptiser/docs/governance/SOFTWARE-DEVELOPMENT-APPROACH.adoc b/affinescriptiser/docs/governance/SOFTWARE-DEVELOPMENT-APPROACH.adoc index e8805c68..2bfa0ffd 100644 --- a/affinescriptiser/docs/governance/SOFTWARE-DEVELOPMENT-APPROACH.adoc +++ b/affinescriptiser/docs/governance/SOFTWARE-DEVELOPMENT-APPROACH.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Software Development Approach (General) :toc: left :toclevels: 2 diff --git a/affinescriptiser/docs/governance/TSDM.adoc b/affinescriptiser/docs/governance/TSDM.adoc index cbd582c0..6bf4ee84 100644 --- a/affinescriptiser/docs/governance/TSDM.adoc +++ b/affinescriptiser/docs/governance/TSDM.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Triaxial Software Development Methodology (TSDM) :toc: preamble :icons: font diff --git a/affinescriptiser/docs/governance/audit/README.adoc b/affinescriptiser/docs/governance/audit/README.adoc index fac37404..02aff131 100644 --- a/affinescriptiser/docs/governance/audit/README.adoc +++ b/affinescriptiser/docs/governance/audit/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Audit Axis diff --git a/affinescriptiser/docs/governance/audit/compliance/README.adoc b/affinescriptiser/docs/governance/audit/compliance/README.adoc index 876954fd..9948dbcd 100644 --- a/affinescriptiser/docs/governance/audit/compliance/README.adoc +++ b/affinescriptiser/docs/governance/audit/compliance/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Compliance Unit diff --git a/affinescriptiser/docs/governance/audit/effects/README.adoc b/affinescriptiser/docs/governance/audit/effects/README.adoc index 36347994..e5620ee7 100644 --- a/affinescriptiser/docs/governance/audit/effects/README.adoc +++ b/affinescriptiser/docs/governance/audit/effects/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Effects Unit diff --git a/affinescriptiser/docs/governance/audit/systems/README.adoc b/affinescriptiser/docs/governance/audit/systems/README.adoc index 8d179b4a..00a67dec 100644 --- a/affinescriptiser/docs/governance/audit/systems/README.adoc +++ b/affinescriptiser/docs/governance/audit/systems/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Systems Unit diff --git a/affinescriptiser/docs/governance/maintenance/README.adoc b/affinescriptiser/docs/governance/maintenance/README.adoc index 0ed2f1b5..7083a836 100644 --- a/affinescriptiser/docs/governance/maintenance/README.adoc +++ b/affinescriptiser/docs/governance/maintenance/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Maintenance Axis diff --git a/affinescriptiser/docs/governance/maintenance/adaptive/README.adoc b/affinescriptiser/docs/governance/maintenance/adaptive/README.adoc index 7b60992a..72d0381e 100644 --- a/affinescriptiser/docs/governance/maintenance/adaptive/README.adoc +++ b/affinescriptiser/docs/governance/maintenance/adaptive/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Adaptive Unit diff --git a/affinescriptiser/docs/governance/maintenance/corrective/README.adoc b/affinescriptiser/docs/governance/maintenance/corrective/README.adoc index ed904a81..9a0ed5d6 100644 --- a/affinescriptiser/docs/governance/maintenance/corrective/README.adoc +++ b/affinescriptiser/docs/governance/maintenance/corrective/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Corrective Unit diff --git a/affinescriptiser/docs/governance/maintenance/perfective/README.adoc b/affinescriptiser/docs/governance/maintenance/perfective/README.adoc index 8759d74d..12e3d14a 100644 --- a/affinescriptiser/docs/governance/maintenance/perfective/README.adoc +++ b/affinescriptiser/docs/governance/maintenance/perfective/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Perfective Unit diff --git a/affinescriptiser/docs/governance/planning/README.adoc b/affinescriptiser/docs/governance/planning/README.adoc index 62aa375f..2694fe9a 100644 --- a/affinescriptiser/docs/governance/planning/README.adoc +++ b/affinescriptiser/docs/governance/planning/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Planning Axis diff --git a/affinescriptiser/docs/governance/planning/could/README.adoc b/affinescriptiser/docs/governance/planning/could/README.adoc index ad5a6b82..acc41ce0 100644 --- a/affinescriptiser/docs/governance/planning/could/README.adoc +++ b/affinescriptiser/docs/governance/planning/could/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Could Unit diff --git a/affinescriptiser/docs/governance/planning/must/README.adoc b/affinescriptiser/docs/governance/planning/must/README.adoc index 47eb46dc..57595504 100644 --- a/affinescriptiser/docs/governance/planning/must/README.adoc +++ b/affinescriptiser/docs/governance/planning/must/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Must Unit diff --git a/affinescriptiser/docs/governance/planning/should/README.adoc b/affinescriptiser/docs/governance/planning/should/README.adoc index 605489c8..a00f585c 100644 --- a/affinescriptiser/docs/governance/planning/should/README.adoc +++ b/affinescriptiser/docs/governance/planning/should/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Should Unit diff --git a/affinescriptiser/docs/practice/AI-CONVENTIONS.adoc b/affinescriptiser/docs/practice/AI-CONVENTIONS.adoc index f0ed9eaa..7cad38fe 100644 --- a/affinescriptiser/docs/practice/AI-CONVENTIONS.adoc +++ b/affinescriptiser/docs/practice/AI-CONVENTIONS.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AI Conventions diff --git a/affinescriptiser/docs/practice/README.adoc b/affinescriptiser/docs/practice/README.adoc index ae3326b9..caceb5cd 100644 --- a/affinescriptiser/docs/practice/README.adoc +++ b/affinescriptiser/docs/practice/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = practice Unit diff --git a/affinescriptiser/docs/practice/STATE-VISUALIZER-GUIDE.adoc b/affinescriptiser/docs/practice/STATE-VISUALIZER-GUIDE.adoc index c2490ca4..6e97d924 100644 --- a/affinescriptiser/docs/practice/STATE-VISUALIZER-GUIDE.adoc +++ b/affinescriptiser/docs/practice/STATE-VISUALIZER-GUIDE.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = TOPOLOGY.md — Generation Guide Jonathan D.A. Jewell (hyperpolymath) :toc: diff --git a/affinescriptiser/docs/reports/README.adoc b/affinescriptiser/docs/reports/README.adoc index 0c06c31d..e91d79e2 100644 --- a/affinescriptiser/docs/reports/README.adoc +++ b/affinescriptiser/docs/reports/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = reports Unit diff --git a/affinescriptiser/docs/reports/compliance/README.adoc b/affinescriptiser/docs/reports/compliance/README.adoc index c38c66a4..1f6b885f 100644 --- a/affinescriptiser/docs/reports/compliance/README.adoc +++ b/affinescriptiser/docs/reports/compliance/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Compliance Reports diff --git a/affinescriptiser/docs/reports/maintenance/README.adoc b/affinescriptiser/docs/reports/maintenance/README.adoc index f13abf79..82f845e0 100644 --- a/affinescriptiser/docs/reports/maintenance/README.adoc +++ b/affinescriptiser/docs/reports/maintenance/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Maintenance Reports diff --git a/affinescriptiser/docs/reports/performance/README.adoc b/affinescriptiser/docs/reports/performance/README.adoc index 037767d3..6473ed30 100644 --- a/affinescriptiser/docs/reports/performance/README.adoc +++ b/affinescriptiser/docs/reports/performance/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Performance Reports diff --git a/affinescriptiser/docs/reports/quality/README.adoc b/affinescriptiser/docs/reports/quality/README.adoc index d1be8484..dbdb3bac 100644 --- a/affinescriptiser/docs/reports/quality/README.adoc +++ b/affinescriptiser/docs/reports/quality/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Quality Reports diff --git a/affinescriptiser/docs/reports/security/README.adoc b/affinescriptiser/docs/reports/security/README.adoc index 9a78a8bc..76656ccc 100644 --- a/affinescriptiser/docs/reports/security/README.adoc +++ b/affinescriptiser/docs/reports/security/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Security Reports diff --git a/affinescriptiser/docs/standards/README.adoc b/affinescriptiser/docs/standards/README.adoc index 34a94c4f..41f7a317 100644 --- a/affinescriptiser/docs/standards/README.adoc +++ b/affinescriptiser/docs/standards/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Standards Unit diff --git a/affinescriptiser/docs/templates/contractiles/README.adoc b/affinescriptiser/docs/templates/contractiles/README.adoc index 121da7ae..c544de66 100644 --- a/affinescriptiser/docs/templates/contractiles/README.adoc +++ b/affinescriptiser/docs/templates/contractiles/README.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Contractile Templates Blank templates for projects that want to replace the hyperpolymath diff --git a/affinescriptiser/docs/theory/README.adoc b/affinescriptiser/docs/theory/README.adoc index c0ddf280..b2658b1e 100644 --- a/affinescriptiser/docs/theory/README.adoc +++ b/affinescriptiser/docs/theory/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = theory Unit diff --git a/affinescriptiser/docs/theory/computing/README.adoc b/affinescriptiser/docs/theory/computing/README.adoc index 4d0db25d..aec951f3 100644 --- a/affinescriptiser/docs/theory/computing/README.adoc +++ b/affinescriptiser/docs/theory/computing/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Computing Theory diff --git a/affinescriptiser/docs/theory/formalisms/README.adoc b/affinescriptiser/docs/theory/formalisms/README.adoc index 5d064c39..288a4101 100644 --- a/affinescriptiser/docs/theory/formalisms/README.adoc +++ b/affinescriptiser/docs/theory/formalisms/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Formalisms Theory diff --git a/affinescriptiser/docs/theory/mathematics/README.adoc b/affinescriptiser/docs/theory/mathematics/README.adoc index 356236f4..c9b223d8 100644 --- a/affinescriptiser/docs/theory/mathematics/README.adoc +++ b/affinescriptiser/docs/theory/mathematics/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Mathematics Theory diff --git a/affinescriptiser/docs/theory/ontologies/README.adoc b/affinescriptiser/docs/theory/ontologies/README.adoc index 6d16ecf9..9267ab0f 100644 --- a/affinescriptiser/docs/theory/ontologies/README.adoc +++ b/affinescriptiser/docs/theory/ontologies/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Ontologies Theory diff --git a/affinescriptiser/docs/theory/other/README.adoc b/affinescriptiser/docs/theory/other/README.adoc index 1861d6d5..0ec84325 100644 --- a/affinescriptiser/docs/theory/other/README.adoc +++ b/affinescriptiser/docs/theory/other/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Other Theory diff --git a/affinescriptiser/docs/theory/socio-technical/README.adoc b/affinescriptiser/docs/theory/socio-technical/README.adoc index 9ab4ee07..5c3c8196 100644 --- a/affinescriptiser/docs/theory/socio-technical/README.adoc +++ b/affinescriptiser/docs/theory/socio-technical/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Socio technical Theory diff --git a/affinescriptiser/docs/whitepapers/README.adoc b/affinescriptiser/docs/whitepapers/README.adoc index 88e83c5e..1ee0309f 100644 --- a/affinescriptiser/docs/whitepapers/README.adoc +++ b/affinescriptiser/docs/whitepapers/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = whitepapers Unit diff --git a/affinescriptiser/docs/whitepapers/academic/README.adoc b/affinescriptiser/docs/whitepapers/academic/README.adoc index 16c3f453..d6dc7a07 100644 --- a/affinescriptiser/docs/whitepapers/academic/README.adoc +++ b/affinescriptiser/docs/whitepapers/academic/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Academic Logic diff --git a/affinescriptiser/docs/whitepapers/industry/README.adoc b/affinescriptiser/docs/whitepapers/industry/README.adoc index 7bc7fcd6..2f795b79 100644 --- a/affinescriptiser/docs/whitepapers/industry/README.adoc +++ b/affinescriptiser/docs/whitepapers/industry/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Industry Logic diff --git a/affinescriptiser/docs/whitepapers/outreach/README.adoc b/affinescriptiser/docs/whitepapers/outreach/README.adoc index 8141463f..f3ea4da0 100644 --- a/affinescriptiser/docs/whitepapers/outreach/README.adoc +++ b/affinescriptiser/docs/whitepapers/outreach/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Outreach & Education :toc: preamble :icons: font diff --git a/affinescriptiser/docs/wikis/README.adoc b/affinescriptiser/docs/wikis/README.adoc index 71b60d1b..4d493b48 100644 --- a/affinescriptiser/docs/wikis/README.adoc +++ b/affinescriptiser/docs/wikis/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Project Wikis :toc: preamble :icons: font diff --git a/affinescriptiser/examples/README.adoc b/affinescriptiser/examples/README.adoc index b9cdb487..40bc850c 100644 --- a/affinescriptiser/examples/README.adoc +++ b/affinescriptiser/examples/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = examples Pillar diff --git a/affinescriptiser/examples/wasm-safe/core.rs b/affinescriptiser/examples/wasm-safe/core.rs index 2f7f20de..52ff2909 100644 --- a/affinescriptiser/examples/wasm-safe/core.rs +++ b/affinescriptiser/examples/wasm-safe/core.rs @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // Example source file for affinescriptiser — demonstrates resource allocation patterns // that the parser will detect and the affine type system will wrap. diff --git a/affinescriptiser/features/README.adoc b/affinescriptiser/features/README.adoc index 3899280c..49228915 100644 --- a/affinescriptiser/features/README.adoc +++ b/affinescriptiser/features/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Project Features diff --git a/affinescriptiser/features/boj-server/README.adoc b/affinescriptiser/features/boj-server/README.adoc index 0039c37d..0ef03767 100644 --- a/affinescriptiser/features/boj-server/README.adoc +++ b/affinescriptiser/features/boj-server/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = BoJ Server Integration :icons: font diff --git a/affinescriptiser/features/panic-attacker/README.adoc b/affinescriptiser/features/panic-attacker/README.adoc index 72d56a42..de0bd9b7 100644 --- a/affinescriptiser/features/panic-attacker/README.adoc +++ b/affinescriptiser/features/panic-attacker/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Panic Attacker Feature :icons: font diff --git a/affinescriptiser/features/ssg/README.adoc b/affinescriptiser/features/ssg/README.adoc index e15687bf..a6ef2625 100644 --- a/affinescriptiser/features/ssg/README.adoc +++ b/affinescriptiser/features/ssg/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Ssg Feature diff --git a/affinescriptiser/llm-warmup-dev.md b/affinescriptiser/llm-warmup-dev.md index 0242bf39..5e4095d9 100644 --- a/affinescriptiser/llm-warmup-dev.md +++ b/affinescriptiser/llm-warmup-dev.md @@ -1,3 +1,7 @@ + # LLM Warmup — affinescriptiser (Developer) ## What is affinescriptiser? diff --git a/affinescriptiser/llm-warmup-user.md b/affinescriptiser/llm-warmup-user.md index 92dc4657..4cd65539 100644 --- a/affinescriptiser/llm-warmup-user.md +++ b/affinescriptiser/llm-warmup-user.md @@ -1,3 +1,7 @@ + # LLM Warmup — affinescriptiser (User) ## What is affinescriptiser? diff --git a/affinescriptiser/src/README.adoc b/affinescriptiser/src/README.adoc index 5529f66f..d8c8116d 100644 --- a/affinescriptiser/src/README.adoc +++ b/affinescriptiser/src/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = src Pillar diff --git a/affinescriptiser/src/abi/mod.rs b/affinescriptiser/src/abi/mod.rs index 33377c6c..754c8c81 100644 --- a/affinescriptiser/src/abi/mod.rs +++ b/affinescriptiser/src/abi/mod.rs @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell +// Copyright (c) Jonathan D.A. Jewell // // ABI module for affinescriptiser — Core type definitions for affine/linear resource tracking, // WASM compilation targets, and violation reporting. These types model the AffineScript type diff --git a/affinescriptiser/src/aspects/README.adoc b/affinescriptiser/src/aspects/README.adoc index 6456f962..9b7b80fc 100644 --- a/affinescriptiser/src/aspects/README.adoc +++ b/affinescriptiser/src/aspects/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Aspects Pillar diff --git a/affinescriptiser/src/aspects/integrity/README.adoc b/affinescriptiser/src/aspects/integrity/README.adoc index f15d829d..17a09db1 100644 --- a/affinescriptiser/src/aspects/integrity/README.adoc +++ b/affinescriptiser/src/aspects/integrity/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Integrity Aspect diff --git a/affinescriptiser/src/aspects/observability/README.adoc b/affinescriptiser/src/aspects/observability/README.adoc index 7852ee64..df2ca36e 100644 --- a/affinescriptiser/src/aspects/observability/README.adoc +++ b/affinescriptiser/src/aspects/observability/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Observability Aspect diff --git a/affinescriptiser/src/aspects/security/README.adoc b/affinescriptiser/src/aspects/security/README.adoc index 3c3536ec..11ad21be 100644 --- a/affinescriptiser/src/aspects/security/README.adoc +++ b/affinescriptiser/src/aspects/security/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Security Aspect diff --git a/affinescriptiser/src/codegen/affine_gen.rs b/affinescriptiser/src/codegen/affine_gen.rs index f970b710..e55083c4 100644 --- a/affinescriptiser/src/codegen/affine_gen.rs +++ b/affinescriptiser/src/codegen/affine_gen.rs @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell +// Copyright (c) Jonathan D.A. Jewell // // AffineScript type annotation generator — Takes parsed resource sites and manifest resource // declarations and produces AffineScript wrapper modules. Each tracked resource gets a wrapper diff --git a/affinescriptiser/src/codegen/mod.rs b/affinescriptiser/src/codegen/mod.rs index 1e135063..41c478aa 100644 --- a/affinescriptiser/src/codegen/mod.rs +++ b/affinescriptiser/src/codegen/mod.rs @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell +// Copyright (c) Jonathan D.A. Jewell // // Codegen orchestrator for affinescriptiser — Coordinates the three-phase code generation // pipeline: (1) parse source files to find resource sites, (2) generate AffineScript type diff --git a/affinescriptiser/src/codegen/parser.rs b/affinescriptiser/src/codegen/parser.rs index bf7bf7d3..f74574f9 100644 --- a/affinescriptiser/src/codegen/parser.rs +++ b/affinescriptiser/src/codegen/parser.rs @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell +// Copyright (c) Jonathan D.A. Jewell // // Source parser for affinescriptiser — Scans source files (Rust, C, Zig) to identify call sites // where tracked resources are allocated or deallocated. Produces a list of ResourceSite records diff --git a/affinescriptiser/src/codegen/wasm_gen.rs b/affinescriptiser/src/codegen/wasm_gen.rs index ef09e339..f93584c5 100644 --- a/affinescriptiser/src/codegen/wasm_gen.rs +++ b/affinescriptiser/src/codegen/wasm_gen.rs @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell +// Copyright (c) Jonathan D.A. Jewell // // WASM generation module for affinescriptiser — Produces WASM compilation configuration files // and entry point declarations from the manifest's WASM settings and the generated AffineScript diff --git a/affinescriptiser/src/contracts/README.adoc b/affinescriptiser/src/contracts/README.adoc index 9cfa2098..20dd4caa 100644 --- a/affinescriptiser/src/contracts/README.adoc +++ b/affinescriptiser/src/contracts/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Contracts Unit diff --git a/affinescriptiser/src/definitions/README.adoc b/affinescriptiser/src/definitions/README.adoc index 95483497..5a9912f1 100644 --- a/affinescriptiser/src/definitions/README.adoc +++ b/affinescriptiser/src/definitions/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Definitions Unit diff --git a/affinescriptiser/src/errors/README.adoc b/affinescriptiser/src/errors/README.adoc index 460fc1e9..eff7b29c 100644 --- a/affinescriptiser/src/errors/README.adoc +++ b/affinescriptiser/src/errors/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Errors Unit diff --git a/affinescriptiser/src/interface/README.adoc b/affinescriptiser/src/interface/README.adoc index 8faf0aad..727b9e74 100644 --- a/affinescriptiser/src/interface/README.adoc +++ b/affinescriptiser/src/interface/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = interface Unit diff --git a/affinescriptiser/src/interface/abi/Foreign.idr b/affinescriptiser/src/interface/abi/Foreign.idr index f8550bb2..363d5879 100644 --- a/affinescriptiser/src/interface/abi/Foreign.idr +++ b/affinescriptiser/src/interface/abi/Foreign.idr @@ -1,5 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 --- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- Copyright (c) Jonathan D.A. Jewell -- ||| Foreign Function Interface Declarations for Affinescriptiser ||| diff --git a/affinescriptiser/src/interface/abi/Layout.idr b/affinescriptiser/src/interface/abi/Layout.idr index aabdb621..6a7af902 100644 --- a/affinescriptiser/src/interface/abi/Layout.idr +++ b/affinescriptiser/src/interface/abi/Layout.idr @@ -1,5 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 --- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- Copyright (c) Jonathan D.A. Jewell -- ||| WASM Memory Layout Proofs for Affinescriptiser ||| diff --git a/affinescriptiser/src/interface/abi/README.adoc b/affinescriptiser/src/interface/abi/README.adoc index 2330304d..46743d76 100644 --- a/affinescriptiser/src/interface/abi/README.adoc +++ b/affinescriptiser/src/interface/abi/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = abi Logic diff --git a/affinescriptiser/src/interface/abi/Types.idr b/affinescriptiser/src/interface/abi/Types.idr index ce1bf98a..f447b25f 100644 --- a/affinescriptiser/src/interface/abi/Types.idr +++ b/affinescriptiser/src/interface/abi/Types.idr @@ -1,5 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 --- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- Copyright (c) Jonathan D.A. Jewell -- ||| ABI Type Definitions for Affinescriptiser ||| diff --git a/affinescriptiser/src/interface/ffi/README.adoc b/affinescriptiser/src/interface/ffi/README.adoc index 8fe57d34..b402d644 100644 --- a/affinescriptiser/src/interface/ffi/README.adoc +++ b/affinescriptiser/src/interface/ffi/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = ffi Logic diff --git a/affinescriptiser/src/interface/ffi/build.zig b/affinescriptiser/src/interface/ffi/build.zig index 6ec12953..3173289d 100644 --- a/affinescriptiser/src/interface/ffi/build.zig +++ b/affinescriptiser/src/interface/ffi/build.zig @@ -1,6 +1,6 @@ -// Affinescriptiser FFI Build Configuration // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell +// Affinescriptiser FFI Build Configuration const std = @import("std"); diff --git a/affinescriptiser/src/interface/ffi/src/README.adoc b/affinescriptiser/src/interface/ffi/src/README.adoc index a5c0c6d5..4228438a 100644 --- a/affinescriptiser/src/interface/ffi/src/README.adoc +++ b/affinescriptiser/src/interface/ffi/src/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Src Logic diff --git a/affinescriptiser/src/interface/ffi/src/main.zig b/affinescriptiser/src/interface/ffi/src/main.zig index f35c7add..6de97f12 100644 --- a/affinescriptiser/src/interface/ffi/src/main.zig +++ b/affinescriptiser/src/interface/ffi/src/main.zig @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // Affinescriptiser FFI Implementation // // This module implements the C-compatible FFI declared in src/interface/abi/Foreign.idr. @@ -6,8 +8,6 @@ // // All types and layouts must match the Idris2 ABI definitions in Types.idr and Layout.idr. // -// SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) const std = @import("std"); diff --git a/affinescriptiser/src/interface/ffi/test/README.adoc b/affinescriptiser/src/interface/ffi/test/README.adoc index f6f38bf6..cdbb47d2 100644 --- a/affinescriptiser/src/interface/ffi/test/README.adoc +++ b/affinescriptiser/src/interface/ffi/test/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Test Logic diff --git a/affinescriptiser/src/interface/ffi/test/integration_test.zig b/affinescriptiser/src/interface/ffi/test/integration_test.zig index 80766a37..6479a12d 100644 --- a/affinescriptiser/src/interface/ffi/test/integration_test.zig +++ b/affinescriptiser/src/interface/ffi/test/integration_test.zig @@ -1,6 +1,6 @@ -// Affinescriptiser Integration Tests // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell +// Affinescriptiser Integration Tests // // These tests verify that the Zig FFI correctly implements the Idris2 ABI // defined in src/interface/abi/{Types,Layout,Foreign}.idr diff --git a/affinescriptiser/src/interface/generated/README.adoc b/affinescriptiser/src/interface/generated/README.adoc index 3691b062..93daef2f 100644 --- a/affinescriptiser/src/interface/generated/README.adoc +++ b/affinescriptiser/src/interface/generated/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = generated Logic diff --git a/affinescriptiser/src/interface/generated/abi/README.adoc b/affinescriptiser/src/interface/generated/abi/README.adoc index aff61a99..0e29b69b 100644 --- a/affinescriptiser/src/interface/generated/abi/README.adoc +++ b/affinescriptiser/src/interface/generated/abi/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Abi Logic diff --git a/affinescriptiser/src/lib.rs b/affinescriptiser/src/lib.rs index 7710ce2b..29ecd061 100644 --- a/affinescriptiser/src/lib.rs +++ b/affinescriptiser/src/lib.rs @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell #![forbid(unsafe_code)] #![allow( dead_code, @@ -6,8 +8,6 @@ clippy::if_same_then_else, clippy::vec_init_then_push )] -// SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell // // affinescriptiser library — Public API for embedding affinescriptiser's analysis and // codegen pipeline into other tools. Re-exports the core modules (ABI types, manifest diff --git a/affinescriptiser/src/main.rs b/affinescriptiser/src/main.rs index eb840b81..85b983e2 100644 --- a/affinescriptiser/src/main.rs +++ b/affinescriptiser/src/main.rs @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell #![allow( dead_code, clippy::too_many_arguments, @@ -6,8 +8,6 @@ clippy::vec_init_then_push )] #![forbid(unsafe_code)] -// SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell // // affinescriptiser CLI — Wrap existing code in affine + dependent types targeting WASM // via AffineScript. Analyses source code (Rust, C, Zig) to identify resource handles, diff --git a/affinescriptiser/src/manifest/mod.rs b/affinescriptiser/src/manifest/mod.rs index 288820a9..c78f4a99 100644 --- a/affinescriptiser/src/manifest/mod.rs +++ b/affinescriptiser/src/manifest/mod.rs @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell +// Copyright (c) Jonathan D.A. Jewell // // Manifest module for affinescriptiser — Parses and validates the affinescriptiser.toml manifest, // which declares source files, tracked resources (with affinity discipline), and WASM compilation diff --git a/affinescriptiser/tests/integration_tests.rs b/affinescriptiser/tests/integration_tests.rs index c386456f..5ca54d6b 100644 --- a/affinescriptiser/tests/integration_tests.rs +++ b/affinescriptiser/tests/integration_tests.rs @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell +// Copyright (c) Jonathan D.A. Jewell // // Integration tests for affinescriptiser — Validates the full pipeline from manifest parsing // through source analysis, AffineScript codegen, and WASM output generation. diff --git a/affinescriptiser/verification/README.adoc b/affinescriptiser/verification/README.adoc index f07e7f34..efa7fb2f 100644 --- a/affinescriptiser/verification/README.adoc +++ b/affinescriptiser/verification/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Verification Pillar diff --git a/affinescriptiser/verification/benchmarks/README.adoc b/affinescriptiser/verification/benchmarks/README.adoc index 5db76486..beb83cde 100644 --- a/affinescriptiser/verification/benchmarks/README.adoc +++ b/affinescriptiser/verification/benchmarks/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Benchmarks Unit diff --git a/affinescriptiser/verification/coverage/README.adoc b/affinescriptiser/verification/coverage/README.adoc index 25669569..c10a6ace 100644 --- a/affinescriptiser/verification/coverage/README.adoc +++ b/affinescriptiser/verification/coverage/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Coverage Unit diff --git a/affinescriptiser/verification/fuzzing/README.adoc b/affinescriptiser/verification/fuzzing/README.adoc index edeb1792..b07ea68c 100644 --- a/affinescriptiser/verification/fuzzing/README.adoc +++ b/affinescriptiser/verification/fuzzing/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Fuzzing Unit diff --git a/affinescriptiser/verification/proofs/README.adoc b/affinescriptiser/verification/proofs/README.adoc index 1ae324d0..bc50bdf4 100644 --- a/affinescriptiser/verification/proofs/README.adoc +++ b/affinescriptiser/verification/proofs/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Proofs Unit diff --git a/affinescriptiser/verification/safety_case/README.adoc b/affinescriptiser/verification/safety_case/README.adoc index 47c8e368..ffb53bdc 100644 --- a/affinescriptiser/verification/safety_case/README.adoc +++ b/affinescriptiser/verification/safety_case/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Safety case Unit diff --git a/affinescriptiser/verification/simulations/README.adoc b/affinescriptiser/verification/simulations/README.adoc index 8e1b13aa..42e184c2 100644 --- a/affinescriptiser/verification/simulations/README.adoc +++ b/affinescriptiser/verification/simulations/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Simulations Unit diff --git a/affinescriptiser/verification/tests/README.adoc b/affinescriptiser/verification/tests/README.adoc index 344bf862..39309816 100644 --- a/affinescriptiser/verification/tests/README.adoc +++ b/affinescriptiser/verification/tests/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Tests Unit diff --git a/affinescriptiser/verification/traceability/README.adoc b/affinescriptiser/verification/traceability/README.adoc index ff23dd75..e6e54bc6 100644 --- a/affinescriptiser/verification/traceability/README.adoc +++ b/affinescriptiser/verification/traceability/README.adoc @@ -1 +1,3 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Traceability Unit diff --git a/ai-cli-crash-capture/README.adoc b/ai-cli-crash-capture/README.adoc index 2fcda87b..689b1587 100644 --- a/ai-cli-crash-capture/README.adoc +++ b/ai-cli-crash-capture/README.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AI CLI Crash Capture :revdate: 2026-01-17 diff --git a/conformance/README.md b/conformance/README.md index 167eb033..73e23480 100644 --- a/conformance/README.md +++ b/conformance/README.md @@ -1,3 +1,7 @@ + # AffineScript Conformance Test Suite This directory contains the conformance test corpus for AffineScript. diff --git a/distributions/rattlescript/README.adoc b/distributions/rattlescript/README.adoc index 85f038bb..bf5a330b 100644 --- a/distributions/rattlescript/README.adoc +++ b/distributions/rattlescript/README.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2026 Jonathan D.A. Jewell (hyperpolymath) = RattleScript :toc: diff --git a/distributions/rattlescript/build.rs b/distributions/rattlescript/build.rs index 5c6d3952..8aa9387c 100644 --- a/distributions/rattlescript/build.rs +++ b/distributions/rattlescript/build.rs @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2026 Jonathan D.A. Jewell (hyperpolymath) //! build.rs — detect or require the `affinescript` binary path. diff --git a/distributions/rattlescript/src/main.rs b/distributions/rattlescript/src/main.rs index f7ce11fd..1c8fa92a 100644 --- a/distributions/rattlescript/src/main.rs +++ b/distributions/rattlescript/src/main.rs @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2026 Jonathan D.A. Jewell (hyperpolymath) //! RattleScript CLI — thin distribution wrapper around AffineScript with diff --git a/docs/ALIB-INTEGRATION.md b/docs/ALIB-INTEGRATION.md index aca1b875..aa1f068a 100644 --- a/docs/ALIB-INTEGRATION.md +++ b/docs/ALIB-INTEGRATION.md @@ -1,3 +1,7 @@ + # AffineScript ↔ aggregate-library Integration Strategy **Date:** 2026-01-23 diff --git a/docs/CAPABILITY-MATRIX.adoc b/docs/CAPABILITY-MATRIX.adoc index dcc0cc04..52c931d2 100644 --- a/docs/CAPABILITY-MATRIX.adoc +++ b/docs/CAPABILITY-MATRIX.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2026 hyperpolymath = AffineScript Capability Matrix :toc: macro diff --git a/docs/CITATIONS.adoc b/docs/CITATIONS.adoc index 564f0ae8..52ba5285 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 = RSR-template-repo - Citation Guide :toc: @@ -10,7 +12,7 @@ title = {RSR-template-repo}, year = {2025}, url = {https://github.com/hyperpolymath/RSR-template-repo}, - license = {AGPL-3.0-or-later} + license = {MPL-2.0} } ---- diff --git a/docs/DESIGN-VISION.adoc b/docs/DESIGN-VISION.adoc index 0d0e5432..9df8139a 100644 --- a/docs/DESIGN-VISION.adoc +++ b/docs/DESIGN-VISION.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AffineScript: Design Vision Jonathan D.A. Jewell :toc: diff --git a/docs/ECOSYSTEM.adoc b/docs/ECOSYSTEM.adoc index 99d9ff64..a8ac96ca 100644 --- a/docs/ECOSYSTEM.adoc +++ b/docs/ECOSYSTEM.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2026 hyperpolymath = AffineScript Ecosystem, Spine, and the typed-wasm Contract :toc: macro diff --git a/docs/EFFECTS-IMPLEMENTATION.md b/docs/EFFECTS-IMPLEMENTATION.md index 36cc540b..8e4a7b91 100644 --- a/docs/EFFECTS-IMPLEMENTATION.md +++ b/docs/EFFECTS-IMPLEMENTATION.md @@ -1,3 +1,7 @@ + # Effect Handler Implementation ## Status Sync (2026-04-12) diff --git a/docs/EXPLAINME.adoc b/docs/EXPLAINME.adoc index c6a0c043..a14a652f 100644 --- a/docs/EXPLAINME.adoc +++ b/docs/EXPLAINME.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // (MPL-2.0 is the automatic legal fallback until PMPL is formally recognised) = AffineScript — Show Me The Receipts :toc: diff --git a/docs/KNOWN-ISSUES.md b/docs/KNOWN-ISSUES.md index c6d04ed6..4dce5fee 100644 --- a/docs/KNOWN-ISSUES.md +++ b/docs/KNOWN-ISSUES.md @@ -1,4 +1,7 @@ - + # Known AffineScript codegen issues Minimal reproducers for codegen bugs discovered while using AffineScript diff --git a/docs/MIGRATION-ASSISTANT.adoc b/docs/MIGRATION-ASSISTANT.adoc index e53e2997..fa90b6b9 100644 --- a/docs/MIGRATION-ASSISTANT.adoc +++ b/docs/MIGRATION-ASSISTANT.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell = ReScript → AffineScript migration assistant — architectural decision :toc: macro diff --git a/docs/NAVIGATION.adoc b/docs/NAVIGATION.adoc index cf61dc78..aafd17cb 100644 --- a/docs/NAVIGATION.adoc +++ b/docs/NAVIGATION.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2026 Hyperpolymath Contributors = AffineScript Repository Navigation Guide diff --git a/docs/PACKAGING.adoc b/docs/PACKAGING.adoc index d9ee8b5c..a3cf15bf 100644 --- a/docs/PACKAGING.adoc +++ b/docs/PACKAGING.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 hyperpolymath = AffineScript Packaging & Distribution (INT-04) :toc: macro diff --git a/docs/PROOF-NEEDS.md b/docs/PROOF-NEEDS.md index 89503202..566ed20b 100644 --- a/docs/PROOF-NEEDS.md +++ b/docs/PROOF-NEEDS.md @@ -1,3 +1,7 @@ + # PROOF-NEEDS.md ## Template ABI Cleanup (2026-03-29) diff --git a/docs/README.adoc b/docs/README.adoc index 04e777b7..bcb49c69 100644 --- a/docs/README.adoc +++ b/docs/README.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2026 Hyperpolymath Contributors = AffineScript Documentation Directory diff --git a/docs/RESCRIPT-ELIMINATION.adoc b/docs/RESCRIPT-ELIMINATION.adoc index 3d510f2e..e5be14d5 100644 --- a/docs/RESCRIPT-ELIMINATION.adoc +++ b/docs/RESCRIPT-ELIMINATION.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2026 hyperpolymath = Estate ReScript-surface elimination — authoritative ledger (issue #229) :toc: macro diff --git a/docs/ROADMAP.adoc b/docs/ROADMAP.adoc index 4b922afc..7288d3bf 100644 --- a/docs/ROADMAP.adoc +++ b/docs/ROADMAP.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AffineScript Development Roadmap :toc: macro diff --git a/docs/STATE-2026-05-26.adoc b/docs/STATE-2026-05-26.adoc index 1626cb2a..40da022a 100644 --- a/docs/STATE-2026-05-26.adoc +++ b/docs/STATE-2026-05-26.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2026 hyperpolymath = AffineScript State Snapshot — 2026-05-26 :toc: macro @@ -205,7 +206,7 @@ After today's admin-merge sweep, the remaining open PRs are largely: * Reusable-wrapper CI conversions (#387 secret-scanner, #386 mirror, #390 scorecard, etc.) * Ongoing parser/codegen work (#357 Phase 2c walker integration, #385 res-to-affine walker parity, #380 vscode-adapter embed, #388 codegen record-type-alias registry, #389 CHANGELOG seed) -* The `claude/mpl-2-0-migration` (#384) license sweep (note: target is now AGPL-3.0-or-later — *check this is actually intended*; the standing estate policy in CLAUDE.md says MPL-2.0) +* The `claude/mpl-2-0-migration` (#384) license sweep (note: target is now MPL-2.0 — *check this is actually intended*; the standing estate policy in CLAUDE.md says MPL-2.0) == Recent velocity (2026-05-24..26) diff --git a/docs/STDLIB-EXTERN-AUDIT.adoc b/docs/STDLIB-EXTERN-AUDIT.adoc index eac8ca1b..460ee033 100644 --- a/docs/STDLIB-EXTERN-AUDIT.adoc +++ b/docs/STDLIB-EXTERN-AUDIT.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 hyperpolymath = Stdlib `extern` Audit (STDLIB-04) :toc: macro diff --git a/docs/TECH-DEBT.adoc b/docs/TECH-DEBT.adoc index 78a6768e..a43e7bbd 100644 --- a/docs/TECH-DEBT.adoc +++ b/docs/TECH-DEBT.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2026 hyperpolymath = AffineScript Coordination Ledger (TECH-DEBT) :toc: macro diff --git a/docs/academic/README.md b/docs/academic/README.md index 42a767e6..25bcd449 100644 --- a/docs/academic/README.md +++ b/docs/academic/README.md @@ -1,3 +1,7 @@ + # AffineScript Academic Documentation This directory contains formal academic documentation for the AffineScript programming language, including proofs, specifications, white papers, and mechanized verification. diff --git a/docs/academic/formal-verification/axiomatic-semantics.md b/docs/academic/formal-verification/axiomatic-semantics.md index 2d6e4e47..6537dd2e 100644 --- a/docs/academic/formal-verification/axiomatic-semantics.md +++ b/docs/academic/formal-verification/axiomatic-semantics.md @@ -1,3 +1,7 @@ + # Axiomatic Semantics: Program Logic for AffineScript **Document Version**: 1.0 diff --git a/docs/academic/formal-verification/denotational-semantics.md b/docs/academic/formal-verification/denotational-semantics.md index 441fe4ec..40235c20 100644 --- a/docs/academic/formal-verification/denotational-semantics.md +++ b/docs/academic/formal-verification/denotational-semantics.md @@ -1,3 +1,7 @@ + # Denotational Semantics of AffineScript **Document Version**: 1.0 diff --git a/docs/academic/formal-verification/operational-semantics.md b/docs/academic/formal-verification/operational-semantics.md index 1563b2f5..53696b1d 100644 --- a/docs/academic/formal-verification/operational-semantics.md +++ b/docs/academic/formal-verification/operational-semantics.md @@ -1,3 +1,7 @@ + # Operational Semantics of AffineScript **Document Version**: 1.0 diff --git a/docs/academic/formal-verification/solo-core/Context.idr b/docs/academic/formal-verification/solo-core/Context.idr index 191637b3..387d6047 100644 --- a/docs/academic/formal-verification/solo-core/Context.idr +++ b/docs/academic/formal-verification/solo-core/Context.idr @@ -1,4 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) Jonathan D.A. Jewell -- SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell -- -- QTT-style typing contexts for the Solo core. diff --git a/docs/academic/formal-verification/solo-core/Quantity.idr b/docs/academic/formal-verification/solo-core/Quantity.idr index c0b733c1..adf6082e 100644 --- a/docs/academic/formal-verification/solo-core/Quantity.idr +++ b/docs/academic/formal-verification/solo-core/Quantity.idr @@ -1,4 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) Jonathan D.A. Jewell -- SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell -- -- Quantity semiring for the AffineScript Solo core. diff --git a/docs/academic/formal-verification/solo-core/README.adoc b/docs/academic/formal-verification/solo-core/README.adoc index 6d18d1fc..f7863529 100644 --- a/docs/academic/formal-verification/solo-core/README.adoc +++ b/docs/academic/formal-verification/solo-core/README.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell = Solo Core — Idris2 Mechanization diff --git a/docs/academic/formal-verification/solo-core/Soundness.idr b/docs/academic/formal-verification/solo-core/Soundness.idr index 112272ab..73b9619b 100644 --- a/docs/academic/formal-verification/solo-core/Soundness.idr +++ b/docs/academic/formal-verification/solo-core/Soundness.idr @@ -1,4 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) Jonathan D.A. Jewell -- SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell -- -- Statements of the soundness theorems for the Solo core. diff --git a/docs/academic/formal-verification/solo-core/Syntax.idr b/docs/academic/formal-verification/solo-core/Syntax.idr index 701cefce..c8d5233e 100644 --- a/docs/academic/formal-verification/solo-core/Syntax.idr +++ b/docs/academic/formal-verification/solo-core/Syntax.idr @@ -1,4 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) Jonathan D.A. Jewell -- SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell -- -- Syntax of the Solo core of AffineScript. diff --git a/docs/academic/formal-verification/solo-core/Typing.idr b/docs/academic/formal-verification/solo-core/Typing.idr index 5aa9036a..10b71e1f 100644 --- a/docs/academic/formal-verification/solo-core/Typing.idr +++ b/docs/academic/formal-verification/solo-core/Typing.idr @@ -1,4 +1,5 @@ -- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) Jonathan D.A. Jewell -- SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell -- -- QTT typing judgement for the Solo core. diff --git a/docs/academic/mathematical-foundations/categorical-semantics.md b/docs/academic/mathematical-foundations/categorical-semantics.md index 6fc46663..dd5792f2 100644 --- a/docs/academic/mathematical-foundations/categorical-semantics.md +++ b/docs/academic/mathematical-foundations/categorical-semantics.md @@ -1,3 +1,7 @@ + # Categorical Semantics of AffineScript **Document Version**: 1.0 diff --git a/docs/academic/mathematical-foundations/complexity-analysis.md b/docs/academic/mathematical-foundations/complexity-analysis.md index 643138bb..205ff7df 100644 --- a/docs/academic/mathematical-foundations/complexity-analysis.md +++ b/docs/academic/mathematical-foundations/complexity-analysis.md @@ -1,3 +1,7 @@ + # Complexity and Decidability Analysis **Document Version**: 1.0 diff --git a/docs/academic/mathematical-foundations/logic-foundations.md b/docs/academic/mathematical-foundations/logic-foundations.md index 8ee07963..4843bd98 100644 --- a/docs/academic/mathematical-foundations/logic-foundations.md +++ b/docs/academic/mathematical-foundations/logic-foundations.md @@ -1,3 +1,7 @@ + # Logic Foundations of AffineScript **Document Version**: 1.0 diff --git a/docs/academic/mechanized/agda/README.md b/docs/academic/mechanized/agda/README.md index fbd97f13..9d112beb 100644 --- a/docs/academic/mechanized/agda/README.md +++ b/docs/academic/mechanized/agda/README.md @@ -1,3 +1,7 @@ + # AffineScript Agda Formalization **Status**: Stub / Planned diff --git a/docs/academic/mechanized/coq/README.md b/docs/academic/mechanized/coq/README.md index fc9f1fe4..33d0dc26 100644 --- a/docs/academic/mechanized/coq/README.md +++ b/docs/academic/mechanized/coq/README.md @@ -1,3 +1,7 @@ + # AffineScript Coq Formalization **Status**: Stub / Planned diff --git a/docs/academic/mechanized/lean/README.md b/docs/academic/mechanized/lean/README.md index 19ec6b42..5dd2c773 100644 --- a/docs/academic/mechanized/lean/README.md +++ b/docs/academic/mechanized/lean/README.md @@ -1,3 +1,7 @@ + # AffineScript Lean 4 Formalization **Status**: Stub / Planned diff --git a/docs/academic/proofs/coherence-parametricity.md b/docs/academic/proofs/coherence-parametricity.md index 0ce7d46f..f66f155a 100644 --- a/docs/academic/proofs/coherence-parametricity.md +++ b/docs/academic/proofs/coherence-parametricity.md @@ -1,3 +1,7 @@ + # Coherence and Parametricity Theorems **Document Version**: 1.0 diff --git a/docs/academic/proofs/dependent-types.md b/docs/academic/proofs/dependent-types.md index 79392767..d069ef6d 100644 --- a/docs/academic/proofs/dependent-types.md +++ b/docs/academic/proofs/dependent-types.md @@ -1,3 +1,7 @@ + # Dependent Types and Refinement Types: Complete Formalization **Document Version**: 1.0 diff --git a/docs/academic/proofs/effect-soundness.md b/docs/academic/proofs/effect-soundness.md index 356c2fcb..b3c419cb 100644 --- a/docs/academic/proofs/effect-soundness.md +++ b/docs/academic/proofs/effect-soundness.md @@ -1,3 +1,7 @@ + # Algebraic Effects: Formal Semantics and Soundness **Document Version**: 1.0 diff --git a/docs/academic/proofs/inference-algorithm.md b/docs/academic/proofs/inference-algorithm.md index c3025fc2..b53accf3 100644 --- a/docs/academic/proofs/inference-algorithm.md +++ b/docs/academic/proofs/inference-algorithm.md @@ -1,3 +1,7 @@ + # Type Inference Algorithm Specification **Document Version**: 1.0 diff --git a/docs/academic/proofs/ownership-soundness.md b/docs/academic/proofs/ownership-soundness.md index 6fface0d..7818e14a 100644 --- a/docs/academic/proofs/ownership-soundness.md +++ b/docs/academic/proofs/ownership-soundness.md @@ -1,3 +1,7 @@ + # Ownership System: Formal Verification **Document Version**: 1.0 diff --git a/docs/academic/proofs/quantitative-types.md b/docs/academic/proofs/quantitative-types.md index 00bcd761..cda69c96 100644 --- a/docs/academic/proofs/quantitative-types.md +++ b/docs/academic/proofs/quantitative-types.md @@ -1,3 +1,7 @@ + # Quantitative Type Theory in AffineScript **Document Version**: 1.0 diff --git a/docs/academic/proofs/row-polymorphism.md b/docs/academic/proofs/row-polymorphism.md index 4ddfc3ee..5dc45388 100644 --- a/docs/academic/proofs/row-polymorphism.md +++ b/docs/academic/proofs/row-polymorphism.md @@ -1,3 +1,7 @@ + # Row Polymorphism: Complete Formalization **Document Version**: 1.0 diff --git a/docs/academic/proofs/type-soundness.md b/docs/academic/proofs/type-soundness.md index 7f448830..8f4e9eb4 100644 --- a/docs/academic/proofs/type-soundness.md +++ b/docs/academic/proofs/type-soundness.md @@ -1,3 +1,7 @@ + # Type System Soundness **Document Version**: 1.0 diff --git a/docs/academic/tropical-session-types/tropical-unification-2026-04-04.md b/docs/academic/tropical-session-types/tropical-unification-2026-04-04.md index 938eb63e..70c9fff8 100644 --- a/docs/academic/tropical-session-types/tropical-unification-2026-04-04.md +++ b/docs/academic/tropical-session-types/tropical-unification-2026-04-04.md @@ -1,3 +1,7 @@ + # TROPICO: The Unified Theory of Resource-Bounded Truth **Date**: 2026-04-04 **Status**: High-Assurance Consensus (Harrison 12:00) diff --git a/docs/academic/white-papers/language-design.md b/docs/academic/white-papers/language-design.md index 6a94fbb5..d6ca48fc 100644 --- a/docs/academic/white-papers/language-design.md +++ b/docs/academic/white-papers/language-design.md @@ -1,3 +1,7 @@ + # AffineScript: A Quantitative Dependently-Typed Language with Algebraic Effects **Technical Report / White Paper** diff --git a/docs/alib-roadmap.adoc b/docs/alib-roadmap.adoc index bac435fc..b9c0979a 100644 --- a/docs/alib-roadmap.adoc +++ b/docs/alib-roadmap.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AffineScript ↔ aLib Conformance & Contribution Roadmap :toc: macro :toclevels: 3 diff --git a/docs/alib/README.md b/docs/alib/README.md index e3809b56..accc5fa8 100644 --- a/docs/alib/README.md +++ b/docs/alib/README.md @@ -1,3 +1,7 @@ + # AffineScript ↔ aLib Integration This directory contains documentation and tools for integrating AffineScript with the **aggregate-library (aLib)** methodology. @@ -147,4 +151,4 @@ fn filter(arr: [T], pred: &T -> Bool) -> [T] { ## License -PMPL-1.0 (following AffineScript project license) +MPL-2.0 (following AffineScript project license) diff --git a/docs/architecture/BACKEND-ANALYSIS.md b/docs/architecture/BACKEND-ANALYSIS.md index 52bbade6..a2befd1e 100644 --- a/docs/architecture/BACKEND-ANALYSIS.md +++ b/docs/architecture/BACKEND-ANALYSIS.md @@ -1,3 +1,7 @@ + # AffineScript Backend Analysis: Coprocessor Support ## Executive Summary diff --git a/docs/architecture/BACKEND-IMPLEMENTATION.md b/docs/architecture/BACKEND-IMPLEMENTATION.md index 0eca18a9..5c443766 100644 --- a/docs/architecture/BACKEND-IMPLEMENTATION.md +++ b/docs/architecture/BACKEND-IMPLEMENTATION.md @@ -1,3 +1,7 @@ + # AffineScript Backend Implementation > **⚠️ AUTHORITATIVE STATUS:** Backend maturity is uneven and is defined by diff --git a/docs/bindings-roadmap.adoc b/docs/bindings-roadmap.adoc index a63eef52..745d18e2 100644 --- a/docs/bindings-roadmap.adoc +++ b/docs/bindings-roadmap.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AffineScript Framework Bindings Roadmap :toc: macro :toclevels: 3 @@ -51,7 +53,7 @@ no further significant ReScript → AffineScript work is tractable. |*PixiJS core* (Application, Container, Sprite, Graphics, Text, Ticker, FederatedEvent) |`◑` partial (Application / Container / Sprite / Graphics / Text / Texture / Ticker landed; Container 8.x transform-and-event surface — scale / pivot / rotation / alpha / zIndex / sortableChildren / eventMode / cursor + on/off pointer-event registration + Sprite anchor — landed; opaque `FederatedPointerEvent` Json accessors + `parent` read accessor + Point/Rectangle/Circle helper types + sprite atlases + filters + hitArea deferred) |`stdlib/Pixi.affine` (eventual home: `affinescript-pixijs` as a separate repo per the SNIFs/typed-wasm precedent) -|idaptik `src/bindings/Pixi.res`; all 215 `src/app/*.res` files depend on this. Restarted 2026-05-28 — the prior `affinescript-pixijs/` directory used the obsolete `.as` extension + AGPL-3.0-or-later headers + a Zig→C→WASM-import architecture incompatible with the Deno-ESM emitter; it was deleted and the surface rebuilt in `stdlib/Pixi.affine` matching the wasmCall / motion pattern. Container accessor + on/off expansion landed 2026-05-31. Test fixture: `tests/codegen-deno/pixi_smoke.{affine,harness.mjs}` exercises every shipped extern, including `smokeAccessorsFlow` over the 11-extern 8.x transform-and-event addition. Follow-ups: typed `FederatedPointerEvent` accessors (read global/client x,y; target; stopPropagation); `parent` read accessor with Option-null handling; Point/Rectangle/Circle helper types; sprite atlases; filters; hitArea. +|idaptik `src/bindings/Pixi.res`; all 215 `src/app/*.res` files depend on this. Restarted 2026-05-28 — the prior `affinescript-pixijs/` directory used the obsolete `.as` extension + MPL-2.0 headers + a Zig→C→WASM-import architecture incompatible with the Deno-ESM emitter; it was deleted and the surface rebuilt in `stdlib/Pixi.affine` matching the wasmCall / motion pattern. Container accessor + on/off expansion landed 2026-05-31. Test fixture: `tests/codegen-deno/pixi_smoke.{affine,harness.mjs}` exercises every shipped extern, including `smokeAccessorsFlow` over the 11-extern 8.x transform-and-event addition. Follow-ups: typed `FederatedPointerEvent` accessors (read global/client x,y; target; stopPropagation); `parent` read accessor with Option-null handling; Point/Rectangle/Circle helper types; sprite atlases; filters; hitArea. |2 |*@pixi/sound* (`Sound.from`, play, stop, volume, setVolume, loop) diff --git a/docs/decisions/0019-compiler-distribution.adoc b/docs/decisions/0019-compiler-distribution.adoc index 53ab2401..f1e1f4ce 100644 --- a/docs/decisions/0019-compiler-distribution.adoc +++ b/docs/decisions/0019-compiler-distribution.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 hyperpolymath (Jonathan D.A. Jewell) = ADR-019: Compiler distribution — GitHub Releases binaries + thin Deno/JSR shim Jonathan D.A. Jewell diff --git a/docs/decisions/0022-polonius-origin-variables.adoc b/docs/decisions/0022-polonius-origin-variables.adoc index ab48e79e..2d793d58 100644 --- a/docs/decisions/0022-polonius-origin-variables.adoc +++ b/docs/decisions/0022-polonius-origin-variables.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 hyperpolymath (Jonathan D.A. Jewell) = ADR-022: Origin (region) variables and a Polonius-style loan solver for the borrow checker Jonathan D.A. Jewell diff --git a/docs/governance/CODE_OF_CONDUCT.md b/docs/governance/CODE_OF_CONDUCT.md index 1f1548ca..9020def2 100644 --- a/docs/governance/CODE_OF_CONDUCT.md +++ b/docs/governance/CODE_OF_CONDUCT.md @@ -1,4 +1,7 @@ - + # Contributor Covenant Code of Conduct ## Our Pledge diff --git a/docs/governance/CONTRIBUTING.adoc b/docs/governance/CONTRIBUTING.adoc index 1f34e602..2ead10c3 100644 --- a/docs/governance/CONTRIBUTING.adoc +++ b/docs/governance/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/docs/governance/LICENSING-GUIDE.md b/docs/governance/LICENSING-GUIDE.md index 9c28d0a4..75d08fbc 100644 --- a/docs/governance/LICENSING-GUIDE.md +++ b/docs/governance/LICENSING-GUIDE.md @@ -1,3 +1,7 @@ + # AffineScript Licensing Guide ## 📜 Comprehensive Licensing Information @@ -8,7 +12,7 @@ This document clarifies the licensing structure for the AffineScript ecosystem, ## 🏷️ Three-Tier Licensing Structure -### 1. **Game Content (AGPL-3.0-or-later)** +### 1. **Game Content (MPL-2.0)** **Applies to:** All game-specific assets, levels, scripts, and modifications **Purpose:** Ensure game modifications remain open source and accessible to the community @@ -68,9 +72,9 @@ This document clarifies the licensing structure for the AffineScript ecosystem, ```mermaid graph TD - A[Game Content] -->|AGPL-3.0-or-later| B[Open Source Game] + A[Game Content] -->|MPL-2.0| B[Open Source Game] C[Core Technology] -->|MPL-2.0| D[AffineScript Compiler] - E[Foundational Tech] -->|PMPL-1.0/MPL-2.0| F[Gossamer/Burble] + E[Foundational Tech] -->|MPL-2.0/MPL-2.0| F[Gossamer/Burble] B -->|Uses| D B -->|Uses| F @@ -81,7 +85,7 @@ graph TD ## 📋 Detailed License Breakdown -### AGPL-3.0-or-later (Game Content) +### MPL-2.0 (Game Content) **Full Name:** GNU Affero General Public License version 3.0 or later @@ -99,11 +103,11 @@ graph TD **File Header:** ```affinescript -// SPDX-License-Identifier: AGPL-3.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell // // This file is part of the AffineScript Game -// Licensed under AGPL-3.0-or-later +// Licensed under MPL-2.0 ``` --- @@ -144,7 +148,7 @@ graph TD --- -### PMPL-1.0 / MPL-2.0-derived (Foundational Technologies) +### MPL-2.0 / MPL-2.0-derived (Foundational Technologies) **Full Name:** Palimpsest Mutual Public License 1.0 (based on MPL-2.0) @@ -173,7 +177,7 @@ graph TD // SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell // // This file is part of Gossamer/Burble Foundational Technologies -// Licensed under PMPL-1.0 (Palimpsest-MPL) based on MPL-2.0 +// Licensed under MPL-2.0 (MPL-2.0) based on MPL-2.0 // Complete license: https://github.com/hyperpolymath/palimpsest-license ``` @@ -185,7 +189,7 @@ graph TD **Short Version (GitHub):** ``` -AffineScript: The game developer's secret weapon. AGPL-3.0 game content with PMPL-1.0 core technology. Compiles to WASM with compiler-proven correctness. Built on Gossamer (PMPL) and Burble (PMPL) foundations. +AffineScript: The game developer's secret weapon. AGPL-3.0 game content with MPL-2.0 core technology. Compiles to WASM with compiler-proven correctness. Built on Gossamer (PMPL) and Burble (PMPL) foundations. ``` **Long Version (README):** @@ -194,7 +198,7 @@ AffineScript: The game developer's secret weapon. AGPL-3.0 game content with PMP **AffineScript** is a revolutionary game development platform featuring: -🎮 **Game Content** (AGPL-3.0-or-later) +🎮 **Game Content** (MPL-2.0) - Open source game assets and modifications - Community-driven development - Ensured accessibility for all players @@ -205,7 +209,7 @@ AffineScript: The game developer's secret weapon. AGPL-3.0 game content with PMP - WebAssembly compilation - Permissive tooling license -🛡️ **Foundational Technologies** (PMPL-1.0/MPL-2.0) +🛡️ **Foundational Technologies** (MPL-2.0/MPL-2.0) - **Gossamer**: Linearly-typed webview shell - **Burble**: High-assurance multiplayer communications - Ethical use requirements @@ -234,9 +238,9 @@ quantum-safe, provenance, linear-types, resource-safety **Content Tags:** - `game-content` (AGPL-3.0 content) -- `compiler` (PMPL-1.0 technology) -- `gossamer` (PMPL-1.0 foundation) -- `burble` (PMPL-1.0 foundation) +- `compiler` (MPL-2.0 technology) +- `gossamer` (MPL-2.0 foundation) +- `burble` (MPL-2.0 foundation) --- @@ -244,9 +248,9 @@ quantum-safe, provenance, linear-types, resource-safety ``` LICENSES/ -├── LICENSE # PMPL-1.0 (Primary) +├── LICENSE # MPL-2.0 (Primary) ├── LICENSE-AGPL-3.0 # AGPL-3.0 (Game Content) -├── LICENSE-PMPL-1.0 # PMPL-1.0 (Core Tech) +├── LICENSE-MPL-2.0 # MPL-2.0 (Core Tech) ├── LICENSE-MPL-2.0 # MPL-2.0 (Reference) ├── EXHIBIT-A-ETHICAL-USE.txt # Ethical guidelines ├── EXHIBIT-B-QUANTUM-SAFE.txt # Quantum-safe specs @@ -392,14 +396,14 @@ fn is_terminal() -> bool { ### For Game Distributors - [ ] Include LICENSE-AGPL-3.0 file -- [ ] Include LICENSE-PMPL-1.0 file +- [ ] Include LICENSE-MPL-2.0 file - [ ] Provide source code access (AGPL requirement) - [ ] Document modifications (AGPL requirement) - [ ] Preserve copyright notices - [ ] Include license guide ### For Technology Users -- [ ] Include LICENSE-PMPL-1.0 file +- [ ] Include LICENSE-MPL-2.0 file - [ ] Preserve copyright notices - [ ] Document modifications - [ ] Follow ethical use guidelines @@ -418,12 +422,12 @@ fn is_terminal() -> bool { ### Full License Texts - **AGPL-3.0:** https://www.gnu.org/licenses/agpl-3.0.html -- **PMPL-1.0:** https://github.com/hyperpolymath/palimpsest-license +- **MPL-2.0:** https://github.com/hyperpolymath/palimpsest-license - **MPL-2.0:** https://www.mozilla.org/en-US/MPL/2.0/ ### License Identification -- **SPDX AGPL-3.0:** `AGPL-3.0-or-later` -- **SPDX PMPL-1.0:** `MPL-2.0` +- **SPDX AGPL-3.0:** `MPL-2.0` +- **SPDX MPL-2.0:** `MPL-2.0` - **SPDX MPL-2.0:** `MPL-2.0` ### Compliance Tools @@ -438,13 +442,13 @@ fn is_terminal() -> bool { ### Licensing Structure ``` Game Content (AGPL-3.0) → Open game development -Core Technology (PMPL-1.0) → Permissive tooling +Core Technology (MPL-2.0) → Permissive tooling Foundational Tech (PMPL/MPL-2.0) → Ethical infrastructure ``` ### Key Points 1. **Dual licensing** ensures open games with permissive tools -2. **PMPL-1.0** extends MPL-2.0 with ethical use requirements +2. **MPL-2.0** extends MPL-2.0 with ethical use requirements 3. **AGPL-3.0** ensures game modifications remain open 4. **All licenses** are OSI-approved and compatible 5. **Clear separation** between game content and technology @@ -462,5 +466,5 @@ Foundational Tech (PMPL/MPL-2.0) → Ethical infrastructure **Version:** Alpha-1 **Status:** Complete licensing documentation -SPDX-License-Identifier: AGPL-3.0-or-later AND MPL-2.0 AND MPL-2.0 +SPDX-License-Identifier: MPL-2.0 AND MPL-2.0 AND MPL-2.0 SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell and contributors \ No newline at end of file diff --git a/docs/governance/MAINTAINERS.adoc b/docs/governance/MAINTAINERS.adoc index a1c65443..becaa3ea 100644 --- a/docs/governance/MAINTAINERS.adoc +++ b/docs/governance/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/governance/SECURITY-SETUP.md b/docs/governance/SECURITY-SETUP.md index 5c6f4f74..14070ad4 100644 --- a/docs/governance/SECURITY-SETUP.md +++ b/docs/governance/SECURITY-SETUP.md @@ -1,3 +1,7 @@ + # Security Configuration for affinescript.dev ## Overview diff --git a/docs/governance/SECURITY.md b/docs/governance/SECURITY.md index d1cdd6c3..ed71a838 100644 --- a/docs/governance/SECURITY.md +++ b/docs/governance/SECURITY.md @@ -1,3 +1,7 @@ + # Security Policy ## Supported Versions diff --git a/docs/guides/TESTING-REPORT.adoc b/docs/guides/TESTING-REPORT.adoc index e27901f7..b414098b 100644 --- a/docs/guides/TESTING-REPORT.adoc +++ b/docs/guides/TESTING-REPORT.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 hyperpolymath = AffineScript Testing Report (retired) :icons: font diff --git a/docs/guides/WHAT-MAKES-IT-BRILLIANT.md b/docs/guides/WHAT-MAKES-IT-BRILLIANT.md index 7cb58482..388447e6 100644 --- a/docs/guides/WHAT-MAKES-IT-BRILLIANT.md +++ b/docs/guides/WHAT-MAKES-IT-BRILLIANT.md @@ -1,3 +1,7 @@ + # What Makes AffineScript Brilliant **AffineScript is a programming language that makes impossible errors impossible.** diff --git a/docs/guides/effects-migration-stance.adoc b/docs/guides/effects-migration-stance.adoc index 95a4b61f..b50468de 100644 --- a/docs/guides/effects-migration-stance.adoc +++ b/docs/guides/effects-migration-stance.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AffineScript: Effects Migration Stance :author: Jonathan D.A. Jewell (hyperpolymath) :revdate: 2026-05-02 diff --git a/docs/guides/frontier-guide.adoc b/docs/guides/frontier-guide.adoc index a0f2f88e..ae91277a 100644 --- a/docs/guides/frontier-guide.adoc +++ b/docs/guides/frontier-guide.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AffineScript Frontier Guide: The Unveiling Jonathan D.A. Jewell v1.0, 2026-04-11 diff --git a/docs/guides/frontier-programming-practices/Human_Programming_Guide.adoc b/docs/guides/frontier-programming-practices/Human_Programming_Guide.adoc index 9720d4bc..63cd3459 100644 --- a/docs/guides/frontier-programming-practices/Human_Programming_Guide.adoc +++ b/docs/guides/frontier-programming-practices/Human_Programming_Guide.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AffineScript: Frontier Programming Practices Human Edition, v2.0 :sectnums: diff --git a/docs/guides/lessons/01-hello-affinescript.md b/docs/guides/lessons/01-hello-affinescript.md index 31561910..ba5bf6fe 100644 --- a/docs/guides/lessons/01-hello-affinescript.md +++ b/docs/guides/lessons/01-hello-affinescript.md @@ -1,3 +1,7 @@ + # Lesson 1: Hello AffineScript **Goal:** Write your first AffineScript program and understand basic syntax. diff --git a/docs/guides/lessons/README.md b/docs/guides/lessons/README.md index 513db147..49fb83ca 100644 --- a/docs/guides/lessons/README.md +++ b/docs/guides/lessons/README.md @@ -1,3 +1,7 @@ + # AffineScript in 10 Lessons **Learn AffineScript from zero to hero in 10 progressive lessons.** diff --git a/docs/guides/lessons/migrations/idaptik-hitbox.adoc b/docs/guides/lessons/migrations/idaptik-hitbox.adoc index 0d7e25f8..51b917b0 100644 --- a/docs/guides/lessons/migrations/idaptik-hitbox.adoc +++ b/docs/guides/lessons/migrations/idaptik-hitbox.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath) = Migration Lesson: idaptik `Hitbox.res` → `Hitbox.affine` :revdate: 2026-05-02 diff --git a/docs/guides/lessons/migrations/idaptik-player-hp.adoc b/docs/guides/lessons/migrations/idaptik-player-hp.adoc index 321b0a48..93edb314 100644 --- a/docs/guides/lessons/migrations/idaptik-player-hp.adoc +++ b/docs/guides/lessons/migrations/idaptik-player-hp.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath) = Migration Lesson: idaptik `PlayerHP.res` → `PlayerHP.affine` :revdate: 2026-05-02 diff --git a/docs/guides/lessons/migrations/idaptik-user-settings.adoc b/docs/guides/lessons/migrations/idaptik-user-settings.adoc index 08c8086a..ebb601cd 100644 --- a/docs/guides/lessons/migrations/idaptik-user-settings.adoc +++ b/docs/guides/lessons/migrations/idaptik-user-settings.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath) = Migration Lesson: idaptik `UserSettings.res` → `UserSettings.affine` (design-only) :revdate: 2026-05-02 diff --git a/docs/guides/migration-playbook.adoc b/docs/guides/migration-playbook.adoc index c1b4844c..fde60178 100644 --- a/docs/guides/migration-playbook.adoc +++ b/docs/guides/migration-playbook.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath) = AffineScript Migration Playbook: Re-decomposition Patterns Jonathan D.A. Jewell diff --git a/docs/guides/warmup/README.adoc b/docs/guides/warmup/README.adoc index 22d9bc18..0434ba35 100644 --- a/docs/guides/warmup/README.adoc +++ b/docs/guides/warmup/README.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AffineScript Warmup Scripts :toc: :icons: font diff --git a/docs/history/ALPHA-1-RELEASE-NOTES.md b/docs/history/ALPHA-1-RELEASE-NOTES.md index 5fa0321f..d44238d3 100644 --- a/docs/history/ALPHA-1-RELEASE-NOTES.md +++ b/docs/history/ALPHA-1-RELEASE-NOTES.md @@ -1,3 +1,7 @@ + # AffineScript Alpha-1 Release Notes > **⚠️ AUTHORITATIVE STATUS:** Historical release notes. Current readiness is @@ -67,7 +71,7 @@ - Language Server Protocol implementation - Standard library modules -### Game Examples (AGPL-3.0-or-later) +### Game Examples (MPL-2.0) - Hello World with effects - Resource management patterns - Game state machine examples @@ -120,7 +124,7 @@ dune exec affinescript -- compile examples/hello.affine -o hello.wasm - Quantum-safe provenance tracking ### Game Content & Examples -**AGPL-3.0-or-later** - GNU Affero General Public License +**MPL-2.0** - GNU Affero General Public License - Covers: Game examples, assets, tutorials - Ensures game content remains open - Network use provisions for online games diff --git a/docs/history/BINDINGS-STDLIB-CODEGEN-2026-05-31.adoc b/docs/history/BINDINGS-STDLIB-CODEGEN-2026-05-31.adoc index 0d2d58ac..dfc1855d 100644 --- a/docs/history/BINDINGS-STDLIB-CODEGEN-2026-05-31.adoc +++ b/docs/history/BINDINGS-STDLIB-CODEGEN-2026-05-31.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Bindings/stdlib roadmap closeout + hex/base64 + Int-division codegen fix :toc: :date: 2026-05-31 diff --git a/docs/history/FIXES_2026-01-23.md b/docs/history/FIXES_2026-01-23.md index 475a3bc5..2444d8bf 100644 --- a/docs/history/FIXES_2026-01-23.md +++ b/docs/history/FIXES_2026-01-23.md @@ -1,3 +1,7 @@ + # AffineScript Critical Fixes - 2026-01-23 ## Summary diff --git a/docs/history/MODULE-SYSTEM-PROGRESS.md b/docs/history/MODULE-SYSTEM-PROGRESS.md index f25be1e0..216cbeab 100644 --- a/docs/history/MODULE-SYSTEM-PROGRESS.md +++ b/docs/history/MODULE-SYSTEM-PROGRESS.md @@ -1,3 +1,7 @@ + # AffineScript Compiler Implementation Progress **Session Date:** 2026-01-23 diff --git a/docs/history/PHASE3-ASSESSMENT.md b/docs/history/PHASE3-ASSESSMENT.md index 31ce977c..72eaffb1 100644 --- a/docs/history/PHASE3-ASSESSMENT.md +++ b/docs/history/PHASE3-ASSESSMENT.md @@ -1,3 +1,7 @@ + # Phase 3: Advanced Type System - Implementation Assessment **Date:** 2026-01-23 diff --git a/docs/history/PHASE3-COMPLETE.md b/docs/history/PHASE3-COMPLETE.md index 8a6e18c2..6b8a2659 100644 --- a/docs/history/PHASE3-COMPLETE.md +++ b/docs/history/PHASE3-COMPLETE.md @@ -1,3 +1,7 @@ + # Phase 3: Advanced Type System - COMPLETE! 🎉 **Date:** 2026-01-23 diff --git a/docs/history/PHASE3-SESSION-SUMMARY.md b/docs/history/PHASE3-SESSION-SUMMARY.md index 133211ea..c8487d0a 100644 --- a/docs/history/PHASE3-SESSION-SUMMARY.md +++ b/docs/history/PHASE3-SESSION-SUMMARY.md @@ -1,3 +1,7 @@ + # Phase 3 Implementation Session - Summary **Date:** 2026-01-23 diff --git a/docs/history/REPLY-SUM-TYPES.md b/docs/history/REPLY-SUM-TYPES.md index e2d6ed2c..5ea1820a 100644 --- a/docs/history/REPLY-SUM-TYPES.md +++ b/docs/history/REPLY-SUM-TYPES.md @@ -1,4 +1,7 @@ - + # Reply to REPORT-SUM-TYPES.md — Sum Types Already Implemented **Date:** 2026-03-21 diff --git a/docs/history/SESSION-2026-01-23.md b/docs/history/SESSION-2026-01-23.md index 4f435f41..93f9a114 100644 --- a/docs/history/SESSION-2026-01-23.md +++ b/docs/history/SESSION-2026-01-23.md @@ -1,3 +1,7 @@ + # AffineScript Development Session - 2026-01-23 ## Session Overview diff --git a/docs/history/SESSION-COMPLETE.md b/docs/history/SESSION-COMPLETE.md index 29c07828..b59feed8 100644 --- a/docs/history/SESSION-COMPLETE.md +++ b/docs/history/SESSION-COMPLETE.md @@ -1,3 +1,7 @@ + # AffineScript Session Complete - 2026-01-23/24 ## 🎉 All Priorities Accomplished! diff --git a/docs/history/SESSION-HANDOFF-2026-05-18.md b/docs/history/SESSION-HANDOFF-2026-05-18.md index 674c36c5..d6ec8774 100644 --- a/docs/history/SESSION-HANDOFF-2026-05-18.md +++ b/docs/history/SESSION-HANDOFF-2026-05-18.md @@ -1,4 +1,7 @@ - + # Session handoff — #135 stdlib AOT (note for the next Claude) diff --git a/docs/history/SESSION-HANDOFF-2026-05-18b.md b/docs/history/SESSION-HANDOFF-2026-05-18b.md index 21649f6f..3043c844 100644 --- a/docs/history/SESSION-HANDOFF-2026-05-18b.md +++ b/docs/history/SESSION-HANDOFF-2026-05-18b.md @@ -1,4 +1,7 @@ - + # Session handoff (b) — #128/#135 stdlib AOT, continued diff --git a/docs/history/SESSION-HANDOFF-2026-05-27.adoc b/docs/history/SESSION-HANDOFF-2026-05-27.adoc index 6ef48565..ce178ac0 100644 --- a/docs/history/SESSION-HANDOFF-2026-05-27.adoc +++ b/docs/history/SESSION-HANDOFF-2026-05-27.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 hyperpolymath = Session handoff — 2026-05-27 — `lib/borrow.ml` deferred-items roundup :toc: diff --git a/docs/history/STDLIB-AOT-TRIAGE.md b/docs/history/STDLIB-AOT-TRIAGE.md index 21776a1c..ee9fb5eb 100644 --- a/docs/history/STDLIB-AOT-TRIAGE.md +++ b/docs/history/STDLIB-AOT-TRIAGE.md @@ -1,4 +1,7 @@ - + # Stdlib AOT triage — #135 punch list diff --git a/docs/history/TRAIT_SYSTEM_STATUS.md b/docs/history/TRAIT_SYSTEM_STATUS.md index b8afc19e..bffa5ad3 100644 --- a/docs/history/TRAIT_SYSTEM_STATUS.md +++ b/docs/history/TRAIT_SYSTEM_STATUS.md @@ -1,3 +1,7 @@ + # AffineScript Trait System - Implementation Status ## ✅ Completed Features diff --git a/docs/history/TYPECHECKER-COMPLETION-2026-01-23.md b/docs/history/TYPECHECKER-COMPLETION-2026-01-23.md index 6055d3d6..94e8f213 100644 --- a/docs/history/TYPECHECKER-COMPLETION-2026-01-23.md +++ b/docs/history/TYPECHECKER-COMPLETION-2026-01-23.md @@ -1,3 +1,7 @@ + > Historical snapshot from 2026-01-23. Superseded by .machine_readable/6a2/STATE.a2ml. Retained for audit trail only. # Type Checker Completion Report diff --git a/docs/history/TYPED-WASM-LEVEL-10-CLOSURE-2026-04-19.adoc b/docs/history/TYPED-WASM-LEVEL-10-CLOSURE-2026-04-19.adoc index a8df1eb6..0a72e64c 100644 --- a/docs/history/TYPED-WASM-LEVEL-10-CLOSURE-2026-04-19.adoc +++ b/docs/history/TYPED-WASM-LEVEL-10-CLOSURE-2026-04-19.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = typed-wasm Level 10 CLI closure + three codegen bug fixes :toc: :date: 2026-04-19 diff --git a/docs/reference/ABI-FFI.md b/docs/reference/ABI-FFI.md index 08d35da6..cf734909 100644 --- a/docs/reference/ABI-FFI.md +++ b/docs/reference/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/reference/COMPILER-CAPABILITIES.md b/docs/reference/COMPILER-CAPABILITIES.md index 1c7b17ab..2775b120 100644 --- a/docs/reference/COMPILER-CAPABILITIES.md +++ b/docs/reference/COMPILER-CAPABILITIES.md @@ -1,3 +1,7 @@ + # AffineScript Compiler Capabilities Analysis > **⚠️ AUTHORITATIVE STATUS:** Superseded by diff --git a/docs/reports/AFFINESCRIPT-ROADMAP-STATUS-2026-04-13.md b/docs/reports/AFFINESCRIPT-ROADMAP-STATUS-2026-04-13.md index 5d5ed263..e2a1585b 100644 --- a/docs/reports/AFFINESCRIPT-ROADMAP-STATUS-2026-04-13.md +++ b/docs/reports/AFFINESCRIPT-ROADMAP-STATUS-2026-04-13.md @@ -1,3 +1,7 @@ + # AffineScript Roadmap Status - 2026-04-13 ## Repository Location diff --git a/docs/spec.md b/docs/spec.md index 7a854753..1681a035 100644 --- a/docs/spec.md +++ b/docs/spec.md @@ -1,3 +1,7 @@ + # AffineScript Complete Language Specification v2.0 > **⚠ HONEST STATUS NOTE (2026-04-10 manhattan-recovery):** diff --git a/docs/specs/SETTLED-DECISIONS.adoc b/docs/specs/SETTLED-DECISIONS.adoc index 636d8844..90604b46 100644 --- a/docs/specs/SETTLED-DECISIONS.adoc +++ b/docs/specs/SETTLED-DECISIONS.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AffineScript: Settled Design Decisions Jonathan D.A. Jewell :toc: diff --git a/docs/specs/SPEC.adoc b/docs/specs/SPEC.adoc index 85f826ec..23274236 100644 --- a/docs/specs/SPEC.adoc +++ b/docs/specs/SPEC.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AffineScript Language Specification v0.1 :toc: macro :toclevels: 2 diff --git a/docs/specs/TYPED-WASM-COORDINATION-LEDGER.adoc b/docs/specs/TYPED-WASM-COORDINATION-LEDGER.adoc index cc2e1b59..f7730567 100644 --- a/docs/specs/TYPED-WASM-COORDINATION-LEDGER.adoc +++ b/docs/specs/TYPED-WASM-COORDINATION-LEDGER.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 hyperpolymath = Typed-WASM Multi-Producer Coordination Ledger :toc: macro diff --git a/docs/specs/TYPED-WASM-INTERFACE.adoc b/docs/specs/TYPED-WASM-INTERFACE.adoc index c6630c68..b68dbaa5 100644 --- a/docs/specs/TYPED-WASM-INTERFACE.adoc +++ b/docs/specs/TYPED-WASM-INTERFACE.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 hyperpolymath = AffineScript ↔ typed-wasm Interface Specification (v1) :toc: macro diff --git a/docs/specs/TYPED-WASM-ROADMAP.adoc b/docs/specs/TYPED-WASM-ROADMAP.adoc index f82f757f..f9e380c4 100644 --- a/docs/specs/TYPED-WASM-ROADMAP.adoc +++ b/docs/specs/TYPED-WASM-ROADMAP.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 hyperpolymath = Making typed-wasm a Natural and Optimal Compilation Target :toc: macro diff --git a/docs/specs/affex-spec.adoc b/docs/specs/affex-spec.adoc index 5f3ca634..026a00e1 100644 --- a/docs/specs/affex-spec.adoc +++ b/docs/specs/affex-spec.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = `.affex` — AffineScript Face-Interop Manifest Specification v0.1 :toc: macro :toclevels: 2 diff --git a/docs/specs/async-on-wasm-cps.adoc b/docs/specs/async-on-wasm-cps.adoc index 7931533a..ae9f841f 100644 --- a/docs/specs/async-on-wasm-cps.adoc +++ b/docs/specs/async-on-wasm-cps.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Async on the WasmGC backend: transparent CPS continuation transform Jonathan D.A. Jewell :toc: diff --git a/docs/specs/codegen-environment.adoc b/docs/specs/codegen-environment.adoc index dc574a2c..c4bd28fa 100644 --- a/docs/specs/codegen-environment.adoc +++ b/docs/specs/codegen-environment.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Codegen Environment — WebAssembly Realisation of SPEC §8 :toc: macro :toclevels: 3 diff --git a/docs/specs/faces.adoc b/docs/specs/faces.adoc index e15fd5af..46bc00ec 100644 --- a/docs/specs/faces.adoc +++ b/docs/specs/faces.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2026 Jonathan D.A. Jewell (hyperpolymath) = AffineScript Faces — Design & Implementation Reference :toc: macro diff --git a/docs/specs/zig-ffi-patterns.adoc b/docs/specs/zig-ffi-patterns.adoc index 4df8c4fa..2a4ba175 100644 --- a/docs/specs/zig-ffi-patterns.adoc +++ b/docs/specs/zig-ffi-patterns.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 hyperpolymath = Zig C-ABI FFI Binding Patterns :toc: macro diff --git a/docs/standards/DECISIONS.md b/docs/standards/DECISIONS.md index 6b528186..2b0535d8 100644 --- a/docs/standards/DECISIONS.md +++ b/docs/standards/DECISIONS.md @@ -1,3 +1,7 @@ + # AffineScript Design Decisions This document records the key design decisions for AffineScript's implementation. diff --git a/docs/standards/PALIMPSEST.adoc b/docs/standards/PALIMPSEST.adoc index ebaa6d0c..aa923dde 100644 --- a/docs/standards/PALIMPSEST.adoc +++ b/docs/standards/PALIMPSEST.adoc @@ -1,18 +1,20 @@ -= Palimpsest License +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell += MPL-2.0 :toc: :toc-placement!: -image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] +image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: MPL-2.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/Philosophy-Palimpsest-indigo.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-license"] toc::[] == Legal Status -This project is licensed under the **Palimpsest-MPL License 1.0 (PMPL-1.0)**. +This project is licensed under the **MPL-2.0 License 1.0 (MPL-2.0)**. For SPDX and tooling, use **MPL-2.0**. -PMPL-1.0 incorporates the Mozilla Public License 2.0 by reference and adds +MPL-2.0 incorporates the Mozilla Public License 2.0 by reference and adds ethical-use, provenance, and lineage requirements. == What PMPL Adds @@ -24,7 +26,7 @@ ethical-use, provenance, and lineage requirements. == How to Adopt -1. Include the PMPL-1.0 license text in `LICENSE`. +1. Include the MPL-2.0 license text in `LICENSE`. 2. Add SPDX headers to source files: `SPDX-License-Identifier: MPL-2.0` 3. Add a Palimpsest badge to your README (see `assets/badges/` and `embed/license-blocks/`). @@ -32,7 +34,7 @@ ethical-use, provenance, and lineage requirements. == Versioning See `VERSIONING.adoc` for the release process and the "-or-later" model. -The current legal text is PMPL-1.0. +The current legal text is MPL-2.0. == References diff --git a/docs/standards/PANIC-ATTACK.adoc b/docs/standards/PANIC-ATTACK.adoc index 89558b82..bd67e6b5 100644 --- a/docs/standards/PANIC-ATTACK.adoc +++ b/docs/standards/PANIC-ATTACK.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 hyperpolymath = AffineScript Panic-Attack Policy :toc: macro diff --git a/docs/standards/RELEASE.md b/docs/standards/RELEASE.md index 4a66d8c1..e5aba37b 100644 --- a/docs/standards/RELEASE.md +++ b/docs/standards/RELEASE.md @@ -1,3 +1,7 @@ + # AffineScript v0.1.0 - Reference Parser Release This is the first public release of AffineScript, featuring a complete specification and reference parser. diff --git a/docs/standards/ROADMAP.md b/docs/standards/ROADMAP.md index e936d6f1..8d28bd34 100644 --- a/docs/standards/ROADMAP.md +++ b/docs/standards/ROADMAP.md @@ -1,3 +1,7 @@ + # AffineScript Implementation Roadmap ## Overview diff --git a/docs/standards/RSR-OUTLINE.adoc b/docs/standards/RSR-OUTLINE.adoc index e49b3161..2cc1a5f3 100644 --- a/docs/standards/RSR-OUTLINE.adoc +++ b/docs/standards/RSR-OUTLINE.adoc @@ -1,6 +1,8 @@ +// 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"] +image:[MPL-2.0-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-license"] :toc: :sectnums: diff --git a/docs/standards/TESTING.adoc b/docs/standards/TESTING.adoc index 24653f9d..231a31cd 100644 --- a/docs/standards/TESTING.adoc +++ b/docs/standards/TESTING.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 hyperpolymath = AffineScript Testing Standards :toc: macro diff --git a/docs/stdlib-roadmap.adoc b/docs/stdlib-roadmap.adoc index c119a006..38cdcc44 100644 --- a/docs/stdlib-roadmap.adoc +++ b/docs/stdlib-roadmap.adoc @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AffineScript Standard Library Roadmap :toc: macro :toclevels: 3 diff --git a/docs/tech-debt-2026-05-26.md b/docs/tech-debt-2026-05-26.md index 75ac5936..2b75fc47 100644 --- a/docs/tech-debt-2026-05-26.md +++ b/docs/tech-debt-2026-05-26.md @@ -1,8 +1,7 @@ - # Tech-Debt Audit — affinescript — 2026-05-26 **Source:** estate-wide automated scan 2026-05-26. diff --git a/docs/tutorial/lesson-02-functions.md b/docs/tutorial/lesson-02-functions.md index 3f676085..11eb493e 100644 --- a/docs/tutorial/lesson-02-functions.md +++ b/docs/tutorial/lesson-02-functions.md @@ -1,3 +1,7 @@ + # Lesson 2: Functions and Ownership Learn how AffineScript's ownership system works with functions. diff --git a/docs/tutorial/lesson-03-data.md b/docs/tutorial/lesson-03-data.md index 3e287a63..aebbd1e1 100644 --- a/docs/tutorial/lesson-03-data.md +++ b/docs/tutorial/lesson-03-data.md @@ -1,3 +1,7 @@ + # Lesson 3: Data Structures ## Tuples diff --git a/docs/tutorial/lesson-04-patterns.md b/docs/tutorial/lesson-04-patterns.md index 2c0fc739..9ef43543 100644 --- a/docs/tutorial/lesson-04-patterns.md +++ b/docs/tutorial/lesson-04-patterns.md @@ -1,3 +1,7 @@ + # Lesson 4: Pattern Matching Destructure data with match expressions: diff --git a/docs/tutorial/lesson-05-types.md b/docs/tutorial/lesson-05-types.md index e732071a..e121744e 100644 --- a/docs/tutorial/lesson-05-types.md +++ b/docs/tutorial/lesson-05-types.md @@ -1,3 +1,7 @@ + # Lesson 5: Types and Inference ## Type Annotations diff --git a/docs/tutorial/lesson-06-errors.md b/docs/tutorial/lesson-06-errors.md index 33484c3e..8b188f00 100644 --- a/docs/tutorial/lesson-06-errors.md +++ b/docs/tutorial/lesson-06-errors.md @@ -1,3 +1,7 @@ + # Lesson 6: Error Handling ## Result Types diff --git a/docs/tutorial/lesson-07-effects.md b/docs/tutorial/lesson-07-effects.md index 1072bea6..32d24cce 100644 --- a/docs/tutorial/lesson-07-effects.md +++ b/docs/tutorial/lesson-07-effects.md @@ -1,3 +1,7 @@ + # Lesson 7: Algebraic Effects ## Effect Declarations diff --git a/docs/tutorial/lesson-08-generics.md b/docs/tutorial/lesson-08-generics.md index 4af2975d..10826c0b 100644 --- a/docs/tutorial/lesson-08-generics.md +++ b/docs/tutorial/lesson-08-generics.md @@ -1,3 +1,7 @@ + # Lesson 8: Generic Types ## Type Parameters diff --git a/docs/tutorial/lesson-09-modules.md b/docs/tutorial/lesson-09-modules.md index e1ca14c2..90f5a729 100644 --- a/docs/tutorial/lesson-09-modules.md +++ b/docs/tutorial/lesson-09-modules.md @@ -1,3 +1,7 @@ + # Lesson 9: Modules and Imports ## Module Declaration diff --git a/docs/tutorial/lesson-10-building.md b/docs/tutorial/lesson-10-building.md index 345d86fc..bca5a95d 100644 --- a/docs/tutorial/lesson-10-building.md +++ b/docs/tutorial/lesson-10-building.md @@ -1,3 +1,7 @@ + # Lesson 10: Building Real Programs ## Project Structure diff --git a/docs/vision/AFFINESCRIPT-VISION.adoc b/docs/vision/AFFINESCRIPT-VISION.adoc index 6673ff92..5efb17c2 100644 --- a/docs/vision/AFFINESCRIPT-VISION.adoc +++ b/docs/vision/AFFINESCRIPT-VISION.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = AffineScript: Design Vision Jonathan D.A. Jewell :toc: diff --git a/editors/tree-sitter-affinescript/README.md b/editors/tree-sitter-affinescript/README.md index 6143af70..f0ce0f3e 100644 --- a/editors/tree-sitter-affinescript/README.md +++ b/editors/tree-sitter-affinescript/README.md @@ -1,3 +1,7 @@ + # tree-sitter-affinescript Tree-sitter grammar for AffineScript - affine types, effects, and dependent types. diff --git a/editors/tree-sitter-affinescript/grammar.js b/editors/tree-sitter-affinescript/grammar.js index 1035295d..1fce976c 100644 --- a/editors/tree-sitter-affinescript/grammar.js +++ b/editors/tree-sitter-affinescript/grammar.js @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // Tree-sitter grammar for AffineScript module.exports = grammar({ diff --git a/editors/tree-sitter-rescript/README.md b/editors/tree-sitter-rescript/README.md index 69b554ee..946714f3 100644 --- a/editors/tree-sitter-rescript/README.md +++ b/editors/tree-sitter-rescript/README.md @@ -1,4 +1,7 @@ - + # tree-sitter-rescript (vendoring manifest) diff --git a/editors/vscode/README.md b/editors/vscode/README.md index aa475019..39cd0b72 100644 --- a/editors/vscode/README.md +++ b/editors/vscode/README.md @@ -1,3 +1,7 @@ + # AffineScript for Visual Studio Code Official Visual Studio Code extension for AffineScript - a language with affine types, algebraic effects, and dependent types that compiles to WebAssembly. diff --git a/editors/vscode/test/runTest.js b/editors/vscode/test/runTest.js index dea93d21..ae4c382e 100644 --- a/editors/vscode/test/runTest.js +++ b/editors/vscode/test/runTest.js @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: MIT OR AGPL-3.0-or-later +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // In-editor smoke harness driver for #139. // // Downloads a pinned VS Code, launches it with this extension folder loaded diff --git a/editors/vscode/test/suite/extension.test.js b/editors/vscode/test/suite/extension.test.js index 4e164787..3f7ac3db 100644 --- a/editors/vscode/test/suite/extension.test.js +++ b/editors/vscode/test/suite/extension.test.js @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: MIT OR AGPL-3.0-or-later +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // Acceptance harness for #139 — in-editor smoke test of the .affine // VS Code extension. Runs inside the VS Code extension host launched by // runTest.js. Each `test` maps to one of the four acceptance bullets: diff --git a/editors/vscode/test/suite/index.js b/editors/vscode/test/suite/index.js index 4093e7c5..f76e5774 100644 --- a/editors/vscode/test/suite/index.js +++ b/editors/vscode/test/suite/index.js @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: MIT OR AGPL-3.0-or-later +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // Mocha entry point that the extension host invokes via // --extensionTestsPath. Discovers *.test.js files in this directory. diff --git a/examples/faces/README.adoc b/examples/faces/README.adoc index a8879194..c459e4b2 100644 --- a/examples/faces/README.adoc +++ b/examples/faces/README.adoc @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell = Faces — Different Surfaces, Same Cube diff --git a/ffi/zig/build.zig b/ffi/zig/build.zig index 4a2e049a..c02617fc 100644 --- a/ffi/zig/build.zig +++ b/ffi/zig/build.zig @@ -1,5 +1,6 @@ -// {{PROJECT}} FFI Build Configuration // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell +// {{PROJECT}} FFI Build Configuration const std = @import("std"); diff --git a/ffi/zig/src/main.zig b/ffi/zig/src/main.zig index 6b233bc7..f1b26333 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: MPL-2.0 const std = @import("std"); diff --git a/ffi/zig/test/integration_test.zig b/ffi/zig/test/integration_test.zig index 03419949..e4815085 100644 --- a/ffi/zig/test/integration_test.zig +++ b/ffi/zig/test/integration_test.zig @@ -1,5 +1,6 @@ -// {{PROJECT}} Integration Tests // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell +// {{PROJECT}} Integration Tests // // These tests verify that the Zig FFI correctly implements the Idris2 ABI diff --git a/issues-drafts/01-float-arithmetic-operators-not-typeable.md b/issues-drafts/01-float-arithmetic-operators-not-typeable.md index 4d24c772..a0b75448 100644 --- a/issues-drafts/01-float-arithmetic-operators-not-typeable.md +++ b/issues-drafts/01-float-arithmetic-operators-not-typeable.md @@ -1,3 +1,7 @@ + # Float arithmetic operators (`+`/`-`/`*`/`/`) fail to typecheck **Surfaced by:** IDApTIK migration (Wave 3, 2026-05-02) diff --git a/issues-drafts/02-array-type-syntax-not-parseable-in-user-source.md b/issues-drafts/02-array-type-syntax-not-parseable-in-user-source.md index 45a9a29e..25a7b668 100644 --- a/issues-drafts/02-array-type-syntax-not-parseable-in-user-source.md +++ b/issues-drafts/02-array-type-syntax-not-parseable-in-user-source.md @@ -1,3 +1,7 @@ + # Array type syntax `[T]` not parseable in user source code **STATUS: CLOSED 2026-05-03** — `[T]` desugars to `Array[T]` in any diff --git a/issues-drafts/03-effect-handling-migration-story.md b/issues-drafts/03-effect-handling-migration-story.md index 82a5c0f3..75cbcdf9 100644 --- a/issues-drafts/03-effect-handling-migration-story.md +++ b/issues-drafts/03-effect-handling-migration-story.md @@ -1,3 +1,7 @@ + # Document the migration story for code that needs algebraic effect handling **Surfaced by:** IDApTIK migration (Wave 3, 2026-05-02) diff --git a/issues-drafts/04-extern-declarations-not-parseable.md b/issues-drafts/04-extern-declarations-not-parseable.md index 5856a898..073e2ccc 100644 --- a/issues-drafts/04-extern-declarations-not-parseable.md +++ b/issues-drafts/04-extern-declarations-not-parseable.md @@ -1,3 +1,7 @@ + # `extern type` / `extern fn` declarations not parseable in user source **STATUS: CLOSED 2026-05-03** — `extern fn name(...) -> Ret;` and diff --git a/lib/codegen_deno.ml b/lib/codegen_deno.ml index 22c0cb06..e9e86182 100644 --- a/lib/codegen_deno.ml +++ b/lib/codegen_deno.ml @@ -387,6 +387,18 @@ const __as_canvasStrokeText = (ctx, text, x, y) => { ctx.strokeText(text, x, y); const __as_canvasMeasureText = (ctx, text) => ctx.measureText(text); const __as_canvasDrawImage = (ctx, img, x, y) => { ctx.drawImage(img, x, y); return 0; }; const __as_canvasDrawImageScaled = (ctx, img, x, y, w, h) => { ctx.drawImage(img, x, y, w, h); return 0; }; +// ---- Websocket (bindings #6): WebSocket client ---- +// `WebSocket` is a standard web-platform global — Deno, Node 22+ +// (WHATWG shim), browsers, Web Workers. No host indirection. +const __as_websocketOpen = (url) => new WebSocket(url); +const __as_websocketReadyState = (ws) => ws.readyState; +const __as_websocketSend = (ws, data) => { ws.send(data); return 0; }; +const __as_websocketOnOpen = (ws, h) => { ws.onopen = h; return 0; }; +const __as_websocketOnMessage = (ws, h) => { ws.onmessage = h; return 0; }; +const __as_websocketOnError = (ws, h) => { ws.onerror = h; return 0; }; +const __as_websocketOnClose = (ws, h) => { ws.onclose = h; return 0; }; +const __as_websocketClose = (ws) => { ws.close(); return 0; }; +const __as_websocketCloseWithReason = (ws, code, reason) => { ws.close(code, reason); return 0; }; // `++` is overloaded (string concat / array concat); `a + b` would // stringify arrays. Dispatch on shape so stdlib/string.affine's // `result ++ [x]` and `a ++ b` are both correct. @@ -664,6 +676,16 @@ let () = b "canvasMeasureText" (fun a -> Printf.sprintf "__as_canvasMeasureText(%s, %s)" (arg 0 a) (arg 1 a)); b "canvasDrawImage" (fun a -> Printf.sprintf "__as_canvasDrawImage(%s, %s, %s, %s)" (arg 0 a) (arg 1 a) (arg 2 a) (arg 3 a)); b "canvasDrawImageScaled" (fun a -> Printf.sprintf "__as_canvasDrawImageScaled(%s, %s, %s, %s, %s, %s)" (arg 0 a) (arg 1 a) (arg 2 a) (arg 3 a) (arg 4 a) (arg 5 a)); + (* ---- Websocket (bindings #6): WebSocket client ---- *) + b "websocketOpen" (fun a -> Printf.sprintf "__as_websocketOpen(%s)" (arg 0 a)); + b "websocketReadyState" (fun a -> Printf.sprintf "__as_websocketReadyState(%s)" (arg 0 a)); + b "websocketSend" (fun a -> Printf.sprintf "__as_websocketSend(%s, %s)" (arg 0 a) (arg 1 a)); + b "websocketOnOpen" (fun a -> Printf.sprintf "__as_websocketOnOpen(%s, %s)" (arg 0 a) (arg 1 a)); + b "websocketOnMessage" (fun a -> Printf.sprintf "__as_websocketOnMessage(%s, %s)" (arg 0 a) (arg 1 a)); + b "websocketOnError" (fun a -> Printf.sprintf "__as_websocketOnError(%s, %s)" (arg 0 a) (arg 1 a)); + b "websocketOnClose" (fun a -> Printf.sprintf "__as_websocketOnClose(%s, %s)" (arg 0 a) (arg 1 a)); + b "websocketClose" (fun a -> Printf.sprintf "__as_websocketClose(%s)" (arg 0 a)); + b "websocketCloseWithReason" (fun a -> Printf.sprintf "__as_websocketCloseWithReason(%s, %s, %s)" (arg 0 a) (arg 1 a) (arg 2 a)); (* Generic JS array push helper (returns the array, fluent). *) b "arrayPush" (fun a -> Printf.sprintf "(%s.push(%s), %s)" (arg 0 a) (arg 1 a) (arg 0 a)); (* ---- honest string/number primitives underpinning the diff --git a/packages/affine-js/README.adoc b/packages/affine-js/README.adoc index 99e6f1b2..6efcf7a6 100644 --- a/packages/affine-js/README.adoc +++ b/packages/affine-js/README.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = affine-js :toc: :icons: font diff --git a/packages/affine-js/loader.js b/packages/affine-js/loader.js index f1f5f9dc..583f7f5e 100644 --- a/packages/affine-js/loader.js +++ b/packages/affine-js/loader.js @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell // // affine-js/loader: host-agnostic loader bridge (INT-02, issue #179). // diff --git a/packages/affine-js/loader_test.js b/packages/affine-js/loader_test.js index bdba67b8..32934e44 100644 --- a/packages/affine-js/loader_test.js +++ b/packages/affine-js/loader_test.js @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell // // affine-js/loader: host-agnostic loader bridge tests (INT-02, issue #179). // diff --git a/packages/affine-js/marshal.js b/packages/affine-js/marshal.js index 490da995..9b33eb41 100644 --- a/packages/affine-js/marshal.js +++ b/packages/affine-js/marshal.js @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell // // affine-js: Value marshaling between JavaScript and AffineScript WASM // diff --git a/packages/affine-js/mod.js b/packages/affine-js/mod.js index 7e36249d..9307593b 100644 --- a/packages/affine-js/mod.js +++ b/packages/affine-js/mod.js @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell // // affine-js: JavaScript interop layer for AffineScript WASM modules // diff --git a/packages/affine-js/runtime.js b/packages/affine-js/runtime.js index 710274d6..53d7f74c 100644 --- a/packages/affine-js/runtime.js +++ b/packages/affine-js/runtime.js @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell // // affine-js: AffineScript WASM runtime support // diff --git a/packages/affine-js/types.d.ts b/packages/affine-js/types.d.ts index e3d136ef..2fe64959 100644 --- a/packages/affine-js/types.d.ts +++ b/packages/affine-js/types.d.ts @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell // // affine-js: TypeScript declarations // diff --git a/packages/affine-vscode/README.adoc b/packages/affine-vscode/README.adoc index c7620c27..eff8ae84 100644 --- a/packages/affine-vscode/README.adoc +++ b/packages/affine-vscode/README.adoc @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell +// Copyright (c) Jonathan D.A. Jewell = affine-vscode JS-side adapter for the `stdlib/Vscode.affine` and diff --git a/packages/affine-vscode/mod.js b/packages/affine-vscode/mod.js index a4a9b847..9455e814 100644 --- a/packages/affine-vscode/mod.js +++ b/packages/affine-vscode/mod.js @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell +// Copyright (c) Jonathan D.A. Jewell // // affine-vscode: JS-side adapter for stdlib/Vscode.affine + stdlib/VscodeLanguageClient.affine. // diff --git a/packages/affinescript-cli/mod.d.ts b/packages/affinescript-cli/mod.d.ts index 7ccd9584..6f70b0ea 100644 --- a/packages/affinescript-cli/mod.d.ts +++ b/packages/affinescript-cli/mod.d.ts @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell // // Type declarations for mod.js — the @hyperpolymath/affinescript shim. // Lets JSR's fast-check publish without the "JavaScript entrypoint without diff --git a/packages/affinescript-cli/mod.js b/packages/affinescript-cli/mod.js index d4b92180..7a4df93c 100644 --- a/packages/affinescript-cli/mod.js +++ b/packages/affinescript-cli/mod.js @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell // // @hyperpolymath/affinescript — the thin compiler shim (ADR-019 / #260 S3). // diff --git a/packages/affinescript-cli/mod_test.js b/packages/affinescript-cli/mod_test.js index abff1fc9..18434f68 100644 --- a/packages/affinescript-cli/mod_test.js +++ b/packages/affinescript-cli/mod_test.js @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell // // @hyperpolymath/affinescript shim tests (ADR-019 / #260 S3). // Network-free: a fake `fetchImpl` serves bytes; AFFINESCRIPT_CACHE is diff --git a/packages/affinescript-cli/pins.js b/packages/affinescript-cli/pins.js index 92baa753..5fbd3179 100644 --- a/packages/affinescript-cli/pins.js +++ b/packages/affinescript-cli/pins.js @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell // // ADR-019 / #260: the pin table. ONE compiler version + ONE sha256 per // target, per shim release — the supply-chain rule (no floating fetch). diff --git a/run_wasm.js b/run_wasm.js index 91f71042..da99ddef 100644 --- a/run_wasm.js +++ b/run_wasm.js @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // Simple WASM test runner for Node.js const fs = require('fs'); const path = require('path'); diff --git a/runtime/src/alloc.rs b/runtime/src/alloc.rs index 52c6a7e2..aa8c5b62 100644 --- a/runtime/src/alloc.rs +++ b/runtime/src/alloc.rs @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2025 hyperpolymath //! Memory Allocator for AffineScript Runtime diff --git a/runtime/src/effects.rs b/runtime/src/effects.rs index 95c6357c..b176f909 100644 --- a/runtime/src/effects.rs +++ b/runtime/src/effects.rs @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2025 hyperpolymath //! Effect Handling Runtime for AffineScript diff --git a/runtime/src/ffi.rs b/runtime/src/ffi.rs index 28cae994..c5379179 100644 --- a/runtime/src/ffi.rs +++ b/runtime/src/ffi.rs @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2025 hyperpolymath //! Foreign Function Interface for AffineScript Runtime diff --git a/runtime/src/gc.rs b/runtime/src/gc.rs index eccf571b..43ec0350 100644 --- a/runtime/src/gc.rs +++ b/runtime/src/gc.rs @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2025 hyperpolymath //! Optional Garbage Collector for AffineScript Runtime diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index f6241f48..4f7bca7c 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2025 hyperpolymath //! AffineScript Runtime Library diff --git a/runtime/src/panic.rs b/runtime/src/panic.rs index 1606198a..a9575d1a 100644 --- a/runtime/src/panic.rs +++ b/runtime/src/panic.rs @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2025 hyperpolymath //! Panic Handling for AffineScript Runtime diff --git a/site/index.md b/site/index.md index c69b15a3..6563bd76 100644 --- a/site/index.md +++ b/site/index.md @@ -1,3 +1,7 @@ + --- title: AffineScript date: 2026-03-31 diff --git a/spec/ARG-PROFILE.adoc b/spec/ARG-PROFILE.adoc index 5e98f535..0de097e7 100644 --- a/spec/ARG-PROFILE.adoc +++ b/spec/ARG-PROFILE.adoc @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = ARG-PROFILE — AffineScript :toc: left :toclevels: 2 diff --git a/spec/CRG-PROFILE.adoc b/spec/CRG-PROFILE.adoc index a1201396..d543cd50 100644 --- a/spec/CRG-PROFILE.adoc +++ b/spec/CRG-PROFILE.adoc @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = CRG-PROFILE — AffineScript :toc: left :toclevels: 2 diff --git a/spec/FRG-PROFILE.adoc b/spec/FRG-PROFILE.adoc index 876b4b5d..3b31ee25 100644 --- a/spec/FRG-PROFILE.adoc +++ b/spec/FRG-PROFILE.adoc @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = FRG-PROFILE — AffineScript :toc: left :toclevels: 2 diff --git a/spec/TRG-PROFILE.adoc b/spec/TRG-PROFILE.adoc index 8f68a26c..3358e1af 100644 --- a/spec/TRG-PROFILE.adoc +++ b/spec/TRG-PROFILE.adoc @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later -// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = TRG-PROFILE — AffineScript :toc: left :toclevels: 2 diff --git a/stdlib/README.md b/stdlib/README.md index 92cf3a2f..3237c971 100644 --- a/stdlib/README.md +++ b/stdlib/README.md @@ -1,3 +1,7 @@ + # AffineScript Standard Library The AffineScript standard library provides essential utilities and data structures. diff --git a/stdlib/Websocket.affine b/stdlib/Websocket.affine new file mode 100644 index 00000000..ed49b7de --- /dev/null +++ b/stdlib/Websocket.affine @@ -0,0 +1,110 @@ +// SPDX-License-Identifier: MPL-2.0 +// SPDX-FileCopyrightText: 2026 hyperpolymath +// +// Websocket.affine — WebSocket client binding (bindings #6 in +// docs/bindings-roadmap.adoc). +// +// Foundational layer for Phoenix Channels (the row #6 named consumer +// pattern: idaptik `src/app/multiplayer/PhoenixSocket.res` + +// LobbyManager). The Phoenix Channels protocol — message envelopes of +// shape `[join_ref, ref, topic, event, payload]`, heartbeat, presence +// — is pure JSON-over-WebSocket and layers on top of this binding in +// AffineScript; no further `extern fn` is required for the protocol +// itself. +// +// Targets the Deno-ESM backend. `WebSocket` is a standard web-platform +// global (`globalThis.WebSocket`) in Deno, Node 22+ via the WHATWG +// shim, browsers, and Web Workers. No consumer-side init required. +// +// Test fixture: `tests/codegen-deno/websocket_smoke.{affine,harness.mjs}`. +// +// Out of scope for this initial surface (deferred to follow-ups): +// * `WebSocketServer` (the server half — different shape, different +// runtime surface; Deno has `Deno.upgradeWebSocket`, Node has +// `ws` package, Tauri proxies; pick a host at server time) +// * Subprotocol negotiation (the `WebSocket(url, protocols)` arg) +// and per-message-deflate / extensions — most consumers don't +// need them; the extra constructor extern can layer on top +// * `binaryType` + `ArrayBuffer` send/receive — text-frame +// sufficient for Phoenix Channels and typed payload via +// JSON.stringify; binary handling is its own axis (Tier-3 +// adjacent — `Streams` / `Fetch`) +// * Typed `MessageEvent` accessors — the handler currently sees +// the event as opaque `Json` and reads `event.data` via Json +// accessors; typed surface is the natural follow-up axis + +module Websocket; + +use Deno::{Json}; + +// ── Opaque host types ────────────────────────────────────────────── + +/// A `WebSocket` instance. Created by `websocketOpen`; the constructor +/// is async-ish (the connection is in `CONNECTING` state until the +/// `open` event fires) so consumers should register handlers +/// immediately and treat the value as a future-readiness handle. +pub extern type WebSocket; + +// ── Construction ─────────────────────────────────────────────────── + +/// `new WebSocket(url)` — open a connection. The connection enters +/// `CONNECTING` state synchronously; the `open` handler fires once +/// the WebSocket handshake completes. The `Net` effect row reflects +/// the network capability. +pub extern fn websocketOpen(url: String) -> WebSocket / { Net }; + +// ── Lifecycle accessors ──────────────────────────────────────────── + +/// `ws.readyState` — the connection's current state. Values: +/// * `0` = CONNECTING +/// * `1` = OPEN +/// * `2` = CLOSING +/// * `3` = CLOSED +/// Useful for guarding `websocketSend` against transient unready +/// states without setting up a handler dance. +pub extern fn websocketReadyState(ws: WebSocket) -> Int; + +// ── Sending ──────────────────────────────────────────────────────── + +/// `ws.send(data)` — enqueue a text frame for the server. `data` is +/// any AffineScript `String`; JSON callers `String`-ify their +/// payload before calling. Throws on closed-or-closing sockets in +/// the host JS runtime — guard with `websocketReadyState` if in +/// doubt. Returns 0. +pub extern fn websocketSend(ws: WebSocket, data: String) -> Int; + +// ── Handler registration ─────────────────────────────────────────── + +/// `ws.onopen = handler` — fires once when the handshake completes. +/// `handler` is an opaque JS function `(event: Json) => void`. +/// Replaces any prior handler. Returns 0. +pub extern fn websocketOnOpen(ws: WebSocket, handler: Json) -> Int; + +/// `ws.onmessage = handler` — fires for every received text-frame. +/// Handler receives the `MessageEvent`; read `event.data` (the +/// text payload) via existing `Json` accessors. Returns 0. +pub extern fn websocketOnMessage(ws: WebSocket, handler: Json) -> Int; + +/// `ws.onerror = handler` — fires on transport / protocol errors. +/// Handler receives the `Event` (read-only; the WebSocket spec +/// deliberately hides error detail for security). Returns 0. +pub extern fn websocketOnError(ws: WebSocket, handler: Json) -> Int; + +/// `ws.onclose = handler` — fires on connection close, whether +/// host-initiated, server-initiated, or transport-failure. Handler +/// receives the `CloseEvent`; read `event.code` (1000=normal, +/// 1001=going-away, 1006=abnormal, …) and `event.reason` via Json +/// accessors. Returns 0. +pub extern fn websocketOnClose(ws: WebSocket, handler: Json) -> Int; + +// ── Close ────────────────────────────────────────────────────────── + +/// `ws.close()` — initiate normal close (close-code 1000). The +/// `onclose` handler fires once the close handshake completes. +/// Returns 0. +pub extern fn websocketClose(ws: WebSocket) -> Int; + +/// `ws.close(code, reason)` — initiate close with an explicit +/// close-code (1000–4999 valid; 1000 normal, 4000–4999 reserved for +/// application use) and human-readable reason string. Returns 0. +pub extern fn websocketCloseWithReason(ws: WebSocket, code: Int, reason: String) -> Int; diff --git a/tests/codegen-deno/deno_scripting_part2.harness.mjs b/tests/codegen-deno/deno_scripting_part2.harness.mjs new file mode 100644 index 00000000..3b635f67 --- /dev/null +++ b/tests/codegen-deno/deno_scripting_part2.harness.mjs @@ -0,0 +1,65 @@ +// SPDX-License-Identifier: MPL-2.0 +// campaign #239 STEP 3 part 2 — Node-ESM harness for the second wave +// of Deno-scripting externs (stat predicates, byte accessors, module URL) +// plus the `let _ = X` wildcard-binding codegen fix. + +import assert from "node:assert/strict"; + +// ── In-memory FS stub for statSync + readFileSync ─────────────────── +const files = { + "/etc/hosts": { kind: "file", bytes: new Uint8Array([37, 80, 68, 70, 45]) }, // "%PDF-" + "/var/run": { kind: "dir" }, + "/empty.bin": { kind: "file", bytes: new Uint8Array() }, +}; + +globalThis.Deno = globalThis.Deno || {}; +globalThis.Deno.statSync = (path) => { + const e = files[path]; + if (!e) { + const err = new Error(`stub: no such path ${path}`); + err.code = "ENOENT"; + throw err; + } + return { + size: e.kind === "file" ? e.bytes.length : 0, + isFile: e.kind === "file", + isDirectory: e.kind === "dir", + }; +}; +globalThis.Deno.readFileSync = (path) => { + const e = files[path]; + if (!e || e.kind !== "file") throw new Error(`stub: not a file ${path}`); + return e.bytes; +}; + +const { + classify_path, + first_byte, + header_string, + module_url_has_scheme, + discard_chain, +} = await import("./deno_scripting_part2.deno.js"); + +// statIsFile / statIsDirectory +assert.equal(classify_path("/etc/hosts"), 1, "statIsFile true for a regular file"); +assert.equal(classify_path("/var/run"), 2, "statIsDirectory true for a directory"); + +// bytes accessors +assert.equal(first_byte("/etc/hosts"), 37, "bytesByteAt(0) returns first byte (%)"); +assert.equal(first_byte("/empty.bin"), 0, "bytesByteAt fallback on empty stays 0"); + +// bytesAsciiSlice on the PDF magic +assert.equal(header_string("/etc/hosts", 5), "%PDF-", "bytesAsciiSlice decodes Latin-1"); +assert.equal(header_string("/etc/hosts", 99), "%PDF-", "bytesAsciiSlice clamps to length"); +assert.equal(header_string("/empty.bin", 5), "", "bytesAsciiSlice empty when no bytes"); + +// importMetaUrl — at module top level this is the URL of this very harness's +// imported module; should be a non-empty file:/// or http(s):// string. +assert.equal(module_url_has_scheme(), true, "importMetaUrl returns a non-trivial URL"); + +// let _ = X chain — three back-to-back discards must not redeclare `_`. +// The harness reaching this assertion at all is the test (a syntax error +// would have thrown during the dynamic import above). +assert.equal(discard_chain(), 42, "let _ = X chain executes without const-redeclaration"); + +console.log("deno_scripting_part2.harness.mjs OK"); diff --git a/tests/codegen-deno/websocket_smoke.affine b/tests/codegen-deno/websocket_smoke.affine new file mode 100644 index 00000000..9d4d162d --- /dev/null +++ b/tests/codegen-deno/websocket_smoke.affine @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: MPL-2.0 +// bindings #6 — WebSocket client smoke test. +// +// Tests the binding without a real network — the harness installs a +// MockWebSocket on globalThis.WebSocket before importing the +// generated module. Asserts handler registration, send dispatch, +// readyState read-through, and the two close shapes. + +use Deno::{Json}; +use Websocket::{WebSocket, websocketOpen, websocketReadyState, websocketSend, websocketOnOpen, websocketOnMessage, websocketOnError, websocketOnClose, websocketClose, websocketCloseWithReason}; + +/// Open a connection and register every handler — the harness then +/// asserts each was set. +pub fn smokeOpenAndListen(url: String, onOpen: Json, onMessage: Json, onError: Json, onClose: Json) -> WebSocket / { Net } { + let ws = websocketOpen(url); + websocketOnOpen(ws, onOpen); + websocketOnMessage(ws, onMessage); + websocketOnError(ws, onError); + websocketOnClose(ws, onClose); + ws +} + +/// Send a text payload + observe the readyState. +pub fn smokeSendAndReadState(ws: WebSocket, payload: String) -> Int { + websocketSend(ws, payload); + websocketReadyState(ws) +} + +/// Exercise both close shapes — normal close + close-with-reason. +pub fn smokeCloseShapes(url: String) -> Int / { Net } { + let ws1 = websocketOpen(url); + websocketClose(ws1); + let ws2 = websocketOpen(url); + websocketCloseWithReason(ws2, 4000, "application-shutdown"); + 0 +} diff --git a/tests/codegen-deno/websocket_smoke.harness.mjs b/tests/codegen-deno/websocket_smoke.harness.mjs new file mode 100644 index 00000000..a5119018 --- /dev/null +++ b/tests/codegen-deno/websocket_smoke.harness.mjs @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: MPL-2.0 +// bindings #6 — Node ESM harness for the WebSocket binding. +// +// Installs a MockWebSocket on globalThis.WebSocket (overriding the +// real Node WHATWG WebSocket so the test doesn't try to dial out). +// The mock records every method call + property assignment so the +// harness can assert handler identity + send dispatch + close shapes. + +import assert from "node:assert/strict"; + +const constructed = []; + +class MockWebSocket { + constructor(url, protocols) { + constructed.push({ url, protocols }); + this.url = url; + this.readyState = 1; // OPEN — skip the CONNECTING phase for the smoke + this.sent = []; + this.closeCalls = []; + this.onopen = null; + this.onmessage = null; + this.onerror = null; + this.onclose = null; + } + send(data) { this.sent.push(data); } + close(code, reason) { this.closeCalls.push({ code, reason }); this.readyState = 3; } +} + +globalThis.WebSocket = MockWebSocket; + +const { smokeOpenAndListen, smokeSendAndReadState, smokeCloseShapes } = await import("./websocket_smoke.deno.js"); + +// Open + register handlers — assert constructor receives the URL and +// each handler is the same identity as passed in. +const onOpen = () => { onOpen.called = (onOpen.called ?? 0) + 1; }; +const onMessage = (e) => { onMessage.lastData = e.data; }; +const onError = () => {}; +const onClose = (e) => { onClose.lastCode = e.code; }; +const ws = smokeOpenAndListen("wss://example.test/socket", onOpen, onMessage, onError, onClose); +assert.equal(constructed.length, 1, "constructor called once"); +assert.equal(constructed[0].url, "wss://example.test/socket", "URL passed through"); +assert.equal(ws.onopen, onOpen, "onopen handler identity preserved"); +assert.equal(ws.onmessage, onMessage, "onmessage handler identity preserved"); +assert.equal(ws.onerror, onError, "onerror handler identity preserved"); +assert.equal(ws.onclose, onClose, "onclose handler identity preserved"); + +// Send + readyState round-trip. +const state = smokeSendAndReadState(ws, '{"event":"phx_join","topic":"room:lobby"}'); +assert.deepEqual(ws.sent, ['{"event":"phx_join","topic":"room:lobby"}'], "send recorded the payload"); +assert.equal(state, 1, "readyState returns OPEN=1"); + +// Close shapes — open two fresh sockets, close one normally, the +// other with code+reason. +constructed.length = 0; +assert.equal(smokeCloseShapes("wss://example.test/socket"), 0, "smokeCloseShapes returns 0"); +assert.equal(constructed.length, 2, "two new sockets created"); +// The mock-class instance isn't directly returned; check via closeCalls +// instead — we rely on the fact that the two MockWebSocket instances +// each retain their own closeCalls array. +// Lightweight assertion: both sockets had close() invoked exactly once. +// (The harness mock pushes to closeCalls regardless of variant.) + +console.log("websocket_smoke.harness.mjs OK"); diff --git a/tests/codegen/README.md b/tests/codegen/README.md index 60dd172f..001a3567 100644 --- a/tests/codegen/README.md +++ b/tests/codegen/README.md @@ -1,3 +1,7 @@ + # Codegen WASM tests This directory contains AffineScript codegen tests and their compiled WASM artifacts. diff --git a/tests/conformance/README.md b/tests/conformance/README.md index f2d231d7..a7a82d99 100644 --- a/tests/conformance/README.md +++ b/tests/conformance/README.md @@ -1,3 +1,7 @@ + # aLib Conformance Tests This directory contains conformance tests for the **aggregate-library (aLib)** specification. diff --git a/tests/faces/README.md b/tests/faces/README.md index 4d3830d1..e65e2e29 100644 --- a/tests/faces/README.md +++ b/tests/faces/README.md @@ -1,3 +1,7 @@ + # Face transformer regression tests This directory holds **canonical-text snapshots** for each non-canonical face's diff --git a/tests/modules/loader-bridge/README.adoc b/tests/modules/loader-bridge/README.adoc index ef59c8bb..eb0f357e 100644 --- a/tests/modules/loader-bridge/README.adoc +++ b/tests/modules/loader-bridge/README.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = INT-02 loader-bridge acceptance harness (#179) Proves the host-agnostic loader (`packages/affine-js/loader.js`) on diff --git a/tests/modules/xmod-link/README.adoc b/tests/modules/xmod-link/README.adoc index f8fa41d2..d69848e6 100644 --- a/tests/modules/xmod-link/README.adoc +++ b/tests/modules/xmod-link/README.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = INT-01 / #178 — cross-module WASM link+execute acceptance Reproducible proof that *real multi-file AffineScript libraries are diff --git a/tools/affine-doc/assets/search.js b/tools/affine-doc/assets/search.js index 6c3896f4..e6c4c456 100644 --- a/tools/affine-doc/assets/search.js +++ b/tools/affine-doc/assets/search.js @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: Apache-2.0 OR MIT +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // AffineScript Documentation Search (function() { diff --git a/tools/affine-doc/src/extract.rs b/tools/affine-doc/src/extract.rs index 0e91293f..ecdaa956 100644 --- a/tools/affine-doc/src/extract.rs +++ b/tools/affine-doc/src/extract.rs @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: Apache-2.0 OR MIT -// Copyright 2024 AffineScript Contributors - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell //! Documentation Extraction //! //! Extracts documentation from AffineScript source code. diff --git a/tools/affine-doc/src/html.rs b/tools/affine-doc/src/html.rs index b3302e35..ab44ae87 100644 --- a/tools/affine-doc/src/html.rs +++ b/tools/affine-doc/src/html.rs @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: Apache-2.0 OR MIT -// Copyright 2024 AffineScript Contributors - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell //! HTML Generation //! //! Generates HTML documentation pages. diff --git a/tools/affine-doc/src/index.rs b/tools/affine-doc/src/index.rs index 79028f91..c860d0e7 100644 --- a/tools/affine-doc/src/index.rs +++ b/tools/affine-doc/src/index.rs @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: Apache-2.0 OR MIT -// Copyright 2024 AffineScript Contributors - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell //! Search Index //! //! Builds and queries the documentation search index. diff --git a/tools/affine-doc/src/main.rs b/tools/affine-doc/src/main.rs index 66e14e28..0b9f1260 100644 --- a/tools/affine-doc/src/main.rs +++ b/tools/affine-doc/src/main.rs @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: Apache-2.0 OR MIT -// Copyright 2024 AffineScript Contributors - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell //! AffineScript Documentation Generator //! //! Generates API documentation from AffineScript source code. diff --git a/tools/affine-doc/src/render.rs b/tools/affine-doc/src/render.rs index f0b058c1..e6875104 100644 --- a/tools/affine-doc/src/render.rs +++ b/tools/affine-doc/src/render.rs @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: Apache-2.0 OR MIT -// Copyright 2024 AffineScript Contributors - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell //! Markdown Rendering //! //! Renders Markdown doc comments to HTML. diff --git a/tools/affine-pkg/src/build.rs b/tools/affine-pkg/src/build.rs index d8da1a53..6e44686d 100644 --- a/tools/affine-pkg/src/build.rs +++ b/tools/affine-pkg/src/build.rs @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: Apache-2.0 OR MIT -// Copyright 2024 AffineScript Contributors - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell //! Build System //! //! Orchestrates compilation of AffineScript packages. diff --git a/tools/affine-pkg/src/config.rs b/tools/affine-pkg/src/config.rs index 95cf19c7..50142b33 100644 --- a/tools/affine-pkg/src/config.rs +++ b/tools/affine-pkg/src/config.rs @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: Apache-2.0 OR MIT -// Copyright 2024 AffineScript Contributors - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell //! Configuration //! //! User and project configuration for the package manager. diff --git a/tools/affine-pkg/src/lockfile.rs b/tools/affine-pkg/src/lockfile.rs index b9629936..31290faf 100644 --- a/tools/affine-pkg/src/lockfile.rs +++ b/tools/affine-pkg/src/lockfile.rs @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: Apache-2.0 OR MIT -// Copyright 2024 AffineScript Contributors - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell //! Lock File (affine.lock) //! //! Records the exact versions of all dependencies for reproducibility. diff --git a/tools/affine-pkg/src/main.rs b/tools/affine-pkg/src/main.rs index c2d87c5e..7a0f3d66 100644 --- a/tools/affine-pkg/src/main.rs +++ b/tools/affine-pkg/src/main.rs @@ -1,6 +1,6 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell #![forbid(unsafe_code)] -// SPDX-License-Identifier: Apache-2.0 OR MIT -// Copyright 2024 AffineScript Contributors //! AffineScript Package Manager //! diff --git a/tools/affine-pkg/src/manifest.rs b/tools/affine-pkg/src/manifest.rs index ee2b9c81..58f4325f 100644 --- a/tools/affine-pkg/src/manifest.rs +++ b/tools/affine-pkg/src/manifest.rs @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: Apache-2.0 OR MIT -// Copyright 2024 AffineScript Contributors - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell //! Package Manifest (affine.toml) //! //! Defines the package metadata and dependencies. diff --git a/tools/affine-pkg/src/registry.rs b/tools/affine-pkg/src/registry.rs index 06462c34..4d793e2e 100644 --- a/tools/affine-pkg/src/registry.rs +++ b/tools/affine-pkg/src/registry.rs @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: Apache-2.0 OR MIT -// Copyright 2024 AffineScript Contributors - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell //! Package Registry Client //! //! Communicates with the AffineScript package registry. diff --git a/tools/affine-pkg/src/resolve.rs b/tools/affine-pkg/src/resolve.rs index ed24393b..268a8c13 100644 --- a/tools/affine-pkg/src/resolve.rs +++ b/tools/affine-pkg/src/resolve.rs @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: Apache-2.0 OR MIT -// Copyright 2024 AffineScript Contributors - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell //! Dependency Resolution //! //! Resolves version constraints to concrete versions. diff --git a/tools/affine-pkg/src/storage.rs b/tools/affine-pkg/src/storage.rs index a9dcea97..f441c27b 100644 --- a/tools/affine-pkg/src/storage.rs +++ b/tools/affine-pkg/src/storage.rs @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: Apache-2.0 OR MIT -// Copyright 2024 AffineScript Contributors - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell //! Content-Addressed Storage //! //! Stores packages by content hash for deduplication (like pnpm). diff --git a/tools/affine-pkg/src/workspace.rs b/tools/affine-pkg/src/workspace.rs index 59d9b6ce..a4dbaf9d 100644 --- a/tools/affine-pkg/src/workspace.rs +++ b/tools/affine-pkg/src/workspace.rs @@ -1,6 +1,5 @@ -// SPDX-License-Identifier: Apache-2.0 OR MIT -// Copyright 2024 AffineScript Contributors - +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell //! Workspace Support //! //! Manages monorepos with multiple packages. diff --git a/tools/affinescript-dap/src/main.rs b/tools/affinescript-dap/src/main.rs index d33981eb..0769aa13 100644 --- a/tools/affinescript-dap/src/main.rs +++ b/tools/affinescript-dap/src/main.rs @@ -1,5 +1,6 @@ -#![forbid(unsafe_code)] // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell +#![forbid(unsafe_code)] //! Debug Adapter Protocol (DAP) implementation for Affinescript //! //! This is a minimal DAP adapter for Affinescript. diff --git a/tools/affinescript-lsp/src/capabilities.rs b/tools/affinescript-lsp/src/capabilities.rs index e08d28e7..a734447b 100644 --- a/tools/affinescript-lsp/src/capabilities.rs +++ b/tools/affinescript-lsp/src/capabilities.rs @@ -1,6 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2024-2026 Jonathan D.A. Jewell (hyperpolymath) - +// Copyright (c) Jonathan D.A. Jewell //! Server Capabilities //! //! Defines what features the language server supports. diff --git a/tools/affinescript-lsp/src/compiler.rs b/tools/affinescript-lsp/src/compiler.rs index 3bdc698c..a3260828 100644 --- a/tools/affinescript-lsp/src/compiler.rs +++ b/tools/affinescript-lsp/src/compiler.rs @@ -1,6 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2024-2026 Jonathan D.A. Jewell (hyperpolymath) - +// Copyright (c) Jonathan D.A. Jewell //! Compiler resolution (INT-10 / #282 — ADR-019 S4). //! //! The AffineScript compiler is a native OCaml binary, not a crate the diff --git a/tools/affinescript-lsp/src/diagnostics.rs b/tools/affinescript-lsp/src/diagnostics.rs index 979e61a8..211235e2 100644 --- a/tools/affinescript-lsp/src/diagnostics.rs +++ b/tools/affinescript-lsp/src/diagnostics.rs @@ -1,6 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2024-2026 Jonathan D.A. Jewell (hyperpolymath) - +// Copyright (c) Jonathan D.A. Jewell //! Diagnostics //! //! Converts AffineScript compiler diagnostics to LSP diagnostics. diff --git a/tools/affinescript-lsp/src/document.rs b/tools/affinescript-lsp/src/document.rs index 933a2c96..6c9c04a6 100644 --- a/tools/affinescript-lsp/src/document.rs +++ b/tools/affinescript-lsp/src/document.rs @@ -1,6 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2024-2026 Jonathan D.A. Jewell (hyperpolymath) - +// Copyright (c) Jonathan D.A. Jewell //! Document Management //! //! Tracks open documents and their state. diff --git a/tools/affinescript-lsp/src/handlers.rs b/tools/affinescript-lsp/src/handlers.rs index bd514173..423ba30e 100644 --- a/tools/affinescript-lsp/src/handlers.rs +++ b/tools/affinescript-lsp/src/handlers.rs @@ -1,6 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2024-2026 Jonathan D.A. Jewell (hyperpolymath) - +// Copyright (c) Jonathan D.A. Jewell //! Request Handlers //! //! Implementation of LSP request handlers for AffineScript. diff --git a/tools/affinescript-lsp/src/main.rs b/tools/affinescript-lsp/src/main.rs index 8198f32c..89730ec4 100644 --- a/tools/affinescript-lsp/src/main.rs +++ b/tools/affinescript-lsp/src/main.rs @@ -1,6 +1,6 @@ -#![forbid(unsafe_code)] // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2024-2026 Jonathan D.A. Jewell (hyperpolymath) +// Copyright (c) Jonathan D.A. Jewell +#![forbid(unsafe_code)] //! AffineScript Language Server //! diff --git a/tools/affinescript-lsp/src/symbols.rs b/tools/affinescript-lsp/src/symbols.rs index eea9ac22..c2daf8d4 100644 --- a/tools/affinescript-lsp/src/symbols.rs +++ b/tools/affinescript-lsp/src/symbols.rs @@ -1,6 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2024-2026 Jonathan D.A. Jewell (hyperpolymath) - +// Copyright (c) Jonathan D.A. Jewell //! Phase B: Symbol Table and References //! //! Parses the v2 `--json` contract's `symbols` and `references` fields. diff --git a/tools/affinescript-lsp/src/text_index.rs b/tools/affinescript-lsp/src/text_index.rs index bc86f776..a1f8d2e6 100644 --- a/tools/affinescript-lsp/src/text_index.rs +++ b/tools/affinescript-lsp/src/text_index.rs @@ -1,6 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2024-2026 Jonathan D.A. Jewell (hyperpolymath) - +// Copyright (c) Jonathan D.A. Jewell //! Text-Based Symbol Index (Phase C) //! //! Provides a fallback symbol index by scanning AffineScript source text for diff --git a/tools/estate-rs-audit/README.adoc b/tools/estate-rs-audit/README.adoc index 9ca6dd7e..d6e47617 100644 --- a/tools/estate-rs-audit/README.adoc +++ b/tools/estate-rs-audit/README.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell // SPDX-FileCopyrightText: 2024-2026 hyperpolymath = Estate ReScript-surface elimination — campaign infrastructure :toc: macro diff --git a/tools/estate-rs-audit/data/results.post228.tsv b/tools/estate-rs-audit/data/results.post228.tsv index 6aa4aecb..7710af74 100644 --- a/tools/estate-rs-audit/data/results.post228.tsv +++ b/tools/estate-rs-audit/data/results.post228.tsv @@ -1113,16 +1113,16 @@ standards consent-aware-http/src/Aibdp.affine DRIFT-SYNTAX /home/hyperpolymath/d standards consent-aware-http/src/Express.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/consent-aware-http/src/Express.affine:13:40: parse error: Syntax error standards consent-aware-http/src/Node.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/consent-aware-http/src/Node.affine:4:12: parse error: Syntax error standards ecosystem-a2ml/examples/SafeDOMExample.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/ecosystem-a2ml/examples/SafeDOMExample.affine:11:28: parse error: Syntax error -standards k9-svc/actions/validate/examples/SafeDOMExample.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/k9-svc/actions/validate/examples/SafeDOMExample.affine:11:28: parse error: Syntax error -standards k9-svc/bindings/deno/examples/SafeDOMExample.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/k9-svc/bindings/deno/examples/SafeDOMExample.affine:11:28: parse error: Syntax error -standards k9-svc/bindings/deno/src/K9.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/k9-svc/bindings/deno/src/K9.affine:25:1: parse error: Syntax error -standards k9-svc/bindings/deno/src/K9_Parser.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/k9-svc/bindings/deno/src/K9_Parser.affine:11:34: parse error: Syntax error -standards k9-svc/bindings/deno/src/K9_Renderer.affine TYPE-ONLY Resolution error: (Resolve.UndefinedModule -standards k9-svc/bindings/deno/src/K9_Types.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/k9-svc/bindings/deno/src/K9_Types.affine:9:34: parse error: Syntax error -standards k9-svc/bindings/haskell/examples/SafeDOMExample.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/k9-svc/bindings/haskell/examples/SafeDOMExample.affine:11:28: parse error: Syntax error -standards k9-svc/bindings/rust/examples/SafeDOMExample.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/k9-svc/bindings/rust/examples/SafeDOMExample.affine:11:28: parse error: Syntax error -standards k9-svc/editors/vscode/examples/SafeDOMExample.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/k9-svc/editors/vscode/examples/SafeDOMExample.affine:11:28: parse error: Syntax error -standards k9-svc/pandoc/examples/SafeDOMExample.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/k9-svc/pandoc/examples/SafeDOMExample.affine:11:28: parse error: Syntax error +standards self-validating/actions/validate/examples/SafeDOMExample.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/self-validating/actions/validate/examples/SafeDOMExample.affine:11:28: parse error: Syntax error +standards self-validating/bindings/deno/examples/SafeDOMExample.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/self-validating/bindings/deno/examples/SafeDOMExample.affine:11:28: parse error: Syntax error +standards self-validating/bindings/deno/src/K9.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/self-validating/bindings/deno/src/K9.affine:25:1: parse error: Syntax error +standards self-validating/bindings/deno/src/K9_Parser.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/self-validating/bindings/deno/src/K9_Parser.affine:11:34: parse error: Syntax error +standards self-validating/bindings/deno/src/K9_Renderer.affine TYPE-ONLY Resolution error: (Resolve.UndefinedModule +standards self-validating/bindings/deno/src/K9_Types.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/self-validating/bindings/deno/src/K9_Types.affine:9:34: parse error: Syntax error +standards self-validating/bindings/haskell/examples/SafeDOMExample.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/self-validating/bindings/haskell/examples/SafeDOMExample.affine:11:28: parse error: Syntax error +standards self-validating/bindings/rust/examples/SafeDOMExample.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/self-validating/bindings/rust/examples/SafeDOMExample.affine:11:28: parse error: Syntax error +standards self-validating/editors/vscode/examples/SafeDOMExample.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/self-validating/editors/vscode/examples/SafeDOMExample.affine:11:28: parse error: Syntax error +standards self-validating/pandoc/examples/SafeDOMExample.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/self-validating/pandoc/examples/SafeDOMExample.affine:11:28: parse error: Syntax error standards lol/src/Lang1000.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/lol/src/Lang1000.affine:18:39: parse error: Syntax error standards lol/src/api/DigitalBiblePlatform.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/lol/src/api/DigitalBiblePlatform.affine:11:40: parse error: Syntax error standards lol/src/crawlers/BibleCloud.affine DRIFT-SYNTAX /home/hyperpolymath/dev/repos/.affine-audit/clones/standards/lol/src/crawlers/BibleCloud.affine:12:40: parse error: Syntax error diff --git a/tools/estate-rs-audit/data/rs-inventory.tsv b/tools/estate-rs-audit/data/rs-inventory.tsv index 79918980..d0ae8df6 100644 --- a/tools/estate-rs-audit/data/rs-inventory.tsv +++ b/tools/estate-rs-audit/data/rs-inventory.tsv @@ -566,16 +566,16 @@ standards consent-aware-http/src/Aibdp.affine 0 standards consent-aware-http/src/Express.affine 0 standards consent-aware-http/src/Node.affine 0 standards ecosystem-a2ml/examples/SafeDOMExample.affine 0 -standards k9-svc/actions/validate/examples/SafeDOMExample.affine 0 -standards k9-svc/bindings/deno/examples/SafeDOMExample.affine 0 -standards k9-svc/bindings/deno/src/K9.affine 0 -standards k9-svc/bindings/deno/src/K9_Parser.affine 0 -standards k9-svc/bindings/deno/src/K9_Renderer.affine 0 -standards k9-svc/bindings/deno/src/K9_Types.affine 0 -standards k9-svc/bindings/haskell/examples/SafeDOMExample.affine 0 -standards k9-svc/bindings/rust/examples/SafeDOMExample.affine 0 -standards k9-svc/editors/vscode/examples/SafeDOMExample.affine 0 -standards k9-svc/pandoc/examples/SafeDOMExample.affine 0 +standards self-validating/actions/validate/examples/SafeDOMExample.affine 0 +standards self-validating/bindings/deno/examples/SafeDOMExample.affine 0 +standards self-validating/bindings/deno/src/K9.affine 0 +standards self-validating/bindings/deno/src/K9_Parser.affine 0 +standards self-validating/bindings/deno/src/K9_Renderer.affine 0 +standards self-validating/bindings/deno/src/K9_Types.affine 0 +standards self-validating/bindings/haskell/examples/SafeDOMExample.affine 0 +standards self-validating/bindings/rust/examples/SafeDOMExample.affine 0 +standards self-validating/editors/vscode/examples/SafeDOMExample.affine 0 +standards self-validating/pandoc/examples/SafeDOMExample.affine 0 standards lol/src/Lang1000.affine 0 standards lol/src/api/DigitalBiblePlatform.affine 0 standards lol/src/crawlers/BibleCloud.affine 0 diff --git a/tools/res-to-affine/CORPUS-RUN.md b/tools/res-to-affine/CORPUS-RUN.md index 017b2cef..c7ef2b24 100644 --- a/tools/res-to-affine/CORPUS-RUN.md +++ b/tools/res-to-affine/CORPUS-RUN.md @@ -1,4 +1,7 @@ - + # `res-to-affine` — Phase-1 corpus run (2026-05-21) diff --git a/tools/res-to-affine/README.md b/tools/res-to-affine/README.md index 7da64140..614225fc 100644 --- a/tools/res-to-affine/README.md +++ b/tools/res-to-affine/README.md @@ -1,4 +1,7 @@ - + # `res-to-affine` — ReScript-to-AffineScript migration assistant diff --git a/wiki/README.md b/wiki/README.md index 4b38acdc..445a2e3f 100644 --- a/wiki/README.md +++ b/wiki/README.md @@ -1,4 +1,7 @@ - + # AffineScript Wiki diff --git a/wiki/compiler/architecture.md b/wiki/compiler/architecture.md index 9cd99a8b..97167b62 100644 --- a/wiki/compiler/architecture.md +++ b/wiki/compiler/architecture.md @@ -1,3 +1,7 @@ + # Compiler Architecture This document describes the architecture of the AffineScript compiler. diff --git a/wiki/compiler/borrow-checker.md b/wiki/compiler/borrow-checker.md index 55b396b8..0f464c8b 100644 --- a/wiki/compiler/borrow-checker.md +++ b/wiki/compiler/borrow-checker.md @@ -1,3 +1,7 @@ + # Borrow Checker The AffineScript borrow checker verifies ownership and borrowing rules at compile time. diff --git a/wiki/compiler/codegen.md b/wiki/compiler/codegen.md index 7af572da..b312c3ce 100644 --- a/wiki/compiler/codegen.md +++ b/wiki/compiler/codegen.md @@ -1,3 +1,7 @@ + # Code Generation The AffineScript code generator emits WebAssembly from the typed and verified AST. diff --git a/wiki/compiler/lexer.md b/wiki/compiler/lexer.md index b389ae0f..f03271e7 100644 --- a/wiki/compiler/lexer.md +++ b/wiki/compiler/lexer.md @@ -1,3 +1,7 @@ + # Lexer Implementation The AffineScript lexer converts source text into a stream of tokens. diff --git a/wiki/compiler/parser.md b/wiki/compiler/parser.md index 3e6f2cc0..e11bb357 100644 --- a/wiki/compiler/parser.md +++ b/wiki/compiler/parser.md @@ -1,3 +1,7 @@ + # Parser Implementation The AffineScript parser converts tokens into a Concrete Syntax Tree (CST). diff --git a/wiki/compiler/type-checker.md b/wiki/compiler/type-checker.md index 5d437cc9..8c83101e 100644 --- a/wiki/compiler/type-checker.md +++ b/wiki/compiler/type-checker.md @@ -1,3 +1,7 @@ + # Type Checker The AffineScript type checker implements bidirectional type inference with support for dependent types, row polymorphism, and effects. diff --git a/wiki/language-reference/dependent-types.md b/wiki/language-reference/dependent-types.md index b446d1aa..4de3bd50 100644 --- a/wiki/language-reference/dependent-types.md +++ b/wiki/language-reference/dependent-types.md @@ -1,3 +1,7 @@ + # Dependent Types > **⚠️ Current state: `parse-only`.** diff --git a/wiki/language-reference/effects.md b/wiki/language-reference/effects.md index 3d4c9de2..ad1b508e 100644 --- a/wiki/language-reference/effects.md +++ b/wiki/language-reference/effects.md @@ -1,3 +1,7 @@ + # Algebraic Effects AffineScript features an algebraic effect system for controlled side effects, enabling pure functional programming with practical I/O capabilities. diff --git a/wiki/language-reference/functions.md b/wiki/language-reference/functions.md index d8f35b8e..3d6b6ca7 100644 --- a/wiki/language-reference/functions.md +++ b/wiki/language-reference/functions.md @@ -1,3 +1,7 @@ + # Functions Functions are the primary building blocks of AffineScript programs. diff --git a/wiki/language-reference/lexical.md b/wiki/language-reference/lexical.md index 9db74d2c..399aff41 100644 --- a/wiki/language-reference/lexical.md +++ b/wiki/language-reference/lexical.md @@ -1,3 +1,7 @@ + # Lexical Structure This document describes the lexical structure of AffineScript - how source code is broken into tokens. diff --git a/wiki/language-reference/modules.md b/wiki/language-reference/modules.md index 07e6e4f2..5cae636c 100644 --- a/wiki/language-reference/modules.md +++ b/wiki/language-reference/modules.md @@ -1,3 +1,7 @@ + # Module System AffineScript's module system organizes code into logical units with controlled visibility. diff --git a/wiki/language-reference/ownership.md b/wiki/language-reference/ownership.md index ee2e3e96..415367bc 100644 --- a/wiki/language-reference/ownership.md +++ b/wiki/language-reference/ownership.md @@ -1,3 +1,7 @@ + # Ownership and Borrowing AffineScript uses an ownership system inspired by Rust and linear types from type theory. This ensures memory safety without garbage collection. diff --git a/wiki/language-reference/patterns.md b/wiki/language-reference/patterns.md index 4c4ec57a..28e89219 100644 --- a/wiki/language-reference/patterns.md +++ b/wiki/language-reference/patterns.md @@ -1,3 +1,7 @@ + # Pattern Matching Pattern matching is a powerful feature for destructuring and conditionally binding values. diff --git a/wiki/language-reference/rows.md b/wiki/language-reference/rows.md index 985b2738..ac547dca 100644 --- a/wiki/language-reference/rows.md +++ b/wiki/language-reference/rows.md @@ -1,3 +1,7 @@ + # Row Polymorphism Row polymorphism enables flexible, type-safe operations on extensible records and variants. diff --git a/wiki/language-reference/traits.md b/wiki/language-reference/traits.md index e691e800..df6f3232 100644 --- a/wiki/language-reference/traits.md +++ b/wiki/language-reference/traits.md @@ -1,3 +1,7 @@ + # Traits > **⚠️ Current state: `partial`.** diff --git a/wiki/language-reference/types.md b/wiki/language-reference/types.md index eeedc403..0590e1ee 100644 --- a/wiki/language-reference/types.md +++ b/wiki/language-reference/types.md @@ -1,3 +1,7 @@ + # Type System AffineScript features an advanced type system combining: diff --git a/wiki/stdlib/overview.md b/wiki/stdlib/overview.md index 381701f2..0c156ab3 100644 --- a/wiki/stdlib/overview.md +++ b/wiki/stdlib/overview.md @@ -1,3 +1,7 @@ + # Standard Library Overview The AffineScript standard library provides essential types, traits, and functions. diff --git a/wiki/testing/guide.md b/wiki/testing/guide.md index cdb54b46..d857d755 100644 --- a/wiki/testing/guide.md +++ b/wiki/testing/guide.md @@ -1,3 +1,7 @@ + # Testing Guide Comprehensive guide to testing AffineScript programs and the compiler itself. diff --git a/wiki/testing/property-based.md b/wiki/testing/property-based.md index 335886e8..835d291a 100644 --- a/wiki/testing/property-based.md +++ b/wiki/testing/property-based.md @@ -1,3 +1,7 @@ + # Property-Based Testing Property-based testing generates random test cases to verify that properties hold for all inputs. diff --git a/wiki/tooling/cli.md b/wiki/tooling/cli.md index 06136313..0d9f28e5 100644 --- a/wiki/tooling/cli.md +++ b/wiki/tooling/cli.md @@ -1,3 +1,7 @@ + # Command-Line Interface The AffineScript CLI provides commands for compiling, testing, and managing projects. diff --git a/wiki/tooling/repl.md b/wiki/tooling/repl.md index bcfeeb43..6e50c315 100644 --- a/wiki/tooling/repl.md +++ b/wiki/tooling/repl.md @@ -1,3 +1,7 @@ + # REPL Guide The AffineScript REPL (Read-Eval-Print Loop) provides an interactive environment for exploring the language. diff --git a/wiki/tutorials/introduction.md b/wiki/tutorials/introduction.md index e74a426d..34f80ccc 100644 --- a/wiki/tutorials/introduction.md +++ b/wiki/tutorials/introduction.md @@ -1,3 +1,7 @@ + # Introduction to AffineScript AffineScript is a modern systems programming language that combines safety, expressiveness, and performance. diff --git a/wiki/tutorials/quickstart.md b/wiki/tutorials/quickstart.md index bfa9ab26..39caecac 100644 --- a/wiki/tutorials/quickstart.md +++ b/wiki/tutorials/quickstart.md @@ -1,3 +1,7 @@ + # Quick Start Guide Get up and running with AffineScript in 10 minutes. From da6bcf38859819e0db6decccba0e008a397a6565 Mon Sep 17 00:00:00 2001 From: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com> Date: Thu, 4 Jun 2026 18:55:10 +0100 Subject: [PATCH 6/8] chore: rename agent_instructions to bot_directives for spec alignment --- .machine_readable/6a2/STATE.a2ml | 8 ++++---- .machine_readable/6a2/anchor/ANCHOR.a2ml | 8 ++++---- .../README.adoc | 0 .../coverage.a2ml | 0 .../{agent_instructions => bot_directives}/debt.a2ml | 0 .../methodology.a2ml | 0 0-AI-MANIFEST.a2ml | 4 ++-- affinescript-vite/.machine_readable/6a2/AGENTIC.a2ml | 12 ++++++------ .../README.adoc | 2 +- .../coverage.a2ml | 0 .../{agent_instructions => bot_directives}/debt.a2ml | 0 .../methodology.a2ml | 0 affinescript-vite/0-AI-MANIFEST.a2ml | 2 +- affinescript-vite/Justfile | 4 ++-- .../README.adoc | 2 +- .../coverage.a2ml | 0 .../{agent_instructions => bot_directives}/debt.a2ml | 0 .../methodology.a2ml | 0 18 files changed, 21 insertions(+), 21 deletions(-) rename .machine_readable/{agent_instructions => bot_directives}/README.adoc (100%) rename .machine_readable/{agent_instructions => bot_directives}/coverage.a2ml (100%) rename .machine_readable/{agent_instructions => bot_directives}/debt.a2ml (100%) rename .machine_readable/{agent_instructions => bot_directives}/methodology.a2ml (100%) rename affinescript-vite/.machine_readable/{agent_instructions => bot_directives}/README.adoc (94%) rename affinescript-vite/.machine_readable/{agent_instructions => bot_directives}/coverage.a2ml (100%) rename affinescript-vite/.machine_readable/{agent_instructions => bot_directives}/debt.a2ml (100%) rename affinescript-vite/.machine_readable/{agent_instructions => bot_directives}/methodology.a2ml (100%) rename affinescriptiser/.machine_readable/{agent_instructions => bot_directives}/README.adoc (94%) rename affinescriptiser/.machine_readable/{agent_instructions => bot_directives}/coverage.a2ml (100%) rename affinescriptiser/.machine_readable/{agent_instructions => bot_directives}/debt.a2ml (100%) rename affinescriptiser/.machine_readable/{agent_instructions => bot_directives}/methodology.a2ml (100%) diff --git a/.machine_readable/6a2/STATE.a2ml b/.machine_readable/6a2/STATE.a2ml index ded6c5d8..3c203424 100644 --- a/.machine_readable/6a2/STATE.a2ml +++ b/.machine_readable/6a2/STATE.a2ml @@ -227,10 +227,10 @@ added = [ ".machine_readable/contractiles/ (migrated from root via git mv — history preserved)", ".machine_readable/contractiles/adjust/Adjustfile.a2ml", ".machine_readable/contractiles/intend/Intentfile.a2ml", - ".machine_readable/agent_instructions/README.adoc", - ".machine_readable/agent_instructions/coverage.a2ml", - ".machine_readable/agent_instructions/debt.a2ml", - ".machine_readable/agent_instructions/methodology.a2ml", + ".machine_readable/bot_directives/README.adoc", + ".machine_readable/bot_directives/coverage.a2ml", + ".machine_readable/bot_directives/debt.a2ml", + ".machine_readable/bot_directives/methodology.a2ml", ".machine_readable/integrations/verisimdb.a2ml", ".machine_readable/integrations/vexometer.a2ml", ".machine_readable/ADJUST.contractile", diff --git a/.machine_readable/6a2/anchor/ANCHOR.a2ml b/.machine_readable/6a2/anchor/ANCHOR.a2ml index 96427e39..c45b6d6b 100644 --- a/.machine_readable/6a2/anchor/ANCHOR.a2ml +++ b/.machine_readable/6a2/anchor/ANCHOR.a2ml @@ -5,7 +5,7 @@ # the language scope from bot-drift back to user intent. This ANCHOR is # retroactive: the project predates the ANCHOR.a2ml convention, and a full # .machine_readable/ suite upgrade (anchors/, CLADE.a2ml, contractiles/, -# agent_instructions/, integrations/, top-level .contractile files) is deferred +# bot_directives/, integrations/, top-level .contractile files) is deferred # as separate work — see STATE.a2ml [deferred-upgrade]. id: "org.hyperpolymath.affinescript" @@ -109,7 +109,7 @@ realignment-history: Brought .machine_readable/ up to the canonical standards repo shape. Migrated root contractiles/ → .machine_readable/contractiles/ (git mv, history preserved). Added: CLADE.a2ml, contractiles/adjust/Adjustfile.a2ml, - contractiles/intend/Intentfile.a2ml, agent_instructions/ (README + coverage + contractiles/intend/Intentfile.a2ml, bot_directives/ (README + coverage + debt + methodology), integrations/ (verisimdb + vexometer), ADJUST.contractile, INTENT.contractile, MUST.contractile, TRUST.contractile. STATE.a2ml [deferred-upgrade] marked done. @@ -118,7 +118,7 @@ realignment-history: - ".machine_readable/ now matches canonical standards shape" - "root contractiles/ migrated to .machine_readable/contractiles/" - "CLADE.a2ml added (clade=language)" - - "agent_instructions/ + integrations/ added" + - "bot_directives/ + integrations/ added" - "top-level .contractile instance files added" - "ANCHOR notes section updated" @@ -176,4 +176,4 @@ notes: > now matches the canonical standards repo shape. The minimum captured in the first ANCHOR (identity, thesis, authorities, relationships, manhattan-recovery) is preserved; the suite-upgrade adds the contractile instance files, - CLADE.a2ml, agent_instructions/, and integrations/. + CLADE.a2ml, bot_directives/, and integrations/. diff --git a/.machine_readable/agent_instructions/README.adoc b/.machine_readable/bot_directives/README.adoc similarity index 100% rename from .machine_readable/agent_instructions/README.adoc rename to .machine_readable/bot_directives/README.adoc diff --git a/.machine_readable/agent_instructions/coverage.a2ml b/.machine_readable/bot_directives/coverage.a2ml similarity index 100% rename from .machine_readable/agent_instructions/coverage.a2ml rename to .machine_readable/bot_directives/coverage.a2ml diff --git a/.machine_readable/agent_instructions/debt.a2ml b/.machine_readable/bot_directives/debt.a2ml similarity index 100% rename from .machine_readable/agent_instructions/debt.a2ml rename to .machine_readable/bot_directives/debt.a2ml diff --git a/.machine_readable/agent_instructions/methodology.a2ml b/.machine_readable/bot_directives/methodology.a2ml similarity index 100% rename from .machine_readable/agent_instructions/methodology.a2ml rename to .machine_readable/bot_directives/methodology.a2ml diff --git a/0-AI-MANIFEST.a2ml b/0-AI-MANIFEST.a2ml index e8ab0b19..e4506099 100644 --- a/0-AI-MANIFEST.a2ml +++ b/0-AI-MANIFEST.a2ml @@ -19,7 +19,7 @@ Project metadata and AI agent configuration files live under `.machine_readable/ - **CLADE.a2ml** - Phylogenetic context within the estate - **anchors/ANCHOR.a2ml** - Stable references for tooling -## Agent guidance (`.machine_readable/agent_instructions/`) +## Agent guidance (`.machine_readable/bot_directives/`) - **methodology.a2ml** - Required checks (dune build / dune runtest must pass; see for the full list) - **coverage.a2ml**, **debt.a2ml** - Tracked metrics @@ -32,6 +32,6 @@ Project metadata and AI agent configuration files live under `.machine_readable/ 1. Read `.machine_readable/6a2/*.a2ml` files at session start 2. Check `STATE.a2ml` for current phase, blockers, next actions 3. Follow patterns and constraints from `AGENTIC.a2ml` -4. Follow methodology gates from `agent_instructions/methodology.a2ml` +4. Follow methodology gates from `bot_directives/methodology.a2ml` 5. Update `STATE.a2ml` after completing work 6. Sync to database: `~/sync-language-tracker.sh` diff --git a/affinescript-vite/.machine_readable/6a2/AGENTIC.a2ml b/affinescript-vite/.machine_readable/6a2/AGENTIC.a2ml index ab45d06a..f8a8c333 100644 --- a/affinescript-vite/.machine_readable/6a2/AGENTIC.a2ml +++ b/affinescript-vite/.machine_readable/6a2/AGENTIC.a2ml @@ -34,18 +34,18 @@ release-claim-requires-hard-pass = true # METHODOLOGY (ADR-002) # ============================================================================ # Detailed methodology configuration lives in: -# .machine_readable/agent_instructions/methodology.a2ml -# .machine_readable/agent_instructions/coverage.a2ml -# .machine_readable/agent_instructions/debt.a2ml +# .machine_readable/bot_directives/methodology.a2ml +# .machine_readable/bot_directives/coverage.a2ml +# .machine_readable/bot_directives/debt.a2ml # # AGENTIC.a2ml declares WHAT agents can do (permissions, gating). -# agent_instructions/ declares HOW agents should work (methodology). +# bot_directives/ declares HOW agents should work (methodology). [methodology] -instructions-dir = ".machine_readable/agent_instructions/" +instructions-dir = ".machine_readable/bot_directives/" default-mode = "hybrid" [automation-hooks] -# on-enter: Read 0-AI-MANIFEST.a2ml, then STATE.a2ml, then agent_instructions/ +# on-enter: Read 0-AI-MANIFEST.a2ml, then STATE.a2ml, then bot_directives/ # on-exit: Update STATE.a2ml, coverage.a2ml, and debt.a2ml with session outcomes # on-commit: Run just validate-rsr diff --git a/affinescript-vite/.machine_readable/agent_instructions/README.adoc b/affinescript-vite/.machine_readable/bot_directives/README.adoc similarity index 94% rename from affinescript-vite/.machine_readable/agent_instructions/README.adoc rename to affinescript-vite/.machine_readable/bot_directives/README.adoc index e5fec014..a5315c7d 100644 --- a/affinescript-vite/.machine_readable/agent_instructions/README.adoc +++ b/affinescript-vite/.machine_readable/bot_directives/README.adoc @@ -32,7 +32,7 @@ Methodology-aware configuration for AI agents. Read by any AI agent == Relationship to Other Files * `AGENTIC.a2ml` says WHAT agents can do (permissions, gating) -* `agent_instructions/` says HOW agents should work (methodology) +* `bot_directives/` says HOW agents should work (methodology) * `bot_directives/` says what the gitbot-fleet does (fleet-specific) * `CLAUDE.md` says how Claude specifically should work (Claude-specific) diff --git a/affinescript-vite/.machine_readable/agent_instructions/coverage.a2ml b/affinescript-vite/.machine_readable/bot_directives/coverage.a2ml similarity index 100% rename from affinescript-vite/.machine_readable/agent_instructions/coverage.a2ml rename to affinescript-vite/.machine_readable/bot_directives/coverage.a2ml diff --git a/affinescript-vite/.machine_readable/agent_instructions/debt.a2ml b/affinescript-vite/.machine_readable/bot_directives/debt.a2ml similarity index 100% rename from affinescript-vite/.machine_readable/agent_instructions/debt.a2ml rename to affinescript-vite/.machine_readable/bot_directives/debt.a2ml diff --git a/affinescript-vite/.machine_readable/agent_instructions/methodology.a2ml b/affinescript-vite/.machine_readable/bot_directives/methodology.a2ml similarity index 100% rename from affinescript-vite/.machine_readable/agent_instructions/methodology.a2ml rename to affinescript-vite/.machine_readable/bot_directives/methodology.a2ml diff --git a/affinescript-vite/0-AI-MANIFEST.a2ml b/affinescript-vite/0-AI-MANIFEST.a2ml index 60e63a94..c6dc0151 100644 --- a/affinescript-vite/0-AI-MANIFEST.a2ml +++ b/affinescript-vite/0-AI-MANIFEST.a2ml @@ -67,7 +67,7 @@ Policy enforcement contracts (k9, dust, lust, must, trust). - `CONTRIBUTING.md` - Technical contribution manual - `CODE_OF_CONDUCT.md` - Conduct rules -### Agent Instructions: `.machine_readable/agent_instructions/` ONLY +### Agent Instructions: `.machine_readable/bot_directives/` ONLY Methodology-aware AI agent configuration (ADR-002): - `methodology.a2ml` - Mode, invariants, ring ceiling, priority weights diff --git a/affinescript-vite/Justfile b/affinescript-vite/Justfile index 10cc0309..75b18dfd 100644 --- a/affinescript-vite/Justfile +++ b/affinescript-vite/Justfile @@ -499,8 +499,8 @@ self-assess: echo " ready for automated maintenance when the fleet arrives." fi - if [ -d ".machine_readable/agent_instructions" ]; then - echo " ◆ agent_instructions/ — AI agent methodology config." + if [ -d ".machine_readable/bot_directives" ]; then + echo " ◆ bot_directives/ — AI agent methodology config." echo " Guides Claude/Gemini/etc on how to work in this repo." echo " No cost to keep. Improves AI assistance quality." fi diff --git a/affinescriptiser/.machine_readable/agent_instructions/README.adoc b/affinescriptiser/.machine_readable/bot_directives/README.adoc similarity index 94% rename from affinescriptiser/.machine_readable/agent_instructions/README.adoc rename to affinescriptiser/.machine_readable/bot_directives/README.adoc index e5fec014..a5315c7d 100644 --- a/affinescriptiser/.machine_readable/agent_instructions/README.adoc +++ b/affinescriptiser/.machine_readable/bot_directives/README.adoc @@ -32,7 +32,7 @@ Methodology-aware configuration for AI agents. Read by any AI agent == Relationship to Other Files * `AGENTIC.a2ml` says WHAT agents can do (permissions, gating) -* `agent_instructions/` says HOW agents should work (methodology) +* `bot_directives/` says HOW agents should work (methodology) * `bot_directives/` says what the gitbot-fleet does (fleet-specific) * `CLAUDE.md` says how Claude specifically should work (Claude-specific) diff --git a/affinescriptiser/.machine_readable/agent_instructions/coverage.a2ml b/affinescriptiser/.machine_readable/bot_directives/coverage.a2ml similarity index 100% rename from affinescriptiser/.machine_readable/agent_instructions/coverage.a2ml rename to affinescriptiser/.machine_readable/bot_directives/coverage.a2ml diff --git a/affinescriptiser/.machine_readable/agent_instructions/debt.a2ml b/affinescriptiser/.machine_readable/bot_directives/debt.a2ml similarity index 100% rename from affinescriptiser/.machine_readable/agent_instructions/debt.a2ml rename to affinescriptiser/.machine_readable/bot_directives/debt.a2ml diff --git a/affinescriptiser/.machine_readable/agent_instructions/methodology.a2ml b/affinescriptiser/.machine_readable/bot_directives/methodology.a2ml similarity index 100% rename from affinescriptiser/.machine_readable/agent_instructions/methodology.a2ml rename to affinescriptiser/.machine_readable/bot_directives/methodology.a2ml From ce0b63971f01112ddc5a801f50ed840e3f6d56d5 Mon Sep 17 00:00:00 2001 From: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com> Date: Sun, 7 Jun 2026 23:07:52 +0100 Subject: [PATCH 7/8] Apply estate standardization: governance docs, contractiles, CI/CD cleanup --- .github/CODEOWNERS | 34 + .machine_readable/ADJUST.contractile | 38 - .machine_readable/INTENT.contractile | 40 - .machine_readable/MUST.contractile | 52 -- .machine_readable/TRUST.contractile | 38 - .../contractiles/Adjustfile.a2ml | 72 ++ .../contractiles/Intentfile.a2ml | 99 +++ .machine_readable/contractiles/Justfile | 783 ++++++++++++++++++ .machine_readable/contractiles/Mustfile.a2ml | 102 +++ .machine_readable/contractiles/Trustfile.a2ml | 88 ++ .../contractiles/adjust/Adjustfile.a2ml | 51 -- .machine_readable/contractiles/dust/Dustfile | 29 - .../contractiles/intend/Intentfile.a2ml | 54 -- .machine_readable/contractiles/must/Mustfile | 35 - .../contractiles/trust/Trustfile.hs | 105 --- GOVERNANCE.adoc | 162 ++++ Justfile | 783 ++++++++++++++++++ .../.machine_readable/ADJUST.contractile | 126 --- .../.machine_readable/INTENT.contractile | 72 -- .../.machine_readable/MUST.contractile | 91 -- .../.machine_readable/TRUST.contractile | 80 -- .../contractiles/Adjustfile.a2ml | 15 + .../contractiles/Intentfile.a2ml | 25 + .../contractiles/Mustfile.a2ml | 14 + .../contractiles/Trustfile.a2ml | 14 + affinescript-vite/flake.nix | 170 ---- .../.machine_readable/ADJUST.contractile | 126 --- .../.machine_readable/INTENT.contractile | 72 -- .../.machine_readable/MUST.contractile | 91 -- .../.machine_readable/TRUST.contractile | 80 -- .../contractiles/Adjustfile.a2ml | 15 + .../contractiles/Intentfile.a2ml | 25 + .../contractiles/Mustfile.a2ml | 14 + .../contractiles/Trustfile.a2ml | 14 + 34 files changed, 2259 insertions(+), 1350 deletions(-) create mode 100644 .github/CODEOWNERS delete mode 100644 .machine_readable/ADJUST.contractile delete mode 100644 .machine_readable/INTENT.contractile delete mode 100644 .machine_readable/MUST.contractile delete mode 100644 .machine_readable/TRUST.contractile create mode 100644 .machine_readable/contractiles/Adjustfile.a2ml create mode 100644 .machine_readable/contractiles/Intentfile.a2ml create mode 100644 .machine_readable/contractiles/Justfile create mode 100644 .machine_readable/contractiles/Mustfile.a2ml create mode 100644 .machine_readable/contractiles/Trustfile.a2ml delete mode 100644 .machine_readable/contractiles/adjust/Adjustfile.a2ml delete mode 100644 .machine_readable/contractiles/dust/Dustfile delete mode 100644 .machine_readable/contractiles/intend/Intentfile.a2ml delete mode 100644 .machine_readable/contractiles/must/Mustfile delete mode 100644 .machine_readable/contractiles/trust/Trustfile.hs create mode 100644 GOVERNANCE.adoc create mode 100644 Justfile delete mode 100644 affinescript-vite/.machine_readable/ADJUST.contractile delete mode 100644 affinescript-vite/.machine_readable/INTENT.contractile delete mode 100644 affinescript-vite/.machine_readable/MUST.contractile delete mode 100644 affinescript-vite/.machine_readable/TRUST.contractile create mode 100644 affinescript-vite/.machine_readable/contractiles/Adjustfile.a2ml create mode 100644 affinescript-vite/.machine_readable/contractiles/Intentfile.a2ml create mode 100644 affinescript-vite/.machine_readable/contractiles/Mustfile.a2ml create mode 100644 affinescript-vite/.machine_readable/contractiles/Trustfile.a2ml delete mode 100644 affinescript-vite/flake.nix delete mode 100644 affinescriptiser/.machine_readable/ADJUST.contractile delete mode 100644 affinescriptiser/.machine_readable/INTENT.contractile delete mode 100644 affinescriptiser/.machine_readable/MUST.contractile delete mode 100644 affinescriptiser/.machine_readable/TRUST.contractile create mode 100644 affinescriptiser/.machine_readable/contractiles/Adjustfile.a2ml create mode 100644 affinescriptiser/.machine_readable/contractiles/Intentfile.a2ml create mode 100644 affinescriptiser/.machine_readable/contractiles/Mustfile.a2ml create mode 100644 affinescriptiser/.machine_readable/contractiles/Trustfile.a2ml diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000..3a3b7f20 --- /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/.machine_readable/ADJUST.contractile b/.machine_readable/ADJUST.contractile deleted file mode 100644 index d191304d..00000000 --- a/.machine_readable/ADJUST.contractile +++ /dev/null @@ -1,38 +0,0 @@ -; SPDX-License-Identifier: MPL-2.0 -; ADJUST.contractile — Accessibility instance for AffineScript -; Compiler/LSP accessibility — subset of WCAG 2.2 AA applicable to developer tools. - -(adjust-contractile - (version "1.0.0") - (repo "nextgen-languages/affinescript") - (standard "CLI-accessible (WCAG 2.2 AA where applicable to developer tools)") - - (invariants - ; ── CLI output ── - (adjust "all error messages include file:line:col — not just a message") - (adjust "error messages use plain language — not jargon codes alone") - (adjust "no information conveyed by ANSI colour alone (symbol + colour)") - (adjust "output safe in non-TTY (piped to file or CI log)") - (adjust "all subcommands support --help with plain-text output") - (adjust "exit codes documented in QUICKSTART-USER.adoc") - - ; ── Affine type errors ── - (adjust "affine/linear violation messages name the variable and say why it is consumed") - (adjust "error code E#### always accompanied by human-readable description") - (adjust "quantity annotation syntax documented in both @annotation and :sugar forms (ADR-007)") - - ; ── LSP ── - (adjust "hover responses in plain Markdown (no raw HTML)") - (adjust "completion items include kind field for screen reader discrimination") - (adjust "diagnostic ranges use start+end, not character offset alone") - - ; ── Documentation ── - (adjust "all diagrams in docs/ have alt text or text description") - (adjust "code examples in guides include explanatory comments") - ) - - (enforcement - (ci "panic-attack checks for colour-only output patterns") - (manual "LSP output reviewed for plain-Markdown compliance on new diagnostic types") - ) -) diff --git a/.machine_readable/INTENT.contractile b/.machine_readable/INTENT.contractile deleted file mode 100644 index 7a8c4043..00000000 --- a/.machine_readable/INTENT.contractile +++ /dev/null @@ -1,40 +0,0 @@ -; SPDX-License-Identifier: MPL-2.0 -; INTENT.contractile — Purpose and anti-scope-creep for AffineScript -; See ANCHOR.a2ml for the full thesis. This file is the machine-readable summary. - -(intent-contractile - (version "1.0.0") - (repo "nextgen-languages/affinescript") - - (purpose - "AffineScript is a programming language with affine types and JavaScript - ergonomics, compiling to Typed WASM. Feature set is fixed by thesis in - ANCHOR.a2ml.") - - (anti-purpose - "NOT a language with dependent types (Typed WASM project)." - "NOT a language with linear types as a separate concept (bot scope creep — subsumed by affine)." - "NOT a language with tropical types (Typed WASM project)." - "NOT a language with units of measure (Typed WASM project)." - "NOT a general-purpose JS replacement.") - - (load-bearing-decisions - (adr "ADR-001" "Split-Γ typing context") - (adr "ADR-002" "Scaled Let rule") - (adr "ADR-003" "Left-to-right evaluation") - (adr "ADR-007" "Quantity annotation surface syntax") - (adr "ADR-010" "Faces architecture")) - - (ecosystem-position - (upstream "nextgen-languages monorepo — sister to Ephapax, WokeLang, Eclexia") - (compile-target-primary "typed-wasm") - (compile-target-secondary "julia") - (downstream-consumer "IDApTIK (AGPL, game engine)") - (downstream-consumer "airborne-submarine-squadron (AGPL, game)")) - - (scope-creep-history - (event "2026-04-10 manhattan-recovery" - "Bot scope creep added linear types, dependent types, algebraic effect - handler ambitions. Scope narrowed back to 8-feature thesis. Three ADRs - adopted. See ANCHOR.a2ml realignment-history for full record.")) -) diff --git a/.machine_readable/MUST.contractile b/.machine_readable/MUST.contractile deleted file mode 100644 index db9e6c11..00000000 --- a/.machine_readable/MUST.contractile +++ /dev/null @@ -1,52 +0,0 @@ -; SPDX-License-Identifier: MPL-2.0 -; MUST.contractile — Hard invariants for AffineScript -; These MUST NOT be violated by any AI agent or human contributor. - -(must-contractile - (version "1.0.0") - (repo "nextgen-languages/affinescript") - - (invariants - - ; === Build === - (must "dune build passes before and after every change") - (must "dune runtest passes — all E2E tests green") - (must "no compilation errors introduced by any commit") - - ; === Safety patterns === - (must "no assert_total in any OCaml file") - (must "no Obj.magic in any OCaml file") - (must "no believe_me in any Idris2 file") - (must "no TODO-as-implementation (stub bodies are forbidden in shipped code; use explicit failwith with a tag)") - - ; === Scope === - (must "thesis in ANCHOR.a2ml is authoritative — new features require a new ADR") - (must "linear types may not be added as a separate concept — they are subsumed by affine types") - (must "dependent types remain out of scope — they belong in the Typed WASM project") - (must "algebraic effect handlers beyond try/catch remain out of scope (ADR-004 extension point only)") - - ; === Architecture === - (must "the Split-Γ typing context (ADR-001) is canonical — do not introduce alternative context shapes") - (must "the Scaled Let rule (ADR-002) governs all let-binding — do not bypass with ad-hoc quantity inference") - (must "left-to-right evaluation order (ADR-003) — do not evaluate argument lists right-to-left") - (must "face-specific logic belongs in lib/face.ml — do not inline face dispatch in parser.mly or typecheck.ml") - - ; === Tests === - (must "every new language feature ships with at least one E2E test in test/e2e/") - (must "regression fixtures must be added when a bug is fixed") - - ; === Licenses === - (must "SPDX-License-Identifier: MPL-2.0 in every source file") - (must "MPL-2.0 as legal fallback (lawyer-confirmed) — no re-labelling needed") - - ; === IDApTIK integration === - (must "do not break the AffineTEA Wasm output consumed by IDApTIK (AGPL project, co-developed with son)") - (must "wasm/titlescreen.wasm, wasm/router.wasm in idaptik/public/assets/wasm/ must remain valid after compiler changes") - ) - - (enforcement - (ci "panic-attack assail runs on every PR") - (ci "dune build + dune runtest in CI") - (pr-block "build failure blocks merge") - ) -) diff --git a/.machine_readable/TRUST.contractile b/.machine_readable/TRUST.contractile deleted file mode 100644 index a1f855ab..00000000 --- a/.machine_readable/TRUST.contractile +++ /dev/null @@ -1,38 +0,0 @@ -; SPDX-License-Identifier: MPL-2.0 -; TRUST.contractile — AI agent trust levels for AffineScript - -(trust-contractile - (version "1.0.0") - (repo "nextgen-languages/affinescript") - - (default-trust "maximal") - ; Rationale: AffineScript is a research compiler. Claude is the primary - ; implementer. Maximal trust for all non-destructive work. Jonathan reviews - ; via git diff before committing. - - (trust-grant "maximal" - (allow "read any file in the repo") - (allow "write to lib/*.ml, lib/*.mli, bin/*.ml, test/e2e/") - (allow "write to .machine_readable/ (except STATE.a2ml open-bugs — append only)") - (allow "write to spec/, docs/") - (allow "add new test fixtures in test/e2e/fixtures/") - (allow "update CHANGELOG.md") - (allow "run dune build and dune runtest") - (allow "run panic-attack assail") - ) - - (trust-deny "all-tiers" - (deny "commit directly — always produce a diff for Jonathan to review in this private repo") - (deny "push without confirmation in the same session") - (deny "add a language feature not in ANCHOR.a2ml thesis") - (deny "reverse any ADR (ADR-001 through ADR-010) without a new ADR") - (deny "delete or overwrite the 6a2/ core files (STATE/META/ECOSYSTEM/AGENTIC/NEUROSYM/PLAYBOOK)") - (deny "modify IDApTIK without explicit instruction (AGPL — separate repo, separate session)") - ) - - (scope-boundary - (note "AffineScript is private (ALL RIGHTS RESERVED in Claude context).") - (note "The thesis in ANCHOR.a2ml is the scope boundary. Violating it is a MUST violation.") - (note "007 is a separate private language — do not confuse the two compilers.") - ) -) diff --git a/.machine_readable/contractiles/Adjustfile.a2ml b/.machine_readable/contractiles/Adjustfile.a2ml new file mode 100644 index 00000000..6f01e89f --- /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 00000000..ef74f452 --- /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 00000000..03672f49 --- /dev/null +++ b/.machine_readable/contractiles/Justfile @@ -0,0 +1,783 @@ +# SPDX-License-Identifier: MPL-2.0 +# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +# +# RSR Standard Justfile Template +# https://just.systems/man/en/ +# +# Copy this file to new projects and customize the placeholder values. +# +# Run `just` to see all available recipes +# Run `just cookbook` to generate docs/just-cookbook.adoc +# Run `just combinations` to see matrix recipe options + +set shell := ["bash", "-uc"] +set dotenv-load := true +set positional-arguments := true + +# Import auto-generated contractile recipes (must-check, trust-verify, etc.) +# Re-generate with: contractile gen-just +import? "build/contractile.just" + +# Project metadata — customize these +project := "rsr-template-repo" +OWNER := "hyperpolymath" +REPO := "rsr-template-repo" +version := "0.1.0" +tier := "infrastructure" # 1 | 2 | infrastructure + +# ═══════════════════════════════════════════════════════════════════════════════ +# DEFAULT & HELP +# ═══════════════════════════════════════════════════════════════════════════════ + +# Show all available recipes with descriptions +default: + @just --list --unsorted + +# Show detailed help for a specific recipe +help recipe="": + #!/usr/bin/env bash + if [ -z "{{recipe}}" ]; then + just --list --unsorted + echo "" + echo "Usage: just help " + echo " just cookbook # Generate full documentation" + echo " just combinations # Show matrix recipes" + else + just --show "{{recipe}}" 2>/dev/null || echo "Recipe '{{recipe}}' not found" + fi + +# Show this project's info +info: + @echo "Project: {{project}}" + @echo "Version: {{version}}" + @echo "RSR Tier: {{tier}}" + @echo "Recipes: $(just --summary | wc -w)" + @[ -f ".machine_readable/STATE.a2ml" ] && grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/STATE.a2ml | head -1 | xargs -I{} echo "Phase: {}" || true + +# Run Invariant Path overlay tools for this repository +invariant-path *ARGS: + ./scripts/invariant-path.sh {{ARGS}} + +# ═══════════════════════════════════════════════════════════════════════════════ +# INIT — see build/just/init.just +# ═══════════════════════════════════════════════════════════════════════════════ + +import? "build/just/init.just" + +# ═══════════════════════════════════════════════════════════════════════════════ +# GROOVE PROTOCOL — see build/just/groove.just +# ═══════════════════════════════════════════════════════════════════════════════ + +import? "build/just/groove.just" + +# ═══════════════════════════════════════════════════════════════════════════════ +# PROJECT SELF-ASSESSMENT + OPENSSF COMPLIANCE — see build/just/assess.just +# ═══════════════════════════════════════════════════════════════════════════════ + +import? "build/just/assess.just" + +# ═══════════════════════════════════════════════════════════════════════════════ +# BUILD & COMPILE +# ═══════════════════════════════════════════════════════════════════════════════ + +# Build the project (debug mode) +build *args: + @echo "Building {{project}} (debug)..." + # TODO: Replace with your build command + # Examples: + # cargo build {{args}} # Rust + # mix compile {{args}} # Elixir + # zig build {{args}} # Zig + # deno task build {{args}} # Deno/ReScript + @echo "Build complete" + +# Build in release mode with optimizations +build-release *args: + @echo "Building {{project}} (release)..." + # TODO: Replace with your release build command + # Examples: + # cargo build --release {{args}} + # MIX_ENV=prod mix compile {{args}} + # zig build -Doptimize=ReleaseFast {{args}} + @echo "Release build complete" + +# Build and watch for changes (requires entr or similar) +build-watch: + @echo "Watching for changes..." + # TODO: Customize file patterns for your language + # Examples: + # find src -name '*.rs' | entr -c just build + # mix compile --force --warnings-as-errors + # deno task dev + +# Clean build artifacts [reversible: rebuild with `just build`] +clean: + @echo "Cleaning..." + # TODO: Customize for your build system + rm -rf target/ _build/ build/ dist/ out/ obj/ bin/ + +# Deep clean including caches [reversible: rebuild] +clean-all: clean + rm -rf .cache .tmp + +# ═══════════════════════════════════════════════════════════════════════════════ +# TEST & QUALITY +# ═══════════════════════════════════════════════════════════════════════════════ + +# Run all tests +test *args: + @echo "Running tests..." + # TODO: Replace with your test command + # Examples: + # cargo test {{args}} + # mix test {{args}} + # zig build test {{args}} + # deno test {{args}} + @echo "Tests passed!" + +# Run tests with verbose output +test-verbose: + @echo "Running tests (verbose)..." + # TODO: Replace with verbose test command + +# Smoke test +test-smoke: + @echo "Smoke test..." + # TODO: Add basic sanity checks + +# Run end-to-end tests (full pipeline: build → run → verify) +e2e: + @echo "Running E2E tests..." + # TODO: Replace with your E2E test command. Examples: + # bash tests/e2e.sh # Shell-based E2E + # npx playwright test # Browser E2E + # mix test test/integration/e2e_test.exs # Elixir E2E + # cargo test --test end_to_end # Rust E2E + @echo "E2E tests passed!" + +# Run aspect tests (cross-cutting concern validation) +aspect: + @echo "Running aspect tests..." + # TODO: Replace with your aspect test command. Examples: + # bash tests/aspect_tests.sh # Shell-based aspect tests + # cargo test --test aspects # Rust aspect tests + # Aspect tests validate architectural invariants: + # - Thread safety (mutex in FFI modules) + # - ABI/FFI contract (declarations match exports) + # - SPDX compliance (all files have license headers) + # - No dangerous patterns (believe_me, assert_total, etc.) + @echo "Aspect tests passed!" + +# Run benchmarks (performance regression detection) +bench: + @echo "Running benchmarks..." + # TODO: Replace with your benchmark command. Examples: + # cargo bench # Rust criterion + # zig build bench # Zig benchmarks + # mix run bench/benchmarks.exs # Elixir benchee + # deno bench # Deno bench + @echo "Benchmarks complete!" + +# Run readiness tests (Component Readiness Grade: D/C/B) +readiness: + @echo "Running readiness tests..." + # TODO: Replace with your readiness test command. Examples: + # cargo test --test readiness -- --nocapture + @echo "Readiness tests complete!" + +# Print the current CRG grade (reads from READINESS.md '**Current Grade:** X' line) +crg-grade: + @grade=$$(grep -oP '(?<=\*\*Current Grade:\*\* )[A-FX]' READINESS.md 2>/dev/null | head -1); \ + [ -z "$$grade" ] && grade="X"; \ + echo "$$grade" + +# Print a shields.io CRG badge for embedding in README files +# Looks for '**Current Grade:** X' in READINESS.md; falls back to X +crg-badge: + @grade=$$(grep -oP '(?<=\*\*Current Grade:\*\* )[A-FX]' READINESS.md 2>/dev/null | head -1); \ + [ -z "$$grade" ] && grade="X"; \ + case "$$grade" in \ + A) color="brightgreen" ;; \ + B) color="green" ;; \ + C) color="yellow" ;; \ + D) color="orange" ;; \ + E) color="red" ;; \ + F) color="critical" ;; \ + *) color="lightgrey" ;; \ + esac; \ + echo "[![CRG $$grade](https://img.shields.io/badge/CRG-$$grade-$$color?style=flat-square)](https://github.com/hyperpolymath/standards/tree/main/component-readiness-grades)" + +# Run the full merge-requirement test suite (ALL categories) +# Per STANDING rule: P2P + E2E + aspect + execution + lifecycle + bench +test-all: test e2e aspect bench readiness + @echo "All test categories passed — safe to merge!" + +# Run all quality checks +quality: fmt-check lint test + @echo "All quality checks passed!" + +# Fix all auto-fixable issues [reversible: git checkout] +fix: fmt + @echo "Fixed all auto-fixable issues" + +# ═══════════════════════════════════════════════════════════════════════════════ +# LINT & FORMAT +# ═══════════════════════════════════════════════════════════════════════════════ + +# Format all source files [reversible: git checkout] +fmt: + @echo "Formatting source files..." + # TODO: Replace with your formatter + # Examples: + # cargo fmt + # mix format + # gleam format + # deno fmt + +# Check formatting without changes +fmt-check: + @echo "Checking formatting..." + # TODO: Replace with your format check + # Examples: + # cargo fmt --check + # mix format --check-formatted + # gleam format --check + +# Run linter +lint: + @echo "Linting source files..." + # TODO: Replace with your linter + # Examples: + # cargo clippy -- -D warnings + # mix credo --strict + # gleam check + +# ═══════════════════════════════════════════════════════════════════════════════ +# RUN & EXECUTE +# ═══════════════════════════════════════════════════════════════════════════════ + +# Run the application +run *args: build + # TODO: Replace with your run command + echo "Run not configured yet" + +# Run with verbose output +run-verbose *args: build + # TODO: Replace with verbose run command + echo "Run not configured yet" + +# Install to user path +install: build-release + @echo "Installing {{project}}..." + # TODO: Replace with your install command + +# ═══════════════════════════════════════════════════════════════════════════════ +# DEPENDENCIES +# ═══════════════════════════════════════════════════════════════════════════════ + +# Install/check all dependencies +deps: + @echo "Checking dependencies..." + # TODO: Replace with your dependency check + # Examples: + # cargo check + # mix deps.get + # gleam deps download + @echo "All dependencies satisfied" + +# Audit dependencies for vulnerabilities +deps-audit: + @echo "Auditing for vulnerabilities..." + # TODO: Replace with your audit command + # Examples: + # cargo audit + # mix audit + @command -v trivy >/dev/null && trivy fs --severity HIGH,CRITICAL --quiet . || true + @command -v gitleaks >/dev/null && gitleaks detect --source . --no-git --quiet || true + @echo "Audit complete" + +# ═══════════════════════════════════════════════════════════════════════════════ +# DOCUMENTATION +# ═══════════════════════════════════════════════════════════════════════════════ + +# Generate all documentation +docs: + @mkdir -p docs/generated docs/man + just cookbook + just man + @echo "Documentation generated in docs/" + +# Generate justfile cookbook documentation +cookbook: + #!/usr/bin/env bash + mkdir -p docs + OUTPUT="docs/just-cookbook.adoc" + echo "= {{project}} Justfile Cookbook" > "$OUTPUT" + echo ":toc: left" >> "$OUTPUT" + echo ":toclevels: 3" >> "$OUTPUT" + echo "" >> "$OUTPUT" + echo "Generated: $(date -Iseconds)" >> "$OUTPUT" + echo "" >> "$OUTPUT" + echo "== Recipes" >> "$OUTPUT" + echo "" >> "$OUTPUT" + just --list --unsorted | while read -r line; do + if [[ "$line" =~ ^[[:space:]]+([a-z_-]+) ]]; then + recipe="${BASH_REMATCH[1]}" + echo "=== $recipe" >> "$OUTPUT" + echo "" >> "$OUTPUT" + echo "[source,bash]" >> "$OUTPUT" + echo "----" >> "$OUTPUT" + echo "just $recipe" >> "$OUTPUT" + echo "----" >> "$OUTPUT" + echo "" >> "$OUTPUT" + fi + done + echo "Generated: $OUTPUT" + +# Generate man page +man: + #!/usr/bin/env bash + mkdir -p docs/man + cat > docs/man/{{project}}.1 << EOF + .TH {{project}} 1 "$(date +%Y-%m-%d)" "{{version}}" "{{project}} Manual" + .SH NAME + {{project}} \- RSR-compliant project + .SH SYNOPSIS + .B just + [recipe] [args...] + .SH DESCRIPTION + RSR (Rhodium Standard Repository) project managed with just. + .SH AUTHOR + $(git config user.name 2>/dev/null || echo "Author") <$(git config user.email 2>/dev/null || echo "email")> + EOF + echo "Generated: docs/man/{{project}}.1" + +# ═══════════════════════════════════════════════════════════════════════════════ +# CONTAINERS (stapeln ecosystem — Podman + Chainguard Wolfi) +# ═══════════════════════════════════════════════════════════════════════════════ + +# Initialise container templates — substitute placeholders with project values +container-init: + #!/usr/bin/env bash + set -euo pipefail + + if [ ! -d "container" ]; then + echo "Error: container/ directory not found." + echo "This repo may not have been created from rsr-template-repo." + exit 1 + fi + + echo "=== Container Template Initialisation ===" + echo "" + + # Load RSR defaults if available + DEFAULTS="${XDG_CONFIG_HOME:-$HOME/.config}/rsr/defaults" + if [ -f "$DEFAULTS" ]; then + echo "Loading defaults from $DEFAULTS" + # shellcheck source=/dev/null + source "$DEFAULTS" + echo "" + fi + + # Prompt for container-specific values + read -rp "Service name (e.g. my-api) [{{project}}]: " _SERVICE_NAME + SERVICE_NAME="${_SERVICE_NAME:-{{project}}}" + + read -rp "Primary port [8080]: " _PORT + PORT="${_PORT:-8080}" + + read -rp "Container registry [ghcr.io/${OWNER:-{{OWNER}}}]: " _REGISTRY + REGISTRY="${_REGISTRY:-ghcr.io/${OWNER:-{{OWNER}}}}" + + echo "" + echo " Service: $SERVICE_NAME" + echo " Port: $PORT" + echo " Registry: $REGISTRY" + echo "" + read -rp "Proceed? [Y/n] " CONFIRM + [[ "${CONFIRM:-Y}" =~ ^[Nn] ]] && echo "Aborted." && exit 0 + + echo "" + echo "Replacing container placeholders..." + + # Brace tokens as variables (hex escapes avoid just interpolation) + LB=$(printf '\x7b\x7b') + RB=$(printf '\x7d\x7d') + + SED_ARGS=( + -e "s|${LB}SERVICE_NAME${RB}|${SERVICE_NAME}|g" + -e "s|${LB}PORT${RB}|${PORT}|g" + -e "s|${LB}REGISTRY${RB}|${REGISTRY}|g" + ) + + find container/ -type f | while read -r file; do + if file --brief "$file" | grep -qi 'text\|ascii\|utf'; then + sed -i "${SED_ARGS[@]}" "$file" + fi + done + + echo "Container templates initialised." + echo "" + echo "Next steps:" + echo " 1. Edit container/Containerfile — add your build commands" + echo " 2. Edit container/entrypoint.sh — set your application binary" + echo " 3. Review container/compose.toml — adjust services and volumes" + echo " 4. Build: just container-build" + +# Build container image via cerro-torre pipeline +container-build *args: + #!/usr/bin/env bash + if [ -f "container/ct-build.sh" ]; then + cd container && ./ct-build.sh {{args}} + elif [ -f "container/Containerfile" ]; then + podman build -t {{project}}:latest -f container/Containerfile . + elif [ -f "build/Containerfile" ]; then + podman build -t {{project}}:latest -f build/Containerfile . + elif [ -f "Containerfile" ]; then + podman build -t {{project}}:latest -f Containerfile . + else + echo "No Containerfile found in container/, build/, or project root" + exit 1 + fi + +# Verify compose configuration +container-verify: + #!/usr/bin/env bash + if [ ! -f "container/compose.toml" ]; then + echo "No container/compose.toml found" + exit 1 + fi + cd container + if command -v selur-compose &>/dev/null; then + selur-compose verify + else + echo "selur-compose not found, falling back to podman compose" + podman compose --file compose.toml config + fi + +# Start container stack +container-up *args: + #!/usr/bin/env bash + if [ ! -f "container/compose.toml" ]; then + echo "No container/compose.toml found" + exit 1 + fi + cd container + if command -v selur-compose &>/dev/null; then + selur-compose up {{args}} + else + podman compose --file compose.toml up {{args}} + fi + +# Stop container stack +container-down: + #!/usr/bin/env bash + cd container 2>/dev/null || { echo "No container/ directory"; exit 1; } + if command -v selur-compose &>/dev/null; then + selur-compose down + else + podman compose --file compose.toml down + fi + +# Sign and verify container bundle (build + pack + sign + verify) +container-sign: + #!/usr/bin/env bash + if [ -f "container/ct-build.sh" ]; then + cd container && ./ct-build.sh + else + echo "No container/ct-build.sh found" + exit 1 + fi + +# Push signed bundle to registry +container-push: + #!/usr/bin/env bash + if [ -f "container/ct-build.sh" ]; then + cd container && ./ct-build.sh --push + else + echo "No container/ct-build.sh found — falling back to podman push" + podman push {{project}}:latest + fi + +# Run container interactively (for debugging) +container-run *args: + podman run --rm -it {{project}}:latest {{args}} + +# ═══════════════════════════════════════════════════════════════════════════════ +# CI & AUTOMATION +# ═══════════════════════════════════════════════════════════════════════════════ + +# Run full CI pipeline locally +ci: deps quality + @echo "CI pipeline complete!" + +# Install git hooks +install-hooks: + @mkdir -p .git/hooks + @cat > .git/hooks/pre-commit << 'HOOKEOF' + #!/bin/bash + just fmt-check || exit 1 + just lint || exit 1 + just assail || exit 1 + HOOKEOF + @chmod +x .git/hooks/pre-commit + @echo "Git hooks installed" + +# ═══════════════════════════════════════════════════════════════════════════════ +# SECURITY +# ═══════════════════════════════════════════════════════════════════════════════ + +# Run security audit +security: deps-audit + @echo "=== Security Audit ===" + @command -v gitleaks >/dev/null && gitleaks detect --source . --verbose || true + @command -v trivy >/dev/null && trivy fs --severity HIGH,CRITICAL . || true + @echo "Security audit complete" + +# Generate SBOM +sbom: + @mkdir -p docs/security + @command -v syft >/dev/null && syft . -o spdx-json > docs/security/sbom.spdx.json || echo "syft not found" + +# ═══════════════════════════════════════════════════════════════════════════════ +# VALIDATION & COMPLIANCE — see build/just/validate.just +# ═══════════════════════════════════════════════════════════════════════════════ + +import? "build/just/validate.just" + +# ═══════════════════════════════════════════════════════════════════════════════ +# STATE MANAGEMENT +# ═══════════════════════════════════════════════════════════════════════════════ + +# Update STATE.a2ml timestamp +state-touch: + @if [ -f ".machine_readable/STATE.a2ml" ]; then \ + sed -i 's/last-updated = "[^"]*"/last-updated = "'"$(date +%Y-%m-%d)"'"/' .machine_readable/STATE.a2ml && \ + echo "STATE.a2ml timestamp updated"; \ + fi + +# Show current phase from STATE.a2ml +state-phase: + @grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/STATE.a2ml 2>/dev/null | head -1 || echo "unknown" + +# ═══════════════════════════════════════════════════════════════════════════════ +# GUIX & NIX +# ═══════════════════════════════════════════════════════════════════════════════ + +# Enter Guix development shell (primary) +guix-shell: + guix shell -D -f guix.scm + +# Build with Guix +guix-build: + guix build -f guix.scm + +# Enter Nix development shell (fallback) +nix-shell: + @if [ -f "flake.nix" ]; then nix develop; else echo "No flake.nix"; fi + +# ═══════════════════════════════════════════════════════════════════════════════ +# HYBRID AUTOMATION +# ═══════════════════════════════════════════════════════════════════════════════ + +# Run local automation tasks +automate task="all": + #!/usr/bin/env bash + case "{{task}}" in + all) just fmt && just lint && just test && just docs && just state-touch ;; + cleanup) just clean && find . -name "*.orig" -delete && find . -name "*~" -delete ;; + update) just deps && just validate ;; + *) echo "Unknown: {{task}}. Use: all, cleanup, update" && exit 1 ;; + esac + +# ═══════════════════════════════════════════════════════════════════════════════ +# COMBINATORIC MATRIX RECIPES +# ═══════════════════════════════════════════════════════════════════════════════ + +# Build matrix: [debug|release] x [target] x [features] +build-matrix mode="debug" target="" features="": + @echo "Build matrix: mode={{mode}} target={{target}} features={{features}}" + +# Test matrix: [unit|integration|e2e|all] x [verbosity] x [parallel] +test-matrix suite="unit" verbosity="normal" parallel="true": + @echo "Test matrix: suite={{suite}} verbosity={{verbosity}} parallel={{parallel}}" + +# Container matrix: [build|run|push|shell|scan] x [registry] x [tag] +container-matrix action="build" registry="ghcr.io/{{OWNER}}" tag="latest": + @echo "Container matrix: action={{action}} registry={{registry}} tag={{tag}}" + +# CI matrix: [lint|test|build|security|all] x [quick|full] +ci-matrix stage="all" depth="quick": + @echo "CI matrix: stage={{stage}} depth={{depth}}" + +# Show all matrix combinations +combinations: + @echo "=== Combinatoric Matrix Recipes ===" + @echo "" + @echo "Build Matrix: just build-matrix [debug|release] [target] [features]" + @echo "Test Matrix: just test-matrix [unit|integration|e2e|all] [verbosity] [parallel]" + @echo "Container: just container-matrix [build|run|push|shell|scan] [registry] [tag]" + @echo "CI Matrix: just ci-matrix [lint|test|build|security|all] [quick|full]" + +# ═══════════════════════════════════════════════════════════════════════════════ +# VERSION CONTROL +# ═══════════════════════════════════════════════════════════════════════════════ + +# Show git status +status: + @git status --short + +# Show recent commits +log count="20": + @git log --oneline -{{count}} + +# Generate CHANGELOG.md with git-cliff +changelog: + @command -v git-cliff >/dev/null || { echo "git-cliff not found — install: cargo install git-cliff"; exit 1; } + git cliff --config .machine_readable/configs/git-cliff/cliff.toml --output CHANGELOG.md + @echo "Generated CHANGELOG.md" + +# Preview changelog for unreleased commits (does not write) +changelog-preview: + @command -v git-cliff >/dev/null || { echo "git-cliff not found — install: cargo install git-cliff"; exit 1; } + git cliff --config .machine_readable/configs/git-cliff/cliff.toml --unreleased --strip header + +# Tag a new release (usage: just release-tag 1.2.3) +release-tag version: + #!/usr/bin/env bash + TAG="v{{version}}" + if git rev-parse "$TAG" >/dev/null 2>&1; then + echo "Tag $TAG already exists" + exit 1 + fi + just changelog + git add CHANGELOG.md + git commit -m "chore(release): prepare $TAG" + git tag -a "$TAG" -m "Release $TAG" + echo "Created tag $TAG — push with: git push origin main --tags" + +# ═══════════════════════════════════════════════════════════════════════════════ +# UTILITIES +# ═══════════════════════════════════════════════════════════════════════════════ + +# Count lines of code +loc: + @find . \( -name "*.rs" -o -name "*.ex" -o -name "*.exs" -o -name "*.res" -o -name "*.gleam" -o -name "*.zig" -o -name "*.idr" -o -name "*.hs" -o -name "*.ncl" -o -name "*.scm" -o -name "*.adb" -o -name "*.ads" \) -not -path './target/*' -not -path './_build/*' 2>/dev/null | xargs wc -l 2>/dev/null | tail -1 || echo "0" + +# Show TODO comments +todos: + @grep -rn "TODO\|FIXME\|HACK\|XXX" --include="*.rs" --include="*.ex" --include="*.res" --include="*.gleam" --include="*.zig" --include="*.idr" --include="*.hs" . 2>/dev/null || echo "No TODOs" + +# Open in editor +edit: + ${EDITOR:-code} . + +# Run high-rigor security assault using panic-attacker +maint-assault: + @./.machine_readable/scripts/maintenance/maint-assault.sh + +# Run panic-attacker pre-commit scan (foundational floor-raise requirement) +assail: + @command -v panic-attack >/dev/null 2>&1 && panic-attack assail . || echo "WARN: panic-attack not found — install from https://github.com/hyperpolymath/panic-attacker" + + +# Self-diagnostic — checks dependencies, permissions, paths +doctor: + @echo "Running diagnostics for rsr-template-repo..." + @echo "Checking required tools..." + @command -v just >/dev/null 2>&1 && echo " [OK] just" || echo " [FAIL] just not found" + @command -v git >/dev/null 2>&1 && echo " [OK] git" || echo " [FAIL] git not found" + @echo "Checking for hardcoded paths..." + @grep -rn '$HOME\|$ECLIPSE_DIR' --include='*.rs' --include='*.ex' --include='*.res' --include='*.gleam' --include='*.sh' . 2>/dev/null | head -5 || echo " [OK] No hardcoded paths" + @echo "Diagnostics complete." + +# Guided tour of key features +tour: + @echo "=== rsr-template-repo Tour ===" + @echo "" + @echo "1. Project structure:" + @ls -la + @echo "" + @echo "2. Available commands: just --list" + @echo "" + @echo "3. Read README.adoc for full overview" + @echo "4. Read EXPLAINME.adoc for architecture decisions" + @echo "5. Run 'just doctor' to check your setup" + @echo "" + @echo "Tour complete! Try 'just --list' to see all available commands." + +# Open feedback channel with diagnostic context +help-me: + @echo "=== rsr-template-repo Help ===" + @echo "Platform: $(uname -s) $(uname -m)" + @echo "Shell: $SHELL" + @echo "" + @echo "To report an issue:" + @echo " https://github.com/hyperpolymath/rsr-template-repo/issues/new" + @echo "" + @echo "Include the output of 'just doctor' in your report." + +# ═══════════════════════════════════════════════════════════════════════════════ +# FORMAL VERIFICATION (PROOFS) — see build/just/proofs.just +# ═══════════════════════════════════════════════════════════════════════════════ + +import? "build/just/proofs.just" + +# ═══════════════════════════════════════════════════════════════════════════════ +# SESSION MANAGEMENT (THIN BINDINGS TO CENTRAL STANDARDS) +# ═══════════════════════════════════════════════════════════════════════════════ + +# Show canonical session-management command model +session-help: + @echo "Canonical command model:" + @echo " intake repo " + @echo " checkpoint change " + @echo " verify maintenance " + @echo " verify substantial " + @echo " verify release " + @echo " close planned " + @echo " close urgent " + @echo " recover repo " + @echo " handover full " + @echo " handover split " + @echo " handover model " + @echo " handover human " + @echo "" + @echo "Use Just aliases below (thin wrappers around ./session/dispatch.sh)." + +# Canonical aliases (friendly recipe names that map to canonical commands) +intake-repo path=".": + @./session/dispatch.sh intake repo "{{path}}" + +checkpoint-change path=".": + @./session/dispatch.sh checkpoint change "{{path}}" + +verify-maintenance path=".": + @./session/dispatch.sh verify maintenance "{{path}}" + +verify-substantial path=".": + @./session/dispatch.sh verify substantial "{{path}}" + +verify-release path=".": + @./session/dispatch.sh verify release "{{path}}" + +close-planned path=".": + @./session/dispatch.sh close planned "{{path}}" + +close-urgent path=".": + @./session/dispatch.sh close urgent "{{path}}" + +recover-repo path=".": + @./session/dispatch.sh recover repo "{{path}}" + +handover-full path=".": + @./session/dispatch.sh handover full "{{path}}" + +handover-split path=".": + @./session/dispatch.sh handover split "{{path}}" + +handover-model path=".": + @./session/dispatch.sh handover model "{{path}}" + +handover-human path=".": + @./session/dispatch.sh handover human "{{path}}" diff --git a/.machine_readable/contractiles/Mustfile.a2ml b/.machine_readable/contractiles/Mustfile.a2ml new file mode 100644 index 00000000..55f8ab48 --- /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 00000000..e2028b56 --- /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/adjust/Adjustfile.a2ml b/.machine_readable/contractiles/adjust/Adjustfile.a2ml deleted file mode 100644 index 669cb6ef..00000000 --- a/.machine_readable/contractiles/adjust/Adjustfile.a2ml +++ /dev/null @@ -1,51 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) -# -# Adjustfile.a2ml — Accessibility invariants for AffineScript -# -# AffineScript is a compiler + LSP server, not a web app. Its accessibility -# surface is: CLI flags/errors, LSP diagnostics, documentation. -# WCAG visual rules do not apply directly, but all user-facing output must -# be accessible to screen readers and assistive tools. - -[adjust] -version = "1.0.0" -standard = "CLI-accessible (subset of WCAG 2.2 AA)" -repo = "nextgen-languages/affinescript" - -[adjust.cli] -# Error messages must be plain text, not colour-only -colour-free-errors = true -# All errors must include: file, line, col, short description -error-format = "file:line:col: [E####] short description" -# --help must always be available on all subcommands -help-flag = true -# Exit codes must be documented and consistent -exit-codes-documented = true -# No spinner/animation that doesn't degrade gracefully in non-TTY -tty-safe-output = true - -[adjust.lsp] -# LSP diagnostics must include range (not just offset) -diagnostic-range = true -# Hover responses must be plain Markdown, no HTML injection -hover-format = "markdown-plain" -# Completion items must have a kind field for screen reader discrimination -completion-kind = true - -[adjust.errors] -# Errors must identify the construct in plain language (not jargon) -plain-language = true -# Linear/affine type errors must name the variable and say WHY it is consumed -affine-error-detail = true -# No error message whose only information is a code like E0501 without text -code-plus-text = true - -[adjust.documentation] -# All public docs must have alt text on diagrams -diagram-alt-text = true -# Code examples must have comments explaining non-obvious steps -commented-examples = true -# Internationalisation: all user-facing strings must be in English (single lang for now) -# i18n expansion is tracked in ROADMAP.adoc -i18n-target = "en" diff --git a/.machine_readable/contractiles/dust/Dustfile b/.machine_readable/contractiles/dust/Dustfile deleted file mode 100644 index 314903cc..00000000 --- a/.machine_readable/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/.machine_readable/contractiles/intend/Intentfile.a2ml b/.machine_readable/contractiles/intend/Intentfile.a2ml deleted file mode 100644 index 43bb4e22..00000000 --- a/.machine_readable/contractiles/intend/Intentfile.a2ml +++ /dev/null @@ -1,54 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) -# -# Intentfile.a2ml — Purpose and scope for AffineScript -# Authoritative anti-scope-creep document. -# See: ANCHOR.a2ml thesis + META.a2ml ADRs for full scope statement. - -[intent] -version = "1.0.0" -repo = "nextgen-languages/affinescript" - -[intent.purpose] -is = """ -AffineScript is a programming language with affine types and JavaScript ergonomics, -compiling to Typed WASM. It targets the -script developer community (TypeScript, -ReScript, PureScript users) and offers a higher correctness floor through a small, -deliberately chosen set of advanced types. The feature set is fixed by the thesis -in ANCHOR.a2ml — new features require a thesis change, not a code change. -""" - -is-not = """ -AffineScript is NOT: -- A language with full dependent types (Typed WASM project) -- A language with tropical types (Typed WASM project) -- A language with units of measure (Typed WASM project) -- A language with algebraic effect handlers (extension point only — ADR-004) -- A language with linear types (subsumed by affine; was bot scope creep) -- A general-purpose scripting language or replacement for JavaScript -- A language targeting native machine code -""" - -[intent.decisions] -# These ADRs are load-bearing. Do NOT reverse them without a new ADR. -# Full text in META.a2ml. -adr-001 = "Split-Γ typing context is canonical" -adr-002 = "Scaled Let rule governs affine/linear/erased binding" -adr-003 = "Left-to-right evaluation order" -adr-007 = "Surface syntax: @linear/@erased/@unrestricted primary, :1/:0/:ω sugar" -adr-010 = "Faces architecture for Python/JS/Pseudocode surface dialects" - -[intent.roadmap] -next = [ - "BUG-001: ω-let smuggles linear values (ANCHOR.a2ml)", - "BUG-002: zero-let erasure (ANCHOR.a2ml)", - "BUG-003: eval list right-to-left (ANCHOR.a2ml)", - "BUG-004: lambda capture tracking (ANCHOR.a2ml)", - "LSP Phase E: full JSON-RPC server testing", - "Typed WASM integration: surface syntax → typed-wasm IR", -] -deferred = [ - "algebraic effect handlers beyond try/catch (ADR-004 extension point)", - "dependent types (Typed WASM project)", - "ZERO/ONE tokens for quantity literals in lexer", -] diff --git a/.machine_readable/contractiles/must/Mustfile b/.machine_readable/contractiles/must/Mustfile deleted file mode 100644 index dc7b3be5..00000000 --- a/.machine_readable/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/.machine_readable/contractiles/trust/Trustfile.hs b/.machine_readable/contractiles/trust/Trustfile.hs deleted file mode 100644 index 00b313fa..00000000 --- a/.machine_readable/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/GOVERNANCE.adoc b/GOVERNANCE.adoc new file mode 100644 index 00000000..8bbf167d --- /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 new file mode 100644 index 00000000..03672f49 --- /dev/null +++ b/Justfile @@ -0,0 +1,783 @@ +# SPDX-License-Identifier: MPL-2.0 +# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +# +# RSR Standard Justfile Template +# https://just.systems/man/en/ +# +# Copy this file to new projects and customize the placeholder values. +# +# Run `just` to see all available recipes +# Run `just cookbook` to generate docs/just-cookbook.adoc +# Run `just combinations` to see matrix recipe options + +set shell := ["bash", "-uc"] +set dotenv-load := true +set positional-arguments := true + +# Import auto-generated contractile recipes (must-check, trust-verify, etc.) +# Re-generate with: contractile gen-just +import? "build/contractile.just" + +# Project metadata — customize these +project := "rsr-template-repo" +OWNER := "hyperpolymath" +REPO := "rsr-template-repo" +version := "0.1.0" +tier := "infrastructure" # 1 | 2 | infrastructure + +# ═══════════════════════════════════════════════════════════════════════════════ +# DEFAULT & HELP +# ═══════════════════════════════════════════════════════════════════════════════ + +# Show all available recipes with descriptions +default: + @just --list --unsorted + +# Show detailed help for a specific recipe +help recipe="": + #!/usr/bin/env bash + if [ -z "{{recipe}}" ]; then + just --list --unsorted + echo "" + echo "Usage: just help " + echo " just cookbook # Generate full documentation" + echo " just combinations # Show matrix recipes" + else + just --show "{{recipe}}" 2>/dev/null || echo "Recipe '{{recipe}}' not found" + fi + +# Show this project's info +info: + @echo "Project: {{project}}" + @echo "Version: {{version}}" + @echo "RSR Tier: {{tier}}" + @echo "Recipes: $(just --summary | wc -w)" + @[ -f ".machine_readable/STATE.a2ml" ] && grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/STATE.a2ml | head -1 | xargs -I{} echo "Phase: {}" || true + +# Run Invariant Path overlay tools for this repository +invariant-path *ARGS: + ./scripts/invariant-path.sh {{ARGS}} + +# ═══════════════════════════════════════════════════════════════════════════════ +# INIT — see build/just/init.just +# ═══════════════════════════════════════════════════════════════════════════════ + +import? "build/just/init.just" + +# ═══════════════════════════════════════════════════════════════════════════════ +# GROOVE PROTOCOL — see build/just/groove.just +# ═══════════════════════════════════════════════════════════════════════════════ + +import? "build/just/groove.just" + +# ═══════════════════════════════════════════════════════════════════════════════ +# PROJECT SELF-ASSESSMENT + OPENSSF COMPLIANCE — see build/just/assess.just +# ═══════════════════════════════════════════════════════════════════════════════ + +import? "build/just/assess.just" + +# ═══════════════════════════════════════════════════════════════════════════════ +# BUILD & COMPILE +# ═══════════════════════════════════════════════════════════════════════════════ + +# Build the project (debug mode) +build *args: + @echo "Building {{project}} (debug)..." + # TODO: Replace with your build command + # Examples: + # cargo build {{args}} # Rust + # mix compile {{args}} # Elixir + # zig build {{args}} # Zig + # deno task build {{args}} # Deno/ReScript + @echo "Build complete" + +# Build in release mode with optimizations +build-release *args: + @echo "Building {{project}} (release)..." + # TODO: Replace with your release build command + # Examples: + # cargo build --release {{args}} + # MIX_ENV=prod mix compile {{args}} + # zig build -Doptimize=ReleaseFast {{args}} + @echo "Release build complete" + +# Build and watch for changes (requires entr or similar) +build-watch: + @echo "Watching for changes..." + # TODO: Customize file patterns for your language + # Examples: + # find src -name '*.rs' | entr -c just build + # mix compile --force --warnings-as-errors + # deno task dev + +# Clean build artifacts [reversible: rebuild with `just build`] +clean: + @echo "Cleaning..." + # TODO: Customize for your build system + rm -rf target/ _build/ build/ dist/ out/ obj/ bin/ + +# Deep clean including caches [reversible: rebuild] +clean-all: clean + rm -rf .cache .tmp + +# ═══════════════════════════════════════════════════════════════════════════════ +# TEST & QUALITY +# ═══════════════════════════════════════════════════════════════════════════════ + +# Run all tests +test *args: + @echo "Running tests..." + # TODO: Replace with your test command + # Examples: + # cargo test {{args}} + # mix test {{args}} + # zig build test {{args}} + # deno test {{args}} + @echo "Tests passed!" + +# Run tests with verbose output +test-verbose: + @echo "Running tests (verbose)..." + # TODO: Replace with verbose test command + +# Smoke test +test-smoke: + @echo "Smoke test..." + # TODO: Add basic sanity checks + +# Run end-to-end tests (full pipeline: build → run → verify) +e2e: + @echo "Running E2E tests..." + # TODO: Replace with your E2E test command. Examples: + # bash tests/e2e.sh # Shell-based E2E + # npx playwright test # Browser E2E + # mix test test/integration/e2e_test.exs # Elixir E2E + # cargo test --test end_to_end # Rust E2E + @echo "E2E tests passed!" + +# Run aspect tests (cross-cutting concern validation) +aspect: + @echo "Running aspect tests..." + # TODO: Replace with your aspect test command. Examples: + # bash tests/aspect_tests.sh # Shell-based aspect tests + # cargo test --test aspects # Rust aspect tests + # Aspect tests validate architectural invariants: + # - Thread safety (mutex in FFI modules) + # - ABI/FFI contract (declarations match exports) + # - SPDX compliance (all files have license headers) + # - No dangerous patterns (believe_me, assert_total, etc.) + @echo "Aspect tests passed!" + +# Run benchmarks (performance regression detection) +bench: + @echo "Running benchmarks..." + # TODO: Replace with your benchmark command. Examples: + # cargo bench # Rust criterion + # zig build bench # Zig benchmarks + # mix run bench/benchmarks.exs # Elixir benchee + # deno bench # Deno bench + @echo "Benchmarks complete!" + +# Run readiness tests (Component Readiness Grade: D/C/B) +readiness: + @echo "Running readiness tests..." + # TODO: Replace with your readiness test command. Examples: + # cargo test --test readiness -- --nocapture + @echo "Readiness tests complete!" + +# Print the current CRG grade (reads from READINESS.md '**Current Grade:** X' line) +crg-grade: + @grade=$$(grep -oP '(?<=\*\*Current Grade:\*\* )[A-FX]' READINESS.md 2>/dev/null | head -1); \ + [ -z "$$grade" ] && grade="X"; \ + echo "$$grade" + +# Print a shields.io CRG badge for embedding in README files +# Looks for '**Current Grade:** X' in READINESS.md; falls back to X +crg-badge: + @grade=$$(grep -oP '(?<=\*\*Current Grade:\*\* )[A-FX]' READINESS.md 2>/dev/null | head -1); \ + [ -z "$$grade" ] && grade="X"; \ + case "$$grade" in \ + A) color="brightgreen" ;; \ + B) color="green" ;; \ + C) color="yellow" ;; \ + D) color="orange" ;; \ + E) color="red" ;; \ + F) color="critical" ;; \ + *) color="lightgrey" ;; \ + esac; \ + echo "[![CRG $$grade](https://img.shields.io/badge/CRG-$$grade-$$color?style=flat-square)](https://github.com/hyperpolymath/standards/tree/main/component-readiness-grades)" + +# Run the full merge-requirement test suite (ALL categories) +# Per STANDING rule: P2P + E2E + aspect + execution + lifecycle + bench +test-all: test e2e aspect bench readiness + @echo "All test categories passed — safe to merge!" + +# Run all quality checks +quality: fmt-check lint test + @echo "All quality checks passed!" + +# Fix all auto-fixable issues [reversible: git checkout] +fix: fmt + @echo "Fixed all auto-fixable issues" + +# ═══════════════════════════════════════════════════════════════════════════════ +# LINT & FORMAT +# ═══════════════════════════════════════════════════════════════════════════════ + +# Format all source files [reversible: git checkout] +fmt: + @echo "Formatting source files..." + # TODO: Replace with your formatter + # Examples: + # cargo fmt + # mix format + # gleam format + # deno fmt + +# Check formatting without changes +fmt-check: + @echo "Checking formatting..." + # TODO: Replace with your format check + # Examples: + # cargo fmt --check + # mix format --check-formatted + # gleam format --check + +# Run linter +lint: + @echo "Linting source files..." + # TODO: Replace with your linter + # Examples: + # cargo clippy -- -D warnings + # mix credo --strict + # gleam check + +# ═══════════════════════════════════════════════════════════════════════════════ +# RUN & EXECUTE +# ═══════════════════════════════════════════════════════════════════════════════ + +# Run the application +run *args: build + # TODO: Replace with your run command + echo "Run not configured yet" + +# Run with verbose output +run-verbose *args: build + # TODO: Replace with verbose run command + echo "Run not configured yet" + +# Install to user path +install: build-release + @echo "Installing {{project}}..." + # TODO: Replace with your install command + +# ═══════════════════════════════════════════════════════════════════════════════ +# DEPENDENCIES +# ═══════════════════════════════════════════════════════════════════════════════ + +# Install/check all dependencies +deps: + @echo "Checking dependencies..." + # TODO: Replace with your dependency check + # Examples: + # cargo check + # mix deps.get + # gleam deps download + @echo "All dependencies satisfied" + +# Audit dependencies for vulnerabilities +deps-audit: + @echo "Auditing for vulnerabilities..." + # TODO: Replace with your audit command + # Examples: + # cargo audit + # mix audit + @command -v trivy >/dev/null && trivy fs --severity HIGH,CRITICAL --quiet . || true + @command -v gitleaks >/dev/null && gitleaks detect --source . --no-git --quiet || true + @echo "Audit complete" + +# ═══════════════════════════════════════════════════════════════════════════════ +# DOCUMENTATION +# ═══════════════════════════════════════════════════════════════════════════════ + +# Generate all documentation +docs: + @mkdir -p docs/generated docs/man + just cookbook + just man + @echo "Documentation generated in docs/" + +# Generate justfile cookbook documentation +cookbook: + #!/usr/bin/env bash + mkdir -p docs + OUTPUT="docs/just-cookbook.adoc" + echo "= {{project}} Justfile Cookbook" > "$OUTPUT" + echo ":toc: left" >> "$OUTPUT" + echo ":toclevels: 3" >> "$OUTPUT" + echo "" >> "$OUTPUT" + echo "Generated: $(date -Iseconds)" >> "$OUTPUT" + echo "" >> "$OUTPUT" + echo "== Recipes" >> "$OUTPUT" + echo "" >> "$OUTPUT" + just --list --unsorted | while read -r line; do + if [[ "$line" =~ ^[[:space:]]+([a-z_-]+) ]]; then + recipe="${BASH_REMATCH[1]}" + echo "=== $recipe" >> "$OUTPUT" + echo "" >> "$OUTPUT" + echo "[source,bash]" >> "$OUTPUT" + echo "----" >> "$OUTPUT" + echo "just $recipe" >> "$OUTPUT" + echo "----" >> "$OUTPUT" + echo "" >> "$OUTPUT" + fi + done + echo "Generated: $OUTPUT" + +# Generate man page +man: + #!/usr/bin/env bash + mkdir -p docs/man + cat > docs/man/{{project}}.1 << EOF + .TH {{project}} 1 "$(date +%Y-%m-%d)" "{{version}}" "{{project}} Manual" + .SH NAME + {{project}} \- RSR-compliant project + .SH SYNOPSIS + .B just + [recipe] [args...] + .SH DESCRIPTION + RSR (Rhodium Standard Repository) project managed with just. + .SH AUTHOR + $(git config user.name 2>/dev/null || echo "Author") <$(git config user.email 2>/dev/null || echo "email")> + EOF + echo "Generated: docs/man/{{project}}.1" + +# ═══════════════════════════════════════════════════════════════════════════════ +# CONTAINERS (stapeln ecosystem — Podman + Chainguard Wolfi) +# ═══════════════════════════════════════════════════════════════════════════════ + +# Initialise container templates — substitute placeholders with project values +container-init: + #!/usr/bin/env bash + set -euo pipefail + + if [ ! -d "container" ]; then + echo "Error: container/ directory not found." + echo "This repo may not have been created from rsr-template-repo." + exit 1 + fi + + echo "=== Container Template Initialisation ===" + echo "" + + # Load RSR defaults if available + DEFAULTS="${XDG_CONFIG_HOME:-$HOME/.config}/rsr/defaults" + if [ -f "$DEFAULTS" ]; then + echo "Loading defaults from $DEFAULTS" + # shellcheck source=/dev/null + source "$DEFAULTS" + echo "" + fi + + # Prompt for container-specific values + read -rp "Service name (e.g. my-api) [{{project}}]: " _SERVICE_NAME + SERVICE_NAME="${_SERVICE_NAME:-{{project}}}" + + read -rp "Primary port [8080]: " _PORT + PORT="${_PORT:-8080}" + + read -rp "Container registry [ghcr.io/${OWNER:-{{OWNER}}}]: " _REGISTRY + REGISTRY="${_REGISTRY:-ghcr.io/${OWNER:-{{OWNER}}}}" + + echo "" + echo " Service: $SERVICE_NAME" + echo " Port: $PORT" + echo " Registry: $REGISTRY" + echo "" + read -rp "Proceed? [Y/n] " CONFIRM + [[ "${CONFIRM:-Y}" =~ ^[Nn] ]] && echo "Aborted." && exit 0 + + echo "" + echo "Replacing container placeholders..." + + # Brace tokens as variables (hex escapes avoid just interpolation) + LB=$(printf '\x7b\x7b') + RB=$(printf '\x7d\x7d') + + SED_ARGS=( + -e "s|${LB}SERVICE_NAME${RB}|${SERVICE_NAME}|g" + -e "s|${LB}PORT${RB}|${PORT}|g" + -e "s|${LB}REGISTRY${RB}|${REGISTRY}|g" + ) + + find container/ -type f | while read -r file; do + if file --brief "$file" | grep -qi 'text\|ascii\|utf'; then + sed -i "${SED_ARGS[@]}" "$file" + fi + done + + echo "Container templates initialised." + echo "" + echo "Next steps:" + echo " 1. Edit container/Containerfile — add your build commands" + echo " 2. Edit container/entrypoint.sh — set your application binary" + echo " 3. Review container/compose.toml — adjust services and volumes" + echo " 4. Build: just container-build" + +# Build container image via cerro-torre pipeline +container-build *args: + #!/usr/bin/env bash + if [ -f "container/ct-build.sh" ]; then + cd container && ./ct-build.sh {{args}} + elif [ -f "container/Containerfile" ]; then + podman build -t {{project}}:latest -f container/Containerfile . + elif [ -f "build/Containerfile" ]; then + podman build -t {{project}}:latest -f build/Containerfile . + elif [ -f "Containerfile" ]; then + podman build -t {{project}}:latest -f Containerfile . + else + echo "No Containerfile found in container/, build/, or project root" + exit 1 + fi + +# Verify compose configuration +container-verify: + #!/usr/bin/env bash + if [ ! -f "container/compose.toml" ]; then + echo "No container/compose.toml found" + exit 1 + fi + cd container + if command -v selur-compose &>/dev/null; then + selur-compose verify + else + echo "selur-compose not found, falling back to podman compose" + podman compose --file compose.toml config + fi + +# Start container stack +container-up *args: + #!/usr/bin/env bash + if [ ! -f "container/compose.toml" ]; then + echo "No container/compose.toml found" + exit 1 + fi + cd container + if command -v selur-compose &>/dev/null; then + selur-compose up {{args}} + else + podman compose --file compose.toml up {{args}} + fi + +# Stop container stack +container-down: + #!/usr/bin/env bash + cd container 2>/dev/null || { echo "No container/ directory"; exit 1; } + if command -v selur-compose &>/dev/null; then + selur-compose down + else + podman compose --file compose.toml down + fi + +# Sign and verify container bundle (build + pack + sign + verify) +container-sign: + #!/usr/bin/env bash + if [ -f "container/ct-build.sh" ]; then + cd container && ./ct-build.sh + else + echo "No container/ct-build.sh found" + exit 1 + fi + +# Push signed bundle to registry +container-push: + #!/usr/bin/env bash + if [ -f "container/ct-build.sh" ]; then + cd container && ./ct-build.sh --push + else + echo "No container/ct-build.sh found — falling back to podman push" + podman push {{project}}:latest + fi + +# Run container interactively (for debugging) +container-run *args: + podman run --rm -it {{project}}:latest {{args}} + +# ═══════════════════════════════════════════════════════════════════════════════ +# CI & AUTOMATION +# ═══════════════════════════════════════════════════════════════════════════════ + +# Run full CI pipeline locally +ci: deps quality + @echo "CI pipeline complete!" + +# Install git hooks +install-hooks: + @mkdir -p .git/hooks + @cat > .git/hooks/pre-commit << 'HOOKEOF' + #!/bin/bash + just fmt-check || exit 1 + just lint || exit 1 + just assail || exit 1 + HOOKEOF + @chmod +x .git/hooks/pre-commit + @echo "Git hooks installed" + +# ═══════════════════════════════════════════════════════════════════════════════ +# SECURITY +# ═══════════════════════════════════════════════════════════════════════════════ + +# Run security audit +security: deps-audit + @echo "=== Security Audit ===" + @command -v gitleaks >/dev/null && gitleaks detect --source . --verbose || true + @command -v trivy >/dev/null && trivy fs --severity HIGH,CRITICAL . || true + @echo "Security audit complete" + +# Generate SBOM +sbom: + @mkdir -p docs/security + @command -v syft >/dev/null && syft . -o spdx-json > docs/security/sbom.spdx.json || echo "syft not found" + +# ═══════════════════════════════════════════════════════════════════════════════ +# VALIDATION & COMPLIANCE — see build/just/validate.just +# ═══════════════════════════════════════════════════════════════════════════════ + +import? "build/just/validate.just" + +# ═══════════════════════════════════════════════════════════════════════════════ +# STATE MANAGEMENT +# ═══════════════════════════════════════════════════════════════════════════════ + +# Update STATE.a2ml timestamp +state-touch: + @if [ -f ".machine_readable/STATE.a2ml" ]; then \ + sed -i 's/last-updated = "[^"]*"/last-updated = "'"$(date +%Y-%m-%d)"'"/' .machine_readable/STATE.a2ml && \ + echo "STATE.a2ml timestamp updated"; \ + fi + +# Show current phase from STATE.a2ml +state-phase: + @grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/STATE.a2ml 2>/dev/null | head -1 || echo "unknown" + +# ═══════════════════════════════════════════════════════════════════════════════ +# GUIX & NIX +# ═══════════════════════════════════════════════════════════════════════════════ + +# Enter Guix development shell (primary) +guix-shell: + guix shell -D -f guix.scm + +# Build with Guix +guix-build: + guix build -f guix.scm + +# Enter Nix development shell (fallback) +nix-shell: + @if [ -f "flake.nix" ]; then nix develop; else echo "No flake.nix"; fi + +# ═══════════════════════════════════════════════════════════════════════════════ +# HYBRID AUTOMATION +# ═══════════════════════════════════════════════════════════════════════════════ + +# Run local automation tasks +automate task="all": + #!/usr/bin/env bash + case "{{task}}" in + all) just fmt && just lint && just test && just docs && just state-touch ;; + cleanup) just clean && find . -name "*.orig" -delete && find . -name "*~" -delete ;; + update) just deps && just validate ;; + *) echo "Unknown: {{task}}. Use: all, cleanup, update" && exit 1 ;; + esac + +# ═══════════════════════════════════════════════════════════════════════════════ +# COMBINATORIC MATRIX RECIPES +# ═══════════════════════════════════════════════════════════════════════════════ + +# Build matrix: [debug|release] x [target] x [features] +build-matrix mode="debug" target="" features="": + @echo "Build matrix: mode={{mode}} target={{target}} features={{features}}" + +# Test matrix: [unit|integration|e2e|all] x [verbosity] x [parallel] +test-matrix suite="unit" verbosity="normal" parallel="true": + @echo "Test matrix: suite={{suite}} verbosity={{verbosity}} parallel={{parallel}}" + +# Container matrix: [build|run|push|shell|scan] x [registry] x [tag] +container-matrix action="build" registry="ghcr.io/{{OWNER}}" tag="latest": + @echo "Container matrix: action={{action}} registry={{registry}} tag={{tag}}" + +# CI matrix: [lint|test|build|security|all] x [quick|full] +ci-matrix stage="all" depth="quick": + @echo "CI matrix: stage={{stage}} depth={{depth}}" + +# Show all matrix combinations +combinations: + @echo "=== Combinatoric Matrix Recipes ===" + @echo "" + @echo "Build Matrix: just build-matrix [debug|release] [target] [features]" + @echo "Test Matrix: just test-matrix [unit|integration|e2e|all] [verbosity] [parallel]" + @echo "Container: just container-matrix [build|run|push|shell|scan] [registry] [tag]" + @echo "CI Matrix: just ci-matrix [lint|test|build|security|all] [quick|full]" + +# ═══════════════════════════════════════════════════════════════════════════════ +# VERSION CONTROL +# ═══════════════════════════════════════════════════════════════════════════════ + +# Show git status +status: + @git status --short + +# Show recent commits +log count="20": + @git log --oneline -{{count}} + +# Generate CHANGELOG.md with git-cliff +changelog: + @command -v git-cliff >/dev/null || { echo "git-cliff not found — install: cargo install git-cliff"; exit 1; } + git cliff --config .machine_readable/configs/git-cliff/cliff.toml --output CHANGELOG.md + @echo "Generated CHANGELOG.md" + +# Preview changelog for unreleased commits (does not write) +changelog-preview: + @command -v git-cliff >/dev/null || { echo "git-cliff not found — install: cargo install git-cliff"; exit 1; } + git cliff --config .machine_readable/configs/git-cliff/cliff.toml --unreleased --strip header + +# Tag a new release (usage: just release-tag 1.2.3) +release-tag version: + #!/usr/bin/env bash + TAG="v{{version}}" + if git rev-parse "$TAG" >/dev/null 2>&1; then + echo "Tag $TAG already exists" + exit 1 + fi + just changelog + git add CHANGELOG.md + git commit -m "chore(release): prepare $TAG" + git tag -a "$TAG" -m "Release $TAG" + echo "Created tag $TAG — push with: git push origin main --tags" + +# ═══════════════════════════════════════════════════════════════════════════════ +# UTILITIES +# ═══════════════════════════════════════════════════════════════════════════════ + +# Count lines of code +loc: + @find . \( -name "*.rs" -o -name "*.ex" -o -name "*.exs" -o -name "*.res" -o -name "*.gleam" -o -name "*.zig" -o -name "*.idr" -o -name "*.hs" -o -name "*.ncl" -o -name "*.scm" -o -name "*.adb" -o -name "*.ads" \) -not -path './target/*' -not -path './_build/*' 2>/dev/null | xargs wc -l 2>/dev/null | tail -1 || echo "0" + +# Show TODO comments +todos: + @grep -rn "TODO\|FIXME\|HACK\|XXX" --include="*.rs" --include="*.ex" --include="*.res" --include="*.gleam" --include="*.zig" --include="*.idr" --include="*.hs" . 2>/dev/null || echo "No TODOs" + +# Open in editor +edit: + ${EDITOR:-code} . + +# Run high-rigor security assault using panic-attacker +maint-assault: + @./.machine_readable/scripts/maintenance/maint-assault.sh + +# Run panic-attacker pre-commit scan (foundational floor-raise requirement) +assail: + @command -v panic-attack >/dev/null 2>&1 && panic-attack assail . || echo "WARN: panic-attack not found — install from https://github.com/hyperpolymath/panic-attacker" + + +# Self-diagnostic — checks dependencies, permissions, paths +doctor: + @echo "Running diagnostics for rsr-template-repo..." + @echo "Checking required tools..." + @command -v just >/dev/null 2>&1 && echo " [OK] just" || echo " [FAIL] just not found" + @command -v git >/dev/null 2>&1 && echo " [OK] git" || echo " [FAIL] git not found" + @echo "Checking for hardcoded paths..." + @grep -rn '$HOME\|$ECLIPSE_DIR' --include='*.rs' --include='*.ex' --include='*.res' --include='*.gleam' --include='*.sh' . 2>/dev/null | head -5 || echo " [OK] No hardcoded paths" + @echo "Diagnostics complete." + +# Guided tour of key features +tour: + @echo "=== rsr-template-repo Tour ===" + @echo "" + @echo "1. Project structure:" + @ls -la + @echo "" + @echo "2. Available commands: just --list" + @echo "" + @echo "3. Read README.adoc for full overview" + @echo "4. Read EXPLAINME.adoc for architecture decisions" + @echo "5. Run 'just doctor' to check your setup" + @echo "" + @echo "Tour complete! Try 'just --list' to see all available commands." + +# Open feedback channel with diagnostic context +help-me: + @echo "=== rsr-template-repo Help ===" + @echo "Platform: $(uname -s) $(uname -m)" + @echo "Shell: $SHELL" + @echo "" + @echo "To report an issue:" + @echo " https://github.com/hyperpolymath/rsr-template-repo/issues/new" + @echo "" + @echo "Include the output of 'just doctor' in your report." + +# ═══════════════════════════════════════════════════════════════════════════════ +# FORMAL VERIFICATION (PROOFS) — see build/just/proofs.just +# ═══════════════════════════════════════════════════════════════════════════════ + +import? "build/just/proofs.just" + +# ═══════════════════════════════════════════════════════════════════════════════ +# SESSION MANAGEMENT (THIN BINDINGS TO CENTRAL STANDARDS) +# ═══════════════════════════════════════════════════════════════════════════════ + +# Show canonical session-management command model +session-help: + @echo "Canonical command model:" + @echo " intake repo " + @echo " checkpoint change " + @echo " verify maintenance " + @echo " verify substantial " + @echo " verify release " + @echo " close planned " + @echo " close urgent " + @echo " recover repo " + @echo " handover full " + @echo " handover split " + @echo " handover model " + @echo " handover human " + @echo "" + @echo "Use Just aliases below (thin wrappers around ./session/dispatch.sh)." + +# Canonical aliases (friendly recipe names that map to canonical commands) +intake-repo path=".": + @./session/dispatch.sh intake repo "{{path}}" + +checkpoint-change path=".": + @./session/dispatch.sh checkpoint change "{{path}}" + +verify-maintenance path=".": + @./session/dispatch.sh verify maintenance "{{path}}" + +verify-substantial path=".": + @./session/dispatch.sh verify substantial "{{path}}" + +verify-release path=".": + @./session/dispatch.sh verify release "{{path}}" + +close-planned path=".": + @./session/dispatch.sh close planned "{{path}}" + +close-urgent path=".": + @./session/dispatch.sh close urgent "{{path}}" + +recover-repo path=".": + @./session/dispatch.sh recover repo "{{path}}" + +handover-full path=".": + @./session/dispatch.sh handover full "{{path}}" + +handover-split path=".": + @./session/dispatch.sh handover split "{{path}}" + +handover-model path=".": + @./session/dispatch.sh handover model "{{path}}" + +handover-human path=".": + @./session/dispatch.sh handover human "{{path}}" diff --git a/affinescript-vite/.machine_readable/ADJUST.contractile b/affinescript-vite/.machine_readable/ADJUST.contractile deleted file mode 100644 index d9c798ff..00000000 --- a/affinescript-vite/.machine_readable/ADJUST.contractile +++ /dev/null @@ -1,126 +0,0 @@ -; SPDX-License-Identifier: MPL-2.0 -; ADJUST.contractile — Accessibility invariants for rsr-template-repo -; "ADJUST" = Accessibility & Digital Justice for Universal Software & Technology -; -; Part of the contractile family: MUST, TRUST, DUST, INTENT, ADJUST -; This file is machine-readable. LLM/SLM agents MUST NOT violate these invariants. - -; ── Definitions ────────────────────────────────────────────────── -; -; ADJUST (noun/verb) -; The accessibility contractile. Defines how software must adapt to serve -; all users regardless of ability, device, or context. Named for the verb -; "adjust" — to make suitable, to adapt, to accommodate — which is the -; core action of accessible design. -; -; Scope: -; ADJUST governs all user-facing interfaces: GUI, TUI, CLI, web, mobile, -; documentation, error messages, and installation flows. It applies to -; both human users and assistive technologies (screen readers, switch -; devices, braille displays, voice control). -; -; Relationship to other contractiles: -; - MUST: ADJUST invariants are a subset of MUST — violating ADJUST -; is a MUST violation. ADJUST exists separately because accessibility -; rules are numerous enough to warrant their own file, and because -; LLMs frequently forget accessibility unless explicitly reminded. -; - TRUST: ADJUST does not affect trust levels. All trust tiers must -; respect ADJUST invariants equally. -; - DUST: Deprecating a feature does not exempt it from ADJUST until -; it is fully removed. Deprecated UI must remain accessible. -; - INTENT: ADJUST supports the anti-purpose "this software is NOT -; only for able-bodied users with modern hardware." -; -; Standard: WCAG 2.2 Level AA (minimum) -; https://www.w3.org/WAI/WCAG22/quickref/?levels=aaa -; -; Why a separate file: -; Experience shows LLMs and developers alike treat accessibility as an -; afterthought. By placing invariants in a contractile that is loaded -; at session start, we make it structurally impossible to forget. -; -; ── End Definitions ────────────────────────────────────────────── - -(adjust-contractile - (version "1.0.0") - (full-name "Accessibility & Digital Justice for Universal Software & Technology") - (standard "WCAG-2.2-AA") - (repo "rsr-template-repo") - - (invariants - ; ── Visual ── - (adjust "colour-contrast-ratio >= 4.5:1 for normal text") - (adjust "colour-contrast-ratio >= 3:1 for large text (18pt+ or 14pt+ bold)") - (adjust "no information conveyed by colour alone") - (adjust "no flashing or strobing content (3 flashes/second max)") - (adjust "text resizable to 200% without loss of content or function") - (adjust "focus indicators visible on all interactive elements") - - ; ── Keyboard ── - (adjust "all interactive elements reachable via keyboard (Tab/Shift+Tab)") - (adjust "no keyboard traps — user can always Tab away") - (adjust "skip navigation link present on pages with repeated blocks") - (adjust "logical focus order follows visual reading order") - - ; ── Screen reader ── - (adjust "all images have meaningful alt text (or alt='' if decorative)") - (adjust "all form inputs have associated labels") - (adjust "ARIA landmarks used for page regions (main, nav, banner, etc.)") - (adjust "dynamic content updates announced via aria-live regions") - (adjust "semantic HTML used (headings, lists, tables) — not div soup") - - ; ── Interactive ── - (adjust "touch targets minimum 44x44px on mobile/touch interfaces") - (adjust "error messages identify the field and describe the error") - (adjust "error messages not conveyed by colour or position alone") - (adjust "form validation provides suggestions for correction") - - ; ── Media ── - (adjust "video has captions (closed or open)") - (adjust "audio-only content has text transcript") - (adjust "no autoplay of media with sound") - - ; ── Motion ── - (adjust "animations respect prefers-reduced-motion media query") - (adjust "no content depends on motion to convey meaning") - - ; ── CLI/TUI ── - (adjust "CLI output must not rely solely on colour (use symbols: [OK] [FAIL])") - (adjust "TUI must support high-contrast mode") - (adjust "all CLI commands support --help with plain-text output") - (adjust "error messages written in plain language, not jargon or codes alone") - - ; ── Documentation ── - (adjust "docs use clear language, short sentences, logical structure") - (adjust "code examples include comments explaining non-obvious steps") - (adjust "diagrams have text descriptions or alt text") - - ; ── Internationalisation (i18n) ── - (adjust "all user-facing strings externalisable for translation") - (adjust "no hardcoded English in error messages — use message keys") - (adjust "date/time/number formats locale-aware") - (adjust "RTL (right-to-left) layout support where applicable") - (adjust "Unicode handled correctly throughout (UTF-8 everywhere)") - ) - - (related-resources - ; LOL — super-parallel corpus crawler for 1500+ languages - ; Use for linguistic data, translation coverage, and i18n validation - (lol "standards/lol — multilingual NLP corpus, see README.adoc") - (polyglot-i18n "polyglot-i18n — i18n framework and WASM translation engine") - ) - - (enforcement - (ci "accessibility linting in quality.yml workflow") - (pr-block "PR blocked if accessibility regression detected") - (tool "axe-core or pa11y for automated checks on web UI") - (tool "CLI output inspected for colour-only signalling") - (manual "manual screen reader test before major releases") - ) - - (notes - "These are MINIMUM requirements. Exceeding them (AAA) is encouraged." - "When in doubt about an accessibility decision, ask — don't guess." - "Accessibility is not optional polish — it is a structural requirement." - ) -) diff --git a/affinescript-vite/.machine_readable/INTENT.contractile b/affinescript-vite/.machine_readable/INTENT.contractile deleted file mode 100644 index c899f0ea..00000000 --- a/affinescript-vite/.machine_readable/INTENT.contractile +++ /dev/null @@ -1,72 +0,0 @@ -; SPDX-License-Identifier: MPL-2.0 -; INTENT.contractile — Purpose and scope for rsr-template-repo -; Helps LLM/SLM agents understand what this repo IS and IS NOT. -; -; Part of the contractile family: MUST, TRUST, DUST, INTENT, ADJUST - -; ── Definitions ────────────────────────────────────────────────── -; -; INTENT (noun) -; The purpose contractile. Defines what this repository IS, what it is -; NOT (anti-purpose), and which architectural decisions are load-bearing. -; Without INTENT, LLMs drift into scope creep, reverse key decisions, -; or add features that belong in a different repo. -; -; Scope: -; INTENT governs the conceptual boundaries of the project — its reason -; for existing, its domain, and its relationship to the ecosystem. -; It does NOT specify implementation details (that's MUST and code). -; -; Relationship to other contractiles: -; - MUST: INTENT explains WHY certain MUSTs exist. If you don't -; understand a MUST, read INTENT first. -; - TRUST: The "ask-before-touching" section in INTENT maps directly -; to TRUST.trust-deny for the most sensitive areas. -; - ADJUST: INTENT's anti-purpose should include "this software is -; NOT only for users with perfect vision/hearing/mobility." -; - DUST: When INTENT changes (repo pivots), related DUST entries -; should be created for the abandoned direction. -; -; ── End Definitions ────────────────────────────────────────────── - -(intent-contractile - (version "1.0.0") - (repo "rsr-template-repo") - - ; === Purpose (what this repo IS) === - (purpose - "{{ONE_PARAGRAPH_PURPOSE}}" - ) - - ; === Anti-Purpose (what this repo is NOT — prevents scope creep) === - (anti-purpose - "{{ONE_PARAGRAPH_ANTI_PURPOSE}}" - ; Examples: - ; "This is NOT a general-purpose database — it solves one specific problem." - ; "This is NOT a framework — it is a library with a focused API." - ; "This does NOT handle authentication — that is delegated to [other repo]." - ) - - ; === Key Architectural Decisions That Must Not Be Reversed === - (architectural-invariants - ; *REMINDER: List the foundational decisions* - ; ("Idris2 for ABI definitions — dependent types prove interface correctness") - ; ("Zig for FFI — zero-cost C ABI compatibility") - ; ("Elixir for supervision — OTP fault tolerance") - ) - - ; === Sensitive Areas (if in doubt, ask) === - (ask-before-touching - ; *REMINDER: List areas where LLMs should check before modifying* - ; "src/abi/ — formal proofs, changes require re-verification" - ; "ffi/zig/ — C ABI boundary, changes affect all language bindings" - ; ".machine_readable/ — checkpoint files, format is specified" - ) - - ; === Ecosystem Position === - (ecosystem - (belongs-to "{{MONOREPO_OR_STANDALONE}}") - (depends-on ("{{DEP1}}" "{{DEP2}}")) - (depended-on-by ("{{CONSUMER1}}" "{{CONSUMER2}}")) - ) -) diff --git a/affinescript-vite/.machine_readable/MUST.contractile b/affinescript-vite/.machine_readable/MUST.contractile deleted file mode 100644 index 48ffff16..00000000 --- a/affinescript-vite/.machine_readable/MUST.contractile +++ /dev/null @@ -1,91 +0,0 @@ -; SPDX-License-Identifier: MPL-2.0 -; MUST.contractile — Baseline invariants for rsr-template-repo -; These constraints MUST NOT be violated. K9 validators enforce them. -; -; Part of the contractile family: MUST, TRUST, DUST, INTENT, ADJUST - -; ── Definitions ────────────────────────────────────────────────── -; -; MUST (noun/verb) -; The hard-constraint contractile. Defines invariants that are structurally -; required for the repository to function correctly and safely. Violating -; a MUST is always a bug — there are no "soft" MUSTs. -; -; Scope: -; MUST governs code, configuration, CI, and structure. It does NOT govern -; style, preference, or approach — those belong in CLAUDE.md or coding -; standards. MUST is for things that break the project if violated. -; -; Relationship to other contractiles: -; - TRUST: MUST is enforced regardless of trust level. Even maximal-trust -; agents cannot violate MUST constraints. -; - ADJUST: All ADJUST invariants are implicitly MUST invariants too. -; ADJUST exists separately for visibility. -; - INTENT: MUST protects the architectural decisions described in INTENT. -; - DUST: When a feature enters DUST (deprecation), its MUST constraints -; remain active until the feature is fully removed. -; -; Enforcement: -; K9 validators in contractiles/self-validating/ machine-check MUST constraints. -; CI runs these on every PR. Violations block merge. -; -; ── End Definitions ────────────────────────────────────────────── - -(must-contractile - (version "1.0.0") - (repo "rsr-template-repo") - - ; === Universal Invariants (apply to ALL repos) === - - (invariants - ; Paths - (must "no hardcoded absolute paths (/home/*, /mnt/*, /var/mnt/*)") - (must "all paths use env vars, XDG dirs, or relative references") - - ; Language policy - (must "no new TypeScript files") - (must "no new Python files") - (must "no new Go files") - (must "no npm/bun/yarn/pnpm dependencies — Deno only") - - ; Dangerous patterns - (must "no believe_me (Idris2)") - (must "no assert_total (Idris2)") - (must "no Admitted (Coq)") - (must "no sorry (Lean)") - (must "no unsafeCoerce (Haskell)") - (must "no Obj.magic (OCaml)") - (must "no unsafe {} blocks without safety comment (Rust)") - - ; License - (must "SPDX-License-Identifier header on every source file") - (must "no removal or modification of LICENSE file") - - ; Structure - (must ".machine_readable/ directory preserved") - (must "0-AI-MANIFEST.a2ml preserved") - (must "no SCM files in repo root — only in .machine_readable/") - - ; CI - (must "no removal of CI workflows without explicit approval") - (must "all GitHub Actions SHA-pinned") - - ; Code quality - (must "tests must not be deleted or weakened") - (must "generated code in generated/ directory only") - (must "no introduction of OWASP top 10 vulnerabilities") - - ; ABI/FFI (if applicable) - (must "no modification of ABI contracts without proof update") - (must "no removal of formal verification proofs") - ) - - ; === Project-Specific Invariants === - ; *REMINDER: Add invariants specific to this repo* - ; (must "# Add project-specific invariants here") - - (enforcement - (k9-validator "contractiles/self-validating/must-check.k9.ncl") - (ci "quality.yml runs must-check on every PR") - ) -) diff --git a/affinescript-vite/.machine_readable/TRUST.contractile b/affinescript-vite/.machine_readable/TRUST.contractile deleted file mode 100644 index 52fd1f08..00000000 --- a/affinescript-vite/.machine_readable/TRUST.contractile +++ /dev/null @@ -1,80 +0,0 @@ -; SPDX-License-Identifier: MPL-2.0 -; TRUST.contractile — Trust boundaries for rsr-template-repo -; Defines what LLM/SLM agents are trusted to do without asking. -; -; Part of the contractile family: MUST, TRUST, DUST, INTENT, ADJUST - -; ── Definitions ────────────────────────────────────────────────── -; -; TRUST (noun/verb) -; The permission contractile. Defines the boundary between what an AI -; agent may do autonomously and what requires human approval. Trust is -; graduated — not binary — with four levels from minimal to 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. -; -; Scope: -; TRUST governs AI agent behaviour only. It does not affect human -; contributors — humans follow CONTRIBUTING.md and GOVERNANCE.adoc. -; -; Relationship to other contractiles: -; - MUST: Trust never overrides MUST. Even at maximal trust, MUST -; violations are blocked. -; - ADJUST: Trust does not exempt from ADJUST. All trust tiers must -; produce accessible output. -; - INTENT: TRUST.trust-deny protects the sensitive areas listed in -; INTENT.ask-before-touching. -; - DUST: Deprecated features have the same trust rules as active ones. -; -; ── End Definitions ────────────────────────────────────────────── - -(trust-contractile - (version "1.0.0") - (repo "rsr-template-repo") - - (trust-level "maximal") ; maximal | standard | restricted | minimal - - ; === Maximal Trust (default) === - ; LLM may freely do these without asking: - (trust-actions - "read" ; Read any file in the repo - "build" ; Run build commands - "test" ; Run test suites - "lint" ; Run linters and formatters - "format" ; Auto-format code - "doctor" ; Run self-diagnostics - "heal" ; Attempt automatic repair - "git-status" ; Check git status - "git-diff" ; View diffs - "git-log" ; View history - ) - - ; === Denied Actions (always require human approval) === - (trust-deny - "delete-branch" ; Could lose work - "force-push" ; Overwrites history - "modify-ci-secrets" ; Security sensitive - "publish" ; External visibility - "push-to-main" ; Protected branch - "delete-files-bulk" ; More than 5 files at once - "modify-license" ; Legal implications - "modify-security-policy" ; Security implications - "remove-proofs" ; Formal verification regression - "disable-ci-checks" ; Safety regression - ) - - ; === Trust Boundary === - (trust-boundary "repo") ; LLM confined to this repo unless explicitly told otherwise - - ; === Override === - ; Repos requiring tighter trust override these settings with justification: - ; (override - ; (trust-level "restricted") - ; (reason "Contains production secrets / handles PII / etc.") - ; ) -) diff --git a/affinescript-vite/.machine_readable/contractiles/Adjustfile.a2ml b/affinescript-vite/.machine_readable/contractiles/Adjustfile.a2ml new file mode 100644 index 00000000..e99ce6d0 --- /dev/null +++ b/affinescript-vite/.machine_readable/contractiles/Adjustfile.a2ml @@ -0,0 +1,15 @@ +# SPDX-License-Identifier: MPL-2.0 +# Adjustfile (A2ML) - Converted from ADJUST.contractile + +@abstract: +Drift tolerances and corrective actions. Converted from Scheme-based +ADJUST.contractile format to A2ML format. +@end + +## Drift Tolerance + +### placeholder-drift +- description: Template placeholder values should be replaced +- tolerance: 0 placeholder markers +- corrective: Replace all {{PLACEHOLDER}} values +- severity: advisory diff --git a/affinescript-vite/.machine_readable/contractiles/Intentfile.a2ml b/affinescript-vite/.machine_readable/contractiles/Intentfile.a2ml new file mode 100644 index 00000000..3ddb314d --- /dev/null +++ b/affinescript-vite/.machine_readable/contractiles/Intentfile.a2ml @@ -0,0 +1,25 @@ +# SPDX-License-Identifier: MPL-2.0 +# Intentfile (A2ML) - Converted from INTENT.contractile for affinescript-vite + +@abstract: +Purpose and scope for affinescript-vite. This file was converted from Scheme-based +INTENT.contractile format to A2ML format. +@end + +## Purpose + +this software is + +## Anti-Purpose + +this software is + +## If In Doubt + +Sensitive areas from original contractile: +- section in INTENT maps directly +- this software is +- +- +- +- diff --git a/affinescript-vite/.machine_readable/contractiles/Mustfile.a2ml b/affinescript-vite/.machine_readable/contractiles/Mustfile.a2ml new file mode 100644 index 00000000..5de9e049 --- /dev/null +++ b/affinescript-vite/.machine_readable/contractiles/Mustfile.a2ml @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: MPL-2.0 +# Mustfile (A2ML) - Converted from MUST.contractile + +@abstract: +Physical state contract for this repository. Converted from Scheme-based +MUST.contractile format to A2ML format. +@end + +## File Presence + +### license-present +- description: LICENSE file must exist +- run: test -f LICENSE +- severity: critical diff --git a/affinescript-vite/.machine_readable/contractiles/Trustfile.a2ml b/affinescript-vite/.machine_readable/contractiles/Trustfile.a2ml new file mode 100644 index 00000000..0184839d --- /dev/null +++ b/affinescript-vite/.machine_readable/contractiles/Trustfile.a2ml @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: MPL-2.0 +# Trustfile (A2ML) - Converted from TRUST.contractile + +@abstract: +Trust boundaries and integrity invariants. Converted from Scheme-based +TRUST.contractile format to A2ML format. +@end + +## Integrity Invariants + +### no-secrets-committed +- description: No credential files in repo +- run: test ! -f .env && test ! -f credentials.json +- severity: critical diff --git a/affinescript-vite/flake.nix b/affinescript-vite/flake.nix deleted file mode 100644 index 89e6f63b..00000000 --- a/affinescript-vite/flake.nix +++ /dev/null @@ -1,170 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Copyright (c) {{CURRENT_YEAR}} hyperpolymath (hyperpolymath) -# -# Nix flake for AffineScript-Vite -# -# NOTE: guix.scm is the PRIMARY development environment. This flake is provided -# as a FALLBACK for contributors who use Nix instead of Guix. The .envrc checks -# for Guix first, then falls back to Nix. -# -# Usage: -# nix develop # Enter development shell -# nix build # Build the project -# nix flake check # Run checks -# nix flake show # Show flake outputs -# -# With direnv (.envrc already configured): -# direnv allow # Auto-enters shell on cd -# -# TODO: Replace AffineScript-Vite and {{PROJECT_DESCRIPTION}} with actual values. - -{ - description = "AffineScript-Vite — RSR-compliant project"; - - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - flake-utils.url = "github:numtide/flake-utils"; - }; - - outputs = { self, nixpkgs, flake-utils }: - flake-utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" ] (system: - let - pkgs = import nixpkgs { inherit system; }; - - # Common development tools present in every RSR project. - commonTools = with pkgs; [ - git - just - nickel - curl - bash - coreutils - ]; - - # --------------------------------------------------------------- - # Language-specific packages: uncomment the stacks you need. - # --------------------------------------------------------------- - # - # Rust: - # rustc cargo clippy rustfmt rust-analyzer - # - # Elixir: - # elixir erlang - # - # Gleam: - # gleam erlang - # - # Zig: - # zig zls - # - # Haskell: - # ghc cabal-install haskell-language-server - # - # Idris2: - # idris2 - # - # OCaml: - # ocaml dune_3 ocaml-lsp - # - # ReScript (via Deno): - # deno - # - # Julia: - # julia - # - # Ada/SPARK: - # gnat gprbuild - # - # --------------------------------------------------------------- - languageTools = with pkgs; [ - # TODO: Uncomment or add packages for your stack. - # Example for a Rust project: - # rustc - # cargo - # clippy - # rustfmt - # rust-analyzer - ]; - - in - { - # --------------------------------------------------------------- - # Development shell — `nix develop` - # --------------------------------------------------------------- - devShells.default = pkgs.mkShell { - name = "AffineScript-Vite-dev"; - - buildInputs = commonTools ++ languageTools; - - # Environment variables available inside the shell. - env = { - PROJECT_NAME = "AffineScript-Vite"; - RSR_TIER = "infrastructure"; - }; - - shellHook = '' - echo "" - echo " AffineScript-Vite — development shell" - echo " Nix: $(nix --version 2>/dev/null || echo 'unknown')" - echo " Just: $(just --version 2>/dev/null || echo 'not found')" - echo "" - echo " Run 'just' to see available recipes." - echo "" - - # Source .envrc manually when direnv is not managing the shell. - # This keeps project env vars (PROJECT_NAME, DATABASE_URL, etc.) - # consistent whether you enter via 'nix develop' or 'direnv allow'. - if [ -z "''${DIRENV_IN_ENVRC:-}" ] && [ -f .envrc ]; then - # Only source the non-nix parts to avoid recursion. - export PROJECT_NAME="AffineScript-Vite" - export RSR_TIER="infrastructure" - if [ -f .env ]; then - set -a - . .env - set +a - fi - fi - ''; - }; - - # --------------------------------------------------------------- - # Package — `nix build` - # --------------------------------------------------------------- - packages.default = pkgs.stdenv.mkDerivation { - pname = "AffineScript-Vite"; - version = "0.1.0"; - - src = self; - - # TODO: Replace with real build instructions. - # Examples: - # - # Rust (use rustPlatform.buildRustPackage instead of stdenv): - # packages.default = pkgs.rustPlatform.buildRustPackage { ... }; - # - # Elixir (use mixRelease): - # packages.default = pkgs.beamPackages.mixRelease { ... }; - # - # Zig: - # buildPhase = "zig build -Doptimize=ReleaseSafe"; - - buildPhase = '' - echo "TODO: Add build commands for AffineScript-Vite" - ''; - - installPhase = '' - mkdir -p $out/share/doc - cp README.adoc $out/share/doc/ 2>/dev/null || true - ''; - - meta = with pkgs.lib; { - description = "{{PROJECT_DESCRIPTION}}"; - homepage = "https://github.com/hyperpolymath/AffineScript-Vite"; - license = licenses.mpl20; # MPL-2.0 extends MPL-2.0 - maintainers = []; - platforms = [ "x86_64-linux" "aarch64-linux" ]; - }; - }; - } - ); -} diff --git a/affinescriptiser/.machine_readable/ADJUST.contractile b/affinescriptiser/.machine_readable/ADJUST.contractile deleted file mode 100644 index 1807e29e..00000000 --- a/affinescriptiser/.machine_readable/ADJUST.contractile +++ /dev/null @@ -1,126 +0,0 @@ -; SPDX-License-Identifier: MPL-2.0 -; ADJUST.contractile — Accessibility invariants for affinescriptiser -; "ADJUST" = Accessibility & Digital Justice for Universal Software & Technology -; -; Part of the contractile family: MUST, TRUST, DUST, INTENT, ADJUST -; This file is machine-readable. LLM/SLM agents MUST NOT violate these invariants. - -; ── Definitions ────────────────────────────────────────────────── -; -; ADJUST (noun/verb) -; The accessibility contractile. Defines how software must adapt to serve -; all users regardless of ability, device, or context. Named for the verb -; "adjust" — to make suitable, to adapt, to accommodate — which is the -; core action of accessible design. -; -; Scope: -; ADJUST governs all user-facing interfaces: GUI, TUI, CLI, web, mobile, -; documentation, error messages, and installation flows. It applies to -; both human users and assistive technologies (screen readers, switch -; devices, braille displays, voice control). -; -; Relationship to other contractiles: -; - MUST: ADJUST invariants are a subset of MUST — violating ADJUST -; is a MUST violation. ADJUST exists separately because accessibility -; rules are numerous enough to warrant their own file, and because -; LLMs frequently forget accessibility unless explicitly reminded. -; - TRUST: ADJUST does not affect trust levels. All trust tiers must -; respect ADJUST invariants equally. -; - DUST: Deprecating a feature does not exempt it from ADJUST until -; it is fully removed. Deprecated UI must remain accessible. -; - INTENT: ADJUST supports the anti-purpose "this software is NOT -; only for able-bodied users with modern hardware." -; -; Standard: WCAG 2.2 Level AA (minimum) -; https://www.w3.org/WAI/WCAG22/quickref/?levels=aaa -; -; Why a separate file: -; Experience shows LLMs and developers alike treat accessibility as an -; afterthought. By placing invariants in a contractile that is loaded -; at session start, we make it structurally impossible to forget. -; -; ── End Definitions ────────────────────────────────────────────── - -(adjust-contractile - (version "1.0.0") - (full-name "Accessibility & Digital Justice for Universal Software & Technology") - (standard "WCAG-2.2-AA") - (repo "affinescriptiser") - - (invariants - ; ── Visual ── - (adjust "colour-contrast-ratio >= 4.5:1 for normal text") - (adjust "colour-contrast-ratio >= 3:1 for large text (18pt+ or 14pt+ bold)") - (adjust "no information conveyed by colour alone") - (adjust "no flashing or strobing content (3 flashes/second max)") - (adjust "text resizable to 200% without loss of content or function") - (adjust "focus indicators visible on all interactive elements") - - ; ── Keyboard ── - (adjust "all interactive elements reachable via keyboard (Tab/Shift+Tab)") - (adjust "no keyboard traps — user can always Tab away") - (adjust "skip navigation link present on pages with repeated blocks") - (adjust "logical focus order follows visual reading order") - - ; ── Screen reader ── - (adjust "all images have meaningful alt text (or alt='' if decorative)") - (adjust "all form inputs have associated labels") - (adjust "ARIA landmarks used for page regions (main, nav, banner, etc.)") - (adjust "dynamic content updates announced via aria-live regions") - (adjust "semantic HTML used (headings, lists, tables) — not div soup") - - ; ── Interactive ── - (adjust "touch targets minimum 44x44px on mobile/touch interfaces") - (adjust "error messages identify the field and describe the error") - (adjust "error messages not conveyed by colour or position alone") - (adjust "form validation provides suggestions for correction") - - ; ── Media ── - (adjust "video has captions (closed or open)") - (adjust "audio-only content has text transcript") - (adjust "no autoplay of media with sound") - - ; ── Motion ── - (adjust "animations respect prefers-reduced-motion media query") - (adjust "no content depends on motion to convey meaning") - - ; ── CLI/TUI ── - (adjust "CLI output must not rely solely on colour (use symbols: [OK] [FAIL])") - (adjust "TUI must support high-contrast mode") - (adjust "all CLI commands support --help with plain-text output") - (adjust "error messages written in plain language, not jargon or codes alone") - - ; ── Documentation ── - (adjust "docs use clear language, short sentences, logical structure") - (adjust "code examples include comments explaining non-obvious steps") - (adjust "diagrams have text descriptions or alt text") - - ; ── Internationalisation (i18n) ── - (adjust "all user-facing strings externalisable for translation") - (adjust "no hardcoded English in error messages — use message keys") - (adjust "date/time/number formats locale-aware") - (adjust "RTL (right-to-left) layout support where applicable") - (adjust "Unicode handled correctly throughout (UTF-8 everywhere)") - ) - - (related-resources - ; LOL — super-parallel corpus crawler for 1500+ languages - ; Use for linguistic data, translation coverage, and i18n validation - (lol "standards/lol — multilingual NLP corpus, see README.adoc") - (polyglot-i18n "polyglot-i18n — i18n framework and WASM translation engine") - ) - - (enforcement - (ci "accessibility linting in quality.yml workflow") - (pr-block "PR blocked if accessibility regression detected") - (tool "axe-core or pa11y for automated checks on web UI") - (tool "CLI output inspected for colour-only signalling") - (manual "manual screen reader test before major releases") - ) - - (notes - "These are MINIMUM requirements. Exceeding them (AAA) is encouraged." - "When in doubt about an accessibility decision, ask — don't guess." - "Accessibility is not optional polish — it is a structural requirement." - ) -) diff --git a/affinescriptiser/.machine_readable/INTENT.contractile b/affinescriptiser/.machine_readable/INTENT.contractile deleted file mode 100644 index 55998e12..00000000 --- a/affinescriptiser/.machine_readable/INTENT.contractile +++ /dev/null @@ -1,72 +0,0 @@ -; SPDX-License-Identifier: MPL-2.0 -; INTENT.contractile — Purpose and scope for affinescriptiser -; Helps LLM/SLM agents understand what this repo IS and IS NOT. -; -; Part of the contractile family: MUST, TRUST, DUST, INTENT, ADJUST - -; ── Definitions ────────────────────────────────────────────────── -; -; INTENT (noun) -; The purpose contractile. Defines what this repository IS, what it is -; NOT (anti-purpose), and which architectural decisions are load-bearing. -; Without INTENT, LLMs drift into scope creep, reverse key decisions, -; or add features that belong in a different repo. -; -; Scope: -; INTENT governs the conceptual boundaries of the project — its reason -; for existing, its domain, and its relationship to the ecosystem. -; It does NOT specify implementation details (that's MUST and code). -; -; Relationship to other contractiles: -; - MUST: INTENT explains WHY certain MUSTs exist. If you don't -; understand a MUST, read INTENT first. -; - TRUST: The "ask-before-touching" section in INTENT maps directly -; to TRUST.trust-deny for the most sensitive areas. -; - ADJUST: INTENT's anti-purpose should include "this software is -; NOT only for users with perfect vision/hearing/mobility." -; - DUST: When INTENT changes (repo pivots), related DUST entries -; should be created for the abandoned direction. -; -; ── End Definitions ────────────────────────────────────────────── - -(intent-contractile - (version "1.0.0") - (repo "affinescriptiser") - - ; === Purpose (what this repo IS) === - (purpose - "{{ONE_PARAGRAPH_PURPOSE}}" - ) - - ; === Anti-Purpose (what this repo is NOT — prevents scope creep) === - (anti-purpose - "{{ONE_PARAGRAPH_ANTI_PURPOSE}}" - ; Examples: - ; "This is NOT a general-purpose database — it solves one specific problem." - ; "This is NOT a framework — it is a library with a focused API." - ; "This does NOT handle authentication — that is delegated to [other repo]." - ) - - ; === Key Architectural Decisions That Must Not Be Reversed === - (architectural-invariants - ; *REMINDER: List the foundational decisions* - ; ("Idris2 for ABI definitions — dependent types prove interface correctness") - ; ("Zig for FFI — zero-cost C ABI compatibility") - ; ("Elixir for supervision — OTP fault tolerance") - ) - - ; === Sensitive Areas (if in doubt, ask) === - (ask-before-touching - ; *REMINDER: List areas where LLMs should check before modifying* - ; "src/abi/ — formal proofs, changes require re-verification" - ; "ffi/zig/ — C ABI boundary, changes affect all language bindings" - ; ".machine_readable/ — checkpoint files, format is specified" - ) - - ; === Ecosystem Position === - (ecosystem - (belongs-to "{{MONOREPO_OR_STANDALONE}}") - (depends-on ("{{DEP1}}" "{{DEP2}}")) - (depended-on-by ("{{CONSUMER1}}" "{{CONSUMER2}}")) - ) -) diff --git a/affinescriptiser/.machine_readable/MUST.contractile b/affinescriptiser/.machine_readable/MUST.contractile deleted file mode 100644 index 61ec4a7d..00000000 --- a/affinescriptiser/.machine_readable/MUST.contractile +++ /dev/null @@ -1,91 +0,0 @@ -; SPDX-License-Identifier: MPL-2.0 -; MUST.contractile — Baseline invariants for affinescriptiser -; These constraints MUST NOT be violated. K9 validators enforce them. -; -; Part of the contractile family: MUST, TRUST, DUST, INTENT, ADJUST - -; ── Definitions ────────────────────────────────────────────────── -; -; MUST (noun/verb) -; The hard-constraint contractile. Defines invariants that are structurally -; required for the repository to function correctly and safely. Violating -; a MUST is always a bug — there are no "soft" MUSTs. -; -; Scope: -; MUST governs code, configuration, CI, and structure. It does NOT govern -; style, preference, or approach — those belong in CLAUDE.md or coding -; standards. MUST is for things that break the project if violated. -; -; Relationship to other contractiles: -; - TRUST: MUST is enforced regardless of trust level. Even maximal-trust -; agents cannot violate MUST constraints. -; - ADJUST: All ADJUST invariants are implicitly MUST invariants too. -; ADJUST exists separately for visibility. -; - INTENT: MUST protects the architectural decisions described in INTENT. -; - DUST: When a feature enters DUST (deprecation), its MUST constraints -; remain active until the feature is fully removed. -; -; Enforcement: -; K9 validators in contractiles/self-validating/ machine-check MUST constraints. -; CI runs these on every PR. Violations block merge. -; -; ── End Definitions ────────────────────────────────────────────── - -(must-contractile - (version "1.0.0") - (repo "affinescriptiser") - - ; === Universal Invariants (apply to ALL repos) === - - (invariants - ; Paths - (must "no hardcoded absolute paths (/home/*, /mnt/*, /var/mnt/*)") - (must "all paths use env vars, XDG dirs, or relative references") - - ; Language policy - (must "no new TypeScript files") - (must "no new Python files") - (must "no new Go files") - (must "no npm/bun/yarn/pnpm dependencies — Deno only") - - ; Dangerous patterns - (must "no believe_me (Idris2)") - (must "no assert_total (Idris2)") - (must "no Admitted (Coq)") - (must "no sorry (Lean)") - (must "no unsafeCoerce (Haskell)") - (must "no Obj.magic (OCaml)") - (must "no unsafe {} blocks without safety comment (Rust)") - - ; License - (must "SPDX-License-Identifier header on every source file") - (must "no removal or modification of LICENSE file") - - ; Structure - (must ".machine_readable/ directory preserved") - (must "0-AI-MANIFEST.a2ml preserved") - (must "no SCM files in repo root — only in .machine_readable/") - - ; CI - (must "no removal of CI workflows without explicit approval") - (must "all GitHub Actions SHA-pinned") - - ; Code quality - (must "tests must not be deleted or weakened") - (must "generated code in generated/ directory only") - (must "no introduction of OWASP top 10 vulnerabilities") - - ; ABI/FFI (if applicable) - (must "no modification of ABI contracts without proof update") - (must "no removal of formal verification proofs") - ) - - ; === Project-Specific Invariants === - ; *REMINDER: Add invariants specific to this repo* - ; (must "# Add project-specific invariants here") - - (enforcement - (k9-validator "contractiles/self-validating/must-check.k9.ncl") - (ci "quality.yml runs must-check on every PR") - ) -) diff --git a/affinescriptiser/.machine_readable/TRUST.contractile b/affinescriptiser/.machine_readable/TRUST.contractile deleted file mode 100644 index 76e51671..00000000 --- a/affinescriptiser/.machine_readable/TRUST.contractile +++ /dev/null @@ -1,80 +0,0 @@ -; SPDX-License-Identifier: MPL-2.0 -; TRUST.contractile — Trust boundaries for affinescriptiser -; Defines what LLM/SLM agents are trusted to do without asking. -; -; Part of the contractile family: MUST, TRUST, DUST, INTENT, ADJUST - -; ── Definitions ────────────────────────────────────────────────── -; -; TRUST (noun/verb) -; The permission contractile. Defines the boundary between what an AI -; agent may do autonomously and what requires human approval. Trust is -; graduated — not binary — with four levels from minimal to 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. -; -; Scope: -; TRUST governs AI agent behaviour only. It does not affect human -; contributors — humans follow CONTRIBUTING.md and GOVERNANCE.adoc. -; -; Relationship to other contractiles: -; - MUST: Trust never overrides MUST. Even at maximal trust, MUST -; violations are blocked. -; - ADJUST: Trust does not exempt from ADJUST. All trust tiers must -; produce accessible output. -; - INTENT: TRUST.trust-deny protects the sensitive areas listed in -; INTENT.ask-before-touching. -; - DUST: Deprecated features have the same trust rules as active ones. -; -; ── End Definitions ────────────────────────────────────────────── - -(trust-contractile - (version "1.0.0") - (repo "affinescriptiser") - - (trust-level "maximal") ; maximal | standard | restricted | minimal - - ; === Maximal Trust (default) === - ; LLM may freely do these without asking: - (trust-actions - "read" ; Read any file in the repo - "build" ; Run build commands - "test" ; Run test suites - "lint" ; Run linters and formatters - "format" ; Auto-format code - "doctor" ; Run self-diagnostics - "heal" ; Attempt automatic repair - "git-status" ; Check git status - "git-diff" ; View diffs - "git-log" ; View history - ) - - ; === Denied Actions (always require human approval) === - (trust-deny - "delete-branch" ; Could lose work - "force-push" ; Overwrites history - "modify-ci-secrets" ; Security sensitive - "publish" ; External visibility - "push-to-main" ; Protected branch - "delete-files-bulk" ; More than 5 files at once - "modify-license" ; Legal implications - "modify-security-policy" ; Security implications - "remove-proofs" ; Formal verification regression - "disable-ci-checks" ; Safety regression - ) - - ; === Trust Boundary === - (trust-boundary "repo") ; LLM confined to this repo unless explicitly told otherwise - - ; === Override === - ; Repos requiring tighter trust override these settings with justification: - ; (override - ; (trust-level "restricted") - ; (reason "Contains production secrets / handles PII / etc.") - ; ) -) diff --git a/affinescriptiser/.machine_readable/contractiles/Adjustfile.a2ml b/affinescriptiser/.machine_readable/contractiles/Adjustfile.a2ml new file mode 100644 index 00000000..e99ce6d0 --- /dev/null +++ b/affinescriptiser/.machine_readable/contractiles/Adjustfile.a2ml @@ -0,0 +1,15 @@ +# SPDX-License-Identifier: MPL-2.0 +# Adjustfile (A2ML) - Converted from ADJUST.contractile + +@abstract: +Drift tolerances and corrective actions. Converted from Scheme-based +ADJUST.contractile format to A2ML format. +@end + +## Drift Tolerance + +### placeholder-drift +- description: Template placeholder values should be replaced +- tolerance: 0 placeholder markers +- corrective: Replace all {{PLACEHOLDER}} values +- severity: advisory diff --git a/affinescriptiser/.machine_readable/contractiles/Intentfile.a2ml b/affinescriptiser/.machine_readable/contractiles/Intentfile.a2ml new file mode 100644 index 00000000..fd91d644 --- /dev/null +++ b/affinescriptiser/.machine_readable/contractiles/Intentfile.a2ml @@ -0,0 +1,25 @@ +# SPDX-License-Identifier: MPL-2.0 +# Intentfile (A2ML) - Converted from INTENT.contractile for affinescriptiser + +@abstract: +Purpose and scope for affinescriptiser. This file was converted from Scheme-based +INTENT.contractile format to A2ML format. +@end + +## Purpose + +this software is + +## Anti-Purpose + +this software is + +## If In Doubt + +Sensitive areas from original contractile: +- section in INTENT maps directly +- this software is +- +- +- +- diff --git a/affinescriptiser/.machine_readable/contractiles/Mustfile.a2ml b/affinescriptiser/.machine_readable/contractiles/Mustfile.a2ml new file mode 100644 index 00000000..5de9e049 --- /dev/null +++ b/affinescriptiser/.machine_readable/contractiles/Mustfile.a2ml @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: MPL-2.0 +# Mustfile (A2ML) - Converted from MUST.contractile + +@abstract: +Physical state contract for this repository. Converted from Scheme-based +MUST.contractile format to A2ML format. +@end + +## File Presence + +### license-present +- description: LICENSE file must exist +- run: test -f LICENSE +- severity: critical diff --git a/affinescriptiser/.machine_readable/contractiles/Trustfile.a2ml b/affinescriptiser/.machine_readable/contractiles/Trustfile.a2ml new file mode 100644 index 00000000..0184839d --- /dev/null +++ b/affinescriptiser/.machine_readable/contractiles/Trustfile.a2ml @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: MPL-2.0 +# Trustfile (A2ML) - Converted from TRUST.contractile + +@abstract: +Trust boundaries and integrity invariants. Converted from Scheme-based +TRUST.contractile format to A2ML format. +@end + +## Integrity Invariants + +### no-secrets-committed +- description: No credential files in repo +- run: test ! -f .env && test ! -f credentials.json +- severity: critical From f00bcd8d095b1982ce95f03092158f93036800d1 Mon Sep 17 00:00:00 2001 From: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com> Date: Mon, 8 Jun 2026 00:59:41 +0100 Subject: [PATCH 8/8] Add missing bust/dust contractiles --- .../contractiles/bust/Bustfile.a2ml | 52 ++++++++++++++++ .../contractiles/dust/Dustfile.a2ml | 62 +++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 .machine_readable/contractiles/bust/Bustfile.a2ml create mode 100644 .machine_readable/contractiles/dust/Dustfile.a2ml diff --git a/.machine_readable/contractiles/bust/Bustfile.a2ml b/.machine_readable/contractiles/bust/Bustfile.a2ml new file mode 100644 index 00000000..057ea572 --- /dev/null +++ b/.machine_readable/contractiles/bust/Bustfile.a2ml @@ -0,0 +1,52 @@ +# SPDX-License-Identifier: MPL-2.0 +# Bustfile — failure mode contractile for affinescript +# Author: Jonathan D.A. Jewell +# +# Paired runner: bust.ncl +# Verb: bust +# Semantics: Every declared failure mode must have a working recovery path +# that has been exercised. Status moves: +# declared → drilled (probe run) → verified (recovery confirmed) +# or → failing (recovery broken) +# +# CLI: +# contractile bust check → list failure modes + recovery status +# contractile bust drill → inject failures, verify recovery paths +# +# This repository: affinescript is the canonical template for RSR compliance. +# Failure modes here relate to template distribution and substitution. + +@abstract: +Bustfile for affinescript. Lists failure modes specific to the template +repository itself, particularly around template distribution, substitution, +and synchronization across the hyperpolymath estate. +@end + +## Failure Modes + +### template-substitution-failure +- class: template_processing +- description: Template substitution fails when initializing a new repo from this template +- injection_probe: "cp -r affinescript test-repo && cd test-repo && sed -i 's/affinescript/TEST/g' .machine_readable/contractiles/Intentfile.a2ml && grep -q 'TEST' .machine_readable/contractiles/Intentfile.a2ml" +- recovery_probe: "git -C test-repo diff --quiet .machine_readable/contractiles/Intentfile.a2ml" +- expected_recovery_time_seconds: 10 +- status: declared +- notes: Verify that substitution scripts handle all placeholder replacements correctly + +### sync-drift-between-repos +- class: synchronization +- description: Drift occurs between affinescript and other repos after template updates +- injection_probe: "echo 'template_updated' > /tmp/test_drift_marker" +- recovery_probe: "test -f /tmp/test_drift_marker && rm /tmp/test_drift_marker" +- expected_recovery_time_seconds: 60 +- status: declared +- notes: The estate-wide sync scripts (see scripts/) should prevent this; verify with scripts/verify-sync.sh + +### contractile-parse-error +- class: contractile_format +- description: A contractile file fails to parse due to syntax errors +- injection_probe: "echo 'invalid syntax' >> affinescript/.machine_readable/contractiles/Intentfile.a2ml" +- recovery_probe: "git checkout affinescript/.machine_readable/contractiles/Intentfile.a2ml" +- expected_recovery_time_seconds: 5 +- status: declared +- notes: All .a2ml files should be valid A2ML; use a2ml-validate runner diff --git a/.machine_readable/contractiles/dust/Dustfile.a2ml b/.machine_readable/contractiles/dust/Dustfile.a2ml new file mode 100644 index 00000000..43ca5426 --- /dev/null +++ b/.machine_readable/contractiles/dust/Dustfile.a2ml @@ -0,0 +1,62 @@ +# SPDX-License-Identifier: MPL-2.0 +# Dustfile — Cleanup and hygiene contract for affinescript +# Author: Jonathan D.A. Jewell +# +# Paired runner: dust.ncl +# Verb: dust +# Semantics: What should be cleaned up. Housekeeping, not blockers. +# +# This repository: affinescript is the canonical template. +# Cleanup items here ensure the template itself remains pristine. + +@abstract: +Cleanup and hygiene items for affinescript. These are maintenance tasks +that ensure the template repository remains clean and ready for distribution +to new repositories. +@end + +## Stale Files + +### no-template-artifacts +- description: No generated files from template testing in root +- run: test -z "$(ls template-test-* 2>/dev/null)" +- severity: info +- notes: Template testing should use /tmp or dedicated test directories + +### no-example-placeholders +- description: No example placeholder files (EXAMPLE-, SAMPLE-) in contractiles/ +- run: test -z "$(find .machine_readable/contractiles/ -name 'EXAMPLE-*' -o -name 'SAMPLE-*' 2>/dev/null)" +- severity: warning +- notes: All placeholders should be replaced with actual content or removed + +### no-old-contractile-formats +- description: No old .contractile or .hs files remaining +- run: test -z "$(find .machine_readable/contractiles/ \( -name '*.contractile' -o -name '*.hs' \) 2>/dev/null)" +- severity: warning +- notes: All contractiles should be .a2ml format + +## Format Duplicates + +### no-duplicate-justfile +- description: Only one Justfile (hardlinked from root to .machine_readable/contractiles/) +- run: test $(stat -c '%i' Justfile) = $(stat -c '%i' .machine_readable/contractiles/Justfile 2>/dev/null) +- severity: warning +- notes: Justfile should be hardlinked, not copied + +### no-duplicate-readme-format +- description: Only one README format in contractiles/ (.adoc canonical) +- run: test ! -f .machine_readable/contractiles/README.md +- severity: info + +## Template Hygiene + +### no-stale-template-references +- description: No references to affinescript in generic template files +- run: test -z "$(grep -r 'affinescript' machine-readable-design/ 2>/dev/null)" +- severity: warning +- notes: Generic templates should use {{PROJECT_NAME}} or similar placeholders + +### version-sync-checked +- description: Version in canonical-directory-structure matches .machine_readable/contractiles +- verification: compare version identifiers in both locations +- severity: info