Repository navigation
docs(rfc): JSON task graph, and dry-run plans with cache status - #933
Merged
Merged
Conversation
fspy benchmarklinuxmacoswindows |
This comment has been minimized.
This comment has been minimized.
Member
Author
|
@jasonkuhrt Thanks for the feedback. It's a very valid concern but also complex to implement. I'd prefer to do it in another RFC. To avoid confusion in this RFC, I've added |
Add two RFCs for `vp run` diagnostics: - docs/rfcs/task-graph-json.md: `vp run --json` prints every package and task in the workspace and the `dependsOn` edges between tasks. - docs/rfcs/dry-run.md: `--dry-run` stops before running anything, `--json` prints the plan as JSON, and `-v`/`-vv` make the cache check list every change and everything the cached run depends on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The RFCs say output keys are sorted, but the examples listed them in another order. Sort every example's keys so they match. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On a fresh checkout, a step that reads another step's outputs looked changed in a dry run, although the real run hits once those outputs are restored. A step that would be hit or changed is now unknown when a step it waits on would write files first, by running or by restoring outputs. It keeps today's changes, and restore-aware checking stays in Future. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
They share the same fields, so declare one object with a status union instead of three members joined by an intersection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fields follow the order the types declare them, so program and args come before cache. Map entries keyed by path or ID stay sorted by key. Plan tasks now declare package before name, as task graph tasks do. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
vp run --json without a task prints the task graph and rejects --dry-run, so the rule that adding --dry-run never breaks a working command line only holds when there is a task. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Points to a published JSON Schema with each field's description, so an agent can look up what a field means from the output alone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The schema ships in the vite-plus package that printed the document, so it matches the output exactly and works offline. The value is a file:// URL that is not percent-encoded and has a / before a Windows drive, the form both VS Code and JetBrains IDEs read; neither reads a plain Windows path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
wan9chi
force-pushed
the
claude/task-graph-cli-design-516a03
branch
from
November 5, 2026 06:36
c8ca834 to
408b97b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
Once the work in #929 lands,
vp runcaches tasks that read and rewrite their own files without exclusions incache.inputorcache.output.Humans and AI agents will need to see why a task missed, and what it was checked against, more than before.
Today there is also no way to ask what a run would do, or whether it would hit the cache, before running it (#791, voidzero-dev/vite-plus#2848), or to get the task graph without parsing the task list (#320, voidzero-dev/vite-plus#1182).
Two RFCs:
docs/rfcs/task-graph-json.md:vp run --jsonprints every package and task in the workspace, and thedependsOnedges between tasks.docs/rfcs/dry-run.md:--dry-runstops before running anything,--jsonprints the plan as JSON, and-v/-vvmake the cache check list every change and everything the cached run depends on.Note
Low Risk
Documentation-only RFCs; they describe proposed CLI and JSON formats but do not change product code in this PR.
Overview
Adds two design RFCs under
docs/rfcs/that specify futurevp runbehavior for tooling and agents—no runtime changes in this PR.task-graph-json.mddefinesvp run --json(no task): a versionedTaskGraphdocument with packages, tasks keyed by task ID,dependsOnedges, shared conventions (paths,$schema, absent fields, output rules), and which flag combinations are errors (e.g.--jsonwith-ror--dry-runwithout a task).dry-run.mddefines--dry-run(plan + cache checks without executing or writing),--dry-run --jsonas aRunPlanwith per-step cache status (hit/changed/unknown/noBaseline/ etc.), structuredchanges, optionalchangesPartial, and-vvfingerprints/outputs. It also specifies behavior changes when implemented:-v/--verboseas a counted flag, and real runs with-vlisting all cache miss reasons instead of stopping at the first file difference.Reviewed by Cursor Bugbot for commit 408b97b. Bugbot is set up for automated code reviews on this repo. Configure here.