{
  "edition": "complete-reference-08",
  "executed_utc": "2026-10-09T04:39:03.435Z",
  "environment": {
    "platform": "linux",
    "node": "v22.23.3"
  },
  "result": "PASS",
  "required_gate_complete": true,
  "expected_checks": 18,
  "reader_sha256": "9915cd65eb8806524d7dd19cfe9e36f2948cb0cc488f697e9db3343365a1f71e",
  "reader_files": {
    "index.html": "9915cd65eb8806524d7dd19cfe9e36f2948cb0cc488f697e9db3343365a1f71e",
    "sources/reader_08.css": "f6f527c924c3c9d4b73e9a5cba00784323c45fde14f323f1ef13f10009c5680b",
    "sources/reader_08.js": "109673c13d404a3c4c47b319a99ae0ed05771ed45305f3e1e989517da50fbdec"
  },
  "checks": [
    {
      "name": "Served reader endpoints match the local source hashes",
      "status": "PASS",
      "evidence": {
        "endpoints": [
          {
            "file": "index.html",
            "requested_url": "http://127.0.0.1:8766/index.html",
            "status": 200,
            "expected_sha256": "9915cd65eb8806524d7dd19cfe9e36f2948cb0cc488f697e9db3343365a1f71e",
            "served_sha256": "9915cd65eb8806524d7dd19cfe9e36f2948cb0cc488f697e9db3343365a1f71e"
          },
          {
            "file": "sources/reader_08.css",
            "requested_url": "http://127.0.0.1:8766/sources/reader_08.css",
            "status": 200,
            "expected_sha256": "f6f527c924c3c9d4b73e9a5cba00784323c45fde14f323f1ef13f10009c5680b",
            "served_sha256": "f6f527c924c3c9d4b73e9a5cba00784323c45fde14f323f1ef13f10009c5680b"
          },
          {
            "file": "sources/reader_08.js",
            "requested_url": "http://127.0.0.1:8766/sources/reader_08.js",
            "status": 200,
            "expected_sha256": "109673c13d404a3c4c47b319a99ae0ed05771ed45305f3e1e989517da50fbdec",
            "served_sha256": "109673c13d404a3c4c47b319a99ae0ed05771ed45305f3e1e989517da50fbdec"
          }
        ],
        "all_source_hashes_match": true
      }
    },
    {
      "name": "Reader loads with one current title and all chapters",
      "status": "PASS",
      "evidence": {
        "chapters": 110,
        "node": "v22.23.3",
        "browser": "153.0.8010.0"
      }
    },
    {
      "name": "Five-width layout and persistent controls",
      "status": "PASS",
      "evidence": [
        {
          "width": 360,
          "sizes": {
            "viewport": 360,
            "document": 360
          },
          "toolbar": {
            "x": 0,
            "y": 66,
            "width": 360,
            "height": 88
          }
        },
        {
          "width": 375,
          "sizes": {
            "viewport": 375,
            "document": 375
          },
          "toolbar": {
            "x": 0,
            "y": 66,
            "width": 375,
            "height": 88
          }
        },
        {
          "width": 768,
          "sizes": {
            "viewport": 768,
            "document": 768
          },
          "toolbar": {
            "x": 0,
            "y": 66,
            "width": 768,
            "height": 64
          }
        },
        {
          "width": 1280,
          "sizes": {
            "viewport": 1280,
            "document": 1280
          },
          "toolbar": {
            "x": 304,
            "y": 66,
            "width": 976,
            "height": 64
          }
        },
        {
          "width": 1920,
          "sizes": {
            "viewport": 1920,
            "document": 1920
          },
          "toolbar": {
            "x": 326,
            "y": 66,
            "width": 1594,
            "height": 64
          }
        }
      ]
    },
    {
      "name": "Machine figure layout, explicit brief boundaries and intact short ID",
      "status": "PASS",
      "evidence": {
        "figures": [
          {
            "width": 375,
            "dimensions": {
              "width": 1536,
              "height": 1024
            },
            "imageBox": {
              "x": 44,
              "y": 169.359375,
              "width": 287,
              "height": 191.328125
            },
            "toolbar": {
              "x": 0,
              "y": 66,
              "width": 375,
              "height": 88
            },
            "screenshot": "machine-figure-375.png"
          },
          {
            "width": 1280,
            "dimensions": {
              "width": 1536,
              "height": 1024
            },
            "imageBox": {
              "x": 390,
              "y": 145.1875,
              "width": 392,
              "height": 261.328125
            },
            "toolbar": {
              "x": 304,
              "y": 66,
              "width": 976,
              "height": 64
            },
            "screenshot": "machine-figure-1280.png"
          }
        ],
        "short_id": {
          "text": "IND-M03",
          "width": 1280,
          "client_rects": [
            {
              "x": 368,
              "y": 511.9375,
              "width": 65.953125,
              "height": 20
            }
          ]
        },
        "brief": {
          "id": "C08-BLD-IND-01",
          "box": {
            "x": 368,
            "y": 144.046875,
            "width": 848,
            "height": 944.3125
          },
          "widths": {
            "client": 846,
            "scroll": 846
          },
          "boundaries": true,
          "compatible_service_categories": true,
          "entry_point_and_build_qualification": true,
          "screenshot": "build-brief-1280.png"
        }
      }
    },
    {
      "name": "Section navigation, follow toggle, locate and copied deep link",
      "status": "PASS",
      "evidence": {
        "copied": "http://127.0.0.1:8766/#C08-IND-05",
        "section": "C08-IND-05"
      }
    },
    {
      "name": "Mobile menu, keyboard containment, Escape and focus return",
      "status": "PASS",
      "evidence": {
        "focusable_menu_controls": 1253,
        "body_scroll_restored": true
      }
    },
    {
      "name": "Exact-ID search, current prose, figure IDs and build units",
      "status": "PASS",
      "evidence": [
        {
          "query": "C08-IND-05",
          "count": 6,
          "first": "C08-IND-05"
        },
        {
          "query": "REF03",
          "count": 43,
          "first": "c08-build-0053"
        },
        {
          "query": "EAR01_H",
          "count": 27,
          "first": "planned-art-fp-art01"
        },
        {
          "query": "C08-BASE-01",
          "count": 2,
          "first": "C08-BASE-01"
        }
      ]
    },
    {
      "name": "Comparison filtering, empty feedback and restore",
      "status": "PASS",
      "evidence": {
        "comparisons": 10,
        "workshop_matches": 3
      }
    },
    {
      "name": "Visual catalogue and original image viewer",
      "status": "PASS",
      "evidence": {
        "dimensions": [
          1672,
          941
        ],
        "unchanged_original_link": true
      }
    },
    {
      "name": "New chapter notes persist and export",
      "status": "PASS",
      "evidence": {
        "persisted_after_reload": true,
        "export_file": "notes-export.json",
        "verification_note_removed": true
      }
    },
    {
      "name": "Theme and current reader context remain usable",
      "status": "PASS",
      "evidence": {
        "theme_persisted": true
      }
    },
    {
      "name": "Direct later-story links, masked search, explicit reveal and hide",
      "status": "PASS",
      "evidence": {
        "direct_hash_withheld": true,
        "search_withheld": true,
        "explicit_reveal_and_hide": true
      }
    },
    {
      "name": "Print behavior keeps complete ordinary prose and respects spoiler choice",
      "status": "PASS",
      "evidence": {
        "ordinary_text": true,
        "spoilers_withheld": true,
        "toolbar_hidden": true
      }
    },
    {
      "name": "No-script reading has native text, links and later-story disclosure",
      "status": "PASS",
      "evidence": {
        "native_links": 1130,
        "explicit_native_disclosure": true
      }
    },
    {
      "name": "Every displayed image decodes in the current Chromium",
      "status": "PASS",
      "evidence": {
        "images": 419,
        "failures": 0
      }
    },
    {
      "name": "axe WCAG A/AA reader accessibility",
      "status": "PASS",
      "evidence": {
        "violations": 0,
        "passing_rules": 35,
        "incomplete_aria_prohibited_attr": 0,
        "incomplete_rules": [
          {
            "id": "color-contrast",
            "nodes": 1600
          }
        ],
        "color_contrast_incomplete_nodes": 1600,
        "qualification": "Incomplete checks remain unresolved by automation. Color-contrast incompletes are explicitly reported; independent presentation review is separate."
      }
    },
    {
      "name": "Lighthouse accessibility only",
      "status": "PASS",
      "evidence": {
        "score": 1,
        "scored_audits": 36,
        "failed_audits": [],
        "errored_audits": [],
        "runtime_error": null,
        "performance": "NOT RUN",
        "report_file": "sources/release-evidence/reader08-accessibility-final/lighthouse-accessibility.json",
        "report_sha256": "f5c6da1c2ee5ab35940687815deea92ab8a75310ff2f97c6fbd06e5c75b11797",
        "timeout_ms": 300000,
        "rule_set": "Unchanged installed Lighthouse Accessibility gatherer and default accessibility audits"
      }
    },
    {
      "name": "No reader JavaScript errors during exercised interactions",
      "status": "PASS",
      "evidence": {
        "page_errors": 0
      }
    }
  ],
  "screenshots": [
    "cover-360.png",
    "workshop-360.png",
    "cover-375.png",
    "workshop-375.png",
    "cover-768.png",
    "workshop-768.png",
    "cover-1280.png",
    "workshop-1280.png",
    "cover-1920.png",
    "workshop-1920.png",
    "machine-figure-375.png",
    "machine-figure-1280.png",
    "build-brief-1280.png",
    "light-reader-1280.png"
  ],
  "errors": [],
  "limits": {
    "public_website_deployment": "NOT RUN",
    "independent_public_website_ui_review": "NOT RUN",
    "performance": "NOT RUN",
    "firefox_webkit": "NOT RUN",
    "game_native_qa": "NOT RUN",
    "scope": "Fresh standalone reference-reader checks only; Website receipts remain separately attributed."
  }
}
