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
+7
View File
@@ -31,6 +31,13 @@ def preprocess(source: str) -> str:
# Lark 语法不支持 COPY(这是预处理指令),必须在解析前处理
source = resolve_copybooks(source, '.')
# Strip EXEC ... END-EXEC blocks (CICS/SQL) before Lark parsing
source = re.sub(
r'EXEC\s+(?:CICS|SQL)\b.*?END-EXEC\.?',
'',
source, flags=re.IGNORECASE | re.DOTALL
)
fixed = _is_fixed_format(source)
lines = []
for raw_line in source.splitlines():