Skip to content

[bot] Merge master/72858ca7 into rel/dev - #1805

Merged
yenkins-admin merged 8 commits into
rel/devfrom
snapshot-master-72858ca7-to-rel/dev
Sep 10, 2026
Merged

[bot] Merge master/72858ca7 into rel/dev#1805
yenkins-admin merged 8 commits into
rel/devfrom
snapshot-master-72858ca7-to-rel/dev

Conversation

@yenkins-admin

Copy link
Copy Markdown
Contributor

🚀 Automated PR to perform merge from master into rel/dev with changes up to 72858ca (created by https://github.com/gooddata/gooddata-python-sdk/actions/runs/34461130544).

tychtjan and others added 8 commits September 10, 2026 11:12
…LP root spans

observe() resolves the item's dataset and exports one experiment root span per
(dataset item, run) over OTLP instead of creating a dataset-run item, so a run is
assembled from the langfuse.experiment.* attributes gd-eval writes on its own span.
The span is timed from the gen-ai turn it describes and carries the gen-ai trace id,
latency and cost as observation metadata. score_safe writes each score to every
destination the yielded ScoreTarget names, sending observationId only for the
experiment span so the gen-ai write is the call every client already accepts.
RunTraceContext carries the pinned window and the item's question so a skill's
scoring block keeps calling ctx.observe(pt, run_idx), and the api.dataset_run_items
compat shim exports the same span, raising LookupError for an item Langfuse does not
know. The trace-version upsert goes away: v4 observations are immutable, so the model
version moves onto gd-eval's span as langfuse.version.

jira: trivial
risk: low
…riment spans from every agentic kind

Each of the eight agentic skill modules now hands its evaluated question to
submit_trace_scoring as item_input, and passes the run's conversation id and
a compact per-run result dict into ctx.observe as conversation_id and output,
so experiment spans carry what was asked and what the run produced instead
of only a trace id. Adds a parametrized AST guard in test_trace_linker.py
asserting every submit_trace_scoring call carries item_input.

jira: trivial
risk: low
…s over OTLP

LangfuseSink.log_item now exports one OTLP experiment root span per
evaluated item and posts its four scores against that span's trace and
observation id, replacing the old ingestion batch (trace-create plus
score-create events) and the dataset-run-items call. The sink builds its
HttpxLangfuseClient through a new keyword-only transport parameter so
tests inject an httpx.MockTransport instead of patching httpx.Client.
When a dataset item cannot be resolved, the span is still exported and
scored, just without experiment attributes.

jira: trivial
risk: low
…st a fake server

Six end-to-end tests drive the real client, sink and CLI against the in-process fake
Langfuse server over HTTP, asserting the whole request sequence a run produces: poll
/v2/observations for the conversation, look the dataset item up, export one experiment
root span over OTLP, and score both that span and the gen-ai trace. Covers the inline
agentic path, the batched path through run_agentic_items, a dataset item Langfuse does
not know, the single-shot sink under the CLI, a refused span export and a rate-limited
score.

jira: trivial
risk: low
…aset-run code paths

Drops the dataset-run-items compat shim from the client and the legacy /traces,
/ingestion and /dataset-run-items routes from the fake server, so nothing in the package
names an endpoint Langfuse v4 does not serve. The CLI's local-dataset warning and the
skip-switch test now describe the dataset-item lookup that actually runs. A BOOLEAN score
is coerced to 1.0/0.0 by its dataType rather than its Python type, so the sink's int 1/0
serialises as a float, and the sink stamps LANGFUSE_TRACING_ENVIRONMENT and leads its tags
with "gd-eval" exactly as the agentic path does.

jira: trivial
risk: low
Documents the run as one Langfuse experiment whose items are traces with an
experiment-carrying root span, the four REST endpoints the package speaks and the
2026-11-16 Cloud cutover, and corrects the env vars to LANGFUSE_BASE_URL with LANGFUSE_HOST
as the legacy alias. The local-dataset and skip-switch notes describe what actually
happens now, and the AGENTS.md architecture row names every module under core/langfuse.

jira: trivial
risk: low
…den the Langfuse score path

Brings back api.dataset_run_items.create on the httpx client, exporting one experiment root
span for external callers on the dataset-run vocabulary. The score path answers a cancelled
drain before it reaches HTTP rather than sleeping through create_score's retries, an
unfiltered trace read pages at the API maximum and twice as deep, and observe() documents
the ScoreTarget contract for callers that write scores with create_score directly.

jira: trivial
risk: low
feat(gooddata-eval): link runs as Langfuse experiments via OTLP root spans
@yenkins-admin
yenkins-admin merged commit 298b321 into rel/dev Sep 10, 2026
1 check passed
@yenkins-admin
yenkins-admin deleted the snapshot-master-72858ca7-to-rel/dev branch September 10, 2026 09:32
@codecov

codecov Bot commented Sep 10, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 88.97638% with 14 lines in your changes missing coverage. Please review.
✅ Project coverage is 82.27%. Comparing base (6d1209d) to head (72858ca).
⚠️ Report is 588 commits behind head on rel/dev.

Files with missing lines Patch % Lines
...a-eval/src/gooddata_eval/core/agentic/_langfuse.py 92.30% 5 Missing ⚠️
...al/src/gooddata_eval/core/agentic/visualization.py 0.00% 2 Missing ⚠️
...ddata-eval/src/gooddata_eval/core/langfuse/sink.py 94.28% 2 Missing ⚠️
...eval/src/gooddata_eval/core/agentic/alert_skill.py 0.00% 1 Missing ⚠️
...val/src/gooddata_eval/core/agentic/conversation.py 0.00% 1 Missing ⚠️
...a-eval/src/gooddata_eval/core/agentic/guardrail.py 0.00% 1 Missing ⚠️
...val/src/gooddata_eval/core/agentic/metric_skill.py 0.00% 1 Missing ⚠️
...eval/src/gooddata_eval/core/agentic/search_tool.py 0.00% 1 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           rel/dev    #1805      +/-   ##
===========================================
+ Coverage    82.13%   82.27%   +0.13%     
===========================================
  Files          282      282              
  Lines        20286    20326      +40     
===========================================
+ Hits         16662    16723      +61     
+ Misses        3624     3603      -21     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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