The receipt room · live trace

Parity receipt

The easy-mode baseline — a standard mainframe account record. If a translator cannot pass this clean, it has no business attempting AL3.

Verdict
PASS
Records
1
Elementary fields
12
REDEFINES
0
OCCURS
0

Five quality gates

01 PARSER PASS Deterministic AST extraction yields a non-empty, field-bearing record set. No LLM involved. 1 records · 12 elementary fields
02 SCHEMA_SANITY PASS Candidate schema parses as valid Zod — balanced delimiters, no markdown fences, no prose. valid Zod module
03 FIELD_PARITY PASS len(COBOL elementary fields) === len(emitted schema leaves). Off by one and the build fails. COBOL 12 ⇄ schema 12
04 DARK_CORNER PASS Every REDEFINES overlay compiles to a union (discriminated where a record-type byte exists); every OCCURS to a dynamic array. 0/0 overlays · 0/0 arrays
05 MOCK_STRUCTURE PASS A mock document generated from the schema re-validates against it — the schema is internally consistent. 13 nodes round-tripped

Field-for-field mapping · 12 elementary fields

COBOL fieldPICStorageSchema pathType
    ACCT-ID X(10) alphanumeric (10 chars) acctRecord.acctId z.string().max(10)
    ACCT-NAME X(50) alphanumeric (50 chars) acctRecord.acctName z.string().max(50)
    ACCT-BALANCE S9(9)V99 COMP-3 packed decimal (COMP-3, signed, scaled) acctRecord.acctBalance z.number()
    ACCT-STATUS X(1) alphanumeric (1 chars) acctRecord.acctStatus z.string().max(1)
    ACCT-OPEN-DATE X(8) alphanumeric (8 chars) acctRecord.acctOpenDate z.string().max(8)
    ACCT-LAST-ACTIVITY X(8) alphanumeric (8 chars) acctRecord.acctLastActivity z.string().max(8)
    ACCT-TYPE X(3) alphanumeric (3 chars) acctRecord.acctType z.string().max(3)
    ACCT-INTEREST-RATE S9V999 display numeric, signed, implied decimal (4 digits) acctRecord.acctInterestRate z.string()
    ACCT-OVERDRAFT-LIMIT S9(7)V99 display numeric, signed, implied decimal (9 digits) acctRecord.acctOverdraftLimit z.string()
    ACCT-CURRENCY X(3) alphanumeric (3 chars) acctRecord.acctCurrency z.string().max(3)
    ACCT-PIN X(4) alphanumeric (4 chars) acctRecord.acctPin z.string().max(4)
    ACCT-CREATED-TIME X(26) alphanumeric (26 chars) acctRecord.acctCreatedTime z.string().max(26)

Emitted schema · TypeScript + Zod

import { z } from "zod";

export const RecordSchema = z.object({
  acctRecord: z.object({
    acctId: z.string().max(10),
    acctName: z.string().max(50),
    acctBalance: z.number(),
    acctStatus: z.string().max(1),
    acctOpenDate: z.string().max(8),
    acctLastActivity: z.string().max(8),
    acctType: z.string().max(3),
    acctInterestRate: z.string(),
    acctOverdraftLimit: z.string(),
    acctCurrency: z.string().max(3),
    acctPin: z.string().max(4),
    acctCreatedTime: z.string().max(26),
  }),
});

export type Record = z.infer<typeof RecordSchema>;

Source copybook

Show ACCTREC.CPY
01  ACCT-RECORD.
           05  ACCT-ID               PIC X(10).
           05  ACCT-NAME             PIC X(50).
           05  ACCT-BALANCE          PIC S9(9)V99 COMP-3.
           05  ACCT-STATUS           PIC X(1).
           05  ACCT-OPEN-DATE        PIC X(8).
           05  ACCT-LAST-ACTIVITY    PIC X(8).
           05  ACCT-TYPE             PIC X(3).
           05  ACCT-INTEREST-RATE    PIC S9V999.
           05  ACCT-OVERDRAFT-LIMIT   PIC S9(7)V99.
           05  ACCT-CURRENCY         PIC X(3).
           05  ACCT-PIN             PIC X(4).
           05  ACCT-CREATED-TIME     PIC X(26).

Provenance

copybookACCTREC.CPY
input SHA-2561a3861a36382ff20b0e2da7c5af7063ee696896fb139b0a8f1359edf95e2b990
output SHA-2563e9315f18f0a8c82f1d2ca420611b6453a94378c1224b1eb5144cd12d8f14a70
determinismsame input → identical output hash, every run
machine-readable/receipt.json?cb=acct