unslothai/unsloth · error · RecipeDatasetPublishError
Execution artifacts are no longer available.
Error message
Execution artifacts are no longer available.
What it means
RecipeDatasetPublishError raised when the artifact path resolves inside the datasets root but no longer exists on disk (resolved.exists() is False). It typically means the execution outputs were cleaned up (retention/GC) or deleted between run completion and the publish call.
Source
Thrown at studio/backend/core/data_recipe/huggingface.py:37
class RecipeDatasetPublishError(ValueError):
"""Raised when a recipe dataset cannot be published to Hugging Face."""
def _resolve_recipe_artifact_path(artifact_path: str) -> Path:
root = recipe_datasets_root().expanduser().resolve()
candidate = resolve_dataset_path(artifact_path).expanduser()
resolved = candidate.resolve(strict = False)
try:
resolved.relative_to(root)
except ValueError as exc:
raise RecipeDatasetPublishError(
"This execution artifact is outside the Recipe Studio dataset storage."
) from exc
if not resolved.exists():
raise RecipeDatasetPublishError("Execution artifacts are no longer available.")
if not resolved.is_dir():
raise RecipeDatasetPublishError("Execution artifact path is not a dataset folder.")
return resolved
def publish_recipe_dataset(
*,
artifact_path: str,
repo_id: str,
description: str,
hf_token: str | None = None,
private: bool = False,
) -> str:
dataset_path = _resolve_recipe_artifact_path(artifact_path)
try:
from data_designer.engine.storage.artifact_storage import (View on GitHub (pinned to 203007d190)
Solutions
- Re-run the recipe to regenerate the artifact, then publish promptly.
- Increase or disable artifact retention if publishing happens long after runs.
- Put the datasets root on persistent storage (not a container tmpfs) in deployments that publish later.
- Publish immediately after execution completes rather than from an old run history entry.
Example fix
# before publish_recipe_dataset(artifact_path=old_artifact, ...) # after # re-execute the recipe first, then publish the fresh artifact run = service.run_recipe(recipe) publish_recipe_dataset(artifact_path=run.artifact_path, ...)
Defensive patterns
Strategy: validation
Validate before calling
from pathlib import Path
def artifact_available(artifact_path: str) -> bool:
return Path(artifact_path).expanduser().resolve().exists() Try / catch
try:
publish_recipe_dataset(artifact_path=p, repo_id=r)
except RecipeDatasetPublishError as e:
if 'no longer available' in str(e):
run = rerun_recipe(recipe); publish_recipe_dataset(artifact_path=run.artifact_path, repo_id=r) Prevention
- Publish soon after execution completes.
- Set artifact retention longer than your publish delay.
- Keep the datasets root on persistent storage.
When it happens
Trigger: Publishing long after the recipe ran, with a retention job having purged old artifacts; manually deleting the artifact directory; container restarts wiping ephemeral storage that hosted the datasets root.
Common situations: RetentionPolicy/GC deleting old run outputs; studio deployed with the datasets root on a tmpfs or ephemeral volume; users cleaning disk space to free quota.
Related errors
- Execution artifact path is not a dataset folder.
- This execution artifact is outside the Recipe Studio dataset
- NeMo Data Designer Hugging Face integration is not installed
- job already running
- Add a Provider connection block before running this recipe.
AI-assisted analysis of unslothai/unsloth@203007d190 (2026-08-15).
Data as JSON: /api/errors/f56be38b1eaeed22.
Report an issue: GitHub.