Skip to content

det: a LINK gives the caller's COMMAREA bytes back as the callee left them (Fixes #4806) - #4818

Merged
squid-protocol merged 5 commits into
mainfrom
fix/4806-link-commarea
Oct 10, 2026
Merged

squid-protocol merged 5 commits into
mainfrom
fix/4806-link-commarea

Conversation

@squid-protocol

@squid-protocol squid-protocol commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

Fixes #4806.

Bug: after an EXEC CICS LINK, the det port wrote the callee's DTO back over the caller's COMMAREA. A field the callee never wrote came back changed: a PIC 9 holding spaces came back as 0000000016 (CBSA BNK1UAC → INQACC). On CICS a LINK hands the callee the caller's own storage, so bytes it doesn't write keep their value, invalid numeric content included.

Fix:

Evidence:

Not in this PR (filed): #4816 (an XCTL target under a LINK never writes back to the LINK caller: needs IBM's copy-vs-same-storage answer first) and #4817 (RETURN TRANSID COMMAREA crosses to the next task as a DTO only, in the deployed facade/region).

🤖 Generated with Claude Code

https://claude.ai/code/session_01TBJdDBRtJis5hzE244NQKV

… them (#4806)

A LINK passed the caller's area to the callee as the callee's DTO and wrote that DTO
back over the caller's bytes: a PIC 9 field holding spaces the callee never wrote came
back as digits (CBSA BNK1UAC -> INQACC). CicsTask.linkAreaBack() now says when the
LINKed program took the bytes (task.linkArea(), a det port); the caller then keeps them
and writes no DTO over them. XCTL lost the same bytes the other way: it passes them
beside the DTO (CicsTask.xctl(..., area)) and a det target takes them as linkArea.
cobc regressions for both (EQUIVALENCE_E2E) and a javac test of linkAreaBack.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@squid-protocol squid-protocol added bug Unintended behavior or logic failure in the engine legacy-modernization COBOL refractor, dead-code extraction, and JCL forging priority: high Core feature broken, but workarounds exist labels Oct 9, 2026
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

🐦‍⬛ Muninn Security Scan

✅ No security issues found.

🐦‍⬛ Powered by Muninn · Skald Lab

squid-protocol and others added 3 commits October 9, 2026 15:36
…Ref (mypy) (#4806)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… + genapp-lgtestc1)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
squid-protocol added a commit that referenced this pull request Oct 9, 2026
…epherd (merge / rerun / one note per head) (Part of #4790) (#4819)

* ci_digest: per failed check, its triage, error lines and local repro; pr_check --digest (Part of #4790)

Step 1 of the CI shepherd. Nobody -- person or model -- should read a raw CI log or wait on CI to learn whether a fix
works. `ci_digest.py N` (and `pr_check.py N --digest`) gives, per failed check on the PR head:
- triage: dirty (action_required on a conflicting PR: merge main, regenerate generated files), infra (cancelled,
  startup failure, lost runner, disk, rate limit: rerun once), flake (only #4477's wall-clock tests failed: rerun
  once), real (a fixer's job);
- the job log's error lines and last 40 lines, ANSI codes and timestamps stripped;
- the local repro: pr_gates' own gate / ratchet names where one exists, the failing pytest node ids, the det cases
  not proven; checks with no local equivalent say so.
Tried live on #4818: its one "failure" was action_required on a dirty PR, now triaged dirty, not real.

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

* ci_shepherd: one queue, one process -- merge when green, rerun infra/flakes once, one note per head (Part of #4790)

Step 2 of #4790, replacing handoffs/tools/merge_watch.sh + merge_train.sh. Per queued PR each pass:
merged/closed leaves; --after waits for its base; green + mergeable is merged (pr_check.merge, pinned to the head,
crucible pin synced); pending waits; infra/flake failures are rerun ONCE per (head SHA, check); a dirty PR gets one
note; a real failure gets one comment with ci_digest's digest (error lines, log tail, local repro), and
$CI_SHEPHERD_FIXER, if set, is started with the PR and the digest file. A new push resets the once-per-head memory.
One shepherd at a time via flock on a run lock (never a pgrep that matches itself); add/drop edit the queue between
passes under a state lock. Census history stays out (it writes a committed file: the evidence bot's job).
ci_digest entries now carry run_id / job_id. Tests: fake gh, 7 cases.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@squid-protocol

Copy link
Copy Markdown
Owner Author

CI shepherd: this PR conflicts with main, so no checks ran. Merge origin/main into it and regenerate generated files with their tools (never hand-merge them; see .claude/agents/gitgalaxy-pr-worker.md), then push.

…try moved -- a LINK's bytes change the Java side only)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TBJdDBRtJis5hzE244NQKV
@squid-protocol

Copy link
Copy Markdown
Owner Author

Pre-merge Db2 check (CI skips Db2): on the merged tree (fd0e0df) det_port check vs main names 65 changed ports; the 32 Db2 ones among them were re-proven locally with proof_sweep --det-only (Db2 container): 32/32 proven. The other 33 are covered by this PR's CI det sweep.

🤖 Generated with Claude Code

@squid-protocol
squid-protocol marked this pull request as ready for review October 10, 2026 02:40
@squid-protocol
squid-protocol merged commit db9bf4e into main Oct 10, 2026
51 checks passed
@squid-protocol
squid-protocol deleted the fix/4806-link-commarea branch October 10, 2026 02:40
squid-protocol added a commit that referenced this pull request Oct 10, 2026
…ilures stop blocking after 3 reruns; keep watching an empty queue (#4790) (#4830)

* ci shepherd: a failure main has too is main's, not the PR's; non-required infra failures stop blocking after 3 reruns (#4790)

- ci_digest: one more call fetches the checks failing on main's newest commit; a real failure of the same check on a
  PR is triaged `main` (repro: fix main). The shepherd logs it and posts no PR note -- on 2026-10-09 every open PR
  got a misleading "real failure" note while main itself was red.
- ci_shepherd: when every remaining failure is infra, none of those checks is required by main's rules (read from
  rules/branches/main; unreadable rules = everything required) and each has used its 3 reruns, the PR merges with one
  note saying so. muninn failed every PR for an hour on 2026-10-09 because Docker Hub throttled the image GitHub
  builds before any step runs. A real finding in a non-required check (muninn, CodeQL) still blocks; a required
  check always does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TBJdDBRtJis5hzE244NQKV

* ci shepherd: keep watching an empty queue (a PR queued later still merges); --exit-when-empty for the old stop

2026-10-09: it merged its last PR, found the queue empty and exited; #4818, queued minutes later, sat green.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TBJdDBRtJis5hzE244NQKV

* ci: advisory summaries run in full-suite part 3, entry-point checks stay in part 1 (balance; #4829 ran 10.1 / 6.9 / 7.6 min)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TBJdDBRtJis5hzE244NQKV

* ci_digest: suite part names get the pytest repro; test_prism_suppression_regex_bomb is a #4477 timing flake

#4830's part 2 failed on it: 1.006 s against a 1.0 s bound on a loaded runner; the digest called it real and fell back
to pr_gates --fast because 'full-suite part 2/3' did not match the repro table.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TBJdDBRtJis5hzE244NQKV

---------

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

Labels

bug Unintended behavior or logic failure in the engine legacy-modernization COBOL refractor, dead-code extraction, and JCL forging priority: high Core feature broken, but workarounds exist

Projects

None yet

1 participant