{
  "schemaVersion": 1,
  "reportNumber": "SHWRP-2026-032",
  "version": "1.0",
  "reproducedAt": "2026-08-04T10:57:51+08:00",
  "status": "PASSED",
  "scope": "Controlled-host bitwise rerun of the synthetic fixture, route planning, spectral outputs, deterministic figures, website JSON, CFF and searchable PDF. This does not reproduce field performance because no field flight was executed.",
  "commands": [
    {
      "command": "-m pytest -q",
      "returnCode": 0,
      "outputTail": [
        "......................                                                   [100%]",
        ""
      ]
    },
    {
      "command": "analysis.py",
      "returnCode": 0,
      "outputTail": [
        "{\"schemaVersion\": 1, \"reportNumber\": \"SHWRP-2026-032\", \"version\": \"1.0\", \"analysisType\": \"implemented engineering prototype with deterministic synthetic fixture\", \"dataProvenance\": \"synthetic\", \"fieldFlightExecuted\": false, \"fieldDataCollected\": false, \"observedFieldPerformanceMetrics\": {}, \"softwarePrototypeImplemented\": true, \"demo\": {\"status\": \"PASSED\", \"priorityZoneCount\": 2, \"plannedWaypointCount\": 24, \"routeDistanceM\": 1261.68, \"spectralIndexSummaries\": {\"gndvi\": {\"median\": 0.59157, \"p10\": 0.57268, \"p90\": 0.60647}, \"ndre\": {\"median\": 0.36287, \"p10\": 0.35619, \"p90\": 0.36847}, \"ndvi\": {\"median\": 0.69609, \"p10\": 0.67452, \"p90\": 0.71335}}}, \"implementedComponents\": 5, \"fieldValidationPendingComponents\": 1, \"decisionBoundary\": \"Relative ground-inspection priority only; no disease, nutrient, water, contamination or treatment diagnosis.\", \"figures\": [\"figure-1-engineering-architecture.png\", \"figure-2-route-preview.png\", \"figure-3-decision-boundary.png\", \"figure-4-engineering-verification.png\", \"figure-5-synthetic-spectral-output.png\"]}",
        ""
      ]
    },
    {
      "command": "build_artifacts.py",
      "returnCode": 0,
      "outputTail": [
        "{\"paperContent\": \"C:\\\\Users\\\\hands\\\\AppData\\\\Local\\\\Temp\\\\shwrp-2026-032-repro-fvbt3gum\\\\paper-content.json\", \"pdf\": \"C:\\\\Users\\\\hands\\\\AppData\\\\Local\\\\Temp\\\\shwrp-2026-032-repro-fvbt3gum\\\\paper.pdf\", \"pdfSha256\": \"72de1a39888a5b21b438af9035365fcf68adde8eda894c79d3b6203ee30c5faf\", \"codeBlocks\": 4}",
        ""
      ]
    }
  ],
  "environment": {
    "python": "3.13.1",
    "platform": "Windows-10-10.0.19045-SP0",
    "matplotlib": "3.10.0",
    "numpy": "2.2.2",
    "Pillow": "11.1.0",
    "pypdf": "6.12.1",
    "reportlab": "4.5.1",
    "shapely": "2.1.2"
  },
  "files": [
    {
      "path": "paper-content.json",
      "expectedBytes": 53282,
      "actualBytes": 53282,
      "expectedSha256": "d80e693b8bdc866ea2d32b2df68897bddf878ec50511e912f5bdbcef565c36eb",
      "actualSha256": "d80e693b8bdc866ea2d32b2df68897bddf878ec50511e912f5bdbcef565c36eb",
      "bitwiseMatch": true
    },
    {
      "path": "paper.pdf",
      "expectedBytes": 1611704,
      "actualBytes": 1611704,
      "expectedSha256": "72de1a39888a5b21b438af9035365fcf68adde8eda894c79d3b6203ee30c5faf",
      "actualSha256": "72de1a39888a5b21b438af9035365fcf68adde8eda894c79d3b6203ee30c5faf",
      "bitwiseMatch": true
    },
    {
      "path": "CITATION.cff",
      "expectedBytes": 1916,
      "actualBytes": 1916,
      "expectedSha256": "4b7bce0d12f0b8227f9f6ef17e0e0f184b87b1cc463336f601721015b092f068",
      "actualSha256": "4b7bce0d12f0b8227f9f6ef17e0e0f184b87b1cc463336f601721015b092f068",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/analysis-results.json",
      "expectedBytes": 1293,
      "actualBytes": 1293,
      "expectedSha256": "af49698b35bc5f9477aaa3f534126311ded581d0285a03b9268d4f427c098c59",
      "actualSha256": "af49698b35bc5f9477aaa3f534126311ded581d0285a03b9268d4f427c098c59",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/engineering-verification-matrix.csv",
      "expectedBytes": 500,
      "actualBytes": 500,
      "expectedSha256": "844eb9a15e4a3efcc1851786abddb7ed81aea570deabe31fa9351ad78eacf216",
      "actualSha256": "844eb9a15e4a3efcc1851786abddb7ed81aea570deabe31fa9351ad78eacf216",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/engineering-demo-manifest.json",
      "expectedBytes": 3111,
      "actualBytes": 3111,
      "expectedSha256": "6f51e5989a93e9d105fdffa3a9cb087dadd9c9f8883ab9bdae4f45587a7866bf",
      "actualSha256": "6f51e5989a93e9d105fdffa3a9cb087dadd9c9f8883ab9bdae4f45587a7866bf",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/demo/analysis/analysis-results.json",
      "expectedBytes": 1084,
      "actualBytes": 1084,
      "expectedSha256": "6beb64377cd4f9d7703438c20264ae2c25ac5c47d05224ab588dfa4e3fe4a82e",
      "actualSha256": "6beb64377cd4f9d7703438c20264ae2c25ac5c47d05224ab588dfa4e3fe4a82e",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/demo/analysis/priority-zones.csv",
      "expectedBytes": 160,
      "actualBytes": 160,
      "expectedSha256": "bc2c46be2f907e9b1d21c96dee4fa64fa095ad0fea1eb6fc85db600883419230",
      "actualSha256": "bc2c46be2f907e9b1d21c96dee4fa64fa095ad0fea1eb6fc85db600883419230",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/demo/analysis/spectral-index-panel.png",
      "expectedBytes": 1318714,
      "actualBytes": 1318714,
      "expectedSha256": "f73ce2f54118cff83b733b925ce6e80022fc5effe8602014b156460f1ae5cd84",
      "actualSha256": "f73ce2f54118cff83b733b925ce6e80022fc5effe8602014b156460f1ae5cd84",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/demo/analysis/spectral-qc.json",
      "expectedBytes": 287,
      "actualBytes": 287,
      "expectedSha256": "f60ffad3a329f04343f73ecc6f9fccebe7ddcec1401bded64671b8acef056862",
      "actualSha256": "f60ffad3a329f04343f73ecc6f9fccebe7ddcec1401bded64671b8acef056862",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/demo/mission/m3m-nominal-mapping-geometry.json",
      "expectedBytes": 630,
      "actualBytes": 630,
      "expectedSha256": "12f9cecb5620f4ef9d4f7b87d30447616de949f869da7b449bdd119637c25583",
      "actualSha256": "12f9cecb5620f4ef9d4f7b87d30447616de949f869da7b449bdd119637c25583",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/demo/mission/mission-summary.json",
      "expectedBytes": 3735,
      "actualBytes": 3735,
      "expectedSha256": "c80529de6fd78b9d522e3c7d12e3e3a8313b906e312e7e7fa77b0edbff6e9f18",
      "actualSha256": "c80529de6fd78b9d522e3c7d12e3e3a8313b906e312e7e7fa77b0edbff6e9f18",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/demo/mission/planned-route.geojson",
      "expectedBytes": 2219,
      "actualBytes": 2219,
      "expectedSha256": "e1e244d11e9830073ff1175b7c0ec2a5564994755b46edd520012a0d8bce88f9",
      "actualSha256": "e1e244d11e9830073ff1175b7c0ec2a5564994755b46edd520012a0d8bce88f9",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/demo/mission/preflight-gate.json",
      "expectedBytes": 469,
      "actualBytes": 469,
      "expectedSha256": "6e05b9b925f14cae2c8d7f6d3a475ea7e9cb75b508ac47c1fdcabd8eb84516b5",
      "actualSha256": "6e05b9b925f14cae2c8d7f6d3a475ea7e9cb75b508ac47c1fdcabd8eb84516b5",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/demo/mission/route-preview-not-flight-executable.kmz",
      "expectedBytes": 786,
      "actualBytes": 786,
      "expectedSha256": "84909b89241db01ff814bd58b0ff30082648a578cf81f7a3cd7a907bb1554b9a",
      "actualSha256": "84909b89241db01ff814bd58b0ff30082648a578cf81f7a3cd7a907bb1554b9a",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/demo/synthetic-capture/capture-metadata.json",
      "expectedBytes": 777,
      "actualBytes": 777,
      "expectedSha256": "00b42438d49eade91114dfdebe910fc8823eda8d5acf6a64b87a34a8177d65cc",
      "actualSha256": "00b42438d49eade91114dfdebe910fc8823eda8d5acf6a64b87a34a8177d65cc",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/demo/synthetic-capture/demo_green.tif",
      "expectedBytes": 204922,
      "actualBytes": 204922,
      "expectedSha256": "47e7d214f992780939f717c06a47473a4337946f61e09163b590c3d573b8b2eb",
      "actualSha256": "47e7d214f992780939f717c06a47473a4337946f61e09163b590c3d573b8b2eb",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/demo/synthetic-capture/demo_red.tif",
      "expectedBytes": 204922,
      "actualBytes": 204922,
      "expectedSha256": "0bc965c32e5099145fb2596f9420d1581f2df7b225e6101cf48a33f0a1274db4",
      "actualSha256": "0bc965c32e5099145fb2596f9420d1581f2df7b225e6101cf48a33f0a1274db4",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/demo/synthetic-capture/demo_red_edge.tif",
      "expectedBytes": 204922,
      "actualBytes": 204922,
      "expectedSha256": "ecbbf03ae2aa87d5dca78a19510f5491de3c70609c289dfc62cb0d6d5693bf47",
      "actualSha256": "ecbbf03ae2aa87d5dca78a19510f5491de3c70609c289dfc62cb0d6d5693bf47",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/demo/synthetic-capture/demo_nir.tif",
      "expectedBytes": 204922,
      "actualBytes": 204922,
      "expectedSha256": "2ca0ebbd20fb0055c08a1ef65dd2cb384933edcb0ab9c1797ca3c90006dffe90",
      "actualSha256": "2ca0ebbd20fb0055c08a1ef65dd2cb384933edcb0ab9c1797ca3c90006dffe90",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/figures/figure-1-engineering-architecture.png",
      "expectedBytes": 147504,
      "actualBytes": 147504,
      "expectedSha256": "4d835f4fc24e43a7e91375cbf6bafaacccd6b5c416a1ae23276f6b6b5a31d338",
      "actualSha256": "4d835f4fc24e43a7e91375cbf6bafaacccd6b5c416a1ae23276f6b6b5a31d338",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/figures/figure-2-route-preview.png",
      "expectedBytes": 115952,
      "actualBytes": 115952,
      "expectedSha256": "e9786cef6392ce82ba7f6647090bd53a7a68002dc439c42ca3c689756ef1fc94",
      "actualSha256": "e9786cef6392ce82ba7f6647090bd53a7a68002dc439c42ca3c689756ef1fc94",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/figures/figure-3-decision-boundary.png",
      "expectedBytes": 136869,
      "actualBytes": 136869,
      "expectedSha256": "9afdd4f2909771400b1e5cfbfee5149b46d6fe2225c73fc59710a76174dfbce7",
      "actualSha256": "9afdd4f2909771400b1e5cfbfee5149b46d6fe2225c73fc59710a76174dfbce7",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/figures/figure-4-engineering-verification.png",
      "expectedBytes": 97731,
      "actualBytes": 97731,
      "expectedSha256": "2d2171869b57523162d15a8cf3f1a757b0dc47de9db56c1eba0e2550c7d51dfc",
      "actualSha256": "2d2171869b57523162d15a8cf3f1a757b0dc47de9db56c1eba0e2550c7d51dfc",
      "bitwiseMatch": true
    },
    {
      "path": "outputs/figures/figure-5-synthetic-spectral-output.png",
      "expectedBytes": 1318714,
      "actualBytes": 1318714,
      "expectedSha256": "f73ce2f54118cff83b733b925ce6e80022fc5effe8602014b156460f1ae5cd84",
      "actualSha256": "f73ce2f54118cff83b733b925ce6e80022fc5effe8602014b156460f1ae5cd84",
      "bitwiseMatch": true
    }
  ],
  "errors": []
}
