Repository navigation
Drop the bare true row left at the end of Found - #476
Conversation
When the binder simplification drops the last binder of a Found chain, it left a bare `true` row after the path conditions, which reads as if the value above were true. A suffix that becomes just `true` is now left out; a Found that simplifies away entirely still shows `true`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex review, round 1(Codex v0.164.0,
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex review, round 2(On commit 6c948cb, same setup as round 1. Between the rounds I changed one thing myself: the code comment
Neither round found anything, so there is nothing to fix or decline, and the review loop ends here. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Closes #375.
Problem
#459 dropped the
truebinders the error does not need. When the dropped binder was the last one of Found,VCBinderSimplification.removeBinderreplaced it with a baretruerow, so Found still ended intrueafter the path conditions. That is the case of the issue's screenshot:wParamcomes fromwriter.getDefaultWriteParam(), nothing is known about its state, and its∀wParam truerow turned into a baretruethat reads as ifbaseline || extendedwere true.Change
In
VCBinderSimplification, a suffix that simplifies to justtrueis left out of the row above it (withNext/isPlainTrue). This covers a dropped last binder and a collapsedfalsebinder. It happens in the sameBinderstep, so the panel's history gets no extra step.true(found true but expected …). Nothing is known, and an empty Found would hide that.found …text doesn't change either, becauseP && truewas already printed asP.Before / after
Study exercise A1_01 (dcm4che
SlideRecoder, line 131), the issue's screenshot:Other cases (checked while developing; the unit tests below cover the rule):
truetrue(unchanged)if (baseline || extended)∀#fresh baseline || extended,true∀#fresh baseline || extendedif (lossless) if (!extended)∀#fresh #fresh == lossless && #fresh,∀#fresh !extended,truetrue∀#fresh …,∀wParam startCompression(wParam)Study exercise A1_56 (JabRef
EditAction, the issue comment) already had notruerows on main after #459. It is unchanged:Follow-up (not in this PR)
The guard rows above (
∀#fresh¹¹² !#fresh¹¹¹,∀#fresh¹²⁶ !(…)) say nothing about Expected, and they use fresh variables whose binders were dropped. In A1_01, the one row left (baseline || extended) also says nothing aboutwParam. Whether to drop path conditions unrelated to Expected is pending the PM's decision. The#freshnames are #373.Tests
VCBinderSimplificationTest: 3 new tests: a lasttruebinder after a path condition, after nested conditions, and a collapsedfalsebinder after a row.trueBinderWithoutSuffixBecomesPlainTrue(lonetrue) still holds.true.mvn test(verifier): 684 tests, 0 failures. No existing expectation changed.🤖 Generated with Claude Code