Skip to content

options: compiler option table -- result-changing options refused by name or declared (Part of #4706) - #5088

Merged
squid-protocol merged 2 commits into
mainfrom
churn/4706-option-table
Oct 14, 2026
Merged

squid-protocol merged 2 commits into
mainfrom
churn/4706-option-table

Conversation

@squid-protocol

Copy link
Copy Markdown
Owner

Part of #4706 (follow-up to #4704; policy #4702: IBM is the reference, GnuCOBOL the instrument).

What

Estate PARM / installation-default / CBL-card values for result-changing options outside SEMANTIC_OPTIONS were recorded and then ignored. They now go through the one resolver and are refused by name or declared.

  • compiler_options.OPTION_TABLE: one row per option (default, honoured values, refuse/declare policy, reason); unhonoured().
  • EffectiveOptions.unhonoured() in estate_options.py; SEMANTIC_OPTIONS and the evidence option fingerprint are unchanged.
  • equivalence_common.compile_options raises UnsupportedOption for refuse rows; option_differences declares the declare rows next to TRUNC(OPT); data_ccsid().
  • register/C5.md: the option table (ZONEDATA, INVDATA, CODEPAGE, NSYMBOL, DISPSIGN, AFP/FLOAT, SSRANGE, NUMCHECK/INITCHECK, OPTIMIZE, plus ARITH / INTDATE / NUMPROC rows), IBM Programming Guide "Compiler options" cited.
  • tests/cobol_mainframe/test_option_table.py (52 tests): PARM and card, NO- forms, cancellation, CODEPAGE, estate files, table/doc drift.
class member result
ZONEDATA(NOPFD/MIG), INVDATA, NSYMBOL(DBCS), DISPSIGN(SEP), FLOAT(NATIVE) refused by name
SSRANGE, NUMCHECK, CODEPAGE not matching the data declared difference
OPTIMIZE, AFP, INITCHECK, defaults recorded, no effect
ARITH(EXTEND), INTDATE(LILIAN) unchanged: still refused via COBC_OPTIONS

Owner decisions needed

I took these provisionally; please confirm or overrule:

  1. SSRANGE / NUMCHECK / CODEPAGE: declared, not refused. Proven as NOSSRANGE / NONUMCHECK / the case's data code page, listed as declared differences. Alternative: refuse.
  2. INVDATA refused wholesale. Sub-option semantics (INVD(FNC|NOFNC,CS|NOCS)) are not read.
  3. CODEPAGE 1140 and 37 honoured (IBM default; every proof already assumes it). Any other CCSID not matching the case's data_encoding is a declared difference: GenApp's CODEPAGE(285) is the one estate value affected.
  4. FLOAT default HEX. The IBM 6.4 options page states no default; HEX is what register C6 models.
    Also unverified: the release in which NUMCHECK / INITCHECK / DISPSIGN / INVDATA appeared.

Gates

pr_gates --fast 6/6; --ratchets 7 pass, 0 fail, 0 skipped. tests/tools/test_evidence_report.py::test_the_committed_reports_are_current fails identically on clean origin/main (rendered report awaits the refresh bot; not committed here). Evidence records show harness/oracle/generator staleness only (scheduled re-proof).

Sibling gaps

ARITH(EXTEND), INTDATE(LILIAN) engine support; SSRANGE/NUMCHECK checks in the det port.

🤖 Generated with Claude Code

squid-protocol and others added 2 commits October 13, 2026 23:57
…options refused by name or declared (Part of #4706)

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

Copy link
Copy Markdown
Contributor

🐦‍⬛ Muninn Security Scan

✅ No security issues found.

🐦‍⬛ Powered by Muninn · Skald Lab

@squid-protocol

Copy link
Copy Markdown
Owner Author

Owner decisions (2026-10-14), all four provisional calls confirmed:

  1. SSRANGE / NUMCHECK / CODEPAGE not matching the data: declared differences (proven as NOSSRANGE / NONUMCHECK / the case's data code page), not refused.
  2. INVDATA refused wholesale; sub-options not read.
  3. CODEPAGE 1140 and 37 honoured; any other CCSID not matching the case's data is a declared difference (GenApp CODEPAGE(285)).
  4. FLOAT defaults to HEX (register C6).
    Still open, for the sibling issue: the release each of NUMCHECK / INITCHECK / DISPSIGN / INVDATA appeared in; ARITH(EXTEND) / INTDATE(LILIAN) engine support; SSRANGE / NUMCHECK checks in the det port. Labelled for merge at ef56649fb338.

🤖 Generated with Claude Code

@squid-protocol squid-protocol added the shepherd:merge Maintainer: merge when green (auto-merge, squash). Guide: docs/ci.md label Oct 14, 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 14, 2026 09:34
@squid-protocol
squid-protocol enabled auto-merge (squash) October 14, 2026 09:34
@squid-protocol squid-protocol added shepherd:retrying Bot: an infra/flake rerun is pending on this head. Guide: docs/ci.md and removed shepherd:retrying Bot: an infra/flake rerun is pending on this head. Guide: docs/ci.md labels Oct 14, 2026
@squid-protocol
squid-protocol merged commit f319126 into main Oct 14, 2026
71 of 72 checks passed
@squid-protocol
squid-protocol deleted the churn/4706-option-table branch October 14, 2026 09:55
squid-protocol added a commit that referenced this pull request Oct 17, 2026
…red or no effect (Part of #4704) (#5307)

#4707: the estate options file records LE, Db2 and CICS options and the fingerprint hashes them, but nothing
judged them. RUNTIME_OPTION_TABLE gives each recorded option a policy (refuse / declare / no effect) with a
reason; the oracle refuses or declares exactly as for the compile options, the evidence report lists each value
with the table's verdict, and register C18 renders the table. Policies are provisional (as #5088), so #4707
stays open for an owner ruling.

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