# Add e2e-checkpoint-store workflow (manual, dispatch-only)

`27cc848`→[main](/content/gh/entireio/cli/commits/main/index.html)·

Soph·2w ago·1 file·+170 added/-0 removed

A workflow_dispatch workflow to run the e2e suite against a chosen checkpoint backend (git-branch or git-refs) for a chosen agent. Split into its own PR so it lands on the default branch and becomes dispatchable: workflow_dispatch only shows the "Run workflow" button once the file is on the default branch.

Dispatch-only — merging triggers nothing automatically, so it cannot affect CI or other workflows. Selecting git-refs is meaningful once the git-refs backend lands (#1566); until then dispatch it with ref set to that branch to exercise the backend pre-merge.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

## Sessions

d1f4f04600b5View transcript

Build Checkpoints Store Based on DesignClaude Code·2 steps

## Changes

1

- .github/workflows

- Ae2e-checkpoint-store.yml+170

```yaml
name: E2E Checkpoint Store

on:
  workflow_dispatch:
    inputs:
      agent:
        description: "Agent to run"
        required: true
        default: "vogon"
        type: choice
        options:
          - vogon
          - claude-code
          - opencode
          - gemini-cli
          - factoryai-droid
          - cursor-cli
          - copilot-cli
          - roger-roger
          - codex
      checkpoint_store:
        description: "Checkpoint storage backend to run the suite against"
        required: true
        default: "git-refs"
        type: choice
        options:
          - git-branch
          - git-refs

jobs:
  e2e-checkpoint-store:
    if: inputs.agent != 'copilot-cli'
    runs-on: ubuntu-latest
    timeout-minutes: 40
    permissions:
      actions: read
      contents: read

steps:
      - name: Checkout repository
        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
        with:
          ref: ${{ github.event.pull_request.head.sha || github.sha }}

- name: Install system dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y gnome-keyring tmux
          echo 'somecredstorepass' | gnome-keyring-daemon --unlock

- name: Setup mise
        uses: jdx/mise-action@e6a8b3978addb5a52f2b4cd9d91eafa7f0ab959d # v4

- name: Build entire CLI
        run: go build -o /usr/local/bin/entire ./cmd/entire

- name: Build vogon binary
        if: inputs.agent == 'vogon'
        run: go build -o /usr/local/bin/vogon ./e2e/vogon

- name: Install agent CLI
        if: inputs.agent != 'vogon'
        run: |
          case "${{ inputs.agent }}" in
            claude-code) curl -fsSL https://claude.ai/install.sh | bash ;;
            opencode)    curl -fsSL https://opencode.ai/install | bash ;;
            gemini-cli)  npm install -g @google/gemini-cli ;;
            codex)       npm install -g @openai/codex ;;
            cursor-cli)  curl https://cursor.com/install -fsS | bash ;;
            factoryai-droid) curl -fsSL https://app.factory.ai/cli | sh ;;
            copilot-cli)  npm install -g @github/copilot  ;;
            roger-roger) ;; # installed by mise (see mise.toml)
          esac
          echo "$HOME/.local/bin" >> $GITHUB_PATH

- name: Verify roger-roger agent
        if: inputs.agent == 'roger-roger'
        run: |
          set -euo pipefail
          echo "Verifying roger-roger binaries on PATH..."
          command -v roger-roger
          command -v entire-agent-roger-roger

- name: Bootstrap agent
        if: inputs.agent != 'roger-roger' && inputs.agent != 'vogon'
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
          GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
          FACTORY_API_KEY: ${{ secrets.FACTORY_API_KEY }}
        run: go run ./e2e/bootstrap ${{ inputs.agent }}

- name: E2E Checkpoint Store
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
          GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          E2E_CODEX_MODEL: ${{ inputs.agent == 'codex' && 'gpt-5.1-codex-mini' || '' }}
          CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
          FACTORY_API_KEY: ${{ secrets.FACTORY_API_KEY }}
          E2E_ARTIFACT_DIR: ${{ github.workspace }}/e2e-artifacts
          E2E_ENTIRE_BIN: /usr/local/bin/entire
          E2E_CHECKPOINT_STORE: ${{ inputs.checkpoint_store }}
        run: |
          mkdir -p "$E2E_ARTIFACT_DIR"
          mise run test:e2e --agent ${{ inputs.agent }}

- name: Upload artifacts
        if: always()
        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
        with:
          name: e2e-checkpoint-store-${{ inputs.agent }}-${{ inputs.checkpoint_store }}
          path: e2e-artifacts/
          retention-days: 7

e2e-checkpoint-store-copilot:
    if: inputs.agent == 'copilot-cli'
    runs-on: ubuntu-latest
    timeout-minutes: 40
    permissions:
      actions: read
      contents: read
      copilot-requests: write

- name: Setup mise
        uses: jdx/mise-action@e6a8b3978addb5a52f2b4cd9d91eafa7f0ab959d # v4

- name: Build entire CLI
        run: go build -o /usr/local/bin/entire ./cmd/entire

- name: Install agent CLI
        run: |
          npm install -g @github/copilot
          echo "$HOME/.local/bin" >> $GITHUB_PATH

- name: Bootstrap agent
        env:
          COPILOT_GITHUB_TOKEN: ${{ github.token }}
        run: go run ./e2e/bootstrap ${{ inputs.agent }}

- name: E2E Checkpoint Store
        env:
          COPILOT_GITHUB_TOKEN: ${{ github.token }}
          E2E_ARTIFACT_DIR: ${{ github.workspace }}/e2e-artifacts
          E2E_ENTIRE_BIN: /usr/local/bin/entire
          E2E_CHECKPOINT_STORE: ${{ inputs.checkpoint_store }}
        run: |
          mkdir -p "$E2E_ARTIFACT_DIR"
          mise run test:e2e --agent ${{ inputs.agent }}

- name: Upload artifacts
        if: always()
        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
        with:
          name: e2e-checkpoint-store-${{ inputs.agent }}-${{ inputs.checkpoint_store }}
          path: e2e-artifacts/
          retention-days: 7
```
