# QWAVE stage two — independent fixed-model evaluation

Status: design proposal, not an executed independent review

## Objective

Evaluate the final stage-one wavefunction with parameters frozen and freshly initialized Monte Carlo chains
Separate numerical agreement from independent researcher identity
Never treat training energy averages as an independently evaluated energy

## Frozen evidence

Before evaluation select the final training iteration by policy rather than the lowest noisy energy
Freeze the geometry, Hamiltonian, architecture, floating-point policy, parameter archive hash and resolved package versions
Use the numeric-only parameters archive and JSON tree rather than loading an untrusted upstream pickle checkpoint
The website must continue treating uploads as data and must never execute uploaded Python or deserialize pickle payloads
Run downloaded model data in an isolated resource-limited evaluator

## Required evaluator implementation

Reconstruct the exact FermiNet architecture from an allowlisted configuration
Load numeric parameters with pickle disabled and verify their shapes and finite values
Discard optimizer state and training walkers
Take an explicit evaluation seed as a command-line argument and record it
Initialize new walkers, equilibrate with the fixed model and retain burn-in diagnostics
Adapt the proposal width only during equilibration then hold it fixed for production sampling
Compute unclipped local-energy values for reporting while retaining the exact electronic and nuclear energy conventions
Record step, chain identity, energy, acceptance and any non-finite values
Abort on invalid values rather than silently filtering them out
Hash model parameters before and after evaluation and require equality

## Why the upstream inference switch is insufficient by itself

Pinned source: c4312c315dda1c5728994ba89629744f71c6eb66
https://github.com/google-deepmind/ferminet/blob/c4312c315dda1c5728994ba89629744f71c6eb66/ferminet/train.py
https://github.com/google-deepmind/ferminet/blob/c4312c315dda1c5728994ba89629744f71c6eb66/ferminet/checkpoint.py

The none optimizer disables parameter updates but checkpoint restore also restores walker positions
The burn-in conditional uses t_init before the later inference reset to zero
Deterministic mode hardcodes seed 23
Checkpoint loading permits pickle objects
Therefore merely setting optimizer to none is not a fresh-chain independent evaluation protocol
A dedicated evaluation runner should expose the seed, initialize new walkers explicitly and retain only the frozen parameters

## Initial pilot settings to preregister

Keep 256 walkers to match the engineering pilot
Use two evaluation seeds distinct from training seed 23, for example 104729 and 130363
Start with 1000 equilibration iterations and 5000 production iterations with 10 Metropolis steps per iteration
These are initial budgets rather than a guarantee of equilibration or statistical precision
Run a short throughput measurement first and set a wall-clock cap within the remaining rental period
If diagnostics fail or precision is inadequate, report inconclusive and revise the next registered evaluation instead of claiming reproduction

## Statistical report

Keep per-chain information and assess both within-chain autocorrelation and between-chain variation
Estimate standard errors with justified blocking or spectral estimators and state the effective sample size method
Check block-size sensitivity and require enough blocks for the stated interval
A proposed engineering target is a standard error no larger than 0.001 hartree per evaluated model, subject to a prespecified compute budget
This target is not a chemical-accuracy claim and excludes ansatz, optimization and physical approximation error
Compare fresh-seed estimates using their combined uncertainty and report both intervals and the absolute difference
Do not tune acceptance tolerance after seeing the outcomes
The STO-3G PySCF FCI value is a finite-basis reference and must not be used as the exact continuous-space energy

## Independent review workflow

First validate evaluator mechanics on the same machine and label it as internal QA
Then transfer frozen evidence to a separate reviewer using a separately provisioned environment
The reviewer records package versions, GPU model, seeds, runtime, sampling diagnostics and raw outputs
The project owner verifies reviewer identity, expertise and conflicts before granting the reviewer wallet permission
The reviewer publishes reproduced, needs revision or unable to reproduce with reasons and limitations
Different wallet addresses or separate processes do not establish independent researchers

## Acceptance gates

1 Parameter round-trip and hash preservation pass
2 No optimizer updates occur during evaluation
3 Fresh seeds and walker initialization are demonstrated
4 Burn-in and uncertainty diagnostics are retained
5 Two internal evaluation runs are compared without training-log contamination
6 A separate researcher independently executes and signs the assessment
7 The platform links the report and raw artifacts to the immutable submission

## Budget and completion boundary

Do not start another paid rental automatically
Use a small internal validation within the current rental only after the stage-one evidence has been backed up
An internal evaluator test can complete software validation but cannot complete the external scientific review gate
