Skip to content

feat: validate native worktree-local environment selection - #156

Merged
roodboi merged 1 commit into
nextfrom
feat/native-local-resolution
Oct 7, 2026
Merged

roodboi merged 1 commit into
nextfrom
feat/native-local-resolution

Conversation

@roodboi

@roodboi roodboi commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Native configuration validation could not resolve checkout-local or inherited worktree env selection. hack config validate now discovers native inputs and asks the bundled Rust compiler to resolve project, verified primary local, checkout local and explicit --env selection. Omission inherits, null selects base, and canonical names select an overlay. --file remains 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.

@roodboi
roodboi marked this pull request as ready for review October 7, 2026 13:44
@roodboi
roodboi merged commit 34d54dd into next Oct 7, 2026
11 checks passed
@roodboi
roodboi deleted the feat/native-local-resolution branch October 7, 2026 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant