Skip to content

ci: add runtime smoke test for live agent startup#153

Merged
benvinegar merged 2 commits intomainfrom
ci/runtime-smoke-agent-startup
Feb 24, 2026
Merged

ci: add runtime smoke test for live agent startup#153
benvinegar merged 2 commits intomainfrom
ci/runtime-smoke-agent-startup

Conversation

@benvinegar
Copy link
Copy Markdown
Member

Summary

Add a runtime smoke integration check that verifies baudbot can boot and serve session-control RPCs on real droplets.

What changed

  • Added bin/ci/smoke-agent-runtime.sh

    • Starts baudbot
    • Waits for control-agent session-control alias/socket
    • Probes Unix-socket RPC (get_message) as baudbot_agent
    • Verifies bridge supervisor status artifact exists
    • Enforces short stabilization window and status health check
    • Stops baudbot cleanly (with trap-based cleanup)
  • Updated droplet setup scripts to run runtime smoke:

    • bin/ci/setup-ubuntu.sh
    • bin/ci/setup-arch.sh

Validation

Local:

  • bash -n bin/ci/smoke-agent-runtime.sh bin/ci/setup-ubuntu.sh bin/ci/setup-arch.sh
  • npm run test:shell

Runtime:

  • Manually executed full Ubuntu droplet flow with this branch; runtime smoke phase passed end-to-end.

Notes

  • This is a liveness/runtime-health smoke test; it does not trigger an LLM turn.
  • Follow-up for optional gated inference smoke tracked separately (TODO-583a50bc).

@greptile-apps
Copy link
Copy Markdown

greptile-apps Bot commented Feb 24, 2026

Greptile Summary

Added runtime smoke test that verifies baudbot can boot, serve session-control RPCs, and remain stable on real droplets.

Key changes:

  • New smoke-agent-runtime.sh script starts baudbot, waits for control socket, probes Unix-socket RPC, validates bridge supervisor artifact, enforces 20s stabilization window, and stops cleanly with trap-based cleanup
  • Integrated runtime smoke test into both Ubuntu and Arch droplet setup scripts after CLI smoke tests
  • Script uses proper bash error handling (set -Eeuo pipefail) and timeout mechanisms

Issues found:

  • Python socket in RPC probe lacks explicit close() call (minor resource leak in short-lived smoke test)

Confidence Score: 4/5

  • Safe to merge with one minor style improvement recommended
  • Well-structured smoke test with proper error handling, timeout mechanisms, and cleanup logic. The only issue is a minor resource leak in the Python socket code that won't affect the short-lived test execution. Changes to setup scripts are minimal and safe.
  • bin/ci/smoke-agent-runtime.sh has a minor socket cleanup issue but is otherwise well-implemented

Important Files Changed

Filename Overview
bin/ci/smoke-agent-runtime.sh New runtime smoke test script that starts baudbot, verifies socket creation, probes RPC, and checks stability. Has one potential issue with Python socket cleanup.
bin/ci/setup-ubuntu.sh Added runtime smoke test call after CLI smoke tests - minimal change, straightforward integration.
bin/ci/setup-arch.sh Added runtime smoke test call after CLI smoke tests - minimal change, straightforward integration.

Last reviewed commit: 903afd3

Copy link
Copy Markdown

@greptile-apps greptile-apps Bot left a comment

Choose a reason for hiding this comment

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

3 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Comment thread bin/ci/smoke-agent-runtime.sh Outdated
Comment on lines +79 to +80
client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
client.settimeout(4)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Socket not closed after use; could leak file descriptor

Suggested change
client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
client.settimeout(4)
client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
try:
client.settimeout(4)
Prompt To Fix With AI
This is a comment left during a code review.
Path: bin/ci/smoke-agent-runtime.sh
Line: 79-80

Comment:
Socket not closed after use; could leak file descriptor

```suggestion
client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
try:
    client.settimeout(4)
```

How can I resolve this? If you propose a fix, please make it concise.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Good catch — I wrapped the RPC socket usage in a try/finally and now always call client.close() to avoid leaking the descriptor.

Responded by dev-agent-modem-a8b7b331 using openai/gpt-5-mini.

@benvinegar benvinegar merged commit 4041070 into main Feb 24, 2026
9 checks passed
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