Uh oh!
There was an error while loading. Please reload this page.
feat(ipc): runner ↔ tool IPC channel with disableCache - #441
Conversation
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
c248af8 to
0c0e509Compare0c0e509 to
ba56768Compare5a198fe to
8771d84Compareba56768 to
2ed4f28Compare2ed4f28 to
e04c5b9Comparee04c5b9 to
8cbc27bCompareb11487a to
c32ed5aCompareb886a13 to
c9a46fdCompare466f08c to
3c75926Comparec9a46fd to
a100974Compare87978be to
5babe6dCompareAdd the runner-aware IPC protocol, embedded Node client addon, execution-time server lifecycle, and disableCache handling. The protocol ships with the single disableCache verb; getEnv/getEnvs land with env tracking (#430) and ignoreInput/ignoreOutput with auto output tracking (#431), each alongside the runner logic that consumes them. Co-Authored-By: OpenAI <codex@openai.com>
5babe6d to
3277d1cCompareUh oh!
There was an error while loading. Please reload this page.
Serve real env values over the IPC channel (#441) and make them part of cache correctness: - The server resolves `getEnv`/`getEnvs` against an env map and records the served values and glob match-sets. - The post-run fingerprint stores tracked envs and glob match-sets; cache lookup re-validates them and reports the changed env by name (wording matches manual `env` config misses). - `CACHE_SCHEMA_VERSION` bumps to 14: `PostRunFingerprint` gains fields, so the serialized cache value layout changes and must not share a schema directory with binaries built before this change. - `ignoreInput`/`ignoreOutput` stay accepted-but-no-op — they land with auto output tracking. - Auto output restoration stays disabled: `output: None` resolves to a disabled glob config (matching prior behavior), so a cache hit replays recorded output without restoring written files. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:3277d1cfb1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| // Resolve input negative globs for fspy path filtering (already | ||
| // workspace-root-relative). | ||
| let fspy_negatives = if metadata.input_config.includes_auto { | ||
| let tracking = if metadata.input_config.includes_auto { |
There was a problem hiding this comment.
Enable IPC for explicit-input cached tasks
When a cached task configures input without { "auto": true } (for example to avoid fspy and use explicit globs), this gate never starts the IPC server, and injected_envs() therefore also omits VP_RUN_NODE_CLIENT_PATH. The JS client treats that as outside the runner and disableCache() becomes a no-op, so dev/watch tools that explicitly opt out are still cached and replayed on the next run. The IPC channel needs to be available for all cacheable executions, not only auto-input tracking.
Useful? React with 👍 / 👎.

Motivation
Runner-aware tools need a small, reliable way to tell the task runner when a run must not be cached. Dev-server style workflows are the clearest example: they may run successfully but intentionally do not produce a deterministic cacheable result. This PR lands the IPC channel with the one cache-affecting verb that is safe on its own:
disableCache().The IPC internals are deliberately minimal: protocol, sync client, and server ship only the
disableCacheverb. The Node addon, however, exposes the full client surface from day one —ignoreInput/ignoreOutput/getEnv/getEnvsexist as documented no-ops — because the npm-published JS wrapper calls these methods unconditionally, and a stable addon surface lets real tools (vite) run end-to-end at every PR in this stack. Each no-op becomes a real IPC request in the PR that adds the runner logic consuming it: env verbs in #430, ignore verbs in #431.Review focus
disableCache()is the only IPC verb and the only semantic cache behavior in this PR.VP_RUN_NODE_CLIENT_PATH, drain semantics) is the durable infrastructure the follow-ups build on.disable_cachefixture, plus realvite devdisabling caching end-to-end (vite's env/ignore calls hit the no-ops and fall back gracefully).Verification
cargo fmt --checkcargo shear --deny-warningscargo check --all-featurescargo clippy --all-features -- -D warningscargo testcargo test -p vite_task_bin --test e2e_snapshots -- --ignoredDraft while the stack is under review.
🤖 Generated with Claude Code