Compare commits

..
Author SHA1 Message Date
ClaudeandClaude Opus 5.5 32da2d7324 test: give the fault-guard fake backend its storage representation
download() now runs _check_storage(), which reads _ddf_shifting and the
per-level configs; the fake backend set neither. Both are set to the
unshifted default, so the download/step failure assertions run again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 18:14:02 +00:00
ClaudeandClaude Opus 5.5 56004f4482 test: update stale fixtures for current sources (no src change)
- test_channel_root: owner is uint64; int() before -1 so the probe slot
  stays an integer under NumPy 1 value-based promotion.
- test_shifted_storage: build FP32 fixtures with FP32 NaN; np.where with a
  Python NaN promoted to FP64 under NumPy 1, so the shifted FP32 contract
  rejected the fixture before the intended checks.
- test_block_stepper: fake backend sets _ddf_shifting (unshifted).
- test_fine_surface_gpu: set _boundary_hosts/_level_jets; fine_boundary
  is now a read-only view over the level lists.
- test_refinement_followup: set _layouts (fine_layout is a read-only
  view); a pair tau that disagrees with its level config is now rejected
  by hierarchy._check_chain before the per-level omega/tau check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 13:51:12 +00:00
6 changed files with 14 additions and 155 deletions
@@ -1,149 +0,0 @@
CelerisLab Phase 0 baseline — original candidate SHA eec4677db1308e2a9ce4e5f195c994356c11de13
106 isolated groups; 764 primary pytest test IDs; 741 passed, 22 failed, 1 skipped; 0 collection errors, 0 timeouts.
Host: 595 passed / 20 failed / 1 skipped. GPU: 146 passed / 2 failed.
Python 3.10.13; NumPy 1.26.4; pytest 9.1.1; PyCUDA 2026.1; SciPy 1.14.1; CUDA 12.4; Tesla V100-SXM2-16GB.
CUDA_VISIBLE_DEVICES bound per GPU worker. Host mocks and real CUDA ran in separate processes; each group had a 900-second timeout.
No source/test edits, no changed tolerance, no refreshed frozen hash, no long physics or performance runs.
This report contains test IDs/errors only. Full logs remain on Horsea under /home/frank14f/CelerisLab-phase0-evidence-20261020/.
11 source provenance failures bind historical experimental manifests (47b05bc8... for DFG/Jet CV; a233c903... window); they are not new physical qualification.
The channel GPU bitwise discrepancy remains unresolved: 1/4320 values; maximum absolute difference 2.3283064e-10; relative 1.7676595e-07.
Shifted-storage test input is FP64 because NumPy where(float32 scalar, np.nan) promotes it; library requires shifted raw FP32.
Current scheduler uses _advance(index,...); two tests still instrument removed _advance_child.
Failed IDs and original error excerpts:
1. tests/unit/test_channel_root.py::test_actual_closure_read_conflicts
Location: tests/unit/test_channel_root.py:53: in test_actual_closure_read_conflicts
Error: E ValueError: block_cell must be integer index(es) in [0, 960)
Category: test_fixture_numpy_uint64_to_float64
Log: run-004/stdout.log
2. tests/unit/test_jet_circle_cv.py::Host::test_source_pin
Location: tests/unit/test_jet_circle_cv.py:135: in test_source_pin
Error: E RuntimeError: Source hash mismatch: src/CelerisLab/lbm/channel.py
Category: frozen_source_manifest_constraint
Log: run-010/stdout.log
3. tests/unit/test_re100.py::test_production_unmodified
Location: tests/unit/test_re100.py:71: in test_production_unmodified
Error: E AssertionError: src/CelerisLab/lbm/channel.py | E assert '40d0354e5dc9...f4cd75ab5a095' == '2d5b5ff43414...b58d498dd8b0f' | E | E - 2d5b5ff43414cb35633ac4ce90ce2c3a3353950b25c168e1c2ab58d498dd8b0f
Category: frozen_source_manifest_constraint
Log: run-027/stdout.log
4. tests/unit/test_refined_dfg.py::test_source_pin
Location: tests/unit/test_refined_dfg.py:20: in test_source_pin
Error: E RuntimeError: Source mismatch: src/CelerisLab/lbm/kernels/blocks.cu
Category: frozen_source_manifest_constraint
Log: run-028/stdout.log
5. tests/unit/test_refined_dfg.py::test_full_requires_completed_pilot
Location: tests/unit/test_refined_dfg.py:146: in test_full_requires_completed_pilot
Error: E RuntimeError: Source mismatch: src/CelerisLab/lbm/kernels/blocks.cu
Category: frozen_source_manifest_constraint
Log: run-028/stdout.log
6. tests/unit/test_refined_dfg.py::test_pilot_validation_and_calibration
Location: tests/unit/test_refined_dfg.py:226: in test_pilot_validation_and_calibration
Error: E RuntimeError: Source mismatch: src/CelerisLab/lbm/kernels/blocks.cu
Category: frozen_source_manifest_constraint
Log: run-028/stdout.log
7. tests/unit/test_refined_dfg.py::test_reject_malformed_pilot_receipts
Location: tests/unit/test_refined_dfg.py:236: in test_reject_malformed_pilot_receipts
Error: E RuntimeError: Source mismatch: src/CelerisLab/lbm/kernels/blocks.cu
Category: frozen_source_manifest_constraint
Log: run-028/stdout.log
8. tests/unit/test_refined_dfg.py::test_reject_collision_receipts
Location: tests/unit/test_refined_dfg.py:326: in test_reject_collision_receipts
Error: E RuntimeError: Source mismatch: src/CelerisLab/lbm/kernels/blocks.cu
Category: frozen_source_manifest_constraint
Log: run-028/stdout.log
9. tests/unit/test_refined_dfg.py::test_record_actual_checkout_separately
Location: tests/unit/test_refined_dfg.py:344: in test_record_actual_checkout_separately
Error: E RuntimeError: Source mismatch: src/CelerisLab/lbm/kernels/blocks.cu
Category: frozen_source_manifest_constraint
Log: run-028/stdout.log
10. tests/unit/test_refined_dfg.py::test_window_plan_preserves_physics
Location: tests/unit/test_refined_dfg.py:354: in test_window_plan_preserves_physics
Error: E RuntimeError: Source mismatch: src/CelerisLab/lbm/kernels/blocks.cu
Category: frozen_source_manifest_constraint
Log: run-028/stdout.log
11. tests/unit/test_refined_dfg.py::test_reject_observation_mode_receipts
Location: tests/unit/test_refined_dfg.py:365: in test_reject_observation_mode_receipts
Error: E RuntimeError: Source mismatch: src/CelerisLab/lbm/kernels/blocks.cu
Category: frozen_source_manifest_constraint
Log: run-028/stdout.log
12. tests/unit/test_shifted_storage.py::ShiftedStorage::test_shifted_density_and_tag_validation
Location: tests/unit/test_shifted_storage.py:82: in test_shifted_density_and_tag_validation
Error: E ValueError: shifted stored populations must be FP32
Category: test_fixture_numpy_where_dtype
Log: run-037/stdout.log
13. tests/unit/test_validation_source_provenance.py::test_manifests_cover_current_source_and_preserve_origin
Location: tests/unit/test_validation_source_provenance.py:40: in test_manifests_cover_current_source_and_preserve_origin
Error: E AssertionError: src/CelerisLab/lbm/channel.py | E assert '40d0354e5dc9...f4cd75ab5a095' == '2d5b5ff43414...b58d498dd8b0f' | E | E - 2d5b5ff43414cb35633ac4ce90ce2c3a3353950b25c168e1c2ab58d498dd8b0f
Category: frozen_source_manifest_constraint
Log: run-049/stdout.log
14. tests/validation/multigrid/test_block_stepper.py::CpuContracts::test_initialize_rejects_bad_state_before_upload
Location: tests/validation/multigrid/test_block_stepper.py:212: in test_initialize_rejects_bad_state_before_upload
Error: E AttributeError: 'PeriodicBlockStepper' object has no attribute '_ddf_shifting'
Category: test_fixture_or_assertion_stale_api
Log: run-058/stdout.log
15. tests/validation/multigrid/test_channel_root_gpu.py::ChannelRootGPU::test_uniform_matched_root
Location: tests/validation/multigrid/test_channel_root_gpu.py:95: in test_uniform_matched_root
Error: E AssertionError: | E Arrays are not equal | E | E Mismatched elements: 1 / 4320 (0.0231%)
Category: gpu_bitwise_parity_contract_failure_unresolved
Log: run-060/stdout.log
16. tests/validation/multigrid/test_fine_surface_gpu.py::test_missing_surface_device_buffer_rejects_before_launch[surface_velocity_gpu]
Location: tests/validation/multigrid/test_fine_surface_gpu.py:284: in test_missing_surface_device_buffer_rejects_before_launch
Error: E AttributeError: can't set attribute 'fine_boundary'
Category: test_fixture_or_assertion_stale_api
Log: run-070/stdout.log
17. tests/validation/multigrid/test_fine_surface_gpu.py::test_missing_surface_device_buffer_rejects_before_launch[link_exchange_gpu]
Location: tests/validation/multigrid/test_fine_surface_gpu.py:284: in test_missing_surface_device_buffer_rejects_before_launch
Error: E AttributeError: can't set attribute 'fine_boundary'
Category: test_fixture_or_assertion_stale_api
Log: run-070/stdout.log
18. tests/validation/multigrid/test_refinement_followup.py::FaultGuardsCPU::test_activation_failure_retains_resources_for_retry
Location: tests/validation/multigrid/test_refinement_followup.py:134: in test_activation_failure_retains_resources_for_retry
Error: E AttributeError: can't set attribute 'fine_layout'
Category: test_fixture_or_assertion_stale_api
Log: run-083/stdout.log
19. tests/validation/multigrid/test_refinement_followup.py::FaultGuardsCPU::test_failed_download_blocks_read_and_step
Location: tests/validation/multigrid/test_refinement_followup.py:121: in test_failed_download_blocks_read_and_step
Error: E AttributeError: can't set attribute 'fine_layout'
Category: test_fixture_or_assertion_stale_api
Log: run-083/stdout.log
20. tests/validation/multigrid/test_refinement_followup.py::FaultGuardsCPU::test_kernel_contracts_reject_before_upload
Location: RuntimeError: level config chain is inconsistent with the pair tables
Error: E AssertionError: "omega/tau" does not match "level config chain is inconsistent with the pair tables"
Category: test_fixture_or_assertion_stale_api
Log: run-083/stdout.log
21. tests/validation/multigrid/test_refinement_three_level.py::ThreeLevelCPU::test_four_halo_bfl_steps_and_fresh_middle_feeds
Location: tests/validation/multigrid/test_refinement_three_level.py:83: in test_four_halo_bfl_steps_and_fresh_middle_feeds
Error: E AttributeError: 'FixedPatchStepper' object has no attribute '_advance_child'
Category: test_instrumentation_stale_private_method
Log: run-092/stdout.log
22. tests/validation/multigrid/test_refinement_three_level.py::ThreeLevelGPU::test_nonequilibrium_masks_and_fresh_middle_feeds
Location: tests/validation/multigrid/test_refinement_three_level.py:175: in test_nonequilibrium_masks_and_fresh_middle_feeds
Error: E AttributeError: 'FixedPatchStepper' object has no attribute '_advance_child'
Category: test_instrumentation_stale_private_method
Log: run-093/stdout.log
SKIP: tests/unit/test_union_refinement.py::AdapterNumerics::test_eight_steps_bitwise
Reason: ADAPTER_DIR external CPU adapter not configured.
+1 -1
View File
@@ -50,7 +50,7 @@ def test_masks_and_minimal_footprint():
def test_actual_closure_read_conflicts():
pair, layout, targets = transfer((6, 6, 18, 14))
validate_channel_transfers(pair, layout, targets)
for target in (layout.slot(layout.owner[5, -1]-1, 2),
for target in (layout.slot(int(layout.owner[5, -1]) - 1, 2),
layout.slot(layout.owner[1, 4], 4),
layout.slot(layout.owner[-2, 4], 3)):
with pytest.raises(ValueError, match="immutable"):
+4 -2
View File
@@ -78,13 +78,15 @@ class ShiftedStorage(unittest.TestCase):
def test_shifted_density_and_tag_validation(self):
old,new = topology(A),topology(B)
a = tuple(np.where(m[None], np.float32(-.001), np.nan).repeat(9,axis=0) for m in old.leaf_masks)
a = tuple(np.where(m[None], np.float32(-.001), np.float32(np.nan)).repeat(9,axis=0)
for m in old.leaf_masks) # FP32 under numpy 1 and 2 promotion rules
remap(old,new,a)
with self.assertRaisesRegex(ValueError,'representation'): remap(old,new,a,False)
with self.assertRaisesRegex(ValueError,'FP32'): remap(old,new,tuple(x.astype(np.float64) for x in a))
a[0][:,old.leaf_masks[0]] = -1
with self.assertRaisesRegex(ValueError,'positive density'): remap(old,new,a)
rest = tuple(np.where(m[None],np.float32(0),np.nan).repeat(9,axis=0) for m in old.leaf_masks)
rest = tuple(np.where(m[None],np.float32(0),np.float32(np.nan)).repeat(9,axis=0)
for m in old.leaf_masks)
remap(old,new,rest)
with self.assertRaisesRegex(ValueError,'positive density'):
remap_synchronized(old,new,rest,base_count=7,level_steps=(7,14,28),phase='postcollision_g')
@@ -192,6 +192,7 @@ class CpuContracts(unittest.TestCase):
backend._lock = RLock()
backend._status = "ready"
backend._step_count = 0
backend._ddf_shifting = False # unshifted storage, as for the default config
backend._stream = Mock()
backend._module = Mock()
backend._copy = backend._step = Mock()
@@ -281,7 +281,8 @@ def test_fine_surface_four_hops(speed):
@pytest.mark.parametrize("missing", ["surface_velocity_gpu", "link_exchange_gpu"])
def test_missing_surface_device_buffer_rejects_before_launch(missing):
backend = implementation.FixedPatchStepper.__new__(implementation.FixedPatchStepper)
backend.fine_boundary = SimpleNamespace(objects=[object_spec(.002)])
backend._boundary_hosts = [None, SimpleNamespace(objects=[object_spec(.002)])]
backend._level_jets = [(), ()]
backend._fine_curved = SimpleNamespace(fluid_idx_gpu=object(),
surface_velocity_gpu=object(), link_exchange_gpu=object())
setattr(backend._fine_curved, missing, None)
@@ -106,7 +106,9 @@ class FaultGuardsCPU(unittest.TestCase):
def fake_backend(self):
backend = PeriodicPatchStepper.__new__(PeriodicPatchStepper)
backend.fine_layout = None # dense fine storage
backend._layouts = [None, None] # dense storage on both levels
backend._ddf_shifting = False # unshifted on every level, as _check_storage expects
backend._level_cfgs = [LBMConfig(nx=16, ny=16, viscosity=.1)] * 2 # ddf_shifting off
backend.ctx = Mock(activate=nullcontext)
backend._lock = RLock()
backend._status = "ready"
@@ -158,7 +160,9 @@ class FaultGuardsCPU(unittest.TestCase):
p = implementation.FixedPatch2D.from_config(cfg, (4, 4, 12, 12))
with patch.object(cuda, "Stream"), patch.object(implementation.FixedPatch2D, "from_config",
return_value=replace(p, tau_coarse=.9)):
with self.assertRaisesRegex(RuntimeError, "omega/tau"):
# The hierarchy rejects a pair tau that disagrees with its level config
# (hierarchy.py) before the per-level omega/tau check can be reached.
with self.assertRaisesRegex(RuntimeError, "config chain is inconsistent"):
PeriodicPatchStepper(cfg, p.bounds, context=context)
module = Mock()
module.get_global.return_value = (Mock(), 16)