Skip to main content

Development and testing

InferCrane separates product correctness from provider availability. Most changes must be proven without credentials, GPUs, or network access. Real infrastructure is reserved for provider qualification of a frozen release candidate.

Fast loop

This runs repository verification and the provider lifecycle contracts. It is the default command while editing and writes full logs under .infercrane/dev-check/RUN_ID/ while keeping terminal output compact. Passport signing is opt-in in development. Generate a permission-restricted key and inject only its file path into the control-plane process:

Full local qualification

The full command creates an isolated Docker Compose project on an available host port and runs:
  • race-enabled repository and provider-contract tests;
  • generated OpenAPI drift, Python/TypeScript SDK, GitHub Action, and real Terraform protocol tests;
  • the containerized test suite with temporary PostgreSQL;
  • buffered, streaming, tool-call, and structured-output gateway checks;
  • worker-loss and control-plane restart recovery;
  • production Compose configuration validation; and
  • Mintlify build, links, and accessibility checks.
The project and volumes are removed on success, failure, interruption, and termination. Each run uses a filesystem lock so two local qualification stacks cannot silently interfere. Full automation qualification requires Terraform 1.15.8 on PATH or at .infercrane/tools/terraform. It exercises the actual Plugin Protocol against a hermetic control API; it never provisions cloud resources.

Provider contract

Every elastic provider adapter must prove deterministic identity, replay-safe ensure/adoption, observation, and idempotent deletion. Every serverless adapter must additionally prove native zero-worker configuration and adoption after a lost create response. These tests run through the adapter’s public boundary, not private helper functions:
Passing the local contract registers an implementation; it does not advertise production support. A provider becomes qualified only after its API canary and complete real-infrastructure lifecycle evidence are recorded for the exact release commit. Paid commands require --approve-paid-resources and acquire one repository-wide paid-run lock. They refuse concurrent execution, persist the owning PID and run ID, capture sanitized provider inventory on failure, and clean only resources owned by that acceptance run. Use the smallest applicable stage. Do not repeat elastic qualification to debug a serverless template:
See release acceptance for the frozen-RC gates. Provider fakes establish control-plane correctness; they never substitute for final cloud evidence.

Automated release proof

The release orchestrator runs the complete local package gates and emits a machine-readable manifest:
For a clean frozen commit, make qualify-rc adds independently resumable elastic qualification, serverless qualification, elastic faults, and serverless faults. A passed stage is reused only for the same clean commit. Each provider stage has its own acceptance run ID, cleanup, report, and zero-inventory proof, so a later failure does not repeat earlier paid work.