E-FAST-M6: port M=6 reveal sampling into the fast memo engine, trace-equivalent to the native factored search
web/content/research/EX-20260823-fast-m6-reveal-sampling-port-be23e203.mdx and it will appear here. The registered protocol is shown below.The registered protocol
Engineering port, no new science: implement factored reveal sampling (M>1, matching the native FactoredSearch semantics used by the C0 arms: N disc strata x M reveal samples, work accounting, cache behaviour) inside the fast memo engine family (approaches/lifetime-objective fast-search/fast-engine/fast-leaf, proven bit-identical to the reference at M=1 in finding-13/audit-06 and re-verified at d3s7 by RS-20260823T225753Z-0fbd48c3's re-gates: 240 decisions, 0 mismatches). The port is accepted only if it is trace-equivalent to the native factored search: identical chosen columns, identical work counts, identical completed depths and cache statistics semantics, across the full equivalence gate below. Expected speedup ~10-40x per move at d3 N7M6 (native measured 1.754-6.83 CPU-s/move; fast M=1 d3s7 measured 54.6 ms/move in continuation duty, ~4 ms/move in play duty); the realised figure is measured and reported with the machine profile. Per docs/benchmarks.md, any deviation in actions, random events, or work semantics reclassifies the port as a new algorithmic candidate and it is then not accepted under this record.
approaches/lifetime-objective/reveal-sampling/search.cppPrimary metric
trace equivalence vs the native factored search: chosen column, work, completed depth on every probe decision
Statistical unit: not-applicable
Pass criteria, fixed in advance
- Equivalence: >= 500 live decisions per grid point over the configuration grid (d3/d4 x N5/N7 x M1/M2/M6) on probe seeds and on >= 3 full replayed C0 games, with 0 column mismatches, 0 work-count mismatches and 0 completed-depth mismatches vs the native factored search.
- M=1 regression: the port at M=1 remains bit-identical to the existing fast search (no regression of finding-13/audit-06 guarantees).
- Determinism: byte-identical outputs across two runs and across thread counts; mirror invariance of decisions.
- npm test and make test pass; default random-reveal behaviour byte-identical (latent-mode contract untouched).
On pass: Record valid + pass (engineering, CHECK tier) with the measured speedup and machine profile; register the P-SOL-3 successor (rung-2 upgrade to fast-M6 with R2=48 and the corpus re-baselined to fast-M6) as a new protocol version before any leased seed is opened.
On fail: Record valid + fail as an engineering result; the native search remains the only M>1 implementation; P-SOL stays blocked and the scale-out route becomes the only reopening path for cheap-continuation labels.
Data and reuse
Zero leased seeds. Equivalence gates run on already-open probe/smoke seeds (0xa5278000-0xa52784ff, 0xa51d8000-0xa51d800f) and on the retained C0 per-game artifacts (already-read data); the timing figure uses the same probes. No cohort's data status changes.
seed leases: none
What happened
E-FAST-M6 passes: factored reveal sampling (N disc strata x M reveal samples, native scenario indexing s = r*N + d over T = N*M) is ported into the fast memo engine as drop7::fastr::FastFactoredSearch and is trace-equivalent to the native FactoredSearch. Grid gate: 6,300 live probe decisions (525 per point over d3/d4 x N5/N7 x M1/M2/M6) with 0 column, 0 work-count and 0 completed-depth mismatches, including 549 work-limited decisions on the two budget-capped d4-M6 points where both engines degrade to completed depth 3 identically. All 3 retained C0 games replay to byte-for-value final identity with the fast engine driving (335 decisions, 0 mismatches). M=1 regression: 2,100 decisions x {memo-on, memo-off} bit-identical to the untouched fast::FastSearch on all six metric fields. Determinism byte-identical across repeated runs and {26,7,1} threads; mirror invariance exact with symmetric boards excluded (finding-13 4C; one disclosed gate-harness iteration); the one-entry leaf memo stays enabled under M>1 (board-memcmp keying cannot alias across reveal samples) with memo-on/off trace identity across the grid. Continuation duty: 8 CRN continuations (2 C0 roots, K=4, H=40) byte-identical to native. Realised speedup at d3 N7M6 is 5.5-5.8x (play duty 2.140 -> 0.385 s/move; continuation duty 0.990 -> 0.177 s/move; grid 4.38-5.87x across points), measured under the gate's own 26-thread load - well below the 10-40x hoped for in the hypothesis, because that figure divided native M6 seconds by fast M1 seconds and ignored the ~27x work ratio. P-SOL continuation labels at native D3 N7M6 semantics now cost ~0.18 s/move instead of ~1-3.4 s/move.
- ✓Equivalence: >= 500 live decisions per grid point over d3/d4 x N5/N7 x M1/M2/M6 on probe seeds and >= 3 full replayed C0 games, 0 column/work/completed-depth mismatches vs the native factored search — observed: 525 decisions per point (6,300 total), 0/0/0 mismatches; per-point native and fast trace hashes identical; 3 C0 replays with 0 mismatches and all finals byte-for-value identical to runs/RUN-A525-reveal/d3-n7-m6.json
- ✓M=1 regression: the port at M=1 remains bit-identical to the existing fast search — observed: 2,100 decisions x memo-on and memo-off vs fast::FastSearch: 0 mismatches on action, completed_depth, nodes, work, cache_hits, cache_entries
- ✓Determinism: byte-identical outputs across two runs and across thread counts; mirror invariance of decisions — observed: subset artifact byte-identical across {repeat at 26, 7, 1} threads; mirror invariance 0 mismatches on 114 asymmetric-board decisions (18 mirror-symmetric boards excluded per finding-13 4C; iteration 1's harness compared symmetric boards and is disclosed in gates.log)
- ✓npm test and make test pass; default random-reveal behaviour byte-identical (latent-mode contract untouched) — observed: npm test pass; make test pass including TypeScript/native parity (256 seeds, 6,852 moves, exact); the change is additive (new approach directory only) and touches no engine source
Recorded metrics
- column
- 0
- work
- 0
- completedDepth
- 0
- games
- 3
- decisions
- 335
- mismatches
- 0
- finalsIdentical
- 3/3 (320871/95, 381355/110, 463094/130)
- decisions
- 2,100
- comparators
- fast::FastSearch vs port memo-on and memo-off
- metricFieldMismatches
- 0
- continuations
- 8
- outcomeMismatches
- 0
- nativeCpuSecondsPerMove
- 0.9904
- fastCpuSecondsPerMove
- 0.1767
- speedup
- 5.6000
- nativeCpuSecondsPerMove
- 2.1397
- fastCpuSecondsPerMove
- 0.3847
- speedup
- 5.5600
- The two d4 M=6 grid points run under disclosed budget-capped work bounds (51,084,852 and 100,000,000) rather than their infeasible worst-case bounds; this deliberately exercises the work-limit and LRU-eviction paths, but full-depth d4-M6 completion is not itself gated (the C0 configuration d3 N7M6 uses its exact retained bounds).
- Timing was measured with CLOCK_THREAD_CPUTIME_ID while the gate itself loaded 26 threads; idle-host per-move times will be lower for both engines, and the speedup ratio (4.4-5.9x) is the robust figure, not the absolute times.
- The realised speedup is ~5.5-5.8x at d3 N7M6, not the 10-40x the hypothesis projected from an M1-vs-M6 comparison; the P-SOL-3 successor's budget must be re-planned from the measured 0.177 s/move continuation rate.
- Total CPU seconds are measured for stage E and rate-derived for the resumed stages (run record measurementNotes).
- Self-reported; the run includes one disclosed external task kill (resumed between stages) and one disclosed gate-harness iteration on stage D.