[bot] Merge master/17bcb5cc into rel/dev - #1711
Conversation
The visualization comparator required a ranking filter's `attribute` to match exactly, but `attribute` is optional in the AAC schema -- gen-ai models it as `NotRequired[str]` / `str | None` in all three of its ranking-filter types, and when it is absent AFM ranks over every dimension of the result. On a chart with exactly one dimension that is the same filter, so the comparator was stricter than the product contract and failed correct answers. Both Anthropic models consistently omit `attribute` while getting the metric and top/bottom-N right, which made this the largest visualization failure cluster: 14 of 49 viz failures in run 30850362312 (opus48 9, sonnet46 3, bedrock 2). No GPT combo is affected. `_normalize_ranking_filter` now fills an omitted attribute in with the visualization's sole dimension URI instead of comparing it as an empty string. The substitution is gated on there being exactly ONE distinct dimension: with two or more, omitting `attribute` ranks over the dimension tuple, which is a genuinely different filter, so those stay strict. It is applied to expected and actual alike, because datasets omit `attribute` too -- without symmetry an agent that supplies the more precise filter would fail against a fixture that omits it. Missing, None and "" now normalize identically, so `attribute: null` no longer differs from an absent key. Also make `validate_cross_references` return a score instead of raising. None, "" and non-string values reached `.startswith()` / `dict.get()` and blew up with AttributeError / TypeError mid-evaluation. This affected the `using` branch as well as `attribute`. Its test asserts the expected verdict per malformed case rather than comparing `ok` against the returned error-list length, which was a tautology against an implementation that returns exactly `len(errors) == 0`; confirmed non-vacuous by mutation. Verified by re-scoring all 48 expected/actual pairs lifted from run 30850362312 with the patched module: 14 flip FAIL -> PASS, 0 checks that CI reported as True became False. Note this raises opus48's pass rate ~4.5pp for comparator reasons, not model ones. JIRA: QA-28615 risk: nonprod Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
fix(gooddata-eval): make ranking attribute optional on 1-dim viz
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## rel/dev #1711 +/- ##
===========================================
+ Coverage 78.34% 78.40% +0.05%
===========================================
Files 271 271
Lines 18726 18741 +15
===========================================
+ Hits 14671 14693 +22
+ Misses 4055 4048 -7 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
🚀 Automated PR to perform merge from master into rel/dev with changes up to 17bcb5c (created by https://github.com/gooddata/gooddata-python-sdk/actions/runs/30970100815).