Skip to content

Leaf command help can execute runtime work #37

Description

@rrrrrredy

Environment

  • Better Harness version: source checkout at 49a2eef (the CLI inventory and command implementations are unchanged at current main)
  • Host: Standalone CLI
  • Operating system: Windows
  • Installation: Source checkout
  • Command: better-harness <leaf command> --help and better-harness <leaf command> -h

Minimal reproduction

Enumerate the terminal command paths from scripts/better-harness-cli/registry.mjs. From an isolated non-Git working directory, invoke every path with both help flags after an unknown argument or an option whose value is missing. Keep stdin open and deny workspace and home reads, writes, child processes, Git probes, and network access.

The baseline inventory contains 41 terminal paths. Across 82 invocations, 44 returned help and 38 continued into validation, analysis, or input handling instead.

Expected result

Every registered terminal path should:

  • treat --help and -h as immediate discovery requests, even after invalid or incomplete arguments;
  • exit successfully with canonical installed-command help on stdout and an empty stderr;
  • return before reading the target workspace, home or host state, or stdin;
  • return before writing files, starting Git or other child processes, or accessing the network;
  • preserve existing behavior when no help flag is present.

Loading the installed command modules themselves remains allowed. The no-side-effect boundary applies to workspace, home, input, process, network, and mutation behavior triggered by the command.

Validation

An inventory-derived black-box test should cover canonical routes, direct-command aliases, and both help flags so newly registered terminal paths cannot bypass the contract. A separate prohibited-operation canary should prove that each denied operation is observable and that the root dispatcher permits only the exact registered owner invocation.

I can submit a focused implementation and regression tests.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions