Skip to content

ci: multi-transport (subprocess/http/unix) SQL E2E matrix (gated job) - #1

Merged
rustyconover merged 1 commit into
mainfrom
ci/multi-transport-sql
Jun 24, 2026
Merged

ci: multi-transport (subprocess/http/unix) SQL E2E matrix (gated job)#1
rustyconover merged 1 commit into
mainfrom
ci/multi-transport-sql

Conversation

@rustyconover

Copy link
Copy Markdown
Contributor

Run the haybarn SQL suite over all three VGI transports (subprocess, http, unix), parameterizing ci/run-integration.sh by $TRANSPORT.

The heavy integration job (builds libpostal + ~2 GB data) stays gated behind if: vars.RUN_LIBPOSTAL == 'true' and remains SKIPPED by default on PRs — the transport matrix only applies when that variable is flipped on. The always-on lint job is unchanged and stays green.

  • http: --http --port 0 --port-file; httpfs injected; silent-skip guard; http extra (waitress) added + relocked.
  • unix: --unix <sock>.
  • Suite is scalars + init-drained table functions — nothing gated within the suite over http.
  • Local validation (homebrew libpostal): subprocess GREEN (37), unix GREEN (37), http GREEN (43).

🤖 Generated with Claude Code

…job)

Run the haybarn SQL suite (test/sql/*.test) over all three VGI transports, not
just subprocess/stdio. The vgi extension picks the transport from the ATTACH
LOCATION string, so run-integration.sh is now parameterized by $TRANSPORT and
builds that string per leg:

  subprocess : .venv/bin/python libpostal_worker.py  (stdio; extension spawns it)
  http       : http://127.0.0.1:<port>  (worker booted with --http --port 0
               --port-file; harness polls the port-file, then ATTACHes the URL)
  unix       : unix:///tmp/libpostal-<pid>.sock  (worker booted with --unix)

The heavy `integration` job (builds libpostal + ~2 GB data) STAYS GATED behind
`if: vars.RUN_LIBPOSTAL == 'true'` — it remains SKIPPED by default on PRs. The
transport matrix (transport: [subprocess, http, unix], ubuntu-only since the
libpostal build is Linux-specific) applies only when that variable is flipped
on. The always-on `lint` job is unchanged.

http leg specifics (resolved, not gated):
- httpfs injected after each LOAD vgi (the vgi extension routes worker-RPC HTTP
  through DuckDB's httpfs).
- waitress via the new `http` extra: pyproject + PEP 723 header now list
  `vgi-python[http]`; the gated job's worker install runs
  `uv sync --frozen --extra dev --extra http` (relocked).
- Silent-skip guard: fail the leg unless the runner reports
  "All tests passed (N assertions ...)" with N>0 and zero skips — no fake green.

The suite is per-row scalars + two init-drained table functions
(parse_address_components, address_labels) with no streaming partition-local
cursor state, so nothing needed gating within the suite over http.

Local validation (haybarn-unittest, homebrew libpostal): subprocess GREEN (37),
unix GREEN (37), http GREEN (43, +6 injected httpfs INSTALL/LOAD). ruff, ruff
format, mypy all clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@rustyconover
rustyconover merged commit 0a6f567 into main Jun 24, 2026
3 checks passed
@rustyconover
rustyconover deleted the ci/multi-transport-sql branch June 24, 2026 01:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant