TOOLS.
1. A persistent Python kernel (CPU, no internet; {{libraries}}): /model holds the weights (read-only), /practice the practice data (read-only), /work is yours. Defined: NAMES, load(name) (float32 tensor: your edit if any, else the original), load_original(name), save_edit(name, tensor), drop_edit(name), edited(). Reply with one ```python block; the value of its last line is shown. Up to {{run_seconds}} s and {{run_memory}} per run, output cut at {{output_cut}} characters, at most {{max_runs}} runs.
2. {{practice}}
3. A forward-pass tool with a budget of {{passes}} passes. Reply with one ```forward block containing {"model": "original", "edited" or "both", "items": [practice ids] (optional: all of them), "activations": [module names] (optional)}. "both" runs the unedited and your edited weights on the same items and reports the paired score difference (edited - original) with its standard error. Results are in /work/fwd_<k>/ (with "both": /work/fwd_<k>_original/ and /work/fwd_<k>_edited/): scores.json maps item ids to scores, outputs.npy holds the network's outputs with rows in the order of your request, and with "activations" act_<module>.npy holds each listed module's output, in the same order. The modules are: {{modules}}.
 A pass costs the same at any size and its waiting time does not count. Failed requests are not counted, and a request identical to an earlier one with unchanged edits is refused without cost.
