feat(evals): Mason eval scaffold — ADK 11-criteria + dryfit→Langfuse datasets - #13
Draft
nadyyym wants to merge 1 commit into
Draft
feat(evals): Mason eval scaffold — ADK 11-criteria + dryfit→Langfuse datasets#13nadyyym wants to merge 1 commit into
nadyyym wants to merge 1 commit into
Conversation
…datasets Runnable skeleton (not live-executed) tying model-vs-model evals to the dryfit rig: - scripts/evals/eval_run.py — ADK google.adk.evaluation harness; model is parameterized via per-role LiteLLM env vars (SIGNAL_AGENT_MODEL etc.) applied before agent import, so the same golden set runs across Gemini-3-Flash vs Opus. - scripts/evals/eval_dataset.py — runs the dryfit rig (dryfit_to_posthog.py) and uploads its ground-truth golden cases as a Langfuse dataset (one item per planted signal template; stable ids = idempotent upsert). - scripts/evals/eval_compare.py — runs the same eval set per profile in isolated subprocesses, emits markdown + JSON comparison table. - scripts/evals/model_profiles.json — gemini-3-flash vs opus-baseline env maps. - scripts/evals/golden/ — one checked-in golden eval set (seat_based_smoke) + ADK criteria config so make eval-run has something to run. - Makefile — eval-dataset / eval-run / eval-compare (+ offline variant) targets. - scripts/evals/README.md — runbook + exactly what needs creds/live-run. Validated offline: all py compiles, JSON valid, --help works, and the dryfit→Langfuse item transform verified against a synthetic ground_truth.json. Live validation pending pip install + model/Langfuse creds (see README). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Scaffolding to evaluate the Mason (
upsell_ranker) pipeline systematically and to compare model profiles (Gemini-3-Flash vs the Opus baseline) on the same eval set. Closes the gap between the dryfit E2E rig (which produces ground truth) and a repeatable, model-parameterized eval surface.This is scaffolding — runnable skeletons + automation, not live-executed. Based on
feat/mason-flash3-batched-groundedbecause the dryfit rig (scripts/dryfit_e2e/*) and the LiteLLM per-role model wiring live there, not onmaster.What
scripts/evals/eval_run.py— ADKgoogle.adk.evaluation(11-criteria) harness. Model is parameterized via per-role LiteLLM env vars (SIGNAL_AGENT_MODEL,SIGNAL_REVIEWER_MODEL,DWH_ANALYST_MODEL,UPSELL_AGENT_MODEL) applied before agent import. No native compare mode — model-vs-model = run once per profile.scripts/evals/eval_dataset.py— runs the dryfit rig (dryfit_to_posthog.py) → capturesground_truth.json→ uploads one Langfuse dataset item per planted signal template (stable ids → idempotent upsert).input= warehouse shape,expected_output= the signal Mason should surface.scripts/evals/eval_compare.py— runs the golden set across 2+ profiles in isolated subprocesses → markdown + JSON comparison table.scripts/evals/model_profiles.json—gemini-3-flashvsopus-baselineenv maps.scripts/evals/golden/— one checked-in golden eval set (seat_based_smoke.evalset.json) + ADK criteria config, somake eval-runhas something to run.Makefile(v0.0.2 root) —eval-dataset/eval-dataset-offline/eval-run/eval-compare.scripts/evals/README.md— full runbook.dryfit → Langfuse dataset flow
Validated offline
--helpworks for all three scripts.ground_truth.json(correct template grouping, event dedup, instance counts).Needs creds / live-run to fully validate
pip install -r requirements.txt(ADK/langfuse/litellm not in this checkout) → thenmake eval-run.ANTHROPIC_API_KEY/GEMINI_API_KEY).~/.claude/secrets/mason-flash3.env) formake eval-datasetupload;DRYFIT_DIR+ PostHog Project B keys for fresh generation (ormake eval-dataset-offline).🤖 Generated with Claude Code