Skip to content

Add project discovery, compiler preflight, and read-only metadata - #153

Merged
LunaStev merged 3 commits into
wavefnd:masterfrom
LunaStev:feat/wave-0.2.1-integration
Oct 1, 2026
Merged

LunaStev merged 3 commits into
wavefnd:masterfrom
LunaStev:feat/wave-0.2.1-integration

Conversation

@LunaStev

@LunaStev LunaStev commented Sep 30, 2026 •

Copy link
Copy Markdown
Member

Changes

Vex now selects the nearest physical ancestor project, with a global --manifest-path override. Build output, dependency resolution, and vex run use the selected project root; init stays in the invocation directory. Relative compiler paths and message-file paths retain their invocation-directory meaning.

  • Query explicit target support from the selected compiler before resolving dependencies. Cache capabilities only within the current invocation, reject empty VEX_WAVEC, and remove the unreachable raw-wavec argument validator.
  • Add vex metadata JSON schema v1 with deterministic package ordering, transitive edges, exact Git commits, and credential-free source identities. Inspection acquires an existing shared lease before reading the lockfile, performs no network access or recovery, and requests vex fetch if the local graph is insufficient.
  • Preserve OS-string program arguments through native and compiler-selected runner execution. Keep runtime arguments out of the compiler JSON request and release the build lease before spawning the program. Reject paths or dry-run arguments that cannot be represented by JSON/WSON rather than silently replacing bytes.
  • Extend compiler-plan, project-selection, metadata, lock preservation, credential redaction, and argument-forwarding regressions. Expand the real-Wave smoke to cover capabilities, project selection, metadata, and optional exact version/executable-digest checks.

Linked issues

Closes #25
Closes #89
Closes #27
Closes #127
Closes #130
Closes #41
Closes #139
Closes #26
Closes #39
Closes #40
Closes #123

Related release acceptance (kept open): #66, #131, #75, #79.

For #139, the approved split compile/run contract supersedes forwarding runtime arguments through wavec: Vex preserves them as OS strings and appends them directly to the native program or compiler-selected runner. Tests cover argument order, empty/space/flag arguments, runner execution, and the displayed dry-run plan.

Validation

  • Filesystem regression fix: raw-byte filename fixtures run on Linux; macOS CI rejects those names with EILSEQ before Vex starts. Non-UTF-8 runtime-argument coverage remains enabled on Unix, and Unicode project-path/metadata coverage runs on every host.
  • CI regression fix: dirty-checkout and pending-recovery tests now select an explicit deliberately missing compiler, proving rejection occurs before compiler execution without depending on an installed wavec. The original failure was reproduced with wavec removed from PATH and an empty managed-toolchain directory; the complete x.py check then passed under the same conditions.
  • python3 x.py check: formatting, 29 Python tests, 130 passing Rust tests on Linux (one existing ignored test), Clippy with -D warnings, and workspace build.
  • cargo check --workspace --locked --all-targets --target x86_64-pc-windows-gnu passed; this is a cross-compilation check, not native Windows execution.
  • Expanded tests/wave_compatibility.py --reexports --expected-version 0.2.1-pre-beta-dev passed using the local development compiler, including Hello World, path/transitive Git imports, public reexports, private-symbol rejection, locked/offline reuse, and metadata.
  • Development compiler executable SHA-256: 0bb8958f86fe7cdd9747b51074a0edc77e07cdc6179dbb7d19f396b21a13376f. This does not establish its exact source commit or official release-artifact compatibility.

Remaining release acceptance

The planned October 5 Wave v0.2.1-pre-beta artifact must still be verified and pinned before activating required real-compiler CI (#66/#131). Official latest remains v0.2.0-pre-beta, which lacks the required package-import compatibility. Native CI and remaining release/lockfile acceptance (#75/#79) remain required. This PR does not activate a source-built compiler gate.

@LunaStev
LunaStev merged commit d6a0bd0 into wavefnd:master Oct 1, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment