Skip to content

PLAN: benchmark — from v0 outline to operational /benchmark:review-acceleration #4

Description

@mmcky

Development plan for taking /benchmark:review-acceleration from its v0 outline to an operational skill. This is workstream B of the benchmarking programme (QuantEcon/meta#335); the evaluation system it packages was designed and validated by @xuanguang-li on lecture-python.myst#717.

Where we are

In place Pending
Skill scaffold with the v0 procedure (equivalence → static metrics → as-used benchmark → 7-dimension weighted scoring → verdict-banded report) Operational skill body
benchmark/scripts/README.md documenting the 8 evaluation scripts The scripts themselves — @xuanguang-li agreed (2026-07-07) to package and send them
Full rubric specified in the lecture-python.myst#717 thread (dimensions, weights, numeric anchors, verdict bands, worked HIGH/LOW examples) Rubric transcribed into references/rubric.md
Named calibration endpoints: HIGH = aiyagari Bellman pattern (~25× faster as-used), LOW = ge_arrow (~45× slower as-used) Validation runs against the two live PRs

Work items

1. references/rubric.md (unblocked — the natural next PR)

  • Transcribe the rubric from the #717 thread: 7 dimensions with weights (correctness & numerical fidelity 0.20, readability & pedagogical clarity 0.25, computational efficiency as-used 0.15, logic & design 0.15, coding style & idiom 0.10, API ergonomics 0.10, maintainability 0.05), the 1–5 numeric scoring anchors per dimension, and the verdict bands (≥4.0 merge; 3.0–3.9 merge after fixes; 2.5–2.9 revisit; <2.5 do not merge)
  • Include the worked HIGH/LOW calibration cases (aiyagari pattern, ge_arrow) with their measured numbers, as scoring anchors
  • Encode the measurement standard: as-used, fresh-process totals (JIT compile time included) are the headline; warm timings reported alongside, never alone; crossover-n curve; recompile audit (one recompile per distinct static-arg value or shape)

2. Land the evaluation scripts (blocked on the script handoff)

  • Receive and commit the 8 scripts: check_equivalence.py, static_metrics.py, benchmark.py, cold_start.py, sweep_bench.py, as_used_total.py, bellman_bench.py, run_all.py
  • Generalise from ge_arrow-specific code to take a lecture/implementation pair as input (baseline ref + candidate ref + lecture path)
  • Add an environment descriptor to every emitted result (hardware, library versions, runner class) — aligning with the shared result-schema deliverable in PROJECT: QuantEcon benchmarking programme (code performance & execution) meta#335, which names this the first blocking foundation

3. Operational skill body (blocked on 1–2)

  • Replace the v0 outline with the driving procedure: given baseline/candidate refs for one lecture, run the scripts, score each dimension against the rubric anchors with cited evidence, compute the weighted total, emit the verdict + a fix list mapping each recommendation to the dimension it lifts
  • Report format suitable for posting as a PR review comment
  • Guardrail from the calibration data: warm-only speedup claims are flagged, never accepted as the headline (the ge_arrow lesson — warm 1.4–4.8× faster, as-used ~45× slower)

4. Validation (blocked on 3)

  • Run against lecture-python.myst#717 (ge_arrow) — expect agreement with the published evaluation (weighted ≈2.95, do-not-merge-as-is); note the branch is far behind main and needs updating first
  • Run against lecture-python.myst#654 (markov_asset) — the second named validation case
  • Sanity-check the HIGH anchor on the aiyagari Bellman pattern

5. Documentation + rollout (blocked on 4)

Boundary

/qe:check-jax (skills#3) checks how JAX is written against the style guide; this skill judges whether an accelerated implementation earns its place in a lecture — the boundary QuantEcon.manual#104 draws. The "should this lecture use JAX at all" question belongs here.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions