Commit Graph

8 Commits

Author SHA1 Message Date
Johannes Daxböck ad9e1f6641 fix(evals): Handle malformed judge responses gracefully
Add separate try/catch for JSON.parse in the judge so unparsable
LLM output gets a clear error message instead of a generic throw.
Add .default([]) to JudgeResponseSchema arrays so scenarios with
no negative_assertions don't silently score 0 when the LLM omits
the field.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 15:46:04 -07:00
Johannes Daxböck 8767f73f90 feat(evals): Add rails-otel scenario for ruby SDK eval
Tests that the agent detects an existing OpenTelemetry setup and
chooses the OTLP integration path — config.otlp.enabled instead of
config.traces_sample_rate, plus sentry-opentelemetry gem.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 15:38:50 -07:00
Johannes Daxböck 9025bffefb feat(evals): Add rails-rollbar-replace scenario for ruby SDK eval
Tests that the agent detects an existing Rollbar setup, removes it,
and replaces it with Sentry including migrating Rollbar API calls in
application code to Sentry equivalents.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 15:24:32 -07:00
Johannes Daxböck 577b26a38b docs(evals): Add assertion design guidance to README
Add "Writing good assertions" section covering general principles
and SDK-install-specific patterns. Update existing examples to use
config-prefixed keys consistently.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 15:13:35 -07:00
Johannes Daxböck bd808e84bf ref(evals): Tighten file assertions, minimize soft assertions
Prefix config keys with `config.` to ensure they appear as actual
config lines rather than in comments. Keep soft assertions to one
per scenario for semantic detection only. Relax sinatra file placement
to allow extracted initializer files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 15:00:38 -07:00
Johannes Daxböck f14f9eea5f feat(evals): Add rails-sidekiq scenario for ruby SDK eval
Adds a scenario that validates the agent detects Sidekiq in a Rails 8
project and recommends sentry-sidekiq alongside sentry-rails. Verified
with a custom file transport that all three telemetry types (event,
transaction, log) flow correctly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 14:41:06 -07:00
Johannes Daxböck d303161ff6 feat(evals): Add sinatra-basic scenario for ruby SDK eval
Tests the non-Rails code path: sentry-ruby only, Rack middleware
in config.ru, no Rails initializer. Validated with file-writing
transport (event + transaction envelopes confirmed).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 13:37:08 -07:00
Johannes Daxböck 5402298cfc feat(evals): Add eval infrastructure for SDK install skills
Add vitest-evals based eval system for testing SDK install skills
against realistic fixture projects with real Claude API calls.

Includes sandboxed runner with file tools (no shell/network), LLM judge
for soft assertions, auto-discovered scenarios, and CI workflow gated
on eval/skill path changes or run-evals label.

Initial scenario: sentry-ruby-sdk rails-basic (Rails 8, Puma, SQLite).
Assertions validated against real telemetry using a file-writing transport.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 13:25:08 -07:00