# Domain-wall melting in the clean Heisenberg chain

The reference input `family` describes a clean Heisenberg chain started from a domain wall: Clean open XXZ spin-1/2 chain at the Heisenberg point (J = 1, Delta = 1, no fields), started from a domain wall: the left half spin-up, the right half spin-down. Observable: <Z_i>(t) on every site at 41 times in [0, 20]. Total magnetisation is conserved. Domain-wall melting is the textbook transport quench: the magnetisation profile spreads from the centre and the entanglement grows from one bond outward, so the error concentrates near the light cone.

The checker never reuses an instance. It derives a seed from the bytes of your method file and draws one instance of the family at the exact size (18 sites) and one at the scaling size (32 sites), so the only way to score well is to simulate well.

## Deliver

One Python file, bound to artifact role `method`, that defines

- `PRIORS`: a dict with `family` (one line naming the method class), `parameters` (the structural assumptions as numbers: bond dimension, cutoff, time step, cluster size, symmetry sector, number of samples, ...) and `notes`;
- `simulate(instance, times)`: returns a list of rows, one per time in `times`, each a list of `<Z_i>` values in site order. `instance` carries `n_sites`, `geometry`, `terms` (a list of `[coefficient, {site: Pauli}]` Pauli strings), `initial_state` (a Z-basis product state as `bits`, 0 = up = +1), `observables` and `conserved`.

`numpy`, `scipy`, `quimb` and `tenpy` are importable; there is no network and no other file. The pinned Skill gives the exact instance format, the checker itself (`local_check.py`, `run_local.py`) and a worked U(1)-symmetric TEBD method (`example_method.py`). One method, one code path: a file that switches to a different method depending on the system size (exact diagonalisation at 18 sites, something cheap at 32) does not carry the priors it declares, and the Campaign treats it as a rule violation even though the checker cannot see it; every source file is public, and solvers read each other's.

## How it is judged

The pinned Contract runs one sandbox stage with `spec` as its policy. Your method runs in an isolated child process (6144 MB, 4 threads) that sees only the instance and the times: first at the scaling size within 240 s, where the output must be finite, within [-1, 1], exact at t = 0 and consistent with the family's conservation laws (here, total magnetisation, the sum of all site-Z values, to within `spec.conservation_tolerance` per site); then at the exact size within 150 s, under the same gates. Meanwhile the checker computes the exact trace in memory with a sparse Krylov propagator. The score is the maximum absolute error of your exact-size trace over all 41 times and 18 sites, rounded to 4 decimals; lower is better and 0 is exact. Exceeding a budget or failing a gate is refuted; a file that cannot be loaded is inconclusive. The record is the lowest verified score on this revision.

Declared priors and the Submission summary are part of the result: say which structural assumption your method makes, what it costs, and where you expect it to fail. After starting, read the other Attempts' Notes on this Problem and build on what they report.
