next dischidden valuesample pairs7 × 7 drawn apart7 shared draws
Technique

Expectimax search

When some of what happens next is your choice and some is luck, look ahead by taking the best of your options and the average of luck's.

Read the primer: Expectimax search

On this page

The problem

When a move causes a clear next to a gray disc, the gray disc's hidden number is revealed, and what that number turns out to be can change everything about the move. Below is one real position from the rules engine. The next disc is a , and it goes into the second column from the left.

before the move
if the hidden disc is a 3
The 5 lands on top of the second column, which makes the 4 beneath it the fourth disc in a vertical run of four, so the 4 pops. That clear hits the cracked gray disc under it for the second time and shows its number. If it is a 3, the 3 is immediately in a run of three and pops too, and a four-wave chain runs: 379 points, and the board ends the move with three fewer discs on it than it started, even after adding one.
the identical position and the identical move
if the hidden disc is a 4
Same board, same drop. The 4 pops and the gray disc reveals, but as a 4, which sits in a run of three and does nothing. One wave, 7 points. Both outcomes are the engine's; the only difference is a number no player can see.

A search cannot know which of those it will get, so it imagines several possibilities and averages them. That is a chance node, and the number of possibilities it imagines is its chance samples, called strata on this site; the reference search uses five and a stronger variant uses seven.

Every chance node holds two independent pieces of luck: the number revealed under the gray disc, and which disc the game deals next. The reference search indexed both with the same counter. Sample 1 always paired a particular reveal with a particular next disc, sample 2 the next pair, and so on. With seven samples the search saw seven of the 49 possible combinations, and the seven it saw were perfectly correlated. A move whose value depends on the combination could not be valued correctly.

Proposed solution

Give the two pieces of luck separate draws. Instead of one setting for both, the search takes a number of disc samples N and a number of reveal samples M and runs N × M scenarios per chance node, with the reveal draws spaced through the unit interval so that every disc branch still sees a properly spread reveal sample. At M = 1 the two loops collapse to the old search: the same draws in the same order with the same divisor, so the existing arms are special cases of the new search and can be compared with it directly.

The bet is that widening the reveal side of the chance node buys the same kind of strength as another move of depth, at a shallower and cheaper depth. The policy reads what the reference reads: the visible board, the visible next disc, the moves until the next rise, and whether the game is over.

How it works

  1. Read the position: the visible board, the visible next disc, the moves until the next rise, and whether the game is over.
  2. At each chance node, draw N samples for the next disc and M samples for the reveals, and combine them into N × M scenarios, each with its own weight.
  3. Search each scenario with the three-move fair search and the frozen leaf evaluator. The chance node's value is the plain average over all N × M scenarios.
  4. Every configuration declares a work bound sized to its own branching factor, and the binary refuses to run a cohort without one. Leaving the reference's bound in place while widening the chance node would quietly turn a four-move search into a three-move one and report the result as a chance-sampling finding.
  5. Play the column with the highest averaged value. Alongside the search, a separate script re-implements the engine's own quadrature in Python and measures, over 20,000 synthetic chance nodes, what fraction of the joint outcomes receive any weight at all, which turns "more samples" into a claim about which part of the chance node was broken.

What happened

On the fixed 64-game development cohort, paired with the earlier chance-sampling study, the three-move search with seven disc samples and six reveal samples beat the same search with one reveal sample by +64,116 points (one-sided 95% bootstrap lower bound +7,475) and beat the frozen four-move reference by +79,115 points (finding-09, development tier; run validity valid, outcome pass). It was statistically indistinguishable from the strongest arm previously measured, the four-move search with seven chance samples, while doing less of the work.

The gain arrived in proportion to how much of the chance node the samples covered. Raising the reveal samples from one to three to six raised the mean score, the lifetime, the clears per move and the reveals per move step by step, and lowered the board occupancy, in lockstep with the fraction of disc-and-reveal combinations receiving any weight. The endpoint clears its statistical bar; each single step along the way sits inside the noise on 64 games, so the claim rests on the ordering of five quantities across three settings together with the significant endpoint. The six-sample three-move arm matches the four-move reference's reveal rate and nearly matches its clear rate: a shallower search reproducing a deeper search's flow profile.

