Fix #4242: record a quoted PROGRAM-ID (PROGRAM-ID. 'EPSCSMRD'.) - #4285
Open
squid-protocol wants to merge 1 commit into
Open
squid-protocol wants to merge 1 commit into
squid-protocol wants to merge 1 commit into
Conversation
Contributor
The COBOL class_start rule wanted a word boundary right after the paragraph's separator; a quote is no word character, so a literal program name recorded no class. IBM DBB epscsmrd.cbl (13 quoted PROGRAM-IDs, column 9) had no class row at all. - class_start takes an optional quote on each side of the name; the capture stays the bare name. Valid / invalid / next-line fixtures. - epscsmrd.cbl now records all 13 PROGRAM-IDs. - Golden masters: NIST CCVS85 PDC0001.cbl (`Program-Id. 'P1'.`) gains its class; everything else is the roll-up of that one file. - DBB completeness re-pinned (transactions 2/3 -> 2/4: EPSCSMRD is a CICS program no transaction here reaches). The full-corpus refraction differential compares epscsmrd.cbl for the first time: 33 unexplained, blessed with a note -- the multi-program reading owned by #4243 / #4245. - Field-testing defect D041; answer-key README updated. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
squid-protocol
force-pushed
the
fix/4242-quoted-program-id
branch
from
October 3, 2026 21:57
fc9f50e to
f69284f
Compare
This was referenced Oct 3, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resolves #4242.
What was broken
The COBOL
class_startrule (languages/cobol.py) requires\bright after the separator that followsPROGRAM-ID.. A quote is not a word character, so a program named by a literal,PROGRAM-ID. 'EPSCSMRD'.or"NAME", never matched. DBBepscsmrd.cblhas 13 quoted PROGRAM-IDs in column 9, and it recorded no class row.Changes
class_startnow allows an optional quote on each side of the name. The capture stays the bare name, and the\bguard still holds:'is not in the sequence-area character class, so that prefix can't swallow it. The rule's comment block gains entry 4 explaining this.test_cobol.py):IS INITIAL PROGRAM;PROGRAM-ID.inside a MOVE literal;program_id, round 7, found by the fix(answer-key): model multi-program sources (sibling / nested programs) (#4206) #4226 census). The report andfact_channel_confidence.jsonare regenerated;program_id's clean-round count resets, as it should.epscsmrd.cbl.What moved, and why
Golden masters (31 differences per mode, scoped in full, not from the truncated
crucible_checkview): NIST CCVS85PDC0001.cbl(Program-Id. 'P1'.) gains its class, and every other difference rolls up from that one file:Nothing outside that file moved.
DBB completeness (
test_completeness.py): transactions (2, 3) → (2, 4). EPSCSMRD is now a recognized CICS program, and no transaction in the repository reaches it. Re-pinned with a comment.Full-corpus refraction differential (DBB):
epscsmrd.cblis compared for the first time, because before this fix the file had no program. That gives 33 unexplained deltas, blessed with a note:paragraph/old: the forge reads the sibling programs' IDENTIFICATION / DATA DIVISION headers as units of the first program;schema_column/db: the same names as this file's 26forge_flat_schemarecord deltas.Both come from reading a multi-program source as one program, which is owned by COBOL forge/differential reads a multi-program source as one program, blocking EPSCSMRD onboarding #4243 (with COBOL engine and answer key read only the first program's DATA DIVISION in a multi-program source #4245 for the data divisions). Re-bless when that lands.
Verification
epscsmrd.cblscanned alone:class_datahas 13 rows (EPSCSMRD … EPSCSMRE); before, 0.tests/cobol_mainframe+tests/cics_crucible+ COBOL extraction (strict included), with every pinned corpus fetched: all pass after the re-pin and the bless (1631 passed before those two; the two DBB tests are the only ones that moved).epscsmrd.cblis still inexcluded_programs).crucible_check.py --update --yes: both fixtures re-blessed, scoped as above.Not done
cobol_to_coboltools (cobol_dag_architect._PROGRAM_ID,cobol_compiler_forge) don't take a quote either. They are outside this issue;cobol_jcl_forgealready does.🤖 Generated with Claude Code