Adds Milestone 3 command planning and process handoff plumbing for limen. The package builds local and remote tmux/SSH command vectors, validates new-session names, records advisory state before handoff, and wraps syscall.Exec behind an injectable boundary.
# Summary
Adds Milestone 3 command planning and process handoff plumbing for `limen`. The package builds local and remote tmux/SSH command vectors, validates new-session names, records advisory state before handoff, and wraps `syscall.Exec` behind an injectable boundary.
## Scope
- [x] This PR matches a behavior described in [`docs/DESIGN.md`](../docs/DESIGN.md).
- [x] If the PR changes intended behavior, the design doc is updated in this PR (or a preceding one).
- [x] If the PR adds a non-trivial dependency, the rationale is in the summary above.
## Changes
- Adds `internal/exec` command plans for local attach/new and remote attach/new.
- Adds new-session name normalization and validation per the design.
- Adds a testable `Handoff` path that updates `state.json` before invoking the injected `syscall.Exec` boundary.
- Preserves advisory state semantics: state write failures do not block the final process handoff.
- Adds unit coverage for command plans, validation, state update timing, exec env/argv, and exec failure output.
## How to test
```sh
go test -race -count=1 ./...
go vet ./...
go build ./...
go test -cover -count=1 ./...
nix flake check
```
## Screenshots / asciinema
Not applicable. This milestone intentionally has no TUI.
## Checklist
- [x] Tests added or updated, where appropriate.
- [x] `go vet ./...` passes.
- [x] No new TODOs that aren't tracked in an issue.
- [x] Commit messages follow Conventional Commits (`feat:`, `fix:`, `docs:` ...).
Closes #3
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Adds Milestone 3 command planning and process handoff plumbing for
limen. The package builds local and remote tmux/SSH command vectors, validates new-session names, records advisory state before handoff, and wrapssyscall.Execbehind an injectable boundary.Scope
docs/DESIGN.md.Changes
internal/execcommand plans for local attach/new and remote attach/new.Handoffpath that updatesstate.jsonbefore invoking the injectedsyscall.Execboundary.How to test
Screenshots / asciinema
Not applicable. This milestone intentionally has no TUI.
Checklist
go vet ./...passes.feat:,fix:,docs:...).Closes #3