The strength is bought with compute at about the same exchange rate as depth. Score per unit of work falls as the reveal samples rise, as it does when depth rises. And none of it reaches the requirement: every game in every arm still filled its board and ended.

What we learned

The defect has a name. At seven samples every individual distribution was already exact, so the fault was never too few samples or a biased next-disc distribution. The next disc and the reveals were the same random variable in disguise, and fixing that is a two-line change to how one index is computed. Depth and chance quality turned out to be exchangeable: two ways of spending the same budget, with the cheaper one available at a shallower depth.

The improvement is real and it is far from the target. The best arm sustains 2.0447 clears and 1.1423 reveals per move against the 2.400 and 1.400 that indefinite survival needs (finding-09, 64 games); the flow ceiling page has the measurement of how far there is to go.

The open question is whether the two axes compound when used together. The arm that would answer it, depth 4 with two reveal samples, was killed by the runtime before it wrote a game.

Agent contextRecords and provenance
  • Source: finding-09-reveal-sampling, a retained exploratory finding at the development evidence tier for the gameplay arms and pilot for the runtime projections, measured on 2026-08-20. It has no row in the experiment index and no entry in the ledger. Run validity: valid. Outcome: pass, with the caveat that the effect needs six reveal samples to clear noise on 64 games.
  • Namespace approaches/lifetime-objective/reveal-sampling, run runs/RUN-A525-reveal/, build build/reveal-sampling/. No existing file was modified: the frozen reference and the single-knob parameterised search are consumed unmodified through generated copies that differ from the originals by exactly one entry-point line, verified at build time.
  • Seed lease SEEDLEASE-A52-REVEAL = 0xa52500000xa5257fff for CHECK probes and pilots. Cohort for the headline arms: the fixed shared 64-game evaluation cohort 0xa51d10000xa51d103f, 2,000-move cap. These seeds were already read by the earlier chance-sampling study (finding-05) and are development data permanently, so nothing here can serve as confirmation evidence.
Agent contextFull results table

Arms are depth 3 unless stated; N disc samples × M reveal samples; 64 paired games each, corrected 17,000-point Hardcore scoring, 0 censored games, 0 score-decomposition identity violations in every arm.

armmeanmedianmovesclears/movereveals/moveoccupiedwork/move
N=5, M=1 (frozen chance node)305,051259,10089.841.96381.086123.8854,429
N=5, M=3 (control)312,556281,70492.001.98681.111123.54368,518
N=7, M=1 (seven-sample arm)312,327267,27992.271.98491.100123.88156,834
N=7, M=3337,306285,02398.702.00331.111123.811,045,719
N=7, M=6376,442322,859109.452.04471.142323.494,244,020
depth 4, N=5, M=1 (reference)297,327260,41587.161.94891.069724.291,296,034
depth 4, N=7, M=1398,498344,630114.662.05711.154923.154,956,614

The two depth-4 rows are the earlier study's arms on the same cohort, reproduced for comparison and not re-run.

Paired deltas, one-sided 95% lower bounds by percentile bootstrap over whole games, 20,000 resamples: (7,6) − (7,1) = +64,116 [+7,475], 36–0–28; (7,6) − (5,1) = +71,391 [+13,603]; (7,6) − depth-4 (5,1) = +79,115 [+30,242], 35–0–29; (7,6) − depth-4 (7,1) = −22,056 [−89,867], 30–0–34, read as a tie. The two intermediate steps, (7,1)→(7,3) at +24,980 and (7,3)→(7,6) at +39,136, do not clear zero.

Dose-response: from M = 1 to M = 6 the mean score went 312,327 → 337,306 → 376,442 and the fraction of (disc, reveal) combinations receiving any weight went 14.3% → 42.9% → 85.7% in lockstep. Numbered clears rose by 0.0598 per move and gray-disc reveals by 0.0422, with mean occupancy falling from 23.88 to 23.49 of 49 cells. The six-sample three-move arm reaches the four-move reference's reveal rate of 1.1423 exactly and comes within 0.002 of its clear rate.

Work: going from one reveal sample to six costs 27.1 times the logical work per move, and score per unit of work falls monotonically as the reveal samples rise. The (7,6) arm's 4,244,020 work per move is 86% of the depth-4 seven-sample arm's 4,956,614.

