{"version":"2.1.317","anchor":"per-turn-process-cpuwall-time-split-into-states-in-result-t","canonical_anchor":"per-turn-process-cpuwall-time-split-into-states-in-result-t","heading":"End-of-run timing data now breaks each turn down by activity","tier":"internal","area":"Telemetry","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.317\/e\/per-turn-process-cpuwall-time-split-into-states-in-result-t","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.317","markdown":"### End-of-run timing data now breaks each turn down by activity\n\nThe result record now splits a turn's processor time and elapsed time across activities such as streaming, tools and waiting between requests\n\n**What**\n\nThe result record that Claude Code produces gained a field, `process_turn_states`, marked as internal. It splits the processor time and the elapsed time of a turn across separate activities that do not overlap:\n\n- main_stream\n\n- side_stream\n\n- tool\n\n- agent_tool\n\n- first_event_wait\n\n- before_first_request\n\n- between_requests\n\n- after_last_request\n\nFor each activity it records processor time, elapsed time and the number of entries.\n\n**Why**\n\nThis is diagnostic data for working out where Claude Code's own time goes during a turn.\n\n- Area: Telemetry\n- Names: `process_turn_states`\n- Tier: Under the hood\n- Useful: 2\/5\n- Signal: 2\/5\n- Scope: individual\n- Heads-up: no"}