approaches/constructive-reservoir/constructive-spectrum/README.mdxMDX172 lines · 8.8 KB
---
title: Constructive spectrum
family: constructive-reservoir
summary: Plans a five-drop cycle toward a target board with spread-out heights, reachable covered discs, and shared triggers. It clearly beat the one-move-ahead reference.
status: completed
evidence: ledger-recorded
reads: public
kind: strategy
technique: constructive-planning
featured: true
---

## The problem

A [one-move-ahead search](/approach/fair-expectimax/reference) asks which
column scores most right now. But a chain that clears a dozen discs is assembled
several moves before it fires: the high-numbered discs have to be stored in
columns whose heights will still be right when the chain is triggered. A covered
row rises after every five placed discs and changes every column's height at
once, so a shape that is worth nothing on the move it is built can be worth a
great deal two rises later, or can be worth nothing then either. Whether
steering toward a described board shape across a whole rise cycle is worth more
than taking the best-scoring column now had not been measured.

## Proposed solution

Carry an explicit picture of a healthy board and steer toward it. The picture
has four parts: columns at a variety of heights rather than a flat wall, so
discs of many different numbers have somewhere useful to land; gray discs that
can still be reached and opened rather than buried; discs sitting on top of each
column that leave the discs beneath them playable; and stored high-numbered
discs whose trigger conditions coincide.

A trigger key is the pair (which disc arrives, which column it goes in). Two
stored discs that share a key are worth much more than two that do not, because
the player only ever gets one disc at a time. The
[family page](/approach/constructive-reservoir) shows the underlying shape on a
real board: a stack that is inert until the rise makes its run the right length.

The target is deliberately asymmetric. Carrying less load than the reference
motif is safe and carrying more incurs rapidly increasing debt, and reservoir
size and trigger coverage stop paying once they match the motif, so the planner
earns nothing for filling the board.

Everything the planner reads is public: the visible board, the visible next disc
and the position in the five-drop cycle. The oracle curriculum appears in this
source only to measure what the target motif looks like, and the ledger and the
source header both record that no oracle action, future disc, reveal randomness,
seed, score, level, move index or history enters the deployed policy.

## How it works

1. Run a conventional three-ply search on the public position and keep a
   shortlist: its best column, plus the runner-up if it is within 2,500 utility
   units. If only one column qualifies, that column is played and no planning
   happens.
2. For each shortlisted column, simulate forward to the end of the current
   five-drop cycle plus one further build cycle, with a bounded beam and seven
   sampled chance outcomes at each step. The horizon adapts between 3 and 7
   moves depending on where in the cycle the position sits.
3. Score the end of each simulated line by the target picture, in score-like
   units so that the two rise bonuses inside the horizon still count, rather
   than by the points collected along the way.
4. Play the shortlisted column with the best average. The output at every
   position is one column.

## What happened

