Skip to content

Commit ca10e77

Browse files
docs: meticulous doc maxout (human + machine) — 2026-06-01 (#182)
## Summary Meticulous documentation maxout across the human + machine surfaces of the repo, in the wake of the #169 / #170 narrative-coherence pass and the #171 / #172 / #174 R5 governance landings. Nine atomic commits; no source changes; no count refreshes (deferred to the next backend audit per the #169 closeout). ### What changed | Area | Commit | Why | |---|---|---| | `README.adoc` | `476a1f8` | Tier-1 enumeration disagreed with `ProverKind::all_core()` (named Idris2/F*/AltErgo/Dafny/Vampire/EProver; source returns Metamath/HOLLight/Mizar/PVS/ACL2/HOL4). Defer to canonical instead. Also fixes `just security` / `just coverage` (do not exist) → `just audit` / `just pre-commit`. | | `docs/PROVER_COUNT.md` | `5674d4a` | Same Tier-1 list bug as above (the canonical doc had the wrong list). Drops Tier-1 dupes from Tier-2; adds the eight `all()`-only Tier-2 provers that were missing; fixes `/api/verify` → `/api/provers`; adds a *Known drift* note for the 128 vs ~138 variant gap (refresh deferred per #169). | | `QUICKSTART-USER.adoc` | `699201a` | Drops fictional `Version 1.5.0` + hardcoded test counts (232/389) + the synthesised `{provers":48,"version":"1.5.0"}` health-payload + `/api/v1/health` (correct: `/api/health`) + `just run repl` (correct: `cargo run -- interactive`). | | `QUICKSTART-DEV.adoc` | `699201a` | `chapel_poc/` → `src/chapel/`; adds the live just-recipe wrappers; adds an Idris2 ABI section; repoints to `CONTRIBUTING.adoc` (canonical). | | `SECURITY.md` | `fc9ddee` | Supported-versions table named `0.1.x` (Cargo.toml is 2.1.0); reporting routed to `security@echidna-project.org` placeholder; advisories titled \"GitLab\". Replaced with GitHub Security Advisories + maintainer fallback; drops `Version: 1.0` footer (R5b drift). | | `MAINTAINERS.adoc` | `d76edbb` | Adds security-disclosure cross-link + canonical-surface index. | | `AUTHORS.md` | `d76edbb` | Was a placeholder template with fictional maintainer, GitLab refs, MIT/Palimpsest license claim, TBD-everywhere statistics, Tier-1 list missing six provers. Replaced with concise, date-free, count-free version pointing at `git shortlog -sne`. | | `CODE_OF_CONDUCT.md` | `2be02e2` | Replaces `echidna-conduct@example.org (Replace with actual contact)` placeholder with GitHub Security Advisories + maintainer fallback; drops `Version: 1.0` footer (R5b drift). | | `docs/wiki/Home.md` | `7c2c7ba` | Drops `Version: 2.3.0` footer (would fire R5b drift against `2.1.0` in Cargo.toml on next governance run). | | `docs/ROADMAP.md` | `5650a52` | Bumps last-revised to 2026-06-01; one-paragraph note on R5/MVP-smoke governance landings. No stage-map change. | | `CLAUDE.md` | `9c3bb7a` | Adds the full clap-routed CLI subcommand list + a *Governance gates* section documenting R5a/R5b/MVP-smoke/Idris2-ABI-CI/chapel-CI/container-CI so agents know which strings are drift-scanned. | ### Deliberately not touched (per memory directives) - **`src/abi/` namespace state** — owner-managed (per `feedback_echidna_src_abi_namespace_intentional`). No proposed typo fixes / orphan deletions / module-decl corrections. - **SPDX reconciliation between MPL-2.0 docs and AGPL source** — owner-managed (per `feedback_echidna_license_docs_mpl_intentional` after the #149 revert). - **Prover counts in `docs/PROVER_COUNT.md` (128) or `.machine_readable/provers.a2ml` (113)** — refresh deferred to the next backend-count audit per the #169 closeout. The drift is now *named* in PROVER_COUNT.md so readers can find it. - **`CHANGELOG.md`** — owner-decision per #173 on version reconciliation. - **`.machine_readable/6a2/*.a2ml` stale dates / counts** — same deferral. - **`docs/ROADMAP.md` stage-map content** — well-maintained per 2026-05-30 audit; only the header date moved. ### Wiki updates (pushed separately) The GitHub wiki at https://github.com/hyperpolymath/echidna/wiki was significantly behind the in-repo canonical at `docs/wiki/` (which the `docs/wiki/README.md` explicitly names as the source of truth). One commit pushed directly to the wiki repo's `master` branch syncs all six pages (Home, Architecture, Getting-Started, FAQ, Guides, Troubleshooting) verbatim from `docs/wiki/`. The wiki had stale prover counts (48+ vs canonical), fictional module paths (`backends/`, `core/`, `pipeline/`, `ml/`), fictional API endpoints (`POST /verify` on port 8080), and fictional recipes (`just api`, `just setup`, `just repl`, `just verify`). All corrected to match the actual source tree. ## Test plan - [x] `grep -nE '1059|232|389|/api/v1/|just run repl|just security|just coverage|0\\.1\\.x|echidna-conduct@example|security@echidna-project|chapel_poc/' README.adoc README.md EXPLAINME.adoc CLAUDE.md CONTRIBUTING.adoc CONTRIBUTING.md QUICKSTART-*.adoc SECURITY.md CODE_OF_CONDUCT.md MAINTAINERS.adoc AUTHORS.md docs/*.md docs/wiki/*.md` → no matches - [x] All commits GPG-signed with key `4A03639C1EB1F86C7F0C97A91835A14A2867091E` - [x] Wiki commit pushed (verified via `git push` to echidna.wiki.git master) - [x] No `Version: x.y.z` strings outside CHANGELOG.md / Cargo.toml (R5b-safe) - [ ] CI on this PR 🤖 Generated with [Claude Code](https://claude.com/claude-code)
1 parent ee5f6e2 commit ca10e77

11 files changed

Lines changed: 387 additions & 191 deletions

AUTHORS.md

Lines changed: 47 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,33 @@
11
<!--
22
SPDX-License-Identifier: MPL-2.0
3-
SPDX-FileCopyrightText: 2024-2025 ECHIDNA Project Contributors
3+
SPDX-FileCopyrightText: 2024-2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
44
-->
55

66
# Authors and Contributors
77

8-
This file lists the authors and contributors to the ECHIDNA project. We are grateful to everyone who has contributed to making ECHIDNA a reality.
8+
This file lists the authors and contributors to the ECHIDNA project.
9+
The authoritative running list lives in the git history — `git shortlog
10+
-sne` will produce a deduplicated, frequency-sorted view at any commit.
911

10-
## Project Maintainers
12+
## Maintainers
1113

12-
The following individuals are the core maintainers of ECHIDNA:
14+
| Name | Role | Contact |
15+
|---|---|---|
16+
| Jonathan D.A. Jewell | Lead Maintainer | [@hyperpolymath](https://github.com/hyperpolymath), `j.d.a.jewell@open.ac.uk` |
1317

14-
- **ECHIDNA Project Team** - Project coordination and oversight
18+
See [`MAINTAINERS.adoc`](MAINTAINERS.adoc) for the maintainer
19+
responsibility model and the path to becoming a maintainer.
1520

16-
## Core Contributors
21+
## Contributors
1722

18-
Contributors who have made significant contributions to the codebase:
23+
Code, documentation, infrastructure, review, issue triage. The
24+
deduplicated running list is in the git history:
1925

20-
<!-- Contributors will be added here as they make contributions -->
26+
```bash
27+
git shortlog -sne
28+
```
2129

22-
## Code Contributors
23-
24-
All contributors to the ECHIDNA codebase (in alphabetical order):
25-
26-
<!-- This section will be automatically updated based on git history -->
27-
28-
## Documentation Contributors
29-
30-
Contributors who have improved documentation:
31-
32-
<!-- Documentation contributors will be listed here -->
33-
34-
## Special Thanks
35-
36-
We would like to extend special thanks to:
37-
38-
- **Theorem Proving Community** - For foundations and inspiration
39-
- **Theorem Prover Communities** - For developing and maintaining the 12 provers we integrate
40-
- **Rhodium Standard Repository (RSR/CCCP)** - For compliance guidelines
41-
- **Palimpsest License** - For ethical licensing framework
42-
43-
## How to Be Added
44-
45-
If you've contributed to ECHIDNA and your name isn't listed here, please:
46-
47-
1. Open an issue or merge request on GitLab
48-
2. Provide a brief description of your contribution
49-
3. Indicate how you'd like to be credited
50-
51-
We recognize all forms of contribution, including but not limited to:
30+
We recognise all forms of contribution including but not limited to:
5231

5332
- Code contributions
5433
- Documentation improvements
@@ -59,48 +38,45 @@ We recognize all forms of contribution, including but not limited to:
5938
- Design and artwork
6039
- Infrastructure and tooling
6140

62-
## Contribution Statistics
63-
64-
<!-- Generated statistics will appear here -->
65-
66-
### By Component
67-
68-
- **Rust Core**: TBD contributors
69-
- **Julia ML**: TBD contributors
70-
- **ReScript UI**: TBD contributors
71-
- **Documentation**: TBD contributors
72-
- **Tests**: TBD contributors
73-
- **Infrastructure**: TBD contributors
74-
75-
### By Prover Backend
76-
77-
- **Tier 1 (Agda, Coq, Lean, Isabelle, Z3, CVC5)**: TBD contributors
78-
- **Tier 2 (Metamath, HOL Light, Mizar)**: TBD contributors
79-
- **Tier 3 (PVS, ACL2)**: TBD contributors
80-
- **Tier 4 (HOL4)**: TBD contributors
41+
## Special Thanks
8142

82-
## Institutional Support
43+
- **The theorem-proving community** — for the foundations and the
44+
ongoing maintenance of the backends ECHIDNA integrates with
45+
(Coq/Rocq, Lean, Agda, Isabelle, Idris2, F*, HOL Light, Mizar,
46+
PVS, ACL2, HOL4, Z3, CVC5, Vampire, E Prover, and the long tail
47+
in [`docs/PROVER_COUNT.md`](docs/PROVER_COUNT.md)).
48+
- **The Rhodium Standard Repository (RSR/CCCP)** — for the
49+
compliance template that this repo extends; see
50+
[`RSR_COMPLIANCE.adoc`](RSR_COMPLIANCE.adoc).
8351

84-
Organizations and institutions that have supported ECHIDNA development:
52+
## How to be added
8553

86-
<!-- Institutional supporters will be listed here -->
54+
If you've contributed to ECHIDNA and would like to be acknowledged
55+
beyond the git history, open an issue or PR on
56+
[GitHub](https://github.com/hyperpolymath/echidna/issues) with the
57+
attribution you would like.
8758

88-
## License
59+
## License of contributions
8960

90-
All contributions to ECHIDNA are licensed under the dual license:
91-
- MIT License
92-
- Palimpsest License v0.6
61+
Source files are licensed per the SPDX header at the top of each
62+
file; the project root [`LICENSE`](LICENSE) and the per-tree
63+
[`.reuse/dep5`](.reuse/dep5) catalogue together describe the
64+
authoritative position. By contributing you agree to license your
65+
contribution under the licence noted on the file you touch (or the
66+
project default for new files).
9367

94-
By contributing to ECHIDNA, you agree to license your contributions under these terms.
68+
The documentation surface is intentionally `MPL-2.0` — see
69+
[`feedback_echidna_license_docs_mpl_intentional`](https://github.com/hyperpolymath/echidna/issues?q=license)
70+
for the deliberation.
9571

9672
## Contact
9773

98-
For questions about attribution or contributions:
99-
- GitLab Issues: https://github.com/hyperpolymath/echidna/-/issues
100-
- Email: contributors@echidna-project.org (when available)
74+
- **GitHub Issues**: <https://github.com/hyperpolymath/echidna/issues>
75+
- **Security**: see [`SECURITY.md`](SECURITY.md) — use GitHub
76+
Security Advisories for vulnerabilities, not public issues.
10177

10278
---
10379

104-
**Last Updated**: 2025-11-22
105-
106-
*This file is maintained by the ECHIDNA Project Team. If you notice any errors or omissions, please let us know.*
80+
*This file is intentionally count-free and date-free in prose. The
81+
git history is the running timeline; the canonical attribution
82+
surface is `git shortlog -sne`.*

CLAUDE.md

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,14 @@ Shape, by area:
139139
# Build System (Justfile is PRIMARY — RSR-H14)
140140
just build # Build the project
141141
just test # Run tests
142-
just check # Run all quality checkers
142+
just check # Roll-up: fmt-check + lint + test
143+
just lint # REUSE + rustfmt + clippy
144+
just pre-commit # fmt-check + lint + test (use in git hooks)
143145
just doctor # Verify toolchain
144-
just heal # Auto-install missing tools
146+
just heal # Offer to install missing tools
145147
just tour # Codebase tour
148+
just help-me # Onboarding subset of recipes
149+
just --list # Every recipe in the Justfile
146150

147151
# Cargo
148152
cargo build # Build Rust code
@@ -153,6 +157,16 @@ cargo bench # Criterion benchmarks
153157
cargo clippy # Rust lints
154158
cargo fmt --check # Format check
155159

160+
# CLI entry points (clap-routed in src/rust/main.rs)
161+
cargo run -- interactive # Launch interactive REPL
162+
cargo run -- server --cors # Launch HTTP API server (port 8081)
163+
cargo run -- list-provers # List ProverKind variants on this build
164+
cargo run -- info <PROVER> # Show backend metadata
165+
cargo run -- prove <file> # Prove a theorem from file
166+
cargo run -- verify <file> # Verify an existing proof
167+
cargo run -- search <pattern> # Search theorem libraries
168+
cargo run -- diagnostics # Interactive diagnostics REPL
169+
156170
# Idris2 ABI
157171
idris2 --build src/abi/echidnaabi.ipkg # Type-check the ABI package
158172

@@ -162,6 +176,29 @@ podman run echidna # Run minimal image
162176
# Per-prover images live under .containerization/Containerfile.wave3
163177
```
164178

179+
## Governance gates
180+
181+
CI enforces estate-wide governance through reusable workflows pinned
182+
in `.github/workflows/`:
183+
184+
- **R5a** (echidna-local, post-#174): doc canonical-reference drift
185+
for prover counts; canonical refs live under
186+
`.github/canonical-references/`.
187+
- **R5b** (estate-wide, consumed via standards SHA pin per #172):
188+
`Version: x.y.z` strings in docs are scanned for drift against
189+
`Cargo.toml`. **`CHANGELOG.md` and `Cargo.toml` are exempt;
190+
everything else is not.** Keep this file (and any new doc) prose
191+
count-free and version-free unless the number is sourced
192+
authoritatively elsewhere.
193+
- **MVP smoke** (#167): just-pinned smoke harness on every PR;
194+
reports missing prover binaries non-fatally.
195+
- **Idris2 ABI type-check**: `idris2-abi-ci.yml` enforces zero
196+
`believe_me` / `assert_total` / `postulate` in `src/abi/`.
197+
- **Chapel CI**: `chapel-ci.yml` builds the static lib + Zig FFI
198+
strict on every PR.
199+
- **Container CI**: `container-ci.yml` weekly cron builds each
200+
Tier-3 cell with stub-sentinel detection.
201+
165202
## Critical Constraints
166203

167204
- **No Python** outside `salt/` (RSR-H4) — Julia for ML, Rust for systems, AffineScript/ReScript for UI.

CODE_OF_CONDUCT.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,14 @@ It also applies when an individual is officially representing the project in pub
5656

5757
### Reporting
5858

59-
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the project team at:
59+
Instances of abusive, harassing, or otherwise unacceptable behaviour may be reported through either of the following channels:
6060

61-
**echidna-conduct@example.org** (Replace with actual contact)
61+
- **GitHub Security Advisories** (preferred — private, encrypted,
62+
auditable): <https://github.com/hyperpolymath/echidna/security/advisories/new>
63+
Tag the report as a conduct matter.
64+
- **Email** (fallback): `j.d.a.jewell@open.ac.uk` — maintainer;
65+
PGP key `4A03639C1EB1F86C7F0C97A91835A14A2867091E` published on
66+
https://keys.openpgp.org.
6267

6368
All complaints will be reviewed and investigated promptly and fairly.
6469

@@ -106,6 +111,10 @@ For answers to common questions about this code of conduct, see the FAQ at https
106111

107112
---
108113

109-
**Version**: 1.0
110-
**Last Updated**: 2025-11-22
111-
**Contact**: echidna-conduct@example.org (Replace with actual contact)
114+
**Lineage**: Adapted from the [Contributor Covenant](https://www.contributor-covenant.org/)
115+
v2.1. Revisions tracked via `git log CODE_OF_CONDUCT.md`. This file
116+
is intentionally version-free and date-free in prose to avoid R5b
117+
drift.
118+
119+
**Contact**: <https://github.com/hyperpolymath/echidna/security/advisories/new>
120+
(preferred) or `j.d.a.jewell@open.ac.uk` (fallback).

MAINTAINERS.adoc

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,18 @@ May be invited to become maintainers at the discretion of existing maintainers.
4444

4545
== Contact
4646

47-
For questions about project governance, open an issue or contact the maintainers listed above.
47+
For questions about project governance, open an issue or contact
48+
the maintainers listed above. For security disclosures, use the
49+
GitHub Security Advisories route documented in
50+
link:SECURITY.md[`SECURITY.md`] — do NOT open public issues for
51+
vulnerabilities.
52+
53+
For high-level direction the canonical surfaces are:
54+
55+
* link:README.adoc[`README.adoc`] — overview, distinguishing features
56+
* link:docs/ROADMAP.md[`docs/ROADMAP.md`] — stage map + sprint plan
57+
* link:CHANGELOG.md[`CHANGELOG.md`] — release history
58+
* link:docs/PROVER_COUNT.md[`docs/PROVER_COUNT.md`] — canonical
59+
backend tier table
60+
* link:RSR_COMPLIANCE.adoc[`RSR_COMPLIANCE.adoc`] — hard-rule
61+
compliance and out-of-template adaptations

QUICKSTART-DEV.adoc

Lines changed: 49 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,48 @@
11
= Echidna — Developer Quickstart
22
:toc: preamble
33

4-
Clone, build, test, contribute.
4+
Clone, build, test, contribute. The user-facing analogue lives in
5+
link:QUICKSTART-USER.adoc[`QUICKSTART-USER.adoc`]; release / packaging
6+
is in link:QUICKSTART-MAINTAINER.adoc[`QUICKSTART-MAINTAINER.adoc`].
57

68
== Prerequisites
79

810
* Git 2.40+
9-
* just (command runner)
11+
* just (command runner) — `cargo install just`
1012
* See `just doctor` output for language-specific requirements
1113

14+
For the full optional toolchain (Julia, Idris2, Zig, Chapel, Deno) see
15+
link:QUICKSTART-USER.adoc[`QUICKSTART-USER.adoc`]; only Rust + just +
16+
pkg-config + openssl-devel are mandatory.
17+
1218
== Setup
1319

1420
[source,bash]
1521
----
1622
git clone https://github.com/hyperpolymath/echidna
1723
cd echidna
1824
just doctor # verify toolchain
19-
just heal # auto-install missing tools
25+
just heal # offer to install missing tools (non-destructive)
26+
just tour # guided codebase walkthrough
27+
just help-me # onboarding subset of recipes
2028
----
2129

2230
== Development Workflow
2331

2432
[source,bash]
2533
----
26-
just tour # understand the codebase
27-
just help-me # see available commands
34+
just build # debug build
35+
just test # all Rust tests
36+
just lint # REUSE + rustfmt + clippy
37+
just pre-commit # fmt-check + lint + test
38+
just check # roll-up: fmt-check + lint + test
39+
cargo run -- interactive # launch the REPL
40+
cargo run -- server --cors # launch the API server on 8081
2841
----
2942

43+
The full recipe set is in `Justfile`; `just --list` enumerates
44+
every recipe.
45+
3046
== Optional: Chapel Parallel Proof Search
3147

3248
The Rust core exposes an optional parallel-search path that calls into
@@ -43,17 +59,42 @@ cargo test --features chapel --lib proof_search
4359
----
4460

4561
With Chapel actually installed and `libechidna_chapel.so` built from
46-
`chapel_poc/`, pass `-Dstubs=false` to the Zig build and link the
62+
`src/chapel/`, pass `-Dstubs=false` to the Zig build and link the
4763
Chapel library alongside. Stubs return "Chapel unavailable" at runtime
4864
so `cargo test --features chapel` still passes on hosts without Chapel.
4965

66+
The Justfile wrappers (`just build-chapel`, `just chapel-build`,
67+
`just chapel-smoke`, `just chapel-test`, `just bench-chapel-mrr`,
68+
`just test-chapel-ffi`) cover the common flows; `just --list | grep chapel`
69+
shows them all.
70+
71+
== Idris2 ABI
72+
73+
The on-wire contract between the Rust dispatcher, the Julia GNN
74+
ranker, and the Chapel parallel rank-merge is pinned in `src/abi/`.
75+
Type-check before pushing if you touched anything that touches the
76+
ABI surface:
77+
78+
[source,bash]
79+
----
80+
idris2 --build src/abi/echidnaabi.ipkg
81+
----
82+
83+
CI enforces zero `believe_me` / `assert_total` / `postulate` in the
84+
ABI modules via `.github/workflows/idris2-abi-ci.yml`.
85+
5086
== Before Committing
5187

5288
[source,bash]
5389
----
54-
just assail # run panic-attacker security scan
90+
just pre-commit # fmt-check + lint + test
91+
just assail # panic-attacker security scan (requires panic-attack CLI)
5592
----
5693

94+
All commits must be GPG-signed and follow Conventional Commits — see
95+
link:CONTRIBUTING.adoc[`CONTRIBUTING.adoc`] for the full policy.
96+
5797
== Contributing
5898

59-
See link:CONTRIBUTING.md[CONTRIBUTING.md] for guidelines.
99+
See link:CONTRIBUTING.adoc[CONTRIBUTING.adoc] for guidelines (the
100+
canonical, AsciiDoc version). `CONTRIBUTING.md` is a thin pointer.

0 commit comments

Comments
 (0)