Repository navigation
Experiment Log
reports/experiment_log.jsonl is the append-only record: one JSON line
per run, never rewritten (the one documented exception: a changelog-noted
one-time backfill). Every record carries:
-
gitsnapshot (commit + dirty flag),model,prompt_version/prompt_versions -
data_source: project, ground truth, dataset_fingerprint, n_samples, sample_requested, seed — the same-surface identity -
parameters: temperature, max_tokens, reasoning_effort, max_input_chars, max_concurrency, bt_scores, handoff_scope, tracing backend -
tokens: prompt/completion/total per stage,cost_usd,cost_estimated_usd(deterministic token × price — OpenRouter usage carries no cost), rows_with_usage -
scores: task-specific, including bootstrap CIs (*_ci),judge_calibration,ablation(chained ground-truth handoff) -
results[]: per-document rows with the model's predicted outputs
reports/experiment_log.md is regenerated whole from the JSONL:
python scripts/reporting/render_experiment_log.pyEach run renders as a fully expanded section: metadata, data source, parameters, tokens, every score with breakdowns, per-document results, scoring matrices, confusion matrices, model outputs, and (subtype) failed- classification insights with full reasoning.
A dependency-free single-page viewer served from docs/ on main (no
Actions runners). Rebuild after every run:
python scripts/site/build_site.py # docs/data/* (index, meta, runs/, trends.json, prompts.json)
python scripts/site/build_site.py --check # verify freshness
node tests/assets/site_render_audit.js # headless render audit of EVERY viewSee Site for what the viewer offers. Cost scoring: every run
shows a deterministic estimate (tokens × verified per-model prices) and the
billed OpenRouter total when the activity-log CSV is ingested
(build_site.py --openrouter-csv openrouter_activity.csv).
llm-mailroom holds a synced copy at
docs/reports/experiments/experiment_log.md (SYNCED-DOCUMENT header carrying
the upstream commit + the site link). Re-sync after every upstream push:
cd ../llm-mailroom
PYTHONPATH=src python -c "from legalbench.experiment_log import regenerate, default_log_path; regenerate(default_log_path())"llm-entity-extraction · prompt experiment loop for llm-mailroom — repository · experiment-log site