Skip to content

Disposable-host bundle-only end-to-end scenario campaign #308

Description

@cbeaulieu-gt

Part of #243 and the #361 release gate. Supersedes the GitHub-Actions execution proposed by #307.

Goal

Run one consolidated, real-daemon scenario campaign from the exact release bundle on a clean disposable Linux host that mirrors the supported deployment environment, without a Harness source checkout and without registering the host as a GitHub Actions runner.

Ownership boundary

External infrastructure:

  • creates and destroys the clean disposable host;
  • preinstalls required third-party prerequisites;
  • creates and deletes the empty disposable sandbox repository;
  • installs the dedicated GitHub App on that repository;
  • supplies the operator, App-key-provider, executor, and Claude credentials.

Harness:

  • verifies and installs the exact Publish a versioned wheel deployment bundle #382 bundle without dependency re-resolution or repository-source imports;
  • provides working, non-authoritative example scripts for campaign setup;
  • initializes scenario state through packaged application commands;
  • runs and verifies all five scenarios;
  • captures sanitized evidence and always attempts campaign-state cleanup.

The example scripts must not provision the host, install third-party prerequisites, create the repository, install the App, or contain application behavior unavailable through packaged bh-* commands.

Scenarios

Run the following against the externally supplied disposable sandbox:

  1. terminal-block
  2. recovery
  3. clean-implement
  4. block-ambiguity
  5. ci-fail

No-agent and real-agent scenarios share the same campaign runner and evidence contract. Real-agent scenarios use the supplied Claude OAuth state; no mock-agent mode is permitted.

Evidence

Preserve, at minimum:

  • release-bundle checksum;
  • package version, exact source revision, and dependency-lock identity;
  • host and prerequisite inventory;
  • scenario reports and assertion results;
  • command exit codes and sanitized logs;
  • created issue, branch, and PR links;
  • campaign cleanup outcome.

Setup, credential, GitHub-service, scenario-assertion, and cleanup failures must be distinguishable.

Acceptance criteria

  • The campaign runs directly on the externally provisioned disposable host, with no GitHub Actions workflow or runner registration.
  • The campaign uses only the supplied Publish a versioned wheel deployment bundle #382 release bundle; no Harness checkout or .git directory is present.
  • A shipped example setup script works on a clean host whose prerequisites are already installed.
  • The example setup script contains no unique application logic and does not cross the external-infrastructure ownership boundary.
  • Packaged commands initialize, run, and verify all five scenarios against only the configured disposable repository.
  • Operator, daemon-App, and executor identities remain separated throughout the campaign.
  • All five scenario expectations pass against reports emitted by the real daemon.
  • Evidence records the exact tested artifact and all fields listed above without leaking secrets.
  • Cleanup is attempted after success or failure, and its outcome is recorded.
  • External infrastructure can delete the host and sandbox after evidence capture without losing any required campaign artifact.

Dependencies

Depends on #359 and #382. #382 transitively supplies the packaged setup, initialization, verification, and application commands from #378–#381 plus the classified example assets from #383.

Out of scope

Host creation/destruction, operating-system provisioning, third-party prerequisite installation, sandbox-repository creation/deletion, GitHub App installation, credential enrollment, production activation, and rollback.

🤖 Generated by Codex on behalf of @cbeaulieu-gt

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions