Ledger: tag port blockers (det / forge / facade / harness) by the estate that exposed them, beside field_testing.json's defects

Open
#5,051 6 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
15/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
json, python
Domain
tooling

Research direction

Start with tests/cobol_mainframe/field_testing.json and the field_testing.py script that reports on it, then decide whether port_blockers is a sibling list or an extension of defects. Backfilling the port-side issues needs maintainer judgement about which estate exposed each one, so this is not a first task. Done when the report in docs/language_status/ gives per-estate counts without keyword matching and CI checks it for staleness.

Written by the indexing model from the issue text.

Description

enhancement legacy-modernization metrics priority: medium scope:infra

Gap. tests/cobol_mainframe/field_testing.json logs every engine/forge fact defect against the estate that exposed it (51 entries, 8 estates), so scan-side discovery per round is measurable. Port-side blockers (det port, transaction forge, facade, equivalence harness) have no such ledger. The only way to count them today is keyword-matching issue bodies, which gives a rough answer (±25%):

  • ~289 port-side issues since 2026-09-20, 66 open; ~127 name no estate (crucible, class sweeps, general hardening).
  • ~78 single-estate blockers: CardDemo 40, CBSA 17, GenApp 11, zECS 5, DBB mortgage 3, async credit card 2. That is ~1.3 → ~0.6 → ~0.4 → ~0.25 per program in the order estates were ported, except zECS, which used unseen API areas (WEB, DCOUNTER, pointers).

Without a real ledger we cannot say how many blockers the next estate (e.g. a 1980s command-level estate) will bring, or when the port side reaches a stopping rule like the field-testing one.

Proposal. Extend the field-testing record (or add a sibling port_blockers list beside defects) so every port-side blocker gets an entry in the same PR that finds or fixes it:

  • estate (the estate that exposed it, or none plus found_by: "review" / "crucible" / "sibling sweep", as for review-found defects), after_round
  • side: det | transaction-forge | facade | harness | runtime
  • class: CICS command family / COBOL dialect / COMMAREA bytes / data layout / control flow / Db2 / VSAM …
  • programs blocked, issue, fixed_by, refused_by_name (true when the fix is a named refusal, not a model)
  • new_class (true when no earlier estate hit this class), which separates genuinely new areas from repeats

Backfill. Tag the existing port-side issues: a estate:<id> label on each issue, plus the ledger rows. Start from the single-estate set above and hand-check the ~127 no-estate issues for the estate that actually exposed them.

Report. field_testing.py report (or a sibling) writes per-estate cumulative counts, blockers per ported program, new-class vs repeat, and the discovery curve by round into docs/language_status/; CI fails when the report is stale, as it does today.

Done when.

  • Every port-side issue since 2026-09-20 has an estate (or a named non-estate source) in the ledger.
  • New port-side blockers are logged in the PR that finds or fixes them; the protocol line is added to the mainframe-ground-truth skill / CLAUDE.md next to the defect rule.
  • The report answers "unique blockers per estate, cumulative, and per program" without keyword guessing, and gives an expected-blockers estimate for the next estate.

Related: #3803 (fresh-estate trials).

Dominant language
Python
Stars
57
Forks
11
Avg merge
1h 35m
Merged PRs (30d)
975

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from squid-protocol/gitgalaxy

All issues in squid-protocol/gitgalaxy

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.