Context
Panel refreshes and actions need command execution, but shelling out must stay at the edge. See docs/v1-scope.md.
Acceptance criteria
- Define an injectable command runner boundary.
- Unit tests use a fake runner, not real shell commands.
- Real command execution is wired only at the binary/app edge.
- Results distinguish stdout, stderr, exit status, timeout, and launch failure.
- Default timeout is decided and documented before implementation lands.
Out of scope
- Long-running plugin processes.
- Background refresh.
- Shell-specific dashboard logic in core modules.
Context
Panel refreshes and actions need command execution, but shelling out must stay at the edge. See
docs/v1-scope.md.Acceptance criteria
Out of scope