What surfaced this
Four repos were added to data/corpus_cobol/ on 2026-09-13 to broaden CICS coverage — aws-mainframe-modernization-carddemo, cics-async-api-credit-card-application-example, cics-async-fetch-variation-example, cics-event-consumer. An empirical audit (every EXEC CICS line in the new repos run against all 52 rules in gitgalaxy/standards/language_standards/languages/cobol.py) found no verb is invisible (the EXEC CICS blanket in the embedded-language rule catches everything) but seven verb families carry no semantic signal — they fall through to the blanket only:
| verbs (n in new corpus) |
semantics |
rule that should own it |
RUN TRANSID (11) + FETCH CHILD/ANY/COMMANDS (9) |
Async API — CICS's task spawn/join model |
concurrency (currently ENQ/DEQ/WAIT/START/DELAY — pre-async-era) |
STARTBR/READNEXT/READPREV/ENDBR (21) |
VSAM browse (cursor iteration) |
io |
SEND / SEND TEXT (36) |
bare terminal output (non-map) |
ui_framework (has SEND MAP only) |
HANDLE ABEND (10) |
abend-handler registration |
the handler/events rule (has HANDLE CONDITION only) |
SYNCPOINT (7) |
UOW commit/rollback |
io or state_mutation (design call) |
ASKTIME/FORMATTIME (10) |
time logic |
time_date_logic (rule exists, lacks the CICS idioms) |
RETRIEVE (3) |
START's data partner |
concurrency |
The headline: the Async API registers zero arch_concurrency — a modern CICS app full of parallel tasks scores as single-threaded.
Why the scope should be broader than these 7 rows
Four sample repos found seven gaps in an afternoon — the honest conclusion is not "add 7 verbs" but that the COBOL standard has never had a systematic semantic-coverage assessment against the language's real surface. Scope for this issue:
- Full CICS command inventory (the IBM command reference lists ~150 API commands) mapped to rule-or-deliberately-blanket, with the mapping recorded — so future gaps are diffs against a table, not archaeology. The audit harness from 2026-09-13 (rules × every
EXEC CICS line, per-verb rule attribution) is the method; commit it as a reusable tool.
- The other embedded surfaces:
EXEC SQL (Db2) and EXEC DLI (IMS) deserve the same table — SQL verbs are security-relevant (GRANT, dynamic PREPARE/EXECUTE IMMEDIATE = injection surface).
- Native COBOL beyond CICS: intrinsic functions,
JSON PARSE/XML PARSE (modern COBOL 6), UNSTRING/STRING (buffer-adjacent), file-status idioms.
- JCL sibling pass (
languages/jcl.py): the corpus now carries substantial JCL (GenApp 24%, CardDemo 6%); same method.
- Acceptance: every verb/idiom in the corpus ground-truth inventory is either (a) owned by a semantic rule, or (b) recorded as deliberately blanket-only with a one-line reason.
Process note
Rule changes go through the rule-contract discipline (crucible bless, baselines, ruff/mypy audits) — this is a dedicated-session task, not a drive-by patch. The corpus that powers the assessment is already in place.
What surfaced this
Four repos were added to
data/corpus_cobol/on 2026-09-13 to broaden CICS coverage —aws-mainframe-modernization-carddemo,cics-async-api-credit-card-application-example,cics-async-fetch-variation-example,cics-event-consumer. An empirical audit (everyEXEC CICSline in the new repos run against all 52 rules ingitgalaxy/standards/language_standards/languages/cobol.py) found no verb is invisible (theEXEC CICSblanket in the embedded-language rule catches everything) but seven verb families carry no semantic signal — they fall through to the blanket only:RUN TRANSID(11) +FETCH CHILD/ANY/COMMANDS(9)concurrency(currently ENQ/DEQ/WAIT/START/DELAY — pre-async-era)STARTBR/READNEXT/READPREV/ENDBR(21)ioSEND/SEND TEXT(36)ui_framework(hasSEND MAPonly)HANDLE ABEND(10)HANDLE CONDITIONonly)SYNCPOINT(7)ioorstate_mutation(design call)ASKTIME/FORMATTIME(10)time_date_logic(rule exists, lacks the CICS idioms)RETRIEVE(3)concurrencyThe headline: the Async API registers zero
arch_concurrency— a modern CICS app full of parallel tasks scores as single-threaded.Why the scope should be broader than these 7 rows
Four sample repos found seven gaps in an afternoon — the honest conclusion is not "add 7 verbs" but that the COBOL standard has never had a systematic semantic-coverage assessment against the language's real surface. Scope for this issue:
EXEC CICSline, per-verb rule attribution) is the method; commit it as a reusable tool.EXEC SQL(Db2) andEXEC DLI(IMS) deserve the same table — SQL verbs are security-relevant (GRANT, dynamicPREPARE/EXECUTE IMMEDIATE= injection surface).JSON PARSE/XML PARSE(modern COBOL 6),UNSTRING/STRING(buffer-adjacent), file-status idioms.languages/jcl.py): the corpus now carries substantial JCL (GenApp 24%, CardDemo 6%); same method.Process note
Rule changes go through the rule-contract discipline (crucible bless, baselines, ruff/mypy audits) — this is a dedicated-session task, not a drive-by patch. The corpus that powers the assessment is already in place.