# Explicit infrastructure/invariant classifications for the package-native release gate. # - test_process_try_wait: OS process-status failures cannot be injected portably. # - test_process_poll_delay: poll cadence is operational; readiness and timeout are integration-proven. # - Drop for TestProcess: mutating reaping leaks helper processes beyond the test lifecycle. # - inspection_fingerprint: deliberately unobservable test-harness metadata. # - BuildFingerprint::from_parts loop-progress mutations: syntactically valid but # non-terminating const-loop mutants; deterministic hash outputs are asserted. # - Infallible header parsing and multipart byte collection: adjacent public tests # prove exact ETag/runtime headers and streamed multipart errors; unwrap mutants # are behaviorally equivalent at these validated boundaries. # - hemx-build source inspection delegates to hemplate's currently infallible # Surface parser; file I/O and invalid Rust-context errors remain explicitly proven. # - AppBuilder reuses that same parser seam. Directory-open and recursive errors are # proven, while a per-entry readdir fault cannot be injected portably after a # successful read_dir; its unwrap mutant is classified as infrastructure-only. # - write_if_changed propagates non-NotFound read errors; for ordinary filesystem # paths, attempting the same write returns the same OS error, so the guard mutant # is externally equivalent while create/update/no-op behavior is mutation-proven. # - stylesheet_class_tokens loop-progress mutants are deterministically # non-terminating; sorted, deduplicated, boundary-aware outputs are asserted. # - context path words are filtered non-empty before extracting their first char; # `?` and `unwrap` are equivalent under that local iterator invariant. exclude_re = [ "test_process_try_wait", "test_process_poll_delay", "delete statement std::thread::sleep\\(Duration::from_millis\\(25\\)\\)", "::drop", "inspection_fingerprint", "replace \\+= with \\*= in BuildFingerprint::from_parts", "replace 1 with 0 in BuildFingerprint::from_parts", "replace field \\.bytes\\(\\) \\.await \\.map_err.* with field.bytes\\(\\).await.map_err.*unwrap\\(\\) in InteractionForm::parse_multipart", "replace String::from_utf8.* with String::from_utf8.*unwrap\\(\\) in InteractionForm::parse_multipart", "replace HeaderValue::from_str.*runtime_js_hash.* with HeaderValue::from_str.*unwrap\\(\\) in ::into_response", 'replace "runtime hash is a valid ETag" with "" in ::into_response', "replace surface_for_heml_source.* with surface_for_heml_source.*unwrap\\(\\) in diagnostics_for_heml_source", "replace surface_for_heml_source.* with surface_for_heml_source.*unwrap\\(\\) in generated_targets_for_heml_source", "replace surface_for_heml_source.* with surface_for_heml_source.*unwrap\\(\\) in template_context_facts_for_heml_source", "replace surface_for_heml_source.* with surface_for_heml_source.*unwrap\\(\\) in AppBuilder::run", "replace entry\\? with entry.unwrap\\(\\) in collect_input_files_into", "replace match guard error.kind\\(\\) == io::ErrorKind::NotFound with true in write_if_changed", "replace \\+= with (?:-=|\\*=) in stylesheet_class_tokens", "replace 1 with 0 in stylesheet_class_tokens", "replace chars.next\\(\\)\\? with chars.next\\(\\).unwrap\\(\\) in context_type_for_heml_path", ]