Skip to content

feat: onboarding skill evals — single-turn + multi-turn with mocked tools - #62

Merged
vahidlazio merged 2 commits into
mainfrom
onboard-evals
Aug 3, 2026
Merged

feat: onboarding skill evals — single-turn + multi-turn with mocked tools#62
vahidlazio merged 2 commits into
mainfrom
onboard-evals

Conversation

@vahidlazio

Copy link
Copy Markdown
Collaborator

What

Adds automated quality evals for the onboarding skills (onboard-confidence, setup-warehouse, setup-warehouse-bigquery), extending the eval stack that already covers the four migration skills. Results log to Braintrust as onboard-single-turn-v1 / onboard-multi-turn-v1.

How

Multi-turn harness generalized. The driver now selects a SkillHarness per scenario; migration scenarios are byte-for-byte unchanged. The onboarding harness mocks all three tool surfaces the skill uses:

  • Bash — regex-routed canned outputs (bundled auth.py → mock JWT, userinfo, availability checks, account creation, telemetry endpoints, gcloud/bq)
  • AskUserQuestion — scripted answers matched by regex against question/header/options, first-option fallback with a warning
  • MCP — identity, clients/secrets, invites, and the warehouse suite, with in-memory state

Scenarios script failure sequences declaratively: bash_responses (e.g. availability false-then-true) and tool_responses (e.g. getIdentityInfo failing until the user runs /mcp).

Coverage. 13 multi-turn scenarios (default entry, create-account happy + 4 error paths incl. under-review verify-vs-fraud disambiguation, setup wizard incl. context-schema-before-targeting and MCP retry, invite batch, status, warehouse dispatch + BigQuery end-to-end) and 16 single-turn cases (routing, error interpretation, validation, email-derived name suggestions, communication rules). The telemetry contract is asserted: key acquired, events published, never mentioned to the user.

Scoring. Deterministic assertions (incl. new tool_call_arg_not_contains) plus a conversation-level internal-leak LLM judge; single-turn adds a forced Next step: verdict footer, content checks, a binary leak denylist, and onboarding-tuned judges.

Findings

The evals caught a real defect on first run: models narrate "let me send the final telemetry" at flow end, violating the telemetry-transparency rule. Fixed by adding a Never narrate telemetry rule to every skill's telemetry block (second commit); the BigQuery scenario passes 11/11 with it.

Current scores: single-turn 100% on 5/6 scorers (NextStep 93.75%, one nondeterministic miss); multi-turn AssertionsPassed 99.3% pre-fix.

🤖 Generated with Claude Code

vahidlazio and others added 2 commits July 31, 2026 15:04
Generalize the multi-turn harness behind a SkillHarness interface
(migration behavior unchanged) and add an onboarding toolset that mocks
Bash (regex-routed auth/REST/gcloud responses), AskUserQuestion
(regex-matched scripted answers), and the onboarding/warehouse MCP tools.
Scenarios can script failure sequences via bash_responses and
tool_responses.

- 13 multi-turn scenarios: default entry, create-account happy + error
  paths (name taken, under-review verify vs fraud, work email), setup
  wizard (context schema before targeting, MCP retry, no redundant
  questions), invite batch, status, warehouse dispatch + BigQuery
- 16 single-turn cases: routing, error interpretation, validation,
  email-derived suggestions, communication; scored by a Next-step
  verdict footer, content checks, a binary internal-leak denylist, and
  onboarding-tuned LLM judges
- telemetry contract asserted: key acquired, events published, never
  mentioned in user-visible text
- Braintrust experiments onboard-single-turn-v1 / onboard-multi-turn-v1

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The new multi-turn evals caught models announcing 'let me send the
final telemetry' at flow end — telemetry is the only action left to
narrate there, so the transition-text habit beats the existing 'never
mention it' rule. Add an explicit never-narrate rule to every skill's
telemetry block; the BigQuery scenario passes 11/11 with it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vahidlazio
vahidlazio merged commit b8bdd15 into main Aug 3, 2026
1 check passed
@vahidlazio
vahidlazio deleted the onboard-evals branch August 3, 2026 11:38
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