{
  "date": "2026-11-01",
  "python_version": "3.13.14",
  "fixture": {
    "path": "F:\\CodexWork\\jsontocsvtool\\drafts\\2026-11-01-null-empty-object\\null-empty-object-fixture.json",
    "sha256": "2a78d195b75a9c4ee81ad53b75b918123c1b67a00dbe4f4c8b79828a1a1be94c",
    "bytes": 179,
    "record_count": 5
  },
  "explicit_output": {
    "path": "F:\\CodexWork\\jsontocsvtool\\drafts\\2026-11-01-null-empty-object\\null-empty-object-output.csv",
    "sha256": "f222a3e0c89456c49160ea753335715a752e28ebdc742f64a79926b3daf48284",
    "bytes": 172,
    "columns": 4,
    "data_rows": 5,
    "schema": [
      "id",
      "meta_state",
      "meta_key_count",
      "meta_json"
    ]
  },
  "naive_output": {
    "path": "F:\\CodexWork\\jsontocsvtool\\drafts\\2026-11-01-null-empty-object\\null-empty-object-naive.csv",
    "sha256": "030ec260c75ee84a0b4414707bb4f9085876244664992034648d105e9f48170b",
    "bytes": 70,
    "columns": 2,
    "data_rows": 5,
    "schema": [
      "id",
      "meta"
    ]
  },
  "verification": {
    "all_pass": true,
    "row_results": [
      {
        "row": 0,
        "id": "R01",
        "source_type": "null",
        "expected_state": "null",
        "csv_state": "null",
        "expected_key_count": 0,
        "csv_key_count": 0,
        "expected_json": "null",
        "csv_json": "null",
        "checks": {
          "id": true,
          "meta_state": true,
          "meta_key_count": true,
          "meta_json": true
        },
        "pass": true
      },
      {
        "row": 1,
        "id": "R02",
        "source_type": "dict",
        "expected_state": "empty_object",
        "csv_state": "empty_object",
        "expected_key_count": 0,
        "csv_key_count": 0,
        "expected_json": "{}",
        "csv_json": "{}",
        "checks": {
          "id": true,
          "meta_state": true,
          "meta_key_count": true,
          "meta_json": true
        },
        "pass": true
      },
      {
        "row": 2,
        "id": "R03",
        "source_type": "dict",
        "expected_state": "object",
        "csv_state": "object",
        "expected_key_count": 2,
        "csv_key_count": 2,
        "expected_json": "{\"role\": \"admin\", \"level\": 3}",
        "csv_json": "{\"role\": \"admin\", \"level\": 3}",
        "checks": {
          "id": true,
          "meta_state": true,
          "meta_key_count": true,
          "meta_json": true
        },
        "pass": true
      },
      {
        "row": 3,
        "id": "R04",
        "source_type": "null",
        "expected_state": "null",
        "csv_state": "null",
        "expected_key_count": 0,
        "csv_key_count": 0,
        "expected_json": "null",
        "csv_json": "null",
        "checks": {
          "id": true,
          "meta_state": true,
          "meta_key_count": true,
          "meta_json": true
        },
        "pass": true
      },
      {
        "row": 4,
        "id": "R05",
        "source_type": "dict",
        "expected_state": "empty_object",
        "csv_state": "empty_object",
        "expected_key_count": 0,
        "csv_key_count": 0,
        "expected_json": "{}",
        "csv_json": "{}",
        "checks": {
          "id": true,
          "meta_state": true,
          "meta_key_count": true,
          "meta_json": true
        },
        "pass": true
      }
    ]
  },
  "naive_problem": {
    "description": "Naive exporter writes blank cell for both null and {}; the two are indistinguishable in CSV",
    "affected_records": [
      "R01",
      "R02",
      "R04",
      "R05"
    ]
  },
  "sources": [
    "https://www.rfc-editor.org/rfc/rfc8259#section-3",
    "https://docs.python.org/3.13/library/csv.html"
  ]
}