{
  "samples": [
    {
      "label": "default-hearth-home",
      "seed": "0",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 8,
      "blocks": 16020,
      "components": 383,
      "digest": "68e3fa01aad6e20e2ce3463fceb07fcf78f504cd565a645f541263e9bc1464c6",
      "signature": "0fd9f927c7845b9f9fb5d585b9b56d1b72fd8fa5a7528aa225d302a0b46800c2",
      "python_s": 11.2926,
      "stdout": ""
    },
    {
      "label": "gallery-hearth-home-0",
      "seed": "0",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 8,
      "blocks": 16020,
      "components": 383,
      "digest": "68e3fa01aad6e20e2ce3463fceb07fcf78f504cd565a645f541263e9bc1464c6",
      "signature": "0fd9f927c7845b9f9fb5d585b9b56d1b72fd8fa5a7528aa225d302a0b46800c2",
      "python_s": 10.700699999,
      "stdout": ""
    },
    {
      "label": "gallery-hearth-home-2",
      "seed": "2",
      "environment_seed": "2",
      "buildings": 1,
      "rooms": 7,
      "blocks": 19948,
      "components": 386,
      "digest": "ae79b252a38a57b24fe823715660eafefe65f1174ef29c29a1cf96f8fbdc6da8",
      "signature": "c999651fe114a8d1e82b88ee0979366935b894564f629dc1bdd2da02d31ac48e",
      "python_s": 15.418299999000002,
      "stdout": ""
    },
    {
      "label": "gallery-hearth-home-7",
      "seed": "7",
      "environment_seed": "7",
      "buildings": 1,
      "rooms": 7,
      "blocks": 19329,
      "components": 364,
      "digest": "cac0950efe0ab35dcfcf5099f9e80cb0f666eaf119c8930322306d1ca7a5ff32",
      "signature": "4a4142ecfae0cb53587f1ad878b92c6adebc5d094f5f822f6559a27b648b3bed",
      "python_s": 12.572899999,
      "stdout": ""
    },
    {
      "label": "gallery-high-1",
      "seed": "1",
      "environment_seed": "1",
      "buildings": 1,
      "rooms": 7,
      "blocks": 13405,
      "components": 319,
      "digest": "b2e4f20409a685fe022ecc634b8e6000599032ff732b94685316c52aa9af6e75",
      "signature": "594ddade698c40993f8d9ed90aa6b38620dd2f726ee54b84f49a6d7ab0a180d1",
      "python_s": 8.799100000999992,
      "stdout": ""
    },
    {
      "label": "gallery-wet-pair-3-6",
      "seed": "6",
      "environment_seed": "6103",
      "buildings": 1,
      "rooms": 10,
      "blocks": 56156,
      "components": 272,
      "digest": "327b9828b59ba6c2c1cd35c3f990affd0356733737259dd0d07d7ff763c99405",
      "signature": "e5fd95c649dfd61d18d437869766d5324186426c547a321e8ab6f4b2e4ab3dc3",
      "python_s": 14.591699999,
      "stdout": ""
    },
    {
      "label": "manual-default",
      "seed": "0",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 5,
      "blocks": 11456,
      "components": 262,
      "digest": "df0f4c064d54989667afd16da6031ea6c0d33f795945a02f44af44cae9938f44",
      "signature": "4ed42914a9ff6f3059483fcfc70d27bd1a073e89fdf2f6bb62c6cf4e25ec57ee",
      "python_s": 5.913300000000007,
      "stdout": ""
    },
    {
      "label": "manual-controls",
      "seed": "0",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 4,
      "blocks": 9545,
      "components": 117,
      "digest": "feb26dd7e0833de8b05d06e9a3b352391ef7fc30dce740ef5733fd51a26aba25",
      "signature": "91a1ac1b76aa147400aa250264b84dfa7f3ff3ab0f9e951f7b84b0a94f3dc36f",
      "python_s": 4.950000000000003,
      "stdout": ""
    },
    {
      "label": "manual-no-loft",
      "seed": "0",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 3,
      "blocks": 9444,
      "components": 102,
      "digest": "8e93693783fad551d5f16a9d2aac587da1be43a79f52e185c9c84fa26ca9a2ed",
      "signature": "722ef18f59ec6d33d648e0a28b1d6c5490934e99c317acd88eb83772fee44a25",
      "python_s": 4.130599999000012,
      "stdout": ""
    },
    {
      "label": "manual-hips-and-dining",
      "seed": "0",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 4,
      "blocks": 9520,
      "components": 117,
      "digest": "9d6990d26d3286465b781d62c472723495e853ce26636b5b9ec0f9e9dd8c7f17",
      "signature": "d97b6b632e40fcd029dda678b5bc792ac32ea24e4028a27f0b42067c0cbf0764",
      "python_s": 4.940300000999997,
      "stdout": ""
    },
    {
      "label": "manual-replay",
      "seed": "0",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 4,
      "blocks": 9545,
      "components": 117,
      "digest": "feb26dd7e0833de8b05d06e9a3b352391ef7fc30dce740ef5733fd51a26aba25",
      "signature": "91a1ac1b76aa147400aa250264b84dfa7f3ff3ab0f9e951f7b84b0a94f3dc36f",
      "python_s": 4.917199999999994,
      "stdout": ""
    },
    {
      "label": "custom-python",
      "seed": "0",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 4,
      "blocks": 9545,
      "components": 117,
      "digest": "feb26dd7e0833de8b05d06e9a3b352391ef7fc30dce740ef5733fd51a26aba25",
      "signature": "91a1ac1b76aa147400aa250264b84dfa7f3ff3ab0f9e951f7b84b0a94f3dc36f",
      "python_s": 4.986400000999993,
      "stdout": "CUSTOM_PYTHON_EXECUTED\n"
    },
    {
      "label": "random-seed",
      "seed": "17",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 4,
      "blocks": 9562,
      "components": 118,
      "digest": "f542a51b33f19b7c3ebe8e784c9e8c1f090060acb2476e39d9b70b7bcbc60cd4",
      "signature": "91a1ac1b76aa147400aa250264b84dfa7f3ff3ab0f9e951f7b84b0a94f3dc36f",
      "python_s": 4.981999999999999,
      "stdout": "CUSTOM_PYTHON_EXECUTED\n"
    },
    {
      "label": "large-seed",
      "seed": "9223372036854775807",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 7,
      "blocks": 17989,
      "components": 375,
      "digest": "5097ee0d1b7e9ca5e3732c32def4e4d5d6101fd98be18c2c9b009db534eab6db",
      "signature": "aa4d013ebbbeb7a3bbde51488a9d8d11e82ce9003a229b8ed6f1ede160b0e976",
      "python_s": 11.420699998999993,
      "stdout": ""
    },
    {
      "label": "explore-roof_home",
      "seed": "340",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 5,
      "blocks": 17421,
      "components": 330,
      "digest": "9d3b65614ab1971925f659bdd1443c77242be0c6a0333537850f933366b2aa8f",
      "signature": "148948d80807332fbe66767bb333803e6a04203448eeaebed5f063dc9762fda6",
      "python_s": 11.365700000999993,
      "stdout": "Explored program: roof_home\n"
    },
    {
      "label": "explore-roof_pair",
      "seed": "342",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 5,
      "blocks": 43633,
      "components": 152,
      "digest": "375fb6a05860d9b46525dd94a0d651f4560760ca312690f7385fc24b956edc06",
      "signature": "08c13cdf3bf01d75445a9a94f796c7af486181a3525683783a71bb3104903989",
      "python_s": 10.953499999999991,
      "stdout": "Explored program: roof_pair\n"
    },
    {
      "label": "explore-court",
      "seed": "343",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 6,
      "blocks": 23666,
      "components": 473,
      "digest": "5f2684847d161f0240455618b0b7f305881de179999112244380bc7f95813ea7",
      "signature": "bd5b3e0a2dac3cfaaeff9f5bbaf39d9083d5c86bd110245553349d14f546e4d3",
      "python_s": 10.44719999900002,
      "stdout": "Explored program: court\n"
    },
    {
      "label": "explore-home",
      "seed": "344",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 7,
      "blocks": 14749,
      "components": 333,
      "digest": "bc693d25f2b982cda18d811d4797d053f44731ade3c69e38f71a49a41e4ae915",
      "signature": "d12636141711cd64d7763516ff13914c75a4beef951c2df19b888ed62c776bcc",
      "python_s": 7.989299998999996,
      "stdout": "Explored program: home\n"
    },
    {
      "label": "explore-hall",
      "seed": "345",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 5,
      "blocks": 11639,
      "components": 268,
      "digest": "7234bedb01ece7b2f8167192befaac87cabdc32ba3a00a263d26724d3df780d0",
      "signature": "8097f2fd800566749801ec7691305b745096f7307b4f19d7b158893dbdd01dad",
      "python_s": 6.448499999999996,
      "stdout": "Explored program: hall\n"
    },
    {
      "label": "explore-high",
      "seed": "346",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 9,
      "blocks": 15908,
      "components": 385,
      "digest": "1c8596af6451f1eac42f2efe6a7ca919b43f1ca845be30506fa182787afc2491",
      "signature": "47184e8c461b117c6fafc7fb1c956d0fd879d05466e0d397e60fba2d7bc8d9b9",
      "python_s": 10.734099998999994,
      "stdout": "Explored program: high\n"
    },
    {
      "label": "explore-adaptation",
      "seed": "347",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 7,
      "blocks": 35006,
      "components": 182,
      "digest": "faf602fd30f8e7b523298f74151b3186eda0ae887e904cc0f4ad35ae86f1c9d1",
      "signature": "cd5509b73d8a2178c2557162b3320bdae9caff8c416caac3d6466993d9334683",
      "python_s": 7.340600000999984,
      "stdout": "Explored program: adaptation\n"
    },
    {
      "label": "explore-courtyard",
      "seed": "349",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 10,
      "blocks": 25876,
      "components": 250,
      "digest": "369d7f42d72f6614cb59732ad0a697611a6abb9fc5d3d589112bf445217472bc",
      "signature": "c9dca335751b38f25f03346cdea160906d4a4e8a2921c1c7ad918405b23734a8",
      "python_s": 6.978400000999983,
      "stdout": "Explored program: courtyard\n"
    },
    {
      "label": "explore-commons",
      "seed": "350",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 5,
      "blocks": 16197,
      "components": 136,
      "digest": "0c88738f52f16dc99996de59a73b7f060dcd9bc671aa4654a8c2d806e59de9b6",
      "signature": "0e277b05cd09e6ccec4f5c1a6c630b75b9d2d264aea608c25e414f673ed7f2d5",
      "python_s": 3.602299998999996,
      "stdout": "Explored program: commons\n"
    },
    {
      "label": "explore-atelier",
      "seed": "351",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 2,
      "blocks": 14484,
      "components": 64,
      "digest": "ca335feb2725e344285efc663ecd64972390f9a3ffdeb91a661776b3039144ce",
      "signature": "4b670ef62f2bd0b87e0fad6eb1d297bda46bf7fc7b70be5c21d766c23b6eb282",
      "python_s": 2.471499999999992,
      "stdout": "Explored program: atelier\n"
    },
    {
      "label": "explore-dwelling",
      "seed": "352",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 3,
      "blocks": 11682,
      "components": 81,
      "digest": "5ef46bf225af2efa3e584bd9cc841bb87083de2dc422073421441c0cd71b960d",
      "signature": "8013767f43bab8ca361eefd6ca043e4eda2dc7f9e835bd7dbafd84a3d7250fb1",
      "python_s": 2.903500000000008,
      "stdout": "Explored program: dwelling\n"
    },
    {
      "label": "explore-campus",
      "seed": "353",
      "environment_seed": "0",
      "buildings": 4,
      "rooms": 5,
      "blocks": 119469,
      "components": 485,
      "digest": "5c376e90474a3eadeac548732de43d48453d782b3b9cd123231756baf32c3a36",
      "signature": "9f3b4cf03ea284616d5094472bfade5a4e4d6baa9e768c095e597618a331f7bf",
      "python_s": 20.70149999999998,
      "stdout": "Explored program: campus\n"
    },
    {
      "label": "explore-perimeter",
      "seed": "354",
      "environment_seed": "0",
      "buildings": 3,
      "rooms": 3,
      "blocks": 117652,
      "components": 378,
      "digest": "814324322684d6a1ae1d872d881a7b07cd2f77db1744fac4e853666f14c92f91",
      "signature": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
      "python_s": 17.87579999999997,
      "stdout": "Explored program: perimeter\n"
    },
    {
      "label": "explore-sample_hall",
      "seed": "355",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 1,
      "blocks": 26843,
      "components": 31,
      "digest": "63897f0ca9ac052db771a0eed86191827780b9d13f1c8e5eb9cf15bad11e6aa1",
      "signature": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
      "python_s": 2.9152999989999557,
      "stdout": "Explored program: sample_hall\n"
    },
    {
      "label": "explore-sample_connector",
      "seed": "356",
      "environment_seed": "0",
      "buildings": 0,
      "rooms": 0,
      "blocks": 19811,
      "components": 11,
      "digest": "4c0e23931e8cb50846bfa05ca6af8dda8c99391ba1fa0f4a395090d7692c569f",
      "signature": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
      "python_s": 2.262999999999977,
      "stdout": "Explored program: sample_connector\n"
    },
    {
      "label": "explore-sample_boundary",
      "seed": "357",
      "environment_seed": "0",
      "buildings": 0,
      "rooms": 0,
      "blocks": 19636,
      "components": 17,
      "digest": "56c28fdeb09012bac71474c96fc341dcfec34225a77bbc6e4eaa5637f031fc12",
      "signature": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
      "python_s": 1.8965000000000032,
      "stdout": "Explored program: sample_boundary\n"
    },
    {
      "label": "explore-hearth_home",
      "seed": "358",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 6,
      "blocks": 18358,
      "components": 380,
      "digest": "12615920493fbf8a1e2dd17c2468dd10001ec126cc72396254dd2da71f25e8dc",
      "signature": "1bb80aa8e86e7f2e60ca416ce6caf6676f2a976db3ab772c7e8515b76f17240f",
      "python_s": 12.482400000999974,
      "stdout": "Explored program: hearth_home\n"
    },
    {
      "label": "explore-hearth_pair",
      "seed": "359",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 8,
      "blocks": 59404,
      "components": 213,
      "digest": "d237e96a5d84b502b46989c7f374fcac0f73fbaa06c8797c3a17a01e40415119",
      "signature": "a1d4a55c6670af9cd9e09c65ffa2799b202977b08b47ae729508f4f3dd37c578",
      "python_s": 11.38779999999997,
      "stdout": "Explored program: hearth_pair\n"
    },
    {
      "label": "default-settlement",
      "seed": "0",
      "environment_seed": "0",
      "buildings": 5,
      "rooms": 18,
      "blocks": 128174,
      "components": 1034,
      "digest": "dfb1b63ad3cefc6694146c47864102cf8be546f950ba0b47e7fe57220adac8da",
      "signature": "e3f76cd8456ce4522391557ec660d6765d669f423ec8682e48112f7e328ee5d1",
      "python_s": 57.56200000000001,
      "stdout": ""
    },
    {
      "label": "seed-one-settlement",
      "seed": "1",
      "environment_seed": "0",
      "buildings": 3,
      "rooms": 12,
      "blocks": 91330,
      "components": 679,
      "digest": "60d940817e980655f2ae8e4d13fcb7f7f2e16936373bd78ec473cb3c67455e13",
      "signature": "6fe50293d5e015085af74e3dafbe0e3ade95f452fdb1a4948eabf90111458a9c",
      "python_s": 28.371799999000018,
      "stdout": ""
    },
    {
      "label": "explore-fixed-environment",
      "seed": "340",
      "environment_seed": "3",
      "buildings": 1,
      "rooms": 5,
      "blocks": 19250,
      "components": 328,
      "digest": "4ebb0ac7c8e80b4985c494eed9ee03c61ac202cc4eaa3a46018683cbe946a9d8",
      "signature": "148948d80807332fbe66767bb333803e6a04203448eeaebed5f063dc9762fda6",
      "python_s": 11.27819999999997,
      "stdout": "Explored program: roof_home\n"
    },
    {
      "label": "after-cancel",
      "seed": "0",
      "environment_seed": "0",
      "buildings": 1,
      "rooms": 5,
      "blocks": 13600,
      "components": 310,
      "digest": "3f3c12036c060cab739a7d19d3a0a04ce42a15abadbe6d6ae673ab04585d3ad3",
      "signature": "424f119d69bc0c7fd7c780d05d3cac5c90a6c4453f2f51e47c5f22275a57769c",
      "python_s": 7.977899999,
      "stdout": ""
    }
  ],
  "checks": {
    "default_new_court": true,
    "default_matches_archive": true,
    "gallery_digest_hearth-home-0": true,
    "gallery_interior_hearth-home-0": true,
    "gallery_stair_cut_hearth-home-0": true,
    "gallery_loft_hearth-home-0": true,
    "floor_button": true,
    "stair_button": true,
    "real_dormer_glass_chain": true,
    "loft_furniture_chain": true,
    "loft_button": true,
    "flower_ancestry": true,
    "ceiling_ancestry": true,
    "ancestor_selection": true,
    "focused_block_picking": true,
    "gallery_digest_hearth-home-2": true,
    "gallery_interior_hearth-home-2": true,
    "gallery_stair_cut_hearth-home-2": true,
    "gallery_loft_hearth-home-2": true,
    "gallery_digest_hearth-home-7": true,
    "gallery_interior_hearth-home-7": true,
    "gallery_stair_cut_hearth-home-7": true,
    "gallery_loft_hearth-home-7": true,
    "gallery_digest_high-1": true,
    "gallery_interior_high-1": true,
    "gallery_stair_cut_high-1": true,
    "gallery_loft_high-1": true,
    "gallery_digest_wet-pair-3-6": true,
    "gallery_interior_wet-pair-3-6": true,
    "gallery_stair_cut_wet-pair-3-6": true,
    "gallery_loft_wet-pair-3-6": true,
    "window_controls": true,
    "controls_change_structure": true,
    "attic_control": true,
    "hip_controls": true,
    "manual_replay": true,
    "edited_python_executed": true,
    "random_seed_preserves_code": true,
    "exact_large_seed": true,
    "explore_roof_home": true,
    "explore-roof_held_error_visible": true,
    "explore-roof_held_stale_export_disabled": true,
    "explore_roof_pair": true,
    "explore_court": true,
    "explore_home": true,
    "explore_hall": true,
    "explore_high": true,
    "explore_adaptation": true,
    "explore-settlement_error_visible": true,
    "explore-settlement_stale_export_disabled": true,
    "explore_courtyard": true,
    "explore_commons": true,
    "explore_atelier": true,
    "explore_dwelling": true,
    "explore_campus": true,
    "multiple_campus": true,
    "explore_perimeter": true,
    "multiple_perimeter": true,
    "explore_sample_hall": true,
    "explore_sample_connector": true,
    "explore_sample_boundary": true,
    "explore_hearth_home": true,
    "explore_hearth_pair": true,
    "regression-settlement-314_error_visible": true,
    "regression-settlement-314_stale_export_disabled": true,
    "original_settlement": true,
    "original_seed_one": true,
    "fixed_environment": true,
    "mobile_no_overflow": true,
    "invalid_seed_rejected": true,
    "error_visible": true,
    "stale_export_disabled": true,
    "cancel_stops_worker": true,
    "recovery_after_cancel": true,
    "charts_rendered": true
  },
  "page_errors": [],
  "generation_failures": [
    {
      "label": "explore-roof_held",
      "seed": "341",
      "source": "# Report sampler of public examples; library users can compose other programs.\nprograms = ('roof_home', 'roof_held', 'roof_pair', 'court', 'home', 'hall', 'high', 'adaptation', 'settlement', 'courtyard', 'commons', 'atelier', 'dwelling', 'campus', 'perimeter', 'sample_hall', 'sample_connector', 'sample_boundary', 'hearth_home', 'hearth_pair')\nprogram = programs[SEED % len(programs)]\nif program == 'roof_home':\n    from examples.roof_home import roof_home\n    from hearth.lodges import lodge_scene\n    \n    scene = lodge_scene(roof_home(SEED), seed=SEED, environment_seed=int(ENV_SEED))\nelif program == 'roof_held':\n    from hearth import Scene, Box\n    from hearth.environment import Terrain, gradient, wave, radial\n    from hearth.randomness import Scope\n    from hearth.components import adapted\n    \n    # Same frozen-field recipe used by the experiment; no sample substitution.\n    es = int(ENV_SEED)\n    rng = Scope(es).stream('roof-space-environment')\n    domain = Box((-10, -4, -20), (52, 72, 52))\n    field = (gradient(rng.choice((-.025, 0, .025)), rng.choice((-.02, 0, .02)), 4) + wave(.3, .13, .09, rng.random() * 6)).blend(gradient(-.02, .02, 4) + radial(18, 18, 36, .5), radial(8, 10, 44, .6)).clamp(2, 6)\n    water = rng.choice((None, 4, 5))\n    environment = Scene(es, domain=domain)\n    environment.place('land', Terrain(domain, field, water))\n    environment.finalize()\n    scene = environment.fork(seed=SEED)\n    from examples.building_space import held_out_design\n    scene.compose_choice(adapted(\"building\", held_out_design(SEED), \"/land\"))\n    scene.finalize()\nelif program == 'roof_pair':\n    from hearth import Scene, Box\n    from hearth.environment import Terrain, gradient, wave, radial\n    from hearth.randomness import Scope\n    from hearth.components import adapted\n    \n    # Same frozen-field recipe used by the experiment; no sample substitution.\n    es = int(ENV_SEED)\n    rng = Scope(es).stream('roof-space-environment')\n    domain = Box((-10, -4, -20), (52, 72, 52))\n    field = (gradient(rng.choice((-.025, 0, .025)), rng.choice((-.02, 0, .02)), 4) + wave(.3, .13, .09, rng.random() * 6)).blend(gradient(-.02, .02, 4) + radial(18, 18, 36, .5), radial(8, 10, 44, .6)).clamp(2, 6)\n    water = rng.choice((None, 4, 5))\n    environment = Scene(es, domain=domain)\n    environment.place('land', Terrain(domain, field, water))\n    environment.finalize()\n    scene = environment.fork(seed=SEED)\n    from examples.roof_home import roof_home\n    scene.compose_choice(adapted(\"building\", roof_home(SEED), \"/land\"))\n    scene.finalize()\nelif program == 'court':\n    from examples.garden_house import garden_house\n    from hearth.lodges import lodge_scene\n    \n    scene = lodge_scene(garden_house(SEED), seed=SEED, environment_seed=int(ENV_SEED))\nelif program == 'home':\n    from hearth.lodges import hillside_home, lodge_scene\n    \n    scene = lodge_scene(hillside_home(SEED), seed=SEED, environment_seed=int(ENV_SEED))\nelif program == 'hall':\n    from hearth.lodges import gabled_hall, lodge_scene\n    \n    scene = lodge_scene(gabled_hall(SEED), seed=SEED, environment_seed=int(ENV_SEED))\nelif program == 'high':\n    from hearth.lodges import high_house, lodge_scene\n    \n    scene = lodge_scene(high_house(SEED), seed=SEED, environment_seed=int(ENV_SEED))\nelif program == 'adaptation':\n    from hearth import Scene\n    from hearth.environment import Terrain\n    from hearth.assessment import adaptation_expression\n    from hearth.components.building import adapted\n    from hearth.lodges import hillside_home\n    from hearth.quality_assessment import DOMAIN\n    \n    field, water = adaptation_expression(int(ENV_SEED))\n    environment = Scene(int(ENV_SEED), domain=DOMAIN)\n    environment.place('land', Terrain(DOMAIN, field, water))\n    environment.finalize()\n    scene = environment.fork(seed=SEED)\n    scene.compose_choice(adapted('building', hillside_home(SEED), '/land'))\n    scene.finalize()\nelif program == 'settlement':\n    from hearth.programs import settlement_scene\n    \n    # Same public entry point used by the delivered generate.py.\n    # This program consumes SEED and COUNT. Other controls are unused.\n    scene = settlement_scene(seed=SEED, count=COUNT)\nelif program == 'courtyard':\n    from examples.courtyard import build\n    scene = build(SEED)\nelif program == 'commons':\n    from hearth.programs import building_scene, commons\n    scene = building_scene(commons(SEED), seed=SEED)\nelif program == 'atelier':\n    from hearth.programs import building_scene, atelier\n    scene = building_scene(atelier(SEED), seed=SEED)\nelif program == 'dwelling':\n    from hearth.programs import building_scene, dwelling\n    scene = building_scene(dwelling(SEED), seed=SEED)\nelif program == 'campus':\n    from hearth_extensions.programs import extension_scene, branching_campus\n    \n    scene = extension_scene(branching_campus, seed=SEED, environment_seed=int(ENV_SEED))\nelif program == 'perimeter':\n    from hearth_extensions.programs import extension_scene, perimeter_cluster\n    \n    scene = extension_scene(perimeter_cluster, seed=SEED, environment_seed=int(ENV_SEED))\nelif program == 'sample_hall':\n    from hearth_extensions.assessment import hall_scene\n    scene = hall_scene(SEED, int(ENV_SEED))\nelif program == 'sample_connector':\n    from hearth_extensions.assessment import freeze_probe, connector_scene\n    scene = connector_scene(freeze_probe(int(ENV_SEED)), SEED)\nelif program == 'sample_boundary':\n    from hearth import Scene\n    from hearth.environment import Terrain\n    from hearth_extensions.assessment import PROBE_DOMAIN, probe_expression, boundary_scene\n    field, _ = probe_expression(int(ENV_SEED))\n    environment = Scene(int(ENV_SEED), domain=PROBE_DOMAIN)\n    environment.place('land', Terrain(PROBE_DOMAIN, field))\n    environment.finalize()\n    scene = boundary_scene(environment, SEED)\nelif program == 'hearth_home':\n    from examples.hearth_house import hearth_house\n    from hearth.lodges import lodge_scene\n    \n    scene = lodge_scene(hearth_house(SEED), seed=SEED, environment_seed=int(ENV_SEED))\nelif program == 'hearth_pair':\n    from hearth import Scene, Box\n    from hearth.environment import Terrain, gradient, wave, radial\n    from hearth.randomness import Scope\n    from hearth.components import adapted\n    from examples.hearth_house import hearth_house\n    \n    es = int(ENV_SEED)\n    rng = Scope(es).stream('craft-environment')\n    domain = Box((-10, -4, -20), (58, 72, 58))\n    field = (gradient(rng.choice((-.025, 0, .025)), rng.choice((-.02, .02)), 4) + wave(.35, .11, .08, rng.random() * 6)).blend(gradient(.02, -.01, 4) + radial(20, 18, 35, .6), radial(11, 12, 42, .7)).clamp(2, 6)\n    water = rng.choice((None, 4, 5))\n    environment = Scene(es, domain=domain)\n    environment.place('land', Terrain(domain, field, water))\n    environment.finalize()\n    scene = environment.fork(seed=SEED)\n    scene.compose_choice(adapted('building', hearth_house(SEED), '/land'))\n    scene.finalize()\nprint('Explored program: ' + program)\n",
      "variables": {
        "HIP_FRONT": 0,
        "HIP_REAR": 0,
        "TABLE_LENGTH": 3,
        "FITTED": true,
        "ATTIC_PURPOSE": "bedroom",
        "WINDOW_WIDTH": 1,
        "WINDOW_HEIGHT": 2,
        "WINDOW_BOXES": false,
        "CONTRAST_RAILS": false,
        "ENV_SEED": "0",
        "BAY": 13,
        "FLOORS": 3,
        "WING": false,
        "RISE": "2,1",
        "DORMER_SPACING": 0,
        "PORCH_DEPTH": 5,
        "BALCONY": false,
        "CHIMNEY": false,
        "GARDEN": false,
        "COUNT": null
      },
      "message": "Traceback (most recent call last):\n  File \"/runtime/bridge.py\", line 32, in generate_request\n    exec(compile(source, '<report-client>', 'exec'), scope)\n  File \"<report-client>\", line 26, in <module>\n  File \"/runtime/hearth/kernel/scene.py\", line 155, in compose_choice\n    trial._select_child('', choice, Frame(), Scope(self.seed))\n  File \"/runtime/hearth/kernel/scene.py\", line 359, in _select_child\n    raise error\nhearth.kernel.errors.ContractError: roof-abutment: /building at None: All declared alternatives violate the same condition: roof-abutment: /building/roof-0/weather/cover at (12, 19, 8): Roof may abut actual solid boundaries only; found minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] owned by /building/roof-3/weather/cover/gable-front/window\n"
    },
    {
      "label": "explore-settlement",
      "seed": "348",
      "source": "# Report sampler of public examples; library users can compose other programs.\nprograms = ('roof_home', 'roof_held', 'roof_pair', 'court', 'home', 'hall', 'high', 'adaptation', 'settlement', 'courtyard', 'commons', 'atelier', 'dwelling', 'campus', 'perimeter', 'sample_hall', 'sample_connector', 'sample_boundary', 'hearth_home', 'hearth_pair')\nprogram = programs[SEED % len(programs)]\nif program == 'roof_home':\n    from examples.roof_home import roof_home\n    from hearth.lodges import lodge_scene\n    \n    scene = lodge_scene(roof_home(SEED), seed=SEED, environment_seed=int(ENV_SEED))\nelif program == 'roof_held':\n    from hearth import Scene, Box\n    from hearth.environment import Terrain, gradient, wave, radial\n    from hearth.randomness import Scope\n    from hearth.components import adapted\n    \n    # Same frozen-field recipe used by the experiment; no sample substitution.\n    es = int(ENV_SEED)\n    rng = Scope(es).stream('roof-space-environment')\n    domain = Box((-10, -4, -20), (52, 72, 52))\n    field = (gradient(rng.choice((-.025, 0, .025)), rng.choice((-.02, 0, .02)), 4) + wave(.3, .13, .09, rng.random() * 6)).blend(gradient(-.02, .02, 4) + radial(18, 18, 36, .5), radial(8, 10, 44, .6)).clamp(2, 6)\n    water = rng.choice((None, 4, 5))\n    environment = Scene(es, domain=domain)\n    environment.place('land', Terrain(domain, field, water))\n    environment.finalize()\n    scene = environment.fork(seed=SEED)\n    from examples.building_space import held_out_design\n    scene.compose_choice(adapted(\"building\", held_out_design(SEED), \"/land\"))\n    scene.finalize()\nelif program == 'roof_pair':\n    from hearth import Scene, Box\n    from hearth.environment import Terrain, gradient, wave, radial\n    from hearth.randomness import Scope\n    from hearth.components import adapted\n    \n    # Same frozen-field recipe used by the experiment; no sample substitution.\n    es = int(ENV_SEED)\n    rng = Scope(es).stream('roof-space-environment')\n    domain = Box((-10, -4, -20), (52, 72, 52))\n    field = (gradient(rng.choice((-.025, 0, .025)), rng.choice((-.02, 0, .02)), 4) + wave(.3, .13, .09, rng.random() * 6)).blend(gradient(-.02, .02, 4) + radial(18, 18, 36, .5), radial(8, 10, 44, .6)).clamp(2, 6)\n    water = rng.choice((None, 4, 5))\n    environment = Scene(es, domain=domain)\n    environment.place('land', Terrain(domain, field, water))\n    environment.finalize()\n    scene = environment.fork(seed=SEED)\n    from examples.roof_home import roof_home\n    scene.compose_choice(adapted(\"building\", roof_home(SEED), \"/land\"))\n    scene.finalize()\nelif program == 'court':\n    from examples.garden_house import garden_house\n    from hearth.lodges import lodge_scene\n    \n    scene = lodge_scene(garden_house(SEED), seed=SEED, environment_seed=int(ENV_SEED))\nelif program == 'home':\n    from hearth.lodges import hillside_home, lodge_scene\n    \n    scene = lodge_scene(hillside_home(SEED), seed=SEED, environment_seed=int(ENV_SEED))\nelif program == 'hall':\n    from hearth.lodges import gabled_hall, lodge_scene\n    \n    scene = lodge_scene(gabled_hall(SEED), seed=SEED, environment_seed=int(ENV_SEED))\nelif program == 'high':\n    from hearth.lodges import high_house, lodge_scene\n    \n    scene = lodge_scene(high_house(SEED), seed=SEED, environment_seed=int(ENV_SEED))\nelif program == 'adaptation':\n    from hearth import Scene\n    from hearth.environment import Terrain\n    from hearth.assessment import adaptation_expression\n    from hearth.components.building import adapted\n    from hearth.lodges import hillside_home\n    from hearth.quality_assessment import DOMAIN\n    \n    field, water = adaptation_expression(int(ENV_SEED))\n    environment = Scene(int(ENV_SEED), domain=DOMAIN)\n    environment.place('land', Terrain(DOMAIN, field, water))\n    environment.finalize()\n    scene = environment.fork(seed=SEED)\n    scene.compose_choice(adapted('building', hillside_home(SEED), '/land'))\n    scene.finalize()\nelif program == 'settlement':\n    from hearth.programs import settlement_scene\n    \n    # Same public entry point used by the delivered generate.py.\n    # This program consumes SEED and COUNT. Other controls are unused.\n    scene = settlement_scene(seed=SEED, count=COUNT)\nelif program == 'courtyard':\n    from examples.courtyard import build\n    scene = build(SEED)\nelif program == 'commons':\n    from hearth.programs import building_scene, commons\n    scene = building_scene(commons(SEED), seed=SEED)\nelif program == 'atelier':\n    from hearth.programs import building_scene, atelier\n    scene = building_scene(atelier(SEED), seed=SEED)\nelif program == 'dwelling':\n    from hearth.programs import building_scene, dwelling\n    scene = building_scene(dwelling(SEED), seed=SEED)\nelif program == 'campus':\n    from hearth_extensions.programs import extension_scene, branching_campus\n    \n    scene = extension_scene(branching_campus, seed=SEED, environment_seed=int(ENV_SEED))\nelif program == 'perimeter':\n    from hearth_extensions.programs import extension_scene, perimeter_cluster\n    \n    scene = extension_scene(perimeter_cluster, seed=SEED, environment_seed=int(ENV_SEED))\nelif program == 'sample_hall':\n    from hearth_extensions.assessment import hall_scene\n    scene = hall_scene(SEED, int(ENV_SEED))\nelif program == 'sample_connector':\n    from hearth_extensions.assessment import freeze_probe, connector_scene\n    scene = connector_scene(freeze_probe(int(ENV_SEED)), SEED)\nelif program == 'sample_boundary':\n    from hearth import Scene\n    from hearth.environment import Terrain\n    from hearth_extensions.assessment import PROBE_DOMAIN, probe_expression, boundary_scene\n    field, _ = probe_expression(int(ENV_SEED))\n    environment = Scene(int(ENV_SEED), domain=PROBE_DOMAIN)\n    environment.place('land', Terrain(PROBE_DOMAIN, field))\n    environment.finalize()\n    scene = boundary_scene(environment, SEED)\nelif program == 'hearth_home':\n    from examples.hearth_house import hearth_house\n    from hearth.lodges import lodge_scene\n    \n    scene = lodge_scene(hearth_house(SEED), seed=SEED, environment_seed=int(ENV_SEED))\nelif program == 'hearth_pair':\n    from hearth import Scene, Box\n    from hearth.environment import Terrain, gradient, wave, radial\n    from hearth.randomness import Scope\n    from hearth.components import adapted\n    from examples.hearth_house import hearth_house\n    \n    es = int(ENV_SEED)\n    rng = Scope(es).stream('craft-environment')\n    domain = Box((-10, -4, -20), (58, 72, 58))\n    field = (gradient(rng.choice((-.025, 0, .025)), rng.choice((-.02, .02)), 4) + wave(.35, .11, .08, rng.random() * 6)).blend(gradient(.02, -.01, 4) + radial(20, 18, 35, .6), radial(11, 12, 42, .7)).clamp(2, 6)\n    water = rng.choice((None, 4, 5))\n    environment = Scene(es, domain=domain)\n    environment.place('land', Terrain(domain, field, water))\n    environment.finalize()\n    scene = environment.fork(seed=SEED)\n    scene.compose_choice(adapted('building', hearth_house(SEED), '/land'))\n    scene.finalize()\nprint('Explored program: ' + program)\n",
      "variables": {
        "HIP_FRONT": 0,
        "HIP_REAR": 0,
        "TABLE_LENGTH": 3,
        "FITTED": true,
        "ATTIC_PURPOSE": "bedroom",
        "WINDOW_WIDTH": 1,
        "WINDOW_HEIGHT": 2,
        "WINDOW_BOXES": false,
        "CONTRAST_RAILS": false,
        "ENV_SEED": "0",
        "BAY": 13,
        "FLOORS": 3,
        "WING": false,
        "RISE": "2,1",
        "DORMER_SPACING": 0,
        "PORCH_DEPTH": 5,
        "BALCONY": false,
        "CHIMNEY": false,
        "GARDEN": false,
        "COUNT": null
      },
      "message": "Traceback (most recent call last):\n  File \"/runtime/bridge.py\", line 32, in generate_request\n    exec(compile(source, '<report-client>', 'exec'), scope)\n  File \"<report-client>\", line 84, in <module>\n  File \"/runtime/hearth/programs.py\", line 185, in settlement_scene\n    scene.place('village', Settlement(designs, domain, '/land'))\n  File \"/runtime/hearth/kernel/scene.py\", line 149, in place\n    candidate._check(False)\n  File \"/runtime/hearth/kernel/scene.py\", line 391, in _check\n    raise ValidationError(errors)\nhearth.kernel.errors.ValidationError: clearance: /village/connections/paths at (-5, 5, 2): Protected player headroom is obstructed\nclearance: /village/connections/paths at (-5, 6, 2): Protected player headroom is obstructed\n"
    },
    {
      "label": "regression-settlement-314",
      "seed": "314",
      "source": "from hearth.programs import settlement_scene\n\n# Same public entry point used by the delivered generate.py.\n# This program consumes SEED and COUNT. Other controls are unused.\nscene = settlement_scene(seed=SEED, count=COUNT)\n",
      "variables": {
        "HIP_FRONT": 0,
        "HIP_REAR": 0,
        "TABLE_LENGTH": 3,
        "FITTED": true,
        "ATTIC_PURPOSE": "bedroom",
        "WINDOW_WIDTH": 1,
        "WINDOW_HEIGHT": 2,
        "WINDOW_BOXES": false,
        "CONTRAST_RAILS": false,
        "ENV_SEED": "0",
        "BAY": 13,
        "FLOORS": 3,
        "WING": false,
        "RISE": "2,1",
        "DORMER_SPACING": 0,
        "PORCH_DEPTH": 5,
        "BALCONY": false,
        "CHIMNEY": false,
        "GARDEN": false,
        "COUNT": null
      },
      "message": "Traceback (most recent call last):\n  File \"/runtime/bridge.py\", line 32, in generate_request\n    exec(compile(source, '<report-client>', 'exec'), scope)\n  File \"<report-client>\", line 5, in <module>\n  File \"/runtime/hearth/programs.py\", line 185, in settlement_scene\n    scene.place('village', Settlement(designs, domain, '/land'))\n  File \"/runtime/hearth/kernel/scene.py\", line 149, in place\n    candidate._check(False)\n  File \"/runtime/hearth/kernel/scene.py\", line 391, in _check\n    raise ValidationError(errors)\nhearth.kernel.errors.ValidationError: clearance: /village/connections/paths at (-5, 5, 40): Protected player headroom is obstructed\nclearance: /village/connections/paths at (-5, 6, 40): Protected player headroom is obstructed\n"
    }
  ],
  "glass_chain": [
    {
      "id": "/building/roof-0/weather/cover/dormer-left-4/face/window",
      "type": "window.flush"
    },
    {
      "id": "/building/roof-0/weather/cover/dormer-left-4/face",
      "type": "wall.dormer-face"
    },
    {
      "id": "/building/roof-0/weather/cover/dormer-left-4",
      "type": "roof.dormer"
    },
    {
      "id": "/building/roof-0/weather/cover",
      "type": "roof.weather-cover"
    },
    {
      "id": "/building/roof-0/weather",
      "type": "roof.profile"
    },
    {
      "id": "/building/roof-0",
      "type": "roof.inhabited"
    },
    {
      "id": "/building",
      "type": "building.rooms"
    }
  ],
  "loft_chain": [
    {
      "id": "/building/roof-2/room/station-0",
      "type": "furnishing.group.bedroom"
    },
    {
      "id": "/building/roof-2/room",
      "type": "room.loft.bedroom"
    },
    {
      "id": "/building/roof-2/weather",
      "type": "roof.profile"
    },
    {
      "id": "/building/roof-2",
      "type": "roof.inhabited"
    },
    {
      "id": "/building",
      "type": "building.rooms"
    }
  ],
  "reviewed_at": "2026-09-28T17:09:36.257Z",
  "passed": true
}