{
  "id": 14260148,
  "title": "When an input moves mid-run, vx keeps the result and skips the save",
  "url": "https://urgent.news/2026/10/13/when-an-input-moves-mid-run-vx-keeps-the-result-and-skips-the-save",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-13T18:12:50.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/vzn-vx/when-an-input-moves-mid-run-vx-keeps-the-result-and-skips-the-save-4bo2"
  },
  "original_language": "en",
  "account": "A cache key is a promise ensuring these outputs were constructed using exact inputs. When vx takes the key just before running a command, any change in the inputs mid-run prevents saving the output under that key, as it would replay the wrong result. Therefore, when an input moves during the run, vx keeps the result, does not save the entry, and informs which file changed. If the task writes to the file, it must declare it in cache.outputs. On the next run, it is a miss and rebuilds from what is currently on disk. After the command, vx checks each input once, determining if a file was modified by statting the file. Any file touched after its digest was learned is rehashed and compared. If the file is gone, it has moved. When a task writes to the same bytes, it is counted as moved, requiring a re-run. This is also applicable on CI runners, where a task running alongside can change an input and put it back, causing a byte check to miss the change. By default, mutable is set for every task, but it can be overridden with strategy: unchecked or severity: error for critical pipelines. Withheld saves do not stop downstream tasks, and every task that ran over its outputs is affected, withholding its save as well.",
  "summary": "A cache key is a promise: these outputs were built from exactly these inputs. vx takes the key just before the command runs. If an input changes while the command is running, the output was built from bytes the key does not describe, and filing it under that key would replay the wrong output on the next hit. So when an input moves mid-run, vx keeps the run's result, saves no entry, and tells you…",
  "key_points": [
    "When an input changes mid-run, vx skips saving the output.",
    "vx keeps the result and marks the changed file.",
    "Next run rebuilds from current disk state if file moved."
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}