Skip to content

fix/startup ctrl c quiet exit - #2526

Merged
flora131 merged 5 commits into
mainfrom
fix/startup-ctrl-c-quiet-exit
Aug 19, 2026
Merged

fix/startup ctrl c quiet exit#2526
flora131 merged 5 commits into
mainfrom
fix/startup-ctrl-c-quiet-exit

Conversation

@flora131

@flora131 flora131 commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

Stack created with GitHub Stacks CLIGive Feedback 💬


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Greptile Summary

This change prevents isolated interactive-runtime shutdown from allowing post-disposal startup work or replacement child processes to continue, and adds regression coverage for overlapping stop, restart, and disposal behavior. The focused lifecycle coverage passed. One style requirement remains: the expanded timeout used by the real-child-process tests should be expressed as a named constant so its purpose and shared policy are clear.

Confidence Score: 4/5

The runtime shutdown behavior is covered by focused tests, with no functional defect found in the reviewed change.

The only final finding is a non-security P2 style issue; under the scoring rules, P2-only findings result in a score of 4.

Files Needing Attention: test/unit/interactive-engine-shutdown-fence.test.ts should replace both bare 60-second test timeouts with a descriptive shared constant.

Prompt To Fix All With AI
### Issue 1
test/unit/interactive-engine-shutdown-fence.test.ts:237
**Bare structural test timeout**

The two new real-child-process tests use a bare `60_000` timeout, which does not communicate why they require an expanded execution budget and makes timeout-policy changes harder to apply consistently. Use a descriptive named constant at this call site, including for the matching timeout near line 278.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Reviews (1): Last reviewed commit: "Merge remote-tracking branch 'origin/mai..." | Re-trigger Greptile

Greptile also left 1 inline comment on this PR.

Context used:

  • Context used - AGENTS.md (source)

@flora131

Copy link
Copy Markdown
Collaborator Author

First-paint Ctrl+C tmux evidence

  • Session target: atomic-startup-ctrl-c-evidence:0.0
  • Command: bun run --cwd /Users/tonystark/Documents/projects/atomic-startup-ctrl-c/packages/coding-agent start:fast -- --approve
  • Launch timestamp (UTC): 2026-08-19T05:08:00.040Z
  • First Ctrl+C timestamp (UTC): 2026-08-19T05:08:03.369Z
  • Second Ctrl+C: sent 250 ms later because the first press had not yet ended the pane; the pane then exited with status 0.

The worktree CLI process started before the first interrupt. The interrupt was sent as soon as the captured terminal stream grew beyond the build output, while the first interactive frame was drawing. tmux capture-pane -p -S - was taken after exit. The escaped capture and raw pipe stream were also checked.

Raw captured pane text





















































                                                                                                                                                     $0.000 (sub) • 0.0%/500k (auto)
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
❯
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
grok-4.6 xhigh • ~/Documents/projects/atomic-startup-ctrl-c/packages/coding-agent (fix/startup-ctrl-c-quiet-exit)
Pane is dead (status 0, Tue Aug 18 22:08:04 2026)

Verdict

Pass. Double Ctrl+C during first paint exited with status 0. The captured pane shows only the leftover footer and a dead-pane line. No transport-error dump, no uncaught-exception banner, no Node stack.

…iet-exit

Assistant-model: Grok 4.6

# Conflicts:
#	packages/coding-agent/CHANGELOG.md
@flora131
flora131 marked this pull request as ready for review August 19, 2026 08:52
…iet-exit

Assistant-model: Grok 4.6

# Conflicts:
#	packages/coding-agent/CHANGELOG.md
@flora131
flora131 merged commit b9ec170 into main Aug 19, 2026
1 check passed
);

serialTest(
"isolated runtime disposal leaves no child after an overlapping replacement",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Bare structural test timeout

The two new real-child-process tests use a bare 60_000 timeout, which does not communicate why they require an expanded execution budget and makes timeout-policy changes harder to apply consistently. Use a descriptive named constant at this call site, including for the matching timeout near line 278.

Context Used: AGENTS.md (source)

Prompt To Fix With AI
This is a comment left during a code review.
Path: test/unit/interactive-engine-shutdown-fence.test.ts
Line: 237

Comment:
**Bare structural test timeout**

The two new real-child-process tests use a bare `60_000` timeout, which does not communicate why they require an expanded execution budget and makes timeout-policy changes harder to apply consistently. Use a descriptive named constant at this call site, including for the matching timeout near line 278.

**Context Used:** AGENTS.md ([source](https://github.com/bastani-inc/atomic/blob/main/AGENTS.md))

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant