From 58f437b421accbd0d8259b2bc2cb88bfd5b7e2aa Mon Sep 17 00:00:00 2001 From: Richard Higgins Date: Fri, 2 Oct 2026 10:39:56 -1000 Subject: [PATCH 01/12] Record source identities for shared engine acceptance cohort Co-authored-by: Codex (GPT-6) --- tools/qualify_shared_engine.py | 89 ++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 tools/qualify_shared_engine.py diff --git a/tools/qualify_shared_engine.py b/tools/qualify_shared_engine.py new file mode 100644 index 00000000..c50ff0c5 --- /dev/null +++ b/tools/qualify_shared_engine.py @@ -0,0 +1,89 @@ +"""Run the asset-free shared engine cohort and retain source identities.""" + +import argparse +import hashlib +import json +import subprocess +from pathlib import Path + + +COHORT = ( + "test_animblend_controls", + "test_characters", + "test_picking", + "test_pathing", + "test_tile_paths", + "test_terrainmaps", +) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--dependencies", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + parser.add_argument("--test", choices=COHORT, action="append") + args = parser.parse_args() + root = Path(__file__).resolve().parents[1] + output = args.output.resolve() + output.mkdir(parents=True, exist_ok=False) + lock = root / "nimby.lock" + dependencies = [] + paths = [] + for line in lock.read_text().splitlines(): + name, _, _, expected = line.split() + directory = args.dependencies.resolve() / name + source = directory / "src" if (directory / "src").is_dir() else directory + if not source.is_dir(): + raise FileNotFoundError(source) + actual = subprocess.check_output( + ["git", "-C", str(directory), "rev-parse", "HEAD"], text=True + ).strip() + dependencies.append({"name": name, "expected": expected, "actual": actual}) + paths.append(f"--path:{source}") + report = { + "engine_source": subprocess.check_output( + ["git", "-C", str(root), "rev-parse", "HEAD"], text=True + ).strip(), + "nim_version": subprocess.check_output(["nim", "--version"], text=True), + "lock_sha256": hashlib.sha256(lock.read_bytes()).hexdigest(), + "dependencies": dependencies, + "dependency_lock_matches": all( + row["expected"] == row["actual"] for row in dependencies + ), + "scope": "Asset-free native assertions. Does not establish rendered browser or downstream game acceptance.", + "results": [], + } + for test in args.test or COHORT: + source = root / "tests" / f"{test}.nim" + command = [ + "nim", + "c", + "-r", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + f"--path:{root / 'src'}", + *paths, + f"--nimcache:{output / 'cache' / test}", + f"--out:{output / test}", + str(source), + ] + with (output / f"{test}.log").open("w") as log: + result = subprocess.run( + command, cwd=root, stdout=log, stderr=subprocess.STDOUT, timeout=90 + ) + report["results"].append( + { + "test": test, + "source_sha256": hashlib.sha256(source.read_bytes()).hexdigest(), + "command": command, + "exit_code": result.returncode, + } + ) + (output / "report.json").write_text(json.dumps(report, indent=2) + "\n") + if result.returncode: + raise SystemExit(result.returncode) From ccec9c181dfc244bfebbb3122859ce7eb1a2c9c4 Mon Sep 17 00:00:00 2001 From: Richard Higgins Date: Fri, 2 Oct 2026 10:53:54 -1000 Subject: [PATCH 02/12] Require locked dependencies for shared engine qualification Co-authored-by: Codex GPT-6 --- tools/qualify_shared_engine.md | 17 + tools/qualify_shared_engine.py | 4 + tools/qualify_shared_engine_results.json | 446 +++++++++++++++++++++++ 3 files changed, 467 insertions(+) create mode 100644 tools/qualify_shared_engine.md create mode 100644 tools/qualify_shared_engine_results.json diff --git a/tools/qualify_shared_engine.md b/tools/qualify_shared_engine.md new file mode 100644 index 00000000..a0774bf0 --- /dev/null +++ b/tools/qualify_shared_engine.md @@ -0,0 +1,17 @@ +# Shared engine qualification + +The six asset-free native tests pass on macOS with Nim2.2.10 and all28 dependency revisions matching `nimby.lock`. +The receipt records each source hash, exact command, dependency revision and exit code. + +```sh +python tools/qualify_shared_engine.py --dependencies /path/to/locked/dependencies --output /path/to/new/results +``` + +Dependency paths may reuse read-only caches or isolated Git worktrees. The runner rejects any lock mismatch before compiling tests. + +Initial unlocked tests failed because cached glTF lacked `Material.unlit`. Locking glTF exposed cached shady's missing `replaceTextureReads`. +Both failures disappeared after locking the complete dependency set. No shared cache was modified. + +These assertions cover animation controls, character representation, picking, pathing, tile paths and terrain maps. +They do not establish rendered pixel fidelity, browser execution or acceptance in Cogcraft, Puzzle Pirates and Dwarf Fortress. +Those downstream owners must pin game revisions, scene seeds and native/browser snapshots before declaring cross-game qualification. diff --git a/tools/qualify_shared_engine.py b/tools/qualify_shared_engine.py index c50ff0c5..2b548fa3 100644 --- a/tools/qualify_shared_engine.py +++ b/tools/qualify_shared_engine.py @@ -41,6 +41,7 @@ dependencies.append({"name": name, "expected": expected, "actual": actual}) paths.append(f"--path:{source}") report = { + "runner_sha256": hashlib.sha256(Path(__file__).read_bytes()).hexdigest(), "engine_source": subprocess.check_output( ["git", "-C", str(root), "rev-parse", "HEAD"], text=True ).strip(), @@ -53,6 +54,9 @@ "scope": "Asset-free native assertions. Does not establish rendered browser or downstream game acceptance.", "results": [], } + (output / "report.json").write_text(json.dumps(report, indent=2) + "\n") + if not report["dependency_lock_matches"]: + raise ValueError("Qualification requires every dependency to match nimby.lock") for test in args.test or COHORT: source = root / "tests" / f"{test}.nim" command = [ diff --git a/tools/qualify_shared_engine_results.json b/tools/qualify_shared_engine_results.json new file mode 100644 index 00000000..33425bfc --- /dev/null +++ b/tools/qualify_shared_engine_results.json @@ -0,0 +1,446 @@ +{ + "runner_sha256": "08037bfca4aafd386e75a9fccb20b4b80e61366bed233da3aa4fa04bac7b4761", + "engine_source": "58f437b421accbd0d8259b2bc2cb88bfd5b7e2aa", + "nim_version": "Nim Compiler Version 2.2.10 [MacOSX: arm64]\nCompiled at 2026-05-24\nCopyright (c) 2006-2026 by Andreas Rumpf\n\ngit hash: bfeb3146d1638b39f69007a4ae5a23e23ae4e5ef\nactive boot switches: -d:release\n", + "lock_sha256": "872447d9ba549499beb5483d7fd84bbb967eeb8152af1a65701db6cd65ec710a", + "dependencies": [ + { + "name": "bassy", + "expected": "907b69f2d0d4f32186d72947883f5bdac159ce9d", + "actual": "907b69f2d0d4f32186d72947883f5bdac159ce9d" + }, + { + "name": "curly", + "expected": "29558e2d2b76244a2c65fea08e9f4efff16c1997", + "actual": "29558e2d2b76244a2c65fea08e9f4efff16c1997" + }, + { + "name": "libcurl", + "expected": "eecbfc31e17ae2f09f0b6d2aaefcfb970c7d2be4", + "actual": "eecbfc31e17ae2f09f0b6d2aaefcfb970c7d2be4" + }, + { + "name": "fixxy", + "expected": "05e5446dffb70093056cebb0c57721a60deaf52a", + "actual": "05e5446dffb70093056cebb0c57721a60deaf52a" + }, + { + "name": "silky", + "expected": "b7f59fb7670a42bfe4302b327ec55ed11d76d0d4", + "actual": "b7f59fb7670a42bfe4302b327ec55ed11d76d0d4" + }, + { + "name": "pixie", + "expected": "30bb510877f02cbf9643e4f904e33d1c90f7910f", + "actual": "30bb510877f02cbf9643e4f904e33d1c90f7910f" + }, + { + "name": "vmath", + "expected": "bc260143102153b76328783e1c76c96e52c52a4b", + "actual": "bc260143102153b76328783e1c76c96e52c52a4b" + }, + { + "name": "chroma", + "expected": "08b0d65590221bb964544fd9badf29a146b9091a", + "actual": "08b0d65590221bb964544fd9badf29a146b9091a" + }, + { + "name": "zippy", + "expected": "e41dfa36a19d739a2be7493211decadbe451031d", + "actual": "e41dfa36a19d739a2be7493211decadbe451031d" + }, + { + "name": "flatty", + "expected": "9c3f14cc287890b742196b4f0f74f0b9faab29cb", + "actual": "9c3f14cc287890b742196b4f0f74f0b9faab29cb" + }, + { + "name": "nimsimd", + "expected": "dd27017fbfd1c6c00d37776a8f5d322bf6c5a83b", + "actual": "dd27017fbfd1c6c00d37776a8f5d322bf6c5a83b" + }, + { + "name": "bumpy", + "expected": "93583f6f8056a6259aaa96c89f4c143ba55bc6f0", + "actual": "93583f6f8056a6259aaa96c89f4c143ba55bc6f0" + }, + { + "name": "crunchy", + "expected": "98eb6526982bb8aae8eec6e8781f4539fa19e049", + "actual": "98eb6526982bb8aae8eec6e8781f4539fa19e049" + }, + { + "name": "shady", + "expected": "c899f7cd17dbe7021d6e3aa2908e6de6549c47f1", + "actual": "c899f7cd17dbe7021d6e3aa2908e6de6549c47f1" + }, + { + "name": "windy", + "expected": "c9e19887b0ff143f382f5e99a0720ee01f9a9f51", + "actual": "c9e19887b0ff143f382f5e99a0720ee01f9a9f51" + }, + { + "name": "opengl", + "expected": "8e2e098f82dc5eefd874488c37b5830233cd18f4", + "actual": "8e2e098f82dc5eefd874488c37b5830233cd18f4" + }, + { + "name": "urlly", + "expected": "99784779f05649df25fd9c33003d8ef6de027345", + "actual": "99784779f05649df25fd9c33003d8ef6de027345" + }, + { + "name": "ws", + "expected": "c9c0c7b51e2e83cc9305a895a0b144a297b4bea8", + "actual": "c9c0c7b51e2e83cc9305a895a0b144a297b4bea8" + }, + { + "name": "dx12", + "expected": "65049f4e2ec1acbbf1987bfa79817d472650c15e", + "actual": "65049f4e2ec1acbbf1987bfa79817d472650c15e" + }, + { + "name": "vk14", + "expected": "183cf440d6460d97c6b35d6346079d9982f8cd57", + "actual": "183cf440d6460d97c6b35d6346079d9982f8cd57" + }, + { + "name": "metal4", + "expected": "e9ef085d38cdc7abf3d89670f3eae1754595b9f9", + "actual": "e9ef085d38cdc7abf3d89670f3eae1754595b9f9" + }, + { + "name": "jsony", + "expected": "c5874fb71435e3ced8ee0025822e15f5d0e8e622", + "actual": "c5874fb71435e3ced8ee0025822e15f5d0e8e622" + }, + { + "name": "fluffy", + "expected": "535c5f234b41cd097b762203b5c216da1f4aeb1c", + "actual": "535c5f234b41cd097b762203b5c216da1f4aeb1c" + }, + { + "name": "gltf", + "expected": "adbf72a1dbfe797e5b87136cf9c1ad6665b222d9", + "actual": "adbf72a1dbfe797e5b87136cf9c1ad6665b222d9" + }, + { + "name": "webby", + "expected": "fe515be4ab5d02695289f88fca0d27f703a05599", + "actual": "fe515be4ab5d02695289f88fca0d27f703a05599" + }, + { + "name": "noisy", + "expected": "9625ee0a9dbdae44c427df95a4f8de006c061150", + "actual": "9625ee0a9dbdae44c427df95a4f8de006c061150" + }, + { + "name": "benchy", + "expected": "6425417b578dc54008285aad020625b4b4f61f7b", + "actual": "6425417b578dc54008285aad020625b4b4f61f7b" + }, + { + "name": "mummy", + "expected": "01deb1ff694988635c7bf0f24f6088a0bdf6db5d", + "actual": "01deb1ff694988635c7bf0f24f6088a0bdf6db5d" + } + ], + "dependency_lock_matches": true, + "scope": "Asset-free native assertions. Does not establish rendered browser or downstream game acceptance.", + "results": [ + { + "test": "test_animblend_controls", + "source_sha256": "4594333856486fc643e6e1f1d8f2ddacd702286f1b2070aea18fe522f1b1d8be", + "command": [ + "nim", + "c", + "-r", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-locked-final-cohort/cache/test_animblend_controls", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-locked-final-cohort/test_animblend_controls", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_animblend_controls.nim" + ], + "exit_code": 0 + }, + { + "test": "test_characters", + "source_sha256": "27fc89637ebfc3b3c9212d9ade79f145fac36fc18879650f70c6848925ac3a08", + "command": [ + "nim", + "c", + "-r", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-locked-final-cohort/cache/test_characters", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-locked-final-cohort/test_characters", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_characters.nim" + ], + "exit_code": 0 + }, + { + "test": "test_picking", + "source_sha256": "089565fc7aeddb87f5856abeced200ce1b91a015bbed283deec4de6559bba9a7", + "command": [ + "nim", + "c", + "-r", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-locked-final-cohort/cache/test_picking", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-locked-final-cohort/test_picking", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_picking.nim" + ], + "exit_code": 0 + }, + { + "test": "test_pathing", + "source_sha256": "19c80a043d6155fe2f229862d8215728c1ab13c93d65cd90fa50e7d37966764d", + "command": [ + "nim", + "c", + "-r", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-locked-final-cohort/cache/test_pathing", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-locked-final-cohort/test_pathing", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_pathing.nim" + ], + "exit_code": 0 + }, + { + "test": "test_tile_paths", + "source_sha256": "3334f96ea5ade4c9a49aea1f9fdf2cfe87a2c46822c9848cfc7697bd0e4e1c7f", + "command": [ + "nim", + "c", + "-r", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-locked-final-cohort/cache/test_tile_paths", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-locked-final-cohort/test_tile_paths", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_tile_paths.nim" + ], + "exit_code": 0 + }, + { + "test": "test_terrainmaps", + "source_sha256": "90157fa2ab8a0dc64b04021e5a98b920cfbc20cc3d9797f8c2c864b36188dd98", + "command": [ + "nim", + "c", + "-r", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-locked-final-cohort/cache/test_terrainmaps", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-locked-final-cohort/test_terrainmaps", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_terrainmaps.nim" + ], + "exit_code": 0 + } + ] +} From 4fc74f6adf000ea2534fcecfbd1859fa1fcaa252 Mon Sep 17 00:00:00 2001 From: Richard Higgins Date: Fri, 2 Oct 2026 11:06:29 -1000 Subject: [PATCH 03/12] Retain locked WebAssembly pathing and terrain qualification Co-authored-by: Codex GPT-6 --- tools/qualify_shared_engine.md | 4 + tools/qualify_shared_engine_wasm_results.json | 191 ++++++++++++++++++ 2 files changed, 195 insertions(+) create mode 100644 tools/qualify_shared_engine_wasm_results.json diff --git a/tools/qualify_shared_engine.md b/tools/qualify_shared_engine.md index a0774bf0..89ddd107 100644 --- a/tools/qualify_shared_engine.md +++ b/tools/qualify_shared_engine.md @@ -15,3 +15,7 @@ Both failures disappeared after locking the complete dependency set. No shared c These assertions cover animation controls, character representation, picking, pathing, tile paths and terrain maps. They do not establish rendered pixel fidelity, browser execution or acceptance in Cogcraft, Puzzle Pirates and Dwarf Fortress. Those downstream owners must pin game revisions, scene seeds and native/browser snapshots before declaring cross-game qualification. + +The same pathing, tile-path and terrain-map assertions also pass after Emscripten5.0.7-git compilation, under Node24. +`qualify_shared_engine_wasm_results.json` pins the native receipt and records each WebAssembly compile command and assertion output. +This checks simulation portability. A Node run does not establish browser graphics or WebGL behavior. diff --git a/tools/qualify_shared_engine_wasm_results.json b/tools/qualify_shared_engine_wasm_results.json new file mode 100644 index 00000000..70774e87 --- /dev/null +++ b/tools/qualify_shared_engine_wasm_results.json @@ -0,0 +1,191 @@ +{ + "native_receipt_sha256": "faa6ed895fa907cac5740a1b3fcd845e6ffa0594dafa878e57a2930021c65676", + "results": [ + { + "test": "test_pathing", + "command": [ + "/Users/relh/.nimby/nim-2.2.10/bin/nim", + "c", + "-d:emscripten", + "--os:linux", + "--cpu:wasm32", + "--cc:clang", + "--clang.exe:emcc", + "--clang.linkerexe:emcc", + "--gc:arc", + "--exceptions:goto", + "-d:noSignalHandler", + "--threads:off", + "--passL:-O3", + "--passL:-sEXIT_RUNTIME=1", + "--nimcache:/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-cohort/test_pathing", + "--out:/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-cohort/test_pathing.js", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_pathing.nim" + ], + "build_exit": 0, + "run_exit": 0, + "stdout": "Testing immutable layer context reuse\nTesting deterministic integer A* tie breaking\nTesting exact packed path height\nTesting presentation height follows rendered terrain triangles\nTesting integer slope walkability\nTesting string-pull drops open diagonals and keeps blocked kinks\nTesting string-pull does not skip a layer change\nTesting ray-triangle hits\nTesting walk pick hits ramps and skips holes\nTesting tile borders include changing tree and building blockers\nTesting tile borders include blockers across layer connections\nPathing tests passed\nTesting runtime occupancy survives path smoothing and releases on death\nTesting rotated discovery order for complete and partial paths\nMirrored path searches checked: 12150\nTesting fences between walkable tiles survive path smoothing\n", + "stderr": "" + }, + { + "test": "test_tile_paths", + "command": [ + "/Users/relh/.nimby/nim-2.2.10/bin/nim", + "c", + "-d:emscripten", + "--os:linux", + "--cpu:wasm32", + "--cc:clang", + "--clang.exe:emcc", + "--clang.linkerexe:emcc", + "--gc:arc", + "--exceptions:goto", + "-d:noSignalHandler", + "--threads:off", + "--passL:-O3", + "--passL:-sEXIT_RUNTIME=1", + "--nimcache:/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-cohort/test_tile_paths", + "--out:/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-cohort/test_tile_paths.js", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_tile_paths.nim" + ], + "build_exit": 0, + "run_exit": 0, + "stdout": "Testing findTilePath walks adjacent tiles from start to finish\nTesting findTilePath agrees with findPathPoints\nTesting findTilePath is empty when no route exists\nTesting findTilePath crosses layers up a ramp\nTesting a ramp one step off does not link\nTesting tileTop reads packed corner heights\nTesting tileTop floors toward negative infinity\nTesting tileTop matches a ramp's rise per tile\nTesting eight-neighbour paths take diagonals\nTesting eight-neighbour paths refuse a diagonal squeeze\nTesting a walkable callback sees blockers the terrain cache cannot\nTesting a budgeted search returns a partial path\nTesting enterCost steers a search around a taxed tile\nTesting custom edge costs keep the cheapest route\nTile path tests passed\n", + "stderr": "" + }, + { + "test": "test_terrainmaps", + "command": [ + "/Users/relh/.nimby/nim-2.2.10/bin/nim", + "c", + "-d:emscripten", + "--os:linux", + "--cpu:wasm32", + "--cc:clang", + "--clang.exe:emcc", + "--clang.linkerexe:emcc", + "--gc:arc", + "--exceptions:goto", + "-d:noSignalHandler", + "--threads:off", + "--passL:-O3", + "--passL:-sEXIT_RUNTIME=1", + "--nimcache:/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-cohort/test_terrainmaps", + "--out:/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-cohort/test_terrainmaps.js", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_terrainmaps.nim" + ], + "build_exit": 0, + "run_exit": 0, + "stdout": "Testing terrain sidecars preserve gameplay state and deterministic seeds\nTesting material neighborhoods and splats stop at disconnected heights\nTesting custom materials receive details without seeding stamps\nTesting custom grass kinds retain the original natural variation\nTesting empty, water, multiple, and malformed layers\nTerrain visual map tests passed\n", + "stderr": "" + } + ] +} From 879bdb350858a425fbec5a721118603389b54abc Mon Sep 17 00:00:00 2001 From: Richard Higgins Date: Fri, 2 Oct 2026 12:06:12 -1000 Subject: [PATCH 04/12] Record pinned Pirates native and WebAssembly acceptance hashes Co-authored-by: GPT-6 --- tools/qualify_shared_engine.md | 9 +++++++++ ...ualify_shared_engine_consumer_results.json | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 tools/qualify_shared_engine_consumer_results.json diff --git a/tools/qualify_shared_engine.md b/tools/qualify_shared_engine.md index 89ddd107..ddf15293 100644 --- a/tools/qualify_shared_engine.md +++ b/tools/qualify_shared_engine.md @@ -19,3 +19,12 @@ Those downstream owners must pin game revisions, scene seeds and native/browser The same pathing, tile-path and terrain-map assertions also pass after Emscripten5.0.7-git compilation, under Node24. `qualify_shared_engine_wasm_results.json` pins the native receipt and records each WebAssembly compile command and assertion output. This checks simulation portability. A Node run does not establish browser graphics or WebGL behavior. + +The pinned Puzzle Pirates consumer3f7b2fa870858c7069d55e52674153d47501c56b also passes its existing +`tools/test-portable.sh` harness against engine4fc74f6 and the28locked dependencies. Native and WebAssembly +outputs match across167lines, SHA256a5267673bc309265b90724fc2cd2cada9ccd50cad258ed24f26a7f2a44db45e4. +`qualify_shared_engine_consumer_results.json` records the exact command and source identities. +The shared low-memory wrapper initially refused admission75 while another task held its lock; it passed after +that owner released the seat. No lock bypass or shared dependency edits occurred. Consumer source remains unchanged. +This proves the existing consumer's simulation/replay hash portability, including puzzle and paid-labor fixtures. +Browser rendering and acceptance in the other two games remain unqualified. diff --git a/tools/qualify_shared_engine_consumer_results.json b/tools/qualify_shared_engine_consumer_results.json new file mode 100644 index 00000000..5dbc3783 --- /dev/null +++ b/tools/qualify_shared_engine_consumer_results.json @@ -0,0 +1,19 @@ +{ + "consumer": "Metta-AI/puzzle_pirates", + "consumer_source": "3f7b2fa870858c7069d55e52674153d47501c56b", + "engine_source": "4fc74f6adf000ea2534fcecfbd1859fa1fcaa252", + "command": "NIM= PATH=:$PATH python3 tools/dev-low-memory.py qa -- sh tools/test-portable.sh", + "exit_code": 0, + "output_lines": 167, + "native_sha256": "a5267673bc309265b90724fc2cd2cada9ccd50cad258ed24f26a7f2a44db45e4", + "wasm_sha256": "a5267673bc309265b90724fc2cd2cada9ccd50cad258ed24f26a7f2a44db45e4", + "compiler": "Nim2.2.10/Emscripten5.0.7-git", + "runtime": "Node24", + "harness_sha256": "8ecde66646fe8ba6c6502d6df59f2f6e92c2c2e54fa5be03ba10a8c33ffca62e", + "test_sha256": "25f98f49aeff1aaf132f7c89b1d00f8c783550a3a8b508883ed42c1e3681911c", + "locked_dependencies": 28, + "evidence_log": "/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-pirates-portable-admitted.log", + "scope": "Existing deterministic gameplay/state/replay hash harness; no browser/WebGL pixel fidelity or other consumer acceptance claim", + "failed_attempts": "Three prior admissions refused75 while another owner held shared lock; no bypass", + "own_checkout_note": "Qualified engine supplied through own vendor symlink; git status requires --ignore-submodules=all. Original consumer checkout untouched." +} From e81e12d39fb3438c235ade337ccc255cc200be86 Mon Sep 17 00:00:00 2001 From: Richard Higgins Date: Fri, 2 Oct 2026 13:45:43 -1000 Subject: [PATCH 05/12] Execute the shared engine cohort in native and WebAssembly builds Co-authored-by: GPT-6 --- tools/qualify_shared_engine.py | 53 +- ...alify_shared_engine_execution_results.json | 1216 +++++++++++++++++ 2 files changed, 1265 insertions(+), 4 deletions(-) create mode 100644 tools/qualify_shared_engine_execution_results.json diff --git a/tools/qualify_shared_engine.py b/tools/qualify_shared_engine.py index 2b548fa3..3ebad7a7 100644 --- a/tools/qualify_shared_engine.py +++ b/tools/qualify_shared_engine.py @@ -22,6 +22,7 @@ parser.add_argument("--dependencies", type=Path, required=True) parser.add_argument("--output", type=Path, required=True) parser.add_argument("--test", choices=COHORT, action="append") + parser.add_argument("--target", choices=("native", "wasm"), default="native") args = parser.parse_args() root = Path(__file__).resolve().parents[1] output = args.output.resolve() @@ -46,23 +47,31 @@ ["git", "-C", str(root), "rev-parse", "HEAD"], text=True ).strip(), "nim_version": subprocess.check_output(["nim", "--version"], text=True), + "target": args.target, "lock_sha256": hashlib.sha256(lock.read_bytes()).hexdigest(), "dependencies": dependencies, "dependency_lock_matches": all( row["expected"] == row["actual"] for row in dependencies ), - "scope": "Asset-free native assertions. Does not establish rendered browser or downstream game acceptance.", + "scope": "Asset-free native or WebAssembly assertions. Does not establish rendered browser or downstream game acceptance.", "results": [], } (output / "report.json").write_text(json.dumps(report, indent=2) + "\n") if not report["dependency_lock_matches"]: raise ValueError("Qualification requires every dependency to match nimby.lock") + if args.target == "wasm": + report["emscripten_version"] = subprocess.check_output( + ["emcc", "--version"], text=True + ) + report["node_version"] = subprocess.check_output( + ["node", "--version"], text=True + ) for test in args.test or COHORT: source = root / "tests" / f"{test}.nim" command = [ "nim", "c", - "-r", + "--parallelBuild:1", "--skipUserCfg:on", "--skipParentCfg:on", "--skipProjCfg:on", @@ -73,9 +82,27 @@ f"--path:{root / 'src'}", *paths, f"--nimcache:{output / 'cache' / test}", - f"--out:{output / test}", - str(source), ] + executable = output / (test + ".js" if args.target == "wasm" else test) + if args.target == "wasm": + command.extend( + ( + "-d:emscripten", + "--os:linux", + "--cpu:wasm32", + "--cc:clang", + "--clang.exe:emcc", + "--clang.linkerexe:emcc", + "--gc:arc", + "--exceptions:goto", + "-d:noSignalHandler", + "--threads:off", + "--passL:-O3", + "--passL:-sEXIT_RUNTIME=1", + "--passL:-sEXPORTED_FUNCTIONS=_main,_malloc", + ) + ) + command.extend((f"--out:{executable}", str(source))) with (output / f"{test}.log").open("w") as log: result = subprocess.run( command, cwd=root, stdout=log, stderr=subprocess.STDOUT, timeout=90 @@ -91,3 +118,21 @@ (output / "report.json").write_text(json.dumps(report, indent=2) + "\n") if result.returncode: raise SystemExit(result.returncode) + execution = ( + ["node", str(executable)] if args.target == "wasm" else [str(executable)] + ) + with (output / f"{test}.run.log").open("w") as log: + run = subprocess.run( + execution, cwd=root, stdout=log, stderr=subprocess.STDOUT, timeout=30 + ) + report["results"][-1].update( + execution=execution, + runtime_exit_code=run.returncode, + executable_sha256=hashlib.sha256(executable.read_bytes()).hexdigest(), + output_sha256=hashlib.sha256( + (output / f"{test}.run.log").read_bytes() + ).hexdigest(), + ) + (output / "report.json").write_text(json.dumps(report, indent=2) + "\n") + if run.returncode: + raise SystemExit(run.returncode) diff --git a/tools/qualify_shared_engine_execution_results.json b/tools/qualify_shared_engine_execution_results.json new file mode 100644 index 00000000..2a50b4af --- /dev/null +++ b/tools/qualify_shared_engine_execution_results.json @@ -0,0 +1,1216 @@ +{ + "native": { + "runner_sha256": "18f311ac5990dd43a0a13322c4c5f5eac25d0dec5fd9aa61e75446d770a5a639", + "engine_source": "879bdb350858a425fbec5a721118603389b54abc", + "nim_version": "Nim Compiler Version 2.2.10 [MacOSX: arm64]\nCompiled at 2026-05-24\nCopyright (c) 2006-2026 by Andreas Rumpf\n\ngit hash: bfeb3146d1638b39f69007a4ae5a23e23ae4e5ef\nactive boot switches: -d:release\n", + "target": "native", + "lock_sha256": "872447d9ba549499beb5483d7fd84bbb967eeb8152af1a65701db6cd65ec710a", + "dependencies": [ + { + "name": "bassy", + "expected": "907b69f2d0d4f32186d72947883f5bdac159ce9d", + "actual": "907b69f2d0d4f32186d72947883f5bdac159ce9d" + }, + { + "name": "curly", + "expected": "29558e2d2b76244a2c65fea08e9f4efff16c1997", + "actual": "29558e2d2b76244a2c65fea08e9f4efff16c1997" + }, + { + "name": "libcurl", + "expected": "eecbfc31e17ae2f09f0b6d2aaefcfb970c7d2be4", + "actual": "eecbfc31e17ae2f09f0b6d2aaefcfb970c7d2be4" + }, + { + "name": "fixxy", + "expected": "05e5446dffb70093056cebb0c57721a60deaf52a", + "actual": "05e5446dffb70093056cebb0c57721a60deaf52a" + }, + { + "name": "silky", + "expected": "b7f59fb7670a42bfe4302b327ec55ed11d76d0d4", + "actual": "b7f59fb7670a42bfe4302b327ec55ed11d76d0d4" + }, + { + "name": "pixie", + "expected": "30bb510877f02cbf9643e4f904e33d1c90f7910f", + "actual": "30bb510877f02cbf9643e4f904e33d1c90f7910f" + }, + { + "name": "vmath", + "expected": "bc260143102153b76328783e1c76c96e52c52a4b", + "actual": "bc260143102153b76328783e1c76c96e52c52a4b" + }, + { + "name": "chroma", + "expected": "08b0d65590221bb964544fd9badf29a146b9091a", + "actual": "08b0d65590221bb964544fd9badf29a146b9091a" + }, + { + "name": "zippy", + "expected": "e41dfa36a19d739a2be7493211decadbe451031d", + "actual": "e41dfa36a19d739a2be7493211decadbe451031d" + }, + { + "name": "flatty", + "expected": "9c3f14cc287890b742196b4f0f74f0b9faab29cb", + "actual": "9c3f14cc287890b742196b4f0f74f0b9faab29cb" + }, + { + "name": "nimsimd", + "expected": "dd27017fbfd1c6c00d37776a8f5d322bf6c5a83b", + "actual": "dd27017fbfd1c6c00d37776a8f5d322bf6c5a83b" + }, + { + "name": "bumpy", + "expected": "93583f6f8056a6259aaa96c89f4c143ba55bc6f0", + "actual": "93583f6f8056a6259aaa96c89f4c143ba55bc6f0" + }, + { + "name": "crunchy", + "expected": "98eb6526982bb8aae8eec6e8781f4539fa19e049", + "actual": "98eb6526982bb8aae8eec6e8781f4539fa19e049" + }, + { + "name": "shady", + "expected": "c899f7cd17dbe7021d6e3aa2908e6de6549c47f1", + "actual": "c899f7cd17dbe7021d6e3aa2908e6de6549c47f1" + }, + { + "name": "windy", + "expected": "c9e19887b0ff143f382f5e99a0720ee01f9a9f51", + "actual": "c9e19887b0ff143f382f5e99a0720ee01f9a9f51" + }, + { + "name": "opengl", + "expected": "8e2e098f82dc5eefd874488c37b5830233cd18f4", + "actual": "8e2e098f82dc5eefd874488c37b5830233cd18f4" + }, + { + "name": "urlly", + "expected": "99784779f05649df25fd9c33003d8ef6de027345", + "actual": "99784779f05649df25fd9c33003d8ef6de027345" + }, + { + "name": "ws", + "expected": "c9c0c7b51e2e83cc9305a895a0b144a297b4bea8", + "actual": "c9c0c7b51e2e83cc9305a895a0b144a297b4bea8" + }, + { + "name": "dx12", + "expected": "65049f4e2ec1acbbf1987bfa79817d472650c15e", + "actual": "65049f4e2ec1acbbf1987bfa79817d472650c15e" + }, + { + "name": "vk14", + "expected": "183cf440d6460d97c6b35d6346079d9982f8cd57", + "actual": "183cf440d6460d97c6b35d6346079d9982f8cd57" + }, + { + "name": "metal4", + "expected": "e9ef085d38cdc7abf3d89670f3eae1754595b9f9", + "actual": "e9ef085d38cdc7abf3d89670f3eae1754595b9f9" + }, + { + "name": "jsony", + "expected": "c5874fb71435e3ced8ee0025822e15f5d0e8e622", + "actual": "c5874fb71435e3ced8ee0025822e15f5d0e8e622" + }, + { + "name": "fluffy", + "expected": "535c5f234b41cd097b762203b5c216da1f4aeb1c", + "actual": "535c5f234b41cd097b762203b5c216da1f4aeb1c" + }, + { + "name": "gltf", + "expected": "adbf72a1dbfe797e5b87136cf9c1ad6665b222d9", + "actual": "adbf72a1dbfe797e5b87136cf9c1ad6665b222d9" + }, + { + "name": "webby", + "expected": "fe515be4ab5d02695289f88fca0d27f703a05599", + "actual": "fe515be4ab5d02695289f88fca0d27f703a05599" + }, + { + "name": "noisy", + "expected": "9625ee0a9dbdae44c427df95a4f8de006c061150", + "actual": "9625ee0a9dbdae44c427df95a4f8de006c061150" + }, + { + "name": "benchy", + "expected": "6425417b578dc54008285aad020625b4b4f61f7b", + "actual": "6425417b578dc54008285aad020625b4b4f61f7b" + }, + { + "name": "mummy", + "expected": "01deb1ff694988635c7bf0f24f6088a0bdf6db5d", + "actual": "01deb1ff694988635c7bf0f24f6088a0bdf6db5d" + } + ], + "dependency_lock_matches": true, + "scope": "Asset-free native or WebAssembly assertions. Does not establish rendered browser or downstream game acceptance.", + "results": [ + { + "test": "test_animblend_controls", + "source_sha256": "4594333856486fc643e6e1f1d8f2ddacd702286f1b2070aea18fe522f1b1d8be", + "command": [ + "nim", + "c", + "--parallelBuild:1", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/cache/test_animblend_controls", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_animblend_controls", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_animblend_controls.nim" + ], + "exit_code": 0, + "execution": [ + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_animblend_controls" + ], + "runtime_exit_code": 0, + "executable_sha256": "d8c3a0466ff970bd355fa279571e2ce9230c74da1b266f50babc7df8c0597f0c", + "output_sha256": "4302f2d3b0f976073e483b045e398a4c440fc2eaa471aaf07c5cccf5f95fdaa9" + }, + { + "test": "test_characters", + "source_sha256": "27fc89637ebfc3b3c9212d9ade79f145fac36fc18879650f70c6848925ac3a08", + "command": [ + "nim", + "c", + "--parallelBuild:1", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/cache/test_characters", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_characters", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_characters.nim" + ], + "exit_code": 0, + "execution": [ + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_characters" + ], + "runtime_exit_code": 0, + "executable_sha256": "90a7856a5001703ff4cec50c2964d79d50a5841c4972823b6dcbf18cbd973b55", + "output_sha256": "5ec66a438911c0114442f92a47df3f0d6d242b826a1a30fb805602c8ba2653a0" + }, + { + "test": "test_picking", + "source_sha256": "089565fc7aeddb87f5856abeced200ce1b91a015bbed283deec4de6559bba9a7", + "command": [ + "nim", + "c", + "--parallelBuild:1", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/cache/test_picking", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_picking", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_picking.nim" + ], + "exit_code": 0, + "execution": [ + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_picking" + ], + "runtime_exit_code": 0, + "executable_sha256": "742d82a90548195c0eaa70ef2ecf830bc21a5d8ddb67d4f18ef9ccf38aa9586b", + "output_sha256": "32cfbc027f8bbb695d39e372b5d185776fff4c078e491c2bb783f0b762c3bbb8" + }, + { + "test": "test_pathing", + "source_sha256": "19c80a043d6155fe2f229862d8215728c1ab13c93d65cd90fa50e7d37966764d", + "command": [ + "nim", + "c", + "--parallelBuild:1", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/cache/test_pathing", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_pathing", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_pathing.nim" + ], + "exit_code": 0, + "execution": [ + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_pathing" + ], + "runtime_exit_code": 0, + "executable_sha256": "ef887f894939ed158f3e4fd96088914643663767d916ec498fbc15e4b9a6de3e", + "output_sha256": "07010f38b659f25e459ff52377f11b8e1791cbac08e357cd5131e58d62daf907" + }, + { + "test": "test_tile_paths", + "source_sha256": "3334f96ea5ade4c9a49aea1f9fdf2cfe87a2c46822c9848cfc7697bd0e4e1c7f", + "command": [ + "nim", + "c", + "--parallelBuild:1", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/cache/test_tile_paths", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_tile_paths", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_tile_paths.nim" + ], + "exit_code": 0, + "execution": [ + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_tile_paths" + ], + "runtime_exit_code": 0, + "executable_sha256": "2275a0c3f66aeebe5d1a0dd6023eb81e756284c764bb10960246b43317e15523", + "output_sha256": "0f58be69a96df58de7d2ae22359d0ebf56f22ec7c563e9d3df54fd30fe605ebf" + }, + { + "test": "test_terrainmaps", + "source_sha256": "90157fa2ab8a0dc64b04021e5a98b920cfbc20cc3d9797f8c2c864b36188dd98", + "command": [ + "nim", + "c", + "--parallelBuild:1", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/cache/test_terrainmaps", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_terrainmaps", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_terrainmaps.nim" + ], + "exit_code": 0, + "execution": [ + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_terrainmaps" + ], + "runtime_exit_code": 0, + "executable_sha256": "9e6ace69a665408b71256e66986869540758696ae30cbbce9a2d768e06be83c9", + "output_sha256": "3b80bee05c64f87524a76807d62c74f8287c3823c503a5046fe35b89d8228524" + } + ] + }, + "wasm_characters": { + "runner_sha256": "18f311ac5990dd43a0a13322c4c5f5eac25d0dec5fd9aa61e75446d770a5a639", + "engine_source": "879bdb350858a425fbec5a721118603389b54abc", + "nim_version": "Nim Compiler Version 2.2.10 [MacOSX: arm64]\nCompiled at 2026-05-24\nCopyright (c) 2006-2026 by Andreas Rumpf\n\ngit hash: bfeb3146d1638b39f69007a4ae5a23e23ae4e5ef\nactive boot switches: -d:release\n", + "target": "wasm", + "lock_sha256": "872447d9ba549499beb5483d7fd84bbb967eeb8152af1a65701db6cd65ec710a", + "dependencies": [ + { + "name": "bassy", + "expected": "907b69f2d0d4f32186d72947883f5bdac159ce9d", + "actual": "907b69f2d0d4f32186d72947883f5bdac159ce9d" + }, + { + "name": "curly", + "expected": "29558e2d2b76244a2c65fea08e9f4efff16c1997", + "actual": "29558e2d2b76244a2c65fea08e9f4efff16c1997" + }, + { + "name": "libcurl", + "expected": "eecbfc31e17ae2f09f0b6d2aaefcfb970c7d2be4", + "actual": "eecbfc31e17ae2f09f0b6d2aaefcfb970c7d2be4" + }, + { + "name": "fixxy", + "expected": "05e5446dffb70093056cebb0c57721a60deaf52a", + "actual": "05e5446dffb70093056cebb0c57721a60deaf52a" + }, + { + "name": "silky", + "expected": "b7f59fb7670a42bfe4302b327ec55ed11d76d0d4", + "actual": "b7f59fb7670a42bfe4302b327ec55ed11d76d0d4" + }, + { + "name": "pixie", + "expected": "30bb510877f02cbf9643e4f904e33d1c90f7910f", + "actual": "30bb510877f02cbf9643e4f904e33d1c90f7910f" + }, + { + "name": "vmath", + "expected": "bc260143102153b76328783e1c76c96e52c52a4b", + "actual": "bc260143102153b76328783e1c76c96e52c52a4b" + }, + { + "name": "chroma", + "expected": "08b0d65590221bb964544fd9badf29a146b9091a", + "actual": "08b0d65590221bb964544fd9badf29a146b9091a" + }, + { + "name": "zippy", + "expected": "e41dfa36a19d739a2be7493211decadbe451031d", + "actual": "e41dfa36a19d739a2be7493211decadbe451031d" + }, + { + "name": "flatty", + "expected": "9c3f14cc287890b742196b4f0f74f0b9faab29cb", + "actual": "9c3f14cc287890b742196b4f0f74f0b9faab29cb" + }, + { + "name": "nimsimd", + "expected": "dd27017fbfd1c6c00d37776a8f5d322bf6c5a83b", + "actual": "dd27017fbfd1c6c00d37776a8f5d322bf6c5a83b" + }, + { + "name": "bumpy", + "expected": "93583f6f8056a6259aaa96c89f4c143ba55bc6f0", + "actual": "93583f6f8056a6259aaa96c89f4c143ba55bc6f0" + }, + { + "name": "crunchy", + "expected": "98eb6526982bb8aae8eec6e8781f4539fa19e049", + "actual": "98eb6526982bb8aae8eec6e8781f4539fa19e049" + }, + { + "name": "shady", + "expected": "c899f7cd17dbe7021d6e3aa2908e6de6549c47f1", + "actual": "c899f7cd17dbe7021d6e3aa2908e6de6549c47f1" + }, + { + "name": "windy", + "expected": "c9e19887b0ff143f382f5e99a0720ee01f9a9f51", + "actual": "c9e19887b0ff143f382f5e99a0720ee01f9a9f51" + }, + { + "name": "opengl", + "expected": "8e2e098f82dc5eefd874488c37b5830233cd18f4", + "actual": "8e2e098f82dc5eefd874488c37b5830233cd18f4" + }, + { + "name": "urlly", + "expected": "99784779f05649df25fd9c33003d8ef6de027345", + "actual": "99784779f05649df25fd9c33003d8ef6de027345" + }, + { + "name": "ws", + "expected": "c9c0c7b51e2e83cc9305a895a0b144a297b4bea8", + "actual": "c9c0c7b51e2e83cc9305a895a0b144a297b4bea8" + }, + { + "name": "dx12", + "expected": "65049f4e2ec1acbbf1987bfa79817d472650c15e", + "actual": "65049f4e2ec1acbbf1987bfa79817d472650c15e" + }, + { + "name": "vk14", + "expected": "183cf440d6460d97c6b35d6346079d9982f8cd57", + "actual": "183cf440d6460d97c6b35d6346079d9982f8cd57" + }, + { + "name": "metal4", + "expected": "e9ef085d38cdc7abf3d89670f3eae1754595b9f9", + "actual": "e9ef085d38cdc7abf3d89670f3eae1754595b9f9" + }, + { + "name": "jsony", + "expected": "c5874fb71435e3ced8ee0025822e15f5d0e8e622", + "actual": "c5874fb71435e3ced8ee0025822e15f5d0e8e622" + }, + { + "name": "fluffy", + "expected": "535c5f234b41cd097b762203b5c216da1f4aeb1c", + "actual": "535c5f234b41cd097b762203b5c216da1f4aeb1c" + }, + { + "name": "gltf", + "expected": "adbf72a1dbfe797e5b87136cf9c1ad6665b222d9", + "actual": "adbf72a1dbfe797e5b87136cf9c1ad6665b222d9" + }, + { + "name": "webby", + "expected": "fe515be4ab5d02695289f88fca0d27f703a05599", + "actual": "fe515be4ab5d02695289f88fca0d27f703a05599" + }, + { + "name": "noisy", + "expected": "9625ee0a9dbdae44c427df95a4f8de006c061150", + "actual": "9625ee0a9dbdae44c427df95a4f8de006c061150" + }, + { + "name": "benchy", + "expected": "6425417b578dc54008285aad020625b4b4f61f7b", + "actual": "6425417b578dc54008285aad020625b4b4f61f7b" + }, + { + "name": "mummy", + "expected": "01deb1ff694988635c7bf0f24f6088a0bdf6db5d", + "actual": "01deb1ff694988635c7bf0f24f6088a0bdf6db5d" + } + ], + "dependency_lock_matches": true, + "scope": "Asset-free native or WebAssembly assertions. Does not establish rendered browser or downstream game acceptance.", + "results": [ + { + "test": "test_characters", + "source_sha256": "27fc89637ebfc3b3c9212d9ade79f145fac36fc18879650f70c6848925ac3a08", + "command": [ + "nim", + "c", + "--parallelBuild:1", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-characters-exports/cache/test_characters", + "-d:emscripten", + "--os:linux", + "--cpu:wasm32", + "--cc:clang", + "--clang.exe:emcc", + "--clang.linkerexe:emcc", + "--gc:arc", + "--exceptions:goto", + "-d:noSignalHandler", + "--threads:off", + "--passL:-O3", + "--passL:-sEXIT_RUNTIME=1", + "--passL:-sEXPORTED_FUNCTIONS=_main,_malloc", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-characters-exports/test_characters.js", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_characters.nim" + ], + "exit_code": 0, + "execution": [ + "node", + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-characters-exports/test_characters.js" + ], + "runtime_exit_code": 0, + "executable_sha256": "8ee8eb55292bc0f3011d6436784ab955d48d215c1d5b63e06f90226a7359dc3c", + "output_sha256": "5ec66a438911c0114442f92a47df3f0d6d242b826a1a30fb805602c8ba2653a0" + }, + { + "test": "test_animblend_controls", + "source_sha256": "4594333856486fc643e6e1f1d8f2ddacd702286f1b2070aea18fe522f1b1d8be", + "command": [ + "nim", + "c", + "--parallelBuild:1", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-characters-exports/cache/test_animblend_controls", + "-d:emscripten", + "--os:linux", + "--cpu:wasm32", + "--cc:clang", + "--clang.exe:emcc", + "--clang.linkerexe:emcc", + "--gc:arc", + "--exceptions:goto", + "-d:noSignalHandler", + "--threads:off", + "--passL:-O3", + "--passL:-sEXIT_RUNTIME=1", + "--passL:-sEXPORTED_FUNCTIONS=_main,_malloc", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-characters-exports/test_animblend_controls.js", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_animblend_controls.nim" + ], + "exit_code": 0, + "execution": [ + "node", + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-characters-exports/test_animblend_controls.js" + ], + "runtime_exit_code": 0, + "executable_sha256": "b8a272a7ce1f1539e7ec797ec20642ae4927a904fa07e00edd904886365d6f64", + "output_sha256": "4302f2d3b0f976073e483b045e398a4c440fc2eaa471aaf07c5cccf5f95fdaa9" + }, + { + "test": "test_picking", + "source_sha256": "089565fc7aeddb87f5856abeced200ce1b91a015bbed283deec4de6559bba9a7", + "command": [ + "nim", + "c", + "--parallelBuild:1", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-characters-exports/cache/test_picking", + "-d:emscripten", + "--os:linux", + "--cpu:wasm32", + "--cc:clang", + "--clang.exe:emcc", + "--clang.linkerexe:emcc", + "--gc:arc", + "--exceptions:goto", + "-d:noSignalHandler", + "--threads:off", + "--passL:-O3", + "--passL:-sEXIT_RUNTIME=1", + "--passL:-sEXPORTED_FUNCTIONS=_main,_malloc", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-characters-exports/test_picking.js", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_picking.nim" + ], + "exit_code": 0, + "execution": [ + "node", + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-characters-exports/test_picking.js" + ], + "runtime_exit_code": 0, + "executable_sha256": "81ba5395c174d94978643cd8cfd50562be604b5d4a69d03259bab1e9b491d6a9", + "output_sha256": "32cfbc027f8bbb695d39e372b5d185776fff4c078e491c2bb783f0b762c3bbb8" + } + ], + "emscripten_version": "emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 5.0.7-git\nCopyright (C) 2026 the Emscripten authors (see AUTHORS.txt)\nThis is free and open source software under the MIT license.\nThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n", + "node_version": "v24.12.0\n" + }, + "wasm_terrain": { + "runner_sha256": "18f311ac5990dd43a0a13322c4c5f5eac25d0dec5fd9aa61e75446d770a5a639", + "engine_source": "879bdb350858a425fbec5a721118603389b54abc", + "nim_version": "Nim Compiler Version 2.2.10 [MacOSX: arm64]\nCompiled at 2026-05-24\nCopyright (c) 2006-2026 by Andreas Rumpf\n\ngit hash: bfeb3146d1638b39f69007a4ae5a23e23ae4e5ef\nactive boot switches: -d:release\n", + "target": "wasm", + "lock_sha256": "872447d9ba549499beb5483d7fd84bbb967eeb8152af1a65701db6cd65ec710a", + "dependencies": [ + { + "name": "bassy", + "expected": "907b69f2d0d4f32186d72947883f5bdac159ce9d", + "actual": "907b69f2d0d4f32186d72947883f5bdac159ce9d" + }, + { + "name": "curly", + "expected": "29558e2d2b76244a2c65fea08e9f4efff16c1997", + "actual": "29558e2d2b76244a2c65fea08e9f4efff16c1997" + }, + { + "name": "libcurl", + "expected": "eecbfc31e17ae2f09f0b6d2aaefcfb970c7d2be4", + "actual": "eecbfc31e17ae2f09f0b6d2aaefcfb970c7d2be4" + }, + { + "name": "fixxy", + "expected": "05e5446dffb70093056cebb0c57721a60deaf52a", + "actual": "05e5446dffb70093056cebb0c57721a60deaf52a" + }, + { + "name": "silky", + "expected": "b7f59fb7670a42bfe4302b327ec55ed11d76d0d4", + "actual": "b7f59fb7670a42bfe4302b327ec55ed11d76d0d4" + }, + { + "name": "pixie", + "expected": "30bb510877f02cbf9643e4f904e33d1c90f7910f", + "actual": "30bb510877f02cbf9643e4f904e33d1c90f7910f" + }, + { + "name": "vmath", + "expected": "bc260143102153b76328783e1c76c96e52c52a4b", + "actual": "bc260143102153b76328783e1c76c96e52c52a4b" + }, + { + "name": "chroma", + "expected": "08b0d65590221bb964544fd9badf29a146b9091a", + "actual": "08b0d65590221bb964544fd9badf29a146b9091a" + }, + { + "name": "zippy", + "expected": "e41dfa36a19d739a2be7493211decadbe451031d", + "actual": "e41dfa36a19d739a2be7493211decadbe451031d" + }, + { + "name": "flatty", + "expected": "9c3f14cc287890b742196b4f0f74f0b9faab29cb", + "actual": "9c3f14cc287890b742196b4f0f74f0b9faab29cb" + }, + { + "name": "nimsimd", + "expected": "dd27017fbfd1c6c00d37776a8f5d322bf6c5a83b", + "actual": "dd27017fbfd1c6c00d37776a8f5d322bf6c5a83b" + }, + { + "name": "bumpy", + "expected": "93583f6f8056a6259aaa96c89f4c143ba55bc6f0", + "actual": "93583f6f8056a6259aaa96c89f4c143ba55bc6f0" + }, + { + "name": "crunchy", + "expected": "98eb6526982bb8aae8eec6e8781f4539fa19e049", + "actual": "98eb6526982bb8aae8eec6e8781f4539fa19e049" + }, + { + "name": "shady", + "expected": "c899f7cd17dbe7021d6e3aa2908e6de6549c47f1", + "actual": "c899f7cd17dbe7021d6e3aa2908e6de6549c47f1" + }, + { + "name": "windy", + "expected": "c9e19887b0ff143f382f5e99a0720ee01f9a9f51", + "actual": "c9e19887b0ff143f382f5e99a0720ee01f9a9f51" + }, + { + "name": "opengl", + "expected": "8e2e098f82dc5eefd874488c37b5830233cd18f4", + "actual": "8e2e098f82dc5eefd874488c37b5830233cd18f4" + }, + { + "name": "urlly", + "expected": "99784779f05649df25fd9c33003d8ef6de027345", + "actual": "99784779f05649df25fd9c33003d8ef6de027345" + }, + { + "name": "ws", + "expected": "c9c0c7b51e2e83cc9305a895a0b144a297b4bea8", + "actual": "c9c0c7b51e2e83cc9305a895a0b144a297b4bea8" + }, + { + "name": "dx12", + "expected": "65049f4e2ec1acbbf1987bfa79817d472650c15e", + "actual": "65049f4e2ec1acbbf1987bfa79817d472650c15e" + }, + { + "name": "vk14", + "expected": "183cf440d6460d97c6b35d6346079d9982f8cd57", + "actual": "183cf440d6460d97c6b35d6346079d9982f8cd57" + }, + { + "name": "metal4", + "expected": "e9ef085d38cdc7abf3d89670f3eae1754595b9f9", + "actual": "e9ef085d38cdc7abf3d89670f3eae1754595b9f9" + }, + { + "name": "jsony", + "expected": "c5874fb71435e3ced8ee0025822e15f5d0e8e622", + "actual": "c5874fb71435e3ced8ee0025822e15f5d0e8e622" + }, + { + "name": "fluffy", + "expected": "535c5f234b41cd097b762203b5c216da1f4aeb1c", + "actual": "535c5f234b41cd097b762203b5c216da1f4aeb1c" + }, + { + "name": "gltf", + "expected": "adbf72a1dbfe797e5b87136cf9c1ad6665b222d9", + "actual": "adbf72a1dbfe797e5b87136cf9c1ad6665b222d9" + }, + { + "name": "webby", + "expected": "fe515be4ab5d02695289f88fca0d27f703a05599", + "actual": "fe515be4ab5d02695289f88fca0d27f703a05599" + }, + { + "name": "noisy", + "expected": "9625ee0a9dbdae44c427df95a4f8de006c061150", + "actual": "9625ee0a9dbdae44c427df95a4f8de006c061150" + }, + { + "name": "benchy", + "expected": "6425417b578dc54008285aad020625b4b4f61f7b", + "actual": "6425417b578dc54008285aad020625b4b4f61f7b" + }, + { + "name": "mummy", + "expected": "01deb1ff694988635c7bf0f24f6088a0bdf6db5d", + "actual": "01deb1ff694988635c7bf0f24f6088a0bdf6db5d" + } + ], + "dependency_lock_matches": true, + "scope": "Asset-free native or WebAssembly assertions. Does not establish rendered browser or downstream game acceptance.", + "results": [ + { + "test": "test_pathing", + "source_sha256": "19c80a043d6155fe2f229862d8215728c1ab13c93d65cd90fa50e7d37966764d", + "command": [ + "nim", + "c", + "--parallelBuild:1", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-terrain-execution-final/cache/test_pathing", + "-d:emscripten", + "--os:linux", + "--cpu:wasm32", + "--cc:clang", + "--clang.exe:emcc", + "--clang.linkerexe:emcc", + "--gc:arc", + "--exceptions:goto", + "-d:noSignalHandler", + "--threads:off", + "--passL:-O3", + "--passL:-sEXIT_RUNTIME=1", + "--passL:-sEXPORTED_FUNCTIONS=_main,_malloc", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-terrain-execution-final/test_pathing.js", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_pathing.nim" + ], + "exit_code": 0, + "execution": [ + "node", + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-terrain-execution-final/test_pathing.js" + ], + "runtime_exit_code": 0, + "executable_sha256": "60064177218ec1f56f41fe164bff32e7416be03b1685262d0e050c2e2e691b97", + "output_sha256": "07010f38b659f25e459ff52377f11b8e1791cbac08e357cd5131e58d62daf907" + }, + { + "test": "test_tile_paths", + "source_sha256": "3334f96ea5ade4c9a49aea1f9fdf2cfe87a2c46822c9848cfc7697bd0e4e1c7f", + "command": [ + "nim", + "c", + "--parallelBuild:1", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-terrain-execution-final/cache/test_tile_paths", + "-d:emscripten", + "--os:linux", + "--cpu:wasm32", + "--cc:clang", + "--clang.exe:emcc", + "--clang.linkerexe:emcc", + "--gc:arc", + "--exceptions:goto", + "-d:noSignalHandler", + "--threads:off", + "--passL:-O3", + "--passL:-sEXIT_RUNTIME=1", + "--passL:-sEXPORTED_FUNCTIONS=_main,_malloc", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-terrain-execution-final/test_tile_paths.js", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_tile_paths.nim" + ], + "exit_code": 0, + "execution": [ + "node", + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-terrain-execution-final/test_tile_paths.js" + ], + "runtime_exit_code": 0, + "executable_sha256": "0ed43f0fd24c6a654c7c0e1a6f9df18ae5c1a30fd781bec1c8330c88938ed014", + "output_sha256": "0f58be69a96df58de7d2ae22359d0ebf56f22ec7c563e9d3df54fd30fe605ebf" + }, + { + "test": "test_terrainmaps", + "source_sha256": "90157fa2ab8a0dc64b04021e5a98b920cfbc20cc3d9797f8c2c864b36188dd98", + "command": [ + "nim", + "c", + "--parallelBuild:1", + "--skipUserCfg:on", + "--skipParentCfg:on", + "--skipProjCfg:on", + "-d:release", + "-d:nimTypeNames", + "-d:flatty64", + "-d:bassyNative", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bassy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/curly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/libcurl", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fixxy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/silky/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/pixie/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vmath/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/chroma/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/zippy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/flatty/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/nimsimd/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/bumpy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/crunchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/shady/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/windy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/opengl/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/urlly/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/ws/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/dx12/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/vk14/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/metal4/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/jsony/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/fluffy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/gltf/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/webby/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/noisy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/benchy/src", + "--path:/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-dependencies/mummy/src", + "--nimcache:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-terrain-execution-final/cache/test_terrainmaps", + "-d:emscripten", + "--os:linux", + "--cpu:wasm32", + "--cc:clang", + "--clang.exe:emcc", + "--clang.linkerexe:emcc", + "--gc:arc", + "--exceptions:goto", + "-d:noSignalHandler", + "--threads:off", + "--passL:-O3", + "--passL:-sEXIT_RUNTIME=1", + "--passL:-sEXPORTED_FUNCTIONS=_main,_malloc", + "--out:/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-terrain-execution-final/test_terrainmaps.js", + "/private/tmp/relh-october-dispatch/worktrees/engines-policy-cleanup/18-polyworld/tests/test_terrainmaps.nim" + ], + "exit_code": 0, + "execution": [ + "node", + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-terrain-execution-final/test_terrainmaps.js" + ], + "runtime_exit_code": 0, + "executable_sha256": "c0c85382e4a840c52f85076fe3fa4c1e5fd43d60cea23b32c1a58a352ccda1d1", + "output_sha256": "3b80bee05c64f87524a76807d62c74f8287c3823c503a5046fe35b89d8228524" + } + ], + "emscripten_version": "emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 5.0.7-git\nCopyright (C) 2026 the Emscripten authors (see AUTHORS.txt)\nThis is free and open source software under the MIT license.\nThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n", + "node_version": "v24.12.0\n" + }, + "all_six_assertion_outputs_equal": true, + "retained_failure": { + "artifact": "polyworld-wasm-characters", + "cause": "Windy EM_JS referenced _malloc; allocator was stripped without EXPORTED_FUNCTIONS.", + "fix": "Use consumer-standard _main,_malloc exports." + }, + "limits": "Asset-free Node/native assertions. No rendered browser/native consumer fidelity, frame-time, memory or multi-client acceptance claim." +} From 2fbc4c655f1067ec6efc3e5e6741116b8bcd7445 Mon Sep 17 00:00:00 2001 From: Richard Higgins Date: Fri, 2 Oct 2026 13:46:21 -1000 Subject: [PATCH 06/12] Declare subprocess status collection explicitly Co-authored-by: GPT-6 --- tools/qualify_shared_engine.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tools/qualify_shared_engine.py b/tools/qualify_shared_engine.py index 3ebad7a7..3a6bdb47 100644 --- a/tools/qualify_shared_engine.py +++ b/tools/qualify_shared_engine.py @@ -6,7 +6,6 @@ import subprocess from pathlib import Path - COHORT = ( "test_animblend_controls", "test_characters", @@ -105,7 +104,12 @@ command.extend((f"--out:{executable}", str(source))) with (output / f"{test}.log").open("w") as log: result = subprocess.run( - command, cwd=root, stdout=log, stderr=subprocess.STDOUT, timeout=90 + command, + cwd=root, + stdout=log, + stderr=subprocess.STDOUT, + timeout=90, + check=False, ) report["results"].append( { @@ -123,7 +127,12 @@ ) with (output / f"{test}.run.log").open("w") as log: run = subprocess.run( - execution, cwd=root, stdout=log, stderr=subprocess.STDOUT, timeout=30 + execution, + cwd=root, + stdout=log, + stderr=subprocess.STDOUT, + timeout=30, + check=False, ) report["results"][-1].update( execution=execution, From 35866582b08eb7aaca13340d75988371eb619822 Mon Sep 17 00:00:00 2001 From: Richard Higgins Date: Fri, 2 Oct 2026 21:37:11 -1000 Subject: [PATCH 07/12] Record complete native and WebAssembly runtime artifact custody Co-authored-by: GPT-6 --- tools/qualify_shared_engine.md | 6 + tools/qualify_shared_engine.py | 8 + ...alify_shared_engine_runtime_artifacts.json | 211 ++++++++++++++++++ 3 files changed, 225 insertions(+) create mode 100644 tools/qualify_shared_engine_runtime_artifacts.json diff --git a/tools/qualify_shared_engine.md b/tools/qualify_shared_engine.md index ddf15293..bfa53f3e 100644 --- a/tools/qualify_shared_engine.md +++ b/tools/qualify_shared_engine.md @@ -28,3 +28,9 @@ The shared low-memory wrapper initially refused admission75 while another task h that owner released the seat. No lock bypass or shared dependency edits occurred. Consumer source remains unchanged. This proves the existing consumer's simulation/replay hash portability, including puzzle and paid-labor fixtures. Browser rendering and acceptance in the other two games remain unqualified. + +Runtime artifact custody includes the native executable, or both the JavaScript loader and its `.wasm` module. +The qualifier fails if the expected module is missing. The primary executable hash remains separately recorded. +`qualify_shared_engine_runtime_artifacts.json` adds the module identities to retained execution evidence. +All six native and six Node runs reproduce their recorded assertion-output hashes. +This is artifact reexecution, not recompilation or rendered consumer acceptance. diff --git a/tools/qualify_shared_engine.py b/tools/qualify_shared_engine.py index 3a6bdb47..02c32fc9 100644 --- a/tools/qualify_shared_engine.py +++ b/tools/qualify_shared_engine.py @@ -138,6 +138,14 @@ execution=execution, runtime_exit_code=run.returncode, executable_sha256=hashlib.sha256(executable.read_bytes()).hexdigest(), + runtime_artifacts_sha256={ + artifact.name: hashlib.sha256(artifact.read_bytes()).hexdigest() + for artifact in ( + [executable, executable.with_suffix(".wasm")] + if args.target == "wasm" + else [executable] + ) + }, output_sha256=hashlib.sha256( (output / f"{test}.run.log").read_bytes() ).hexdigest(), diff --git a/tools/qualify_shared_engine_runtime_artifacts.json b/tools/qualify_shared_engine_runtime_artifacts.json new file mode 100644 index 00000000..7da4295a --- /dev/null +++ b/tools/qualify_shared_engine_runtime_artifacts.json @@ -0,0 +1,211 @@ +{ + "scope": "Reexecution of retained source-bound asset-free artifacts, not recompilation/browser/downstream acceptance", + "node_version": "v24.12.0", + "all12_pass": true, + "results": [ + { + "mode": "native", + "test": "test_animblend_controls", + "compiled_engine_source": "879bdb350858a425fbec5a721118603389b54abc", + "compile_receipt_sha256": "019c3581fcff4dbffdd8d18fc495feead1cd8fe99fccf7e29f574c0cc0ac1290", + "execution": [ + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_animblend_controls" + ], + "exit_code": 0, + "elapsed_seconds": 0.17810033401474357, + "runtime_artifacts_sha256": { + "test_animblend_controls": "d8c3a0466ff970bd355fa279571e2ce9230c74da1b266f50babc7df8c0597f0c" + }, + "output_sha256": "4302f2d3b0f976073e483b045e398a4c440fc2eaa471aaf07c5cccf5f95fdaa9", + "retained_output_matches": true + }, + { + "mode": "native", + "test": "test_characters", + "compiled_engine_source": "879bdb350858a425fbec5a721118603389b54abc", + "compile_receipt_sha256": "019c3581fcff4dbffdd8d18fc495feead1cd8fe99fccf7e29f574c0cc0ac1290", + "execution": [ + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_characters" + ], + "exit_code": 0, + "elapsed_seconds": 0.16704454191494733, + "runtime_artifacts_sha256": { + "test_characters": "90a7856a5001703ff4cec50c2964d79d50a5841c4972823b6dcbf18cbd973b55" + }, + "output_sha256": "5ec66a438911c0114442f92a47df3f0d6d242b826a1a30fb805602c8ba2653a0", + "retained_output_matches": true + }, + { + "mode": "native", + "test": "test_picking", + "compiled_engine_source": "879bdb350858a425fbec5a721118603389b54abc", + "compile_receipt_sha256": "019c3581fcff4dbffdd8d18fc495feead1cd8fe99fccf7e29f574c0cc0ac1290", + "execution": [ + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_picking" + ], + "exit_code": 0, + "elapsed_seconds": 0.09448491700459272, + "runtime_artifacts_sha256": { + "test_picking": "742d82a90548195c0eaa70ef2ecf830bc21a5d8ddb67d4f18ef9ccf38aa9586b" + }, + "output_sha256": "32cfbc027f8bbb695d39e372b5d185776fff4c078e491c2bb783f0b762c3bbb8", + "retained_output_matches": true + }, + { + "mode": "native", + "test": "test_pathing", + "compiled_engine_source": "879bdb350858a425fbec5a721118603389b54abc", + "compile_receipt_sha256": "019c3581fcff4dbffdd8d18fc495feead1cd8fe99fccf7e29f574c0cc0ac1290", + "execution": [ + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_pathing" + ], + "exit_code": 0, + "elapsed_seconds": 0.6418727909913287, + "runtime_artifacts_sha256": { + "test_pathing": "ef887f894939ed158f3e4fd96088914643663767d916ec498fbc15e4b9a6de3e" + }, + "output_sha256": "07010f38b659f25e459ff52377f11b8e1791cbac08e357cd5131e58d62daf907", + "retained_output_matches": true + }, + { + "mode": "native", + "test": "test_tile_paths", + "compiled_engine_source": "879bdb350858a425fbec5a721118603389b54abc", + "compile_receipt_sha256": "019c3581fcff4dbffdd8d18fc495feead1cd8fe99fccf7e29f574c0cc0ac1290", + "execution": [ + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_tile_paths" + ], + "exit_code": 0, + "elapsed_seconds": 0.18470266601070762, + "runtime_artifacts_sha256": { + "test_tile_paths": "2275a0c3f66aeebe5d1a0dd6023eb81e756284c764bb10960246b43317e15523" + }, + "output_sha256": "0f58be69a96df58de7d2ae22359d0ebf56f22ec7c563e9d3df54fd30fe605ebf", + "retained_output_matches": true + }, + { + "mode": "native", + "test": "test_terrainmaps", + "compiled_engine_source": "879bdb350858a425fbec5a721118603389b54abc", + "compile_receipt_sha256": "019c3581fcff4dbffdd8d18fc495feead1cd8fe99fccf7e29f574c0cc0ac1290", + "execution": [ + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-native-execution-final/test_terrainmaps" + ], + "exit_code": 0, + "elapsed_seconds": 0.3305517080007121, + "runtime_artifacts_sha256": { + "test_terrainmaps": "9e6ace69a665408b71256e66986869540758696ae30cbbce9a2d768e06be83c9" + }, + "output_sha256": "3b80bee05c64f87524a76807d62c74f8287c3823c503a5046fe35b89d8228524", + "retained_output_matches": true + }, + { + "mode": "wasm_characters", + "test": "test_characters", + "compiled_engine_source": "879bdb350858a425fbec5a721118603389b54abc", + "compile_receipt_sha256": "019c3581fcff4dbffdd8d18fc495feead1cd8fe99fccf7e29f574c0cc0ac1290", + "execution": [ + "node", + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-characters-exports/test_characters.js" + ], + "exit_code": 0, + "elapsed_seconds": 6.075495125027373, + "runtime_artifacts_sha256": { + "test_characters.js": "8ee8eb55292bc0f3011d6436784ab955d48d215c1d5b63e06f90226a7359dc3c", + "test_characters.wasm": "08ddc40e7ebb2235286a6aa7eb325f2c9d03c9a40e61c19adcf6fb37582ac927" + }, + "output_sha256": "5ec66a438911c0114442f92a47df3f0d6d242b826a1a30fb805602c8ba2653a0", + "retained_output_matches": true + }, + { + "mode": "wasm_characters", + "test": "test_animblend_controls", + "compiled_engine_source": "879bdb350858a425fbec5a721118603389b54abc", + "compile_receipt_sha256": "019c3581fcff4dbffdd8d18fc495feead1cd8fe99fccf7e29f574c0cc0ac1290", + "execution": [ + "node", + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-characters-exports/test_animblend_controls.js" + ], + "exit_code": 0, + "elapsed_seconds": 1.6826159580377862, + "runtime_artifacts_sha256": { + "test_animblend_controls.js": "b8a272a7ce1f1539e7ec797ec20642ae4927a904fa07e00edd904886365d6f64", + "test_animblend_controls.wasm": "8d1e37a6911b0dcf1a92504b725b7c7f04b98ad6d81da4addec683c3b4dc1ec8" + }, + "output_sha256": "4302f2d3b0f976073e483b045e398a4c440fc2eaa471aaf07c5cccf5f95fdaa9", + "retained_output_matches": true + }, + { + "mode": "wasm_characters", + "test": "test_picking", + "compiled_engine_source": "879bdb350858a425fbec5a721118603389b54abc", + "compile_receipt_sha256": "019c3581fcff4dbffdd8d18fc495feead1cd8fe99fccf7e29f574c0cc0ac1290", + "execution": [ + "node", + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-characters-exports/test_picking.js" + ], + "exit_code": 0, + "elapsed_seconds": 1.7376412919256836, + "runtime_artifacts_sha256": { + "test_picking.js": "81ba5395c174d94978643cd8cfd50562be604b5d4a69d03259bab1e9b491d6a9", + "test_picking.wasm": "24ef5356efd4205167dc7e214e38af9a3801643230ea5ecec4c17ea3fa128980" + }, + "output_sha256": "32cfbc027f8bbb695d39e372b5d185776fff4c078e491c2bb783f0b762c3bbb8", + "retained_output_matches": true + }, + { + "mode": "wasm_terrain", + "test": "test_pathing", + "compiled_engine_source": "879bdb350858a425fbec5a721118603389b54abc", + "compile_receipt_sha256": "019c3581fcff4dbffdd8d18fc495feead1cd8fe99fccf7e29f574c0cc0ac1290", + "execution": [ + "node", + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-terrain-execution-final/test_pathing.js" + ], + "exit_code": 0, + "elapsed_seconds": 3.4165458329953253, + "runtime_artifacts_sha256": { + "test_pathing.js": "60064177218ec1f56f41fe164bff32e7416be03b1685262d0e050c2e2e691b97", + "test_pathing.wasm": "448c6f91a8e2dedc0b65e4535c7649a378844afbbe61ed115fdb200d78250550" + }, + "output_sha256": "07010f38b659f25e459ff52377f11b8e1791cbac08e357cd5131e58d62daf907", + "retained_output_matches": true + }, + { + "mode": "wasm_terrain", + "test": "test_tile_paths", + "compiled_engine_source": "879bdb350858a425fbec5a721118603389b54abc", + "compile_receipt_sha256": "019c3581fcff4dbffdd8d18fc495feead1cd8fe99fccf7e29f574c0cc0ac1290", + "execution": [ + "node", + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-terrain-execution-final/test_tile_paths.js" + ], + "exit_code": 0, + "elapsed_seconds": 1.6398837500019, + "runtime_artifacts_sha256": { + "test_tile_paths.js": "0ed43f0fd24c6a654c7c0e1a6f9df18ae5c1a30fd781bec1c8330c88938ed014", + "test_tile_paths.wasm": "2f27766e73dffcc043d023efd5b8acdf7eda6757e43f3ae8c4b0ec827e76d12f" + }, + "output_sha256": "0f58be69a96df58de7d2ae22359d0ebf56f22ec7c563e9d3df54fd30fe605ebf", + "retained_output_matches": true + }, + { + "mode": "wasm_terrain", + "test": "test_terrainmaps", + "compiled_engine_source": "879bdb350858a425fbec5a721118603389b54abc", + "compile_receipt_sha256": "019c3581fcff4dbffdd8d18fc495feead1cd8fe99fccf7e29f574c0cc0ac1290", + "execution": [ + "node", + "/private/tmp/relh-october-dispatch/evidence/engines-policy-cleanup/polyworld-wasm-terrain-execution-final/test_terrainmaps.js" + ], + "exit_code": 0, + "elapsed_seconds": 1.5278644160134718, + "runtime_artifacts_sha256": { + "test_terrainmaps.js": "c0c85382e4a840c52f85076fe3fa4c1e5fd43d60cea23b32c1a58a352ccda1d1", + "test_terrainmaps.wasm": "6174b4b24c0dc4b892106259d51f5b92effa15a950c79a7590e9f8b8f0787628" + }, + "output_sha256": "3b80bee05c64f87524a76807d62c74f8287c3823c503a5046fe35b89d8228524", + "retained_output_matches": true + } + ] +} From f2ba2b193590a55d7ebcfd8268e6b84d5099d673 Mon Sep 17 00:00:00 2001 From: Richard Higgins Date: Sun, 4 Oct 2026 01:59:48 -1000 Subject: [PATCH 08/12] Retain current consumer source receipts and performance limits Co-authored-by: GPT-6 --- ...ared_engine_current_consumer_receipts.json | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 tools/qualify_shared_engine_current_consumer_receipts.json diff --git a/tools/qualify_shared_engine_current_consumer_receipts.json b/tools/qualify_shared_engine_current_consumer_receipts.json new file mode 100644 index 00000000..639b31c7 --- /dev/null +++ b/tools/qualify_shared_engine_current_consumer_receipts.json @@ -0,0 +1,91 @@ +{ + "scope": "Source-qualified peer receipts for current consumer review. Original three-consumer acceptance OPEN; no new runs, graphics allocation or persistent-world claim.", + "pirates_current": { + "source": "7c23a909d3d59b19e4eefe5c7551f48b350d3d88", + "main_readback": "7c23a909d3d59b19e4eefe5c7551f48b350d3d88", + "source_owner": "persistent-games50/UI33", + "peer_receipt_sha256": { + "20-asyncify-main-delivery-readback.json": "57f1d2363617a2fdd2886991c45464b45a3aa28c031a5d7d31192188988ef652", + "20-asyncify-callback-controls.json": "4f618bf827190c9d9fe612410ef96dd699d5e2fcf98f9745a45acb49d70ff437", + "20-current7c23-two-browser-60b6d2d26b57451781407f7be3657293/receipt.json": "112ed303a561279367c3bd1450b3b66c4e5e88e019eb2ddc177fe22f944c6a89" + }, + "component_delivered_to_main": true, + "actual_two_browser_functional": { + "state": "two-browser-physical-move-chat-reload-passed", + "elapsedSeconds": 24.69731195794884, + "ownedTunnelJoined": true, + "peerChatObserved": true, + "peerChatReloaded": true, + "firstActor": 1, + "gpuDisabled": true, + "hardwareAcceptance": false + }, + "physical_motion": { + "before": { + "x": 32, + "y": 45 + }, + "after": { + "x": 33, + "y": 45 + }, + "reloaded": { + "actorId": 1, + "frameCount": 3, + "position": { + "x": 33, + "y": 45 + } + } + }, + "indirect_suspension_controls": "Three valid controls pass; ignore-indirect plus indirect yield intentionally fails. Source owner audited actual Harbour direct yield and synchronous callbacks.", + "limits": "Software GPU-disabled functional/input/chat/reload proof, not hardware 1500ms held-key frame/transport acceptance, current native/browser full scene parity or original three-consumer18 closure. Earlier4f3 hardware negatives remain authoritative at their source. Linker-O3 comparison not present in these receipts. No duplicate graphics or GPU allocation." + }, + "pirates_previous_negative": { + "source": "4f3ef1a7182950bc57db3f3b8e69b34a519f1fda", + "engine": "f866e2fddabce9df909ad79de31fe2e2d73592b9", + "normal": { + "frame_p95_ms": 61.4, + "http_p95_ms": 133.9 + }, + "compact": { + "frame_p95_ms": 27.8, + "http_p95_ms": 83.2 + }, + "frozen_limits": { + "frame_p95_ms": 33.34, + "http_p95_ms": 50 + }, + "decision": "FAIL; not relabeled to7c23", + "receipt_sha256": "2d661ba97cf9292f6ed76c3c251c2bd2c9bc2998cdbdc28ff641e58fb8857b2f" + }, + "hardware_remaining": { + "source": "7c23a909d3d59b19e4eefe5c7551f48b350d3d88", + "runtime_assets": "Current7c23 readiness pins58publishedassets and nativebinary; source-qualified ready packet reviewed, graphics not launched", + "execution": "Not authorized by latest noGPU steering; existingowner50/UI33 retains runtime; no duplicate", + "gates": [ + "normal+compact actual1500msheldinput with original frame/HTTP/error gates", + "current native/browser scene parity, animation, attachments, picking", + "terrain/collision/pathing/state/screenshots and fixedmap memory/multiclient measurements" + ], + "ready_receipt_sha256": "caa987e8af0754610bc8fdb1cb7bff1182ea9b71f6e29a40fa914ff4528c22bd" + }, + "cogcraft_remaining": { + "owner": "persistent-games50/UI33", + "build_only_source": "ffdda2ce42a6ac3e9b27e7ad6b1dd4f19f5b4900", + "decision": "Build custody is not renderer/camp acceptance; current source-qualified paired scene receipt remains required. Earlier0558functional receipts remain at their original source." + }, + "dwarf_completed_slice": { + "browser_main": "ccc3d7d403930d1b274ddf1c13cde434cf76f12c", + "rendered_source": "955484aa", + "engine": "a808", + "wasm_sha256_prefix": "544c9162", + "js_sha256_prefix": "306bbf02", + "actual_browser_two_clients_frames": 600, + "frame_p95_ms": [ + 48.0, + 47.7 + ], + "scope": "Completed native/software-browser picking/save/reload/state/multiclient slice on its recorded cohort, not hardware/color/skeletal parity. Prior full receipts in runtime_artifacts.json, do not rerun." + } +} From 4e87cad13c6f9e77306ab7e42f22e3f120b2a6c9 Mon Sep 17 00:00:00 2001 From: Richard Higgins Date: Sun, 4 Oct 2026 02:01:14 -1000 Subject: [PATCH 09/12] Link downstream Dwarf proof separately from engine execution Co-authored-by: GPT-6 --- ...ualify_shared_engine_current_consumer_receipts.json | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/qualify_shared_engine_current_consumer_receipts.json b/tools/qualify_shared_engine_current_consumer_receipts.json index 639b31c7..9f5f940f 100644 --- a/tools/qualify_shared_engine_current_consumer_receipts.json +++ b/tools/qualify_shared_engine_current_consumer_receipts.json @@ -77,8 +77,7 @@ }, "dwarf_completed_slice": { "browser_main": "ccc3d7d403930d1b274ddf1c13cde434cf76f12c", - "rendered_source": "955484aa", - "engine": "a808", + "engine": "a808ccc81f06cd9cfdbfa872f795cba21aa1a7b1", "wasm_sha256_prefix": "544c9162", "js_sha256_prefix": "306bbf02", "actual_browser_two_clients_frames": 600, @@ -86,6 +85,11 @@ 48.0, 47.7 ], - "scope": "Completed native/software-browser picking/save/reload/state/multiclient slice on its recorded cohort, not hardware/color/skeletal parity. Prior full receipts in runtime_artifacts.json, do not rerun." + "scope": "Completed native/software-browser picking/save/reload/state/multiclient slice on its recorded cohort, not hardware/color/skeletal parity. Full downstream proof is published in DwarfFortress PR7/8; retained local raw receipts are separate from the asset-free engine execution report. Do not rerun.", + "rendered_source_prefix": "955484aa", + "review_sources": [ + "https://app.graphite.dev/github/pr/Metta-AI/dwarf_fortress/7", + "https://app.graphite.dev/github/pr/Metta-AI/dwarf_fortress/8" + ] } } From c6b3c48a23f5e6dab4cca6ba7df5744ea1c0bff6 Mon Sep 17 00:00:00 2001 From: Richard Higgins Date: Sun, 4 Oct 2026 03:45:34 -1000 Subject: [PATCH 10/12] Pin full retained Dwarf browser source and artifact identities Co-authored-by: GPT-6 --- ...alify_shared_engine_current_consumer_receipts.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/qualify_shared_engine_current_consumer_receipts.json b/tools/qualify_shared_engine_current_consumer_receipts.json index 9f5f940f..c807a49d 100644 --- a/tools/qualify_shared_engine_current_consumer_receipts.json +++ b/tools/qualify_shared_engine_current_consumer_receipts.json @@ -90,6 +90,15 @@ "review_sources": [ "https://app.graphite.dev/github/pr/Metta-AI/dwarf_fortress/7", "https://app.graphite.dev/github/pr/Metta-AI/dwarf_fortress/8" - ] + ], + "rendered_source": "955484aad9ddb3ca0f6670926ddceea21c862e1b", + "rendered_artifacts_sha256": { + "fortress.data": "79e851404657dac2106b3d22ad256d47824a9a5765458edb72c9102a45816d95", + "fortress.wasm": "544c91626b44d6740b3ab615a2a4a36994edcbcf7758079364c7c92aee9c55d7", + "fortress.html": "363c3447397323d346a244199bdbdeee3c4da69a8e4cb1e51e5a66ce312bbead", + "fortress.js": "306bbf02b0ff6511df4a23e5c728c0c10638a64f6bd37d3f97160e57590a21e1" + }, + "retained_build_manifest_sha256": "2bc66a7fb911870b32960798f42513886c45cfe97e154adc69c1fc813d597441", + "identity_readback": "Existing retained25e832 browser-build manifest and local complete commit identity; no runtime/build rerun or new acceptance." } } From 99eb743ce3a7a3d7685f816370132483e1e0b654 Mon Sep 17 00:00:00 2001 From: Richard Higgins Date: Sun, 4 Oct 2026 09:38:31 -1000 Subject: [PATCH 11/12] Preserve current Pirates consumer proof and explicit performance limits Co-authored-by: GPT-6 --- ...ared_engine_current_consumer_receipts.json | 69 ++++++++++++++++++- 1 file changed, 66 insertions(+), 3 deletions(-) diff --git a/tools/qualify_shared_engine_current_consumer_receipts.json b/tools/qualify_shared_engine_current_consumer_receipts.json index c807a49d..d7ca9c7e 100644 --- a/tools/qualify_shared_engine_current_consumer_receipts.json +++ b/tools/qualify_shared_engine_current_consumer_receipts.json @@ -1,5 +1,5 @@ { - "scope": "Source-qualified peer receipts for current consumer review. Original three-consumer acceptance OPEN; no new runs, graphics allocation or persistent-world claim.", + "scope": "Source-qualified consumer receipts. Original three-consumer acceptance OPEN. Published exact00b peer artifact identities without rerunning consumers or claiming hardware/persistent-world readiness.", "pirates_current": { "source": "7c23a909d3d59b19e4eefe5c7551f48b350d3d88", "main_readback": "7c23a909d3d59b19e4eefe5c7551f48b350d3d88", @@ -62,13 +62,14 @@ "hardware_remaining": { "source": "7c23a909d3d59b19e4eefe5c7551f48b350d3d88", "runtime_assets": "Current7c23 readiness pins58publishedassets and nativebinary; source-qualified ready packet reviewed, graphics not launched", - "execution": "Not authorized by latest noGPU steering; existingowner50/UI33 retains runtime; no duplicate", + "execution": "Richard branch authority supersedes stale closer/noGPU wording. Readiness-qualified bounded existing-hardware proof remains subject to current source audit and idle lease/source-owner coordination. Owner50/UI33 retains current consumer work; no duplicate run, paid node or foreign mutation.", "gates": [ "normal+compact actual1500msheldinput with original frame/HTTP/error gates", "current native/browser scene parity, animation, attachments, picking", "terrain/collision/pathing/state/screenshots and fixedmap memory/multiclient measurements" ], - "ready_receipt_sha256": "caa987e8af0754610bc8fdb1cb7bff1182ea9b71f6e29a40fa914ff4528c22bd" + "ready_receipt_sha256": "caa987e8af0754610bc8fdb1cb7bff1182ea9b71f6e29a40fa914ff4528c22bd", + "pin_limit": "Historical7c23 runtime packet remains at7c23; current00b and newer renderer source need their own readiness/paired proof." }, "cogcraft_remaining": { "owner": "persistent-games50/UI33", @@ -100,5 +101,67 @@ }, "retained_build_manifest_sha256": "2bc66a7fb911870b32960798f42513886c45cfe97e154adc69c1fc813d597441", "identity_readback": "Existing retained25e832 browser-build manifest and local complete commit identity; no runtime/build rerun or new acceptance." + }, + "pirates_peer00b": { + "receipt_sha256": "34a6b550d68663ad50130ebbcb136a451b1c443385e1bca8f8af24578b162831", + "receipt": { + "source": "00b883566abc5ad21c55474bf3510600511c43f4", + "run": 37205939757, + "workflowConclusion": "success", + "artifacts": { + "nativeCrewShop": 11304384703, + "sharedBrowser": 11304719186, + "coreRulesReplay": 11305490079 + }, + "nativeShop": { + "outcome": "pass", + "seconds": 80.375996037, + "keyboardStrikes": 6, + "cancelledReceipts": 4, + "shopCoins": 100, + "nativeSha256": "8a28096660dd65fffc3a692d0aac8550fc16eff59d4223d224f8b4592276bf5b", + "serverSha256": "822658fb9e816fe6ae732bfa77ff93ac6b7508df184e2e92f2346a307e94f180" + }, + "ordinaryBrowser": { + "complete": true, + "sessions": 2, + "renderedTacticalGrapple": true, + "physicalBoardingActions": 2, + "boardingCommandRaces": 0, + "reportReconnect": true, + "sharedReportAcknowledgement": true, + "cargoSales": 3, + "offlineBeneficiaryPaid": true, + "durableProcessReconnect": true, + "settlementSetup": false + }, + "replay": { + "nativeWasmEqual": true, + "lines": 167, + "sha256": "a5267673bc309265b90724fc2cd2cada9ccd50cad258ed24f26a7f2a44db45e4" + }, + "frames": { + "samples": 42, + "renderedFrames": 43, + "timeout": true, + "p95": 883.2000000000007, + "max": 949.8999999999996, + "mean": 614.2595238095239, + "schedulingBackend": "software" + }, + "reviewedImages": [ + "native-1/keyboard-forge-1440.png", + "native-2/reconnected-owner-1440.png", + "native-2/reconnected-owner-960.png" + ], + "limits": [ + "Source00b only; current main2311 renderer/UI changed", + "Software frames remain negative; no hardware verdict", + "Six keyboard strikes are earned intermediate forge progress, not completed paid production", + "No duplicate consumer/GPU run" + ], + "latestOwnerRun": 37223507259 + }, + "acceptance": "Exact00b gameplay/keyboard/refund and nativeWasm replay proof; softwarep95883.2ms still fails original frame gate. Current peer renderer changes not relabeled. No duplicate consumer run." } } From ad446f12f0a3c4fc91e03be17966291cea41e851 Mon Sep 17 00:00:00 2001 From: Richard Higgins Date: Sun, 4 Oct 2026 14:26:01 -1000 Subject: [PATCH 12/12] Bind current Pirates consumer replay and rendered receipt Co-authored-by: GPT-6 --- ...ared_engine_current_consumer_receipts.json | 77 ++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/tools/qualify_shared_engine_current_consumer_receipts.json b/tools/qualify_shared_engine_current_consumer_receipts.json index d7ca9c7e..e7055b07 100644 --- a/tools/qualify_shared_engine_current_consumer_receipts.json +++ b/tools/qualify_shared_engine_current_consumer_receipts.json @@ -69,7 +69,8 @@ "terrain/collision/pathing/state/screenshots and fixedmap memory/multiclient measurements" ], "ready_receipt_sha256": "caa987e8af0754610bc8fdb1cb7bff1182ea9b71f6e29a40fa914ff4528c22bd", - "pin_limit": "Historical7c23 runtime packet remains at7c23; current00b and newer renderer source need their own readiness/paired proof." + "pin_limit": "Historical7c23/00b retained at exactsource; source2311 official published artifact proof added separately. Current already-built pairedbundle/ownerhandoff stillneeded beforehardwareacceptance; donot relabel dirtyfreshvoyage0d966 asclean2311.", + "current_peer_source": "2311c87ea165a955987a48ec2e01f3cfb52613cc" }, "cogcraft_remaining": { "owner": "persistent-games50/UI33", @@ -163,5 +164,79 @@ "latestOwnerRun": 37223507259 }, "acceptance": "Exact00b gameplay/keyboard/refund and nativeWasm replay proof; softwarep95883.2ms still fails original frame gate. Current peer renderer changes not relabeled. No duplicate consumer run." + }, + "pirates_peer2311": { + "receipt_sha256": "5d08965f44910a7346946415c031263580a9fdefdbc658ea50980843f775d0f9", + "receipt": { + "source": "2311c87ea165a955987a48ec2e01f3cfb52613cc", + "run": 37223507259, + "workflowConclusion": "success", + "artifacts": { + "nativeCrewShop": 11311610884, + "sharedBrowser": 11311089418, + "coreRulesReplay": 11311645790 + }, + "nativeShop": { + "outcome": "pass", + "seconds": 100.23175215500004, + "keyboardStrikes": 6, + "cancelledReceipts": 4, + "shopCoins": 100, + "nativeSha256": "b9668fe0cfabd379aa836ac091969d09ff6772075c37a4bc7eba6185399d705e", + "serverSha256": "d8dae37df9054ea66bbd2a372faf90d49dfcc4c63f4f4cf30b3de3625a7e865c" + }, + "ordinaryBrowser": { + "complete": true, + "sessions": 2, + "renderedTacticalGrapple": true, + "physicalBoardingActions": 3, + "boardingCommandRaces": 1, + "reportReconnect": true, + "sharedReportAcknowledgement": true, + "cargoSales": 3, + "offlineBeneficiaryPaid": true, + "durableProcessReconnect": true, + "settlementSetup": false + }, + "replay": { + "nativeWasmEqual": true, + "lines": 167, + "sha256": "a5267673bc309265b90724fc2cd2cada9ccd50cad258ed24f26a7f2a44db45e4" + }, + "frames": { + "samples": 41, + "renderedFrames": 42, + "timeout": true, + "p95": 849.9, + "max": 883.3, + "mean": 611.763, + "schedulingBackend": "software" + }, + "reviewedImages": [ + "native-1/keyboard-forge-1440.png", + "native-2/reconnected-owner-960.png", + "desktop-final-tactical-decision.png", + "compact-boarding-complete-boards.png" + ], + "limits": [ + "Producer2311 only; do not relabel later source", + "Software frames remain negative; no hardware verdict", + "Six keyboard strikes are intermediate forge progress, not completed paid production", + "No duplicate consumer/GPU run" + ] + }, + "dependency_source": { + "vendor/polyworld": "449ad184052567c30fa54c269ef45ff8c9e8e29b", + "vendor/dommy": "2b37c50c7a09e9ef6947ca979b6ced6b28b7b92f" + }, + "dependency_receipt_sha256": "a5c98b2d8464dbce6ca7c69d24ef954cfacfcf286134cd59d2e52c5c7e3f8e2e", + "independent_readback": { + "native_wasm_bytes_equal": true, + "native_wasm_lines": 167, + "native_wasm_sha256": "a5267673bc309265b90724fc2cd2cada9ccd50cad258ed24f26a7f2a44db45e4", + "compact_image_sha256": "ef7b42929b0983f9a1d142fdbbc723a2c831029c96908d81c98ff3c8cedec345", + "compact_visual": "Rendered two boarding boards, CaptainMoss connected, crew2/2 andbrigands2/2, controls/target visible. Stillimage shows owned0moves andtarget48; it does not independently prove sustained movement, animations/attachments or completion." + }, + "acceptance": "Source2311 native/browser gameplay/reconnect and exactnativeWasm replay slice. Softwarep95849.9ms/timeoutnegative remains. Source-qualified engine449ad/Dommy2b37, not older00b/f866. No fullrenderer/hardware/threeconsumerclosure; no duplicate run." } }