A recipe contract or runtime_id mismatch | Your lock has drifted from the server’s catalogue | tp recipe status <exp>, then tp recipe upgrade <exp>, or submit with --upgrade-recipe |
| Uncommitted changes | A submission has to trace to an exact commit | git commit, or --allow-dirty if you accept the loss of provenance |
| Config validation failed | A misspelled key, an out-of-range value, or batch sizes that do not divide | Fix each one, then confirm with tp validate <exp> before resubmitting |
| A Hugging Face preflight failure | A gated repo you are not approved for, or a misspelled org/name | Request access on the hub, then link your account |
| The image registry is not on the allowlist | --image’s host is not in TUNEPLANE_ALLOWED_IMAGE_REGISTRIES. An empty list refuses user images entirely | Ask an administrator. See custom images |
custom external observability requires spec.framework.observability_url | The published custom/custom recipe declares external | Pass --observability-url. See custom training |
| An unknown profile, or a pool series that disagrees with the profile’s | The profile is not in the hardware registry, or you edited the series instead of the shape | Write the shape as --profile h200:4 |
| A packaging refusal naming a file | The packer found something that looks like a credential | Move it out of experiments/, common/ and configs/ |