R13: final sweep — EXEC stripping + INSPECT bugfix + more EQ assertions

1. Lark: preprocess strips EXEC CICS/SQL...END-EXEC blocks
   -> CI01_CICS/DB01_SELECT_UPDATE now parse, 75/75 samples pass
2. propagate_assignments INSPECT TALLYING bugfix:
   was reading source from count_var (wrong field) instead of
   asgn['tgt']. Now CNT='005' instead of '003' for len(HELLO)=5.
3. 26 new EQ/falsifiable assertions added (propagate chains,
   orchestrator state, data_writer, report generator)
4. Hardened: ACCEPT DATE string len check, DataWriter JSON format

16 suites / 0 FAIL.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
NB-076
2026-06-22 09:37:58 +08:00
parent 58816799d4
commit abb283669c
4 changed files with 214 additions and 3 deletions
+2 -2
View File
@@ -30,9 +30,9 @@ all_samples = sorted(glob.glob(str(SAMPLE_DIR / "**" / "*.cbl"), recursive=True)
print(f" Found {len(all_samples)} .cbl files")
# Exclude known problem files (CICS with EXEC CICS blocks Lark cannot parse)
excluded_patterns = ["CI01", "DB01", "ADV-10FILES"]
excluded_patterns = [] # All fixed by EXEC stripping in preprocess
samples = [s for s in all_samples if not any(p in s for p in excluded_patterns)]
print(f" After exclusions: {len(samples)} samples")
print(f" After exclusions: {len(samples)} samples (all should pass now)")
# ══════════════════════════════════════════════════════════════════
# 2. extract_structure 全部通过