Repository navigation
fix(answers,pipeline,judge,gate): Stack P fixes, step 2 of #228 #274
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
968f297
1c97ebc
cbb7350
b68b0ef
5469f7a
f4c2ade
65f6995
6a29f10
8a775b2
0fe7452
c517c72
6bec891
5e940f0
715b6e5
2f5cc95
d0b383c
f549950
9e14106
0f0aaa4
ea052d8
6bda456
3021224
3ef4eae
87a1a0a
24a75ca
284b240
82d8f93
0cf25ef
fb4519a
40308f6
6731a11
2e85321
a9a320b
5fae382
6dc1f42
805aa58
9284f52
caaa3da
291dee0
633065f
ff77b98
d84bb56
ff68073
aabe058
a3cb4b3
ffd6247
b92f6c2
d03c98a
21b3054
f1854ee
ab072aa
a104154
d33a895
58c49b2
609a434
416550d
a6a74c4
3d7f8c5
f34aa62
b945e44
171a022
6b5ca65
52a6064
e6eb131
0f8835a
17d5b40
bf0f032
c6d6c1f
7e57031
60f5b09
ad1f45e
6de55b4
5ea5432
85b0ee4
52b3fa1
989d087
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,61 @@ | ||
| ### Added | ||
|
|
||
| - **`benchmark run --judge-temperature`** — a new flag: it sets the judge's sampling | ||
| temperature and is recorded as `judge_temperature` in the eval output. Before this change the | ||
| flag did not exist, and `benchmark run` rejected it as an unknown argument. | ||
|
|
||
| ### Changed | ||
|
|
||
| - **Stack P scores move (#228 step 2)** — the context arm now asks the doc source for the | ||
| `top_k` docs the command was given: `benchmark run` asks for 3 (`DEFAULT_RETRIEVAL_TOP_K`; it | ||
| has no `--top-k`), `dokimi evaluate` and `answers generate` for their `--top-k` (default 3). | ||
| Before, they left `max_results` at the client default of 5. The doc library id resolves | ||
| through the registry's `context7_id` before the client's own resolver, in the `--registry` | ||
| that was loaded. A question with no document (no hit, or the reranker raised) is no longer judged on | ||
| its `[FALLBACK: ...]` placeholder by default, so it drops out of the paired statistics; the | ||
| record and its `retrieval_hit` stay, its diagnosis stays `empty_retrieval`, and the run | ||
| summary says how many questions it left out. Pass `--judge-placeholder` to judge the | ||
| placeholder again (this restores only that part of the old method). The dashboard's arm | ||
| means and delta leave such a question out too, as `report eval` does. Its doc score counts a | ||
| retrieval miss as 0 only when the baseline has a score and no error touched the pair (neither | ||
| arm has a judge error); a miss with an error leaves the doc score alone. `report eval` and `report generate` show `—` for the arm means and delta when | ||
| no question is scored in both arms (the `report generate --format json` `stats` block carries | ||
| `null` for `avg`, `min` and `max`), and the run summary prints no means then. `benchmark run`, | ||
| `evaluate` and `eval score` take the same flag; `benchmark batch` has none and never judges | ||
| the placeholder. Scores from before this change are not comparable with new ones. | ||
| - **Trust gate** — `retrieval_hit_rate` counts every evaluation's recorded retrieval outcome, | ||
| not only the ones scored in both arms, so unjudged misses still count against the rate, and a | ||
| judge-error row keeps the outcome of its answer. The rate is shown even when no question is | ||
| scored in both arms. A judge-error row of an older eval file, which has no `retrieval_hit`, | ||
| is left out of that count as before. The thresholds are unchanged. | ||
| - **Zero-score check** — a judge-error row on a retrieval miss now counts as unusable in | ||
| `zero_score_fraction` (a judge error on a retrieval hit is still left out), so a run can fail | ||
| that fail-severity check where intel/main passed it. | ||
| - **Stamped artifacts** — the answers and eval artifacts carry `method_version` (2). Artifacts | ||
| from before this change have no stamp and represent the legacy method (version 1); readers do | ||
|
Comment on lines
+34
to
+35
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fixed in 989d087: the entry now limits the stamp claim to eval score artifacts (Judge). eval panel-score writes neither method_version nor judge_placeholder, so its artifact reads as version 1; the entry says so. |
||
| not yet normalize or enforce the version, so it does not yet stop a comparison of mixed methods. | ||
| `eval score` stamps its eval with the version of the answers file it judges, so legacy answers | ||
| re-judged today stay version 1. An `eval score` artifact also carries `judge_placeholder`, so two | ||
| files of one version that differ in it are told apart. `eval panel-score` (the JudgePanel path) | ||
| writes neither stamp yet, so its artifact reads as version 1 whatever answers it judged. An absent | ||
| or null stamp means version 1; any other value must be a positive integer, or `eval score` exits | ||
| 2 before any judge call. | ||
|
|
||
| ### Fixed | ||
|
|
||
| - **Stack P no longer ignores `top_k`** — `Answerer` passes `max_results=top_k` to the doc | ||
| source; the context arm's retrieval request is now the one the arms stack makes. | ||
| `answers generate --top-k` takes a positive integer, as `dokimi evaluate` does, and a config | ||
| `retrieval.top_k` that is not one exits 2. | ||
| - **Library id from the registry** — `EvaluationPipeline` resolves the library id through | ||
| `resolve_library_id_for_product` (explicit id, then an `mcp:` source's `;id=`, then `context7_id`, | ||
| then the client), in the | ||
| registry that `benchmark run` and `benchmark batch` loaded from `--registry`. A registered | ||
| product without `context7_id` now fails for a client that needs a declared id. | ||
| The question step's topics cache (`.cache/topics`) is keyed on the doc source as well, so | ||
| two doc sets of one product (two `local:` dirs, say) no longer share their topics. | ||
|
|
||
| ### Removed | ||
|
|
||
| - Dead code in the answering path: the unused `Answerer.llm` client and the unreachable | ||
| "no documents" branch of `_generate_with_docs`. | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Must-fix: qualify the dashboard's miss-as-zero claim.
_context_scoreonly substitutes 0 when the baseline has a score and neither the evaluation nor context arm has an error. For example, a complete 80/60 pair plus an unjudged retrieval miss with a judge error producesdoc_score == 80, not 40 (also pinned intest_a_miss_without_a_clean_baseline_score_leaves_the_doc_score_alone). State these conditions so users do not interpret excluded judge-error misses as zero-score contributions.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 989d087: the entry now says the doc score counts a retrieval miss as 0 only when the baseline has a score and neither arm has an error; a miss with an error leaves the doc score alone (test_a_miss_without_a_clean_baseline_score_leaves_the_doc_score_alone). Docs only; full suite 12099 passed, 8 skipped.