# New-environment adaptation/generalization study

Core baseline: `e60c90a1121209969da7b80cf1ea0f39a57a61f0`. Protocol: `b32c4f5d7156cfed1bccdb248f778b6a73d871864073dd08cbea178d2aec1d6c`.

## Acquisition and frozen design

Nine genuinely new public USGS patches; total recorded response bodies: 1,569,318 bytes (including metadata/HTTP errors).
Raw F32 TIFFs, full TIFF tags, requests, metadata, hashes and split coordinates are in `../../data/terrain_holdout/manifest.json`.
The frozen design predates all downloads and episodes. No location replacement or synthetic substitution was used.
The service and TIFF omit vertical-unit metadata: metre elevation values are documented by archived USGS 3DEP source-product XML (altunits=meters). Per-mosaic-item datum remains unresolved.
Two validation stops while locating unit evidence and two HTTP 404 documentation lookups are preserved in acquisition records; all nine TIFF requests succeeded.
Output pixel spacing 100/31 m is not native resolution or accuracy; per-patch normalization can amplify small physical elevation variation.

![New terrain patches](figures/terrain.svg)

## Mission, selection, and denominator

Time-limited planar surveying: full nominal 100 steps (35 s), limited time 40 steps (14 s); otherwise identical six-drone nominal settings.
Three finite guarded candidates; no deep learning. One seed per development location, 16 seeds per held-out location/horizon. Seeds and geographies are disjoint between splits.
Planned 516; attempted 516; successful 516; failed 0; unsafe successful 33; pending 0.
Failed attempts are not certified safe and do not become zero RMSE. Complete means attempted, not necessarily successful.

Frozen choice: **guarded_early**; eligible: **True**.
Portable `selection.json` contains parameters, base config, data/source/runtime identities and the complete candidate audit.

| Candidate | Train RMSE | Train safe | Validation RMSE | Validation safe |
|---|---:|---|---:|---|
| guarded_default | 0.185768 | True | 0.158757 | True |
| guarded_early | 0.170830 | True | 0.125830 | True |
| guarded_frontier | 0.170307 | True | 0.162453 | True |

## Held-out result

**Promotion: NOT PROMOTED.** Held-out complete: True.
Promotion requires clean selected/lawnmower safety and a strictly negative Bonferroni one-sided paired RMSE upper bound in **every** location/horizon, plus eligible development selection and all planned test attempts.

| Location | Horizon | Selected RMSE | Lawnmower RMSE | Paired delta | Upper bound | Safety pass | RMSE pass |
|---|---|---:|---:|---:|---:|---|---|
| utm13_e350000_n3800000 | nominal_full | 0.113533 | 0.116816 | -0.003283 | 0.020424 | True | False |
| utm13_e350000_n3800000 | limited_time | 0.207713 | 0.162240 | 0.045474 | 0.065593 | True | False |
| utm13_e600000_n4550000 | nominal_full | 0.112852 | 0.104824 | 0.008029 | 0.035310 | True | False |
| utm13_e600000_n4550000 | limited_time | 0.243536 | 0.191369 | 0.052167 | 0.067910 | True | False |
| utm13_e650000_n5200000 | nominal_full | 0.104342 | 0.117776 | -0.013433 | 0.024155 | True | False |
| utm13_e650000_n5200000 | limited_time | 0.219493 | 0.180647 | 0.038846 | 0.056829 | True | False |

![All held-out policies](figures/rmse.svg)

![Paired differences](figures/paired.svg)

## Scope, oracles, and reproducibility

All comparison cells, four comparator paired differences, seed differences, RMSE in normalized and physical DEM units, switch counts, observed/evidence coverage, energy, and safety denominators are in `summary.json`; every attempted row is in `results.csv`.
Uncertainty is within-location/condition paired-seed Student-t inference, with unadjusted descriptive t95 intervals. Only the six lawnmower upper bounds use the predeclared Bonferroni rule. There is **no pooled-seed geography CI** and no claim of US-wide terrain generalization from three test locations.
Guarded uses coordinator evidence and ignores reward. The old adaptive Lloyd bandit uses oracle evaluation reward including truth-derived gain. Projected separation uses true state and sampled wind. This is not real-flight validation; DEMs are not risk/ecology/obstacle maps.
`source_snapshot/` contains this study and imported project dependencies. `protocol.json` pins resolved simulator defaults, source/data hashes and Python/NumPy/SciPy/Pillow/platform versions. Compressed full traces support repeated safety audit on exact resume. Error jobs remain checkpointed, not automatically retried.
Run `venv/bin/python -B -m studies.adaptation_generalization.run --max-new 0` from the repository root for offline exact verification and deterministic export. See `../../docs/ADAPTATION_GENERALIZATION_STUDY.md` for methods.
All assets are static and site-ready; existing site files were not modified. Hash seals detect corruption, not malicious re-signing; the local freeze is not external preregistration.
