Repository navigation
feat(cli): eval group: move the evaluation commands under eval (#94 M1) #325
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
base: main
Are you sure you want to change the base?
Changes from all commits
0574561
61a4863
4eafc2d
6c6f37a
b047b29
7ef8022
3ab7b6c
d58f125
7dd04cf
713482a
8387f45
06d3c01
8d4104d
1f14ced
44073d5
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 |
|---|---|---|
|
|
@@ -3,26 +3,8 @@ | |
|
|
||
| name: repo-eval | ||
|
|
||
| # The no-LLM checks of a repository's evals (dokimi/docs/repo-evaluation-contract.md), | ||
| # for repositories to call from their own workflow: | ||
| # | ||
| # validate `repo validate`: the manifest and every task.json (seconds; a gate) | ||
| # scan `repo scan`: the L0 claims of the guidance (report only) | ||
| # tasks-check `repo tasks check`, one job per selected task: the untouched | ||
| # workspace fails the gate, the reference solution passes it | ||
| # | ||
| # Nothing here calls a model or reads a secret. The caller pins dokimi twice, | ||
| # by the same commit SHA (or tag): in `uses: ...@<sha>` and in `dokimi-ref`. The | ||
| # ref installs dokimi and, through its requirements.lock.txt, every dependency, | ||
| # so a rerun checks with the same framework. A branch name is refused. The | ||
| # calling job grants `contents: read`, all any job here asks for. | ||
| # | ||
| # Task selection (`tasks`): `changed` on a pull request is the tasks whose | ||
| # directories it touches, plus `smoke-tasks` when it changes anything else the | ||
| # self-check depends on: the eval directory outside its tasks (harness, | ||
| # graders, Dockerfile; Markdown excepted), the manifest, the calling workflow | ||
| # file, or a path under `smoke-paths`. On a push `changed` diffs against the | ||
| # previous tip; on any other event it means `all`. | ||
| # The no-LLM checks of a repo's evals, as a reusable workflow: no model, no secret. | ||
| # Jobs, task selection and the pin rule: dokimi/docs/repo-evaluation-contract.md, "CI for a repository". | ||
|
|
||
| on: | ||
| workflow_call: | ||
|
|
@@ -74,14 +56,14 @@ on: | |
| default: 4 | ||
| warm: | ||
| description: >- | ||
| Pass --warm to `repo tasks check`: null and oracle run with network so a | ||
| Pass --warm to `eval check`: null and oracle run with network so a | ||
| cold cache fills (an ephemeral runner starts with empty caches) | ||
| required: false | ||
| type: boolean | ||
| default: false | ||
| allow-unsupported: | ||
| description: >- | ||
| Pass --allow-unsupported to `repo tasks check`: a task this runner misses the task.json | ||
| Pass --allow-unsupported to `eval check`: a task this runner misses the task.json | ||
| `host` requirements of passes its job (the reason is still in the log and summary) | ||
| required: false | ||
| type: boolean | ||
|
|
@@ -375,7 +357,7 @@ jobs: | |
| pip install --no-deps "dokimi @ git+https://github.com/$DOKIMI_REPO@$SHA#subdirectory=dokimi" | ||
| # 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 | ||
|
Contributor
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. Nit: The step now runs The Summary step also prints
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 06d3c01: the header line now says |
||
| env: | ||
| MANIFEST: ${{ inputs.manifest }} | ||
| TASK: ${{ matrix.task }} | ||
|
|
@@ -387,7 +369,7 @@ jobs: | |
| flags=() | ||
| if [ "$WARM" = true ]; then flags+=(--warm); fi | ||
| if [ "$ALLOW_UNSUPPORTED" = true ]; then flags+=(--allow-unsupported); fi | ||
| dokimi repo tasks check . --manifest "$MANIFEST" --task "$TASK" --out "$RUNNER_TEMP/repo-check" "${flags[@]}" | ||
| dokimi eval check . --manifest "$MANIFEST" --task "$TASK" --out "$RUNNER_TEMP/repo-check" "${flags[@]}" | ||
| # always(): a hung oracle ends in the job timeout, which cancels the job; a | ||
| # cancelled job still runs these steps, so the run leaves a verdict. | ||
| - name: Summary | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,41 @@ | ||
| ### Changed | ||
|
|
||
| - **The evaluation commands live under `eval` (#94 M1)** — `personas`, `questions` and the | ||
| evaluation leaves of `tasks`, `catalog` and `repo` are now under `dokimi eval`, and the | ||
| `eval` leaves are grouped into `eval score`, `eval judge`, `eval questions`, `eval personas` | ||
| and `eval triggers`. Every old path still answers, but it prints `moved: dokimi <new argv>` | ||
| to stderr and exits 2 without running anything, so a script fails loudly and names the new | ||
|
napetrov marked this conversation as resolved.
Resolved
|
||
| command. `eval score` stays a live group: bare `eval score` exits 2 with a usage error, and | ||
| `eval score --help` lists its leaves. Move the scripts to the new paths before the next release. The arguments are | ||
| unchanged. `dokimi repo tasks replay`, `repo run`, `repo report` and `repo compare` stay where | ||
| they are. | ||
|
|
||
| | Before | After | | ||
| |---|---| | ||
| | `tasks inspect` | `eval inspect` | | ||
|
Contributor
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. 33 other fragments in The PR description calls them history, but they have not been released yet. Suggestion: rename the paths in the unreleased fragments using the table above. At least do it in the eight that mention
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. Holding this one for a decision, so I have not changed the 33 fragments in this PR. The fragments are other authors' unreleased entries, and renaming them is wider than this PR. Options: (a) rename the old paths in all 33 in this PR, using the table in the eval-group entry; (b) rename only the eight that name |
||
| | `repo tasks check` | `eval check` | | ||
| | `tasks list` | `eval tasks list` | | ||
| | `personas discover` | `eval personas discover` | | ||
| | `personas approve` | `eval personas validate` | | ||
| | `questions generate` | `eval questions generate` | | ||
| | `questions analyze` | `eval questions analyze` | | ||
| | `questions refine` | `eval questions refine` | | ||
| | `questions panel-review` | `eval questions review` | | ||
| | `questions import` | `eval import` | | ||
| | `catalog trigger-set` | `eval triggers generate` | | ||
| | `eval score` | `eval score pointwise` | | ||
| | `eval pairwise` | `eval score pairwise` | | ||
| | `eval checklist` | `eval score checklist` | | ||
| | `eval panel-score` | `eval score panel` | | ||
| | `eval grounding` | `eval score grounding` | | ||
| | `eval ragas` | `eval score ragas` | | ||
| | `eval reference` | `eval score reference` | | ||
| | `eval judge-validity` | `eval judge validate` | | ||
| | `eval judge-wording` | `eval judge wording` | | ||
| | `eval cross-judge` | `eval judge agreement` | | ||
| | `personas` (bare, or its help) | `eval personas` | | ||
| | `questions` (bare, or its help) | `eval questions` | | ||
|
|
||
| The `[free]`/`[paid]` labels in `--help` follow the commands. The `consumers` labels that | ||
| `tasks inspect` reports (and the `task_inspect.v1` schema enum) name the new paths. The | ||
| `repo tasks check` step of `repo-eval.yml` runs `dokimi eval check`; its job name is unchanged. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -66,7 +66,7 @@ checks the eval set itself: that it parses, that each task's grader fails an | |
| untouched workspace and passes the reference solution, and that an LLM judge | ||
| scores degraded answers lower. | ||
|
|
||
|  | ||
|  | ||
|
Contributor
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. The picture still shows the old commands. The alt text now says Suggestion: regenerate the image with the new names.
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. Holding this one for a decision. The PNG is a static picture with no generator in the repo, and it still shows |
||
|
|
||
| **Where it is going:** mapping each claim in a skill to the tasks that | ||
| exercise it, so the claims no eval tests are listed next to the score. | ||
|
|
@@ -93,7 +93,7 @@ From the studies so far ([evidence](skill-novelty-evidence.md)): | |
| | `skill:` | a skill (`SKILL.md`) injected as context | | ||
| | `profile:` | an agent persona system prompt | | ||
| | `agent:` / `skill-agent:` | **agentic** use — the model gets a tool and *decides* whether to fetch docs / load the skill | | ||
| | `skill-catalog:` | **selection** — every skill in a catalog is offered (a copy under a `template/` or `templates/` directory, a byte-identical mirror that loads under the same skill name, and anything under a vendored or VCS directory such as `.git`, `node_modules` or `.venv` are left out); scored on which one loads (`catalog trigger-set` builds the queries) | | ||
| | `skill-catalog:` | **selection** — every skill in a catalog is offered (a copy under a `template/` or `templates/` directory, a byte-identical mirror that loads under the same skill name, and anything under a vendored or VCS directory such as `.git`, `node_modules` or `.venv` are left out); scored on which one loads (`eval triggers generate` builds the queries) | | ||
|
|
||
| Two fine-print notes: | ||
|
|
||
|
|
@@ -351,7 +351,7 @@ code. | |
| partly implemented)* what a repository provides to be evaluated as a whole: | ||
| `repo-eval.yaml`, `task.json`, the `grade` entry point and `grade.json`, | ||
| harness profiles, and the guidance reach probe; and how to run its task | ||
| self-check, agent runs, report and arm comparison (`repo tasks check`, | ||
| self-check, agent runs, report and arm comparison (`eval check`, | ||
| `repo run`, `repo report`, `repo compare`). Tasks and graders stay in the scanned repository. | ||
| - [repo-evaluation-mergeability.md](repo-evaluation-mergeability.md) — | ||
| *(proposed)* grading whether a maintainer would merge a test-passing change: | ||
|
|
||
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.
Nit: Shortening this comment dropped the reason for the warm uv cache.
The old text said the cache is there so
make devinside 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.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 8d4104d with the one-line comment above the
ENVline, worded as you suggested.