@@ -44,7 +44,7 @@ milestones = [
4444 { name = "M1: Backend trait (Assistant|Solver kinds; Outcome/Verdict); agda.rs -> prover/agda.rs; graph/dag take &dyn Backend (pure refactor, 50 tests stay green)", completion = 100 },
4545 { name = "M2: Cubical-Agda variant (Agda::cubical(), --cubical --safe island)", completion = 100 },
4646 { name = "M3: Flying-Logic reasoning graph (src/reason: And|Or juncts, demote-only cycle-safe Verdict propagation, additive studio JSON)", completion = 100 },
47- { name = "M4: Idris2 adapter (core/ABI language: .ipkg/--check/totality; escape-hatches)", completion = 90 },
47+ { name = "M4: Idris2 adapter (core/ABI language: .ipkg/--check/totality; escape-hatches)", completion = 95 },
4848 { name = "M5: SMT solver backends (Z3, CVC5): SMT-LIB2 -> sat/unsat/unknown -> Verdict", completion = 100 },
4949 { name = "M6: Lean4 adapter (lake build + #print axioms audit)", completion = 85 },
5050 { name = "M7: Echidna dispatch seam (optional route to orchestrator :8090, same Outcome)", completion = 70 },
@@ -60,6 +60,30 @@ milestones = [
6060# Remaining M0: `arghda doctor` Rust subcommand (interim: `just doctor` shells
6161# the script's --verify-only table).
6262#
63+ # Follow-on round (refinement, 2026-07-01, after the engine spine):
64+ #
65+ # CI FIX (arghda-core#40 was auto-merge-blocked on "Waiting for Code Scanning
66+ # results. Code Scanning may not be configured for the target branch"): arghda-
67+ # core was EXTRACTED from echo-types, not instantiated from rsr-template-repo,
68+ # so it never inherited the template's codeql.yml — yet main's branch protection
69+ # requires code-scanning. Earlier PRs merged only because the owner merged
70+ # manually; auto-merge enforces strictly. FIX (at source): restored the
71+ # canonical estate .github/workflows/codeql.yml verbatim (language: actions,
72+ # build-mode none, SHA-pinned; same file rsr-template-repo + cicd-squabbler run
73+ # green). Triggers on pull_request (PR gets a run) + push:[main] (establishes the
74+ # baseline). Landed via #40; the advanced-security bot confirmed "Code Scanning
75+ # has recently been set up". Permanent — future PRs satisfy the gate
76+ # automatically. NB the template is fine; only extraction-origin repos drift.
77+ #
78+ # M4 FOLLOW-ON landed 2026-07-01: Idris2 `.ipkg`-declared roots. discover_roots
79+ # now unions (a) `.ipkg` `main = <Module>` resolved to its .idr (honouring an
80+ # optional quoted `sourcedir`; `--` comments stripped; first existing candidate
81+ # base wins) with (b) the Main.idr fallback. So an executable entry named other
82+ # than Main.idr (e.g. `main = App`) is found. 127 tests (+1 integration ipkg-main
83+ # +2 unit ipkg-parser incl. sourcedir + no-resolvable-main). Dogfooded: `reason
84+ # --backend idris2` over an ipkg fixture → crt_roots ['App'], App+Helper wired.
85+ # M4 now 95% (remaining: totality-hole `?name` + per-def `partial` lint).
86+ #
6387# M7 landed 2026-07-01 (70%): the Echidna dispatch seam — completes the
6488# engine-spine deliverable (M0-M7 + M11). src/dispatch.rs: `Dispatch { Local,
6589# Echidna { base_url } }` + `run(backend, file, include_root) -> Outcome`
@@ -219,7 +243,7 @@ actions = [
219243 "ENGINE-SPINE DELIVERABLE COMPLETE: M0-M7 + M11 all landed. v0.1 spec closed. Six backends (agda, agda-cubical, idris2, lean4 Assistant; z3, cvc5 Solver) + reasoning graph + doctor + groove + dispatch seam. Remaining work is refinement + the heavy tail:",
220244 "M7 follow-on: the real Echidna orchestrator HTTP client (feature-gated), once Echidna's API is confirmed — only Dispatch::run changes.",
221245 "M6 follow-on: lake-env/LEAN_PATH multi-file resolution; per-decl #print axioms audit to promote Unknown→Proven.",
222- "M4 follow-on: .ipkg-declared roots; totality-hole (?name) + per-def `partial` lint.",
246+ "M4 follow-on: .ipkg-declared roots DONE; remaining = totality-hole (?name) + per-def `partial` lint.",
223247 "M3 follow-on: feed real verdicts into `reason` from a workspace `proven/` state + wire staleness from the content-hash closure (proven.rs).",
224248 "M8-M10 heavy tail (Coq/Rocq, Isabelle, Mizar) — gated on --heavy provisioning (Coq via opam ~1hr; Isabelle ~4GB; Mizar niche).",
225249]
@@ -230,7 +254,8 @@ last-result = "pass" # unknown | pass | warn | fail
230254open-warnings = 0
231255open-failures = 0
232256# `just check` (fmt-check + clippy -D warnings + build + test + SPDX) green
233- # post-M7: 91 lib + 33 integration = 124 tests pass. doctor/groove/dispatch
257+ # post-M4-followon: 93 lib + 34 integration = 127 tests pass. codeql.yml added
258+ # (code-scanning gate fix). doctor/groove/dispatch
234259# dogfooded: 6/6 backends runnable; groove writes /.well-known/groove; --dispatch
235260# local real, echidna honest-stub. All six backends dogfooded via real CLI: agda
236261# + agda-cubical + idris2 + lean4 (Assistant), z3 + cvc5 (Solver). Dogfooded
0 commit comments