Skip to content

Commit 402d303

Browse files
fix(build): de-duplicate Cargo.lock capnp (closes #272) + refresh guix.scm version (#273)
Two build-hygiene fixes; the first unblocks all build CI. ## `fix(build)` — Cargo.lock duplicate `capnp` (closes #272) The `capnpc` 0.25→0.26 bump (#267) left **two byte-identical** `capnp 0.26.0` stanzas in `Cargo.lock`, which cargo rejects (`package capnp is specified twice in the lockfile`, exit 101) — reding **every** build job (MVP Smoke, Boot Gate, the whole `T1/*` live-prover matrix) on every PR since. Collapsed the duplicate; `capnp 0.25.6` (required by `capnpc`) and the single `0.26.0` remain. Deterministic dedup of identical stanzas — the build CI here will confirm (the authoring sandbox has no registry cache to run `cargo --locked` locally). ## `chore(guix)` — version refresh `guix.scm` declared `(version "1.5.0")` while the workspace is `2.3.0` (`Cargo.toml` / `STATE.a2ml`). Bumped to match. ## Nix — already clean (nothing to remove) echidna has **no** `flake.nix` / `flake.lock` / `*.nix` — the 2026-05-18 estate ruling was already applied (`STATE.a2ml`: "flake.nix + flake.lock git rm'd"). Remaining `nix` mentions are **intentional deprecation history** (CLAUDE.md, STATE.a2ml, manifest comments), plus a harmless `.gitattributes` `flake.lock` line and `echidna-playground` CODEOWNERS entries for non-existent files — left as-is (template/sub-project managed). Say the word to purge those dead lines too. Draft until reviewed. https://claude.ai/code/session_01UAqDQaMwpUqWHUSZekGZWv --- _Generated by [Claude Code](https://claude.ai/code/session_01UAqDQaMwpUqWHUSZekGZWv)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent e2252af commit 402d303

4 files changed

Lines changed: 12 additions & 21 deletions

File tree

Cargo.lock

Lines changed: 0 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

guix.scm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
(define-public echidna
2121
(package
2222
(name "echidna")
23-
(version "1.5.0")
23+
(version "2.3.0")
2424
(source (local-file "." "echidna-checkout"
2525
#:recursive? #t
2626
#:select? (git-predicate ".")))

src/interfaces/rest/main.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,21 +98,21 @@ async fn main() {
9898
.route("/health", get(health_check))
9999
// Prover endpoints
100100
.route("/api/v1/provers", get(handlers::list_provers))
101-
.route("/api/v1/provers/:kind", get(handlers::get_prover))
101+
.route("/api/v1/provers/{kind}", get(handlers::get_prover))
102102
// Proof endpoints
103103
.route("/api/v1/proofs", post(handlers::submit_proof))
104104
.route("/api/v1/proofs", get(handlers::list_proofs))
105-
.route("/api/v1/proofs/:id", get(handlers::get_proof))
106-
.route("/api/v1/proofs/:id", delete(handlers::cancel_proof))
105+
.route("/api/v1/proofs/{id}", get(handlers::get_proof))
106+
.route("/api/v1/proofs/{id}", delete(handlers::cancel_proof))
107107
// Tactic endpoints
108-
.route("/api/v1/proofs/:id/tactics", post(handlers::apply_tactic))
108+
.route("/api/v1/proofs/{id}/tactics", post(handlers::apply_tactic))
109109
.route(
110-
"/api/v1/proofs/:id/tactics/suggest",
110+
"/api/v1/proofs/{id}/tactics/suggest",
111111
get(handlers::suggest_tactics),
112112
)
113113
// Cross-prover exchange endpoints (OpenTheory / Dedukti).
114114
// Export is session-scoped; import is stateless.
115-
.route("/api/v1/proofs/:id/export", get(handlers::export_proof))
115+
.route("/api/v1/proofs/{id}/export", get(handlers::export_proof))
116116
.route("/api/v1/exchange/import", post(handlers::import_proof))
117117
// Consultant-mode Q&A — free-form question + optional context →
118118
// LLM-shaped markdown answer via BoJ's cartridge router.

src/rust/server.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,9 @@ pub async fn start_server(port: u16, host: String, enable_cors: bool) -> Result<
180180
.route("/api/suggest", post(suggest_handler))
181181
.route("/api/search", get(search_handler))
182182
.route("/api/session/create", post(create_session))
183-
.route("/api/session/:id/state", get(get_session_state))
184-
.route("/api/session/:id/apply", post(apply_tactic_handler))
185-
.route("/api/session/:id/tree", get(get_proof_tree))
183+
.route("/api/session/{id}/state", get(get_session_state))
184+
.route("/api/session/{id}/apply", post(apply_tactic_handler))
185+
.route("/api/session/{id}/tree", get(get_proof_tree))
186186
// Additional UI-specific endpoints
187187
.route("/api/agent/plan", post(agent_plan_handler))
188188
.route("/api/aspect-tags", get(get_aspect_tags))
@@ -229,8 +229,8 @@ pub async fn start_server(port: u16, host: String, enable_cors: bool) -> Result<
229229
println!(" POST /api/suggest - Get tactic suggestions");
230230
println!(" GET /api/search?q=<pattern> - Search theorems");
231231
println!(" POST /api/session/create - Create proof session");
232-
println!(" GET /api/session/:id/state - Get session state");
233-
println!(" POST /api/session/:id/apply - Apply tactic to session");
232+
println!(" GET /api/session/{{id}}/state - Get session state");
233+
println!(" POST /api/session/{{id}}/apply - Apply tactic to session");
234234
println!(" WS /ws/interactive - WebSocket live proof session");
235235
println!();
236236
println!("Press Ctrl+C to stop the server");

0 commit comments

Comments
 (0)