engineering/uhvdc_receiving_end_secure_dispatch - reference output and evaluation dependencies

expert_output/output/        the expert plan (plan/D1..D3/*.csv) and its method report, i.e. what an agent delivers
expert_output/grader_report.json   the grader's report on it (score 1.0, every part passed)
Time rule (applied by evaluation/main.py evaluate()): final = max(0, plan score - 0.01 x started minutes of the run);
the run clock is the host time from the end of start() to the call of evaluate().
reference/                   hidden data staged only for evaluate(): study/ (pristine copy of the study data) and
                             expected.json (expert plan cost, cost tolerance, weights,
                             no free minutes, penalty 0.01 per started minute)
evaluation/                  main.py and task_card.json of the ALE task, scripts/grader (grade.py + the operator's
                             checker sdgrid), env/steps-2.3.0 (image installer: STEPS 2.3.0 built from GitHub commit
                             4f380e8, stepspy, numpy/scipy/pandas/highspy)
reference_solution/          how the expert plan was made: refsched/ (STEPS sampling of the frequency-security
                             surrogate, fit, day MILP with HiGHS, AC stage, verification loop), run_reference.sh (the
                             whole workflow on the VM), build/ (scenario and data builders), tests/ (weaker plans,
                             negative controls, docker end-to-end test)
evidence/                    results of the local tests: calibration.json (weaker plans graded), negative_controls.json,
                             zero_score_controls.json (one file of one day missing or malformed -> grader score 0.0),
                             e2e_report.json (grader report of the plan made by run_reference.sh from scratch in an
                             offline Ubuntu 22.04 container; e2e_reference_workflow.log and e2e_freq_model.json are
                             that run's log and surrogate), e2e_replay_report.json (expert plan graded in the container),
                             e2e_missing_file_report.json (expert plan with one file removed, in the container: score 0);
                             v2_integrity/ (runtime-integrity controls through evaluate(): 10 of 10 as intended);
                             v2_time_rule/ (expert plan under the time rule: 1.0; two Claude Opus runs:
                             calibration_v2.json, their timing and grader reports)

Grade a plan locally (needs STEPS / stepspy and numpy, scipy, pandas, highspy):
  python3 evaluation/scripts/grader/grade.py --study reference/study --expected reference/expected.json \
      --plan <output>/plan --work /tmp/w --report report.json --jobs 8 --skip-integrity
  (the runtime check needs the signed baseline that start() takes on the VM; see evaluation/main.py)
