The scramble length does not make it harder
We were wrong about the scramble. Clarify's generator tangles a solved board with random legal pours. More pours should mean more tangle, which should mean a harder puzzle. The correlation says no.
How the generator works
The recipe in the level generator is simple. Start from a solved board: one color per bottle, nothing mixed. Pick a pour count between 10 and 29, stored as scrambleLen. For each pour, choose a legal move at random and apply it. What comes out is a tangled start the player has to untangle.
The tier table assigns each weekday a difficulty band. Monday gets 3 colors, par 1 to 5. Friday reaches 5 colors with par up to 9. Saturday and Sunday run 6 colors on six-bottle boards. Every tier, whatever the weekday, draws its scramble length from the same uniform 10 to 29 range, which is where the assumption lives, and it is the only knob in the generator that was ever intended to be tuned by hand.
The intuition was straightforward. Twenty-nine random pours should leave a messier board than ten pours, and a messier board should force the solver to explore more states before it finds a solved position, and that was supposed to be the difficulty dial of the whole game. The knob was scrambleLen.
What the solver said instead
The solver runs bounded breadth-first search from the scrambled position. It applies every legal pour and remembers each visited state. It stops the first time it reaches a solved board. The visited count is stored as solveNodes. That is the difficulty measure.
A Monday board takes the solver 28 nodes. The hardest board in the pool takes 575,365. That is a gap of almost five orders of magnitude, spread across 399 levels that the generator was supposed to have tuned.
I pulled all 399 daily levels out of the level data file. I computed the Pearson correlation between scramble length and solve nodes. The number came back negative. A negative correlation means longer scrambles sit with slightly easier boards. At that magnitude the signal is noise. In the scatter plot the points form a flat band. The 10-pour boards and the 29-pour boards sit at the same node counts. No trend.
A 10-pour board that beats a 29-pour board
The contrast is sharpest inside one weekday at one par. Friday, par 6. That group has 26 levels. GEN-fri-5767 was scrambled 10 times, and the solver needed 229,063 nodes. GEN-fri-5784 was scrambled 29 times, and the solver needed 73,856 nodes. Same weekday. Same par. Same six-bottle layout. The shorter scramble produced the harder board, by a factor of three, which is the exact opposite of what the knob was supposed to do.
The pattern holds everywhere you look. Monday par 3 has 38 levels whose scramble lengths span 10 to 29 while their solver costs span only 35 to 182 nodes, so nineteen moves of scramble hide a factor of five in difficulty. Saturday par 6 has 36 levels, scrambles again from 10 to 29, and solver costs from 51,607 to 533,232 nodes, which is a nineteen-move scramble range hiding a factor of ten. The scramble is not resolving the spread. It is just not there.
What actually drives the difficulty
I ran the correlation on the other fields. Color count against par gives 0.62. Bottle count against par gives 0.46. Solve nodes against par gives 0.53. Those are the levers. The scramble is not close.
The reason lives in the mechanics. A random pour into a tangled board is not the same move as a random pour into a nearly solved board. Once the liquid is mixed, a fresh pour tends to undo an earlier pour or to shuffle liquid between bottles that are already mixed, so it redistributes existing tangle instead of adding new tangle, and it does that for the rest of the sequence without ever increasing the distance from solved, which is why the extra pours add nothing to the difficulty at all. Somewhere around 15 to 20 moves the board reaches equilibrium. After that, every extra pour walks around inside the same neighborhood of states and never pushes the board any further from solved, which means the second half of every scramble does nothing. The scramble is wasted motion.
This is not a Clarify quirk. Any generator that scrambles by applying random legal moves hits the same wall, because the state space of a fixed board has a finite diameter, and a random walk saturates that diameter instead of extending it, so the same flat correlation should appear in every pour-and-shuffle puzzle that has ever shipped, and any designer who checks will find the same empty knob. Scramble length sets a lower bound on the distance from solved. It does not set an upper bound. A 29-pour scramble can land five moves from solved if the pours cancel each other out, and a 10-pour scramble can land twelve moves from solved if every pour moves the board the same way, so the real distance depends on the sequence, never on the count. The count is not the puzzle.
Why the generator still works
The shipped generator handles this correctly. Nobody wrote it that way. The par range is the actual difficulty gate. The generator scrambles, runs the solver, reads the optimal move count, and rejects the level if the par falls outside the tier band, so a 29-pour scramble that produces a par-3 board gets rejected for Friday while a 10-pour scramble that produces a par-8 board gets accepted, and the shipped pool is entirely the par gate's output, not the scramble's, which means the knob has never controlled what players actually see. The solver does the filtering. The scramble only hands it a starting position.
The dead-end range in the tier table is a separate gap. The generator writes a dead-end rate of zero into every level with a comment saying the simplified version does not compute it. The target ranges from 0.00 to 0.40 are never checked. That is covered in the previous article. Both gaps point at the same root cause: the tier table carries more design intent than the code enforces.
What I would change
The fix is small. Delete the 10 to 29 range. Set one constant, SCRAMBLE_MOVES, to 20. The current range adds variance to the generation loop and adds nothing to the output distribution, because the par filter discards most of the boards it touches anyway, and every rejected candidate is a wasted solver run, so a fixed length lowers the rejection rate without moving the difficulty curve. One measurement first. The audit report records the par distribution and an all-in-range flag, but it does not record how many candidates the solver rejected, so I would add a per-tier rejection counter before touching anything. If the Friday rejection rate stays the same after the change, the scramble was truly inert. If it drops, the long scrambles were contributing variance, and I would want to understand that first.
The broader lesson is this. The number of random moves in a scramble is not the difficulty of the resulting position, and a solver sees the board, not the history, so two boards with identical layer stacks are identical puzzles regardless of the route that built them, which is why I stopped trusting the knob and started trusting the solver.
This is the second Clarify assumption that has not survived the data. The dead-end rate was designed at 15 to 35 percent and shipped at zero. The scramble was designed as a difficulty knob and shipped flat. Next generation keeps the par gate, makes the scramble a constant, computes the dead-end rate for real, and adds the rejection column to the audit, and then the tier table finally says what the levels are.