Problem
The maker apply/plan entry points create ctx := context.Background() and pass it through the entire exec loop, including LLM calls and AWS CLI subprocesses launched via exec.CommandContext (internal/maker/exec.go:1344+). Because the context never carries a deadline, a stalled AWS CLI invocation or an unresponsive LLM endpoint leaves the loop blocked indefinitely; the only escape is Ctrl-C, and any non-interactive/automated invocation (e.g. piped --apply) hangs forever.
Where
cmd/ask.go:496
cmd/ask.go:237
Root cause
Root context for long-running maker execution is context.Background() with no WithTimeout/WithCancel wrapping, so the CommandContext-based cancellation plumbing has nothing to fire on.
How to fix
Wrap the maker root context with a sensible overall deadline (and/or per-command timeouts), e.g. ctx, cancel := context.WithTimeout(context.Background(), N*time.Minute); defer cancel(), and/or honor a --timeout flag. Per-command sub-deadlines for AWS CLI calls would bound individual hangs while letting the loop continue.
Acceptance criteria
A maker run where one AWS CLI command never returns is cancelled at the configured deadline with a clear timeout error rather than hanging the process; covered by a test using a fake aws binary that sleeps.
Severity: low · from holistic hardening review.
Problem
The maker apply/plan entry points create
ctx := context.Background()and pass it through the entire exec loop, including LLM calls and AWS CLI subprocesses launched via exec.CommandContext (internal/maker/exec.go:1344+). Because the context never carries a deadline, a stalled AWS CLI invocation or an unresponsive LLM endpoint leaves the loop blocked indefinitely; the only escape is Ctrl-C, and any non-interactive/automated invocation (e.g. piped --apply) hangs forever.Where
cmd/ask.go:496cmd/ask.go:237Root cause
Root context for long-running maker execution is context.Background() with no WithTimeout/WithCancel wrapping, so the CommandContext-based cancellation plumbing has nothing to fire on.
How to fix
Wrap the maker root context with a sensible overall deadline (and/or per-command timeouts), e.g.
ctx, cancel := context.WithTimeout(context.Background(), N*time.Minute); defer cancel(), and/or honor a --timeout flag. Per-command sub-deadlines for AWS CLI calls would bound individual hangs while letting the loop continue.Acceptance criteria
A maker run where one AWS CLI command never returns is cancelled at the configured deadline with a clear timeout error rather than hanging the process; covered by a test using a fake aws binary that sleeps.
Severity: low · from holistic hardening review.