| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
Sorry, something went wrong.
Repoints the vite-task git deps to the tip of the split stack (voidzero-dev/vite-task#431, the auto-output-track branch), whose crates tree is identical to the prior pin plus the runner env-change message refinement. Regenerates the two snapshots whose `VITE_*` cache-miss line now renders as "envs changed" (matching manual env config) instead of "tracked env glob 'VITE_*' changed". 🤖 Generated with [Claude Code](https://claude.com/claude-code)
… command (#436) ## Motivation The planning context's env map — the full session environment, typically hundreds of entries — was copied at every boundary it crossed during planning: - once into `PlanContext` per plan (`plan_query`), - once **per `&&`-item** by `PlanContext::duplicate` (each command gets a scoped context), - once more per `&&`-item into `ScriptCommand::envs` for program lookup and plan-request callbacks, - and once per spawn into `all_envs`. Of these, only the last one does real work — the spawn env is filtered in place by `EnvFingerprints::resolve`. Every other copy duplicates an almost-always-identical map just to hand it to the next stage, and the cost scales with task count × command count, not with actual env changes. The immediate trigger is the upcoming runner-aware caching work (#430/#431): it saves each spawn's **full env context** into the plan (`SpawnCommand::full_envs`) so `getEnv`/`getEnvs` and tracked-env validation resolve against the plan rather than the live process env. Without sharing, that would add yet another full map copy per spawn; with this change it costs a pointer. ## Approach Wrap the map in `Arc` with copy-on-write semantics: - Duplication and hand-off points (`duplicate`, `ScriptCommand::envs`, `PlanContext::new`) share the map — O(1). - The two mutation points pay for a copy only when they change something: `prepend_path` once per task node (package `.bin` PATH prepend), and `add_envs` only when a command actually has prefix envs — an empty prefix set is guarded so it doesn't break sharing. - The per-spawn `all_envs` clone remains, with a comment marking it as the one place the map's contents are genuinely copied. No behavior change; `Session` already held the map in an `Arc`, so its call sites are untouched. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Here are some automated review suggestions for this pull request.
Reviewed commit: 1b5aa54ae5
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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".
Sorry, something went wrong.
| if let Some(rel) = p.strip_prefix(workspace_root).ok().flatten() { | ||
| return Some(rel); |
There was a problem hiding this comment.
Normalize reported ignore paths before matching fspy paths
The reported path is stored immediately after strip_prefix, but client-side relative paths are only joined with the cwd and may still contain .. components. fspy accesses are cleaned in TrackedPathAccesses::from_raw, so an ignore such as ignoreInput('../node_modules/.cache') from a package records packages/app/../node_modules/.cache and will not match the observed node_modules/.cache/..., causing the runner to fingerprint/archive paths the tool explicitly asked to ignore.
Useful? React with 👍 / 👎.
Sorry, something went wrong.
Co-authored-by: GPT-5 Codex <codex@openai.com>
Merge activity |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
Motivation
Runner-aware tools sometimes read files that are cache-like implementation details rather than semantic task inputs. Those reads should not make auto-input fingerprints unstable or prevent cache hits when the tool can identify them.
Scope
Add the ignoreInput(path) IPC request, expose it through the Rust and Node clients, validate and record absolute paths on the server, and filter matching fspy-inferred reads before post-run fingerprinting and read/write overlap checks. Add an e2e that mutates an ignored file between runs and still gets a cache hit.