Skip to content

chore(deps): bump tinyagents to land Langfuse observation-id collision fix (#32)#4601

Merged
senamakel merged 1 commit into
tinyhumansai:mainfrom
senamakel:fix/langfuse-observation-id-collision
Jul 6, 2026
Merged

chore(deps): bump tinyagents to land Langfuse observation-id collision fix (#32)#4601
senamakel merged 1 commit into
tinyhumansai:mainfrom
senamakel:fix/langfuse-observation-id-collision

Conversation

@senamakel

Copy link
Copy Markdown
Member

Summary

Advances the vendored tinyagents submodule 6bf67ac → 3d9fcfb to land tinyhumansai/tinyagents#32, which fixes a Langfuse observation-id collision that stripped per-turn metadata from agent-turn traces.

Model generations and tool spans took their Langfuse observation id from the run-scoped call_id (e.g. agent_turn-model-1). The logical run id (agent_turn) repeats on every interactive turn, so the id is identical across all turns and all threads. Langfuse upserts observations by id project-wide, so each new turn's model generation silently overwrote the previous one and reattached it to the newest trace — leaving every earlier trace with no model usage/cost/prompt+reply.

Measured on staging Langfuse (fuse.tinyhumans.ai): 75 agent-turn traces existed, but only 5 model generations survived — nearly every trace had lost its per-turn token usage, cost, and content. The fix namespaces the id as {trace_id}:{call_id} (globally unique per turn, stable for idempotent re-ingestion) and keeps the raw call_id in observation metadata for in-run correlation.

Submodule range

  • tinyagents#32 — fix(observability): namespace Langfuse observation ids by trace (the fix)
  • tinyagents#31 — config-driven rlm runtime module (already-merged intervening work)
  • tinyagents#30 — orchestration tool coverage tests (already-merged intervening work)

Verification

  • cargo check --manifest-path Cargo.toml (GGML_NATIVE=OFF) — passes against the bumped submodule.
  • tinyagents side: cargo test --lib observability::langfuse — 17 passed, incl. the new call_scoped_observation_ids_are_unique_per_trace regression test.

Follow-up (not in this PR)

Existing corrupted staging traces can be repaired by re-ingesting each run's local journal with the corrected ids; and the chat path never writes run_telemetry (so the run.total aggregate is skipped) — minor now that child model generations attach correctly and Langfuse derives per-trace usage/cost from them.

https://claude.ai/code/session_013fVjLxoGF9pEkdEZdHksHN

…n-id collision fix)

Advances vendor/tinyagents 6bf67ac -> 3d9fcfb, landing tinyhumansai/tinyagents#32
which namespaces Langfuse observation ids by trace id (`{trace_id}:{call_id}`).

Without it, model generations + tool spans took their Langfuse observation id
from the run-scoped `call_id` (e.g. `agent_turn-model-1`), which repeats on
every interactive turn. Langfuse upserts observations by id project-wide, so
each new turn overwrote the prior model generation onto the newest trace —
observed as 75 agent-turn traces retaining only 5 `model` generations, i.e.
per-turn token usage / cost / prompt+reply vanishing from nearly every trace.

Also pulls in already-merged tinyagents tinyhumansai#30 (orchestration tool coverage tests)
and tinyhumansai#31 (config-driven rlm runtime module).

Claude-Session: https://claude.ai/code/session_013fVjLxoGF9pEkdEZdHksHN
@senamakel
senamakel requested a review from a team July 6, 2026 20:09
@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 49 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 3ceb2b1c-b0bf-4c84-9a5a-3c8022837fb1

📥 Commits

Reviewing files that changed from the base of the PR and between d2d69a2 and f733c6d.

📒 Files selected for processing (1)
  • vendor/tinyagents

Comment @coderabbitai help to get the list of available commands.

@senamakel
senamakel merged commit 0e2e9f6 into tinyhumansai:main Jul 6, 2026
7 checks passed
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.

1 participant