On this page

The C0-positive D3 N7M6 policy lived only in the native factored search, at seconds per move; the fast engine could only play M = 1. This port teaches the fast memo engine the factored chance node so the exact same decisions cost milliseconds instead.

The traversal order being preserved

At every action node the search tries the legal columns in the frozen order 3, 2, 4, 1, 5, 0, 6. Each move is then scored under a factored chance node: the outer loop runs the N next-disc strata, the inner loop the M reveal samples, and iteration (d, r) is scenario s = rN + d of T = NM. The cascade reveal values come from the stratified stream indexed by (state seed, s, T) with events consumed in cascade order; the successor's next disc comes from the disc stream indexed by (state seed, d, N) and never depends on r. Work is counted once per scenario immediately after the move resolves; the budget is checked before every scenario, node and leaf; the action value is the mean over all T scenarios. At M = 1 this collapses to s = d, T = N — the untouched fast-search path, kept verbatim behind an M == 1 branch.

Why the one-entry leaf memo survives M > 1

The memo (audit-06) keys on the full board via memcmp plus moves-to-rise and recomputes only the next-disc term. A sampled reveal that changes the board therefore misses — it can never alias across reveal samples — and a reveal sample that leaves the board unchanged hits, exactly as at M = 1. The memo sits below the search's work increment, so it cannot change any recorded observable; it stays enabled for M > 1, and the gate proves memo-on/off trace identity across the whole grid.

Sources

  • fast-factored-search.hppFastFactoredSearch: the fast memo engine with the native factored chance node; M == 1 short-circuits to the verbatim fast-search loop
  • gate.cpp — grid trace equivalence vs the genuine native source, C0 replay finals identity, M = 1 bit-identity regression, determinism/mirror/memo gates, play- and continuation-duty timing
  • build.sh — generates the no-entry native copies with machine-checked diffs (entry-point rename plus thread_local on the five diagnostic atomics only)

Gate artifacts: runs/RUN-20260823T215500Z-sol/fastm6/.

RecordsTheories, experiments and results that reference this directory

Claim: With the reveal quadrature fixed at M=6, continuation-search depth is second-order for WITHIN-ROOT sibling ordering: fast d1-M6 or d2-M6 KM-lifetime orderings agree with fast d3-N7M6 at mean within-root Kendall tau LB95 >= 0.75 and top-1 agreement LB95 >= 0.80 at the corpus operating point (K=8, H=40, CRN continuations shared across siblings and engines), and labels from the certified cheap engine train the 572k NNUE leaf to the P-SOL G1/G2 gates (student top-1 vs exact D4 >= 0.55 and >= incumbent + 0.03; label-argmax vs D4 >= 0.60; fit >= 0.7x the split-half label ceiling).

This theory is currently untested at the proposal (no games played) level.

It compares psol3-m6-cheap-engine-corpus-nnue against incumbent played-action LeafNet and exact D1/D2/D4 orderings at the CHECK (mechanics checks only, no games played) level, using no-gameplay data.

No result has been recorded for it.

Agent contextSource files, operational notes and how to reproduce

Directory: approaches/lifetime-objective/fast-reveal-sampling