Gate the evasion sort on the decision rather than the node count - #34
Open
grounzero wants to merge 1 commit into
Open
Gate the evasion sort on the decision rather than the node count#34grounzero wants to merge 1 commit into
grounzero wants to merge 1 commit into
Conversation
The corpus depth-two ceiling had stopped discriminating: deleting the sort from the quiescence evasion path left every test in the file passing. Two counters replace it, lists prepared and lists whose head the sort moved, and both were made to fail separately before this landed. The exchange-pruning ceiling beside it keeps its node bound, which still discriminates, and its stale reference is re-derived; the two are not merged because they gate different properties.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The corpus depth-two ceiling had stopped discriminating. Deleting
picker::sort_fromfrom the quiescence evasion path left all 27 tests in thefile passing, with the ceiling sitting 12.2x above the unsorted reading.
Why it was retired rather than re-derived. Only three of the 67 corpus
positions change at all when the sort is deleted, one position carries 1,676
of the 1,699-node difference, and one changes the other way. Summing the
corpus is what closed the window: the one position that can see the property
gives 1.34x and the 66 that cannot bring it to 1.16x. Going deeper does not
reopen it, measured at depths 1 to 6: 1.17, 1.16, 1.12, 1.07, 1.08, 1.09.
Why not the direct order assertion either. A test that generates evasions
and asserts the sorted order already exists over the same population, and it
passes with the sort deleted, because it calls the sorter itself. The property
that lost its gate is not the sorter's output but that the search's in-check
path applies it.
Why the two depth-two gates are not merged, though they print the same
total. Deleting the exchange test fails three gates; deleting the sort failed
none. Merging would have left the evasion property with no gate at all.
Two counters replace it, in the two halves the futility gates use: lists
prepared, and lists whose head the sort moved. Both were made to fail
separately before this landed.
Gates: seven engine commands green, full workspace green, deep perft green,
and the count is unchanged against
bench.txt, so there is no trailer.four_threads_out_node_one_at_a_fixed_depthfails intermittently under thefull suite on unmodified
mainat the same rate as on this branch, which isthe known flake and not this change.