{
  "$schema": "https://loremfile.dev/schema/manifest-v1.json",
  "schema_version": 1,
  "catalog_version": "1.2.0",
  "generated_at": "2026-09-22T06:59:34Z",
  "base_url": "https://loremfile.dev/",
  "license": "CC0-1.0",
  "license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
  "source": "https://github.com/kumarprabhashanand/loremfile",
  "toolchain_image": "ghcr.io/kumarprabhashanand/loremfile-toolchain@sha256:1d66d83de2483700858745a9d27120af001588019882098eb67a301fdd2f2ad6",
  "count": 19,
  "total_bytes": 1002742,
  "fixtures": [
    {
      "path": "edge/csv-ragged-rows.csv",
      "url": "https://loremfile.dev/edge/csv-ragged-rows.csv",
      "format": "edge",
      "ext": "csv",
      "mime": "text/csv; charset=utf-8",
      "bytes": 65,
      "sha256": "9244d4cbab1ecaa017abf973bd9c84af96c2173f3641ac20c41e09dc01d28a99",
      "size_class": "free",
      "phase": 1,
      "description": "A CSV whose rows carry different field counts: one short, one long.",
      "tags": [
        "data",
        "invalid"
      ],
      "edge_case": true,
      "props": {
        "defect": "invalid-syntax",
        "intended_format": "csv",
        "bytes": 65
      },
      "generator": "edge.csv_ragged_rows",
      "generator_params": {},
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/jpg-truncated-50pct.jpg",
      "url": "https://loremfile.dev/edge/jpg-truncated-50pct.jpg",
      "format": "edge",
      "ext": "jpg",
      "mime": "image/jpeg",
      "bytes": 7496,
      "sha256": "cc4e1314fe88d3d09fafad05845ea00b152a916962939a5673423a8cdcbf293e",
      "size_class": "free",
      "phase": 1,
      "description": "The first half of jpg/640x480.jpg: scan data ends with no end-of-image marker.",
      "tags": [
        "image",
        "truncated"
      ],
      "edge_case": true,
      "props": {
        "defect": "truncated",
        "intended_format": "jpg",
        "bytes": 7496,
        "fraction": 0.5
      },
      "generator": "edge.truncated",
      "generator_params": {
        "source": "jpg/640x480.jpg",
        "fraction": 0.5
      },
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/json-bom.json",
      "url": "https://loremfile.dev/edge/json-bom.json",
      "format": "edge",
      "ext": "json",
      "mime": "application/json; charset=utf-8",
      "bytes": 80,
      "sha256": "f5f8c80d2a1ae06f3688cee56c6ee09eed3586e9c41b17c5af272d0411ca9b6a",
      "size_class": "free",
      "phase": 1,
      "description": "Valid JSON preceded by a UTF-8 byte-order mark, which RFC 8259 does not allow.",
      "tags": [
        "data",
        "encoding"
      ],
      "edge_case": true,
      "props": {
        "defect": "bom",
        "intended_format": "json",
        "bytes": 80
      },
      "generator": "edge.json_bom",
      "generator_params": {},
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/json-trailing-comma.json",
      "url": "https://loremfile.dev/edge/json-trailing-comma.json",
      "format": "edge",
      "ext": "json",
      "mime": "application/json; charset=utf-8",
      "bytes": 64,
      "sha256": "1530058a5dcb98221617a8ecfcecaf43a488bd4fb740d39a5a5fbc26a7c5f042",
      "size_class": "free",
      "phase": 1,
      "description": "JSON with a trailing comma in an array and an object: valid JavaScript, invalid JSON.",
      "tags": [
        "data",
        "invalid"
      ],
      "edge_case": true,
      "props": {
        "defect": "invalid-syntax",
        "intended_format": "json",
        "bytes": 64
      },
      "generator": "edge.json_trailing_comma",
      "generator_params": {},
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/mp4-truncated-50pct.mp4",
      "url": "https://loremfile.dev/edge/mp4-truncated-50pct.mp4",
      "format": "edge",
      "ext": "mp4",
      "mime": "video/mp4",
      "bytes": 987287,
      "sha256": "5e7ce6d14210ed3d2c9d85d00b3274b26616f65aac7f636ab34ee62c9d3d8e7c",
      "size_class": "free",
      "phase": 1,
      "description": "The first half of mp4/720p-5s.mp4: a partial media stream inside a box that claims more.",
      "tags": [
        "video",
        "truncated"
      ],
      "edge_case": true,
      "props": {
        "defect": "truncated",
        "intended_format": "mp4",
        "bytes": 987287,
        "fraction": 0.5
      },
      "generator": "edge.truncated",
      "generator_params": {
        "source": "mp4/720p-5s.mp4",
        "fraction": 0.5
      },
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/pdf-truncated-60pct.pdf",
      "url": "https://loremfile.dev/edge/pdf-truncated-60pct.pdf",
      "format": "edge",
      "ext": "pdf",
      "mime": "application/pdf",
      "bytes": 2610,
      "sha256": "6fe887efddee486a18728ba1af3ed693cc04b28eca383d682e7a365f7c7fd0f2",
      "size_class": "free",
      "phase": 1,
      "description": "The first 60% of pdf/a4-3pages.pdf: the header reads, then the file stops mid-object.",
      "tags": [
        "document",
        "truncated"
      ],
      "edge_case": true,
      "props": {
        "defect": "truncated",
        "intended_format": "pdf",
        "bytes": 2610,
        "fraction": 0.6
      },
      "generator": "edge.truncated",
      "generator_params": {
        "source": "pdf/a4-3pages.pdf",
        "fraction": 0.6
      },
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/pdf-with-png-extension.png",
      "url": "https://loremfile.dev/edge/pdf-with-png-extension.png",
      "format": "edge",
      "ext": "png",
      "mime": "image/png",
      "bytes": 1795,
      "sha256": "0c547013439f2cf2c21e675485907ce0809da702dd75921afcc81a5fb46721e9",
      "size_class": "free",
      "phase": 1,
      "description": "The bytes of pdf/a4-1page.pdf under a .png name, served as image/png.",
      "tags": [
        "document",
        "mismatched"
      ],
      "edge_case": true,
      "props": {
        "defect": "mismatched-extension",
        "intended_format": "pdf",
        "bytes": 1795
      },
      "generator": "edge.copied",
      "generator_params": {
        "source": "pdf/a4-1page.pdf"
      },
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/png-with-pdf-extension.pdf",
      "url": "https://loremfile.dev/edge/png-with-pdf-extension.pdf",
      "format": "edge",
      "ext": "pdf",
      "mime": "application/pdf",
      "bytes": 1387,
      "sha256": "aad08c4f806eefeccf9bcec1430b4fe2a55ee176ff154c3999541f971b178b56",
      "size_class": "free",
      "phase": 1,
      "description": "The bytes of png/100x100.png under a .pdf name, served as application/pdf.",
      "tags": [
        "image",
        "mismatched"
      ],
      "edge_case": true,
      "props": {
        "defect": "mismatched-extension",
        "intended_format": "png",
        "bytes": 1387
      },
      "generator": "edge.copied",
      "generator_params": {
        "source": "png/100x100.png"
      },
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/utf8-invalid-bytes.txt",
      "url": "https://loremfile.dev/edge/utf8-invalid-bytes.txt",
      "format": "edge",
      "ext": "txt",
      "mime": "text/plain; charset=utf-8",
      "bytes": 143,
      "sha256": "a8ae0f5961fb30c7e39edeaa5647a459b6fbfad242da392b4ea18ffdfe4aea1b",
      "size_class": "free",
      "phase": 1,
      "description": "Text served as UTF-8 that contains byte sequences UTF-8 does not allow.",
      "tags": [
        "text",
        "encoding"
      ],
      "edge_case": true,
      "props": {
        "defect": "invalid-encoding",
        "intended_format": "txt",
        "bytes": 143
      },
      "generator": "edge.utf8_invalid_bytes",
      "generator_params": {},
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/xml-unclosed-tag.xml",
      "url": "https://loremfile.dev/edge/xml-unclosed-tag.xml",
      "format": "edge",
      "ext": "xml",
      "mime": "application/xml; charset=utf-8",
      "bytes": 122,
      "sha256": "34ecd6048dd18aaa5ef43b0fa2644896e6bf7a90a0713fe3022c996c782ae5cb",
      "size_class": "free",
      "phase": 1,
      "description": "XML with an element that is never closed, so it is not well-formed.",
      "tags": [
        "data",
        "invalid"
      ],
      "edge_case": true,
      "props": {
        "defect": "invalid-syntax",
        "intended_format": "xml",
        "bytes": 122
      },
      "generator": "edge.xml_unclosed_tag",
      "generator_params": {},
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/zero-byte.csv",
      "url": "https://loremfile.dev/edge/zero-byte.csv",
      "format": "edge",
      "ext": "csv",
      "mime": "text/csv; charset=utf-8",
      "bytes": 0,
      "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "size_class": "free",
      "phase": 1,
      "description": "An empty file served as text/csv, with no header row.",
      "tags": [
        "data",
        "invalid"
      ],
      "edge_case": true,
      "props": {
        "defect": "zero-byte",
        "intended_format": "csv",
        "bytes": 0
      },
      "generator": "edge.zero_byte",
      "generator_params": {},
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/zero-byte.json",
      "url": "https://loremfile.dev/edge/zero-byte.json",
      "format": "edge",
      "ext": "json",
      "mime": "application/json; charset=utf-8",
      "bytes": 0,
      "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "size_class": "free",
      "phase": 1,
      "description": "An empty file served as application/json, where a parser expects at least a value.",
      "tags": [
        "data",
        "invalid"
      ],
      "edge_case": true,
      "props": {
        "defect": "zero-byte",
        "intended_format": "json",
        "bytes": 0
      },
      "generator": "edge.zero_byte",
      "generator_params": {},
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/zero-byte.mp4",
      "url": "https://loremfile.dev/edge/zero-byte.mp4",
      "format": "edge",
      "ext": "mp4",
      "mime": "video/mp4",
      "bytes": 0,
      "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "size_class": "free",
      "phase": 1,
      "description": "An empty file served as video/mp4.",
      "tags": [
        "video",
        "invalid"
      ],
      "edge_case": true,
      "props": {
        "defect": "zero-byte",
        "intended_format": "mp4",
        "bytes": 0
      },
      "generator": "edge.zero_byte",
      "generator_params": {},
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/zero-byte.pdf",
      "url": "https://loremfile.dev/edge/zero-byte.pdf",
      "format": "edge",
      "ext": "pdf",
      "mime": "application/pdf",
      "bytes": 0,
      "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "size_class": "free",
      "phase": 1,
      "description": "An empty file served as application/pdf.",
      "tags": [
        "document",
        "invalid"
      ],
      "edge_case": true,
      "props": {
        "defect": "zero-byte",
        "intended_format": "pdf",
        "bytes": 0
      },
      "generator": "edge.zero_byte",
      "generator_params": {},
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/zero-byte.png",
      "url": "https://loremfile.dev/edge/zero-byte.png",
      "format": "edge",
      "ext": "png",
      "mime": "image/png",
      "bytes": 0,
      "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "size_class": "free",
      "phase": 1,
      "description": "An empty file served as image/png.",
      "tags": [
        "image",
        "invalid"
      ],
      "edge_case": true,
      "props": {
        "defect": "zero-byte",
        "intended_format": "png",
        "bytes": 0
      },
      "generator": "edge.zero_byte",
      "generator_params": {},
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/zero-byte.txt",
      "url": "https://loremfile.dev/edge/zero-byte.txt",
      "format": "edge",
      "ext": "txt",
      "mime": "text/plain; charset=utf-8",
      "bytes": 0,
      "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "size_class": "free",
      "phase": 1,
      "description": "An empty file served as text/plain.",
      "tags": [
        "text",
        "invalid"
      ],
      "edge_case": true,
      "props": {
        "defect": "zero-byte",
        "intended_format": "txt",
        "bytes": 0
      },
      "generator": "edge.zero_byte",
      "generator_params": {},
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/zero-byte.zip",
      "url": "https://loremfile.dev/edge/zero-byte.zip",
      "format": "edge",
      "ext": "zip",
      "mime": "application/zip",
      "bytes": 0,
      "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "size_class": "free",
      "phase": 1,
      "description": "An empty file served as application/zip, with not even an end-of-central-directory record.",
      "tags": [
        "archive",
        "invalid"
      ],
      "edge_case": true,
      "props": {
        "defect": "zero-byte",
        "intended_format": "zip",
        "bytes": 0
      },
      "generator": "edge.zero_byte",
      "generator_params": {},
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/zip-directory-traversal-name.zip",
      "url": "https://loremfile.dev/edge/zip-directory-traversal-name.zip",
      "format": "edge",
      "ext": "zip",
      "mime": "application/zip",
      "bytes": 782,
      "sha256": "d59046db73a6587cf4cd27b313a7a3c9e6217425c22400c73c129277423eacee",
      "size_class": "free",
      "phase": 1,
      "description": "A readable zip holding an entry named ../evil.txt. An extractor that joins entry names to a destination without sanitising them writes outside that directory.",
      "tags": [
        "archive",
        "invalid"
      ],
      "edge_case": true,
      "props": {
        "defect": "hostile-name",
        "intended_format": "zip",
        "bytes": 782,
        "hostile_entries": [
          "../evil.txt"
        ]
      },
      "generator": "edge.zip_traversal_name",
      "generator_params": {},
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    },
    {
      "path": "edge/zip-truncated-50pct.zip",
      "url": "https://loremfile.dev/edge/zip-truncated-50pct.zip",
      "format": "edge",
      "ext": "zip",
      "mime": "application/zip",
      "bytes": 911,
      "sha256": "2589429530f531890bb47b74077884cd27ca3c85665fe522ea399ae6d757bbc4",
      "size_class": "free",
      "phase": 1,
      "description": "The first half of zip/3-text-files.zip: local headers survive, the central directory does not.",
      "tags": [
        "archive",
        "truncated"
      ],
      "edge_case": true,
      "props": {
        "defect": "truncated",
        "intended_format": "zip",
        "bytes": 911,
        "fraction": 0.5
      },
      "generator": "edge.truncated",
      "generator_params": {
        "source": "zip/3-text-files.zip",
        "fraction": 0.5
      },
      "added_in": "1.1.0",
      "status": "active",
      "deprecated": false,
      "supersededBy": null
    }
  ]
}
