Epic: Legacy Mainframe Modernization #2516
Description
Overview
Tracking epic for GitGalaxy's mainframe legacy-modernization initiative: hardening the engine's existing COBOL/JCL structural-signature extraction (especially CICS coverage) and adding first-class support for the rest of the mainframe language family needed for full CICS-platform visibility (BMS, HLASM, REXX, PL/I, DB2 SQL/SQL PL).
No epic previously tracked this as one initiative -- the legacy-modernization label existed but child issues were scattered and inconsistently tagged. This gives the initiative one home going forward.
Language additions (new mainframe-family parsers)
- Language Addition: PL/I (pli) for full CICS visibility #2502 -- PL/I (
pli), for full CICS visibility - Language Addition: HLASM / IBM Z Assembly (hlasm) #2503 -- HLASM / IBM Z Assembly (
hlasm) - Language Addition: REXX (rexx) #2504 -- REXX (
rexx) - Language Reassignment: Divorce .bms from JCL into dedicated BMS Map parser #2505 -- Divorce
.bmsfrom thejclprofile into its own BMS Map parser - Language Addition: IBM DB2 SQL (db2_sql) #2511 -- IBM DB2 SQL / SQL PL (
db2_sql)
Note: #1142 (PL/I signatures, parented under the aerospace epic #75) overlaps with #2502 -- both add a pli profile with different signature-key emphasis. Cross-referenced on both issues; needs a human decision on consolidation before either is picked up, so they don't ship as two independent, conflicting implementations.
CICS/JCL extraction hardening (existing cobol/jcl profiles)
- Extraction hardening: jcl args continuation lines #2482 -- jcl args: continuation lines
- Extraction hardening: jcl args multi-line over-counting #2483 -- jcl args: multi-line over-counting
- Extraction hardening: cobol CICS channels and containers #2484 -- cobol CICS channels and containers
- Extraction hardening: cobol CICS advanced queuing and exceptions #2485 -- cobol CICS advanced queuing and exceptions
- Extraction hardening: jcl CICS utility execution and resources #2486 -- jcl CICS utility execution and resources
Related, already-resolved groundwork
Prior extraction-hardening and bug-fix work that shaped the current cobol/jcl baseline this epic builds on: #259, #292, #501, #590, #776, #850, #854, #1142, #1858, #1890, #1891, #1892, #1949, #1975, #2480. See the legacy-modernization label for the current full set.
Scope note
Not every cobol/jcl-adjacent bug belongs here -- structural-extraction bugs shared across many languages (Mode A/B slicing, ReDoS bounding, etc.) that happen to touch cobol/jcl incidentally are tracked under the general extraction-hardening epic (#813) instead, even when a fix ships alongside this work.
Activity
squid-protocol commentedon Sep 14, 2026
#2990 (COBOL/JCL semantic-coverage assessment) shipped as PR #3006.
A block-level
EXEC CICS/SQL/DLIcensus over the crucible found the uncovered surface was much broaderthan the issue's original 7 rows (
ASKTIME+FORMATTIME119 occurrences, named counters 112,DFHRESP(393,SYNCPOINT29, etc.), all now owned. Highlights: the Async API (RUN TRANSID/FETCH CHILD|ANY) now feedsconcurrency— a modern async CICS app no longer scores zero;unit-of-work control and the
DFHRESP(/SQLCODEerror-check idiom now feedsafety; three realmis-attributions were caught and fixed (a bare
CANCEL/START/FREEfiring on the wrong CICS optionforms). JCL needed no rule change — the sibling pass confirmed full coverage.
Committed a reusable harness (
tests/tools/embedded_verb_coverage.py) so a future gap is a diff againsta table, not archaeology, per the issue's own ask.
Five follow-ups filed rather than folded in: language-crucible#26 (pin the CICS-async sample repos this
PR's census needed a scratch clone for), gitgalaxy#3002 (JCL in-stream payload grammar),
gitgalaxy#3003 (idiom-wrapper tracking — the curl
curlxevidence from the issue's own follow-upcomment; checked and doesn't reproduce in COBOL today, but the engine-design question is real),
gitgalaxy#3004 (COBOL's auth surface has no base-schema owner), and gitgalaxy#3005 (an unrelated,
pre-existing ~8480-diff golden-master environment drift found while blessing this PR — filed rather
than silently absorbed).
squid-protocol commentedon Sep 17, 2026
Closing the epic: every tracked child is done, and the mainframe language family the initiative set out to cover is fully first-class in the engine.
Language additions — all five shipped
pli) — landed with CICS/SQL/DLI parity with cobol (Add PL/I (pli) as a language, with CICS/SQL/DLI parity with cobol (#2502, #1142) #3057), consolidated with Implement PL/I Mainframe & ISS Legacy Signatures #1142 rather than shipping two conflicting profilesbms) — divorced.bmsfrom the jcl profile into a dedicated 3270 map parser (Add BMS as a language: divorce .bms from jcl into a dedicated 3270 map profile (#2505) #3074)db2_sql) — resolving the.sqlcollision with sqlite (Add IBM DB2 SQL / SQL PL (db2_sql), resolving the .sql collision with sqlite (#2511) #3090)hlasm) — resolving the.asmcollision with assembly (Add HLASM / IBM Z Assembly (hlasm), resolving the .asm collision with assembly (#2503) #3095)rexx) — resolving the.cmdcollision with batch, on a newrecursive_block_rexxprism dialect (Add REXX (rexx), resolving the .cmd collision with batch (#2504) #3107)Each addition landed as a paired engine + keyword-rosetta control-corpus PR (rosetta #123…#138 series), with a strict adversarial suite, both golden-crucible environments regenerated with every diff explained, and its rule absences validated in the corpus deviation ledger.
CICS/JCL hardening — all five shipped
#2482, #2483 (jcl args continuation/over-counting), #2484, #2485 (cobol CICS channels/containers, advanced queuing + exceptions), #2486 (jcl CICS utility execution). The CICS command-level vocabulary is now counted identically across all three host languages (cobol/pli/hlasm, #2990's parity rule).
Where the record lives
Everything under this initiative is findable by the
legacy-modernizationlabel and the "Legacy Modernization" milestone (this epic, all children above, and the follow-up work). Per-language coverage snapshots:docs/language_status/{cobol,jcl,bms,pli,db2_sql,hlasm,rexx}.md. Cross-language measurement consistency: keyword-rosetta's bias report (regenerated post-merge; 1 unexplained cell remaining corpus-wide,bms/classes_found, tracked there).Known deferred item
The
fidelity_table.pyFIDELITY_PROVENANCE re-pin (corpus_sha + language count) is owed after the #137/#138 rosetta merges — surfaced bylanguage_addition_audit.py's warning; small standalone chore, not blocking this epic.