Repository navigation
feat: end vera pipeline with the pooled score - #257
Conversation
| } | ||
|
|
||
|
|
||
| def _dimension_columns(df: Any) -> frozenset[str]: |
There was a problem hiding this comment.
should we read this from the rubric?
There was a problem hiding this comment.
Ideally yes, but there's no rubric to read yet. An evaluation folder doesn't record which rubric produced it: judging writes the per-conversation TSVs, answers.tsv and results.csv, and nothing names the rubric file. vera pool only receives evaluation folders, so the data is the only source today. Falling back to the SI rubric (what judge.score_utils.DIMENSIONS does) would be wrong for HFO.
Inside the pipeline we do know the rubric, but a pipeline run has exactly one, so the check can't fail there. It matters for a manual vera pool across runs.
The real fix is already on the roadmap: once a run records its config.json (Traceability) and evaluations persist a rubric fingerprint (Rubric-agnostic scoring), pooling should compare fingerprints instead of dimension names. The docstring and roadmap say this is a stand-in until then. Happy to make the note louder if you want.
caebecf to
3aab7b5
Compare
jgieringer
left a comment
There was a problem hiding this comment.
thanks for putting in different PR 😄 LGTM
With more than one user model, the pipeline pools the per-model evaluations via score.run_pooling and prints the pooled folder as the headline score. Pooling now refuses sources whose dimension columns differ. Record the design issues this surfaced in the roadmap. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3aab7b5 to
796d52b
Compare
Summary
With more than one user model,
vera pipelinenow finishes with the pooled headline score instead of printing the folders and leaving pooling to the user. This is the remaining "pipeline ends with the final score" item in the roadmap's Scoring split.Stacked on #255 (
vera pool). GitHub retargets this PR when #255 merges.vera_cli/pipeline.py: after scoring, if a run produced 2+ evaluations, it prints them, callsscore.run_pooling, and printsHeadline (pooled) score: <folder>.scoringsection'spersonas/skip_risk_analysis; output goes undergeneration.output(wherevera poolwrites) until Traceability adds<target>/c_<chatbot>/pooled/.PipelineRun, so never across targets. Errors propagate like any stage. One user model is unchanged.score/pool.py): pooling refuses sources whose dimension columns differ (read from the data, not the SI rubric), a stand-in for the planned rubric fingerprint.vera poolreports it as a CLI error.vera judge;pipelineruns every stage. Updated indocs/architecture.md,docs/ARCHITECTURE-SPINE.md,docs/pipeline.md, and the module docstring.docs/cli.md(pipeline section;vera poolis now "used behind the scenes byvera pipeline", as requested in feat: add vera pool, moving pooling into score/pool.py #255), README recommended profile,docs/scoring.md, roadmap (moved to Completed), CHANGELOG.pipelineimports other commands' private functionsscore/importsjudge/Test plan
uv run pytest -m "not live"(1215 passed)results.csv,pool_metadata.json,scores/scores.jsonruff check,ruff format --check,pyright generate score utils vera_cli vera.py🤖 Generated with Claude Code