The SpectrumNet session is ready to start. It shows as a chip, **"Train on SpectrumNet km-scale radio maps (PoC)"**; one click starts it in a fresh worktree. Nothing has been downloaded yet; the new session does that first.

Its instructions cover:
- **Data:** download only the two samples you approved, DenseUrban and OrdinaryUrban maps plus their building and terrain files, into `data/spectrumnet/`. It will report the size of the full Google Drive set and ask before pulling it.
- **Checks before training:** the pixel encoding, the noise floor, pixel size, and whether the transmitter is really at 1.5 m. It will also measure coverage by distance in the same rings as our convergence study, so the numbers line up. Any wrong assumption gets written up in `docs/research` before it continues.
- **Training:** if the data checks out, train the same small U-Net at 3.5 GHz with 1.5 m receivers. Then run it on our 2 km mosaic and compare far-field coverage against the tracer, Sionna and the capped U-Nets.
- **Project rules:** everything goes through committed code with the commit hash recorded, nothing secret or from `data/` is committed, and no CloudRF requests.

On keeping data and results with code:
- Each experiment's code goes in `rcm_ml/` and `scripts/`, with results committed under `runs/<experiment>/` and a write-up in `docs/research/`. For this one that's `runs/spectrumnet/` and `docs/research/08-spectrumnet.md`.
- The raw dataset itself can't be committed, because the task rules keep `data/` out of git. Instead a committed download script (`scripts/get_spectrumnet.sh`) can recreate it.

I've saved that convention to memory so later sessions follow it too.