You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
claudbg/.beans/claudbg-nqxz--duration-show...

52 lines
1.3 KiB
Markdown

---
# claudbg-nqxz
title: Duration shows 0ms — RawEntry.duration_ms field name mismatch (durationMs vs duration_ms)
status: todo
type: bug
priority: high
created_at: 2026-03-30T04:44:06Z
updated_at: 2026-03-30T04:44:06Z
parent: claudbg-8vpb
---
## Problem
`sessions transcribe` shows `Duration: 0ms` even for long sessions.
## Root cause
The JSONL file uses camelCase `durationMs` at the entry level:
```json
{"type": "system", "durationMs": 3446227, ...}
```
But `RawEntry` declares the field as `duration_ms: Option<u64>` with no serde rename:
```rust
// src/models/session.rs:33
pub duration_ms: Option<u64>,
```
Serde looks for `duration_ms` (snake_case), finds nothing, and the value falls into the `extra` catch-all map instead. `compute_stats` then sums zeros.
## Fix
Add `#[serde(rename = "durationMs")]` to the field:
```rust
#[serde(rename = "durationMs")]
pub duration_ms: Option<u64>,
```
Alternatively use `#[serde(alias = "durationMs")]` to accept both forms.
## Confirmed by
Running against session `21fae0a8`: `grep '"durationMs":[0-9]'` finds entries like `{"type":"system","durationMs":3446227,...}` confirming the field name is camelCase.
## Relevant files
- `src/models/session.rs``RawEntry`, `duration_ms` field (line 33)
- `src/models/stats.rs``compute_stats`, accumulates `entry.duration_ms`