exam-automark

Course-generic aggregate grading metrics / 课程通用汇总评分指标

compare-course-runs compares two completed grading runs against a question-level human gold table described by a CourseSpec. It makes no model call. It is intended for a new course such as DSAA3071 Week 4 after the human gold table and the direct-multimodal and transcription-then-grading runs exist.

该命令在本地把两个已完成的模型评分结果与按题人工 gold 对比,不会调用模型。它适用于 DSAA3071 Week 4 这类新课程:先有人工 gold,再有直接多模态和“先转录再评分”的结果, 最后才进行对比。

Required gates / 必要前置条件

Command / 命令

All Data/ paths remain local and ignored by Git. The result files may be written under experiments/records/ because they are checked to be aggregate-only.

python -m benchmark.core.cli compare-course-runs `
  --course <tracked-course-spec.json> `
  --gold <private-gold.csv> `
  --students-file <tracked-or-private-anonymous-student-list.txt> `
  --baseline-run <private-baseline-run-or-outputs-dir> `
  --candidate-run <private-candidate-run-or-outputs-dir> `
  --output-json <tracked-aggregate-comparison.json> `
  --output-md <tracked-aggregate-comparison.md> `
  --require-same-data-snapshot

可接受的运行输入是标准运行目录、其 outputs/ 目录,或一个独立的 predictions.csv。命令会 写出 JSON 与 Markdown 两种聚合报告。

What is safe to share / 可公开的内容

The generated artifacts contain only course/assessment metadata, aggregate population counts, aggregate and per-question metrics, a paired bootstrap interval, safe run metadata, and confidence-versus-exact-agreement aggregates. They explicitly reject student IDs, individual scores, raw answers, model evidence, prompts, responses, and private paths.

生成的文件只包含课程/考试元数据、总体人数、总体与按题指标、配对 bootstrap 区间、安全的 运行元数据,以及 confidence 与实际准确率的汇总关系。它会拒绝学生 ID、个人分数、原始作答、 模型证据、提示词、模型响应和私有路径。

Advisor-workflow integration limit / 与导师工作流的边界

The current advisor_workflow keeps its existing physics-specific metrics command unchanged. For Week 4, invoke this standalone command after both grading arms and validated gold are present. A future workflow-level selector should explicitly provide course_spec, gold, and students_file before it replaces the physics backend; silently reusing the physics schema would make a new-course comparison ambiguous.

当前 advisor_workflow 保持原有的 physics 专用指标命令不变。Week 4 在两条评分臂和完整 gold 都准备好后调用此独立命令即可。未来若要把它接入自动工作流,必须显式配置 course_specgoldstudents_file;不能悄悄复用 physics 的 schema,否则新课程的 比较范围会变得不明确。