Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Translator consumes engine record layouts (fact_ownership.md follow-up): POINTER width as a parameter, shared stand-in copybooks, retire the duplicate layout computation

Aperta
#5,649 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
30/100
Tipo di issue
Refactoring
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python
Ambito
backend, compilers

Direzione di ricerca

Start with gitgalaxy/tools/cobol_to_java/det/layout.py, the engine's GalaxyIR layout path, and core/copy_libraries.py. Then examine the offsets entries in tests/cobol_mainframe/fact_crosscheck_ledger.json and the layout guidance in docs/language_status/fact_ownership.md. Completion requires parameterizing POINTER width, sharing stand-in copybooks, switching translator layout use, and reducing the listed offset disagreements to zero while all relevant equivalence cases pass.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

claim:nyx core-engine enhancement lane:nyx priority: high scope:core

Why

docs/language_status/fact_ownership.md:82 (record layouts / offsets) left a follow-up: "revisit having the translator consume engine layouts once #4457 / #4458 are fixed and POINTER width is a parameter: the engine would then match the translator everywhere on these corpora." #4457 and #4458 closed on 2026-10-05; the follow-up was never picked up. Today both sides compute every record layout; the translator uses its own (gitgalaxy/tools/cobol_to_java/det/layout.py), the engine's go to analysis (record_data, via GalaxyIR).

Where the two sides still differ (fact cross-check ledger tests/cobol_mainframe/fact_crosscheck_ledger.json, 2026-10-19)

586 offsets disagreements, all definitional, no engine-wrong layout left:

  • 380 translator-uses-mq-stand-ins (#4892): the translator expands its shipped IBM MQ stand-in copybooks (CMQV, CMQODV, CMQMDV, CMQGMOV, ...); the engine doesn't see them.
  • 210 pointer-width: POINTER is 4 bytes on z/OS (engine, answer keys) and 8 in the GnuCOBOL storage the proofs run on (oracle_assumptions.md C9).
    Plus small definitional ones elsewhere (translator-uses-stand-in-copybook CEEIGZCT #4884, refusals by name).

Work

  1. POINTER width as a parameter of the engine's layout computation (default z/OS 4; the translator asks for its storage's width), so one computation serves both.
  2. Stand-in copybooks as a shared library: the engine resolves the same shipped stand-ins (MQ, CEEIGZCT) the translator uses, through core/copy_libraries.py, flagged as stand-ins in the facts.
  3. Translator consumes engine layouts (through GalaxyIR / the port ticket, like COPY resolution since #4468) for offsets, lengths, OCCURS strides, REDEFINES; keep the translator's own computation behind a check mode for one release so any difference fails loudly.
  4. Update fact_ownership.md: layouts owned and computed by the engine; the gate keeps checking until the translator's copy is deleted.

Acceptance

  • Fact cross-check: offsets disagreements for the two causes above go to 0 (ledger lowered in the same PR, per its two-way ratchet).
  • Re-proof: every CICS / estate / golden crucible port and equivalence case passes byte-for-byte with the translator on engine layouts.
  • Builds on the shared preprocessor (#5648) if it has landed (the expanded text both sides lay out should be the same text); can start with steps 1-2 before it.

Part of the CICS→Java path (Training Montage).

🤖 Generated with Claude Code

Lingua principale
Python
Stelle
57
Fork
11
Merge medio
1h 43m
PR unite (30g)
985

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di squid-protocol/gitgalaxy

Tutte le issue di squid-protocol/gitgalaxy

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.