Repository navigation
feat: validate native worktree-local environment selection - #156
Merged
Merged
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.
Native configuration validation could not resolve checkout-local or inherited worktree env selection.
hack config validatenow discovers native inputs and asks the bundled Rust compiler to resolve project, verified primary local, checkout local and explicit--envselection. Omission inherits, null selects base, and canonical names select an overlay.--fileremains context-free.Rust owns the strict versioned local schema and precedence. Acquisition reads only bounded stable native files, verifies primary Git/input identity, respects CI/slim/opt-out, and cancels/reaps owned Git inspections. Local resolution has a separate hash; it does not rewrite the authored plan. This also fixes Rust accepting array-shaped struct inputs that the generated schema rejects.
The new local schema ships beside the compiler and project schema. Complete old compiler/project pairs remain supported, while partial, changed or aliased payloads refuse. The installer recognizes the exact prior reviewed manager for explicit upgrade.
Validation passes: 31 Rust tests with fmt/Clippy, 119 independent schema/Rust cases, 77 acquisition/worktree/race regressions, 34 CLI/transport/DTO tests, 40 packaging tests and 38 Python controls. Relocated compiled CLI checks use actual linked Git worktrees and no host toolchains. Fresh full repository gates pass: 2,268 CLI tests, 68 skips, zero failures; DB checks reused valid cache (2 tests). Independent source review, typecheck, check, staged privacy and actionlint pass. Signed private candidate build/install qualification passes on 0951a31: installed project/local resolution without host Bun/Rust, signatures/checksums, repeated install preserving both home identities, deselect/refuse/reselect and empty runtime homes. Fixture 5.0.0-next.9998 was not tagged or published; no existing channel changed. All ten hosted CI jobs plus Graphite pass on exact head 0951a31.
This adds an optional offline capability (
feat). It does not enable native runtime/adoption, read managed env values, inspect overlay existence, or create an atomic input/admission fence. Nested native projects currently use checkout-local settings only. Remaining frozen-contract and metadata integration stays in HACK-1220.