Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 1 addition & 89 deletions .github/workflows/e2e-harness.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,92 +94,4 @@ jobs:
if: always()
env:
POWERCONTEXT_E2E_DATABASE: ${{ matrix.database }}
run: e2e/bub/run.sh down

# live-replay:
# needs: acceptance
# if: github.event_name != 'pull_request'
# runs-on: ubuntu-latest
# timeout-minutes: 50
# strategy:
# fail-fast: false
# matrix:
# database: [sqlite, oceanbase]
# name: Live replay (${{ matrix.database }})
# steps:
# - name: Check out
# uses: actions/checkout@v7

# - name: Check provider configuration
# id: provider
# env:
# API_KEY: ${{ secrets.POWERCONTEXT_E2E_API_KEY }}
# MODEL: ${{ vars.POWERCONTEXT_E2E_MODEL }}
# run: |
# if [[ -n "${API_KEY}" && -n "${MODEL}" ]]; then
# echo "configured=true" >> "${GITHUB_OUTPUT}"
# else
# echo "configured=false" >> "${GITHUB_OUTPUT}"
# echo "Live replay skipped because provider credentials are not configured." >> "${GITHUB_STEP_SUMMARY}"
# fi

# - name: Run live replay
# if: steps.provider.outputs.configured == 'true'
# env:
# BUB_API_BASE: ${{ vars.POWERCONTEXT_E2E_API_BASE }}
# BUB_API_KEY: ${{ secrets.POWERCONTEXT_E2E_API_KEY }}
# BUB_MODEL: ${{ vars.POWERCONTEXT_E2E_MODEL }}
# POWERCONTEXT_E2E_DATABASE: ${{ matrix.database }}
# POWERCONTEXT_E2E_OUTPUT: ${{ github.workspace }}/.powercontext-e2e/${{ matrix.database }}/live
# run: make harness-compose-live

# - name: Scan replay evidence
# id: evidence_scan
# if: always() && steps.provider.outputs.configured == 'true'
# continue-on-error: true
# env:
# EVIDENCE_PATH: ${{ github.workspace }}/.powercontext-e2e/${{ matrix.database }}/live
# run: |
# test -d "${EVIDENCE_PATH}"
# docker run --rm \
# --volume "${EVIDENCE_PATH}:/evidence:ro" \
# "${TRUFFLEHOG_IMAGE}" \
# filesystem /evidence \
# --no-verification \
# --results=verified,unknown,unverified \
# --fail \
# --fail-on-scan-errors \
# --no-update \
# --json > "${RUNNER_TEMP}/trufflehog-live-${{ matrix.database }}.jsonl"

# - name: Report suppressed replay evidence
# if: >-
# always() &&
# steps.provider.outputs.configured == 'true' &&
# steps.evidence_scan.outcome != 'success'
# run: echo "::warning::Replay evidence was not published because secret scanning did not complete cleanly."

# - name: Publish replay summary
# if: >-
# always() &&
# steps.provider.outputs.configured == 'true' &&
# steps.evidence_scan.outcome == 'success'
# run: cat ".powercontext-e2e/${{ matrix.database }}/live/report.md" >> "${GITHUB_STEP_SUMMARY}"

# - name: Upload replay evidence
# if: >-
# always() &&
# steps.provider.outputs.configured == 'true' &&
# steps.evidence_scan.outcome == 'success'
# uses: actions/upload-artifact@v7
# with:
# name: e2e-live-${{ matrix.database }}-${{ github.sha }}
# path: .powercontext-e2e/${{ matrix.database }}/live
# if-no-files-found: error
# retention-days: 14

# - name: Stop harness environment
# if: always()
# env:
# POWERCONTEXT_E2E_DATABASE: ${{ matrix.database }}
# run: e2e/bub/run.sh down
run: make harness-compose-down
25 changes: 7 additions & 18 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -52,15 +52,9 @@ harness-check: ## Validate the Bub replay harness and committed scenarios.
@uv run --project e2e/bub powercontext-e2e --help >/dev/null

