# Methods for v2026-07-15

This release was generated with `python scripts/generate_research_release.py --release-id v2026-07-15 --as-of 2026-07-14 --published 2026-07-15` from the source hashes in `manifest.json`.

## Scope and cutoff

Daily-history calculations include only dates on or before 2026-07-14. The generator refuses a cutoff later than the last date completed everywhere in the world. Dated difficulty rows omit the answer word, one-slot pattern, and repeated-letter identities. No release artifact contains a date-to-answer mapping.

## Opener benchmarks

Six-turn columns use the captured 2,354-answer simulation pool and the normal-mode `expected-remainder-candidates-plus-top-500-v1` continuation policy. Mean turns and volatility cover solved games; win rate covers all simulated answers. First-turn partition columns separately use the 2,358-answer working pool. They are policy-dependent benchmarks, not proofs of globally optimal play.

## Difficulty

Solver pressure combines the mean candidate bucket left by CRANE, SLATE, and ADIEU; replay-path length; largest one-slot family size; and number of repeated letters. Missing replay paths use a disclosed neutral three-turn input. Ties receive midpoint percentiles within this release.

## Trap families and pairs

Trap probes search the 2,500 provenance-bound heuristic splitter rows plus family members absent from that set. Candidate-only recommendations are useful constrained benchmarks but are not a reconstruction of every possible Hard Mode history. Pair metrics evaluate all 31,125 unordered pairs among 250 selected, vocabulary-screened openers. They measure a fixed two-word joint partition and are not an adaptive game-tree simulation.

## Formats

Every tabular dataset is available as CSV and JSON. Parquet is intentionally not emitted because the project has no Parquet writer dependency; adding a large optional runtime solely for this release would make the pipeline less reproducible.
