Repository navigation
Conversation
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.
Why
A queued
project_validateJob checks its retained Project recipe before preparing the local process. Shell profile initialization and tool probes can then change source inputs such asCargo.lockorgo.mod. The final pre-spawn source fence previously applied only to native Node validation, leaving other Project adapters able to start a stale plan.Change
validation::project::fenceafter all profile/tool/command preparation for every provenance-bearing Project Validation Job.The profile initialization may already have run before a
validation_plan_stalefailure; the guarantee is that the main validation child is not launched with a stale plan. The recheck is not an atomic filesystem snapshot.Regression evidence
A deterministic fixture prepares temporary Rust and Go Projects and uses a local shell profile to alter the recipe inputs during the gap between the two fences. A fake validation executable distinguishes actual native execution from earlier profile/tool preparation.
main@2bac8248: Rustproject_validate(check)with a profile-mutatedCargo.lockincorrectly completed and launchedcargo check.c41d6c35: Rust and Go stale-source scenarios now fail withvalidation_plan_staleandNotStarted; no-drift controls execute once.project_validationsuite: 30 passed, 0 failed.cargo fmt --all -- --checkandgit diff --check: passed.Scope
Two Runner files only:
job_manager/local_shell.rsandjob_manager_tests/project_validation.rs. No new public schema/capability, validation action, workflow scheduler, executable source, retry policy or Project source-truth implementation.Refs #962.
Fork GitHub Actions on exact commit
c41d6c358778776cd324cbfcfdd06b76e22c32a1: success, run 39749691838 — 14 jobs passed, 0 failed, 4 path-skipped. Linux Runner/Server/workspace/tooling, Windows Runner/Core, macOS native Core, Contracts and MCP Conformance all passed.