Evaluation framework + paper analysis: 1662 runs, reviewer-anchored, 6-agent matrix complete - #9
Evaluation framework + paper analysis: 1662 runs, reviewer-anchored, 6-agent matrix complete#9cmungall wants to merge 111 commits into
Conversation
Adds 15 curated case studies for monarch-initiative/mondo PRs covering diverse task types (new_term, obsoletion, reclassification, synonym_update, bulk_edit), difficulties (simple through hard), and authors (MeeSiing, sabrinatoro, katiermullen, matentzn, dragon-ai-agent). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Curated 20 diverse PR case studies from obophenotype/cell-ontology covering: - Task types: new_term (4), axiom_repair (6), reclassification (3), synonym_update (1), bulk_edit (1), obsoletion (1), documentation (1), other (1) - Difficulties: simple (6), medium (12), hard (2) - Authors: RiveraAndrea83, gouttegd, nicolevasilevsky, Caroline-99, copilot-swe-agent - Domains: immunology, neuroscience, connective-tissue, musculoskeletal, reproductive-biology Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add case studies for PRs #10113 (relabel/reclassify), #10126 (NTR with review iteration), #10142 (term merge), and #10155 (bulk VeNom import). Covers diverse task types and difficulty levels. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Curated case studies covering diverse task types: new_term (5), obsoletion (3), axiom_repair (3), reclassification (2), synonym_update (1), and other (1). PRs span multiple authors (sjm41, dragon-ai-agent) and difficulty levels. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds case studies for PRs: 3448, 3450, 3451, 3505, 3507, 3508, 3520, 3522, 3524, 3535, 3537, 3545, 3554, 3556, 3570, 3571, 3574, 3583, 3585, 3598. Covers diverse domains (immunology, neuroscience, skeletal, auditory, epithelial, oral, connective tissue, renal) and task types (new terms, definition updates, axiom repairs, design patterns, taxon constraints, annotation additions). All 40 total case studies pass validation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…t depend on them for simple cases
…nd ablation design
… Codex skill discovery
…nfigs, scoring script
Stores all evaluation artifacts for reproducibility:
- analysis/scores.tsv: master scores table (23 runs across 4 ontologies)
- analysis/{ont}/results/scores.tsv: per-ontology scores
- analysis/{ont}/results/diffs/human/: ground truth PR diffs
- analysis/{ont}/results/diffs/agent/: agent PR diffs (named by config-runtime-model-pr)
- analysis/{ont}/configs/eval-v1.yaml: versioned config snapshots
- analysis/scripts/score-all.sh: reproducible scoring script
New cases: CL #3252 (0.000), CL #3196 (0.200), Uberon #3454 (0.473), Uberon #3475 (0.100), Mondo #9771 (0.562). Opus runs mostly failed due to OAuth rate limits - will retry.
…ebook - LinkML schema for structured agent reviews (rubric scores + narrative) - judge.py: builds LLM judge prompts, parses review responses - analysis.py: pandas utilities for scores/reviews (pivot, summary, rubric) - 01_scores_overview.py: starter analysis notebook - Added pandas as dev dependency
Reviews cover: - GO Codex v9: F1=0.800, over-edited (updated cross-refs human didn't) - GO Sonnet v8: F1=0.800, same result as Codex with more methodology - GO Sonnet v8-noskills: F1=0.000, total failure (permissions blocked) - Mondo Sonnet v2: F1=0.696, missed syndromic parent + creator metadata - Mondo Codex v3: F1=0.560, improved from v2 via native skill discovery
Generates: - F1 box plots by model - Runtime comparison (box + difficulty bars) - Ontology x Model heatmap - Task type x Runtime bar chart - Skills ablation bar chart - Precision vs Recall scatter with F1 contours - Rubric scores bar chart from qualitative reviews - Color-graded detail table of all 28 runs
…ysis An 'agent' is the tuple (runtime, model, config_tag, reasoning_effort). Short codes like CC.son45.v8 avoid long names in plots. balanced_comparison() only compares agents that share >= N cases.
OpenCode is model-agnostic, reads .agents/skills/ and AGENTS.md natively, and has a 'run' command for non-interactive execution. This lets us test both Anthropic and OpenAI models through the same harness, eliminating the runtime as a confounding variable.
Pi is extensible, model-agnostic, reads .agents/skills/ natively, and has --print mode for non-interactive execution with --mode json for structured trace output. Uses provider/model syntax.
|
Claude finished @cmungall's task —— View job Comprehensive Code ReviewI've conducted a thorough review of this substantial evaluation framework PR. Here's my detailed analysis: Todo List:
Overall AssessmentThis is an impressive evaluation framework with 1,040+ scored runs across multiple models and harnesses. The code is well-structured and follows the project's established patterns. However, there are several areas for improvement. Code Quality & Best Practices✅ Strengths
|
…tion The eval repos passed 500 PRs (mondo now 658, go 568, uberon 562), so score_eval_repo silently dropped the OLDEST runs every rescore — e.g. std_opencode_g55 collapsed to 0/37 on mondo because all the historical openai/gpt-5.x PRs fell outside the window. number+title is cheap to fetch, so raise the limit and raise RuntimeError if we ever hit it again instead of silently losing data. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
OpenCode's built-in openai provider requires OPENAI_API_KEY, which we
deliberately don't carry (the key was removed for security; OAuth/
subscription only). Result: every opencode/gpt-5.x eval produced an
empty PR ("Model not found"), silently zeroing std_opencode_g55/g54.
Fix: for OpenAI models the Run OpenCode step now starts a headless
openai-oauth proxy (npx, Node>=20) backed by the same ~/.codex/auth.json
ChatGPT/Codex subscription token used by the codex runtime, writes a
global opencode.json custom provider pointed at 127.0.0.1:10531, and
runs --model codexoauth/gpt-5.x. Config is global (not repo-local) so
it never pollutes the metadiff. Adds proxy diagnostics, a smoke test,
and a 25m hard cap so a hung proxy fails fast instead of burning 90m.
Note: openai-oauth does not refresh; the CODEX_AUTH_JSON secret must
hold a non-expired access token (ChatGPT tokens last ~10 days).
Validated: eval #25870 opencode/openai/gpt-5.5 -> 105-line PR, scores
as std_opencode_g55.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Claude finished @cmungall's task —— View job Comprehensive Code ReviewI've conducted a thorough review of this substantial evaluation framework PR. Here's my detailed analysis: Todo List:
Overall AssessmentThis is an impressive evaluation framework with 1,040+ scored runs across multiple models and harnesses. The code is well-structured and follows the project's established patterns. However, there are several areas for improvement. Code Quality & Best Practices✅ Strengths
|
77 of 160 eval cases are flagged case_quality: poor (mis-paired gold, gold leakage, eval-base contamination) but load_scores never surfaced this, so every aggregate (incl. the headline pairwise tests and the mondo #5726 F1=1.0 leakage artifacts) was computed over broken cases. Add load_case_quality() (reads cases/*/METADATA.md frontmatter; unflagged cases default to 'unflagged', never NaN) and attach_case_quality() (idempotent left-join onto a scores df), with pytest + doctests. Fixture pr200 flagged poor to exercise filtering. Pre-existing mypy debt (numpy/scipy stubs, paired_test) unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Claude finished @cmungall's task —— View job Comprehensive Code ReviewI've conducted a thorough review of this substantial evaluation framework PR. Here's my detailed analysis: Todo List:
Overall AssessmentThis is an impressive evaluation framework with 1,040+ scored runs across multiple models and harnesses. The code is well-structured and follows the project's established patterns. However, there are several areas for improvement. Code Quality & Best Practices✅ Strengths
|
OpenCode gpt-5.x now runs via the Codex-OAuth proxy: std_opencode_g55/ g54 went from near-zero to ~full coverage. scores.tsv at 1645 scored runs (opencode 745, gpt-5.4 438, gpt-5.5 425). Analysis is now quality-aware. 77 of 160 cases are flagged case_quality: poor (mis-paired gold, gold leakage, eval-base contamination); they polluted every aggregate (incl. mondo #5726's F1=1.0 leakage artifacts and the headline pairwise tests). New load_case_quality()/attach_case_quality() join the flags and collapse companion-PR duplicates conservatively (any poor -> poor) so the join is strictly 1:1. 01_scores_overview.py recomputes all headline stats over the 83 valid (non-poor) cases, with all-cases shown only as a sensitivity check, plus a coverage matrix, the poor-case caveats, and qualitative reviews across all four ontologies. Coverage over valid cases for the 6 target agents is ~97-100% (claude_hai45 100%); residual is the eval-base-infra-broken issues (#19185, #3591 — fail for every agent) plus a few opencode_g54. Repaired 112 codex-generated review files with malformed frontmatter (failure_modes: [] + orphan list items) so all 2399 reviews load; hardened load_reviews() to skip-not-crash on future bad frontmatter. Tests: +tests/test_analysis.py (6), gallery fixture extended with a companion case (pr201); full suite 192 passed. Pre-existing mypy debt (numpy/scipy stubs) untouched. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Claude finished @cmungall's task —— View job Comprehensive Code ReviewI've conducted a thorough review of this substantial evaluation framework PR. Here's my detailed analysis: Todo List:
Overall AssessmentThis is an impressive evaluation framework with 1,040+ scored runs across multiple models and harnesses. The code is well-structured and follows the project's established patterns. However, there are several areas for improvement. Code Quality & Best Practices✅ Strengths
|
Final gapfinal pass over genuinely-fillable valid-case gaps closed opencode_g54 on mondo (proxy) and assorted stragglers. All 6 target agents now ~97-100% over the 78 valid (non-poor) cases; claude_hai45 100%. Residual is the eval-base-infra-broken issues (#19185, #3591) that fail for every agent. Notebook HTML refreshed (867 valid runs, 2399 reviews). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Claude finished @cmungall's task —— View job Comprehensive Code ReviewI've conducted a thorough review of this substantial evaluation framework PR. Here's my detailed analysis: Todo List:
Overall AssessmentThis is an impressive evaluation framework with 1,040+ scored runs across multiple models and harnesses. The code is well-structured and follows the project's established patterns. However, there are several areas for improvement. Code Quality & Best Practices✅ Strengths
|
Addresses two review-analysis gaps: (1) Case suitability is now the FIRST section (Section 0): of 149 curated cases ~48% are unsuitable for automatic scoring, with the reason breakdown and per-ontology table up front, framed as a methodological finding. Every comparison is explicitly restricted to the clear (non-poor) cases (incl. the qualitative-review tables). (2) Reviewer verdicts are now a first-class score: new reviewer_score() maps outcome success=1.0/partial=0.5/fail=0.0 and aggregates success/partial/failure rates + mean. The free-text agent field in review files is unreliable (62 hallucinated variants), so the canonical agent is recovered by joining each review to its scored run on (ontology, eval_repo_pr). Reported by canonical agent and by runtime — robust where metadiff F1 is not (a reviewer can credit an agent that correctly resolved a flawed-gold issue). reviewer_score has pytest coverage (outcome mapping, empty-safe); full suite 194 passed, ruff clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Claude finished @cmungall's task —— View job Comprehensive Code ReviewI've conducted a thorough review of this substantial evaluation framework PR. Here's my detailed analysis: Todo List:
Overall AssessmentThis is an impressive evaluation framework with 1,040+ scored runs across multiple models and harnesses. The code is well-structured and follows the project's established patterns. However, there are several areas for improvement. Code Quality & Best Practices✅ Strengths
|
…notebook - Fixed the hallucinated agent field at the source: 548 review files had non-canonical agent labels (62 distinct variants, e.g. std_codex_gpt5.5, std_claude_haiku45). Rewrote each to the canonical resolved handle via the (ontology, eval_repo_pr) -> scores join. Review agent values: 62 -> 12 clean handles. - analysis.py: attach_case_quality now normalises float issue_number (190.0 -> '190'). Regression: review frames have float issue_number (NaNs present), so the case_quality join silently matched nothing and every review was treated as a clear case. +test. - Notebook .ipynb: section 4b rewritten as 'Qualitative Reviews & Reviewer Scores' — all 4 ontologies, clear cases only, reviewer outcome score (success=1/partial=.5/fail=0) by canonical agent and runtime, outcome distribution, failure modes, F1-vs-outcome cross-check, with a per-agent score bar chart. Removed the redundant melted 'Full Results Table'; section 6 is now the compact pivots. Re-executed; .html refreshed. Full suite 195 passed, ruff clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Claude finished @cmungall's task —— View job Code Review CompletedI've conducted a comprehensive review of this substantial evaluation framework PR. Here's my detailed analysis: Todo List
Overall AssessmentThis is an impressive evaluation framework with 1,040+ scored runs across multiple models and harnesses. The codebase is well-structured and demonstrates sophisticated statistical analysis capabilities. However, there are several areas that need attention. Code Quality & Best Practices✅ Strengths
|
…allery - case_quality and eval_suitability shown as colored badges - scoring_caveat and case_quality_reason shown as amber warning banners above the narrative - Fix date serialization to handle all date fields generically (not just a hardcoded list), fixing the quality_flagged_at field Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
F1 is too noisy to anchor evaluation. New analysis/notebooks/ 02_reviewer_eval.ipynb leads with reviewer outcome verdicts (success=1/partial=.5/fail=0): 1. Dataset & case statistics (all cases) + quality/attempt breakdown 2. Inter-annotator agreement FIRST — claude vs codex: 761 paired, 72% exact, Cohen's kappa 0.52 (linear-weighted 0.56); codex is the harsher reviewer; agreement strong on go (kappa 0.76) but weak on mondo (0.24) 3. Case statistics vs success — consensus score by case_quality, difficulty, task type, and >1-attempt bucket, with full/partial/ fail mix 4. Agent performance by reviewer (consensus) score on clear cases, plus F1-vs-reviewer correlation (Pearson 0.63 with large F1 spread within each verdict level — quantifies the F1 noise) All per-agent/case joins use the authoritative (ontology, eval_repo_pr) -> scores key, not the unreliable review agent field. New tested helpers in analysis.py: reviewer_label, cohen_kappa (nominal + linear/quadratic weighted, no sklearn), pair_reviewers (keyed on ontology+eval_repo_pr). 198 pytest pass, ruff clean. 01_scores_overview left as-is per request. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Claude finished @cmungall's task —— View job Comprehensive Code ReviewI've conducted a thorough review of this substantial evaluation framework PR. Here's my detailed analysis: Todo List:
Overall AssessmentThis is an impressive evaluation framework with 1,040+ scored runs across multiple models and harnesses. The code is well-structured and follows the project's established patterns. However, there are several areas for improvement. Code Quality & Best Practices✅ Strengths
|
Gap-close pass on the genuinely-fillable residual (cell #3163/#3479/
#3559). Final coverage over the fillable universe (valid/non-poor
cases, excluding 3 issues that structurally fail for EVERY agent):
std_opencode_g55 25/25 18/18 20/20 15/15 COMPLETE
std_opencode_g54 25/25 18/18 20/20 15/15 COMPLETE
std_claude_hai45 25/25 18/18 20/20 15/15 COMPLETE
std_codex_g54 25/25 18/18 20/20 15/15 COMPLETE
std_claude_son45 25/25 18/18 20/20 15/15 COMPLETE
std_claude_op47 25/25 18/18 20/20 14/15 (cell #3559)
5/6 agents 100%. The 4 residual case-slots are not fillable by
dispatch — the agent deterministically produces no changes
(repeated 'Create PR' failures, nothing to commit):
- cell #3163: ALL agents produce no edit (METADATA:
sound_gold_no_agent_coverage)
- cell #3559: Opus produces no edit across 2 attempts (other
agents scored it)
- go #19185, uberon #3591: eval-base step fails for ALL agents
These are agent-behaviour / eval-harness structural outcomes,
excluded by the same logic as case_quality=poor — not per-agent
coverage gaps. Both notebooks regenerated; 198 pytest pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Claude finished @cmungall's task —— View job Comprehensive Code ReviewI've conducted a thorough review of this substantial evaluation framework PR. Here's my detailed analysis: Todo List:
Overall AssessmentThis is an impressive evaluation framework with 1,040+ scored runs across multiple models and harnesses. The code is well-structured and follows the project's established patterns. However, there are several areas for improvement. Code Quality & Best Practices✅ Strengths
|
Per user decision (2026-05-18): cell #3163 (all agents), cell #3559/ op47 (6 Opus attempts, edits never commit), go #19185 & uberon #3591 (eval-base step fails for all agents) are accepted as measured outcomes — not fillable by re-dispatch, excluded like case_quality= poor. Added a 'Coverage caveat' to 02_reviewer_eval §5 so the analysis is self-documenting. All 6 agents are otherwise 100% over the fillable universe (5/6 exactly; op47 14/15 cell solely due to #3559).
|
Claude finished @cmungall's task —— View job Comprehensive Code ReviewI've conducted a thorough review of this substantial evaluation framework PR. Here's my detailed analysis: Todo List:
Overall AssessmentThis is an impressive evaluation framework with 1,040+ scored runs across multiple models and harnesses. The code is well-structured and demonstrates sophisticated statistical analysis capabilities. However, there are several areas that need attention. Code Quality & Best Practices✅ Strengths
|
Standalone, detailed, narrative analysis anchored on reviewer scores:
- §1 the benchmark + concrete real case examples (incl. poor ones)
- §2 the agent matrix
- §3 quantifies F1 noise (weak r vs reviewer; huge within-verdict spread)
- §4 inter-annotator agreement (validates the measure)
- §5 worked examples with the reviewers' actual prose (success/partial/fail)
- §6 exploratory questions on reviewer scores via paired tests:
Q1 model ladder (Opus>Sonnet>Haiku, all SIG; Opus-Haiku d=0.70)
Q2 gpt-5.5 vs 5.4 (ns), Q3 harness codex/opencode/copilot (all ns
-> model dominates, harness interchangeable at a tier),
Q4 open-weight vs proprietary + full pairwise matrix,
Q5 slices by task/difficulty/ontology, Q6 failure-mode taxonomy
- §7 discussion, limitations, structural-coverage caveat
New tested helper analysis.reviewer_case_scores (one rscore per
(canonical agent, case) -> feeds paired_test/significance_summary).
199 pytest pass, ruff clean. 01_scores_overview untouched.
|
Claude finished @cmungall's task —— View job Comprehensive Code ReviewI've conducted a thorough review of this substantial evaluation framework PR. Here's my detailed analysis: Todo List:
Overall AssessmentThis is an impressive evaluation framework with 1,040+ scored runs across multiple models and harnesses. The code is well-structured and demonstrates sophisticated statistical analysis capabilities. However, there are several areas that need attention. Code Quality & Best Practices✅ Strengths
|
Replaced every print(df.to_string()) with styled DataFrames (display() + .style: color gradients, %/float formatting, captions, significant-row highlighting) and rendered the case/worked examples as Markdown blockquotes instead of raw text. 14 rich HTML tables, 0 plaintext dumps. Same analysis/numbers; presentation only.
|
Claude finished @cmungall's task —— View job Comprehensive Code ReviewI've conducted a thorough review of this substantial evaluation framework PR. Here's my detailed analysis: Todo List:
Overall AssessmentThis is an impressive evaluation framework with 1,040+ scored runs across multiple models and harnesses. The code is well-structured and demonstrates sophisticated statistical analysis capabilities. However, there are several areas that need attention. Code Quality & Best Practices✅ Strengths
|
mypy: - analysis.py: use distinct names for numpy arrays (was reusing list vars, triggering list-has-no-attr-mean / unsupported-operand) - analysis.py: explicit Optional[list] default instead of implicit - scoring.py: annotate cases dict - mypy.ini: ignore_missing_imports for numpy/scipy (no stubs in CI env) ruff: - gallery.py: move Optional import to top (E402), drop unused eval_cfg - cli.py + generated case_study_models.py: remove unused imports - pyproject.toml: exclude *.ipynb from ruff (exploratory notebooks) just test now green: pytest 199 passed, mypy clean, ruff clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Claude finished @cmungall's task —— View job Comprehensive Code ReviewI've conducted a thorough review of this substantial evaluation framework PR. Here's my detailed analysis: Todo List:
Overall AssessmentThis is an impressive evaluation framework with 1,662 scored runs across multiple models and harnesses. The code is well-structured and demonstrates sophisticated statistical analysis capabilities. However, there are several areas that need attention. Code Quality & Best Practices✅ Strengths
|
CI installs numpy with stubs (3.11/3.13), so np.array() returns a typed ndarray. boot_diffs was a list reassigned to ndarray. Use a distinct boot_arr name. Verified with mypy --python-executable .venv/bin/python (numpy resolved) — full src+tests clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Claude finished @cmungall's task —— View job Comprehensive Code ReviewI've conducted a thorough review of this substantial evaluation framework PR. Here's my detailed analysis: Todo List:
Overall AssessmentThis is an impressive evaluation framework with 1,662 scored runs across multiple models and harnesses. The code is well-structured and demonstrates sophisticated statistical analysis capabilities. However, there are several areas that need attention. Code Quality & Best Practices✅ Strengths
|
Summary
End-to-end evaluation framework + the paper's exploratory analysis, comparing AI coding agents on real OBO ontology curation PRs.
01_scores_overview(F1/quality-aware overview) and02_reviewer_eval(the new standalone paper-style exploratory analysis, anchored on reviewer scores)Headline findings (exploratory, reviewer-anchored)
02_reviewer_eval.Methodological finding: ~half the curated cases are unusable
About 48% of mined real merged PRs are unsuitable as a single-gold target — gold leakage, mis-paired issues, eval-base contamination, or the issue resolved across companion PRs. They are flagged
case_quality: poorin METADATA and excluded from every comparison. This is itself a paper-worthy result and the reason the headline analysis is reviewer-anchored.Coverage status (the 6 target agents)
Over the fillable universe (valid/non-poor cases, excluding 4 case-level structural failures that fail for every agent equally):
5/6 agents at 100%; op47 differs only by one accepted measured outcome (cell #3559: Opus issues edits that don't commit across 6 attempts — the empty result is its behaviour on this case). The 4 accepted structural slots (cell #3163, cell #3559 / op47, go #19185, uberon #3591) are documented in
02_reviewer_eval§7.Code highlights
examples/workflows/eval-agent-on-issue.yml— OpenCode now serves OpenAI gpt-5.x via a headlessopenai-oauthlocal proxy backed byCODEX_AUTH_JSON(subscription / OAuth only, no API key); deployed to all four eval shadow repos.src/ai4c_scribe/scoring.py— fixedgh pr list500-PR truncation (silent data loss); raised to 5000 with fail-loud guard.src/ai4c_scribe/schema/case_study.yaml(+ regenerated pydantic) — case-quality flagging fields (case_quality,case_quality_reason,companion_prs,scoring_caveat,agent_coverage*,task_type_correction*).src/ai4c_scribe/analysis.py— new tested helpers:load_case_quality,attach_case_quality(1:1 join, conservative companion-PR dedup, float-issue-number robust),load_reviewshardened,reviewer_label,cohen_kappa(nominal + linear/quadratic weighted, no sklearn dep),pair_reviewers(keyed on ontology+eval_repo_pr; per-PR consensus),reviewer_score,reviewer_case_scores.analysis/agents.yaml— single global agent definitions (consolidated from per-ontology files).Data highlights
analysis/scores.tsv(+ per-ontology); diffs / traces / score caches underanalysis/{ont}/results/.agentfield corrected to the canonical resolved handle (62 noisy variants → 12 clean).analysis/{ont}/cases/{prNN}/; 77 flaggedcase_quality: poorwith detailedscoring_caveat.Notebooks
analysis/notebooks/01_scores_overview.{ipynb,html,py}— quality-aware overview; case-suitability summary at the top, F1 with sensitivity, reviewer-score section (canonical agent), full pivots, qualitative-reviews across all ontologies.analysis/notebooks/02_reviewer_eval.{ipynb,html}— standalone paper exploratory analysis, reviewer-anchored. §1 benchmark + real case examples · §2 agent matrix · §3 why not F1 (quantified noise) · §4 inter-annotator agreement · §5 worked examples with reviewers' own prose · §6 exploratory Qs (model ladder; gpt-5.5 vs 5.4; harness codex/opencode/copilot; open vs proprietary; full pairwise significance matrix; slices; failure-mode taxonomy) · §7 discussion + structural-coverage caveat. Tables rendered as styled HTML with gradients and captions.🤖 Generated with Claude Code