Skip to content

feat: update session draft handling and improve trace visibility features - #487

Merged
sergiofilhowz merged 5 commits into
mainfrom
feat/traces-ux-improvements-2-rebased
Jul 14, 2026
Merged

feat: update session draft handling and improve trace visibility features#487
sergiofilhowz merged 5 commits into
mainfrom
feat/traces-ux-improvements-2-rebased

Conversation

@sergiofilhowz

@sergiofilhowz sergiofilhowz commented Jul 12, 2026

Copy link
Copy Markdown
Contributor
  • Added !session::set-draft permission to iii-permissions.yaml for managing draft states.
  • Updated Cargo.lock to use version 0.21.3 for iii-helpers and iii-sdk.
  • Enhanced timeline-span-tags.md documentation to include iii.tag.hidden for internal span management.
  • Implemented draft persistence in the chat composer, allowing users to restore unsent messages after a page refresh.
  • Introduced setSessionDraft API for saving composer drafts without affecting session timestamps.
  • Updated useConversations hook to manage draft text and ensure it is restored correctly.
  • Added functionality to toggle visibility of internal spans in trace views, improving user experience in the traces interface.

Need to update cargo to point to the latest version of iii when we release it

Summary by CodeRabbit

  • New Features
    • Composer drafts now persist per conversation and restore on refresh; submitting clears the saved draft.
    • Traces V2 timeline updates: hierarchical lanes with improved horizontal overflow, plus a “follow live turns” control and a default “sessions” view.
    • Added an internal-by-default visibility section for span filtering.
  • Bug Fixes
    • Hiding spans now preserves the timeline by re-attaching children to the nearest visible ancestor.
    • Improved span grouping/labeling and refined iii.tag.display_name handling to suppress unintended “echoes.”
  • Documentation
    • Expanded guidance on span tagging, hidden spans, and hide-by-default function behavior.
  • Chores
    • Router configuration now updates reactively via an in-memory snapshot.

…ures

- Added `!session::set-draft` permission to `iii-permissions.yaml` for managing draft states.
- Updated `Cargo.lock` to use version 0.21.3 for `iii-helpers` and `iii-sdk`.
- Enhanced `timeline-span-tags.md` documentation to include `iii.tag.hidden` for internal span management.
- Implemented draft persistence in the chat composer, allowing users to restore unsent messages after a page refresh.
- Introduced `setSessionDraft` API for saving composer drafts without affecting session timestamps.
- Updated `useConversations` hook to manage draft text and ensure it is restored correctly.
- Added functionality to toggle visibility of internal spans in trace views, improving user experience in the traces interface.
@vercel

vercel Bot commented Jul 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
workers Ready Ready Preview, Comment Jul 13, 2026 11:30pm
workers-tech-spec Ready Ready Preview, Comment Jul 13, 2026 11:30pm

Request Review

@sergiofilhowz sergiofilhowz changed the title feat: update session draft handling and improve trace visibility feat… feat: update session draft handling and improve trace visibility features Jul 12, 2026
@github-actions

github-actions Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

skill-check — worker

0 verified, 42 skipped (no docs/).

Layer Result
structure
vale
ai
render

Four for four. Nicely done.

@coderabbitai

coderabbitai Bot commented Jul 12, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 8046a6c0-e27f-46a0-bd79-af6a0dd935e6

📥 Commits

Reviewing files that changed from the base of the PR and between 149bf4d and 987dcfe.

📒 Files selected for processing (8)
  • console/web/src/components/chat/Composer.tsx
  • console/web/src/hooks/use-conversations.ts
  • console/web/src/pages/TracesV2/lib/followTurn.test.ts
  • console/web/src/pages/TracesV2/lib/followTurn.ts
  • harness/src/functions/mod.rs
  • llm-router/src/config/on_changed.rs
  • llm-router/src/register.rs
  • queue/src/store.rs
