[BUG] Checker test imports depend on discovery order and caller Python path #7

Closed
opened 2026-09-16 04:59:42 +02:00 by erikinkinen · 0 comments
Owner

Summary

The new arithmetic checker tests fail to import under the repository's normal discovery command. A supplied local PYTHONPATH masked their dependency on earlier test-import side effects; CI stops before the required frame gate.

Reproduction

At Exsh 0cdaa8869545308c528f9cf5a2dc165cb286c6ef, use a clean environment without PYTHONPATH and run the workflow command:

python3 -B -Werror -m unittest discover -s tests -p 'descriptor_cleanup_*_test.py'

Also import each checker test module in a fresh interpreter with only the repository's tests directory selected. The arithmetic and comparison modules both fail independently; the older comparison module happened to follow a module that initialized the fixture path during full discovery.

Expected and actual behavior

Expected: every module selects its repository fixtures explicitly and runs independently of discovery order or caller Python path configuration.

Actual: both original CI runs report ModuleNotFoundError: No module named 'cleanup_frame_conditions'. They attempt 177 tests: 176 pass and one arithmetic-module import fails. The arithmetic controls do not execute, and the full-frame gate is not reached. The prior local 191-test result remains valid only for its explicitly supplied import environment and did not demonstrate workflow equivalence.

Environment and identity

CI 245 and 246, exact signed Exsh 0cdaa8869545308c528f9cf5a2dc165cb286c6ef, Linux x86-64 with Python 3.13 in the workflow. Independent local module imports reproduce the same two failures without executing a target ELF. Runtime and Cargo inputs were unchanged.

Evidence and prior checks

All four terminal logs are complete, totaling 309,708 bytes with zero compiler/lint warnings. All 961 Rust tests and the preceding strict checks/builds pass; Markdown passes. A new isolated-import regression reproduces the defect before correction. Original arithmetic/provenance replays remain separate evidence and cannot turn this CI failure into acceptance.

Test-import correction and CI classification — 16 September 2026: original Exsh CI 245/246 failed before the frame gate because the arithmetic test could not import its checker module. They attempted 177 tests: 176 passed and one module import failed. The preceding 961 Rust tests and strict build stages passed; all four complete logs total 309,708 bytes with zero compiler/lint warnings. The earlier local 191-test pass used an explicitly supplied PYTHONPATH and did not prove equivalence to the clean workflow. This regression is retained in Exsh #7.

Signed correction 12331e26f3bb7a25c0146c8b314eef46dd451099 loads the repository's literal fixture setup before implementation imports in both affected modules. A new regression imports every checker test module in a fresh isolated interpreter; it reproduces both failures before correction and passes afterward. The exact clean workflow command now passes all 192 tests without PYTHONPATH. Formatting, Markdown and whitespace pass. Checker/runtime/Cargo/workflow bytes are unchanged, so the prior original-artifact and profiler evidence retains its exact scope. New CI 247/248 runs against the corrected source; issue #7 remains open pending matching CI.

Docs CI 907/908 now passes with four complete logs totaling 763,024 bytes, all 45 tests and 2,379-page manuals. Both final renders have zero warnings after ordinary reference convergence. Full frame/source proof, coherent catalog adoption and complete confined guest builds remain outstanding.

Corrected arithmetic checkpoint CI — 16 September 2026: Exsh CI 247 and 248 at signed 12331e26f3bb7a25c0146c8b314eef46dd451099 both pass all 192 checker tests, including the ten isolated module imports, and all 961 Rust tests. The preceding strict formatting/Clippy/documentation/build stages and Markdown pass. All four complete logs total 314,944 bytes with zero compiler/lint warning candidates. This confirms the scoped import correction in Exsh #7.

Both runs reach and fail the required full-frame gate. All four workspace mappings per run pass, while the emitted CI pairs retain unresolved counts [161, 161, 124, 124]; these artifacts are distinct from the original static pairs' 156/124 observations. Full source/direct domains remain incomplete, and Exsh #4 remains open. The original import-failed runs 245/246 stay classified and are not relabeled as passing.

Docs CI 907/908 passes all 45 tests and 2,379-page manuals with zero final warnings; four complete logs total 763,024 bytes. Signed trees are clean, canonical issue/PR metadata remains applied, and the 3,691-file physical inventory remains below 1,000 lines per authored source/configuration file. Semantic authority and private documentation closure, coherent catalog adoption, runnable realms and both full confined guest build generations remain outstanding. Original unfinished Integration runs continue under their existing handles and budgets.

Tracking

Related to shell work, frame evidence and the implementation review. Load the shared fixture setup before implementation imports, retain an isolated module-import control, validate with the exact clean workflow environment, then follow new signed-source CI. Do not supply ambient PYTHONPATH or reorder discovery as a workaround. Full frame/source and guest-build obligations remain open.

## Summary The new arithmetic checker tests fail to import under the repository's normal discovery command. A supplied local PYTHONPATH masked their dependency on earlier test-import side effects; CI stops before the required frame gate. ## Reproduction At Exsh `0cdaa8869545308c528f9cf5a2dc165cb286c6ef`, use a clean environment without PYTHONPATH and run the workflow command: ```sh python3 -B -Werror -m unittest discover -s tests -p 'descriptor_cleanup_*_test.py' ``` Also import each checker test module in a fresh interpreter with only the repository's tests directory selected. The arithmetic and comparison modules both fail independently; the older comparison module happened to follow a module that initialized the fixture path during full discovery. ## Expected and actual behavior Expected: every module selects its repository fixtures explicitly and runs independently of discovery order or caller Python path configuration. Actual: both original CI runs report `ModuleNotFoundError: No module named 'cleanup_frame_conditions'`. They attempt 177 tests: 176 pass and one arithmetic-module import fails. The arithmetic controls do not execute, and the full-frame gate is not reached. The prior local 191-test result remains valid only for its explicitly supplied import environment and did not demonstrate workflow equivalence. ## Environment and identity [CI 245](https://git.erikinkinen.fi/erix/exsh/actions/runs/245) and [246](https://git.erikinkinen.fi/erix/exsh/actions/runs/246), exact signed Exsh `0cdaa8869545308c528f9cf5a2dc165cb286c6ef`, Linux x86-64 with Python 3.13 in the workflow. Independent local module imports reproduce the same two failures without executing a target ELF. Runtime and Cargo inputs were unchanged. ## Evidence and prior checks All four terminal logs are complete, totaling 309,708 bytes with zero compiler/lint warnings. All 961 Rust tests and the preceding strict checks/builds pass; Markdown passes. A new isolated-import regression reproduces the defect before correction. Original arithmetic/provenance replays remain separate evidence and cannot turn this CI failure into acceptance. Test-import correction and CI classification — 16 September 2026: original Exsh CI 245/246 failed before the frame gate because the arithmetic test could not import its checker module. They attempted 177 tests: 176 passed and one module import failed. The preceding 961 Rust tests and strict build stages passed; all four complete logs total 309,708 bytes with zero compiler/lint warnings. The earlier local 191-test pass used an explicitly supplied PYTHONPATH and did not prove equivalence to the clean workflow. This regression is retained in [Exsh #7](https://git.erikinkinen.fi/erix/exsh/issues/7). Signed correction `12331e26f3bb7a25c0146c8b314eef46dd451099` loads the repository's literal fixture setup before implementation imports in both affected modules. A new regression imports every checker test module in a fresh isolated interpreter; it reproduces both failures before correction and passes afterward. The exact clean workflow command now passes all 192 tests without PYTHONPATH. Formatting, Markdown and whitespace pass. Checker/runtime/Cargo/workflow bytes are unchanged, so the prior original-artifact and profiler evidence retains its exact scope. New [CI 247](https://git.erikinkinen.fi/erix/exsh/actions/runs/247)/[248](https://git.erikinkinen.fi/erix/exsh/actions/runs/248) runs against the corrected source; issue #7 remains open pending matching CI. Docs CI 907/908 now passes with four complete logs totaling 763,024 bytes, all 45 tests and 2,379-page manuals. Both final renders have zero warnings after ordinary reference convergence. Full frame/source proof, coherent catalog adoption and complete confined guest builds remain outstanding. Corrected arithmetic checkpoint CI — 16 September 2026: [Exsh CI 247](https://git.erikinkinen.fi/erix/exsh/actions/runs/247) and [248](https://git.erikinkinen.fi/erix/exsh/actions/runs/248) at signed `12331e26f3bb7a25c0146c8b314eef46dd451099` both pass all 192 checker tests, including the ten isolated module imports, and all 961 Rust tests. The preceding strict formatting/Clippy/documentation/build stages and Markdown pass. All four complete logs total 314,944 bytes with zero compiler/lint warning candidates. This confirms the scoped import correction in [Exsh #7](https://git.erikinkinen.fi/erix/exsh/issues/7). Both runs reach and fail the required full-frame gate. All four workspace mappings per run pass, while the emitted CI pairs retain unresolved counts [161, 161, 124, 124]; these artifacts are distinct from the original static pairs' 156/124 observations. Full source/direct domains remain incomplete, and [Exsh #4](https://git.erikinkinen.fi/erix/exsh/issues/4) remains open. The original import-failed runs 245/246 stay classified and are not relabeled as passing. Docs CI 907/908 passes all 45 tests and 2,379-page manuals with zero final warnings; four complete logs total 763,024 bytes. Signed trees are clean, canonical issue/PR metadata remains applied, and the 3,691-file physical inventory remains below 1,000 lines per authored source/configuration file. Semantic authority and private documentation closure, coherent catalog adoption, runnable realms and both full confined guest build generations remain outstanding. Original unfinished Integration runs continue under their existing handles and budgets. ## Tracking Related to [shell work](https://git.erikinkinen.fi/erix/exsh/issues/2), [frame evidence](https://git.erikinkinen.fi/erix/exsh/issues/4) and [the implementation review](https://git.erikinkinen.fi/erix/exsh/pulls/3). Load the shared fixture setup before implementation imports, retain an isolated module-import control, validate with the exact clean workflow environment, then follow new signed-source CI. Do not supply ambient PYTHONPATH or reorder discovery as a workaround. Full frame/source and guest-build obligations remain open.
Sign in to join this conversation.
No description provided.