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
ArghDA M3 follow-on: workspace-fed verdicts + staleness in reason (#43)
## What
The Flying-Logic reasoning graph can now source **real prover verdicts
from a four-state workspace's `proven/` state** without re-running any
tool, and demote a **stale-proven** node back to `unknown`. Honest by
construction — a verdict only ever comes from a recorded promotion, and
staleness always dominates a stale `Proven`.
This is the last of the three refinement follow-ons (M4 `.ipkg` roots
#41, M6 axiom audit #42, M3 workspace verdicts).
## How
- **`reason::workspace_verdicts(dag, proven, stale) -> (verdicts,
stale)`** — a pure mapping (no I/O, unit-testable): a node whose file
basename is in the workspace's `proven/` set → `Proven`; if that same
file is stale (content/closure hash changed since promotion) it is added
to the returned stale set, so the existing demote-only fold lowers it to
`Unknown`. Matched by file basename (documented collision caveat).
Re-exported from `lib.rs`.
- **`arghda reason <path> --workspace <ws>`** — reads the proven +
stale-proven basename sets off the workspace (`Workspace::list(Proven)`
/ `Workspace::stale_proven`) and feeds them into `workspace_verdicts`.
`--check` stays authoritative: a fresh typecheck overrides the workspace
verdict and clears staleness for that node.
- **Honest evidence strings** — `"prover: proven"` for a fresh
promotion; `"prover: proven; stale: closure hash changed"` for a demoted
stale one.
## Verification (actually run)
- `cargo fmt --check` — clean
- `cargo clippy --all-targets -- -D warnings` — clean
- `cargo test` — **130 pass** (+1 reason unit: proven lights the cone,
stale demotes)
- `bash scripts/check-spdx.sh .` — OK
**Dogfooded end-to-end** on a real workspace + Agda source tree:
- Scenario A (fresh proven leaf): `Good` → `effective: proven`
(`"prover: proven"`); un-proven root `All` → `unknown`.
- Scenario B (proven file edited on disk → stale): `Good` demoted to
`unknown` with `"prover: proven; stale: closure hash changed"`.
## Scope
Additive only. `M3` base was already 100%; this refinement wires the
reasoning graph to the triage workspace's ground truth. No change to the
`reason/0.1` JSON contract keys.
🤖 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>
"M3 follow-on: feed real verdicts into `reason` from a workspace `proven/` state + wire staleness from the content-hash closure (proven.rs).",
279
+
"M3 follow-on: DONE — `reason --workspace <ws>` sources real verdicts from a `proven/` state (workspace_verdicts) + demotes stale-proven via the content-hash closure. Refinement follow-ons bucket now complete.",
264
280
"M8-M10 heavy tail (Coq/Rocq, Isabelle, Mizar) — gated on --heavy provisioning (Coq via opam ~1hr; Isabelle ~4GB; Mizar niche).",
0 commit comments