Drop7 Research
← Experiments

E-FAST-M6: port M=6 reveal sampling into the fast memo engine, trace-equivalent to the native factored search

completedtier CHECKengineeringno-gameplayseed-freeEX-20260823-fast-m6-reveal-sampling-port-be23e203
No explanation has been written for this experiment yet. Add 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.

Candidate
fast-engine factored reveal sampling
Comparator
native FactoredSearch (C0 configuration)
approaches/lifetime-objective/reveal-sampling/search.cpp

Primary 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

valid run · outcome: passsupported-as-testedmechanics-onlyRS-20260824T010000Z-8f3e9b4f

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.

What it had to pass
  • 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
gridDecisions
6,300
gridMismatches
column
0
work
0
completedDepth
0
gridPointsAtLeast500Decisions
12/12 (525 each)
c0Replay
games
3
decisions
335
mismatches
0
finalsIdentical
3/3 (320871/95, 381355/110, 463094/130)
m1Regression
decisions
2,100
comparators
fast::FastSearch vs port memo-on and memo-off
metricFieldMismatches
0
determinism
subset output byte-identical across {repeat, 26, 7, 1} threads (sha256 645a2bb8977f4e86ad95c048964186061970183179ae615159dde8cccb0aed97)
memoUnderM6
enabled; memo-on/off trace identity on all 12 grid points and 2,100 M=1 decisions; no aliasing possible (full-board memcmp key below the work increment)
continuationDuty
continuations
8
outcomeMismatches
0
nativeCpuSecondsPerMove
0.9904
fastCpuSecondsPerMove
0.1767
speedup
5.6000
playDuty
nativeCpuSecondsPerMove
2.1397
fastCpuSecondsPerMove
0.3847
speedup
5.5600
gridSpeedupRange
4.38-5.87x (per-point table in timing.json)
testSuites
npm test pass; make test pass (parity 256 seeds / 6,852 moves exact)
Limitations
  • 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.