Repository navigation
Conversation
M1) The evaluation commands now live under `dokimi eval`: personas, questions, the eval leaves of tasks, catalog and repo, and the `eval` leaves grouped into score, judge, questions, personas and triggers. The command functions are unchanged; the parsers and their registration move. `questions panel-review` is now `questions review`. Every old path is a tombstone: it prints `moved: dokimi <new argv>` to stderr and exits 2 without running. The table is in cli_routes.TOMBSTONES and tests/test_cli_eval_moves.py covers all 21 moves. Refs intel#94, intel#276 Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
CLI interface change detectedThis PR changes dokimi's user-facing CLI surface (commands and/or options): - removed command `dokimi catalog trigger-set`
- option `--catalog`
- option `--format`
- option `--help/-h`
- option `--model`
- option `--out`
- option `--provider`
- option `--questions`
- option `--rewrite`
- option `--strict`
- option `--target`
- option `--trigger-set`
- removed command `dokimi eval checklist`
- option `--answers`
- option `--arms`
- option `--baseline-arm`
- option `--concurrency`
- option `--help/-h`
- option `--judge-model`
- option `--judge-provider`
- option `--judge-temperature`
- option `--output`
- option `--questions`
- removed command `dokimi eval cross-judge`
- option `--answers`
- option `--baseline-arm`
- option `--both`
- option `--checklist`
- option `--concurrency`
- option `--grounded`
- option `--help/-h`
- option `--judge-temperature`
- option `--judges`
- option `--no-stored`
- option `--output`
- option `--pairwise`
- option `--product`
- option `--questions`
- option `--require-validated`
- option `--strict`
- option `--validity`
- removed command `dokimi eval grounding`
- option `--answers`
- option `--help/-h`
- option `--output`
- option `--threshold`
- removed command `dokimi eval judge-validity`
- option `--answers`
- option `--bases`
- option `--concurrency`
- option `--context`
- option `--escalate-model`
- option `--escalate-provider`
- option `--escalate-ties`
- option `--help/-h`
- option `--judge-model`
- option `--judge-provider`
- option `--judge-temperature`
- option `--max-bases`
- option `--min-accuracy`
- option `--mode`
- option `--output`
- option `--product`
- option `--scorer`
- option `--seed`
- option `--sequential`
- option `--strict`
- option `--typed-max-len`
- option `--typed-threads`
- option `--variants`
- removed command `dokimi eval judge-wording`
- option `--answers`
- option `--bases`
- option `--concurrency`
- option `--help/-h`
- option `--judge-model`
- option `--judge-provider`
- option `--judge-temperature`
- option `--min-accuracy`
- option `--output`
- option `--product`
- option `--redraws`
- option `--seed`
- option `--strict`
- option `--variants`
- option `--wordings`
- removed command `dokimi eval pairwise`
- option `--answers`
- option `--arms`
- option `--baseline-arm`
- option `--concurrency`
- option `--escalate-model`
- option `--escalate-provider`
- option `--escalate-ties`
- option `--help/-h`
- option `--judge-model`
- option `--judge-provider`
- option `--judge-temperature`
- option `--output`
- option `--product`
- removed command `dokimi eval panel-score`
- option `--answers`
- option `--concurrency`
- option `--help/-h`
- option `--judge-configs`
- option `--judge-temperature`
- option `--limit`
- option `--model`
- option `--output`
- option `--product`
- option `--provider`
- option `--roles`
- removed command `dokimi eval ragas`
- option `--answers`
- option `--help/-h`
- option `--ragas-model`
- option `--ragas-provider`
- removed command `dokimi eval reference`
- option `--answers`
- option `--concurrency`
- option `--help/-h`
- option `--judge-model`
- option `--judge-provider`
- option `--no-judge`
- option `--output/-o`
- option `--questions`
- removed command `dokimi personas`
- option `--help/-h`
- removed command `dokimi personas approve`
- option `--file`
- option `--help/-h`
- removed command `dokimi personas discover`
- option `--count`
- option `--description`
- option `--github-token`
- option `--help/-h`
- option `--model`
- option `--output`
- option `--product`
- option `--provider`
- option `--repo`
- option `--save-analysis`
- removed command `dokimi questions`
- option `--help/-h`
- removed command `dokimi questions analyze`
- option `--concurrency`
- option `--help/-h`
- option `--model`
- option `--output`
- option `--product`
- option `--provider`
- option `--questions`
- removed command `dokimi questions generate`
- option `--context7-id`
- option `--count`
- option `--doc-source`
- option `--embeddings`
- option `--help/-h`
- option `--model`
- option `--output`
- option `--personas`
- option `--product`
- option `--provider`
- option `--top-k`
- option `--topics`
- option `--validate`
- removed command `dokimi questions import`
- argument `path`
- option `--format`
- option `--grader`
- option `--help/-h`
- option `--output/-o`
- option `--scorer`
- option `--task`
- removed command `dokimi questions panel-review`
- option `--concurrency`
- option `--help/-h`
- option `--limit`
- option `--model`
- option `--output`
- option `--product`
- option `--provider`
- option `--questions`
- option `--reviewers`
- removed command `dokimi questions refine`
- option `--dry-run`
- option `--fill-gaps`
- option `--fill-model`
- option `--fill-provider`
- option `--help/-h`
- option `--output`
- option `--product`
- option `--questions`
- option `--sim-threshold`
- option `--target-advanced`
- option `--target-beginner`
- option `--target-intermediate`
- removed command `dokimi repo tasks check`
- argument `source`
- option `--allow-unsupported`
- option `--arm`
- option `--build-network`
- option `--build-timeout`
- option `--cache`
- option `--cache-dir`
- option `--cache-root`
- option `--docker`
- option `--grade-timeout`
- option `--help/-h`
- option `--image`
- option `--jobs/-j`
- option `--manifest`
- option `--manifest-file`
- option `--out`
- option `--rebuild-image`
- option `--source-dir`
- option `--task`
- option `--warm`
- removed command `dokimi tasks inspect`
- argument `path`
- option `--help/-h`
- option `--json`
- option `--out`
- removed command `dokimi tasks list`
- option `--help/-h`
- option `--tasks-root`
+ added command `dokimi eval check`
+ argument `source`
+ option `--allow-unsupported`
+ option `--arm`
+ option `--build-network`
+ option `--build-timeout`
+ option `--cache`
+ option `--cache-dir`
+ option `--cache-root`
+ option `--docker`
+ option `--grade-timeout`
+ option `--help/-h`
+ option `--image`
+ option `--jobs/-j`
+ option `--manifest`
+ option `--manifest-file`
+ option `--out`
+ option `--rebuild-image`
+ option `--source-dir`
+ option `--task`
+ option `--warm`
+ added command `dokimi eval import`
+ argument `path`
+ option `--format`
+ option `--grader`
+ option `--help/-h`
+ option `--output/-o`
+ option `--scorer`
+ option `--task`
+ added command `dokimi eval inspect`
+ argument `path`
+ option `--help/-h`
+ option `--json`
+ option `--out`
+ added command `dokimi eval judge`
+ option `--help/-h`
+ added command `dokimi eval judge agreement`
+ option `--answers`
+ option `--baseline-arm`
+ option `--both`
+ option `--checklist`
+ option `--concurrency`
+ option `--grounded`
+ option `--help/-h`
+ option `--judge-temperature`
+ option `--judges`
+ option `--no-stored`
+ option `--output`
+ option `--pairwise`
+ option `--product`
+ option `--questions`
+ option `--require-validated`
+ option `--strict`
+ option `--validity`
+ added command `dokimi eval judge validate`
+ option `--answers`
+ option `--bases`
+ option `--concurrency`
+ option `--context`
+ option `--escalate-model`
+ option `--escalate-provider`
+ option `--escalate-ties`
+ option `--help/-h`
+ option `--judge-model`
+ option `--judge-provider`
+ option `--judge-temperature`
+ option `--max-bases`
+ option `--min-accuracy`
+ option `--mode`
+ option `--output`
+ option `--product`
+ option `--scorer`
+ option `--seed`
+ option `--sequential`
+ option `--strict`
+ option `--typed-max-len`
+ option `--typed-threads`
+ option `--variants`
+ added command `dokimi eval judge wording`
+ option `--answers`
+ option `--bases`
+ option `--concurrency`
+ option `--help/-h`
+ option `--judge-model`
+ option `--judge-provider`
+ option `--judge-temperature`
+ option `--min-accuracy`
+ option `--output`
+ option `--product`
+ option `--redraws`
+ option `--seed`
+ option `--strict`
+ option `--variants`
+ option `--wordings`
+ added command `dokimi eval personas`
+ option `--help/-h`
+ added command `dokimi eval personas discover`
+ option `--count`
+ option `--description`
+ option `--github-token`
+ option `--help/-h`
+ option `--model`
+ option `--output`
+ option `--product`
+ option `--provider`
+ option `--repo`
+ option `--save-analysis`
+ added command `dokimi eval personas validate`
+ option `--file`
+ option `--help/-h`
+ added command `dokimi eval questions`
+ option `--help/-h`
+ added command `dokimi eval questions analyze`
+ option `--concurrency`
+ option `--help/-h`
+ option `--model`
+ option `--output`
+ option `--product`
+ option `--provider`
+ option `--questions`
+ added command `dokimi eval questions generate`
+ option `--context7-id`
+ option `--count`
+ option `--doc-source`
+ option `--embeddings`
+ option `--help/-h`
+ option `--model`
+ option `--output`
+ option `--personas`
+ option `--product`
+ option `--provider`
+ option `--top-k`
+ option `--topics`
+ option `--validate`
+ added command `dokimi eval questions refine`
+ option `--dry-run`
+ option `--fill-gaps`
+ option `--fill-model`
+ option `--fill-provider`
+ option `--help/-h`
+ option `--output`
+ option `--product`
+ option `--questions`
+ option `--sim-threshold`
+ option `--target-advanced`
+ option `--target-beginner`
+ option `--target-intermediate`
+ added command `dokimi eval questions review`
+ option `--concurrency`
+ option `--help/-h`
+ option `--limit`
+ option `--model`
+ option `--output`
+ option `--product`
+ option `--provider`
+ option `--questions`
+ option `--reviewers`
+ added command `dokimi eval score checklist`
+ option `--answers`
+ option `--arms`
+ option `--baseline-arm`
+ option `--concurrency`
+ option `--help/-h`
+ option `--judge-model`
+ option `--judge-provider`
+ option `--judge-temperature`
+ option `--output`
+ option `--questions`
+ added command `dokimi eval score grounding`
+ option `--answers`
+ option `--help/-h`
+ option `--output`
+ option `--threshold`
+ added command `dokimi eval score pairwise`
+ option `--answers`
+ option `--arms`
+ option `--baseline-arm`
+ option `--concurrency`
+ option `--escalate-model`
+ option `--escalate-provider`
+ option `--escalate-ties`
+ option `--help/-h`
+ option `--judge-model`
+ option `--judge-provider`
+ option `--judge-temperature`
+ option `--output`
+ option `--product`
+ added command `dokimi eval score panel`
+ option `--answers`
+ option `--concurrency`
+ option `--help/-h`
+ option `--judge-configs`
+ option `--judge-temperature`
+ option `--limit`
+ option `--model`
+ option `--output`
+ option `--product`
+ option `--provider`
+ option `--roles`
+ added command `dokimi eval score pointwise`
+ option `--answers`
+ option `--concurrency`
+ option `--help/-h`
+ option `--judge-model`
+ option `--judge-provider`
+ option `--judge-temperature`
+ option `--output`
+ option `--product`
+ option `--run-id`
+ added command `dokimi eval score ragas`
+ option `--answers`
+ option `--help/-h`
+ option `--ragas-model`
+ option `--ragas-provider`
+ added command `dokimi eval score reference`
+ option `--answers`
+ option `--concurrency`
+ option `--help/-h`
+ option `--judge-model`
+ option `--judge-provider`
+ option `--no-judge`
+ option `--output/-o`
+ option `--questions`
+ added command `dokimi eval tasks`
+ option `--help/-h`
+ added command `dokimi eval tasks list`
+ option `--help/-h`
+ option `--tasks-root`
+ added command `dokimi eval triggers`
+ option `--help/-h`
+ added command `dokimi eval triggers generate`
+ option `--catalog`
+ option `--format`
+ option `--help/-h`
+ option `--model`
+ option `--out`
+ option `--provider`
+ option `--questions`
+ option `--rewrite`
+ option `--strict`
+ option `--target`
+ option `--trigger-set`
~ `dokimi eval score` subcommand required: None -> True
~ `dokimi eval score` parameters changed:
- removed option `--answers`
- removed option `--concurrency`
- removed option `--judge-model`
- removed option `--judge-provider`
- removed option `--judge-temperature`
- removed option `--output`
- removed option `--product`
- removed option `--run-id`Updated on every push; the |
|
✅ OpenCodeReview: Review complete: 0 finding(s) across 116 selected item(s). Review details
|
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #325 +/- ##
=======================================
Coverage 94.05% 94.05%
=======================================
Files 297 297
Lines 38018 38033 +15
Branches 6424 6426 +2
=======================================
+ Hits 35756 35771 +15
- Misses 1452 1453 +1
+ Partials 810 809 -1
🚀 New features to boost your workflow:
|
…m1-eval Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com> # Conflicts: # dokimi/docs/benchmarking-and-comparison.md
The top-level CLI table still named personas and questions as live roots. Both are tombstones now (they exit 2 with a moved line), so list them as eval personas and eval questions. Thread: PRRT_kwDOVBg7g86yOm97 Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
eval tasks list --tasks-root <missing> is refused with exit 2 and a "not a directory" line, not a silent success. The empty-listing trap applies only to an existing empty directory. Thread: PRRT_kwDOVBg7g86yOm9z Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
eval score is a live group, so the moved-and-exit-2 rule does not cover bare eval score: it exits 2 with a usage error, and eval score --help lists the leaves. Thread: PRRT_kwDOVBg7g86yOm9x Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
The stale bare eval score reference in the methodology (judge-independence warning), benchmarking and runs docs now names eval score pointwise. Surface lists that named the tombstoned questions and personas roots now name eval questions and eval personas. Thread: PRRT_kwDOVBg7g86yOm94 Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
The new "see eval inspect" line in import_path had no test (Codecov patch: 1 line missing). A file no adapter recognises now has a test that names the error and the path. Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
| hits, so on those queries it is stricter than the `skill-catalog:` arm; `skill-creator --target <skill>` (a catalog skill) writes an | ||
| [anthropics/skills skill-creator](https://github.com/anthropics/skills/tree/main/skills/skill-creator) | ||
| eval set; `questions` writes `questions.v2` with `expected_skill` for the arm below. | ||
| eval set; `eval questions` writes `questions.v2` with `expected_skill` for the arm below. |
There was a problem hiding this comment.
Nit: questions here is an output-format value, not the retired CLI root. eval triggers generate still accepts --format questions (alongside reach and skill-creator); --format 'eval questions' is invalid, and the eval questions group does not perform this export. Keep the format name unchanged, preferably spelling it as --format questions.
Suggestion:
| eval set; `eval questions` writes `questions.v2` with `expected_skill` for the arm below. | |
| eval set; `--format questions` writes `questions.v2` with `expected_skill` for the arm below. |
There was a problem hiding this comment.
Right, and thanks for the catch. eval questions has only the generate, analyze, refine and review leaves (dokimi eval questions --help), so it does not write questions.v2 with expected_skill. The export is eval triggers generate --format questions: --format {reach,skill-creator,questions} is in its help, and catalog.py _write_trigger_set calls save_questions_artifact(ts.to_questions(...)) for it.
Fixed in d58f125 with the line spelled as you suggested, plus the full command name so the flag cannot be read as belonging to the bullet's skill-creator item.
…s group `eval questions` has generate, analyze, refine and review leaves only; the questions.v2 export with expected_skill is `eval triggers generate --format questions`. Thread: PRRT_kwDOVBg7g86yT_9o Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
vlad-perevezentsev
left a comment
There was a problem hiding this comment.
Review at d58f125. The move itself is right. Each of the 21 old paths prints moved: dokimi <new argv> and exits 2 without running. Each new path is a leaf with the same options as the old one. No code, test, bundled skill or workflow still calls an old path. What is left is wording (help text, the changelog, a few docs) and one routing case: a typo after eval score. Both are in the line comments.
What I ran, at d58f125:
make ci-local --offline: 0 failed, 19 passed, 13 skipped (the network and Docker steps).- The CLI snapshot of the base against this head: the only leaves removed are the 21 old paths, and the only leaves added are their 21 new paths. For each pair the options are the same (names, defaults, choices, required). No other leaf changed.
- A mutation run: I changed the tombstone exit code from 2 to 97. Only the 50 tombstone tests in
test_cli_eval_moves.pyandtest_cli_routes.pyfail; 12,002 pass. So no other test still calls an old path and passes only because that path exits 2. - The old and new paths by hand:
eval scorebare, with--help, with--answers a.jsonand with a typo;personas --help;repo tasks check .. I also parsed therepo-eval.ymlstep's argv (eval check . --manifest --task --out --warm --allow-unsupported): it reachescmd_repo_tasks_checkwith the same flags.
Checked, no issues
- Tombstones: they follow #94 D4 and its migration policy: name the new command, run nothing, exit 2.
eval scorefollowed by a leaf, bare, or with only--helpis not caught by its own tombstone. task_inspect.v1labels:tasks inspectand this schema are not in 0.1.0, so no released output has the oldconsumerslabels. The old enum values are kept only so thatschema_compatagainst the base passes, and nothing in dokimi reads the labels back.- Dispatch: no code reads the subcommand
destnames that changed, and every new group requires a leaf. - The bot's threads: all five are fixed at this head, including the open one on
--format questions(evaluating-treatments.md:553).
| # A group that stays under its own name (`eval score` -> `eval score pointwise`) keeps its | ||
| # help and its usage error when it has no leaf; any other argument is an old call. | ||
| if tomb.new[:n] == _canonical(tomb.old) and all(a in ("-h", "--help") for a in argv[n:]): | ||
| continue |
There was a problem hiding this comment.
A typo after eval score is reported as a moved command.
dokimi eval score pointwse --answers a prints moved: dokimi eval score pointwise pointwse --answers a and exits 2. eval score data.json does the same. The old eval score took only options, so a plain word right after eval score is never an old call, and the suggested argv is not a command either. argparse's own invalid choice: 'pointwse' (choose from pointwise, ragas, ...) is the useful message here.
Suggestion: skip a group that stays in place unless the next argument is an option:
if tomb.new[:n] == _canonical(tomb.old) and (
all(a in ("-h", "--help") for a in argv[n:]) or not argv[n].startswith("-")
):
continueI tried this. test_cli_eval_moves.py and test_cli_routes.py pass, except test_an_old_path_exits_2_and_names_the_new_argv[eval score], which feeds eval score data.json. Give that test an option tail (--answers a.json) instead.
|
|
||
| | Before | After | | ||
| |---|---| | ||
| | `tasks inspect` | `eval inspect` | |
There was a problem hiding this comment.
33 other fragments in changelog.d/ still name the old paths, and they go into the same release notes as this one.
The PR description calls them history, but they have not been released yet. scriv collect renders every file in changelog.d/ into the next release and only then deletes it; 0.1.0 is already in CHANGELOG.md. So 0.2.0 will list "Added: tasks inspect <path>" (20261023_120000_napetrov_task-format-detect.md) and, in the same notes, say that tasks inspect moved. tasks inspect, questions import and eval reference are not in 0.1.0 at all. For someone upgrading, they are new commands announced under names that already exit 2.
Suggestion: rename the paths in the unreleased fragments using the table above. At least do it in the eight that mention tasks inspect, questions import or eval reference.
| def register(sub, positive_int) -> None: | ||
| """Add the `repo` subcommand group.""" | ||
| def register(sub, positive_int, eval_sub) -> None: | ||
| """Add the `repo` subcommand group. Its check moved to `eval check` (#94 M1).""" |
There was a problem hiding this comment.
The repo help still lists the "task self-check", which moved to eval check.
dokimi --help and dokimi repo --help show "... budget, task self-check, agent runs and their report" (line 429), but repo tasks check now only prints moved: dokimi eval check.
Suggestion: drop "task self-check" from that help string.
| def register(sub, positive_int) -> None: | ||
| """Add the `eval` subcommand group.""" | ||
| def register(sub, positive_int): | ||
| """Add the `eval` subcommand group and its `score` and `judge` groups; return the eval subparsers. |
There was a problem hiding this comment.
The eval help no longer says what the group holds.
dokimi --help shows eval Evaluate answers [paid] (line 471). The README's CLI block says "Score answers, run RAGAS, or use a multi-judge panel" (README.md:128). eval now also holds personas, questions, import, inspect, check, tasks and triggers. So someone looking for where questions or repo tasks check went gets no hint from the top-level help.
Suggestion: something like help="Build and check eval sets, score answers, calibrate judges", and the same in the README line.
| scores degraded answers lower. | ||
|
|
||
|  | ||
|  |
There was a problem hiding this comment.
The picture still shows the old commands.
The alt text now says dokimi eval check and dokimi eval judge validate. The image assets/readme/eval-checks.png itself still shows $ dokimi repo tasks check and $ dokimi eval judge-validity, and both of these now exit 2.
Suggestion: regenerate the image with the new names.
| | `catalog scan --root <missing>` | `--root is not a directory: <path>` | 1 | | ||
| | `tasks run --tasks-root <missing>` | `FileNotFoundError: Task directory not found: demo-widget` | 1 | | ||
| | `tasks list --tasks-root <missing>` | prints nothing | 0 | | ||
| | `eval tasks list --tasks-root <missing>` | `--tasks-root is not a directory: <path>` | 2 | |
There was a problem hiding this comment.
Nit: The two rows above have the same problem the bot found in this one.
On this head, catalog scan --root /nonexistent exits 2, not 1. tasks run --tasks-root /nonexistent prints --tasks-root is not a directory: /nonexistent and also exits 2.
Suggestion:
| `catalog scan --root <missing>` | `--root is not a directory: <path>` | 2 |
| `tasks run --tasks-root <missing>` | `--tasks-root is not a directory: <path>` | 2 |
| # Builds the image from the manifest's Dockerfile (the tree without its | ||
| # tasks), then grades the null and the oracle workspace in it. | ||
| - name: repo tasks check | ||
| - name: eval check |
There was a problem hiding this comment.
Nit: The step now runs eval check, but the header comment still says the job runs repo tasks check (line 11).
The Summary step also prints ### repo tasks check headings (lines 411 and 415). If those headings follow the job name on purpose, keep them. The header comment describes the command, so it should name eval check.
| A path that is itself a live leaf under the old prefix is not a tombstone: ``eval score | ||
| pointwise`` is live even though ``eval score`` moved there. |
There was a problem hiding this comment.
Nit: Three docstrings here no longer match the code.
Leaf (line 39) gives ("eval", "score") as its leaf example, but that is now a group. Tombstone (line 48) says it always answers with new and exits 2, which is not true for a bare eval score or for eval score --help. _is_route (line 265) says a tombstone on a group shadows every route under it, but moved_argv now skips live leaves. These docstrings explain the tricky part for whoever writes the M2/M3 entries.
Suggestion: use ("eval", "score", "pointwise") as the example, and state the exception for a group that stays in place in the other two.
| tasks_p = repo_sub.add_parser("tasks", help="Review tasks built from past reviews (no LLM)") | ||
| tasks_sub = tasks_p.add_subparsers(dest="repo_tasks_cmd", required=True) | ||
| check_p = tasks_sub.add_parser( | ||
| # eval check (#94 M1): the self-check of `eval check`, moved under eval |
There was a problem hiding this comment.
Nit: A few old names are left, one of them in user output.
evaluate.py:146and:198passcontext="panel-score"/"eval-score", soeval score panelprints⚠ Evaluator independence warning (panel-score): ...to stderr.questions.v2.json:225still saysquestions generate --validate.- This comment says "the self-check of
eval check, moved under eval", which is circular: it moved fromrepo tasks check. Line 26 still says "shared bytasks checkandrun". - The module docstring at
evaluate.py:4still says "score, ragas, panel-score". test_cli_routes.py:267still says "no command moves in this release".
| # Build image for dokimi's own repository-mode evals: CI's Python, the lock, every CI tool, | ||
| # and a warm uv cache so `make dev` inside a run works without downloading anything. | ||
| # Pinned by digest, like the tools below, so a rerun grades in the same image. To move it: | ||
| # `docker buildx imagetools inspect python:3.11-slim-bookworm`, then `repo tasks check`. | ||
| # pinned by digest. To move the pin: `docker buildx imagetools inspect python:3.11-slim-bookworm`, then `eval check`. |
There was a problem hiding this comment.
Nit: Shortening this comment dropped the reason for the warm uv cache.
The old text said the cache is there so make dev inside a run downloads nothing. Lines 18-21 now warm it with no word on why, so someone bumping the image may drop it.
Suggestion: put a one-line comment above line 18, which keeps the two-line rule:
# A warm uv cache, so `make dev` inside a run downloads nothing.
Summary
Stage M1 of #94 (CLI API v2, tracking #276): the evaluation commands move under
dokimi eval, handler-neutral.personasandquestionsroots go away; the evaluation leaves oftasks,catalogandrepomove undereval, grouped intoeval score,eval judge,eval questions,eval personasandeval triggers.Every old path is a tombstone: it prints
moved: dokimi <new argv>to stderr, exits 2 and runs nothing. Arguments carry over unchanged.repo run,repo report,repo compareandrepo tasks replaystay where they are.Changes beyond the moves:
task_inspect.v1consumers enum keeps the old labels and adds the new ones (removing enum values is breaking underschema_compat).questions panel-reviewparser renamed toreviewto match the route table.repo-eval.yml: the step runsdokimi eval check; the job namerepo tasks check ${{ matrix.task }}is unchanged in case it is a required check.89809a25(includes feat(repo): Codex and Copilot CLI harness profiles, native review mode #116 and fix(repo): scan accepts an Action without @ref that a workflow uses #306). Two docs files that feat(repo): Codex and Copilot CLI harness profiles, native review mode #116 touched were updated for the new names.docs/reference/cli-interface.jsonregenerated (make cli-snapshot).Evidence
tests/test_cli_eval_moves.py: for each of the 21 old paths and the two retired roots, exit 2 withmoved: dokimi <new argv>, arguments preserved; each new path is a live leaf; thepersonasandquestionsroots are gone.tests/test_cli_routes.py: tombstone table is clean (tombstone_problems() == []); paid leaves match the route table.89809a25).make ci-localwithTMPDIR=/tmpon the final tree before the last rebase: 0 failed, 30 passed, 7 skipped (pytest inside: 11790 passed, 6 skipped). After the rebase, the diff is content-identical except index hashes and hunk offsets; the targeted tests (test_record_readers,test_judge_reliability,test_cli_eval_moves,test_cli_routes,test_repo_l0_cases,test_repo_l0_versions) pass: 572 passed. The PR's CI run is the full check of the rebased head.changelog.d/20261030_160000_napetrov_eval-group-m1.md:### Changedwith the before-to-after table and upgrade notes.Merge Danger
eval scoreis now a group (its old pointwise behaviour moved toeval score pointwise);moved_argvskips a tombstone when argv continues into a live leaf, andtombstone_problemsallows a group to stay under its own name.task_inspectoutput values change.consumersnow emitseval triggers generateandeval importwhere it saidcatalog trigger-setandquestions import. The schema enum keeps both, so the schema check passes, but a JSON consumer that matches the old strings must switch. Reviewers: confirm this is wanted rather than keeping the old emitted labels.repo-evaljob name is unchanged on purpose; check whether it is a required status before renaming it later.Held or out of scope (flagged, not changed here)
repo validate,explore list, native-import naming.catalog trigger-set --formatto--dialect, and thepython cli.pyhints inbaseline.pyare out of scope..agent-eval/tasks/review-pr-conventions/oracle_answer.mdandreview.patch(historical fixtures), andCHANGELOG.mdand existingchangelog.d/fragments (history).Refs #94, #276
🤖 Generated with Claude Code