Skip to content

feat(coding-agent): add post-merge Daytona behavior tests - #295

Merged
Pepps233 merged 12 commits into
mainfrom
ci/daytona-behaviors
Oct 27, 2026
Merged

Pepps233 merged 12 commits into
mainfrom
ci/daytona-behaviors

Conversation

@Pepps233

@Pepps233 Pepps233 commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Add post-merge behavior testing for the exact packaged Diffex CLI in fresh Daytona sandboxes. Deterministic npm/Bun scenarios exercise the installed CLI, real TUI, tools and sessions; a separate bounded OpenAI smoke verifies the live transport.

Automatic main-branch runs remain disabled until GitHub Actions qualification passes. This PR does not merge itself, enable spending, change release gates or revert failed merges.

Reasoning

  • Reuse the existing source/model freeze, offline build, packaging and checksum pipeline so acceptance tests consume reviewed package bytes outside the workspace.
  • Control inference and built-in auth transport for deterministic coverage without replacing application sessions, tools or UI implementations.
  • Keep deterministic behavior, live-provider availability, configuration, evidence integrity and Daytona cleanup outcomes distinguishable. Keep the harness independent of Harbor and Terminal-Bench.
  • Protect secrets explicitly: this repository's Actions artifacts are public-readable to authenticated users with repository read access, so they are not confidential storage.

Changes

  • Add an exact-SHA push: main / manual-dispatch workflow, independent deterministic/live jobs, aggregate validation and 30-day artifact retention, without path filters or cross-run cancellation.
  • Extract shared installation helpers while preserving existing artifact acceptance coverage; add print, streaming terminal, read/write/edit/bash, cancellation/recovery, restart/resume and reviewed 80×24 / 120×40 / resize scenarios.
  • Add a toolchain-only snapshot definition: Node 22.23.2, npm 11.16.0, Bun 1.3.11, Python, tmux, ripgrep and fd; 2 vCPU / 4 GiB RAM / 8 GiB disk and a 45-minute wall-clock sandbox TTL.
  • Add internal run, recover and prepare-snapshot commands with recorded ownership, ambiguous-creation handling, incremental evidence, complete hash/JUnit validation and independently confirmed deletion. Pin the standalone Python Daytona SDK to 0.226.1.
  • Add a fail-closed all-files publication guard. Only a completed, verified sanitized copy can upload; credential findings fail the job, authentication files/symlinks are excluded, and hidden evidence members remain retained. Credentials are not embedded in commands, snapshots, fixtures, commits or reports.
  • Document provisioning, qualification and actual real-service CLI results, including incompatibilities discovered and fixed during qualification.

Testing

  • npm run check — passed.
  • ./test.sh — full credential-isolated non-E2E suite passed.
  • python -m unittest discover -s scripts/daytona-behaviors -p 'test_*.py' in the pinned SDK environment — 59 passed.
  • node --test scripts/artifact-acceptance.test.mjs scripts/daytona-behaviors-workflow.test.mjs scripts/daytona-behaviors/fixture.test.mjs scripts/daytona-behaviors/live-guard.test.mjs — 29 passed.
  • Fresh standalone 0.4.0 packages installed locally with npm and Bun, lifecycle scripts disabled — deterministic installed scenarios and terminal baselines passed.
  • Real Daytona qualification — 13 deterministic scenarios and 3 live scenarios passed against the same retained candidate and corrected bundle. Final live smoke used 4 requests, 98 output tokens and approximately $0.00205 in reported provider usage.
  • Intentional baseline failure, active SIGTERM, runner-loss recovery and two overlapping CLI runs behaved as expected; a fresh independent audit confirmed deletion of all 10 qualification sandboxes.
  • Final local publication scan — 955 files, zero exact matches for either real credential. Committed patch history was separately scanned before pushing; no credentials or local artifacts are included.
  • git diff --check origin/main...HEAD — passed; terminal baseline EOF rows are explicitly preserved as screen geometry.

This pull request description is AI-generated.

@Pepps233 Pepps233 added the enhancement New feature or request label Oct 27, 2026
@Pepps233 Pepps233 self-assigned this Oct 27, 2026

@github-advanced-security github-advanced-security AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

@Pepps233
Pepps233 merged commit daecff2 into main Oct 27, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants