Skip to main content

Build a fail-closed evidence bundle

There is no one-command production certification. CI can assemble a reproducible bundle from stable JSON surfaces, while real provider inventory remains an adapter-specific external assertion.
apply or candidate provisioning can create billable resources, validation sends inference, and promotion changes traffic. Use a staging environment, pre-approved maximum cost, non-sensitive fixtures, and an exact qualified serving combination. Run read-only plan and compatibility checks before the first mutation.
Do not parse human CLI output. Preserve stderr separately if progress is needed; JSON stdout must remain one document. The pipeline must fail when any of these is missing or inconsistent:
  • operation ID and terminal succeeded state;
  • deployment, active/candidate revision, serving-plan, and immutable model/runtime identity;
  • request ID, status, selected binding, revision/target where exposed, and content-free evidence;
  • Release Guard decision for the same active/candidate pair when promotion is intended;
  • one persisted provider identity per lifecycle-managed replica intent;
  • zero unexplained InferCrane orphans; and
  • direct provider inventory outcome from the selected adapter guide.
InferCrane cannot provide one provider-neutral command proving account inventory. Add the RunPod, AWS, GCP, or Kubernetes read-only inventory command below as a required CI step. Capture a canonical baseline before candidate creation and another result after rejection/deletion; a successful API call plus byte-equal canonical inventories is the cleanup gate. An empty result is valid only when the command succeeded. Unknown, stale, unauthorized, malformed, or incomplete inventory fails closed. Do not promote when an operation is only waiting, a request lacks correlation, Guard is WAIT/REJECT/INCONCLUSIVE, or the provider outcome cannot be proven.
These commands list every InferCrane-managed resource visible to the configured account/project or namespace, not only the current release. In a shared environment, compare canonical before/after files; do not require global zero and do not delete another deployment’s resource. For RunPod, compare both files. For Kubernetes, compare the KServe file only when the CRD existed in both runs. Credential or permission failure must terminate CI rather than producing an empty success artifact. Keep the bundle with the release artifact or issue an Inference Passport after all required evidence exists. A passport signs evidence; it does not turn missing evidence into a pass.