Drop7 Research
approaches/heuristic-search/tunneling/README.mdxMDX111 lines · 5.7 KB
---
title: Tunneling
family: heuristic-search
summary: Dig a channel down beside the tall side of the board so that the dangerous gray discs high up can actually be reached and opened.
status: completed
evidence: task-record only
reads: public
---

Dig a channel down beside the tall side of the board so that the dangerous
gray discs high up can actually be reached and opened.

<EvidenceLabel status="completed" evidence="task-record only" reads="public" />

## The intuition

A [covered gray disc](/learn/glossary) only opens when a numbered disc clears
right next to it. A gray disc sitting high on a tall stack, walled in by other
discs, therefore has nothing that can reach it, and every [rise](/learn/glossary)
pushes it higher and adds seven more underneath it. Human players describe the
answer as *tunneling*: keep one column low, so its wall of neighbours is
exposed and you have somewhere to attack from.

The lab turns that picture into two claims that a program can measure:

- A gray disc's danger grows **quadratically with its altitude**, and a gray
  disc on the left or right edge is worse still, because it has one fewer
  horizontal direction from which it can be attacked.
- A low column earns credit only for the covered cells that can actually be
  reached from it. A jagged wall of *numbered* discs earns nothing: the source
  comment is explicit that generic board roughness is not the point.

The same file adds a small credit for stacking repeated 5s, 6s and 7s in a
still-live column, on the theory that each addition advances all of them toward
the same vertical trigger.

## How it works, step by step

1. **Read the public position** — visible board, visible next disc, rise clock.
2. **Score the board's tunneling shape.** Six features: covered-disc altitude
   risk, edge-covered altitude risk, cliff access to covered cells, edge cliff
   access, and two high-number cohesion terms.
3. **Score the move itself.** Five transition features that pay for what the
   move *did*: committing a high number, extending a trench, cracking a covered
   disc high up, revealing one, and damaging a cover on the edge.
4. **Add the result to the ordinary hand evaluator** as a residual, scaled by a
   fixed constant, and use that sum as the value inside a short
   [rollout](/learn/glossary) search over sampled futures.
5. **Play the best-scoring column.**

## What happened

Only half the idea survived its own testing, and the code records which half.
The **transition** bonus — paying for damage actually done to high or edge
covers — was supported by paired validation and ships switched on at a quarter
weight. The **state** residual (scoring the standing shape of the board) was
not supported, and ships at weight zero: available for ablations, off by
default.

As a whole policy it worked in the sense that it beat the comparator it was
built against, and did not work in the sense that mattered: it came nowhere
near the million-point target, and it never displaced the depth-4 reference
search.

<TechnicalDetails title="The technical record">

The [experiment index](/docs/research/experiment-index) records this lab as
**completed, task-record only**: *"a 64-game comparison improved the open-loop
baseline, but did not approach qualification."* A task-record-only label means
the outcome is reported in a research conversation and has never been promoted
into the [experiment history](/docs/research/history); no artifact, cohort
listing, or per-game output is retained here. **No score, move count, or margin
for that 64-game comparison exists in any retained record in this repository**,
so none is quoted on this page. The comparator was the
[open-loop beam](/approaches/heuristic-search/open-loop), which the index
itself classifies as support-only.

Repository-verified from the source: `src/core/typescript/tunneling-heuristic.ts`
defines six state features with weights −45 (covered altitude risk), −65 (edge
covered altitude risk), +90 (cliff access), +110 (edge cliff access), +240 and
+180 (high-number cohesion), and five action features with weights +160, +200,
+100, +180 and +120. `DEFAULT_TUNNELING_STATE_SCALE` is `0` and
`DEFAULT_TUNNELING_ACTION_SCALE` is `0.25`, with the comment: *"Paired
validation supported the transition bonus, but not the state residual."* The
lab `main.ts` compares the `combined` and `tunneling` profiles through the
shared rollout solver, and the evaluator is also reachable from the open-loop,
gray-throughput and sparse-expectimax labs.

The evaluator reads only the visible board, next disc and rise clock. It is a
public-information policy.

</TechnicalDetails>

## What this taught us, and what is still open

- **Reachability is a real feature and standing shape is not.** The one
  durable output of this lab is the asymmetry between its two halves: paying
  for cover damage that a move actually achieved held up, while scoring how
  tunnel-shaped a board merely *looks* did not. That is the same lesson the
  strategy catalog draws from static board potential in general — similar
  looking boards can have very different futures.
- **The human hypothesis behind it is still untested.** "Attack the high
  covers, and watch the edge columns" comes from an experienced player's
  strategy notes, which the catalog labels explicitly *anecdotal*. Testing it
  properly is a separate lab,
  [edge priority](/approaches/heuristic-search/edge-priority), which has no
  located result at all.
- **What was ruled out** is nothing. This lab produced a positive comparison
  against a weak comparator with no retained numbers. What would make it
  evidence is a paired, whole-game comparison against the unchanged depth-4
  reference on seeds disjoint from anything used to pick the 0.25 scale.