🚧 Files skipped from review as they are similar to previous changes (6)
  • harness/src/functions/mod.rs
  • console/web/src/pages/TracesV2/lib/followTurn.test.ts
  • console/web/src/hooks/use-conversations.ts
  • llm-router/src/register.rs
  • console/web/src/components/chat/Composer.tsx
  • console/web/src/pages/TracesV2/lib/followTurn.ts

📝 Walkthrough

Walkthrough

The changes add persisted conversation drafts, hidden trace-span metadata and filtering, hierarchical Traces V2 timelines with follow-live-turn behavior, and reactive in-memory configuration snapshots for llm-router.

Changes

Conversation draft persistence

Layer / File(s) Summary
Composer and session draft flow
console/web/src/components/chat/*, console/web/src/hooks/use-conversations.ts, console/web/src/lib/sessions/*, console/web/src/types/chat.ts
Composer text is restored, reported, debounced, persisted in session metadata, and cleared on submission or removal.

Traces V2 and hidden tracing

Layer / File(s) Summary
Trace contracts and preferences
console/src/configuration.rs, console/web/src/lib/*, console/web/src/pages/TracesV2/lib/*
Trace defaults, storage, tag inheritance, grouping, hidden-function discovery, follow state, and filter preferences are expanded.
Span mapping and visibility
console/web/src/pages/TracesV2/lib/*, console/web/src/pages/TracesV2/components/timeline/*
Span labels, parent resolution, individual hiding, and re-parenting preserve visible descendants.
Hierarchical timeline rendering
console/web/src/pages/TracesV2/components/timeline/*, console/web/src/pages/TracesV2/index.tsx
Live and static timelines support hierarchy, internal filter sections, animation, horizontal overflow, accordion details, and multi-axis panning.
Hidden tracing producers and contracts
harness/src/*, context-manager/src/*, session-manager/src/*, docs/sops/*, console/docs/*
Registrations and call sites add hidden metadata or baggage scopes, while trace-hidden behavior is documented and tested.

Reactive llm-router configuration

Layer / File(s) Summary
Snapshot state and contracts
llm-router/src/config/*, llm-router/src/types/router.rs
Router configuration uses an atomically replaceable snapshot, and change events carry advisory identifiers.
Router boot and request wiring
llm-router/src/register.rs, llm-router/src/chat/*, llm-router/src/routing.rs, llm-router/src/registry/*, llm-router/src/system_prompt.rs
Boot and request handlers use ConfigCell snapshots for routing, provider resolution, credentials, and system prompts.
Authoritative refresh and validation
llm-router/src/config/on_changed.rs, llm-router/tests/*, */Cargo.toml
Configuration changes re-fetch authoritative data, update snapshots, refresh affected providers, and use polling integration assertions.

Estimated code review effort: 5 (Critical) | ~120 minutes

Sequence Diagram(s)

sequenceDiagram
  participant ConfigEvent as configuration:updated
  participant OnChanged as make_on_config_changed
  participant Entry as read_entry_value
  participant Snapshot as ConfigCell
  participant Provider as provider refresh_models

  ConfigEvent->>OnChanged: advisory change notification
  OnChanged->>Entry: fetch authoritative configuration
  Entry-->>OnChanged: configuration value
  OnChanged->>Snapshot: apply_config
  OnChanged->>Provider: debounced refresh for changed provider slices
Loading
sequenceDiagram
  participant Composer
  participant Conversations as useConversations
  participant SessionAPI as setSessionDraft
  participant SessionManager as session::set-draft

  Composer->>Conversations: report text change
  Conversations->>SessionAPI: debounce draft save
  SessionAPI->>SessionManager: persist session draft
  SessionManager-->>Conversations: stored draft metadata
  Conversations-->>Composer: restore draft on mount
Loading

Suggested reviewers: guibeira, ytallo

Poem

