Skip to content

Latest commit

 

History

History
222 lines (192 loc) · 9.65 KB

File metadata and controls

222 lines (192 loc) · 9.65 KB

echidnabot — RSR Outline

RSR Tier-1 Phase Guix

1. About This Document

This file describes how echidnabot fits the Rhodium Standard Repository template. For the compliance status checklist (what’s green / what’s red) see RSR_COMPLIANCE.adoc.

The detailed compliance table tracks individual gates; this file explains the shape the project takes inside the RSR framework.

2. Classification

Attribute Value

Project

echidnabot

Role

Tier-1 Verifier in gitbot-fleet

Primary Language

Rust (RSR Tier 1)

Secondary Languages

Idris2 (ABI proofs), Zig (FFI), Guile Scheme (Guix packaging)

RSR Tier Target

Gold

Compliance Status

See RSR_COMPLIANCE.adoc

Phase

Beta (per STATE.a2ml)

Completion

~100% feature-complete, production-hardening in progress

License

MPL-2.0 (Palimpsest)

Maintainer

Jonathan D.A. Jewell <jonathan.jewell@open.ac.uk>

3. Directory Structure (RSR-conformant)

echidnabot/
├── .editorconfig              # Editor configuration
├── .gitignore                 # Standard ignore patterns
├── .gitattributes             # Line-ending normalisation
├── .guix-channel              # Guix channel definition
├── .well-known/               # RFC-compliant metadata
│   ├── security.txt
│   ├── ai.txt
│   └── humans.txt
├── .machine_readable/         # A2ML descriptors (canonical)
│   ├── 6a2/                   # STATE / META / AGENTIC / ECOSYSTEM / etc.
│   ├── bot_directives/        # Per-bot directive files
│   ├── contractiles/          # intend / bust / adjust contractile verbs
│   └── svc/                   # Service descriptors (k9 templates)
├── .github/
│   ├── workflows/             # CI (quality / codeql / scorecard / hypatia-scan / …)
│   └── ISSUE_TEMPLATE/        # bug / feature / docs templates
├── .claude/                   # AI-assistant operating instructions
│   └── CLAUDE.md
├── 0-AI-MANIFEST.a2ml         # First-read pointer for AI assistants
├── src/                       # Rust source
│   ├── abi/                   # Idris2 ABI definitions (Types/Layout/Foreign)
│   ├── adapters/              # Platform adapters (GitHub/GitLab/Bitbucket)
│   ├── api/                   # GraphQL + webhook handlers
│   ├── dispatcher/            # ECHIDNA client
│   ├── scheduler/             # Job queue / retry / circuit breaker
│   ├── executor/              # Container isolation
│   ├── modes/                 # Bot modes
│   ├── trust/                 # Confidence / integrity / axiom tracking
│   ├── feedback/              # Double-loop tactic-outcome recording
│   ├── fleet/                 # gitbot-fleet shared-context wiring
│   └── store/                 # SQLite + PostgreSQL persistence
├── ffi/zig/                   # Zig FFI implementation (scaffold, see ABI-FFI-README.md)
├── tests/                     # Integration / property / smoke / seam suites
├── proofs/                    # Dogfood proofs (Coq + Lean, includes intentional failures)
├── benches/                   # cargo-criterion benchmarks
├── fuzz/                      # ClusterFuzzLite harnesses
├── docs/                      # Long-form documentation (casket-ssg)
├── wiki/                      # Wiki source (mirrored to GitHub wiki)
├── packaging/                 # Container / Guix packaging artefacts
├── hooks/                     # Git hooks
├── examples/                  # Sample integrations
├── scripts/                   # Maintenance / one-shot tooling
├── config/                    # Default config snapshots
├── contracts/                 # Service contracts (if applicable)
├── contractiles/              # Contractile-verb implementations
├── echidna/                   # Submodule pointing at upstream ECHIDNA
├── Cargo.toml / Cargo.lock    # Rust manifest
├── Containerfile              # OCI image (Chainguard base)
├── guix.scm                   # Guix package definition (primary; nix deprecated 2026-06-01)
├── Mustfile / Justfile-ish    # Task runner
├── echidnabot.toml            # Default config
├── echidnabot.example.toml    # Annotated example config
├── LICENSE / LICENSE.txt      # MPL-2.0 (identical text, dual filename for tooling)
├── PALIMPSEST.adoc            # Palimpsest license commentary
├── README.adoc                # Canonical README
├── README.md                  # Markdown summary (links to .adoc)
├── EXPLAINME.adoc             # Receipts behind README claims
├── ROADMAP.adoc               # Phases / completion
├── ABI-FFI-README.md          # Zig FFI + Idris2 ABI boundary
├── BRANDING.md                # Visual identity / topics
├── MAINTAINERS.adoc           # Maintainership
├── CODE_OF_CONDUCT.md         # Conduct
├── CONTRIBUTING.md            # Contribution guide
├── SECURITY.md                # Vulnerability reporting
├── SUPPORT (.md if present)   # Support channels
├── CHANGELOG.md               # Auto-generated from conventional commits
├── CITATION.cff               # Academic citation metadata
├── codemeta.json              # CodeMeta software metadata
├── RELEASE_CHECKLIST.md       # Release procedure
├── RSR_COMPLIANCE.adoc        # Compliance status
└── RSR_OUTLINE.adoc           # This file

