M2X-045: 30-question Phase 2 gate set over the tiron reference corpus - #37
Open
yashpancholi09 wants to merge 1 commit into
Open
M2X-045: 30-question Phase 2 gate set over the tiron reference corpus#37yashpancholi09 wants to merge 1 commit into
yashpancholi09 wants to merge 1 commit into
Conversation
…corpus 20 single-meeting, 5 cross-meeting, 5 must-abstain, written by reading four reference transcripts end to end and picking facts that are stated rather than inferable. The corpus choice is the load-bearing decision. data/ is git-ignored, so a fresh clone has no meeting transcripts and every citation m2x ask has ever produced is a section heading against this repo's own markdown -- the [meeting - speaker - mm:ss-mm:ss] path, which is the entire product promise, has never been exercised against a real meeting. eval/tiron/ is committed, carries human speaker turns and real timestamps, and already grounds the Phase 1B labels, so a gate written against it runs on every clone with no audio and no transcription provider. Ground truth is (meeting_id, first_turn, last_turn), never a rendered citation. An mm:ss string would score the renderer rather than the retrieval, and a chunk id is a function of the chunking parameters -- tuning them would silently invalidate the whole set. Citation accuracy is therefore an overlap test between the expected turn range and the range a retrieved chunk covers, which is the ticket's rule. Overlap rather than containment: chunks are packed to a character budget and a correct citation routinely covers the answer plus its neighbours. The questions are committed in plaintext because the system has to be asked them; the expected answers are sealed with the M2X-041 tooling, because a builder who can read the expected segments can tune retrieval until they come back. A test asserts questions.jsonl never contains a gist or an evidence span, so the seal cannot become decorative by accident. Four of the five must-abstain questions sit on top of a strongly matching passage -- q26 asks the total aquarium cost, which Rachel asks for in the meeting and is never answered. A must-abstain bucket made only of q30-style questions would be passed by the distance threshold alone and would measure nothing about the model's judgement. The re-read pass the ticket asks for was done both ways: mechanically, via scripts/validate_rag_questions.py, and by printing every cited span back beside its question. One correction resulted -- q10's span ended one turn past Sarah's reply. Known limitation recorded in the README: gist is prose graded by a judge, so answer correctness inherits the judge's biases. Only citation accuracy and abstention are mechanically checkable.
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.
The Phase 2 gate instrument: 20 single-meeting / 5 cross-meeting / 5 must-abstain, written by reading four tiron reference transcripts end to end and picking facts that are stated, not inferable.
Stacked on
feature/m2x-042-rag-design.The corpus choice is the load-bearing decision
data/is git-ignored, so a fresh clone has no meeting transcripts, and every citationm2x askhas ever produced is a§ headingagainst this repo's own markdown. The[meeting · speaker · mm:ss–mm:ss]path — the entire product promise — has never been exercised against a real meeting.eval/tiron/is committed, carries human speaker turns and real timestamps, and already grounds the Phase 1B labels. A gate written against it runs on every clone with no audio and no transcription provider.Four meetings, sharing a speaker pool deliberately — it makes the cross-meeting questions hard in the way cross-meeting questions are supposed to be hard.
Ground truth is turn ranges, never rendered citations
An expected answer names
(meeting_id, first_turn, last_turn). Not anmm:ssstring — that scores the renderer rather than the retrieval. Not a chunk id — that is a function of the chunking parameters and would silently invalidate the set the moment anyone tunes them.Citation accuracy is therefore an overlap test, which is the ticket's rule. Overlap rather than containment: chunks are packed to a character budget and a correct citation routinely covers the answer plus its neighbours, so containment would fail a chunk for being the size the indexer chose.
The seal
Questions are committed plaintext because the system must be asked them. Expected answers are sealed with the M2X-041 tooling, because a builder who can read the expected segments can tune retrieval until they come back. A test asserts
questions.jsonlnever contains a gist or an evidence span, so the seal cannot become decorative by accident.The must-abstain five are near misses on purpose
Four of five sit on top of a strongly matching passage.
q26asks the total aquarium cost — which a participant explicitly asks for in the meeting and is never answered, so retrieval returns highly relevant context and the system still has to decline.A bucket made only of
q30-style questions ("who won the 2026 cricket world cup") would be passed by the distance threshold alone and would measure nothing about the model's judgement.The re-read pass, both ways
Mechanical —
scripts/validate_rag_questions.py: ids unique and paired across both halves, the 20/5/5 mix, answerable questions carrying evidence and a gist, unanswerable ones carrying neither, cross-meeting questions genuinely spanning 2+ meetings, every cited turn resolving. Exits non-zero on any problem.By reading — every cited span printed back beside its question. One correction resulted:
q10's span ended one turn past the reply it was citing.Known limitation
gistis prose graded by a judge, so answer correctness inherits the judge's biases. Only citation accuracy and abstention are mechanically checkable. Recorded ineval/rag/README.md.585 tests green (19 new).