Skip to content

Gate the evasion sort on the decision rather than the node count - #34

Open
grounzero wants to merge 1 commit into
mainfrom
evasion-order-gate
Open

Gate the evasion sort on the decision rather than the node count#34
grounzero wants to merge 1 commit into
mainfrom
evasion-order-gate

Conversation

@grounzero

Copy link
Copy Markdown
Owner

The corpus depth-two ceiling had stopped discriminating. Deleting
picker::sort_from from the quiescence evasion path left all 27 tests in the
file 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_depth fails intermittently under the
full suite on unmodified main at the same rate as on this branch, which is
the known flake and not this change.

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant