Skip to content

det facade: handleTransaction answers its DTO when RETURN COMMAREA LENGTH is past it (Part of #4270) - #5290

Merged
squid-protocol merged 1 commit into
mainfrom
churn/4695-wide-commarea-facade
Oct 16, 2026
Merged

squid-protocol merged 1 commit into
mainfrom
churn/4695-wide-commarea-facade

Conversation

@squid-protocol

Copy link
Copy Markdown
Owner

Closes #4695. Part of #4270. Follow-up to #4679 / #4694.

Decision

Convert (the layout codec already exists). A det facade's handleTransaction (both overloads) now answers the program's own DTO when the task's RETURN passed a COMMAREA as bytes (LENGTH past the DTO): the service's wideAnswer undoes the region EBCDIC (DetCics.commareaIn) and reads the bytes through the DTO's static fromCommarea (#4449), i.e. as the program's own record sees them. The task is untouched: returned(Object.class), returnedBytes(), EIBCALEN and the bytes for the next task are as before, and lastAnswerBytes() is unchanged (the harness pins it).

The helper is emitted in the service, only for a program that passes bytes (Cics.passes_bytes, set where commareaOut is emitted), not in DetCics: a DetCics edit moved 103 of 118 ports; this moves 11.

Class: a det facade answers the raw RETURN COMMAREA bytes

Member Status
Object-returning facade with its own DTO (CardDemo COCRDLIC, COCRDSLC, COCRDUPC, COACTVWC, COACTUPC + COACTUPC/COTRTLIC/COTRTUPC) converted, PROVED
typed-return facade with a layout converted
typed-return facade, DTO with no layout / bytes shorter than the record (CBSA BNK1CCS, BNK1TFN, BNK1UAC) unchanged: returned(Dto.class) refuses by name, as before (#5076)
Object facade with no DTO of its own (Object request) keeps the byte[] (nothing to read through)
both handleTransaction overloads covered
handleLink not affected (LINK answers request by address)

Evidence

  • det_port.py check: 107/118 ports unchanged; the 11 moved were re-proven with det_port.py run: carddemo-acctupdate, acctview, acctview-generated, cardlist, cardupdate, cardview, cotrtlic, cotrtupc PROVED (java-facade 0 refused); cbsa-bnk1ccs / tfn / uac DIFFERS as on main (det_sweep_baseline equivalence: cases for the 16 CICS programs that have none (6 estates) #5076; same by-name refusal).
  • New tests/cobol_mainframe/test_facade_wide_commarea_4695.py: every facade shape (Object / typed / no own DTO / bytes overload / void / LINK / program that passes no bytes) and, under javac, the real wideAnswer + commareaIn (text, spaces, LOW-VALUES, non-text bytes, exactly / past the record, no layout, short).
  • Harness answered() accepts a DTO answer for a byte[] RETURN only when it equals the bytes read through the same layout in the port's page; no other case loosened.
  • pr_gates --fast 6/6, --ratchets 8/8 (ports, port-surface, fact-crosscheck, completeness, ground-truth, ...). Golden masters not re-blessed: no parsing change (not re-run).

Cross-repo

None.

Sibling gaps

  • Forge-generated (model-written) facades still answer returned(Object.class) as a byte[]; cobol_to_java_transaction_forge.py is owned by another in-flight worker and CicsTask has no page charset: different mechanism. Burned program needing it: none of the det ports; model-written CardDemo ports.
  • A facade of a program that XCTLs with no COMMAREA to a program whose RETURN is wide keeps the byte[] (passes_bytes is per program). No burned program known.

Not done

  • Did not prove the java-facade path hit a wide RETURN in each CardDemo scenario individually; the proofs report 0 refusals.

🤖 Generated with Claude Code

…NGTH is past it (Part of #4270, Closes #4695)

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.

1 similar comment
@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 21:59
@squid-protocol
squid-protocol enabled auto-merge (squash) October 16, 2026 22:00
@github-actions

Copy link
Copy Markdown
Contributor

🐦‍⬛ Muninn Security Scan

✅ No security issues found.

🐦‍⬛ Powered by Muninn · Skald Lab

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.

det facade: handleTransaction answers raw EBCDIC bytes when a RETURN's COMMAREA LENGTH is past the DTO (#4679 follow-up)

1 participant