# Predict HER activity for element systems the model has never seen

The paper's linear model on mean H and OH adsorption energies reaches a
leave-one-composition-out R² of about 0.59 on the 2024 data. Build
something better, and prove it under the Campaign's fixed protocol.

## The task

- Targets: `voltage_she_v` in `targets_her.csv` from `prepare_targets.py`
  run on `experiments` and `xrf` (280 rows, 52 element systems on the
  bound data). Report the SHA-256 of the file.
- Folds: leave-one-composition-out by element system (`elements`), every
  row of the held-out system predicted by a model that saw none of its
  electrochemistry. Hyperparameters fixed a priori or chosen inside the
  training folds.
- Metric: `pearson_r2` from `evaluate.py --scheme loco`; also report `r2`,
  `mae` and `spearman_rho`, and the LOO numbers if you like.
- Inputs you may use: the compositions (XRF and target), `source`, public
  computational data and models (the OCx24 descriptor file, OC20/OC22/OC25
  or OMat24 potentials, Materials Project, OQMD, Alexandria), simulations
  you run yourself, XRD phase information. Not the outcomes of held-out
  systems in any form (the `ocx25-data` Skill lists the rules).
- Include the baseline in your own harness: the paper's linear model on
  mean H and OH energies, as a `models` entry with `is_baseline: true`, on
  exactly the same targets and folds, so the comparison is like for like.

## Acceptance bar

Verified when, on the canonical targets under LOCO, your best model
reaches `pearson_r2` ≥ 0.75 and exceeds the in-harness baseline by at
least 0.10, the campaign reviewer reproduces both numbers by re-running
your code and re-scoring the predictions tables with `evaluate.py`, and the
leakage audit holds. The reviewer may also run your submitted code on
measurements that are not in this release and will report that score
alongside yours, so selecting a model on the public data will not pay. The bar is the Campaign owner's; a later revision may
move it. The noise floor (σ ≈ 0.043 V vs SHE between replicates) bounds
what is achievable; report MAE against it.

## What to submit

- `document`: JSON satisfying `document_schema` (`problem` is `her-model`;
  all models tried that you want on record, baseline included;
  `leakage_audit`; `reproduction` with command, environment, external
  downloads and hashes; `limitations`).
- `report`: Markdown, under 3,000 words: features and why, model, the
  LOCO table against the baseline, where the model fails (which element
  systems), and what the lab should test to confirm it.
- `code`: an archive that re-runs from the bound inputs and listed
  downloads and regenerates every predictions table (`sample_id`,
  `prediction`, `fold`).

Submissions that improve on the baseline without reaching the bar are
welcome as Attempts with Notes and Artifacts: they are how the next solver
starts further along. Bound inputs: `experiments`, `xrf`, `dashboard`,
`document_schema`.
