Skip to content

readiness scanner: support matrix per burned estate -- inventory x levels x refusals x rule catalogue (Part of #4724) - #5096

Merged
squid-protocol merged 4 commits into
mainfrom
churn/4724-20261014T0929Z
Oct 14, 2026
Merged

squid-protocol merged 4 commits into
mainfrom
churn/4724-20261014T0929Z

Conversation

@squid-protocol

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

Copy link
Copy Markdown
Owner

Part of #4724 (readiness-scanner epic #4721).

What

  • tests/tools/support_matrix.py: the support matrix for each burned estate. It reads committed files only, with no corpus and no scan:

    Each feature gets one of the issue's four statuses:

    • supported and proven: a program that uses it is at L2 or above; its cases and best level are shown;
    • supported, unproven: translated, and no refusal names it;
    • refused by name: with the refusal's owner;
    • unknown / never seen: only programs refused whole use it.

    Beside the status, it lists the conditions of "supported" from definition_of_done.md section 5 that the feature does not meet yet: modelled, catalogued, proven (L2), IBM-matched (an ASSUMED or DIFFERS rule means "uncalibrated"), calibrated on z/OS. For each estate it also lists:

    • the refusals with their owners;
    • system copybooks: a configuration gap ("IBM MQ copybooks not found: point the scanner at SCSQCOBC"; LE: SCEESAMP), not a translator limit (design point 2 in the issue comment);
    • runtime APIs not modelled: MQI, "translates, not provable", never "supported" (design point 3);
    • unknown features, for triage: the inventory's unknown buckets, unparsed programs, and keys that hold a sequence number.

    Usage: python tests/tools/support_matrix.py [ESTATE ...] [--json] [--catalogue PATH] [--out FILE].

  • docs/language_status/refusal_map.json: 29 entries. Each refusal or hole text of the burned reports, and each missing copybook of the inventory, maps to one of:

    • an issue;
    • an agreed refusal family of the charter (charter keys, each checked to appear in definition_of_done.md);
    • an IBM product library;
    • an explicit "needs an issue" note.

    Force-added, like its sibling JSON files, because of the repo-wide *.json ignore.

  • tests/cobol_mainframe/test_support_matrix.py (19 tests):

    • Synthetic estate: each status; each refusal kind (an issue, a charter family, a system copybook for both MQ and LE, an estate copybook, unmapped); the MQ API section; the catalogue absent, and present with an ASSUMED rule, a compile-option join and a word boundary (NUMVAL is not NUMVAL-C); the triage lists; deterministic render.
    • Committed data, the acceptance ratchet: every refusal and hole of the six burned reports matches exactly one map entry. The map entries are well formed. Every burned estate renders. The JSON CLI works. Every rule the committed catalogue joins exists.
  • Docs: a "Support matrix" section in feature_inventory.md, and a pointer in charter section 5.

Matrix today (rule catalogue on main)

estate proven unproven refused unknown no catalogue rule refusal kinds
CardDemo 162 12 1 70 186/245 10
cics-async credit card 46 5 1 0 31/52 1
CBSA 183 29 2 0 155/214 3
GenApp 161 0 0 0 116/161 0
DBB mortgage 55 36 10 0 68/101 10
zECS 33 202 3 0 198/238 3

Class

Readiness-scanner support status per inventory feature, joined from committed tool outputs. This PR covers every member: the four statuses; the refusal kinds (issue, charter family, system copybook, unmodelled API, needs an issue); the catalogue absent, present and uncalibrated; the compile-option join.

Refusals owned by #5106 (the consolidated siblings issue): ACCEPT FROM SYSIN; CALL MVSWAIT; a COMMAREA DTO property the port cannot convert (List<String>); files with no repository in the generated project; LE condition handling (CEEHDLR / CEEHDLU, also as the unmodelled API); CALLs to sibling programs of a multi-program source; procedure pointers (SET TO ENTRY); SOAPFAULT CREATE. Acceptance is now enforced: support_matrix.owned() requires each entry to have an issue, an agreed refusal family or a system library, and an unmodelled API to have its issue. The matrix flags any other entry as an acceptance gap, and test_every_refusal_map_entry_has_an_owner / test_no_burned_estate_has_an_unowned_refusal fail on it.

Sibling gaps (not this PR):

Older CICS estates to consider (not cloned)

IBM's own CICS TS product samples, from the customer's SDFHSAMP: the FILEA sample programs (DFH$AMNU / DFH$ALLB family), the NACT account sample from the CICS Application Programming Primer, and the CICS catalog manager example (DFH0XCMN ...). All three are IBM-licensed and would be scanned customer-side (#4726), never shipped. I did not open the blind estate-4 candidate list.

Gates

  • pr_gates.py --fast (heavy-run, JDK 17 env): 6/6 pass (lint with CI's ruff 0.16.10, audits, secrets, xray, gen-docs, gauntlet).
  • pr_gates.py --ratchets: 7/7 pass, 0 skipped (cics-spec, ports, port-surface, estate, fact-crosscheck, completeness, ground-truth). No engine, translator or parser change, so no golden bless.
  • audit_check.py: all clear. Support-matrix tests: 19 pass (head a90312d, pr_gates --fast 6/6 re-run), run with plain pytest from /tmp.

Cross-repo

None.

🤖 Generated with Claude Code

squid-protocol and others added 2 commits October 14, 2026 05:39
…idence levels x refusal map x rule catalogue (Part of #4724)

tests/tools/support_matrix.py joins committed outputs only: each inventoried feature is supported and
proven / supported, unproven / refused by name / unknown, with the charter section 5 conditions it does
not meet. docs/language_status/refusal_map.json maps every refusal and hole of the burned evidence
reports to an issue, an agreed refusal family, or an IBM product library (system copybooks: a
configuration gap; MQ: translates, not provable). The rule catalogue (#4711) is optional: absent, every
feature is 'not yet catalogued'.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…de *.json ignore, as its siblings) (Part of #4724)

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 and others added 2 commits October 14, 2026 07:56
…fusal now fails acceptance (Part of #4724)

accept-sysin, site-routine, dto-property, unbound-file, le-condition-handling (and its API), multi-program-call,
procedure-pointer and soap carry issue 5106. support_matrix.owned(): an entry needs an issue, an agreed refusal
family or a system library, and an unmodelled API its issue; the matrix flags any other as an acceptance gap and
test_support_matrix.py fails on one in the map or in a burned estate.

Co-Authored-By: Claude Opus 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 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 11:59
@squid-protocol
squid-protocol enabled auto-merge (squash) October 14, 2026 11:59
@squid-protocol

Copy link
Copy Markdown
Owner Author

No description provided.

@squid-protocol
squid-protocol merged commit b912783 into main Oct 14, 2026
29 checks passed
@squid-protocol
squid-protocol deleted the churn/4724-20261014T0929Z branch October 14, 2026 12:34
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