{
  "schema_version": "1",
  "scenario": "cbor-decoding",
  "generated_at": "2026-10-27T13:33:24Z",
  "implementation": {"name": "cardano-bean", "language": "Java"},
  "corpus": "conway-123-100",
  "protocol_version": "11.0",
  "successful": false,
  "note": "Strict accounting. A valid sample counts in generated_decoded_reencoded_actual only if bean decoded it and its re-encoding, normalised as the dataset README prescribes (exact for the hashed rules), equals the reference's .expected.cbor. For a rule marked \"reencoding\": \"not-implemented\" bean has no encoder for the type, so nothing was re-encoded and no valid sample of that rule counts there; generated_decoded_not_reencoded is the number it decoded without re-encoding. harness_totals holds the counts of the dataset harness, which books those decoded samples as re-encoded. A rule with a reencoding_basis was re-encoded by a production encoder (ConwayEncoders and the codec encoders named in the basis) from the typed object bean's production decoder built, serialised field by field (a memoised upstream item inside a record is bean's retained slice of it); the basis names the upstream type. The encoders are never a verdict input and never a hash input.",
  "totals": {
    "generated_total": 2500,
    "generated_decoded_reencoded_expected": 866,
    "generated_decoded_reencoded_actual": 864,
    "generated_must_be_rejected_expected": 1634,
    "generated_must_be_rejected_actual": 1634,
    "zap_must_be_rejected_expected": 6700,
    "zap_must_be_rejected_actual": 6700
  },
  "harness_totals": {
    "generated_total": 2500,
    "generated_decoded_reencoded_expected": 866,
    "generated_decoded_reencoded_actual": 864,
    "generated_must_be_rejected_expected": 1634,
    "generated_must_be_rejected_actual": 1634,
    "zap_must_be_rejected_expected": 6700,
    "zap_must_be_rejected_actual": 6700
  },
  "rules": {
    "auxiliary_data": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 49,
      "generated_decoded_reencoded_actual": 47,
      "generated_must_be_rejected_expected": 51,
      "generated_must_be_rejected_actual": 51,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified"
    },
    "block": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 0,
      "generated_decoded_reencoded_actual": 0,
      "generated_must_be_rejected_expected": 100,
      "generated_must_be_rejected_actual": 100,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified", "reencoding_basis": "BlockView.blockBytes: [header, segments...] over the retained header and segments (pre-encoded upstream, Alonzo/BlockBody/Internal.hs:82-89,136-139)"
    },
    "certificate": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 35,
      "generated_decoded_reencoded_actual": 35,
      "generated_must_be_rejected_expected": 65,
      "generated_must_be_rejected_actual": 65,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified", "reencoding_basis": "ConwayEncoders.certificate: the typed Cert serialised field by field, anchors of tags 15, 16 and 18 included (Conway/TxCert.hs:490-536,:646-673, not memoised)"
    },
    "cost_models": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 100,
      "generated_decoded_reencoded_actual": 100,
      "generated_must_be_rejected_expected": 0,
      "generated_must_be_rejected_actual": 0,
      "zap_must_be_rejected_expected": 0,
      "zap_must_be_rejected_actual": 0,
      "reencoding": "verified"
    },
    "credential": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 50,
      "generated_decoded_reencoded_actual": 50,
      "generated_must_be_rejected_expected": 50,
      "generated_must_be_rejected_actual": 50,
      "zap_must_be_rejected_expected": 100,
      "zap_must_be_rejected_actual": 100,
      "reencoding": "verified"
    },
    "datum_option": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 55,
      "generated_decoded_reencoded_actual": 55,
      "generated_must_be_rejected_expected": 45,
      "generated_must_be_rejected_actual": 45,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified", "reencoding_basis": "ConwayEncoders.datumOption: [0,hash] or [1,#6.24(inline)]; the inline BinaryData bytes are bean's retained slice (memoised upstream, Plutus/Data.hs:151-152)"
    },
    "drep": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 60,
      "generated_decoded_reencoded_actual": 60,
      "generated_must_be_rejected_expected": 40,
      "generated_must_be_rejected_actual": 40,
      "zap_must_be_rejected_expected": 100,
      "zap_must_be_rejected_actual": 100,
      "reencoding": "verified", "reencoding_basis": "ConwayEncoders.drep: the typed Cert.DRep serialised field by field (DRep.hs:74-88, not memoised)"
    },
    "gov_action": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 33,
      "generated_decoded_reencoded_actual": 33,
      "generated_must_be_rejected_expected": 67,
      "generated_must_be_rejected_actual": 67,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified"
    },
    "header": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 0,
      "generated_decoded_reencoded_actual": 0,
      "generated_must_be_rejected_expected": 100,
      "generated_must_be_rejected_actual": 100,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified"
    },
    "header_body": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 0,
      "generated_decoded_reencoded_actual": 0,
      "generated_must_be_rejected_expected": 100,
      "generated_must_be_rejected_actual": 100,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified", "reencoding_basis": "PraosHeaderCodec.Header.canonicalBody: the definite 10-field header body over the typed fields (Praos/BlockHeader.hs:178-192, not memoised; the Header is)"
    },
    "native_script": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 46,
      "generated_decoded_reencoded_actual": 46,
      "generated_must_be_rejected_expected": 54,
      "generated_must_be_rejected_actual": 54,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified"
    },
    "plutus_data": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 100,
      "generated_decoded_reencoded_actual": 100,
      "generated_must_be_rejected_expected": 0,
      "generated_must_be_rejected_actual": 0,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified"
    },
    "proposal_procedure": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 3,
      "generated_decoded_reencoded_actual": 3,
      "generated_must_be_rejected_expected": 97,
      "generated_must_be_rejected_actual": 97,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified"
    },
    "protocol_param_update": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 14,
      "generated_decoded_reencoded_actual": 14,
      "generated_must_be_rejected_expected": 86,
      "generated_must_be_rejected_actual": 86,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified"
    },
    "redeemer": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 47,
      "generated_decoded_reencoded_actual": 47,
      "generated_must_be_rejected_expected": 53,
      "generated_must_be_rejected_actual": 53,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified", "reencoding_basis": "ConwayEncoders.redeemer: the record built from the typed fields; plutus_data is bean's retained item (Data is memoised upstream, Plutus/Data.hs:95)"
    },
    "redeemers": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 2,
      "generated_decoded_reencoded_actual": 2,
      "generated_must_be_rejected_expected": 98,
      "generated_must_be_rejected_actual": 98,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified"
    },
    "relay": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 47,
      "generated_decoded_reencoded_actual": 47,
      "generated_must_be_rejected_expected": 53,
      "generated_must_be_rejected_actual": 53,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified"
    },
    "script": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 89,
      "generated_decoded_reencoded_actual": 89,
      "generated_must_be_rejected_expected": 11,
      "generated_must_be_rejected_actual": 11,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified", "reencoding_basis": "ConwayEncoders.referenceScript: [type, plutus bytes], or [0, native] from the typed NativeScript tree (Alonzo/Scripts.hs:709-726; the Timelock is memoised upstream and its retained rawScript is checked against the tree in tests)"
    },
    "transaction": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 0,
      "generated_decoded_reencoded_actual": 0,
      "generated_must_be_rejected_expected": 100,
      "generated_must_be_rejected_actual": 100,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified", "reencoding_basis": "ConwayTx.encodeTransaction (TxEnvelope.conway): a definite four-element array over the retained body, witness set and auxiliary data (memoised parts, Alonzo/Tx.hs:496-503)"
    },
    "transaction_body": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 0,
      "generated_decoded_reencoded_actual": 0,
      "generated_must_be_rejected_expected": 100,
      "generated_must_be_rejected_actual": 100,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified"
    },
    "transaction_input": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 50,
      "generated_decoded_reencoded_actual": 50,
      "generated_must_be_rejected_expected": 50,
      "generated_must_be_rejected_actual": 50,
      "zap_must_be_rejected_expected": 200,
      "zap_must_be_rejected_actual": 200,
      "reencoding": "verified", "reencoding_basis": "ConwayEncoders.transactionInput: the typed Transaction.Input serialised field by field (TxIn.hs:120-124, not memoised)"
    },
    "transaction_output": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 26,
      "generated_decoded_reencoded_actual": 26,
      "generated_must_be_rejected_expected": 74,
      "generated_must_be_rejected_actual": 74,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified"
    },
    "transaction_witness_set": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 0,
      "generated_decoded_reencoded_actual": 0,
      "generated_must_be_rejected_expected": 100,
      "generated_must_be_rejected_actual": 100,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified"
    },
    "value": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 53,
      "generated_decoded_reencoded_actual": 53,
      "generated_must_be_rejected_expected": 47,
      "generated_must_be_rejected_actual": 47,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified"
    },
    "voting_procedure": {
      "generated_total": 100,
      "generated_decoded_reencoded_expected": 7,
      "generated_decoded_reencoded_actual": 7,
      "generated_must_be_rejected_expected": 93,
      "generated_must_be_rejected_actual": 93,
      "zap_must_be_rejected_expected": 300,
      "zap_must_be_rejected_actual": 300,
      "reencoding": "verified", "reencoding_basis": "ConwayEncoders.votingProcedure: the typed Vote and Anchor serialised field by field (Procedures.hs:500-505, not memoised)"
    }
  },
  "failures": [
    {"sample": "auxiliary_data/valid/00003-a457defa17a4ecca", "rule": "auxiliary_data", "class": "bean rejected a sample the reference decoder accepts", "reason": "com.zw3rk.cardano.bean.cbor.TxEnvelope$Malformed: standalone tx envelope auxiliary_data: Excess terms in array: before decoder version 12 the auxiliary_data record [metadata, scripts] reads its break before its fields (RecD)\n\tat com.zw3rk.cardano.bean.cbor.TxEnvelope.read(TxEnvelope.java:305)\n\tat com.zw3rk.cardano.bean.ledger.conway.ConwayTx.decodeTransaction(ConwayTx.java:167)\n\tat com.zw3rk.cardano.bean.ledger.conway.ConwayCborDatasetMappings.wire(ConwayCborDatasetMappings.java:102)\n\tat com.zw3rk.cardano.bean.ledger.conway.ConwayCborDatasetMappings.lambda$auxiliaryData$0(ConwayCborDatasetMappings.java:290)\n\tat com.zw3rk.cardano.bean.testkit.cbordataset.SampleRunner.attempt(SampleRunner.java:92)\n\tat com.zw3rk.cardano.bean.testkit.cbordataset.SampleRunner.lambda$run$0(SampleRunner.java:70)\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)\n\tat java.base/java.lang.Thread.run(Thread.java:1474)\n"},
    {"sample": "auxiliary_data/valid/00025-756519256dadb3b0", "rule": "auxiliary_data", "class": "bean rejected a sample the reference decoder accepts", "reason": "com.zw3rk.cardano.bean.cbor.TxEnvelope$Malformed: standalone tx envelope auxiliary_data: Excess terms in array: before decoder version 12 the auxiliary_data record [metadata, scripts] reads its break before its fields (RecD)\n\tat com.zw3rk.cardano.bean.cbor.TxEnvelope.read(TxEnvelope.java:305)\n\tat com.zw3rk.cardano.bean.ledger.conway.ConwayTx.decodeTransaction(ConwayTx.java:167)\n\tat com.zw3rk.cardano.bean.ledger.conway.ConwayCborDatasetMappings.wire(ConwayCborDatasetMappings.java:102)\n\tat com.zw3rk.cardano.bean.ledger.conway.ConwayCborDatasetMappings.lambda$auxiliaryData$0(ConwayCborDatasetMappings.java:290)\n\tat com.zw3rk.cardano.bean.testkit.cbordataset.SampleRunner.attempt(SampleRunner.java:92)\n\tat com.zw3rk.cardano.bean.testkit.cbordataset.SampleRunner.lambda$run$0(SampleRunner.java:70)\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)\n\tat java.base/java.lang.Thread.run(Thread.java:1474)\n"}
  ]
}
