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
.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
- 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.
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:Paid qualification
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:
Automated release proof
The release orchestrator runs the complete local package gates and emits a machine-readable manifest: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.