Repository navigation
Generated progress page + README numbers that can't drift: burned-estate ladder, per-tool %, core burn-down with ETA, Gap Atlas #5280
Description
Owner-approved 2026-10-16 (step 2 of the scope retag). The README's CICS-to-Java numbers are hand-written and have drifted from the generated ones:
- README.md says 127 programs; the evidence index has 129.
- README.md cites "CICS crucible: 17 programs";
tests/cics_crucible/coverage.jsonhas 50. det_survey.mdstill says 48 proven.- The hero tiles and the "Coverage across CICS eras" table in
gitgalaxy/tools/cobol_to_java/README.mdare hand-written too.
Progress also needs a fixed denominator, so it stops looking like limbo while sweeps keep finding siblings. Issues now carry scope:core | sweep | frontier | infra and era:0..4 labels, and frontier work lives in milestone 30, Gap Atlas.
Build: a generated progress page
Add tests/tools/progress_report.py, which renders docs/language_status/progress.md and progress.json on the generated branch through generated_docs.PAGES. The workflow publish list must match PAGES; that workflow edit is owner-approved here. Inputs are the existing machine-readable artifacts; nothing new is hand-maintained.
- Burned-estate ladder. Fixed denominator: the 129 programs of the 6 burned estates (
BURNED_NAMES). Read the evidence_report per-estatereport.json. Show per estate and in total the counts at L0..L5, the % at L2+, the % at L4+ and the count at L5. Today that is 99/129 at L2+, 36 at L4 and 0 at L5. - Components, each with its own fixed denominator:
- Translator: programs translated whole out of 129.
- CICS: the commands the burned estates actually use. That means census
burned > 0, including the "unlisted" and "unparsed" forms fromcics_spec_status.jsonand the spec status. Report how many are modelled on both runtimes, about 60 of 68 today. Show the whole spec (100 / 2 / 155 of 257) on a separate line, labelled frontier context. - COBOL runtime rules (
cobolrt_rules.json): MATCHED / DIFFERS / ASSUMED / REFUSED, and how many are measured on z/OS (0 today). - Mutation: the kill rate from
mutation_scores.json. - Crucibles: programs and scenarios per crucible, from their coverage files.
- Eras: per era (
era_tags.py), programs and how many are at L2+ / L4+. This replaces the hand-written era table. - Core burn-down, from GitHub issues by label. The docs workflow has
GITHUB_TOKEN; offline, read a cached JSON so tests stay hermetic. Show:- open and closed
scope:coreissues, overall and for milestone 28; - core issues opened and closed in the last 7 days, and the net;
- ETA = open / (7-day net closure rate), printed as "not converging" when the net is zero or positive. Never print a date it can't support.
- open and closed
- Gap Atlas: frontier issues found this week, and the total, presented as discoveries, not debt. Plus sweep and infra counts.
Every number cites its source artifact and the generated commit. The evidence-level wording follows .claude/rules/mainframe-evidence-policy.md: report the ladder, never "proven" as a bare claim, and say the oracle is GnuCOBOL plus IBM documentation, not z/OS.
READMEs: no hand-written numbers left
- In
README.md's "CICS to Java" section andgitgalaxy/tools/cobol_to_java/README.md(the hero tiles and the era table), replace every hand-written number with numbers that cannot drift. Readtests/tools/test_evidence_report_single_source.pyfirst: main may not link generated files.- Either: a marker block (
<!-- progress:begin -->…end) rendered byprogress_report.py, which the docs bot refreshes on main, plus a test that fails when the block is stale. - Or, if the rules forbid that: one pointer to the generated page, with the README keeping only prose.
- Pick the option the repo's rules allow and say why in the PR.
- Either: a marker block (
docs/language_status/det_survey.md: mark it a dated historical snapshot, or drop its numbers.
Acceptance
progress.mdandprogress.jsonare generated with all 5 sections.- No hand-written estate, program, command, era or proof count remains in either README.
- Tests: the rendering from fixtures, the "not converging" rule in both directions, the burned-only CICS denominator, and the stale-block or pointer check.
pr_gates --fastis green and the generated-docs workflow publishes the page.
Activity
generated_branch test: the docs workflow publishes progress.md and pr…
squid-protocol commentedon Oct 16, 2026
Siblings: #5282 (other docs pages and the non-CICS README tiles, found in the review of #5281).
agent memory: promote lessons #5269, #5277, #5279, #5281 into rules, …
Revert "agent memory: promote lessons #5269, #5277, #5279, #5281 into…
agent memory: promote lessons #5269, #5277, #5279, #5281 into rules, …
Generated progress page: burned-estate ladder, components, eras, burn…
squid-protocol commentedon Oct 22, 2026
Owner request 2026-10-21: next slice. The ladder in
progress_report.py(progress.md / progress.json) and the evidence report show the programs that cannot reach L1 for a non-translator reason in their own rows, separate from translator holes: (a) source defects, i.e. source IBM's compiler rejects (CardDemo CBEXPORT / CBIMPORT, #5866; fill the evidence reportsource_defectsthat is empty today), and (b) refused whole: not COBOL (zECS ZECS002 / ZECSNC assembler, #5859). The headline shows the reachable denominator next to the fixed 129 (today 129 - 4 = 125 reachable). Do not drop programs from the 129: report them separately, with the IBM citation.squid-protocol commentedon Oct 22, 2026
Addendum: a third row, (c) held by an owner ruling or z/OS calibration: DBB epscsmrd (LE condition handlers refused by name, owner ruling 2026-10-21 on #5106) and epsmpmt (floating-point power / ANNUITY need captured z/OS bits, #5867). With ZECS001 moving to core (#5945), reachable = 129 - (a) 2 - (b) 2 - (c) 2 = 123. Each row names its issue.
squid-protocol commentedon Oct 22, 2026
Claimed by promoter-bot host
melek, lease renewed 2026-10-22T00:55Z. It lapses after 6 h without a renewal. To take it back, assign someone or remove theclaim:meleklabel.progress and evidence reports: source-defect, not-COBOL and owner-hel…
squid-protocol commentedon Oct 22, 2026
Closing: the generated progress page and README pointers landed in #5281, and the owner-requested slice (source-defect, not-COBOL and owner-held rows with a reachable denominator of 123) landed in #5948. Remaining doc-number drift is tracked in #5282.