15 cases covering the four public functions + the IG guard:
- ig_correctness_check:
* returns True when PATIENT_LOOP_DEFAULT_INCLUDED is False (default)
* returns False when monkeypatched to True
* emits a WARNING explaining the IG violation when tripped
* parametrized binary pass/fail against [False, True]
- parse_inputs:
* AppleDouble metadata files (._foo.x12) are skipped
* per-file parse failures land in errors[]; valid files survive
* empty input dir → zero claims + zero errors (not an error)
* returned objects are Pydantic ClaimOutput instances
- emit_outputs:
* filenames match the HCPF-spec tp<sender>-837P-<ts>-1of1.x12 shape
* creates the output dir if missing
* emitted X12 has no HL*3 + HL*2 child_count=0 (the IG-correct
shape for SBR02='18' — the original 999 rejection root cause)
- write_summary_sidecar: one row per emitted file with claim_id +
output_file + byte_size.
- zip_outputs:
* testzip() returns None (integrity OK); entries round-trip
* parent dirs of the zip path are created on demand.
Also bumps cyclone.reissue.core.ig_correctness_check to read
PATIENT_LOOP_DEFAULT_INCLUDED live (via the module attribute, not
the import-time name binding) so test monkeypatching takes effect
immediately.