Coverage (20,000 synthetic chance nodes): at seven samples every individual marginal is already exact, seven strata over seven equally likely values, and the residual error is in the joint. Reveal samples raise the (disc, reveal) joint coverage 14.3% → 42.9% → 85.7% → 100% at M = 3, 6, 12, but the reveal-by-reveal joint only 14.3% → 26.2%, because all reveals inside one scenario still share the sample index. The measured strength ordering tracks the (disc, reveal) column and does not track the reveal-by-reveal column, a specific, falsifiable attribution of which correlation was the binding defect.

Agent contextValidity, gates and limitations
  • CHECK gates, all before any gameplay: the new search reproduces the frozen reference's chosen column over 50 moves; it reproduces the existing parameterised search's column and logical work over 562 decisions across four configurations with 0 mismatches; and both M = 1 arms reproduce the existing binary's own 64-game artifacts field-for-field, including summed logical work to the unit.
  • Work bounds were computed per configuration and verified never to bind: 0 of 30,865 decisions completed below target depth, busiest single decision at 77% of its bound.
  • Recorded rather than omitted: a depth-4 arm with two reveal samples was launched on the shared cohort and killed by the runtime after about an hour with no games written. It is a partial run, appears in no table, and was authorised by a matched pilot. It is the highest-value open arm, because it is the only way to learn whether the two axes compound. A three-move arm with twelve reveal samples, the configuration that takes joint coverage to 100%, was a deliberate no-run at roughly 5.7 hours of the machine.
  • Limitations the finding states about itself: depth 3 only for the completed arms; the individual dose steps are not separately significant; reveal samples are mostly a decoupling knob and barely touch the reveal-by-reveal joint; 64 paired games with a score standard deviation of 55–62% of the mean; one already-read cohort, so replication on a fresh block is owed; no fixed-time comparison, and the machine carried load averages of 20–55 throughout; and the cache size was raised above the frozen default for the widest arm, a declared deviation that cannot change a decision because the work bound assumes no cache at all.
  • Still open in design: the reveal-by-reveal correlation. A search giving each scenario its own independent stream of reveal draws would attack it directly and has not been built.
Agent contextScoring mode

Corrected 17,000-point Hardcore scoring in every arm, 2,000-move cap, 0 censored games and 0 score-decomposition identity violations. No historical 7,000-point number appears on this page.

RecordsTheories, experiments and results that reference this directory

Claim: Factoring the fair search's chance node into independent next-disc and reveal draws pays at every depth, so applying it on top of the fourth ply raises mean score over the same four-ply search with a single reveal sample by a paired margin whose one-sided 95% whole-game bootstrap lower bound is above zero. The depth-3 gain finding-09 measured (+64,116 with a lower bound of +7,475 from one to six reveal samples) is therefore an increment that adds to depth rather than an alternative way of buying the same thing.

This theory is currently not-supported-as-tested at the public-development (a cohort for deciding what to try next, not confirmation) level.

Claim: A leaf-cost student (the existing 572k-parameter finding-08 NNUE, architecture unchanged) trained on ALL legal siblings per root, with labels that are long-horizon outcome distributions (per-rise hazard vector plus censored restricted-mean lifetime, Kaplan-Meier over K CRN-paired continuations under a fixed cheap public continuation policy) and a within-root pairwise ranking loss on the deployed scalar (KM expected lifetime), achieves within-root discrimination that played-action outcome training cannot provide (coverage) and exact-search-value distillation cannot provide (objective): offline, top-1 agreement with exact D4's argmax >= 0.55 and >= the played-action incumbent + 0.03; deployed as the existing blended leaf, it improves the paired 256-game d4s7 mean with a positive one-sided 95% lower bound without giving back the incumbent's d4s5 gain.

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

It compares factored-chance-fair-search, arms d4 N=7 M=2 and d3 N=7 M=12 against the recorded single-reveal-sample arms on the same seeds (d4 N=7 M=1 = runs/RUN-A51D-s7confirm/fresh-s7.json; d4 N=5 M=1 = runs/RUN-A51D-s7confirm/fresh-s5.json) and finding-09's completed depth-3 ladder (M=1, 3, 6) at the STANDARD (a 64-game paired development cohort) level, using previously-evaluated-development data.

