Skip to content

Commit 7370546

Browse files
committed
ROADMAP ultraworkers#126: /config [env|hooks|model|plugins] ignores section argument — all 4 subcommands return bit-identical file-list envelope; 4-way dispatch collapse
Dogfooded 2026-04-18 on main HEAD b56841c from /tmp/cdFF2. /config model, /config hooks, /config plugins, /config env all return: {kind:'config', cwd, files:[...], loaded_files, merged_keys} — BIT-IDENTICAL. diff /config model vs /config hooks → empty. Section argument parsed at slash-command level but not branched on in the handler. Help: '/config [env|hooks|model|plugins] Inspect Claude config files or merged sections [resume]' → 'merged sections' never shown. Same file-list for all. Third dispatch-collapse finding: ultraworkers#111: /providers → Doctor (2-way, wildly wrong) ultraworkers#118: /stats + /tokens + /cache → Stats (3-way, distinct) ultraworkers#126: /config env + hooks + model + plugins → file-list (4-way) Fix shape (~60 lines): - Section-specific handlers: /config model → resolved model, source, aliases /config hooks → pre_tool_use, post_tool_use arrays /config plugins → enabled_plugins list /config env → current file-list (already correct) - Bare /config → current file-list envelope - Regression per section Joins Silent-flag/documented-but-unenforced. Joins Truth-audit — help promises section inspection. Joins Dispatch-collapse family: ultraworkers#111 + ultraworkers#118 + ultraworkers#126. Natural bundle: ultraworkers#111 + ultraworkers#118 + ultraworkers#126 — dispatch-collapse trio. Complete parser-dispatch-collapse audit across slash commands. Filed in response to Clawhip pinpoint nudge 1495023618529300580 in #clawcode-building-in-public.
1 parent b56841c commit 7370546

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

ROADMAP.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4550,3 +4550,47 @@ ear], /color [scheme], /effort [low|medium|high], /fast, /summary, /tag [label],
45504550
**Blocker.** None. ~25 lines across two files.
45514551

45524552
**Source.** Jobdori dogfood 2026-04-18 against `/tmp/cdBB2` on main HEAD `debbcbe` in response to Clawhip pinpoint nudge at `1495016073085583442`. Joins **Truth-audit / diagnostic-integrity** — `git_state: "clean"` is a lie for non-git directories. Adjacent to **#89** (claw blind to mid-rebase) — same field, different missing state. Joins **#100** (status/doctor JSON gaps) — another field whose value doesn't reflect reality. Natural bundle: **#89 + #100 + #125** — git-state-completeness triple: rebase/merge invisible (#89) + stale-base unplumbed (#100) + non-git "clean" lie (#125). Complete coverage of git_state field failures. Session tally: ROADMAP #125.
4553+
4554+
126. **`/config [env|hooks|model|plugins]` ignores the section argument — all four subcommands return bit-identical output: the same config-file-list envelope `{kind:"config", files:[...], loaded_files, merged_keys, cwd}`. Help advertises "/config [env|hooks|model|plugins] — Inspect Claude config files or merged sections [resume]" — implying section-specific output. A claw invoking `/config model` expecting the resolved model config gets the file-list envelope identical to `/config hooks`. The section argument is parsed and discarded** — dogfooded 2026-04-18 on main HEAD `b56841c` from `/tmp/cdFF2`.
4555+
4556+
**Concrete repro.**
4557+
```
4558+
$ claw --resume s --output-format json /config model | jq keys
4559+
["cwd", "files", "kind", "loaded_files", "merged_keys"]
4560+
4561+
$ claw --resume s --output-format json /config hooks | jq keys
4562+
["cwd", "files", "kind", "loaded_files", "merged_keys"]
4563+
4564+
$ claw --resume s --output-format json /config plugins | jq keys
4565+
["cwd", "files", "kind", "loaded_files", "merged_keys"]
4566+
4567+
$ claw --resume s --output-format json /config env | jq keys
4568+
["cwd", "files", "kind", "loaded_files", "merged_keys"]
4569+
4570+
$ diff <(claw --resume s --output-format json /config model) \
4571+
<(claw --resume s --output-format json /config hooks)
4572+
# empty — BIT-IDENTICAL
4573+
4574+
# Help promise:
4575+
$ claw --help | grep /config
4576+
/config [env|hooks|model|plugins] Inspect Claude config files or merged sections [resume]
4577+
# "merged sections" — none shown. Same file-list for all.
4578+
```
4579+
4580+
**Trace path.** `/config` handler dispatches all section arguments to the same config-file-list builder. The section argument is parsed at the slash-command level but not branched on in the handler — it produces the file-list envelope unconditionally.
4581+
4582+
**Why this is specifically a clawability gap.**
4583+
1. *4-way section collapse.* Same pattern as #111 (2-way) and #118 (3-way) — now 4 section arguments (env/hooks/model/plugins) that all produce identical output.
4584+
2. *"merged sections" promise unfulfilled.* Help says "Inspect ... merged sections." The output has `merged_keys: 0` but no merged-section content. A claw wanting to see the active hooks config or the resolved model has no JSON path.
4585+
3. *Joins dispatch-collapse family.* #111 + #118 + **#126** — three separate dispatch-collapse findings: 2-way (/providers → doctor), 3-way (/stats/tokens/cache → stats), 4-way (/config env/hooks/model/plugins → file-list). Complete parser-dispatch-collapse audit.
4586+
4587+
**Fix shape (~60 lines).**
4588+
1. Section-specific handlers: `/config model` → `{kind:"config", section:"model", resolved_model:"...", model_source:"...", aliases:{...}}`. `/config hooks` → `{kind:"config", section:"hooks", pre_tool_use:[...], post_tool_use:[...], ...}`. `/config plugins` → `{kind:"config", section:"plugins", enabled_plugins:[...]}`. `/config env` → current file-list output (already correct for env).
4589+
2. Bare `/config` (no section) → current file-list envelope.
4590+
3. Regression per section.
4591+
4592+
**Acceptance.** `/config model` returns model-specific structured data. `/config hooks` returns hooks-specific data. Each section argument produces distinct output matching its documented purpose. Bare `/config` retains current file-list behavior.
4593+
4594+
**Blocker.** None. Section branching in the handler.
4595+
4596+
**Source.** Jobdori dogfood 2026-04-18 against `/tmp/cdFF2` on main HEAD `b56841c` in response to Clawhip pinpoint nudge at `1495023618529300580`. Joins **Silent-flag / documented-but-unenforced** — section argument silently ignored. Joins **Truth-audit** — help promises section-specific inspection that doesn't exist. Joins **Dispatch-collapse family**: #111 (2-way) + #118 (3-way) + **#126** (4-way). Natural bundle: **#111 + #118 + #126** — dispatch-collapse trio: complete parser-dispatch-collapse audit across slash commands. Session tally: ROADMAP #126.

0 commit comments

Comments
 (0)