Skip to content

chore: define the online evals rubric and score configs - #1

Open
RobertCrupa wants to merge 3 commits into
poc/workflow-runnerfrom
feat/online-evals-rubric
Open

RobertCrupa wants to merge 3 commits into
poc/workflow-runnerfrom
feat/online-evals-rubric

Conversation

@RobertCrupa

Copy link
Copy Markdown

Closes apify/ai-team#268. Part of apify/ai-team#249 (online evals), stacked on `poc/workflow-runner`.

  • `actors/judge/src/rubric.ts`: the `apify-ai-turn` v1 rubric, six PASS/FAIL criteria, and the online score names derived from it (`agent_judge`, `agent_judge_`), asserted under the 35-char cap.
  • `actors/judge/src/score-configs.ts` + `scripts/create-score-configs.ts`: idempotent BOOLEAN score-config creation; pure plan (create / exists / conflict) is unit-tested, the script is the I/O and has not been run against any project.
  • vitest and a `typecheck` script for the judge workspace; README section.

Deviations from the issue text, on purpose:

  • Score names are `agent_judge*`, not `overallVerdict*`, to match #269 and the #271 monitor.
  • "overallVerdict = the taskCompletion verdict" is not implemented: #269 makes the holistic verdict a separate judgment.
  • errorRecovery is not scored on turns without a tool error (#269).

Offline `datasetRun` mode is untouched.

Online evals (ai-team#268) need the score schema fixed before anything
judges, because Langfuse score configs can only be archived, never deleted.

- src/rubric.ts: ONLINE_RUBRIC { name: 'apify-ai-turn', version: 1 } with
  six PASS/FAIL criteria and a separate holistic verdict (not derived from
  taskCompletion, per ai-team#269); score names agent_judge and
  agent_judge_<criterion> derived from the rubric; 35-char cap and charset
  asserted at import time.
- src/score-configs.ts: one BOOLEAN desired config per name and the pure
  create plan (create / exists / conflict on dataType mismatch or archived).
- scripts/create-score-configs.ts: idempotent I/O around the plan, run via
  `npm run create-score-configs --workspace actors/judge`. Not executed.
- test/: vitest for the rubric shape, name derivation, the cap and the plan.
- README: online rubric, score semantics, why BOOLEAN, archive-only configs.
- errorRecovery is not scored on turns without a tool error (ai-team#269);
  the rubric text and README row no longer count "no error" as a PASS.
- Conflict plan entries list every same-name config (id, dataType, archived)
  instead of naming only the first one.
- Add tsconfig.check.json and `npm run typecheck` covering src, scripts and
  test with noEmit; the build tsconfig is unchanged.
@RobertCrupa
RobertCrupa added this pull request to stack #6 September 9, 2026 15:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants