From 6eadc93ea5babadabcdc4a9061fd20b801a7fb9e Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 13 Jun 2026 08:00:08 +0000 Subject: [PATCH 1/2] chore(governance): standardize .machine_readable to 06-12 estate layout - flat contractiles (Adjust/Bust/Dust/Intent/Must/Trust .a2ml + Justfile); drop the old nested bust/must/trust subdirs - localize contractiles: the estate branch shipped the rsr-template-repo Mustfile/Adjustfile/Intentfile/Trustfile un-substituted (they claimed eclexia was the canonical template, checked a nested layout that does not exist); rewritten to eclexia's actual flat layout, intent, drift bands, and trust boundaries - bot_directives trio: hypatia / gitbot-fleet / git-private-farm (+ README), grounded in the live workflows (instant-sync propagation IS enabled here) and the repo's Rust/Coq facts; secret NAMES only - rename svc/k9 -> self-validating - governance docs: CODEOWNERS, GOVERNANCE.adoc, MAINTAINERS.adoc, CODE_OF_CONDUCT.md, CONTRIBUTING, ISSUE_TEMPLATE, copilot agent config - 6a2/0-AI-MANIFEST.a2ml + README.adoc; formal/coq/manifest.scm https://claude.ai/code/session_01PWMMxryCcPrAjJ8tuGvygG --- .github/CODEOWNERS | 34 ++++ .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/copilot/coding-agent.yml | 6 + .machine_readable/6a2/0-AI-MANIFEST.a2ml | 22 +++ .machine_readable/6a2/README.adoc | 20 +++ .machine_readable/bot_directives/README.adoc | 50 ++++++ .../bot_directives/git-private-farm.a2ml | 33 ++++ .../bot_directives/gitbot-fleet.a2ml | 68 ++++++++ .machine_readable/bot_directives/hypatia.a2ml | 69 ++++++++ .../contractiles/Adjustfile.a2ml | 74 ++++++++ .machine_readable/contractiles/Bustfile.a2ml | 100 +++++++++++ .machine_readable/contractiles/Dustfile.a2ml | 70 ++++++++ .../contractiles/Intentfile.a2ml | 91 ++++++++++ .machine_readable/contractiles/Justfile | 144 ++++++++++++++++ .machine_readable/contractiles/Mustfile.a2ml | 97 +++++++++++ .machine_readable/contractiles/Trustfile.a2ml | 91 ++++++++++ .../contractiles/bust/Bustfile.a2ml | 28 --- .machine_readable/contractiles/bust/bust.ncl | 66 ------- .machine_readable/contractiles/must/Mustfile | 32 ---- .../contractiles/trust/Trustfile.a2ml | 97 ----------- .../{svc/k9 => self-validating}/README.adoc | 0 .../examples/ci-config.k9.ncl | 0 .../examples/project-metadata.k9.ncl | 0 .../examples/setup-repo.k9.ncl | 0 .../template-hunt.k9.ncl | 0 .../template-kennel.k9.ncl | 0 .../template-yard.k9.ncl | 0 CODE_OF_CONDUCT.md | 4 + CONTRIBUTING.adoc | 1 + CONTRIBUTING.md | 4 + GOVERNANCE.adoc | 162 ++++++++++++++++++ MAINTAINERS.adoc | 1 + formal/coq/manifest.scm | 24 +++ 36 files changed, 1181 insertions(+), 223 deletions(-) create mode 100644 .github/CODEOWNERS create mode 100644 .github/copilot/coding-agent.yml create mode 100644 .machine_readable/6a2/0-AI-MANIFEST.a2ml create mode 100644 .machine_readable/6a2/README.adoc create mode 100644 .machine_readable/bot_directives/README.adoc create mode 100644 .machine_readable/bot_directives/git-private-farm.a2ml create mode 100644 .machine_readable/bot_directives/gitbot-fleet.a2ml create mode 100644 .machine_readable/bot_directives/hypatia.a2ml create mode 100644 .machine_readable/contractiles/Adjustfile.a2ml create mode 100644 .machine_readable/contractiles/Bustfile.a2ml create mode 100644 .machine_readable/contractiles/Dustfile.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/bust/Bustfile.a2ml delete mode 100644 .machine_readable/contractiles/bust/bust.ncl delete mode 100644 .machine_readable/contractiles/must/Mustfile delete mode 100644 .machine_readable/contractiles/trust/Trustfile.a2ml rename .machine_readable/{svc/k9 => self-validating}/README.adoc (100%) 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 (100%) 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 GOVERNANCE.adoc create mode 100644 formal/coq/manifest.scm diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..3a3b7f2 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,34 @@ +# SPDX-License-Identifier: MPL-2.0 +# CODEOWNERS - Define code review assignments for GitHub +# See: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners + +# Default: sole maintainer for all files +* @hyperpolymath + +# Security-sensitive files require explicit ownership +SECURITY.md @hyperpolymath +.github/workflows/ @hyperpolymath +.machine_readable/ @hyperpolymath +contractiles/ @hyperpolymath + +# License files +LICENSE @hyperpolymath +LICENSES/ @hyperpolymath + +# Configuration +.gitignore @hyperpolymath +.github/ @hyperpolymath + +# Documentation +README* @hyperpolymath +CONTRIBUTING* @hyperpolymath +CODE_OF_CONDUCT* @hyperpolymath +GOVERNANCE* @hyperpolymath +MAINTAINERS* @hyperpolymath +CHANGELOG* @hyperpolymath +ROADMAP* @hyperpolymath + +# Build and CI +Justfile @hyperpolymath +Makefile @hyperpolymath +*.sh @hyperpolymath diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 987aab6..45a6c02 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,3 +1,7 @@ + --- name: Bug report about: Create a report to help us improve diff --git a/.github/ISSUE_TEMPLATE/documentation.md b/.github/ISSUE_TEMPLATE/documentation.md index 4fcb9f9..b1d16df 100644 --- a/.github/ISSUE_TEMPLATE/documentation.md +++ b/.github/ISSUE_TEMPLATE/documentation.md @@ -1,3 +1,7 @@ + --- name: Documentation about: Report unclear, missing, or incorrect documentation diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 3e8fa7e..a5a5693 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,3 +1,7 @@ + --- name: Feature request about: Suggest an idea for this project diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md index fd0e2a5..c2d1f57 100644 --- a/.github/ISSUE_TEMPLATE/question.md +++ b/.github/ISSUE_TEMPLATE/question.md @@ -1,3 +1,7 @@ + --- name: Question about: Ask a question about usage or behaviour diff --git a/.github/copilot/coding-agent.yml b/.github/copilot/coding-agent.yml new file mode 100644 index 0000000..a719a77 --- /dev/null +++ b/.github/copilot/coding-agent.yml @@ -0,0 +1,6 @@ +mcp_servers: + boj-server: + command: npx + args: ["-y", "@hyperpolymath/boj-server@latest"] + env: + BOJ_URL: http://localhost:7700 diff --git a/.machine_readable/6a2/0-AI-MANIFEST.a2ml b/.machine_readable/6a2/0-AI-MANIFEST.a2ml new file mode 100644 index 0000000..cede8a9 --- /dev/null +++ b/.machine_readable/6a2/0-AI-MANIFEST.a2ml @@ -0,0 +1,22 @@ +# 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 + diff --git a/.machine_readable/6a2/README.adoc b/.machine_readable/6a2/README.adoc new file mode 100644 index 0000000..ac38c25 --- /dev/null +++ b/.machine_readable/6a2/README.adoc @@ -0,0 +1,20 @@ +// 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 + diff --git a/.machine_readable/bot_directives/README.adoc b/.machine_readable/bot_directives/README.adoc new file mode 100644 index 0000000..b48e967 --- /dev/null +++ b/.machine_readable/bot_directives/README.adoc @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: MPL-2.0 +// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell += Bot directives — eclexia +:toc: + +== Purpose + +Per-repo directives for automated agents operating on +`hyperpolymath/eclexia`. These files tell bots what this repository +considers safe, what is forbidden, and which findings are already +adjudicated, so automated runs do not relitigate settled decisions or +touch protected surfaces. + +== Precedence + +. Maintainer instruction (see `MAINTAINERS.adoc`) — always wins. +. These directives. +. Bot built-in defaults. + +== Files + +Estate-standard trio (net-new 2026-06-13): + +* `hypatia.a2ml` — Hypatia scanner config pointers + pre-adjudicated + finding classes (unsafe-FFI blocks, the documented ShadowPrices.v + axioms, audited unwraps), grounded in the repo's `Security` / + `Known Gaps` facts. +* `gitbot-fleet.a2ml` — fleet roster, branch policy, never-touch paths, + per-bot constraints. +* `git-private-farm.a2ml` — `.git-private-farm` propagation contract; + propagation is **live** here (the repo ships + `.github/workflows/instant-sync.yml`). + +Repo-specific per-bot files (pre-existing): `rhodibot.a2ml`, +`echidnabot.a2ml`, `sustainabot.a2ml`, `glambot.a2ml`, `seambot.a2ml`, +`finishbot.a2ml`, `robot-repo-automaton.a2ml`, and the legacy +`README.a2ml` (kept for the existing per-bot constraint records). + +== Repo-specific ground rules (summary) + +* eclexia is the **upstream-canonical anchor** (`ANCHOR.scm` authority = + `upstream-canonical`); semantics live here, satellites consume them. +* Semantic-authority surfaces are bot-off-limits: `THEORY.md`, + `SPECIFICATION.md`, `PROOFS.md`, `formal/coq/src/`, `formal/agda/`, + `.claude/CLAUDE.md`, `ANCHOR.scm`. +* The Coq trusted base (`Typing.v`, `Echo.v`, `EchoThermo.v`) is + axiom-free; `ShadowPrices.v`'s five axioms are documented LP-theory + axioms, not debt. +* CI green precedes merge; bots never auto-merge and never delete + branches. Escalation channel is an issue, not PR-comment spam. diff --git a/.machine_readable/bot_directives/git-private-farm.a2ml b/.machine_readable/bot_directives/git-private-farm.a2ml new file mode 100644 index 0000000..6d3ccfa --- /dev/null +++ b/.machine_readable/bot_directives/git-private-farm.a2ml @@ -0,0 +1,33 @@ +# SPDX-License-Identifier: MPL-2.0 +# git-private-farm.a2ml — .git-private-farm propagation directives for +# eclexia. Net-new at the 2026-06-13 governance checkpoint per the estate +# bot_directives standard. Values below are read from the live workflow +# .github/workflows/instant-sync.yml (secret NAME only; no token values). + +[metadata] +repo = "eclexia" +last-updated = "2026-06-13" +owner = "hyperpolymath" + +[propagation] +enabled = true +# eclexia HAS .github/workflows/instant-sync.yml (unlike echo-types), so +# propagation is LIVE. The keys below mirror that workflow exactly. +workflow = ".github/workflows/instant-sync.yml" +action = "peter-evans/repository-dispatch@v4.0.1" # SHA-pinned in the workflow +target = "hyperpolymath/.git-private-farm" +event-type = "propagate" +secret-name = "FARM_DISPATCH_TOKEN" # secret NAME only; value lives in repo secrets +presence-gated = true # gated on the workflow's own trigger conditions + +[never-propagate] +items = [ + "secrets", + "unmerged branches", + "work-in-progress", + "session/* and claude/* working branches", +] + +[on-token-rotation] +command = "gh secret set FARM_DISPATCH_TOKEN --repo hyperpolymath/eclexia" # name only; paste the new value when prompted +note = "If propagation breaks after a rotation, the symptom is a silent no-op dispatch; check the instant-sync run logs, not eclexia's build." diff --git a/.machine_readable/bot_directives/gitbot-fleet.a2ml b/.machine_readable/bot_directives/gitbot-fleet.a2ml new file mode 100644 index 0000000..8635d0e --- /dev/null +++ b/.machine_readable/bot_directives/gitbot-fleet.a2ml @@ -0,0 +1,68 @@ +# SPDX-License-Identifier: MPL-2.0 +# gitbot-fleet.a2ml — gitbot fleet directives for eclexia. +# Net-new at the 2026-06-13 governance checkpoint per the estate +# bot_directives standard. Fleet roster taken from the repo's existing +# per-bot directive files (.machine_readable/bot_directives/*.a2ml). + +[metadata] +repo = "eclexia" +last-updated = "2026-06-13" +owner = "hyperpolymath" + +[fleet] +bots = ["rhodibot", "echidnabot", "sustainabot", "glambot", "seambot", "finishbot", "robot-repo-automaton"] + +[fleet.roles] +rhodibot = "git operations" +echidnabot = "code quality" +sustainabot = "dependency updates" +glambot = "documentation" +seambot = "integration" +finishbot = "task completion" +robot-repo-automaton = "repo automation / scaffolding" + +[branch-policy] +working-branch-pattern = "/" # human sessions use claude/ or session/; bots use their own prefix +draft-PRs-only = true +ci-green-before-merge = true +never-touch = [ + ".claude/CLAUDE.md", + "ANCHOR.scm", + "formal/coq/src/", # Coq metatheory: Typing.v, Echo.v, EchoThermo.v are axiom-free — do not edit mechanically + "formal/agda/", # ResourceTracking.agda + "THEORY.md", # semantic authority (ANCHOR.scm semantic-authority.type-theory) + "SPECIFICATION.md", # semantic authority (language spec) + "PROOFS.md", + ".github/workflows/", # CI hardening is review-gated, not bot-edited +] + +# ============================================================ +# Per-bot constraints where eclexia gives a specific reason; +# defaults apply otherwise. +# ============================================================ + +[per-bot.rhodibot] +deny = ["force-push to main", "branch deletion", "history rewrites on main"] +note = "main is protected; superseded work is git-revert'd, not rewritten. A bot may force-with-lease ONLY its own session branch." + +[per-bot.echidnabot] +deny = ["editing formal/coq proofs", "introducing Coq axioms outside ShadowPrices.v", "adding production unwraps on fallible paths", "weakening clippy to silence warnings"] +note = "Quality gate = cargo build --workspace + cargo test --workspace (519 tests) + cargo clippy (zero warnings) + verify-coq-proofs.yml. The Coq trusted base (Typing.v/Echo.v/EchoThermo.v) is axiom-free; ShadowPrices.v's 5 axioms are documented LP-theory axioms (see hypatia.a2ml)." + +[per-bot.sustainabot] +allow = ["cargo group bumps via dependabot (precedent: PRs #29, #33)", "GitHub Actions group bumps"] +deny = ["bumping the coqc / Rust toolchain pins without a green verify-coq-proofs + full cargo test run"] +note = "dependabot-automerge.yml exists; the workspace test suite + coq verification are the compatibility gate." + +[per-bot.glambot] +deny = ["redefining language semantics in docs", "contradicting THEORY.md / SPECIFICATION.md"] +note = "Docs are Markdown/AsciiDoc. Echo is now core (Echo[A,B] type former + landauer_cost resource bridge, THEORY.md §5.5); keep STATE/META/ECOSYSTEM currency honest (Landed/Partial/Open). README.md is canonical; EXPLAINME is the plain-language pointer." + +[per-bot.seambot] +note = "eclexia is the upstream-canonical anchor (ANCHOR.scm authority = upstream-canonical); satellite repos (eclexia-playground/-vscode/-docs) consume, they do not redefine. The echo-types ↔ eclexia thermodynamic bridge is recorded downstream-only (echo-types docs/bridge-status.md §8); do not widen it into a cross-repo correctness claim." + +[per-bot.finishbot] +note = "Task completion respects honest scoping: 'Known Gaps' in CLAUDE.md (WASM GC, automatic LLVM linking, OS metrics, registry deploy, measured benchmarks) are tracked as issues, never silently marked done." + +[per-bot.robot-repo-automaton] +note = "Scaffolding/standardisation follows the rsr-template-repo standard AS OBSERVED in the estate (flat contractiles, self-validating/, bot_directives/), NOT the template's stale Mustfile (which still checks the old nested layout — see Mustfile.a2ml header). Report template drift via issue." diff --git a/.machine_readable/bot_directives/hypatia.a2ml b/.machine_readable/bot_directives/hypatia.a2ml new file mode 100644 index 0000000..1daf7fc --- /dev/null +++ b/.machine_readable/bot_directives/hypatia.a2ml @@ -0,0 +1,69 @@ +# SPDX-License-Identifier: MPL-2.0 +# hypatia.a2ml — Hypatia scanner directives for eclexia. +# Net-new at the 2026-06-13 governance checkpoint per the estate +# bot_directives standard (hypatia / gitbot-fleet / git-private-farm trio). + +[metadata] +repo = "eclexia" +last-updated = "2026-06-13" +owner = "hyperpolymath" + +[scanner] +workflow = ".github/workflows/hypatia-scan.yml" +ignore-file = ".hypatia-ignore" # ABSENT as of 2026-06-13; created on first real adjudication, each entry carrying a verified rationale + +# ============================================================ +# Pre-adjudicated finding classes. +# +# These are grounded in documented repo facts (.claude/CLAUDE.md +# "Security Requirements" + "Known Gaps"); they are NOT live suppressions. +# When the scanner first raises one, materialise it into .hypatia-ignore +# with the EXACT rule-id from the scan output — do not invent rule-ids here. +# ============================================================ + +[[accepted-findings]] +class = "rust/unsafe-block" +path = "compiler/**, runtime/**, ffi/**" +status = "justified" +reason = """ +The repo has 28 unsafe blocks and every one is FFI boundary code +(.claude/CLAUDE.md Security: '28 unsafe blocks (all FFI)'). These are +required to cross the C/Idris2-ABI / Zig boundary and are not memory-safety +regressions in eclexia code. Do not raise as CWE-unsafe defects; if a NEW +unsafe block appears outside an FFI boundary, that IS a finding. +""" + +[[accepted-findings]] +class = "proof/coq-axiom" +path = "formal/coq/src/ShadowPrices.v" +status = "documented-axiom" +reason = """ +ShadowPrices.v carries 5 honest axioms (weak duality, complementary +slackness, LP sensitivity, strong duality, dual simplex convergence), each +with a literature citation; all theorems are proved and the file compiles +clean under coqc. These are deliberate LP-theory axioms, not proof debt to +'fix'. By contrast formal/coq/src/{Typing.v, Echo.v, EchoThermo.v} are +axiom-free (EchoThermo.v: `Print Assumptions` clean) — a NEW axiom in those +files IS a finding. +""" + +[[accepted-findings]] +class = "rust/unwrap-in-production" +path = "compiler/**, runtime/**" +status = "audited" +reason = """ +~20 production unwraps remain (down from 100+, .claude/CLAUDE.md Security); +the survivors are audited and provably-total at their call sites. New +unwraps on fallible paths ARE findings; prefer `?`/`ok_or_else` with a +RuntimeError hint (the pattern used by the Echo + landauer_cost builtins). +""" + +# ============================================================ +# Prohibited actions +# ============================================================ + +[prohibited-actions] +auto-delete-branches = false +auto-merge = false +modify-workflows = false # CI hardening goes through review, not bot edits +escalation = "open an issue, do not spam PR comments" diff --git a/.machine_readable/contractiles/Adjustfile.a2ml b/.machine_readable/contractiles/Adjustfile.a2ml new file mode 100644 index 0000000..fca29fb --- /dev/null +++ b/.machine_readable/contractiles/Adjustfile.a2ml @@ -0,0 +1,74 @@ +# SPDX-License-Identifier: MPL-2.0 +# Adjustfile — Drift-tolerance contract for eclexia +# 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 +# +# NOTE (2026-06-13): rewritten for eclexia. The estate-carried file was the +# rsr-template-repo Adjustfile (drift checks about "template placeholders"). + +@abstract: +Drift tolerances and corrective actions for eclexia. 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 + +## Metadata Drift + +### state-currency +- description: 6a2/STATE.a2ml last-updated should track real activity +- tolerance: last-updated within ~30 days of the most recent feature commit +- corrective: refresh .machine_readable/6a2/STATE.a2ml (build snapshot + milestones) +- severity: advisory + +### claude-md-path-accuracy +- description: CLAUDE.md must reference real artefact paths (no stale *.scm) +- tolerance: 0 references to non-existent .machine_readable paths +- corrective: reconcile CLAUDE.md "Machine-Readable Artefacts" with the actual 6a2/*.a2ml layout +- severity: advisory +- notes: fixed 2026-06-13 (STATE.scm → 6a2/STATE.a2ml et al.) + +## Governance Drift + +### no-template-identity-leak +- description: contractiles must describe eclexia, not rsr-template-repo +- tolerance: 0 contractiles claiming to be the canonical template +- corrective: substitute repo identity; rewrite template-role prose for eclexia +- severity: advisory +- notes: the estate flat-contractile set shipped un-substituted (see Mustfile/Intentfile/Trustfile headers); upstream template fix is tracked separately + +### contractile-completeness +- description: all six flat contractiles + Justfile present +- tolerance: Adjust/Bust/Dust/Intent/Must/Trust .a2ml + Justfile all exist +- corrective: add the missing contractile +- severity: advisory + +## Code & Proof Drift + +### test-baseline +- description: workspace test count should not silently regress +- tolerance: >= 519 tests passing +- corrective: investigate dropped/ignored tests before merge +- severity: advisory + +### clippy-clean +- description: zero clippy warnings +- tolerance: 0 warnings under -D warnings +- corrective: fix at source, do not blanket-allow +- severity: advisory + +### axiom-free-trusted-base +- description: Typing.v / Echo.v / EchoThermo.v stay axiom-free +- tolerance: 0 Axiom declarations outside ShadowPrices.v +- corrective: discharge or relocate the axiom; document if genuinely necessary +- severity: advisory + +## Hygiene Drift + +### spdx-header-consistency +- description: all source files carry an SPDX-License-Identifier +- tolerance: 0 files missing SPDX headers +- corrective: add MPL-2.0 SPDX headers (the estate REUSE sweep covers the bulk) +- severity: advisory diff --git a/.machine_readable/contractiles/Bustfile.a2ml b/.machine_readable/contractiles/Bustfile.a2ml new file mode 100644 index 0000000..6064834 --- /dev/null +++ b/.machine_readable/contractiles/Bustfile.a2ml @@ -0,0 +1,100 @@ +# SPDX-License-Identifier: MPL-2.0 +# Bustfile.a2ml — breakage contract for eclexia: what counts as a busted +# state, how it is detected, and how to respond. +# +# Format: TOML-A2ML (parses with tomllib; `#` comments, [section], key = "value") +# +# Provenance: flat-contractile completion of the estate layout (the estate +# branch supplied Adjustfile/Intentfile/Justfile/Mustfile/Trustfile but no +# flat Bustfile; the pre-estate nested contractiles/bust/ was removed in +# this pass). Detection commands below are the repo's own existing gates +# (cargo workspace, coqc, conformance), not new policy. Added 2026-06-13. + +[bustfile] +version = "1.0.0" +format = "a2ml" +repo = "eclexia" +last-updated = "2026-06-13" + +# ============================================================ +# Busted-state definition (any one of these means the repo is busted) +# ============================================================ + +[definition] +busted-states = [ + "cargo build --workspace fails", + "cargo test --workspace fails (519-test baseline regresses)", + "cargo clippy --workspace emits warnings (zero-warning policy)", + "a conformance test regresses (32/32 valid or 19/19 invalid)", + "verify-coq-proofs fails (formal/coq/src/*.v does not compile under coqc)", + "a NEW axiom appears in the axiom-free trusted base (Typing.v / Echo.v / EchoThermo.v)", + "a new unsafe block appears outside an FFI boundary", + "main is red on the governance / hypatia-scan / scorecard / verify-coq-proofs workflows", +] + +# ============================================================ +# Detection (run these to decide whether the repo is busted) +# ============================================================ + +[[detection]] +name = "workspace-build" +doc = "All crates compile." +run = "cargo build --workspace" +severity = "critical" + +[[detection]] +name = "workspace-test" +doc = "Full test suite (lib + valid/invalid conformance)." +run = "cargo test --workspace" +severity = "critical" + +[[detection]] +name = "clippy" +doc = "Zero-warning lint gate." +run = "cargo clippy --workspace --all-targets -- -D warnings" +severity = "high" + +[[detection]] +name = "coq-proofs" +doc = "Coq metatheory compiles (Syntax/Typing/Echo/EchoThermo/ShadowPrices)." +run = "make -C formal/coq" +severity = "high" + +[[detection]] +name = "coq-axiom-audit" +doc = "Trusted base stays axiom-free (EchoThermo.v `Print Assumptions` clean)." +run = "grep -rn '^Axiom' formal/coq/src/Typing.v formal/coq/src/Echo.v formal/coq/src/EchoThermo.v" +severity = "high" +expect = "no output (ShadowPrices.v is the only axiom-bearing file, by design)" + +# ============================================================ +# Response ladder (in order; stop at the first step that restores green) +# ============================================================ + +[response] +step-1 = "Do not merge anything while a critical detection fails on main; CI green precedes merge." +step-2 = "If the breakage is uncommitted local work: run the Dustfile source-rollback task (git checkout HEAD -- .), rebuild, re-detect." +step-3 = "If the breakage landed on a branch: fix forward on that branch or close it superseded; never force-push over another session's work without re-fetching." +step-4 = "If the breakage landed on main: git revert the offending commit (main is append-only; no force-push to main)." +step-5 = "Record the incident: open an issue with the failing command + output." + +[escalation] +owner = "hyperpolymath" +contact = "MAINTAINERS.adoc" +bot-rule = "automated agents open an issue and stop; they do not auto-revert main, do not auto-merge fixes, and do not spam PR comments" + +# ============================================================ +# Known exceptions (NOT busted states; do not 'fix' these) +# ============================================================ + +[[known-exceptions]] +name = "shadowprices-axioms" +detail = "ShadowPrices.v carries 5 documented LP-theory axioms (weak duality, complementary slackness, LP sensitivity, strong duality, dual simplex convergence), each cited; all theorems proved; file compiles clean. These are deliberate, not debt." + +[[known-exceptions]] +name = "ffi-unsafe-blocks" +detail = "28 unsafe blocks, all FFI boundary code (C/Idris2-ABI/Zig). Required for cross-language calls; not memory-safety regressions." + +[[known-exceptions]] +name = "known-gaps" +detail = "WASM GC (bump allocator defined-not-wired), automatic LLVM runtime linking, OS-metric wiring (except RSS on Linux), package-registry deploy, and measured benchmarks are documented open work (CLAUDE.md 'Known Gaps') tracked as issues — not breakage." diff --git a/.machine_readable/contractiles/Dustfile.a2ml b/.machine_readable/contractiles/Dustfile.a2ml new file mode 100644 index 0000000..bb37d1f --- /dev/null +++ b/.machine_readable/contractiles/Dustfile.a2ml @@ -0,0 +1,70 @@ +# SPDX-License-Identifier: MPL-2.0 +# Dustfile.a2ml — cleanup, hygiene & recovery contract for eclexia +# +# Format: TOML-A2ML (parses with tomllib; `#` comments, [section], key = "value") +# +# Provenance: flat-contractile completion of the estate layout (estate +# branch supplied no flat Dustfile; pre-estate nested contractiles/dust/ +# never existed in this repo). Added 2026-06-13. + +[dustfile] +version = "1.0.0" +format = "a2ml" +repo = "eclexia" +last-updated = "2026-06-13" + +# ============================================================ +# Recovery & rollback tasks +# ============================================================ + +[[tasks]] +name = "source-rollback" +doc = "Revert all uncommitted source changes to last commit." +tag = "rollback" +cmd = "git checkout HEAD -- ." + +[[tasks]] +name = "clean-build" +doc = "Remove Rust + Coq build artifacts." +tag = "clean" +cmd = "cargo clean && find formal/coq -name '*.vo' -o -name '*.glob' -delete" + +[[tasks]] +name = "rebuild" +doc = "Cold rebuild + full test." +tag = "verify" +cmd = "cargo build --workspace && cargo test --workspace" + +# ============================================================ +# Cleanup policy +# ============================================================ + +[cleanup] +build-artifacts = "target/ (cargo), *.vo/*.glob/*.vok/*.vos (coq), *.eclb (serialized bytecode), *.wasm/*.ll (backend output); all gitignored" +generated-dirs = "target/ is gitignored; safe to delete at any time (cargo clean)" +stale-branch-policy = "session/* and claude/* branches are dispositioned (landing / superseded / abandoned) at checkpoint; bots never delete branches" +artifact-retention = "not-applicable" +artifact-retention-reason = "eclexia publishes no long-lived build artifacts; everything is rebuilt from source" +cache-policy = "CI caches the cargo registry + target dir + coq build; invalidation follows the workflow definitions" + +# ============================================================ +# Hygiene +# ============================================================ + +[hygiene] +code-hygiene = "cargo fmt + cargo clippy --workspace -- -D warnings (zero warnings); 28 unsafe blocks are FFI-only; ~20 audited production unwraps remain" +proof-hygiene = "make -C formal/coq exits 0; trusted base (Typing/Echo/EchoThermo) axiom-free; ShadowPrices.v axioms documented + cited" +dead-code-rule = "unused crates / modules are removed, not left to rot; the workspace builds with no dead_code allows beyond documented stubs" +todo-tracking = "repo-wide TODOs and 'Known Gaps' go to GitHub issues; inline TODOs are scoped to a tracked issue" +linting = "cargo clippy (Rust); eclexia-lint provides in-language lints for .ecl programs" +formatting = "cargo fmt (Rust); eclexia-fmt for .ecl sources" + +# ============================================================ +# Reversibility +# ============================================================ + +[reversibility] +backup-before-destructive = true +rollback-mechanism = "git-revert (main is append-only; superseded docs get banners, not deletion)" +data-retention-policy = "not-applicable" +data-retention-reason = "eclexia holds no runtime data under version control; shadow-price defaults live in source" diff --git a/.machine_readable/contractiles/Intentfile.a2ml b/.machine_readable/contractiles/Intentfile.a2ml new file mode 100644 index 0000000..02d4ce6 --- /dev/null +++ b/.machine_readable/contractiles/Intentfile.a2ml @@ -0,0 +1,91 @@ +# SPDX-License-Identifier: MPL-2.0 +# Intentfile (A2ML Canonical) — north-star contractile for eclexia +# Author: Jonathan D.A. Jewell +# +# Paired runner: intend.ncl +# Verb: intend +# +# Semantics: North-star contractile. Declares BOTH concrete committed +# next-actions AND horizon aspirations. Non-gating — a report, +# not a gate (see Mustfile for hard gates). +# [[intents]] — "we WILL do this; track progress" +# status: declared → in_progress → done | deferred | retired +# [[wishes]] — "we WISH this were true; revisit later" +# grouped by horizon: near / mid / far. +# +# NOTE (2026-06-13): rewritten for eclexia. The file the estate branch +# carried was the un-substituted rsr-template-repo Intentfile (its intents +# were "repo-initialization / contractile-completeness for the template"). + +@abstract: +North-star for eclexia: Economics-as-Code — a resource-typed language that +prices what you give up. The invariant goal is that every cost a program +incurs (energy, time, carbon, and now structured information loss via Echo) +is first-class in the type system and the shadow-price economy. +@end + +## Purpose + +Eclexia makes resource cost a typed, optimizable property of programs. +Shadow prices value tradeoffs; dimensional types prevent unit errors; and +the Echo[A,B] type former retains the witness of a collapsed fibre so that +erasing information is priced (Landauer) rather than silently free. + +## Anti-Purpose + +Eclexia is NOT: +- a general-purpose systems language competing on raw throughput +- a carbon-accounting bolt-on (cost is in the type system, not a linter) +- a proof assistant (the Coq/Agda metatheory backs the language; it is not the product) + +## If In Doubt + +Sensitive areas — ask before changing: language semantics (`THEORY.md`, +`SPECIFICATION.md`), the Coq/Agda metatheory (`formal/`), `ANCHOR.scm`, +`.claude/CLAUDE.md`. + +## Committed Next-Actions + +### echo-functor +- description: functorial echo_map + (graded co)functor laws as conformance tests +- probe: test -f tests/conformance/valid/echo_map.ecl +- status: declared +- notes: builds on the Echo[A,B] type former + landauer_cost bridge (#32) + +### landauer-real-valued +- description: lift EchoThermo.v discrete shadow toward real-valued k·T·ln2; connect to ShadowPrices.v +- probe: grep -q "ln2\|k_B" formal/coq/src/EchoThermo.v +- status: declared + +### wasm-gc +- description: wire the WASM bump allocator (currently defined-not-wired) +- status: declared + +### llvm-linking +- description: automate linking to the rt-native static library +- status: declared + +## Wishes + +### Near Horizon +#### measured-benchmarks +- description: replace projected performance claims with measured benchmarks +- horizon: near +- status: declared + +### Mid Horizon +#### os-metrics +- description: wire runtime metrics to real OS metrics beyond RSS-on-Linux +- horizon: mid +- status: declared + +#### registry-deploy +- description: deploy the package-registry server (stub exists) +- horizon: mid +- status: declared + +### Far Horizon +#### shadow-price-echo-unification +- description: a single optimization model pricing energy/time/carbon AND Echo erasure jointly via LP duality +- horizon: far +- status: declared diff --git a/.machine_readable/contractiles/Justfile b/.machine_readable/contractiles/Justfile new file mode 100644 index 0000000..180da5d --- /dev/null +++ b/.machine_readable/contractiles/Justfile @@ -0,0 +1,144 @@ +# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell +# +# Eclexia justfile - local task runner +# All local operations must be invoked via `just ` + +# Default recipe: show available recipes +default: + @just --list + +# Build the compiler +build: + cargo build + +# Build release version +build-release: + cargo build --release + +# Run all tests +test: + cargo test + +# Run unit/library tests only +test-unit: + cargo test --workspace --lib + +# Run integration tests across workspace +test-integration: + cargo test --workspace --tests + +# Run conformance test corpus +test-conformance: + cargo test -p eclexia --test conformance_tests + +# Point-to-point boundary checks (interop contracts) +test-p2p: + cargo run --bin eclexia -- interop check + +# End-to-end smoke execution through CLI/runtime +test-e2e: + cargo run --bin eclexia -- run examples/hello.ecl + cargo run --bin eclexia -- run examples/comprehensive_opportunity.ecl + +# Run the smoke test (per ANCHOR success criteria) +smoke-test: + cargo test + cargo run --bin eclexia -- run examples/hello.ecl + +# Run conformance corpus tests +conformance: + #!/usr/bin/env bash + set -euo pipefail + echo "=== Running valid conformance tests ===" + for f in tests/conformance/valid/*.ecl; do + echo "Testing: $f" + cargo run --quiet --bin eclexia -- run "$f" > /dev/null 2>&1 && echo " PASS" || { echo " FAIL (expected success)"; exit 1; } + done + echo "" + echo "=== Running invalid conformance tests (should fail) ===" + for f in tests/conformance/invalid/*.ecl; do + echo "Testing: $f" + case "$f" in + *stack_overflow_deep_recursion.ecl) + echo " SKIP (known abort path: host stack overflow)" + continue + ;; + esac + if cargo run --quiet --bin eclexia -- run "$f" > /dev/null 2>&1; then + echo " FAIL (expected ResourceViolation)" + exit 1 + else + echo " PASS (correctly rejected)" + fi + done + echo "" + echo "All conformance tests passed!" + +# Run a specific .ecl file +run file: + cargo run --bin eclexia -- run {{file}} + +# Run the REPL +repl: + cargo run --bin eclexia -- repl + +# Check code without running (parse + typecheck) +check file: + cargo run --bin eclexia -- check {{file}} + +# Demo: run the fibonacci example +demo: + cargo run --bin eclexia -- run examples/fibonacci.ecl + +# Clean build artifacts +clean: + cargo clean + +# Format code (when rustfmt is configured) +fmt: + cargo fmt --all + +# Verify formatting without modifying files +fmt-check: + cargo fmt --all -- --check + +# Run clippy lints +lint: + cargo clippy --workspace --lib --bins --examples -- -D warnings + +# Benchmark smoke checks +bench-smoke: + cargo run --bin eclexia -- bench + cargo run --bin eclexia -- bench --energy + +# Panic-attack security scan +panic-attack: + ./scripts/qa/run-panic-attack.sh + +# Validate machine/human-readable documentation references +docs-check: + ./scripts/qa/check-docs.sh + +# Full local quality gate +quality-gate: + just docs-check + just fmt-check + just lint + just test-unit + just test-conformance + just test-integration + just test-p2p + just test-e2e + just bench-smoke + +# Show project status +status: + @echo "=== Git Status ===" + @git status --short + @echo "" + @echo "=== Build Status ===" + @cargo build 2>&1 | tail -3 + @echo "" + @echo "=== Test Status ===" + @cargo test 2>&1 | grep -E "^(test result|running)" | tail -2 diff --git a/.machine_readable/contractiles/Mustfile.a2ml b/.machine_readable/contractiles/Mustfile.a2ml new file mode 100644 index 0000000..a94ea0e --- /dev/null +++ b/.machine_readable/contractiles/Mustfile.a2ml @@ -0,0 +1,97 @@ +# SPDX-License-Identifier: MPL-2.0 +# Mustfile.a2ml — Physical state contract for eclexia +# 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) +# +# NOTE (2026-06-13): this REPLACES the file the estate branch carried over +# from rsr-template-repo unsubstituted. That template Mustfile asserted the +# OLD nested layout (contractiles/bust/, contractiles/dust/, +# self-validating/k9-svc/, 6a2/anchors/) as critical — but the template's +# own delivered 06-12 layout is FLAT. The checks below match eclexia's +# ACTUAL flat layout. The template drift is recorded for upstream fix. + +@abstract: +Physical-state invariants for eclexia. Hard requirements — CI and +pre-commit hooks fail if any critical check fails. +@end + +## File Presence + +### license-present +- description: LICENSE file must exist (MPL-2.0) +- run: test -f LICENSE +- severity: critical + +### readme-present +- description: a README must exist +- run: test -f README.md || test -f README.adoc +- severity: critical + +### security-policy +- description: SECURITY.md must exist +- run: test -f SECURITY.md +- 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 + +### anchor-present +- description: root anchor declaration must exist (eclexia is upstream-canonical) +- run: test -f ANCHOR.scm +- severity: critical + +### machine-readable-dir +- description: .machine_readable/ directory must exist +- run: test -d .machine_readable +- severity: critical + +## Directory Structure (FLAT contractile layout, 06-12 standard) + +### contractiles-flat-present +- description: All six flat contractile files + Justfile exist +- run: for f in Adjustfile Bustfile Dustfile Intentfile Mustfile Trustfile; do test -f .machine_readable/contractiles/$f.a2ml || exit 1; done; test -f .machine_readable/contractiles/Justfile +- severity: critical + +### six-a-two-present +- description: 6a2 directory has the seven core metadata files + AI manifest +- run: for f in STATE META ECOSYSTEM AGENTIC NEUROSYM PLAYBOOK 0-AI-MANIFEST; do test -f .machine_readable/6a2/$f.a2ml || exit 1; done +- severity: critical + +### bot-directives-trio +- description: bot_directives carries the estate trio +- run: test -f .machine_readable/bot_directives/hypatia.a2ml && test -f .machine_readable/bot_directives/gitbot-fleet.a2ml && test -f .machine_readable/bot_directives/git-private-farm.a2ml +- severity: critical + +### self-validating-present +- description: self-validating/ exists with k9 templates + examples (flat, no k9-svc subdir) +- run: test -d .machine_readable/self-validating && test -d .machine_readable/self-validating/examples && test -f .machine_readable/self-validating/template-kennel.k9.ncl +- severity: warning + +## Build & Proof Integrity + +### workspace-builds +- description: the cargo workspace compiles +- run: cargo build --workspace +- severity: critical + +### coq-proofs-compile +- description: the Coq metatheory compiles (incl. axiom-free EchoThermo.v) +- run: make -C formal/coq +- severity: critical + +## Template Integrity + +### no-placeholder-values +- description: no unsubstituted template placeholders remain in contractiles +- run: test -z "$(grep -rn '{{' .machine_readable/contractiles/ 2>/dev/null)" +- severity: critical + +### no-template-identity-leak +- description: no contractile still claims to be rsr-template-repo +- run: test -z "$(grep -rln 'rsr-template-repo' .machine_readable/contractiles/ 2>/dev/null | grep -v 'NOTE\|template drift')" +- severity: warning +- notes: guards against re-importing the un-substituted template Mustfile diff --git a/.machine_readable/contractiles/Trustfile.a2ml b/.machine_readable/contractiles/Trustfile.a2ml new file mode 100644 index 0000000..2ff962e --- /dev/null +++ b/.machine_readable/contractiles/Trustfile.a2ml @@ -0,0 +1,91 @@ +# SPDX-License-Identifier: MPL-2.0 +# Trustfile — Trust boundaries and integrity invariants for eclexia +# 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. +# +# NOTE (2026-06-13): identity + trust-deny-areas localized for eclexia. +# The estate-carried file named rsr-template-repo and scoped to "template +# files"; the integrity invariants below are kept and apply to eclexia. + +@abstract: +Trust boundaries and integrity checks for eclexia. Defines what AI agents +may do autonomously and what requires human approval, plus checks that +verify repository integrity. +@end + +## Trust Levels + +Eclexia operates at trust level: standard + +Trust levels: +- maximal: Agent may read, build, test, lint, format, heal freely. Only destructive/external actions require approval. +- standard: Agent may read, build, test, lint, format. Edits to semantic-authority surfaces and workflows need approval. +- restricted: Agent may read and build. All modifications need approval. +- minimal: Agent may read specific files only. + +Current trust level: standard +Rationale: eclexia is the upstream-canonical anchor; language semantics and +the Coq/Agda metatheory are protected surfaces, so full autonomy is scoped +below "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 target | 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='*.rs' --include='*.ecl' --include='*.v' . 2>/dev/null | grep -v target | head -1 | grep -q ." +- severity: critical +- notes: FARM_DISPATCH_TOKEN etc. are referenced by NAME only (see bot_directives/git-private-farm.a2ml), never by value + +## 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 is MPL-2.0 (Palimpsest) +- run: grep -q 'Mozilla Public License\\|MPL-2.0' LICENSE +- severity: warning + +## Eclexia-Specific Trust + +### semantic-authority-protected +- description: Semantic-authority surfaces require explicit approval to change +- run: echo "Protected: THEORY.md, SPECIFICATION.md, PROOFS.md, formal/, ANCHOR.scm, .claude/CLAUDE.md" +- severity: advisory +- areas: + - THEORY.md + - SPECIFICATION.md + - PROOFS.md + - formal/coq/src/ + - formal/agda/ + - ANCHOR.scm + - .claude/CLAUDE.md + - .github/workflows/ + +## Container Security + +#### container-images-pinned +- description: Containerfile uses pinned base images +- run: test ! -f Containerfile || grep -q 'cgr.dev\\|@sha256:' Containerfile +- severity: warning + +#### no-dockerfile +- description: No Dockerfile (use Containerfile) +- run: test ! -f Dockerfile +- severity: warning diff --git a/.machine_readable/contractiles/bust/Bustfile.a2ml b/.machine_readable/contractiles/bust/Bustfile.a2ml deleted file mode 100644 index bf6efcc..0000000 --- a/.machine_readable/contractiles/bust/Bustfile.a2ml +++ /dev/null @@ -1,28 +0,0 @@ -// Bustfile.a2ml — meta-repo bust contractile (breakage / rollback) -// SPDX-License-Identifier: MPL-2.0 - -Bust { - name: "eclexia" - version: "1.0.0" - description: "Rollback procedures when something breaks in the meta-repo" - - scenarios: { - "bad-pointer-bump": "git revert in meta-repo; child repo itself untouched" - "submodule-pointer-points-at-missing-sha": "git submodule update --init --checkout resets child to parent-recorded SHA; OR revert the stale bump commit" - "submodule-orphan-after-local-only-commit": "roll back locally with git reset to before the stranded commit; fix remote situation before re-attempting" - "accidental-private-repo-content-leaked-to-public-submodule": "hard-rotate the leaked secret immediately; git-filter-repo or BFG on the submodule's own history; public re-publication only after rotation complete" - } - - escalation-ladder: [ - "1. revert the meta-repo commit (reversible, low blast radius)", - "2. reset the local submodule clone (affects only local workspace)", - "3. force-push to main — PROHIBITED without explicit user confirmation (violates branch protection)", - "4. registry-level (delete/archive the GitHub repo) — human-only action, never by AI" - ] - - backup-points: [ - "GitHub serves as the durable backup for every submodule's own history", - "Meta-repo history on origin/main is the durable backup for pointer state", - "Local backup tags (backup/pre--) retained on risky rewrites" - ] -} diff --git a/.machine_readable/contractiles/bust/bust.ncl b/.machine_readable/contractiles/bust/bust.ncl deleted file mode 100644 index fc8cb8c..0000000 --- a/.machine_readable/contractiles/bust/bust.ncl +++ /dev/null @@ -1,66 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Bust — error-handling / failure-recovery runner -# -# Pairs with: Bustfile.a2ml (same directory) -# Verb: bust -# Semantics: every declared failure mode must have a recovery path that has -# been exercised. Runner injects failures (via declared probes) -# and verifies the recovery path works. Hard gate on any -# failure-mode with missing or broken recovery. -# CLI: `contractile bust check` → list failure modes + recovery status -# `contractile bust drill` → inject declared failures, verify recovery -# -# Anything else in this directory is human-only notes/archive; machines ignore. -# -# Base: ../_base.ncl provides pedigree_schema, run_defaults, probe_schema. -# See: docs/CONTRACTILE-SPEC.adoc - -let base = import "../_base.ncl" in - -{ - pedigree = base.pedigree_schema & { - contractile_verb = "bust", - semantics = "error handling + failure recovery", - security = { - leash = 'Kennel, - trust_level = "controlled failure injection; scoped to system-under-test", - allow_network = false, - allow_filesystem_write = true, # drills may write transient state (tmp dirs, test DBs) - allow_subprocess = true, - injection_scope = "system-under-test-only", - }, - metadata = { - name = "bust-runner", - version = "1.0.0", - description = "Exercises declared failure modes and verifies recovery paths. Hard-gates on any failure mode without working recovery.", - paired_xfile = "Bustfile.a2ml", - author = "Jonathan D.A. Jewell ", - }, - }, - - schema = { - failure_modes - | Array { - id | String, - description | String, - class | [| 'network, 'disk_full, 'oom, 'timeout, 'partial_write, 'panic, 'crash, 'rollback, 'concurrency |], - # TODO: migrate to base.probe_schema (structured probe) when CLI supports it - injection_probe | String, # command that deterministically causes this failure - # TODO: migrate to base.probe_schema (structured probe) when CLI supports it - recovery_probe | String, # command that verifies recovery (exit 0 = recovered) - expected_recovery_time_seconds | Number | default = 30, - # status_core values: 'declared, 'verified, 'failing; bust adds 'drilled - status | [| 'declared, 'drilled, 'verified, 'failing |] | default = 'declared, - notes | String | optional, - }, - }, - - # Runner behaviour — inherits from base.run_defaults. - # bust adds record_recovery_times for performance tier feeding. - run = base.run_defaults & { - on_any_fail = "exit-nonzero", # missing or broken recovery blocks merge - report_format = "a2ml", - emit_summary = true, - record_recovery_times = true, # feeds the performance tier - }, -} diff --git a/.machine_readable/contractiles/must/Mustfile b/.machine_readable/contractiles/must/Mustfile deleted file mode 100644 index d86a3f4..0000000 --- a/.machine_readable/contractiles/must/Mustfile +++ /dev/null @@ -1,32 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Mirror of repository invariant checks for machine-readable contractiles consumers - -version: 1 - -checks: - - name: root-mustfile-present - run: "test -f Mustfile" - - - name: trustfile-present - run: "test -f .machine_readable/contractiles/trust/Trustfile.a2ml" - - - name: intentfile-present - run: "test -f .machine_readable/contractiles/lust/Intentfile" - - - name: hypatia-workflow-present - run: "test -f .github/workflows/hypatia-scan.yml" - - - name: gitbot-fleet-hook-present - run: "bash -euo pipefail -c 'rg -q gitbot-fleet .github/workflows/hypatia-scan.yml'" - - - name: ffi-pure-zig - run: > - bash -euo pipefail -c 'if find ffi -type f ! -name "*.zig" | grep -q .; then exit 1; fi' - - - name: abi-pure-idris2 - run: > - bash -euo pipefail -c 'if find src/abi -type f ! -name "*.idr" | grep -q .; then exit 1; fi' - - - name: abi-extension-surface-present - run: > - bash -euo pipefail -c 'rg -q "ecl_abi_get_info" generated/abi/eclexia_ffi.h && rg -q "ecl_tracker_create_ex" generated/abi/eclexia_ffi.h && rg -q "ecl_tracker_snapshot" generated/abi/eclexia_ffi.h' diff --git a/.machine_readable/contractiles/trust/Trustfile.a2ml b/.machine_readable/contractiles/trust/Trustfile.a2ml deleted file mode 100644 index d631356..0000000 --- a/.machine_readable/contractiles/trust/Trustfile.a2ml +++ /dev/null @@ -1,97 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Eclexia Trustfile (A2ML-compatible structure, adapted from rsr-template-repo) - ---- -### [META] -id: "did:web:eclexia.org" -version: "1.0.0" -context: - - "https://a2ml.org/ns/v2" - - "https://hypatia.scans/ns/v1" - - "https://w3id.org/security/v4" -meta: - generated: "2026-02-24T00:00:00Z" - expires: "2027-02-24T00:00:00Z" - signature: - algorithm: "Ed448+Dilithium5" - value: "PENDING-PRIMARY-SIGNATURE" - signedBy: "did:web:eclexia.org#primary-sig" - fallbackSignature: - algorithm: "SPHINCS+" - value: "PENDING-FALLBACK-SIGNATURE" - integrity: - sha3-512: "PENDING-SHA3-512" - shake256: "PENDING-SHAKE256" - zonemd: "PENDING-ZONEMD" - ---- -### [TRUSTFILE] -issuer: "did:web:eclexia.org" -keys: - - id: "#primary-sig" - type: "HybridKey2024" - classical: - algorithm: "Ed448" - publicKeyJwk: - kty: "OKP" - crv: "Ed448" - x: "PENDING-ED448-PUBLIC-KEY" - postQuantum: - algorithm: "Dilithium5" - publicKeyJwk: - kty: "OKP" - crv: "Dilithium5" - x: "PENDING-DILITHIUM5-PUBLIC-KEY" - fallback: - algorithm: "SPHINCS+" - publicKeyJwk: - kty: "OKP" - crv: "SPHINCS+" - x: "PENDING-SPHINCSPLUS-PUBLIC-KEY" - -algorithms: - hashing: ["SHA3-512", "SHAKE256", "BLAKE3"] - kdf: "HKDF-SHAKE512" - rng: "ChaCha20-DRBG" - ---- -### [CI_CD] -github_actions: - workflow: ".github/workflows/hypatia-scan.yml" - checks: - - "just quality-gate" - - "just panic-attack" - -gitbot_fleet: - hooks: - - type: "analysis-submit" - script: ".github/workflows/hypatia-scan.yml submits findings to gitbot-fleet" - - type: "post-merge-observe" - script: "gitbot-fleet monitors inbound findings and remediation loop" - -external_trust: - - id: "did:web:proven.hyperpolymath.org" - repository: "hyperpolymath/proven" - trustfile: "proven/Trustfile.a2ml" - verification: - - "test -f proven/Trustfile.a2ml" - - "grep -q 'did:web:proven' proven/Trustfile.a2ml" - ---- -### [SECURITY_SCHEME] -controls: - - "Hypatia security scanning enabled in CI" - - "panic-attack scanning included in local quality gate" - - "security.txt and trust.txt maintained under .well-known" - - "Mustfile invariants enforce FFI/ABI purity boundaries" - -ffi_abi_boundary: - ffi: "Zig only under ffi/" - abi: "Idris2 only under src/abi/" - ---- -### [DEPLOYMENT] -steps: - - "Replace PENDING cryptographic material with real values" - - "Sign Trustfile and record integrity hashes" - - "Validate Trustfile in CI before release" diff --git a/.machine_readable/svc/k9/README.adoc b/.machine_readable/self-validating/README.adoc similarity index 100% rename from .machine_readable/svc/k9/README.adoc rename to .machine_readable/self-validating/README.adoc diff --git a/.machine_readable/svc/k9/examples/ci-config.k9.ncl b/.machine_readable/self-validating/examples/ci-config.k9.ncl similarity index 100% rename from .machine_readable/svc/k9/examples/ci-config.k9.ncl rename to .machine_readable/self-validating/examples/ci-config.k9.ncl diff --git a/.machine_readable/svc/k9/examples/project-metadata.k9.ncl b/.machine_readable/self-validating/examples/project-metadata.k9.ncl similarity index 100% rename from .machine_readable/svc/k9/examples/project-metadata.k9.ncl rename to .machine_readable/self-validating/examples/project-metadata.k9.ncl diff --git a/.machine_readable/svc/k9/examples/setup-repo.k9.ncl b/.machine_readable/self-validating/examples/setup-repo.k9.ncl similarity index 100% rename from .machine_readable/svc/k9/examples/setup-repo.k9.ncl rename to .machine_readable/self-validating/examples/setup-repo.k9.ncl diff --git a/.machine_readable/svc/k9/template-hunt.k9.ncl b/.machine_readable/self-validating/template-hunt.k9.ncl similarity index 100% rename from .machine_readable/svc/k9/template-hunt.k9.ncl rename to .machine_readable/self-validating/template-hunt.k9.ncl diff --git a/.machine_readable/svc/k9/template-kennel.k9.ncl b/.machine_readable/self-validating/template-kennel.k9.ncl similarity index 100% rename from .machine_readable/svc/k9/template-kennel.k9.ncl rename to .machine_readable/self-validating/template-kennel.k9.ncl diff --git a/.machine_readable/svc/k9/template-yard.k9.ncl b/.machine_readable/self-validating/template-yard.k9.ncl similarity index 100% rename from .machine_readable/svc/k9/template-yard.k9.ncl rename to .machine_readable/self-validating/template-yard.k9.ncl diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 16dfcb2..2d95ced 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,3 +1,7 @@ + # Code of Conduct ## Our Pledge diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc index 1f34e60..2ead10c 100644 --- a/CONTRIBUTING.adoc +++ b/CONTRIBUTING.adoc @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Jonathan D.A. Jewell = Contributing Guide == Getting Started diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c22b3e4..6a793f4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,3 +1,7 @@ + # Clone the repository git clone https://github.com/hyperpolymath/nextgen-languages.git cd nextgen-languages diff --git a/GOVERNANCE.adoc b/GOVERNANCE.adoc new file mode 100644 index 0000000..8bbf167 --- /dev/null +++ b/GOVERNANCE.adoc @@ -0,0 +1,162 @@ +// SPDX-License-Identifier: MPL-2.0 +// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell += Governance Model +:toc: preamble + +This document describes the governance model for this repository. + +== Overview + +This repository follows a **Sole Maintainer Governance Model**: + +* Single maintainer (@hyperpolymath) has full authority over the project +* All contributions are welcome and reviewed by the maintainer +* Decisions are made transparently through GitHub issues and discussions +* The project adheres to the hyperpolymath estate policies where applicable + +== Core Principles + +[cols="1,2"] +|=== +| Principle | Description + +| **Benevolent Dictatorship** | Maintainer has final decision authority but seeks community input + +| **Meritocracy** | Contributions are judged on technical merit, not contributor identity + +| **Transparency** | All significant decisions are documented publicly + +| **Consensus-Seeking** | Maintainer prefers consensus but will decide when necessary + +| **Open Contribution** | Anyone can contribute via fork and pull request + +|=== + +== Roles and Permissions + +[cols="1,2,2"] +|=== +| Role | Permissions | Assignment + +| **Maintainer** | Write access, merge rights, admin | @hyperpolymath +| **Contributors** | Read access, fork, submit PRs | All GitHub users +| **Users** | Use the software, report issues | All GitHub users + +|=== + +== Decision Making Framework + +=== Routine Decisions + +* Bug fixes +* Documentation improvements +* Minor feature additions +* Dependency updates + +**Process**: Maintainer reviews and merges PRs that meet quality standards. + +=== Significant Changes + +* New major features +* API changes +* Architecture modifications +* Breaking changes + +**Process**: +. Open issue describing the change +. Discuss with community (minimum 72 hours) +. Maintainer makes final decision +. Document rationale in issue/PR + +=== Structural Decisions + +* Repository purpose/renaming +* License changes +* Ownership transfer +* Deprecation/archival + +**Process**: +. Extended discussion (minimum 1 week) +. Maintainer makes final decision +. Document in CHANGELOG and governance docs + +== Contribution Lifecycle + +[cols="1,2"] +|=== +| Stage | Process + +| **Ideation** | Open issue, discuss feasibility + +| **Development** | Fork, implement, test thoroughly + +| **Review** | Submit PR, maintainer reviews within 7 days + +| **Merge** | Maintainer merges or requests changes + +| **Release** | Maintainer publishes according to project conventions + +|=== + +== Conflict Resolution + +In case of disagreements: + +. Discuss in the relevant GitHub issue or PR +. Provide technical justification for positions +. Maintainer mediates and makes final decision +. Decision is documented and can be revisited later + +== Project Policies + +This repository adheres to hyperpolymath estate-wide policies: + +* **License**: MPL-2.0 for code, CC-BY-SA-4.0 for prose (per standards/LICENCE-POLICY.adoc) +* **Code of Conduct**: Follows hyperpolymath CODE_OF_CONDUCT.md +* **Security**: Follows hyperpolymath SECURITY.md +* **Contributing**: Follows hyperpolymath CONTRIBUTING.adoc conventions + +== Repository-Specific Conventions + +[cols="1,2"] +|=== +| Convention | Description + +| **Signing** | All commits must be signed (SSH or GPG) + +| **SPDX Headers** | All source files must have SPDX license identifiers + +| **Contractiles** | Mustfile, Trustfile, Intendfile, Adjustfile in root + +| **Machine Readable** | META.a2ml in .machine_readable/6a2/ + +| **CI/CD** | GitHub Actions workflows in .github/workflows/ + +|=== + +== Governance Evolution + +As the project grows, this governance model may evolve: + +* **Adding Co-Maintainers**: When contribution volume warrants it +* **Forming a Team**: For complex multi-maintainer projects +* **Adopting TPCF**: For large, multi-repository projects (see rhodium-standard-repositories) + +Changes to this document require the same process as Significant Changes above. + +== See Also + +* link:MAINTAINERS.adoc[Maintainers] +* link:CODE_OF_CONDUCT.md[Code of Conduct] +* link:CONTRIBUTING.adoc[Contributing Guide] +* link:https://github.com/hyperpolymath/standards/blob/main/LICENCE-POLICY.adoc[Estate License Policy] +* link:https://github.com/hyperpolymath/standards[rhodium-standard-repositories (TPCF)] + +== Changelog + +[cols="1,1,1"] +|=== +| Date | Change | By + +| 2026-06-07 | Initial governance model established | @hyperpolymath +|=== diff --git a/MAINTAINERS.adoc b/MAINTAINERS.adoc index a1c6544..becaa3e 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/formal/coq/manifest.scm b/formal/coq/manifest.scm new file mode 100644 index 0000000..dd942c7 --- /dev/null +++ b/formal/coq/manifest.scm @@ -0,0 +1,24 @@ +;;; SPDX-License-Identifier: MPL-2.0 +;;; manifest.scm — Generic Guix manifest for RSR-compliant projects +;;; +;;; Usage: +;;; guix shell -m manifest.scm +;;; + +(specifications->manifest + '(;; Core development tools + "git" + "just" + "nickel" + "curl" + "bash" + "coreutils" + + ;; Documentation + "asciidoctor" + "pandoc" + + ;; Common build dependencies + "openssl" + "zlib" + "pkg-config")) From 2aed92a9be57ae66ba359fd92a28f255b9c472cb Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 13 Jun 2026 08:00:08 +0000 Subject: [PATCH 2/2] docs(currency): refresh STATE + ANCHOR realignment for Echo/Landauer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 6a2/STATE.a2ml: build snapshot (25 crates, 519 tests, axiom-free EchoThermo.v), Echo[A,B] + Landauer milestones, honest Known-Gaps as blockers, Echo follow-on next-actions - ANCHOR.scm: record the 2026-06-13 realignment (Echo became core — type former + landauer_cost resource bridge); add Echo to semantic-authority.owns; fix stale mandatory-files (./STATE.scm etc. -> .machine_readable/6a2/*.a2ml) - .claude/CLAUDE.md: fix stale .scm artefact paths -> 6a2/*.a2ml; point to contractiles / bot_directives / self-validating https://claude.ai/code/session_01PWMMxryCcPrAjJ8tuGvygG --- .claude/CLAUDE.md | 26 ++++++++++++------ .machine_readable/6a2/STATE.a2ml | 47 ++++++++++++++++++++++++-------- ANCHOR.scm | 21 ++++++++++---- 3 files changed, 68 insertions(+), 26 deletions(-) diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index b0f85f5..104a87f 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -62,14 +62,22 @@ ## Machine-Readable Artefacts -The following files in `.machine_readable/` contain structured project metadata: - -- `STATE.scm` - Current project state and progress -- `META.scm` - Architecture decisions and development practices -- `ECOSYSTEM.scm` - Position in the ecosystem and related projects -- `AGENTIC.scm` - AI agent interaction patterns -- `NEUROSYM.scm` - Neurosymbolic integration config -- `PLAYBOOK.scm` - Operational runbook +The following files in `.machine_readable/6a2/` contain structured project +metadata (migrated from root `*.scm` to `*.a2ml` on 2026-04-11): + +- `6a2/STATE.a2ml` - Current project state and progress +- `6a2/META.a2ml` - Architecture decisions and development practices +- `6a2/ECOSYSTEM.a2ml` - Position in the ecosystem and related projects +- `6a2/AGENTIC.a2ml` - AI agent interaction patterns +- `6a2/NEUROSYM.a2ml` - Neurosymbolic integration config +- `6a2/PLAYBOOK.a2ml` - Operational runbook +- `6a2/0-AI-MANIFEST.a2ml` - Read-first AI manifest (estate standard) + +Governance & contractiles: `.machine_readable/contractiles/` (flat: +Adjust/Bust/Dust/Intent/Must/Trust `.a2ml` + `Justfile`), +`.machine_readable/bot_directives/` (hypatia / gitbot-fleet / +git-private-farm trio + per-bot files), `.machine_readable/self-validating/` +(k9 validators). Root `ANCHOR.scm` is the upstream-canonical anchor. --- @@ -90,7 +98,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, Deno APIs | | **Nickel** | Configuration language | For complex configs | -| **Guile Scheme** | State/meta files | STATE.scm, META.scm, ECOSYSTEM.scm | +| **Guile Scheme** | State/meta & anchor files | ANCHOR.scm, formal/coq/manifest.scm; 6a2 metadata lives in .machine_readable/6a2/*.a2ml | | **Julia** | Batch scripts, data processing | Per RSR | | **OCaml** | AffineScript compiler | Language-specific | | **Ada** | Safety-critical systems | Where required | diff --git a/.machine_readable/6a2/STATE.a2ml b/.machine_readable/6a2/STATE.a2ml index 27036af..d8b4592 100644 --- a/.machine_readable/6a2/STATE.a2ml +++ b/.machine_readable/6a2/STATE.a2ml @@ -4,41 +4,64 @@ # STATE.a2ml — Eclexia project state [metadata] project = "eclexia" -version = "1.0" -last-updated = "2026-02-12" +version = "1.1" +last-updated = "2026-06-13" status = "active" -session = "converted from scheme — 2026-04-11" +session = "2026-06-13 estate-standardization + Echo currency checkpoint" [project-context] name = "Eclexia" -purpose = """Economics-as-Code with shadow pricing and dimensional analysis""" -completion-percentage = 75 +purpose = """Economics-as-Code: a resource-typed language with shadow pricing and +dimensional analysis, where what you give up is priced. Structured information +loss is now first-class: the Echo[A,B] type former retains a collapsed fibre's +witness, and erasing it is priced in the same currency as energy/time/carbon via +Landauer's principle.""" +completion-percentage = 77 [position] -phase = "alpha — all SONNET-TASKS complete" # design | implementation | testing | maintenance | archived +phase = "alpha — all SONNET-TASKS complete; Echo integrated into the resource economy" maturity = "experimental" # experimental | alpha | beta | production | lts +[build-snapshot] +crates = 25 +tests = "519 (lib + 32/32 valid + 19/19 invalid conformance, + echo_landauer.ecl)" +clippy = "zero warnings" +unsafe-blocks = "28 (all FFI)" +production-unwraps = 20 +formal-verification = "Coq: Typing.v (0 admitted), Echo.v (soundness), EchoThermo.v (axiom-free, Print Assumptions clean), ShadowPrices.v (0 admitted, 5 documented LP axioms); Agda: ResourceTracking.agda" + [route-to-mvp] milestones = [ - # No milestones recorded + "LANDED 2026-06-05: Echo[A,B] structured-loss type former + echo/echo_witness/echo_base builtins (#32)", + "LANDED 2026-06-05: Coq soundness A ≃ Σ(y:B). Echo f y (formal/coq/src/Echo.v)", + "LANDED 2026-06-05: Landauer resource bridge — landauer_cost(states,T) : Resource[Energy]; EchoThermo.v (bennett_reversible_is_free, free_iff_reversible, irreversible_costs_at_least_one_bit, erasure_monotone); THEORY.md §5.5 graded comonad of structured loss", + "LANDED 2026-06-13: governance + .machine_readable standardized to the 06-12 estate standard (flat contractiles, self-validating/, bot_directives trio)", ] [blockers-and-issues] issues = [ - # No blockers recorded + # Honest 'Known Gaps' (CLAUDE.md) — tracked as GitHub issues at this checkpoint: + "WASM: bump allocator defined but not wired (no GC in linear memory)", + "LLVM: rt-native static library exists, automatic linking not wired", + "Runtime metrics not wired to real OS metrics (except RSS on Linux)", + "Package registry server stub not deployed", + "No measured benchmarks (performance claims are projections)", ] [critical-next-actions] actions = [ + "Echo follow-ons: functorial echo_map + (graded co)functor laws as conformance tests", + "Echo follow-ons: lift EchoThermo.v discrete shadow toward real-valued k·T·ln2; connect to ShadowPrices.v", "Wire WASM bump allocator for GC", "Automate LLVM linking to rt-native static library", "Wire runtime metrics to real OS metrics", - "Deploy package registry server", - "Complete ShadowPrices.v Admitted proofs", "Add measured benchmarks", "Wire reactive crates (salsa DB, modules) into incremental builds", ] +[standing-decisions] +sd-echo = "Echo is core, not a plugin: it sits in the type system (Echo[A,B]) and the resource economy (landauer_cost). The echo-types ↔ eclexia link is downstream-only application evidence (echo-types docs/bridge-status.md §8); eclexia makes no upstream-correctness claim and vice versa." + [maintenance-status] -last-run-utc = "2026-02-12T00:00:00Z" -last-result = "unknown" # unknown | pass | warn | fail +last-run-utc = "2026-06-13T00:00:00Z" +last-result = "pass" # unknown | pass | warn | fail diff --git a/ANCHOR.scm b/ANCHOR.scm index 4f25fe5..869f56a 100644 --- a/ANCHOR.scm +++ b/ANCHOR.scm @@ -10,6 +10,12 @@ (repo . "hyperpolymath/eclexia") (date . "2026-01-01") (authority . "upstream-canonical") + (realignments + . (((date . "2026-06-13") + (what . "Echo (structured information loss) became core") + (detail + . "Echo[A,B] type former + echo/echo_witness/echo_base builtins joined the type system; landauer_cost(states,T):Resource[Energy] priced fibre erasure into the shadow-price economy (reversible retention = zero cost, Bennett; irreversible erasure = k_B*T*ln N, Landauer); Coq Echo.v soundness (A ≃ Σ(y:B). Echo f y) + axiom-free EchoThermo.v; THEORY.md §5.5 (graded comonad of structured loss). Echo is no longer peripheral — it is part of the language's identity.") + (refs . ("eclexia#32" "THEORY.md §5.5" "formal/coq/src/Echo.v" "formal/coq/src/EchoThermo.v"))))) (purpose . ("Define authoritative Eclexia language semantics and specification." "Maintain canonical compiler implementation." @@ -18,7 +24,7 @@ (identity . ((project . "Eclexia") (kind . "language") - (one-sentence . "Energy-aware programming language with dimensional types and shadow price optimization.") + (one-sentence . "Energy-aware programming language with dimensional types, shadow-price optimization, and first-class structured information loss (Echo).") (domain . "sustainable-computing"))) (semantic-authority @@ -26,6 +32,7 @@ (owns . ("Language semantics and formal specification" "Type system and dimensional analysis rules" + "Structured-loss semantics: the Echo[A,B] type former and its Landauer resource pricing (landauer_cost)" "Shadow price model and optimization algorithms" "Compiler implementation (lexer, parser, AST, type-checker, codegen)" "Runtime semantics and energy accounting")) @@ -75,12 +82,16 @@ (semantic-policy . "document-not-define") (anchor-ref . "hyperpolymath/eclexia-docs"))))) + ;; mandatory-files updated 2026-06-13: the 6a2 metadata migrated from + ;; root .scm to .machine_readable/6a2/*.a2ml (STATE.a2ml header: "converted + ;; from scheme — 2026-04-11"). The old ./*.scm paths and ./.machine_read/ + ;; (sic) no longer exist. (mandatory-files . ("./ANCHOR.scm" - "./META.scm" - "./STATE.scm" - "./ECOSYSTEM.scm" - "./.machine_read/LLM_SUPERINTENDENT.scm")) + "./.machine_readable/6a2/STATE.a2ml" + "./.machine_readable/6a2/META.a2ml" + "./.machine_readable/6a2/ECOSYSTEM.a2ml" + "./.machine_readable/6a2/0-AI-MANIFEST.a2ml")) (rsr . ((target-tier . "gold") (current-tier . "silver")