.PHONY: harness-acceptance
harness-acceptance: ## Run all deterministic Bub session replay scenarios against a Server.
@uv run --project e2e/bub powercontext-e2e acceptance e2e/bub/scenarios/*.yaml \
--output "$${POWERCONTEXT_E2E_OUTPUT:-e2e/bub/results}"

.PHONY: harness-live
harness-live: ## Run one real-model Bub session replay scenario against a Server.
@uv run --project e2e/bub powercontext-e2e live \
"$${POWERCONTEXT_E2E_SCENARIO:-e2e/bub/scenarios/project-database-decision.yaml}" \
--output "$${POWERCONTEXT_E2E_OUTPUT:-e2e/bub/results/live}"
harness-acceptance: ## Evaluate workloads by ID or category against an existing Server.
@uv run --project e2e/bub powercontext-e2e acceptance \
--output "$${POWERCONTEXT_E2E_OUTPUT:-e2e/bub/results}" $(ARGS)

.PHONY: harness-rescore
harness-rescore: ## Rescore REPLAY without rerunning Bub or PowerContext.
Expand All @@ -74,17 +68,12 @@ harness-compose-check: ## Validate the SQLite and OceanBase Compose environments
@POWERCONTEXT_E2E_DATABASE=oceanbase e2e/bub/run.sh check

.PHONY: harness-compose-acceptance
harness-compose-acceptance: ## Build and run deterministic replay scenarios in containers.
@e2e/bub/run.sh acceptance

.PHONY: harness-compose-live
harness-compose-live: ## Build and run one real-model replay in containers.
@e2e/bub/run.sh live
harness-compose-acceptance: ## Build and evaluate workloads by ID or category in the fixed harness.
@e2e/bub/run.sh acceptance $(ARGS)

.PHONY: harness-compose-down
harness-compose-down: ## Stop both isolated harness environments and remove their volumes.
@POWERCONTEXT_E2E_DATABASE=sqlite e2e/bub/run.sh down
@POWERCONTEXT_E2E_DATABASE=oceanbase e2e/bub/run.sh down
harness-compose-down: ## Stop the selected isolated harness environment and remove its volumes.
@e2e/bub/run.sh down

.PHONY: contract-test
contract-test: api-generate-check ## Verify generated API code and contract bindings.
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1.7

FROM ghcr.io/astral-sh/uv:0.10.12 AS uv
FROM docker.io/astral/uv:0.10.12 AS uv


FROM python:3.11-slim-bookworm AS builder
Expand Down
16 changes: 14 additions & 2 deletions e2e/bub/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,14 +1,24 @@
# syntax=docker/dockerfile:1.7

FROM ghcr.io/astral-sh/uv:0.10.12 AS uv
FROM docker.io/astral/uv:0.10.12 AS uv

FROM docker.io/library/docker:27.5.1-dind AS docker

FROM python:3.12-slim-bookworm

COPY --from=uv /uv /uvx /bin/
COPY --from=docker /usr/local/bin/ /usr/local/bin/
COPY --from=docker /usr/local/libexec/docker/cli-plugins/ /usr/local/libexec/docker/cli-plugins/

RUN apt-get update \
&& apt-get install --yes --no-install-recommends ca-certificates git iproute2 iptables pigz socat \
&& rm -rf /var/lib/apt/lists/* \
&& docker compose version

ENV PATH="/workspace/powercontext/e2e/bub/.venv/bin:$PATH" \
PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
POWERCONTEXT_E2E_REPOSITORY=/workspace/powercontext \
UV_COMPILE_BYTECODE=1 \
UV_LINK_MODE=copy

Expand All @@ -19,4 +29,6 @@ COPY . .
RUN --mount=type=cache,id=powercontext-bub-e2e-uv,target=/root/.cache/uv \
uv sync --project e2e/bub --frozen --no-dev --no-editable

ENTRYPOINT ["powercontext-e2e"]
COPY --chmod=0755 e2e/bub/container-entrypoint.sh /usr/local/bin/powercontext-e2e-container

ENTRYPOINT ["powercontext-e2e-container"]
Loading