partial run outcome: fail The run was partial and the outcome was fail (public-development (a cohort for deciding what to try next, not confirmation)). Read the result.

valid run outcome: fail The run was valid and the outcome was fail (public-development (a cohort for deciding what to try next, not confirmation)). Read the result.

It compares fast-engine factored reveal sampling against native FactoredSearch (C0 configuration) at the CHECK (mechanics checks only, no games played) level, using no-gameplay data.

valid run outcome: pass The run was valid and the outcome was pass (mechanics-only (checks only, no games played)). Read the result.

resultpartial runoutcome: failtier: public-developmentRS-20260821T181918Z-ea7076a3

The run was partial; the outcome was fail, at the public-development (a cohort for deciding what to try next, not confirmation) level. Of 5 preregistered checks, 3 passed and 1 failed.

Chance-node decorrelation and search depth do not compound; they substitute. The primary arm is complete at 64 of 64 games: depth 4 with seven disc samples and two reveal samples scores 356,548 against the 398,498 of the same search with one reveal sample, a paired -41,950 with a one-sided 95% whole-game bootstrap lower bound of -100,137 and W-T-L 28-0-36, for 4.07x the logical work per move. The gate asked for a lower bound above zero and got a negative point estimate, so the compounding theory is rejected as tested. STATE THE DOSE WHEN QUOTING THIS: two reveal samples raises joint (disc, reveal) coverage from 14.3% to 28.6%, which is a smaller increment than the six samples (85.7%) that first cleared noise at depth 3; at depth 3 the three-sample dose (42.9%) was also not significant (+24,980, lower bound -23,451). This result therefore rejects a doubling of reveal samples on top of the fourth ply, and does not establish that a wide reveal estimator at depth 4 would fail - that arm was never affordable. What the arm does establish is that the depth-4 search is not starved for the thing the extra samples supply. The striking positive finding is an equivalence at near-equal work: depth 3 with six reveal samples costs 4,244,020 work per move and scores 376,442, while depth 4 with one reveal sample costs 4,956,614 and scores 398,498, and the paired delta between them is -22,056 with a lower bound of -89,867 and W-T-L 30-0-34 - two different ways of spending the same budget landing in the same place, which is the same exchangeability the depth factorial shows from the other side. The new arm is not worthless: against the frozen five-stratum depth-4 reference it is +59,221 with a lower bound of +9,134 and W-T-L 37-0-27, so the gain comes from the seven disc samples, not from the reveal samples. Second arm, partial at 32 of 64 games and still running: depth 3 with twelve reveal samples takes joint coverage to 100% and scores -4,495 against the six-sample arm on the 32 shared seeds (lower bound -91,425, W-T-L 15-0-17) and +31,413 against the one-sample arm (lower bound -70,729), so the ladder that ordered with coverage from M=1 to M=6 stops ordering at M=12. Every arm audited 0 decisions below target depth, 0 work-limit events, 0 censored games and 0 score-decomposition identity failures, and the chunk-pooling used to survive interruption was verified to reproduce a single 64-game run field-for-field with identical summed logical work.