I’m a rabbit with a changelog,
Hopping through spans in a row.
Drafts tuck away, traces align,
Configs refresh right on time.
“Thump!” says the burrow—ship it bright!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the two main change areas: session draft handling and trace visibility improvements.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/traces-ux-improvements-2-rebased

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.

❤️ Share

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
console/web/src/components/chat/Composer.tsx (1)

335-367: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Keep a queue-submit control while streaming.

When queueWhileStreaming is true, the editor says “queue a message…” but the send button is removed and only Stop remains. Restore a queue/send button alongside Stop so mouse and touch users can submit queued messages.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@console/web/src/components/chat/Composer.tsx` around lines 335 - 367, Update
the Composer button rendering around isStreaming and queueWhileStreaming so
streaming mode retains the existing Stop control while also rendering an enabled
send/queue button when queueWhileStreaming is true. Keep the current Stop-only
behavior when queueWhileStreaming is false, and route the additional button
through handleSubmit with the existing blocked state, accessibility label, and
styling.
llm-router/src/config/on_changed.rs (1)

88-110: 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Do not abort a flush after it has drained pending work.

A new event can abort the previous task after line 96 has removed IDs from pending but before lines 99-109 finish. The remaining IDs are then neither queued nor re-detected because line 74 already advanced their fingerprints. Only cancel the sleep phase, or requeue unprocessed IDs on cancellation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@llm-router/src/config/on_changed.rs` around lines 88 - 110, Update the
debounce task around the pending drain and trigger loop so cancellation cannot
lose IDs after pending work has been removed. Limit abort handling to the sleep
phase, or ensure every ID not yet processed when the task is cancelled is
reinserted into pending; preserve the existing refresh triggering behavior for
drained IDs.
🧹 Nitpick comments (2)
harness/src/functions/mod.rs (1)

160-183: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider delegating register_internal to register_meta.

Now that register_meta provides the unified registration path, register_internal duplicates the same closure-construction + description + metadata logic. It could be simplified to a one-liner delegation, eliminating ~15 lines of duplicated code.

