Skip to content

fix(windows): restore native build and runtime validation - #4581

Merged
ScriptedAlchemy merged 41 commits into
masterfrom
codex/windows-native-validation
Oct 27, 2026
Merged

ScriptedAlchemy merged 41 commits into
masterfrom
codex/windows-native-validation

Conversation

@ScriptedAlchemy

@ScriptedAlchemy ScriptedAlchemy commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

Native Windows builds and tests exposed failures in repository identity, database writer recovery, hook admission, host bundle publication, and validation tooling. This change repairs those paths while preserving identity bytes, authorization checks, callback deadlines, and typed failures.

  • Release writer admission after a caller panic, with transaction rollback before the next writer enters.
  • Normalize Git file URLs and filesystem aliases at existing identity boundaries. Transcript aliases require live canonical file identity; missing files, directories, and distinct verbatim names remain collisions.
  • Avoid redundant Windows ACL writes and append-file reopens, and disable Nagle buffering on daemon protocol sockets so hook delivery meets its existing budget.
  • Publish host bundles through the existing durable Windows rename authority under the parent capability. First publication cannot overwrite a raced entry; replacement preserves existing readers. The existing bounded sharing-conflict policy preserves published bytes on permanent denial and removes staging.
  • Restore executable PATHEXT resolution for Bazel rustfmt, regenerate BUILD files, and correct Windows fixtures for native paths, private files, subprocesses, and sockets.

Based on the actual merged result of #4543, which supplies the Windows Bazel generator execution fix and Rust 1.99 toolchain.

Native Windows verification at d19f0b0976:

  • Legacy MCP migration: 30 repeated runs, 11 tests each, all 330 passed.
  • Global database: 473 passed. Real transcript ingest: 199 passed.
  • Private filesystem: 45 passed; focused host publication: 2 passed.
  • Repository Bazel rustfmt check passed. Generated BUILD consistency check: all 60 files current.
  • Full bazel build --config=ci-windows //... --jobs=8: all 451 targets passed.
  • Full bazel test --config=ci-windows //... --test_output=errors --jobs=8: exit 0; 171 test targets passed, 2 skipped, no failures (167 executed; the remainder reused valid cached results).
  • The full run includes the dashboard build, typecheck, bundle determinism, and unit tests; CLI unit tests passed all 376 cases and MCP integration passed all 627 cases.

The developer machine is configured for native MSVC builds, Git Bash/runfiles, the pinned Rust and pnpm toolchains, and Python. Machine-specific paths and cache settings remain in local configuration. Hosted GitHub checks are running or queued separately, with no failures reported at the final local verification. The results above are from the native Windows machine.

ScriptedAlchemy and others added 30 commits October 25, 2026 09:52
`--strategy=TestRunner=dynamic` cannot execute `local` tests, so release
packager gates fail before the fixture runs.
Clippy 1.99 denies large_futures on the four pending-stop wrappers.
Keep master's parallel job start and 4543's feature-gates body.
The hosted Windows workspace build exhausted its disk while linking test and benchmark binaries. fastbuild already uses debuginfo=0, but the Rust toolchain still declared a PDB for every executable and the MSVC fastbuild feature requested /DEBUG:FASTLINK. Bazel retained copies in its output tree and disk cache.

Set the toolchain strip mode coherently so the declared outputs match rustc, and disable the MSVC PDB feature in the Windows CI config. Keep debug builds, unoptimized CI compilation, all targets, and test assertions intact.

Failure evidence: https://github.com/ScriptedAlchemy/tracedecay/actions/runs/40262687638/job/121378315631
The generic cargo_bootstrap helper kills native provisioning after 600 seconds. Two cold hosted runs progressed through unique upstream dependencies until the cutoff: the latest compiled aws-config at 05:21:51 and aws-smithy-http-client at 05:22:08, then was killed at 05:22:30. It never reached workspace compilation or tests.

Give the pinned optimized compiler build an explicit 30-minute budget within the existing 90-minute job. Keep the shared bootstrap artifacts, source checksum, locked dependency graph, and workspace test deadlines unchanged. This isolates the measured cold compiler cost from application test policy.

Failure evidence: https://github.com/ScriptedAlchemy/tracedecay/actions/runs/40271873114/job/121406236336
Bazel 9.3.1 pins rules_cc 0.2.17. Its feature resolver rejects an unsupported feature that another enabled feature unconditionally implies; the MSVC fastbuild feature implies generate_pdb_file, so disabling only the latter causes an analysis error.

Disable the C toolchain fastbuild feature for both target and exec configurations. Preserve its /Od and /INCREMENTAL:NO settings explicitly, while omitting /Z7 and /DEBUG:FASTLINK. The Rust compilation mode and opt/debug/strip mappings, CRT selection, explicit dbg feature, and every CI target remain unchanged.

Verified against rules_cc 0.2.17 cc/private/toolchain_config/configure_features.bzl and cc/private/toolchain/windows_cc_toolchain_config.bzl, and Bazel 9.3.1 src/MODULE.tools and CppOptions.java. git diff --check passes; hosted Windows CI will validate the complete action graph.
The failing Windows job restored an 11,695,764,148-byte action-cache archive produced by master with full PDB generation, then exhausted D: with only 7 MB free. Its restore prefix does not include compiler or linker flags, so the new action keys would leave those obsolete CAS entries beside freshly built outputs.

Move only the Windows action cache to ci-windows-test-v2 with no fallback to the former prefix. Repository and dependency caches, every build/test target, and the existing cache save/verification policy remain intact.

Evidence: https://github.com/ScriptedAlchemy/tracedecay/actions/runs/40262687638/job/121378315631 and https://github.com/ScriptedAlchemy/tracedecay/actions/runs/40226853333/job/121314025643. Workflow YAML parsing and semantic comparison confirm that only the Windows cache generation changes; git diff --check passes.
# Conflicts:
#	.github/actions/setup-bazel/action.yml
# Conflicts:
#	.bazelrc
#	.github/workflows/ci.yml
#	MODULE.bazel
@changeset-bot

changeset-bot Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: d19f0b0

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@ScriptedAlchemy
ScriptedAlchemy marked this pull request as ready for review October 27, 2026 04:18
devin-ai-integration[bot]

This comment was marked as resolved.

@ScriptedAlchemy
ScriptedAlchemy merged commit e19b169 into master Oct 27, 2026
15 of 16 checks passed
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