From a57b268d61ca7d4d20819587b999d8a15635440b Mon Sep 17 00:00:00 2001 From: rphilizaire-openai Date: Fri, 19 Jun 2026 10:13:27 -0700 Subject: [PATCH] [codex] trace pre-sampling skill and persistence latency (#29042) --- codex-rs/core-skills/src/injection.rs | 5 +++++ codex-rs/core/src/session/mod.rs | 9 +++++++++ codex-rs/core/src/session/turn.rs | 10 ++++++++++ codex-rs/ext/skills/src/extension.rs | 2 ++ codex-rs/ext/skills/src/render.rs | 5 +++++ codex-rs/ext/skills/src/selection.rs | 8 ++++++++ codex-rs/thread-store/src/live_thread.rs | 5 +++++ codex-rs/thread-store/src/local/live_writer.rs | 5 +++++ 8 files changed, 49 insertions(+) diff --git a/codex-rs/core-skills/src/injection.rs b/codex-rs/core-skills/src/injection.rs index e7d1fd374..201e7959f 100644 --- a/codex-rs/core-skills/src/injection.rs +++ b/codex-rs/core-skills/src/injection.rs @@ -55,6 +55,11 @@ impl InjectedHostSkillPrompts { } } +#[tracing::instrument( + level = "trace", + skip_all, + fields(mentioned_skill_count = mentioned_skills.len()) +)] pub async fn build_skill_injections( mentioned_skills: &[SkillMetadata], loaded_skills: Option<&SkillLoadOutcome>, diff --git a/codex-rs/core/src/session/mod.rs b/codex-rs/core/src/session/mod.rs index 3c1f06f6b..0792334b3 100644 --- a/codex-rs/core/src/session/mod.rs +++ b/codex-rs/core/src/session/mod.rs @@ -1233,6 +1233,11 @@ impl Session { } // Merges connector IDs into the session-level explicit connector selection. + #[tracing::instrument( + level = "trace", + skip_all, + fields(connector_count = connector_ids.len()) + )] pub(crate) async fn merge_connector_selection( &self, connector_ids: HashSet, @@ -1426,6 +1431,7 @@ impl Session { state.previous_turn_settings() } + #[tracing::instrument(level = "trace", skip_all)] pub(crate) async fn set_previous_turn_settings( &self, previous_turn_settings: Option, @@ -2736,6 +2742,7 @@ impl Session { )) } + #[tracing::instrument(level = "trace", skip_all, fields(item_count = items.len()))] pub(crate) async fn record_conversation_items( &self, turn_context: &TurnContext, @@ -2929,6 +2936,7 @@ impl Session { self.set_multi_agent_version_if_unset(selected) } + #[tracing::instrument(level = "trace", skip_all, fields(item_count = items.len()))] async fn send_raw_response_items(&self, turn_context: &TurnContext, items: &[ResponseItem]) { for item in items { self.send_event( @@ -3280,6 +3288,7 @@ impl Session { items } + #[tracing::instrument(level = "trace", skip_all, fields(item_count = items.len()))] pub(crate) async fn persist_rollout_items(&self, items: &[RolloutItem]) { if let Some(live_thread) = self.live_thread() && let Err(e) = live_thread.append_items(items).await diff --git a/codex-rs/core/src/session/turn.rs b/codex-rs/core/src/session/turn.rs index 42fab7a50..28c0f6561 100644 --- a/codex-rs/core/src/session/turn.rs +++ b/codex-rs/core/src/session/turn.rs @@ -655,6 +655,11 @@ async fn build_skills_and_plugins( Some((injection_items, explicitly_enabled_connectors)) } +#[tracing::instrument( + level = "trace", + skip_all, + fields(user_input_count = user_input.len()) +)] async fn build_extension_turn_input_items( sess: &Arc, turn_context: &TurnContext, @@ -710,6 +715,11 @@ async fn build_extension_turn_input_items( Some(items) } +#[tracing::instrument( + level = "trace", + skip_all, + fields(input_count = input.len()) +)] async fn track_turn_resolved_config_analytics( sess: &Session, turn_context: &TurnContext, diff --git a/codex-rs/ext/skills/src/extension.rs b/codex-rs/ext/skills/src/extension.rs index 6bd7036bf..de9facd8c 100644 --- a/codex-rs/ext/skills/src/extension.rs +++ b/codex-rs/ext/skills/src/extension.rs @@ -287,6 +287,7 @@ where } impl SkillsExtension { + #[tracing::instrument(level = "trace", skip_all)] async fn list_skills( &self, mut query: SkillListQuery, @@ -311,6 +312,7 @@ impl SkillsExtension { catalog } + #[tracing::instrument(level = "trace", skip_all, fields(skill = %entry.name))] async fn read_main_prompt( &self, entry: &SkillCatalogEntry, diff --git a/codex-rs/ext/skills/src/render.rs b/codex-rs/ext/skills/src/render.rs index d913e4161..89597aa9b 100644 --- a/codex-rs/ext/skills/src/render.rs +++ b/codex-rs/ext/skills/src/render.rs @@ -10,6 +10,11 @@ const MAX_MAIN_PROMPT_BYTES: usize = 8_000; pub(crate) const MAX_SKILL_NAME_BYTES: usize = 256; pub(crate) const MAX_SKILL_PATH_BYTES: usize = 1_024; +#[tracing::instrument( + level = "trace", + skip_all, + fields(catalog_entry_count = catalog.entries.len()) +)] pub(crate) fn available_skills_fragment( catalog: &SkillCatalog, ) -> Option { diff --git a/codex-rs/ext/skills/src/selection.rs b/codex-rs/ext/skills/src/selection.rs index cfea2e3ab..a708b18d6 100644 --- a/codex-rs/ext/skills/src/selection.rs +++ b/codex-rs/ext/skills/src/selection.rs @@ -10,6 +10,14 @@ use crate::catalog::SkillPackageId; const SKILL_PATH_PREFIX: &str = "skill://"; +#[tracing::instrument( + level = "trace", + skip_all, + fields( + input_count = inputs.len(), + catalog_entry_count = catalog.entries.len() + ) +)] pub(crate) fn collect_explicit_skill_mentions( inputs: &[UserInput], catalog: &SkillCatalog, diff --git a/codex-rs/thread-store/src/live_thread.rs b/codex-rs/thread-store/src/live_thread.rs index 88d347f57..6b9480751 100644 --- a/codex-rs/thread-store/src/live_thread.rs +++ b/codex-rs/thread-store/src/live_thread.rs @@ -133,6 +133,11 @@ impl LiveThread { }) } + #[tracing::instrument( + level = "trace", + skip_all, + fields(item_count = items.len()) + )] pub async fn append_items(&self, items: &[RolloutItem]) -> ThreadStoreResult<()> { let canonical_items = persisted_rollout_items(items); if items.is_empty() { diff --git a/codex-rs/thread-store/src/local/live_writer.rs b/codex-rs/thread-store/src/local/live_writer.rs index 61c15a43d..24c31869f 100644 --- a/codex-rs/thread-store/src/local/live_writer.rs +++ b/codex-rs/thread-store/src/local/live_writer.rs @@ -74,6 +74,11 @@ pub(super) async fn resume_thread( store.insert_live_recorder(params.thread_id, recorder).await } +#[tracing::instrument( + level = "trace", + skip_all, + fields(item_count = params.items.len()) +)] pub(super) async fn append_items( store: &LocalThreadStore, params: AppendThreadItemsParams,