Technical recordLimitations recorded with the resultRS-20260821T181918Z-ea7076a3
  • PARTIAL ARM: the depth-3 twelve-reveal-sample arm holds 32 of 64 games (chunks 0 and 1 of 4) and was still executing when this result was written. Every M=12 number here is over those 32 paired seeds, none of them decides its gate, and the arm's 32-game mean is not an estimate of its 64-game mean. The frozen snapshot assessed is runs/RUN-20260821T143541Z-4c4370b6/d3-n7-m12-partial-32games.json; re-pooling the live artifact after chunk 2 will change its bytes.
  • DOSE, NOT AXIS: the depth-4 arm tested two reveal samples (28.6% joint coverage), which is below the depth-3 dose that first cleared noise (six samples, 85.7%). The negative result is about that dose at that depth. A wide depth-4 reveal estimator was not run and remains unmeasured; at the observed 20.2M work per move for M=2, an M=6 depth-4 arm would be roughly another 3x on top and was not affordable on a shared machine.
  • The depth-4 M=2 delta is negative but not significantly negative: the same estimator's one-sided 95% upper bound is +17,541. The honest reading is 'buys nothing measurable for 4.07x the work', not 'harms'.
  • The comparator arms for the M ladder (d3 M=1, M=3, M=6) and the two depth-4 single-sample arms come from finding-09 and from the earlier chance-strata study; they were re-read here from their retained artifacts but have no machine-readable run record of their own, so this result's run records cover only the two new arms.
  • 64 paired games with a score standard deviation of 55-62% of the mean. Effects smaller than roughly 60,000 points are invisible at this sample size.
  • The cohort 0xa51d1000-0xa51d103f was opened by finding-05 and read again by finding-09; it is permanently development data. STANDARD tier, diagnostic only, never a freeze gate and never confirmation evidence.
  • Each arm ran as four sequential 16-game chunks so it could survive interruption. Pooling was verified to reproduce a single run exactly, but chunking does change thread scheduling and wall time, and chunk 1 of the depth-4 arm ran at 8 threads rather than 12 after a load back-off.
  • Work per move is not comparable across arms with different declared cache capacities. The new arms auto-size their cache from their branching factor (960,695 and 346,921 entries) while the recorded comparators declare 60,000; every work figure must be read with its capacity.
  • The experiment record was written after the runs, by a different agent than the one that executed them. The two arms and their launch protocol were fixed in prose in finding-09 and in run-arms.sh before either produced a game, but this is retroactive registration and the amendment on the experiment record says so.
  • All artifacts for this family live under runs/, which is gitignored, so the evidence is not committed with the record. The frozen snapshots and the content manifest under the two run directories are the durable reference.
  • This rejects compounding at the tested dose only. It says nothing about the reveal-by-reveal correlation, which finding-09 identified as untouched by this knob and which no arm here attacks.

Full record →

resultvalid runoutcome: failtier: public-developmentRS-20260821T192140Z-189fe392

The run was valid; the outcome was fail, at the public-development (a cohort for deciding what to try next, not confirmation) level. Of 5 preregistered checks, 3 passed and 2 failed.

SUPERSEDES RS-20260821T181918Z-ea7076a3, which assessed the same experiment while its second arm held 32 of 64 games. Both arms are now complete at 64 of 64 and the run validity rises from partial to valid. The old record remains as committed history and is not edited; this record carries the completed figures and everything below replaces the partial ones. Nothing in arm 1 changed and the direction of arm 2 did not change; only its magnitude did, by about 6x. ARM 1, unchanged and complete: depth 4 with seven disc samples and two reveal samples scores 356,548 against the 398,498 of the same search with one reveal sample - a paired -41,950 with a one-sided 95% bootstrap interval of (-100,137, +17,541) and W-T-L 28-0-36, for 4.07x the logical work per move. The gate required a lower bound above zero, so the compounding theory is rejected as tested. The sign is stable across both cohort halves (-11,082 on seeds 0xa51d1000-0xa51d101f and -72,818 on 0xa51d1020-0xa51d103f), independently confirmed by the agent that completed the runs. The +17,541 ceiling is the load-bearing number: had the axes compounded even at a quarter of the +64,116 the same knob is worth at depth 3, the data would have had to show it. The axes substitute in the strong sense. ARM 2, now complete: depth 3 with twelve reveal samples - the configuration at which (disc, reveal) joint coverage reaches 100% - scores 349,345, not the 356,890 its first 32 games suggested. Against the six-sample arm it is -27,097 with an interval of (-83,807, +31,209) and W-T-L 28-0-36; against the one-sample arm +37,019 (-25,076, +102,426), 30-0-34. THE REVEAL AXIS SATURATES AT M ABOUT 6 AND DOES NOT IMPROVE TO FULL COVERAGE. Read this as saturation, not as a demonstrated regression: the M=6 to M=12 step does not clear zero in either direction, so the data are consistent with the curve being flat from M=6 onward and are not consistent with it continuing to climb at the rate M=1 to M=6 showed. Score, moves, numbered clears and covered reveals all peak at M=6 (85.7% coverage) and fall back at M=12 (100%); only mean occupancy improves monotonically across all four points (23.88, 23.81, 23.49, 23.39). This weakens two SUPPORTING arguments in finding-09 without touching its headline, which rests on its own paired tests and stands: the dose-response is no longer monotone once the fourth point is added, with four of five tracked quantities reversing, and section 2's attribution of strength to joint coverage fails exactly at the 100% endpoint that attribution predicts should be best. finding-09 section 5 should now be read as 'M=6 is a local optimum', not 'more M is better'. Validity controls all pass: 0 decisions below target depth, 0 work-limit events, 0 censored games and 0 score-decomposition identity failures in both arms, and the chunk-and-pool procedure on which every cohort in this family depends was verified end to end by running depth 3 (N=5, M=1) as four 16-game chunks at 1 thread and reproducing the existing 64-game 12-thread artifact field-for-field - 0 mismatches, identical summed logical work of 312,966,881, only per-game wallSeconds differing, which also re-confirms worker-count independence.

Technical recordLimitations recorded with the resultRS-20260821T192140Z-189fe392
  • SUPERSESSION: this record replaces RS-20260821T181918Z-ea7076a3 for the same experiment. That record was written and committed while arm 2 held 32 of 64 games and is left byte-unchanged, because this repository has no precedent for annotating a committed result in place; the supersession relationship is carried here and by the theory record's evidenceRefs list, which is how the afterstate line's superseded results are linked. Quote this record, not the partial one.
  • DOSE, NOT AXIS, for arm 1: the depth-4 arm tested two reveal samples (28.6% joint coverage), below the six samples (85.7%) that first cleared noise at depth 3. The negative is about that dose at that depth; a wide depth-4 reveal estimator was never affordable and remains unmeasured. What the +17,541 ceiling does bound is how much compounding could have been hiding at this dose.
  • SATURATION, NOT REGRESSION, for arm 2: the M=6 to M=12 step does not clear zero in either direction. The defensible statement is that the reveal axis is exhausted by M about 6 and that filling the last of the joint grid buys at most +31k and plausibly nothing. It is not evidence that more reveal samples hurt.
  • No adjacent step in the depth-3 M ladder is individually significant, so the whole M >= 3 region is consistent with one plateau. The M=1 to M=6 endpoint test (+64,116 [+7,475]) is what carries finding-09's positive result, and it is unaffected by this record.
  • The three readings finding-09's Continuation section 16 lists for the turnover - redundant last atoms, variance reduction rather than coverage per se, or 64 games being unable to resolve steps this size - are not separated by this experiment.
  • 64 paired games with a score standard deviation of 55-73% of the mean; the M=12 arm's is 254,059 on a mean of 349,345. Effects below roughly 60,000 points are invisible at this sample size.
  • The cohort 0xa51d1000-0xa51d103f was opened by finding-05 and read again by finding-09; it is permanently development data. STANDARD tier, diagnostic only, never a freeze gate and never confirmation evidence. A fresh-block replication is owed before anything here is promoted.
  • Work per move is not comparable across arms with different declared cache capacities: the new arms auto-size from their branching factor (960,695 and 346,921 entries) while the recorded comparators declare 60,000.
  • Not timing-grade: shared machine throughout, and chunk 1 of the depth-4 arm ran at 8 threads rather than 12 after a load back-off. Scores, moves and logical work are deterministic and unaffected, as the 1-thread-versus-12-thread pooling control demonstrates directly.
  • The experiment record was written after the runs. The arms and their launch protocol were fixed in prose in finding-09 and in run-arms.sh before either produced a game, but this is retroactive registration and the experiment record's amendment says so.
  • All artifacts live under runs/, which is gitignored, so the evidence is not committed with the record; the content manifest and the retained analysis output under the run directories are the durable reference.
  • Nothing here moves the ceiling. The best arm on this cohort remains 398,498 against the 1,050,000 the frozen qualification protocol requires, and every game ended.

Full record →

resultvalid runoutcome: passtier: mechanics-onlyRS-20260824T010000Z-8f3e9b4f

The run was valid; the outcome was pass, at the mechanics-only (checks only, no games played) level. Of 4 preregistered checks, 4 passed and 0 failed.

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.

Technical recordLimitations recorded with the resultRS-20260824T010000Z-8f3e9b4f
  • 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.

Full record →

Agent contextSource files, operational notes and how to reproduce

Directory: approaches/lifetime-objective/reveal-sampling