From 75374b468f90152a3d72ce01716c0afa18935132 Mon Sep 17 00:00:00 2001 From: Ben Vinegar Date: Mon, 23 Feb 2026 22:27:37 -0500 Subject: [PATCH 1/9] ci: add inference smoke test on every PR Add an end-to-end inference smoke test that verifies the control-agent can complete a real LLM turn via session-control RPC. - bin/ci/smoke-agent-inference.sh: sends a prompt via Unix socket RPC, subscribes to turn_end, validates the response contains expected token. - Uses anthropic/claude-haiku (cheap) via new BAUDBOT_MODEL env override. - CI_ANTHROPIC_API_KEY injected into agent .env for provider auth. - start.sh: respect BAUDBOT_MODEL override before auto-detect. - .env.schema: add BAUDBOT_MODEL. - integration.yml: pass CI_ANTHROPIC_API_KEY to every droplet run. - bin/ci/droplet.sh run: accept optional KEY=VALUE env var forwarding. - Wired into setup-ubuntu.sh and setup-arch.sh after runtime smoke. --- .env.schema | 4 + .github/workflows/integration.yml | 3 +- bin/ci/droplet.sh | 16 ++- bin/ci/setup-arch.sh | 3 + bin/ci/setup-ubuntu.sh | 3 + bin/ci/smoke-agent-inference.sh | 210 ++++++++++++++++++++++++++++++ start.sh | 6 +- 7 files changed, 238 insertions(+), 7 deletions(-) create mode 100755 bin/ci/smoke-agent-inference.sh diff --git a/.env.schema b/.env.schema index 363d272..9a0680b 100644 --- a/.env.schema +++ b/.env.schema @@ -31,6 +31,10 @@ GEMINI_API_KEY= # @docs(https://opencode.ai) OPENCODE_ZEN_API_KEY= +# Override auto-detected model (e.g. anthropic/claude-haiku for CI) +# @sensitive=false @type=string +BAUDBOT_MODEL= + # ── Slack ──────────────────────────────────────────────────────────────────── # Slack bot OAuth token (required for direct Socket Mode, optional in broker mode) diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 7030aa3..ad0b37d 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -115,7 +115,8 @@ jobs: bash bin/ci/droplet.sh run \ "${{ steps.droplet.outputs.DROPLET_IP }}" \ ~/.ssh/ci_key \ - "${{ matrix.setup_script }}" + "${{ matrix.setup_script }}" \ + "CI_ANTHROPIC_API_KEY=${{ secrets.CI_ANTHROPIC_API_KEY }}" - name: Cleanup if: always() diff --git a/bin/ci/droplet.sh b/bin/ci/droplet.sh index d4aa8b2..b12d913 100755 --- a/bin/ci/droplet.sh +++ b/bin/ci/droplet.sh @@ -184,12 +184,20 @@ cmd_wait_ssh() { # ── run