{
  "reportSchema": "book-preflight-studio/report/v1",
  "projectId": "217199ed-cf0e-43e7-b046-6907befe1405",
  "projectName": "Synthetic Preflight Notebook",
  "inputName": "synthetic-preflight-demo.epub",
  "inputHash": "02df6dc57cfd41046e3698a9e9149f47a69d528ab2c11c0d03723481f6cac19b",
  "inputSize": 1681,
  "revision": 1,
  "epubVersion": "3.0",
  "packagePath": "EPUB/package.opf",
  "metadata": {
    "title": "Synthetic Preflight Notebook",
    "creator": "Book Preflight Studio synthetic fixture",
    "language": "en",
    "identifier": "urn:uuid:62da1f2a-971e-48d2-807c-9ec17ea76987"
  },
  "coverage": {
    "status": "PARTIAL",
    "scope": [
      "Bounded ZIP/CRC/path and UTF-8 XML safety checks",
      "Built-in EPUB2/3 package, manifest, spine, basic navigation and internal-reference checks",
      "Human-approved container-only repairs; original content is immutable"
    ],
    "limitations": [
      "Built-in checks do not replace official EPUBCheck.",
      "Ace accessibility checks and manual accessibility review are not completed.",
      "No layout, font rendering, store approval or WCAG/EAA certification is provided.",
      "No DTD, encrypted/font-obfuscated, digitally signed, ZIP64 or multiple-rendition publications in this profile.",
      "Manifest resources must be local to the container; remote/data/file-scheme resources are outside this offline profile.",
      "Preview is inert plain text, not a reading-system rendering."
    ],
    "warnings": []
  },
  "findings": [
    {
      "id": "epub-6c0092f7bc093de500521541",
      "ruleId": "MIMETYPE_FIRST",
      "origin": "BUILTIN",
      "severity": "ERROR",
      "path": "mimetype",
      "message": "The mimetype entry is not the first ZIP entry.",
      "explanation": "The EPUB container marker must be first.",
      "suggestion": "Approve the container-only repair.",
      "status": "UNREVIEWED",
      "note": "",
      "history": [],
      "fingerprint": "6c0092f7bc093de5005215419a7f365df17b387efe27d44a542f969a498b7f3e",
      "revision": 1,
      "repairId": "repair-158458b980fc347add6dc309"
    },
    {
      "id": "epub-541223605e620d52b2ace2fc",
      "ruleId": "MIMETYPE_STORED",
      "origin": "BUILTIN",
      "severity": "ERROR",
      "path": "mimetype",
      "message": "The mimetype entry is compressed or has an extra field.",
      "explanation": "OCF requires an uncompressed marker without ZIP extra fields.",
      "suggestion": "Approve the container-only repair.",
      "status": "UNREVIEWED",
      "note": "",
      "history": [],
      "fingerprint": "541223605e620d52b2ace2fc45e6b65c69f24fb8353cff32c1807c340893b64b",
      "revision": 1,
      "repairId": "repair-4cb3ce2e1eed02b9516d74b1"
    },
    {
      "id": "epub-9817287d946b52706d60912a",
      "ruleId": "MIMETYPE_CONTENT",
      "origin": "BUILTIN",
      "severity": "ERROR",
      "path": "mimetype",
      "message": "The mimetype bytes are not exactly application/epub+zip.",
      "explanation": "Padding and BOM are not allowed in the reserved marker.",
      "suggestion": "Approve removal of the proven padding.",
      "status": "UNREVIEWED",
      "note": "",
      "history": [],
      "fingerprint": "9817287d946b52706d60912ac3783f290ac5b57052c04f8e3b9b20b50c2d938a",
      "revision": 1,
      "repairId": "repair-d346be7e0c25714d12a02249"
    },
    {
      "id": "epub-0985c1f2eeb4654b848080cf",
      "ruleId": "LINK_MISSING",
      "origin": "BUILTIN",
      "severity": "ERROR",
      "path": "EPUB/chapter-1.xhtml",
      "line": 1,
      "message": "Internal reference is missing: EPUB/missing-chapter.xhtml",
      "explanation": "The referenced resource is not in the snapshot.",
      "suggestion": "Restore the intended target in the EPUB editor.",
      "status": "UNREVIEWED",
      "note": "",
      "history": [],
      "fingerprint": "0985c1f2eeb4654b848080cfd83b9a5432b587b083ed04e42cbcdeffe1d8365f",
      "revision": 1,
      "repairId": "repair-0635ad0403b89b9070925187",
      "quote": "missing-chapter.xhtml"
    },
    {
      "id": "external-74f4f7a1f16d7b8e5eea4971",
      "ruleId": "PKG-006",
      "origin": "EPUBCHECK",
      "severity": "ERROR",
      "originalSeverity": "ERROR",
      "path": "./input.epub",
      "message": "Mimetype file entry is missing or is not the first file in the archive.",
      "explanation": "EPUBCheck 5.3.0; COMPLETED; LOCAL_SNAPSHOT",
      "suggestion": "Review this finding in the source editor.",
      "status": "UNREVIEWED",
      "note": "",
      "history": [],
      "fingerprint": "74f4f7a1f16d7b8e5eea497145c2174a879fc348b6af4c2e78bcb86fdc7ffa85",
      "revision": 1
    },
    {
      "id": "external-dfea30e0ffd7cd382eb78561",
      "ruleId": "PKG-007",
      "origin": "EPUBCHECK",
      "severity": "ERROR",
      "originalSeverity": "ERROR",
      "path": "./input.epub",
      "message": "Mimetype file should only contain the string \"application/epub+zip\" and should not be compressed.",
      "explanation": "EPUBCheck 5.3.0; COMPLETED; LOCAL_SNAPSHOT",
      "suggestion": "Review this finding in the source editor.",
      "status": "UNREVIEWED",
      "note": "",
      "history": [],
      "fingerprint": "dfea30e0ffd7cd382eb785610698616da6d5a276d31f0d70ead672e7a9d4eea5",
      "revision": 1
    },
    {
      "id": "external-afdaf3dae57ee66ffd06d811",
      "ruleId": "RSC-007",
      "origin": "EPUBCHECK",
      "severity": "ERROR",
      "originalSeverity": "ERROR",
      "path": "EPUB/chapter-1.xhtml",
      "line": 1,
      "column": 306,
      "message": "Referenced resource \"EPUB/missing-chapter.xhtml\" could not be found in the EPUB.",
      "explanation": "EPUBCheck 5.3.0; COMPLETED; LOCAL_SNAPSHOT",
      "suggestion": "Review this finding in the source editor.",
      "status": "UNREVIEWED",
      "note": "",
      "history": [],
      "fingerprint": "afdaf3dae57ee66ffd06d811fa2b5f95489b0d67993ea07aea75e6321760038d",
      "revision": 1
    }
  ],
  "historicalFindings": [],
  "repairs": [
    {
      "id": "repair-158458b980fc347add6dc309",
      "ruleId": "MIMETYPE_FIRST",
      "kind": "MIMETYPE_FIRST",
      "inputHash": "02df6dc57cfd41046e3698a9e9149f47a69d528ab2c11c0d03723481f6cac19b",
      "title": "Place mimetype first",
      "description": "Move only the container marker to the first ZIP position.",
      "preconditions": [
        "Input hash matches the immutable snapshot",
        "Unique mimetype entry; no encryption or signatures",
        "All unmodified resource payloads remain byte-identical"
      ],
      "expectedFiles": [
        "mimetype"
      ],
      "proposedDiff": "ZIP order: position 5 → position 1; other resources unchanged.",
      "risk": "SAFE_AUTOFIX",
      "decision": "PROPOSED",
      "humanApproved": false,
      "rollbackPlan": "Discard the proposed copy; the original file and snapshot are unchanged."
    },
    {
      "id": "repair-4cb3ce2e1eed02b9516d74b1",
      "ruleId": "MIMETYPE_STORED",
      "kind": "MIMETYPE_STORED",
      "inputHash": "02df6dc57cfd41046e3698a9e9149f47a69d528ab2c11c0d03723481f6cac19b",
      "title": "Store mimetype without compression",
      "description": "Store the marker using ZIP method0 and no extra field.",
      "preconditions": [
        "Input hash matches the immutable snapshot",
        "Unique mimetype entry; no encryption or signatures",
        "All unmodified resource payloads remain byte-identical"
      ],
      "expectedFiles": [
        "mimetype"
      ],
      "proposedDiff": "mimetype: compression 8 → 0 (STORED); local extra-field bytes 0 → 0.",
      "risk": "SAFE_AUTOFIX",
      "decision": "PROPOSED",
      "humanApproved": false,
      "rollbackPlan": "Discard the proposed copy; the original file and snapshot are unchanged."
    },
    {
      "id": "repair-d346be7e0c25714d12a02249",
      "ruleId": "MIMETYPE_CANONICAL_BYTES",
      "kind": "MIMETYPE_CANONICAL_BYTES",
      "inputHash": "02df6dc57cfd41046e3698a9e9149f47a69d528ab2c11c0d03723481f6cac19b",
      "title": "Remove mimetype padding",
      "description": "Remove only the BOM or exterior ASCII whitespace around the correct marker.",
      "preconditions": [
        "Input hash matches the immutable snapshot",
        "Unique mimetype entry; no encryption or signatures",
        "All unmodified resource payloads remain byte-identical"
      ],
      "expectedFiles": [
        "mimetype"
      ],
      "proposedDiff": "mimetype bytes: \"﻿application/epub+zip\\n\" → \"application/epub+zip\"",
      "risk": "SAFE_AUTOFIX",
      "decision": "PROPOSED",
      "humanApproved": false,
      "rollbackPlan": "Discard the proposed copy; the original file and snapshot are unchanged."
    },
    {
      "id": "repair-0635ad0403b89b9070925187",
      "ruleId": "MANUAL",
      "kind": "MANUAL",
      "inputHash": "02df6dc57cfd41046e3698a9e9149f47a69d528ab2c11c0d03723481f6cac19b",
      "title": "Review broken link in EPUB/chapter-1.xhtml",
      "description": "The target EPUB/missing-chapter.xhtml is absent; the engine will not guess another file.",
      "preconditions": [
        "Input hash matches the immutable snapshot",
        "Unique mimetype entry; no encryption or signatures",
        "All unmodified resource payloads remain byte-identical"
      ],
      "expectedFiles": [],
      "proposedDiff": "Unresolved target: missing-chapter.xhtml; no automatic change.",
      "risk": "MANUAL_ACTION_REQUIRED",
      "decision": "PROPOSED",
      "humanApproved": false,
      "rollbackPlan": "Discard the proposed copy; the original file and snapshot are unchanged."
    }
  ],
  "validatorRuns": [
    {
      "origin": "ACE",
      "tool": "Ace by DAISY",
      "version": null,
      "status": "NOT_RUN",
      "executionMode": "NOT_RUN",
      "binding": "LOCAL_SNAPSHOT",
      "coverage": "NOT_RUN",
      "inputHash": "02df6dc57cfd41046e3698a9e9149f47a69d528ab2c11c0d03723481f6cac19b",
      "startedAt": "2026-11-05T09:23:53.313Z",
      "finishedAt": "2026-11-05T09:23:53.313Z",
      "exitCode": null,
      "notes": [
        "Ace was not run; use the separately installed tool and manual accessibility review.",
        "No accessibility certification or manual review was performed."
      ]
    },
    {
      "origin": "EPUBCHECK",
      "tool": "EPUBCheck",
      "version": "5.3.0",
      "status": "COMPLETED",
      "executionMode": "LOCAL_PROCESS",
      "binding": "LOCAL_SNAPSHOT",
      "coverage": "COMPLETE_FOR_TOOL_SCOPE",
      "inputHash": "02df6dc57cfd41046e3698a9e9149f47a69d528ab2c11c0d03723481f6cac19b",
      "startedAt": "2026-11-05T09:23:53.314Z",
      "finishedAt": "2026-11-05T09:23:59.564Z",
      "exitCode": 1,
      "notes": [
        "Official EPUBCheck completed for its declared rule scope; this is not publication approval or accessibility certification.",
        "Separate process and Java heap limits are not an OS/network sandbox. Tool digest covers the JAR only, not bundled dependencies."
      ],
      "toolHash": "f7f96617c929371821609b88c8484d6dc9f24fe916499863c46094c5fb778a65"
    }
  ],
  "lastExport": null,
  "manualChecklist": [
    "Review chapters, reading order and navigation.",
    "Review images, alternative text, fonts and embedded-resource licenses.",
    "Check internal and external links in the source editor.",
    "Preview in the destination’s official reading systems/devices.",
    "Complete manual accessibility evaluation and destination-specific requirements."
  ],
  "notice": "Built-in checks do not replace EPUBCheck, Ace or manual review. No publication approval, perfect rendering or accessibility certification is guaranteed. AI suggestions are not automatic repairs."
}