Metadata
| Status | done |
|---|---|
| Assigned | agent-1350 |
| Agent identity | f51439356729d112a6c404803d88015d5b44832c6c584c62b96732b63c2b0c7e |
| Created | 2026-05-01T15:08:50.381925414+00:00 |
| Started | 2026-05-01T15:10:27.150638024+00:00 |
| Completed | 2026-05-01T15:30:15.144217221+00:00 |
| Tags | fix,cli,ux,help, eval-scheduled |
| Tokens | 1122349 in / 4888 out |
| Eval score | 0.90 |
| └ blocking impact | 0.95 |
| └ completeness | 0.98 |
| └ coordination overhead | 0.90 |
| └ correctness | 0.95 |
| └ downstream usability | 0.85 |
| └ efficiency | 0.92 |
| └ intent fidelity | 0.94 |
| └ style adherence | 0.85 |
Description
Description
Nested subcommands lose the parent command name in their help text. Example: wg html publish -h shows Usage: publish <COMMAND> instead of Usage: wg html publish <COMMAND>. Confusing because the help could equally apply to wg publish (a different command). Same issue across every nested subcommand: wg html publish add, wg msg send, wg endpoint add, etc.
User report 2026-05-01 after using wg html publish: 'this particular harshness is kind of annoying. Like, it's not clear. It's wg.html.publish. Like, they're kind of mixing and stuff. There's a general way to fix this, which is to just use the command line to drive the help text, so it's not confusing.'
Spec
For every #[command(name = "...")] or subcommand declaration in clap that's nested, ensure the bin_name reflects the full invocation path:
wg(top-level)wg html(one level)wg html publish(two levels)wg html publish add(three levels) etc.
The way to fix in clap (depending on which version): set bin_name("wg html publish") on the subcommand definition, OR use clap's automatic propagation via subcommand_help_heading and disable_help_subcommand with proper command tree configuration.
Reference: https://docs.rs/clap/latest/clap/_derive/_tutorial/index.html — search 'bin_name' for the canonical pattern.
Validation
-
wg html publish -hshowsUsage: wg html publish <COMMAND>(full path) -
wg html publish add -hshowsUsage: wg html publish add [OPTIONS] <NAME> -
wg msg send -hshowsUsage: wg msg send [OPTIONS] <TASK> <MESSAGE> -
wg endpoint add -hshowsUsage: wg endpoint add [OPTIONS] <NAME> -
wg secret set -hshowsUsage: wg secret set [OPTIONS] <NAME> -
At least one nested-3 case checked (e.g.
wg func extract -h) -
No regression of top-level help (
wg --helpstill works correctly) - cargo build + cargo test pass
- cargo install --path . was run before claiming done
Process note
This is a small but high-leverage UX fix — every command's help text becomes self-documenting about the full invocation path. Affects every user, every help-text view, forever. Worth getting right.
Depends on
Required by
- (none)
Log
- 2026-05-01T15:08:50.263304286+00:00 Task paused
- 2026-05-01T15:08:58.270849725+00:00 Task published
- 2026-05-01T15:10:23.378960070+00:00 Lightweight assignment: agent=Careful Programmer (f5143935), exec_mode=full, context_scope=task, reason=Careful Programmer best fits a precision-critical CLI bug fix requiring Rust/clap expertise, binary building, and thorough validation across nested subcommands.
- 2026-05-01T15:10:27.150646540+00:00 Spawned by coordinator --executor claude --model opus
- 2026-05-01T15:10:43.578068429+00:00 Starting: reproduced bug — wg html publish -h shows 'Usage: publish' instead of 'Usage: wg html publish'
- 2026-05-01T15:25:15.573155847+00:00 Fix in src/main.rs maybe_print_subcommand_help: track path of matched subcommand names + set bin_name explicitly on leaf. Verified all 6 specified cases now show full path.
- 2026-05-01T15:30:08.486043026+00:00 Committed: 125648893 — pushed to origin
- 2026-05-01T15:30:08.517811006+00:00 Validated: cargo build + cargo test pass (3308 passed, 0 failed). One pre-existing test failure (config::tests::test_global_config_path) unrelated to this fix — already fixed on main in commit 785bc5a32 (fix-replace-stale).
- 2026-05-01T15:30:08.551326935+00:00 Validated: cargo install --path . ran; live-tested all 6 cases from spec — all show full invocation path.
- 2026-05-01T15:30:15.144220978+00:00 Task pending eval (agent reported done; awaiting `.evaluate-*` to score)
- 2026-05-01T15:33:01.522542966+00:00 PendingEval → Done (evaluator passed; downstream unblocks)