Skip to content

☂️ Cache tools that maintain their own cache #929

Open
2 of 10 issues completed
Open

Description

@wan9chi

Part of the 2026 Q4 plan (P0).

Goal

Tools such as Vitest, TypeScript and Astro read and rewrite their own cache files, and many build tools read back the folders they write. vp run used to refuse to cache a task whose reads and writes overlap. Cache these tasks without manual exclusions in cache.input or cache.output, and make every hit and miss explainable, so a person or an AI agent can tell why a task missed and what would make it hit.

The remote cache depends on this. In trials on real workspaces, most tasks either couldn't be cached or missed on every fresh checkout.

Done

In progress

Merge in this order:

  1. feat(cache): let a hit rebuild folders that hold only the task's outputs #914 Let a hit rebuild folders that hold only the task's outputs
  2. feat(cache): let a listed folder lack entries a hit can rebuild #915 Let a listed folder lack entries a hit can rebuild
  3. feat(cache): treat files and folders renamed into place as outputs #916 Treat files and folders renamed into place as outputs (fixes Automatic output tracking misses files a task renames into place, so a cache hit restores nothing #908)
  4. feat(cache): let a hit rebuild empty folders the task made #917 Let a hit rebuild empty folders the task made
  5. feat(cache): restore symlinks a task creates #918 Restore symlinks a task creates
  6. fix(cache): stop skipping dist in directory listings #919 Stop skipping dist in directory listings

Diagnostics: with the new rules, people and AI agents need to see why a task missed more than before. RFC: #933 (vp run --dry-run with every miss reason, and vp run --json for the task graph; #791, voidzero-dev/vite-plus#2848).

Next

Related pull requests from contributors

All pull requests: label:"read-write overlap"

Activity

  1. added theissue type on Nov 4, 2026
  2. pinned this issue on Nov 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    read-write overlapCaching tasks that read and write the same paths

    Fields

    Priority

    None yet

    Start date

    None yet

    Target date

    None yet

    Effort

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions