{
  "access": {
    "embargo": {
      "active": false,
      "reason": null
    },
    "files": "public",
    "record": "public",
    "status": "open"
  },
  "created": "2026-05-18T18:46:33.357456+00:00",
  "custom_fields": {},
  "deletion_status": {
    "is_deleted": false,
    "status": "P"
  },
  "files": {
    "count": 34,
    "enabled": true,
    "entries": {
      "2026-05-18-0624-5be648c75-v2026.5.0.log": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:a2c740bf9b5817fe3d4c7ebf26a08b95",
        "ext": "log",
        "id": "3a70162a-7e81-405e-a1cd-576aaeed8963",
        "key": "2026-05-18-0624-5be648c75-v2026.5.0.log",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/2026-05-18-0624-5be648c75-v2026.5.0.log/content",
          "self": "https://zenodo.org/api/records/20275549/files/2026-05-18-0624-5be648c75-v2026.5.0.log"
        },
        "metadata": {},
        "mimetype": "application/octet-stream",
        "size": 11025512,
        "storage_class": "L"
      },
      "censusdp1tract.sqlite.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:25c34f7299eb80e8347a5adc6a3b0069",
        "ext": "zip",
        "id": "8e9fb126-aa93-4c61-8db2-c4e4803311db",
        "key": "censusdp1tract.sqlite.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/censusdp1tract.sqlite.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/censusdp1tract.sqlite.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 506705873,
        "storage_class": "L"
      },
      "ferc1_dbf.sqlite.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:1dbc07ba947fe8a10211658555892d61",
        "ext": "zip",
        "id": "d9aae309-a77e-47b2-851e-62fbd38e8303",
        "key": "ferc1_dbf.sqlite.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc1_dbf.sqlite.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc1_dbf.sqlite.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 271342890,
        "storage_class": "L"
      },
      "ferc1_xbrl.duckdb": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:b87a6b63c4139c4864b9d575a6ed331a",
        "ext": "bin",
        "id": "c7eb1a3e-3da1-4a3d-8f78-a62aa00db7f9",
        "key": "ferc1_xbrl.duckdb",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc1_xbrl.duckdb/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc1_xbrl.duckdb"
        },
        "metadata": {},
        "mimetype": "application/octet-stream",
        "size": 1039413248,
        "storage_class": "L"
      },
      "ferc1_xbrl.sqlite.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:ce7290979d98e329b7932e7124105382",
        "ext": "zip",
        "id": "74cb20f9-4f17-412f-81a5-89337be984df",
        "key": "ferc1_xbrl.sqlite.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc1_xbrl.sqlite.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc1_xbrl.sqlite.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 190874306,
        "storage_class": "L"
      },
      "ferc1_xbrl.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:ef87ca15214d60e01af82c43d73702b9",
        "ext": "zip",
        "id": "3f9bd149-dced-4d95-8ed3-d39d5b615947",
        "key": "ferc1_xbrl.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc1_xbrl.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc1_xbrl.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 167944478,
        "storage_class": "L"
      },
      "ferc1_xbrl_datapackage.json": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:15d13436604c32226fbf6793f7251735",
        "ext": "json",
        "id": "8c19942c-ebbb-42f6-acc5-1b03b6debbbd",
        "key": "ferc1_xbrl_datapackage.json",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc1_xbrl_datapackage.json/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc1_xbrl_datapackage.json"
        },
        "metadata": {},
        "mimetype": "application/json",
        "size": 2019470,
        "storage_class": "L"
      },
      "ferc1_xbrl_taxonomy_metadata.json": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:02c69518e60b733979671e73d2e12f9f",
        "ext": "json",
        "id": "72abe1ac-27e6-4a7a-b852-afaee66f3e77",
        "key": "ferc1_xbrl_taxonomy_metadata.json",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc1_xbrl_taxonomy_metadata.json/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc1_xbrl_taxonomy_metadata.json"
        },
        "metadata": {},
        "mimetype": "application/json",
        "size": 7282915,
        "storage_class": "L"
      },
      "ferc2_dbf.sqlite.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:e801ae4dc353a7111ed6832348ffe7af",
        "ext": "zip",
        "id": "511ee3f3-f602-45dd-bc18-4f1c91d171ec",
        "key": "ferc2_dbf.sqlite.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc2_dbf.sqlite.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc2_dbf.sqlite.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 73851486,
        "storage_class": "L"
      },
      "ferc2_xbrl.duckdb": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:a68ec6aa5c061a00e38c90b6d8e939c2",
        "ext": "bin",
        "id": "7cacd5ee-7230-4e72-83ec-6bb8a555b383",
        "key": "ferc2_xbrl.duckdb",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc2_xbrl.duckdb/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc2_xbrl.duckdb"
        },
        "metadata": {},
        "mimetype": "application/octet-stream",
        "size": 163328000,
        "storage_class": "L"
      },
      "ferc2_xbrl.sqlite.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:871596a059eb41f02b2a13839ee616d0",
        "ext": "zip",
        "id": "72fa2250-750a-4395-b6eb-ec62dbb88fc1",
        "key": "ferc2_xbrl.sqlite.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc2_xbrl.sqlite.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc2_xbrl.sqlite.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 34932690,
        "storage_class": "L"
      },
      "ferc2_xbrl.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:848b134d78062b6313024fb381bd2d2c",
        "ext": "zip",
        "id": "af040b9b-9863-4ebb-a68c-4d75aba9cc9c",
        "key": "ferc2_xbrl.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc2_xbrl.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc2_xbrl.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 23080800,
        "storage_class": "L"
      },
      "ferc2_xbrl_datapackage.json": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:9dbd3733cb82801b18353e71d4a432af",
        "ext": "json",
        "id": "cb2f8889-5752-4ebb-9f5b-41d6846b8ccb",
        "key": "ferc2_xbrl_datapackage.json",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc2_xbrl_datapackage.json/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc2_xbrl_datapackage.json"
        },
        "metadata": {},
        "mimetype": "application/json",
        "size": 2277290,
        "storage_class": "L"
      },
      "ferc2_xbrl_taxonomy_metadata.json": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:bd09d11e1a79a1623b3d9789bf336c9e",
        "ext": "json",
        "id": "2241d11e-35ca-4bb1-a4e8-912a0bb56035",
        "key": "ferc2_xbrl_taxonomy_metadata.json",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc2_xbrl_taxonomy_metadata.json/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc2_xbrl_taxonomy_metadata.json"
        },
        "metadata": {},
        "mimetype": "application/json",
        "size": 7169393,
        "storage_class": "L"
      },
      "ferc60_dbf.sqlite.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:4476505ecd7ac3cffa0df34cef4f030b",
        "ext": "zip",
        "id": "ae44bcfd-4443-4126-9b43-3574ddf3624e",
        "key": "ferc60_dbf.sqlite.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc60_dbf.sqlite.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc60_dbf.sqlite.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 2886665,
        "storage_class": "L"
      },
      "ferc60_xbrl.duckdb": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:7bbc5135e412c0c8c71c47bddc9edf61",
        "ext": "bin",
        "id": "f028ae2d-ef46-455e-8a4f-cc95a786080a",
        "key": "ferc60_xbrl.duckdb",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc60_xbrl.duckdb/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc60_xbrl.duckdb"
        },
        "metadata": {},
        "mimetype": "application/octet-stream",
        "size": 57683968,
        "storage_class": "L"
      },
      "ferc60_xbrl.sqlite.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:6b7eac4c0b2bfb04533463eab620af61",
        "ext": "zip",
        "id": "8ec5eeeb-2a28-42f9-8f40-5746d1bee9b2",
        "key": "ferc60_xbrl.sqlite.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc60_xbrl.sqlite.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc60_xbrl.sqlite.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 5342077,
        "storage_class": "L"
      },
      "ferc60_xbrl.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:42a3f9e1d57ba866eed0f9691cf8bd26",
        "ext": "zip",
        "id": "97e9ca60-af46-47ce-b60d-efbc408ff9da",
        "key": "ferc60_xbrl.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc60_xbrl.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc60_xbrl.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 6556919,
        "storage_class": "L"
      },
      "ferc60_xbrl_datapackage.json": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:4e308f9bfcf08df05ce198b8bbd1a0eb",
        "ext": "json",
        "id": "4dd738d4-f004-4194-879c-1a0db7897aa9",
        "key": "ferc60_xbrl_datapackage.json",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc60_xbrl_datapackage.json/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc60_xbrl_datapackage.json"
        },
        "metadata": {},
        "mimetype": "application/json",
        "size": 974311,
        "storage_class": "L"
      },
      "ferc60_xbrl_taxonomy_metadata.json": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:ba679325b7ae96c87b6fa5584cfae491",
        "ext": "json",
        "id": "04cd4545-632e-4b63-a3d1-b470b3607d7e",
        "key": "ferc60_xbrl_taxonomy_metadata.json",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc60_xbrl_taxonomy_metadata.json/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc60_xbrl_taxonomy_metadata.json"
        },
        "metadata": {},
        "mimetype": "application/json",
        "size": 1954725,
        "storage_class": "L"
      },
      "ferc6_dbf.sqlite.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:53aa59a546bef76d53210faf6d4b7453",
        "ext": "zip",
        "id": "033107ff-4fec-4f1c-8b20-50c7f0cf1e1a",
        "key": "ferc6_dbf.sqlite.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc6_dbf.sqlite.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc6_dbf.sqlite.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 43511022,
        "storage_class": "L"
      },
      "ferc6_xbrl.duckdb": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:68a43456bf799472a1e5b2ca3066a171",
        "ext": "bin",
        "id": "dfc5c0d1-a631-48f7-88e5-447410e30227",
        "key": "ferc6_xbrl.duckdb",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc6_xbrl.duckdb/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc6_xbrl.duckdb"
        },
        "metadata": {},
        "mimetype": "application/octet-stream",
        "size": 81801216,
        "storage_class": "L"
      },
      "ferc6_xbrl.sqlite.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:e19a59bf73d3c1cf5bde45c13f17c25c",
        "ext": "zip",
        "id": "f38a3e75-aa45-424c-b77f-9d14bcd00efd",
        "key": "ferc6_xbrl.sqlite.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc6_xbrl.sqlite.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc6_xbrl.sqlite.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 28412407,
        "storage_class": "L"
      },
      "ferc6_xbrl.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:4abad6a380b6b55ca00e447173bd000b",
        "ext": "zip",
        "id": "224d7fb4-9d05-400b-ab29-5c8b584b6a47",
        "key": "ferc6_xbrl.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc6_xbrl.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc6_xbrl.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 15087128,
        "storage_class": "L"
      },
      "ferc6_xbrl_datapackage.json": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:14359041f74a53cda9ababcb9970bc57",
        "ext": "json",
        "id": "76adbe9a-e7a6-4e77-878d-96e488fc0557",
        "key": "ferc6_xbrl_datapackage.json",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc6_xbrl_datapackage.json/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc6_xbrl_datapackage.json"
        },
        "metadata": {},
        "mimetype": "application/json",
        "size": 1325863,
        "storage_class": "L"
      },
      "ferc6_xbrl_taxonomy_metadata.json": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:240ab648e9b6fb13f2540b217638676e",
        "ext": "json",
        "id": "48b15d42-6fdd-4fa2-b9fb-f603da9c1eae",
        "key": "ferc6_xbrl_taxonomy_metadata.json",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc6_xbrl_taxonomy_metadata.json/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc6_xbrl_taxonomy_metadata.json"
        },
        "metadata": {},
        "mimetype": "application/json",
        "size": 3014734,
        "storage_class": "L"
      },
      "ferc714_xbrl.duckdb": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:f1047c513992ae6161cb980f03c3a789",
        "ext": "bin",
        "id": "a58ef1a5-cc6a-42c8-b593-1581efb8dced",
        "key": "ferc714_xbrl.duckdb",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc714_xbrl.duckdb/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc714_xbrl.duckdb"
        },
        "metadata": {},
        "mimetype": "application/octet-stream",
        "size": 66596864,
        "storage_class": "L"
      },
      "ferc714_xbrl.sqlite.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:b758a1f5ecea9668135201b2bae1a6bb",
        "ext": "zip",
        "id": "5148162d-f694-4da9-b076-c1f7bd45ca02",
        "key": "ferc714_xbrl.sqlite.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc714_xbrl.sqlite.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc714_xbrl.sqlite.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 193638153,
        "storage_class": "L"
      },
      "ferc714_xbrl.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:2f1bc75a04756ecb3d0ccccead054e30",
        "ext": "zip",
        "id": "d9f8b15b-0e9b-4582-9314-f25a6af1e018",
        "key": "ferc714_xbrl.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc714_xbrl.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc714_xbrl.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 35508756,
        "storage_class": "L"
      },
      "ferc714_xbrl_datapackage.json": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:cca9a4b4b016e1c1fa981e5008218b96",
        "ext": "json",
        "id": "5e17eaf9-3466-4bdd-895e-f06994be8669",
        "key": "ferc714_xbrl_datapackage.json",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc714_xbrl_datapackage.json/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc714_xbrl_datapackage.json"
        },
        "metadata": {},
        "mimetype": "application/json",
        "size": 63045,
        "storage_class": "L"
      },
      "ferc714_xbrl_taxonomy_metadata.json": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:694686904ca1871e1b96f2002d2a136d",
        "ext": "json",
        "id": "28459129-4cda-4672-93b9-0f575914fca8",
        "key": "ferc714_xbrl_taxonomy_metadata.json",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/ferc714_xbrl_taxonomy_metadata.json/content",
          "self": "https://zenodo.org/api/records/20275549/files/ferc714_xbrl_taxonomy_metadata.json"
        },
        "metadata": {},
        "mimetype": "application/json",
        "size": 192883,
        "storage_class": "L"
      },
      "pudl.sqlite.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:fed16c8f6aac11dc144cf888333e3203",
        "ext": "zip",
        "id": "8c256f61-d16d-4202-b5a1-68adcd225112",
        "key": "pudl.sqlite.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/pudl.sqlite.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/pudl.sqlite.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 3239446987,
        "storage_class": "L"
      },
      "pudl_parquet.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:3f6b524abc6ff0dbf22df54fa411f1f4",
        "ext": "zip",
        "id": "7ee805c1-f53f-4cde-9f20-1f2a118f0d4d",
        "key": "pudl_parquet.zip",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/pudl_parquet.zip/content",
          "self": "https://zenodo.org/api/records/20275549/files/pudl_parquet.zip"
        },
        "metadata": {},
        "mimetype": "application/zip",
        "size": 11629764875,
        "storage_class": "L"
      },
      "pudl_parquet_datapackage.json": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:cb2ea1335034c9df94360e170cd8a49d",
        "ext": "json",
        "id": "b59f47b6-1cba-4ed1-9d08-d5f211038c81",
        "key": "pudl_parquet_datapackage.json",
        "links": {
          "content": "https://zenodo.org/api/records/20275549/files/pudl_parquet_datapackage.json/content",
          "self": "https://zenodo.org/api/records/20275549/files/pudl_parquet_datapackage.json"
        },
        "metadata": {},
        "mimetype": "application/json",
        "size": 1514537,
        "storage_class": "L"
      }
    },
    "order": [],
    "total_bytes": 17916525486
  },
  "id": "20275549",
  "is_draft": false,
  "is_published": true,
  "links": {
    "access": "https://zenodo.org/api/records/20275549/access",
    "access_grants": "https://zenodo.org/api/records/20275549/access/grants",
    "access_links": "https://zenodo.org/api/records/20275549/access/links",
    "access_request": "https://zenodo.org/api/records/20275549/access/request",
    "access_users": "https://zenodo.org/api/records/20275549/access/users",
    "archive": "https://zenodo.org/api/records/20275549/files-archive",
    "archive_media": "https://zenodo.org/api/records/20275549/media-files-archive",
    "communities": "https://zenodo.org/api/records/20275549/communities",
    "communities-suggestions": "https://zenodo.org/api/records/20275549/communities-suggestions",
    "doi": "https://doi.org/10.5281/zenodo.20275549",
    "draft": "https://zenodo.org/api/records/20275549/draft",
    "file_modification": "https://zenodo.org/api/records/20275549/file-modification",
    "files": "https://zenodo.org/api/records/20275549/files",
    "latest": "https://zenodo.org/api/records/20275549/versions/latest",
    "latest_html": "https://zenodo.org/records/20275549/latest",
    "media_files": "https://zenodo.org/api/records/20275549/media-files",
    "parent": "https://zenodo.org/api/records/3653158",
    "parent_doi": "https://doi.org/10.5281/zenodo.3653158",
    "parent_doi_html": "https://zenodo.org/doi/10.5281/zenodo.3653158",
    "parent_html": "https://zenodo.org/records/3653158",
    "preview_html": "https://zenodo.org/records/20275549?preview=1",
    "quota_increase": "https://zenodo.org/api/records/20275549/quota-increase",
    "request_deletion": "https://zenodo.org/api/records/20275549/request-deletion",
    "requests": "https://zenodo.org/api/records/20275549/requests",
    "reserve_doi": "https://zenodo.org/api/records/20275549/draft/pids/doi",
    "self": "https://zenodo.org/api/records/20275549",
    "self_doi": "https://doi.org/10.5281/zenodo.20275549",
    "self_doi_html": "https://zenodo.org/doi/10.5281/zenodo.20275549",
    "self_html": "https://zenodo.org/records/20275549",
    "self_iiif_manifest": "https://zenodo.org/api/iiif/record:20275549/manifest",
    "self_iiif_sequence": "https://zenodo.org/api/iiif/record:20275549/sequence/default",
    "versions": "https://zenodo.org/api/records/20275549/versions"
  },
  "media_files": {
    "count": 0,
    "enabled": false,
    "entries": {},
    "order": [],
    "total_bytes": 0
  },
  "metadata": {
    "creators": [
      {
        "affiliations": [
          {
            "name": "Catalyst Cooperative"
          }
        ],
        "person_or_org": {
          "family_name": "Selvans",
          "given_name": "Zane A.",
          "identifiers": [
            {
              "identifier": "0000-0002-9961-7208",
              "scheme": "orcid"
            }
          ],
          "name": "Selvans, Zane A.",
          "type": "personal"
        }
      },
      {
        "affiliations": [
          {
            "name": "Catalyst Cooperative"
          }
        ],
        "person_or_org": {
          "family_name": "Gosnell",
          "given_name": "Christina M.",
          "identifiers": [
            {
              "identifier": "0009-0004-2979-6142",
              "scheme": "orcid"
            }
          ],
          "name": "Gosnell, Christina M.",
          "type": "personal"
        }
      },
      {
        "affiliations": [
          {
            "name": "Catalyst Cooperative"
          }
        ],
        "person_or_org": {
          "family_name": "Sharpe",
          "given_name": "Austen",
          "name": "Sharpe, Austen",
          "type": "personal"
        }
      },
      {
        "affiliations": [
          {
            "name": "Catalyst Cooperative"
          }
        ],
        "person_or_org": {
          "family_name": "Schira",
          "given_name": "Zach",
          "name": "Schira, Zach",
          "type": "personal"
        }
      },
      {
        "affiliations": [
          {
            "name": "Catalyst Cooperative"
          }
        ],
        "person_or_org": {
          "family_name": "Xia",
          "given_name": "Dazhong",
          "name": "Xia, Dazhong",
          "type": "personal"
        }
      },
      {
        "affiliations": [
          {
            "name": "Catalyst Cooperative"
          }
        ],
        "person_or_org": {
          "family_name": "Belfer",
          "given_name": "Ella",
          "identifiers": [
            {
              "identifier": "0000-0001-9784-8531",
              "scheme": "orcid"
            }
          ],
          "name": "Belfer, Ella",
          "type": "personal"
        }
      },
      {
        "affiliations": [
          {
            "name": "Catalyst Cooperative"
          }
        ],
        "person_or_org": {
          "family_name": "Mazaitis",
          "given_name": "Kathryn",
          "identifiers": [
            {
              "identifier": "0009-0009-9063-080X",
              "scheme": "orcid"
            }
          ],
          "name": "Mazaitis, Kathryn",
          "type": "personal"
        }
      }
    ],
    "description": "<h1>v2026.5.0 (2026-05-17)</h1>\n<p>This is a quarterly PUDL data release, updating datasets that are released on a monthly or quarterly basis, including the EIA-860M, year-to-date EIA-923, EIA-930, and EIA-191. It also includes an annual update for the EIA Annual Energy Outlook (AEO).</p>\n<p>Normally this release would also update the EPA CEMS hourly emissions dataset. Unfortunately, the bulk CEMS data product that we archive and process was not published as usual. We are exploring other ways of integrating the updated data.</p>\n\n\n<h3>Enhancements</h3>\n<ul class=\"simple\">\n<li>\n<p>Started distributing the raw XBRL-derived data for FERC Forms 1, 2, 6, 60, and 714 as collections of parquet files, alongside existing SQLite and DuckDB outputs. See PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5232\">#5232</a>. This change is primarily in support of making these data available through the <a class=\"reference external\" href=\"https://data.catalyst.coop\">PUDL Data Viewer</a>.</p>\n</li>\n</ul>\n\n\n<h4>FERC 1</h4>\n<ul class=\"simple\">\n<li>\n<p>Added new <a class=\"reference internal\" href=\"https://docs.catalyst.coop/pudl/en/stable/data_dictionaries/pudl_db.html#out-ferc1-yearly-depreciation-factors-sched336\"><span class=\"std std-ref\">out_ferc1__yearly_depreciation_factors_sched336</span></a> table. See issue <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5103\">#5103</a> and PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5112\">#5112</a>.</p>\n</li>\n<li>\n<p>Added FERC Form 1 respondents&rsquo; identification and certification information as <a class=\"reference internal\" href=\"https://docs.catalyst.coop/pudl/en/stable/data_dictionaries/pudl_db.html#core-ferc1-yearly-identification-certification\"><span class=\"std std-ref\">core_ferc1__yearly_identification_certification</span></a>. See <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5150\">#5150</a> and <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5008\">#5008</a>.</p>\n</li>\n<li>\n<p>Added new <a class=\"reference internal\" href=\"https://docs.catalyst.coop/pudl/en/stable/data_dictionaries/pudl_db.html#out-ferc1-yearly-other-regulatory-assets-sched232\"><span class=\"std std-ref\">out_ferc1__yearly_other_regulatory_assets_sched232</span></a> table. See issue <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5104\">#5104</a> and PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5170\">#5170</a>.</p>\n</li>\n</ul>\n\n\n\n\n<h3>Expanded Data Coverage</h3>\n\n\n<h4>EIA AEO</h4>\n<ul class=\"simple\">\n<li>\n<p>Added 2026 Projections from EIA AEO. See issue <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5182\">#5182</a> and PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5198\">#5198</a>.</p>\n</li>\n</ul>\n\n\n\n<h4>EIA-860M</h4>\n<ul class=\"simple\">\n<li>\n<p>Added EIA-860M data through March 2026. See issue <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5225\">#5225</a> and PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5230\">#5230</a>.</p>\n</li>\n</ul>\n\n\n\n<h4>EIA-923</h4>\n<ul class=\"simple\">\n<li>\n<p>Added year-to-date updates for EIA-923 data through December 2025. See issue <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5226\">#5226</a> and PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5230\">#5230</a>.</p>\n</li>\n</ul>\n\n\n\n<h4>EIA-930</h4>\n<ul class=\"simple\">\n<li>\n<p>Updated EIA-930 data through April 2026. See <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5209\">#5209</a> and <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5216\">#5216</a>. In the process made accommodations for BA changes resulting from the <a class=\"reference external\" href=\"https://www.spp.org/documents/75997/2026%20rtoe%20swpw%20transition%20plan%20%E2%80%93%20market%20participant.pdf\">Southwest Power Pool RTO Expansion</a></p>\n</li>\n</ul>\n\n\n\n<h4>EIA-191</h4>\n<ul class=\"simple\">\n<li>\n<p>Added <a class=\"reference internal\" href=\"https://docs.catalyst.coop/pudl/en/stable/data_dictionaries/pudl_db.html#core-eia191-monthly-gas-storage\"><span class=\"std std-ref\">core_eia191__monthly_gas_storage</span></a>, a new table containing monthly underground natural gas storage activity reported by operators to EIA on Form 191. Data covers 2014-present, is updated through April 2026, and includes working gas, base gas, and total capacity by storage field. See issue <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5209\">#5209</a> and PRs <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5058\">#5058</a> and <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5216\">#5216</a>. Thanks to <a class=\"reference external\" href=\"https://github.com/sponsors/irubey\">@irubey</a> for this contribution!</p>\n</li>\n</ul>\n\n\n\n\n<h3>Documentation</h3>\n<ul class=\"simple\">\n<li>\n<p>Added new component to table descriptions showing the most recent data available. See issue <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/4586\">#4586</a> and PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/4632\">#4632</a>.</p>\n</li>\n<li>\n<p>Added new <code class=\"docutils literal notranslate\"><span class=\"pre\">forensics</span></code> tables which can be used to see all input values before PUDL chooses canonical values/golden records in the <a class=\"reference internal\" href=\"https://docs.catalyst.coop/pudl/en/stable/methodology/entity_resolution.html\"><span class=\"doc\">entity resolution process</span></a>. See issue <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/4265\">#4265</a> and PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5157\">#5157</a>.</p>\n</li>\n</ul>\n\n\n\n<h3>Bug Fixes &amp; Data Cleaning</h3>\n<ul class=\"simple\">\n<li>\n<p>Removed the already deprecated <code class=\"docutils literal notranslate\"><span class=\"pre\">pudl.extract.ferc1.extract_dbf</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">pudl.extract.ferc1.extract_xbrl</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">pudl.extract.ferc1.extract_xbrl_generic</span></code>, and <code class=\"docutils literal notranslate\"><span class=\"pre\">pudl.extract.ferc1.extract_dbf_generic</span></code> functions. The extraction logic is now covered by the <a class=\"reference internal\" title=\"pudl.dagster.io_managers.ferc1_xbrl_sqlite_io_manager\" href=\"https://docs.catalyst.coop/pudl/en/stable/autoapi/pudl/dagster/io_managers/index.html#pudl.dagster.io_managers.ferc1_xbrl_sqlite_io_manager\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">pudl.dagster.io_managers.ferc1_xbrl_sqlite_io_manager</span></code></a> and <a class=\"reference internal\" title=\"pudl.dagster.io_managers.ferc1_dbf_sqlite_io_manager\" href=\"https://docs.catalyst.coop/pudl/en/stable/autoapi/pudl/dagster/io_managers/index.html#pudl.dagster.io_managers.ferc1_dbf_sqlite_io_manager\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">pudl.dagster.io_managers.ferc1_dbf_sqlite_io_manager</span></code></a> IO Managers.</p>\n</li>\n<li>\n<p>Fixed a <a class=\"reference external\" title=\"(in Python v3.14)\" href=\"https://docs.python.org/3/library/exceptions.html#TypeError\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TypeError</span></code></a> in MCOE asset checks where <code class=\"docutils literal notranslate\"><span class=\"pre\">sum(exc.null_rows)</span></code> iterated over a DataFrame&rsquo;s column names as strings instead of counting rows. Replaced with <code class=\"docutils literal notranslate\"><span class=\"pre\">len(exc.null_rows)</span></code>. See PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5124\">#5124</a>.</p>\n</li>\n<li>\n<p>Fixed a data integrity bug in the FERC SQLite IO manager where SQLite silently auto-incremented <code class=\"docutils literal notranslate\"><span class=\"pre\">NULL</span></code> values in single-column <code class=\"docutils literal notranslate\"><span class=\"pre\">INTEGER</span> <span class=\"pre\">PRIMARY</span> <span class=\"pre\">KEY</span></code> columns (ROWID aliases) rather than raising an <code class=\"docutils literal notranslate\"><span class=\"pre\">IntegrityError</span></code>. An explicit null check now catches this case before writing. The bug affected 11 production entity and association tables (e.g. <code class=\"docutils literal notranslate\"><span class=\"pre\">core_eia__entity_plants</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">core_pudl__entity_utilities_pudl</span></code>); composite PKs and non-INTEGER single PKs are enforced normally by SQLite and were unaffected. See PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5124\">#5124</a>.</p>\n</li>\n<li>\n<p>Updated FERC XBRL extraction to handle a new upstream behavior in which empty instant or duration tables are omitted from published filings. See PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5239\">#5239</a>.</p>\n</li>\n</ul>\n\n\n\n<h3>Quality of Life Improvements</h3>\n<ul class=\"simple\">\n<li>\n<p><strong>Reorganized the test suite from</strong> <code class=\"docutils literal notranslate\"><span class=\"pre\">test/</span></code> <strong>to</strong> <code class=\"docutils literal notranslate\"><span class=\"pre\">tests/</span></code> with a three-tier layout that matches the existing Pixi tasks: <code class=\"docutils literal notranslate\"><span class=\"pre\">unit/</span></code> (fast, no data), <code class=\"docutils literal notranslate\"><span class=\"pre\">integration/</span></code> (software correctness against ETL outputs), and <code class=\"docutils literal notranslate\"><span class=\"pre\">validate/</span></code> (data quality on prebuilt outputs). The old <code class=\"docutils literal notranslate\"><span class=\"pre\">integration/etl_test.py</span></code> was dissolved into per-extractor files and a <code class=\"docutils literal notranslate\"><span class=\"pre\">dagster/pipeline_test.py</span></code>. New unit tests were added for MCOE asset checks, <code class=\"docutils literal notranslate\"><span class=\"pre\">no_null_rows</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">weighted_quantile</span></code>, and IO manager null-PK behavior. See PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5124\">#5124</a>.</p>\n</li>\n<li>\n<p><strong>Separated dbt row count checks into a distinct</strong> <code class=\"docutils literal notranslate\"><span class=\"pre\">pytest-validate-row-counts-nightly</span></code> <em>Pixi stage.*</em> <code class=\"docutils literal notranslate\"><span class=\"pre\">check_row_counts_per_partition</span></code> is the most frequently failing dbt test; running it in its own stage produces a clearly labelled line in nightly Slack reports instead of failing the broader data validation stage, making failures easier to triage. The stage is automatically skipped outside of full ETL builds. See PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5124\">#5124</a>.</p>\n</li>\n<li>\n<p><strong>Renamed the</strong> <code class=\"docutils literal notranslate\"><span class=\"pre\">docker/</span></code> <strong>directory to</strong> <code class=\"docutils literal notranslate\"><span class=\"pre\">builds/</span></code> to better reflect that it contains all production build scripts and infrastructure, not just Docker-related files. See PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5124\">#5124</a>.</p>\n</li>\n<li>\n<p>Updated <code class=\"docutils literal notranslate\"><span class=\"pre\">dbt_helper</span> <span class=\"pre\">update-tables</span> <span class=\"pre\">--schema</span></code> to ingest &ldquo;human schema input files&rdquo; (at <code class=\"docutils literal notranslate\"><span class=\"pre\">dbt/schema_inputs/**/schema.human.yml</span></code>) and generate the actual dbt-visible schema files automatically. This gives us clear separation between human and machine-generated schemas and allows us to add more machine-generated checks. See issue <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5208\">#5208</a> and PRs <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5207\">#5207</a> and <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5228\">#5228</a>.</p>\n</li>\n</ul>\n\n\n\n<h3>Major Dagster Project Refactor</h3>\n<p>We did a major overhaul of our Dagster configuration to bring it closer to the framework&rsquo;s current best-practice recommendations, and also to experiment with the new <code class=\"docutils literal notranslate\"><span class=\"pre\">dg</span></code> CLI and <a class=\"reference external\" href=\"https://github.com/dagster-io/skills\">Dagster agent skills</a>.</p>\n<p>See issue <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5066\">#5066</a> for an overview of the issues involved, including issues <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5120\">#5120</a>, <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5123\">#5123</a> and PRs <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5071\">#5071</a>, <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5124\">#5124</a>, <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5153\">#5153</a>. This refactor includes the following changes:</p>\n<ul class=\"simple\">\n<li>\n<p><strong>Replaced the custom ``pudl_etl`` and ``ferc_to_sqlite`` CLI entry points</strong> with Dagster&rsquo;s official <code class=\"docutils literal notranslate\"><span class=\"pre\">dg</span> <span class=\"pre\">launch</span></code> tool. The old entry points assembled hand-crafted Dagster <code class=\"docutils literal notranslate\"><span class=\"pre\">run_config</span></code> dicts at runtime; <code class=\"docutils literal notranslate\"><span class=\"pre\">dg</span> <span class=\"pre\">launch</span></code> reads YAML config files that are version-controlled alongside the code. Four packaged config files are provided: <code class=\"docutils literal notranslate\"><span class=\"pre\">dg_fast.yml</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">dg_full.yml</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">dg_pytest.yml</span></code>, and <code class=\"docutils literal notranslate\"><span class=\"pre\">dg_nightly.yml</span></code>. Pixi convenience tasks (<code class=\"docutils literal notranslate\"><span class=\"pre\">pudl-with-ferc-to-sqlite</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">pudl-with-ferc-to-sqlite-nightly</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">ferc-to-sqlite</span></code>) wrap the most common invocations. The integration test suite now runs the ETL via <code class=\"docutils literal notranslate\"><span class=\"pre\">dg</span> <span class=\"pre\">launch</span></code> as a subprocess, so tests exercise exactly the same code path as production.</p>\n</li>\n<li>\n<p><strong>Consolidated the PUDL job graph.</strong> The previous <code class=\"docutils literal notranslate\"><span class=\"pre\">etl_fast</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">etl_full</span></code> jobs were thin wrappers assembled at import time. These are replaced by three top-level jobs defined directly in <code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">pudl.etl</span></code>: <code class=\"docutils literal notranslate\"><span class=\"pre\">ferc_to_sqlite</span></code> (raw FERC prerequisite databases only), <code class=\"docutils literal notranslate\"><span class=\"pre\">pudl</span></code> (the main PUDL ETL assuming those raw FERC databases already exist), and <code class=\"docutils literal notranslate\"><span class=\"pre\">pudl_with_ferc_to_sqlite</span></code> (end-to-end build in a single job). The FERC EQR pipeline is now the <code class=\"docutils literal notranslate\"><span class=\"pre\">ferceqr</span></code> job. Job selection and asset scoping is handled by <code class=\"docutils literal notranslate\"><span class=\"pre\">dg</span> <span class=\"pre\">launch</span></code> config files rather than by code.</p>\n</li>\n<li>\n<p><strong>Switched to Dagster config YAML files</strong> for all run configuration (what years to process, which datasets to include, resource settings). The settings flow is now: <code class=\"docutils literal notranslate\"><span class=\"pre\">dg</span> <span class=\"pre\">launch</span> <span class=\"pre\">--config</span> <span class=\"pre\">some_dg.yml</span></code> &rarr; <code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">pudl.resources.PudlEtlSettingsResource</span></code> loads a <code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">pudl.settings.EtlSettings</span></code> object from a path declared in that YAML &rarr; individual assets and IO managers read from the injected <code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EtlSettings</span></code>. This replaces the old pattern of serializing Pydantic models to raw <code class=\"docutils literal notranslate\"><span class=\"pre\">run_config</span></code> dicts, which required keeping Dagster config schemas manually in sync with the Pydantic models.</p>\n</li>\n<li>\n<p><strong>Updated Dagster resources and IO managers to use Pydantic-native</strong> <a class=\"reference external\" title=\"(in Dagster)\" href=\"https://docs.dagster.io/api/dagster/resources/#dagster.ConfigurableResource\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">dagster.ConfigurableResource</span></code></a> <strong>and</strong> <a class=\"reference external\" title=\"(in Dagster)\" href=\"https://docs.dagster.io/api/dagster/io-managers/#dagster.ConfigurableIOManager\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">dagster.ConfigurableIOManager</span></code></a> <strong>base classes.</strong> <code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">pudl.workspace.datastore.DatastoreResource</span></code> and <code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">pudl.workspace.datastore.ZenodoDoiSettingsResource</span></code> replace the legacy <code class=\"docutils literal notranslate\"><span class=\"pre\">@resource</span></code>-decorated functions; <code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">pudl.io_managers.PudlMixedFormatIOManager</span></code>, <code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">pudl.io_managers.FercDbfSqliteConfigurableIOManager</span></code>, and <code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">pudl.io_managers.FercXbrlSqliteConfigurableIOManager</span></code> replace the legacy <code class=\"docutils literal notranslate\"><span class=\"pre\">@io_manager</span></code> wrappers. Resources now receive settings via Pydantic field injection rather than via <a class=\"reference external\" title=\"(in Dagster)\" href=\"https://docs.dagster.io/api/dagster/resources/#dagster.build_init_resource_context\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">dagster.build_init_resource_context()</span></code></a> config dicts.</p>\n</li>\n<li>\n<p><strong>Added FERC SQLite provenance tracking</strong> via the new <code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">pudl.ferc_sqlite_provenance</span></code> module. Each time a FERC SQLite asset materializes, it records a fingerprint as <a class=\"reference external\" title=\"(in Dagster)\" href=\"https://docs.dagster.io/api/dagster/assets/#dagster.MaterializeResult\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">dagster.MaterializeResult</span></code></a> metadata: the Zenodo DOI of the source archive, the years included, and a hash of the ETL settings. When a downstream PUDL asset subsequently loads from that SQLite file, the IO manager checks the stored fingerprint against the current run&rsquo;s settings and raises a descriptive error if the DOIs, years, or settings are incompatible. This eliminates a class of silent correctness failures that occurred when stale FERC SQLite databases from a previous run were silently reused.</p>\n</li>\n<li>\n<p><strong>Replaced the ``disabled: true`` flag</strong> in FERC-to-SQLite settings with <code class=\"docutils literal notranslate\"><span class=\"pre\">years:</span> <span class=\"pre\">[]</span></code> (empty list). An empty <code class=\"docutils literal notranslate\"><span class=\"pre\">years</span></code> list is unambiguous &mdash; &ldquo;process zero years&rdquo; &mdash; and eliminates the need for a separate boolean field that had to be checked in addition to the years list. The <code class=\"docutils literal notranslate\"><span class=\"pre\">disabled</span></code> flag has been removed from all settings classes and YAML config files; FERC 2, 6, and 60 DBF/XBRL configs that previously used <code class=\"docutils literal notranslate\"><span class=\"pre\">disabled:</span> <span class=\"pre\">true</span></code> now use <code class=\"docutils literal notranslate\"><span class=\"pre\">years:</span> <span class=\"pre\">[]</span></code>.</p>\n</li>\n<li>\n<p><strong>Reorganized the integration test infrastructure</strong> in <code class=\"docutils literal notranslate\"><span class=\"pre\">tests/conftest.py</span></code>. The old approach ran the PUDL ETL in-process using <code class=\"docutils literal notranslate\"><span class=\"pre\">execute_in_process</span></code>, which bypassed the standard <code class=\"docutils literal notranslate\"><span class=\"pre\">dg</span> <span class=\"pre\">launch</span></code> entry point and required each test fixture to hand-assemble Dagster <code class=\"docutils literal notranslate\"><span class=\"pre\">run_config</span></code> dicts. All three FERC extraction fixtures and the <code class=\"docutils literal notranslate\"><span class=\"pre\">pudl_io_manager</span></code> fixture are replaced by a single <code class=\"docutils literal notranslate\"><span class=\"pre\">prebuilt_outputs</span></code> fixture that runs the full <code class=\"docutils literal notranslate\"><span class=\"pre\">pudl_with_ferc_to_sqlite</span></code> job via <code class=\"docutils literal notranslate\"><span class=\"pre\">dg</span> <span class=\"pre\">launch</span></code> as a subprocess, with coverage collection appended to the existing test coverage report. A persistent <a class=\"reference external\" title=\"(in Dagster)\" href=\"https://docs.dagster.io/api/dagster/internals/#dagster.DagsterInstance\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">dagster.DagsterInstance</span></code></a> fixture allows test code to read asset materialisation metadata written by that subprocess. Pytest CLI flags are renamed for clarity: <code class=\"docutils literal notranslate\"><span class=\"pre\">--live-dbs</span></code> &rarr; <code class=\"docutils literal notranslate\"><span class=\"pre\">--live-pudl-output</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">--tmp-data</span></code> &rarr; <code class=\"docutils literal notranslate\"><span class=\"pre\">--temp-pudl-input</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">--etl-settings</span></code> &rarr; <code class=\"docutils literal notranslate\"><span class=\"pre\">--dg-config</span></code>.</p>\n</li>\n<li>\n<p>Made <a class=\"reference internal\" title=\"pudl.dagster\" href=\"https://docs.catalyst.coop/pudl/en/stable/autoapi/pudl/dagster/index.html#module-pudl.dagster\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">pudl.dagster</span></code></a> the canonical Dagster orchestration package while keeping <a class=\"reference internal\" title=\"pudl.definitions\" href=\"https://docs.catalyst.coop/pudl/en/stable/autoapi/pudl/definitions/index.html#module-pudl.definitions\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">pudl.definitions</span></code></a> as the stable <code class=\"docutils literal notranslate\"><span class=\"pre\">dg</span></code> code location entrypoint. As part of this boundary cleanup, Dagster-specific resources (including the FERC EQR deployment sensor and the FERC EQR partition definition) were consolidated under <a class=\"reference internal\" title=\"pudl.dagster\" href=\"https://docs.catalyst.coop/pudl/en/stable/autoapi/pudl/dagster/index.html#module-pudl.dagster\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">pudl.dagster</span></code></a>, older top-level Dagster compatibility exposure was removed, and internal imports and documentation were updated to use <a class=\"reference internal\" title=\"pudl.dagster\" href=\"https://docs.catalyst.coop/pudl/en/stable/autoapi/pudl/dagster/index.html#module-pudl.dagster\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">pudl.dagster</span></code></a>. See issue <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5123\">#5123</a> and PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5124\">#5124</a>.</p>\n</li>\n<li>\n<p><strong>Cleaned up several legacy package boundaries</strong> that had accumulated over time. The <code class=\"docutils literal notranslate\"><span class=\"pre\">pudl.etl</span></code> package was removed after the Dagster refactor had already moved its substantive content elsewhere &mdash; what remained was foreign key validation and a continuity check helper that now live with the validation and asset-check code that actually uses them. The <code class=\"docutils literal notranslate\"><span class=\"pre\">pudl.convert</span></code> subpackage was an arbitrary grouping of two unrelated utilities; each was moved to the package that reflects what it actually does (extraction vs. documentation generation). The <code class=\"docutils literal notranslate\"><span class=\"pre\">pudl.validate</span></code> module grew into a subpackage to keep dbt orchestration, database integrity checks, and data quality utilities from being lumped together in a single file. See <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5123\">#5123</a> and PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5124\">#5124</a>.</p>\n</li>\n<li>\n<p><strong>Consolidated all CLI entry points under</strong> <code class=\"docutils literal notranslate\"><span class=\"pre\">src/pudl/scripts/</span></code>. Previously, <code class=\"docutils literal notranslate\"><span class=\"pre\">pudl_datastore</span></code> lived inside the datastore module and <code class=\"docutils literal notranslate\"><span class=\"pre\">pudl_service_territories</span></code> lived inside the analysis module &mdash; logical homes for the underlying logic, but inconvenient for anyone trying to find all the command-line tools in one place. All scripts are now thin wrappers in <code class=\"docutils literal notranslate\"><span class=\"pre\">src/pudl/scripts/</span></code>, with heavy imports deferred so <code class=\"docutils literal notranslate\"><span class=\"pre\">--help</span></code> is fast (or&hellip; will be, once we thin out the monstrous top-level PUDL imports). <code class=\"docutils literal notranslate\"><span class=\"pre\">pudl_datastore</span></code> also gained a new <code class=\"docutils literal notranslate\"><span class=\"pre\">--all</span></code> flag to download every known dataset without having to enumerate them explicitly. A unit test enforces many of these CLI conventions going forward. See <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5123\">#5123</a> and PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5124\">#5124</a>.</p>\n</li>\n<li>\n<p><strong>Renamed the ``eia_bulk_elec`` module to ``eiaapi_electricity``</strong> to match the naming of the underlying source. See <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5123\">#5123</a> and PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5124\">#5124</a>.</p>\n</li>\n<li>\n<p><strong>Standardized acronym capitalization in compound class names.</strong> Classes that combined two acronyms (e.g. <code class=\"docutils literal notranslate\"><span class=\"pre\">FERC</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">SQLite</span></code>) were inconsistently named. They now follow the Python convention of treating each acronym as a single title-cased word, so <code class=\"docutils literal notranslate\"><span class=\"pre\">SQLite</span></code> becomes <code class=\"docutils literal notranslate\"><span class=\"pre\">Sqlite</span></code> when it appears mid-name (e.g. <code class=\"docutils literal notranslate\"><span class=\"pre\">FercDbfSqliteConfigurableIOManager</span></code>). See <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/issues/5123\">#5123</a> and PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5124\">#5124</a>.</p>\n</li>\n<li>\n<p><strong>Renamed Pydantic settings classes from</strong> <code class=\"docutils literal notranslate\"><span class=\"pre\">*Settings</span></code> <strong>to</strong> <code class=\"docutils literal notranslate\"><span class=\"pre\">*DataConfig</span></code> <strong>and tightened container field names.</strong> The old names were too vague &mdash; these classes define <em>which data gets processed</em>, not general application settings. The new names make that explicit and align with Dagster&rsquo;s own <code class=\"docutils literal notranslate\"><span class=\"pre\">Config</span></code> naming convention. The top-level <code class=\"docutils literal notranslate\"><span class=\"pre\">EtlSettings</span></code> is now <code class=\"docutils literal notranslate\"><span class=\"pre\">GlobalDataConfig</span></code>; <code class=\"docutils literal notranslate\"><span class=\"pre\">DatasetsSettings</span></code> (the PUDL job) is now <code class=\"docutils literal notranslate\"><span class=\"pre\">PudlDataConfig</span></code>; and field names on the container classes drop redundant suffixes (e.g. <code class=\"docutils literal notranslate\"><span class=\"pre\">ferc_to_sqlite_settings</span></code> &rarr; <code class=\"docutils literal notranslate\"><span class=\"pre\">ferc_to_sqlite</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">datasets</span></code> &rarr; <code class=\"docutils literal notranslate\"><span class=\"pre\">pudl</span></code>). The data config and Dagster config YAML files are updated to match. See PR <a class=\"reference external\" href=\"https://github.com/catalyst-cooperative/pudl/pull/5153\">#5153</a>.</p>\n</li>\n</ul>\n\n<h2><strong>Other PUDL v2026.5.0 Resources</strong></h2>\n<ul>\n<li><a href=\"https://docs.catalyst.coop/pudl/en/v2026.5.0/data_dictionaries/pudl_db.html\">PUDL v2026.5.0 Data Dictionary</a></li>\n<li><a href=\"https://docs.catalyst.coop/pudl/en/v2026.5.0/\">PUDL v2026.5.0 Documentation</a></li>\n<li><a href=\"https://registry.opendata.aws/catalyst-cooperative-pudl/\">PUDL in the AWS Open Data Registry</a></li>\n<li>PUDL v2026.5.0 in a free, public AWS S3 bucket: s3://pudl.catalyst.coop/v2026.5.0/</li>\n<li>PUDL v2026.5.0 in a requester-pays GCS bucket: gs://pudl.catalyst.coop/v2026.5.0/</li>\n<li><a href=\"https://doi.org/10.5281/zenodo.20265825\">Zenodo archive of the PUDL GitHub repo for this release</a></li>\n<li><a href=\"https://github.com/catalyst-cooperative/pudl/releases/tag/v2026.5.0\">PUDL v2026.5.0 release on GitHub</a></li>\n</ul>\n<h2><strong>Contact Us</strong></h2>\n<p><strong>If you're using PUDL, we would love to hear from you!</strong> Even if it's just a note to let us know that you exist, and how you're using the software or data. Here's a bunch of different ways to get in touch:</p>\n<ul>\n<li><a href=\"https://github.com/catalyst-cooperative\">Follow us on GitHub</a></li>\n<li>Use the <a href=\"https://github.com/catalyst-cooperative/pudl/issues\">PUDL Github issue tracker</a> to let us know about any bugs or data issues you encounter</li>\n<li><a href=\"https://github.com/orgs/catalyst-cooperative/discussions\">GitHub Discussions</a> is where we provide user support.</li>\n<li>Watch our <a href=\"https://github.com/orgs/catalyst-cooperative/projects/9\">GitHub Project</a> to see what we're working on.</li>\n<li>Email us at <a href=\"mailto:hello@catalyst.coop\">hello@catalyst.coop</a> for private communications.</li>\n<li>On Mastodon: <a href=\"https://mastodon.energy/@catalystcoop\">@CatalystCoop@mastodon.energy</a></li>\n<li>On BlueSky: <a href=\"https://bsky.app/profile/catalyst.coop\">@catalyst.coop</a></li>\n<li>Connect with us <a href=\"https://www.linkedin.com/company/catalyst-cooperative/\">on LinkedIn</a></li>\n<li>Play with our data and notebooks <a href=\"https://www.kaggle.com/catalystcooperative\">on Kaggle</a></li>\n<li>Combine our data with ML models <a href=\"https://huggingface.co/catalystcooperative\">on HuggingFace</a></li>\n<li>Learn more about us on our website: <a href=\"https://catalyst.coop\">https://catalyst.coop</a></li>\n<li>Subscribe to our announcements list for <a href=\"https://catalyst.coop/updates\">email updates</a>.</li>\n</ul>",
    "languages": [
      {
        "id": "eng",
        "title": {
          "en": "English"
        }
      }
    ],
    "publication_date": "2026-05-18",
    "publisher": "Zenodo",
    "resource_type": {
      "id": "dataset",
      "title": {
        "de": "Datensatz",
        "en": "Dataset"
      }
    },
    "rights": [
      {
        "description": {
          "en": "The Creative Commons Attribution license allows re-distribution and re-use of a licensed work on the condition that the creator is appropriately credited."
        },
        "icon": "cc-by-icon",
        "id": "cc-by-4.0",
        "props": {
          "scheme": "spdx",
          "url": "https://creativecommons.org/licenses/by/4.0/legalcode"
        },
        "title": {
          "en": "Creative Commons Attribution 4.0 International"
        }
      }
    ],
    "subjects": [
      {
        "subject": "electricity"
      },
      {
        "subject": "energy"
      },
      {
        "subject": "regulation"
      },
      {
        "subject": "policy"
      },
      {
        "subject": "finance"
      },
      {
        "subject": "fuel"
      },
      {
        "subject": "coal"
      },
      {
        "subject": "natural gas"
      },
      {
        "subject": "wind"
      },
      {
        "subject": "solar"
      },
      {
        "subject": "battery"
      },
      {
        "subject": "storage"
      },
      {
        "subject": "hydro"
      },
      {
        "subject": "transmission"
      },
      {
        "subject": "generation"
      },
      {
        "subject": "FERC"
      },
      {
        "subject": "EIA"
      },
      {
        "subject": "EPA"
      },
      {
        "subject": "PHMSA"
      },
      {
        "subject": "United States"
      },
      {
        "subject": "economics"
      }
    ],
    "title": "Public Utility Data Liberation Project (PUDL) Data Release",
    "version": "v2026.5.0"
  },
  "parent": {
    "access": {
      "owned_by": {
        "user": "90379"
      },
      "settings": {
        "accept_conditions_text": null,
        "allow_guest_requests": false,
        "allow_user_requests": false,
        "secret_link_expiration": 0
      }
    },
    "communities": {
      "default": "14454015-63f1-4f05-80fd-1a9b07593c9e",
      "entries": [
        {
          "access": {
            "member_policy": "open",
            "members_visibility": "public",
            "record_submission_policy": "open",
            "review_policy": "open",
            "visibility": "public"
          },
          "children": {
            "allow": false
          },
          "created": "2019-09-21T05:35:44.121011+00:00",
          "custom_fields": {},
          "deletion_status": {
            "is_deleted": false,
            "status": "P"
          },
          "id": "14454015-63f1-4f05-80fd-1a9b07593c9e",
          "links": {},
          "metadata": {
            "curation_policy": "<p>This community is meant to house the official releases of resources produced by Catalyst Cooperative.</p>",
            "description": "Resources generated and archived by the Catalyst Cooperative, mostly related to open energy data, especially pertaining to the US electricity system.",
            "title": "Catalyst Cooperative",
            "type": {
              "id": "organization"
            },
            "website": "https://catalyst.coop"
          },
          "revision_id": 1,
          "slug": "catalyst-cooperative",
          "updated": "2023-10-13T15:20:15.304590+00:00"
        }
      ],
      "ids": [
        "14454015-63f1-4f05-80fd-1a9b07593c9e"
      ]
    },
    "id": "3653158",
    "pids": {
      "doi": {
        "client": "datacite",
        "identifier": "10.5281/zenodo.3653158",
        "provider": "datacite"
      }
    }
  },
  "pids": {
    "doi": {
      "client": "datacite",
      "identifier": "10.5281/zenodo.20275549",
      "provider": "datacite"
    },
    "oai": {
      "identifier": "oai:zenodo.org:20275549",
      "provider": "oai"
    }
  },
  "revision_id": 4,
  "stats": {
    "all_versions": {
      "data_volume": 25693993731843.0,
      "downloads": 28433,
      "unique_downloads": 26984,
      "unique_views": 16206,
      "views": 18037
    },
    "this_version": {
      "data_volume": 123188091879.0,
      "downloads": 233,
      "unique_downloads": 229,
      "unique_views": 51,
      "views": 52
    }
  },
  "status": "published",
  "swh": {},
  "updated": "2026-05-18T18:46:34.827130+00:00",
  "versions": {
    "index": 26,
    "is_latest": true
  }
}