♻️ Optional refactor
 fn register_internal<Req, Resp, F, Fut>(
     iii: &Arc<IIIClient>,
     deps: &Arc<Deps>,
     id: &str,
     description: &str,
     handler: F,
 ) where
     Req: DeserializeOwned + JsonSchema + Send + 'static,
     Resp: Serialize + JsonSchema + Send + 'static,
     F: Fn(Arc<Deps>, Req) -> Fut + Send + Sync + Clone + 'static,
     Fut: Future<Output = Result<Resp, HarnessError>> + Send + 'static,
 {
-    let deps = deps.clone();
-    iii.register_function(
-        id,
-        RegisterFunction::new_async(move |req: Req| {
-            let deps = deps.clone();
-            let handler = handler.clone();
-            async move { handler(deps, req).await.map_err(Error::from) }
-        })
-        .description(description)
-        .metadata(serde_json::json!({ "internal": true })),
-    );
+    register_meta(
+        iii,
+        deps,
+        id,
+        description,
+        Some(serde_json::json!({ "internal": true })),
+        handler,
+    );
 }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@harness/src/functions/mod.rs` around lines 160 - 183, Update
register_internal to delegate registration to the existing register_meta
function instead of constructing its own async closure, description, and
internal metadata. Pass through the same id, description, dependencies, and
handler while preserving the current generic bounds and behavior.
console/web/src/pages/TracesV2/components/timeline/TimelineStrip.tsx (1)

155-306: 📐 Maintainability & Code Quality | 🔵 Trivial | 🏗️ Heavy lift

Consider extracting the shared subtree-packing/hierarchy layout.

packSubtrees + buildHierarchyLayout here are a near-verbatim copy of packSubtrees + buildLayout in TraceTimeline.tsx (the comments even call it "the same rule as TraceTimeline.tsx"). The two only differ in the span shape they key off (TimelineSpan vs VisualizationSpan + byId). Because the packing/collision math is subtle, keeping two copies invites silent divergence. A generic helper (parameterized by id/children/startTime/extent accessors) would keep both views in lockstep.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@console/web/src/pages/TracesV2/components/timeline/TimelineStrip.tsx` around
lines 155 - 306, The subtree packing and hierarchy layout logic is duplicated
between packSubtrees/buildHierarchyLayout here and packSubtrees/buildLayout in
TraceTimeline.tsx. Extract the shared traversal, collision, and line-placement
behavior into a generic helper parameterized by the span identity, child
relationships, start time, and occupancy extent accessors, then update both
views to use it while preserving their existing span-specific shapes and layout
results.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@console/web/src/hooks/use-conversations.ts`:
- Around line 897-910: Update setDraftText so newly created conversations marked
by conv.draft also persist non-empty draft text durably instead of returning
after updating draftTextsRef. Reuse the existing draft persistence mechanism
where possible, while preserving the in-memory ref behavior and avoiding session
materialization unless required by the current storage design.
- Around line 880-894: Update flushDraft so setSessionDraft writes are
serialized per session, ensuring older saves cannot complete after newer saves;
only update lastSavedDraftRef after the corresponding RPC succeeds, and leave
failed values eligible for retry. Preserve the existing timer cleanup,
deduplication, and development warning behavior.

In `@console/web/src/pages/TracesV2/lib/followTurn.ts`:
- Around line 117-124: Update the early-return branch in the trace-following
logic to add every currently visible trace ID from traces to state.seenTraceIds
before returning when newest is null or already seen. Preserve the existing
return value, and add a regression test covering a delayed older trace arriving
after a newer trace has already been seen.

In `@llm-router/src/config/on_changed.rs`:
- Around line 62-68: Update the Err(error) branch of the authoritative
configuration fetch in the on-change handler to schedule a bounded retry with
backoff instead of returning a successful RouterAck immediately. Reuse the
existing retry/queue mechanism and preserve the previous snapshot while
retrying; only acknowledge according to the established retry semantics.

In `@llm-router/src/register.rs`:
- Around line 240-244: Update the bootstrap reconciliation block guarded by
entry_lock to use the same snapshot-and-fingerprint synchronization operation as
make_on_config_changed, rather than calling apply_config alone. Ensure the newer
value read by read_entry_value updates both the applied configuration and the
handler’s fingerprint baseline, so later changes are diffed against that
reconciled state and refresh_models is triggered when appropriate.

---

Outside diff comments:
In `@console/web/src/components/chat/Composer.tsx`:
- Around line 335-367: Update the Composer button rendering around isStreaming
and queueWhileStreaming so streaming mode retains the existing Stop control
while also rendering an enabled send/queue button when queueWhileStreaming is
true. Keep the current Stop-only behavior when queueWhileStreaming is false, and
route the additional button through handleSubmit with the existing blocked
state, accessibility label, and styling.

In `@llm-router/src/config/on_changed.rs`:
- Around line 88-110: Update the debounce task around the pending drain and
trigger loop so cancellation cannot lose IDs after pending work has been
removed. Limit abort handling to the sleep phase, or ensure every ID not yet
processed when the task is cancelled is reinserted into pending; preserve the
existing refresh triggering behavior for drained IDs.

---

Nitpick comments:
In `@console/web/src/pages/TracesV2/components/timeline/TimelineStrip.tsx`:
- Around line 155-306: The subtree packing and hierarchy layout logic is
duplicated between packSubtrees/buildHierarchyLayout here and
packSubtrees/buildLayout in TraceTimeline.tsx. Extract the shared traversal,
collision, and line-placement behavior into a generic helper parameterized by
the span identity, child relationships, start time, and occupancy extent
accessors, then update both views to use it while preserving their existing
span-specific shapes and layout results.

In `@harness/src/functions/mod.rs`:
- Around line 160-183: Update register_internal to delegate registration to the
existing register_meta function instead of constructing its own async closure,
description, and internal metadata. Pass through the same id, description,
dependencies, and handler while preserving the current generic bounds and
behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 55ac5c97-1314-44b9-906c-c7ea9e2eb32b

📥 Commits

Reviewing files that changed from the base of the PR and between 826c285 and 1b1c5da.

⛔ Files ignored due to path filters (10)
  • approval-gate/Cargo.lock is excluded by !**/*.lock
  • harness/Cargo.lock is excluded by !**/*.lock
  • llm-router/Cargo.lock is excluded by !**/*.lock
  • provider-anthropic/Cargo.lock is excluded by !**/*.lock
  • provider-llamacpp/Cargo.lock is excluded by !**/*.lock
  • provider-openai-codex/Cargo.lock is excluded by !**/*.lock
  • provider-openai/Cargo.lock is excluded by !**/*.lock
  • provider-xai/Cargo.lock is excluded by !**/*.lock
  • provider-zai/Cargo.lock is excluded by !**/*.lock
  • session-manager/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (103)
  • console/docs/timeline-span-tags.md
  • console/src/configuration.rs
  • console/web/src/components/chat/ChatView.tsx
  • console/web/src/components/chat/Composer.tsx
  • console/web/src/hooks/use-conversations.test.ts
  • console/web/src/hooks/use-conversations.ts
  • console/web/src/lib/sessions/api.ts
  • console/web/src/lib/sessions/types.ts
  • console/web/src/lib/storage.ts
  • console/web/src/lib/trace-hidden-functions.ts
  • console/web/src/pages/TracesV2/components/WaterfallChart.tsx
  • console/web/src/pages/TracesV2/components/timeline/SpanFilterMenu.tsx
  • console/web/src/pages/TracesV2/components/timeline/Timeline.tsx
  • console/web/src/pages/TracesV2/components/timeline/TimelineStrip.tsx
  • console/web/src/pages/TracesV2/components/timeline/TraceTimeline.tsx
  • console/web/src/pages/TracesV2/components/timeline/layout.test.ts
  • console/web/src/pages/TracesV2/components/timeline/layout.ts
  • console/web/src/pages/TracesV2/components/timeline/spanVisibility.test.ts
  • console/web/src/pages/TracesV2/components/timeline/spanVisibility.ts
  • console/web/src/pages/TracesV2/components/timeline/spanVisuals.tsx
  • console/web/src/pages/TracesV2/hooks/useAllSpans.test.ts
  • console/web/src/pages/TracesV2/hooks/useAllSpans.ts
  • console/web/src/pages/TracesV2/hooks/useFollowLiveTurn.ts
  • console/web/src/pages/TracesV2/hooks/useSpanFilterSelection.ts
  • console/web/src/pages/TracesV2/hooks/useTraceViews.ts
  • console/web/src/pages/TracesV2/index.tsx
  • console/web/src/pages/TracesV2/lib/followTurn.test.ts
  • console/web/src/pages/TracesV2/lib/followTurn.ts
  • console/web/src/pages/TracesV2/lib/functionCallFromSpan.ts
  • console/web/src/pages/TracesV2/lib/spanFilters.test.ts
  • console/web/src/pages/TracesV2/lib/spanFilters.ts
  • console/web/src/pages/TracesV2/lib/spanLabel.test.ts
  • console/web/src/pages/TracesV2/lib/spanLabel.ts
  • console/web/src/pages/TracesV2/lib/timelineSpans.test.ts
  • console/web/src/pages/TracesV2/lib/timelineSpans.ts
  • console/web/src/pages/TracesV2/lib/traceTimelineFilters.ts
  • console/web/src/pages/TracesV2/lib/tracesViews.ts
  • console/web/src/pages/TracesV2/stories/timeline/Timeline.stories.tsx
  • console/web/src/pages/TracesV2/stories/timeline/TimelineStrip.stories.tsx
  • console/web/src/pages/TracesV2/stories/timeline/TraceTimeline.stories.tsx
  • console/web/src/pages/TracesV2/stories/timeline/liveFeed.ts
  • console/web/src/types/chat.ts
  • context-manager/src/configuration.rs
  • context-manager/src/functions/mod.rs
  • docs/sops/README.md
  • docs/sops/trace-hidden-functions.md
  • harness/Cargo.toml
  • harness/src/clients/session.rs
  • harness/src/functions/mod.rs
  • harness/src/lib.rs
  • harness/src/state.rs
  • harness/src/trace_tags.rs
  • iii-permissions.yaml
  • llm-router/Cargo.toml
  • llm-router/README.md
  • llm-router/src/chat/chat.rs
  • llm-router/src/config/entry.rs
  • llm-router/src/config/mod.rs
  • llm-router/src/config/on_changed.rs
  • llm-router/src/config/state.rs
  • llm-router/src/register.rs
  • llm-router/src/registry/availability.rs
  • llm-router/src/registry/resolve.rs
  • llm-router/src/routing.rs
  • llm-router/src/surface.rs
  • llm-router/src/system_prompt.rs
  • llm-router/src/types/router.rs
  • llm-router/tests/golden/schemas/router.on_config_changed.json
  • llm-router/tests/integration.rs
  • provider-anthropic/Cargo.toml
  • provider-llamacpp/Cargo.toml
  • provider-openai-codex/Cargo.toml
  • provider-openai/Cargo.toml
  • provider-xai/Cargo.toml
  • provider-zai/Cargo.toml
  • session-manager/Cargo.toml
  • session-manager/architecture/README.md
  • session-manager/architecture/integration.md
  • session-manager/architecture/internals.md
  • session-manager/src/configuration.rs
  • session-manager/src/events.rs
  • session-manager/src/functions/mod.rs
  • session-manager/src/functions/set_draft.rs
  • session-manager/src/functions/store_protocol.rs
  • session-manager/src/resync.rs
  • session-manager/src/service.rs
  • session-manager/src/store/fs.rs
  • session-manager/src/surface.rs
  • session-manager/src/types.rs
  • session-manager/tests/common/world.rs
  • session-manager/tests/features/draft.feature
  • session-manager/tests/golden/schemas/session.create.json
  • session-manager/tests/golden/schemas/session.ensure.json
  • session-manager/tests/golden/schemas/session.fork.json
  • session-manager/tests/golden/schemas/session.get.json
  • session-manager/tests/golden/schemas/session.list.json
  • session-manager/tests/golden/schemas/session.set-draft.json
  • session-manager/tests/golden/schemas/session.set-meta.json
  • session-manager/tests/golden/schemas/session.store.get-meta.json
  • session-manager/tests/golden/schemas/session.store.list-metas.json
  • session-manager/tests/golden/schemas/session.store.put-meta.json
  • session-manager/tests/schemas.rs
  • tech-specs/2026-06-agentic/llm-router.md
💤 Files with no reviewable changes (3)
  • console/web/src/pages/TracesV2/components/timeline/layout.test.ts
  • console/web/src/pages/TracesV2/stories/timeline/Timeline.stories.tsx
  • console/web/src/pages/TracesV2/components/timeline/Timeline.tsx

Comment thread console/web/src/hooks/use-conversations.ts Outdated
Comment thread console/web/src/hooks/use-conversations.ts
Comment thread console/web/src/pages/TracesV2/lib/followTurn.ts Outdated
Comment thread llm-router/src/config/on_changed.rs Outdated
Comment thread llm-router/src/register.rs Outdated
sergiofilhowz and others added 2 commits July 13, 2026 20:30
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The test nacked with a 30ms backoff and immediately asserted the job was
not ready; a >30ms stall between nack's clock capture and the dequeue
(easy on a loaded CI runner, the FileStore backend persists in between)
made the job ready early. 500ms backoff / 600ms sleep keeps the same
coverage with real headroom.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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