test(win): avoid deep-checkout linker failure in nested AF-02 corpus test

Closed
TH
7d ago
+55-11

Purpose

A focused executable repair for the long-path Windows failure tracked by #190. The corpus-bijection integration test launches a nested cargo run to invoke the AF-02 corpus verifier. Without an explicit nested target directory, Cargo may place Windows MSVC link outputs under a checkout path exceeding MAX_PATH.

Change (one unprotected test file)

  • Give the nested cargo subprocess an explicit CARGO_TARGET_DIR on Windows only.
  • The path is a per-test temporary directory under the host's temp root, rather than the deep repository worktree.
  • Keep that TempDir alive across all nested verifier calls within one test, preserving reuse, then clean it up when the test exits.
  • Preserve the original genuine canonical corpus/assertion validation, tampered corpus and registry failures, and expected output/evidence assertions. Linux/macOS execution is unchanged.
  • No new dependencies, no test skip, no pinned AF-02 schema, verifier, workflow, rule, oracle, or Cargo manifest changes.

Qualification

  • Inspect actual test source at observed main f82565cca917d119e1c774b2c470e2ac20e0d6dd.
  • Current head: 966cd81a5136a6e5debee79d83e6a90bb4abe2de; exact-head CI and genuine independent review required.
  • The reported old Windows failure was observed in the V3.2 audit, not reproduced by this change alone. AF-03 Windows verification (long-path reproduction, regression, constrained resource measurements) remains required before issue #190 closure.
  • Check main/protected source identities and do not infer success from Linux-only CI.
  • Merge only as normal merge commit after required approvals and successful checks; V2 remains execution authority.

Closes no issue automatically. Related: #190; G51 planning PR #188; V3.2 planning PR #187.


Summary by cubic

Fixes the Windows linker failure in the AF-02 corpus test by pointing nested cargo builds at a short temporary target directory, and tightens the tamper tests so a failed build no longer counts as a rejected corpus.

  • Sets CARGO_TARGET_DIR on Windows only, using a per-test temp directory that lives for the test and is cleaned up on exit.
  • Tampered corpus and registry tests now require the verifier's own rejection diagnostic; a cargo build or link failure alone no longer passes.
  • Linux/macOS execution and all positive corpus and output assertions are unchanged; adds no dependencies and skips no tests.