Against the one-move-ahead fair search on 32 paired games, the planner averaged
266,695.500 points against 157,198.063 and won 25 of the 32 on score and
survival together (completed, ledger-recorded,
[ledger](/docs/research/history) section "Explicit reservoir and
constructive-cycle policies"). It also survived longer and cleared and revealed
more per move. That is the strongest retained result in this family.

It did not displace the four-move search. Three follow-ups were run and all
three were rejected. Letting the planner override the four-move search on its
top two near-equal columns switched moves often enough to lose its fitting
quartet outright. Stretching the continuation from seven moves to twelve
improved the means and missed the frozen robustness gate, and going on to
seventeen made things much worse before twenty-seven partly recovered.
Admitting the twelve-move answer only when it dominated the seven-move answer on
a shared scenario panel improved the means again and produced fewer joint wins
than its gate required. Neither of the last two opened a screen, so none of this
reached a confirmation cohort.

## What we learned

Planning across a complete rise cycle carries information a one-move policy does
not have, and 32 paired games was enough to see it. The same signal pushed into
a stronger search as an override damaged it, through the failure mode this
family keeps producing: frequent switching on unstable comparisons between
near-equal columns.

Longer continuations did not become more accurate by being longer. Seven moves
to twelve helped, twelve to seventeen hurt badly, and twenty-seven only partly
recovered, so a sampled continuation policy has a length past which its own
noise costs more than the extra look-ahead buys. The four-game fitting
comparison behind the depth-4 override is a quartet, wide enough to see a
deficit that large and nowhere near wide enough to certify its size.

The direction the [strategy landscape](/docs/strategies) records from here is to
make multi-cycle comparison between sibling columns affordable and stable:
cheaper verified continuations, common random futures shared across siblings,
admissible early elimination. Whether any of that makes the constructive signal
safe inside a four-move search is the open question.

<AgentContext summary="Records and provenance">

Records: [experiment index](/docs/research/experiment-index) "Constructive and
reservoir policies", rows for `constructive-spectrum.cpp` (completed), the
constructive D4 shield, the constructive horizon scale and the H12 risk gate
(all rejected); [ledger](/docs/research/history) section "Explicit reservoir and
constructive-cycle policies (rejected)", which records the completed base
planner and the three rejected variants together.
[`audit-03`](/docs/exploratory/audit-03-claim-arithmetic) rows 4421–4441 checked
these figures as internally consistent.

Frozen configuration, from the source: analysis seeds `0x3d690000``0x3d69003f`
(64 games), Stage A seeds `0x3d69c000``0x3d69c01f` (32 games), 1,000-move cap,
7 chance samples, horizon 3–7, tactical depth 3, shortlist of 2, near-tie margin
2,500, centre-first column order `3,2,4,1,5,0,6`, policy seed `CSP1`, 30-minute
wall limit and 256 MiB RSS limit. The horizon-scale and risk-gate variants reuse
that exact configuration and change only the one thing named. The depth-4 shield
uses the reference full-width fair-D4 root with five chance strata and returns
exact depth-4 whenever the shortlist is a singleton.

Historical source hashes are recorded in the ledger; the
[reproducibility guide](/docs/reproducibility) warns that the tree was
reorganised after those hashes were frozen, so they intentionally no longer
match current bytes.

</AgentContext>

<AgentContext summary="Full results table">

| Run | Games | Candidate | Comparator |
| --- | ---: | --- | --- |
| Stage A | 32 | 266,695.500 / 79.500, 25 joint wins | fair D1 157,198.063 / 49.875 |
| Depth-4 shield, fitting | 4 | 283,286 / 83.750, 37.0% switches, 1 pair won | exact D4 372,870.500 / 106.250 |
| Horizon ablation | 32 | H12 299,730.563 / 88.344, 16 joint wins | H7 258,223.938 / 77.219; H17 202,634 / 61.969; H27 261,633 / 77.938 |
| H12 Pareto risk gate | 32 | 302,114.906 / 89.281, 286/918 switched, 17 joint wins | H7 254,541.344 / 76.344; 20 wins required |

Scores are mean points per game and mean moves per game. The H12 Pareto risk
gate is coefficient-free: it accepted the 12-move answer over the 7-move one
only when it dominated on mean return, lower-quartile return, terminal count and
flow across a shared 21-scenario panel.

</AgentContext>

<AgentContext summary="Validity, gates and limitations">

The four-game depth-4 fitting comparison is a quartet, not a cohort: four paired
games is enough to see a deficit that large and nowhere near enough to certify
its size. The 32-game Stage A comparisons are screens.

The horizon ablation's frozen robustness gate failed at H12 despite the better
mean, on 16 joint wins. The H12 Pareto risk gate switched 286 of 918
disagreements and produced 17 joint wins where 20 were required. Neither of
those two experiments opened a screen. Nothing here was measured on the
protected or final cohorts, which remain unopened.

</AgentContext>

<AgentContext summary="Scoring mode">

All four runs are corrected 17,000-point Hardcore results, and
[`audit-03`](/docs/exploratory/audit-03-claim-arithmetic) checked them for
internal consistency. No historical 7,000-point figure appears on this page, so
nothing here is compared across scoring modes.

</AgentContext>