research: MULocBench adapter design + pre-registration (no data, no run yet) - #314
Draft
joyful-ii-V-I wants to merge 3 commits into
Draft
joyful-ii-V-I wants to merge 3 commits into
joyful-ii-V-I wants to merge 3 commits into
Conversation
…ch steps No MULocBench data exists on disk anywhere; no number is claimed. Adds docs/research/mulocbench-baseline.md: what a MULocBench adapter must change versus bench/locbench and bench/multiswe (dataset-native gold instead of diff-derived, per-issue F1 alongside strict Acc@k, class-level ranking, a for-no-docmention arm to test R5's applyDocMentionBoost against the non-code gold it targets), fixed in writing before any row is mined, plus open questions for the benchmark's authors and exact owner-run fetch commands mirroring sim/msb's pattern. Confirmed empirically with a freshly built worktree binary (not asserted from docs) that --format=candidates already carries markdown-section and YAML-config rows, so file-level scoring needs no new retrieval code, only new gold extraction. Adds bench/mulocbench/run_mulocbench.py, an explicitly untested skeleton whose main() refuses to run (zero-silent-skip contract) since no real row has been seen; its gold-extraction field names are sourced from the public HF dataset card's prose only and are flagged SCHEMA-UNVERIFIED pending the owner's fetch step. No src/ changes. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
quality-delta caught the first pass as a gating new-clone-of-reused-helper: bench/mulocbench/run_mulocbench.py had forked bench/locbench/run_locbench.py's parse_candidates to add a kind= field for class-level MULocBench scoring. Added kind= (reads the existing k= XML attribute, previously unread) directly to the shared function instead — every existing caller (run_locbench, run_multiswe, run_cppbench) is unaffected, it's an additive dict key. Removed the fork. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueComment |
ripwirepubliccheck arm 6b fired — `docs/research/mulocbench-baseline.md` was not listed in `docs/README.md`. The row added here is byte-identical to the one on every other research lane so the eight of them merge without a conflict on the same table line. Also replaces a citation of an orchestration brief that exists only outside this repository with the rule it states, which is the part a reader can act on. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Offers a baseline design for scoring ripwire against MULocBench (arXiv:2509.25242) — a public dataset of 1,100 issues across 46 Python projects with non-code gold locations (config/docs/tests/assets, not just functions), which our existing
bench/locbenchandbench/multisweharnesses structurally can't score.No
docs/LINEAGE.mdrow exists for MULocBench yet, and this PR does not add one. Nothing has been folded into the tool from it — there is no data on disk, no adapter has run, and no number is claimed. The nearest existing kin row isdocs/LINEAGE.mdL79 (SWE-bench, behind the samebench/family this adapter would join); a MULocBench row belongs after a real run produces something to fold, not before. Full write-up:docs/research/mulocbench-baseline.md.(Base note: measured against
mainat755f9026, before 0.6.2; the diff still merges cleanly onto today'smain,15a20855, tag 0.6.2.)What this is. The pre-registration: what an adapter must change versus our existing harnesses (dataset-native gold instead of diff-derived, F1 alongside strict Acc@k, class-level granularity, doc/config/asset/test handling), a verb-mapping table, metric definitions restated in our own words, eligibility/exclusion rules, and what we would report versus withhold — fixed in writing before any row is mined. An untested adapter skeleton (
bench/mulocbench/) is included and clearly marked as such; it refuses to run rather than guessing at a schema we have not verified against a real row. The next step is an owner-run fetch, documented in the design doc's own §4.This is a first pass — design only, nothing measured — with a lot further to push once real rows exist. Six open questions are listed for the paper's authors: the dataset's license (unstated on the HF card, unlike Multi-SWE-bench's explicit CC0), a 1,100-issue vs 3,052-card-row discrepancy we have not reconciled, the F1 partial-credit convention, two field-semantics questions (
ass_file_loc,other_rep_loc), and how a deterministic non-LLM tool's numbers should be made legible against the paper's own BM25/LLM-agent baselines. We would welcome correction on any of this before we run it for real.Our working premise across this line of investigations: algorithmic, deterministic checks applied while an AI writes are the practical way to keep code sound at the speed AI now writes it — no label, no vendor claim, a check that either fires or it doesn't.
🤖 Generated with Claude Code