docs(roadmap): add #333 — no in-session settings inspect command

This commit is contained in:
YeonGyu-Kim
2026-04-29 22:31:56 +09:00
parent ee85fed6ca
commit 47de369842

View File

@@ -6269,3 +6269,5 @@ Original filing (2026-04-18): the session emitted `SessionStart hook (completed)
326. **`status --output-format json` underreports active workspace pane inventory when one tmux session has multiple panes/processes in the same project** — dogfooded 2026-04-29 on current `origin/main` / workspace HEAD `b90875fa` while responding to the claw-code dogfood nudge. The active OMX session `claw-code-issue-326-dogfood-pinpoint` was running in `/mnt/offloading/Workspace/claw-code` with two panes: `%9384` (`cmd=node`, active pane) and `%9385` (`cmd=node`, inactive sidecar pane). `tmux list-panes -a -F '#{session_name}:#{window_index}.#{pane_index} #{pane_id} pid=#{pane_pid} cmd=#{pane_current_command} cwd=#{pane_current_path} active=#{pane_active}'` showed both panes in the same session/workspace, but `./rust/target/debug/claw status --output-format json` collapsed the workspace lifecycle to a single object: `session_lifecycle.kind = "running_process"`, `pane_id = "%9384"`, `pane_command = "node"`, with no `panes[]`, process count, sidecar/secondary-pane inventory, or ambiguity marker. A downstream claw reading only status JSON would believe there is exactly one live process for that workspace even though the control plane has multiple panes in the same task session. **Required fix shape:** (a) expose a structured active-session inventory in `status --output-format json`, including `panes[]` or `processes[]` with pane id, command, cwd, active flag, and session/window identity for all matching workspace panes; (b) keep the compact `session_lifecycle` summary, but add an explicit `pane_count` / `has_sidecar_panes` / `inventory_truncated` signal so summaries cannot masquerade as complete truth; (c) define how to classify primary vs sidecar/inactive panes without losing them, and make the chosen primary pane provenance visible; (d) add regression coverage for a tmux session with two panes in one workspace proving status JSON reports both panes or marks the inventory as partial. **Why this matters:** status JSON is the machine-readable lane truth surface. If it reports only the primary pane while hiding secondary panes, clawhip and other claws can miss sidecar workers, blocked helpers, stale subprocesses, or duplicated control-plane processes and make bad restart/cleanup/routing decisions from an undercounted session snapshot. Source: gaebal-gajae dogfood session `claw-code-issue-326-dogfood-pinpoint`; observed `claw status --output-format json` returning only `%9384` while `tmux list-panes` showed `%9384` and `%9385` in the same claw-code workspace.
327. **`claw mcp help` omits `.claw.json` from its documented config sources even though `claw mcp` still loads MCP servers from `.claw.json`** — dogfooded 2026-04-29 on current `origin/main` / workspace HEAD `981aff7c` after rebuilding the actual debug binary with `cargo run --manifest-path rust/Cargo.toml --bin claw -- version --output-format json` so `./rust/target/debug/claw version --output-format json` reported embedded `git_sha` `981aff7c` matching the workspace. Running `./rust/target/debug/claw mcp --help` printed `Sources .claw/settings.json, .claw/settings.local.json`, and `./rust/target/debug/claw mcp help --output-format json` returned `"sources": [".claw/settings.json", ".claw/settings.local.json"]`. In the same rebuilt binary, a temp workspace containing only a project `.claw.json` with `{"mcpServers":{"demo":{"command":"/bin/echo","args":["hi"]}}}` made `./rust/target/debug/claw mcp --output-format json` report `configured_servers: 1` and `servers[0].name: "demo"`. The MCP lifecycle surface therefore tells users and claws that `.claw.json` is not a source while actively accepting it as one. This is distinct from #322's JSON warning corruption, #323/#326's status lifecycle contradictions, #324's stale-binary provenance gap, and #325's top-level help schema flattening: the pinpoint is a concrete MCP subcommand source-of-truth mismatch in both text and JSON help. **Required fix shape:** (a) derive the `mcp help` source list from the same `ConfigLoader::discover`/settings-source registry that `mcp list` actually uses instead of hard-coding a partial list; (b) include all supported MCP config sources in stable order, including legacy/project `.claw.json`, user `~/.claw/settings.json`, project `.claw/settings.json`, and local `.claw/settings.local.json` as applicable; (c) add source metadata to `mcp --output-format json` entries so each server can be attributed to the file/layer that provided it; (d) add a regression proving a server loaded from `.claw.json` is accompanied by help/JSON source metadata that names `.claw.json`, and that help stays in sync when config source discovery changes. **Why this matters:** MCP setup is already a high-friction lifecycle path; if the command that diagnoses MCP servers omits a still-supported source, operators can move or delete the wrong config file, and automation cannot tell whether `.claw.json` support is intentional compatibility or accidental legacy behavior. Source: gaebal-gajae dogfood in `/home/bellman/Workspace/claw-code` on 2026-04-29 using the rebuilt actual `./rust/target/debug/claw`; temp-workspace proof showed `.claw.json` loads one MCP server while `mcp help` documents only `.claw/settings*.json` sources.
333. **No `/settings` slash command exists to inspect active runtime config in-session; the only path to see loaded settings is `doctor --output-format json` (which shows file paths but not values) or reading the raw config files on disk** — dogfooded 2026-04-29 by Jobdori on current main (`ee85fed`). Running `claw --output-format json --resume latest /settings` returns `{"command":"/settings","error":"Unknown slash command: /settings\n Help /help lists available slash commands","type":"error"}`. The `type` field again violates the `kind` vocabulary (#329). `claw doctor --output-format json` reports `config -> ok | runtime config loaded successfully` and includes the config file path in `checks[].detail`, but does not dump the resolved key-value set — there is no in-session way to see what `model`, `sandbox_mode`, `permission_mode`, `plugins.enabled`, and other settings are currently active without reading raw JSON/TOML on disk. This is a clawability gap: a downstream lane or debugging operator cannot confirm at runtime whether settings loaded correctly (e.g. after editing `.claw/settings.json`) without restarting and re-running `doctor`. **Required fix shape:** (a) add a `/config` or `/settings` slash command that dumps the resolved runtime settings as a `kind=config` JSON object (struct, not prose) including at minimum `model`, `sandbox`, `permissions`, `plugins`, `mcpServers` (keys only, not secrets); (b) mark the command `[resume]`-safe so it works in `--resume` mode; (c) ensure the command is listed in `/help` JSON output under `commands` (once `commands` array is added per #325); (d) add regression coverage proving `claw /config --output-format json` returns a parseable JSON with a stable schema. **Why this matters:** without a settings-dump command, every "why is claw behaving this way?" diagnostic requires out-of-band file reads; in containerized / remote / tmux-managed environments the config file may not be directly readable by the operator and an in-session dump is the only reliable path. Source: Jobdori live dogfood on mengmotaHost, claw-code `ee85fed`, 2026-04-29.