4. Language Tiers (estate policy)

4.1. Tier 1 (preferred)

Rust ✓ (primary), AffineScript, Idris2 ✓ (ABI proofs), Zig ✓ (FFI), Ada, Haskell.

4.2. Tier 2 (acceptable)

Nickel ✓ (configs in config/), Guile Scheme ✓ (guix.scm). Nix is deprecated estate-wide as of 2026-06-01 — Guix is the sole primary; nix flakes have been removed and are not a Tier 2 acceptable language any more.

4.3. Banned (per estate policy 2026-05-25)

TypeScript (use AffineScript), Node.js / npm / Bun / pnpm / yarn (use Deno), Go (use Rust), Python (use Julia / Rust / AffineScript), Java / Kotlin / Swift (use Tauri / Dioxus), Jekyll (use casket-ssg), Dockerfile (use Containerfile).

Python is allowed only in salt/ directories (none in this repo).

5. Boundary Tools (Hyperpolymath estate)

Per the estate boundary convention:

  • Zig — APIs + FFIs (see ffi/zig/)

  • Idris2 — ABIs (see src/abi/)

  • SNIFs — Service-Neutral Interface Fragments

  • typed-wasm — Cross-language compile target

  • Groove Protocol — Top-level coordination

6. Required Files Present in echidnabot

File Status Notes

.editorconfig

.gitignore

.gitattributes

Line-ending normalisation

README.adoc

Canonical

README.md

Markdown summary

LICENSE / LICENSE.txt

MPL-2.0 (dual filename intentional)

SECURITY.md

CODE_OF_CONDUCT.md

CONTRIBUTING.md

MAINTAINERS.adoc

CHANGELOG.md

Generated from conventional commits

CITATION.cff

codemeta.json

Containerfile

Chainguard base

guix.scm

Primary packaging

.well-known/security.txt

.well-known/ai.txt

.well-known/humans.txt

Mustfile (Justfile-equiv)

RSR_COMPLIANCE.adoc

Detailed status

RSR_OUTLINE.adoc

This file

0-AI-MANIFEST.a2ml

AI first-read pointer

.claude/CLAUDE.md

AI agent operating rules

.machine_readable/6a2/

A2ML descriptors

7. STATE.a2ml Shape

The canonical project-state file (.machine_readable/6a2/STATE.a2ml) carries:

  • [metadata] — project / version / last-updated / session

  • [project-context] — purpose / completion-percentage

  • [position] — phase / maturity

  • [external-targets] — for CRG B-grade qualification (≥ 6 targets)

  • [issues-fed-back] — bugs found in echidnabot that surfaced upstream

  • [field-signal] — adoption / mention evidence

  • [known-drift] — acknowledged but not-yet-fixed issues (e.g. monorepo+standalone dual-truth)

Update this file in the same commit as any substantive functional change.

8. Ecosystem Integration

Repository Relationship

hyperpolymath/echidna

Upstream proof engine consumed via REST/GraphQL

hyperpolymath/gitbot-fleet

Fleet membership (Tier-1 Verifier)

hyperpolymath/hypatia

Estate-wide neurosymbolic CI coordinator

hyperpolymath/standards

CI workflow reusables + governance policies

hyperpolymath/rhodibot

Sibling — RSR structural compliance

hyperpolymath/seambot

Sibling — architectural seam hygiene

hyperpolymath/finishingbot

Sibling — release readiness

hyperpolymath/boj-server

Future absorption target for echidnabot-mcp (BoJ-only-MCP sunset)