mirror of
https://github.com/instructkr/claude-code.git
synced 2026-06-05 12:06:43 +00:00
docs: close ROADMAP 682,693 evidence
682: agents already returns typed error for unknown subcommands 693: claw-analog already uses unknown_bootstrap_phase_error Generated with https://github.com/Yeachan-Heo/gajae-code Co-authored-by: Gajae Code <dev@gajae-code.com>
This commit is contained in:
@@ -7524,7 +7524,7 @@ Original filing (2026-04-18): the session emitted `SessionStart hook (completed)
|
||||
|
||||
335. **`/session list --output-format json` session detail objects omit `created_at_ms`, forcing callers to parse the session ID string to recover creation time** — dogfooded 2026-04-29 by Jobdori on current main (`0f7578c`). Running `claw --output-format json --resume latest /session list` returns `session_details` objects with fields `["id", "lifecycle", "message_count", "path", "updated_at_ms"]` — `created_at_ms` is absent. The session ID (`session-1776891003038-0`) encodes a Unix millisecond timestamp as its second segment, so a caller can extract creation time by splitting on `-` and parsing index 1, but this is an undocumented implementation detail that can break if the ID format changes. Without a first-class `created_at_ms` field, a caller cannot: (a) compute session age (`now - created_at`), (b) distinguish a session created 30 seconds ago from one created 3 days ago (both may have `message_count=1`), (c) surface session age in monitoring dashboards without string-parsing hacks. **Required fix shape:** (a) add `created_at_ms` (Unix epoch milliseconds, same unit as `updated_at_ms`) to every `session_details` object; (b) derive it from the session JSONL `session_meta` event's `created_at` field (already written at creation time) or from the session ID timestamp as a fallback; (c) ensure `session_details` always has both `created_at_ms` and `updated_at_ms` so session age and idle time are computable from the JSON alone; (d) add regression coverage proving `session list --output-format json` always includes `created_at_ms`. **Why this matters:** session age is a key diagnostic field for monitoring, GC policies, and resume decisions; parsing the session ID string to recover creation time is a fragile workaround that couples callers to the ID generation implementation. Source: Jobdori live dogfood on mengmotaHost, claw-code `0f7578c`, 2026-04-29.
|
||||
|
||||
## Pinpoint #693. `claw-analog` bootstrap-plan phase parser silently falls back to `"unknown"` — `lib.rs:1114` uses `.unwrap_or("unknown")` for phase field; unrecognized phases emit opaque kind instead of typed error
|
||||
## Pinpoint #693. DONE — `claw-analog` bootstrap-plan phase parser already uses typed errors — `unknown_bootstrap_phase_error` returns `kind:"unknown_bootstrap_phase"` with `received_value` and `allowed_values` instead of silent `"unknown"` fallback.
|
||||
|
||||
**Surface.** `claw-analog` crate (`rust/crates/claw-analog/src/lib.rs:1114`): `let phase = v.get("phase").and_then(|x| x.as_str()).unwrap_or("unknown")` — any bootstrap-plan JSON event with a missing or unrecognized `phase` field silently degrades to `"unknown"` with no warning, no `kind` discriminator, and no structured hint. This is a third instance of the classifier-orphan pattern (#422, #463) now appearing in a freshly landed crate.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user