You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Activate fixture 037 cases 1-4 in langfuse harness (#101)
* Activate fixture 037 cases 1-4 in langfuse harness
Wires the langfuse conformance harness for proposal 0043's §8.4.1
trace.input/output sourcing fixture. The four decision-tree cases
(default stub / disable_state_payload=False / hooks non-null /
hooks null-fallthrough) now run end-to-end against the
InMemoryLangfuseClient.
Adds a per-case skip mechanism (`_DEFERRED_CASES`) keyed by
`(fixture_stem, case_name)` so case 5 (resume re-fire) defers
without blocking the rest of the fixture. Case 5 needs harness
extensions tracked separately — checkpointer wiring, flaky-node
test seam, two-phase multi-trace assertion — that land in a
follow-up PR.
A small caller-hook registry (`_TRACE_IO_HOOK_REGISTRY`) maps the
YAML hook names the spec fixture references
(`returns_job_input_summary`, `returns_job_output_summary`,
`returns_null`) to Python callables matching the spec's documented
mock convention. `returns_state_snapshot` (only used by case 5)
lands with PR 8.6.
Adjacent harness fixes the new fixture required:
- `update_pure: {field: value}` directive support in
`_build_node_body` (treated identically to `update:`; previously
only the topology-fixture adapter handled `update_pure`).
- Initial-state factory on the simple-path build wires the case's
`initial_state:` overrides instead of always defaulting (case 2
needs `{msg: "start"}` to materialize on `trace.input`).
- `_assert_trace` checks `expected.input` / `expected.output` and
skips the observation-tree check when the fixture omits the
`observations:` block (older fixtures specified observation
trees; 037 focuses purely on trace-level fields).
Cross-cap parser deferral for 037 stays in place — that parser
still doesn't model `langfuse_trace` shape (same reason as 035 /
036). Activation lives in the langfuse-specific harness only.
* Fix stale comment refs in fixture 037 activation
PR #101 review caught two comment inaccuracies in the fixture 037
activation block:
- The block-level comment at line 84 referenced `_DEFERRED_037_CASES`,
but the symbol was renamed to the generic `_DEFERRED_CASES` during
drafting (other fixtures may want per-case deferrals later).
- The block-level comment at line 108 described the deferral
mechanism as `pytest.skip`, but the runner uses `continue` —
matching the inline comment at the skip site, which correctly
explains that `pytest.skip` would mask the surrounding cases that
DO run.
Comment-only diff; no behavior change.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,6 +29,7 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). The
29
29
30
30
-**Pinned spec version bumped from v0.31.0 to v0.35.0.** Absorbs proposals 0042 (reserved-key extension), 0043 (Langfuse trace.input/output sourcing), and the textual additions in v0.32.0 (Gemini wire-format mapping, 0038, not yet implemented) and v0.33.0 (sessions capability, 0020, not yet implemented).
31
31
-`LangfuseSDKAdapter` now applies `trace.input` / `trace.output` to the live Langfuse Trace. Input lands on the first real observation under the trace via `set_trace_io`; output uses a synthetic short-lived `openarmature.trace_io` observation as the carrier. The InMemoryLangfuseClient used by tests applies the fields directly.
32
+
- Conformance fixture `observability/conformance/037-langfuse-trace-input-output` activated for the four decision-tree cases (default stub / `disable_state_payload=False` / hooks non-null / hooks null-fallthrough). Case 5 (resume re-fire) is deferred to a follow-up — needs the langfuse harness to grow checkpointer wiring + flaky-node test seam + two-phase multi-trace assertion.
32
33
- The Langfuse v4 SDK marks `set_current_trace_io` / `Span.set_trace_io` deprecated ("removal in a future major version"). Empirical verification against Langfuse Cloud (v4.7.1, 2026-05-29) confirms it remains the **only** path that populates the Traces list view's headline `Input` / `Output` columns; `propagate_attributes(metadata=...)` does not substitute for it in the current UI. We will revisit when Langfuse publishes a concrete migration guide for v5.
0 commit comments