Skip to content

det: ZECS001 pointer-hole guard runs with the CICS lane on, refusals pinned by reason (Part of #4771) - #5497

Merged
squid-protocol merged 1 commit into
mainfrom
churn/4771-20261018T1617Z
Oct 18, 2026
Merged

squid-protocol merged 1 commit into
mainfrom
churn/4771-20261018T1617Z

Conversation

@squid-protocol

Copy link
Copy Markdown
Owner

Part of #4771. Checklist: done [c:2998b586]

What

test_every_pointer_hole_left_in_zecs001_is_refused_by_name (#5395) passed, but it translated ZECS001 with a stub that has no runTask(CicsTask). That turns the CICS lane off, so every pointer statement became the generic SET ADDRESS OF (pointers) hole, and the test listed that text as "named". Its filter also missed holes whose text says lowercase "pointer".

Now the test uses the forge's stub, fails on the generic hole, and pins each refusal by reason (2026-10-18: 561 statements, 543 translated, 18 holes):

  • ADDRESS OF a subordinate item (ZF-DATA): lines 1098, 1195.
  • SET ADDRESS OF an overlaid pointer: 1110, 1134, 1198, 1487, 1850. The same refusal also reaches the EXEC CICS GETMAIN / WEB RECEIVE / FREEMAIN statements that name CACHE-ADDRESS / SAVE-ADDRESS (a superset check).
  • Numeric view of a pointer (REDEFINES): 1111, 1115, 1147, 1400, 1519.
  • CALL ZUIDSTCK: 1244.

X47.md notes the stub and the counts. No engine code changed, so no golden, snapshot or ledger moves.

Class table (corpus guard that accepts a generic hole as named)

Member Status
ZECS001 guard fixed here
DBB epscsmrd: GETMAIN without INITIMG x2, SET ptr TO ADDRESS OF ERROR-RESPONSE named refusals already (X47); not made whole, see X47
CardDemo CBSTM03A not probed here (COPY COSTM01 missing from the copy path)
GenApp lgacdb01 no pointer holes; the other GenApp programs were not probed

Gates

pr_gates --fast 6/6, --ratchets 8/8, tree-wide guards + proof_blockers + time ratchet (0 over), ruff format with 0.16.10. Local ruff in the shared venv is 0.16.0 (pr_gates used the cached 0.16.10).

Lessons for agents

A test that translates a CICS program must give the stub a runTask(CicsTask), or self.cics is None and every CICS-lane refusal collapses into a generic hole text.

🤖 Generated with Claude Code

…ns each refusal by reason (Part of #4771)

The corpus test translated ZECS001 with a stub that has no runTask(CicsTask), so every pointer
statement was the generic "SET ADDRESS OF (pointers)" hole, which the test listed as named. It now
uses the forge's stub, fails on the generic hole, and pins the lines per refusal reason.

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 18, 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 18, 2026 16:30
@squid-protocol
squid-protocol enabled auto-merge (squash) October 18, 2026 16:30
@squid-protocol
squid-protocol merged commit a509b55 into main Oct 18, 2026
47 checks passed
@squid-protocol
squid-protocol deleted the churn/4771-20261018T1617Z branch October 18, 2026 16:48
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