Repository navigation
List Found as facts and show only readable simplification steps - #185
CatarinaGamboa wants to merge 9 commits into
Conversation
Found listed every row of the VC chain with a forall binder column and implication arrows, including rows that state nothing and binders with generated names, and its steps walked through each raw pass. It now lists the facts, one per line; says that nothing known proves Expected when the message could not prove it; and keeps only the steps whose facts use no generated name, one per pass, labelled Original, Simplified or by their display step name, with a tooltip saying what changed. Closes #183 Closes #176 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Codex review, round 1 (
Nothing to fix. 🤖 Generated with Claude Code |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Clean-code review (clean-code-principles skill, on this PR's diff)
🤖 Generated with Claude Code |
|
Codex review, round 2
Declined. The chain sent as 🤖 Generated with Claude Code |
|
Codex review, round 3
Declined here, raised for the PM. The links lived on the
Declined, intended. The sentence does not claim that nothing is known. It says nothing is known here that could prove Expected, which is the verifier's own reading: it prints "could not prove it" exactly when no fact of Found bears on Expected (no fact linked to Expected, or for a state error none that names a state). It also uses the wording of the verifier's Unknown category. Showing the unrelated facts (A1_56: Codex's remaining findings are design decisions already listed for the PM, so the loop stops here. 🤖 Generated with Claude Code |
The verifier categorizes an error as unknown exactly when its message says it could not prove what was expected. The server now sends that category (lowercase, hyphenated, absent when the verifier gives none), and Found says that nothing known proves Expected from it instead of from the message text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Error category instead of the message text (3209ab8, 02de671)
Codex review, round 4 (on 3209ab8)
Fixed in 02de671. Found also says that nothing known proves Expected when its newest step states nothing. This covers a state error the verifier leaves uncategorized because the state is checked elsewhere. A second case of the same test covers it.
Declined, as in round 3: left to the PM (see the description). Codex review, round 5 (on 02de671)
🤖 Generated with Claude Code |
Found shows the chain again, each binder linked to its source and an arrow after each fact, and splits each fact at its top-level && into a line per conjunct. When nothing known proves Expected, the newest step says so and the older steps stay a step back. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Codex review, round 6 (after keeping the binders and implications, with a line per conjunct)
|
…the chain is a step back Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Codex review, round 7
|
…side parentheses Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Codex review, round 8
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Closes #183. Closes #176.
What changes
The Found box of the Verification tab only shows what a novice can read (advisor's rule for the study: if users are not told what it means, don't show it).
∀xcolumn (each binder still links to its source line) and the→arrows stay, as the PM asked. Each fact is split at its top-level&&, one conjunct per line under its binder, with&&at the end of every line but the last. A&&inside parentheses or a ternary stays on its line.unknown, which it is exactly when the message says "expected … but could not prove it" (A1_56, A2_04), Found opens on a Summary step reading Nothing is known here that could prove Expected. (the wording of the verifier's Unknown category). The arrows go back to the chain, e.g.∀undoManager undoManager == #getUndoManager_result, also when there was only one step. It does the same when the newest step states nothing. The server now sends that category aserrorCategoryonLJErrorDTO, lowercase and hyphenated likeHintDTO.kind; lsp4j leaves the field out when the verifier gives none.#if_condition,#switch_selector,extended#1), one step per run of the same pass, and none that looks like the step before. A1_56 went from 19 steps to none, A1_01 from 7 to 2.Binder,Substitution) are no longer shown.Why the client, not the verifier
The verifier's messages already leave these names out: the hover of all six study exercises reads fine. Binder names reach users only through the IDE's binder column. Generated names inside facts appear only in the steps before simplification. So the fix belongs in the view. The only server change sends the category that verifier 0.0.37 already computes; no verifier change is needed.
Screenshots (headless VS Code, light theme)
Current (binders, arrows, a line per conjunct)
The rest are from the first version, before the review, which had no binders or arrows. Before: main with verifier 0.0.37 (
pr-screenshots/study-0.0.37). After: that first version.A1_56 (could not prove it)
A1_09 (path condition and state)
A2_10 (refinement error, two steps)
A1_01, A1_38, A2_04
For the PM
∀xclickable to its source). The Context tab and Locations still link to the code. Should a fact link to its source line, e.g. through a small "line 62" link after it? One caveat: the translation table is keyed by display name, so all#case_conditionrows share one entry and would link to the samecase.extended#1) only hide older steps here; Render the verifier's line-tagged variable names instead of superscript counters #175 replaces them with line tags (x@51), and those steps will show again then.Tests
vc-changes.spec.ts(binder column and arrows) is replaced by three tests invc-implications.spec.ts, each failing on main: facts without binders/arrows/trueand the Original/Simplified header; skipping steps with generated names and merging a pass run under a display step's name; the "nothing is known" sentence, for anunknowncategory and for a Found that states nothing.DiagnosticConverterTestgains two assertions onerrorCategory.npm run test:unit(124 tests),test:typecheck,lintand servermvn -B testpass locally.🤖 Generated with Claude Code