Skip to content

The Emerging Economics of Iteratively Solving CICS → Java Transpilation: a generated cost / blocker / convergence analysis and infographic #5052

Open

Description

@squid-protocol

Claim to show. The software factory has turned CICS → Java translation into an iteratively solvable problem: each estate exposes blockers, each blocker is a bounded, priced fix, and the cost of the next estate falls. Today that rests on numbers pulled together by hand in a chat session. It should be a standard, generated analysis in the data-flow pipeline, published as an infographic with the data behind it: "The Emerging Economics of Iteratively Solving CICS → Java Transpilation."

Today's numbers (hand-pulled 2026-10-13, to be replaced by the generated report):

Proposal. A pipeline stage (scheduled, like the evidence refresh) that joins:

  1. the churn spend ledger (handoffs/churn-state.json usage.log: model, tokens, cost_usd, issue, run_id) and churn-runs/*/meta.json; agy runs with their real quota cost, not $0;
  2. the port-blocker ledger from Ledger: tag port blockers (det / forge / facade / harness) by the estate that exposed them, beside field_testing.json's defects #5051 (estate, side, class, programs blocked, new_class, refused_by_name) and field_testing.json defects (scan side);
  3. GitHub issues/PRs (opened/closed/merged, links issue → PR → run);
  4. the evidence records (programs proven whole per estate).

Outputs (bot-written to the generated branch, per #4963, never to main):

  • econ.json: the joined, versioned dataset (one row per fix: estate, class, cost, runs, model, wall time, PR, merged date).
  • A rendered infographic page (HTML + SVG) for the public site/README:
    • cost per fix: distribution + trend over time, split by model;
    • blockers per estate, cumulative, and blockers per ported program in port order (the convergence curve);
    • new-class vs repeat blockers per estate (the key convergence signal);
    • cost to bring an estate whole ($ and days per estate, per program);
    • discovery vs closure (backlog), with estate-found vs sibling-filed separated;
    • throughput per worker (1 vs 2 workers);
    • a projection for the next estate (blockers, $, days) with its error band.
  • CI/report staleness check like field_testing.py report.

Honesty rules (must be on the page, not in a footnote nobody reads):

Done when.

  • The stage runs on schedule from the ledgers above and publishes econ.json + the infographic on the generated branch.
  • The page shows all charts listed, with the counting rules stated on it.
  • The next fresh estate's actual blockers/cost can be compared against the page's projection.

Depends on #5051 (estate-tagged port-blocker ledger). Related: #4963 (bot output to the generated branch), #3803 (fresh-estate trials), docs/language_status/cics_field_testing.md.

Activity

  1. added
    scope:frontierMapped, not yet built: eras/commands/regions the burned estates don't use (Gap Atlas)
    on Oct 16, 2026
  2. added
    documentationUpdates to standard operating procedures, guides, or wiki
    legacy-modernizationCOBOL refractor, dead-code extraction, and JCL forging
    metricsHeuristics, risk exposures, and topological math updates
    priority: lowUI tweaks, documentation, and minor optimizations
    on Oct 28, 2026
  3. squid-protocol commented on Nov 2, 2026

    @squid-protocol
    OwnerAuthor

    Census breadth survey (counts and verb names only; no census code opened)

    cics_census.py survey with the census corpora (9 census clones + 8 pinned corpora), then blockers, at main d86d5eabb. Programs with an EXEC CICS command: 127 (21 non-burned). Translated whole: 110 / 127 (non-burned 5 / 21); refused whole: 9.

    Finding: few CICS verbs are unmodelled on these estates. The non-burned programs not whole are held mostly by non-verb gaps. Programs touched, non-burned, ranked by programs:

    # Gap family Non-burned programs Burned
    - Refusal: source text past column 72 cuts a literal open (not a verb) 7 0
    1 STRING (numeric sender with P / decimal place; literal beyond single-byte code page) 3 0
    2 JSON GENERATE / JSON PARSE 2 0
    3 EXEC CICS WEB (CONVERSE URIMAP POST, RECEIVE NOTRUNCATE, WRITE HTTPHEADER SESSTOKEN) 2 0
    4 MOVE of a literal beyond the single-byte code page 2 0
    5 EXEC SQL ROLLBACK inside a CICS program 1 0

    Burned-only unmodelled: EXEC CICS SOAPFAULT CREATE (1), LE CEEHDLR / CEEHDLU (1), SET ... TO ENTRY (1); not ranked (burned).
    Other non-verb gaps (item/copybook/layout): no such item 3, undeclared item 2, its bytes hold 2, missing copybook 1, LayoutDisagrees 1.

    Only 5 gap classes are CICS commands at all (SOAPFAULT CREATE, three WEB rows, and the map-field rows); WEB is the only unmodelled CICS verb family reaching non-burned estates. Ranks 1, 2, 4, 5 are COBOL / SQL statement families that block CICS programs.

    Issues filed for ranks 1-5 (#7523 STRING, #7524 JSON, #7525 WEB, #7526 MOVE, #7527 SQL ROLLBACK). Caveat: program counts overlap (one program can hold several gap classes); "only gap" counts, where fixing one makes the program whole: STRING/JSON/WEB/MOVE/ROLLBACK are 0 each, so none alone turns a non-burned program whole.

  4. squid-protocol commented on Nov 2, 2026

    @squid-protocol
    OwnerAuthor

    Churn run 5052-20261102T1057Z (host nyx) ended without a PR. survey posted on #5052; filed #7523-#7527 (ranked families)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationUpdates to standard operating procedures, guides, or wikilegacy-modernizationCOBOL refractor, dead-code extraction, and JCL forgingmetricsHeuristics, risk exposures, and topological math updatespriority: lowUI tweaks, documentation, and minor optimizationsscope:frontierMapped, not yet built: eras/commands/regions the burned estates don't use (Gap Atlas)

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions