{
  "$defs": {
    "Cleanup": {
      "description": "When a file class leaves the bundle; definition order is escalation order.",
      "enum": [
        "never",
        "on_success",
        "always"
      ],
      "title": "Cleanup",
      "type": "string"
    }
  },
  "description": "One [`Cleanup`][] rule per bundle file class; the default keeps everything the run cannot re-fetch.",
  "properties": {
    "geometry": {
      "$ref": "#/$defs/Cleanup",
      "default": "never",
      "description": "The ``geometry.step`` copy pinned into the bundle."
    },
    "gmsh_mesh": {
      "$ref": "#/$defs/Cleanup",
      "default": "never",
      "description": "The gmsh ``.msh`` (only in the bundle for a parametric geometry)."
    },
    "elmer_mesh": {
      "$ref": "#/$defs/Cleanup",
      "default": "never",
      "description": "ElmerGrid's ``mesh.header/nodes/elements/boundary``."
    },
    "partitioning": {
      "$ref": "#/$defs/Cleanup",
      "default": "never",
      "description": "The ``partitioning.<n>/`` directory and its log from a parallel solve."
    },
    "sif": {
      "$ref": "#/$defs/Cleanup",
      "default": "never",
      "description": "``case.sif`` and ``ELMERSOLVER_STARTINFO``."
    },
    "fields": {
      "$ref": "#/$defs/Cleanup",
      "default": "never",
      "description": "The VTU/PVTU field output, master and per-rank pieces together."
    },
    "scalars": {
      "$ref": "#/$defs/Cleanup",
      "default": "never",
      "description": "SaveScalars ``.dat`` exports and their ``.names`` sidecars."
    },
    "logs": {
      "$ref": "#/$defs/Cleanup",
      "default": "never",
      "description": "ElmerGrid/ElmerSolver logs, ``convergence.jsonl``, ``run.log``."
    },
    "sidecars": {
      "$ref": "#/$defs/Cleanup",
      "default": "never",
      "description": "``entities.json``, ``boundaries.yml``, ``components.yml``, ``mesh.names``, ``entities.sif``."
    },
    "run_dir": {
      "$ref": "#/$defs/Cleanup",
      "default": "never",
      "description": "The whole bundle, manifest included; when it applies nothing else matters."
    },
    "cached_inputs": {
      "$ref": "#/$defs/Cleanup",
      "default": "always",
      "description": "Escalation for files the artifact store can re-fetch (``manifest.artifacts``); the stricter of this and the class rule wins."
    }
  },
  "title": "RetentionPolicy",
  "type": "object"
}
