{
  "schema": "seedlookout-study-provenance/1",
  "study": "village-spawn-chances-java",
  "recordedDate": "2026-10-02",
  "event": "Horizontal distance from estimated spawn to a biome-viable village placement marker; no village footprint or actual first-player probability measured",
  "scope": {
    "edition": "java",
    "version": "26.3",
    "generation": "default",
    "population": "pseudo-random signed 64-bit numeric seed inputs",
    "abandonedVillagesIncluded": true,
    "blankSeedAndTextSeedDistributionsStudied": false
  },
  "codeSnapshot": {
    "repository": "https://github.com/DrWenyuanHe/minecraft-seeds",
    "revision": "d7def005fc8cfb1b5865868c4e55488c9b386452",
    "vendorTree": "7c44d48e6350398eab449df93058b438fb21e67b",
    "note": "Immutable snapshot of source, protocol and unchanged data; article wording can change independently"
  },
  "model": {
    "repository": "https://github.com/xpple/cubiomes",
    "revision": "18edd56575a60fe7129705bf972de0a511437527"
  },
  "sampling": {
    "algorithm": "SplitMix64; fixed roots; indices 0 through 999999 in each run",
    "runs": [
      {
        "record": "sample-results.json",
        "root": "20261001",
        "numericSeeds": 1000000,
        "threads": 8,
        "radiiBlocks": [
          16,
          32,
          64,
          128,
          256,
          512
        ],
        "browserComparisons": 7000,
        "browserMismatches": 0
      },
      {
        "record": "repeat-results.json",
        "root": "20261002",
        "numericSeeds": 1000000,
        "threads": 8,
        "radiiBlocks": [
          16,
          32,
          64,
          128,
          256,
          512
        ],
        "browserComparisons": 7000,
        "browserMismatches": 0
      },
      {
        "record": "repeat-2-results.json",
        "root": "20261003",
        "numericSeeds": 1000000,
        "threads": 8,
        "radiiBlocks": [
          16,
          32,
          64,
          128,
          256,
          512
        ],
        "browserComparisons": 7000,
        "browserMismatches": 0
      },
      {
        "record": "repeat-3-results.json",
        "root": "20261004",
        "numericSeeds": 1000000,
        "threads": 8,
        "radiiBlocks": [
          16,
          32,
          64,
          128,
          256,
          512
        ],
        "browserComparisons": 7000,
        "browserMismatches": 0
      }
    ],
    "primaryIncludedInRepeatMean": false,
    "allSixPairwiseInputRangesDisjoint": true,
    "disjointnessProvesIndependence": false,
    "interpretation": "Independent uniform pseudo-random samples assumed for SEM/Wilson interpretation; no independent-generator sensitivity study performed",
    "recordedSourceHashes": {
      "samplerSha256": "b40d14c2949cedab2c6e15e06b95cc3dc5bd6d2475c14024f1cbeb49c8f6edb9",
      "finderSha256": "48cbccc827b7eff0115f3990b221638e9c5d558d40c47fcf3abc7ccbcbfbd440",
      "convention": "Original sampling records hash raw working-copy bytes; compare workingCopySha256 for those two source files."
    }
  },
  "statistics": {
    "sem": "SD of three repeat percentages, ddof=1, divided by sqrt(3)",
    "semUnits": "percentage points",
    "wilson": "Marginal per-run 95% intervals; z=1.959963984540054",
    "excludedUncertainty": "Shared-model errors and actual-world accuracy; N=3 makes the SEM estimate imprecise"
  },
  "compiler": {
    "recordedInOriginalRuns": {
      "imageTag": "seedlookout-seedfinder-gcc:1",
      "imageDigest": null,
      "compilerVersion": null
    },
    "reproductionSnapshotObservedOn": "2026-10-02",
    "cachedImage": "seedlookout-seedfinder-gcc@sha256:3653b959d56eba2935d10967bfb3dbda59e861ebe5fa96bd75877b20276c6b7f",
    "cachedImageId": "sha256:3653b959d56eba2935d10967bfb3dbda59e861ebe5fa96bd75877b20276c6b7f",
    "cachedImageCreated": "2026-10-01T01:01:36.570308641Z",
    "compiler": "gcc (Debian 12.2.0-14+deb12u1) 12.2.0",
    "observedNativeTarget": "rocketlake",
    "flags": [
      "-O3",
      "-march=native",
      "-pthread",
      "-fwrapv",
      "-fno-strict-aliasing",
      "-ffp-contract=off"
    ],
    "historicalImageIdentityVerified": false,
    "availability": "Cached local image; no public image registry availability asserted. Rebuilding from the Dockerfile may produce a different digest. Current inspection does not establish the image used by historical runs."
  },
  "plottingSnapshotObservedOn": "2026-10-02",
  "runtimeVersions": {
    "python": "3.12.14",
    "matplotlib": "3.10.9",
    "numpy": "2.5.3",
    "node": "24.19.0"
  },
  "reproduction": {
    "source": "Use the immutable source revision above; confirm listed source hashes before sampling",
    "compiler": "Confirm the local compiler tag resolves to the cached image ID above before using sample.mjs; historical identity remains unverified",
    "safeOutput": "Use --name reproduction-primary, reproduction-repeat-1, reproduction-repeat-2 and reproduction-repeat-3 with the corresponding roots to avoid overwriting recorded results",
    "settings": "--count 1000000 --threads 8 --root <recorded root>; all six radii retained",
    "checks": "Compare all counts and browser checks to each immutable run record; run plot-proximity.py only in a clean checkout to preserve published artifacts"
  },
  "artifacts": [
    {
      "path": "finder/native/seedfinder.c",
      "sha256": "d425e96b437f56e6131505a85f91c7158c5056911e074b60ac0c77c4cb2ba214",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/finder/native/seedfinder.c",
      "workingCopySha256": "48cbccc827b7eff0115f3990b221638e9c5d558d40c47fcf3abc7ccbcbfbd440",
      "workingCopyMatchesGitBlob": false,
      "difference": "CRLF/LF newline normalization only"
    },
    {
      "path": "web/scripts/rarity/seeds.mjs",
      "sha256": "47bed989e9a2b9ba575db5dbb2462afc0f75498708f85a5ca55b0e63cd7b2b17",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/web/scripts/rarity/seeds.mjs",
      "workingCopySha256": "9264cf93a1187028838ca0d7b58d6eee6065dec8394a908f3ff702fcaf70481b",
      "workingCopyMatchesGitBlob": false,
      "difference": "CRLF/LF newline normalization only"
    },
    {
      "path": "web/public/world-engine.mjs",
      "sha256": "10a36185b269c9f8581ac5d14da2f7cb351f9f39523b0e6966594adf328f3368",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/web/public/world-engine.mjs",
      "workingCopySha256": "a0e5aab353a0ccbc8f860d014c95a15d3d5abf0c26e2026b3299bae1c61ace8d",
      "workingCopyMatchesGitBlob": false,
      "difference": "CRLF/LF newline normalization only"
    },
    {
      "path": "web/public/seed-search.mjs",
      "sha256": "5bf753ed080c143b35788f9f7de00560eed98bd21f8122ede278797b4c759d31",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/web/public/seed-search.mjs",
      "workingCopySha256": "77198d4151f2b82d97ed726c64fd2b46d2ff711a3edb10f69dc9e0d7329cf1d5",
      "workingCopyMatchesGitBlob": false,
      "difference": "CRLF/LF newline normalization only"
    },
    {
      "path": "web/public/world-engine/java.wasm",
      "sha256": "bad4c1306ca96d3477e9064cfc4ba4ced9692c654cb87bfc1def202d0bef03af",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/web/public/world-engine/java.wasm",
      "workingCopySha256": "bad4c1306ca96d3477e9064cfc4ba4ced9692c654cb87bfc1def202d0bef03af",
      "workingCopyMatchesGitBlob": true
    },
    {
      "path": "web/public/world-engine/java.js",
      "sha256": "1dc0b653501fc05c45e000ba2bbcedf209c6fc80396532fa1dc64ac29a52b7b4",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/web/public/world-engine/java.js",
      "workingCopySha256": "7466d1e326926297356b60bfeacd9e44147389dbdccbfc106a18a26ed4c28ad1",
      "workingCopyMatchesGitBlob": false,
      "difference": "CRLF/LF newline normalization only"
    },
    {
      "path": "research/blog/village-spawn-chances-java/sample.c",
      "sha256": "d780d5ad763cd1f2bc29eaf6a1ac2a767f653568f7d886ab093404192bf18843",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/research/blog/village-spawn-chances-java/sample.c",
      "workingCopySha256": "b40d14c2949cedab2c6e15e06b95cc3dc5bd6d2475c14024f1cbeb49c8f6edb9",
      "workingCopyMatchesGitBlob": false,
      "difference": "CRLF/LF newline normalization only"
    },
    {
      "path": "research/blog/village-spawn-chances-java/sample.mjs",
      "sha256": "a7996eaa81b8da996501c36d2557f1673d713873f19dc2a059081288bf01527d",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/research/blog/village-spawn-chances-java/sample.mjs",
      "workingCopySha256": "a7996eaa81b8da996501c36d2557f1673d713873f19dc2a059081288bf01527d",
      "workingCopyMatchesGitBlob": true
    },
    {
      "path": "research/blog/village-spawn-chances-java/plot-proximity.py",
      "sha256": "8c998db4d8ebabfd92a36c51a1c789786b4bdc708b1bc6aef4c604bbce333d79",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/research/blog/village-spawn-chances-java/plot-proximity.py",
      "workingCopySha256": "d70b6b27027c79fe858e67dccf40929bc4b6339191d60e7e9a92af573245d40f",
      "workingCopyMatchesGitBlob": false,
      "difference": "CRLF/LF newline normalization only"
    },
    {
      "path": "research/blog/village-spawn-chances-java/scientific-refresh-protocol.md",
      "sha256": "a8c157aa4f8bda2202b6572308f2c58bef2751a2dfc02f788e1c2924cf26294b",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/research/blog/village-spawn-chances-java/scientific-refresh-protocol.md",
      "workingCopySha256": "d5463b3fd5ed0ee89aaf5c3a95548b7e21067e6901789ee8e225f9924d4f7397",
      "workingCopyMatchesGitBlob": false,
      "difference": "CRLF/LF newline normalization only"
    },
    {
      "path": "research/blog/village-spawn-chances-java/sample-results.json",
      "sha256": "0e98caacf31bf17f2bb49ffec7cd3773ed4dd1121a58e149ba08d07ab741225c",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/research/blog/village-spawn-chances-java/sample-results.json",
      "workingCopySha256": "0e98caacf31bf17f2bb49ffec7cd3773ed4dd1121a58e149ba08d07ab741225c",
      "workingCopyMatchesGitBlob": true
    },
    {
      "path": "research/blog/village-spawn-chances-java/repeat-results.json",
      "sha256": "bc092bf11d2dc5c023086c0ff12e586095f3c8f9a1fd8ff16472cf4aec6093d3",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/research/blog/village-spawn-chances-java/repeat-results.json",
      "workingCopySha256": "bc092bf11d2dc5c023086c0ff12e586095f3c8f9a1fd8ff16472cf4aec6093d3",
      "workingCopyMatchesGitBlob": true
    },
    {
      "path": "research/blog/village-spawn-chances-java/repeat-2-results.json",
      "sha256": "373f728515bfdc3220c03a78e224aec11b498e6f458d63050dc4426c67308ccf",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/research/blog/village-spawn-chances-java/repeat-2-results.json",
      "workingCopySha256": "373f728515bfdc3220c03a78e224aec11b498e6f458d63050dc4426c67308ccf",
      "workingCopyMatchesGitBlob": true
    },
    {
      "path": "research/blog/village-spawn-chances-java/repeat-3-results.json",
      "sha256": "69bfe52994b7bfa5caa42c3b73cdd9277f6f1c2e4b5272e7158191e385f08133",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/research/blog/village-spawn-chances-java/repeat-3-results.json",
      "workingCopySha256": "69bfe52994b7bfa5caa42c3b73cdd9277f6f1c2e4b5272e7158191e385f08133",
      "workingCopyMatchesGitBlob": true
    },
    {
      "path": "research/blog/village-spawn-chances-java/sample-results-validation.json",
      "sha256": "81ce3f656f1b8f6f40350568ce70492371ed9c2208bb29b4e0d26d3ced2a97e6",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/research/blog/village-spawn-chances-java/sample-results-validation.json",
      "workingCopySha256": "81ce3f656f1b8f6f40350568ce70492371ed9c2208bb29b4e0d26d3ced2a97e6",
      "workingCopyMatchesGitBlob": true
    },
    {
      "path": "research/blog/village-spawn-chances-java/repeat-results-validation.json",
      "sha256": "e49f3837b3aeffafa0ff5b67466affe7fa046a5ee713f872102f1e189494cd09",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/research/blog/village-spawn-chances-java/repeat-results-validation.json",
      "workingCopySha256": "e49f3837b3aeffafa0ff5b67466affe7fa046a5ee713f872102f1e189494cd09",
      "workingCopyMatchesGitBlob": true
    },
    {
      "path": "research/blog/village-spawn-chances-java/repeat-2-results-validation.json",
      "sha256": "972e13197bafb75637cde8c3a64ee7da7347eb0555389778854a7da78c5b24a5",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/research/blog/village-spawn-chances-java/repeat-2-results-validation.json",
      "workingCopySha256": "972e13197bafb75637cde8c3a64ee7da7347eb0555389778854a7da78c5b24a5",
      "workingCopyMatchesGitBlob": true
    },
    {
      "path": "research/blog/village-spawn-chances-java/repeat-3-results-validation.json",
      "sha256": "2c109d4054d6840870ce5effaff8a548042173b45c6baeeaa14c05ef23a082d2",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/research/blog/village-spawn-chances-java/repeat-3-results-validation.json",
      "workingCopySha256": "2c109d4054d6840870ce5effaff8a548042173b45c6baeeaa14c05ef23a082d2",
      "workingCopyMatchesGitBlob": true
    },
    {
      "path": "research/blog/village-spawn-chances-java/proximity-chart-data.csv",
      "sha256": "c14b1c0ab96d08d943a7367afcda8b86fb5dbf6795dd87a2a39cd6a12c14a713",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/research/blog/village-spawn-chances-java/proximity-chart-data.csv",
      "workingCopySha256": "f5be08445ab54e8b579253d05a85365b6e8c473eccf023a20ab7f16a0961d55f",
      "workingCopyMatchesGitBlob": false,
      "difference": "CRLF/LF newline normalization only"
    },
    {
      "path": "research/blog/village-spawn-chances-java/repeat-summary.csv",
      "sha256": "9c4cb43dc7c909d390cd217cb210c2affb1404b55c73f290e0a953006731995f",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/research/blog/village-spawn-chances-java/repeat-summary.csv",
      "workingCopySha256": "f7724e91535289a49693790327b79ccc683a5b32c316e50e8439898b1440c0c2",
      "workingCopyMatchesGitBlob": false,
      "difference": "CRLF/LF newline normalization only"
    },
    {
      "path": "research/blog/village-spawn-chances-java/repeat-summary.json",
      "sha256": "7f4142e5e106549edae2a54c1d23a8eb69255ef4f7311039df0fb5cec5b078a9",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/research/blog/village-spawn-chances-java/repeat-summary.json",
      "workingCopySha256": "97510a1a382862511e9e6fd6bb98e3257eb7e64d39400ef788218f37a58a6262",
      "workingCopyMatchesGitBlob": false,
      "difference": "CRLF/LF newline normalization only"
    },
    {
      "path": "research/blog/village-spawn-chances-java/repeat-comparison.json",
      "sha256": "5eb8cd48ab873d2662f4941b2295c3d6acd6906b1860ad2cc9c308f91acf6ba1",
      "source": "https://github.com/DrWenyuanHe/minecraft-seeds/blob/d7def005fc8cfb1b5865868c4e55488c9b386452/research/blog/village-spawn-chances-java/repeat-comparison.json",
      "workingCopySha256": "21942f22e265e437f0ad6e847d4de910269baa208f7a3eb2a9a7228480cc6c0c",
      "workingCopyMatchesGitBlob": false,
      "difference": "CRLF/LF newline normalization only"
    }
  ],
  "hashConvention": "sha256 hashes the immutable Git blob. workingCopySha256 hashes the observed study checkout bytes; any differences are verified CRLF/LF normalization only."
}
