From 3320d17951ee02ddc69eb46758def82d62ed66f9 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Mon, 7 Sep 2026 03:37:04 +0100 Subject: [PATCH 1/2] Index Firmboot continuity research across the language portfolio --- .claude/CLAUDE.md | 14 ++++---- .github/workflows/boj-build.yml | 11 +++++-- .github/workflows/casket-pages.yml | 1 + .github/workflows/codeql.yml | 1 + .github/workflows/dogfood-gate.yml | 3 +- .github/workflows/governance.yml | 3 +- .github/workflows/hypatia-scan.yml | 1 + .github/workflows/instant-sync.yml | 1 + .github/workflows/label-triage.yml | 1 + .github/workflows/labels.yml | 1 + .github/workflows/mirror.yml | 1 + .github/workflows/pages.yml | 1 + .github/workflows/push-email-notify.yml | 1 + .github/workflows/scorecard.yml | 1 + .github/workflows/secret-scanner.yml | 1 + .github/workflows/semgrep.yml | 1 + .github/workflows/workflow-linter.yml | 1 + .machine_readable/LANGUAGES.a2ml | 14 ++++++-- .machine_readable/bot_directives/hypatia.a2ml | 4 +-- .../contractiles/Intentfile.a2ml | 1 + .../{6a2 => descriptiles}/0-AI-MANIFEST.a2ml | 4 +-- .../{6a2 => descriptiles}/AGENTIC.a2ml | 4 +-- .../{6a2 => descriptiles}/ECOSYSTEM.a2ml | 1 + .../{6a2 => descriptiles}/META.a2ml | 0 .../{6a2 => descriptiles}/NEUROSYM.a2ml | 0 .../{6a2 => descriptiles}/PLAYBOOK.a2ml | 6 ++-- .../{6a2 => descriptiles}/README.adoc | 2 +- .../{6a2 => descriptiles}/STATE.a2ml | 7 ++-- .../anchor/0-AI-MANIFEST.a2ml | 0 .../{6a2 => descriptiles}/anchor/ANCHOR.a2ml | 2 +- .../{6a2 => descriptiles}/anchor/README.adoc | 0 .../svc/k9/methodology-guard.k9.ncl | 4 +-- .machine_readable/svc/k9/must-check.k9.ncl | 8 ++--- 0-AI-MANIFEST.a2ml | 26 +++++++-------- EXPLAINME.adoc | 2 +- README.adoc | 19 +++++++++++ ROADMAP.adoc | 2 +- TOOLING-STATUS.adoc | 6 ++-- TOPOLOGY.adoc | 2 +- docs/language-portfolio.adoc | 11 ++++++- hooks/validate-coordinator-boundary.sh | 2 +- hooks/validate-language-registry.sh | 20 ++++++----- language-status-tracker.jl | 9 +++-- languages/README.adoc | 33 ++++++++++--------- languages/firmboot.adoc | 20 +++++++++++ 45 files changed, 173 insertions(+), 80 deletions(-) rename .machine_readable/{6a2 => descriptiles}/0-AI-MANIFEST.a2ml (81%) rename .machine_readable/{6a2 => descriptiles}/AGENTIC.a2ml (84%) rename .machine_readable/{6a2 => descriptiles}/ECOSYSTEM.a2ml (98%) rename .machine_readable/{6a2 => descriptiles}/META.a2ml (100%) rename .machine_readable/{6a2 => descriptiles}/NEUROSYM.a2ml (100%) rename .machine_readable/{6a2 => descriptiles}/PLAYBOOK.a2ml (92%) rename .machine_readable/{6a2 => descriptiles}/README.adoc (97%) rename .machine_readable/{6a2 => descriptiles}/STATE.a2ml (88%) rename .machine_readable/{6a2 => descriptiles}/anchor/0-AI-MANIFEST.a2ml (100%) rename .machine_readable/{6a2 => descriptiles}/anchor/ANCHOR.a2ml (86%) rename .machine_readable/{6a2 => descriptiles}/anchor/README.adoc (100%) create mode 100644 languages/firmboot.adoc diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index 3b6967f..3b99f80 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -34,12 +34,12 @@ retired: The following files in `.machine_readable/` contain structured project metadata: -- `.machine_readable/6a2/STATE.a2ml` - Current project state and progress -- `.machine_readable/6a2/META.a2ml` - Architecture decisions and development practices -- `.machine_readable/6a2/ECOSYSTEM.a2ml` - Position in the ecosystem and related projects -- `.machine_readable/6a2/AGENTIC.a2ml` - AI agent interaction patterns -- `.machine_readable/6a2/NEUROSYM.a2ml` - Neurosymbolic integration config -- `.machine_readable/6a2/PLAYBOOK.a2ml` - Operational runbook +- `.machine_readable/descriptiles/STATE.a2ml` - Current project state and progress +- `.machine_readable/descriptiles/META.a2ml` - Architecture decisions and development practices +- `.machine_readable/descriptiles/ECOSYSTEM.a2ml` - Position in the ecosystem and related projects +- `.machine_readable/descriptiles/AGENTIC.a2ml` - AI agent interaction patterns +- `.machine_readable/descriptiles/NEUROSYM.a2ml` - Neurosymbolic integration config +- `.machine_readable/descriptiles/PLAYBOOK.a2ml` - Operational runbook --- @@ -60,7 +60,7 @@ The following files in `.machine_readable/` contain structured project metadata: | **Bash/POSIX Shell** | Scripts, automation | Keep minimal | | **JavaScript** | Only where AffineScript cannot | MCP protocol glue, Bun APIs | | **Nickel** | Configuration language | For complex configs | -| **Guile Scheme** | State/meta files | .machine_readable/6a2/STATE.a2ml, .machine_readable/6a2/META.a2ml, .machine_readable/6a2/ECOSYSTEM.a2ml | +| **Guile Scheme** | State/meta files | .machine_readable/descriptiles/STATE.a2ml, .machine_readable/descriptiles/META.a2ml, .machine_readable/descriptiles/ECOSYSTEM.a2ml | | **Julia** | Batch scripts, data processing | Per RSR | | **OCaml** | AffineScript compiler | Language-specific | | **Ada** | Safety-critical systems | Where required | diff --git a/.github/workflows/boj-build.yml b/.github/workflows/boj-build.yml index accee54..bba169e 100644 --- a/.github/workflows/boj-build.yml +++ b/.github/workflows/boj-build.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # This workflow is managed by gh actions-lock. # This workflow is managed by gh actions-lock. @@ -14,9 +15,15 @@ jobs: - name: Checkout uses: actions/checkout@v7.0.1 - name: Trigger BoJ Server (Casket/ssg-mcp) + env: + BOJ_REPOSITORY: ${{ github.repository }} + BOJ_BRANCH: ${{ github.ref_name }} run: | - # Send a secure trigger to boj-server to build this repository - curl -X POST "http://boj-server.local:7700/cartridges/ssg-mcp/invoke" -H "Content-Type: application/json" -d "{\"repo\": \"${{ github.repository }}\", \"branch\": \"${{ github.ref_name }}\", \"engine\": \"casket\\"}"} + jq -n --arg repo "$BOJ_REPOSITORY" --arg branch "$BOJ_BRANCH" \ + '{repo: $repo, branch: $branch, engine: "casket"}' | + curl --fail-with-body --silent --show-error --connect-timeout 5 --max-time 30 \ + -H 'Content-Type: application/json' --data-binary @- \ + http://boj-server.local:7700/cartridges/ssg-mcp/invoke continue-on-error: true permissions: contents: read diff --git a/.github/workflows/casket-pages.yml b/.github/workflows/casket-pages.yml index 0ef5403..a316ac5 100644 --- a/.github/workflows/casket-pages.yml +++ b/.github/workflows/casket-pages.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # This workflow is managed by gh actions-lock. # This workflow is managed by gh actions-lock. diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index ef99a90..7e96e92 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # This workflow is managed by gh actions-lock. # This workflow is managed by gh actions-lock. diff --git a/.github/workflows/dogfood-gate.yml b/.github/workflows/dogfood-gate.yml index 6905273..7e5538e 100644 --- a/.github/workflows/dogfood-gate.yml +++ b/.github/workflows/dogfood-gate.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # This workflow is managed by gh actions-lock. # This workflow is managed by gh actions-lock. @@ -279,7 +280,7 @@ jobs: run: | echo "## Language Registry Consistency" >> "$GITHUB_STEP_SUMMARY" echo "" >> "$GITHUB_STEP_SUMMARY" - echo "Verifies every language appears on all registry surfaces (\`languages/\`, \`LANGUAGES.a2ml\`, the boundary-hook \`LANGS\` list, \`ECOSYSTEM.a2ml\`, and the status tracker), so the family cannot silently drift out of sync. Canonical set: \`languages/*.md\`." >> "$GITHUB_STEP_SUMMARY" + echo "Verifies every language appears on all registry surfaces (\`languages/\`, \`LANGUAGES.a2ml\`, the boundary-hook \`LANGS\` list, \`ECOSYSTEM.a2ml\`, and the status tracker), so the family cannot silently drift out of sync. Canonical set: \`languages/*.adoc\`." >> "$GITHUB_STEP_SUMMARY" # --------------------------------------------------------------------------- # Job 6: Dogfooding summary diff --git a/.github/workflows/governance.yml b/.github/workflows/governance.yml index be5d5f2..bc0dd55 100644 --- a/.github/workflows/governance.yml +++ b/.github/workflows/governance.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # This workflow is managed by gh actions-lock. # This workflow is managed by gh actions-lock. @@ -16,4 +17,4 @@ permissions: jobs: governance: - uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@84355587cb2a1f86e6882de83514a32db2646e7a + uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@a26cc7479b14cdf70433919bfc228625f1c5c6f2 diff --git a/.github/workflows/hypatia-scan.yml b/.github/workflows/hypatia-scan.yml index 23785f3..e378cee 100644 --- a/.github/workflows/hypatia-scan.yml +++ b/.github/workflows/hypatia-scan.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # This workflow is managed by gh actions-lock. # This workflow is managed by gh actions-lock. diff --git a/.github/workflows/instant-sync.yml b/.github/workflows/instant-sync.yml index 0af9ccb..9534a6d 100644 --- a/.github/workflows/instant-sync.yml +++ b/.github/workflows/instant-sync.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # This workflow is managed by gh actions-lock. # This workflow is managed by gh actions-lock. diff --git a/.github/workflows/label-triage.yml b/.github/workflows/label-triage.yml index 9886e92..814a192 100644 --- a/.github/workflows/label-triage.yml +++ b/.github/workflows/label-triage.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 name: Label Triage diff --git a/.github/workflows/labels.yml b/.github/workflows/labels.yml index c80b676..83ab941 100644 --- a/.github/workflows/labels.yml +++ b/.github/workflows/labels.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 name: Labels diff --git a/.github/workflows/mirror.yml b/.github/workflows/mirror.yml index c2ba777..b95ea10 100644 --- a/.github/workflows/mirror.yml +++ b/.github/workflows/mirror.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # This workflow is managed by gh actions-lock. # This workflow is managed by gh actions-lock. diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index f80f5cb..3a0efe1 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # This workflow is managed by gh actions-lock. # This workflow is managed by gh actions-lock. diff --git a/.github/workflows/push-email-notify.yml b/.github/workflows/push-email-notify.yml index 9e133d7..52757af 100644 --- a/.github/workflows/push-email-notify.yml +++ b/.github/workflows/push-email-notify.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # This workflow is managed by gh actions-lock. # Dormant push-email notification. ARMED by setting the repo variable diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index dc2bb26..5d212f3 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # This workflow is managed by gh actions-lock. # This workflow is managed by gh actions-lock. diff --git a/.github/workflows/secret-scanner.yml b/.github/workflows/secret-scanner.yml index ecd1116..2d2d0d7 100644 --- a/.github/workflows/secret-scanner.yml +++ b/.github/workflows/secret-scanner.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # This workflow is managed by gh actions-lock. # This workflow is managed by gh actions-lock. diff --git a/.github/workflows/semgrep.yml b/.github/workflows/semgrep.yml index a06d4c9..355a3ff 100644 --- a/.github/workflows/semgrep.yml +++ b/.github/workflows/semgrep.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # This workflow is managed by gh actions-lock. # This workflow is managed by gh actions-lock. diff --git a/.github/workflows/workflow-linter.yml b/.github/workflows/workflow-linter.yml index 3a4fd55..eac10a8 100644 --- a/.github/workflows/workflow-linter.yml +++ b/.github/workflows/workflow-linter.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # This workflow is managed by gh actions-lock. # This workflow is managed by gh actions-lock. diff --git a/.machine_readable/LANGUAGES.a2ml b/.machine_readable/LANGUAGES.a2ml index d575fcf..4242826 100644 --- a/.machine_readable/LANGUAGES.a2ml +++ b/.machine_readable/LANGUAGES.a2ml @@ -6,7 +6,7 @@ [metadata] version = "0.2.0" -last-updated = "2026-07-02" +last-updated = "2026-09-07" migrated-from = "LANGUAGES.scm" # ============================================================================= @@ -15,7 +15,7 @@ migrated-from = "LANGUAGES.scm" # Canonical schema: [[language]] array-of-tables — # id / name / repo / invariant / role / [ecosystem] / [note] / status # -# Scope: the 14 family languages + the KitchenSpeak DSL (+ proposed entries, +# Scope: the family languages, continuity research and KitchenSpeak DSL (+ proposed entries, # clearly marked). The database / type-theory estates (VCL-total, the KRL # resolution stack, Quandledb, TypeLL, PanLL, VQL/GQL/FBQL-DT, a2ml, k9-svc) # are OUT of this registry and are listed only for discoverability in @@ -153,6 +153,16 @@ role = "Orchestration DSL (kitchen domain, physics-in-types); consumes the echo- note = "Extracted from this coordinator 2026-06; in-tree snapshot removed (EXTRACTION-MANIFEST.md)" status = "experimental" +[[language]] +id = "firmboot" +name = "Firmboot" +repo = "https://github.com/hyperpolymath/firmboot" +invariant = "Admitted changes preserve declared continuity obligations" +role = "Continuity through software transformation; synchronic coherence and diachronic commitments" +ecosystem = ["https://github.com/hyperpolymath/epistemic-types", "https://github.com/hyperpolymath/echo-types"] +note = "Research prototype: Agda and Lean models plus an Elixir reference runner; general live-code loading, implementation refinement and physical availability remain open. Application directions include water/environmental monitoring and desktop continuity." +status = "experimental" + # ─── Exploratory (private repo; viability under review — index-only, as with 007) ─── [[language]] id = "typefix-zero" diff --git a/.machine_readable/bot_directives/hypatia.a2ml b/.machine_readable/bot_directives/hypatia.a2ml index a3c5ece..2108b11 100644 --- a/.machine_readable/bot_directives/hypatia.a2ml +++ b/.machine_readable/bot_directives/hypatia.a2ml @@ -15,10 +15,10 @@ ruleset-location = "hyperpolymath/standards (hypatia-scan-reusable.yml) — chan scan-is-blocking = false [accepted-findings] -# Canonical registry: .machine_readable/6a2/NEUROSYM.a2ml [waivers]. +# Canonical registry: .machine_readable/descriptiles/NEUROSYM.a2ml [waivers]. # Look findings up there by rule + file BEFORE acting; if listed, do not # auto-fix. Summary of the current entries: -registry = ".machine_readable/6a2/NEUROSYM.a2ml" +registry = ".machine_readable/descriptiles/NEUROSYM.a2ml" reusable-caller-timeout = "missing_timeout_minutes on governance/hypatia-scan/mirror/scorecard/secret-scanner.yml — false-positive: these jobs call reusable workflows and GitHub Actions rejects timeout-minutes on reusable-workflow caller jobs" governance-reusable-pin = "unpinned_action on governance.yml — tracked: standards governance-reusable.yml referenced at @main pending SHA pin via authenticated lookup" scorecard-publish-split = "scorecard_publish_with_run_step on scorecard-enforcer.yml — addressed: privileged publish job split from unprivileged score-gate job; detector pattern mismatch" diff --git a/.machine_readable/contractiles/Intentfile.a2ml b/.machine_readable/contractiles/Intentfile.a2ml index 3331bea..4983ab0 100644 --- a/.machine_readable/contractiles/Intentfile.a2ml +++ b/.machine_readable/contractiles/Intentfile.a2ml @@ -31,6 +31,7 @@ governance, and cross-language decisions. No language source lives in-tree [purpose.language-family] affinescript = { kind = "general-purpose, affine-typed", proof-status = "concept v0.1" } kitchenspeak = { kind = "orchestration DSL, external — canonical at hyperpolymath/kitchenspeak", proof-status = "external repo" } +firmboot = { kind = "continuity research prototype, external — canonical at hyperpolymath/firmboot", proof-status = "Agda and Lean models; implementation refinement remains open" } betlang = { kind = "experimental", proof-status = "concept" } ephapax = { kind = "experimental (linear types for WASM memory safety)", proof-status = "concept" } phronesis = { kind = "ethical AI specification DSL", proof-status = "concept v0.1" } diff --git a/.machine_readable/6a2/0-AI-MANIFEST.a2ml b/.machine_readable/descriptiles/0-AI-MANIFEST.a2ml similarity index 81% rename from .machine_readable/6a2/0-AI-MANIFEST.a2ml rename to .machine_readable/descriptiles/0-AI-MANIFEST.a2ml index 6bf1f8c..4136a6f 100644 --- a/.machine_readable/6a2/0-AI-MANIFEST.a2ml +++ b/.machine_readable/descriptiles/0-AI-MANIFEST.a2ml @@ -1,8 +1,8 @@ -# AI Manifest for 6a2 Directory +# AI Manifest for Descriptiles Directory ## Purpose -This manifest declares the AI-assistant context for the 6a2 machine-readable metadata directory. +This manifest declares the AI-assistant context for the descriptiles machine-readable metadata directory. ## Canonical Locations diff --git a/.machine_readable/6a2/AGENTIC.a2ml b/.machine_readable/descriptiles/AGENTIC.a2ml similarity index 84% rename from .machine_readable/6a2/AGENTIC.a2ml rename to .machine_readable/descriptiles/AGENTIC.a2ml index 118cd19..701648a 100644 --- a/.machine_readable/6a2/AGENTIC.a2ml +++ b/.machine_readable/descriptiles/AGENTIC.a2ml @@ -25,9 +25,9 @@ can-create-files = true [agent-ci-handling] # How agents/gitbots should treat CI on this repo. -hypatia-advisory = "non-blocking; consult .machine_readable/6a2/NEUROSYM.a2ml [waivers] before acting on any finding" +hypatia-advisory = "non-blocking; consult .machine_readable/descriptiles/NEUROSYM.a2ml [waivers] before acting on any finding" do-not-refix = "findings recorded as accepted/by-design/false-positive in the waiver registry must not be re-fixed" -runbook = "see .machine_readable/6a2/PLAYBOOK.a2ml [recurring-ci-advisories]" +runbook = "see .machine_readable/descriptiles/PLAYBOOK.a2ml [recurring-ci-advisories]" [agent-branch-hygiene] delete-merged-branches = "allowed (merged PR branches only) per Trustfile carve-out" diff --git a/.machine_readable/6a2/ECOSYSTEM.a2ml b/.machine_readable/descriptiles/ECOSYSTEM.a2ml similarity index 98% rename from .machine_readable/6a2/ECOSYSTEM.a2ml rename to .machine_readable/descriptiles/ECOSYSTEM.a2ml index 776e130..b3a2c89 100644 --- a/.machine_readable/6a2/ECOSYSTEM.a2ml +++ b/.machine_readable/descriptiles/ECOSYSTEM.a2ml @@ -38,3 +38,4 @@ phronesis = "hyperpolymath/phronesis" tangle = "hyperpolymath/tangle" wokelang = "hyperpolymath/wokelang" kitchenspeak = "hyperpolymath/kitchenspeak" +firmboot = "hyperpolymath/firmboot" diff --git a/.machine_readable/6a2/META.a2ml b/.machine_readable/descriptiles/META.a2ml similarity index 100% rename from .machine_readable/6a2/META.a2ml rename to .machine_readable/descriptiles/META.a2ml diff --git a/.machine_readable/6a2/NEUROSYM.a2ml b/.machine_readable/descriptiles/NEUROSYM.a2ml similarity index 100% rename from .machine_readable/6a2/NEUROSYM.a2ml rename to .machine_readable/descriptiles/NEUROSYM.a2ml diff --git a/.machine_readable/6a2/PLAYBOOK.a2ml b/.machine_readable/descriptiles/PLAYBOOK.a2ml similarity index 92% rename from .machine_readable/6a2/PLAYBOOK.a2ml rename to .machine_readable/descriptiles/PLAYBOOK.a2ml index 8687fbf..755ccff 100644 --- a/.machine_readable/6a2/PLAYBOOK.a2ml +++ b/.machine_readable/descriptiles/PLAYBOOK.a2ml @@ -14,7 +14,7 @@ last-updated = "2026-06-12" # target = "container" [incident-response] -# 1. Check .machine_readable/6a2/STATE.a2ml for current status +# 1. Check .machine_readable/descriptiles/STATE.a2ml for current status # 2. Review recent commits and CI results # 3. Run just validate to check compliance @@ -32,13 +32,13 @@ last-updated = "2026-06-12" # The Hypatia neurosymbolic scan posts an advisory comment on every PR. It # is NON-BLOCKING; the blocking gates are the governance/* and scan/* checks. # Most advisory findings are already triaged and recorded in -# .machine_readable/6a2/NEUROSYM.a2ml [waivers]. +# .machine_readable/descriptiles/NEUROSYM.a2ml [waivers]. # --------------------------------------------------------------------------- [recurring-ci-advisories] source = "Hypatia Security Scan advisory comment" blocking = false -registry = ".machine_readable/6a2/NEUROSYM.a2ml" +registry = ".machine_readable/descriptiles/NEUROSYM.a2ml" step-1 = "For each finding, look it up in NEUROSYM [waivers] by rule + file." step-2 = "If present, skip it — it is accepted; do NOT open a fix." step-3 = "Act only on findings NOT in the registry, or with disposition = track and an open action." diff --git a/.machine_readable/6a2/README.adoc b/.machine_readable/descriptiles/README.adoc similarity index 97% rename from .machine_readable/6a2/README.adoc rename to .machine_readable/descriptiles/README.adoc index 916a702..42faed2 100644 --- a/.machine_readable/6a2/README.adoc +++ b/.machine_readable/descriptiles/README.adoc @@ -1,6 +1,6 @@ // SPDX-License-Identifier: CC-BY-SA-4.0 // Copyright (c) Jonathan D.A. Jewell -# A2ML 6a2 Directory +# Descriptiles Directory This directory contains the 6 core A2ML machine-readable metadata files for this repository. diff --git a/.machine_readable/6a2/STATE.a2ml b/.machine_readable/descriptiles/STATE.a2ml similarity index 88% rename from .machine_readable/6a2/STATE.a2ml rename to .machine_readable/descriptiles/STATE.a2ml index 23b3fb8..99f1502 100644 --- a/.machine_readable/6a2/STATE.a2ml +++ b/.machine_readable/descriptiles/STATE.a2ml @@ -5,7 +5,7 @@ [metadata] project = "nextgen-languages" version = "0.1.0" -last-updated = "2026-07-02" +last-updated = "2026-09-07" status = "active" [project-context] @@ -39,10 +39,11 @@ codeql = "matrix switched javascript-typescript -> actions (repo has no JS/TS so nuget = "spurious nuget dependabot ecosystem removed (no .NET projects)" scorecard = "publish job split from unprivileged score-gate job" instant-sync = "repository-dispatch gated on FARM_DISPATCH_TOKEN presence" -hypatia-waivers = "recurring advisory findings triaged in .machine_readable/6a2/NEUROSYM.a2ml [waivers]" +hypatia-waivers = "recurring advisory findings triaged in .machine_readable/descriptiles/NEUROSYM.a2ml [waivers]" codeql-cron = "weekly -> monthly (standards#288, cherry-picked 2026-06-12)" [recent-work] +firmboot = "2026-09-07: indexed the public continuity research prototype, linked its synchronic/diachronic identity framing and ecological/desktop application directions, and retained specifications and proofs in its standalone repo. Readiness grades remain unassigned." # Landed since the 2026-06-02 STATE refresh (witness: git log). coordinator-boundary = "2026-06-19: finalized pure-coordinator pivot — removed in-tree kitchenspeak/ snapshot (canonical at hyperpolymath/kitchenspeak), added hooks/validate-coordinator-boundary.sh guard + dogfood-gate coordinator-boundary CI job, rewrote stale monorepo instructions (0-AI-MANIFEST/EXPLAINME), staged per-language docs to extraction-queue/ with EXTRACTION-MANIFEST.md" pr-68 = "KitchenSpeak registered in LANGUAGES.a2ml and Intentfile (an earlier note also claimed Mustfile; the Mustfile carries no per-language entries — corrected 2026-07-02)" @@ -51,7 +52,7 @@ pr-69 = "ReScript banned estate-wide (Hyperpolymath Standard); CLAUDE.md + polic scm-pointer-fix = "stale .scm state-location pointers fixed in ROADMAP and CHANGELOG (196e0ad)" gitmodules-cleanup = "orphan language-playgrounds submodule entry dropped from .gitmodules (c089dfe)" readme-updates = "five README.adoc touch-ups on main (91571be..f758d05)" -estate-standardization = "2026-06-12: origin/estate-standardization-20260607 merged — flat contractiles now canonical (content ported from root contractiles/ and .machine_readable/*.contractile, both retired), 6a2/0-AI-MANIFEST + README + anchor/ landed, agent_instructions/ renamed bot_directives/, GOVERNANCE.adoc + MAINTAINERS.adoc + CODEOWNERS added, flake.nix removed (Guix primary), LICENSE normalized to MPL-2.0 text" +estate-standardization = "2026-06-12: origin/estate-standardization-20260607 merged — flat contractiles now canonical (content ported from root contractiles/ and .machine_readable/*.contractile, both retired), descriptiles/0-AI-MANIFEST + README + anchor/ landed, agent_instructions/ renamed bot_directives/, GOVERNANCE.adoc + MAINTAINERS.adoc + CODEOWNERS added, flake.nix removed (Guix primary), LICENSE normalized to MPL-2.0 text" governance-checkpoint = "2026-06-12: bot_directives trio (hypatia, gitbot-fleet, git-private-farm), flat Dustfile/Bustfile added, STATE bumped, wiki status note" [blockers] diff --git a/.machine_readable/6a2/anchor/0-AI-MANIFEST.a2ml b/.machine_readable/descriptiles/anchor/0-AI-MANIFEST.a2ml similarity index 100% rename from .machine_readable/6a2/anchor/0-AI-MANIFEST.a2ml rename to .machine_readable/descriptiles/anchor/0-AI-MANIFEST.a2ml diff --git a/.machine_readable/6a2/anchor/ANCHOR.a2ml b/.machine_readable/descriptiles/anchor/ANCHOR.a2ml similarity index 86% rename from .machine_readable/6a2/anchor/ANCHOR.a2ml rename to .machine_readable/descriptiles/anchor/ANCHOR.a2ml index a6986ba..772d99f 100644 --- a/.machine_readable/6a2/anchor/ANCHOR.a2ml +++ b/.machine_readable/descriptiles/anchor/ANCHOR.a2ml @@ -30,4 +30,4 @@ parents = ["org.hyperpolymath.boj-server"] date = "2026-06-12" what = "Estate standardization merge + governance checkpoint" why = "Adopt the estate-standardization-20260607 layout and refresh machine-readable metadata to current reality" -evidence = "Merge of origin/estate-standardization-20260607 (conflicts on .claude/CLAUDE.md, casket-pages.yml, instant-sync.yml resolved to main's versions); flat contractiles populated with repo-true content ported from the retired root contractiles/{intend,must,trust}/ and .machine_readable/*.contractile files; flat Dustfile/Bustfile added; codeql cron weekly->monthly cherry-pick (standards#288); 6a2/STATE bumped to 2026-06-12; bot_directives trio (hypatia, gitbot-fleet, git-private-farm) added; anchors/ relocated to 6a2/anchor/ and this file converted to TOML-A2ML" +evidence = "Merge of origin/estate-standardization-20260607 (conflicts on .claude/CLAUDE.md, casket-pages.yml, instant-sync.yml resolved to main's versions); flat contractiles populated with repo-true content ported from the retired root contractiles/{intend,must,trust}/ and .machine_readable/*.contractile files; flat Dustfile/Bustfile added; codeql cron weekly->monthly cherry-pick (standards#288); descriptiles/STATE bumped to 2026-06-12; bot_directives trio (hypatia, gitbot-fleet, git-private-farm) added; anchors/ relocated to descriptiles/anchor/ and this file converted to TOML-A2ML" diff --git a/.machine_readable/6a2/anchor/README.adoc b/.machine_readable/descriptiles/anchor/README.adoc similarity index 100% rename from .machine_readable/6a2/anchor/README.adoc rename to .machine_readable/descriptiles/anchor/README.adoc diff --git a/.machine_readable/svc/k9/methodology-guard.k9.ncl b/.machine_readable/svc/k9/methodology-guard.k9.ncl index 8c3d6c2..7439d4f 100644 --- a/.machine_readable/svc/k9/methodology-guard.k9.ncl +++ b/.machine_readable/svc/k9/methodology-guard.k9.ncl @@ -59,7 +59,7 @@ let methodology_guard = { state_not_template = { description = "STATE.a2ml must not contain template placeholders", severity = "warning", - file = ".machine_readable/6a2/STATE.a2ml", + file = ".machine_readable/descriptiles/STATE.a2ml", reject_patterns = ["{{PLACEHOLDER}}", "NEXTGEN_LANGUAGES", "rsr-template-repo"], reject_key = "methodology.state-validation.reject-if-contains", }, @@ -67,7 +67,7 @@ let methodology_guard = { state_not_stale = { description = "STATE.a2ml last-updated should be within the staleness threshold", severity = "info", - file = ".machine_readable/6a2/STATE.a2ml", + file = ".machine_readable/descriptiles/STATE.a2ml", staleness_key = "methodology.state-validation.staleness-threshold-days", default_staleness_days = 90, }, diff --git a/.machine_readable/svc/k9/must-check.k9.ncl b/.machine_readable/svc/k9/must-check.k9.ncl index 52c84a5..29c6c67 100644 --- a/.machine_readable/svc/k9/must-check.k9.ncl +++ b/.machine_readable/svc/k9/must-check.k9.ncl @@ -54,15 +54,15 @@ K9! }, no_root_scm_duplication = { - description = "No STATE/META/ECOSYSTEM state file orphaned in repo root (canonical home is .machine_readable/6a2/)", + description = "No STATE/META/ECOSYSTEM state file orphaned in repo root (canonical home is .machine_readable/descriptiles/)", severity = 'error, predicate = "! ls STATE.* META.* ECOSYSTEM.* 2>/dev/null | head -1 | grep -q .", }, six_a_two_complete = { - description = "The 6a2 metadata set is complete (>= 6 .a2ml files)", + description = "The descriptiles metadata set is complete (>= 6 .a2ml files)", severity = 'warning, - predicate = "test $(ls .machine_readable/6a2/*.a2ml 2>/dev/null | wc -l) -ge 6", + predicate = "test $(ls .machine_readable/descriptiles/*.a2ml 2>/dev/null | wc -l) -ge 6", }, spdx_on_machine_readable = { @@ -86,7 +86,7 @@ K9! hypatia_waiver_registry = { description = "Hypatia accepted-findings registry exists (NEUROSYM.a2ml)", severity = 'warning, - predicate = "grep -q '\\[accepted-findings\\]' .machine_readable/6a2/NEUROSYM.a2ml", + predicate = "grep -q '\\[accepted-findings\\]' .machine_readable/descriptiles/NEUROSYM.a2ml", }, coordinator_boundary = { diff --git a/0-AI-MANIFEST.a2ml b/0-AI-MANIFEST.a2ml index ead3a85..76d1ae7 100644 --- a/0-AI-MANIFEST.a2ml +++ b/0-AI-MANIFEST.a2ml @@ -29,12 +29,12 @@ cross-language indexes and status trackers, governance, CI, and the ### Canonical File Locations (ONLY THESE - NO DUPLICATES) **Machine-Readable Metadata:** `.machine_readable/` directory ONLY -- **.machine_readable/6a2/STATE.a2ml** - Current project state, progress, blockers, next actions -- **.machine_readable/6a2/ECOSYSTEM.a2ml** - Position in ecosystem, relationships to other projects -- **.machine_readable/6a2/META.a2ml** - Architecture decisions, governance, development practices -- **.machine_readable/6a2/PLAYBOOK.a2ml** - Operational runbook, procedures, alerts -- **.machine_readable/6a2/AGENTIC.a2ml** - AI agent interaction patterns and constraints -- **.machine_readable/6a2/NEUROSYM.a2ml** - Neurosymbolic integration configuration +- **.machine_readable/descriptiles/STATE.a2ml** - Current project state, progress, blockers, next actions +- **.machine_readable/descriptiles/ECOSYSTEM.a2ml** - Position in ecosystem, relationships to other projects +- **.machine_readable/descriptiles/META.a2ml** - Architecture decisions, governance, development practices +- **.machine_readable/descriptiles/PLAYBOOK.a2ml** - Operational runbook, procedures, alerts +- **.machine_readable/descriptiles/AGENTIC.a2ml** - AI agent interaction patterns and constraints +- **.machine_readable/descriptiles/NEUROSYM.a2ml** - Neurosymbolic integration configuration - **.machine_readable/LANGUAGES.a2ml** - Language portfolio registry (references the external repos) **CRITICAL:** If any 6a2 state file (STATE/META/ECOSYSTEM/AGENTIC/NEUROSYM/PLAYBOOK) @@ -65,8 +65,8 @@ The ONLY valid location is `.machine_readable/`. Do NOT create duplicates. ### Session Startup Checklist ✅ Read THIS file (0-AI-MANIFEST.a2ml) first -✅ Read `.machine_readable/6a2/STATE.a2ml` for current status -✅ Check `.machine_readable/6a2/AGENTIC.a2ml` for interaction constraints +✅ Read `.machine_readable/descriptiles/STATE.a2ml` for current status +✅ Check `.machine_readable/descriptiles/AGENTIC.a2ml` for interaction constraints ✅ Verify no duplicate state files exist in root ✅ Verify no language-implementation content has leaked in-tree (`bash hooks/validate-coordinator-boundary.sh`) @@ -81,7 +81,7 @@ the language family. There are no language subdirectories and no submodules. ### The language family (each a standalone `hyperpolymath/` repo) Phronesis, Eclexia, Oblíbený, WokeLang, AffineScript, My-Lang (Solo/Duet/Ensemble), -JtV, Ephapax, Anvomidav, betlang, error-lang, Tangle, Haec, and 007. KitchenSpeak (an +JtV, Ephapax, Anvomidav, betlang, error-lang, Tangle, Haec, Firmboot, and 007. KitchenSpeak (an experimental kitchen-orchestration DSL) is canonical at `hyperpolymath/kitchenspeak`. 007 is the sole exception to the `hyperpolymath/` convention: its source lives in a @@ -109,12 +109,12 @@ in-tree. ## Workflow -1. Read `.machine_readable/6a2/*.a2ml` at session start -2. Check `.machine_readable/6a2/STATE.a2ml` for current phase, blockers, next actions +1. Read `.machine_readable/descriptiles/*.a2ml` at session start +2. Check `.machine_readable/descriptiles/STATE.a2ml` for current phase, blockers, next actions 3. Coordinate via external repo references — there are **no submodules to update** -4. Follow patterns and constraints from `.machine_readable/6a2/AGENTIC.a2ml` +4. Follow patterns and constraints from `.machine_readable/descriptiles/AGENTIC.a2ml` 5. Respect the COORDINATOR BOUNDARY: language-specific work goes in that language's own repo -6. Update `.machine_readable/6a2/STATE.a2ml` after completing work +6. Update `.machine_readable/descriptiles/STATE.a2ml` after completing work diff --git a/EXPLAINME.adoc b/EXPLAINME.adoc index d3fbf03..94dc375 100644 --- a/EXPLAINME.adoc +++ b/EXPLAINME.adoc @@ -307,7 +307,7 @@ and for automated agents: validator, `dogfood` (including the `coordinator-boundary` job), and dogfood checks. * Recurring advisory findings that have been triaged and accepted are recorded - once in `.machine_readable/6a2/NEUROSYM.a2ml` under `[accepted-findings]`. + once in `.machine_readable/descriptiles/NEUROSYM.a2ml` under `[accepted-findings]`. Agents consult that registry and do not re-fix accepted findings on every PR. Changing the enforcing ruleset itself must be done in `standards`. diff --git a/README.adoc b/README.adoc index 76e79ce..af7a791 100644 --- a/README.adoc +++ b/README.adoc @@ -26,6 +26,8 @@ This appears in different forms: * *Topology*: objects are equivalent under isotopy (continuous deformation) * *Type systems*: structure constrains what transformations are valid * *Execution*: guarantees (termination, purity, resource bounds) are encoded in the language design +* *Continuity*: state is coherent at a moment (synchronic), and declared +commitments survive admitted changes over time (diachronic) These languages explore different instances of this idea. @@ -117,6 +119,23 @@ verified core typechecks with no axioms. --- +=== Firmboot + +https://github.com/hyperpolymath/firmboot[Firmboot] explores continuity through +software change: current-state evidence, sufficient retained history and explicit +handover obligations. It develops the temporal aspect of identity under +transformation, while allowing a new implementation to make different future +decisions without rewriting already committed observations and events. + +Status: research prototype with Agda and Lean models and an Elixir reference +runner. General live-code loading, implementation refinement and physical +availability remain open. Motivating directions include water conservation, +environmental monitoring and desktop-session continuity, with explicit resource +limits and stopping authority. See its +https://github.com/hyperpolymath/firmboot/blob/main/PURPOSE.md[purpose and application directions]. + +--- + === KitchenSpeak (experimental DSL — moved out) An experimental, formally-verified orchestration *DSL* for the domestic kitchen, diff --git a/ROADMAP.adoc b/ROADMAP.adoc index 362c792..4f84f97 100644 --- a/ROADMAP.adoc +++ b/ROADMAP.adoc @@ -28,4 +28,4 @@ See `README.adoc` for the full list of canonical repositories. == Tracking -Progress tracked in `.machine_readable/6a2/STATE.a2ml`. +Progress tracked in `.machine_readable/descriptiles/STATE.a2ml`. diff --git a/TOOLING-STATUS.adoc b/TOOLING-STATUS.adoc index 4bb0428..17f0a24 100644 --- a/TOOLING-STATUS.adoc +++ b/TOOLING-STATUS.adoc @@ -8,8 +8,9 @@ Registry surfaces reconciled 2026-07-02; language *grades* below unverified sinc == Overview -This coordinator tracks **15 family entries — 14 languages + the KitchenSpeak DSL** — each -maintained as its own standalone repo (no language code lives here). 11 of them are +This coordinator tracks the language family, the KitchenSpeak DSL and Firmboot's +continuity research prototype, each maintained as its own standalone repo (no +language code lives here). In the existing integration record, 11 languages are registered in the BoJ Server `lang-mcp` cartridge (plus one retired slot, ID 11 — see below) with session management, type-checking, and evaluation via zig adapter + Zig FFI. Adjacent database / type-theory estates are listed separately at the end of this section @@ -62,6 +63,7 @@ Cross-axis invariants: ARG ≤ TRG always; ARG-A requires FRG ≥ B. | **Kitchenspeak** | TBD | TBD | TBD | TBD | TBD | Proofs commenced (Dough, PoachedEgg, EchoBridge); ADR 0001–0004; echo-types dependency. Profile not yet authored. | **Tangle** | TBD | TBD | TBD | TBD | TBD | Topological (knot/braid) language; Lean core proofs. TangleIR feeds the separate KRL resolution stack (see Adjacent estates). | **007** | TBD | TBD | TBD | TBD | TBD | Agent meta-language; private repo (`The-Metadatastician/007`, anti-training-scrape); specification stage; profile not yet authored. +| **Firmboot** | TBD | TBD | TBD | TBD | TBD | Research prototype: checked Agda/Lean models and Elixir reference runner. See https://github.com/hyperpolymath/firmboot/blob/main/VERIFICATION.md[evidence and limits]. No readiness grade or BoJ integration is claimed. | **Me-dialect** (retired) | X | X | X | X | X | RETIRED — superseded by the *Me* runtime projection (`tentacles-agentic-syllabus/me/README.adoc`). `hyperpolymath/me-dialect` archived; in-tree scaffolding sidelined. Not a language; kept only to explain the retirement. |=== diff --git a/TOPOLOGY.adoc b/TOPOLOGY.adoc index ee1a277..b8190e9 100644 --- a/TOPOLOGY.adoc +++ b/TOPOLOGY.adoc @@ -68,7 +68,7 @@ gaps repo status The coordinator’s own scaffolding status lives in -`+.machine_readable/6a2/STATE.a2ml+` (`+completion-percentage+`), which +`+.machine_readable/descriptiles/STATE.a2ml+` (`+completion-percentage+`), which reflects coordinator maturity — not a family-wide 100%. === Update protocol diff --git a/docs/language-portfolio.adoc b/docs/language-portfolio.adoc index 06fdf24..21d12dd 100644 --- a/docs/language-portfolio.adoc +++ b/docs/language-portfolio.adoc @@ -1,6 +1,6 @@ == Hyperpolymath Language Portfolio -*Last updated:* 2026-07-02 +*Last updated:* 2026-09-07 This is a cross-language index. `+nextgen-languages+` is a *pure coordinator*: it does not contain any language. Each language is its own @@ -70,6 +70,15 @@ TangleIR feeds the separate KRL stack kitchen-orchestration DSL |=== +=== Continuity research + +* https://github.com/hyperpolymath/firmboot[*Firmboot*] — a public research +prototype for software transitions that preserve explicit commitments over time. +Its synchronic/diachronic framing connects it to this portfolio's identity-under- +transformation theme. See the +https://github.com/hyperpolymath/firmboot/blob/main/PURPOSE.md[purpose statement] +and https://github.com/hyperpolymath/firmboot/blob/main/VERIFICATION.md[evidence and limits]. + === Exploratory (private; viability under review) * *TypeFix Zero (TF0)* — a universe-stratified simply-typed lambda diff --git a/hooks/validate-coordinator-boundary.sh b/hooks/validate-coordinator-boundary.sh index 9e0921a..3944862 100755 --- a/hooks/validate-coordinator-boundary.sh +++ b/hooks/validate-coordinator-boundary.sh @@ -48,7 +48,7 @@ done # 3) A directory named after one of the family languages must not reappear at the # coordinator root — that is how a whole language gets re-vendored in-tree. -LANGS="007 affinescript anvomidav betlang eclexia ephapax error-lang haec jtv my-lang oblibeny phronesis tangle wokelang kitchenspeak" +LANGS="007 affinescript anvomidav betlang eclexia ephapax error-lang firmboot haec jtv my-lang oblibeny phronesis tangle wokelang kitchenspeak" for lang in $LANGS; do if [ -d "$lang" ]; then echo "ERROR: language directory re-vendored at coordinator root: $lang/" diff --git a/hooks/validate-language-registry.sh b/hooks/validate-language-registry.sh index d73c3bf..f09100a 100755 --- a/hooks/validate-language-registry.sh +++ b/hooks/validate-language-registry.sh @@ -6,13 +6,13 @@ # drifted badly before (a language present on one surface, missing on another), # so this check fails the build when they disagree. # -# Source of truth: the human-facing pointers in `languages/.md`. Every other +# Source of truth: the human-facing pointers in `languages/.adoc`. Every other # surface MUST list exactly that same set of ids: # - .machine_readable/LANGUAGES.a2ml ([[language]] stanzas; forward-looking entries with # status "proposed"/"exploratory" are exempt — they # are not yet committed and carry no languages/ pointer) # - hooks/validate-coordinator-boundary.sh (the LANGS re-vendoring guard list) -# - .machine_readable/6a2/ECOSYSTEM.a2ml ([language-repos] keys) +# - .machine_readable/descriptiles/ECOSYSTEM.a2ml ([language-repos] keys) # - language-status-tracker.jl (const LANGUAGES — must be a SUPERSET; # it also tracks playgrounds/ecosystem/umbrella) # @@ -23,10 +23,11 @@ cd "$(git rev-parse --show-toplevel)" ERRORS=0 -# ── Source of truth: languages/.md pointers (excluding README) ──────────── +# ── Source of truth: languages/.adoc pointers (excluding README) ──────────── family() { - for f in languages/*.md; do - b="$(basename "$f" .md)" + for f in languages/*.adoc; do + [[ -f "$f" ]] || continue + b="$(basename "$f" .adoc)" [[ "$b" == "README" ]] || printf '%s\n' "$b" done | sort -u } @@ -58,7 +59,7 @@ ecosystem_keys() { key=$0; sub(/[ \t]*=.*/,"",key); gsub(/["[:space:]]/,"",key) if (key != "note" && key != "") print key } - ' .machine_readable/6a2/ECOSYSTEM.a2ml | sort -u + ' .machine_readable/descriptiles/ECOSYSTEM.a2ml | sort -u } # ── tracker const LANGUAGES vector (quoted ids) ─────────────────────────────── @@ -69,8 +70,9 @@ tracker_langs() { } FAMILY="$(family)" +[[ -n "$FAMILY" ]] || { echo 'ERROR: no language pointers found' >&2; exit 1; } COUNT="$(printf '%s\n' "$FAMILY" | wc -l | tr -d ' ')" -printf 'language-registry: source of truth = languages/*.md (%s entries)\n' "$COUNT" +printf 'language-registry: source of truth = languages/*.adoc (%s entries)\n' "$COUNT" # report_diff report_diff() { @@ -93,13 +95,13 @@ report_diff() { report_diff ".machine_readable/LANGUAGES.a2ml" "$(a2ml_registered)" exact report_diff "hooks/validate-coordinator-boundary.sh LANGS" "$(hook_langs)" exact -report_diff ".machine_readable/6a2/ECOSYSTEM.a2ml" "$(ecosystem_keys)" exact +report_diff ".machine_readable/descriptiles/ECOSYSTEM.a2ml" "$(ecosystem_keys)" exact report_diff "language-status-tracker.jl const LANGUAGES" "$(tracker_langs)" superset if [[ "$ERRORS" -gt 0 ]]; then printf '\nlanguage-registry check FAILED (%s surface(s) out of sync).\n' "$ERRORS" printf 'Every language must appear on all registry surfaces. Update them together —\n' - printf 'the canonical set is languages/*.md; see .machine_readable/LANGUAGES.a2ml.\n' + printf 'the canonical set is languages/*.adoc; see .machine_readable/LANGUAGES.a2ml.\n' exit 1 fi diff --git a/language-status-tracker.jl b/language-status-tracker.jl index b37cdf6..3ab767c 100755 --- a/language-status-tracker.jl +++ b/language-status-tracker.jl @@ -9,7 +9,7 @@ const REPOS_DIR = get(ENV, "HYPERPOLYMATH_REPOS_DIR", joinpath(homedir(), "Docum # All known language repos const LANGUAGES = [ - # Family languages (14) — must match .machine_readable/LANGUAGES.a2ml + # Family languages — must match .machine_readable/LANGUAGES.a2ml "affinescript", "anvomidav", "betlang", "eclexia", "ephapax", "error-lang", "haec", "jtv", "my-lang", "oblibeny", "phronesis", "tangle", "wokelang", @@ -18,6 +18,9 @@ const LANGUAGES = [ # Family DSL "kitchenspeak", + # Continuity language research prototype + "firmboot", + # Supporting tooling (not languages) "universal-language-server-plugin", @@ -48,10 +51,10 @@ end function count_source_files(path) count = 0 - for ext in [".rs", ".ml", ".js", ".ts", ".res", ".idr", ".zig"] + for ext in [".rs", ".ml", ".js", ".ts", ".res", ".idr", ".zig", ".ex", ".exs", ".agda", ".lean"] try result = read(`find $path -name "*$ext" -type f`, String) - count += length(split(strip(result), '\n')) + count += isempty(strip(result)) ? 0 : length(split(strip(result), '\n')) catch continue end diff --git a/languages/README.adoc b/languages/README.adoc index 66bdcfd..b2a5799 100644 --- a/languages/README.adoc +++ b/languages/README.adoc @@ -5,42 +5,45 @@ Each language has one core invariant that defines its design philosophy. [width="100%",cols="48%,52%",options="header",] |=== |Language |Invariant -|link:my-lang.md[my-lang] |Each level builds exactly on the previous +|link:my-lang.adoc[my-lang] |Each level builds exactly on the previous -|link:phronesis.md[phronesis] |Every AI decision traces to declared +|link:phronesis.adoc[phronesis] |Every AI decision traces to declared values -|link:eclexia.md[eclexia] |No computation without explicit resource +|link:eclexia.adoc[eclexia] |No computation without explicit resource budget -|link:oblibeny.md[oblibeny] |All programs must provably terminate +|link:oblibeny.adoc[oblibeny] |All programs must provably terminate -|link:anvomidav.md[anvomidav] |Every deadline is statically guaranteed +|link:anvomidav.adoc[anvomidav] |Every deadline is statically guaranteed -|link:wokelang.md[wokelang] |No operation without explicit consent +|link:wokelang.adoc[wokelang] |No operation without explicit consent -|link:betlang.md[betlang] |All uncertainty must be explicitly modeled +|link:betlang.adoc[betlang] |All uncertainty must be explicitly modeled -|link:jtv.md[jtv] |Data and code are strictly separated +|link:jtv.adoc[jtv] |Data and code are strictly separated -|link:affinescript.md[affinescript] |Every resource is used at most once +|link:affinescript.adoc[affinescript] |Every resource is used at most once -|link:ephapax.md[ephapax] |Every value can be consumed exactly once +|link:ephapax.adoc[ephapax] |Every value can be consumed exactly once -|link:haec.md[haec] |Every quality-loss is graded and checked against +|link:haec.adoc[haec] |Every quality-loss is graded and checked against its use -|link:error-lang.md[error-lang] |Errors are first-class: systems +|link:error-lang.adoc[error-lang] |Errors are first-class: systems thinking taught through failure -|link:tangle.md[tangle] |Programs are braids; equivalence is topological +|link:tangle.adoc[tangle] |Programs are braids; equivalence is topological isotopy -|link:007.md[007] |Agents that make agents (private repo, anti-scrape; +|link:007.adoc[007] |Agents that make agents (private repo, anti-scrape; index-only) -|link:kitchenspeak.md[kitchenspeak] |Physical-process constraints are +|link:kitchenspeak.adoc[kitchenspeak] |Physical-process constraints are enforced in the types + +|link:firmboot.adoc[firmboot] |Admitted changes preserve declared +continuity obligations (research prototype) |=== Each row links to a thin pointer; the language itself lives in its own diff --git a/languages/firmboot.adoc b/languages/firmboot.adoc new file mode 100644 index 0000000..66b992d --- /dev/null +++ b/languages/firmboot.adoc @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: CC-BY-SA-4.0 +// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell += Firmboot + +*Canonical repository:* +https://github.com/hyperpolymath/firmboot[hyperpolymath/firmboot] + +Firmboot studies continuity through admitted software transformations: +coherence of current state and evidence, and preservation of declared commitments +over time. It is a research prototype with Agda and Lean models and an Elixir +reference runner; a language toolchain and general live-code loading remain open. + +The connection to identity over time, ecological monitoring, resource limits and +desktop-session continuity is explained in its +https://github.com/hyperpolymath/firmboot/blob/main/PURPOSE.md[purpose statement]. +Proof meanings, assumptions and executable evidence live in the canonical +repository's https://github.com/hyperpolymath/firmboot/blob/main/VERIFICATION.md[verification contract]. + +This coordinator indexes Firmboot. Its specifications, proofs and implementation +remain in the standalone repository. From 7da5339d85dbc941a482f427c29bcfef1c3f8347 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Mon, 7 Sep 2026 03:50:40 +0100 Subject: [PATCH 2/2] Repair coordinator workflow gates and declare guard tooling --- .github/workflows/boj-build.yml | 7 ++++-- .github/workflows/workflow-linter.yml | 35 +++++++++++++++------------ README.adoc | 6 +++++ manifest.scm | 7 ++++++ 4 files changed, 37 insertions(+), 18 deletions(-) create mode 100644 manifest.scm diff --git a/.github/workflows/boj-build.yml b/.github/workflows/boj-build.yml index bba169e..68c9b48 100644 --- a/.github/workflows/boj-build.yml +++ b/.github/workflows/boj-build.yml @@ -9,6 +9,8 @@ on: workflow_dispatch: jobs: trigger-boj: + # Configure an HTTPS endpoint reachable from the selected runner before enabling. + if: vars.BOJ_BUILD_URL != '' runs-on: ubuntu-latest timeout-minutes: 15 steps: @@ -18,12 +20,13 @@ jobs: env: BOJ_REPOSITORY: ${{ github.repository }} BOJ_BRANCH: ${{ github.ref_name }} + BOJ_BUILD_URL: ${{ vars.BOJ_BUILD_URL }} run: | jq -n --arg repo "$BOJ_REPOSITORY" --arg branch "$BOJ_BRANCH" \ '{repo: $repo, branch: $branch, engine: "casket"}' | - curl --fail-with-body --silent --show-error --connect-timeout 5 --max-time 30 \ + curl --proto '=https' --fail-with-body --silent --show-error --connect-timeout 5 --max-time 30 \ -H 'Content-Type: application/json' --data-binary @- \ - http://boj-server.local:7700/cartridges/ssg-mcp/invoke + "$BOJ_BUILD_URL" continue-on-error: true permissions: contents: read diff --git a/.github/workflows/workflow-linter.yml b/.github/workflows/workflow-linter.yml index eac10a8..6d332e9 100644 --- a/.github/workflows/workflow-linter.yml +++ b/.github/workflows/workflow-linter.yml @@ -1,19 +1,16 @@ # This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 -# This workflow is managed by gh actions-lock. -# This workflow is managed by gh actions-lock. # Prevention workflow - validates all workflows have proper security config name: Workflow Security Linter on: pull_request: - paths: - - '.github/workflows/**' push: paths: - '.github/workflows/**' -permissions: read-all +permissions: + contents: read jobs: lint-workflows: @@ -27,7 +24,17 @@ jobs: errors=0 for f in .github/workflows/*.yml .github/workflows/*.yaml; do [ -f "$f" ] || continue - if ! head -1 "$f" | grep -q "SPDX-License-Identifier"; then + # The native lock manager may precede SPDX with its own comment. + # Only accept SPDX within the leading comment/blank header block. + if ! awk ' + /^[[:space:]]*#/ { + if ($0 ~ /^[[:space:]]*#[[:space:]]*SPDX-License-Identifier:[[:space:]]+[^[:space:]]+/) found=1 + next + } + /^[[:space:]]*$/ { next } + { exit } + END { exit !found } + ' "$f"; then echo "ERROR: $f missing SPDX header" errors=$((errors + 1)) fi @@ -46,13 +53,9 @@ jobs: done exit $errors - - name: Check pinned actions - run: | - errors=0 - for f in .github/workflows/*.yml .github/workflows/*.yaml; do - [ -f "$f" ] || continue - # Look for uses: without SHA - if grep -E "uses:.*@v[0-9]" "$f" | grep -v "#"; then - echo "WARNING: $f has unpinned actions (missing SHA comment)" - fi - done + - name: Install the authoritative lockfile verifier + env: + GH_TOKEN: ${{ github.token }} + run: gh extension install github/gh-actions-lock --pin v0.1.6 + - name: Verify dependency lock coverage + run: gh actions-lock --verify-local diff --git a/README.adoc b/README.adoc index af7a791..6cf5281 100644 --- a/README.adoc +++ b/README.adoc @@ -148,6 +148,12 @@ compiler and machine-checked Agda proofs. == Common Principles +Coordinator maintenance uses `hooks/validate-language-registry.sh` and +`hooks/validate-coordinator-boundary.sh`. The Guix `manifest.scm` declares their +shell and text-processing tools; run either with +`guix shell -m manifest.scm -- bash hooks/.sh`. +Language compilers and proof toolchains remain in their own repositories. + Across these languages: Formal semantics precede implementation diff --git a/manifest.scm b/manifest.scm new file mode 100644 index 0000000..f5931e9 --- /dev/null +++ b/manifest.scm @@ -0,0 +1,7 @@ +;; SPDX-License-Identifier: MPL-2.0 +;; Coordinator guard environment: no language implementations are packaged here. +;; Run: guix shell -m manifest.scm -- bash hooks/validate-language-registry.sh +(use-modules (gnu packages)) + +(specifications->manifest + '("bash" "coreutils" "diffutils" "findutils" "gawk" "git" "grep" "sed"))