You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Summary
Three threads of perfective doc maintenance after #169 cleared the
README + EXPLAINME drift:
### CONTRIBUTING (broken-link fix)
`CONTRIBUTING.md` was a 3-line stub pointing to `CONTRIBUTING.adoc` —
which did not exist in the repository. Every PR-template touchpoint
returned 404 from that link.
- New `CONTRIBUTING.adoc` — canonical contributor guide. Sections:
what's accepted (per Lientz-Swanson maintenance category), what's not
(RSR-H4 / H6 / H7 / H14 / H15 + ABI scan), commit + PR conventions, test
surface, doc surface-ownership table, licence + SPDX, security pointer.
- `CONTRIBUTING.md` rewritten as a thin Markdown pointer + one-screen
orientation list so `.md`-preferring renderers get an immediate summary.
### CLAUDE.md (count + date defer)
Had three mutually-disagreeing prover counts in one file (128 / 105 /
128), stale test counts (638+ / 528 / 232 / 38), a stale `Last Updated:
2026-03-23` footer, and a `Version: 2.3.0` header that disagreed with
`Cargo.toml`'s `2.1.0`.
- All specific counts deferred to `docs/PROVER_COUNT.md` (canonical tier
table).
- "Current Status" replaces the v1.5/v2.0/v2.1/v2.2 ladder with a
by-area shape summary; release-keyed history defers to `CHANGELOG.md`.
- Repository-structure block updated to mention `src/abi/`,
`src/chapel/`, `src/zig_ffi/`, `.containerization/`,
`.machine_readable/`.
- Tech-stack list gained Idris2-ABI and Zig-FFI rows.
- Licence line keeps the intentional MPL-2.0 doc stance verbatim (per
`feedback_echidna_license_docs_mpl_intentional`).
- "Useful Commands" gained the Idris2 ABI type-check, `just doctor /
heal / tour`, and a pointer to `.containerization/Containerfile.wave3`.
- `Last Updated` footer removed.
### QUICKSTART-USER.adoc
Two `48 backends` mentions (header tagline + REPL example) re-routed to
`docs/PROVER_COUNT.md`.
## Out of scope (deliberate)
- LICENSE / SPDX header sweep — owner-managed.
- `src/abi/` module-decl state — owner-managed.
- `QUICKSTART-DEV.adoc`, `QUICKSTART-MAINTAINER.adoc`,
`MAINTAINERS.adoc`, `CODE_OF_CONDUCT.md`, `SECURITY.md` — no count
drift; left as-is.
## Test plan
- [x] `grep -nE '48 backend|48 prover|128|105|Last
Updated|2026-02-08|2026-03-23' QUICKSTART-USER.adoc QUICKSTART-DEV.adoc
QUICKSTART-MAINTAINER.adoc CLAUDE.md` → no matches
- [x] CONTRIBUTING.adoc renders in `gh pr view --web` (will verify after
PR open)
- [ ] CI on this PR
This document provides guidelines and context for working with Claude Code on the ECHIDNA project.
3
+
Guidelines and context for working with Claude Code on the ECHIDNA project.
4
4
5
5
## Project Overview
6
6
7
-
**ECHIDNA** (Extensible Cognitive Hybrid Intelligence for Deductive Neural Assistance) is a trust-hardened neurosymbolic theoremproving platform supporting 128 prover backends with a comprehensive verification pipeline.
7
+
**ECHIDNA** (Extensible Cognitive Hybrid Intelligence for Deductive Neural Assistance) is a trust-hardened neurosymbolic theorem-proving platform with a polyglot backend surface and a comprehensive verification pipeline.
-**Julia**: ML inference (tactic prediction, premise selection)
84
+
-**Idris2**: Formal ABI specifications + totality proofs (`src/abi/`); zero `believe_me`, zero postulates, zero admits, enforced by `idris2-abi-ci.yml`
Backend tiers, member lists, and the canonical answer to "how many provers?" all live in [`docs/PROVER_COUNT.md`](docs/PROVER_COUNT.md). The Tier-1 _core_ set is exposed by default through `GET /api/provers`; the rest are reachable via `ProverKind` and the dispatch pipeline. Do not duplicate counts in this file — they drift.
88
92
89
93
### Trust & Safety Pipeline
90
94
91
-
The v1.5 trust hardening added:
95
+
The trust-hardening pipeline applies the following checks before any proof result leaves the dispatcher:
formalises the aggregation invariants (soundness, completeness,
159
-
cancellation-safety) with zero postulate/admit/believe_me — see
160
-
`docs/decisions/2026-05-30-chapel-rehabilitation.md` for the rollout
161
-
decision. Build reproducibility was fixed 2026-05-18: `build.rs` now
162
-
`rerun-if-changed` on the built Zig artifact (was order-dependent on
163
-
recipe vs prior `cargo` run), and `build.zig` bundles compiler-rt (was
164
-
failing the non-Zig link with `undefined symbol: __zig_probe_stack`).
165
-
L2.3 (cancel-token through `tryProver` for mid-flight preemption) is
166
-
the next sub-wave; L2.4 mutation parallelism / L2.5 multi-locale /
167
-
L2.6 numeric hot paths / L2.7 bench remain hard-gated on L1 Cap'n
168
-
Proto and (for L2.5) a cluster runtime — see `docs/handover/TODO.md`.
169
-
Direct Rust↔Chapel goes through Zig (no shortcut path).
170
-
171
-
-**Train GNN/Transformer on larger corpus (Flux.jl, scaffold-only)**.
172
-
Flux.jl is declared in `src/julia/Project.toml` and imported across
173
-
9 files; ~1.4k LoC of training scaffolds exist
174
-
(`train_advanced_models.jl`, `training/train.jl`,
175
-
`models/neural_solver.jl`). **Never invoked on real data**:
176
-
`models/neural/` does not exist, `models/model_metadata.txt` reads
177
-
`0 words, 0 classes`, and `src/julia/api/gnn_endpoint.jl:40-114`
178
-
falls back to cosine similarity when no trained model is found.
179
-
Corpus ready: `training_data/` 553 MB, 66,674 proofs / 179,933 tactics
180
-
across 16 prover systems — untouched.
181
-
182
-
Note: Tamarin (`provers/tamarin.rs`, 596 LoC, 5 tests) and ProVerif
183
-
(`provers/proverif.rs`, 800 LoC, 8 tests) were previously listed under
184
-
v2.2+ as "bridge" work — in fact both are already shipped real backends
185
-
inside the 105 prover count. Remaining Wave-3 work for these is corpus
186
-
fixtures (`.spthy` / `.pv` samples) and CI provisioning of upstream
187
-
binaries, tracked in `docs/handover/TODO.md`.
124
+
The authoritative status surface is [`CHANGELOG.md`](CHANGELOG.md) (released versions) plus the git log + open issues (in-flight work). Do not duplicate version-keyed status here — it drifts.
-**Idris2 ABI**: `EchidnaABI.TacticRecord` (fixed-point confidence, total-order proofs, in-range round-trip lemmas) + sibling modules; type-checked on every push by `idris2-abi-ci.yml`.
130
+
-**GNN integration**: graph construction (7 node kinds, 8 edge kinds), 32-dim local term embeddings, GNN inference client, hybrid GNN + symbolic scoring, Julia `/gnn/rank` with cosine fallback.
131
+
-**Chapel parallel layer (`--features chapel`)**: `ChapelParallelSearch` invoked by `dispatch.rs::verify_proof_parallel`; per-prover cwd/filename hooks in `tryProver`; L2.3 cancel-token preemption shipped; `parallelProofSearchSpeculative` (first-success-wins atomic-CAS) alongside best-of `parallelProofSearch`; `proofs/agda/ParallelSoundness.agda` formalises soundness, completeness, and cancellation-safety with zero postulate / admit / believe_me. L2.4+ (mutation parallelism, multi-locale, numeric hot paths, bench) gated on L1 Cap'n Proto and (for L2.5) a cluster runtime — see [`docs/handover/TODO.md`](docs/handover/TODO.md).
132
+
-**Wave-3 container infrastructure**: per-prover images in `.containerization/Containerfile.wave3`; weekly cron in `container-ci.yml` runs stub-sentinel detection across all 8 Tier-3 cells.
133
+
-**Julia ML layer**: logistic-regression tactic prediction shipped; Flux.jl scaffolds for GNN/Transformer training present but not yet trained on real data — corpus ready under `training_data/`.
134
+
-**Migrations in flight**: ReScript → AffineScript-TEA (UI); npm → Deno (`echidna-playground`); CI workflow consolidation under the governance ruleset.
188
135
189
136
## Useful Commands
190
137
191
138
```bash
192
-
# Build System (Justfile is PRIMARY)
139
+
# Build System (Justfile is PRIMARY — RSR-H14)
193
140
just build # Build the project
194
-
just test# Run tests (638+)
141
+
just test# Run tests
195
142
just check # Run all quality checkers
143
+
just doctor # Verify toolchain
144
+
just heal # Auto-install missing tools
145
+
just tour # Codebase tour
196
146
197
-
# Cargo commands
147
+
# Cargo
198
148
cargo build # Build Rust code
199
149
cargo test# Run all tests
200
-
cargo test --lib # Unit tests only (232)
201
-
cargo test --test integration_tests # Integration tests (38)
202
-
203
-
# Container Management (Podman, not Docker)
204
-
podman build -f Containerfile .# Build container
205
-
podman run echidna # Run container
206
-
207
-
# Quality Checks
208
-
cargo clippy # Rust lints
209
-
cargo fmt --check # Format check
150
+
cargo test --lib # Unit tests only
151
+
cargo test --tests # Integration suites
152
+
cargo bench # Criterion benchmarks
153
+
cargo clippy # Rust lints
154
+
cargo fmt --check # Format check
155
+
156
+
# Idris2 ABI
157
+
idris2 --build src/abi/echidnaabi.ipkg # Type-check the ABI package
158
+
159
+
# Container Management (Podman, not Docker — RSR-H15)
160
+
podman build -f Containerfile .# Minimal image
161
+
podman run echidna # Run minimal image
162
+
# Per-prover images live under .containerization/Containerfile.wave3
210
163
```
211
164
212
165
## Critical Constraints
213
166
214
-
-**NO PYTHON**- use Julia for ML/data, Rust for systems, ReScript for apps
215
-
-**RSR/CCCP Compliance Required**- follow Rhodium Standard Repository guidelines
216
-
-**Justfile PRIMARY**- never use Make or other build systems
217
-
-**Podman not Docker**- always use Podmanfor containers
218
-
-**License**: MPL-2.0 (not AGPL, not dual MIT/Palimpsest)
219
-
-**Author**: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
167
+
-**No Python**outside `salt/` (RSR-H4) — Julia for ML, Rust for systems, AffineScript/ReScript for UI.
168
+
-**RSR / CCCP compliance**— see [`RSR_COMPLIANCE.adoc`](RSR_COMPLIANCE.adoc) for the full hard-rule list and out-of-template adaptations.
169
+
-**Justfile primary**(RSR-H14) — Just is the build entry point; no Make.
-**License**: MPL-2.0 across the documentation surface (intentional doc stance; see [`feedback_echidna_license_docs_mpl_intentional`](https://github.com/hyperpolymath/echidna/issues?q=license) — historical drift on individual files is owner-managed and not reconciled in routine PRs).
172
+
-**Author**: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>.
220
173
221
174
---
222
175
223
-
**Last Updated**: 2026-03-23
224
-
**Maintained By**: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
176
+
**Maintained by**: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>.
177
+
This file is kept count-free and date-free in prose; CHANGELOG.md and the git log carry the live timeline.
0 commit comments