Skip to content

Census mock trial: take the 40 census programs from 8 whole to 40 of 40 accounted, measured by the tool only #7709

Open

Description

@squid-protocol

Owner request 2026-11-04: treat the 40 census programs (9 public repos excluded from the blind study, never burned, counted by tools only under opaque labels) as a mock trial of the engine. Write-up: https://claude.ai/artifact/9CJkXtuprzxzRne4bty3dy

Baseline (last real survey 2026-10-24, 6758295 / #6361)

8 of 40 translate whole (20%). Of the 32 blocked: 13 only by source / clone problems (missing estate copybooks 9, undeclared items #7647, ISPF screens #7645), 17 only by translator gaps, 2 by both. On the 25 programs with no source or clone problem: 8 of 25 (32%).

Predictions (frozen before the first fix)

  • Translator work alone takes the census to 25 whole (62%); the other 15 end as named source / clone problems: 40 of 40 accounted.
  • The tool's coverage-if-closed (upper bounds; they count the missing-copybook gap as closable): top 1 -> 17, top 3 -> 20, top 5 -> 29, top 10 -> 32.
  • Cost: 9 translator gap classes x ~4-5 PRs per class (calibrated on Siblings of #5042: cics-crucible programs that do not translate whole (17 programs, 8 hole classes) #6876: 17 programs, 8 classes, 35 PRs, 6 days) = 35-45 PRs, 6-9 days at two workers.

Protocol

  1. First (owner 2026-11-04): Translator consumes engine record layouts (fact_ownership.md follow-up): POINTER width as a parameter, shared stand-in copybooks, retire the duplicate layout computation #5649 -- the translator consumes the engine's record layouts (routed to nyx). The T0 re-survey waits until Translator consumes engine record layouts (fact_ownership.md follow-up): POINTER width as a parameter, shared stand-in copybooks, retire the duplicate layout computation #5649 has merged; T0 then measures main with Translator consumes engine record layouts (fact_ownership.md follow-up): POINTER width as a parameter, shared stand-in copybooks, retire the duplicate layout computation #5649 in, and the ledger notes it.
  2. T0: re-survey the census at current main with no census-targeted change (cics_census.py survey over the census repos, then gap_prevalence.py --census-survey ... --census-corpora ... --write); post the rate here. The 10-24 -> T0 delta is what the burned-estate work did for unseen code.
  3. Nobody reads census source. A fix gets the gap label, the IBM manual page and the owning issue, and proves itself on our own test (a cics-crucible program or a fixture), never a census excerpt. Tightened by the owner 2026-11-06: no edited, patched or excerpted copy of census source either, even unprinted (no "move this line and re-parse" probes). Allowed: the tools run over the clone as is, with aggregate or scrubbed output. A finding that needs more than that is reported as "needs a fixture" and proven on one.
  4. Measure with the tool only (aggregates, opaque labels), after each fix merges; append one ledger row below.
  5. A gap that is the source's fault becomes a named source defect with its reason.
  6. L1 only (translates whole); no claim about L2+.
  7. Finish: 40 of 40 accounted (basis 39 since the owner ruling 2026-11-06: one of the 40 is a data-only copy member, census: ExprError is a named source defect, UnitRefused a copy member; both rows owned (Part of #7847, #7709) #7885 / census: inventory counts a data-only copy member as a program (basis 40 -> 39, #7709) #7901; report "of 39" from T9 on, with the change named) (whole or named), time box 14 days from T0; publish the ledger as it stands at the time box.

Gap classes (owners)

Owner rulings 2026-11-06: (1) code-page literals stay a named source defect as stored; #7526 closed as accounted. (2) The 2 IBM z/OS Connect programs (BAQ product copybooks) stay unaccounted: a product dependency is not a source or clone defect; frontier #7900. (3) Basis 39 (#7901). (4) Rule 2 tightened (above).

Ledger (one row per re-survey)

date main whole / 40 gap closed (PRs) predicted vs actual new gaps exposed cost (PRs, worker-h, $) named, not fixed
2026-10-24 6758295 8 baseline - - - -

Related: #6064 (no current non-burned translation rate), #5865 (coverage-if-closed never validated against a run), #3803 (the real blind trial this rehearses).

Activity

  1. added
    scope:coreBlocks a burned-estate program's next evidence rung, or the 4th-estate one-shot trial
    and removed on Nov 4, 2026
  2. squid-protocol commented on Nov 4, 2026

    @squid-protocol
    OwnerAuthor

    T0 re-survey (owner 2026-11-04: run T0 now, ahead of #5649)

    8 of 40 census programs translate whole (20.0%) at main 098ddd5d1, unchanged from the 2026-10-24 baseline (8 / 40 at 6758295f2). So the 10-24 -> T0 delta, what the burned-estate work did for unseen code at L1, is 0 programs.

    Ledger row:

    date main whole / 40 gap closed (PRs) predicted vs actual new gaps exposed cost (PRs, worker-h, $) named, not fixed
    2026-11-04 098ddd5 8 T0 (no census fix counted; see below) - - - LayoutError 9 now named a source defect (#7714)

    Census-targeted changes that merged before T0. Option 1 bent the T0-after-#5649 order to stop more of these leaking into the baseline:

    Coverage if closed at T0 (upper bounds, unchanged from the frozen predictions): top 1 -> 17, top 3 -> 20, top 5 -> 29, top 10 -> 32.

    Method (tools only, no census source read):

    1. cics_census.py survey --baseline --no-fetch --sha 098ddd5d1 --root <shared-scratch> (194 s).
    2. gap_prevalence.py --survey L --census-survey L --census-corpora <shared-scratch>/census --top 1 3 5 10, where L is a temporary directory linking only before-b and before-nb (the 9 provisioned census corpora). The cache's before-nb-local (2 local non-burned corpora, 12 programs) was left out, as the 10-24 survey did.
    3. Not run with --write: the committed census page was regenerated by gap_prevalence: census LayoutError programs are source defects; regenerate census page (Part of #5865, #7644, #7709) #7714 today. Run --write with the first fix row.

    The burned half of the same run: 126 of 129 burned programs translate whole.

    🤖 Posted by Claude Code

  3. squid-protocol commented on Nov 4, 2026

    @squid-protocol
    OwnerAuthor

    #7723 merged: a partial slice of [c:bced86e8] "No such item, 3 programs (no owner yet)"; left: the 3 programs leave the no such item class, but none becomes whole: they still carry 36, 11 and 2 other holes, each in its own gap class (promoter-bot)

  4. squid-protocol commented on Nov 4, 2026

    @squid-protocol
    OwnerAuthor

    T1 re-survey: first fix row

    8 of 40 census programs translate whole (20.0%) at main 7f73c5700, unchanged from T0 (098ddd5d1).

    date main whole / 40 gap closed (PRs) predicted vs actual new gaps exposed cost (PRs, worker-h, $) named, not fixed
    2026-11-04 7f73c57 8 no such item, 3 programs (#7723); #7713 (part of #5649) gap gone as expected; +0 whole (each of the 3 programs has another gap) none 2 PRs -

    Method: identical to T0 (cics_census.py survey --baseline at 7f73c5700, 177 s; gap_prevalence.py over before-b and before-nb only, the 9 census corpora). Tools only, no census source read.

    🤖 Posted by Claude Code

  5. squid-protocol commented on Nov 4, 2026

    @squid-protocol
    OwnerAuthor

    Unmasked survey at T1 (7f73c5700): what the whole-program refusals hide

    Whole-program refusals stop the translator, so their programs' other gaps were invisible to T0 and T1, and coverage-if-closed counts them as upper bounds. cics_census.py blockers --baseline --unmask switches one refusal check off in survey mode only. This is a what-if, not a translation. The run is the census survey only (whatif-nb). Aggregates only.

    LayoutError: source text past column (check cut-literal): the switch reaches 7 of the class's 9 programs.

    • Would translate whole with it lifted: 0 of 7. Holes per program: 24-48.
    • Gaps hidden behind it, by programs: undeclared item 7, EXEC SQL ROLLBACK in a CICS program 5, MOVE literal beyond the single-byte code page 4. Then 1 program each: EXEC CICS map field missing (6 distinct fields), no generated screen for a map, bare EXEC CICS DUMP, GO TO form, STRING literal beyond the code page, grammar does not parse.

    missing copybook (check missing-copybook): the switch reaches 1 of the 9 estate-owned programs; it takes only a single named member.

    • Would translate whole with it lifted: 0 of 1. It hides a LayoutDisagrees refusal.
    • The other 8 stay masked.

    What it changes for the trial:

    Tool gap (sibling, for the class sweep): blockers --unmask prints census repository and program names in its per-program rows. gap_prevalence's census half scrubs these (scrub_key, opaque census-* labels), but unmask mode does not, so a run breaks protocol rule 2 by default. It should scrub census rows the same way. I did not record or repeat the names.

    🤖 Posted by Claude Code

  6. squid-protocol commented on Nov 4, 2026

    @squid-protocol
    OwnerAuthor

    #7728 merged: a partial slice of [c:4112a597] "EXEC SQL ROLLBACK in CICS, 1 program (#7527)"; left: proof case and census re-survey remain (promoter-bot)

  7. squid-protocol commented on Nov 4, 2026

    @squid-protocol
    OwnerAuthor

    Only-gap breakdown at T1 (7f73c5700): census only, all 40 programs

    cics_census.py blockers DIR --label before --all-programs over the census survey (before-nb) alone. Names are scrubbed.

    Distinct gap classes per program: 0: 8 (whole), 1: 26, 2: 1, 3: 3, 4: 1, 7: 1.

    The 26 single-gap programs:

    only gap programs kind
    LayoutError, source text past column (cuts a literal / truncates) 9 source defect (named, #7714); unmask: 7 of them hide 24-48 holes
    missing copybook (estate-owned) 9 clone problem; unmask reaches 1
    ISPF editor screen, not a COBOL program 2 source (named, #4735)
    UnitRefused: a member to be copied, not a program 1 inventory / source
    undeclared item 1 source defect (#7647)
    bytes overlap another item (COMP-1/2/5) 2 translator (#7646)
    LayoutDisagrees 1 translator (#6926)
    ExprError: the PROCEDURE DIVISION does not parse 1 translator or source, unknown

    The 6 multi-gap programs (2-7 classes each) hold the long tail: JSON GENERATE / PARSE, the three EXEC CICS WEB forms, EXEC CICS map fields, EXEC SQL ROLLBACK, MOVE / STRING literals beyond the single-byte code page, a STRING numeric sender, SQLCA undeclared, PERFORM undeclared paragraph. One away: MOVE code-page literal 1, STRING numeric sender 1.

    What it means for the PR estimate:

    🤖 Posted by Claude Code

  8. squid-protocol commented on Nov 4, 2026

    @squid-protocol
    OwnerAuthor

    #7735 merged: a partial slice of [c:b383e52f] "STRING numeric / decimal sender, code-page gaps, 3 programs (#7523)"; left: the code-page row (register D4) is refused by design and has nothing to implement; numeric-sender and numeric-literal STRING operands are now refused by name. (promoter-bot)

  9. 87 remaining items

  10. squid-protocol commented on Nov 6, 2026

    @squid-protocol
    OwnerAuthor

    #7920 merged: a partial slice of [c:9bd1fd57] "JSON GENERATE / PARSE, 2 programs (#7524, reopened 2026-11-05 by the owner; work it there)"; left: JSON GENERATE exception JSON-CODE value (census GENERATE row), PARSE tables, JSON-CODE/JSON-STATUS after PARSE exception, CONVERTING, NAME OMITTED, OCCURS DEPENDING ON, SUPPRESS WHEN (#7905) (promoter-bot)

  11. squid-protocol commented on Nov 6, 2026

    @squid-protocol
    OwnerAuthor

    T9 re-survey (7dc1d0138), basis 39

    Basis change: 40 -> 39 (owner ruling 2026-11-06, decision 3a). The 40th member is a data-only copy member (#7885); the inventory now lists it and does not count it (#7901, #7921, #7926).

    11 of 39 census programs translate whole (28.2%); 35 of 39 accounted; ceiling under the rulings 37 of 39 (the 2 z/OS Connect programs excluded). Burned half: 126 of 129, unchanged.

    🤖 Posted by Claude Code

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

    claim:melekscope:coreBlocks a burned-estate program's next evidence rung, or the 4th-estate one-shot trial

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions