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
7 changes: 4 additions & 3 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,10 @@ jobs:
- name: Run E2E tests
run: pytest tests/e2e/ -v --tb=short --timeout=60

# The API seeds ClickHouse only when it boots on the shipped ClickHouse
# serving profile (config/serving.yaml), so rows in agentflow.orders_v2
# prove the E2E stack exercised the real engine, not a DuckDB fallback.
# The one-shot serving-init service provisions and seeds ClickHouse
# before the API starts (the API itself no longer touches the store on
# boot — audit P0-2), so rows in agentflow.orders_v2 prove the E2E stack
# exercised the real engine, not a DuckDB fallback.
- name: Verify ClickHouse serving path
run: |
orders=$(docker compose -f docker-compose.e2e.yml exec -T clickhouse \
Expand Down
28 changes: 28 additions & 0 deletions docker-compose.e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,32 @@ services:
cpus: "0.50"
memory: 512M

serving-init:
# The API stopped provisioning and seeding the serving store on boot
# (audit P0-2), so the stack lays the schema and the documented demo
# entities down itself before the API starts — the same one-shot job
# docker-compose.prod.yml runs, against the in-stack ClickHouse the E2E
# smoke suite queries.
build:
context: .
dockerfile: Dockerfile.api
depends_on:
clickhouse:
condition: service_healthy
environment:
AGENTFLOW_SERVING_CONFIG: /app/config/serving.yaml
DUCKDB_PATH: /app/data/agentflow.duckdb
CLICKHOUSE_HOST: clickhouse
CLICKHOUSE_PORT: 8123
CLICKHOUSE_DATABASE: agentflow
CLICKHOUSE_USER: default
CLICKHOUSE_PASSWORD: ""
command: ["python", "-m", "src.serving.provision", "--schema", "--seed"]
restart: "no"
volumes:
- agentflow-api-data:/app/data
- ./config:/app/config:ro

agentflow-api:
build:
context: .
Expand All @@ -99,6 +125,8 @@ services:
condition: service_healthy
clickhouse:
condition: service_healthy
serving-init:
condition: service_completed_successfully
ports:
- "8000:8000"
environment:
Expand Down
7 changes: 7 additions & 0 deletions k8s/staging/values-staging.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,13 @@ config:
extraEnv:
- name: AGENTFLOW_WEBHOOKS_FILE
value: /data/e2e-webhooks.yaml
# Staging is an ephemeral kind cluster serving from the per-pod embedded
# DuckDB, and the smoke tests query the documented demo entities
# (ORD-20260404-1001 …). Boot seeding is the explicit opt-in that audit
# P0-2 left for exactly this profile — off by default everywhere else, so
# no real store ever receives demo rows for merely being empty.
- name: AGENTFLOW_SEED_ON_BOOT
value: "true"

# Staging is an ephemeral kind cluster torn down after each CI run. The
# hashes below correspond to the same plaintext fixtures committed in
Expand Down