Skip to content

Diagnostic: record Windows native CI environment and timings - #15

Open
OptimumAF wants to merge 2 commits into
masterfrom
codex/windows-native-ci-diagnostics-20261007
Open

OptimumAF wants to merge 2 commits into
masterfrom
codex/windows-native-ci-diagnostics-20261007

Conversation

@OptimumAF

@OptimumAF OptimumAF commented Oct 7, 2026 •

Copy link
Copy Markdown
Owner

Windows native CI has repeated 40- and 90-second child-process timeouts with the same selected physical source/configuration hashes as the passing local baseline. PR15's first diagnostic run collected 87 passes, 2 deadline failures and 1 skip; it did not establish a cause or fix.

This workflow-only diagnostic addition samples only Python test descendants of the freshly launched pytest process. It validates ancestry and creation time, holds process handles against PID reuse, and excludes pytest itself (including a venv forwarding interpreter). Allowlisted counters cover cumulative user/kernel CPU, working set/private memory, OS-reported peak working set, I/O bytes, and exit state. Five-second polling is bounded by 900 seconds, 4,096 sample rows, 256 children and three probe errors. Reaching a sampler bound stops observation only; the existing tests continue with their original deadlines.

The original pytest arguments, test assertions, guarded producer/fixture source identities, 40/90-second child deadlines, and scientific/source/native admission gates are unchanged. There is no child-code injection, profiling, debugger attachment, priority/affinity change or access to unrelated processes. The artifact allowlist now contains four existing diagnostic JSON files plus owned-child-samples.jsonl and owned-child-sampler.json. Command lines, credentials, environment values, host/user names, absolute interpreter paths, raw JUnit XML and raw test-output files are excluded from uploaded receipts.

Validation: PyYAML semantic checks; native source-hash/deadline checks; dummy child CPU/memory/I/O and exit-code propagation; exclusion of a validation sibling; fabricated command-line canary absent from receipts; sampler cap leaves its child running to ordinary completion. Both original native cases passed with sampling: closure 35.44 seconds and guard 59.93 seconds overall. Guard evidence retains three observations, all 23 controls passed, no science calls, trace/profile restoration and released ownership; all prior unaccepted gates remain false.

Measured probe wall time was 2.046 seconds for closure and 3.565 seconds for guard. Overall runs were 1.914 and 2.920 seconds longer than historical ordered local baselines. These comparisons include PowerShell startup, stdio redirection and scheduling; probe wall time is not CPU overhead or proof of slowdown. CI overhead may differ. Five-second polling can miss short children, and CPU/I/O correlation cannot establish the exact Python phase or scientific admission. This update authorizes one normal instrumented CI run; no fix or merge approval is claimed.

@OptimumAF
OptimumAF marked this pull request as ready for review October 7, 2026 20:34

This branch has not been deployed

No deployments
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