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
## What
Multi-file Coq projects are now checkable. Before this, a bare `coqc
B.v` where `B` `Require`s an in-tree sibling `A` errored `Cannot find a
physical path bound to logical path A` (ground-truthed) — so any Coq
file with a local dependency verdicted `Error`.
## How
`check_file` now stages the target and its in-tree transitive `Require`
deps into a temp build tree, compiles the deps in **topological order**
(deps before dependents; `coq_transitive_deps` is a cycle-safe
post-order DFS) so each `.vo` exists, then checks the target against `-R
<build> ""`. It all happens under temp, so the source tree stays clean.
External stdlib/MML requires resolve on coqc's own load path (skipped as
non-in-tree).
## Honesty preserved — a transitive admit is NOT whitewashed
This is the load-bearing verification. Dogfooded: a dependent whose dep
contains `Admitted` gets a per-file `check` verdict of `proven` (the
dependent's own content is sound), **but the reasoning graph demotes its
EFFECTIVE verdict to `admitted`** via the And-edge to the admitted dep:
```
Bad self=admitted effective=admitted
UsesBad self=proven effective=admitted (edge UsesBad → Bad)
```
So dep-ordering makes projects *checkable* without letting a transitive
admit ride through green — the self/effective split does its job.
## Verification (actually run)
- `cargo fmt --check` / `clippy -D warnings` — clean
- `cargo test` — **174 pass** (+1 topo-order unit)
- `check-spdx.sh` — OK
**Dogfooded vs real coqc 8.18.0:**
| case | result |
|---|---|
| `check C.v` in a 3-module `A ← B ← C` chain of real `Qed` proofs |
`proven` (was `error` before) |
| `reason --check` over the chain | A / B / C all `proven` |
| dependent of an `Admitted` module | per-file `proven`, **effective
`admitted`** |
## Scope
M8 → 97%. Residual: `_CoqProject`-driven custom `-Q`/`-R` prefix
remapping (the empty-prefix `Foo.Bar` ↔ `Foo/Bar.v` convention is fully
working; only non-default logical prefixes remain a follow-on).
Part of the heavy-tail completion cuts — next: Mizar prel export (M10),
then Isabelle multi-session (M9).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_012MpYSh6Wy8YMBH2E3qVyT7
---
_Generated by [Claude
Code](https://claude.ai/code/session_012MpYSh6Wy8YMBH2E3qVyT7)_
Co-authored-by: Claude <noreply@anthropic.com>
"M10 (Mizar): DONE (85%) — turned out to be a REAL verify, not detect-only: static i386 verifier runs on x86_64; provisioned + adapter (accom+verifier+.err) + dogfooded (proven/error). HEAVY TAIL M8-M10 COMPLETE. Remaining: local-article prel export.",
435
455
"M7 client INVESTIGATED 2026-07-01 → BLOCKED (stub stays): no confirmed Echidna HTTP contract exists (dispatch.rs says API unconfirmed; ECOSYSTEM.a2ml gives no endpoints/schema; the echidna repo is out of this session's access scope). Building a client would mean inventing an unverifiable contract — forbidden. Unblock: a published Echidna API + a reachable instance to dogfood; then wire Dispatch::run behind a cargo feature. ROADMAP TERMINUS — all tractable items done; M7's client is the sole residual, externally blocked.",
436
-
"Deeper cuts deliberately scoped out (available if the owner wants them): Coq _CoqProject logical-path resolution + dependency-ordered compilation; Mizar local-article prel export (miz2prel); Isabelle session-qualified imports + multi-session builds; and the arghda-studio visual layer that consumes the frozen reason/0.1 JSON.",
456
+
"HEAVY-TAIL COMPLETION CUTS (owner asked for these 2026-07-01, doing foundation-first, one PR each, real-tool dogfood): [DONE] Coq dependency-ordered compilation (M8 90→97%); [NEXT] Mizar local-article prel export via miz2prel so cross-article refs check (M10 85→~100%); [THEN] Isabelle session-qualified imports + multi-session builds (M9 90→~100%). Residual after: Coq _CoqProject custom -Q/-R prefixes (3%); arghda-studio visual layer (separate repo, out of this session's scope; AffineScript).",
0 commit comments