Commit Graph

3 Commits

Author SHA1 Message Date
NB-076 a5939e6722 fix: subtype resolver + comprehensive matching program test
Fix 4 remaining defects found by adversarial testing:
1. MT03 N:1 → subtype corrected to N:1 (key suffix -M/-T heuristic)
2. MT32 混合 → subtype added (項目チェック programs with WS-PREV-KEY)
3. MT33 混合异键 → WS-ALT-KEY detection → 混合(异键)
4. MT18/MT19 → subtype M:N (correct: static cannot distinguish M:N→M vs M:N→N)

Also expand subtype resolver scope: now also processes 項目チェック
classified programs with matching-like characteristics (WS-PREV-KEY),
not just マッチング.

New test: test_matching_programs.py — 10 parametrized tests covering
all 4 dimensions (category, subtype, branches, files) for every
matching program. Known limitation documented: MT18 vs MT19
requires runtime data for M:N→M vs M:N→N distinction.

Regression: 755 passed (10 new, 0 failures).
2026-06-21 13:40:58 +08:00
NB-076 d12a305dc4 test: add L1 data generation + L2 classifier validation (58 tests)
Phase C-D complete:
- test_l1_data_generation.py — 8 tests verifying generate_data across all P0 groups
- test_l2_classifier.py — 16 existing + 34 P0 classification verification tests
- hina/pipeline/__init__.py — export classify_program for cleaner imports

Key findings:
- Classifier correctly detects: CALL→子程序调用, CICS→online,
  DB→DB操作, ORGANIZATION IS→文件编成, DIVIDE→DIVIDE_50.0,
  ASCII/EBCDIC→编码转换 (keyword match)
- Rule engine provides baseline 項目チェック(重複含まず) for programs
  without L1 keyword matches
- SD keyword (SORT/MERGE sort-file) breaks Lark parser (known limitation)
- Full regression: 749 passed (0 new failures)
2026-06-21 12:16:12 +08:00
NB-076 fbaad010ab test: add L0 statement benchmark tests (34 parametrized tests)
6 test files covering:
- test_arithmetic_statements (9 samples)
- test_control_statements (6 samples)
- test_file_statements (6 samples)
- test_inspect_statements (3 samples)
- test_move_statements (5 samples)
- test_perform_statements (3 samples)
- test_search_statements (2 samples)

All 34/34 pass. Full regression: 691 passed (0 new failures).
2026-06-21 12:05:07 +08:00