PyCForge 1.3.72 Windows GC test kit - source maintenance
Verified 2026-10-31

Purpose
Add a PowerShell entry point for native Windows GC qualification using an
external PCFC11 or MinGW GCC. Keep PCFC11 separate and retain its own existing
bash test-pcfc11.sh workflow. This kit does not install or integrate a compiler.

Source identity and preservation
Baseline: pycforge-1.3.72.tar.gz
Baseline SHA256:
366d3b957db46b9441ed3bd5694c3f81cd5bc5883d29adf8653f67caa3d3907f

All 4356 baseline files are retained. The only modified baseline file is
MANIFEST.in, to include the new maintenance files and exclude local test output.
All 964 baseline files under pycforge/ are byte-identical. README.md,
pyproject.toml, pycforge/_version.py, existing tests and existing SDK files are
unchanged. Product version remains 1.3.72. The original release wheel and source
tarball are unchanged; this separate source ZIP is not a replacement PyPI pair.

Added source content
- test-windows-gc.ps1: Windows PowerShell 5.1/PowerShell 7 entry point.
- tools/test_windows_gc.py: standard-library runner, preflight, logs and ZIP.
- tools/build_windows_gc_fixtures.py: maintainer-only fixture generator.
- fixtures/windows_gc/: 39 generated C fixtures and source/hash manifest.
- tests/test_windows_gc_runner.py: execution/report failure-path tests.
- WINDOWS-GC-TESTING.md: setup, commands, reporting, scope and maintenance.
- This verification note.

Coverage
11 explicit-collection cases, 13 managed-boundary cases and 13 active-GC cases
are captured from the existing source regression suites. Added cases exercise
100000 iterations in one call and a Unicode filename with UTF-8 contents and
closed-handle cleanup. All 39 cases run at O0 and O1: 78 checks per compiler.
The metadata-only managed test remains in the original Python suite.

Fault injection uses test-source allocator interposition instead of GNU ld
--wrap, allowing the same fixtures to run with PCFC11. Existing invariants and
allocation-failure assertions are retained, and each sweep rejects a baseline
with fewer than 20 allocations. The production C runtime is unchanged.

Validation completed in this Linux environment
- External PCFC11 0.2.27, x86_64-linux-gnu: 78 passed, 0 failed, 0 not run.
- GCC 13.3.0, x86_64-linux-gnu: 78 passed, 0 failed, 0 not run.
- 9 runner tests passed: literal arguments/paths with spaces, timeout and log
  preservation, missing executable, PE architecture validation, changed fixture
  rejection, missing-compiler failure ZIP, partial/non-Windows qualification
  exclusion, wrong output despite exit zero, and path traversal rejection.
- Existing 2 documentation inventory/workflow tests passed.
- tools.verify_pypi_readme passed with all four approved images and widths.
- tools.verify_conversion_documentation passed: 31 Help pages, 82 Python
  examples, 50 Runtime comparisons, 32 Typed comparisons, 5 API examples,
  6 C callers, 3 module examples and 3 README examples.
- Baseline preservation comparison passed; no missing source files.

PCFC11 observations in both optimization modes: 200 managed allocation-failure
positions and 81 active allocation-failure positions, with zero tracked blocks
after destruction. The 100000-iteration call completed with 12348 collections,
17916 peak arena bytes and 5120 peak root-storage bytes. These measurements are
specific to this fixture and host; Windows observations will be recorded anew.

Native Windows status
NOT YET RUN. Windows and PowerShell are unavailable in this environment.
The PowerShell wrapper was reviewed but has not been executed here. Linux runs
are explicitly marked DEVELOPMENT_PASS and windows_qualified=false. They do
not establish Windows qualification. The user's native Windows run is required.

Windows preflight checks Python bitness, compiler/backend identity and target,
C11 support, x64 PE32+ output, and LLP64 sizes before running the matrix.
Failures preserve logs and return a nonzero status. Once Python starts and the
results folder is writable, setup/test failures are bundled for review. Closing
the terminal forcibly or a disk failure can prevent final ZIP creation.

Limits
No Windows sanitizer result is claimed. Memory evidence uses arena/root
counters, retained-object assertions and tracked allocator cleanup, not process
RSS. This kit does not qualify the full GUI, import framework or every C-language
feature. Product GC defaults are unchanged. Nothing has been published.
