Repository navigation
det: a LINK gives the caller's COMMAREA bytes back as the callee left them (Fixes #4806) - #4818
Merged
Merged
Conversation
… 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>
Contributor
…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>
Owner
Author
|
CI shepherd: this PR conflicts with main, so no checks ran. Merge |
…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
Owner
Author
|
Pre-merge Db2 check (CI skips Db2): on the merged tree (fd0e0df) 🤖 Generated with Claude Code |
squid-protocol
marked this pull request as ready for review
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>
This was referenced Oct 14, 2026
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.
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: aPIC 9holding spaces came back as0000000016(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:
CicsTask.linkrecordslinkAreaBack(): true when the LINKed program took the bytes (task.linkArea(), a det port). The generated LINK (det/cics.py) then keeps the bytes the callee left instead of applyingin_<Dto>. A model port (which took only the object) still gets its DTO written back.CicsTask.xctl(prog, dto, len, byte[] area)), and the target gets them aslinkArea. Bytes-path XCTLs (commareaOut, det: ca-xctl-versions length-range: XCTL COMMAREA bytes past the DTO are refused (#4009); the COMP-5 VALUE half is fixed #4501/Equivalence: COMMAREA OCCURS fields are compared at the first occurrence only; det LINK of an OCCURS DTO passes the first occurrence's extent #4765) are unchanged.Evidence:
tests/cobol_mainframe/test_link_commarea_bytes_4806.py: a javac test oflinkAreaBack, plusEQUIVALENCE_E2Ecobc tests for LINK and XCTL-under-LINK. Both fail on main's translator (CA-NUM '' vs '000016','DONE 07' vs 'DONE00001607') and pass with the fix. Re-run after merging main (incl. equivalence: CALL USING items and COMMAREA trailing FILLER compared whole; BMS OCCURS refused (Fixes #4778) #4780's CALL compare): 3 passed; det translate / call compare / CICS harness 418 passed.det_port checkvs main: 52 changed ports (CardDemo XCTLs, GenApp/CBSA/mortgage LINKs), swept with Db2 local: 51/52 proven, carddemo-cardupdate unproven as baselined (Porting loop at scale: baseline-reuse proofs, run-many, adopt; COCRDUPC recorded as not proven #4085). Baseline unchanged. Changed Db2 ports are being re-proven on the merged tree before merge (CI skips Db2).det_coverage_ledger updatewrote 0 files.pr_gates --fast5/5,--ratchets7/7.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