Skip to content

DRAFT: BNK1CCA + DELCUS cases; screen compare at every OCCURS occurrence (Part of #5076) - #5279

Merged
squid-protocol merged 4 commits into
mainfrom
churn/5076-20261016T1721Z
Oct 16, 2026
Merged

squid-protocol merged 4 commits into
mainfrom
churn/5076-20261016T1721Z

Conversation

@squid-protocol

Copy link
Copy Markdown
Owner

Part of #5076 (the issue stays open: the unproven programs below keep their named blockers).

What changed

  • Screen compare reads every OCCURS occurrence (tests/tools/equivalence_cics.py): screen_layout no longer refuses a symbolic map with OCCURS; it lays out every occurrence by subscript (ACCOUNTO(3)), as the COMMAREA compare does (Equivalence: COMMAREA OCCURS fields are compared at the first occurrence only; det LINK of an OCCURS DTO passes the first occurrence's extent #4765). screen_key names each one as the generated screen's screenValues() does (ACCOUNT.3); the SEND-MAP decode and map_subfields use it. An OCCURS DEPENDING ON in a map, and a RECEIVE typed into one occurrence, are refused by name.
  • Found by the new compare, fixed in the det translator (det/cics.py): Generated.screen_fields read the screen class with a regex that missed a repeated field (values.put("ACCOUNT" + "." + (i + 1), ...)), so the port's SEND MAP silently left every ACCOUNT line out (first run: 6 BNK1CCA scenarios DIFFERED, java: None). SEND MAP and RECEIVE MAP now cover each occurrence (screen_occurs, screen_slots).
  • New case cbsa-bnk1cca (BNK1CCA, map BNK1ACC with OCCURS=10): 20 scenarios (AIDs, valid / zero / unknown customer, 0 / 1 / 3 / 10 / 12 accounts, LINK INQACCCU PGMIDERR and NOTAUTH). Proven: 25/25 paragraphs, 29/41 branches (the rest: failure branches after SEND/RETURN no fault can reach, a non-numeric NUM field).
  • New case cbsa-delcus (DELCUS): proof_blockers on HEAD showed it as the one burned CICS program still with no case. 16 scenarios, 22/22 paragraphs, 13/16 branches. Not proven (see below).
  • Tests: test_call_compare_4778.py (OCCURS tests replaced: every occurrence listed, a differing later occurrence is a difference, subfields per occurrence, ODO and occurrence-typed input refused), new test_det_screen_occurs_5076.py.

Class table (burned estates; proof_blockers on HEAD before the new cases, --no-census: 98 CICS programs translate whole, 53 proven)

Program Status
BNK1CCA case added, proven
DELCUS case added, not proven: file change after INQACCCU's SYNCPOINT ROLLBACK (cbsa-delcus, in det_sweep_baseline.json, register Q3). Every event, COMMAREA, ACCOUNT, PROCTRAN and ABNDFILE equal; 3 scenarios differ in the CUSTOMER file
BNK1UAC, BNK1TFN, BNK1CCS cased, unproven: java-facade RETURN LENGTH differs from the record (#5089); stays refused, not loosened (#5147's policy)
CRECUST (via BNK1CCS) CEEDAYS picture, #4952 / #5064
ZECS000, ZECS003 run-time file names, #4771 (ZECS003 in det_sweep_baseline.json)
ECS001, ASYNCPNT cased and proved by #5087 / #5147
BANKDATA batch Db2 loader, no EXEC CICS: out of scope
After this PR no burned CICS program carries a no case gap (proof_blockers on HEAD before the DELCUS case listed only DELCUS; BANKDATA and the CardDemo batch programs DBUNLDGS, PAUDBLOD, CBSTM03B have no EXEC CICS). Non-burned estates untouched. The full 16-program list of the issue was measured on an older commit; this table is the re-measure on HEAD (burned estates only, by policy).

Evidence

  • det_port.py run cbsa-bnk1cca: PROVED (20 scenarios, java-facade equal too). det_port.py check: 116/117 ports unchanged (only the new case).
  • proof_sweep.py --det-only --cases cbsa-delcus: not proven, "as expected" against the baseline entry.
  • pr_gates.py --fast: 6/6 pass. pr_gates.py --ratchets: 8 pass, 0 fail, 0 skipped.
  • pytest: test_det_translate, test_call_compare_4778, test_occurs_compare_4765, test_equivalence_cics, test_det_cics_map_names_4270, test_bms_screens, test_proof_blockers all pass.
  • Golden masters not touched (no scan-path change).

Sibling gaps (not in this PR)

Lessons for agents

  • cics_census.py survey --baseline surveys an OLD commit; for HEAD use survey --no-census --out DIR --label head, then proof_blockers.py DIR --label head --no-census.
  • A pgrep -f wait loop matches its own shell and never ends; wait on a log marker instead.

🤖 Generated with Claude Code

squid-protocol and others added 3 commits October 16, 2026 13:27
…rt of #5076)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…nce (Part of #5076)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…'s rollback (Part of #5076)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@squid-protocol squid-protocol added the shepherd:merge Maintainer: merge when green (auto-merge, squash). Guide: docs/ci.md label Oct 16, 2026
@squid-protocol

Copy link
Copy Markdown
Owner Author

No description provided.

@squid-protocol
squid-protocol marked this pull request as ready for review October 16, 2026 18:53
@squid-protocol

Copy link
Copy Markdown
Owner Author

No description provided.

@squid-protocol
squid-protocol enabled auto-merge (squash) October 16, 2026 18:53
@squid-protocol

Copy link
Copy Markdown
Owner Author

No description provided.

@squid-protocol squid-protocol added shepherd:merge Maintainer: merge when green (auto-merge, squash). Guide: docs/ci.md and removed shepherd:merge Maintainer: merge when green (auto-merge, squash). Guide: docs/ci.md labels Oct 16, 2026
@squid-protocol

Copy link
Copy Markdown
Owner Author

No description provided.

@github-actions

Copy link
Copy Markdown
Contributor

🐦‍⬛ Muninn Security Scan

✅ No security issues found.

🐦‍⬛ Powered by Muninn · Skald Lab

@squid-protocol
squid-protocol merged commit 7c9279f into main Oct 16, 2026
55 checks passed
@squid-protocol
squid-protocol deleted the churn/5076-20261016T1721Z branch October 16, 2026 19:15
squid-protocol added a commit that referenced this pull request Oct 16, 2026
…skills and the pr-worker (Part of #5280)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
squid-protocol added a commit that referenced this pull request Oct 16, 2026
… rules, skills and the pr-worker (Part of #5280)"

This reverts commit 58da6f5.
squid-protocol added a commit that referenced this pull request Oct 16, 2026
…skills and the pr-worker (Part of #5280) (#5284)

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
squid-protocol added a commit that referenced this pull request Oct 16, 2026
…-down, Gap Atlas; READMEs link it (Part of #5280) (#5281)

* progress page: generated burned-estate ladder, components, eras, core burn-down, Gap Atlas; READMEs link it (Part of #5280)

tests/tools/progress_report.py renders docs/language_status/progress.md and progress.json through
generated_docs.PAGES and the generated-docs workflow publish list. README.md and the cobol_to_java
README drop their hand-written status numbers for a link to the page; det_survey.md becomes a dated
snapshot.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* generated_branch test: the docs workflow publishes progress.md and progress.json (Part of #5280)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* agent memory: promote lessons #5269, #5277, #5279, #5281 into rules, skills and the pr-worker (Part of #5280)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Revert "agent memory: promote lessons #5269, #5277, #5279, #5281 into rules, skills and the pr-worker (Part of #5280)"

This reverts commit 58da6f5.

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

shepherd:merge Maintainer: merge when green (auto-merge, squash). Guide: docs/ci.md

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant