Skip to content

Conformance

The authoritative shared suite is in the Python reference. Validation on macOS arm64, 2026-10-19, used reference commit 73108975795d63dd8d1da03117b286d7a4aeb6ef.

Gate Result
Complete shared suite, C server 1,692 passed; no failures or skips
Additional C cross-worker token test 1 passed
Native C client against Python reference 1,397 passed; no failures or skips; 296 server-only/local tests deselected
Shared suite with ASan + UBSan 1,693 passed
Native C client with ASan + UBSan 1,397 passed
Runtime feature tests Shared memory, worker pooling, telemetry queues and failures passed
OTLP/HTTP collector Protobuf validation, context, metrics, retries and rejections passed
Standalone CLI, stdio / Unix / TCP 107 passed, 6 transport/fixture-dependent skips on each
Standalone CLI, HTTP 110 passed, 3 transport/fixture-dependent skips
Native C batch construction Null, empty, and populated nested/dictionary/decimal/timestamp batches passed
Native HTTP producer state machine Empty, zero-row application data, emit-and-finish, buffered init passed
Native HTTPS Default trust rejection, configured CA acceptance, wrong-hostname rejection passed

The CLI's transport/fixture-dependent skips are separate from the complete portable pytest gate. The CLI includes the large-batch cases, including raw batches over 2 GiB. The shared suite covers pipe, owned/shared subprocess, Unix, TCP, HTTP, and HTTP with every eligible response externalized. The SHM fixture transfers large batches through the shared-memory side channel; small/non-fitting batches retain inline fallback.

Reproduce the gates

Build the worker and client driver with the default CMake options. Use a Python 3.13+ environment containing the reference checkout and its http, conformance, mtls, external, and otel extras, plus pytest, pytest-timeout, and opentelemetry-proto.

../vgi-rpc/.venv/bin/python scripts/test_conformance.py --reference-repo ../vgi-rpc
../vgi-rpc/.venv/bin/python tests/check_native_client.py
../vgi-rpc/.venv/bin/python tests/check_shm_negotiation.py
../vgi-rpc/.venv/bin/python tests/check_telemetry.py
../vgi-rpc/.venv/bin/python scripts/generate_protocol.py --check
ctest --test-dir build --output-on-failure

test_conformance.py runs server and native-client roles and fails if either skips a test. Client-role deselection is deliberate: raw HTTP probes of a server must not be counted as proof of a client's behavior. Its JSONL driver obeys the canonical driver contract: transport handling, continuations, fetching, error decoding, and logs all live in the C library.

tests/client_integration.c constructs its own Arrow batches. Its Python launcher only starts independent peers. It covers raw transports, mounted HTTP, buffered producer init, external uploads/downloads, and HTTPS. The native security test covers proof verification/replay windows, session ownership and identity binding, concurrent session resumes, token compression, and token purpose/route binding. The additional HTTP test resumes on another process and rejects missing, swapped, tampered, and differently authenticated tokens.

Sanitizers

cmake -S . -B build-sanitize -DVGI_RPC_SANITIZE=ON -DCMAKE_BUILD_TYPE=Debug
cmake --build build-sanitize --parallel
ctest --test-dir build-sanitize --output-on-failure
ASAN_OPTIONS=quarantine_size_mb=1:thread_local_quarantine_size_kb=64 \
  ../vgi-rpc/.venv/bin/python scripts/test_conformance.py \
  --build-dir build-sanitize --reference-repo ../vgi-rpc

The bounded ASan quarantine keeps the resource-soak RSS tests meaningful; otherwise the sanitizer's deliberate freed-memory quarantine appears as growth.

Scope

Additional native tests exercise actual shared-memory transfer in both directions, allocation bounds, retained-result ownership, exhaustion fallback, pool capacity, concurrency, idle eviction, crash/abandoned-stream recovery, and shutdown with leases. OTLP collector tests validate the official protobuf schemas, parent/child traces, sampling, error status, metrics, and correlated logs over stdio and HTTP. Exporter stalls, queue overflow, and failures leave RPC results unaffected.

The portable gate does not imply support for optional cloud deployments, native Iroh, or OAuth/cloud credential-provider SDKs. HTTPS clients use libcurl; HTTPS hosting uses a reverse proxy. External storage is provided through allocator callbacks. The website capability matrix records these boundaries separately for clients and servers.