From 2941009ba6c7d8d0c184dceeaec0d09a00403e5a Mon Sep 17 00:00:00 2001 From: squid-protocol Date: Sat, 17 Oct 2026 06:39:34 -0400 Subject: [PATCH 1/3] det: refuse a non-digit in an INSPECT/UNSTRING TALLYING counter or STRING/UNSTRING POINTER (Part of #4692) Co-Authored-By: Claude Sonnet 5.5 --- docs/language_status/cobolrt_rules.json | 21 ++++++- docs/language_status/register/C11.md | 10 ++++ .../cobol_to_java/det/cobolrt/Cobol.java | 19 ++++-- .../cobol_to_java/det/cobolrt/Zoned.java | 6 ++ .../PCCONF/overlay/cobolrt/Cobol.java | 19 ++++-- .../PCCONF/overlay/cobolrt/Zoned.java | 6 ++ .../test_det_nondigit_zoned.py | 59 +++++++++++++++++++ 7 files changed, 131 insertions(+), 9 deletions(-) diff --git a/docs/language_status/cobolrt_rules.json b/docs/language_status/cobolrt_rules.json index 388ce21769..8461505e55 100644 --- a/docs/language_status/cobolrt_rules.json +++ b/docs/language_status/cobolrt_rules.json @@ -812,6 +812,24 @@ "status": "REFUSED", "calibration": "uncalibrated" }, + { + "id": "RT-CBL-COUNTER-NONDIGIT-REFUSED", + "family": "CBL", + "title": "A STRING / UNSTRING POINTER, an UNSTRING TALLYING IN item and an INSPECT TALLYING counter are read before they store: a zoned one holding a non-digit is refused by name", + "methods": [ + "counterNum" + ], + "ibm": null, + "ibm_note": "IBM documents no result (ZONEDATA(PFD) assumes valid zone bits); the same ground as the receiver of ADD", + "options": [ + "ZONEDATA" + ], + "register": [ + "C11" + ], + "status": "REFUSED", + "calibration": "uncalibrated" + }, { "id": "RT-CBL-COMPARE-NONDIGIT", "family": "CBL", @@ -1415,7 +1433,8 @@ "refuse", "pScaled", "refuseP", - "refuseReceiver" + "refuseReceiver", + "refuseCounter" ], "site": "refuse", "ibm": null, diff --git a/docs/language_status/register/C11.md b/docs/language_status/register/C11.md index 287a1455cc..27b2342f88 100644 --- a/docs/language_status/register/C11.md +++ b/docs/language_status/register/C11.md @@ -84,6 +84,16 @@ reached: "yes (COMEN01C option `1!`; GenApp LGTESTP4's add)" TRAN-ID`) can see a non-digit; CBSA 4, GenApp 23, the others 0 cannot. Per verb (#4692): ADD / SUBTRACT / MULTIPLY / DIVIDE refuse a dirty receiver (above); MOVE and GIVING overwrite it, so the receiver is not read (modelled, measured); COMPUTE reads it as an operand (modelled). +- **A non-digit in a POINTER / TALLYING item (#4692) -- REFUSED by name.** The same read-before-store as the receiver of + ADD: `INSPECT ... TALLYING ctr` and `UNSTRING ... TALLYING IN ctr` add to the counter's current value, and + `STRING ... WITH POINTER p` / `UNSTRING ... WITH POINTER p` read where to start. A zoned item holding a non-digit + there (a counter cleared by `MOVE SPACES`) is refused at run time (`Cobol.counterNum`: "a STRING / UNSTRING pointer + or tallying counter that is a zoned item holding a non-digit is not modelled"), on IBM's ground above (no result + documented); a digit-only one counts as ever. Tested over the five receiver shapes x INSPECT ALL / CHARACTERS, + UNSTRING TALLYING / POINTER, STRING POINTER, and the digit-only start of each (`test_det_nondigit_zoned.py`). A plain + item (no REDEFINES) cleared to spaces and then ADDed to is refused too (the lifted-item path goes through the same + `receiverNum`). Not covered, no burned program reads one: ADD CORRESPONDING, `PERFORM VARYING` / `SET ... UP BY` + steps of a dirty index. - **A zoned item with a P position holding a non-digit, as a sender (#4685, #4692) -- REFUSED by name.** Measured against cobc 3.1.2 (`-std=ibm -fsign=EBCDIC`, TRUNC STD and BIN): a left-P item (`PIC VPP99`) MOVEd to a binary item makes the program hang (the 14-operation probe never finished; `timeout` killed it), and a right-P one (`PIC 99PP`) is diff --git a/gitgalaxy/tools/cobol_to_java/det/cobolrt/Cobol.java b/gitgalaxy/tools/cobol_to_java/det/cobolrt/Cobol.java index d7e0bed3c9..25fdb8b7cf 100644 --- a/gitgalaxy/tools/cobol_to_java/det/cobolrt/Cobol.java +++ b/gitgalaxy/tools/cobol_to_java/det/cobolrt/Cobol.java @@ -823,6 +823,17 @@ public static BigDecimal receiverNum(Field f, Charset cs) { return num(f, cs); } + /** The current value of a STRING / UNSTRING POINTER, an UNSTRING TALLYING IN or an INSPECT TALLYING counter (#4692, + * register C11): the statement reads the item before it stores, as ADD does its receiver. A zoned item holding a + * non-digit is refused by name for the same reason as {@link #receiverNum}; a digit-only one is read as ever. */ + // [rule RT-CBL-COUNTER-NONDIGIT-REFUSED] + public static BigDecimal counterNum(Field f, Charset cs) { + if (f.kind == Field.Kind.NUMERIC_DISPLAY && Zoned.get(f, cs).dirty) { + throw Zoned.refuseCounter(); + } + return num(f, cs); + } + /** A numeric item's value in a comparison (#4662): a zoned item holding a non-digit as the oracle compares it. */ // [rule RT-CBL-COMPARE-NONDIGIT] public static BigDecimal cmpNum(Field f, Charset cs) { @@ -1319,7 +1330,7 @@ private static boolean matches(byte[] hay, int at, byte[] pat) { public static boolean string(Field into, Field pointer, Charset cs, StringPart... parts) { int off = 0; if (pointer != null) { - BigDecimal p = num(pointer, cs); + BigDecimal p = counterNum(pointer, cs); if (p.compareTo(BigDecimal.ONE) < 0 || p.compareTo(BigDecimal.valueOf(into.len)) > 0) return true; off = p.intValue() - 1; } @@ -1403,7 +1414,7 @@ public static boolean unstring(Field src, Field pointer, Field tallying, List 0) return true; off = p.intValue() - 1; } @@ -1440,7 +1451,7 @@ public static boolean unstring(Field src, Field pointer, Field tallying, List 0) return true; off = p.intValue() - 1; } @@ -1403,7 +1414,7 @@ public static boolean unstring(Field src, Field pointer, Field tallying, List 0) return true; off = p.intValue() - 1; } @@ -1440,7 +1451,7 @@ public static boolean unstring(Field src, Field pointer, Field tallying, List str: + pic, ln = KINDS[kind] + lines = [" IDENTIFICATION DIVISION.", " PROGRAM-ID. NDB.", " DATA DIVISION.", + " WORKING-STORAGE SECTION.", f" 01 R PIC X({ln}).", f" 01 V REDEFINES R {pic}.", + " 01 S PIC X(8) VALUE 'A,AA,A '.", " 01 D1 PIC X(8).", " 01 D2 PIC X(8).", + " PROCEDURE DIVISION.", f" MOVE X'{data.hex().upper()}' TO R", f" {op}", + " DISPLAY 'R=' R", " GOBACK.", ""] # fmt: skip + return "\n".join(lines) + + +@pytest.mark.skipif(_java() is None, reason="needs a JDK 17 (JAVA_HOME / JDK_17)") +@pytest.mark.parametrize("op", list(COUNTER_OPS)) +@pytest.mark.parametrize("kind", list(KINDS)) +def test_a_non_digit_counter_or_pointer_is_refused_by_name(kind, op, tmp_path): + pytest.importorskip("tree_sitter_language_pack") + data = _rcases(kind, True)[1] # one letter-bearing case per shape (the first is spaces / a bad sign) + run = _det(_cprogram(kind, COUNTER_OPS[op][0], data), tmp_path, "STD") + assert run.returncode != 0 and "register C11" in run.stderr, (data, run.stderr) + assert "pointer or tallying counter that is a zoned item holding a non-digit is not modelled" in run.stderr + + +@pytest.mark.skipif(_java() is None, reason="needs a JDK 17 (JAVA_HOME / JDK_17)") +@pytest.mark.parametrize("op", list(COUNTER_OPS)) +def test_a_digit_only_counter_or_pointer_counts_as_ever(op, tmp_path): + pytest.importorskip("tree_sitter_language_pack") + start = b"0001" if op.endswith("PTR") else b"0000" + run = _det(_cprogram("U", COUNTER_OPS[op][0], start), tmp_path, "STD") + assert run.returncode == 0, run.stderr + want = int(COUNTER_OPS[op][1]) + assert f"R={want:04d}" in run.stdout.replace("\r", ""), (run.stdout, want) + + +@pytest.mark.skipif(_java() is None, reason="needs a JDK 17 (JAVA_HOME / JDK_17)") +@pytest.mark.parametrize("op", ["ADD 1 TO V", "ADD W TO V", "SUBTRACT 1 FROM V", "MULTIPLY 2 BY V"]) +def test_a_plain_item_cleared_to_spaces_is_refused_as_a_receiver(op, tmp_path): + """The item the translator may lift (no REDEFINES, named plainly): `MOVE SPACES TO V` then the statement.""" + pytest.importorskip("tree_sitter_language_pack") + src = "\n".join([" IDENTIFICATION DIVISION.", " PROGRAM-ID. NDB.", " DATA DIVISION.", + " WORKING-STORAGE SECTION.", " 01 V PIC 9(4).", " 01 W PIC 9(4) VALUE 5.", + " PROCEDURE DIVISION.", " MOVE SPACES TO V", f" {op}", + " DISPLAY V", " GOBACK.", ""]) # fmt: skip + run = _det(src, tmp_path, "STD") + assert run.returncode != 0 and "receiver is a zoned item holding a non-digit is not modelled" in run.stderr + + # --------------------------------------------------------------------------------------------------------------- # #4692 / #4685: a zoned SENDER with a P position holding a non-digit. cobc 3.1.2 (measured) hangs on `MOVE` of a left-P # one (VPP99) to a binary item and computes a right-P one (99PP) by no explainable rule (`ADD S TO DS` of two spaces From 65e2b7a09987eb63c1e13cb160a9d1dfa545afd2 Mon Sep 17 00:00:00 2001 From: squid-protocol Date: Sat, 17 Oct 2026 07:05:02 -0400 Subject: [PATCH 2/3] crucible: re-prove the PCCONF port after the cobolrt non-digit change (Part of #4692) Co-Authored-By: Claude Sonnet 5.5 --- .../ports/pc-wizard/PCCONF/provenance.json | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/cics_crucible/ports/pc-wizard/PCCONF/provenance.json b/tests/cics_crucible/ports/pc-wizard/PCCONF/provenance.json index c4a54a632b..49e8c70d9b 100644 --- a/tests/cics_crucible/ports/pc-wizard/PCCONF/provenance.json +++ b/tests/cics_crucible/ports/pc-wizard/PCCONF/provenance.json @@ -71,6 +71,24 @@ "runTask", "handleTransaction" ] + }, + { + "at": "2026-10-17T11:04:21+00:00", + "crucible_ref": "v0.9.0 (3ca75ae0)", + "summary": { + "back-and-fix": "1/1", + "back-clear-keeps-amount": "1/1", + "clear-and-bad-amount": "1/1", + "happy-post": "1/1", + "mapfail-clear-cancel": "1/1" + }, + "port_sha256": "161388fe08f0c7a584090d56e636e9f6ac1fe7d324a952b18b58781363fb5eba", + "harness_commit": "75870682605183a7bb7be876a65f265af83a86fe", + "by": "tests/tools/crucible_port_provenance.py reprove (cics_crucible.py --sides java-ported java-facade --program PCCONF --report-dir)", + "entry_points": [ + "runTask", + "handleTransaction" + ] } ] } From 7049d871594df9572d3e7df98a77f863a0c8e7b8 Mon Sep 17 00:00:00 2001 From: squid-protocol Date: Sat, 17 Oct 2026 07:33:05 -0400 Subject: [PATCH 3/3] evidence: re-prove the PCCONF and PCWIZ crucible records at the pin (Part of #4692) test_every_committed_record_is_current failed: both ports changed since their proofs. Co-Authored-By: Claude Sonnet 5.5 --- .../ports/pc-wizard/PCCONF/evidence.json | 54 ++++++++++--------- .../ports/pc-wizard/PCWIZ/evidence.json | 48 +++++++++-------- 2 files changed, 53 insertions(+), 49 deletions(-) diff --git a/tests/cics_crucible/ports/pc-wizard/PCCONF/evidence.json b/tests/cics_crucible/ports/pc-wizard/PCCONF/evidence.json index fd166ef9ba..02b07ae37a 100644 --- a/tests/cics_crucible/ports/pc-wizard/PCCONF/evidence.json +++ b/tests/cics_crucible/ports/pc-wizard/PCCONF/evidence.json @@ -35,7 +35,7 @@ "tests/cics_crucible/ports/pc-wizard/PCCONF/overlay/cobolrt/standalone/Sysout.java", "tests/cics_crucible/ports/pc-wizard/PCCONF/overlay/service/PcconfService.java" ], - "sha256": "a03a83ab9aa07b13cb2285c1dae4949fa702914c85b4720fdafc1edc5338f9be", + "sha256": "8d3a01d203b0ba9671771ae66e05ab140c2559c66cee85820a8dde3ddcde121f", "entry_points": [ "handleTransaction", "runTask" @@ -47,7 +47,7 @@ "tests/cics_crucible/ports/pc-wizard/*/overlay/**" ], "files": 30, - "sha256": "222a987d1aafe2a662fa51d0ce9b84be942efd67a7f5aa6805600765b6c6b72d" + "sha256": "6b10ab8a772890f0074eb2cfd4cbd7e8baad9cbd713a84807dbcca47166f005f" }, "case": { "paths": [ @@ -63,6 +63,7 @@ "tests/tools/equivalence_java.py", "tests/tools/equivalence_inputs.py", "tests/tools/equivalence_cics.py", + "tests/tools/equivalence_cics_containers.py", "tests/tools/equivalence_call.py", "tests/tools/equivalence_cache.py", "tests/tools/equivalence_db2.py", @@ -73,12 +74,12 @@ "tests/tools/cics_crucible.py", "tests/tools/cics_crucible_compare.py" ], - "files": 14, - "sha256": "1a6764dd1fec1885c80fee90fc0f637d42a89a42e97b72e6f0a7503d9833fc04", + "files": 15, + "sha256": "89bdf27b94a206292e4ab905414c263ae8a27d9f32c8ca7be8e05d52da991c20", "components": { - "harness:call": "61253984123d6c40caf524f699070e74326d454fe62b8ee8658cbfea27678730", - "harness:cics": "d9d3f63b387b2fd07a05780ece223c3df3a375235534675546f97040ac9270de", - "harness:core": "6f13d22bab57c67e9caaf5d2714906e9c7c0149a83dcfd6650e2514e2c478318", + "harness:call": "74c6c349861eb08f26d7b25f83b523f91dd883cfdd9c378075b3ce379a040b33", + "harness:cics": "efb861c5003490d73ee3aa741e4ddb4d0c5292be24c92b4093130844916a0426", + "harness:core": "943aa2440d0af07594519f318266e6591e638c33d84d44bf76e99b39b1377f15", "harness:crucible": "7256c91cce7b59a0fc85800fe0910ea9b969c05320811aa4dd8214b8b1ee7b56", "harness:db2": "e5278abdc64341d0e53d9bd81423cf2362cc2d2a791254e1e67aff17a0565fb4", "harness:ims": "71164b208ceea480df6a1520645834ad1e7ff0a487416112cd22cec38d3fdfbe" @@ -94,11 +95,11 @@ "paths": [ "gitgalaxy/tools/cobol_to_java/**" ], - "files": 91, - "sha256": "bb0ad4e37d7e9ee055a80839109ea0d61a2810ed5395579da255d4c829c01b49", + "files": 93, + "sha256": "9735d7919095e71f50e96712c191c0379dd35ab8f5741dc8f74f6a23d05d42f0", "components": { "generator:cobolrt/Accept.java": "d5e655d996990b1aa5e0bbcafd2803f98ef8a953aca49c9189476d4ccff1edcc", - "generator:cobolrt/Cobol.java": "18e4d232d7db68683d74699e1cddda0c6e2606b33b9f27f91b333754bd984824", + "generator:cobolrt/Cobol.java": "4c3961e169173aa39f2104d1a6dd2ff0d2ce2347ac41358855d31f41e2b4fe11", "generator:cobolrt/Codec.java": "8745a23fd0c77d98660e59ce6fe364391d76eb8a12bd9d3b4f4426018652f420", "generator:cobolrt/Editing.java": "2ea7c7da4d7aa9a4c07b3358d929740fdc65dd0e44a982cdf5ef6c5f80c15b25", "generator:cobolrt/Field.java": "42603aaae152d6b50f1525d2f32e7ee06ab116bd56e9d9598594242305746894", @@ -109,9 +110,9 @@ "generator:cobolrt/Lossless.java": "63b2383bf7af1a92e7bb67681568779e4a7a7cb93d8fdf49626a9b79478faece", "generator:cobolrt/Sort.java": "c0c00763b985f8d4f2fd6b764052cd940411552f7c37349cb11814d0343e1262", "generator:cobolrt/Storage.java": "bf9f9b58fb42e3f5287273714f3ec55d074f42f45ca59bd190849af5d122a0ec", - "generator:cobolrt/Zoned.java": "1fe487feb76a3d8bf6a09f9dcba044f288c585f83484a260f30a0ce57b93aa4e", + "generator:cobolrt/Zoned.java": "8244f9c4e847846349434c8c4c44e2dc10d02fa07b25f7635c68d3df5cbb284c", "generator:cobolrt/batch/DetFiles.java": "e3e95239ad75ee5f5e6c695eda6f7958d7e77db4febd5e743403c8a8dfefac9c", - "generator:cobolrt/cics/DetCics.java": "b387e95b224033197424e9ebd4c0306561d410f1985ac8253a3028cfab6468d1", + "generator:cobolrt/cics/DetCics.java": "a43284c097b393834302c2abc40b4bfdea8c5ba5a1f316032582b6912dd9937f", "generator:cobolrt/cics/DetJustify.java": "ecf7fab2a14ac125e87f05d7be9bbb13610d1423fc7410c644d00b5767fb812a", "generator:cobolrt/cics/DetMq.java": "40204edf5e82cd78739db956e424860a0121cb3ec44e0a9c1e508ed41fcf3187", "generator:cobolrt/dli/DetDli.java": "9ee267fbcd88f348c5bba5c8b236b4fd97c0cd25769ce8c691fd563b18e78b22", @@ -130,21 +131,22 @@ "generator:cobolrt/sql/DetSql.java": "b58a70cc1fc4e675c9f358dbf2230e133426e0213ef082b732bc6fcfe9338698", "generator:cobolrt/standalone/CobolAbend.java": "f8b72030ecb8862738c562b0c826ff9b1a085d92050664082f96e6107d5dfdb7", "generator:cobolrt/standalone/Sysout.java": "407512cfedf89455f08193fe4aed96e26fdfc9fd34e8636a662b6574a5645b4f", - "generator:core": "68ac9255b6c72c2f2f6a2dc99d136e378282aec1c9c2c12d130e0769a2d9cb45", + "generator:core": "9f0f6c5957c86ec75a0a8c5891a4d0065e1d2901559a5e69055eef414c16483c", "generator:det/__init__": "9dedbc9da92e2e4bfd260e7fd5fb78ee2e41a061466c948250d088ffaa464386", - "generator:det/bll": "c877bf4b36ef4b03cc2065ff58fcaaf05354e5021ee77265ad6c88dd47bc15e6", - "generator:det/cics": "70a827abfcf9ca1c2319f7b4e8fbb0d9b149dbb11ea50e5ef423aa44b2f08a8a", + "generator:det/bll": "d2733f29724746445eb38171372d0956fae4beb31b8ebf3259e1cb270cee9d98", + "generator:det/cics": "53777d4d088757d2892d96a52197fe409893cb5471f9d3f70da21260353c471a", + "generator:det/cics_containers": "5fc989229d444423f5b14d2c65a2c7c541efbe6cd0e5dc5a833beaf90c578b6b", "generator:det/cvda": "894dce1a06a317be4fee0935fba219b066ef141e48f783953a5fe85c16338e26", "generator:det/dli": "834aba674d85c25af1299ae19d8b49288f4bd831b578889d9bf40d83b5fea342", - "generator:det/dyncall": "19e29320d37a470811447e91448a577f53b1910f291371fc0889999b5f9f630a", + "generator:det/dyncall": "bd15eb2918020d644135fd7f2565937f836b05a223de5ca05af33f0ec7fb0a4f", "generator:det/entity": "b6aa37067dc0413f6700ac83e7dd35610d8e2474aa607bdf54b5b8419ee4c7d6", - "generator:det/expr": "50f53f541efb6853fd8a97ba022a97e8a4f691d2bbde8655293f47f77f47a0af", - "generator:det/gen": "a3c01de91fac1bd5ea6a7be7a3ee22e40fba44ce5a34ebb45efc53c556ffba20", + "generator:det/expr": "fbb3c70683ccd2e64382901efe4846b8d908a8c3c7c9bfa9641c6ff6d48a9c4d", + "generator:det/gen": "3d4da1a24a8d52230b5a383005aa128dcdb6076be8a776e3e0c53de7184bf174", "generator:det/hfp": "7371422d1821ad22c526f9ba0e37deaa0ffc38ed190c6ad76e7475d820df95a1", "generator:det/layout": "e3c70e4dcbb512324b5b16a57dac4010e60d18b7926c06fff5edbd6cf1a79e3e", "generator:det/mq": "25055224f7c943069e828db7a79887ca1f4e6f4a06ec3b9781c97b31226491a0", "generator:det/osvs": "4ca3599a4d9a49bd17def291a921278d6f4f45858f65acaf75ae817c17644dd5", - "generator:det/program": "858a1a38920a09c8617b6ae593524ed6f40a1b1d3302b7f2f0f870351c120709", + "generator:det/program": "6c0afebabfbb2b25651eed8c83f95672b1696bb6683af32f107c46f7264bb7fd", "generator:det/refine": "4daa99d7534a589b4b46b8517f4109b95f64c956cd101a890e57b6a59eac4e44", "generator:det/source": "8bd64a1f9b6a3f3ae66fd9f8380a206be5a1601cdb84a24209f659822ce4919f", "generator:det/sql": "7e45e405297510ec80e92b82c55d58e861bcfb37af4bc6a26a475798795ffd45", @@ -185,10 +187,10 @@ } } }, - "digest": "acf90989305bdeab3babfcdebb17e1cc5d0e4e47620586253a1b4e51e6fb7821" + "digest": "35b6a7e7cd99a84f4eaf64f640317bef72c84df042e5cd362d702d8fdf18b4e2" }, "proof": { - "at": "2026-10-16T18:30:43Z", + "at": "2026-10-17T11:31:44Z", "verdict": "proven", "runs": 5, "fault_runs": 0, @@ -222,8 +224,8 @@ "sysout_compared": null, "attributes_compared": null, "java_failed": false, - "harness_commit": "f47c7b187d4d7e72fcb0993486b256d60827f223+uncommitted", - "inputs_digest": "acf90989305bdeab3babfcdebb17e1cc5d0e4e47620586253a1b4e51e6fb7821" + "harness_commit": "ab9b1b6cb79309cf6fc158544a3c4a860c8f9f26", + "inputs_digest": "35b6a7e7cd99a84f4eaf64f640317bef72c84df042e5cd362d702d8fdf18b4e2" }, "coverage": { "paragraphs": { @@ -238,7 +240,7 @@ "handler_labels": null, "source": "tests/cics_crucible/coverage.json#programs/pc-wizard/PCCONF", "ledger_sha256": "3f9d5d6b0dc94e0c8b7fa7331a887cf2ac93b37bc98604be333c13bd0ba14213", - "inputs_digest": "acf90989305bdeab3babfcdebb17e1cc5d0e4e47620586253a1b4e51e6fb7821" + "inputs_digest": "35b6a7e7cd99a84f4eaf64f640317bef72c84df042e5cd362d702d8fdf18b4e2" }, "reach": { "entry_points": [ @@ -272,7 +274,7 @@ "ported_unproven": 0 }, "generated_compared": true, - "port_sha256": "a03a83ab9aa07b13cb2285c1dae4949fa702914c85b4720fdafc1edc5338f9be" + "port_sha256": "8d3a01d203b0ba9671771ae66e05ab140c2559c66cee85820a8dde3ddcde121f" }, "mutation": { "commit": "be2561306", @@ -335,7 +337,7 @@ "provenance_file": { "path": "tests/cics_crucible/ports/pc-wizard/PCCONF/provenance.json", "format": "cics-crucible-port/1", - "sha256": "7ac8bd80c3722dd6f9c72961992b255e8a7d57a553574fafa32d31a6bfb2ab79" + "sha256": "1cf0a4b293214dbd0146fbf3a1b4a9c5fad932f7e5f8aa76db0609c0d822c59e" }, "crucible_ref_proven": "v0.9.0 (3ca75ae0)" }, diff --git a/tests/cics_crucible/ports/pc-wizard/PCWIZ/evidence.json b/tests/cics_crucible/ports/pc-wizard/PCWIZ/evidence.json index 2c246d1f39..a46cbfdb19 100644 --- a/tests/cics_crucible/ports/pc-wizard/PCWIZ/evidence.json +++ b/tests/cics_crucible/ports/pc-wizard/PCWIZ/evidence.json @@ -20,7 +20,7 @@ "tests/cics_crucible/ports/pc-wizard/*/overlay/**" ], "files": 30, - "sha256": "222a987d1aafe2a662fa51d0ce9b84be942efd67a7f5aa6805600765b6c6b72d" + "sha256": "6b10ab8a772890f0074eb2cfd4cbd7e8baad9cbd713a84807dbcca47166f005f" }, "case": { "paths": [ @@ -36,6 +36,7 @@ "tests/tools/equivalence_java.py", "tests/tools/equivalence_inputs.py", "tests/tools/equivalence_cics.py", + "tests/tools/equivalence_cics_containers.py", "tests/tools/equivalence_call.py", "tests/tools/equivalence_cache.py", "tests/tools/equivalence_db2.py", @@ -46,12 +47,12 @@ "tests/tools/cics_crucible.py", "tests/tools/cics_crucible_compare.py" ], - "files": 14, - "sha256": "1a6764dd1fec1885c80fee90fc0f637d42a89a42e97b72e6f0a7503d9833fc04", + "files": 15, + "sha256": "89bdf27b94a206292e4ab905414c263ae8a27d9f32c8ca7be8e05d52da991c20", "components": { - "harness:call": "61253984123d6c40caf524f699070e74326d454fe62b8ee8658cbfea27678730", - "harness:cics": "d9d3f63b387b2fd07a05780ece223c3df3a375235534675546f97040ac9270de", - "harness:core": "6f13d22bab57c67e9caaf5d2714906e9c7c0149a83dcfd6650e2514e2c478318", + "harness:call": "74c6c349861eb08f26d7b25f83b523f91dd883cfdd9c378075b3ce379a040b33", + "harness:cics": "efb861c5003490d73ee3aa741e4ddb4d0c5292be24c92b4093130844916a0426", + "harness:core": "943aa2440d0af07594519f318266e6591e638c33d84d44bf76e99b39b1377f15", "harness:crucible": "7256c91cce7b59a0fc85800fe0910ea9b969c05320811aa4dd8214b8b1ee7b56", "harness:db2": "e5278abdc64341d0e53d9bd81423cf2362cc2d2a791254e1e67aff17a0565fb4", "harness:ims": "71164b208ceea480df6a1520645834ad1e7ff0a487416112cd22cec38d3fdfbe" @@ -67,11 +68,11 @@ "paths": [ "gitgalaxy/tools/cobol_to_java/**" ], - "files": 91, - "sha256": "bb0ad4e37d7e9ee055a80839109ea0d61a2810ed5395579da255d4c829c01b49", + "files": 93, + "sha256": "9735d7919095e71f50e96712c191c0379dd35ab8f5741dc8f74f6a23d05d42f0", "components": { "generator:cobolrt/Accept.java": "d5e655d996990b1aa5e0bbcafd2803f98ef8a953aca49c9189476d4ccff1edcc", - "generator:cobolrt/Cobol.java": "18e4d232d7db68683d74699e1cddda0c6e2606b33b9f27f91b333754bd984824", + "generator:cobolrt/Cobol.java": "4c3961e169173aa39f2104d1a6dd2ff0d2ce2347ac41358855d31f41e2b4fe11", "generator:cobolrt/Codec.java": "8745a23fd0c77d98660e59ce6fe364391d76eb8a12bd9d3b4f4426018652f420", "generator:cobolrt/Editing.java": "2ea7c7da4d7aa9a4c07b3358d929740fdc65dd0e44a982cdf5ef6c5f80c15b25", "generator:cobolrt/Field.java": "42603aaae152d6b50f1525d2f32e7ee06ab116bd56e9d9598594242305746894", @@ -82,9 +83,9 @@ "generator:cobolrt/Lossless.java": "63b2383bf7af1a92e7bb67681568779e4a7a7cb93d8fdf49626a9b79478faece", "generator:cobolrt/Sort.java": "c0c00763b985f8d4f2fd6b764052cd940411552f7c37349cb11814d0343e1262", "generator:cobolrt/Storage.java": "bf9f9b58fb42e3f5287273714f3ec55d074f42f45ca59bd190849af5d122a0ec", - "generator:cobolrt/Zoned.java": "1fe487feb76a3d8bf6a09f9dcba044f288c585f83484a260f30a0ce57b93aa4e", + "generator:cobolrt/Zoned.java": "8244f9c4e847846349434c8c4c44e2dc10d02fa07b25f7635c68d3df5cbb284c", "generator:cobolrt/batch/DetFiles.java": "e3e95239ad75ee5f5e6c695eda6f7958d7e77db4febd5e743403c8a8dfefac9c", - "generator:cobolrt/cics/DetCics.java": "b387e95b224033197424e9ebd4c0306561d410f1985ac8253a3028cfab6468d1", + "generator:cobolrt/cics/DetCics.java": "a43284c097b393834302c2abc40b4bfdea8c5ba5a1f316032582b6912dd9937f", "generator:cobolrt/cics/DetJustify.java": "ecf7fab2a14ac125e87f05d7be9bbb13610d1423fc7410c644d00b5767fb812a", "generator:cobolrt/cics/DetMq.java": "40204edf5e82cd78739db956e424860a0121cb3ec44e0a9c1e508ed41fcf3187", "generator:cobolrt/dli/DetDli.java": "9ee267fbcd88f348c5bba5c8b236b4fd97c0cd25769ce8c691fd563b18e78b22", @@ -103,21 +104,22 @@ "generator:cobolrt/sql/DetSql.java": "b58a70cc1fc4e675c9f358dbf2230e133426e0213ef082b732bc6fcfe9338698", "generator:cobolrt/standalone/CobolAbend.java": "f8b72030ecb8862738c562b0c826ff9b1a085d92050664082f96e6107d5dfdb7", "generator:cobolrt/standalone/Sysout.java": "407512cfedf89455f08193fe4aed96e26fdfc9fd34e8636a662b6574a5645b4f", - "generator:core": "68ac9255b6c72c2f2f6a2dc99d136e378282aec1c9c2c12d130e0769a2d9cb45", + "generator:core": "9f0f6c5957c86ec75a0a8c5891a4d0065e1d2901559a5e69055eef414c16483c", "generator:det/__init__": "9dedbc9da92e2e4bfd260e7fd5fb78ee2e41a061466c948250d088ffaa464386", - "generator:det/bll": "c877bf4b36ef4b03cc2065ff58fcaaf05354e5021ee77265ad6c88dd47bc15e6", - "generator:det/cics": "70a827abfcf9ca1c2319f7b4e8fbb0d9b149dbb11ea50e5ef423aa44b2f08a8a", + "generator:det/bll": "d2733f29724746445eb38171372d0956fae4beb31b8ebf3259e1cb270cee9d98", + "generator:det/cics": "53777d4d088757d2892d96a52197fe409893cb5471f9d3f70da21260353c471a", + "generator:det/cics_containers": "5fc989229d444423f5b14d2c65a2c7c541efbe6cd0e5dc5a833beaf90c578b6b", "generator:det/cvda": "894dce1a06a317be4fee0935fba219b066ef141e48f783953a5fe85c16338e26", "generator:det/dli": "834aba674d85c25af1299ae19d8b49288f4bd831b578889d9bf40d83b5fea342", - "generator:det/dyncall": "19e29320d37a470811447e91448a577f53b1910f291371fc0889999b5f9f630a", + "generator:det/dyncall": "bd15eb2918020d644135fd7f2565937f836b05a223de5ca05af33f0ec7fb0a4f", "generator:det/entity": "b6aa37067dc0413f6700ac83e7dd35610d8e2474aa607bdf54b5b8419ee4c7d6", - "generator:det/expr": "50f53f541efb6853fd8a97ba022a97e8a4f691d2bbde8655293f47f77f47a0af", - "generator:det/gen": "a3c01de91fac1bd5ea6a7be7a3ee22e40fba44ce5a34ebb45efc53c556ffba20", + "generator:det/expr": "fbb3c70683ccd2e64382901efe4846b8d908a8c3c7c9bfa9641c6ff6d48a9c4d", + "generator:det/gen": "3d4da1a24a8d52230b5a383005aa128dcdb6076be8a776e3e0c53de7184bf174", "generator:det/hfp": "7371422d1821ad22c526f9ba0e37deaa0ffc38ed190c6ad76e7475d820df95a1", "generator:det/layout": "e3c70e4dcbb512324b5b16a57dac4010e60d18b7926c06fff5edbd6cf1a79e3e", "generator:det/mq": "25055224f7c943069e828db7a79887ca1f4e6f4a06ec3b9781c97b31226491a0", "generator:det/osvs": "4ca3599a4d9a49bd17def291a921278d6f4f45858f65acaf75ae817c17644dd5", - "generator:det/program": "858a1a38920a09c8617b6ae593524ed6f40a1b1d3302b7f2f0f870351c120709", + "generator:det/program": "6c0afebabfbb2b25651eed8c83f95672b1696bb6683af32f107c46f7264bb7fd", "generator:det/refine": "4daa99d7534a589b4b46b8517f4109b95f64c956cd101a890e57b6a59eac4e44", "generator:det/source": "8bd64a1f9b6a3f3ae66fd9f8380a206be5a1601cdb84a24209f659822ce4919f", "generator:det/sql": "7e45e405297510ec80e92b82c55d58e861bcfb37af4bc6a26a475798795ffd45", @@ -158,10 +160,10 @@ } } }, - "digest": "acf90989305bdeab3babfcdebb17e1cc5d0e4e47620586253a1b4e51e6fb7821" + "digest": "35b6a7e7cd99a84f4eaf64f640317bef72c84df042e5cd362d702d8fdf18b4e2" }, "proof": { - "at": "2026-10-16T18:30:56Z", + "at": "2026-10-17T11:32:12Z", "verdict": "proven", "runs": 6, "fault_runs": 0, @@ -200,8 +202,8 @@ "sysout_compared": null, "attributes_compared": null, "java_failed": false, - "harness_commit": "f47c7b187d4d7e72fcb0993486b256d60827f223+uncommitted", - "inputs_digest": "acf90989305bdeab3babfcdebb17e1cc5d0e4e47620586253a1b4e51e6fb7821" + "harness_commit": "ab9b1b6cb79309cf6fc158544a3c4a860c8f9f26+uncommitted", + "inputs_digest": "35b6a7e7cd99a84f4eaf64f640317bef72c84df042e5cd362d702d8fdf18b4e2" }, "coverage": { "paragraphs": { @@ -216,7 +218,7 @@ "handler_labels": null, "source": "tests/cics_crucible/coverage.json#programs/pc-wizard/PCWIZ", "ledger_sha256": "90f306b56fbea5b71e0f3ef7dbb1cbc2a591698cb2c21e58fbe604545fb07576", - "inputs_digest": "acf90989305bdeab3babfcdebb17e1cc5d0e4e47620586253a1b4e51e6fb7821" + "inputs_digest": "35b6a7e7cd99a84f4eaf64f640317bef72c84df042e5cd362d702d8fdf18b4e2" }, "reach": { "entry_points": [