diff --git a/campaign/contracts/research-completion-abi.json b/campaign/contracts/research-completion-abi.json index 5392fa4..9be97f6 100644 --- a/campaign/contracts/research-completion-abi.json +++ b/campaign/contracts/research-completion-abi.json @@ -21,7 +21,7 @@ "path": "/home/alex/sots-re" } }, - "checkpoint": "campaign/runtime/checkpoints/research-completion-abi-82fa3b0a12b0863401b9b0d1.json", + "checkpoint": "campaign/runtime/checkpoints/research-completion-abi-32c9f62a4fda2ab02b29d4c4.json", "dependencies": [ "controls-bootstrap" ], diff --git a/campaign/research/research-completion-abi.md b/campaign/research/research-completion-abi.md index 32a4996..67d9f0b 100644 --- a/campaign/research/research-completion-abi.md +++ b/campaign/research/research-completion-abi.md @@ -20,14 +20,21 @@ package found three additional truncated historical stops (ObservedTech append/r string allocation/replacement); their widened streams are now the byte authority. No archive production-history inference or live-safety claim is made. -The TurnEvents correction's current-session boundary authority is -`verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/`. It supersedes the stale-session +The TurnEvents correction's historical-session boundary authority is +`verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/`. It superseded the stale-session attribution and truncated nested-copy stream invalidated by decisions `d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. The package binds the actual session and a fail-if-used output directory; captures complete helper authority through `0x0077992f`; and retains `0x00779a20` as an expected-failing boundary beside complete `0x00779a21`, `0x00779a23`, and `0x00779a28` controls plus raw bytes. It is analyst static evidence awaiting a fresh independent -verifier, not restored acceptance. +verifier, not restored acceptance. Astra decision `d-e9d6d48cd77538556d1a1c1f` later barred reuse of +that package against changed source. The current-source remeasurement is +`verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/`, with preflight, plan, +recipe and interpretation in the sibling `run-35e59053176da458d8b46fea-preflight.json`, +`plan-run-35e59053176da458d8b46fea.md`, `capture_run_35e59053176da458d8b46fea.py`, and +`report-run-35e59053176da458d8b46fea.md`. The unsuffixed run directory preserves a failed recipe +predicate and is not authority. The new package is analyst static evidence awaiting fresh independent +reproduction, not restored acceptance. ## Implementable machine boundaries recovered diff --git a/campaign/runtime/checkpoints/research-completion-abi-039880ba52a96f1378dcf974.json b/campaign/runtime/checkpoints/research-completion-abi-039880ba52a96f1378dcf974.json new file mode 100644 index 0000000..ca5f160 --- /dev/null +++ b/campaign/runtime/checkpoints/research-completion-abi-039880ba52a96f1378dcf974.json @@ -0,0 +1,27 @@ +{ + "actor": "research-abi-analyst", + "artifacts": [ + { + "path": "verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json", + "sha256": "55fcc92360c26b743389059c54bd69d5a1ac8ca02e3d2e818b9283b3630d83ae" + }, + { + "path": "verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py", + "sha256": "4f75d389312bf4ae4c72964728c34b22c6936d716a6fe0463bbc3e035c548faa" + }, + { + "path": "verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md", + "sha256": "57d20b2a42fe2db5c1feff7c7839532a505e60305cbfeec82c40969ae73cabcf" + } + ], + "basis": "aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0", + "contract": "research-completion-abi", + "id": "039880ba52a96f1378dcf974", + "model": "openai/gpt-5.6-sol", + "next_action": "Execute repaired recipe exactly: python3 verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py run-35e59053176da458d8b46fea", + "role": "analyst", + "schema": "sots-checkpoint/1", + "session": "run-35e59053176da458d8b46fea", + "summary": "PRE-REPAIR-EXPERIMENT CHECKPOINT. OBSERVATION: first 27-command capture executed with all commands zero, nonempty stdout, empty stderr, stable source, aligned/direct-byte controls passing, but manifest failed two recipe comparisons. Raw bad/good streams show exactly the predeclared instrument behavior: bad 0x779913 retains a truncated c2 terminal row while good 0x779915 replaces it with c2 04 00; bad 0x779a20 retains truncated 74 while good 0x779a21 replaces it with 74 10. DECISION: this is an ordinary predicate bug, not contradictory binary/ABI evidence or a surprise. Preserve failed package and manifest. Recipe now checks equal preceding rows plus explicit truncated terminal replacement and writes a distinct fail-if-exists repair1 directory. No claim is promoted from failed package. No lab/resources/leases.", + "timestamp": "2026-09-10T13:22:44.882162+00:00" +} diff --git a/campaign/runtime/checkpoints/research-completion-abi-1d04a2672a212e8b1fb37297.json b/campaign/runtime/checkpoints/research-completion-abi-1d04a2672a212e8b1fb37297.json new file mode 100644 index 0000000..71c1cae --- /dev/null +++ b/campaign/runtime/checkpoints/research-completion-abi-1d04a2672a212e8b1fb37297.json @@ -0,0 +1,23 @@ +{ + "actor": "research-problem-resolver", + "artifacts": [ + { + "path": "verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md", + "sha256": "78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc" + }, + { + "path": "verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt", + "sha256": "973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8" + } + ], + "basis": "aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0", + "contract": "research-completion-abi", + "id": "1d04a2672a212e8b1fb37297", + "model": "openai/gpt-6-astra", + "next_action": "Inspect analyst manifest, boundary raw controls and prior Astra decision, then resolve s-81ffc3041e1f07b87928e6f2 through campaign controls with explicit invalidation and a fresh verifier probe.", + "role": "resolver", + "schema": "sots-checkpoint/1", + "session": "run-ec31ee938e1f509cd7130c03", + "summary": "OBSERVATIONS: Read canonical policy, contract, checkpoint 4555678e34291015554e7e88, sole open surprise s-81ffc3041e1f07b87928e6f2, verifier plan and analyst nested-copy authority. Plan item 5 wrongly requires stop 0x00779913 to include c2 04 00 at 0x00779912; raw authority line 79 contains all three bytes through 0x00779914. No new reproduction executed. Git confirms assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23/common /home/alex/sots-engine/.git and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7/common /home/alex/sots-re/.git; both assigned roots are dirty, not clean baseline claims. Runner record confirms resolution-only requested Astra and session. Historical verifier checkpoint reports source digests engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8; not independently rehashed by resolver. DECISION pending manifest/instrument review; affected work remains blocked. Tests: read-only Git identity/status checks only. Initial relative CLI status/help command denied by overlay; canonical absolute status succeeded. No experiments, source edits, delegation, commits, staging or lab access/mutation; no lease acquired and none assumed free.", + "timestamp": "2026-09-10T13:04:37.431119+00:00" +} diff --git a/campaign/runtime/checkpoints/research-completion-abi-32c9f62a4fda2ab02b29d4c4.json b/campaign/runtime/checkpoints/research-completion-abi-32c9f62a4fda2ab02b29d4c4.json new file mode 100644 index 0000000..ec8dcf9 --- /dev/null +++ b/campaign/runtime/checkpoints/research-completion-abi-32c9f62a4fda2ab02b29d4c4.json @@ -0,0 +1,43 @@ +{ + "actor": "research-abi-analyst", + "artifacts": [ + { + "path": "verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json", + "sha256": "7ca4dc72850cb0fbef6370bfbea8ece5cf102c886a6ef99c9940108fe44501aa" + }, + { + "path": "verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md", + "sha256": "57d20b2a42fe2db5c1feff7c7839532a505e60305cbfeec82c40969ae73cabcf" + }, + { + "path": "verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py", + "sha256": "4f75d389312bf4ae4c72964728c34b22c6936d716a6fe0463bbc3e035c548faa" + }, + { + "path": "verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json", + "sha256": "55fcc92360c26b743389059c54bd69d5a1ac8ca02e3d2e818b9283b3630d83ae" + }, + { + "path": "verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json", + "sha256": "082207ef0c1563c59828fc15f48c4d3b2506d6af20847be0e7efd774bfb82146" + }, + { + "path": "verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md", + "sha256": "5d30cb2edbab82e28b61bb034b2242cd271b4cc38fb1c895fad5b0a00f1b1ef8" + }, + { + "path": "campaign/research/research-completion-abi.md", + "sha256": "76c35015265ab07e159edf9fc53dfbd9a7a10b6f89046536998ca8e517af229e" + } + ], + "basis": "aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0", + "contract": "research-completion-abi", + "id": "32c9f62a4fda2ab02b29d4c4", + "model": "openai/gpt-5.6-sol", + "next_action": "Launch a fresh independent verifier on the current e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f RE binding to predeclare and execute verifier-owned fail-if-exists static boundary/ABI reproduction plus independent turn3 save element/RNG parsing; preserve the failed analyst run and do not promote acceptance.", + "role": "analyst", + "schema": "sots-checkpoint/1", + "session": "run-35e59053176da458d8b46fea", + "summary": "QUANTUM-END CHECKPOINT. OBSERVATIONS: canonical state validates; contract remains needs-revision with no open surprises and no evidence promotion. Assigned engine/RE HEADs remain pinned 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 / 3bfde5a70d874a723e797a695bbd847fd82c0aa7, common dirs /home/alex/sots-engine/.git /home/alex/sots-re/.git, preexisting dirty and untouched. Current campaign binding remained stable before/after capture and final check: engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f. Preflight archives exact campaign/runner/Python/objdump/binary/recipe/save/parser hashes. Canonical controls tests ran 37/37 pass; config tests 8/8 pass; paired verify/campaign/test_controls.py remains absent and no restoration was attempted. EXPERIMENT: authoritative repair1 package ran 27 objdump commands, all zero/nonempty/empty-stderr, 118734 stdout bytes, stable source, zero failed checks. It reproduces expected truncated 0x779913 c2 versus aligned 0x779915 c2 04 00, authority 0x779930, a20/a21/a23/a28 and direct PE bytes. Static rows expose 0x2c/0x74/0x18 strides, original allocation/free thunks, deep nested copy/destruction, get/create scan/miss/copy/cleanup/turn-store ordering and description comparison. DECISION: static current-source observations support the bounded handoff only; no independent-cross-check, live allocator safety, runtime record construction, replacement or acceptance claim. Unsuffixed first run is preserved failed measurement: two recipe predicates wrongly expected omission rather than truncated-row replacement; raw behavior matched predeclared instrument expectation, repaired in distinct fail-if-exists output. Direct entries named observed/player/turn-stride are overbroad and explicitly unused; instruction rows establish strides. RUNTIME LIMITS: no live branch, allocation, throw, constructor/destructor, event/ID/container write, save parse or RNG execution. Original helpers 0x00924fb6, 0x00924faa and 0x0046f8c0 remain dependencies when called. TESTS: campaign validate pass; manifest assertions pass; source binding stable. BLOCKERS: independent criterion remains unperformed; exact PostEvent caller inputs/defaults/write order and live capacity/string/unwind states remain unresolved. RESOURCES: no leases held; no VM, Ghidra, game, build host, or lab access; no staging/commit/push.", + "timestamp": "2026-09-10T13:25:52.516269+00:00" +} diff --git a/campaign/runtime/checkpoints/research-completion-abi-3fc22ea3c402274179ce4d1f.json b/campaign/runtime/checkpoints/research-completion-abi-3fc22ea3c402274179ce4d1f.json new file mode 100644 index 0000000..8eee306 --- /dev/null +++ b/campaign/runtime/checkpoints/research-completion-abi-3fc22ea3c402274179ce4d1f.json @@ -0,0 +1,47 @@ +{ + "actor": "research-problem-resolver", + "artifacts": [ + { + "path": "campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json", + "sha256": "c94914d5be47b93eac301e745b53ed7b1f008744a0ac90681fefc9c4f7a11327" + }, + { + "path": "campaign/runtime/surprises/s-210e489610197533e4f4cce1.json", + "sha256": "2e6b3fdf239a1dbffb887cf382e0ae80823667d6cf96afd590b4057a9438502e" + }, + { + "path": "verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md", + "sha256": "78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc" + }, + { + "path": "verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json", + "sha256": "aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4" + }, + { + "path": "verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt", + "sha256": "973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8" + }, + { + "path": "verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt", + "sha256": "e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1" + }, + { + "path": "verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt", + "sha256": "7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560" + }, + { + "path": "verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt", + "sha256": "b2d9b57274be71fcdd853f04758bc65d701e7b4cc169d0d5ede24c8788ef82d5" + } + ], + "basis": "aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0", + "contract": "research-completion-abi", + "id": "3fc22ea3c402274179ce4d1f", + "model": "openai/gpt-6-astra", + "next_action": "Lead schedule one fresh resolution-only Astra quantum to compare prior analyst/verifier RE file manifests against run-ec31ee938e1f509cd7130c03 source_before and resolve s-210e489610197533e4f4cce1 before authorizing any verifier reproduction; no source restoration or lab mutation is authorized.", + "role": "resolver", + "schema": "sots-checkpoint/1", + "session": "run-ec31ee938e1f509cd7130c03", + "summary": "END QUANTUM. OBSERVATIONS: verified assigned Git roots/common dirs and baseline HEADs engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 (/home/alex/sots-engine/.git), RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7 (/home/alex/sots-re/.git). Both preexisting dirty; no source edits made. Resolver runner source_before engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd matches analyst, but RE e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. These are runner/archived digest observations, not a resolver content rehash. Analyst manifest records binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, GNU objdump 2.38 hash 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd; twelve recorded positive static subprocess captures, no runtime execution. Read raw ret and boundary byte/decoded controls; plan and authority checkpoint hashes match historical records. DECISIONS: d-6e30d172051af0385f5979eb resolves s-81ffc3041e1f07b87928e6f2, overturns verifier item 5 complete-stop 0x00779913 and unchanged-plan next action in checkpoint 4555678e34291015554e7e88. Preserve failed prediction; new 0x00779915 normal-return control is unexecuted and unblinded, not cleanup coverage or acceptance. Full authority 0x00779930 remains required. New source-drift surprise s-210e489610197533e4f4cce1 remains OPEN; contract stays BLOCKED. No independent-cross-check, runtime allocator safety, RNG measurement or replacement acceptance restored; downstream bridge/replacement stay dependency-blocked. TESTS: Git identity/status passed; campaign validate research-completion-abi passed after decision. No disassembly/save experiment, build, game, allocator or lab execution this session. No lease held/acquired; lease inventory inspected only, no resource availability assumed; no access changes or cleanup needed. No delegation, implementation/architecture edits, staging, commit or push. Only campaign controls wrote state. Initial relative CLI command denied; no permissions bypass attempted. Integrator must link actual decision and regenerate projections after valid integration, not write a parallel board history. BLOCKER: unexplained current RE source-manifest delta; preserve old evidence, do not rebind it. Bounded stop now.", + "timestamp": "2026-09-10T13:07:03.524603+00:00" +} diff --git a/campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json b/campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json new file mode 100644 index 0000000..0bdc4ea --- /dev/null +++ b/campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json @@ -0,0 +1,19 @@ +{ + "actor": "research-abi-correction-verifier", + "artifacts": [ + { + "path": "verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md", + "sha256": "78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc" + } + ], + "basis": "aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0", + "contract": "research-completion-abi", + "id": "4555678e34291015554e7e88", + "model": "openai/gpt-5.6-sol", + "next_action": "Create and run the independent fail-if-exists static/save reproduction for session run-d6c4dc15e9f4d15155fee856.", + "role": "verifier", + "schema": "sots-checkpoint/1", + "session": "run-d6c4dc15e9f4d15155fee856", + "summary": "OBSERVATIONS: canonical policy, contract, lead checkpoint, all 13 surprise records, relevant Astra decisions, handoff and raw manifests were read. Contract validates in verification with no open surprises. Assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7 match baselines and common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git. Paired source binding independently remeasured as engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8, matching analyst manifest despite dirty worktrees. Binary SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd/version 2.38 match. Handoff artifacts rehash exactly. No resource lease acquired or lab mutation performed. DECISIONS: verification remains static reproduction plus archived serialized-state checking only; no live allocator safety, original-assisted compare, replacement, or integrated replay claim. Pre-experiment falsifiers and required distinct states/branches are persisted in the attached verifier-owned plan. BLOCKERS/LIMITS: contract evidence array is empty; analyst package itself states runtime capacity/string/unwind states unavailable. Canonical integrated tree is dirty at HEAD 41a6840 but is not the assigned source binding.", + "timestamp": "2026-09-10T05:26:16.270911+00:00" +} diff --git a/campaign/runtime/checkpoints/research-completion-abi-635032703dbd08885360c149.json b/campaign/runtime/checkpoints/research-completion-abi-635032703dbd08885360c149.json new file mode 100644 index 0000000..bde2d4e --- /dev/null +++ b/campaign/runtime/checkpoints/research-completion-abi-635032703dbd08885360c149.json @@ -0,0 +1,27 @@ +{ + "actor": "research-abi-analyst", + "artifacts": [ + { + "path": "verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json", + "sha256": "7ca4dc72850cb0fbef6370bfbea8ece5cf102c886a6ef99c9940108fe44501aa" + }, + { + "path": "verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md", + "sha256": "57d20b2a42fe2db5c1feff7c7839532a505e60305cbfeec82c40969ae73cabcf" + }, + { + "path": "verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py", + "sha256": "e7f6b20f28e21e539714751025873768923fd5dabdb4156d017173cd382647f8" + } + ], + "basis": "aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0", + "contract": "research-completion-abi", + "id": "635032703dbd08885360c149", + "model": "openai/gpt-5.6-sol", + "next_action": "Execute exactly: python3 verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py run-35e59053176da458d8b46fea", + "role": "analyst", + "schema": "sots-checkpoint/1", + "session": "run-35e59053176da458d8b46fea", + "summary": "PRE-EXPERIMENT CHECKPOINT. OBSERVATIONS: current paired campaign binding remained stable through preflight at engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f; baseline HEAD/common-dir identities match. Binary, objdump, Python, archived save and parsers are available with identities in preflight. Canonical controls tests pass 37/37 and config tests 8/8; paired test_controls absence remains explicit. DECISION: execute only the attached current-source static plan/recipe. It refuses reused output and drift; captures 27 windows, direct PE controls, stop 0x779913 expected truncation, aligned 0x779915, authority 0x779930 and a20/a21/a23/a28. Static branch exposure is not runtime execution. Save is hashed but not parsed. No allocator/game/RNG/VM/Ghidra execution or lease. Block on any identity/stream/check failure or contradictory bytes.", + "timestamp": "2026-09-10T13:20:43.762619+00:00" +} diff --git a/campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json b/campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json new file mode 100644 index 0000000..920953e --- /dev/null +++ b/campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json @@ -0,0 +1,27 @@ +{ + "actor": "campaign-lead", + "artifacts": [ + { + "path": "verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json", + "sha256": "aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4" + }, + { + "path": "verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md", + "sha256": "6e74ff0197adc6c97f5924ad3f973d5e8922f1480268d1c96dac3dd89000e38f" + }, + { + "path": "verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py", + "sha256": "66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1" + } + ], + "basis": "aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0", + "contract": "research-completion-abi", + "id": "63895701b38ae7ffac31aaed", + "model": "openai/gpt-5.6-sol", + "next_action": "Launch research-abi-correction-verifier in a fresh bounded verifier session to reproduce the package independently and execute its falsifiers.", + "role": "lead", + "schema": "sots-checkpoint/1", + "session": "lead-verifier-handoff-41a6840", + "summary": "Lead inspected analyst run run-9daf5c3b75547271d5c3b4ed and its current-session fail-if-exists capture. Twelve static captures succeeded; complete instruction boundaries and raw bytes correct the invalidated provenance without claiming runtime safety. Campaign validation and all 37 control tests pass. No lease or mutable lab resource is held.", + "timestamp": "2026-09-10T05:07:46.089883+00:00" +} diff --git a/campaign/runtime/checkpoints/research-completion-abi-7adc6dc657a6159b06640fcc.json b/campaign/runtime/checkpoints/research-completion-abi-7adc6dc657a6159b06640fcc.json new file mode 100644 index 0000000..8bb279f --- /dev/null +++ b/campaign/runtime/checkpoints/research-completion-abi-7adc6dc657a6159b06640fcc.json @@ -0,0 +1,19 @@ +{ + "actor": "research-abi-analyst", + "artifacts": [ + { + "path": "verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json", + "sha256": "7ca4dc72850cb0fbef6370bfbea8ece5cf102c886a6ef99c9940108fe44501aa" + } + ], + "basis": "aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0", + "contract": "research-completion-abi", + "id": "7adc6dc657a6159b06640fcc", + "model": "openai/gpt-5.6-sol", + "next_action": "Within analyst-owned results, prepare a fresh fail-if-exists static capture recipe bound to session run-35e59053176da458d8b46fea and decisions d-e9d6d48cd77538556d1a1c1f/d-6e30d172051af0385f5979eb, then checkpoint before executing it.", + "role": "analyst", + "schema": "sots-checkpoint/1", + "session": "run-35e59053176da458d8b46fea", + "summary": "MID-QUANTUM PREFLIGHT. OBSERVATIONS: canonical campaign validates; contract is needs-revision with no open surprises. Assigned engine/RE HEADs match 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and 3bfde5a70d874a723e797a695bbd847fd82c0aa7; common dirs are /home/alex/sots-engine/.git and /home/alex/sots-re/.git. Both are preexisting dirty and untouched. Two current campaign source-bindings were stable: engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f. Current RE campaign digest differs from historical 6696fd52; it is not equated with runner-domain e97ad0ed. Fresh hashes for canonical campaign/runner/Python/objdump/binary, historical recipes, turn3 save and parsers are archived. Canonical verify/campaign tests executed 37/37 pass and verify/config 8/8 pass; paired baseline tree lacks verify/campaign/test_controls.py, so no restoration/source-identity claim. DECISION: preflight passes for lead scheduling only; future measurements must bind e5cf1c44 and cannot relabel old captures. No disassembly/save experiment was run. Runtime allocator/capacity/string/unwind/event/RNG states remain unexercised and explicit. No leases, lab access, game, Ghidra, source mutation, staging or commits.", + "timestamp": "2026-09-10T13:17:26.641161+00:00" +} diff --git a/campaign/runtime/checkpoints/research-completion-abi-c80088956234568ade0a27fb.json b/campaign/runtime/checkpoints/research-completion-abi-c80088956234568ade0a27fb.json new file mode 100644 index 0000000..d5f76b0 --- /dev/null +++ b/campaign/runtime/checkpoints/research-completion-abi-c80088956234568ade0a27fb.json @@ -0,0 +1,51 @@ +{ + "actor": "research-problem-resolver", + "artifacts": [ + { + "path": "campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json", + "sha256": "c29e4ce1525f5c06efb87e7454661987026b358e5d9e0d6480df1b6956f19a42" + }, + { + "path": "campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json", + "sha256": "c94914d5be47b93eac301e745b53ed7b1f008744a0ac90681fefc9c4f7a11327" + }, + { + "path": "campaign/runtime/surprises/s-210e489610197533e4f4cce1.json", + "sha256": "a2e6f0eaf0c2ba2d8a6a0edea74615d0f90ff9202c28811877b09961a265fb94" + }, + { + "path": "campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json", + "sha256": "510219b4269311df86f9abe068131efdf3000dbf7757ff9d2c0ef5565001b5fc" + }, + { + "path": "campaign/runtime/runs/run-9daf5c3b75547271d5c3b4ed.json", + "sha256": "f0e9a8f47d7d31b873d348606800f20609f935c56b3da93f4478a39e4e10447b" + }, + { + "path": "campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json", + "sha256": "a3452db76124adf1d5ad3ed4593845b589068ba2d83ce5633b9b1792b17bf1db" + }, + { + "path": "verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json", + "sha256": "aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4" + }, + { + "path": "verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt", + "sha256": "973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8" + }, + { + "path": "verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md", + "sha256": "78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc" + } + ], + "basis": "aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0", + "contract": "research-completion-abi", + "id": "c80088956234568ade0a27fb", + "model": "openai/gpt-6-astra", + "next_action": "Lead perform the read-only current paired source-binding and consumed-tool/input preflight specified in d-e9d6d48cd77538556d1a1c1f, recording its result and missing-test disposition before scheduling revised independent static reproduction; do not restore source, reuse old binding or authorize lab work.", + "role": "resolver", + "schema": "sots-checkpoint/1", + "session": "run-481c9379a1efc0e527d2a28c", + "summary": "END bounded resolution-only quantum. OBSERVATIONS: assigned roots /tmp/opencode/sots-final-research-engine and /tmp/opencode/sots-final-research-re have common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git, HEADs 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Both preexisting dirty; no source changes this session. Current launch runner engine digest ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged; RE e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 versus historical analyst/verifier runner b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4. These runner hashes are NOT campaign-binding domain; old campaign binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 must not be directly equated to them. Complete verifier-to-current git diff identifies ten included byte-changed control/config paths and removed verify/campaign/test_controls.py, plus excluded campaign/housekeeping inventory deltas, all enumerated in decision. No added or mode-only differences. Historical analyst before/after runner digests match verifier. A second whole-run diff against prior completed resolver produced redundant source_after removal and was truncated; it is not used to claim a full fieldwise comparison. Current campaign source-binding was NOT computed (resolver allowlist lacks that command). Canonical binary/tool/save files NOT freshly rehashed or executed. Archived analyst manifest records binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd and twelve positive static commands only. Read raw authority ret bytes and verifier plan; repaired boundary remains unexecuted. DECISION d-e9d6d48cd77538556d1a1c1f resolves source surprise with new-source remeasurement, not restoration/relabeling. Qualified prior unlike-digest comparison; actual source drift survives. Historical static facts retain original scope; current-source reuse and independent-cross-check promotion invalidated. Prior d-6e30d172051af0385f5979eb boundary correction remains required. Contract now needs-revision, no acceptance restored; bridge/replacement remain dependency-blocked. TESTS: Git root/common-dir/HEAD and status checks; read-only manifest diff (exit 1 denotes differences); campaign validate research-completion-abi passed after resolution. No disassembly/save experiment, build, runtime, allocator, RNG or lab execution. No lease acquired; lease inventory inspected only, no availability/access assumed, no cleanup needed. No delegation, implementation/architecture edits, staging, commit, push or board/projection edits. BLOCKERS: current binding and consumed canonical input/tool hashes, required test availability, revised plan, lead scheduling and fresh independent/integrated evidence. Lead/integrator must link actual decision and regenerate projections after integration, not copy a history into board.", + "timestamp": "2026-09-10T13:11:37.323815+00:00" +} diff --git a/campaign/runtime/checkpoints/research-completion-abi-f15d822f91601241181df05a.json b/campaign/runtime/checkpoints/research-completion-abi-f15d822f91601241181df05a.json new file mode 100644 index 0000000..1f51323 --- /dev/null +++ b/campaign/runtime/checkpoints/research-completion-abi-f15d822f91601241181df05a.json @@ -0,0 +1,23 @@ +{ + "actor": "research-problem-resolver", + "artifacts": [ + { + "path": "campaign/runtime/surprises/s-210e489610197533e4f4cce1.json", + "sha256": "2e6b3fdf239a1dbffb887cf382e0ae80823667d6cf96afd590b4057a9438502e" + }, + { + "path": "verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json", + "sha256": "aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4" + } + ], + "basis": "aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0", + "contract": "research-completion-abi", + "id": "f15d822f91601241181df05a", + "model": "openai/gpt-6-astra", + "next_action": "Inspect runner versus campaign manifest hashing policy and relevant historical/current run digest records before deciding whether the reported mismatch compares equivalent identities.", + "role": "resolver", + "schema": "sots-checkpoint/1", + "session": "run-481c9379a1efc0e527d2a28c", + "summary": "INTERIM resolution-only. Read canonical instructions, contract, prior checkpoint, open source-drift surprise and analyst static manifest. OBSERVED Git roots/common dirs and HEADs match assigned engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Historical analyst binding RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 versus prior resolver runner e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 not yet reconciled. Raw runner inventories include verify/results entries; must inspect binding policy before equating runner and campaign digests. No source or lab changes, no experiments or runtime execution. Shell allowlist rejected relative campaign command; will use authorized absolute control commands only. Lease directory inspected, no lease acquired or availability assumed. DECISION: keep s-210e489610197533e4f4cce1 open pending policy/inventory comparison; no stale-build diagnosis or acceptance.", + "timestamp": "2026-09-10T13:08:52.419410+00:00" +} diff --git a/campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json b/campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json new file mode 100644 index 0000000..06f323b --- /dev/null +++ b/campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json @@ -0,0 +1,14 @@ +{ + "actor": "research-problem-resolver", + "contract": "research-completion-abi", + "explanation": "Astra resolution-only, session run-ec31ee938e1f509cd7130c03. OBSERVATION/PROVENANCE: verifier plan verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 requires complete ret 4 at 0x00779912 with stop 0x00779913. Analyst run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt line 79 shows c2 04 00 through 0x00779914; checkpoint 1d04a2672a212e8b1fb37297 rehashed plan to 78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc and authority to 973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8, matching prior plan hash and analyst manifest. Analyst a20/a28 raw streams show terminal 74 versus 74 10 at 0x00779a1f; section-byte control contains 74 10 8b cf e8 28 6a ff ff. Instrument output is boundary-sensitive even when its mnemonic/target looks complete. This falsifies a verifier expectation before execution, not analyst authority or game behavior.\nIDENTITY/EXECUTION: assigned Git HEAD/common roots match engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Historical analyst manifest binds binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd GNU 2.38, and twelve explicit commands with zero exits, nonempty stdout and empty stderr. These are positive archived static executions, not fresh resolver executions. Binary/tool not freshly rehashed here. Current runner engine digest matches ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; RE runner digest e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Separate open surprise s-210e489610197533e4f4cce1 blocks source-identical reproduction. No stale-build/game-mechanism diagnosis. No runtime instrument neutrality, allocator, RNG or game execution measured.\nCLAIMS: OVERTURNED: plan item 5 complete-stop prediction for 0x00779913, and inference that failure at this verifier-chosen boundary falsifies the analyst 0x00779930 authority window. SURVIVES: archived ret encoding c2 04 00 at 0x00779912 in the hash-bound authority; the failure remains a failed predeclared prediction. QUALIFIED: minimum complete stop 0x00779915 is byte-length reasoning and an unexecuted new control, not a measurement or genuinely blinded holdout after this inspection. It covers normal return only, excludes cleanup beginning at 0x00779915, and cannot replace authority through exclusive stop 0x00779930. SURVIVES within their existing static domain only: analyst copy/allocation/cleanup instruction observations and other plan falsifiers; no new ABI semantic endorsement. QUALIFIED: independent-cross-check remains unsatisfied, ownership-recovered remains analyst static evidence awaiting reproduction. OVERTURNED for current launch: source-identical RE assumption, tracked separately. SURVIVES: runtime safety and replacement remain unaccepted; archived saves validate serialized values only, not capacity, string ownership, transient stack values or RNG draws.\nINVALIDATION: preserve the failed plan and checkpoint 4555678e34291015554e7e88 as history, but invalidate item 5 as executable acceptance requirement and its next action to run the unchanged plan. No run-d6c4dc15e9f4d15155fee856 reproduction result exists to rehabilitate. No analyst raw bytes are invalidated by this boundary mistake; prior d-fd5aff1eaf78a8c15d96723c and d-0bb927e63b915c87a58d4257 invalidations remain. CLI clears current evidence/checkpoint and invalidates any verdict; empty evidence array is not acceptance. No acceptance waiver.\nREVISED SCOPE/DEPENDENCIES: retain contract criteria and static/save-only scope; no implementation, architecture edits or lab use. After source-drift resolution and lead lifecycle authorization, independent verifier may create a fresh actual-session fail-if-exists reproduction, preserving old prediction failure and adding both new boundary controls. Required full authority/ABI windows and archived record accounting remain. research-live-record-bridge stays needs-revision with unaccepted ABI dependency; research-replacement stays proposed, its accepted-dependency narrative is not current status and cannot authorize wiring. No downstream promotion. Integrator must link this decision rather than write another board history, and regenerate projections only after valid integration.", + "id": "d-6e30d172051af0385f5979eb", + "invalidated_checkpoint": "campaign/runtime/checkpoints/research-completion-abi-1d04a2672a212e8b1fb37297.json", + "invalidated_evidence": [], + "model": "openai/gpt-6-astra", + "probe": "Cheapest boundary discriminator, NOT run here: after s-210e489610197533e4f4cce1 source reconciliation and lead authorization, checkpoint a fresh independent verifier session and new fail-if-exists directory. Rehash binary, objdump/interpreter, recipe, paired source and archived-save inputs before/after. Run /usr/bin/objdump -D -Mintel --start-address=0x00779850 against dumps/sots.exe twice, stops 0x00779913 and 0x00779915, plus full authority stop 0x00779930. Independently map PE VA 0x00779912..0x00779914 to file offsets and read bytes directly (not only a second disassembly). Predict c2-only truncated byte row at bad stop and c2 04 00 ret 4 at aligned stop, no changed preceding complete rows; preserve mnemonic/bytes separately. Normal-return stop must not be counted as unwind coverage. Keep a20 negative and aligned a21/a23/a28 controls, all other ABI/save falsifiers and explicit unexercised runtime states. Record actual commands, timestamps, exits, raw stdout/stderr hashes, positive executions and all missing/skipped states; reject drift, unexpected stderr, zero execution or contradiction. Mark original prediction failed, repaired control unblinded/new, never retroactive success. Immediate next action is lead scheduling a read-only manifest-delta review for source surprise, not this blocked reproduction.", + "role": "resolver", + "schema": "sots-decision/1", + "surprise": "s-81ffc3041e1f07b87928e6f2", + "timestamp": "2026-09-10T13:06:19.620541+00:00" +} diff --git a/campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json b/campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json new file mode 100644 index 0000000..88e51c3 --- /dev/null +++ b/campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json @@ -0,0 +1,14 @@ +{ + "actor": "research-problem-resolver", + "contract": "research-completion-abi", + "explanation": "Astra resolution-only run-481c9379a1efc0e527d2a28c. OBSERVATION: complete git diff --no-index of canonical campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json versus run-481c9379a1efc0e527d2a28c.json exposes actual historical-to-current source_before inventory changes. Analyst run-9daf5c3b75547271d5c3b4ed.json records runner RE b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4 before/after, identical to verifier runner. Current and prior resolver runner RE record e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9; engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged. Git roots/common dirs independently match assigned paired trees and baselines engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23, RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Dirty inventories preexist; no resolver source edits.\nINSTRUMENT IDENTITY: tools/run_agent.py source_identity hashes all inventoried files; tools/campaign.py source_manifest excludes caches, verify/results and mutable campaign except models/schema/agents. Thus historical campaign digest 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 is NOT the historical runner digest. Prior surprise/checkpoint/decision direct comparison is QUALIFIED: unlike hash domains were compared, but actual like-for-like runner drift survives. No fresh current campaign-binding computation occurred; shell resolver allowlist does not authorize source-binding. Do not invent that digest.\nEXACT CAMPAIGN-INCLUDED DELTA from full runner diff: byte changes, all mode 420 unchanged, AGENTS.md; CLAUDE.md; campaign/agents/lead.md; campaign/models.json; guides/multi-agent-workflow.md; opencode.json; tools/campaign.py; tools/check_agent_config.py; tools/run_agent.py; verify/config/test_agent_config.py. Removed inventory entry verify/campaign/test_controls.py (old mode 420, hash 108460f4e90c4cb7036642e85de581e31fd70c478533c32364691260461814fc). No added entries or mode-only changes. Campaign-excluded changes: campaign/{DASHBOARD.md,backlog.md,board.md,open-questions.md} changed; campaign/README.md, contracts/{controls-bootstrap,launcher-smoke,research-completion-abi,research-replacement}.json, current.json, pilots/research-replacement.md, research/SESSION.md removed from paired inventory. Removed campaign/rollout entries: RESULT.md, architecture-decision.md, controls-followup.md, controls-worker-state.md, controls-worker.md, controls_evidence.py, engine-followup.md, engine-worker-state.md, engine-worker.md, formal-verifier-state.md, formal-verifier.md, gate-followup.md, gate-worker-state.md, gate-worker.md, housekeeping-completion.md, housekeeping-followup.md, housekeeping-worker-state.md, housekeeping-worker.md, independent-review.md, lead-state.md, publishing-worker-state.md, publishing-worker.md, review-followup.md, review-worker-state.md, review-worker.md, sync_verifier_snapshot.py. Removed verify/results/housekeeping/{vm140,vm141,vm144,vm145,vm146}-result.json. These are inventory observations, not authorization to restore files or proof of cause. Full old/new hashes are in named runner inventories; no excluded save/trace changes appear in this diff.\nBINARY/INPUT/POSITIVE EXECUTION: analyst manifest aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4 rehashed by this session checkpoint; records sots.exe 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd, twelve zero-exit nonempty static captures with empty stderr. These are archived executions, not fresh binary/tool rehash or live execution. Read authority raw output shows c2 04 00 at 0x00779912 and cleanup after 0x00779915. Boundary-sensitive disassembler neutrality remains qualified per d-6e30d172051af0385f5979eb; no runtime neutrality or RNG measurement.\nCLAIMS/INVALIDATION: SURVIVES historical static measurement domain with original binding and prior ABI qualifications; no newly observed contradiction in ABI bytes. OVERTURNED current-source-identical reuse of historical package and unchanged verifier-plan item 1; current source differs including consumed controls. QUALIFIED ownership-recovered: static historical evidence only, requires fresh package before current acceptance. OVERTURNED any current independent-cross-check/pass claim: no fresh verifier reproduction. SURVIVES prior decision invalidation of plan item 5 stop 0x00779913; repaired 0x00779915 remains unexecuted/unblinded, full 0x00779930 authority still required. No active evidence entries to remove; preserve archived captures, invalidate their use as current-source acceptance and supersede checkpoint 3fc22ea3c402274179ce4d1f source-comparison premise. Bridge and replacement acceptance/readiness remain dependency-blocked, not restored by resolution.\nDECISION: choose new-source remeasurement, NOT old snapshot restoration or digest substitution. Scope remains static ABI and archived serialized-value cross-check only. Lead must bind and explicitly schedule the current paired snapshot and canonical consumed tools/inputs, revise verifier plan to this decision and d-6e30d172051af0385f5979eb, then obtain fresh independent reproduction through lifecycle controls. Missing controls tests are a preflight dependency, not permission to skip required gates; owner must supply them if needed, without resolver mutation. Needs-revision is not ready/accepted. No build, VM/Ghidra mutation, delegation or implementation authorized. Integrator links this decision and regenerates projections only after integration; no board history written.", + "id": "d-e9d6d48cd77538556d1a1c1f", + "invalidated_checkpoint": "campaign/runtime/checkpoints/research-completion-abi-f15d822f91601241181df05a.json", + "invalidated_evidence": [], + "model": "openai/gpt-6-astra", + "probe": "Cheapest discriminator is local read-only preflight, before disassembly: lead-authorized owner runs python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re and archives actual result with canonical consumed campaign/runner/interpreter/binary/objdump/recipe/save hashes. Compare equivalent runner inventories and campaign bindings separately; expect current campaign digest not to equal old 6696fd52, do not infer its value. Confirm required test inputs and source stability; missing inputs or unexplained drift blocks. Lead then records authorized new-source static remeasurement scope and schedules independent verifier after normal lifecycle preconditions, without source restoration. Fresh verifier checkpoints before experiment, uses fail-if-exists output and revised plan; runs negative stop 0x00779913, aligned 0x00779915 and authority 0x00779930 plus direct PE-mapped byte read, all a20/a21/a23/a28 controls and ABI/save checks from prior decision. Record execution/branches/streams and unexercised runtime states, not retroactive passes. Immediate next action is lead source-binding/preflight and contract scheduling, NOT lab work or acceptance.", + "role": "resolver", + "schema": "sots-decision/1", + "surprise": "s-210e489610197533e4f4cce1", + "timestamp": "2026-09-10T13:10:38.861003+00:00" +} diff --git a/campaign/runtime/runs/active-research-completion-abi.json b/campaign/runtime/runs/active-research-completion-abi.json index 9bd5de4..c2eb388 100644 --- a/campaign/runtime/runs/active-research-completion-abi.json +++ b/campaign/runtime/runs/active-research-completion-abi.json @@ -1,5 +1,5 @@ { "contract": "research-completion-abi", - "run": "run-9daf5c3b75547271d5c3b4ed", + "run": "run-35e59053176da458d8b46fea", "status": "complete" } diff --git a/campaign/runtime/runs/run-35e59053176da458d8b46fea.json b/campaign/runtime/runs/run-35e59053176da458d8b46fea.json new file mode 100644 index 0000000..61d72fd --- /dev/null +++ b/campaign/runtime/runs/run-35e59053176da458d8b46fea.json @@ -0,0 +1,10041 @@ +{ + "actor": "research-abi-analyst", + "checkpoint": "campaign/runtime/checkpoints/research-completion-abi-32c9f62a4fda2ab02b29d4c4.json", + "checkpoint_session": "run-35e59053176da458d8b46fea", + "command": [ + "opencode", + "run", + "--format", + "json", + "--model", + "openai/gpt-5.6-sol", + "--agent", + "sots-analyst", + "Start a FRESH bounded campaign quantum (40 steps). No delegation.\nRole=analyst; requested model=openai/gpt-5.6-sol; actor=research-abi-analyst; checkpoint session=run-35e59053176da458d8b46fea.\nCanonical state root: /home/alex/sots-re\nContract: /home/alex/sots-re/campaign/contracts/research-completion-abi.json\nLatest checkpoint: campaign/runtime/checkpoints/research-completion-abi-c80088956234568ade0a27fb.json\nEngine worktree: /tmp/opencode/sots-final-research-engine\nRE worktree: /tmp/opencode/sots-final-research-re\nRead canonical campaign/README.md, contract, latest checkpoint and open surprises before work. Verify source/worktree/resource identities. Only edit owned scope. Missing state means blocked. Do not commit, stage, push or mutate lab resources without explicit authority and a lease. Checkpoint every 20 tool calls or 15 minutes, before experiments, compaction and stopping; persist under canonical campaign/ using tools/campaign.py with the session above, exact model, actor and role. Include observations versus decisions, source identities, artifact paths, tests, blockers and ONE exact next action. Fresh checkpoint at quantum end is mandatory. Record a surprise and pause affected work if assumptions are falsified. Workers cannot change architecture. Do not rely on chat resume or automatic compaction." + ], + "completed_sessions": [ + "ses_f748d122dffevl5miyoo8I3vQT" + ], + "config": { + "canonical_files": { + "campaign/agents/analyst.md": "895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952", + "campaign/agents/implementer.md": "eb5581051a92b3d2b9ddd947812b1c02ff6a0b5e7619e7674adc26701e9a3d91", + "campaign/agents/lab.md": "48f1765ebdcb2015e631ad91428f65735ff899e119134b652f70788ff2eae5b8", + "campaign/agents/lead.md": "8fcfe52be845ed98a172afb47ea888b19bb7bffa80f7b50ace58d2bb66924220", + "campaign/agents/resolver.md": "742c36dc8567669d462566d6121eed42fcff5bff34e8eff466e92249f7ca195f", + "campaign/agents/verifier.md": "e467fc644e4e37d631a7a4e35038d9d3d0498491f1d7811d61d99271ff345c6b", + "campaign/models.json": "00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48", + "opencode.json": "027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99" + }, + "effective": { + "agent_sha256": "409b31aec5a4c41134540c966789b3cdfb8336455c4ee38b18fb4f1ff6c5e347", + "sha256": "1697c4d849347d109df74934a5192a95480b4d272a15a313ab095ad9323c37ee" + }, + "expanded_prompt_sha256": "0ed5608fb353682cfe5436948c29b1067a7ca84c79a6b77689f4fc577b8b2e7e", + "overlay": { + "agent": { + "sots-analyst": { + "model": "openai/gpt-5.6-sol", + "permission": { + "bash": "allow", + "edit": { + "*": "allow", + "*AGENTS.md": "deny", + "*campaign/agents/*": "deny", + "*campaign/models.json": "deny", + "*docs/architecture.md": "deny", + "*guides/multi-agent-workflow.md": "deny", + "*opencode.json": "deny" + }, + "external_directory": { + "*": "deny", + "/home/alex/sots-re": "allow", + "/home/alex/sots-re/*": "allow", + "/tmp/opencode/sots-final-research-engine": "allow", + "/tmp/opencode/sots-final-research-engine/*": "allow", + "/tmp/opencode/sots-final-research-re": "allow", + "/tmp/opencode/sots-final-research-re/*": "allow" + }, + "glob": "allow", + "grep": "allow", + "list": "allow", + "question": "deny", + "read": "allow", + "task": "deny" + }, + "prompt": "You are the SOTS RE analyst. Read canonical RE AGENTS.md, campaign/README.md, your contract,\ncheckpoint and open surprises. Follow the launcher-selected model; never choose a fallback.\nRecover one bounded behavior: complete inputs, predicates, ordering, precision, allocations,\ntransitive writes, container elements, event records and RNG. Distinguish static facts, measured\nobservations and hypotheses. Use domain findings as evidence, not unquestioned specifications.\n\nSpecify original-helper dependencies and missing runtime inputs. Work with the independent\nverifier on falsifiers and distinct-state/branch coverage. Synthetic boundary fixtures are useful;\ncoherent parsing alone cannot prove field semantics. Do not promote your own claim.\n\nOwn only assigned files/worktrees. No architecture/planning changes, delegates, dashboard writes\nor unleased Ghidra/VM mutations. A surprise that changes scope or standing claims blocks the\naffected work and goes to Astra with concrete evidence and a proposed discriminating check.\nCheckpoint every 20 calls/15min and before compaction, experiment, handoff or stop. A bounded\n40-step session ends with a repository checkpoint, exact next action and held-resource inventory.\n", + "steps": 40 + } + }, + "model": "openai/gpt-5.6-sol" + }, + "path": "/home/alex/sots-re/opencode.json", + "sha256": "027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99" + }, + "contract": "research-completion-abi", + "cwd": "/tmp/opencode/sots-final-research-re", + "ended_at": "2026-09-10T13:26:18.610619+00:00", + "error_events": 0, + "event_count": 155, + "id": "run-35e59053176da458d8b46fea", + "log": "campaign/runtime/runs/run-35e59053176da458d8b46fea.jsonl", + "malformed_events": 0, + "max_steps": 40, + "observed_model_status": "unavailable", + "observed_models": [], + "observed_sessions": [ + "ses_f748d122dffevl5miyoo8I3vQT" + ], + "requested_model": "openai/gpt-5.6-sol", + "resolution_only": false, + "returncode": 0, + "role": "analyst", + "schema": "sots-run/1", + "source_after": { + "engine": { + "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", + "files": { + ".gitignore": { + "mode": 420, + "sha256": "5103c9533f0d31fea29c0cc85d543692af84a697416dfa7557e31c9843210145" + }, + "AGENTS.md": { + "mode": 420, + "sha256": "7d1d4bc05c35e3354a77b3c8d5d2c04fb9d6658d09e87bc814a50bc3d2033fb7" + }, + "CLAUDE.md": { + "mode": 420, + "sha256": "15d60c3d592302a2854df8bf6d39c0a578c22b9273a633447e10b76fd76291f5" + }, + "CMakeLists.txt": { + "mode": 420, + "sha256": "6e9791511ea23bf8bf5f7f58617a7e77bbe5006829609e425e565c11c1e8d7ed" + }, + "CMakePresets.json": { + "mode": 420, + "sha256": "fcd1dfe3989ee4f56fa3e419059e1db5621922165edf05f13cfe8e5d786d8bb0" + }, + "CONTRIBUTING.md": { + "mode": 420, + "sha256": "26a381fe08feb51f861655f77de4e558f056d1dba79162a2e82513a92d0e6506" + }, + "LICENSE": { + "mode": 420, + "sha256": "eedebad43ea495111bf4451d78cb440309d90a733d6a36445699dde0629f1858" + }, + "README.md": { + "mode": 420, + "sha256": "66c2437fe4f074e6499de50b0d5f0d013bc290333f4d4bf554b541261885a0c1" + }, + "cmake/toolchain-mingw-i686.cmake": { + "mode": 420, + "sha256": "231c0b79868a77d54cc6619f0b4ea18454964a1a078806f44a6ffe3fb7741a9b" + }, + "docs/A2-alliance-and-modcount.md": { + "mode": 420, + "sha256": "0c0c45c31d5d64124f3b91a161f8a2f4732c8a5d7f6bc524baf4d59f8a191701" + }, + "docs/AC-predictions.md": { + "mode": 420, + "sha256": "ab9e41714abdbc32e620d8a2068be8ebd2fc8898ba149113c66ccda248b4bcda" + }, + "docs/B1.md": { + "mode": 420, + "sha256": "42b61bbfc135cdcd0f1a32f63164b88e67106400de7f08f543f118eccd814364" + }, + "docs/B2.md": { + "mode": 420, + "sha256": "87dfd333ee15681a3aa4de58cf1b14ff8240e75afabc05012e0f28531cb4b8b8" + }, + "docs/B3.md": { + "mode": 420, + "sha256": "fb65c41037b6cd6252c67e5244d492a3a17ea4ba2ddae821d49fe0a879528518" + }, + "docs/B4.md": { + "mode": 420, + "sha256": "22547b3d2960684e52a380fb07f43a75bf50aebf93cede689f297cf38f4a012d" + }, + "docs/B6-ship-construction.md": { + "mode": 420, + "sha256": "9c5c4fd2059af965e317c9db5b7fbfc440397ddfcdc5bf7860115f6a8a0532ab" + }, + "docs/CB-capture.md": { + "mode": 420, + "sha256": "ce45a9082588051eda7438016dc66eb28bb4afda98b82cdc20102c4ca53529f0" + }, + "docs/CB-predictions.md": { + "mode": 420, + "sha256": "ba51538b018cbb403978f97ad45d4743937d49ba55c8f15d7af8f8e4aa441f0f" + }, + "docs/E-events.md": { + "mode": 420, + "sha256": "de98795aadb1617eab91815ebc34818bef8b52c36ba18b4521170065bfd2d201" + }, + "docs/EV-events.md": { + "mode": 420, + "sha256": "e7d9536cd23f5d800dc97f68167bb738088a16136004419f28de92d7fe1bcfb9" + }, + "docs/G-wire-schema.md": { + "mode": 420, + "sha256": "19db69ae359ddbd2a0509d02f1c616f939e0428480a8bb33c81f69145323a591" + }, + "docs/G3-civilian-growth.md": { + "mode": 420, + "sha256": "38ea3a8ddc3fdca258294d949c4cd2af1a930cdd9ba612d5e8fb48bc446bdf30" + }, + "docs/H-probes.md": { + "mode": 420, + "sha256": "f23e4d4cbc8c9a3000a0a58ed994dddd95466cee1ec45e961685e86dde4dc54f" + }, + "docs/L1-predictions.md": { + "mode": 420, + "sha256": "af97dbc9f15b9c2e6f223c89bac17826056fa4f3bced3c01513c1ad4d9ac1754" + }, + "docs/L2-predictions.md": { + "mode": 420, + "sha256": "18213ce5f3375d478f266de85c38c2b04ca2ae8ab4a2023780dca161fa14f460" + }, + "docs/L3-predictions.md": { + "mode": 420, + "sha256": "d1c9c0006079f47ef0d3371f4a2c2df2fe4f08ebdad0f8a12d1b0de35b15ae7e" + }, + "docs/L4-ai-orders.md": { + "mode": 420, + "sha256": "b04127c5158a882f252b2b6e8afb2d131f0de623cc0c62c86c612af803d75835" + }, + "docs/L4-predictions.md": { + "mode": 420, + "sha256": "6a194ae336920f13d8e4a44549cbe26be959beef81cffed88ef03b3cec563e44" + }, + "docs/L5-live-verification.md": { + "mode": 420, + "sha256": "4c1abe57c516b36f383390164a362f53294feda222c623283f1e6091d8ef0ec4" + }, + "docs/M-movefleet.md": { + "mode": 420, + "sha256": "718338edb8cbe8a449793b22889776a1783d1d0ade553c03973ea45d426eb426" + }, + "docs/M0.md": { + "mode": 420, + "sha256": "e121c380612a42727e3a973d8cf50f884d660bb4b43bc494258dc1c6b6f26705" + }, + "docs/M1.md": { + "mode": 420, + "sha256": "e0a36cf109d096748e55522eb8d7a261764cbf5ab5daf9342ba903d0f2bc6704" + }, + "docs/M2.md": { + "mode": 420, + "sha256": "25f9cad74eeee40afc2117333232384e1cf387b2b9132856650234c5ba593c61" + }, + "docs/N-output-term.md": { + "mode": 420, + "sha256": "3b8317e22714ef66b35efceee6fa0f7057c37f7c6e34d93cc5047cd1dd07ecde" + }, + "docs/P-events-wiring.md": { + "mode": 420, + "sha256": "72ee81b71b4c08ae451721c785dc5e01ed4ca43ff0fd474befca09dcc41599ba" + }, + "docs/PAR-predictions.md": { + "mode": 420, + "sha256": "16e8fbbac5001db0b10d766858c0ae2ea9619f37043a0883ee46da80d4dd4846" + }, + "docs/PL-players-residual.md": { + "mode": 420, + "sha256": "9bc29bc030ee8b0e00e496b91fe8fefac15179ce9fd01c0a11a7b5b5335356dc" + }, + "docs/R-recapture.md": { + "mode": 420, + "sha256": "73c62ab20c5eca5e87e1d18aefa60a2a2acd75cbc7510d31b27a2cd4ebcec38f" + }, + "docs/RB-predictions.md": { + "mode": 420, + "sha256": "c1016781505c10aa304d4710c5389918b744ab20cbd8cb54dce462c3dc28e4e7" + }, + "docs/S-standalone.md": { + "mode": 420, + "sha256": "8979b0a9fef33a55ca15bf3ef78064e72df332033354329ff2471ad6648e4a8e" + }, + "docs/SD-predictions.md": { + "mode": 420, + "sha256": "a76a568ccac7409e3cb3acef724dbe6b618d4ec30259bce33594098daff8b6a0" + }, + "docs/SV-script-objects.md": { + "mode": 420, + "sha256": "80ebd120fa9cf5e68ac4d33117966805b917d24bc339f7d82be972a280449409" + }, + "docs/T-turn-driver.md": { + "mode": 420, + "sha256": "a4096b8223cea87ce77cc64014c489d4625ed36fd3aec1358565ca5cf91d4e1e" + }, + "docs/U-unlock.md": { + "mode": 420, + "sha256": "5cbe3d8fb4bd30d029cb2db006a4dd3c6819885f55f434afb4bc8ae79b526901" + }, + "docs/V-eventlive.md": { + "mode": 420, + "sha256": "ebd08c000f42211e87958278f03d6891475cd8557658e1a42105cf5ed45a1aa1" + }, + "docs/W2-predictions.md": { + "mode": 420, + "sha256": "9972e27467cf0fe23a358818caf7edb979de25697d3aa4b97a2135ca79fe34f5" + }, + "docs/W2-watchpoints.md": { + "mode": 420, + "sha256": "f8634c5f977b2ca9b2e07df105cba09adacaeb6fb4cf046e41e5e1e42b83b107" + }, + "docs/W3-predictions.md": { + "mode": 420, + "sha256": "211cedc2d924bcf47cbb73166b408e9a27d795863ffc90aa2adbb85beeadffcf" + }, + "docs/W3-watchpoints.md": { + "mode": 420, + "sha256": "568e818e66d95f9079a1270c4d9b900c7eecfd5b5a3b4ba5a4aa0c843666f061" + }, + "docs/Y-standalone-rng-and-tail.md": { + "mode": 420, + "sha256": "49d926cc505d6ba07753748366e42ec32493a15c76bfaa45b2f66f52adc57f2b" + }, + "docs/Z-tail-rng.md": { + "mode": 420, + "sha256": "3ed2b40f728bcedd663c305cce13481bad1429af03fd5215ee3189161cfbd7f1" + }, + "docs/architecture.md": { + "mode": 420, + "sha256": "ba4732eb8a4c7054df5136a72d1774e4f1e919a517a1c74e975903fdd254422f" + }, + "docs/game-data.md": { + "mode": 420, + "sha256": "2124ea3d117b4ee6f48660d9711c1b4ef844a4ba37af7cea3766914d77bd6b23" + }, + "docs/game-design.md": { + "mode": 420, + "sha256": "5b40349ad446596b534567a5683cf9ea99709d9eff231890e0f6256c755f0272" + }, + "docs/game-effects.md": { + "mode": 420, + "sha256": "e1e0abc162602daaac255fe44b11c511adf45d4ef5fa188268411829b0817e5d" + }, + "docs/game-sim.md": { + "mode": 420, + "sha256": "d1e14770d252fd2f320a7baa1ad54c90d955cfc840f477d1700cfbbadcec730e" + }, + "docs/harness-audit.md": { + "mode": 420, + "sha256": "931d92cc744ec6ca3d961fbe7fe96dcab28060446058eb78be9835ebbce73ed0" + }, + "docs/mars-parse.md": { + "mode": 420, + "sha256": "d9fa3029ade4f9401c59fb88f4520a1ef3af9a9c6f2bb5d1a0ebfa1d5061d6dd" + }, + "docs/mars-rng.md": { + "mode": 420, + "sha256": "f2a01b88f105d07d0d0d514430e76da7632e5c8e4e3bbd6c99a25f1dc5daa89c" + }, + "docs/mars-stream.md": { + "mode": 420, + "sha256": "61a16c9b7c143b4bc2edee473cf1f8bd06c1a5144c120bc563e5ec6d770dd0e7" + }, + "docs/mars-text.md": { + "mode": 420, + "sha256": "2b6c7d2eecbb684160e7565d1d7224eb0d2f7e9a41f4d807095a182ea605dcf1" + }, + "docs/mars-vfs.md": { + "mode": 420, + "sha256": "1508c2a070d56f4fdabac3c2ef1fd08d3f93d7a3045d59158340ee22a6ff1b62" + }, + "docs/shim-trace.md": { + "mode": 420, + "sha256": "8a059c1ba761b366449c2db8ef248656da917050ed28855c6d812ecf91672fa5" + }, + "include/generated/sots_addresses.h": { + "mode": 420, + "sha256": "fc34ac4ee8cc7fea91c447b5715841dc6d3afe36f9aff04e88b6c29b5b64f448" + }, + "include/generated/sots_stream_schema.h": { + "mode": 420, + "sha256": "13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c" + }, + "opencode.json": { + "mode": 420, + "sha256": "9af560c2a49945e964beb689649c13775e2aaaf691af270a565d6c6826f76c15" + }, + "src/app/CMakeLists.txt": { + "mode": 420, + "sha256": "142999eded2ff494745ce550af76a8f8caf0269ad22d6d5650e7a79c19d22717" + }, + "src/app/alliance.cpp": { + "mode": 420, + "sha256": "37d6e57f7ce82a69a595cf474e7be7a544efef210f960e9cdfeab6168826bac9" + }, + "src/app/alliance.h": { + "mode": 420, + "sha256": "08fa8dc96286c7cb15a90a987fa22b17e195522e642ab8303b659ca58739eafd" + }, + "src/app/command_replay.cpp": { + "mode": 420, + "sha256": "739059930cd3a5f1d988522ff50c60d8657664a66c9fe19b019833f417b55824" + }, + "src/app/command_replay.h": { + "mode": 420, + "sha256": "956429a742554cada2124de49c6955e27b0e5d68db87dcc95b22c75ec7bd93c2" + }, + "src/app/construction_phase.cpp": { + "mode": 420, + "sha256": "025cd0ea1a7badd567f7f1cd59330b1e01149b5c5094575fbd438683658bb0df" + }, + "src/app/construction_phase.h": { + "mode": 420, + "sha256": "a4d39994096683a1144eb20282b205cf71e2045873cc15b53bdac214ab1e9a5e" + }, + "src/app/event_phase.cpp": { + "mode": 420, + "sha256": "80717fa7c7f108004d5250f12b6c994752a1a55d7f32c7d3ebf29f2869118c90" + }, + "src/app/event_phase.h": { + "mode": 420, + "sha256": "54077268fe4705270dc06bdc46a6fd9384fb5e0d36da19e55ea149b478d8cf34" + }, + "src/app/growth_phase.cpp": { + "mode": 420, + "sha256": "5924d2641fc98d902b56a3e6417d7a57d70c1564718951b098e7d14376ebc4e3" + }, + "src/app/growth_phase.h": { + "mode": 420, + "sha256": "8222ef811abff161c8f891a331a52e527de54fbf468949d1e0e188adc473ae3b" + }, + "src/app/main.cpp": { + "mode": 420, + "sha256": "adfd7dd177439bfd57509532bcf0f37779281ae9309daa93efe1ada3ef3f57a7" + }, + "src/app/observed_phase.cpp": { + "mode": 420, + "sha256": "31fb99678d60de6901b4bb1b251abe2421453264653cf5f7bd297a376c2b23f3" + }, + "src/app/observed_phase.h": { + "mode": 420, + "sha256": "f88fc22a5cb21a43e196d7fae09446126635d3284e6b398bca234f265234b693" + }, + "src/app/phase_catalog.cpp": { + "mode": 420, + "sha256": "e3da16e6d499b7836953251d940ce171792ada208156ca583277298f305fc316" + }, + "src/app/phase_catalog.h": { + "mode": 420, + "sha256": "da6fff506002079d8277358d0095981dc260449dc19677a533ef25ab709aed87" + }, + "src/app/report.cpp": { + "mode": 420, + "sha256": "da3feb6043f6e68cb9ea763f7242ac153a5944c59f448284faf34c64ad6b9228" + }, + "src/app/report.h": { + "mode": 420, + "sha256": "0495d164458ddb7187ce3105f82cee06cf9cf6c5b73ed8cb6e434e1d2e0f8481" + }, + "src/app/script_phase.cpp": { + "mode": 420, + "sha256": "61eeeeb7eac3145cee938ccfc564b231b6968ce7926fb9599c136134f0d5ea91" + }, + "src/app/script_phase.h": { + "mode": 420, + "sha256": "e52006ff939fa945870fafdc2412ba67e3d5e1cc2aa51c0ca0a884ce630aa1b7" + }, + "src/app/trade_raid.cpp": { + "mode": 420, + "sha256": "07d6bb904e655bb644ff6df2e417adb448487bb67acb62240ec5ecc978eabebf" + }, + "src/app/trade_raid.h": { + "mode": 420, + "sha256": "10e0b1460eb7810f1fcd61e67d47333373f06bdacf5a11372958a84a91084e52" + }, + "src/app/treaty.cpp": { + "mode": 420, + "sha256": "317463fc0e2a6ca7eaa4e2f096c3821655a4623de4085af44d951ed500837575" + }, + "src/app/treaty.h": { + "mode": 420, + "sha256": "836395a85868cbd6b7fda8f1d304128fd7cc6952aff37003e8e119a5ce0251f9" + }, + "src/app/turn.cpp": { + "mode": 420, + "sha256": "a626ddf80a340de50b70f09bf91c0180d255c533e65edce1532d807fcf5109b4" + }, + "src/app/turn.h": { + "mode": 420, + "sha256": "85c87aab5c5b5ad5a6a34cc9db710b1cf77dec1a7145ba1e0b5e17fff9a6a237" + }, + "src/app/turn_record.cpp": { + "mode": 420, + "sha256": "e1eb0b253e964ab4f8be1333f81e193ac64109544da384cbdf21858cbf931e4d" + }, + "src/app/turn_record.h": { + "mode": 420, + "sha256": "78d8d2948bd04bff5e7d2c55955b726f1cd7552a765e608e390209e03856f76d" + }, + "src/app/visibility_phase.cpp": { + "mode": 420, + "sha256": "34d9df699af3e57823ec8457c442408da854028f9b95db5820171caad0823131" + }, + "src/app/visibility_phase.h": { + "mode": 420, + "sha256": "60db50f5b98c5edafc86a33f982a7773acc291c1a18f9cf23323e53ebadcde27" + }, + "src/game/ai/CMakeLists.txt": { + "mode": 420, + "sha256": "f51509a2699f02ecab9faa1f75feaa38c299e6bbbe08bfbe5e8e86722037f6eb" + }, + "src/game/ai/agent.cpp": { + "mode": 420, + "sha256": "e1bbddc3deb797d62ae9c2b24bc811ec9379699992dd838694bd5eadc73feef7" + }, + "src/game/ai/agent.h": { + "mode": 420, + "sha256": "48aa26f32d52a3f8f4e37ed5c6986b1e87a8fe1e780d5314514eb5c75b8bc244" + }, + "src/game/ai/apply_order.cpp": { + "mode": 420, + "sha256": "122ffea1090382fd01bc505fd30c59557dfec2c9846609d00da6e80109da2253" + }, + "src/game/ai/apply_order.h": { + "mode": 420, + "sha256": "a3b7a1ca26243ba0fdd801b78978175db6f76e297a72876fa0a35e12f38e09b3" + }, + "src/game/ai/command_capture.cpp": { + "mode": 420, + "sha256": "cb9a1d37af9f66e78d368e03aeabec01e4d48f76aaa30348a51f4c70a915e4ec" + }, + "src/game/ai/command_capture.h": { + "mode": 420, + "sha256": "921599e5b2aa8b773db00134618efde687c7d9ba739abd787ec7666f4cfeb78f" + }, + "src/game/ai/orders.cpp": { + "mode": 420, + "sha256": "1b775eb1a030bc6e81e5b7702cbf8ad56288860276e8a0475da66f7367542640" + }, + "src/game/ai/orders.h": { + "mode": 420, + "sha256": "c2a3b8fe1a7c46a1c1104bc87be8696d9f0782cc304d27cb96d0ec6b182f12ae" + }, + "src/game/ai/tasks.cpp": { + "mode": 420, + "sha256": "b05878ccd94c375aac8723c8ea9499f77b98fb94acc5a75a15fa1948dbe83c76" + }, + "src/game/ai/tasks.h": { + "mode": 420, + "sha256": "b1de4f89c1679ccfdeaa8b852cb2ce407b71dcd1bffacf97df389a69f6ae3a5d" + }, + "src/game/ai/turn_order.cpp": { + "mode": 420, + "sha256": "858b12c51c4509e16a22a6c080d1c6b47bd23d2b8a11f84a48d34f24c4635f22" + }, + "src/game/ai/turn_order.h": { + "mode": 420, + "sha256": "3e76710928fc2df52fd8312abfb8f23a2ce162f8e0856f46672a4f46b5b4384f" + }, + "src/game/combat/CMakeLists.txt": { + "mode": 420, + "sha256": "4b3a05c45360e312d6c1d96c1f05a60437d19d2046257835e0d6c70ecc4ce115" + }, + "src/game/combat/retreat.cpp": { + "mode": 420, + "sha256": "eede86a4d25289dfc9132d5776b11114a109179e5aa10f2b985035e5b22d7a1f" + }, + "src/game/combat/retreat.h": { + "mode": 420, + "sha256": "5fc3e002a5f1944f29c74f862ff942b894e40e88afafd52358373ada36644d7d" + }, + "src/game/config/CMakeLists.txt": { + "mode": 420, + "sha256": "c746021654505c92be333cefb9df994431679d40d8d654b937feb950684830f7" + }, + "src/game/config/config_loader.cpp": { + "mode": 420, + "sha256": "d903ba06747e5b7d66400d03ee1f0a9896bf4268bb200dec0b5c8599dbd3d3a1" + }, + "src/game/config/config_loader.h": { + "mode": 420, + "sha256": "fda71dee1a4e2b896760e9ac344768e176ea4f0a08609c7d651033a1ee698085" + }, + "src/game/config/manifest_loader.cpp": { + "mode": 420, + "sha256": "dbe33dc5ae03db18f3b2c01b48cc1fced10f2cca599270c0a028321a7d7dd7c6" + }, + "src/game/config/manifest_loader.h": { + "mode": 420, + "sha256": "68e508b9e6d1222d980b22ae826b127693fdf0821b6539ed9e62a8ec031aa5b5" + }, + "src/game/config/msvc_sort.h": { + "mode": 420, + "sha256": "17fcb13bb49a634c80be38299617c6c16fd8addedfa88c53d67242c90b811716" + }, + "src/game/data/CMakeLists.txt": { + "mode": 420, + "sha256": "677ba0dd0ebb8176f4e7c41d5550f2ccedd56d49e7e4acb1eb0a7970e9e98a51" + }, + "src/game/data/block.cpp": { + "mode": 420, + "sha256": "f61312708c715ce525ed1a01e71f1446d31fc96ca1cc51f5bd863cac51702200" + }, + "src/game/data/block.h": { + "mode": 420, + "sha256": "f14155dfca5fd270ad6b4d462458aa8cd5c5edf5e19da4df492ee2907e99eccc" + }, + "src/game/data/catalog.cpp": { + "mode": 420, + "sha256": "7799ad3b31d43236cacbc51c3ab086265927f98b1346005a8adfed2796178ebc" + }, + "src/game/data/catalog.h": { + "mode": 420, + "sha256": "80223146bcdbf4808776f974df7e5f46b120a021979a22f50b5ce2d74ec16d6e" + }, + "src/game/data/common.cpp": { + "mode": 420, + "sha256": "e58ba046844be11c61f7f7e501829b48b4f16e7c0ab78f10fcf9189c133cf040" + }, + "src/game/data/common.h": { + "mode": 420, + "sha256": "d1ac8375c1be133a98a383e01598f393f194e1bd9790d1c1230bc6121a45a187" + }, + "src/game/data/fields.h": { + "mode": 420, + "sha256": "4209df368ad776b3c24350246acf47ad874fcbbe292fb16f9ca7dacaef2f08fb" + }, + "src/game/data/shipsection.cpp": { + "mode": 420, + "sha256": "82d5ba9be2a446e50934b0b9a03b16839bd3acd1a967d9441180a1baaa271264" + }, + "src/game/data/shipsection.h": { + "mode": 420, + "sha256": "bcf100f83691226c4993dd7866b67a0b48d9b4bc6841463fbf07f0f26bf9dca0" + }, + "src/game/data/strings.cpp": { + "mode": 420, + "sha256": "6d983d3a4cb4284215301409587136fb765a5e6a4c9f4b988e01d710c0815f59" + }, + "src/game/data/strings.h": { + "mode": 420, + "sha256": "fb292bd472ed68eb4a5e93484f3f92d8a0ae8661e6a61ca4b417ab889c508055" + }, + "src/game/data/techtree.cpp": { + "mode": 420, + "sha256": "2ac6e39faeef808c97375f3b8a3ee219fcab8cc09921f0ed8d82eef7374eb9ea" + }, + "src/game/data/techtree.h": { + "mode": 420, + "sha256": "504946c255405ab28d20d0ed6c095b3b63f0e6865afe0e8bb0707e607c363007" + }, + "src/game/data/turrets.cpp": { + "mode": 420, + "sha256": "ce7db50ef10825e168fee2bf57c4b6038dd1a356be7ada9ed6a4f6a4f31b07a4" + }, + "src/game/data/turrets.h": { + "mode": 420, + "sha256": "f01603ad32b0ffdf891c88cc54c39a725c6a436f8dda79ac23e7505e59853c64" + }, + "src/game/data/weapon.cpp": { + "mode": 420, + "sha256": "accb5aab2081babb26443cd257f292909e19440c40346e098144148922f5d3f6" + }, + "src/game/data/weapon.h": { + "mode": 420, + "sha256": "63aeb670ae7b8a1fd6daa35ed60ebe41a87f62a6ec2a12f44b13f9052c55b009" + }, + "src/game/design/CMakeLists.txt": { + "mode": 420, + "sha256": "42692f7917d99fb5b9e392c2d0f1d908b2bc5c61fc2e5687fddbd665dafe0bef" + }, + "src/game/design/defaults.cpp": { + "mode": 420, + "sha256": "8efa0b79646525375739a1acfe77e75d5ae6b669d1ecaa01f49f3f5183caf528" + }, + "src/game/design/defaults.h": { + "mode": 420, + "sha256": "20af056628f362a4d5ad7ba6277135697718197ec6844ae0ae85bf06d4cd818b" + }, + "src/game/design/design.cpp": { + "mode": 420, + "sha256": "e166281c52a6d92fed8810b38bd736cbd2a324f15d290a39a539d01ff35ead20" + }, + "src/game/design/design.h": { + "mode": 420, + "sha256": "7e936c78ca10c3a49470da67f1659cf4ee323d14d50b5b2c1ada08edfa8f6997" + }, + "src/game/design/hull.cpp": { + "mode": 420, + "sha256": "554b0ef6955ac230c7eca29ea2d94d60b5fbc91f34d9ff457091577c8602268a" + }, + "src/game/design/hull.h": { + "mode": 420, + "sha256": "997018e59c9d78ee1da7e7cb9561b94b76befacbe348a4ce3301c5f22b582461" + }, + "src/game/design/rules.cpp": { + "mode": 420, + "sha256": "a623984f9ab40c354320051fec00bab2c7e3728c2c90082b3b8051294b906319" + }, + "src/game/design/rules.h": { + "mode": 420, + "sha256": "70a8a42fe82e9805cbb957717688ab9f9eb3438226f6e0d696ef5f7a51529229" + }, + "src/game/design/stats.cpp": { + "mode": 420, + "sha256": "c05f420a00026289be8693c0d80bbd2354ce354a91a78459cfc8e70467326c54" + }, + "src/game/design/stats.h": { + "mode": 420, + "sha256": "ba0a5d3bcc98f5c3e64579d42da70bfdf563773ce2fe1e6bfa2b36b14c453fe5" + }, + "src/game/effects/CMakeLists.txt": { + "mode": 420, + "sha256": "2e20f138f98bc69653c8360a26f99f3f43f35beedea5e90dfd7e9721e7550f89" + }, + "src/game/effects/tech_effects.cpp": { + "mode": 420, + "sha256": "40358c2af37543ca3ab09b4d0433cdb4b0d2d212b45f648739cc86e979501604" + }, + "src/game/effects/tech_effects.h": { + "mode": 420, + "sha256": "ef70addf2caf1e3abf36ac9d878a8db37d2adbac370957f5b6a0b5825564a0d6" + }, + "src/game/effects/tech_id.cpp": { + "mode": 420, + "sha256": "11cd652e81a52e86d72541a5c3de77bb50de3d31226272e0d1856e5a15b7f9a6" + }, + "src/game/effects/tech_id.h": { + "mode": 420, + "sha256": "f37752250c80c9c75ef8e144e4646dc1290a2cc8ce72d9a37949c6408996df86" + }, + "src/game/events/CMakeLists.txt": { + "mode": 420, + "sha256": "9b1f14a3801a991ba065e0e39ae2e3fa3966018e8a98fcceeddeaca3909328e2" + }, + "src/game/events/event_log.cpp": { + "mode": 420, + "sha256": "3b131879ec5e81cd1ba2bb0cbdfa6e05775ed77684f4ed7a8f5cfae87da1e7b1" + }, + "src/game/events/event_log.h": { + "mode": 420, + "sha256": "2ff415b1120ca3f28421006a566280fb977027cfa3f209bdba0986350376a953" + }, + "src/game/events/research_events.cpp": { + "mode": 420, + "sha256": "9520b20eba2a2b4bd5925f13b420d526fc610d06aae7ffad314e3002c4f5a253" + }, + "src/game/events/research_events.h": { + "mode": 420, + "sha256": "b87340c6b14e9de97e5bc0c5a4cbd74e54bab2831c60edf88c0e42ff5218ea22" + }, + "src/game/nav/CMakeLists.txt": { + "mode": 420, + "sha256": "79cc0ba25c6d49f7784663ace033d01ab3d85a5d8015fe2f466f8f1a3065983a" + }, + "src/game/nav/pathplan.cpp": { + "mode": 420, + "sha256": "04cfe8fca5be565f5443c8f1402eb0072221dbd63f70855e35b3eeea752f1775" + }, + "src/game/nav/pathplan.h": { + "mode": 420, + "sha256": "28b51f737b458679888e555d985b9e8d41adf8ba91fa0980b5e83668758c86e7" + }, + "src/game/sim/CMakeLists.txt": { + "mode": 420, + "sha256": "4b3085116f88c903a137abef6806891f7b7245dcb031153df7a5465dd2521116" + }, + "src/game/sim/colony.cpp": { + "mode": 420, + "sha256": "e0f0bf15d87b6ac2e92053cbfe0869c0dbf9465d90a9bae5456bb46883423b77" + }, + "src/game/sim/colony.h": { + "mode": 420, + "sha256": "357dce21440140a6cf836a3c12175ebb5bb6706c37d5ecd315a4ee4937725b47" + }, + "src/game/sim/construction.cpp": { + "mode": 420, + "sha256": "8cf4792f487162ca3599f16f0e92d73b4c9549046044548c5aecf202dd564130" + }, + "src/game/sim/construction.h": { + "mode": 420, + "sha256": "a7f201101ad704f1994f809259ad60f780760fa36174d99a1ccd9299447f5460" + }, + "src/game/sim/economy.cpp": { + "mode": 420, + "sha256": "1e0b17b589496a6139e8ca10fe20553050be7c965a02daf8b520dd5020412d89" + }, + "src/game/sim/economy.h": { + "mode": 420, + "sha256": "6f3e33e803bb49367d4cee3c8ef6186f04b79e7cf901047fc48d933108ab6d2a" + }, + "src/game/sim/movement.cpp": { + "mode": 420, + "sha256": "80c64b2148304b84683cf3860ced1354f5c29c923bbc50cc5001030dd85c2cd2" + }, + "src/game/sim/movement.h": { + "mode": 420, + "sha256": "9a6b2b4960428634d8004cd5694ed6a7a10ab28fd9c0e2a9824ede3e201e9441" + }, + "src/game/sim/numeric.h": { + "mode": 420, + "sha256": "88f715192ea322ace4eea13ab5ae55f7f41600262025208e468b5259220522c2" + }, + "src/game/sim/observed.cpp": { + "mode": 420, + "sha256": "43d29a9fe1195dcc0b7e6101ea05bfd076f03636f9f68de473539c83db0ddd22" + }, + "src/game/sim/observed.h": { + "mode": 420, + "sha256": "0224b5bf341f30ff0e98d910547261b6732bdc0c5339b520e26fc51939c1269f" + }, + "src/game/sim/player_turn.cpp": { + "mode": 420, + "sha256": "beb1b2ed434df3727e676ac56e751beff87fa98e4a42e4657cc54d41025773a2" + }, + "src/game/sim/player_turn.h": { + "mode": 420, + "sha256": "f24f8f5e161486575cd341c2f5bfed46fa6983263edcf2320e9c24860b4be51a" + }, + "src/game/sim/research.cpp": { + "mode": 420, + "sha256": "95f2d325544ee018ec8d0f945e91b4172f6ba406f95e19f86c4fb9aac6b22a89" + }, + "src/game/sim/research.h": { + "mode": 420, + "sha256": "e27a311e977afb2e01242938dc8d928e9a67d1f761965e191cf907e05c1c86e9" + }, + "src/game/sim/rng.h": { + "mode": 420, + "sha256": "f7e5bbced3dbd37deb49a00b52d05f7c751501d654dabd645ecff7447355929c" + }, + "src/game/sim/scriptobjects.cpp": { + "mode": 420, + "sha256": "a4f9a1b49e4ba22a88726efbbea2f355b40a3c006734d9150d509a344720a4d2" + }, + "src/game/sim/scriptobjects.h": { + "mode": 420, + "sha256": "210d0eb51780df70a9bca133664429589c03ea33e4524e2c182801d4b4a5c74b" + }, + "src/game/sim/species.h": { + "mode": 420, + "sha256": "83b44c0600b99c5acb72a3484bb0708cfba765cdf594aede596a3c47d5ee6298" + }, + "src/game/sim/techgraph.cpp": { + "mode": 420, + "sha256": "81f8f1120eb1fa4a77752bd2e0917df3dd76372461416526ae510bd697944ef8" + }, + "src/game/sim/techgraph.h": { + "mode": 420, + "sha256": "b2fc90666080a6b7f27dc9290eef17774d57742c2a1f9e1f77d94c7fa5689f6e" + }, + "src/game/sim/tuning.h": { + "mode": 420, + "sha256": "4acfad4098de951cc3a94ca25a2f200e96caba1836bf7441de5a2b458c022194" + }, + "src/game/sim/visibility.cpp": { + "mode": 420, + "sha256": "25f86a34f9a98d2439672283a446ba1804973dae3f6d9aa3692342b05f3a3ac0" + }, + "src/game/sim/visibility.h": { + "mode": 420, + "sha256": "783896489a2a9ec8bce617b141bfb631e8ef92f958be7b5c2ca64fd75774471f" + }, + "src/mars/parse/CMakeLists.txt": { + "mode": 420, + "sha256": "76c290b786a3e73387ec8c574fd5a0dbeb6e629adbe970426314f16497f59fa9" + }, + "src/mars/parse/blocks.cpp": { + "mode": 420, + "sha256": "e60baa8127b21cf6eb6c8e2aa02c6a72c6403dbc29e8480ff658bf184266675b" + }, + "src/mars/parse/blocks.h": { + "mode": 420, + "sha256": "1e8b76919a584d1d7fb01c5ff5e3a7173e8456eca892d61f0c6b7bb8f02f33b1" + }, + "src/mars/parse/effect.cpp": { + "mode": 420, + "sha256": "beb76a841a3d42dbc157413384ff1a0312a7068d6b22020eadcee2e1cbbc81f9" + }, + "src/mars/parse/effect.h": { + "mode": 420, + "sha256": "aaa5c83f2d8eef24667bf05d0f71b2a346f2fce09dc9a45d7a5197c894922e44" + }, + "src/mars/parse/result.h": { + "mode": 420, + "sha256": "58cff456e353550abcd0f52e031d9d70f2b7a975f4762cfccc64eb6bc748dbd9" + }, + "src/mars/parse/script.h": { + "mode": 420, + "sha256": "69a493268c47a08672694489a51c3ff0a7f9aa870e5ae5a93d47ba033cf21ad3" + }, + "src/mars/parse/value.cpp": { + "mode": 420, + "sha256": "712133e4d725649f5461e6a46bac6842b0751ac3fb7e1c468f826638ec58f623" + }, + "src/mars/parse/value.h": { + "mode": 420, + "sha256": "60d692648dab7e3e216c8d9e6ef212592ba1df1a98260b1b4599354742947b38" + }, + "src/mars/rng/CMakeLists.txt": { + "mode": 420, + "sha256": "dceb4bc0fb35c95a12ed9aa36380e79aa75641b15ecc06e4289d39824087e2dc" + }, + "src/mars/rng/mt19937.cpp": { + "mode": 420, + "sha256": "0c60775e9437b8eaad49f67a96001c81947c8d9e6d2472e28b2b490515bac95b" + }, + "src/mars/rng/mt19937.h": { + "mode": 420, + "sha256": "300836ab26fd1a4d913b395f08770bb2c248029ef1b80ecbf0c4d886adca2b8e" + }, + "src/mars/stream/CMakeLists.txt": { + "mode": 420, + "sha256": "95ffbb0c519e55b7423ab048a3019e295b7ef3a3e9506044ef2e68569df9601a" + }, + "src/mars/stream/archive.h": { + "mode": 420, + "sha256": "84d9ae2bb3d6f444b3933b3816cafd12caee8619d2219f19cd10d32cfad01d2e" + }, + "src/mars/stream/bytes.h": { + "mode": 420, + "sha256": "9f5869952c9d6b925db32995a417ba292a0c1a672fc3850400150afb8163b3f1" + }, + "src/mars/stream/dump.cpp": { + "mode": 420, + "sha256": "1b5bba86b2f85b1718276f8db557601320ab8a165d5fbfe93e51219cca5a1c16" + }, + "src/mars/stream/dump.h": { + "mode": 420, + "sha256": "a69af300ae7083fb0a5362edbe7eecd5273c8807884aff9fbedd7ae606c7fc4f" + }, + "src/mars/stream/gzip.cpp": { + "mode": 420, + "sha256": "20d71fd50bd637f78e7ebb5217bc6607ebc257535cc4720e640e4badb72f1644" + }, + "src/mars/stream/gzip.h": { + "mode": 420, + "sha256": "6bce52c615eb120999adb1a6f7f06baa813a033c28e02e6d79ce77f5b7a929c9" + }, + "src/mars/stream/node.h": { + "mode": 420, + "sha256": "eb43054c8592db107557979c7fc8612dc0646ba5d62f154b9b7f96a37ba2e860" + }, + "src/mars/stream/probe.h": { + "mode": 420, + "sha256": "6411d0976d1e785e8c32af6ecfe1a797c0a9aa02314e5e42fae3ed7b3449ae13" + }, + "src/mars/stream/reader.cpp": { + "mode": 420, + "sha256": "90f19cbcdb0fc50795895ea1eff09cd6c0ab3069095c49b276f3894e3d6bcbb3" + }, + "src/mars/stream/reader.h": { + "mode": 420, + "sha256": "900508d97be1cbe566d77f2c91755d3db387535cd9574e41704b6d940daa1ff4" + }, + "src/mars/stream/save.cpp": { + "mode": 420, + "sha256": "6db367b3ea570a4d0ee831160e3f44cef380f58de163b9d9205ca7449e51e049" + }, + "src/mars/stream/save.h": { + "mode": 420, + "sha256": "b3a411600d98b42e9014e1fc3cbc3eac5f32f4393e9f72036d3d840c802bb469" + }, + "src/mars/stream/savedump_main.cpp": { + "mode": 420, + "sha256": "8dc687f009d9f455e9bfa4019f03df72e058cebbb3e9ae5bcbb308285470208c" + }, + "src/mars/stream/schema.h": { + "mode": 420, + "sha256": "b1cd64bc43076a3e5893239bd2eb5c216e7293ee541322ef74fb106928183a05" + }, + "src/mars/stream/shapes.h": { + "mode": 420, + "sha256": "45ee379ff8100b6bc27427a2580d7aae19ff3d5d0aa27f682d156ae6a92d0a6d" + }, + "src/mars/stream/writer.cpp": { + "mode": 420, + "sha256": "54804b06266e34793f5294f9a96d2939d641915a0f60fc4e3b4170bfcea6e083" + }, + "src/mars/stream/writer.h": { + "mode": 420, + "sha256": "921cd44ea30e0b9944825b1d2caafc46edc8f2c23506c807050ed9208a397340" + }, + "src/mars/text/CMakeLists.txt": { + "mode": 420, + "sha256": "dccb93b37c21c9b3c3b35a50ca8de55c9f00df2a9e0a33b6c36d659a75455436" + }, + "src/mars/text/csv.cpp": { + "mode": 420, + "sha256": "b190e12b86a3f416a72c110caf9e0b2d98cdd33851d2fa48b55a8d7ea39279af" + }, + "src/mars/text/csv.h": { + "mode": 420, + "sha256": "3b7ec6d0884e95bfab869c253eddc30a802602bd1f230cc69461cb9cf3c17917" + }, + "src/mars/text/flat_kv.cpp": { + "mode": 420, + "sha256": "b98d3b7345489f0b149e56cd15436fd6199e4cf00d7ce3f8b8b31fcdecb90e47" + }, + "src/mars/text/flat_kv.h": { + "mode": 420, + "sha256": "d6765cd42cad46597b6e36e9d08baf6819f7796442293043d5ff686e2376d292" + }, + "src/mars/text/lines.h": { + "mode": 420, + "sha256": "b9a16ccf0dc7bbf36100e0b66c80bcb818590b161f820d3c67d55bccff1c2c65" + }, + "src/mars/text/manifest.cpp": { + "mode": 420, + "sha256": "4da1bb615902ec61883e561f5dd375d89442f7b9046fbc864f6308f27921087e" + }, + "src/mars/text/manifest.h": { + "mode": 420, + "sha256": "dd7351a7a6a144e97f3a3b6a25d22d1518a099e95deadb8965cedb201601e102" + }, + "src/mars/text/result.h": { + "mode": 420, + "sha256": "7f817033811dff6fcef1d5b76f88922cb0392afb4359549876cd017a14755606" + }, + "src/mars/text/value.cpp": { + "mode": 420, + "sha256": "94b433d78f3211e1a4dd9eb8a0a00b514cbeaf63a03e738146c56dbbfe221479" + }, + "src/mars/text/value.h": { + "mode": 420, + "sha256": "d3b5c70af2f339ad27b43c38353fc7a2da83388854b02000fa1b6d9a4e1dfc07" + }, + "src/mars/vfs/CMakeLists.txt": { + "mode": 420, + "sha256": "630d5d4707ef3c0f24a414815cc23158853fe9d5aef429d6619abc1c433b3786" + }, + "src/mars/vfs/path.cpp": { + "mode": 420, + "sha256": "e1f3bbab1f90b0132aec24d8c5997dafab69ec72f01f2dd2fa63c91f83ef7aeb" + }, + "src/mars/vfs/path.h": { + "mode": 420, + "sha256": "043091008f2cab7c88185de63e7aae63ad9b0e384109f5b6fd8c31666c4e2033" + }, + "src/mars/vfs/result.h": { + "mode": 420, + "sha256": "19115bf1c5b3bf01da078a49209230053043610b342b01cdaaed126e2d3ea748" + }, + "src/mars/vfs/vfs.cpp": { + "mode": 420, + "sha256": "ab8272cd14b4b55e7af13f5383d6106f0b1caabdde57e69c1d0fb5b434d31cba" + }, + "src/mars/vfs/vfs.h": { + "mode": 420, + "sha256": "2484231baa64ede6fc35eb0f49e1fd7a3373d5c559f016d5adfb9fc433619d90" + }, + "src/mars/vfs/zip_archive.cpp": { + "mode": 420, + "sha256": "d66e70300539bd42bcf193683df7c34d2b0b03146fd79f0a180385ead1559e87" + }, + "src/mars/vfs/zip_archive.h": { + "mode": 420, + "sha256": "0ffbd90f7919741e63e86e14d0f87d247bc2cd16d2db54771071553249ad935d" + }, + "src/shim/binkw32.def": { + "mode": 420, + "sha256": "fb500fd9f9ecbff44123b89fc24cec72e91fec4c4430ce12a69efc06b20de235" + }, + "src/shim/fpu_force.cpp": { + "mode": 420, + "sha256": "c4b4e41a7ef81139c652ba8164ed8bb0d809b42182f0d0f048b9a9e63bebe59d" + }, + "src/shim/fpu_force.h": { + "mode": 420, + "sha256": "75bac23bc45510961f6b10d21c47e72d8dc0d3971a3ab30b795cad1d25332c06" + }, + "src/shim/hooks/ai_orders.cpp": { + "mode": 420, + "sha256": "091ed885012fffa0e02b83c53e547483dfdeaf1094933726e0291fff0a99e434" + }, + "src/shim/hooks/ai_orders.h": { + "mode": 420, + "sha256": "6e775b3f946f2eaf10dc2e236a3f3c7b9311ed4e82cd4be1ca30e6c62d49d053" + }, + "src/shim/hooks/ai_rng.cpp": { + "mode": 420, + "sha256": "b8fec711cb620561c8f4854e72c3fb0d73013c9b1cd69fa63fc05dd3d2f60289" + }, + "src/shim/hooks/ai_rng.h": { + "mode": 420, + "sha256": "1306f4d3c8071121b06c75232efa5c50b155c1f8752fcae852ee8e5497ce7d08" + }, + "src/shim/hooks/ai_visit.cpp": { + "mode": 420, + "sha256": "cd69811074820810edb1ed3779ca08bd99fea620b162d80a0395d35e8db7fc31" + }, + "src/shim/hooks/ai_visit.h": { + "mode": 420, + "sha256": "8315b433319f680e80a154409124355ad24842e9a0cdef5c8aa6d12422971189" + }, + "src/shim/hooks/budget_inputs.cpp": { + "mode": 420, + "sha256": "fa50fb74a3874886cf8aeb4012b9fd9a5a43ce38ab3c543ee425002ca32fd46b" + }, + "src/shim/hooks/budget_inputs.h": { + "mode": 420, + "sha256": "56e2f95930ff420820a3464162fde74ac0a3ff2e1dc8b493729fed342e4a6548" + }, + "src/shim/hooks/colony_inputs.cpp": { + "mode": 420, + "sha256": "7aa9191ec6292d765fd06c99ff1f2ae2e09a65fb1f238dd2727f28bd465dd46e" + }, + "src/shim/hooks/colony_inputs.h": { + "mode": 420, + "sha256": "87ec765e14106631e3f6423450e6e01d5bb21060fa91f83c267db215ef4986d9" + }, + "src/shim/hooks/colony_turn.cpp": { + "mode": 420, + "sha256": "b82616c7b9b05e96e7f4c40d853c686884b517a5424413686d61799df9d45420" + }, + "src/shim/hooks/colony_turn.h": { + "mode": 420, + "sha256": "a9013cc2e92998ff56ac0c8cc36dc42033fbe3072ee88b86882a1dd4dd0357d6" + }, + "src/shim/hooks/compute_budget.cpp": { + "mode": 420, + "sha256": "76a24f0daf1f49cfabbed13753c65754e26bfcc4f672791b37e926f82b5c1906" + }, + "src/shim/hooks/compute_budget.h": { + "mode": 420, + "sha256": "f308717e44e12151cfb20a6a0cf11ff8e99ecc9c17ef04783198feed05a24caa" + }, + "src/shim/hooks/dictionaries.cpp": { + "mode": 420, + "sha256": "b60794256c07964eb89d5295ecb711b402112fe5f982a9215dc3a304d03a567b" + }, + "src/shim/hooks/dictionaries.h": { + "mode": 420, + "sha256": "ac68fd66eb343d40ee97d6bf29c8b54f5d469a9ef8862687ae15e6ad8bdafdc0" + }, + "src/shim/hooks/draw_sites.cpp": { + "mode": 420, + "sha256": "e7a1fa40262db2ed22b1dfa5ca1bd2588da07bfbab046f23afa8e86c03814d79" + }, + "src/shim/hooks/draw_sites.h": { + "mode": 420, + "sha256": "0021323e918d464223d03b969d0e6992a0efac23ba84a31af901cf2ac74e9b13" + }, + "src/shim/hooks/event_inputs.cpp": { + "mode": 420, + "sha256": "eeb9cc87ef5c39994b7f25d5ccfe220c4775b32a4b11471b0fc0fb81fca4362b" + }, + "src/shim/hooks/event_inputs.h": { + "mode": 420, + "sha256": "c0e74aed8756b3de8ebbe5ab3d70cfa6282403efefc2d795e8f0b1b4cd44d731" + }, + "src/shim/hooks/fleet_movement.cpp": { + "mode": 420, + "sha256": "f01ae7f64b1d545089b002b79c9986d2a39b97ad3995c88a8b71fa05eedb90f0" + }, + "src/shim/hooks/fleet_movement.h": { + "mode": 420, + "sha256": "dbbfe50afaedad63ec45881819aa5de3907cdb411ddf8d1d3e6a5f9a386dc8af" + }, + "src/shim/hooks/global_consts.cpp": { + "mode": 420, + "sha256": "87a51601e1a7d963bf841ca4e892aa79de789a050f5d783c7b5d8bbc2e96a9a1" + }, + "src/shim/hooks/global_consts.h": { + "mode": 420, + "sha256": "b6ac4265ec1f02f11c342536dbc9970c13761ea68aec0a5962d0f4cd6aa5d265" + }, + "src/shim/hooks/movement_inputs.cpp": { + "mode": 420, + "sha256": "0e23f86e4a8ed6c292aea8e45512931cdd06742f25c5e0d175bf0ed3b2217502" + }, + "src/shim/hooks/movement_inputs.h": { + "mode": 420, + "sha256": "32904786cbb122c3c8c36faf6bd9ea5ade4cd8395e74199ec08dbcdb8019b66a" + }, + "src/shim/hooks/player_turn.cpp": { + "mode": 420, + "sha256": "33bcadd7569ad13c69f5f160423c8d469bc67725ce7b944cf4b4346fb8cc7f23" + }, + "src/shim/hooks/player_turn.h": { + "mode": 420, + "sha256": "a766a0d93f3860da6f8d1e0dcf110d6754cd8dfe67d867093f32e3d24e8ff0e0" + }, + "src/shim/hooks/player_turn_inputs.cpp": { + "mode": 420, + "sha256": "993dce2ca771a36337c9561695995a0825746563d2e84b4458de650f3e456799" + }, + "src/shim/hooks/player_turn_inputs.h": { + "mode": 420, + "sha256": "ca0d7916ca17d993aaef19be48d03076220ae15cdcc622aef52a7c6b5957ca71" + }, + "src/shim/hooks/probe_entry.cpp": { + "mode": 420, + "sha256": "5faf9cf04a2cf849d2dd54ce4ad9b812120fb99741f11e9d52fed450badf0506" + }, + "src/shim/hooks/probe_entry.h": { + "mode": 420, + "sha256": "f04f445863a6164d03bc9f6edcaa2e2b0108163241510f4c1dfcb0da7667d89f" + }, + "src/shim/hooks/research.cpp": { + "mode": 420, + "sha256": "dacd16403f1dd5be2ef2cc42f16938977bdd0ee9283d0bca647a079ee3d28e83" + }, + "src/shim/hooks/research.h": { + "mode": 420, + "sha256": "a62c4847be81ed9d10c4f5b9a876bd79898040aa11aa8764149d82db4b010a84" + }, + "src/shim/hooks/rng_ledger.cpp": { + "mode": 420, + "sha256": "119d325fcda72268bdc87f7ca7af05d059d4521c4d7d40ad7426ce070865eabb" + }, + "src/shim/hooks/rng_ledger.h": { + "mode": 420, + "sha256": "0d1e9c79e7601da921253e860c55d9b69c21e03a1014c49f1dd85fd0e5f70f30" + }, + "src/shim/hooks/system_output.cpp": { + "mode": 420, + "sha256": "93bfb7e6ca381041d1e9830f82b8d774a63c12593fc426fd3e9198c9373be3b4" + }, + "src/shim/hooks/system_output.h": { + "mode": 420, + "sha256": "62a8424c70bb8e6c3d9603ce752f6b19a3920a4a78be75718869d7dac73f3738" + }, + "src/shim/hooks/tail_rng.cpp": { + "mode": 420, + "sha256": "9b2a3923d1d837399f3486650ef0e49b502837ff7df46a12df9a9e9b0d4d9d07" + }, + "src/shim/hooks/tail_rng.h": { + "mode": 420, + "sha256": "b9585605e71364872db25c608012e94db2148f22e2e6fd40d4b590a83f3be92b" + }, + "src/shim/hooks/tech_effect_fields.cpp": { + "mode": 420, + "sha256": "4c4d558aba3ac4e1b10e0944c867911e61daea0b4ade716760546846cebcb7b3" + }, + "src/shim/hooks/tech_effect_fields.h": { + "mode": 420, + "sha256": "22b2c050f73c9de011a42dc5a52d92a1bd3b24a59f3ba3b4332d832fb1853420" + }, + "src/shim/hooks/tech_effects.cpp": { + "mode": 420, + "sha256": "2a20f01a18ed30a466e2023ae023aeed8718c680cda927d2f3b463b6dbe35714" + }, + "src/shim/hooks/tech_effects.h": { + "mode": 420, + "sha256": "ffbc4e8262146cd7764f0b9758fff01ce5d359b25a0f5d8c931313f32d035320" + }, + "src/shim/hooks/watchpoints.cpp": { + "mode": 420, + "sha256": "15c94333f22bb592129efe3fb800ea89987045f9ebbc0e6791d4397961fd727d" + }, + "src/shim/hooks/watchpoints.h": { + "mode": 420, + "sha256": "639ae42b230fb31762f50cac0422dcd5b7fda7a1a02c7739a86d1cd6eda62277" + }, + "src/shim/main.cpp": { + "mode": 420, + "sha256": "eebdac7f8f69b8b95cd290c96d41c6f3f0ed5c45ccd5de54ffc790af47083b99" + }, + "src/shim/shim.cfg": { + "mode": 420, + "sha256": "44ca58394455549150c3461cc888128a968b4f062807e19ef25b8eebf0bfd523" + }, + "src/shim/shim.cfg.b4compare": { + "mode": 420, + "sha256": "68bed5883a75132eb5e885b4750d23c1d5734c843a32a56dc7f96d2b73fdf962" + }, + "src/shim/shim.cfg.b4scout": { + "mode": 420, + "sha256": "faac0765478d88b63f371fbc307512e71fe05f2e6f97272e6e0ceb267cc6d626" + }, + "src/shim/shim.cfg.b4trace": { + "mode": 420, + "sha256": "6a89cdd3cfdf53cfbaff29278fd5d0edf156ad8a525c61624b60ddb1eb0575a1" + }, + "src/shim/shim.cfg.bupin": { + "mode": 420, + "sha256": "39d52ef1ccb18d4dea261b87d3f363ba45079022d1b9bc3531c552ef6df80ec2" + }, + "src/shim/shim.cfg.cbcapture": { + "mode": 420, + "sha256": "0939b1ea144976ded2d45ad885fa0f1ffa3d77f16cba9b4d5a9cb87623500a62" + }, + "src/shim/shim.cfg.cboff": { + "mode": 420, + "sha256": "7d5d6e2ceb7f86fd17543c9212e8547be6009f725871aadbaf6057af1f4f5484" + }, + "src/shim/shim.cfg.cbpin": { + "mode": 420, + "sha256": "72a222c025796458dc1a538eed3ea55f053ee5e3c01e5b19b802922a058d4fbe" + }, + "src/shim/shim.cfg.cbtrap": { + "mode": 420, + "sha256": "938c0893b95b576b75927d75787999c22b3424d28c8936456ea3723f62775e51" + }, + "src/shim/shim.cfg.crcompare": { + "mode": 420, + "sha256": "129031ceb358fef9e0fcee2fb42a0f20fd76d9db78f061f956bf75ce2cc51dec" + }, + "src/shim/shim.cfg.croff": { + "mode": 420, + "sha256": "f99345e7db55e695ecabf7a00fc16ced9a42e8882abfeabc8281b9a4ef26d730" + }, + "src/shim/shim.cfg.crreplace0": { + "mode": 420, + "sha256": "60c13bd76e546b4521ab4e6a7836439078e2a176a11e471e03434623153cb7d9" + }, + "src/shim/shim.cfg.crreplace1": { + "mode": 420, + "sha256": "d27f43eb970d6a9c8a0c8d8f7071633a226c34b675a6581b331c6e1ba6f36c9b" + }, + "src/shim/shim.cfg.fpu007f": { + "mode": 420, + "sha256": "998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363" + }, + "src/shim/shim.cfg.fpu027f": { + "mode": 420, + "sha256": "f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd" + }, + "src/shim/shim.cfg.fpu127f": { + "mode": 420, + "sha256": "1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271" + }, + "src/shim/shim.cfg.fpu137f": { + "mode": 420, + "sha256": "8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9" + }, + "src/shim/shim.cfg.fpu1a7f": { + "mode": 420, + "sha256": "59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588" + }, + "src/shim/shim.cfg.fpuoff": { + "mode": 420, + "sha256": "ce637b3f0eca81c04490335cd9fe8a537cd09e5ef14cc5b3050f548ca4d54c65" + }, + "src/shim/shim.cfg.hoff": { + "mode": 420, + "sha256": "dc9b4619fe84921ea5896c2cd190afb5bd4ca89422fb86bfee8459665f92cd7a" + }, + "src/shim/shim.cfg.hp0": { + "mode": 420, + "sha256": "ede723fc540adb94bf16af0f3086c1935aac008acb6a8d550e2a4e97ff232c2c" + }, + "src/shim/shim.cfg.hp10": { + "mode": 420, + "sha256": "1c1f07dfdb7f99d63ed9a62aa9a447efda690623164beeaf434c588e02ef12cd" + }, + "src/shim/shim.cfg.hp11": { + "mode": 420, + "sha256": "36eae0d554a79b9536e3c57d2fef187ae81bd3266947c7f45035be554fb59404" + }, + "src/shim/shim.cfg.hp4": { + "mode": 420, + "sha256": "5bb0d636247c37def9b5cbf0cc9138b13590a50ae8212890fb7d31dfb9e837f4" + }, + "src/shim/shim.cfg.hp8": { + "mode": 420, + "sha256": "a8fe5f16a299b2b9eb81a811c7ec5a3b1baf635fa179a69f1e23243c7d1e2133" + }, + "src/shim/shim.cfg.hp9": { + "mode": 420, + "sha256": "765fdf337bb6942dbd1357166646dbf7fde3777678a606c4dbfd368078f09b5d" + }, + "src/shim/shim.cfg.hpall": { + "mode": 420, + "sha256": "630f99725ea6aa933984f4c545634d127787672de36f6756da2591e22a36f366" + }, + "src/shim/shim.cfg.hprobes": { + "mode": 420, + "sha256": "3bad5e3e7bf35a85acc7169d27531788e9659dbe0f8b1a0c719777fdb6beb5dc" + }, + "src/shim/shim.cfg.hprobes2": { + "mode": 420, + "sha256": "c335f1ec8aeff1165213cd40adcdcd59893c65edf95b1537fc4460e6060911c5" + }, + "src/shim/shim.cfg.l1control": { + "mode": 420, + "sha256": "c5dec81556268795b9a3df175bafde340a3fe76c7d6e05389e09e79d2b138b43" + }, + "src/shim/shim.cfg.l1hive": { + "mode": 420, + "sha256": "970ce465f2363f391a93086f1b596e904265510e02e7d2d38174cc6ea22d9b25" + }, + "src/shim/shim.cfg.l1off": { + "mode": 420, + "sha256": "a4197233c65acb876328666cf37754aea96f942b6ea08105bdfb61d6d5bcbd64" + }, + "src/shim/shim.cfg.l1seed": { + "mode": 420, + "sha256": "360af979eaa0c13eaa4db38ff13dcc64b3e2ab538300c26497921301fd3817b9" + }, + "src/shim/shim.cfg.l1snlv": { + "mode": 420, + "sha256": "3603508983a87906ecce02e4c2e9581cf2fa59390af25335f0b221765c57ef6d" + }, + "src/shim/shim.cfg.l3cont": { + "mode": 420, + "sha256": "629530a34412ebf85fc8ce8d2e5931684eea9891b6b619419e6f8db8c37f0976" + }, + "src/shim/shim.cfg.l3control": { + "mode": 420, + "sha256": "42b6ec7ebc9c83dae4a58884803f627d54956eb308611ce1e8d3691a12a74ccb" + }, + "src/shim/shim.cfg.l3probe": { + "mode": 420, + "sha256": "692dabb6f00343bfcc2f86d62ade827c295acc4630a18a1f2ddcebd53640978d" + }, + "src/shim/shim.cfg.l4control": { + "mode": 420, + "sha256": "ab13b7e3604ee98e9372e3405e0eacb6d5965e02d5317cfee0ea9b9afbd750e3" + }, + "src/shim/shim.cfg.l4dump": { + "mode": 420, + "sha256": "fb40d67d8d7dca4587a1dc13a95826ab68eb3fcf44feb6006388935f3ee346f2" + }, + "src/shim/shim.cfg.l4off": { + "mode": 420, + "sha256": "629a3e41d11daa53325f31aeb77d14d5abe67058e274d36ed8feb71e2e30dc13" + }, + "src/shim/shim.cfg.l4probes": { + "mode": 420, + "sha256": "a446ff3d6117d5352ad9b3c3c02f6d6300ce0b1089f055925afe19b77f0a20f3" + }, + "src/shim/shim.cfg.l4research": { + "mode": 420, + "sha256": "ad400f7082680db82c6fb0d39eed488710e6661f9e3215b9ea2eb0ba53444b9b" + }, + "src/shim/shim.cfg.l5budget": { + "mode": 420, + "sha256": "74df0fa1bd14fec6e8028ba05c516f3a370ba389386e5a8459d594c2c7ad83ae" + }, + "src/shim/shim.cfg.l5control": { + "mode": 420, + "sha256": "3557f716dde348a98fda65a5bad54911fe6d52f75c2cf6a82cc5d4fc47a6e968" + }, + "src/shim/shim.cfg.output": { + "mode": 420, + "sha256": "a811cffac230a1d6c0f9c5adacb1b691ae289ec08de0da3726309a4e1213acb0" + }, + "src/shim/shim.cfg.parbr": { + "mode": 420, + "sha256": "ea8230b596e7baae0c127f5700391ec2c96d546daba8c70ce8b2800c83b096dd" + }, + "src/shim/shim.cfg.parctl": { + "mode": 420, + "sha256": "2d1190d032bb705030746197020c715f4ab8af551f944e9ec0abe136912ea60d" + }, + "src/shim/shim.cfg.parorders": { + "mode": 420, + "sha256": "2107be5ec950e69d01c43ab30919fbfe652823878f150111b158927bc41de8d6" + }, + "src/shim/shim.cfg.parpin": { + "mode": 420, + "sha256": "893f1f81cdef0a964145ebb1c4b1e2725af8868b14fed412d40e3cce71f824f4" + }, + "src/shim/shim.cfg.recapb1": { + "mode": 420, + "sha256": "688840567305218dada122b29284f6af44c3c63ca173db87406de159bb547c8f" + }, + "src/shim/shim.cfg.recapb3": { + "mode": 420, + "sha256": "2120646255bd70adf29ed2880daa6b11d0867b9cfc9f1c9644d63b92c263b69b" + }, + "src/shim/shim.cfg.recapmisc": { + "mode": 420, + "sha256": "cb1f794c51b5d3d74eb91cc084c96a04444cd79f22fc694d821b51924544f595" + }, + "src/shim/shim.cfg.recaptrace": { + "mode": 420, + "sha256": "0ae410cc72fe155837d711c78543e14b1f5743310cd023298eb1e5bbd5457e71" + }, + "src/shim/shim.cfg.sdbr": { + "mode": 420, + "sha256": "7cb2bfd798ed1286628f3a879606eff076c4f6011d95e1223376eb4d0a392ca8" + }, + "src/shim/shim.cfg.sdoff": { + "mode": 420, + "sha256": "9195aeddeb2caa4e3db7dfd775c43e96eb99cfdc59a6a61e65d86fb325f0054a" + }, + "src/shim/shim.cfg.sdpin": { + "mode": 420, + "sha256": "61119f197b1dc8ddcad059d2d2c2753dae457b4bda4eb29e06c78282eeda6a0b" + }, + "src/shim/shim.cfg.sdpin2": { + "mode": 420, + "sha256": "d6d7f82b500df4f3ed120b4ff421178cf4373a145fa803e57d22a0654e4f0f63" + }, + "src/shim/shim.cfg.tturn": { + "mode": 420, + "sha256": "2ab2d64288043c3c55fde668facde9307c0739e0c801c900790e11db57c5759b" + }, + "src/shim/shim.cfg.tturncmp": { + "mode": 420, + "sha256": "114d325ae3ece29422069ee74c790603abb38c49162dd32520a3eecd18ab6061" + }, + "src/shim/shim.cfg.w2control": { + "mode": 420, + "sha256": "d042c0082a8eb4f55b8e21983df292f0950adc4ac5787d4a0b83088c10c5a3eb" + }, + "src/shim/shim.cfg.w2watch": { + "mode": 420, + "sha256": "ddb9c18a1c6b6c23758e51ca9ac18b4b95abe206b162497adc2978c0384d6ee5" + }, + "src/shim/shim.cfg.w3control": { + "mode": 420, + "sha256": "c6a3a5ea1e39a0714dffee0e44a0e8d91a2b450534d7e4377273a55b3e87de8c" + }, + "src/shim/shim.cfg.w3mod": { + "mode": 420, + "sha256": "7c7f82aaa8b5b007a740324373060ca2ba84edc765eb4e7ce55afcaba4e1c2e0" + }, + "src/shim/shim.cfg.w3tshn": { + "mode": 420, + "sha256": "51fa826d0b18d6f01987d6748e6610847ec3a761257ffc382a40d234670afec3" + }, + "src/shim/shim.cfg.zledger": { + "mode": 420, + "sha256": "31d0535aff9660eb1ad06f529c88a42aa71b83b36f8404b7541a29327c508a51" + }, + "src/shim/trace/emitter.cpp": { + "mode": 420, + "sha256": "4253cac49f0761e487fd555c3c01e02fa22e2010789ad3af37c62c8fd2e02030" + }, + "src/shim/trace/emitter.h": { + "mode": 420, + "sha256": "aa7804614b3d3a214d5c32c33ed245ae24276979080baa9d5481d6594ee3f79d" + }, + "src/shim/trace/hook.h": { + "mode": 420, + "sha256": "35be73ac1c9519664957ffea639d873e8a811b4620f0feecb21b54ea2776f800" + }, + "src/shim/trace/platform.h": { + "mode": 420, + "sha256": "f1b78d971798e45998b26c6b0e20db49fceb7d4c63f0c8c37452c6c2c6df9538" + }, + "src/shim/trace/selftest.cpp": { + "mode": 420, + "sha256": "31461ae6d329a8a3856589b245f3bcf8631f0db9a5e00530e4f94279950de354" + }, + "src/shim/trace/selftest.h": { + "mode": 420, + "sha256": "583d7a10ef04254c7a0fb7dd2a6071ad012a9a97dfae0896bbd598970b206475" + }, + "src/shim/trace/sha256.cpp": { + "mode": 420, + "sha256": "2faf44b5b273612c776204c1d83e0910d86394f4f6207129a01c81dedc170aa8" + }, + "src/shim/trace/sha256.h": { + "mode": 420, + "sha256": "31ce080acdc086ff7657d9093ac9bea438203eaa8e392ca38539152cdd15038f" + }, + "src/shim/trace/tracer.cpp": { + "mode": 420, + "sha256": "37d9490dbdedc399ecdb30f46eb27f31a4ff8c902eadb2eb48ecca7fb0e8fb88" + }, + "src/shim/trace/tracer.h": { + "mode": 420, + "sha256": "cbb80f167b8f98777f9fb58ce107226f42027ffdbd868a6808047c48caf10f76" + }, + "tests/addr_smoke.cpp": { + "mode": 420, + "sha256": "ace1ab9549bb6f3e0048d0e6e3ec6061035395581b2db46c0a5acb097c428890" + }, + "tests/app/CMakeLists.txt": { + "mode": 420, + "sha256": "dd18f8e25d2a9ce988dc226e03c7c6e02a275bbbea74f505d005e42ca5972037" + }, + "tests/app/test_alliance.cpp": { + "mode": 420, + "sha256": "671b2cb3295f360c61ee87005287999710d12e10e7e532331c1c946ab97f7c4d" + }, + "tests/app/test_catalog.cpp": { + "mode": 420, + "sha256": "c4cd9840c1f1b5d5a6829f7f1c5a0245b5e66135d3bed6410a2b6eca1a037225" + }, + "tests/app/test_command_replay.cpp": { + "mode": 420, + "sha256": "739ebeea5bed551f232774bc812bcb794cfa057015fd187529fa563b5d7ae5eb" + }, + "tests/app/test_event_phase.cpp": { + "mode": 420, + "sha256": "05498df256759fe5b8af80e9e56c2ca071eb26de0651f257798fe1641da627ca" + }, + "tests/app/test_trade_raid.cpp": { + "mode": 420, + "sha256": "2158008bc711b8062381f346fa347a430582d8d1943b0de5f40eb2a38e9a3f75" + }, + "tests/app/test_treaty.cpp": { + "mode": 420, + "sha256": "0f98150a3f9397fd12109eae7359ff7e04a4060e10e01ecf1693eb2a4606ead7" + }, + "tests/app/test_turn.cpp": { + "mode": 420, + "sha256": "6d45b1d2d065528f14ae83d95314f2b6559e53cc23f1b9e2531c7c09b4b97eab" + }, + "tests/app/test_turn_record.cpp": { + "mode": 420, + "sha256": "a845971b8d25d71c3b1138495354ad392e4fc298f87eb9b89d1567c01ab59cde" + }, + "tests/game_ai/CMakeLists.txt": { + "mode": 420, + "sha256": "a57a82d0c79ff933564e200a5b3137f120e70a19834264eeb2438c4cafd7ad3e" + }, + "tests/game_ai/test_agent.cpp": { + "mode": 420, + "sha256": "41cb3fbfc7e0b277771a2e8dd17601285a1e3a911543fc1335ce05a4e4b5f11c" + }, + "tests/game_ai/test_apply_order.cpp": { + "mode": 420, + "sha256": "8669c2e9a4c95b670a9c41262c68ce183d3cf3900bc262e0a2e33500bfffc594" + }, + "tests/game_ai/test_command_capture.cpp": { + "mode": 420, + "sha256": "8c2bae38754b347beeefe85d796c13bcf43cf5bc9bc99eb743626028b4dbd7ab" + }, + "tests/game_ai/test_live_blocks.cpp": { + "mode": 420, + "sha256": "44cb6bd8b34c13e329f9b1d50bb2a5c5513e52761537dccfb01afb7d48be7580" + }, + "tests/game_ai/test_orders.cpp": { + "mode": 420, + "sha256": "b13d1a3a628de411abb4faf024a1ce8d3e94518f12285bb3d7e7e86b012ad43f" + }, + "tests/game_ai/test_tasks.cpp": { + "mode": 420, + "sha256": "ffd8eed7fa76a24616d579a4e31031dadf43a0534e33743fb104dfca552367fc" + }, + "tests/game_ai/test_turn_order.cpp": { + "mode": 420, + "sha256": "382d6a30e9151c57849595cb134b8e2da25d2763738c9cbfa18d3cad51ecce97" + }, + "tests/game_combat/CMakeLists.txt": { + "mode": 420, + "sha256": "fd0c0dfb54033353b7014e3c764c916522cb529b6b3eae8a8d52afd044c13fe2" + }, + "tests/game_combat/test_retreat.cpp": { + "mode": 420, + "sha256": "3fb0be08d230bbd7c4ea4a59319de7ab252e5b7cbee924afd069847da8dcf73d" + }, + "tests/game_config/CMakeLists.txt": { + "mode": 420, + "sha256": "9874822d186e783f25b2dcd87495e7e380d873b8a0790c67fffb9430468094ed" + }, + "tests/game_config/manifest_tests.cpp": { + "mode": 420, + "sha256": "3bc62e7e49699254151a825421973d831b25bcf7a22028c789e3ca63b0d77319" + }, + "tests/game_config/replay_trace.cpp": { + "mode": 420, + "sha256": "83602ec974b8195c3616230ad44c2d4fd6032f8ef5f96e7aa76d49a0a04ac05e" + }, + "tests/game_config/unit_tests.cpp": { + "mode": 420, + "sha256": "45b07c7289abac61fccd0a6cd0ff87812542ec888eb6d295fb87c3f57755cc6a" + }, + "tests/game_data/CMakeLists.txt": { + "mode": 420, + "sha256": "cb8cffb7217e82077d3db749dcacf29c098549159cc0f312ef04bfccaa30155d" + }, + "tests/game_data/build_and_run.sh": { + "mode": 493, + "sha256": "69ea9cb94468c56c329fcc5b9350431067e97091ed47c08bb10b57b38412883a" + }, + "tests/game_data/dump_catalog.cpp": { + "mode": 420, + "sha256": "4588e699c69586dfb77f0d9289e375407d4f9cf019690e26bfc78f7182167c89" + }, + "tests/game_data/oracle/compare.py": { + "mode": 420, + "sha256": "2cfe1ac93790de3351256d284392372721f94de5375686e6301ef39b1943ad12" + }, + "tests/game_data/realdata_test.cpp": { + "mode": 420, + "sha256": "334a924bf81c6ce6192a6688435b374e115382358f7e4554aa164295bdd38321" + }, + "tests/game_data/test_catalog.cpp": { + "mode": 420, + "sha256": "9ea5c3fff2388c5d7fbf295123dfd7b702ef21f17fc7c45a970822814abfce2e" + }, + "tests/game_data/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/game_data/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/game_data/test_shipsection.cpp": { + "mode": 420, + "sha256": "b3519f0de60d061a6f1ab8ee81d470a28fc17cc81b113639ef2c1e139c249b4c" + }, + "tests/game_data/test_techtree.cpp": { + "mode": 420, + "sha256": "d05c889da9edb622bd2b66aa8e300d8162e0c8788950daa1086fc049b90dd4bc" + }, + "tests/game_data/test_turrets.cpp": { + "mode": 420, + "sha256": "66adff30b974e9bf2c96c1af024fb85677e1a8307c801933d23f3d2ec9d8222c" + }, + "tests/game_data/test_weapon.cpp": { + "mode": 420, + "sha256": "b16b0481c0a8697ff16e39c9feb3ad9d5406250b7dd1c828bf12f1bb40ed746b" + }, + "tests/game_design/CMakeLists.txt": { + "mode": 420, + "sha256": "a26524ff14878564870853bc067c379d2ebd26c14e45bcbb06593d300ee4b3ca" + }, + "tests/game_design/build_and_run.sh": { + "mode": 493, + "sha256": "b1aab4d13b09fb1ea4205978bd7d8b05af5a6422ebe4a34261c3247489b48bd7" + }, + "tests/game_design/dump_designs.cpp": { + "mode": 420, + "sha256": "b1b24c5cb534ad821a20325869713c04b742c541c448ade83543d75608f7eda2" + }, + "tests/game_design/json_min.h": { + "mode": 420, + "sha256": "9cfd3eabe9b36d6b2863872e08fe6ebaddf0749d1966dea693f8bbc0472780ac" + }, + "tests/game_design/mini_catalog.cpp": { + "mode": 420, + "sha256": "5817c0251883c999c6ebd54c77fdcf3981181b41fb5f7637d445824d60942810" + }, + "tests/game_design/mini_catalog.h": { + "mode": 420, + "sha256": "ecb7fd0dffa8709008bcdf9b9da3e70e68f735f9b5ecd0dcb4c871a35ae43b59" + }, + "tests/game_design/oracle/compare.py": { + "mode": 420, + "sha256": "2db14952f7fca9a587995e326651b0d549b39ceefd9c0ac59982cd35ae5d21e7" + }, + "tests/game_design/realdata_test.cpp": { + "mode": 420, + "sha256": "cea57cd53d881b3bf2557cc32ea402c4991aa6de5ff72340861f195a8e20c141" + }, + "tests/game_design/stock_designs.cpp": { + "mode": 420, + "sha256": "2ac1b8bcb0f61852f4bc0a8b7cda51167531ca2a05d1e485991a4758cf586d03" + }, + "tests/game_design/stock_designs.h": { + "mode": 420, + "sha256": "a49173bde083467f5650cfbfbaebba5f16208d660fe7f2f3da81c2caff07c807" + }, + "tests/game_design/test_banks.cpp": { + "mode": 420, + "sha256": "c1d34991c53523cb7610a569e861e8a312da1fe659de0522a3594fb14cad24a6" + }, + "tests/game_design/test_census_saves.cpp": { + "mode": 420, + "sha256": "814c17c7a14db7b123579b7636ee7f2b720fdf4a5cbbe90f676dc01709c45e3b" + }, + "tests/game_design/test_hull.cpp": { + "mode": 420, + "sha256": "cff70268d58ab95ed963d335904110ab55c79d6a0f660f613409cf6d5d63e2bd" + }, + "tests/game_design/test_json.cpp": { + "mode": 420, + "sha256": "e7fa196274a4591834a974f742ff59c7ed1fb15fb138091b48a071354d001c5d" + }, + "tests/game_design/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/game_design/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/game_design/test_stats.cpp": { + "mode": 420, + "sha256": "a3681df901095b848cc6b1ae63d04fd70eeeadd406e7d51f3c76671cbf523a7a" + }, + "tests/game_design/test_structure.cpp": { + "mode": 420, + "sha256": "d09f7707ee170f8a933c657628c1da4f61a29c7eb2dc687a96c3985bdac941aa" + }, + "tests/game_design/test_tech.cpp": { + "mode": 420, + "sha256": "689c081a324c7ece3f70d711f7ac67a5b93207f95e2800a3a708f2f8dbe31965" + }, + "tests/game_effects/CMakeLists.txt": { + "mode": 420, + "sha256": "c80413a7103ce0ed7944fb096ad22fc206a091645428a6015ec3d0e442414a0a" + }, + "tests/game_effects/build_and_run.sh": { + "mode": 493, + "sha256": "ab5085eeab0ec65d8f7ddd7d79357cd15183888b1b4e51cb563810d4e4c64506" + }, + "tests/game_effects/test_effects.cpp": { + "mode": 420, + "sha256": "b10d804b1ad4fb140e13cc1984c6372dbbfdd92560f37583f2411bbcb45c16d4" + }, + "tests/game_events/CMakeLists.txt": { + "mode": 420, + "sha256": "c962651d71ee7783d5565b418f653f2954e489cf698762c5686f5f2dbb4304db" + }, + "tests/game_events/build_and_run.sh": { + "mode": 493, + "sha256": "8b92d249138ee53f728583a0c68b153eaf4e2ad7f92d415d8b3a83df2fb3ec28" + }, + "tests/game_events/test_events.cpp": { + "mode": 420, + "sha256": "182941b9b809b20d24a2e29c5e4bbd626e6da8486e87dc38d1c6088161ec793b" + }, + "tests/game_nav/CMakeLists.txt": { + "mode": 420, + "sha256": "7ee85557a167281f4576252428b4e01795232f31dc1d93c23b284568074cec3b" + }, + "tests/game_nav/test_pathplan.cpp": { + "mode": 420, + "sha256": "6229cc2b1be1ffffb3fbb812c2ccc89dba7099d349be3a6f8f2c2e26aa1dd58d" + }, + "tests/game_sim/CMakeLists.txt": { + "mode": 420, + "sha256": "563547cdd93bce41ef29a73289e5104a5df61f71cc980e49ea37cdbe26743be7" + }, + "tests/game_sim/build_and_run.sh": { + "mode": 493, + "sha256": "a9c42a931242c7f266f512b4d4ad11f6f8ecf43a447a06a04f174301ee19328a" + }, + "tests/game_sim/check.h": { + "mode": 420, + "sha256": "faddddc37a528f0235f510b249cfc1776ce30aff709329954f09093b01231221" + }, + "tests/game_sim/mini_json.h": { + "mode": 420, + "sha256": "710218b637aaf1a5eb7c49eaa7d158bc3e495135ec14bf8b41384769d0227ba5" + }, + "tests/game_sim/smoke_real_save.cpp": { + "mode": 420, + "sha256": "2432e92ac18fadfb1152c54d9dec9a77b3dbf506ea122401cbbd48584b7c9190" + }, + "tests/game_sim/test_colony.cpp": { + "mode": 420, + "sha256": "45355673c46cbaef66b2c81d04a845cf65b6ddfd9819350c7338d9771fafb6fe" + }, + "tests/game_sim/test_construction.cpp": { + "mode": 420, + "sha256": "8df75076a3f460e949e34100d55acf60b054603da6d4aeda4f73297442c06e21" + }, + "tests/game_sim/test_economy.cpp": { + "mode": 420, + "sha256": "43fe658fd2347e3667a901afa642713d70c85ef0ec75094642da2d05b9ca471b" + }, + "tests/game_sim/test_movement.cpp": { + "mode": 420, + "sha256": "1927c371d52115458d88552014cef30bba60e9bef5eb3acfce11b2bc623e06a6" + }, + "tests/game_sim/test_observed.cpp": { + "mode": 420, + "sha256": "1f6ad16c1a2c80f0621573b5196989b0349e47351585d83835be5e27f6ef3fe4" + }, + "tests/game_sim/test_player_turn.cpp": { + "mode": 420, + "sha256": "13f76eaa6cad265deec25416acf0cae2028d6cd1c7b9585df6e9252ba3f0cbed" + }, + "tests/game_sim/test_research.cpp": { + "mode": 420, + "sha256": "3dc668eb889c41f58db6007a96f54fe2a6d56ee6501a298fba3afbbe9637baf6" + }, + "tests/game_sim/test_scriptobjects.cpp": { + "mode": 420, + "sha256": "dfe90a42bcd2844c2ea3666816f97c05237206bf44467ac29790c72b7b498582" + }, + "tests/game_sim/test_techgraph.cpp": { + "mode": 420, + "sha256": "0627ea1c8012b90b62285cae2f31599ba8a8cd47928452910ade91f93502d68e" + }, + "tests/game_sim/test_visibility.cpp": { + "mode": 420, + "sha256": "ad756975b6605a164f2f9106daf2511730642eff354a866bc764a93a4be1efe7" + }, + "tests/mars_parse/.gitignore": { + "mode": 420, + "sha256": "181314065df2f2fdaf920b1a8b5311daa216a2d6489a06ada5b49cc514d89417" + }, + "tests/mars_parse/CMakeLists.txt": { + "mode": 420, + "sha256": "898204fbc1cec44f697e2803c8bc4887857950ba2b1192dd153de74d26de0ea4" + }, + "tests/mars_parse/build_and_run.sh": { + "mode": 493, + "sha256": "550c6df5fffbd85cfffc3312a03a5fa9d59c1e0416e883ddc2576cdb73eac6de" + }, + "tests/mars_parse/canon.cpp": { + "mode": 420, + "sha256": "63e2bcfb2820e7533aa3a287bcec6c318f7238006dce61ad35381562b979cd47" + }, + "tests/mars_parse/canon.h": { + "mode": 420, + "sha256": "c9a78b866d62c4e58643de2c4149572380a1392b411049c8fe74e37475d21d9e" + }, + "tests/mars_parse/oracle/dump.py": { + "mode": 420, + "sha256": "16e98089d5b532e35d6b88b3d50b4bb07e879c18512cf8d06cc5fd2aa9da1117" + }, + "tests/mars_parse/oracle_check.cpp": { + "mode": 420, + "sha256": "5eb81a0c2db8f96c6f8e51246ea9991642e5571dd94dd2e410e2fad632d47adb" + }, + "tests/mars_parse/test_blocks.cpp": { + "mode": 420, + "sha256": "f376a57891a83768ecc8b73ef5eb2333291c280760f7581ead53f7c2a71a4df5" + }, + "tests/mars_parse/test_effect.cpp": { + "mode": 420, + "sha256": "8bb14e7c718e772bfb4a22a7370f41080c49beabfa597ddd603be257bc310011" + }, + "tests/mars_parse/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/mars_parse/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/mars_parse/test_value.cpp": { + "mode": 420, + "sha256": "a8dbe3326e5339cdad8fed7dd678df92e8a8b675d0b854f4cea6517bf557069d" + }, + "tests/mars_stream/CMakeLists.txt": { + "mode": 420, + "sha256": "31c69840e6e2e566d2e0bbaf49ab3dec712d27e505d0810ddf0496ce3ff321e0" + }, + "tests/mars_stream/build_and_run.sh": { + "mode": 493, + "sha256": "3737e42960b66e788a11cdd7fa9917fe255b6a4f60280e9f620593bf688aab41" + }, + "tests/mars_stream/oracle/compare.py": { + "mode": 493, + "sha256": "f39dd70e4bbf1952cf99e3437fd1ed6252249f3455a2d3c73311f98d8ff4370e" + }, + "tests/mars_stream/test_domains.cpp": { + "mode": 420, + "sha256": "08394777f7bc4186883cd02058f17fda8f47c3ee47049892bd8762c28b5aa959" + }, + "tests/mars_stream/test_rng.cpp": { + "mode": 420, + "sha256": "55f77273d8af5880f976a24fb00dcd8042b31a7a33f15c9f4b62fdb85bba9d0a" + }, + "tests/mars_stream/test_save.cpp": { + "mode": 420, + "sha256": "50250bb4b4f2da05f9453c541f080e018b68731f24cbf93278d50ca93ddd8d63" + }, + "tests/mars_stream/test_stream.cpp": { + "mode": 420, + "sha256": "d0da9ac2287910527bdac875ab39e0147a9be2f5535f04b55460438f31be2537" + }, + "tests/mars_stream/test_wire_schema.cpp": { + "mode": 420, + "sha256": "1cfd259f554be8218cb182dd1facc07f6cd3dea52f0daf7303393e78c7c2eb97" + }, + "tests/mars_text/.gitignore": { + "mode": 420, + "sha256": "181314065df2f2fdaf920b1a8b5311daa216a2d6489a06ada5b49cc514d89417" + }, + "tests/mars_text/CMakeLists.txt": { + "mode": 420, + "sha256": "20f8e0cfa044fb4e6b1caca0ec8d6536e012c1c4ea4454fe990923f40a201752" + }, + "tests/mars_text/build_and_run.sh": { + "mode": 493, + "sha256": "59ae392080c01be0c7f5530ecb9ae4fbdcc02366242b27527c14b8efd5076d0c" + }, + "tests/mars_text/dump_json.cpp": { + "mode": 420, + "sha256": "e246384902c3adf4fa8f2a54e38c4912f6b58f168ebc9b1e158a719e2a52b1bc" + }, + "tests/mars_text/oracle/compare.py": { + "mode": 493, + "sha256": "46a796196a413aa28a0069086e45c96399f21308153b578f063801eb997b54ef" + }, + "tests/mars_text/oracle/dump.py": { + "mode": 493, + "sha256": "53fde94f6676a5504a247cf209e2a42d67e108cc9ea0b02f289562799ee7d880" + }, + "tests/mars_text/realdata_test.cpp": { + "mode": 420, + "sha256": "a399ad5cf91cf35f78809f5b9b5cac8b2eff344dbfbab07b8b27bf66058e1e3b" + }, + "tests/mars_text/unit_tests.cpp": { + "mode": 420, + "sha256": "cd1e9e4f6e0e503d4d9b0902bd2936513293490cdc680f94639ce93661ca09d7" + }, + "tests/mars_vfs/CMakeLists.txt": { + "mode": 420, + "sha256": "282015598e03430be0f47b779ce7087662415b3a59de14814cb3ba35c17af363" + }, + "tests/mars_vfs/build_and_run.sh": { + "mode": 493, + "sha256": "b6a8e7b0706d7416f548f071e742e600cab226663f7d4ad42299dbb76f631701" + }, + "tests/mars_vfs/make_fixture.py": { + "mode": 493, + "sha256": "57586249e57550869dd5adfbc4fdab173a59d2aee630ba69c20d562018d249f1" + }, + "tests/mars_vfs/realdata_test.cpp": { + "mode": 420, + "sha256": "c95248ae53d32bd5d8cf963ca3a39ea82e5ef08b76de736104b6aa34ec88c789" + }, + "tests/mars_vfs/test_main.cpp": { + "mode": 420, + "sha256": "cdb7bdf9b9356eb0b7f6cb0fab081cda2161b34af14ecf60cc44970e79d517c2" + }, + "tests/mars_vfs/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/mars_vfs/unit_tests.cpp": { + "mode": 420, + "sha256": "de8da00718799886fbbc5820e0f7d0e468a31ab0608361fb509b0c12932c9caf" + }, + "tests/mars_vfs/vfs_cat.cpp": { + "mode": 420, + "sha256": "4a443e779de264f5c0c68a631b1a353b1310a4e838d342527befd8ad1e2a25bd" + }, + "tests/mars_vfs/zip_builder.h": { + "mode": 420, + "sha256": "a0f3688e5a90b7e209497d66d0dcd30a0e1ac59a56ffcbed31b2a50967c1da3a" + }, + "tests/shim_budget/CMakeLists.txt": { + "mode": 420, + "sha256": "88a0f43e433c3a6879a7f6cccf8c84ba4559009614a3fe5adf6c558ea7a47245" + }, + "tests/shim_budget/unit_tests.cpp": { + "mode": 420, + "sha256": "654e96d0880232d3090223a0d9f92f428aeffa528fbd5eca89d6bfe348aefce0" + }, + "tests/shim_colony/CMakeLists.txt": { + "mode": 420, + "sha256": "d7b2674971b0eda32b2edd62244c32af81cea9e6d984a24ca6648edbaea80e06" + }, + "tests/shim_colony/unit_tests.cpp": { + "mode": 420, + "sha256": "4cc41308c10fa1e6aa047fb6c26e4c655b727884bce87b5a9e8e2f76db665474" + }, + "tests/shim_events/CMakeLists.txt": { + "mode": 420, + "sha256": "2b43190a2ce88cf7227250aa5a3b48e3006d24f0d6f5e9a5e48507c2733e4c45" + }, + "tests/shim_events/unit_tests.cpp": { + "mode": 420, + "sha256": "0dc151a4aecb24217cc38cb818bbe760b3da2b08a23ad734b3fa8506d25fe2b4" + }, + "tests/shim_movement/CMakeLists.txt": { + "mode": 420, + "sha256": "46ffe5a9815b189283e4d5ef67a0dcd159f60da7f9ca4a3577669035fefdc1f8" + }, + "tests/shim_movement/unit_tests.cpp": { + "mode": 420, + "sha256": "ee6ee983aa72f078a7ae398ca5f828aba14370c898ae4e56063697d28919ad69" + }, + "tests/shim_player_turn/CMakeLists.txt": { + "mode": 420, + "sha256": "f6affa205f857d4a45f8be05ae0426b6f9a2e8e127f5aeadbac2ed8a4c4daddc" + }, + "tests/shim_player_turn/unit_tests.cpp": { + "mode": 420, + "sha256": "0a528cdf64904dfd22c94ea911a15213701e7912921f04c1909799e6e6240450" + }, + "tests/shim_rng_ledger/CMakeLists.txt": { + "mode": 420, + "sha256": "b6a349f2611ec1f1de2013145a97f3da59cefec81dbc4d2f3e58af507e598bb4" + }, + "tests/shim_rng_ledger/unit_tests.cpp": { + "mode": 420, + "sha256": "d38d80dd907a3468036dbca2b017718b199ab4a0078eb5e5b019b913a9ef8d8c" + }, + "tests/shim_techfx/CMakeLists.txt": { + "mode": 420, + "sha256": "5eaf9a76df6b10258a8c1d2658b03d97377d48a778a1628ca94c9bd69fa7ba8a" + }, + "tests/shim_techfx/unit_tests.cpp": { + "mode": 420, + "sha256": "99a71a6d0ca1f53fc8ff0bc21e79acd64ba2cd9c9f990641e5970c866794595b" + }, + "tests/shim_trace/CMakeLists.txt": { + "mode": 420, + "sha256": "91bc736e198c5cef86ad2ad69ca77d93ab770e5faecf9e6d915f9263b9ce491b" + }, + "tests/shim_trace/check.h": { + "mode": 420, + "sha256": "f4b72b971886c64383880ba26484f9c908d21f5902dff0de0b42f276b00d8366" + }, + "tests/shim_trace/harness.h": { + "mode": 420, + "sha256": "d7eae563723843c1389b108fe2efb2e31b6c264d23567a370a09fb9b1d513697" + }, + "tests/shim_trace/oracle_emit.py": { + "mode": 420, + "sha256": "29ed06c602e9f0d6430bb3c81192b1946213a3f44b91107f7036f35f17b69f42" + }, + "tests/shim_trace/test_coverage.cpp": { + "mode": 420, + "sha256": "8ed5b6d755fe7e2bc98d525e97bc7817a5efb7ed5f0196d49d1c783de3a91bea" + }, + "tests/shim_trace/test_diff.cpp": { + "mode": 420, + "sha256": "afd8e5124cf6e1ad9c4f3e4c2beeb65d00002cf1d4cbaa2e876fea0817a7a347" + }, + "tests/shim_trace/test_emitter.cpp": { + "mode": 420, + "sha256": "a9255bbc055df36a01931e8a61dd1dbf16085f7713db7e7386f66b69ddb10762" + }, + "tests/shim_trace/test_hook.cpp": { + "mode": 420, + "sha256": "4dd67374e260ba2722219c2e44e6be76e583d0ad65844f34859cff49b66a30cc" + }, + "tests/shim_trace/test_sha256.cpp": { + "mode": 420, + "sha256": "b55aa15dc806e3e4a87ddf50657fa4e0af6a4e4e2205c4bd63d1ae066fe57428" + }, + "third_party/minhook/LICENSE.txt": { + "mode": 420, + "sha256": "d5c2224982b0b95a16b098a561335fa93f3eaf4d0aa964b7843edb986df78dc8" + }, + "third_party/minhook/VENDOR.txt": { + "mode": 420, + "sha256": "c79054234a5340f6199f8d9f47d6b3d88e8abd2120586cd78f081cfb81a6fabd" + }, + "third_party/minhook/include/MinHook.h": { + "mode": 420, + "sha256": "e34bbf7b855c842694f6e3dd78e2d280e99ed9732501e3dc1532a8626a8db8e5" + }, + "third_party/minhook/src/buffer.c": { + "mode": 420, + "sha256": "75a789eb718bd5ed2de039ccd330736a31d0a2d14e43d8e15e6cd2332432482d" + }, + "third_party/minhook/src/buffer.h": { + "mode": 420, + "sha256": "9769702bd625249e59a19ede05c84365fcc7707e1fa0e5df08df42227cee13e3" + }, + "third_party/minhook/src/hde/hde32.c": { + "mode": 420, + "sha256": "0ddbc3ab3e0b37e61691131289a151e34f508233ccf3f701752777e5d3f62d68" + }, + "third_party/minhook/src/hde/hde32.h": { + "mode": 420, + "sha256": "5132de5be8ac7a9d054420f5caef0fb01437faa892f03b3cdc77f795973bf15a" + }, + "third_party/minhook/src/hde/hde64.c": { + "mode": 420, + "sha256": "9bf19dd706d4bc255ebd1709f98fb44899df7a1f2412820d77295136e0620f1d" + }, + "third_party/minhook/src/hde/hde64.h": { + "mode": 420, + "sha256": "e99aa4997bda14b534c614c3d8cb78a72c4aca91a1212c8b03ec605d1d75e36e" + }, + "third_party/minhook/src/hde/pstdint.h": { + "mode": 420, + "sha256": "604d1cdf45c5a95bc9cf1bbf39ca05ef83013541101d34971c5cd7577e3d5247" + }, + "third_party/minhook/src/hde/table32.h": { + "mode": 420, + "sha256": "43bf687a9fff071b5f46070db4d36c846f8e069cdc57485ee897c499aacdde23" + }, + "third_party/minhook/src/hde/table64.h": { + "mode": 420, + "sha256": "b774446d2f110ce954fb0a710f4693c5562ddbd8d56fe84106f2ee80db8b50a2" + }, + "third_party/minhook/src/hook.c": { + "mode": 420, + "sha256": "3060d3c42f03a2f11324cbee95d853071757ed0fe4b1bc9eb5f0d8fc9e346a37" + }, + "third_party/minhook/src/trampoline.c": { + "mode": 420, + "sha256": "d837f8555681c3762468d712c43f2064ed31dee610e0b02965fd8aa54b88172f" + }, + "third_party/minhook/src/trampoline.h": { + "mode": 420, + "sha256": "27426751dde36cdd8346469e61cdcca47950b1056a69f21cc63f4b41743faf6a" + }, + "third_party/miniz/ChangeLog.md": { + "mode": 420, + "sha256": "ff3b6040f7cbd8c9779a0690e906c66408f7efe3cf88a25019323f0189025ec3" + }, + "third_party/miniz/LICENSE": { + "mode": 420, + "sha256": "0115478d567121238cf6cc1c0c361926cf07a49d9e4c9e66da97fac6a01646b3" + }, + "third_party/miniz/miniz.c": { + "mode": 420, + "sha256": "e2c1aeb66eef9191d8c3feb164db2def2335a61d039bf04ed849f6b042433b30" + }, + "third_party/miniz/miniz.h": { + "mode": 420, + "sha256": "b53b62ed122e559b8f679e3cb787a0b0035fe87a58f909da0e44931678f4e85f" + }, + "third_party/miniz/readme.md": { + "mode": 420, + "sha256": "b4ea367be28a36e5386f65118b73962bc659a67936d248be68b7a7c03b8d359b" + }, + "tools/build-shim.sh": { + "mode": 493, + "sha256": "1da3fdcc019dc6495c870a42b93cee9f21ff7f9623f033c2f50d9db9fd6a33e0" + }, + "tools/check_shim_configs.py": { + "mode": 420, + "sha256": "ef5e8f100c06d8c485a165ab668206af3e9aed3e1f6aa6ffec2592419fc2332f" + }, + "tools/clean_room_check.py": { + "mode": 420, + "sha256": "e15bc3ebfd29c6e2d8edfc32cc812858869b49ffa1404cafce14c4c24e0f4e24" + }, + "tools/clean_room_check.sh": { + "mode": 420, + "sha256": "6646eb6010be756113f7af39b9cfcb06e8580893fbd100a41993f87757ccfd6a" + }, + "tools/deploy.ps1": { + "mode": 420, + "sha256": "fe01f46bedc91d7b42ff98cb0e69633845094cc2802108d23d48eb70f32e3f27" + }, + "tools/sync-build.sh": { + "mode": 493, + "sha256": "ce418ace6c5edae8609849233bb5dfd24657f55141c8ef8507659608f12aee2d" + }, + "tools/undeploy.ps1": { + "mode": 420, + "sha256": "5730b6f95f161ba5a727dc0a34f26da7f1f697711495d6a9de9c289ecd747af0" + } + }, + "manifest_sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd", + "path": "/tmp/opencode/sots-final-research-engine" + }, + "re": { + "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", + "files": { + ".gitignore": { + "mode": 420, + "sha256": "ba56b745b84c6d15b7288df65f319831fed3cbf8edd1ab3a6476418f48fd95f8" + }, + "AGENTS.md": { + "mode": 420, + "sha256": "ac21cfb98c6cc2f666c7237967ee71315b4787557e936072548e4e6934a8d9fd" + }, + "CLAUDE.md": { + "mode": 420, + "sha256": "65cc9d5f028959a7d9b53c4828778b27217eb04f37f55b08e6aa3e40afb60a4a" + }, + "README.md": { + "mode": 420, + "sha256": "e318014a84d03e53983cdb1e5b0310f372b959f659b91abc9214faf530544afc" + }, + "campaign/DASHBOARD.md": { + "mode": 420, + "sha256": "c5f72f13d38ad96b5a30131b09c20300743d0d1e15357fd249eac9793759026d" + }, + "campaign/agents/analyst.md": { + "mode": 420, + "sha256": "895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952" + }, + "campaign/agents/implementer.md": { + "mode": 420, + "sha256": "eb5581051a92b3d2b9ddd947812b1c02ff6a0b5e7619e7674adc26701e9a3d91" + }, + "campaign/agents/lab.md": { + "mode": 420, + "sha256": "48f1765ebdcb2015e631ad91428f65735ff899e119134b652f70788ff2eae5b8" + }, + "campaign/agents/lead.md": { + "mode": 420, + "sha256": "8fcfe52be845ed98a172afb47ea888b19bb7bffa80f7b50ace58d2bb66924220" + }, + "campaign/agents/resolver.md": { + "mode": 420, + "sha256": "742c36dc8567669d462566d6121eed42fcff5bff34e8eff466e92249f7ca195f" + }, + "campaign/agents/verifier.md": { + "mode": 420, + "sha256": "e467fc644e4e37d631a7a4e35038d9d3d0498491f1d7811d61d99271ff345c6b" + }, + "campaign/backlog.md": { + "mode": 420, + "sha256": "ee123405f92be97d36d86420707d3d60c67cb4ad50165491bc6e12b8dacf3b6f" + }, + "campaign/board.md": { + "mode": 420, + "sha256": "1c256d6e39063609ba89745d2931ad5005223da89ddbe9fda2d782b88d5acdd2" + }, + "campaign/contract.schema.json": { + "mode": 420, + "sha256": "a2c76ec042ca097a57c3c05c1e519e392d498d387a31808c7d0f70482d43c201" + }, + "campaign/models.json": { + "mode": 420, + "sha256": "00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48" + }, + "campaign/open-questions.md": { + "mode": 420, + "sha256": "bafe95db6591d87a2bd7c67831c34a993afbfd61e9f75357625763dec25fe134" + }, + "findings/.keep.md": { + "mode": 420, + "sha256": "141ed928eaf10a2023dd2c0ff6ea68cf6ec423cfd28d5a359d9c5add730bf64c" + }, + "findings/00-strategy.md": { + "mode": 420, + "sha256": "3bc97827988c6eb4647713c5655271e156dfa466fad5685924010f3244fe6386" + }, + "findings/01-fingerprint.md": { + "mode": 420, + "sha256": "7cf0503c29f5beff852427c2c5bdf8e9d968386de777c47b6130771cac944cac" + }, + "findings/_template.md": { + "mode": 420, + "sha256": "b92d0ca7bfef4498a5f9e594453f15ab15e2c88c7582c4ed5df4c40e6871c3b1" + }, + "findings/control-flow/ai-visit-order-probe.md": { + "mode": 420, + "sha256": "e89f91a33139014ebdc22d79064ecfd06f9b4ffebb4bbc3da73734fc47534047" + }, + "findings/control-flow/alliance-mask-and-modcount.md": { + "mode": 420, + "sha256": "ec66c6b76d9e4c8bed385acf70e6a7d5da08e05eca72ac1e8e5cb307d87f2552" + }, + "findings/control-flow/combat-done-tail.md": { + "mode": 420, + "sha256": "799ace775f12ebe9a2737a711c8d0a6e617f0cefec70b93bf094e47cf81cc348" + }, + "findings/control-flow/combat-resolver.md": { + "mode": 420, + "sha256": "abf1a9329c1bd8a96c76481246a00b380e9a17fa8dc8900810218026e5fe1b9e" + }, + "findings/control-flow/combat-retreat-pipeline.md": { + "mode": 420, + "sha256": "6c40c8bdbdde672c9cd67248d740d88892ad2b93b30e27e9bebe0e96027cf136" + }, + "findings/control-flow/fleet-visit-order-mechanism.md": { + "mode": 420, + "sha256": "a2ea1a6ac9d383380e16910cff89dff0e9b23f1df66f47ef91dd266bd50b3a6d" + }, + "findings/control-flow/gate-indexed-rng-audit.md": { + "mode": 420, + "sha256": "5004b2480787eec7be66f40474648030fdaf7759087a4c4651091152d89351cd" + }, + "findings/control-flow/hive-creation-rng.md": { + "mode": 420, + "sha256": "5ff37d571c0380c798a137e0c6947a0c63109de489fd2100c99bfc6637fc272b" + }, + "findings/control-flow/indirect-edges.md": { + "mode": 420, + "sha256": "3dbf2acf7354f61de66348fe40965f3138dbc4bbff8cb0f06b2751e71ed06ee1" + }, + "findings/control-flow/inlined-draws.md": { + "mode": 420, + "sha256": "3b099718543d7fb112664699749602ff9d61de9aaebb561fc93f1f8b7a152134" + }, + "findings/control-flow/per-history-residue.md": { + "mode": 420, + "sha256": "739c7fc760583ca143036ce554e1eece640d1662fba4642e6f80fadd3dad13f9" + }, + "findings/control-flow/pinned-seed-rich-turn.md": { + "mode": 420, + "sha256": "7c62336767b7c69f513446543f37662ba2a0872e207b906279446bbe399d65b6" + }, + "findings/control-flow/raid-gate-multiplicity.md": { + "mode": 420, + "sha256": "6d7b7357be428ff79186478dc37063657ca4d8e2ad49fcdd92493753748a52f4" + }, + "findings/control-flow/raid-intercept-species-word.md": { + "mode": 420, + "sha256": "1da80eb14f0e3e5a0ce139f62976bb305e3e75a1e5e0631d8287f94eac093d8f" + }, + "findings/control-flow/raid-intercept-z-word.md": { + "mode": 420, + "sha256": "beb421953b70377c8c759f5cc936321faa6316be76d41020b41f26c99706acb3" + }, + "findings/control-flow/raid-target-pick-verdict.md": { + "mode": 420, + "sha256": "d0262a4187e35547b28d6be842e7c730aa3ee93565404b587a790706afabd694" + }, + "findings/control-flow/seed-exposure-forward-test.md": { + "mode": 420, + "sha256": "f108a07ce695b64c482af58db4caeb2607059a3357b62f04f7f36ce45c84ff4a" + }, + "findings/control-flow/standalone-generator-and-turn-record.md": { + "mode": 420, + "sha256": "e499f62534580f27c2a01395e08312ebc7df13bdd307342096f468212aec600b" + }, + "findings/control-flow/standalone-scaffold.md": { + "mode": 420, + "sha256": "0bf928260d5058815a2f09c4df8c08eb359430aeea941f872018de7cbca39105" + }, + "findings/control-flow/tail-probes.md": { + "mode": 420, + "sha256": "ae45e84a9c7f257170f7550301fc4e1a35d5210269bda8070469a5c921cce95e" + }, + "findings/control-flow/tail-rng-ledger.md": { + "mode": 420, + "sha256": "2db588423e7b7de7729e5319477c17fbcea5b7a9cb8ff00b01cfd72bfce25403" + }, + "findings/control-flow/trade-raid-rng-gate.md": { + "mode": 420, + "sha256": "85c7b27aa284988b07b5e67c8e48ef1725289f1a6956d88be2572577cc06e1bf" + }, + "findings/control-flow/turn-driver.md": { + "mode": 420, + "sha256": "3f4e92041a0842d211ea9ae1ae16a9fe400dacf9632209102a1f76acc6b30792" + }, + "findings/control-flow/turn-spine.md": { + "mode": 420, + "sha256": "e2a64f82e5dececb4ba56859d1e53a0f720e08472c79c39197beba7f6041811b" + }, + "findings/control-flow/w3-containers-status-handlers.md": { + "mode": 420, + "sha256": "fffbaa6e3701abbe57a54046416a102502afeaa29b14632f9506905c22bf3914" + }, + "findings/control-flow/watchpoints-modcount-status.md": { + "mode": 420, + "sha256": "0aec4c93ca7219e29827a5069a9829d5e58da2001e79a7316bce288d3e9a6c7d" + }, + "findings/objects/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "findings/objects/00-inventory.md": { + "mode": 420, + "sha256": "cada5fc81c42cb50878a26e43a58640153c600319e66d4c92a23d7c363ff5f14" + }, + "findings/objects/aiagent-block.md": { + "mode": 420, + "sha256": "55d646ab57e90477993d263399254a3b103024d89fff42491b7df5cf4ffc8037" + }, + "findings/objects/classes-game.txt": { + "mode": 420, + "sha256": "e0eceb77c56e05bc7863d3a07805d703fc0ecec489ef24fabe7c6161f2835199" + }, + "findings/objects/classes-mars.txt": { + "mode": 420, + "sha256": "b624f7bd82a5277462a39627140a85c7a7929fd292b62e45edb5c96fd53b6145" + }, + "findings/objects/ghidra-recon.md": { + "mode": 420, + "sha256": "ca4b043a73c1d5573aa0c83cd3942db731884910c90e7d8544c8a32c939e2fda" + }, + "findings/objects/rtti-raw.txt": { + "mode": 420, + "sha256": "39f6fdf8793f8202c19cfb87a75466b215254a13050ec37c0c496699298247ad" + }, + "findings/objects/save-editor-structs.md": { + "mode": 420, + "sha256": "835d4fbf154275542383ea499a527c044ec7d577486c2735b817bd32d6e0c853" + }, + "findings/objects/schema-gaps-resolved.md": { + "mode": 420, + "sha256": "9ddae36eb8e3ef909c4902d01200fc8a17335271e4e063939ae162a3eea5bb3a" + }, + "findings/objects/serializable-types.txt": { + "mode": 420, + "sha256": "59c2f3942f55eb3f6687758a4c447b1ed8902caa60b97d9619bb8228e27c6838" + }, + "findings/objects/serializer-struct-recovery.md": { + "mode": 420, + "sha256": "5b56d8e1a5047d602cea7a76227f30e17244057fe21fde3d4e2cc76e9f185416" + }, + "findings/objects/ship-design-catalogue.md": { + "mode": 420, + "sha256": "feded2191180e184d34d4992935dc117bff8d052e8a2c63ecc29fa7b2e6b561d" + }, + "findings/objects/struct-recovery.md": { + "mode": 420, + "sha256": "4e99ef972529101f5700b52845e263fb3789e0b82d8cdeca921f1595a24d92db" + }, + "findings/objects/svsctob-variants.md": { + "mode": 420, + "sha256": "89617cd2909f2242e9e1657fd4a8f5aafe5aa0c1e0e9bc8926fb67c1e830dd2d" + }, + "findings/objects/svsctob-writers.md": { + "mode": 420, + "sha256": "7a9b7f3bf4eae63cf522246227410b2e3ca789284b7c620f01550fadf479622c" + }, + "findings/objects/turncommands-block.md": { + "mode": 420, + "sha256": "8eca2b79838114e7ae46d34c6e75eaf3b04c0448d9896ed4219b118f09e83046" + }, + "findings/objects/wire-schema-channel.md": { + "mode": 420, + "sha256": "31f0fc4e1cc3c3e7ef938aa22ad65cfdec32be4f1ade476a7ebf32c3c6f07d6f" + }, + "findings/objects/wire-schema-closeout.md": { + "mode": 420, + "sha256": "bbae848b4f8d6d0f2a914268ac34e75b4cea483f52816916202f3bd3cd084255" + }, + "findings/objects/wire-schema-ratchet-debt.md": { + "mode": 420, + "sha256": "0d144181478a607f2474a7c8a1b71ca49c881ef6fd068b5e8859c3fa8129507a" + }, + "findings/resolutions/2026-09-08-ai-seed-per-process.md": { + "mode": 420, + "sha256": "0765bdaeade29122ab5e64493f3a7c339f1e4c4445192ed09ae3d229dd6ae943" + }, + "findings/resolutions/2026-09-09-fleet-id-order-residue.md": { + "mode": 420, + "sha256": "b3d63a11e8ebd55da4af15760d044607b6105216898a018f5ceebc94750817e8" + }, + "findings/resolutions/2026-09-09-seed-exposure-is-a-predicate.md": { + "mode": 420, + "sha256": "dd7ce18738a625b9008ef80783bd64fc3857852775ab3b784b9e5f4fd5ae7de1" + }, + "findings/resolutions/2026-09-09-tail-draws.md": { + "mode": 420, + "sha256": "ff86a332ea9f87bd6f42a0b64e837e6f6f5876423ae9403a903aa9bfe7c42678" + }, + "findings/subsystems/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "findings/subsystems/ai-client-seed-is-per-process.md": { + "mode": 420, + "sha256": "5e6de0418588ff28cee29cb9affd69c3183819318c314eeb0771bbe810e6b4ed" + }, + "findings/subsystems/ai-order-capture.md": { + "mode": 420, + "sha256": "6efebf9f00b375d2c7f29ddeb24ef7a04e3b02cac9027369b490157a196d08ce" + }, + "findings/subsystems/ai-order-emission.md": { + "mode": 420, + "sha256": "9e54a13a18387a4f93acc5c66dbf71d365c81f1a8e6d2aee31f7a89712894ace" + }, + "findings/subsystems/ai-stepping-and-passes.md": { + "mode": 420, + "sha256": "e7e2fc612457a4e77df362aea2928d20fa5a2456fe12a7fbafeaf3c9e01c1dc1" + }, + "findings/subsystems/ai-task-system.md": { + "mode": 420, + "sha256": "577f8fc41256ebdf9629f1e30df9aac7f51c1a84b55f60c2b59e4af4c55126b2" + }, + "findings/subsystems/ai-turn-logic.md": { + "mode": 420, + "sha256": "79e9b7c9592d583db7b9d9ce472804038a71febf7527bd69e31b3399caeb0770" + }, + "findings/subsystems/battle-load-profile.md": { + "mode": 420, + "sha256": "3cf8e28925ebbb162bca9c3be9e6b2599c82ab6aaf9a9d99ffd9c934bf773c77" + }, + "findings/subsystems/data-model.md": { + "mode": 420, + "sha256": "f01c9bfcf8ed9fbf9fdd30556308a1dbb1094896050cc8a5e4fbc1c6c61aff78" + }, + "findings/subsystems/data-parsers.md": { + "mode": 420, + "sha256": "6a428c14279ac2c589b4af932e762ef7e3ada1a878128527b8d88858c11fbc35" + }, + "findings/subsystems/determinism-oracle.md": { + "mode": 420, + "sha256": "4fe0abad0b1b825392cd47b792d06756742495f26ff40a6a433d8608b4680bcb" + }, + "findings/subsystems/eventlive-verification.md": { + "mode": 420, + "sha256": "8bfcc75e57ddf88ec8a4b8885f033be8ffd420965077ab284b1ebce535ecf1a0" + }, + "findings/subsystems/events.md": { + "mode": 420, + "sha256": "c5d6e168d6d48eabec0ae0a448f9c3ec8d0f751a67fc320bc1021ba10008a3bf" + }, + "findings/subsystems/formula-gaps.md": { + "mode": 420, + "sha256": "63ec96a27fac5381d33cdce3e549d230bd5b0230e4d8573f4f3d45bab7d47ffc" + }, + "findings/subsystems/fpu-precision-sensitivity.md": { + "mode": 420, + "sha256": "4cf84e2a1c3d0eaaf9b3a7f218ad663ffa6984389b2a25851249733ad708ff8f" + }, + "findings/subsystems/golden-trace-recapture.md": { + "mode": 420, + "sha256": "b244f939b87dd464d78d919675c0e6aa010b0ec7b4fc6e4178e26c2c8ebee738" + }, + "findings/subsystems/id-allocation.md": { + "mode": 420, + "sha256": "b04a14a5a7d4d1c6137c4f9072987eebc997421e550881dcc2c8e386187f5b90" + }, + "findings/subsystems/income-term.md": { + "mode": 420, + "sha256": "c40286635675a91ce779b887a0394e92f946844873a778015efb98c4a105b67e" + }, + "findings/subsystems/loader-prototypes.md": { + "mode": 420, + "sha256": "f1d09471d5e17c45413b86805f561329f5af24eadfb17c3c740686c39b167ed6" + }, + "findings/subsystems/money-chain-float-widths.md": { + "mode": 420, + "sha256": "99bded6f2d34a713bc175deb4ad5ab4559ce1cc90274b036c1818ad8257c2fef" + }, + "findings/subsystems/movefleet-position-rounding.md": { + "mode": 420, + "sha256": "12dbdc03658cb042b5927586769dc9c19fc2eb812f703e73bf26273f8b0d65a6" + }, + "findings/subsystems/multiplayer-combat.md": { + "mode": 420, + "sha256": "2f4957011b5c5875b8aa7f71531dd5dfe3fd8df4f2c67a7be2fb5999f090c02b" + }, + "findings/subsystems/multiplayer-gamespy.md": { + "mode": 420, + "sha256": "a878e97775d27e085e58b18eaf5a67aaa522456d1055ca142f0477e3d6152d47" + }, + "findings/subsystems/multiplayer-tier0-verified.md": { + "mode": 420, + "sha256": "942ce29cbe22d8f7de5af54f2017c0433c7b8e1a56c864868ec906ffcbb9059a" + }, + "findings/subsystems/nav-classifier-live.md": { + "mode": 420, + "sha256": "b8aacdea8072a99ba1192e235088b372180f094795baf164e8cb95bd2df9f3b0" + }, + "findings/subsystems/nvo-tshn-visible-owner.md": { + "mode": 420, + "sha256": "ef96bb61769c02affd7148cd95e70bf358cbe6263fbe9b47aba6cf4cfa8486ad" + }, + "findings/subsystems/observedtech-append.md": { + "mode": 420, + "sha256": "61efcf51bffe53b8a10a2cdb8123db3f8c55b6874db87418fc31737efedaa652" + }, + "findings/subsystems/output-term.md": { + "mode": 420, + "sha256": "9eb9ff58a1d4cf34d3138f5044788b6f87ff4c94fa871b2dedd6ff6667196533" + }, + "findings/subsystems/output-turn-path.md": { + "mode": 420, + "sha256": "4e199e5cc14802c1b14b37cff0c1359b43aca94dab833f9024c7825c4c512588" + }, + "findings/subsystems/path-solver.md": { + "mode": 420, + "sha256": "3e0e318d45e14f844831c4180e47011263f64067dacf3249742882186d65cf18" + }, + "findings/subsystems/players-residual.md": { + "mode": 420, + "sha256": "e2f56c7983856470d37cd0fba4834a0ccb34dcaddbaf9acaf5dcdc253c6b3507" + }, + "findings/subsystems/population-growth.md": { + "mode": 420, + "sha256": "c2ec2f062e1224045b761640549e7374336ac762bd61c686a0c1378ad829a993" + }, + "findings/subsystems/rcex-explained.md": { + "mode": 420, + "sha256": "df7c9de6f02c1bd38f69e3a5344ec663d97b1d6b738ff408dfdeb0e2f6175b32" + }, + "findings/subsystems/relabel-new-ids.md": { + "mode": 420, + "sha256": "562ffe347adc6432a7824bfa2b324b6b1812b4fcc18343f0732c0f3d9991be20" + }, + "findings/subsystems/research-replace.md": { + "mode": 420, + "sha256": "d0f692cf687a7fe6aab62fc5d7d076eb595e1c33fd84c6f1e437ed01025cab4b" + }, + "findings/subsystems/roll-parity.md": { + "mode": 420, + "sha256": "7d97d7e5eee7b9f135e32b6553bb94ca83fd05b1eca7d18c42e9d65cae4d95d1" + }, + "findings/subsystems/rung-b-rich-turn.md": { + "mode": 420, + "sha256": "44378c6a305a82b2d131270fa5d97fdcd8a7fd5c9760ecbad7715383eac2db68" + }, + "findings/subsystems/running-the-game.md": { + "mode": 420, + "sha256": "f6109f69c6b86e4cf01d0f2e1f8be9921ff632513bca5d9e44e7f6c34f1cd260" + }, + "findings/subsystems/setresearched-cascade.md": { + "mode": 420, + "sha256": "9c079de161a1d1387339b8e8081395c1356c1443a0c898942acfb6efb65a454f" + }, + "findings/subsystems/ship-construction.md": { + "mode": 420, + "sha256": "86f570b1872c8dfac3982d1d7335f4798ccbd1bfd73c91d481afba2734c41216" + }, + "findings/subsystems/ship-design-composer.md": { + "mode": 420, + "sha256": "639b276e9205aaf6c90d9c458a383cc073e89f401ef8f17f8ad5a8a0c5899fa8" + }, + "findings/subsystems/snlv-measured.md": { + "mode": 420, + "sha256": "785324d176be969e1809090acd6b7a48d27f4fa41472c0d9c6f568c0b3a1e539" + }, + "findings/subsystems/spy-detection-roll.md": { + "mode": 420, + "sha256": "214179f5091408ef01ce4b80565068cb9a0885d1c6a233cda476280b9bf29c0a" + }, + "findings/subsystems/spy-program-draws.md": { + "mode": 420, + "sha256": "0c61c2f9cc767ae679921bfc42ef9a207ec9a6e0dc88419a673a8e439f1abfc1" + }, + "findings/subsystems/strategic-turn-internals.md": { + "mode": 420, + "sha256": "3a5c17e025d4968db6030f8ef1daaa2b03ccd4def12d35cf3a0eabcb0b5cbb54" + }, + "findings/subsystems/strings-and-config.md": { + "mode": 420, + "sha256": "67aefda7792e329b7df3f6e8cf42c7bae7049867cdda0741e871b183bc528786" + }, + "findings/subsystems/system-visibility-prediction.md": { + "mode": 420, + "sha256": "b420526ca0410bd4578dd2ed29cd9a21ed3578d6345d9f853a883e0159c1f89c" + }, + "findings/subsystems/system-visibility-record.md": { + "mode": 420, + "sha256": "d2843e10c156a7c85d7dab40d00204475fc725dc9b93656f6cde941ceceb5f51" + }, + "findings/subsystems/t34-observed-designs.md": { + "mode": 420, + "sha256": "207641821a55f5671749b000d478afd9e427336e2d123a55ad2203f34dfaa796" + }, + "findings/subsystems/tech-effects.md": { + "mode": 420, + "sha256": "7423f1e2cb2a597738b244d58bdf467431ee5de725ac434b904676ddcbcfc609" + }, + "findings/subsystems/techid-name-map.md": { + "mode": 420, + "sha256": "cfd92a7885dad3775465fc0c5b40aeb1749499f90071b44855ab8e1746d5f752" + }, + "findings/subsystems/trade-and-spy-workload.md": { + "mode": 420, + "sha256": "147057456fa30b6218df19679abab1ac31b78276a4272d221b70776e154396ba" + }, + "findings/subsystems/treaty-turn-stamp.md": { + "mode": 420, + "sha256": "fa0a8588847cc2b9e92cddeca65fd00fe3d84a00a1034d9354053c7e6cd9ceb5" + }, + "findings/subsystems/turn-command-replay.md": { + "mode": 420, + "sha256": "b65fa3c3c01c67bc16ec488e4a44e6c748256e941c80987528b7602038a56e07" + }, + "findings/subsystems/turn1-to-turn2-nondeterminism.md": { + "mode": 420, + "sha256": "9ebe834fa0f7c1cf864032ec67da76730ed6c239d6bd3a717f147490116acc4d" + }, + "findings/subsystems/turncommands-capture.md": { + "mode": 420, + "sha256": "a57fd2a77784fef1b176749878b161c4f04ac77c1f4a061a6b713787d92fb9ef" + }, + "findings/subsystems/ui-screen-map.md": { + "mode": 420, + "sha256": "d266285e3ca99ba3b5ebbab47c78f3df247a8b539c0519c6fd27a999b9d6f84b" + }, + "findings/subsystems/unlock-cascade.md": { + "mode": 420, + "sha256": "38d29a9484aa3910f5a62b5dd08225ba590bf26901203c5aef1b0b466fbbc5fb" + }, + "findings/subsystems/value-domain-census.md": { + "mode": 420, + "sha256": "bc99139708aee5da4cafec585fc35ab3523b51571518038db19b5f1383c6a6c4" + }, + "findings/subsystems/writer-byte-exact.md": { + "mode": 420, + "sha256": "a0e91a90d2ae78328dbaef30b37d53037cab26489e4729413bcfebbafcab0978" + }, + "ghidra/addresses.d/README.md": { + "mode": 420, + "sha256": "cf2745d5d3e504725ae5a296dc20e3d63b8d32a903445aafe2af61828a6d59c5" + }, + "ghidra/addresses.d/ag.json": { + "mode": 420, + "sha256": "24d5b11779364cf198008b143c7a3a092117ec4a1530c489497dbc8acdf62d8e" + }, + "ghidra/addresses.d/ap.json": { + "mode": 420, + "sha256": "e37f478836eb297f9cc5186cd7df3f5942abc4b6396a4d2866e613841437f778" + }, + "ghidra/addresses.d/ar.json": { + "mode": 420, + "sha256": "8d8620be8dd807a610ff63c0d77cbf266f3d9ce272158991d1f55d9c9910c248" + }, + "ghidra/addresses.d/as.json": { + "mode": 420, + "sha256": "08a869ab9466d4b575363cfb6fc084ca72cdc05d509c5d87e658a9a9977a7ae9" + }, + "ghidra/addresses.d/az.json": { + "mode": 420, + "sha256": "60b9a169605ac171cffb848024141c9224f6897bf69b547b9a4f2b5ddfc8d835" + }, + "ghidra/addresses.d/bu.json": { + "mode": 420, + "sha256": "79037146ba621e43e561bcf0577afc25b2ffac4ced44c902d2ea8ed9171b1bb9" + }, + "ghidra/addresses.d/cz.json": { + "mode": 420, + "sha256": "35de20ff0e38d05b5c58c89690dfc81ce44eb280a2a594ae862e55d56edb5d3c" + }, + "ghidra/addresses.d/dn.json": { + "mode": 420, + "sha256": "c41f877a37bc864f8f315a47b720ac204c22c25de405f4de63b845180641eba0" + }, + "ghidra/addresses.d/dt.json": { + "mode": 420, + "sha256": "580762e01175fb7246d0f9214e4ed9ba16bebcdb82ad1525fd1f77c0910c660f" + }, + "ghidra/addresses.d/lane-a.json": { + "mode": 420, + "sha256": "fce5f06866bddc6bca095d53e376495103dfd8900ad7da0d0d6731f105915d71" + }, + "ghidra/addresses.d/lane-a2.json": { + "mode": 420, + "sha256": "1207088eb2ae041afc2618a627029e25f578ae9fe8db73bb9efb616f39c34bf0" + }, + "ghidra/addresses.d/lane-ac.json": { + "mode": 420, + "sha256": "02a1c2f01ca0d11a7c38d416d94fabaea64b5c5919f6ceaead83430fb398710e" + }, + "ghidra/addresses.d/lane-ai1.json": { + "mode": 420, + "sha256": "134a0cb87b95bf5f39ed015bcdf64c6e8da6b22e073d5b5487148cb5421addff" + }, + "ghidra/addresses.d/lane-ai2.json": { + "mode": 420, + "sha256": "e9d94ce026231d420538400fa9c73fa8a2fa882d16f542c6b8ce2c34014acda6" + }, + "ghidra/addresses.d/lane-ai3.json": { + "mode": 420, + "sha256": "89c29e1bbb1159b7b6fb4fc8c232902f8497efc82290aba6f50c9c9097feec6a" + }, + "ghidra/addresses.d/lane-ai4.json": { + "mode": 420, + "sha256": "78b7897d3d2678ddbff7cd982bfa7d93a0c26817846a148fd3f46790fef9d7fb" + }, + "ghidra/addresses.d/lane-b5.json": { + "mode": 420, + "sha256": "641c724d1fbf28f5469aac488401ea2f92bdd3b929fbf053ddeef0ba5b8de9da" + }, + "ghidra/addresses.d/lane-b6.json": { + "mode": 420, + "sha256": "b2b2833220e3a645efab2b767f1d93d1215a54d195e28e6743db8f1d89934697" + }, + "ghidra/addresses.d/lane-c3.json": { + "mode": 420, + "sha256": "b732932503c181c77bb14ba0136379c8fa3501d0c1471b02d9bca7d023bb5f5a" + }, + "ghidra/addresses.d/lane-d2.json": { + "mode": 420, + "sha256": "8b5df39fb5eea0cd40dffc20aaccabe169f5472171dfd242ca2e75dfc4ca608c" + }, + "ghidra/addresses.d/lane-e1.json": { + "mode": 420, + "sha256": "cb38b41b747bf74ee73fb7eaa301da4bb896d089fa1dea4197382e94940c7f69" + }, + "ghidra/addresses.d/lane-e3.json": { + "mode": 420, + "sha256": "a5fe9dbb37ee587bf36a311771bbc9d8dcaa4d4fcc0b420b8f45829929b0ff98" + }, + "ghidra/addresses.d/lane-ev.json": { + "mode": 420, + "sha256": "b243d31bcd69bfb1e5928ba8b70e958e559c88ee5190ca34e569f217a784798c" + }, + "ghidra/addresses.d/lane-g2.json": { + "mode": 420, + "sha256": "84401f05c5cf2ca0839e817877892e904b3fd2fd4175607abc34453acd8ce822" + }, + "ghidra/addresses.d/lane-g3.json": { + "mode": 420, + "sha256": "d176eb4a07bb6b98acea77e1a0a9904d317a594768ecf8719bbfacbdf6522729" + }, + "ghidra/addresses.d/lane-h.json": { + "mode": 420, + "sha256": "e8cffe89c7feb1d9fa1949f33aff01edc7b84b49ab752275662f6f613c16c0b6" + }, + "ghidra/addresses.d/lane-i.json": { + "mode": 420, + "sha256": "a4c482ff6fee78e96da3400b9ba7d76b58634a5933ff388db5993a1b105c8aca" + }, + "ghidra/addresses.d/lane-id.json": { + "mode": 420, + "sha256": "3f48c9b2e2c3a08e13a856bfb78d551af17f5a1a1079f03f8edbf4615f17ca7d" + }, + "ghidra/addresses.d/lane-j.json": { + "mode": 420, + "sha256": "4fd95b08fee60a2748995cb082fe50d61e7179ae90b106f230bfc5c55a35660d" + }, + "ghidra/addresses.d/lane-k.json": { + "mode": 420, + "sha256": "f6ead3ff256fd2e1408d52bfa28e308f106ad672b3fe1cce0d136faac351136e" + }, + "ghidra/addresses.d/lane-l1.json": { + "mode": 420, + "sha256": "ecbab4a1b602beefd6889effc4883b7f7de01afabb7c5c071bbc4e2237e9131b" + }, + "ghidra/addresses.d/lane-l3.json": { + "mode": 420, + "sha256": "eabb96253bee36c799f1eb89108e284162606cfdc5e9bd29dbf7b5f88ee88adf" + }, + "ghidra/addresses.d/lane-l4.json": { + "mode": 420, + "sha256": "5b2b54d2f3e123e352e9a2b0f1d80fc8afcdd0b97916a94ee5a62ddc03b0ae75" + }, + "ghidra/addresses.d/lane-l5.json": { + "mode": 420, + "sha256": "cedc4869149212d401c519c46fa3f02769f9c939fc560fe8d35cc4f898091482" + }, + "ghidra/addresses.d/lane-n.json": { + "mode": 420, + "sha256": "6987efa430f2da8987e42e61e53113f914cb00e3e52a7c679565e7faf5160c82" + }, + "ghidra/addresses.d/lane-o.json": { + "mode": 420, + "sha256": "7fcf357f25ccdf061b6bc688339e2006f830c551718b6419a0a9d0ac968bb555" + }, + "ghidra/addresses.d/lane-p2.json": { + "mode": 420, + "sha256": "7eaa63d64a0054ef88f323f58b31fca07bd2372dc21560b4bda64eb13d869792" + }, + "ghidra/addresses.d/lane-par.json": { + "mode": 420, + "sha256": "3836b786aec28feb028271d05f368d7c332b8930b51cfdceb36540133a3d3237" + }, + "ghidra/addresses.d/lane-pl.json": { + "mode": 420, + "sha256": "f29953d17effbb7d8256687833023d4656522e74c40bf1ea646d3b35da3635d7" + }, + "ghidra/addresses.d/lane-q.json": { + "mode": 420, + "sha256": "6f98496ffc288fb30c3a7347a7e5252b296f2345afd1bf678f98a2c934b8935a" + }, + "ghidra/addresses.d/lane-rb.json": { + "mode": 420, + "sha256": "bff95b9452e0efb63e74f741682c8d1843abfe3e722143cf01cf092aa894d75d" + }, + "ghidra/addresses.d/lane-sd.json": { + "mode": 420, + "sha256": "d3239b619cbef5cddc9c7bde6525301a99a6423f8a0e42c1ea53b9ae269c6da9" + }, + "ghidra/addresses.d/lane-sv.json": { + "mode": 420, + "sha256": "f574d8b4dc75da722870c74eb29cd56c75e04dd0ac384b4549fc95d425e3de3a" + }, + "ghidra/addresses.d/lane-t.json": { + "mode": 420, + "sha256": "70975f3c1dea55ceb11af12b9ba3a04e8f7bba2e25f1355ffcd3cd457c41545c" + }, + "ghidra/addresses.d/lane-t2.json": { + "mode": 420, + "sha256": "1e3c59089b769cc5f5d3cf16c33cb6db002966f5beb1a4fb9dd8e28fe54cd6a7" + }, + "ghidra/addresses.d/lane-u.json": { + "mode": 420, + "sha256": "bcccb6ec9257537eece135adbfd126904ca0becf14f9b5d17253adf5d8c9e8fe" + }, + "ghidra/addresses.d/lane-v2.json": { + "mode": 420, + "sha256": "6a4d4960ce99c05b928164159eaf4482bf763785a1f8c50efe133667886d9a54" + }, + "ghidra/addresses.d/lane-w.json": { + "mode": 420, + "sha256": "3971d65c772146534f5d8c350f2d203add70ac82801f57f3704c47cd59b51226" + }, + "ghidra/addresses.d/lane-w2.json": { + "mode": 420, + "sha256": "677648e94de8e1e0d538c9575c9be942d0b37c1a847effcb3c2312af5b6aa7d9" + }, + "ghidra/addresses.d/lane-w3.json": { + "mode": 420, + "sha256": "50ed8ed1b16288b00bac4df0886646dbf9d6d6392867029b4eac386806b41b51" + }, + "ghidra/addresses.d/lane-z.json": { + "mode": 420, + "sha256": "bc63a82f2d0cb7636e95f8a07f183f80817a4c65d2bb7263a047ec3c540512eb" + }, + "ghidra/addresses.json": { + "mode": 420, + "sha256": "865c02d88ac6ede656160a5ab20521ad8854efa381d5a943ab422216aca2c016" + }, + "ghidra/generated/sots_addresses.h": { + "mode": 420, + "sha256": "1cf6b4ab40d3cde306edee12ba4eb05292b98ddcf5c2b7c22c1c64b6075b1bdf" + }, + "ghidra/scripts/FixPlayer.java": { + "mode": 420, + "sha256": "9f9ea470af063339511b1f1c85d6dea2df0827c4fed5806c6f641b1aad3e5660" + }, + "ghidra/scripts/FixThis.java": { + "mode": 420, + "sha256": "aafeeb482f71d1bdcbc99a51fb3f21989a46fbb49b5a572f3d9e436c9b3b98b4" + }, + "ghidra/scripts/LoaderRecon.java": { + "mode": 420, + "sha256": "1275d460227e0098254885fe70666d618da7215bca99483a5475c1e701ab9b27" + }, + "ghidra/scripts/LoaderWriteBack.java": { + "mode": 420, + "sha256": "d1040cb9ee80f0fe4d2310d95b38d7d94b0972283f74ea6058de0bdb9e510e63" + }, + "ghidra/scripts/SpineRecon.java": { + "mode": 420, + "sha256": "bea798733cf60f9478373cc453692104058b643ba5b7fc68e76945ae6f496950" + }, + "ghidra/scripts/SpineRecon2.java": { + "mode": 420, + "sha256": "94f10ac953091d50187a46b74803abb4812b244356f9336fa8e133a8a6cba0c6" + }, + "ghidra/scripts/SpineRecon3.java": { + "mode": 420, + "sha256": "b2344ab3d7195cfb935505ba1949f3d4862f787ccb95b812cef3856f92c94ffc" + }, + "ghidra/scripts/SpineRecon4.java": { + "mode": 420, + "sha256": "1093ee635be94f0c0bb31b5bd79f030faa0d7cbab96a495426363172cbcd1d66" + }, + "ghidra/scripts/TechFx.java": { + "mode": 420, + "sha256": "bfa8e990d65ad7cb2b665ee284ec2d645395e0fb3794ea146b175e2937a159ad" + }, + "ghidra/scripts/TechFx2.java": { + "mode": 420, + "sha256": "ee7040ed3316f2e717bac207c3e8ba9bf5ecb560f9e2b38335582c4ca6bae5a8" + }, + "ghidra/scripts/TechFx3.java": { + "mode": 420, + "sha256": "b672751160abcfee37d16eb2f107a60420b7d6956c312fe93e9f62578c06b96a" + }, + "ghidra/scripts/TechFx4.java": { + "mode": 420, + "sha256": "ef912e86f802452f33c20a1adb87eeb96f0ec893e26ee4bbd02305ba0c5e46c7" + }, + "ghidra/scripts/WriteBack.java": { + "mode": 420, + "sha256": "e002a5b86bc58cf75ef8d08dbaeb84bdf3306c1e8d49e92c0382f8ed858c57ac" + }, + "ghidra/vtable-owners.json": { + "mode": 420, + "sha256": "8ee89f3b43f56283a6ffcc605394a1ab246f8071370a9db8f1e770942a5a82a3" + }, + "guides/lab-screen-wall.md": { + "mode": 420, + "sha256": "d398b47853013dbce63b4af2f2ec680c39775732b9fbba13f5fc42a46628550f" + }, + "guides/method-rules.md": { + "mode": 420, + "sha256": "a71a8415202fe97ccaee3805bf4035684776c37f5613dc39a1f260aa33f94b69" + }, + "guides/multi-agent-workflow.md": { + "mode": 420, + "sha256": "116ccaa9be9523852d02ee7c78c7f1d587c1ed6270789afca42e687ea826af5b" + }, + "guides/re-windows-2000s-howto.md": { + "mode": 420, + "sha256": "3490650440d6e683cb029915b8c2cace914b1f52538c9db89175ad4547db2901" + }, + "guides/windows-lab-housekeeping.md": { + "mode": 420, + "sha256": "4a9e9d66dd76e6b5ee1951686186190c650a617fa812fa4bd236ef02b783939a" + }, + "notes/.keep.md": { + "mode": 420, + "sha256": "7878c159a1b9636974e9093902027a24bf7b3c7520f13a8d96f930bd10d22f1c" + }, + "objects/generated/sots_stream_schema.h": { + "mode": 420, + "sha256": "13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c" + }, + "objects/layouts.h": { + "mode": 420, + "sha256": "24586f7f1c25530691193a919c6335ab1784fa2815b222326409cfe9e2a42981" + }, + "objects/layouts.json": { + "mode": 420, + "sha256": "16bfffa5020d98c12af61c72a48da8f2c5e06d1060358802717e585a49b150b2" + }, + "objects/layouts.md": { + "mode": 420, + "sha256": "83bc29fcd379847f9ebd6732edf9748c1c878052e889615928659307f97a148c" + }, + "objects/streams.json": { + "mode": 420, + "sha256": "60993eda14d0b1056578718d43a3b6d89816e12c4f5a00674806aeef9e81baf7" + }, + "opencode.json": { + "mode": 420, + "sha256": "027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99" + }, + "scripts/.keep.md": { + "mode": 420, + "sha256": "b0cdcee8cfdc1b15ee444520b6b01c747399deea6d92ff2576ca6eb57331bbac" + }, + "scripts/forgejo_campaign.py": null, + "scripts/lane_v2_writeback.py": { + "mode": 420, + "sha256": "69a66058adb04926eeb6f0e81fa8f0392ce06de2e8d8eb61ebcf503bab6311da" + }, + "tools/DASHBOARD_README.md": { + "mode": 420, + "sha256": "f401cc54f64a4862a938263f37eaab22e6475e063e59726e02dce201f657dcc4" + }, + "tools/aiorders_to_tcb.py": { + "mode": 420, + "sha256": "9762d1fd45f3ab7c045088e222c5386a2cc63a6b25e1c09a49cbbd71837bfe17" + }, + "tools/cache_functions.py": { + "mode": 420, + "sha256": "18c037e48ab035764b0c877123ea7c998ef74240c63090e4f58142f57835e0b1" + }, + "tools/campaign.py": { + "mode": 420, + "sha256": "a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123" + }, + "tools/check_agent_config.py": { + "mode": 420, + "sha256": "8cb42d8de9cc441b547a00aecc7bfbc3619667121b30e150fec9e6c94683beb0" + }, + "tools/dashboard.py": { + "mode": 420, + "sha256": "c84aeeea6fb7d5e45ccec8882bacc59182149f108edd9eb1585eab9ede99911c" + }, + "tools/displacement.py": null, + "tools/evidence.py": { + "mode": 420, + "sha256": "0a7f8497ed287b4b64aa5ba0cb25735172408e38f3605b3ff90f009c7f02eb85" + }, + "tools/gate.py": { + "mode": 420, + "sha256": "4df5ee7022fb2601687f06eab788e2cea1e345e580c4e92c9d47be1787d37460" + }, + "tools/gate.sh": { + "mode": 493, + "sha256": "d7ba27b9b0c6a03df48e4edc71884ef9986743f8afa751dbfec116df5aeee18c" + }, + "tools/gen_addresses.py": { + "mode": 493, + "sha256": "5d995585d4192a19db7cc6d31ed811fa80264159fc114f03f58793f9b6c4908e" + }, + "tools/gen_stream_schema.py": { + "mode": 420, + "sha256": "a9c3e925bb3370371a2c8cde8d738c657fe1cbf68c39c6155562bbb20c551461" + }, + "tools/max_income_oracle.py": { + "mode": 420, + "sha256": "8d3ec6ba5c677486200eab7d1ca55e1350947829e603737307fa394ac8e40bcd" + }, + "tools/max_income_predict.py": { + "mode": 420, + "sha256": "85400c82b6cb7c6786b7fb6486bdc7bcb1140817f7a0ff0b4fa4f7dbeded8797" + }, + "tools/probe_report.py": { + "mode": 420, + "sha256": "f3ef378c10bae4a8bef754d853f0e86616bb95b5e051e04cac97d362587df1a7" + }, + "tools/reva_call.py": { + "mode": 493, + "sha256": "89477650d38985f84b61a664572de1cbde1268b879d3da5e874598942822998b" + }, + "tools/rng_ledger_report.py": { + "mode": 493, + "sha256": "b4f3f581eb6de50118fd531c848354816c20197711e668ce8b0cfcb4d0392cf3" + }, + "tools/rng_oracle_check.py": { + "mode": 420, + "sha256": "f27ca7f9aa03bc672f04067bc71e73ac83742997f12f5f55ce11151bdc39d98a" + }, + "tools/rng_site_report.py": { + "mode": 493, + "sha256": "fabd950c002265403f7b13a8868a158d867828c9930770ed096a2610b086ad35" + }, + "tools/rtti_map.py": { + "mode": 420, + "sha256": "9ac88a8aa566fe08336ba6e50905ec4253409e1317f491c415b1b9ebcc0713e4" + }, + "tools/run_agent.py": { + "mode": 420, + "sha256": "818097896b2e29dbdd2f53d37261236af302178ecd0ee083a3184a7bc33ff152" + }, + "tools/select_evidence.py": { + "mode": 420, + "sha256": "a6e648a77bcf799cc774ff9d0de83011283049ed0f0c44f6e08857a8410e9463" + }, + "tools/serializers.py": { + "mode": 420, + "sha256": "938904eb7b4ae30a61dd966494b112c6d52399f9d4a4658add06b40a54d6cb73" + }, + "tools/serializers_ghidra.py": { + "mode": 420, + "sha256": "d27da0afc8d043d31335bbe274fc76245e50cf0f9091a968b124f31c3a17997c" + }, + "tools/serializers_golden.py": { + "mode": 420, + "sha256": "29d2509b54704b80eff46a59a320719edb17a7eb67fd8acb8ad5e3c427d8e825" + }, + "tools/standalone_report.py": { + "mode": 420, + "sha256": "43a61c4031306732554aca23cd95b57d35f2a870766c33ccf8e005f22436525c" + }, + "tools/streams.py": { + "mode": 420, + "sha256": "57ec4ec5ad222a74f4461d70277d258e51779ae53ff74fd0e07eb51d4bae0afd" + }, + "tools/strfootprint.py": { + "mode": 420, + "sha256": "3b0db212c0b091ae2f63b866ee331435d013c535f233ec34ae3dfb63ded852dc" + }, + "tools/tcb_from_json.py": { + "mode": 420, + "sha256": "8fe09cff16802fda34db24f6f888610baa258399ab39173586b91a7a162f231a" + }, + "tools/techid_table.py": { + "mode": 420, + "sha256": "2c644bdbd3774b70dfdae7e77ff7a3a8e8563b58be7098a2d55ee30dc8b8fd07" + }, + "tools/turncommands_capture.py": { + "mode": 420, + "sha256": "0214d5da6f5f86e188bb2f03db8d3439267baee3a883c7df754601c7c1a38536" + }, + "tools/vmshot.py": { + "mode": 493, + "sha256": "09228bf8bd61918c49afc2b6da931fc8a7833be126be5384b85194e0e86eea44" + }, + "tools/vmwatch-install.sh": { + "mode": 493, + "sha256": "3c004f532422bd589a7294dabdf54d5a726f598c69012eaea3d73a748ad0123a" + }, + "tools/vmwatch.py": { + "mode": 493, + "sha256": "650d8232e46239a55b96f26d581d7d9c5815415c9014fd2e5b846b68c1346b39" + }, + "tools/vtable_map.py": { + "mode": 420, + "sha256": "2e19223efb79421ab4b807e32f0854b2592d7d3a3a52c12e84e47460b960f740" + }, + "tools/windows-housekeeping/Invoke-Housekeeping.ps1": { + "mode": 420, + "sha256": "a97911a3cfbd47813282efa7f52b4de03d28912487fffe0e7e7aa1a250cac01a" + }, + "tools/x86disp.py": { + "mode": 420, + "sha256": "a05a42d63813d2025a4da65bdd684e82a89c95c52901a8f490391e31c49a122e" + }, + "verify/config/test_agent_config.py": { + "mode": 420, + "sha256": "8a7a406f062c3387ec5b99b35f3befb64f676efef174047060c967074545e3e3" + }, + "verify/config/test_source_check.py": { + "mode": 420, + "sha256": "c16731e31a54256dde4f88d33007759ff21ad8537ca6cd2be38b9e34c59525ad" + }, + "verify/design-rules/SHIP_DESIGN_RULES.md": { + "mode": 420, + "sha256": "4decf51bfa03e8ab2b58478198332e834233100126949b920349f210b54521c8" + }, + "verify/design-rules/data/HiverInvasion_FleetTemplates.csv": { + "mode": 420, + "sha256": "327e799be3c75361267725c157f78b425d3a1df6ed6595104b2ce9993e8ae3a7" + }, + "verify/design-rules/data/UpstartApes_GiftFleetTemplates.csv": { + "mode": 420, + "sha256": "89939d70eb6ed48ec776a4a6fc50ccb68fc6be7162706bab199484bf7cdd5e44" + }, + "verify/design-rules/data/_defaultweapons.txt": { + "mode": 420, + "sha256": "ef9e33aa32840f1878ece67f88556d81a4255f63f6e8aad4ac73e575ef2c7ec8" + }, + "verify/design-rules/data/_turrets.txt": { + "mode": 420, + "sha256": "35de6ad40895f76298eef7dc354c739a5a59747b689c2324cfa5040442eddc18" + }, + "verify/design-rules/design_rules.py": { + "mode": 420, + "sha256": "772f70c7d6be2d20d10cf4f5d412233b267440d63d431bf7b320c29f3f06e313" + }, + "verify/design-rules/stock_designs.json": { + "mode": 420, + "sha256": "b363023e02899bc03e4c8b8423b394ef8abb190b1bcf437aade19be463353f68" + }, + "verify/design-rules/stock_designs.py": { + "mode": 420, + "sha256": "fe020f6058ec25b6fc456146abb6594825ee2b98ba5c5c5eeaff969ce4596031" + }, + "verify/design-rules/test_design_rules.py": { + "mode": 420, + "sha256": "6f6764d21d7a3337ec8aba9651b19947239a7d06a6cdf7c6e9be5ddefcfdd186" + }, + "verify/fpu-cw/cw_census.py": { + "mode": 420, + "sha256": "07b7ac5ae60df487867b592e82e9f74201b695437fba248813bc07305a21c7cc" + }, + "verify/fpu-cw/trace_bitdiff.py": { + "mode": 420, + "sha256": "b25c93d70e67ed2fa81e5ea7184f8ffe0cbd2e7c043bc94f923c3db1cf101b59" + }, + "verify/harness/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/harness/cb/README.md": { + "mode": 420, + "sha256": "7a656251a600a9343ffa8afaa4f227e7cb8086be7d3c6879c0a403ab8acec71d" + }, + "verify/harness/cb/cbdo.sh": { + "mode": 493, + "sha256": "6f3d7fd35aeedb0841be9df0ba19136be2e7ccb5c44950d8aa821c61727232a6" + }, + "verify/harness/cb/cbfull.sh": { + "mode": 493, + "sha256": "609101217e9d35bf1caa5cb66f362e0796fcf6c1264bd92ff550d0ed12ca2521" + }, + "verify/harness/cb/cbload.sh": { + "mode": 493, + "sha256": "2e56bb64609434f6dfc6ebcf71a3c839ae59170db80c996ebee7c2219cb664ec" + }, + "verify/harness/cb/cbmenu.py": { + "mode": 420, + "sha256": "fb2e72a1a5390aa28dcae0fbc2d7b920b06bf3b1ea161bb757d4db3c8cd23af2" + }, + "verify/harness/cb/cbstep.sh": { + "mode": 493, + "sha256": "5896b21e8cf08b40e2a2958e44a51beb7e5b5a58cf35d405879a5df7cdd375b4" + }, + "verify/harness/compare/TRACE_FORMAT.md": { + "mode": 420, + "sha256": "cf6f61dc255e3aed0f293c141d9fd3b0d5e848e3abe4dcf50b4ca2d58e37c024" + }, + "verify/harness/compare/mkfixture.py": { + "mode": 420, + "sha256": "f081dd92b9e82e838f59ce8f9c79d5cdebb825255f13b6c49178516e7f3ef118" + }, + "verify/harness/compare/oracle_parsers.py": { + "mode": 420, + "sha256": "b1a745bfa63b447c87279afdb2885a0218f2a0dc2539f79414f8a2534e24c97b" + }, + "verify/harness/compare/test_tracecmp.py": { + "mode": 420, + "sha256": "f25eb9d5ea7215b8366c44924fb49a5f028a0188e709dadfd90cfbc30db0823e" + }, + "verify/harness/compare/tracecmp.py": { + "mode": 420, + "sha256": "d6ca461cabf15351e2040150144084b93d3caf22d879ee158ede04052ab03cbb" + }, + "verify/harness/l2-ui/README.md": { + "mode": 420, + "sha256": "48effd757522ee5ff70af6d77449dcfd805bb7744c9093d01c039b86e030d7f6" + }, + "verify/harness/l2-ui/launch-b.cmd": { + "mode": 420, + "sha256": "8f26c451a88765c49ecb3c8160ed4a3d06f1100a6d9323b305efc01f039dfada" + }, + "verify/harness/l2-ui/socks.ps1": { + "mode": 420, + "sha256": "401cce47d495507f60eeae45942c146586464959046ef9715cd69605753af027" + }, + "verify/harness/l2-ui/ui.ps1": { + "mode": 420, + "sha256": "355c8f222bf99f547d9d16a1665a072e6914917d48e4db22b8438d2d83708e97" + }, + "verify/harness/profiling/battle-run.sh": { + "mode": 493, + "sha256": "79f14ded5c3731efd655a6f9a4ac6795f3ace0a9b064c43ba4bf9a2cb988a7cf" + }, + "verify/harness/profiling/funcs.py": { + "mode": 420, + "sha256": "841a6f5e5dc1d845b7439c9ce9dc08e045864929b0f367908abea7ab54259207" + }, + "verify/harness/profiling/funcs.txt": { + "mode": 420, + "sha256": "d35b17dbb3970f5c24ae862748c5b91aee87491968719c34e48a8b88c0615835" + }, + "verify/harness/profiling/iat.py": { + "mode": 420, + "sha256": "82465ef8284739ab3d3c99acd0fa6cc5a4bb80c8680eb7a949218305fd10d3d3" + }, + "verify/harness/profiling/inspect.ps1": { + "mode": 420, + "sha256": "35bc7dd85108e3f4686975ef7f510b1cc9306b5839329f7fdd2a5ac27a140611" + }, + "verify/harness/profiling/names.txt": { + "mode": 420, + "sha256": "89d90f934e445447c68569448471a8917ee0bbfcb5fb96bba3e6566be9b0779c" + }, + "verify/harness/profiling/parse.py": { + "mode": 420, + "sha256": "680df36804e923d74da8e9fd8877b5ea66975c9ce8d239ad4507c829f881722a" + }, + "verify/harness/profiling/sampler.ps1": { + "mode": 420, + "sha256": "ef0edde8535ef07e508a732f8e11dc3d50fef966e5a9e4d8161085a83372993e" + }, + "verify/harness/profiling/shots.sh": { + "mode": 420, + "sha256": "87e554abf08068d6438417e266f1e7820e34a900a7d559fa0a7c4a2fa18002b3" + }, + "verify/harness/profiling/timerres.ps1": { + "mode": 420, + "sha256": "80362eb9ec8bd882abddf2507236e70db2dd21f64c9db07d217bdd49361ed89c" + }, + "verify/harness/profiling/turnloop.sh": { + "mode": 493, + "sha256": "8e28f076599a9eb53eace77ad77a10b0770f1ce617c7a76e6a2b9044ee0c8774" + }, + "verify/harness/profiling/turnwin.py": { + "mode": 420, + "sha256": "e2033a8e519a7c9f65f67b5592494a9843eb8bef41af6ab5652343aa86bd4c60" + }, + "verify/harness/profiling/ui.sh": { + "mode": 493, + "sha256": "e66774a4d070285e6c6a62472000222a691c7192096039e75fa726bab9f6afb7" + }, + "verify/harness/run-recipe/click_helper.ps1": { + "mode": 420, + "sha256": "150a1c17e12e8479244107cd01d95233c84d550e95a6f5e352fd529818a21d7d" + }, + "verify/harness/run-recipe/display.cfg": { + "mode": 420, + "sha256": "76b4876abd1cd163a5cc6b65a6106670476cde40c9b868a53a0dc45f517e132f" + }, + "verify/harness/run-recipe/dxvk_d3d9.log": { + "mode": 420, + "sha256": "f48ff2684a78cea563ab7f10e2f005638044352fe9cfc30dedf0f26ec7fecf23" + }, + "verify/harness/run-recipe/launch.cmd": { + "mode": 420, + "sha256": "90a6effe8ae835bf641cc775a17ad709198fdfeded4379f658255a82f594e5c2" + }, + "verify/harness/run-recipe/lvp_icd.x86.json": { + "mode": 420, + "sha256": "b89a08526e043a84c3a2550b5ea2fd7692f547ea295e8dd70e79c64fe81f6fbf" + }, + "verify/harness/run-recipe/run.txt": { + "mode": 420, + "sha256": "12c83295dae9db4a98142ef8fe7e45321c90960428df504ed3496e27838a0413" + }, + "verify/harness/run-recipe/session.log": { + "mode": 420, + "sha256": "e9ce9b496e9ee55bd64cc27afe594cee6136dfbc6cf9d9d44e9914b27e568a93" + }, + "verify/parsers/PARITY_NOTES.md": { + "mode": 420, + "sha256": "beecfe60358f5977529bd0784ffe18ca03c38d2dd36766f351c6a9addac83bda" + }, + "verify/parsers/effect_txt.py": { + "mode": 420, + "sha256": "7219045dfaf305dd64218ff8096e8cac69a53df1aabdf85f15e6c5e01c963e74" + }, + "verify/parsers/flat_kv.py": { + "mode": 420, + "sha256": "a26149cb21d152be5cbada3b764e042187daf2ec306b2dba1081737af6a7ae4f" + }, + "verify/parsers/manifest.py": { + "mode": 420, + "sha256": "62a08cfd82d5f701ae3b3f567bc8382cfd1b33b49bf6049ade47a932ef7109da" + }, + "verify/parsers/mars_data.py": { + "mode": 420, + "sha256": "90c7b8421044b1d7e262e6f20e5af391d97a712b12c2d3f0c3033567881d536f" + }, + "verify/parsers/verify.py": { + "mode": 420, + "sha256": "cc5d619bd6b3ca161b4bc8050c30e7d77f6bd3e964c971cc29e051efc1e25a33" + }, + "verify/publishing/test_dashboard.py": { + "mode": 420, + "sha256": "cc44e516da663f5d27bf817cbcbf24c052f2db52ee887d08d7c271caf8f6a000" + }, + "verify/results/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/results/compare/.keep.md": { + "mode": 420, + "sha256": "4581f3fde61549f4c621b2f114228a62d066a528a270a9b41703238ff841ac1d" + }, + "verify/results/compare/b2-techfx-compare.json": { + "mode": 420, + "sha256": "b0533322d44b1694f36baf86d6660481ac5b22ce9c1d6b6b9668ea064cc08f4b" + }, + "verify/results/compare/b2-techfx-golden.json": { + "mode": 420, + "sha256": "4298a8229b85a3329c78d3618d3eb19aff096cb2da66e9238fd843d639b17f11" + }, + "verify/results/compare/cr-compare.json": { + "mode": 420, + "sha256": "f20e9a7c71412688c02b607f08a5224367598eba552e35a50e9922ca8f12edab" + }, + "verify/results/compare/cr-compare.md": { + "mode": 420, + "sha256": "0eb905744120b1cf264ba6e57497db64fdc8e225a87ef7bb86cf3f026ffe4d0d" + }, + "verify/results/compare/cr-replace0.json": { + "mode": 420, + "sha256": "f1556c5d74c236c82617061b5ec60b1a7ce4652bce87b6595eb89406ad832240" + }, + "verify/results/compare/cr-replace0.md": { + "mode": 420, + "sha256": "6f571e46350a29b811bc12b48e12ed2d443acba5f5be6310e0531c3790425d48" + }, + "verify/results/compare/cr-replace1.json": { + "mode": 420, + "sha256": "d0c1d6bd4a1f8f5343b584662d8202184479b01a51480443a97242daf27fccc2" + }, + "verify/results/compare/cr-replace1.md": { + "mode": 420, + "sha256": "111b51290468d5482a1910194487d26dc1b3ec534d699aa07a564de66bbf9d98" + }, + "verify/results/compare/eventlive-b3-t1-5.json": { + "mode": 420, + "sha256": "4f305180bcbe93523f407d1f8406ac52b84d4a20e2d611940716618fd37edfde" + }, + "verify/results/compare/eventlive-b3-t1-5.md": { + "mode": 420, + "sha256": "ec71d98210218fd5b5da69f6b17cf6991128a58a0358a6504e6497dd39159764" + }, + "verify/results/compare/eventlive-b3-t1.json": { + "mode": 420, + "sha256": "84f66c1e6a23f737d1615e75fd22fba958bfd851067acb42503e32a2812dd1de" + }, + "verify/results/compare/eventlive-b3-t1.md": { + "mode": 420, + "sha256": "299b8dd3f2cf42cbc9e6254fac01ee3dcb6abb0758c8f298beb6cc6464db4cfb" + }, + "verify/results/compare/eventlive-b3-zuul.json": { + "mode": 420, + "sha256": "a1a92c06202c8168362c33442edeb7ea7f76f6e586e5deea1b86dff9dc8f3494" + }, + "verify/results/compare/eventlive-b3-zuul.md": { + "mode": 420, + "sha256": "544791f9cd8b77a2d865f2a918d97e74559529f29943171bd1e8e2d8a120dec5" + }, + "verify/results/compare/l5-budget-boundary.md": { + "mode": 420, + "sha256": "6877f9cfc602876b4c213106493853822471a5aaa3e4e8ebf8dffd31373d89d9" + }, + "verify/results/compare/mf-after.json": { + "mode": 420, + "sha256": "586a824a0d0af1de0808c33c1c392c4022128f9c1305dc32b6749e8fa493e8f4" + }, + "verify/results/compare/mf-after.md": { + "mode": 420, + "sha256": "659be3da71cabfd3c34eb818f1bac07f848c58a878fd62d81ac7b1daa5f3ce03" + }, + "verify/results/compare/mf-before.json": { + "mode": 420, + "sha256": "259272b45ca9c63894d8c91e399ff91d7258b7836f1a0d5c91dd3972586b2498" + }, + "verify/results/compare/mf-before.md": { + "mode": 420, + "sha256": "4572530a1c93865d27aba47c23c418773ad39a834c8be1c004f5cc2f16f927a0" + }, + "verify/results/compare/output-ref-turn2.md": { + "mode": 420, + "sha256": "43a569165f9239f13edc31c7a848a6b839829ae06dd6e3b85d289a1552eb8d34" + }, + "verify/results/compare/output-zuul-and-ref.md": { + "mode": 420, + "sha256": "9bc0937c0b3e1e3e5a6cd3768dbfeae56a897615396b00834bd083611f3ef431" + }, + "verify/results/compare/recap-b1-compare.json": { + "mode": 420, + "sha256": "8e86cdd32373e41ac1cdc130b18acc188b35d5ab7112e1fc655d134c44ad9712" + }, + "verify/results/compare/recap-b1-compare.md": { + "mode": 420, + "sha256": "496a3246eda3be76d9d0f08726369d40aa879cf60a510f16209ae77585582841" + }, + "verify/results/compare/recap-b3-compare-t1-5.json": { + "mode": 420, + "sha256": "80eeeeccf15f427b75b053d06f6b32b1692a2ed9ca6b9a51c244e4166a1b0e78" + }, + "verify/results/compare/recap-b3-compare-t1-5.md": { + "mode": 420, + "sha256": "5b6295bff72d599f142e75fa913ca2da590322a6fd1d104328847159fc5e7802" + }, + "verify/results/compare/recap-b3-compare-t1.json": { + "mode": 420, + "sha256": "10d0d5f8aff90f6cce3cd87e30c7f8ff896c5b369f4dc8288141451e25727cb9" + }, + "verify/results/compare/recap-b3-compare-t1.md": { + "mode": 420, + "sha256": "2b0eb8865bb07a2dd8fd038bc19e38a34fbf19b9d3f6fabae085c16a74fbcc6f" + }, + "verify/results/compare/recap-golden-trace.json": { + "mode": 420, + "sha256": "50bb7e34ab2359adc83cc0647fc995d207173fcf6134e413565af450958f652f" + }, + "verify/results/compare/recap-golden-trace.md": { + "mode": 420, + "sha256": "586fc86fe78659902a5d0859c0bce44623bfcda0f375bb57b293796862c48e17" + }, + "verify/results/compare/recap-misc-compare.json": { + "mode": 420, + "sha256": "c73f3f3593a0d715a675b29c7b4f49c02a97578ee9d867ce15d217c43da2e466" + }, + "verify/results/compare/recap-misc-compare.md": { + "mode": 420, + "sha256": "b435c92441742b2b1b0236bfacff10c17757696baf446c544c4759b7e31237ed" + }, + "verify/results/compare/unlock-b3-t1-5.json": { + "mode": 420, + "sha256": "a4dbfc89f6f3d154edbbc62842a4e8d8a3c69b9589eafc1bb496b26a3ecf6e3d" + }, + "verify/results/compare/unlock-b3-t1-5.md": { + "mode": 420, + "sha256": "832626087ddc2da9064a192a1acfb3869d4a52c6398a070cbd66eaa1bdbe2e2e" + }, + "verify/results/compare/unlock-b3-t1.json": { + "mode": 420, + "sha256": "6d8938b8eaeb2da1c7fdccb1fb68f8e3a2b5b7f492cc096326cf3aadb2ab8d55" + }, + "verify/results/compare/unlock-b3-t1.md": { + "mode": 420, + "sha256": "8911e671a143c25765cd7c0b67f1b9cb23f4040fe26aad40ce59b1db858afdcd" + }, + "verify/results/compare/unlock-b3-zuul.json": { + "mode": 420, + "sha256": "3099d248d58c4395e92d65ad18c28227695a7c7935193be6c2bcf752fa0e0f04" + }, + "verify/results/compare/unlock-b3-zuul.md": { + "mode": 420, + "sha256": "f53b165c8502ba9b2416935179fdea68153fb6ebd2458b4ec9b4ecf6c741c91f" + }, + "verify/results/data-catalogs/crosslink.json": { + "mode": 420, + "sha256": "2966ba9780910b596e350c4f81eef5d74c4d235dc3a8d5cf6ad5fd53a407254a" + }, + "verify/results/data-catalogs/schema_stats.json": { + "mode": 420, + "sha256": "6e3f669ae77cdfa2c5cd6bbd29f5cecccd452d9a7b2397c2c23db6c33fda0a2a" + }, + "verify/results/data-catalogs/shipsections.json": { + "mode": 420, + "sha256": "2e7057c608d0cea755bf9dbfa291864d33e3f09ad5deff7bb3a8045bde7a4ab5" + }, + "verify/results/data-catalogs/strings.json": { + "mode": 420, + "sha256": "c36c1b2b9a2eace438f93698df6388fa94aec30d372bcd0bee7e09bb33c54d7c" + }, + "verify/results/data-catalogs/tech_tree.dot": { + "mode": 420, + "sha256": "96ce0492a1284167d82af2c07a8f8a0b3bb9864bc137195560d909df6a913055" + }, + "verify/results/data-catalogs/tech_tree.json": { + "mode": 420, + "sha256": "18df799410c5f650e15808c1ef247b4768a3dfff93795a5ec7f56cd6c4afc597" + }, + "verify/results/data-catalogs/weapons.json": { + "mode": 420, + "sha256": "a446b445c21519fc7992c84155c9652239567030843c405b4219d1f65022db01" + }, + "verify/results/fpu-cw/README.md": { + "mode": 420, + "sha256": "3928fd0f6a03a8ff0b170a7ed23a059120b5014b13bf6870d4f187ff299d5975" + }, + "verify/results/fpu-cw/cw-census.txt": { + "mode": 420, + "sha256": "b7854dc5cd249a2490d04264d758f1894a9ddf4b95573650365d47587c7589d3" + }, + "verify/results/fpu-cw/run-007f-rep/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-007f-rep/(Autosave).sav": { + "mode": 420, + "sha256": "ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918" + }, + "verify/results/fpu-cw/run-007f-rep/shim.log": { + "mode": 420, + "sha256": "73b5b86da743a1cb37d4c0d97b29978923b55a7a47f80c7fa20ca47d424f6c02" + }, + "verify/results/fpu-cw/run-007f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-007f/(Autosave).sav": { + "mode": 420, + "sha256": "ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918" + }, + "verify/results/fpu-cw/run-007f/shim.cfg": { + "mode": 420, + "sha256": "998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363" + }, + "verify/results/fpu-cw/run-007f/shim.log": { + "mode": 420, + "sha256": "5721f47d7fd862156ce2cd1832cd1739636b5aee53c82323ef233ff6401775bb" + }, + "verify/results/fpu-cw/run-007f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "149c4fcf750fcf9e81dc86d8696271d9a14ca788891ac95cf96995e3737c68e4" + }, + "verify/results/fpu-cw/run-027f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-027f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-027f/shim.cfg": { + "mode": 420, + "sha256": "f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd" + }, + "verify/results/fpu-cw/run-027f/shim.log": { + "mode": 420, + "sha256": "4bd3f88bd27eb2e3ae1f42f4dc2ccf1cc5df1a2c1171d2eff8be86e7be684187" + }, + "verify/results/fpu-cw/run-027f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "b5d2611d0c08946c1e1eaa244a7e44782eac2592c392efb3d7147fbbd86816e7" + }, + "verify/results/fpu-cw/run-127f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-127f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-127f/shim.cfg": { + "mode": 420, + "sha256": "1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271" + }, + "verify/results/fpu-cw/run-127f/shim.log": { + "mode": 420, + "sha256": "03f1999dc8964912697782e856f89f190b6680d5732f2cd00b1569bff727a545" + }, + "verify/results/fpu-cw/run-127f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "fb1b9063cc53a6b39ea0a58e0545b9334fbd15d65dd839e72f2c4febbb1dd3f0" + }, + "verify/results/fpu-cw/run-137f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-137f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-137f/shim.cfg": { + "mode": 420, + "sha256": "8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9" + }, + "verify/results/fpu-cw/run-137f/shim.log": { + "mode": 420, + "sha256": "83aa72572412d5248179397895029367685fd590d795991ab91c98cf9828ae29" + }, + "verify/results/fpu-cw/run-137f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "aad1fb6abd86beafb9f44e2c6060157e22618811d105f2379252e19008839b66" + }, + "verify/results/fpu-cw/run-1a7f-rep/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-1a7f-rep/(Autosave).sav": { + "mode": 420, + "sha256": "e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7" + }, + "verify/results/fpu-cw/run-1a7f-rep/shim.log": { + "mode": 420, + "sha256": "38f2824fbe91bf2fa1ef55473a7468707248420805b6f6dc85245fd34fa94200" + }, + "verify/results/fpu-cw/run-1a7f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-1a7f/(Autosave).sav": { + "mode": 420, + "sha256": "e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7" + }, + "verify/results/fpu-cw/run-1a7f/shim.cfg": { + "mode": 420, + "sha256": "59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588" + }, + "verify/results/fpu-cw/run-1a7f/shim.log": { + "mode": 420, + "sha256": "a1bb0bd06dae6955ec09e7d0c6cd1e68e19aa2a114256cdeae1275def0a63091" + }, + "verify/results/fpu-cw/run-1a7f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "b9a7affb8235626fcfdd5afe143e4ec03be869b6b386bd9ac78389097df88cef" + }, + "verify/results/fpu-cw/run-off/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-off/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-off/shim.cfg": { + "mode": 420, + "sha256": "6a19c362121a3dba0aac857d6e998131e8b2478f19edcdcbd58006645d096c70" + }, + "verify/results/fpu-cw/run-off/shim.log": { + "mode": 420, + "sha256": "9e3cbd005f0b68037681939b289834c55629bac0e9cd35ac55e6d8ef5333a116" + }, + "verify/results/fpu-cw/run-off/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "ec2271c0d7e09fe51ead7f8d58859c692e8b302233191841d506ea14248caa8c" + }, + "verify/results/fpu-cw/state-checksum-diffs.txt": { + "mode": 420, + "sha256": "3417dfc1b75ad896ac6a5e974d51248eecca319565e2422e146897d19e121b68" + }, + "verify/results/fpu-cw/trace-bitdiff.txt": { + "mode": 420, + "sha256": "8f86707f26f30638097c85f0db6df219adbfebac4e9ec24f1feb8bfce112d4f2" + }, + "verify/results/multiplayer/l2-combat-hud-client.png": { + "mode": 420, + "sha256": "02c86592531ab2889a0eae04e44a644d33c754096fe60aca6640068a7a3f421f" + }, + "verify/results/multiplayer/l2-combat-hud-host.png": { + "mode": 420, + "sha256": "a56daf36fcc88627b29116ad9874c95a3c46960074ff9b823aa15c4ea2660dd7" + }, + "verify/results/multiplayer/l2-combat-loading.png": { + "mode": 420, + "sha256": "f94a718cee08e1b7d346490058f13a107d23aaa7c269fdd53b159a75d62fa558" + }, + "verify/results/multiplayer/l2-combat-round-draw.png": { + "mode": 420, + "sha256": "c1b8424540b702915302f9ff38eaf765e8e95fddc3c5c4d894438dcfcf8b6256" + }, + "verify/results/multiplayer/l2-combat.pcap": { + "mode": 420, + "sha256": "0f112ef96da6c465dbda51baf99eedd66967eed61c097f643bf6c66fc26af31b" + }, + "verify/results/multiplayer/l2-encounter-query-client.png": { + "mode": 420, + "sha256": "4c41b268ad256b0109483a2d9b5ba35de7b9cadb4eb32ef4a68f7867e6e747fd" + }, + "verify/results/multiplayer/l2-encounter-query-host.png": { + "mode": 420, + "sha256": "8c7b0c6d65ddde45eb3447f044589ffc36500b40c4d676af8321f800162f38a0" + }, + "verify/results/multiplayer/l2-fleet-built.png": { + "mode": 420, + "sha256": "6ac91fcf9b42caef50134de01804046d8e60d0fd3966592e9738ceff511949c2" + }, + "verify/results/multiplayer/l2-lobby-client-joined.png": { + "mode": 420, + "sha256": "4a8e698c9ea935449ff0421cd59acd517ebffa388a7572279b28be0369141ff6" + }, + "verify/results/multiplayer/l2-lobby-host-created.png": { + "mode": 420, + "sha256": "e6a7377cabafa973396cedafa5ad5b4863a42f9866709db88faf9572e0ed3c98" + }, + "verify/results/multiplayer/l2-move-warning-dialog.png": { + "mode": 420, + "sha256": "43c6219d74bc0cb28495f13784cdbd3a90c89746b108824c3a2138dbdadcb53e" + }, + "verify/results/multiplayer/l2-socks.log": { + "mode": 420, + "sha256": "109b630d6548d07404f9f905e6c527f10e25221698f1b66226f67f94c5f294b5" + }, + "verify/results/multiplayer/l2-turn13-client.png": { + "mode": 420, + "sha256": "d19f17c4219f21f6c9950440d528a1a91fe3907761df21fd0ba99321b8820baa" + }, + "verify/results/multiplayer/l2-turn13-host.png": { + "mode": 420, + "sha256": "811efcfb571d60435f772a3b619bb329717d1e162b88e440ec0d636b1c6042fc" + }, + "verify/results/multiplayer/w2-internet-browser-no-error.png": { + "mode": 420, + "sha256": "6409b977056c95b29928a0098f75fffd71c501128f9d9325c3000837131c8791" + }, + "verify/results/multiplayer/w2-join-manually-dialog.png": { + "mode": 420, + "sha256": "86904e94a5aec41c1e89271d2712558c3b5055bd2ae4fededfda103d1e22fb71" + }, + "verify/results/multiplayer/w2-lan-browse-listing.png": { + "mode": 420, + "sha256": "6f5d16fa719fb63dd627fba551221c7665b69002e83fe35b8d84912cd7d8ce83" + }, + "verify/results/multiplayer/w2-lobby-client.png": { + "mode": 420, + "sha256": "ede652b21e2a4ea07c8132e4080ba903d1052ebca336bb007e1e8efa62787f10" + }, + "verify/results/multiplayer/w2-mp-turn1.png": { + "mode": 420, + "sha256": "59f9a1f5d8c0fff45d3ae3406dfd9878a5915f18e999d909a5238a90a3b86ed6" + }, + "verify/results/multiplayer/w2-mp-turn2-client.png": { + "mode": 420, + "sha256": "d9da4c151cd8290f80b31eb5ed8a74a0a30a87d1f7a80a179fa082a9439e08e5" + }, + "verify/results/multiplayer/w2-mp-turn2-host.png": { + "mode": 420, + "sha256": "910efd36b4a7c1a85d8ad487660f856339af037b9b00fef0cafd5e77ebdc36e5" + }, + "verify/results/multiplayer/w2-tier0-filtered.pcap": { + "mode": 420, + "sha256": "e108778fd1afb7718c53a4164310b8523415ef073706d310583dab424e5921cc" + }, + "verify/results/saves/ac-turn20-raider.sav": { + "mode": 420, + "sha256": "ee787db8f63d8f564c597bd5a82709790a0fdf47827912037f96b736f2cbed34" + }, + "verify/results/saves/ac-turn22-raider.sav": { + "mode": 420, + "sha256": "0faeaa601e6a867876819e5646b85f8787851093b8e6bd6e3946eb867f2dcc74" + }, + "verify/results/saves/ad-oracle-A-post.sav": { + "mode": 420, + "sha256": "a634510e7208cceb10d8ce016ceb0153601f11d7291f08122bcdb6418e313331" + }, + "verify/results/saves/ad-oracle-B-post.sav": { + "mode": 420, + "sha256": "676b1778880b5d4784ba7f6ef48b1a8e56745adab70a815943b7744876686260" + }, + "verify/results/saves/ad-turn27-two-raiders.sav": { + "mode": 420, + "sha256": "1c8baa27680809d585ab1728391e82729642d32aaedffd5bf95b616f0a11a436" + }, + "verify/results/saves/ap-deploy-turn15.sav": { + "mode": 420, + "sha256": "844f2b746060dc2c4e2099cdc6ceffd5f55ef858c9e347df28c8aca3041f7165" + }, + "verify/results/saves/ap-oa-turn16.sav": { + "mode": 420, + "sha256": "e296394f578b3a5668e5934b9eec8d6c4638ca7411200078f97de1abd346f4c5" + }, + "verify/results/saves/ap-ob-turn16.sav": { + "mode": 420, + "sha256": "262f8bda97c9511d8d2b41e6a8a0582d6f5364c2b01b1caf99e639d0e4f53ebe" + }, + "verify/results/saves/ap-turn22-spydetected.sav": { + "mode": 420, + "sha256": "91381bd7e722ac3847795a402d78ebb31d74dbb5d2909f33d243aec3ef8abaf8" + }, + "verify/results/saves/ap-turn25-spydestroyed.sav": { + "mode": 420, + "sha256": "46380fcf4498d67507e4471eb9ee3762647c53ee5473be142fe5c34e37344bc3" + }, + "verify/results/saves/ar-oracle-A-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-oracle-A-pre.sav": { + "mode": 420, + "sha256": "15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca" + }, + "verify/results/saves/ar-oracle-B-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-r1-turn43-post.sav": { + "mode": 420, + "sha256": "37f4a54fd32303fdcc86522b07104fbf2fcb124eec9b1f7005b3446fefcc429f" + }, + "verify/results/saves/ar-r2-probes8-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-turn37-816raiders.sav": { + "mode": 420, + "sha256": "b6f4e05ff226eabd1695003b36293553642553cea96ef417364393e2332a7094" + }, + "verify/results/saves/as-turn14-predeploy.sav": { + "mode": 420, + "sha256": "53986f8511cbf9920f32e2ea406ccf531dd08903fa5d06024fcf03ea7627221d" + }, + "verify/results/saves/as-turn15-spydeployed.sav": { + "mode": 420, + "sha256": "854a10fa1ea602f0f7909f9bf9154942e56ea5fa1db4cce47d6d32bf53952e08" + }, + "verify/results/saves/az-turn11-16destroyers.sav": { + "mode": 420, + "sha256": "501583c7cf2ac81c9db3191203cd3dc5ba5b9e228b9b9ce3dbdcc3650d0070a9" + }, + "verify/results/saves/az-turn23-tarka-comraid.sav": { + "mode": 420, + "sha256": "3d5eb826c149d1fd0278c746f32e6148ca9883a1bc5b522c0d5e6e13fac9788a" + }, + "verify/results/saves/bp-pinA-turn28.sav": { + "mode": 420, + "sha256": "e913ff41188211c02d536da616337544e64133996cd7cc7a6521a8df1960226f" + }, + "verify/results/saves/bp-pinB-turn28.sav": { + "mode": 420, + "sha256": "724528ffde9a7514b69ab9e82ed3b8c8ade63d622c0720de30503a73a92df11e" + }, + "verify/results/saves/bp-turn28-pre.sav": { + "mode": 420, + "sha256": "16f63adbf383946db17c381998957172bca803406b7df78f3b03805fef0bbcb8" + }, + "verify/results/saves/bq/bq-1A-endturn.sav": { + "mode": 420, + "sha256": "1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39" + }, + "verify/results/saves/bq/bq-1A-post.sav": { + "mode": 420, + "sha256": "56980aa086e1a145b00f781b9d9cf618b152986f1c2267b9fd96cca0f1f604b9" + }, + "verify/results/saves/bq/bq-1B-endturn.sav": { + "mode": 420, + "sha256": "1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39" + }, + "verify/results/saves/bq/bq-1B-post.sav": { + "mode": 420, + "sha256": "b36ac0ec2986f3a814dd22ca312c895ba6ec8a0e55fca54d8a7fd08a2f96a2c4" + }, + "verify/results/saves/bq/bq-1bA-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bq/bq-1bA-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/bq/bq-1bB-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bq/bq-1bB-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/bq/bq-res-post.sav": { + "mode": 420, + "sha256": "28bbd9b5c377afcd8f075b535eb1036ee46acf71ab614e7091ccdbdfb3703db2" + }, + "verify/results/saves/bs/bs-C-endturn.sav": { + "mode": 420, + "sha256": "15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca" + }, + "verify/results/saves/bs/bs-C-f38-autosave.sav": { + "mode": 420, + "sha256": "0fe8f37479a702d2e4e7752e6cb160dc242f00a082dc4115b7d10c77b24989f0" + }, + "verify/results/saves/bs/bs-C-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/bs/bs-L-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bs/bs-L-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/cb-c3-turn1to2-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-c5a-turn1to2-pinned-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-c5b-turn1to2-pinned-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-turn2to3-autosave.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/saves/cb-turn2to3-endturn.sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/saves/certified-pairs.md": { + "mode": 420, + "sha256": "4e1cfb79cf5a51446b2eae21f91b565348ffa95a9ebac8f95e23019012aefb57" + }, + "verify/results/saves/cr/cr-oracle-autosave.sav": { + "mode": 420, + "sha256": "79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420" + }, + "verify/results/saves/cr/cr-oracle-endturn.sav": { + "mode": 420, + "sha256": "e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f" + }, + "verify/results/saves/cr/cr-replace0-autosave.sav": { + "mode": 420, + "sha256": "6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5" + }, + "verify/results/saves/cr/cr-replace1-autosave.sav": { + "mode": 420, + "sha256": "8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235" + }, + "verify/results/saves/determinism-hashes.txt": { + "mode": 420, + "sha256": "bfa0615c4b310ae21c09a7d373d5a9d8799f36a0460089e5950fa0edf9d614d2" + }, + "verify/results/saves/human-turn11-spytechs.sav": { + "mode": 420, + "sha256": "aa63dd3d5489884f70d9c35acfb06c23c84531f403798842e7b0cf8cde94d1d4" + }, + "verify/results/saves/human-turn15-spyprogram.sav": { + "mode": 420, + "sha256": "22306d26f8831b90a62c00a2ebad5a97e77017b62ee96a7439d4c2c76c455cca" + }, + "verify/results/saves/human-turn2-orders.sav": { + "mode": 420, + "sha256": "9a94dec562622310893d6f522a0fae06f1033470f4182098e808b175e7df7c8d" + }, + "verify/results/saves/human-turn3-noderoute.sav": { + "mode": 420, + "sha256": "6db0912a050a846c8f3a184811644c76df3fdb65e83dffbf70289e21cc098a90" + }, + "verify/results/saves/human-turn5-traderoutes.sav": { + "mode": 420, + "sha256": "3829e6c6d8f26cd1183a972bd66edadbd71364c11a224b0a6e40461011bcab29" + }, + "verify/results/saves/human-turn8-traderoutes.sav": { + "mode": 420, + "sha256": "afeb3b2d724e07cf59f15eb1bdb9fcf853391fc06fe21beb20c069ff75b2f836" + }, + "verify/results/saves/turn1-state.sav": { + "mode": 420, + "sha256": "a3f9dc4b49fc669c814b09b87a9c6795de21bac80a1c7bfe3901b8e239fa36cc" + }, + "verify/results/saves/turn2-state.sav": { + "mode": 420, + "sha256": "ab4ac2d7e2977260a4de916f65c7ecc6dd5b0094dac4bb51241317232ea17ab4" + }, + "verify/results/saves/turn2-strict-issues.txt": { + "mode": 420, + "sha256": "33a169a2de29ad502e9b7c0159cd543e0b4d71f2d9b3903f5be58c7846db2429" + }, + "verify/results/saves/turn3-state.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/saves/zuul-turn15-orders.sav": { + "mode": 420, + "sha256": "ef86a0d61de3533f023af5dc2b9a5720e4e0c5c97d900d88181603a13db7d045" + }, + "verify/results/saves/zuul-turn16-noderoute.sav": { + "mode": 420, + "sha256": "b6b5d283b62cc46bca914e86c34cf45e8960a653e818e59664087429bbb30103" + }, + "verify/results/saves/zuul-turn17-orders2.sav": { + "mode": 420, + "sha256": "1b863e684edecb4afe738ba30c8132065ebcf2d9977409325e714fe0173056e8" + }, + "verify/results/saves/zuul-turn17-rollpending.sav": { + "mode": 420, + "sha256": "aac5ba5b10ff1af6b0e38c565b2f0a60c16858ee4e89dd2a2f5b037eae95ee7d" + }, + "verify/results/saves/zuul-turn23-fleet23.sav": { + "mode": 420, + "sha256": "fd3748327d87b8c478f50fcd09d097eacff21e57d946ecb43b8119b4d0d78b1b" + }, + "verify/results/saves/zuul-turn5-species5.sav": { + "mode": 420, + "sha256": "48559ab5b719b332e47b4bf43af85a616bff1508125d62edb211b80637234af6" + }, + "verify/results/shim/ac/ac-probe-run-shim.log": { + "mode": 420, + "sha256": "b9b4a5f0e399e16b477cde0bd7e2c4ce378549eb5a467f7b8ae5eb64d75cb106" + }, + "verify/results/shim/ac/ac-probe-run-watch.txt": { + "mode": 420, + "sha256": "543d76d150aeb9318b9ae27acf638b8935eea30b1a2d47fb15354b584a458163" + }, + "verify/results/shim/ad/ad-r1-shim.log": { + "mode": 420, + "sha256": "fec98888b030ed42b84551aac1286c0baeaf15b8a545af068dc6605615e96df0" + }, + "verify/results/shim/aidesign/parse_aidesign.py": { + "mode": 420, + "sha256": "fbd4aeb71db548759bdb1ff65a5fdd0af6c192927e6ebe4b510f1083c3bdba13" + }, + "verify/results/shim/aidesign/sd-br-p1-hashes.txt": { + "mode": 420, + "sha256": "cd276116a51df01129f0e840d4c04f7964be34f75e51c384cd8df65969f458e6" + }, + "verify/results/shim/aidesign/sd-br-p1.txt": { + "mode": 420, + "sha256": "325cb9fcfa505ab2a93bbd00d60a7a4644b6b5970cb16a288cc7a43f2e825dd3" + }, + "verify/results/shim/aidesign/sd-pin-p1-hashes.txt": { + "mode": 420, + "sha256": "f0371c0a439d736ae7e67e71bd87d693481100d08243d16a1ac1f2ad0ab8bdce" + }, + "verify/results/shim/aidesign/sd-pin-p1.txt": { + "mode": 420, + "sha256": "45e693d279899e7a04cf59bda67190058896b56f3b0607d5aee21abb12f03071" + }, + "verify/results/shim/aidesign/sd-pin-p2-hashes.txt": { + "mode": 420, + "sha256": "e7d6dc12a940305087ee03dc7f8826f3c6343d24d8fea0f2aa78665d887138c9" + }, + "verify/results/shim/aidesign/sd-pin-p2.txt": { + "mode": 420, + "sha256": "b0206869206bc3a41bebb5175e31179f1a5d125a44b5ddfc10c67c4a0d13c22c" + }, + "verify/results/shim/aidesign/sd-t15-p1-hashes.txt": { + "mode": 420, + "sha256": "1ee71a623eb17e08c623ec8de3775218dc3a7c2de50d36a25dd2395382195962" + }, + "verify/results/shim/aidesign/sd-t15-p1.txt": { + "mode": 420, + "sha256": "df9f4906ee8bbb2efc9ba9a38c41607b89711d0bc9f705473d8448e9715d9280" + }, + "verify/results/shim/aiorders/cb-c1-turn2to3.txt": { + "mode": 420, + "sha256": "9d5014b346cb0fa9e2172f45db77c4437a03b069930eaaa80ea94e742891eb8f" + }, + "verify/results/shim/aiorders/cb-c3-turn1to2-run1.txt": { + "mode": 420, + "sha256": "fdaf27a32b93fdb3024f7a45f0d90b2cf833d3f592960027c3a6cf4ecbb8c616" + }, + "verify/results/shim/aiorders/cb-c5a-turn1to2-pinned.txt": { + "mode": 420, + "sha256": "d4daa0c2599c1b573ed59617243a392861dbc4e1fbeb707c7248708c015d998f" + }, + "verify/results/shim/aiorders/cb-c5b-turn1to2-pinned.txt": { + "mode": 420, + "sha256": "9682186176024242fddb901b10d9a5ad6beba91bd895c2001ca954fc293eab73" + }, + "verify/results/shim/aiorders/l4-research-run1.txt": { + "mode": 420, + "sha256": "5caf1fa25b7b8c2d6af213e59c6ec821be3c46cdd92a1024a6faf5d0a3b1d71c" + }, + "verify/results/shim/aiorders/l4-research-run2.txt": { + "mode": 420, + "sha256": "846ef2cfbc365e7ee2f481048978baf820d57026737261bfba3a328d59cdaad8" + }, + "verify/results/shim/aiorders/l4-turn1to2-aiorders.txt": { + "mode": 420, + "sha256": "c55d9b3c48cb552c02731003c26bb6dfcb8afb611c2a188d21fd4a39f550d269" + }, + "verify/results/shim/aiorders/l4-turn1to2-hooksoff-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/shim/aiorders/l4-turn1to2-instrumented-autosave.sav": { + "mode": 420, + "sha256": "e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d" + }, + "verify/results/shim/aiorders/l4-turn2to3-aiorders.txt": { + "mode": 420, + "sha256": "696c34996e4b5be0383794fae7ea114779f7fdd0a8cdceff5a00aeb07392933a" + }, + "verify/results/shim/airng/par-br-p1-hashes.txt": { + "mode": 420, + "sha256": "656b1d0c073d9988287e5b76543e42eb1c050d9ebc9872e2b7ec5208b7534b42" + }, + "verify/results/shim/airng/par-br-p1.txt": { + "mode": 420, + "sha256": "eadf1cfb7efd7b374472867ddf1cea5f60e30096090c950049f0c264b0299398" + }, + "verify/results/shim/airng/par-br-p2-hashes.txt": { + "mode": 420, + "sha256": "d97916075c7b4c10464962e9e38aed69288a4d68a16a369c1133df16fa134146" + }, + "verify/results/shim/airng/par-br-p2.txt": { + "mode": 420, + "sha256": "bda355cbbf07301cd6d3716eba32312261c402848c91780a97a6d5cce14c3d92" + }, + "verify/results/shim/airng/par-pin-a1-hashes.txt": { + "mode": 420, + "sha256": "5eb1b557826d45fe9d843b37a92aaef54cd1b8a60900f9c34b4fe25e4bd46a24" + }, + "verify/results/shim/airng/par-pin-a1.txt": { + "mode": 420, + "sha256": "17750bab77512434dcc9e66fc86cbfc34df497cadab5b732cf3b0ef3958e09a4" + }, + "verify/results/shim/airng/par-t1-br-p1-hashes.txt": { + "mode": 420, + "sha256": "7577c33ec33d9e94fb77225929c1f34a3dd94c18fe72a394017811b3b5d53467" + }, + "verify/results/shim/airng/par-t1-br-p1.txt": { + "mode": 420, + "sha256": "8bc9969e2da730d26cc5538b758858a00a4ba6ab2d398458ff4dece1edf8bf92" + }, + "verify/results/shim/airng/par-t1-br-p2-hashes.txt": { + "mode": 420, + "sha256": "7e60fc8615163e8ebccf22fc8910f2e7c4f72a9be7a74bc832bc2a0f64ade0da" + }, + "verify/results/shim/airng/par-t1-br-p2.txt": { + "mode": 420, + "sha256": "7e50a728eb5909bd602a9e6996b908b1b2665c8c983cc0258dad000c8bff8e35" + }, + "verify/results/shim/airng/par-t1-br-p3-hashes.txt": { + "mode": 420, + "sha256": "00ce6b3b4c9dbfd192d09b3b06d91b95576cee8a5a85fccdc36a85547fbdcbc4" + }, + "verify/results/shim/airng/par-t1-br-p3.txt": { + "mode": 420, + "sha256": "28cdf1f6b83c1764f1d1e51a67e3f873566b8503f8504ef52f5b5af24b21c0cb" + }, + "verify/results/shim/airng/parse_airng.py": { + "mode": 493, + "sha256": "3fafa7cf2363620d6a25248d085fbc4e3bd1fdbb9388a6795244834a9a2a2ed0" + }, + "verify/results/shim/ap/ap-probes8-d.shim.log": { + "mode": 420, + "sha256": "115545172568edc6a1d5bb3b559f968aa8a7aaa1f6aeba970daebce98fe56a0c" + }, + "verify/results/shim/ap/ap-probes8-w.shim.log": { + "mode": 420, + "sha256": "8af0897a884bb314958c5e6f2fccd88ff8b1890322dafd3bc904b3f983838620" + }, + "verify/results/shim/ar/ar-r1-ledger.txt": { + "mode": 420, + "sha256": "44bddfc0b9e94812a3a1cfd681a1350caedf2ed8e1174900c2f81c90dc95187e" + }, + "verify/results/shim/ar/ar-r1-probes.txt": { + "mode": 420, + "sha256": "c10251c9bcca5436dc42b2c0bd37b66c144aec4036f2069c2df9340fd764992c" + }, + "verify/results/shim/ar/ar-r1-shim.log": { + "mode": 420, + "sha256": "07003ee203d60a638cc8a1cb0a0f6b8042ba227705b4355f1254312c6dd54e28" + }, + "verify/results/shim/ar/ar-r1-sites.txt": { + "mode": 420, + "sha256": "d1923d549ef3567488d0382ae0ef75fa25c5b1b5812ee5349c5c47aea7a30514" + }, + "verify/results/shim/ar/ar-r2-shim.log": { + "mode": 420, + "sha256": "06dbf04cff5a56b0e55d8e73e5b1e3e9d9235f4afafc8139517b68d676781909" + }, + "verify/results/shim/as/as-probes8-run.shim.log": { + "mode": 420, + "sha256": "cd25c93d8b79e0f0df594fe681917fe880741a54a4188d4d72d2fbc6c42ba8d9" + }, + "verify/results/shim/bp/A-aiorders.txt": { + "mode": 420, + "sha256": "ee9f8bb1073e3bf02e115fdee014f79b11100a0e1e35e308c2bcd4b798302c34" + }, + "verify/results/shim/bp/A-shim.log": { + "mode": 420, + "sha256": "853eab98d09ff1e7a8e7da375a678561b02d6236adec627202ff3bb34d90e797" + }, + "verify/results/shim/bp/B-aiorders.txt": { + "mode": 420, + "sha256": "07daeacf33a16afbed64a8a01ffd26fa73c6d2acd0e6993dd9deb06a7fd93fc3" + }, + "verify/results/shim/bp/B-shim.log": { + "mode": 420, + "sha256": "cde2202333e81cc4eec2c47915181229a68a5fa99879968905a2809c4fe0a79a" + }, + "verify/results/shim/bp/L-aiorders.txt": { + "mode": 420, + "sha256": "28492b0f9be74f61db45eae49b44b41efbc1a3bf6f6d2c888e5cc40bfb7753bd" + }, + "verify/results/shim/bp/L-shim.log": { + "mode": 420, + "sha256": "550d8986a35b3f4742e7522df11bfbf2e832e417ad42cc1bff1a39dd4ee510fd" + }, + "verify/results/shim/bp/statecheck-AB.txt": { + "mode": 420, + "sha256": "dacb5cfa5541934f37b2b1c02b87e809c3f65ba8488aa88d925b295fade0083d" + }, + "verify/results/shim/bq/bq-res-aiorders.txt": { + "mode": 420, + "sha256": "991543eb53fbf1353fe99ed96d4ca358e05f6bac32f00bd1f6dc60fcc002c8b4" + }, + "verify/results/shim/bq/bq-res-shim.log": { + "mode": 420, + "sha256": "7855bd268f69443e7ddfda71873458144728630264703482901bf6d8ffbccd3a" + }, + "verify/results/shim/br/BR-aiorders.txt": { + "mode": 420, + "sha256": "d71e11e7c40aaa740adc55651af556afb9e92768336bc11747ad67151f33f4d1" + }, + "verify/results/shim/br/BR-airng.txt": { + "mode": 420, + "sha256": "04eaeaa688a448f64df00dedfd692b78bca0e3e1207a8292c2fafad507f919ea" + }, + "verify/results/shim/br/BR-shim.log": { + "mode": 420, + "sha256": "bc6ef7aa465c2b1a81d08555174e15fb1a97a207da9eefaa8a6155440869a13e" + }, + "verify/results/shim/br/BR2-deep-aiorders.txt": { + "mode": 420, + "sha256": "b9edb53f7d56c1bb26d3bb77349543dce9564930484bc832475a3a04e5f2ad15" + }, + "verify/results/shim/br/BR2-shim.log": { + "mode": 420, + "sha256": "0de7609693747fdf0abaebd60598af127c918f32561c993715aead91cd24b334" + }, + "verify/results/shim/br/aiorders-diff.txt": { + "mode": 420, + "sha256": "411ceb2bacd62185d25a3c58f199c0bdfcd2759705bef2b36536da3870f73a67" + }, + "verify/results/shim/br/cmp_aiorders.py": { + "mode": 420, + "sha256": "b6c192efb40866aa56f29d9ba2b89e17f18ae0579645db8f34a01010db09cc28" + }, + "verify/results/shim/br/shim.cfg.brdeep": { + "mode": 420, + "sha256": "b8017e344666df816f1191906cf8f54504d631bb7ce9d2f51f6f959e4934ff04" + }, + "verify/results/shim/br/shim.cfg.brprobe": { + "mode": 420, + "sha256": "4f090999dba63ef22ab4993bd6af557e9500819c84f27decc126771f48f98efb" + }, + "verify/results/shim/bs/C-aiorders.txt": { + "mode": 420, + "sha256": "5abc20b68edf6ff52301c01825040e1d6b41b582ba40403ed6c4edc42dcbe4e2" + }, + "verify/results/shim/bs/C-airng.txt": { + "mode": 420, + "sha256": "5a4a56506d1eeb82d3bf0fbba95842566911178a82f0aad9d700a9fe00f1b300" + }, + "verify/results/shim/bs/C-shim.log": { + "mode": 420, + "sha256": "8b8dad987589fd159e789806e89dbcf7a7b40b86446d55e1d0bf10ff25cb8f6f" + }, + "verify/results/shim/bs/L-aiorders.txt": { + "mode": 420, + "sha256": "a03e8c1587633ecbb683c376f30e35e126e98ff0e8204c4ee6b5e2b4fc254104" + }, + "verify/results/shim/bs/L-airng.txt": { + "mode": 420, + "sha256": "8d21083857facd3728446af612b3a97b47e5287a5fe0bdf01423812f8445dacd" + }, + "verify/results/shim/bs/L-shim.log": { + "mode": 420, + "sha256": "246af272e464c715c7abb00471b4ddc404b81143f4065006aa4daec4d82cadb9" + }, + "verify/results/shim/bs/shim.cfg.bsrun": { + "mode": 420, + "sha256": "570b15c208d31a367ec6c6886019693cb17b98d254cebead11ec6746ae5af256" + }, + "verify/results/shim/bu/BU1-aiorders.txt": { + "mode": 420, + "sha256": "944eeb701fcd22480513c34d93f8310541977e89a24ae237bd947aed44092529" + }, + "verify/results/shim/bu/BU1-aivisit.txt": { + "mode": 420, + "sha256": "721f038ef80be92325728fc30f095846b54ff1ac67a41537d4a4d1b97d5e9758" + }, + "verify/results/shim/bu/BU1-shim.log": { + "mode": 420, + "sha256": "28ca02f56823e577662744108965bc3ab1d7241143704ac8ceaacf2e9cd077f3" + }, + "verify/results/shim/bu/BU2-aiorders.txt": { + "mode": 420, + "sha256": "5c388039a3e832465f67b4ca88f3f67550d5189a3a68f33c508c4a467733c9ac" + }, + "verify/results/shim/bu/BU2-aivisit.txt": { + "mode": 420, + "sha256": "19963ed364f47fd965508d96fbf9d1f424938f711f2b1cdc83697f789189271a" + }, + "verify/results/shim/bu/BU2-shim.log": { + "mode": 420, + "sha256": "c0a8c467bc4b4134dc83ca5dedbbfed8dac887b432a56cd12f6e211c8d58daca" + }, + "verify/results/shim/bu/BU3-aiorders.txt": { + "mode": 420, + "sha256": "b6443b3f7db541149f54435f14ba830f54d2f950420f3f0694ff12a8b1eec143" + }, + "verify/results/shim/bu/BU3-aivisit.txt": { + "mode": 420, + "sha256": "fe67a4a1cc6a67e06b2eb5675b4b8543ab9f25ea39a18d7f4c83bce74482e0cc" + }, + "verify/results/shim/bu/BU3-shim.log": { + "mode": 420, + "sha256": "0a802ec556c87f44efaa06f211e75d9b89a66ac6db5a08e34d2a7eae992121ed" + }, + "verify/results/shim/bu/claim-order.txt": { + "mode": 420, + "sha256": "7135e3ed0204a4615e546bc882992073d4b48ee42ea341186c32b6b3dd3dfc47" + }, + "verify/results/shim/bu/claimcheck.py": { + "mode": 420, + "sha256": "85c5ec747f12cf37ec2dbc4021447909eeded68ecd1abb697a6fb60005a54aff" + }, + "verify/results/shim/bu/shim.cfg.bupin": { + "mode": 420, + "sha256": "6b37b047adc95f7c08b6767cdec5bd715a8851f14bff7f187772835d1cc032a7" + }, + "verify/results/shim/cr/cr-N.log": { + "mode": 420, + "sha256": "d5459e6dcf44fbe55d0f60f1ac40d68bed96319bb55986cc24a1b9ca0d8103e0" + }, + "verify/results/shim/cr/cr-R0.log": { + "mode": 420, + "sha256": "3b703881aa2b9a1c111201ff9543f2dcae0f948567ee877df275a1093bb567f7" + }, + "verify/results/shim/cr/cr-R1.log": { + "mode": 420, + "sha256": "8df6af84f74891ff9b0b02fa150641f5fadcd0419bc53c41cbe80bf14ec9c712" + }, + "verify/results/shim/eventlive/c6b-loaded.png": { + "mode": 420, + "sha256": "f442d4b211a47b331cef9a255e83732b80a1ede70ac200596c796ac0aa320017" + }, + "verify/results/shim/eventlive/c7b-turn3.png": { + "mode": 420, + "sha256": "3e070abfbdf4efd2662951049f8545f328aa172d64d00b9c5a1f4243426e803a" + }, + "verify/results/shim/eventlive/load-dialog-8files.png": { + "mode": 420, + "sha256": "e0fc5af16042a70b53bf7d44220db56c56a466c22c4abd641557e94b8e6c1693" + }, + "verify/results/shim/eventlive/shim-zuul.log": { + "mode": 420, + "sha256": "f9d184b33c46cab9d497f7a38056c099ce2ff9b5e8149f563a2353d91985fea1" + }, + "verify/results/shim/eventlive/shim.log": { + "mode": 420, + "sha256": "e65f2e3efa1ce8f70c483bb966448239923db2d3924c709a669bb1a890411b0c" + }, + "verify/results/shim/eventlive/t7-after.png": { + "mode": 420, + "sha256": "dc0a3e8f5a5c9032ead266d106fa69a57677711eb807d26376f29baa6ec0b934" + }, + "verify/results/shim/eventlive/zuul-turn1.png": { + "mode": 420, + "sha256": "f9af979ed08315c0a8d644af800318634b3641628f710f3f9b4d2c77d4f70fdc" + }, + "verify/results/shim/l1/README.md": { + "mode": 420, + "sha256": "f008081756d99825aa81d2802869476f8341f81aeb8c4dbbb77502cf76db5145" + }, + "verify/results/shim/l1/cdiff-frames-2-51.txt": { + "mode": 420, + "sha256": "57cb1911c5bfc7bdfacafc6bb1ad382fc05f46fb9cdcee4479d861af48e585c1" + }, + "verify/results/shim/l1/cdiff.py": { + "mode": 420, + "sha256": "2ace41ce6017cfac8758d8b9955f02de84738d90067a7dfadeb8bffffc842027" + }, + "verify/results/shim/l1/rep.py": { + "mode": 420, + "sha256": "1a7a3819da8e9aeaaf213a62b696388b0a9489924c964407536831b5f7dd9488" + }, + "verify/results/shim/l1/saves/l1-t1t2-post-hooksoff.sav": { + "mode": 420, + "sha256": "e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d" + }, + "verify/results/shim/l1/saves/l1-t1t2-post.sav": { + "mode": 420, + "sha256": "62061918176e344106e82357e58acc8adec488f6b2969831cb99a84cf25e31c5" + }, + "verify/results/shim/l1/saves/l1-t2t3-post.sav": { + "mode": 420, + "sha256": "2177c659d8dbc39cf7485abe367d42d55cc42cc9a61949d403dcbc79989ec32d" + }, + "verify/results/shim/l1/saves/l1-t2t3-pre.sav": { + "mode": 420, + "sha256": "641a33f06b2fe1c1caf0c4994442bf13a4b03f25a85b34a9875cd22b75715896" + }, + "verify/results/shim/l1/seed-two-processes.txt": { + "mode": 420, + "sha256": "d60412049ced59705284a46078f1906e1aad4140f90db2169e08aeb9530dd985" + }, + "verify/results/shim/l1/seedrep.py": { + "mode": 420, + "sha256": "a06de5d5ccc1e87808eb3877534076340ef5330bee9a86953b8f4dae0268e087" + }, + "verify/results/shim/l1/trace-et1.jsonl": { + "mode": 420, + "sha256": "f21a213bc56983bc94f24303b0837b160f93bfb7e3ca6abdbf2e18321f8dfa19" + }, + "verify/results/shim/l1/trace-et2.jsonl": { + "mode": 420, + "sha256": "6e44b0fc541c3082f91b115de67f5315f43b9db21f0696b856cfff2ead51323a" + }, + "verify/results/shim/l1/trace-oracle.jsonl": { + "mode": 420, + "sha256": "ad9ecbe79a71c84930302868850806798228fe0f2e625b442dd3ed579c05092c" + }, + "verify/results/shim/l1/trace-playforward-f51.jsonl": { + "mode": 420, + "sha256": "6ed0af385dfe7288ad2c994458c8f5d75fc8e29b603dd6607a3703591d25eeb4" + }, + "verify/results/shim/l1/trace-seed-proc1.jsonl": { + "mode": 420, + "sha256": "120074583eb02cd4c3a29aab5826f789d52a6146930b1763f9b0bb824e9a350a" + }, + "verify/results/shim/l1/trace-seed-proc2.jsonl": { + "mode": 420, + "sha256": "03dffeafeff0c33d926207f869741dc544141425c8f665bf58aad4fd363e2f95" + }, + "verify/results/shim/l1/watch-arm.txt": { + "mode": 420, + "sha256": "f8d5811c938d16d003a72a97f2b4b33112914a7ee378fa2b334282616592943e" + }, + "verify/results/shim/l1/watch-hits.txt": { + "mode": 420, + "sha256": "1bf62ac965036a189055cd59a92007c70a2a6aca307df54ce8ccb997048f43d5" + }, + "verify/results/shim/l3/l3-probe-run-shim.log": { + "mode": 420, + "sha256": "f5cd336971ae3d3eaff642e80d9defa20ec2e1ee11e212a082c24365b18d8684" + }, + "verify/results/shim/l3/l3-probe-run-watch.txt": { + "mode": 420, + "sha256": "8d969595789c690a688f7b8fac05288c614d5d9210388ca94315158948c85f24" + }, + "verify/results/shim/l3/l3-spy-run-shim.log": { + "mode": 420, + "sha256": "5abfd08445e9e8139945b095ddddfb56480062019ce6d40304a440c317f21fd1" + }, + "verify/results/shim/l3/l3-spy-run-watch.txt": { + "mode": 420, + "sha256": "c669ccf79202e7060c153151e4fe1be96acf4030cb64aa71bd6a5c212b550b47" + }, + "verify/results/shim/m0-main-menu.png": { + "mode": 420, + "sha256": "465207fda4722ca53585b71647a08b1149944036792a072e7c34e2c437a3e37c" + }, + "verify/results/shim/m0.log": { + "mode": 420, + "sha256": "581d63139503892b6aeeff71acb742143393e9f107aa1f3605d8c028c927cad1" + }, + "verify/results/shim/m1-shim.log": { + "mode": 420, + "sha256": "35401ea82b9a64dbfdb54c282c06c51d7b696afd4ea2794e16071e0fd5c7cbef" + }, + "verify/results/shim/m2-scout-shim.log": { + "mode": 420, + "sha256": "8c46117bdde6b6911a4d77b059b40803d4966652990c8fa3ed67773e5db0459f" + }, + "verify/results/shim/mf-after-shim.log": { + "mode": 420, + "sha256": "86601372b980828171e98fc71afe865f207b1745ef4dcdca646a618c91d17426" + }, + "verify/results/shim/mf-after-turn2.png": { + "mode": 420, + "sha256": "a1f83011ff96e990d7cc80f8306e8fe0c58b96f84eb73ccb6cb013019900133d" + }, + "verify/results/shim/mf-after-turn7.png": { + "mode": 420, + "sha256": "313f3863ab901320174c8ff7cf6f1f6b0d5b3d9d7a2f8999eae6413aedc46fc5" + }, + "verify/results/shim/mf-before-shim.log": { + "mode": 420, + "sha256": "8377a87c7ed05fd0cd7b61e3f1d5fc9c2b9fa294f812c67183d4ce31323a64b1" + }, + "verify/results/shim/mf-before-turn2.png": { + "mode": 420, + "sha256": "c9805791f402ec159fcc6acdd283120eae8536b230666d3049374525595b589f" + }, + "verify/results/shim/mf-before-turn7.png": { + "mode": 420, + "sha256": "3b880b8f96c4cc328aaff8e41068db29b295be8f000c432e321a51b6030b1272" + }, + "verify/results/shim/mf-human-home-no-ships.png": { + "mode": 420, + "sha256": "dfda3e9784eefdc7b75d04908e95c3a192eda7796685907c65bfde3068d6f2bb" + }, + "verify/results/shim/probes/human-t3-5-perturbed.txt": { + "mode": 420, + "sha256": "9b594ab18cdd9aec4fdf807b4d97576191bc6fd48a85cc872c222b515d0f7c01" + }, + "verify/results/shim/probes/human-t5.txt": { + "mode": 420, + "sha256": "0ddd9f0391a3a5d655f1809a9e79d537badd8071f8834e58bdbc7f95d9ff1320" + }, + "verify/results/shim/probes/oracle-restore/h-oracle-autosave.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/shim/probes/oracle-restore/h-oracle-endturn.sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/shim/probes/zuul-t24-25.txt": { + "mode": 420, + "sha256": "50567b7cb1f008d025baf6cb4b4ad7af7d767a2182afd082c3ac1b1a66c79541" + }, + "verify/results/shim/recap-b1-shim.log": { + "mode": 420, + "sha256": "601cd4cbbec3e8c1f7776eadc4203256ec4c5d1e3e180295369727e1da69ff37" + }, + "verify/results/shim/recap-b3-shim.log": { + "mode": 420, + "sha256": "7c5110a9d4431cc03729a7bddcb13ee69a6d428199051e175b0921391fc02a80" + }, + "verify/results/shim/recap-misc-shim.log": { + "mode": 420, + "sha256": "7cadf2eadb08979cda39fe7e3ed6cfa3f62bdbcd256fc7550b3e27c3f08c9b3e" + }, + "verify/results/shim/recap-misc-turn7.png": { + "mode": 420, + "sha256": "2c1451ded36ad79389f0eb3db098b4e0b0a6f12495d64c832f6e093374005c29" + }, + "verify/results/shim/recap-trace-shim.log": { + "mode": 420, + "sha256": "56da143a92b2edda727862a6fd4a056c716153e23cfddbde076e218ce4c4285f" + }, + "verify/results/shim/recap-turn2-loaded.png": { + "mode": 420, + "sha256": "62a42c44f99d8a53bca735d54a5adf48b89449bb859e859ec573cb40e1a7f2d0" + }, + "verify/results/shim/tailrng/save_rng_delta.py": { + "mode": 420, + "sha256": "a9a04b131427a43372d87688b8eaf230a82a79e2c3c241a90ff4eb31e039749e" + }, + "verify/results/shim/tailrng/z-t5-autosave.sav": { + "mode": 420, + "sha256": "b2124798470d85ea86b0e9e4abfd9e23f3be73caa1115dd7614021be76305939" + }, + "verify/results/shim/tailrng/z-t6-autosave.sav": { + "mode": 420, + "sha256": "2ce6aef9d49ea238455f3ac680556c6a251065af3e28b6540fe09597ae38571c" + }, + "verify/results/shim/tailrng/z-t6-endturn.sav": { + "mode": 420, + "sha256": "afb112896c0236fa715ab3c10139958294085bb2066e22a6d7b76deb0dfa46dc" + }, + "verify/results/shim/tailrng/z2-autosave.sav": { + "mode": 420, + "sha256": "b2124798470d85ea86b0e9e4abfd9e23f3be73caa1115dd7614021be76305939" + }, + "verify/results/shim/tailrng/z2-endturn.sav": { + "mode": 420, + "sha256": "8648957fecf5041233f9add4c8173f78981f026f133ecdbecdb89ddd10917048" + }, + "verify/results/shim/unlock-shim.log": { + "mode": 420, + "sha256": "20a6625b369acb773543e530f1bfdc8b7eaca5c6b58415cc5009bb9858e16f22" + }, + "verify/results/shim/watchpoints/w2-modcount-status-2turns.txt": { + "mode": 420, + "sha256": "335be910dc11a20c9fb80f3b0f37f04fd50a9d8074697bb5365c3fea02790b74" + }, + "verify/results/shim/watchpoints/w2-shim-log-excerpt.txt": { + "mode": 420, + "sha256": "9a344045270e3815004a3376eccfbd030372faba54374d9b6626fd80740b8b13" + }, + "verify/results/shim/watchpoints/w3-modcount-turn1.txt": { + "mode": 420, + "sha256": "328a2319e320f5382e82ad497b6b73245c397cf67515e8a27fa9712418af81ae" + }, + "verify/results/shim/watchpoints/w3-shim-log-excerpt-turn1.txt": { + "mode": 420, + "sha256": "a9b3c20f90a76ee624bde6ee4cae9d1ff1f2baa67aa770a0e70042cb44d11915" + }, + "verify/results/shim/watchpoints/w3-shim-log-excerpt.txt": { + "mode": 420, + "sha256": "af9fe2258fe4168f6066768809c509380183f61bc337331392c5202b900d906a" + }, + "verify/results/shim/watchpoints/w3-tshn-containers.txt": { + "mode": 420, + "sha256": "08eab48d1a202f975f1be87e2279379646142f8b22d9dafc56295399083ed0af" + }, + "verify/results/standalone/cv/cv-input-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "d29f3514e4209954d6c068f34285615aef5f4627ba4627ce97c0e65f93620159" + }, + "verify/results/standalone/cv/cv-leaf-worklist.txt": { + "mode": 420, + "sha256": "0f309711de89cc10cf940d0d4b051b5052ce49a3cc0f3f80c532b50256410778" + }, + "verify/results/standalone/cv/cv-noreplay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "3734f197cfefd017dbe562fd421d40859bfc2c37d9ac2cedf9c7ddd340a3a4a7" + }, + "verify/results/standalone/cv/cv-replay-run.log": { + "mode": 420, + "sha256": "7372c7da437ece21098cc6f66d0631e146d8aae14a9242bd2278a9922a7f7c02" + }, + "verify/results/standalone/cv/cv-replay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "1932158abec82f45b9b838f4cb79b1088190ca5281d388f57356af7776e96950" + }, + "verify/results/standalone/dt/dt-canonical-after.txt": { + "mode": 420, + "sha256": "f32fdcf7d6431293133e951045b42a55e8a27d75cd859ad08cd719e5fb696712" + }, + "verify/results/standalone/dt/dt-canonical-before.txt": { + "mode": 420, + "sha256": "b56160cfdcfa0fff25be2aa566959261e375004905814803e231889da665188f" + }, + "verify/results/standalone/dt/dt-observed-leaves-remaining.txt": { + "mode": 420, + "sha256": "e14bd20e60480f98a564e585c0d25d2e758f71016811b8981dbdacd9d51c0c82" + }, + "verify/results/standalone/dt/dt-replay-run.log": { + "mode": 420, + "sha256": "4b7907fc4e735b1c12e3cf64671079abaad757aabd752b134a9fb27d065656cd" + }, + "verify/results/standalone/dt/dt-replay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "8ddb84e7e6c2f663b1bc4b9611a56a46aac9d09863dcc5be765cb70dc9642c22" + }, + "verify/results/standalone/max-income-oracle.json": { + "mode": 420, + "sha256": "245796e0aea5f5c2238686cba10c651156117fb454805553b2508a8a8fe71a69" + }, + "verify/results/standalone/report.txt": { + "mode": 420, + "sha256": "b47e90432eaf38149f2ecb5316d1962813b6b1423848e36fcc9435ad1f5485df" + }, + "verify/results/standalone/rng-oracle.json": { + "mode": 420, + "sha256": "98a364c80f69d6a84b86c3f9ccc16176d9e769ff061569b0c0ddfced53f9146c" + }, + "verify/results/standalone/rng-oracle.txt": { + "mode": 420, + "sha256": "3496a217a7e4f80bb18c1b067eaedcafcf7bdc877460c6346606fd7f6a55b877" + }, + "verify/results/standalone/status.json": { + "mode": 420, + "sha256": "d38ca6222c83df3a5886e6b32a30772c7174cc0e584f4a3beabedc05770df9cd" + }, + "verify/results/standalone/t36-turnrecord.md": { + "mode": 420, + "sha256": "b017a93ad04af69ef469cd8ea536dff4cab17140d20b3665e7c89533ab5b8a84" + }, + "verify/results/state-checksum/ad-oracleA-vs-oracleB.txt": { + "mode": 420, + "sha256": "b6c440e20108ad2727a7d7aa32a4bd673ec03ca4372461797705d619de1ba48a" + }, + "verify/results/state-checksum/chain-turn1-3.json": { + "mode": 420, + "sha256": "33941d0dd77bfb79e4302f82a410f5f18fe3ae1ade684b5b59c6ed352789a696" + }, + "verify/results/state-checksum/chain.txt": { + "mode": 420, + "sha256": "ae1037dd8394b258ce91262877d348a0561c5f5056cfae74cc0d058e4166aa83" + }, + "verify/results/state-checksum/float-census.txt": { + "mode": 420, + "sha256": "c697c0f187ee8a8ebb157cbff8d7ae42c92f36a501b16acd9f9839a0ffc306a9" + }, + "verify/results/state-checksum/identical-roots.txt": { + "mode": 420, + "sha256": "1143fabfe96954440542adcd3830ad1d862be6c091f3c1b2e63e92a2751703e7" + }, + "verify/results/state-checksum/resave-localisation.txt": { + "mode": 420, + "sha256": "85f4e8fe3581ba5d0ae74974d757c4c2fddc008f3fbe6781891ae8ef65aa693e" + }, + "verify/results/state-checksum/roots.txt": { + "mode": 420, + "sha256": "6ea7ad668703baaff870720683bcc13beff557cebf8e7843526d6677e5b5ef68" + }, + "verify/results/state-checksum/turn2-to-turn3.txt": { + "mode": 420, + "sha256": "3649c86742460a54d89714df1917508f76952c44c07cb7fbc19010910c5df0f4" + }, + "verify/results/turncommands/br2-turn27-deep.tcb": { + "mode": 420, + "sha256": "329b9c3f1e9f85ddeeb71148bd5c0e38f7d26445ed349df60ffbfaf63db46102" + }, + "verify/results/turncommands/br2-turn27-shallow.tcb": { + "mode": 420, + "sha256": "d8346969421a92fa199d0b9faafa642dc2e71a527b08d27984fe73ee70ecbd6b" + }, + "verify/results/turncommands/cb-turn1to2-pinned-run2.json": { + "mode": 420, + "sha256": "01e572975339fbe8a242b2438719173bd5bb4f4916078e5887026408923eb356" + }, + "verify/results/turncommands/cb-turn1to2-pinned-run2.tcb": { + "mode": 420, + "sha256": "16e349db6c46e46520cd2e5f0a9fcf70b537dce878324dd873418ef6cebd8658" + }, + "verify/results/turncommands/cb-turn1to2-pinned.json": { + "mode": 420, + "sha256": "2d4f108b8ac6b1e582382ac25d53f354c293e7caf390b8462d15beaf8e43e01c" + }, + "verify/results/turncommands/cb-turn1to2-pinned.tcb": { + "mode": 420, + "sha256": "28ebfecc3495cc4f5b2892e420cb1b83f3cbdb6b7aabe107f4b1d18233a06094" + }, + "verify/results/turncommands/cb-turn1to2-run1.json": { + "mode": 420, + "sha256": "c9de70196af5453df15cfebcb92c973dfed9d54ffa0dc0a397839cf951ac9b58" + }, + "verify/results/turncommands/cb-turn1to2-run1.tcb": { + "mode": 420, + "sha256": "5cdcfb3ade6cdfb2c00c234f5535c791780230f520d27be14f617462347b4948" + }, + "verify/results/turncommands/cb-turn2to3.json": { + "mode": 420, + "sha256": "8a0d4fc9efae9dcb4eca0de41bf28444d79eb5a4fd4e426671a4d80ab5a46f44" + }, + "verify/results/turncommands/cb-turn2to3.tcb": { + "mode": 420, + "sha256": "420a5d03f2a4ecfa0789835cc46f98961d11bbd7c7fd5f59dc28301aa0b65b6b" + }, + "verify/results/turncommands/l4-turn1to2.tcb": { + "mode": 420, + "sha256": "1b9faa7f8aad9196e36cf1c450e340f37c502a69ccfcaaad7e289bd7b4727b12" + }, + "verify/results/turncommands/l4-turn2to3.tcb": { + "mode": 420, + "sha256": "b0443f176c3915389278de608a8e7c63fa48d4777b924c0e383c7279f2a297e0" + }, + "verify/save-reader/SAVE_FORMAT.md": { + "mode": 420, + "sha256": "5ac2556b6c063c9296ef29e8514cc312983d48a8e2c2832f504c970629990b33" + }, + "verify/save-reader/fixture_joint.sav": { + "mode": 420, + "sha256": "fbe41595e50bb580786f36b197d5b85f87820974c545107c864fa2f1862af3f1" + }, + "verify/save-reader/fixture_split.sav": { + "mode": 420, + "sha256": "3909f12d021bf840617dc8d599841b64d67be46e1c6882cba7728d312d310071" + }, + "verify/save-reader/save_reader.py": { + "mode": 420, + "sha256": "2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35" + }, + "verify/save-reader/save_writer_stub.py": { + "mode": 420, + "sha256": "8343ad15f742ee1b9cd62108efbc9c4b2718c3807442e3dfcfa9513ced7d3638" + }, + "verify/save-reader/test_save_reader.py": { + "mode": 420, + "sha256": "29f609d037eed99bb5444004facbff7b2c5c36fae568e815810585fdc3ddd393" + }, + "verify/state-checksum/STATE_CHECKSUM.md": { + "mode": 420, + "sha256": "5680299a4df27e30cdb545d9d2a640caf9299d61acb662b9512589e4390954e1" + }, + "verify/state-checksum/float_census.py": { + "mode": 420, + "sha256": "a568aad8b9f38aba2474f33941550bf948d050694a1d04dc5c85d15687223ae9" + }, + "verify/state-checksum/run_validation.sh": { + "mode": 493, + "sha256": "bf84b999d2b90368703e80235bac0258b70a1c37dd1902c9205a914a59cb1fc2" + }, + "verify/state-checksum/stability_check.py": { + "mode": 420, + "sha256": "8e640561b05decf590524fbe0dbf3b76a5e2f9c7fde93e005ca6e79464c305f1" + }, + "verify/state-checksum/state_checksum.py": { + "mode": 420, + "sha256": "ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8" + }, + "verify/state-checksum/test_state_checksum.py": { + "mode": 420, + "sha256": "d0ccf8e8390fd0a5d76a8695a490d85dc7e8e415a06ec50b592c57474cc9a73b" + }, + "verify/tooling/README.md": { + "mode": 420, + "sha256": "b05249530d65d43220c1e5c4666939c360d6139ed404a8881f6ad0a9c5c27af6" + }, + "verify/tooling/fixtures.py": { + "mode": 420, + "sha256": "56cccc88b9b9468e07c9ddff39d65813098053ec9e8f00432736906389f200a7" + }, + "verify/tooling/host-tests.json": { + "mode": 420, + "sha256": "90833c99e2749ff890b16b943f43f6ebfc1a1c611f2ed1e40555426fded45c97" + }, + "verify/tooling/test_tooling.py": { + "mode": 420, + "sha256": "bb8d15960dfda13f15cffc57f3b669003b127b4dedbf34100bb4a51c29dd3c6d" + }, + "verify/traces/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/traces/ac-probe-baseline-turn15.jsonl": { + "mode": 420, + "sha256": "a2f4e410f6a8d77f7680b4a69b5b2ac2f59fa80515b0cfe8209e7fec8e4a5b6b" + }, + "verify/traces/ac-probe-turn21-turn23.jsonl": { + "mode": 420, + "sha256": "2bb9317b82744c0da36ef6d9c1a78f31ebacea49b82a18005c0cc75bad62d345" + }, + "verify/traces/ad-r1-turn28-turn29.jsonl": { + "mode": 420, + "sha256": "cde7a1e010aa6195163f3b9320aa5c496fd8c271e9648c90c7319837dd967571" + }, + "verify/traces/ap-probes8-deploy-turn15.jsonl.gz": { + "mode": 420, + "sha256": "e257d5ea3fcb4be8da570d6a5589022e6ba412ff2712f4f06832812d8859e08a" + }, + "verify/traces/ap-probes8-turn16-turn26.jsonl.gz": { + "mode": 420, + "sha256": "df4fb35d9824799d8be79f3a9e976b55b7cd0fb5488b3e12711d04eb3c320f13" + }, + "verify/traces/ar-r1-turn38-turn43.jsonl": { + "mode": 420, + "sha256": "f8653cbd1956346816897b313031c5d70898144d1c84b1c849ac37bfe3bd993c" + }, + "verify/traces/ar-r2-control-turn38-turn39.jsonl": { + "mode": 420, + "sha256": "c1068652ddf54d2ff266c1dc1ef1e69ea663f5d2a83143408f77ec782b3dd988" + }, + "verify/traces/as-probes8-turn15-turn16.jsonl.gz": { + "mode": 420, + "sha256": "024bb0663b167eb364c8e138bae0bf10403860c195bd593cb56f60281060c4e8" + }, + "verify/traces/b2-final-menu.png": { + "mode": 420, + "sha256": "5a95fe260c9cb13dad5fc6f00460819107db93f4ac89f455077ad056600f83fd" + }, + "verify/traces/b2-shim.log": { + "mode": 420, + "sha256": "c31cf01af3659b7fdf008ff44f88f67ee4016dcfb30fc4a72b4d72ea0da8e404" + }, + "verify/traces/b2-techfx-compare.jsonl": { + "mode": 420, + "sha256": "f0202f45b276db6744c80768f12695153812bc882de688cf64705ed6a52f243c" + }, + "verify/traces/b2-techfx-golden.jsonl": { + "mode": 420, + "sha256": "43639e75bd9d510ed270c9cfcbb0c9665f5a6546f748ba81eba3f015e7ca233c" + }, + "verify/traces/cr-N.jsonl.gz": { + "mode": 420, + "sha256": "0071ae72a142533ffb91f9f04caa6704102c826761ff5ae24b57a1c3e9652e46" + }, + "verify/traces/cr-R0.jsonl.gz": { + "mode": 420, + "sha256": "6228c88cebb4dad2158e5586ecbcf71d1160116f2f4a2a8bc020658da8d7d706" + }, + "verify/traces/cr-R1.jsonl.gz": { + "mode": 420, + "sha256": "73f5f15b3343381cf3f973caaf74588fd3d0b6759de1ddcf9e12b9b3ebf29713" + }, + "verify/traces/eventlive-b3-t1-5.jsonl.gz": { + "mode": 420, + "sha256": "9cb344f1d8a3beb4bc1a2bf16baed6c38667443ead9f66fa0f53474a683d263c" + }, + "verify/traces/eventlive-b3-t1.jsonl": { + "mode": 420, + "sha256": "2d9962de9a7ea7fb28b33b72209706b4a27673096f71c8789f9f10ac465f387b" + }, + "verify/traces/eventlive-b3-zuul.jsonl.gz": { + "mode": 420, + "sha256": "0ee09bb884799e72c6a617ab02e741a7ba791ff458af439b9947a87b368a64de" + }, + "verify/traces/h-probes-human-perturbed-t3-5.jsonl.gz": { + "mode": 420, + "sha256": "2567f8ccb6276a4d647c4f4b88d14f7ae63aa4d1797f672a9bd9c7c86e4d7473" + }, + "verify/traces/h-probes-human-t5.jsonl.gz": { + "mode": 420, + "sha256": "92964779111573dc72e6a1845217cd7d709c9900594a106b3de7b59c2b7a88a7" + }, + "verify/traces/h-probes-zuul-t24-25.jsonl.gz": { + "mode": 420, + "sha256": "0966294af27b49159b1e72e683abc0b59fd52cc9bfd9f517130d30cedf7efa29" + }, + "verify/traces/l3-probe-turn8-turn15.jsonl": { + "mode": 420, + "sha256": "d1b5436f917bb4f6f74bd7b1967dbd0626db2c3a5cbc1d67684ef9f010826676" + }, + "verify/traces/m1-compare.jsonl": { + "mode": 420, + "sha256": "f0f6fd15bc73008e43e20d6ed4c4dd91fb2ec8b40935bfd3cc000d8a84ea6731" + }, + "verify/traces/m1-trace-golden.jsonl": { + "mode": 420, + "sha256": "4a4ddc031fb26a8f8b10dace297c73670f53dcbd250a9be94c0e31c9bb44dcc5" + }, + "verify/traces/mf-after-compare.jsonl": { + "mode": 420, + "sha256": "2a894892977176df1a9d6c8199b0f81b48c7bcac15d2c0e7786441fc6125226e" + }, + "verify/traces/mf-before-compare.jsonl": { + "mode": 420, + "sha256": "ee005097ebaac9f30c63f1e400fdf19a47e88010c71d215885234986d122410e" + }, + "verify/traces/output-ref-turn2.jsonl.gz": { + "mode": 420, + "sha256": "7af583350545501414eda38439f2d0fa39149342d9001d2926e2a4e4fdd5cdca" + }, + "verify/traces/output-zuul-and-ref.jsonl.gz": { + "mode": 420, + "sha256": "d581cb50f07766911fa59fa1df1524b33a9df6eec06226966efd5f54f09b6fb5" + }, + "verify/traces/recap-b1-compare.jsonl.gz": { + "mode": 420, + "sha256": "0ce1c92028a8cd10a38d7cca72f90c37ccbd844f24a1950bf0eb6e75739b44e2" + }, + "verify/traces/recap-b3-compare.jsonl": { + "mode": 420, + "sha256": "6ed3bcd99b4657d614bf63cc0fc2dfff650f4cb14e51086ea98c21bccbcf5fa8" + }, + "verify/traces/recap-golden-trace.jsonl.gz": { + "mode": 420, + "sha256": "d62431e9461ffb1b66adc16a39542b86fa8e0cf54a0ed446a8781c4d75a6c3bb" + }, + "verify/traces/recap-misc-compare.jsonl": { + "mode": 420, + "sha256": "d7c4446d45a9cab2af3da4a0d76f7a42c245da1f59db96fddf31d8b1f2c436ed" + }, + "verify/traces/tailrng-drawsites.jsonl.gz": { + "mode": 420, + "sha256": "5c1806e2b1452226674013119e3b220f3cf42be2ad8b0ed998050ad65d1f8415" + }, + "verify/traces/tailrng-refturn2.jsonl.gz": { + "mode": 420, + "sha256": "c33c6cafe015bda6acf5ca32b0c9595e1611f4ac82ecd3adaff8315c7bd3e560" + }, + "verify/traces/tailrng-zuul-long.jsonl.gz": { + "mode": 420, + "sha256": "213e7dd8a6809dd93190f41c87218e802f1fbe77d44d598f287c2a19544063af" + }, + "verify/traces/tailrng-zuul-noderoute.jsonl.gz": { + "mode": 420, + "sha256": "9476ee3b9b397ca9e20bc92eb887c109a075487cdd750746af051797e8838115" + }, + "verify/traces/unlock-b3-t1-5.jsonl.gz": { + "mode": 420, + "sha256": "f6e27a60bf6c74eb98d8bec50146fe1996642285ca008c6a70c3cb148c6ba54c" + }, + "verify/traces/unlock-b3-t1.jsonl.gz": { + "mode": 420, + "sha256": "bfa53bba3e59d17dd330e38ef52fd04fd92f05f3ad357fefd77388d083b49a05" + }, + "verify/traces/unlock-b3-zuul.jsonl.gz": { + "mode": 420, + "sha256": "d94c635105a75a68cb811a3881faf371678c075d240998f48fcf348b8459063f" + } + }, + "manifest_sha256": "e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9", + "path": "/tmp/opencode/sots-final-research-re" + } + }, + "source_before": { + "engine": { + "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", + "files": { + ".gitignore": { + "mode": 420, + "sha256": "5103c9533f0d31fea29c0cc85d543692af84a697416dfa7557e31c9843210145" + }, + "AGENTS.md": { + "mode": 420, + "sha256": "7d1d4bc05c35e3354a77b3c8d5d2c04fb9d6658d09e87bc814a50bc3d2033fb7" + }, + "CLAUDE.md": { + "mode": 420, + "sha256": "15d60c3d592302a2854df8bf6d39c0a578c22b9273a633447e10b76fd76291f5" + }, + "CMakeLists.txt": { + "mode": 420, + "sha256": "6e9791511ea23bf8bf5f7f58617a7e77bbe5006829609e425e565c11c1e8d7ed" + }, + "CMakePresets.json": { + "mode": 420, + "sha256": "fcd1dfe3989ee4f56fa3e419059e1db5621922165edf05f13cfe8e5d786d8bb0" + }, + "CONTRIBUTING.md": { + "mode": 420, + "sha256": "26a381fe08feb51f861655f77de4e558f056d1dba79162a2e82513a92d0e6506" + }, + "LICENSE": { + "mode": 420, + "sha256": "eedebad43ea495111bf4451d78cb440309d90a733d6a36445699dde0629f1858" + }, + "README.md": { + "mode": 420, + "sha256": "66c2437fe4f074e6499de50b0d5f0d013bc290333f4d4bf554b541261885a0c1" + }, + "cmake/toolchain-mingw-i686.cmake": { + "mode": 420, + "sha256": "231c0b79868a77d54cc6619f0b4ea18454964a1a078806f44a6ffe3fb7741a9b" + }, + "docs/A2-alliance-and-modcount.md": { + "mode": 420, + "sha256": "0c0c45c31d5d64124f3b91a161f8a2f4732c8a5d7f6bc524baf4d59f8a191701" + }, + "docs/AC-predictions.md": { + "mode": 420, + "sha256": "ab9e41714abdbc32e620d8a2068be8ebd2fc8898ba149113c66ccda248b4bcda" + }, + "docs/B1.md": { + "mode": 420, + "sha256": "42b61bbfc135cdcd0f1a32f63164b88e67106400de7f08f543f118eccd814364" + }, + "docs/B2.md": { + "mode": 420, + "sha256": "87dfd333ee15681a3aa4de58cf1b14ff8240e75afabc05012e0f28531cb4b8b8" + }, + "docs/B3.md": { + "mode": 420, + "sha256": "fb65c41037b6cd6252c67e5244d492a3a17ea4ba2ddae821d49fe0a879528518" + }, + "docs/B4.md": { + "mode": 420, + "sha256": "22547b3d2960684e52a380fb07f43a75bf50aebf93cede689f297cf38f4a012d" + }, + "docs/B6-ship-construction.md": { + "mode": 420, + "sha256": "9c5c4fd2059af965e317c9db5b7fbfc440397ddfcdc5bf7860115f6a8a0532ab" + }, + "docs/CB-capture.md": { + "mode": 420, + "sha256": "ce45a9082588051eda7438016dc66eb28bb4afda98b82cdc20102c4ca53529f0" + }, + "docs/CB-predictions.md": { + "mode": 420, + "sha256": "ba51538b018cbb403978f97ad45d4743937d49ba55c8f15d7af8f8e4aa441f0f" + }, + "docs/E-events.md": { + "mode": 420, + "sha256": "de98795aadb1617eab91815ebc34818bef8b52c36ba18b4521170065bfd2d201" + }, + "docs/EV-events.md": { + "mode": 420, + "sha256": "e7d9536cd23f5d800dc97f68167bb738088a16136004419f28de92d7fe1bcfb9" + }, + "docs/G-wire-schema.md": { + "mode": 420, + "sha256": "19db69ae359ddbd2a0509d02f1c616f939e0428480a8bb33c81f69145323a591" + }, + "docs/G3-civilian-growth.md": { + "mode": 420, + "sha256": "38ea3a8ddc3fdca258294d949c4cd2af1a930cdd9ba612d5e8fb48bc446bdf30" + }, + "docs/H-probes.md": { + "mode": 420, + "sha256": "f23e4d4cbc8c9a3000a0a58ed994dddd95466cee1ec45e961685e86dde4dc54f" + }, + "docs/L1-predictions.md": { + "mode": 420, + "sha256": "af97dbc9f15b9c2e6f223c89bac17826056fa4f3bced3c01513c1ad4d9ac1754" + }, + "docs/L2-predictions.md": { + "mode": 420, + "sha256": "18213ce5f3375d478f266de85c38c2b04ca2ae8ab4a2023780dca161fa14f460" + }, + "docs/L3-predictions.md": { + "mode": 420, + "sha256": "d1c9c0006079f47ef0d3371f4a2c2df2fe4f08ebdad0f8a12d1b0de35b15ae7e" + }, + "docs/L4-ai-orders.md": { + "mode": 420, + "sha256": "b04127c5158a882f252b2b6e8afb2d131f0de623cc0c62c86c612af803d75835" + }, + "docs/L4-predictions.md": { + "mode": 420, + "sha256": "6a194ae336920f13d8e4a44549cbe26be959beef81cffed88ef03b3cec563e44" + }, + "docs/L5-live-verification.md": { + "mode": 420, + "sha256": "4c1abe57c516b36f383390164a362f53294feda222c623283f1e6091d8ef0ec4" + }, + "docs/M-movefleet.md": { + "mode": 420, + "sha256": "718338edb8cbe8a449793b22889776a1783d1d0ade553c03973ea45d426eb426" + }, + "docs/M0.md": { + "mode": 420, + "sha256": "e121c380612a42727e3a973d8cf50f884d660bb4b43bc494258dc1c6b6f26705" + }, + "docs/M1.md": { + "mode": 420, + "sha256": "e0a36cf109d096748e55522eb8d7a261764cbf5ab5daf9342ba903d0f2bc6704" + }, + "docs/M2.md": { + "mode": 420, + "sha256": "25f9cad74eeee40afc2117333232384e1cf387b2b9132856650234c5ba593c61" + }, + "docs/N-output-term.md": { + "mode": 420, + "sha256": "3b8317e22714ef66b35efceee6fa0f7057c37f7c6e34d93cc5047cd1dd07ecde" + }, + "docs/P-events-wiring.md": { + "mode": 420, + "sha256": "72ee81b71b4c08ae451721c785dc5e01ed4ca43ff0fd474befca09dcc41599ba" + }, + "docs/PAR-predictions.md": { + "mode": 420, + "sha256": "16e8fbbac5001db0b10d766858c0ae2ea9619f37043a0883ee46da80d4dd4846" + }, + "docs/PL-players-residual.md": { + "mode": 420, + "sha256": "9bc29bc030ee8b0e00e496b91fe8fefac15179ce9fd01c0a11a7b5b5335356dc" + }, + "docs/R-recapture.md": { + "mode": 420, + "sha256": "73c62ab20c5eca5e87e1d18aefa60a2a2acd75cbc7510d31b27a2cd4ebcec38f" + }, + "docs/RB-predictions.md": { + "mode": 420, + "sha256": "c1016781505c10aa304d4710c5389918b744ab20cbd8cb54dce462c3dc28e4e7" + }, + "docs/S-standalone.md": { + "mode": 420, + "sha256": "8979b0a9fef33a55ca15bf3ef78064e72df332033354329ff2471ad6648e4a8e" + }, + "docs/SD-predictions.md": { + "mode": 420, + "sha256": "a76a568ccac7409e3cb3acef724dbe6b618d4ec30259bce33594098daff8b6a0" + }, + "docs/SV-script-objects.md": { + "mode": 420, + "sha256": "80ebd120fa9cf5e68ac4d33117966805b917d24bc339f7d82be972a280449409" + }, + "docs/T-turn-driver.md": { + "mode": 420, + "sha256": "a4096b8223cea87ce77cc64014c489d4625ed36fd3aec1358565ca5cf91d4e1e" + }, + "docs/U-unlock.md": { + "mode": 420, + "sha256": "5cbe3d8fb4bd30d029cb2db006a4dd3c6819885f55f434afb4bc8ae79b526901" + }, + "docs/V-eventlive.md": { + "mode": 420, + "sha256": "ebd08c000f42211e87958278f03d6891475cd8557658e1a42105cf5ed45a1aa1" + }, + "docs/W2-predictions.md": { + "mode": 420, + "sha256": "9972e27467cf0fe23a358818caf7edb979de25697d3aa4b97a2135ca79fe34f5" + }, + "docs/W2-watchpoints.md": { + "mode": 420, + "sha256": "f8634c5f977b2ca9b2e07df105cba09adacaeb6fb4cf046e41e5e1e42b83b107" + }, + "docs/W3-predictions.md": { + "mode": 420, + "sha256": "211cedc2d924bcf47cbb73166b408e9a27d795863ffc90aa2adbb85beeadffcf" + }, + "docs/W3-watchpoints.md": { + "mode": 420, + "sha256": "568e818e66d95f9079a1270c4d9b900c7eecfd5b5a3b4ba5a4aa0c843666f061" + }, + "docs/Y-standalone-rng-and-tail.md": { + "mode": 420, + "sha256": "49d926cc505d6ba07753748366e42ec32493a15c76bfaa45b2f66f52adc57f2b" + }, + "docs/Z-tail-rng.md": { + "mode": 420, + "sha256": "3ed2b40f728bcedd663c305cce13481bad1429af03fd5215ee3189161cfbd7f1" + }, + "docs/architecture.md": { + "mode": 420, + "sha256": "ba4732eb8a4c7054df5136a72d1774e4f1e919a517a1c74e975903fdd254422f" + }, + "docs/game-data.md": { + "mode": 420, + "sha256": "2124ea3d117b4ee6f48660d9711c1b4ef844a4ba37af7cea3766914d77bd6b23" + }, + "docs/game-design.md": { + "mode": 420, + "sha256": "5b40349ad446596b534567a5683cf9ea99709d9eff231890e0f6256c755f0272" + }, + "docs/game-effects.md": { + "mode": 420, + "sha256": "e1e0abc162602daaac255fe44b11c511adf45d4ef5fa188268411829b0817e5d" + }, + "docs/game-sim.md": { + "mode": 420, + "sha256": "d1e14770d252fd2f320a7baa1ad54c90d955cfc840f477d1700cfbbadcec730e" + }, + "docs/harness-audit.md": { + "mode": 420, + "sha256": "931d92cc744ec6ca3d961fbe7fe96dcab28060446058eb78be9835ebbce73ed0" + }, + "docs/mars-parse.md": { + "mode": 420, + "sha256": "d9fa3029ade4f9401c59fb88f4520a1ef3af9a9c6f2bb5d1a0ebfa1d5061d6dd" + }, + "docs/mars-rng.md": { + "mode": 420, + "sha256": "f2a01b88f105d07d0d0d514430e76da7632e5c8e4e3bbd6c99a25f1dc5daa89c" + }, + "docs/mars-stream.md": { + "mode": 420, + "sha256": "61a16c9b7c143b4bc2edee473cf1f8bd06c1a5144c120bc563e5ec6d770dd0e7" + }, + "docs/mars-text.md": { + "mode": 420, + "sha256": "2b6c7d2eecbb684160e7565d1d7224eb0d2f7e9a41f4d807095a182ea605dcf1" + }, + "docs/mars-vfs.md": { + "mode": 420, + "sha256": "1508c2a070d56f4fdabac3c2ef1fd08d3f93d7a3045d59158340ee22a6ff1b62" + }, + "docs/shim-trace.md": { + "mode": 420, + "sha256": "8a059c1ba761b366449c2db8ef248656da917050ed28855c6d812ecf91672fa5" + }, + "include/generated/sots_addresses.h": { + "mode": 420, + "sha256": "fc34ac4ee8cc7fea91c447b5715841dc6d3afe36f9aff04e88b6c29b5b64f448" + }, + "include/generated/sots_stream_schema.h": { + "mode": 420, + "sha256": "13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c" + }, + "opencode.json": { + "mode": 420, + "sha256": "9af560c2a49945e964beb689649c13775e2aaaf691af270a565d6c6826f76c15" + }, + "src/app/CMakeLists.txt": { + "mode": 420, + "sha256": "142999eded2ff494745ce550af76a8f8caf0269ad22d6d5650e7a79c19d22717" + }, + "src/app/alliance.cpp": { + "mode": 420, + "sha256": "37d6e57f7ce82a69a595cf474e7be7a544efef210f960e9cdfeab6168826bac9" + }, + "src/app/alliance.h": { + "mode": 420, + "sha256": "08fa8dc96286c7cb15a90a987fa22b17e195522e642ab8303b659ca58739eafd" + }, + "src/app/command_replay.cpp": { + "mode": 420, + "sha256": "739059930cd3a5f1d988522ff50c60d8657664a66c9fe19b019833f417b55824" + }, + "src/app/command_replay.h": { + "mode": 420, + "sha256": "956429a742554cada2124de49c6955e27b0e5d68db87dcc95b22c75ec7bd93c2" + }, + "src/app/construction_phase.cpp": { + "mode": 420, + "sha256": "025cd0ea1a7badd567f7f1cd59330b1e01149b5c5094575fbd438683658bb0df" + }, + "src/app/construction_phase.h": { + "mode": 420, + "sha256": "a4d39994096683a1144eb20282b205cf71e2045873cc15b53bdac214ab1e9a5e" + }, + "src/app/event_phase.cpp": { + "mode": 420, + "sha256": "80717fa7c7f108004d5250f12b6c994752a1a55d7f32c7d3ebf29f2869118c90" + }, + "src/app/event_phase.h": { + "mode": 420, + "sha256": "54077268fe4705270dc06bdc46a6fd9384fb5e0d36da19e55ea149b478d8cf34" + }, + "src/app/growth_phase.cpp": { + "mode": 420, + "sha256": "5924d2641fc98d902b56a3e6417d7a57d70c1564718951b098e7d14376ebc4e3" + }, + "src/app/growth_phase.h": { + "mode": 420, + "sha256": "8222ef811abff161c8f891a331a52e527de54fbf468949d1e0e188adc473ae3b" + }, + "src/app/main.cpp": { + "mode": 420, + "sha256": "adfd7dd177439bfd57509532bcf0f37779281ae9309daa93efe1ada3ef3f57a7" + }, + "src/app/observed_phase.cpp": { + "mode": 420, + "sha256": "31fb99678d60de6901b4bb1b251abe2421453264653cf5f7bd297a376c2b23f3" + }, + "src/app/observed_phase.h": { + "mode": 420, + "sha256": "f88fc22a5cb21a43e196d7fae09446126635d3284e6b398bca234f265234b693" + }, + "src/app/phase_catalog.cpp": { + "mode": 420, + "sha256": "e3da16e6d499b7836953251d940ce171792ada208156ca583277298f305fc316" + }, + "src/app/phase_catalog.h": { + "mode": 420, + "sha256": "da6fff506002079d8277358d0095981dc260449dc19677a533ef25ab709aed87" + }, + "src/app/report.cpp": { + "mode": 420, + "sha256": "da3feb6043f6e68cb9ea763f7242ac153a5944c59f448284faf34c64ad6b9228" + }, + "src/app/report.h": { + "mode": 420, + "sha256": "0495d164458ddb7187ce3105f82cee06cf9cf6c5b73ed8cb6e434e1d2e0f8481" + }, + "src/app/script_phase.cpp": { + "mode": 420, + "sha256": "61eeeeb7eac3145cee938ccfc564b231b6968ce7926fb9599c136134f0d5ea91" + }, + "src/app/script_phase.h": { + "mode": 420, + "sha256": "e52006ff939fa945870fafdc2412ba67e3d5e1cc2aa51c0ca0a884ce630aa1b7" + }, + "src/app/trade_raid.cpp": { + "mode": 420, + "sha256": "07d6bb904e655bb644ff6df2e417adb448487bb67acb62240ec5ecc978eabebf" + }, + "src/app/trade_raid.h": { + "mode": 420, + "sha256": "10e0b1460eb7810f1fcd61e67d47333373f06bdacf5a11372958a84a91084e52" + }, + "src/app/treaty.cpp": { + "mode": 420, + "sha256": "317463fc0e2a6ca7eaa4e2f096c3821655a4623de4085af44d951ed500837575" + }, + "src/app/treaty.h": { + "mode": 420, + "sha256": "836395a85868cbd6b7fda8f1d304128fd7cc6952aff37003e8e119a5ce0251f9" + }, + "src/app/turn.cpp": { + "mode": 420, + "sha256": "a626ddf80a340de50b70f09bf91c0180d255c533e65edce1532d807fcf5109b4" + }, + "src/app/turn.h": { + "mode": 420, + "sha256": "85c87aab5c5b5ad5a6a34cc9db710b1cf77dec1a7145ba1e0b5e17fff9a6a237" + }, + "src/app/turn_record.cpp": { + "mode": 420, + "sha256": "e1eb0b253e964ab4f8be1333f81e193ac64109544da384cbdf21858cbf931e4d" + }, + "src/app/turn_record.h": { + "mode": 420, + "sha256": "78d8d2948bd04bff5e7d2c55955b726f1cd7552a765e608e390209e03856f76d" + }, + "src/app/visibility_phase.cpp": { + "mode": 420, + "sha256": "34d9df699af3e57823ec8457c442408da854028f9b95db5820171caad0823131" + }, + "src/app/visibility_phase.h": { + "mode": 420, + "sha256": "60db50f5b98c5edafc86a33f982a7773acc291c1a18f9cf23323e53ebadcde27" + }, + "src/game/ai/CMakeLists.txt": { + "mode": 420, + "sha256": "f51509a2699f02ecab9faa1f75feaa38c299e6bbbe08bfbe5e8e86722037f6eb" + }, + "src/game/ai/agent.cpp": { + "mode": 420, + "sha256": "e1bbddc3deb797d62ae9c2b24bc811ec9379699992dd838694bd5eadc73feef7" + }, + "src/game/ai/agent.h": { + "mode": 420, + "sha256": "48aa26f32d52a3f8f4e37ed5c6986b1e87a8fe1e780d5314514eb5c75b8bc244" + }, + "src/game/ai/apply_order.cpp": { + "mode": 420, + "sha256": "122ffea1090382fd01bc505fd30c59557dfec2c9846609d00da6e80109da2253" + }, + "src/game/ai/apply_order.h": { + "mode": 420, + "sha256": "a3b7a1ca26243ba0fdd801b78978175db6f76e297a72876fa0a35e12f38e09b3" + }, + "src/game/ai/command_capture.cpp": { + "mode": 420, + "sha256": "cb9a1d37af9f66e78d368e03aeabec01e4d48f76aaa30348a51f4c70a915e4ec" + }, + "src/game/ai/command_capture.h": { + "mode": 420, + "sha256": "921599e5b2aa8b773db00134618efde687c7d9ba739abd787ec7666f4cfeb78f" + }, + "src/game/ai/orders.cpp": { + "mode": 420, + "sha256": "1b775eb1a030bc6e81e5b7702cbf8ad56288860276e8a0475da66f7367542640" + }, + "src/game/ai/orders.h": { + "mode": 420, + "sha256": "c2a3b8fe1a7c46a1c1104bc87be8696d9f0782cc304d27cb96d0ec6b182f12ae" + }, + "src/game/ai/tasks.cpp": { + "mode": 420, + "sha256": "b05878ccd94c375aac8723c8ea9499f77b98fb94acc5a75a15fa1948dbe83c76" + }, + "src/game/ai/tasks.h": { + "mode": 420, + "sha256": "b1de4f89c1679ccfdeaa8b852cb2ce407b71dcd1bffacf97df389a69f6ae3a5d" + }, + "src/game/ai/turn_order.cpp": { + "mode": 420, + "sha256": "858b12c51c4509e16a22a6c080d1c6b47bd23d2b8a11f84a48d34f24c4635f22" + }, + "src/game/ai/turn_order.h": { + "mode": 420, + "sha256": "3e76710928fc2df52fd8312abfb8f23a2ce162f8e0856f46672a4f46b5b4384f" + }, + "src/game/combat/CMakeLists.txt": { + "mode": 420, + "sha256": "4b3a05c45360e312d6c1d96c1f05a60437d19d2046257835e0d6c70ecc4ce115" + }, + "src/game/combat/retreat.cpp": { + "mode": 420, + "sha256": "eede86a4d25289dfc9132d5776b11114a109179e5aa10f2b985035e5b22d7a1f" + }, + "src/game/combat/retreat.h": { + "mode": 420, + "sha256": "5fc3e002a5f1944f29c74f862ff942b894e40e88afafd52358373ada36644d7d" + }, + "src/game/config/CMakeLists.txt": { + "mode": 420, + "sha256": "c746021654505c92be333cefb9df994431679d40d8d654b937feb950684830f7" + }, + "src/game/config/config_loader.cpp": { + "mode": 420, + "sha256": "d903ba06747e5b7d66400d03ee1f0a9896bf4268bb200dec0b5c8599dbd3d3a1" + }, + "src/game/config/config_loader.h": { + "mode": 420, + "sha256": "fda71dee1a4e2b896760e9ac344768e176ea4f0a08609c7d651033a1ee698085" + }, + "src/game/config/manifest_loader.cpp": { + "mode": 420, + "sha256": "dbe33dc5ae03db18f3b2c01b48cc1fced10f2cca599270c0a028321a7d7dd7c6" + }, + "src/game/config/manifest_loader.h": { + "mode": 420, + "sha256": "68e508b9e6d1222d980b22ae826b127693fdf0821b6539ed9e62a8ec031aa5b5" + }, + "src/game/config/msvc_sort.h": { + "mode": 420, + "sha256": "17fcb13bb49a634c80be38299617c6c16fd8addedfa88c53d67242c90b811716" + }, + "src/game/data/CMakeLists.txt": { + "mode": 420, + "sha256": "677ba0dd0ebb8176f4e7c41d5550f2ccedd56d49e7e4acb1eb0a7970e9e98a51" + }, + "src/game/data/block.cpp": { + "mode": 420, + "sha256": "f61312708c715ce525ed1a01e71f1446d31fc96ca1cc51f5bd863cac51702200" + }, + "src/game/data/block.h": { + "mode": 420, + "sha256": "f14155dfca5fd270ad6b4d462458aa8cd5c5edf5e19da4df492ee2907e99eccc" + }, + "src/game/data/catalog.cpp": { + "mode": 420, + "sha256": "7799ad3b31d43236cacbc51c3ab086265927f98b1346005a8adfed2796178ebc" + }, + "src/game/data/catalog.h": { + "mode": 420, + "sha256": "80223146bcdbf4808776f974df7e5f46b120a021979a22f50b5ce2d74ec16d6e" + }, + "src/game/data/common.cpp": { + "mode": 420, + "sha256": "e58ba046844be11c61f7f7e501829b48b4f16e7c0ab78f10fcf9189c133cf040" + }, + "src/game/data/common.h": { + "mode": 420, + "sha256": "d1ac8375c1be133a98a383e01598f393f194e1bd9790d1c1230bc6121a45a187" + }, + "src/game/data/fields.h": { + "mode": 420, + "sha256": "4209df368ad776b3c24350246acf47ad874fcbbe292fb16f9ca7dacaef2f08fb" + }, + "src/game/data/shipsection.cpp": { + "mode": 420, + "sha256": "82d5ba9be2a446e50934b0b9a03b16839bd3acd1a967d9441180a1baaa271264" + }, + "src/game/data/shipsection.h": { + "mode": 420, + "sha256": "bcf100f83691226c4993dd7866b67a0b48d9b4bc6841463fbf07f0f26bf9dca0" + }, + "src/game/data/strings.cpp": { + "mode": 420, + "sha256": "6d983d3a4cb4284215301409587136fb765a5e6a4c9f4b988e01d710c0815f59" + }, + "src/game/data/strings.h": { + "mode": 420, + "sha256": "fb292bd472ed68eb4a5e93484f3f92d8a0ae8661e6a61ca4b417ab889c508055" + }, + "src/game/data/techtree.cpp": { + "mode": 420, + "sha256": "2ac6e39faeef808c97375f3b8a3ee219fcab8cc09921f0ed8d82eef7374eb9ea" + }, + "src/game/data/techtree.h": { + "mode": 420, + "sha256": "504946c255405ab28d20d0ed6c095b3b63f0e6865afe0e8bb0707e607c363007" + }, + "src/game/data/turrets.cpp": { + "mode": 420, + "sha256": "ce7db50ef10825e168fee2bf57c4b6038dd1a356be7ada9ed6a4f6a4f31b07a4" + }, + "src/game/data/turrets.h": { + "mode": 420, + "sha256": "f01603ad32b0ffdf891c88cc54c39a725c6a436f8dda79ac23e7505e59853c64" + }, + "src/game/data/weapon.cpp": { + "mode": 420, + "sha256": "accb5aab2081babb26443cd257f292909e19440c40346e098144148922f5d3f6" + }, + "src/game/data/weapon.h": { + "mode": 420, + "sha256": "63aeb670ae7b8a1fd6daa35ed60ebe41a87f62a6ec2a12f44b13f9052c55b009" + }, + "src/game/design/CMakeLists.txt": { + "mode": 420, + "sha256": "42692f7917d99fb5b9e392c2d0f1d908b2bc5c61fc2e5687fddbd665dafe0bef" + }, + "src/game/design/defaults.cpp": { + "mode": 420, + "sha256": "8efa0b79646525375739a1acfe77e75d5ae6b669d1ecaa01f49f3f5183caf528" + }, + "src/game/design/defaults.h": { + "mode": 420, + "sha256": "20af056628f362a4d5ad7ba6277135697718197ec6844ae0ae85bf06d4cd818b" + }, + "src/game/design/design.cpp": { + "mode": 420, + "sha256": "e166281c52a6d92fed8810b38bd736cbd2a324f15d290a39a539d01ff35ead20" + }, + "src/game/design/design.h": { + "mode": 420, + "sha256": "7e936c78ca10c3a49470da67f1659cf4ee323d14d50b5b2c1ada08edfa8f6997" + }, + "src/game/design/hull.cpp": { + "mode": 420, + "sha256": "554b0ef6955ac230c7eca29ea2d94d60b5fbc91f34d9ff457091577c8602268a" + }, + "src/game/design/hull.h": { + "mode": 420, + "sha256": "997018e59c9d78ee1da7e7cb9561b94b76befacbe348a4ce3301c5f22b582461" + }, + "src/game/design/rules.cpp": { + "mode": 420, + "sha256": "a623984f9ab40c354320051fec00bab2c7e3728c2c90082b3b8051294b906319" + }, + "src/game/design/rules.h": { + "mode": 420, + "sha256": "70a8a42fe82e9805cbb957717688ab9f9eb3438226f6e0d696ef5f7a51529229" + }, + "src/game/design/stats.cpp": { + "mode": 420, + "sha256": "c05f420a00026289be8693c0d80bbd2354ce354a91a78459cfc8e70467326c54" + }, + "src/game/design/stats.h": { + "mode": 420, + "sha256": "ba0a5d3bcc98f5c3e64579d42da70bfdf563773ce2fe1e6bfa2b36b14c453fe5" + }, + "src/game/effects/CMakeLists.txt": { + "mode": 420, + "sha256": "2e20f138f98bc69653c8360a26f99f3f43f35beedea5e90dfd7e9721e7550f89" + }, + "src/game/effects/tech_effects.cpp": { + "mode": 420, + "sha256": "40358c2af37543ca3ab09b4d0433cdb4b0d2d212b45f648739cc86e979501604" + }, + "src/game/effects/tech_effects.h": { + "mode": 420, + "sha256": "ef70addf2caf1e3abf36ac9d878a8db37d2adbac370957f5b6a0b5825564a0d6" + }, + "src/game/effects/tech_id.cpp": { + "mode": 420, + "sha256": "11cd652e81a52e86d72541a5c3de77bb50de3d31226272e0d1856e5a15b7f9a6" + }, + "src/game/effects/tech_id.h": { + "mode": 420, + "sha256": "f37752250c80c9c75ef8e144e4646dc1290a2cc8ce72d9a37949c6408996df86" + }, + "src/game/events/CMakeLists.txt": { + "mode": 420, + "sha256": "9b1f14a3801a991ba065e0e39ae2e3fa3966018e8a98fcceeddeaca3909328e2" + }, + "src/game/events/event_log.cpp": { + "mode": 420, + "sha256": "3b131879ec5e81cd1ba2bb0cbdfa6e05775ed77684f4ed7a8f5cfae87da1e7b1" + }, + "src/game/events/event_log.h": { + "mode": 420, + "sha256": "2ff415b1120ca3f28421006a566280fb977027cfa3f209bdba0986350376a953" + }, + "src/game/events/research_events.cpp": { + "mode": 420, + "sha256": "9520b20eba2a2b4bd5925f13b420d526fc610d06aae7ffad314e3002c4f5a253" + }, + "src/game/events/research_events.h": { + "mode": 420, + "sha256": "b87340c6b14e9de97e5bc0c5a4cbd74e54bab2831c60edf88c0e42ff5218ea22" + }, + "src/game/nav/CMakeLists.txt": { + "mode": 420, + "sha256": "79cc0ba25c6d49f7784663ace033d01ab3d85a5d8015fe2f466f8f1a3065983a" + }, + "src/game/nav/pathplan.cpp": { + "mode": 420, + "sha256": "04cfe8fca5be565f5443c8f1402eb0072221dbd63f70855e35b3eeea752f1775" + }, + "src/game/nav/pathplan.h": { + "mode": 420, + "sha256": "28b51f737b458679888e555d985b9e8d41adf8ba91fa0980b5e83668758c86e7" + }, + "src/game/sim/CMakeLists.txt": { + "mode": 420, + "sha256": "4b3085116f88c903a137abef6806891f7b7245dcb031153df7a5465dd2521116" + }, + "src/game/sim/colony.cpp": { + "mode": 420, + "sha256": "e0f0bf15d87b6ac2e92053cbfe0869c0dbf9465d90a9bae5456bb46883423b77" + }, + "src/game/sim/colony.h": { + "mode": 420, + "sha256": "357dce21440140a6cf836a3c12175ebb5bb6706c37d5ecd315a4ee4937725b47" + }, + "src/game/sim/construction.cpp": { + "mode": 420, + "sha256": "8cf4792f487162ca3599f16f0e92d73b4c9549046044548c5aecf202dd564130" + }, + "src/game/sim/construction.h": { + "mode": 420, + "sha256": "a7f201101ad704f1994f809259ad60f780760fa36174d99a1ccd9299447f5460" + }, + "src/game/sim/economy.cpp": { + "mode": 420, + "sha256": "1e0b17b589496a6139e8ca10fe20553050be7c965a02daf8b520dd5020412d89" + }, + "src/game/sim/economy.h": { + "mode": 420, + "sha256": "6f3e33e803bb49367d4cee3c8ef6186f04b79e7cf901047fc48d933108ab6d2a" + }, + "src/game/sim/movement.cpp": { + "mode": 420, + "sha256": "80c64b2148304b84683cf3860ced1354f5c29c923bbc50cc5001030dd85c2cd2" + }, + "src/game/sim/movement.h": { + "mode": 420, + "sha256": "9a6b2b4960428634d8004cd5694ed6a7a10ab28fd9c0e2a9824ede3e201e9441" + }, + "src/game/sim/numeric.h": { + "mode": 420, + "sha256": "88f715192ea322ace4eea13ab5ae55f7f41600262025208e468b5259220522c2" + }, + "src/game/sim/observed.cpp": { + "mode": 420, + "sha256": "43d29a9fe1195dcc0b7e6101ea05bfd076f03636f9f68de473539c83db0ddd22" + }, + "src/game/sim/observed.h": { + "mode": 420, + "sha256": "0224b5bf341f30ff0e98d910547261b6732bdc0c5339b520e26fc51939c1269f" + }, + "src/game/sim/player_turn.cpp": { + "mode": 420, + "sha256": "beb1b2ed434df3727e676ac56e751beff87fa98e4a42e4657cc54d41025773a2" + }, + "src/game/sim/player_turn.h": { + "mode": 420, + "sha256": "f24f8f5e161486575cd341c2f5bfed46fa6983263edcf2320e9c24860b4be51a" + }, + "src/game/sim/research.cpp": { + "mode": 420, + "sha256": "95f2d325544ee018ec8d0f945e91b4172f6ba406f95e19f86c4fb9aac6b22a89" + }, + "src/game/sim/research.h": { + "mode": 420, + "sha256": "e27a311e977afb2e01242938dc8d928e9a67d1f761965e191cf907e05c1c86e9" + }, + "src/game/sim/rng.h": { + "mode": 420, + "sha256": "f7e5bbced3dbd37deb49a00b52d05f7c751501d654dabd645ecff7447355929c" + }, + "src/game/sim/scriptobjects.cpp": { + "mode": 420, + "sha256": "a4f9a1b49e4ba22a88726efbbea2f355b40a3c006734d9150d509a344720a4d2" + }, + "src/game/sim/scriptobjects.h": { + "mode": 420, + "sha256": "210d0eb51780df70a9bca133664429589c03ea33e4524e2c182801d4b4a5c74b" + }, + "src/game/sim/species.h": { + "mode": 420, + "sha256": "83b44c0600b99c5acb72a3484bb0708cfba765cdf594aede596a3c47d5ee6298" + }, + "src/game/sim/techgraph.cpp": { + "mode": 420, + "sha256": "81f8f1120eb1fa4a77752bd2e0917df3dd76372461416526ae510bd697944ef8" + }, + "src/game/sim/techgraph.h": { + "mode": 420, + "sha256": "b2fc90666080a6b7f27dc9290eef17774d57742c2a1f9e1f77d94c7fa5689f6e" + }, + "src/game/sim/tuning.h": { + "mode": 420, + "sha256": "4acfad4098de951cc3a94ca25a2f200e96caba1836bf7441de5a2b458c022194" + }, + "src/game/sim/visibility.cpp": { + "mode": 420, + "sha256": "25f86a34f9a98d2439672283a446ba1804973dae3f6d9aa3692342b05f3a3ac0" + }, + "src/game/sim/visibility.h": { + "mode": 420, + "sha256": "783896489a2a9ec8bce617b141bfb631e8ef92f958be7b5c2ca64fd75774471f" + }, + "src/mars/parse/CMakeLists.txt": { + "mode": 420, + "sha256": "76c290b786a3e73387ec8c574fd5a0dbeb6e629adbe970426314f16497f59fa9" + }, + "src/mars/parse/blocks.cpp": { + "mode": 420, + "sha256": "e60baa8127b21cf6eb6c8e2aa02c6a72c6403dbc29e8480ff658bf184266675b" + }, + "src/mars/parse/blocks.h": { + "mode": 420, + "sha256": "1e8b76919a584d1d7fb01c5ff5e3a7173e8456eca892d61f0c6b7bb8f02f33b1" + }, + "src/mars/parse/effect.cpp": { + "mode": 420, + "sha256": "beb76a841a3d42dbc157413384ff1a0312a7068d6b22020eadcee2e1cbbc81f9" + }, + "src/mars/parse/effect.h": { + "mode": 420, + "sha256": "aaa5c83f2d8eef24667bf05d0f71b2a346f2fce09dc9a45d7a5197c894922e44" + }, + "src/mars/parse/result.h": { + "mode": 420, + "sha256": "58cff456e353550abcd0f52e031d9d70f2b7a975f4762cfccc64eb6bc748dbd9" + }, + "src/mars/parse/script.h": { + "mode": 420, + "sha256": "69a493268c47a08672694489a51c3ff0a7f9aa870e5ae5a93d47ba033cf21ad3" + }, + "src/mars/parse/value.cpp": { + "mode": 420, + "sha256": "712133e4d725649f5461e6a46bac6842b0751ac3fb7e1c468f826638ec58f623" + }, + "src/mars/parse/value.h": { + "mode": 420, + "sha256": "60d692648dab7e3e216c8d9e6ef212592ba1df1a98260b1b4599354742947b38" + }, + "src/mars/rng/CMakeLists.txt": { + "mode": 420, + "sha256": "dceb4bc0fb35c95a12ed9aa36380e79aa75641b15ecc06e4289d39824087e2dc" + }, + "src/mars/rng/mt19937.cpp": { + "mode": 420, + "sha256": "0c60775e9437b8eaad49f67a96001c81947c8d9e6d2472e28b2b490515bac95b" + }, + "src/mars/rng/mt19937.h": { + "mode": 420, + "sha256": "300836ab26fd1a4d913b395f08770bb2c248029ef1b80ecbf0c4d886adca2b8e" + }, + "src/mars/stream/CMakeLists.txt": { + "mode": 420, + "sha256": "95ffbb0c519e55b7423ab048a3019e295b7ef3a3e9506044ef2e68569df9601a" + }, + "src/mars/stream/archive.h": { + "mode": 420, + "sha256": "84d9ae2bb3d6f444b3933b3816cafd12caee8619d2219f19cd10d32cfad01d2e" + }, + "src/mars/stream/bytes.h": { + "mode": 420, + "sha256": "9f5869952c9d6b925db32995a417ba292a0c1a672fc3850400150afb8163b3f1" + }, + "src/mars/stream/dump.cpp": { + "mode": 420, + "sha256": "1b5bba86b2f85b1718276f8db557601320ab8a165d5fbfe93e51219cca5a1c16" + }, + "src/mars/stream/dump.h": { + "mode": 420, + "sha256": "a69af300ae7083fb0a5362edbe7eecd5273c8807884aff9fbedd7ae606c7fc4f" + }, + "src/mars/stream/gzip.cpp": { + "mode": 420, + "sha256": "20d71fd50bd637f78e7ebb5217bc6607ebc257535cc4720e640e4badb72f1644" + }, + "src/mars/stream/gzip.h": { + "mode": 420, + "sha256": "6bce52c615eb120999adb1a6f7f06baa813a033c28e02e6d79ce77f5b7a929c9" + }, + "src/mars/stream/node.h": { + "mode": 420, + "sha256": "eb43054c8592db107557979c7fc8612dc0646ba5d62f154b9b7f96a37ba2e860" + }, + "src/mars/stream/probe.h": { + "mode": 420, + "sha256": "6411d0976d1e785e8c32af6ecfe1a797c0a9aa02314e5e42fae3ed7b3449ae13" + }, + "src/mars/stream/reader.cpp": { + "mode": 420, + "sha256": "90f19cbcdb0fc50795895ea1eff09cd6c0ab3069095c49b276f3894e3d6bcbb3" + }, + "src/mars/stream/reader.h": { + "mode": 420, + "sha256": "900508d97be1cbe566d77f2c91755d3db387535cd9574e41704b6d940daa1ff4" + }, + "src/mars/stream/save.cpp": { + "mode": 420, + "sha256": "6db367b3ea570a4d0ee831160e3f44cef380f58de163b9d9205ca7449e51e049" + }, + "src/mars/stream/save.h": { + "mode": 420, + "sha256": "b3a411600d98b42e9014e1fc3cbc3eac5f32f4393e9f72036d3d840c802bb469" + }, + "src/mars/stream/savedump_main.cpp": { + "mode": 420, + "sha256": "8dc687f009d9f455e9bfa4019f03df72e058cebbb3e9ae5bcbb308285470208c" + }, + "src/mars/stream/schema.h": { + "mode": 420, + "sha256": "b1cd64bc43076a3e5893239bd2eb5c216e7293ee541322ef74fb106928183a05" + }, + "src/mars/stream/shapes.h": { + "mode": 420, + "sha256": "45ee379ff8100b6bc27427a2580d7aae19ff3d5d0aa27f682d156ae6a92d0a6d" + }, + "src/mars/stream/writer.cpp": { + "mode": 420, + "sha256": "54804b06266e34793f5294f9a96d2939d641915a0f60fc4e3b4170bfcea6e083" + }, + "src/mars/stream/writer.h": { + "mode": 420, + "sha256": "921cd44ea30e0b9944825b1d2caafc46edc8f2c23506c807050ed9208a397340" + }, + "src/mars/text/CMakeLists.txt": { + "mode": 420, + "sha256": "dccb93b37c21c9b3c3b35a50ca8de55c9f00df2a9e0a33b6c36d659a75455436" + }, + "src/mars/text/csv.cpp": { + "mode": 420, + "sha256": "b190e12b86a3f416a72c110caf9e0b2d98cdd33851d2fa48b55a8d7ea39279af" + }, + "src/mars/text/csv.h": { + "mode": 420, + "sha256": "3b7ec6d0884e95bfab869c253eddc30a802602bd1f230cc69461cb9cf3c17917" + }, + "src/mars/text/flat_kv.cpp": { + "mode": 420, + "sha256": "b98d3b7345489f0b149e56cd15436fd6199e4cf00d7ce3f8b8b31fcdecb90e47" + }, + "src/mars/text/flat_kv.h": { + "mode": 420, + "sha256": "d6765cd42cad46597b6e36e9d08baf6819f7796442293043d5ff686e2376d292" + }, + "src/mars/text/lines.h": { + "mode": 420, + "sha256": "b9a16ccf0dc7bbf36100e0b66c80bcb818590b161f820d3c67d55bccff1c2c65" + }, + "src/mars/text/manifest.cpp": { + "mode": 420, + "sha256": "4da1bb615902ec61883e561f5dd375d89442f7b9046fbc864f6308f27921087e" + }, + "src/mars/text/manifest.h": { + "mode": 420, + "sha256": "dd7351a7a6a144e97f3a3b6a25d22d1518a099e95deadb8965cedb201601e102" + }, + "src/mars/text/result.h": { + "mode": 420, + "sha256": "7f817033811dff6fcef1d5b76f88922cb0392afb4359549876cd017a14755606" + }, + "src/mars/text/value.cpp": { + "mode": 420, + "sha256": "94b433d78f3211e1a4dd9eb8a0a00b514cbeaf63a03e738146c56dbbfe221479" + }, + "src/mars/text/value.h": { + "mode": 420, + "sha256": "d3b5c70af2f339ad27b43c38353fc7a2da83388854b02000fa1b6d9a4e1dfc07" + }, + "src/mars/vfs/CMakeLists.txt": { + "mode": 420, + "sha256": "630d5d4707ef3c0f24a414815cc23158853fe9d5aef429d6619abc1c433b3786" + }, + "src/mars/vfs/path.cpp": { + "mode": 420, + "sha256": "e1f3bbab1f90b0132aec24d8c5997dafab69ec72f01f2dd2fa63c91f83ef7aeb" + }, + "src/mars/vfs/path.h": { + "mode": 420, + "sha256": "043091008f2cab7c88185de63e7aae63ad9b0e384109f5b6fd8c31666c4e2033" + }, + "src/mars/vfs/result.h": { + "mode": 420, + "sha256": "19115bf1c5b3bf01da078a49209230053043610b342b01cdaaed126e2d3ea748" + }, + "src/mars/vfs/vfs.cpp": { + "mode": 420, + "sha256": "ab8272cd14b4b55e7af13f5383d6106f0b1caabdde57e69c1d0fb5b434d31cba" + }, + "src/mars/vfs/vfs.h": { + "mode": 420, + "sha256": "2484231baa64ede6fc35eb0f49e1fd7a3373d5c559f016d5adfb9fc433619d90" + }, + "src/mars/vfs/zip_archive.cpp": { + "mode": 420, + "sha256": "d66e70300539bd42bcf193683df7c34d2b0b03146fd79f0a180385ead1559e87" + }, + "src/mars/vfs/zip_archive.h": { + "mode": 420, + "sha256": "0ffbd90f7919741e63e86e14d0f87d247bc2cd16d2db54771071553249ad935d" + }, + "src/shim/binkw32.def": { + "mode": 420, + "sha256": "fb500fd9f9ecbff44123b89fc24cec72e91fec4c4430ce12a69efc06b20de235" + }, + "src/shim/fpu_force.cpp": { + "mode": 420, + "sha256": "c4b4e41a7ef81139c652ba8164ed8bb0d809b42182f0d0f048b9a9e63bebe59d" + }, + "src/shim/fpu_force.h": { + "mode": 420, + "sha256": "75bac23bc45510961f6b10d21c47e72d8dc0d3971a3ab30b795cad1d25332c06" + }, + "src/shim/hooks/ai_orders.cpp": { + "mode": 420, + "sha256": "091ed885012fffa0e02b83c53e547483dfdeaf1094933726e0291fff0a99e434" + }, + "src/shim/hooks/ai_orders.h": { + "mode": 420, + "sha256": "6e775b3f946f2eaf10dc2e236a3f3c7b9311ed4e82cd4be1ca30e6c62d49d053" + }, + "src/shim/hooks/ai_rng.cpp": { + "mode": 420, + "sha256": "b8fec711cb620561c8f4854e72c3fb0d73013c9b1cd69fa63fc05dd3d2f60289" + }, + "src/shim/hooks/ai_rng.h": { + "mode": 420, + "sha256": "1306f4d3c8071121b06c75232efa5c50b155c1f8752fcae852ee8e5497ce7d08" + }, + "src/shim/hooks/ai_visit.cpp": { + "mode": 420, + "sha256": "cd69811074820810edb1ed3779ca08bd99fea620b162d80a0395d35e8db7fc31" + }, + "src/shim/hooks/ai_visit.h": { + "mode": 420, + "sha256": "8315b433319f680e80a154409124355ad24842e9a0cdef5c8aa6d12422971189" + }, + "src/shim/hooks/budget_inputs.cpp": { + "mode": 420, + "sha256": "fa50fb74a3874886cf8aeb4012b9fd9a5a43ce38ab3c543ee425002ca32fd46b" + }, + "src/shim/hooks/budget_inputs.h": { + "mode": 420, + "sha256": "56e2f95930ff420820a3464162fde74ac0a3ff2e1dc8b493729fed342e4a6548" + }, + "src/shim/hooks/colony_inputs.cpp": { + "mode": 420, + "sha256": "7aa9191ec6292d765fd06c99ff1f2ae2e09a65fb1f238dd2727f28bd465dd46e" + }, + "src/shim/hooks/colony_inputs.h": { + "mode": 420, + "sha256": "87ec765e14106631e3f6423450e6e01d5bb21060fa91f83c267db215ef4986d9" + }, + "src/shim/hooks/colony_turn.cpp": { + "mode": 420, + "sha256": "b82616c7b9b05e96e7f4c40d853c686884b517a5424413686d61799df9d45420" + }, + "src/shim/hooks/colony_turn.h": { + "mode": 420, + "sha256": "a9013cc2e92998ff56ac0c8cc36dc42033fbe3072ee88b86882a1dd4dd0357d6" + }, + "src/shim/hooks/compute_budget.cpp": { + "mode": 420, + "sha256": "76a24f0daf1f49cfabbed13753c65754e26bfcc4f672791b37e926f82b5c1906" + }, + "src/shim/hooks/compute_budget.h": { + "mode": 420, + "sha256": "f308717e44e12151cfb20a6a0cf11ff8e99ecc9c17ef04783198feed05a24caa" + }, + "src/shim/hooks/dictionaries.cpp": { + "mode": 420, + "sha256": "b60794256c07964eb89d5295ecb711b402112fe5f982a9215dc3a304d03a567b" + }, + "src/shim/hooks/dictionaries.h": { + "mode": 420, + "sha256": "ac68fd66eb343d40ee97d6bf29c8b54f5d469a9ef8862687ae15e6ad8bdafdc0" + }, + "src/shim/hooks/draw_sites.cpp": { + "mode": 420, + "sha256": "e7a1fa40262db2ed22b1dfa5ca1bd2588da07bfbab046f23afa8e86c03814d79" + }, + "src/shim/hooks/draw_sites.h": { + "mode": 420, + "sha256": "0021323e918d464223d03b969d0e6992a0efac23ba84a31af901cf2ac74e9b13" + }, + "src/shim/hooks/event_inputs.cpp": { + "mode": 420, + "sha256": "eeb9cc87ef5c39994b7f25d5ccfe220c4775b32a4b11471b0fc0fb81fca4362b" + }, + "src/shim/hooks/event_inputs.h": { + "mode": 420, + "sha256": "c0e74aed8756b3de8ebbe5ab3d70cfa6282403efefc2d795e8f0b1b4cd44d731" + }, + "src/shim/hooks/fleet_movement.cpp": { + "mode": 420, + "sha256": "f01ae7f64b1d545089b002b79c9986d2a39b97ad3995c88a8b71fa05eedb90f0" + }, + "src/shim/hooks/fleet_movement.h": { + "mode": 420, + "sha256": "dbbfe50afaedad63ec45881819aa5de3907cdb411ddf8d1d3e6a5f9a386dc8af" + }, + "src/shim/hooks/global_consts.cpp": { + "mode": 420, + "sha256": "87a51601e1a7d963bf841ca4e892aa79de789a050f5d783c7b5d8bbc2e96a9a1" + }, + "src/shim/hooks/global_consts.h": { + "mode": 420, + "sha256": "b6ac4265ec1f02f11c342536dbc9970c13761ea68aec0a5962d0f4cd6aa5d265" + }, + "src/shim/hooks/movement_inputs.cpp": { + "mode": 420, + "sha256": "0e23f86e4a8ed6c292aea8e45512931cdd06742f25c5e0d175bf0ed3b2217502" + }, + "src/shim/hooks/movement_inputs.h": { + "mode": 420, + "sha256": "32904786cbb122c3c8c36faf6bd9ea5ade4cd8395e74199ec08dbcdb8019b66a" + }, + "src/shim/hooks/player_turn.cpp": { + "mode": 420, + "sha256": "33bcadd7569ad13c69f5f160423c8d469bc67725ce7b944cf4b4346fb8cc7f23" + }, + "src/shim/hooks/player_turn.h": { + "mode": 420, + "sha256": "a766a0d93f3860da6f8d1e0dcf110d6754cd8dfe67d867093f32e3d24e8ff0e0" + }, + "src/shim/hooks/player_turn_inputs.cpp": { + "mode": 420, + "sha256": "993dce2ca771a36337c9561695995a0825746563d2e84b4458de650f3e456799" + }, + "src/shim/hooks/player_turn_inputs.h": { + "mode": 420, + "sha256": "ca0d7916ca17d993aaef19be48d03076220ae15cdcc622aef52a7c6b5957ca71" + }, + "src/shim/hooks/probe_entry.cpp": { + "mode": 420, + "sha256": "5faf9cf04a2cf849d2dd54ce4ad9b812120fb99741f11e9d52fed450badf0506" + }, + "src/shim/hooks/probe_entry.h": { + "mode": 420, + "sha256": "f04f445863a6164d03bc9f6edcaa2e2b0108163241510f4c1dfcb0da7667d89f" + }, + "src/shim/hooks/research.cpp": { + "mode": 420, + "sha256": "dacd16403f1dd5be2ef2cc42f16938977bdd0ee9283d0bca647a079ee3d28e83" + }, + "src/shim/hooks/research.h": { + "mode": 420, + "sha256": "a62c4847be81ed9d10c4f5b9a876bd79898040aa11aa8764149d82db4b010a84" + }, + "src/shim/hooks/rng_ledger.cpp": { + "mode": 420, + "sha256": "119d325fcda72268bdc87f7ca7af05d059d4521c4d7d40ad7426ce070865eabb" + }, + "src/shim/hooks/rng_ledger.h": { + "mode": 420, + "sha256": "0d1e9c79e7601da921253e860c55d9b69c21e03a1014c49f1dd85fd0e5f70f30" + }, + "src/shim/hooks/system_output.cpp": { + "mode": 420, + "sha256": "93bfb7e6ca381041d1e9830f82b8d774a63c12593fc426fd3e9198c9373be3b4" + }, + "src/shim/hooks/system_output.h": { + "mode": 420, + "sha256": "62a8424c70bb8e6c3d9603ce752f6b19a3920a4a78be75718869d7dac73f3738" + }, + "src/shim/hooks/tail_rng.cpp": { + "mode": 420, + "sha256": "9b2a3923d1d837399f3486650ef0e49b502837ff7df46a12df9a9e9b0d4d9d07" + }, + "src/shim/hooks/tail_rng.h": { + "mode": 420, + "sha256": "b9585605e71364872db25c608012e94db2148f22e2e6fd40d4b590a83f3be92b" + }, + "src/shim/hooks/tech_effect_fields.cpp": { + "mode": 420, + "sha256": "4c4d558aba3ac4e1b10e0944c867911e61daea0b4ade716760546846cebcb7b3" + }, + "src/shim/hooks/tech_effect_fields.h": { + "mode": 420, + "sha256": "22b2c050f73c9de011a42dc5a52d92a1bd3b24a59f3ba3b4332d832fb1853420" + }, + "src/shim/hooks/tech_effects.cpp": { + "mode": 420, + "sha256": "2a20f01a18ed30a466e2023ae023aeed8718c680cda927d2f3b463b6dbe35714" + }, + "src/shim/hooks/tech_effects.h": { + "mode": 420, + "sha256": "ffbc4e8262146cd7764f0b9758fff01ce5d359b25a0f5d8c931313f32d035320" + }, + "src/shim/hooks/watchpoints.cpp": { + "mode": 420, + "sha256": "15c94333f22bb592129efe3fb800ea89987045f9ebbc0e6791d4397961fd727d" + }, + "src/shim/hooks/watchpoints.h": { + "mode": 420, + "sha256": "639ae42b230fb31762f50cac0422dcd5b7fda7a1a02c7739a86d1cd6eda62277" + }, + "src/shim/main.cpp": { + "mode": 420, + "sha256": "eebdac7f8f69b8b95cd290c96d41c6f3f0ed5c45ccd5de54ffc790af47083b99" + }, + "src/shim/shim.cfg": { + "mode": 420, + "sha256": "44ca58394455549150c3461cc888128a968b4f062807e19ef25b8eebf0bfd523" + }, + "src/shim/shim.cfg.b4compare": { + "mode": 420, + "sha256": "68bed5883a75132eb5e885b4750d23c1d5734c843a32a56dc7f96d2b73fdf962" + }, + "src/shim/shim.cfg.b4scout": { + "mode": 420, + "sha256": "faac0765478d88b63f371fbc307512e71fe05f2e6f97272e6e0ceb267cc6d626" + }, + "src/shim/shim.cfg.b4trace": { + "mode": 420, + "sha256": "6a89cdd3cfdf53cfbaff29278fd5d0edf156ad8a525c61624b60ddb1eb0575a1" + }, + "src/shim/shim.cfg.bupin": { + "mode": 420, + "sha256": "39d52ef1ccb18d4dea261b87d3f363ba45079022d1b9bc3531c552ef6df80ec2" + }, + "src/shim/shim.cfg.cbcapture": { + "mode": 420, + "sha256": "0939b1ea144976ded2d45ad885fa0f1ffa3d77f16cba9b4d5a9cb87623500a62" + }, + "src/shim/shim.cfg.cboff": { + "mode": 420, + "sha256": "7d5d6e2ceb7f86fd17543c9212e8547be6009f725871aadbaf6057af1f4f5484" + }, + "src/shim/shim.cfg.cbpin": { + "mode": 420, + "sha256": "72a222c025796458dc1a538eed3ea55f053ee5e3c01e5b19b802922a058d4fbe" + }, + "src/shim/shim.cfg.cbtrap": { + "mode": 420, + "sha256": "938c0893b95b576b75927d75787999c22b3424d28c8936456ea3723f62775e51" + }, + "src/shim/shim.cfg.crcompare": { + "mode": 420, + "sha256": "129031ceb358fef9e0fcee2fb42a0f20fd76d9db78f061f956bf75ce2cc51dec" + }, + "src/shim/shim.cfg.croff": { + "mode": 420, + "sha256": "f99345e7db55e695ecabf7a00fc16ced9a42e8882abfeabc8281b9a4ef26d730" + }, + "src/shim/shim.cfg.crreplace0": { + "mode": 420, + "sha256": "60c13bd76e546b4521ab4e6a7836439078e2a176a11e471e03434623153cb7d9" + }, + "src/shim/shim.cfg.crreplace1": { + "mode": 420, + "sha256": "d27f43eb970d6a9c8a0c8d8f7071633a226c34b675a6581b331c6e1ba6f36c9b" + }, + "src/shim/shim.cfg.fpu007f": { + "mode": 420, + "sha256": "998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363" + }, + "src/shim/shim.cfg.fpu027f": { + "mode": 420, + "sha256": "f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd" + }, + "src/shim/shim.cfg.fpu127f": { + "mode": 420, + "sha256": "1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271" + }, + "src/shim/shim.cfg.fpu137f": { + "mode": 420, + "sha256": "8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9" + }, + "src/shim/shim.cfg.fpu1a7f": { + "mode": 420, + "sha256": "59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588" + }, + "src/shim/shim.cfg.fpuoff": { + "mode": 420, + "sha256": "ce637b3f0eca81c04490335cd9fe8a537cd09e5ef14cc5b3050f548ca4d54c65" + }, + "src/shim/shim.cfg.hoff": { + "mode": 420, + "sha256": "dc9b4619fe84921ea5896c2cd190afb5bd4ca89422fb86bfee8459665f92cd7a" + }, + "src/shim/shim.cfg.hp0": { + "mode": 420, + "sha256": "ede723fc540adb94bf16af0f3086c1935aac008acb6a8d550e2a4e97ff232c2c" + }, + "src/shim/shim.cfg.hp10": { + "mode": 420, + "sha256": "1c1f07dfdb7f99d63ed9a62aa9a447efda690623164beeaf434c588e02ef12cd" + }, + "src/shim/shim.cfg.hp11": { + "mode": 420, + "sha256": "36eae0d554a79b9536e3c57d2fef187ae81bd3266947c7f45035be554fb59404" + }, + "src/shim/shim.cfg.hp4": { + "mode": 420, + "sha256": "5bb0d636247c37def9b5cbf0cc9138b13590a50ae8212890fb7d31dfb9e837f4" + }, + "src/shim/shim.cfg.hp8": { + "mode": 420, + "sha256": "a8fe5f16a299b2b9eb81a811c7ec5a3b1baf635fa179a69f1e23243c7d1e2133" + }, + "src/shim/shim.cfg.hp9": { + "mode": 420, + "sha256": "765fdf337bb6942dbd1357166646dbf7fde3777678a606c4dbfd368078f09b5d" + }, + "src/shim/shim.cfg.hpall": { + "mode": 420, + "sha256": "630f99725ea6aa933984f4c545634d127787672de36f6756da2591e22a36f366" + }, + "src/shim/shim.cfg.hprobes": { + "mode": 420, + "sha256": "3bad5e3e7bf35a85acc7169d27531788e9659dbe0f8b1a0c719777fdb6beb5dc" + }, + "src/shim/shim.cfg.hprobes2": { + "mode": 420, + "sha256": "c335f1ec8aeff1165213cd40adcdcd59893c65edf95b1537fc4460e6060911c5" + }, + "src/shim/shim.cfg.l1control": { + "mode": 420, + "sha256": "c5dec81556268795b9a3df175bafde340a3fe76c7d6e05389e09e79d2b138b43" + }, + "src/shim/shim.cfg.l1hive": { + "mode": 420, + "sha256": "970ce465f2363f391a93086f1b596e904265510e02e7d2d38174cc6ea22d9b25" + }, + "src/shim/shim.cfg.l1off": { + "mode": 420, + "sha256": "a4197233c65acb876328666cf37754aea96f942b6ea08105bdfb61d6d5bcbd64" + }, + "src/shim/shim.cfg.l1seed": { + "mode": 420, + "sha256": "360af979eaa0c13eaa4db38ff13dcc64b3e2ab538300c26497921301fd3817b9" + }, + "src/shim/shim.cfg.l1snlv": { + "mode": 420, + "sha256": "3603508983a87906ecce02e4c2e9581cf2fa59390af25335f0b221765c57ef6d" + }, + "src/shim/shim.cfg.l3cont": { + "mode": 420, + "sha256": "629530a34412ebf85fc8ce8d2e5931684eea9891b6b619419e6f8db8c37f0976" + }, + "src/shim/shim.cfg.l3control": { + "mode": 420, + "sha256": "42b6ec7ebc9c83dae4a58884803f627d54956eb308611ce1e8d3691a12a74ccb" + }, + "src/shim/shim.cfg.l3probe": { + "mode": 420, + "sha256": "692dabb6f00343bfcc2f86d62ade827c295acc4630a18a1f2ddcebd53640978d" + }, + "src/shim/shim.cfg.l4control": { + "mode": 420, + "sha256": "ab13b7e3604ee98e9372e3405e0eacb6d5965e02d5317cfee0ea9b9afbd750e3" + }, + "src/shim/shim.cfg.l4dump": { + "mode": 420, + "sha256": "fb40d67d8d7dca4587a1dc13a95826ab68eb3fcf44feb6006388935f3ee346f2" + }, + "src/shim/shim.cfg.l4off": { + "mode": 420, + "sha256": "629a3e41d11daa53325f31aeb77d14d5abe67058e274d36ed8feb71e2e30dc13" + }, + "src/shim/shim.cfg.l4probes": { + "mode": 420, + "sha256": "a446ff3d6117d5352ad9b3c3c02f6d6300ce0b1089f055925afe19b77f0a20f3" + }, + "src/shim/shim.cfg.l4research": { + "mode": 420, + "sha256": "ad400f7082680db82c6fb0d39eed488710e6661f9e3215b9ea2eb0ba53444b9b" + }, + "src/shim/shim.cfg.l5budget": { + "mode": 420, + "sha256": "74df0fa1bd14fec6e8028ba05c516f3a370ba389386e5a8459d594c2c7ad83ae" + }, + "src/shim/shim.cfg.l5control": { + "mode": 420, + "sha256": "3557f716dde348a98fda65a5bad54911fe6d52f75c2cf6a82cc5d4fc47a6e968" + }, + "src/shim/shim.cfg.output": { + "mode": 420, + "sha256": "a811cffac230a1d6c0f9c5adacb1b691ae289ec08de0da3726309a4e1213acb0" + }, + "src/shim/shim.cfg.parbr": { + "mode": 420, + "sha256": "ea8230b596e7baae0c127f5700391ec2c96d546daba8c70ce8b2800c83b096dd" + }, + "src/shim/shim.cfg.parctl": { + "mode": 420, + "sha256": "2d1190d032bb705030746197020c715f4ab8af551f944e9ec0abe136912ea60d" + }, + "src/shim/shim.cfg.parorders": { + "mode": 420, + "sha256": "2107be5ec950e69d01c43ab30919fbfe652823878f150111b158927bc41de8d6" + }, + "src/shim/shim.cfg.parpin": { + "mode": 420, + "sha256": "893f1f81cdef0a964145ebb1c4b1e2725af8868b14fed412d40e3cce71f824f4" + }, + "src/shim/shim.cfg.recapb1": { + "mode": 420, + "sha256": "688840567305218dada122b29284f6af44c3c63ca173db87406de159bb547c8f" + }, + "src/shim/shim.cfg.recapb3": { + "mode": 420, + "sha256": "2120646255bd70adf29ed2880daa6b11d0867b9cfc9f1c9644d63b92c263b69b" + }, + "src/shim/shim.cfg.recapmisc": { + "mode": 420, + "sha256": "cb1f794c51b5d3d74eb91cc084c96a04444cd79f22fc694d821b51924544f595" + }, + "src/shim/shim.cfg.recaptrace": { + "mode": 420, + "sha256": "0ae410cc72fe155837d711c78543e14b1f5743310cd023298eb1e5bbd5457e71" + }, + "src/shim/shim.cfg.sdbr": { + "mode": 420, + "sha256": "7cb2bfd798ed1286628f3a879606eff076c4f6011d95e1223376eb4d0a392ca8" + }, + "src/shim/shim.cfg.sdoff": { + "mode": 420, + "sha256": "9195aeddeb2caa4e3db7dfd775c43e96eb99cfdc59a6a61e65d86fb325f0054a" + }, + "src/shim/shim.cfg.sdpin": { + "mode": 420, + "sha256": "61119f197b1dc8ddcad059d2d2c2753dae457b4bda4eb29e06c78282eeda6a0b" + }, + "src/shim/shim.cfg.sdpin2": { + "mode": 420, + "sha256": "d6d7f82b500df4f3ed120b4ff421178cf4373a145fa803e57d22a0654e4f0f63" + }, + "src/shim/shim.cfg.tturn": { + "mode": 420, + "sha256": "2ab2d64288043c3c55fde668facde9307c0739e0c801c900790e11db57c5759b" + }, + "src/shim/shim.cfg.tturncmp": { + "mode": 420, + "sha256": "114d325ae3ece29422069ee74c790603abb38c49162dd32520a3eecd18ab6061" + }, + "src/shim/shim.cfg.w2control": { + "mode": 420, + "sha256": "d042c0082a8eb4f55b8e21983df292f0950adc4ac5787d4a0b83088c10c5a3eb" + }, + "src/shim/shim.cfg.w2watch": { + "mode": 420, + "sha256": "ddb9c18a1c6b6c23758e51ca9ac18b4b95abe206b162497adc2978c0384d6ee5" + }, + "src/shim/shim.cfg.w3control": { + "mode": 420, + "sha256": "c6a3a5ea1e39a0714dffee0e44a0e8d91a2b450534d7e4377273a55b3e87de8c" + }, + "src/shim/shim.cfg.w3mod": { + "mode": 420, + "sha256": "7c7f82aaa8b5b007a740324373060ca2ba84edc765eb4e7ce55afcaba4e1c2e0" + }, + "src/shim/shim.cfg.w3tshn": { + "mode": 420, + "sha256": "51fa826d0b18d6f01987d6748e6610847ec3a761257ffc382a40d234670afec3" + }, + "src/shim/shim.cfg.zledger": { + "mode": 420, + "sha256": "31d0535aff9660eb1ad06f529c88a42aa71b83b36f8404b7541a29327c508a51" + }, + "src/shim/trace/emitter.cpp": { + "mode": 420, + "sha256": "4253cac49f0761e487fd555c3c01e02fa22e2010789ad3af37c62c8fd2e02030" + }, + "src/shim/trace/emitter.h": { + "mode": 420, + "sha256": "aa7804614b3d3a214d5c32c33ed245ae24276979080baa9d5481d6594ee3f79d" + }, + "src/shim/trace/hook.h": { + "mode": 420, + "sha256": "35be73ac1c9519664957ffea639d873e8a811b4620f0feecb21b54ea2776f800" + }, + "src/shim/trace/platform.h": { + "mode": 420, + "sha256": "f1b78d971798e45998b26c6b0e20db49fceb7d4c63f0c8c37452c6c2c6df9538" + }, + "src/shim/trace/selftest.cpp": { + "mode": 420, + "sha256": "31461ae6d329a8a3856589b245f3bcf8631f0db9a5e00530e4f94279950de354" + }, + "src/shim/trace/selftest.h": { + "mode": 420, + "sha256": "583d7a10ef04254c7a0fb7dd2a6071ad012a9a97dfae0896bbd598970b206475" + }, + "src/shim/trace/sha256.cpp": { + "mode": 420, + "sha256": "2faf44b5b273612c776204c1d83e0910d86394f4f6207129a01c81dedc170aa8" + }, + "src/shim/trace/sha256.h": { + "mode": 420, + "sha256": "31ce080acdc086ff7657d9093ac9bea438203eaa8e392ca38539152cdd15038f" + }, + "src/shim/trace/tracer.cpp": { + "mode": 420, + "sha256": "37d9490dbdedc399ecdb30f46eb27f31a4ff8c902eadb2eb48ecca7fb0e8fb88" + }, + "src/shim/trace/tracer.h": { + "mode": 420, + "sha256": "cbb80f167b8f98777f9fb58ce107226f42027ffdbd868a6808047c48caf10f76" + }, + "tests/addr_smoke.cpp": { + "mode": 420, + "sha256": "ace1ab9549bb6f3e0048d0e6e3ec6061035395581b2db46c0a5acb097c428890" + }, + "tests/app/CMakeLists.txt": { + "mode": 420, + "sha256": "dd18f8e25d2a9ce988dc226e03c7c6e02a275bbbea74f505d005e42ca5972037" + }, + "tests/app/test_alliance.cpp": { + "mode": 420, + "sha256": "671b2cb3295f360c61ee87005287999710d12e10e7e532331c1c946ab97f7c4d" + }, + "tests/app/test_catalog.cpp": { + "mode": 420, + "sha256": "c4cd9840c1f1b5d5a6829f7f1c5a0245b5e66135d3bed6410a2b6eca1a037225" + }, + "tests/app/test_command_replay.cpp": { + "mode": 420, + "sha256": "739ebeea5bed551f232774bc812bcb794cfa057015fd187529fa563b5d7ae5eb" + }, + "tests/app/test_event_phase.cpp": { + "mode": 420, + "sha256": "05498df256759fe5b8af80e9e56c2ca071eb26de0651f257798fe1641da627ca" + }, + "tests/app/test_trade_raid.cpp": { + "mode": 420, + "sha256": "2158008bc711b8062381f346fa347a430582d8d1943b0de5f40eb2a38e9a3f75" + }, + "tests/app/test_treaty.cpp": { + "mode": 420, + "sha256": "0f98150a3f9397fd12109eae7359ff7e04a4060e10e01ecf1693eb2a4606ead7" + }, + "tests/app/test_turn.cpp": { + "mode": 420, + "sha256": "6d45b1d2d065528f14ae83d95314f2b6559e53cc23f1b9e2531c7c09b4b97eab" + }, + "tests/app/test_turn_record.cpp": { + "mode": 420, + "sha256": "a845971b8d25d71c3b1138495354ad392e4fc298f87eb9b89d1567c01ab59cde" + }, + "tests/game_ai/CMakeLists.txt": { + "mode": 420, + "sha256": "a57a82d0c79ff933564e200a5b3137f120e70a19834264eeb2438c4cafd7ad3e" + }, + "tests/game_ai/test_agent.cpp": { + "mode": 420, + "sha256": "41cb3fbfc7e0b277771a2e8dd17601285a1e3a911543fc1335ce05a4e4b5f11c" + }, + "tests/game_ai/test_apply_order.cpp": { + "mode": 420, + "sha256": "8669c2e9a4c95b670a9c41262c68ce183d3cf3900bc262e0a2e33500bfffc594" + }, + "tests/game_ai/test_command_capture.cpp": { + "mode": 420, + "sha256": "8c2bae38754b347beeefe85d796c13bcf43cf5bc9bc99eb743626028b4dbd7ab" + }, + "tests/game_ai/test_live_blocks.cpp": { + "mode": 420, + "sha256": "44cb6bd8b34c13e329f9b1d50bb2a5c5513e52761537dccfb01afb7d48be7580" + }, + "tests/game_ai/test_orders.cpp": { + "mode": 420, + "sha256": "b13d1a3a628de411abb4faf024a1ce8d3e94518f12285bb3d7e7e86b012ad43f" + }, + "tests/game_ai/test_tasks.cpp": { + "mode": 420, + "sha256": "ffd8eed7fa76a24616d579a4e31031dadf43a0534e33743fb104dfca552367fc" + }, + "tests/game_ai/test_turn_order.cpp": { + "mode": 420, + "sha256": "382d6a30e9151c57849595cb134b8e2da25d2763738c9cbfa18d3cad51ecce97" + }, + "tests/game_combat/CMakeLists.txt": { + "mode": 420, + "sha256": "fd0c0dfb54033353b7014e3c764c916522cb529b6b3eae8a8d52afd044c13fe2" + }, + "tests/game_combat/test_retreat.cpp": { + "mode": 420, + "sha256": "3fb0be08d230bbd7c4ea4a59319de7ab252e5b7cbee924afd069847da8dcf73d" + }, + "tests/game_config/CMakeLists.txt": { + "mode": 420, + "sha256": "9874822d186e783f25b2dcd87495e7e380d873b8a0790c67fffb9430468094ed" + }, + "tests/game_config/manifest_tests.cpp": { + "mode": 420, + "sha256": "3bc62e7e49699254151a825421973d831b25bcf7a22028c789e3ca63b0d77319" + }, + "tests/game_config/replay_trace.cpp": { + "mode": 420, + "sha256": "83602ec974b8195c3616230ad44c2d4fd6032f8ef5f96e7aa76d49a0a04ac05e" + }, + "tests/game_config/unit_tests.cpp": { + "mode": 420, + "sha256": "45b07c7289abac61fccd0a6cd0ff87812542ec888eb6d295fb87c3f57755cc6a" + }, + "tests/game_data/CMakeLists.txt": { + "mode": 420, + "sha256": "cb8cffb7217e82077d3db749dcacf29c098549159cc0f312ef04bfccaa30155d" + }, + "tests/game_data/build_and_run.sh": { + "mode": 493, + "sha256": "69ea9cb94468c56c329fcc5b9350431067e97091ed47c08bb10b57b38412883a" + }, + "tests/game_data/dump_catalog.cpp": { + "mode": 420, + "sha256": "4588e699c69586dfb77f0d9289e375407d4f9cf019690e26bfc78f7182167c89" + }, + "tests/game_data/oracle/compare.py": { + "mode": 420, + "sha256": "2cfe1ac93790de3351256d284392372721f94de5375686e6301ef39b1943ad12" + }, + "tests/game_data/realdata_test.cpp": { + "mode": 420, + "sha256": "334a924bf81c6ce6192a6688435b374e115382358f7e4554aa164295bdd38321" + }, + "tests/game_data/test_catalog.cpp": { + "mode": 420, + "sha256": "9ea5c3fff2388c5d7fbf295123dfd7b702ef21f17fc7c45a970822814abfce2e" + }, + "tests/game_data/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/game_data/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/game_data/test_shipsection.cpp": { + "mode": 420, + "sha256": "b3519f0de60d061a6f1ab8ee81d470a28fc17cc81b113639ef2c1e139c249b4c" + }, + "tests/game_data/test_techtree.cpp": { + "mode": 420, + "sha256": "d05c889da9edb622bd2b66aa8e300d8162e0c8788950daa1086fc049b90dd4bc" + }, + "tests/game_data/test_turrets.cpp": { + "mode": 420, + "sha256": "66adff30b974e9bf2c96c1af024fb85677e1a8307c801933d23f3d2ec9d8222c" + }, + "tests/game_data/test_weapon.cpp": { + "mode": 420, + "sha256": "b16b0481c0a8697ff16e39c9feb3ad9d5406250b7dd1c828bf12f1bb40ed746b" + }, + "tests/game_design/CMakeLists.txt": { + "mode": 420, + "sha256": "a26524ff14878564870853bc067c379d2ebd26c14e45bcbb06593d300ee4b3ca" + }, + "tests/game_design/build_and_run.sh": { + "mode": 493, + "sha256": "b1aab4d13b09fb1ea4205978bd7d8b05af5a6422ebe4a34261c3247489b48bd7" + }, + "tests/game_design/dump_designs.cpp": { + "mode": 420, + "sha256": "b1b24c5cb534ad821a20325869713c04b742c541c448ade83543d75608f7eda2" + }, + "tests/game_design/json_min.h": { + "mode": 420, + "sha256": "9cfd3eabe9b36d6b2863872e08fe6ebaddf0749d1966dea693f8bbc0472780ac" + }, + "tests/game_design/mini_catalog.cpp": { + "mode": 420, + "sha256": "5817c0251883c999c6ebd54c77fdcf3981181b41fb5f7637d445824d60942810" + }, + "tests/game_design/mini_catalog.h": { + "mode": 420, + "sha256": "ecb7fd0dffa8709008bcdf9b9da3e70e68f735f9b5ecd0dcb4c871a35ae43b59" + }, + "tests/game_design/oracle/compare.py": { + "mode": 420, + "sha256": "2db14952f7fca9a587995e326651b0d549b39ceefd9c0ac59982cd35ae5d21e7" + }, + "tests/game_design/realdata_test.cpp": { + "mode": 420, + "sha256": "cea57cd53d881b3bf2557cc32ea402c4991aa6de5ff72340861f195a8e20c141" + }, + "tests/game_design/stock_designs.cpp": { + "mode": 420, + "sha256": "2ac1b8bcb0f61852f4bc0a8b7cda51167531ca2a05d1e485991a4758cf586d03" + }, + "tests/game_design/stock_designs.h": { + "mode": 420, + "sha256": "a49173bde083467f5650cfbfbaebba5f16208d660fe7f2f3da81c2caff07c807" + }, + "tests/game_design/test_banks.cpp": { + "mode": 420, + "sha256": "c1d34991c53523cb7610a569e861e8a312da1fe659de0522a3594fb14cad24a6" + }, + "tests/game_design/test_census_saves.cpp": { + "mode": 420, + "sha256": "814c17c7a14db7b123579b7636ee7f2b720fdf4a5cbbe90f676dc01709c45e3b" + }, + "tests/game_design/test_hull.cpp": { + "mode": 420, + "sha256": "cff70268d58ab95ed963d335904110ab55c79d6a0f660f613409cf6d5d63e2bd" + }, + "tests/game_design/test_json.cpp": { + "mode": 420, + "sha256": "e7fa196274a4591834a974f742ff59c7ed1fb15fb138091b48a071354d001c5d" + }, + "tests/game_design/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/game_design/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/game_design/test_stats.cpp": { + "mode": 420, + "sha256": "a3681df901095b848cc6b1ae63d04fd70eeeadd406e7d51f3c76671cbf523a7a" + }, + "tests/game_design/test_structure.cpp": { + "mode": 420, + "sha256": "d09f7707ee170f8a933c657628c1da4f61a29c7eb2dc687a96c3985bdac941aa" + }, + "tests/game_design/test_tech.cpp": { + "mode": 420, + "sha256": "689c081a324c7ece3f70d711f7ac67a5b93207f95e2800a3a708f2f8dbe31965" + }, + "tests/game_effects/CMakeLists.txt": { + "mode": 420, + "sha256": "c80413a7103ce0ed7944fb096ad22fc206a091645428a6015ec3d0e442414a0a" + }, + "tests/game_effects/build_and_run.sh": { + "mode": 493, + "sha256": "ab5085eeab0ec65d8f7ddd7d79357cd15183888b1b4e51cb563810d4e4c64506" + }, + "tests/game_effects/test_effects.cpp": { + "mode": 420, + "sha256": "b10d804b1ad4fb140e13cc1984c6372dbbfdd92560f37583f2411bbcb45c16d4" + }, + "tests/game_events/CMakeLists.txt": { + "mode": 420, + "sha256": "c962651d71ee7783d5565b418f653f2954e489cf698762c5686f5f2dbb4304db" + }, + "tests/game_events/build_and_run.sh": { + "mode": 493, + "sha256": "8b92d249138ee53f728583a0c68b153eaf4e2ad7f92d415d8b3a83df2fb3ec28" + }, + "tests/game_events/test_events.cpp": { + "mode": 420, + "sha256": "182941b9b809b20d24a2e29c5e4bbd626e6da8486e87dc38d1c6088161ec793b" + }, + "tests/game_nav/CMakeLists.txt": { + "mode": 420, + "sha256": "7ee85557a167281f4576252428b4e01795232f31dc1d93c23b284568074cec3b" + }, + "tests/game_nav/test_pathplan.cpp": { + "mode": 420, + "sha256": "6229cc2b1be1ffffb3fbb812c2ccc89dba7099d349be3a6f8f2c2e26aa1dd58d" + }, + "tests/game_sim/CMakeLists.txt": { + "mode": 420, + "sha256": "563547cdd93bce41ef29a73289e5104a5df61f71cc980e49ea37cdbe26743be7" + }, + "tests/game_sim/build_and_run.sh": { + "mode": 493, + "sha256": "a9c42a931242c7f266f512b4d4ad11f6f8ecf43a447a06a04f174301ee19328a" + }, + "tests/game_sim/check.h": { + "mode": 420, + "sha256": "faddddc37a528f0235f510b249cfc1776ce30aff709329954f09093b01231221" + }, + "tests/game_sim/mini_json.h": { + "mode": 420, + "sha256": "710218b637aaf1a5eb7c49eaa7d158bc3e495135ec14bf8b41384769d0227ba5" + }, + "tests/game_sim/smoke_real_save.cpp": { + "mode": 420, + "sha256": "2432e92ac18fadfb1152c54d9dec9a77b3dbf506ea122401cbbd48584b7c9190" + }, + "tests/game_sim/test_colony.cpp": { + "mode": 420, + "sha256": "45355673c46cbaef66b2c81d04a845cf65b6ddfd9819350c7338d9771fafb6fe" + }, + "tests/game_sim/test_construction.cpp": { + "mode": 420, + "sha256": "8df75076a3f460e949e34100d55acf60b054603da6d4aeda4f73297442c06e21" + }, + "tests/game_sim/test_economy.cpp": { + "mode": 420, + "sha256": "43fe658fd2347e3667a901afa642713d70c85ef0ec75094642da2d05b9ca471b" + }, + "tests/game_sim/test_movement.cpp": { + "mode": 420, + "sha256": "1927c371d52115458d88552014cef30bba60e9bef5eb3acfce11b2bc623e06a6" + }, + "tests/game_sim/test_observed.cpp": { + "mode": 420, + "sha256": "1f6ad16c1a2c80f0621573b5196989b0349e47351585d83835be5e27f6ef3fe4" + }, + "tests/game_sim/test_player_turn.cpp": { + "mode": 420, + "sha256": "13f76eaa6cad265deec25416acf0cae2028d6cd1c7b9585df6e9252ba3f0cbed" + }, + "tests/game_sim/test_research.cpp": { + "mode": 420, + "sha256": "3dc668eb889c41f58db6007a96f54fe2a6d56ee6501a298fba3afbbe9637baf6" + }, + "tests/game_sim/test_scriptobjects.cpp": { + "mode": 420, + "sha256": "dfe90a42bcd2844c2ea3666816f97c05237206bf44467ac29790c72b7b498582" + }, + "tests/game_sim/test_techgraph.cpp": { + "mode": 420, + "sha256": "0627ea1c8012b90b62285cae2f31599ba8a8cd47928452910ade91f93502d68e" + }, + "tests/game_sim/test_visibility.cpp": { + "mode": 420, + "sha256": "ad756975b6605a164f2f9106daf2511730642eff354a866bc764a93a4be1efe7" + }, + "tests/mars_parse/.gitignore": { + "mode": 420, + "sha256": "181314065df2f2fdaf920b1a8b5311daa216a2d6489a06ada5b49cc514d89417" + }, + "tests/mars_parse/CMakeLists.txt": { + "mode": 420, + "sha256": "898204fbc1cec44f697e2803c8bc4887857950ba2b1192dd153de74d26de0ea4" + }, + "tests/mars_parse/build_and_run.sh": { + "mode": 493, + "sha256": "550c6df5fffbd85cfffc3312a03a5fa9d59c1e0416e883ddc2576cdb73eac6de" + }, + "tests/mars_parse/canon.cpp": { + "mode": 420, + "sha256": "63e2bcfb2820e7533aa3a287bcec6c318f7238006dce61ad35381562b979cd47" + }, + "tests/mars_parse/canon.h": { + "mode": 420, + "sha256": "c9a78b866d62c4e58643de2c4149572380a1392b411049c8fe74e37475d21d9e" + }, + "tests/mars_parse/oracle/dump.py": { + "mode": 420, + "sha256": "16e98089d5b532e35d6b88b3d50b4bb07e879c18512cf8d06cc5fd2aa9da1117" + }, + "tests/mars_parse/oracle_check.cpp": { + "mode": 420, + "sha256": "5eb81a0c2db8f96c6f8e51246ea9991642e5571dd94dd2e410e2fad632d47adb" + }, + "tests/mars_parse/test_blocks.cpp": { + "mode": 420, + "sha256": "f376a57891a83768ecc8b73ef5eb2333291c280760f7581ead53f7c2a71a4df5" + }, + "tests/mars_parse/test_effect.cpp": { + "mode": 420, + "sha256": "8bb14e7c718e772bfb4a22a7370f41080c49beabfa597ddd603be257bc310011" + }, + "tests/mars_parse/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/mars_parse/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/mars_parse/test_value.cpp": { + "mode": 420, + "sha256": "a8dbe3326e5339cdad8fed7dd678df92e8a8b675d0b854f4cea6517bf557069d" + }, + "tests/mars_stream/CMakeLists.txt": { + "mode": 420, + "sha256": "31c69840e6e2e566d2e0bbaf49ab3dec712d27e505d0810ddf0496ce3ff321e0" + }, + "tests/mars_stream/build_and_run.sh": { + "mode": 493, + "sha256": "3737e42960b66e788a11cdd7fa9917fe255b6a4f60280e9f620593bf688aab41" + }, + "tests/mars_stream/oracle/compare.py": { + "mode": 493, + "sha256": "f39dd70e4bbf1952cf99e3437fd1ed6252249f3455a2d3c73311f98d8ff4370e" + }, + "tests/mars_stream/test_domains.cpp": { + "mode": 420, + "sha256": "08394777f7bc4186883cd02058f17fda8f47c3ee47049892bd8762c28b5aa959" + }, + "tests/mars_stream/test_rng.cpp": { + "mode": 420, + "sha256": "55f77273d8af5880f976a24fb00dcd8042b31a7a33f15c9f4b62fdb85bba9d0a" + }, + "tests/mars_stream/test_save.cpp": { + "mode": 420, + "sha256": "50250bb4b4f2da05f9453c541f080e018b68731f24cbf93278d50ca93ddd8d63" + }, + "tests/mars_stream/test_stream.cpp": { + "mode": 420, + "sha256": "d0da9ac2287910527bdac875ab39e0147a9be2f5535f04b55460438f31be2537" + }, + "tests/mars_stream/test_wire_schema.cpp": { + "mode": 420, + "sha256": "1cfd259f554be8218cb182dd1facc07f6cd3dea52f0daf7303393e78c7c2eb97" + }, + "tests/mars_text/.gitignore": { + "mode": 420, + "sha256": "181314065df2f2fdaf920b1a8b5311daa216a2d6489a06ada5b49cc514d89417" + }, + "tests/mars_text/CMakeLists.txt": { + "mode": 420, + "sha256": "20f8e0cfa044fb4e6b1caca0ec8d6536e012c1c4ea4454fe990923f40a201752" + }, + "tests/mars_text/build_and_run.sh": { + "mode": 493, + "sha256": "59ae392080c01be0c7f5530ecb9ae4fbdcc02366242b27527c14b8efd5076d0c" + }, + "tests/mars_text/dump_json.cpp": { + "mode": 420, + "sha256": "e246384902c3adf4fa8f2a54e38c4912f6b58f168ebc9b1e158a719e2a52b1bc" + }, + "tests/mars_text/oracle/compare.py": { + "mode": 493, + "sha256": "46a796196a413aa28a0069086e45c96399f21308153b578f063801eb997b54ef" + }, + "tests/mars_text/oracle/dump.py": { + "mode": 493, + "sha256": "53fde94f6676a5504a247cf209e2a42d67e108cc9ea0b02f289562799ee7d880" + }, + "tests/mars_text/realdata_test.cpp": { + "mode": 420, + "sha256": "a399ad5cf91cf35f78809f5b9b5cac8b2eff344dbfbab07b8b27bf66058e1e3b" + }, + "tests/mars_text/unit_tests.cpp": { + "mode": 420, + "sha256": "cd1e9e4f6e0e503d4d9b0902bd2936513293490cdc680f94639ce93661ca09d7" + }, + "tests/mars_vfs/CMakeLists.txt": { + "mode": 420, + "sha256": "282015598e03430be0f47b779ce7087662415b3a59de14814cb3ba35c17af363" + }, + "tests/mars_vfs/build_and_run.sh": { + "mode": 493, + "sha256": "b6a8e7b0706d7416f548f071e742e600cab226663f7d4ad42299dbb76f631701" + }, + "tests/mars_vfs/make_fixture.py": { + "mode": 493, + "sha256": "57586249e57550869dd5adfbc4fdab173a59d2aee630ba69c20d562018d249f1" + }, + "tests/mars_vfs/realdata_test.cpp": { + "mode": 420, + "sha256": "c95248ae53d32bd5d8cf963ca3a39ea82e5ef08b76de736104b6aa34ec88c789" + }, + "tests/mars_vfs/test_main.cpp": { + "mode": 420, + "sha256": "cdb7bdf9b9356eb0b7f6cb0fab081cda2161b34af14ecf60cc44970e79d517c2" + }, + "tests/mars_vfs/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/mars_vfs/unit_tests.cpp": { + "mode": 420, + "sha256": "de8da00718799886fbbc5820e0f7d0e468a31ab0608361fb509b0c12932c9caf" + }, + "tests/mars_vfs/vfs_cat.cpp": { + "mode": 420, + "sha256": "4a443e779de264f5c0c68a631b1a353b1310a4e838d342527befd8ad1e2a25bd" + }, + "tests/mars_vfs/zip_builder.h": { + "mode": 420, + "sha256": "a0f3688e5a90b7e209497d66d0dcd30a0e1ac59a56ffcbed31b2a50967c1da3a" + }, + "tests/shim_budget/CMakeLists.txt": { + "mode": 420, + "sha256": "88a0f43e433c3a6879a7f6cccf8c84ba4559009614a3fe5adf6c558ea7a47245" + }, + "tests/shim_budget/unit_tests.cpp": { + "mode": 420, + "sha256": "654e96d0880232d3090223a0d9f92f428aeffa528fbd5eca89d6bfe348aefce0" + }, + "tests/shim_colony/CMakeLists.txt": { + "mode": 420, + "sha256": "d7b2674971b0eda32b2edd62244c32af81cea9e6d984a24ca6648edbaea80e06" + }, + "tests/shim_colony/unit_tests.cpp": { + "mode": 420, + "sha256": "4cc41308c10fa1e6aa047fb6c26e4c655b727884bce87b5a9e8e2f76db665474" + }, + "tests/shim_events/CMakeLists.txt": { + "mode": 420, + "sha256": "2b43190a2ce88cf7227250aa5a3b48e3006d24f0d6f5e9a5e48507c2733e4c45" + }, + "tests/shim_events/unit_tests.cpp": { + "mode": 420, + "sha256": "0dc151a4aecb24217cc38cb818bbe760b3da2b08a23ad734b3fa8506d25fe2b4" + }, + "tests/shim_movement/CMakeLists.txt": { + "mode": 420, + "sha256": "46ffe5a9815b189283e4d5ef67a0dcd159f60da7f9ca4a3577669035fefdc1f8" + }, + "tests/shim_movement/unit_tests.cpp": { + "mode": 420, + "sha256": "ee6ee983aa72f078a7ae398ca5f828aba14370c898ae4e56063697d28919ad69" + }, + "tests/shim_player_turn/CMakeLists.txt": { + "mode": 420, + "sha256": "f6affa205f857d4a45f8be05ae0426b6f9a2e8e127f5aeadbac2ed8a4c4daddc" + }, + "tests/shim_player_turn/unit_tests.cpp": { + "mode": 420, + "sha256": "0a528cdf64904dfd22c94ea911a15213701e7912921f04c1909799e6e6240450" + }, + "tests/shim_rng_ledger/CMakeLists.txt": { + "mode": 420, + "sha256": "b6a349f2611ec1f1de2013145a97f3da59cefec81dbc4d2f3e58af507e598bb4" + }, + "tests/shim_rng_ledger/unit_tests.cpp": { + "mode": 420, + "sha256": "d38d80dd907a3468036dbca2b017718b199ab4a0078eb5e5b019b913a9ef8d8c" + }, + "tests/shim_techfx/CMakeLists.txt": { + "mode": 420, + "sha256": "5eaf9a76df6b10258a8c1d2658b03d97377d48a778a1628ca94c9bd69fa7ba8a" + }, + "tests/shim_techfx/unit_tests.cpp": { + "mode": 420, + "sha256": "99a71a6d0ca1f53fc8ff0bc21e79acd64ba2cd9c9f990641e5970c866794595b" + }, + "tests/shim_trace/CMakeLists.txt": { + "mode": 420, + "sha256": "91bc736e198c5cef86ad2ad69ca77d93ab770e5faecf9e6d915f9263b9ce491b" + }, + "tests/shim_trace/check.h": { + "mode": 420, + "sha256": "f4b72b971886c64383880ba26484f9c908d21f5902dff0de0b42f276b00d8366" + }, + "tests/shim_trace/harness.h": { + "mode": 420, + "sha256": "d7eae563723843c1389b108fe2efb2e31b6c264d23567a370a09fb9b1d513697" + }, + "tests/shim_trace/oracle_emit.py": { + "mode": 420, + "sha256": "29ed06c602e9f0d6430bb3c81192b1946213a3f44b91107f7036f35f17b69f42" + }, + "tests/shim_trace/test_coverage.cpp": { + "mode": 420, + "sha256": "8ed5b6d755fe7e2bc98d525e97bc7817a5efb7ed5f0196d49d1c783de3a91bea" + }, + "tests/shim_trace/test_diff.cpp": { + "mode": 420, + "sha256": "afd8e5124cf6e1ad9c4f3e4c2beeb65d00002cf1d4cbaa2e876fea0817a7a347" + }, + "tests/shim_trace/test_emitter.cpp": { + "mode": 420, + "sha256": "a9255bbc055df36a01931e8a61dd1dbf16085f7713db7e7386f66b69ddb10762" + }, + "tests/shim_trace/test_hook.cpp": { + "mode": 420, + "sha256": "4dd67374e260ba2722219c2e44e6be76e583d0ad65844f34859cff49b66a30cc" + }, + "tests/shim_trace/test_sha256.cpp": { + "mode": 420, + "sha256": "b55aa15dc806e3e4a87ddf50657fa4e0af6a4e4e2205c4bd63d1ae066fe57428" + }, + "third_party/minhook/LICENSE.txt": { + "mode": 420, + "sha256": "d5c2224982b0b95a16b098a561335fa93f3eaf4d0aa964b7843edb986df78dc8" + }, + "third_party/minhook/VENDOR.txt": { + "mode": 420, + "sha256": "c79054234a5340f6199f8d9f47d6b3d88e8abd2120586cd78f081cfb81a6fabd" + }, + "third_party/minhook/include/MinHook.h": { + "mode": 420, + "sha256": "e34bbf7b855c842694f6e3dd78e2d280e99ed9732501e3dc1532a8626a8db8e5" + }, + "third_party/minhook/src/buffer.c": { + "mode": 420, + "sha256": "75a789eb718bd5ed2de039ccd330736a31d0a2d14e43d8e15e6cd2332432482d" + }, + "third_party/minhook/src/buffer.h": { + "mode": 420, + "sha256": "9769702bd625249e59a19ede05c84365fcc7707e1fa0e5df08df42227cee13e3" + }, + "third_party/minhook/src/hde/hde32.c": { + "mode": 420, + "sha256": "0ddbc3ab3e0b37e61691131289a151e34f508233ccf3f701752777e5d3f62d68" + }, + "third_party/minhook/src/hde/hde32.h": { + "mode": 420, + "sha256": "5132de5be8ac7a9d054420f5caef0fb01437faa892f03b3cdc77f795973bf15a" + }, + "third_party/minhook/src/hde/hde64.c": { + "mode": 420, + "sha256": "9bf19dd706d4bc255ebd1709f98fb44899df7a1f2412820d77295136e0620f1d" + }, + "third_party/minhook/src/hde/hde64.h": { + "mode": 420, + "sha256": "e99aa4997bda14b534c614c3d8cb78a72c4aca91a1212c8b03ec605d1d75e36e" + }, + "third_party/minhook/src/hde/pstdint.h": { + "mode": 420, + "sha256": "604d1cdf45c5a95bc9cf1bbf39ca05ef83013541101d34971c5cd7577e3d5247" + }, + "third_party/minhook/src/hde/table32.h": { + "mode": 420, + "sha256": "43bf687a9fff071b5f46070db4d36c846f8e069cdc57485ee897c499aacdde23" + }, + "third_party/minhook/src/hde/table64.h": { + "mode": 420, + "sha256": "b774446d2f110ce954fb0a710f4693c5562ddbd8d56fe84106f2ee80db8b50a2" + }, + "third_party/minhook/src/hook.c": { + "mode": 420, + "sha256": "3060d3c42f03a2f11324cbee95d853071757ed0fe4b1bc9eb5f0d8fc9e346a37" + }, + "third_party/minhook/src/trampoline.c": { + "mode": 420, + "sha256": "d837f8555681c3762468d712c43f2064ed31dee610e0b02965fd8aa54b88172f" + }, + "third_party/minhook/src/trampoline.h": { + "mode": 420, + "sha256": "27426751dde36cdd8346469e61cdcca47950b1056a69f21cc63f4b41743faf6a" + }, + "third_party/miniz/ChangeLog.md": { + "mode": 420, + "sha256": "ff3b6040f7cbd8c9779a0690e906c66408f7efe3cf88a25019323f0189025ec3" + }, + "third_party/miniz/LICENSE": { + "mode": 420, + "sha256": "0115478d567121238cf6cc1c0c361926cf07a49d9e4c9e66da97fac6a01646b3" + }, + "third_party/miniz/miniz.c": { + "mode": 420, + "sha256": "e2c1aeb66eef9191d8c3feb164db2def2335a61d039bf04ed849f6b042433b30" + }, + "third_party/miniz/miniz.h": { + "mode": 420, + "sha256": "b53b62ed122e559b8f679e3cb787a0b0035fe87a58f909da0e44931678f4e85f" + }, + "third_party/miniz/readme.md": { + "mode": 420, + "sha256": "b4ea367be28a36e5386f65118b73962bc659a67936d248be68b7a7c03b8d359b" + }, + "tools/build-shim.sh": { + "mode": 493, + "sha256": "1da3fdcc019dc6495c870a42b93cee9f21ff7f9623f033c2f50d9db9fd6a33e0" + }, + "tools/check_shim_configs.py": { + "mode": 420, + "sha256": "ef5e8f100c06d8c485a165ab668206af3e9aed3e1f6aa6ffec2592419fc2332f" + }, + "tools/clean_room_check.py": { + "mode": 420, + "sha256": "e15bc3ebfd29c6e2d8edfc32cc812858869b49ffa1404cafce14c4c24e0f4e24" + }, + "tools/clean_room_check.sh": { + "mode": 420, + "sha256": "6646eb6010be756113f7af39b9cfcb06e8580893fbd100a41993f87757ccfd6a" + }, + "tools/deploy.ps1": { + "mode": 420, + "sha256": "fe01f46bedc91d7b42ff98cb0e69633845094cc2802108d23d48eb70f32e3f27" + }, + "tools/sync-build.sh": { + "mode": 493, + "sha256": "ce418ace6c5edae8609849233bb5dfd24657f55141c8ef8507659608f12aee2d" + }, + "tools/undeploy.ps1": { + "mode": 420, + "sha256": "5730b6f95f161ba5a727dc0a34f26da7f1f697711495d6a9de9c289ecd747af0" + } + }, + "manifest_sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd", + "path": "/tmp/opencode/sots-final-research-engine" + }, + "re": { + "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", + "files": { + ".gitignore": { + "mode": 420, + "sha256": "ba56b745b84c6d15b7288df65f319831fed3cbf8edd1ab3a6476418f48fd95f8" + }, + "AGENTS.md": { + "mode": 420, + "sha256": "ac21cfb98c6cc2f666c7237967ee71315b4787557e936072548e4e6934a8d9fd" + }, + "CLAUDE.md": { + "mode": 420, + "sha256": "65cc9d5f028959a7d9b53c4828778b27217eb04f37f55b08e6aa3e40afb60a4a" + }, + "README.md": { + "mode": 420, + "sha256": "e318014a84d03e53983cdb1e5b0310f372b959f659b91abc9214faf530544afc" + }, + "campaign/DASHBOARD.md": { + "mode": 420, + "sha256": "c5f72f13d38ad96b5a30131b09c20300743d0d1e15357fd249eac9793759026d" + }, + "campaign/agents/analyst.md": { + "mode": 420, + "sha256": "895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952" + }, + "campaign/agents/implementer.md": { + "mode": 420, + "sha256": "eb5581051a92b3d2b9ddd947812b1c02ff6a0b5e7619e7674adc26701e9a3d91" + }, + "campaign/agents/lab.md": { + "mode": 420, + "sha256": "48f1765ebdcb2015e631ad91428f65735ff899e119134b652f70788ff2eae5b8" + }, + "campaign/agents/lead.md": { + "mode": 420, + "sha256": "8fcfe52be845ed98a172afb47ea888b19bb7bffa80f7b50ace58d2bb66924220" + }, + "campaign/agents/resolver.md": { + "mode": 420, + "sha256": "742c36dc8567669d462566d6121eed42fcff5bff34e8eff466e92249f7ca195f" + }, + "campaign/agents/verifier.md": { + "mode": 420, + "sha256": "e467fc644e4e37d631a7a4e35038d9d3d0498491f1d7811d61d99271ff345c6b" + }, + "campaign/backlog.md": { + "mode": 420, + "sha256": "ee123405f92be97d36d86420707d3d60c67cb4ad50165491bc6e12b8dacf3b6f" + }, + "campaign/board.md": { + "mode": 420, + "sha256": "1c256d6e39063609ba89745d2931ad5005223da89ddbe9fda2d782b88d5acdd2" + }, + "campaign/contract.schema.json": { + "mode": 420, + "sha256": "a2c76ec042ca097a57c3c05c1e519e392d498d387a31808c7d0f70482d43c201" + }, + "campaign/models.json": { + "mode": 420, + "sha256": "00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48" + }, + "campaign/open-questions.md": { + "mode": 420, + "sha256": "bafe95db6591d87a2bd7c67831c34a993afbfd61e9f75357625763dec25fe134" + }, + "findings/.keep.md": { + "mode": 420, + "sha256": "141ed928eaf10a2023dd2c0ff6ea68cf6ec423cfd28d5a359d9c5add730bf64c" + }, + "findings/00-strategy.md": { + "mode": 420, + "sha256": "3bc97827988c6eb4647713c5655271e156dfa466fad5685924010f3244fe6386" + }, + "findings/01-fingerprint.md": { + "mode": 420, + "sha256": "7cf0503c29f5beff852427c2c5bdf8e9d968386de777c47b6130771cac944cac" + }, + "findings/_template.md": { + "mode": 420, + "sha256": "b92d0ca7bfef4498a5f9e594453f15ab15e2c88c7582c4ed5df4c40e6871c3b1" + }, + "findings/control-flow/ai-visit-order-probe.md": { + "mode": 420, + "sha256": "e89f91a33139014ebdc22d79064ecfd06f9b4ffebb4bbc3da73734fc47534047" + }, + "findings/control-flow/alliance-mask-and-modcount.md": { + "mode": 420, + "sha256": "ec66c6b76d9e4c8bed385acf70e6a7d5da08e05eca72ac1e8e5cb307d87f2552" + }, + "findings/control-flow/combat-done-tail.md": { + "mode": 420, + "sha256": "799ace775f12ebe9a2737a711c8d0a6e617f0cefec70b93bf094e47cf81cc348" + }, + "findings/control-flow/combat-resolver.md": { + "mode": 420, + "sha256": "abf1a9329c1bd8a96c76481246a00b380e9a17fa8dc8900810218026e5fe1b9e" + }, + "findings/control-flow/combat-retreat-pipeline.md": { + "mode": 420, + "sha256": "6c40c8bdbdde672c9cd67248d740d88892ad2b93b30e27e9bebe0e96027cf136" + }, + "findings/control-flow/fleet-visit-order-mechanism.md": { + "mode": 420, + "sha256": "a2ea1a6ac9d383380e16910cff89dff0e9b23f1df66f47ef91dd266bd50b3a6d" + }, + "findings/control-flow/gate-indexed-rng-audit.md": { + "mode": 420, + "sha256": "5004b2480787eec7be66f40474648030fdaf7759087a4c4651091152d89351cd" + }, + "findings/control-flow/hive-creation-rng.md": { + "mode": 420, + "sha256": "5ff37d571c0380c798a137e0c6947a0c63109de489fd2100c99bfc6637fc272b" + }, + "findings/control-flow/indirect-edges.md": { + "mode": 420, + "sha256": "3dbf2acf7354f61de66348fe40965f3138dbc4bbff8cb0f06b2751e71ed06ee1" + }, + "findings/control-flow/inlined-draws.md": { + "mode": 420, + "sha256": "3b099718543d7fb112664699749602ff9d61de9aaebb561fc93f1f8b7a152134" + }, + "findings/control-flow/per-history-residue.md": { + "mode": 420, + "sha256": "739c7fc760583ca143036ce554e1eece640d1662fba4642e6f80fadd3dad13f9" + }, + "findings/control-flow/pinned-seed-rich-turn.md": { + "mode": 420, + "sha256": "7c62336767b7c69f513446543f37662ba2a0872e207b906279446bbe399d65b6" + }, + "findings/control-flow/raid-gate-multiplicity.md": { + "mode": 420, + "sha256": "6d7b7357be428ff79186478dc37063657ca4d8e2ad49fcdd92493753748a52f4" + }, + "findings/control-flow/raid-intercept-species-word.md": { + "mode": 420, + "sha256": "1da80eb14f0e3e5a0ce139f62976bb305e3e75a1e5e0631d8287f94eac093d8f" + }, + "findings/control-flow/raid-intercept-z-word.md": { + "mode": 420, + "sha256": "beb421953b70377c8c759f5cc936321faa6316be76d41020b41f26c99706acb3" + }, + "findings/control-flow/raid-target-pick-verdict.md": { + "mode": 420, + "sha256": "d0262a4187e35547b28d6be842e7c730aa3ee93565404b587a790706afabd694" + }, + "findings/control-flow/seed-exposure-forward-test.md": { + "mode": 420, + "sha256": "f108a07ce695b64c482af58db4caeb2607059a3357b62f04f7f36ce45c84ff4a" + }, + "findings/control-flow/standalone-generator-and-turn-record.md": { + "mode": 420, + "sha256": "e499f62534580f27c2a01395e08312ebc7df13bdd307342096f468212aec600b" + }, + "findings/control-flow/standalone-scaffold.md": { + "mode": 420, + "sha256": "0bf928260d5058815a2f09c4df8c08eb359430aeea941f872018de7cbca39105" + }, + "findings/control-flow/tail-probes.md": { + "mode": 420, + "sha256": "ae45e84a9c7f257170f7550301fc4e1a35d5210269bda8070469a5c921cce95e" + }, + "findings/control-flow/tail-rng-ledger.md": { + "mode": 420, + "sha256": "2db588423e7b7de7729e5319477c17fbcea5b7a9cb8ff00b01cfd72bfce25403" + }, + "findings/control-flow/trade-raid-rng-gate.md": { + "mode": 420, + "sha256": "85c7b27aa284988b07b5e67c8e48ef1725289f1a6956d88be2572577cc06e1bf" + }, + "findings/control-flow/turn-driver.md": { + "mode": 420, + "sha256": "3f4e92041a0842d211ea9ae1ae16a9fe400dacf9632209102a1f76acc6b30792" + }, + "findings/control-flow/turn-spine.md": { + "mode": 420, + "sha256": "e2a64f82e5dececb4ba56859d1e53a0f720e08472c79c39197beba7f6041811b" + }, + "findings/control-flow/w3-containers-status-handlers.md": { + "mode": 420, + "sha256": "fffbaa6e3701abbe57a54046416a102502afeaa29b14632f9506905c22bf3914" + }, + "findings/control-flow/watchpoints-modcount-status.md": { + "mode": 420, + "sha256": "0aec4c93ca7219e29827a5069a9829d5e58da2001e79a7316bce288d3e9a6c7d" + }, + "findings/objects/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "findings/objects/00-inventory.md": { + "mode": 420, + "sha256": "cada5fc81c42cb50878a26e43a58640153c600319e66d4c92a23d7c363ff5f14" + }, + "findings/objects/aiagent-block.md": { + "mode": 420, + "sha256": "55d646ab57e90477993d263399254a3b103024d89fff42491b7df5cf4ffc8037" + }, + "findings/objects/classes-game.txt": { + "mode": 420, + "sha256": "e0eceb77c56e05bc7863d3a07805d703fc0ecec489ef24fabe7c6161f2835199" + }, + "findings/objects/classes-mars.txt": { + "mode": 420, + "sha256": "b624f7bd82a5277462a39627140a85c7a7929fd292b62e45edb5c96fd53b6145" + }, + "findings/objects/ghidra-recon.md": { + "mode": 420, + "sha256": "ca4b043a73c1d5573aa0c83cd3942db731884910c90e7d8544c8a32c939e2fda" + }, + "findings/objects/rtti-raw.txt": { + "mode": 420, + "sha256": "39f6fdf8793f8202c19cfb87a75466b215254a13050ec37c0c496699298247ad" + }, + "findings/objects/save-editor-structs.md": { + "mode": 420, + "sha256": "835d4fbf154275542383ea499a527c044ec7d577486c2735b817bd32d6e0c853" + }, + "findings/objects/schema-gaps-resolved.md": { + "mode": 420, + "sha256": "9ddae36eb8e3ef909c4902d01200fc8a17335271e4e063939ae162a3eea5bb3a" + }, + "findings/objects/serializable-types.txt": { + "mode": 420, + "sha256": "59c2f3942f55eb3f6687758a4c447b1ed8902caa60b97d9619bb8228e27c6838" + }, + "findings/objects/serializer-struct-recovery.md": { + "mode": 420, + "sha256": "5b56d8e1a5047d602cea7a76227f30e17244057fe21fde3d4e2cc76e9f185416" + }, + "findings/objects/ship-design-catalogue.md": { + "mode": 420, + "sha256": "feded2191180e184d34d4992935dc117bff8d052e8a2c63ecc29fa7b2e6b561d" + }, + "findings/objects/struct-recovery.md": { + "mode": 420, + "sha256": "4e99ef972529101f5700b52845e263fb3789e0b82d8cdeca921f1595a24d92db" + }, + "findings/objects/svsctob-variants.md": { + "mode": 420, + "sha256": "89617cd2909f2242e9e1657fd4a8f5aafe5aa0c1e0e9bc8926fb67c1e830dd2d" + }, + "findings/objects/svsctob-writers.md": { + "mode": 420, + "sha256": "7a9b7f3bf4eae63cf522246227410b2e3ca789284b7c620f01550fadf479622c" + }, + "findings/objects/turncommands-block.md": { + "mode": 420, + "sha256": "8eca2b79838114e7ae46d34c6e75eaf3b04c0448d9896ed4219b118f09e83046" + }, + "findings/objects/wire-schema-channel.md": { + "mode": 420, + "sha256": "31f0fc4e1cc3c3e7ef938aa22ad65cfdec32be4f1ade476a7ebf32c3c6f07d6f" + }, + "findings/objects/wire-schema-closeout.md": { + "mode": 420, + "sha256": "bbae848b4f8d6d0f2a914268ac34e75b4cea483f52816916202f3bd3cd084255" + }, + "findings/objects/wire-schema-ratchet-debt.md": { + "mode": 420, + "sha256": "0d144181478a607f2474a7c8a1b71ca49c881ef6fd068b5e8859c3fa8129507a" + }, + "findings/resolutions/2026-09-08-ai-seed-per-process.md": { + "mode": 420, + "sha256": "0765bdaeade29122ab5e64493f3a7c339f1e4c4445192ed09ae3d229dd6ae943" + }, + "findings/resolutions/2026-09-09-fleet-id-order-residue.md": { + "mode": 420, + "sha256": "b3d63a11e8ebd55da4af15760d044607b6105216898a018f5ceebc94750817e8" + }, + "findings/resolutions/2026-09-09-seed-exposure-is-a-predicate.md": { + "mode": 420, + "sha256": "dd7ce18738a625b9008ef80783bd64fc3857852775ab3b784b9e5f4fd5ae7de1" + }, + "findings/resolutions/2026-09-09-tail-draws.md": { + "mode": 420, + "sha256": "ff86a332ea9f87bd6f42a0b64e837e6f6f5876423ae9403a903aa9bfe7c42678" + }, + "findings/subsystems/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "findings/subsystems/ai-client-seed-is-per-process.md": { + "mode": 420, + "sha256": "5e6de0418588ff28cee29cb9affd69c3183819318c314eeb0771bbe810e6b4ed" + }, + "findings/subsystems/ai-order-capture.md": { + "mode": 420, + "sha256": "6efebf9f00b375d2c7f29ddeb24ef7a04e3b02cac9027369b490157a196d08ce" + }, + "findings/subsystems/ai-order-emission.md": { + "mode": 420, + "sha256": "9e54a13a18387a4f93acc5c66dbf71d365c81f1a8e6d2aee31f7a89712894ace" + }, + "findings/subsystems/ai-stepping-and-passes.md": { + "mode": 420, + "sha256": "e7e2fc612457a4e77df362aea2928d20fa5a2456fe12a7fbafeaf3c9e01c1dc1" + }, + "findings/subsystems/ai-task-system.md": { + "mode": 420, + "sha256": "577f8fc41256ebdf9629f1e30df9aac7f51c1a84b55f60c2b59e4af4c55126b2" + }, + "findings/subsystems/ai-turn-logic.md": { + "mode": 420, + "sha256": "79e9b7c9592d583db7b9d9ce472804038a71febf7527bd69e31b3399caeb0770" + }, + "findings/subsystems/battle-load-profile.md": { + "mode": 420, + "sha256": "3cf8e28925ebbb162bca9c3be9e6b2599c82ab6aaf9a9d99ffd9c934bf773c77" + }, + "findings/subsystems/data-model.md": { + "mode": 420, + "sha256": "f01c9bfcf8ed9fbf9fdd30556308a1dbb1094896050cc8a5e4fbc1c6c61aff78" + }, + "findings/subsystems/data-parsers.md": { + "mode": 420, + "sha256": "6a428c14279ac2c589b4af932e762ef7e3ada1a878128527b8d88858c11fbc35" + }, + "findings/subsystems/determinism-oracle.md": { + "mode": 420, + "sha256": "4fe0abad0b1b825392cd47b792d06756742495f26ff40a6a433d8608b4680bcb" + }, + "findings/subsystems/eventlive-verification.md": { + "mode": 420, + "sha256": "8bfcc75e57ddf88ec8a4b8885f033be8ffd420965077ab284b1ebce535ecf1a0" + }, + "findings/subsystems/events.md": { + "mode": 420, + "sha256": "c5d6e168d6d48eabec0ae0a448f9c3ec8d0f751a67fc320bc1021ba10008a3bf" + }, + "findings/subsystems/formula-gaps.md": { + "mode": 420, + "sha256": "63ec96a27fac5381d33cdce3e549d230bd5b0230e4d8573f4f3d45bab7d47ffc" + }, + "findings/subsystems/fpu-precision-sensitivity.md": { + "mode": 420, + "sha256": "4cf84e2a1c3d0eaaf9b3a7f218ad663ffa6984389b2a25851249733ad708ff8f" + }, + "findings/subsystems/golden-trace-recapture.md": { + "mode": 420, + "sha256": "b244f939b87dd464d78d919675c0e6aa010b0ec7b4fc6e4178e26c2c8ebee738" + }, + "findings/subsystems/id-allocation.md": { + "mode": 420, + "sha256": "b04a14a5a7d4d1c6137c4f9072987eebc997421e550881dcc2c8e386187f5b90" + }, + "findings/subsystems/income-term.md": { + "mode": 420, + "sha256": "c40286635675a91ce779b887a0394e92f946844873a778015efb98c4a105b67e" + }, + "findings/subsystems/loader-prototypes.md": { + "mode": 420, + "sha256": "f1d09471d5e17c45413b86805f561329f5af24eadfb17c3c740686c39b167ed6" + }, + "findings/subsystems/money-chain-float-widths.md": { + "mode": 420, + "sha256": "99bded6f2d34a713bc175deb4ad5ab4559ce1cc90274b036c1818ad8257c2fef" + }, + "findings/subsystems/movefleet-position-rounding.md": { + "mode": 420, + "sha256": "12dbdc03658cb042b5927586769dc9c19fc2eb812f703e73bf26273f8b0d65a6" + }, + "findings/subsystems/multiplayer-combat.md": { + "mode": 420, + "sha256": "2f4957011b5c5875b8aa7f71531dd5dfe3fd8df4f2c67a7be2fb5999f090c02b" + }, + "findings/subsystems/multiplayer-gamespy.md": { + "mode": 420, + "sha256": "a878e97775d27e085e58b18eaf5a67aaa522456d1055ca142f0477e3d6152d47" + }, + "findings/subsystems/multiplayer-tier0-verified.md": { + "mode": 420, + "sha256": "942ce29cbe22d8f7de5af54f2017c0433c7b8e1a56c864868ec906ffcbb9059a" + }, + "findings/subsystems/nav-classifier-live.md": { + "mode": 420, + "sha256": "b8aacdea8072a99ba1192e235088b372180f094795baf164e8cb95bd2df9f3b0" + }, + "findings/subsystems/nvo-tshn-visible-owner.md": { + "mode": 420, + "sha256": "ef96bb61769c02affd7148cd95e70bf358cbe6263fbe9b47aba6cf4cfa8486ad" + }, + "findings/subsystems/observedtech-append.md": { + "mode": 420, + "sha256": "61efcf51bffe53b8a10a2cdb8123db3f8c55b6874db87418fc31737efedaa652" + }, + "findings/subsystems/output-term.md": { + "mode": 420, + "sha256": "9eb9ff58a1d4cf34d3138f5044788b6f87ff4c94fa871b2dedd6ff6667196533" + }, + "findings/subsystems/output-turn-path.md": { + "mode": 420, + "sha256": "4e199e5cc14802c1b14b37cff0c1359b43aca94dab833f9024c7825c4c512588" + }, + "findings/subsystems/path-solver.md": { + "mode": 420, + "sha256": "3e0e318d45e14f844831c4180e47011263f64067dacf3249742882186d65cf18" + }, + "findings/subsystems/players-residual.md": { + "mode": 420, + "sha256": "e2f56c7983856470d37cd0fba4834a0ccb34dcaddbaf9acaf5dcdc253c6b3507" + }, + "findings/subsystems/population-growth.md": { + "mode": 420, + "sha256": "c2ec2f062e1224045b761640549e7374336ac762bd61c686a0c1378ad829a993" + }, + "findings/subsystems/rcex-explained.md": { + "mode": 420, + "sha256": "df7c9de6f02c1bd38f69e3a5344ec663d97b1d6b738ff408dfdeb0e2f6175b32" + }, + "findings/subsystems/relabel-new-ids.md": { + "mode": 420, + "sha256": "562ffe347adc6432a7824bfa2b324b6b1812b4fcc18343f0732c0f3d9991be20" + }, + "findings/subsystems/research-replace.md": { + "mode": 420, + "sha256": "d0f692cf687a7fe6aab62fc5d7d076eb595e1c33fd84c6f1e437ed01025cab4b" + }, + "findings/subsystems/roll-parity.md": { + "mode": 420, + "sha256": "7d97d7e5eee7b9f135e32b6553bb94ca83fd05b1eca7d18c42e9d65cae4d95d1" + }, + "findings/subsystems/rung-b-rich-turn.md": { + "mode": 420, + "sha256": "44378c6a305a82b2d131270fa5d97fdcd8a7fd5c9760ecbad7715383eac2db68" + }, + "findings/subsystems/running-the-game.md": { + "mode": 420, + "sha256": "f6109f69c6b86e4cf01d0f2e1f8be9921ff632513bca5d9e44e7f6c34f1cd260" + }, + "findings/subsystems/setresearched-cascade.md": { + "mode": 420, + "sha256": "9c079de161a1d1387339b8e8081395c1356c1443a0c898942acfb6efb65a454f" + }, + "findings/subsystems/ship-construction.md": { + "mode": 420, + "sha256": "86f570b1872c8dfac3982d1d7335f4798ccbd1bfd73c91d481afba2734c41216" + }, + "findings/subsystems/ship-design-composer.md": { + "mode": 420, + "sha256": "639b276e9205aaf6c90d9c458a383cc073e89f401ef8f17f8ad5a8a0c5899fa8" + }, + "findings/subsystems/snlv-measured.md": { + "mode": 420, + "sha256": "785324d176be969e1809090acd6b7a48d27f4fa41472c0d9c6f568c0b3a1e539" + }, + "findings/subsystems/spy-detection-roll.md": { + "mode": 420, + "sha256": "214179f5091408ef01ce4b80565068cb9a0885d1c6a233cda476280b9bf29c0a" + }, + "findings/subsystems/spy-program-draws.md": { + "mode": 420, + "sha256": "0c61c2f9cc767ae679921bfc42ef9a207ec9a6e0dc88419a673a8e439f1abfc1" + }, + "findings/subsystems/strategic-turn-internals.md": { + "mode": 420, + "sha256": "3a5c17e025d4968db6030f8ef1daaa2b03ccd4def12d35cf3a0eabcb0b5cbb54" + }, + "findings/subsystems/strings-and-config.md": { + "mode": 420, + "sha256": "67aefda7792e329b7df3f6e8cf42c7bae7049867cdda0741e871b183bc528786" + }, + "findings/subsystems/system-visibility-prediction.md": { + "mode": 420, + "sha256": "b420526ca0410bd4578dd2ed29cd9a21ed3578d6345d9f853a883e0159c1f89c" + }, + "findings/subsystems/system-visibility-record.md": { + "mode": 420, + "sha256": "d2843e10c156a7c85d7dab40d00204475fc725dc9b93656f6cde941ceceb5f51" + }, + "findings/subsystems/t34-observed-designs.md": { + "mode": 420, + "sha256": "207641821a55f5671749b000d478afd9e427336e2d123a55ad2203f34dfaa796" + }, + "findings/subsystems/tech-effects.md": { + "mode": 420, + "sha256": "7423f1e2cb2a597738b244d58bdf467431ee5de725ac434b904676ddcbcfc609" + }, + "findings/subsystems/techid-name-map.md": { + "mode": 420, + "sha256": "cfd92a7885dad3775465fc0c5b40aeb1749499f90071b44855ab8e1746d5f752" + }, + "findings/subsystems/trade-and-spy-workload.md": { + "mode": 420, + "sha256": "147057456fa30b6218df19679abab1ac31b78276a4272d221b70776e154396ba" + }, + "findings/subsystems/treaty-turn-stamp.md": { + "mode": 420, + "sha256": "fa0a8588847cc2b9e92cddeca65fd00fe3d84a00a1034d9354053c7e6cd9ceb5" + }, + "findings/subsystems/turn-command-replay.md": { + "mode": 420, + "sha256": "b65fa3c3c01c67bc16ec488e4a44e6c748256e941c80987528b7602038a56e07" + }, + "findings/subsystems/turn1-to-turn2-nondeterminism.md": { + "mode": 420, + "sha256": "9ebe834fa0f7c1cf864032ec67da76730ed6c239d6bd3a717f147490116acc4d" + }, + "findings/subsystems/turncommands-capture.md": { + "mode": 420, + "sha256": "a57fd2a77784fef1b176749878b161c4f04ac77c1f4a061a6b713787d92fb9ef" + }, + "findings/subsystems/ui-screen-map.md": { + "mode": 420, + "sha256": "d266285e3ca99ba3b5ebbab47c78f3df247a8b539c0519c6fd27a999b9d6f84b" + }, + "findings/subsystems/unlock-cascade.md": { + "mode": 420, + "sha256": "38d29a9484aa3910f5a62b5dd08225ba590bf26901203c5aef1b0b466fbbc5fb" + }, + "findings/subsystems/value-domain-census.md": { + "mode": 420, + "sha256": "bc99139708aee5da4cafec585fc35ab3523b51571518038db19b5f1383c6a6c4" + }, + "findings/subsystems/writer-byte-exact.md": { + "mode": 420, + "sha256": "a0e91a90d2ae78328dbaef30b37d53037cab26489e4729413bcfebbafcab0978" + }, + "ghidra/addresses.d/README.md": { + "mode": 420, + "sha256": "cf2745d5d3e504725ae5a296dc20e3d63b8d32a903445aafe2af61828a6d59c5" + }, + "ghidra/addresses.d/ag.json": { + "mode": 420, + "sha256": "24d5b11779364cf198008b143c7a3a092117ec4a1530c489497dbc8acdf62d8e" + }, + "ghidra/addresses.d/ap.json": { + "mode": 420, + "sha256": "e37f478836eb297f9cc5186cd7df3f5942abc4b6396a4d2866e613841437f778" + }, + "ghidra/addresses.d/ar.json": { + "mode": 420, + "sha256": "8d8620be8dd807a610ff63c0d77cbf266f3d9ce272158991d1f55d9c9910c248" + }, + "ghidra/addresses.d/as.json": { + "mode": 420, + "sha256": "08a869ab9466d4b575363cfb6fc084ca72cdc05d509c5d87e658a9a9977a7ae9" + }, + "ghidra/addresses.d/az.json": { + "mode": 420, + "sha256": "60b9a169605ac171cffb848024141c9224f6897bf69b547b9a4f2b5ddfc8d835" + }, + "ghidra/addresses.d/bu.json": { + "mode": 420, + "sha256": "79037146ba621e43e561bcf0577afc25b2ffac4ced44c902d2ea8ed9171b1bb9" + }, + "ghidra/addresses.d/cz.json": { + "mode": 420, + "sha256": "35de20ff0e38d05b5c58c89690dfc81ce44eb280a2a594ae862e55d56edb5d3c" + }, + "ghidra/addresses.d/dn.json": { + "mode": 420, + "sha256": "c41f877a37bc864f8f315a47b720ac204c22c25de405f4de63b845180641eba0" + }, + "ghidra/addresses.d/dt.json": { + "mode": 420, + "sha256": "580762e01175fb7246d0f9214e4ed9ba16bebcdb82ad1525fd1f77c0910c660f" + }, + "ghidra/addresses.d/lane-a.json": { + "mode": 420, + "sha256": "fce5f06866bddc6bca095d53e376495103dfd8900ad7da0d0d6731f105915d71" + }, + "ghidra/addresses.d/lane-a2.json": { + "mode": 420, + "sha256": "1207088eb2ae041afc2618a627029e25f578ae9fe8db73bb9efb616f39c34bf0" + }, + "ghidra/addresses.d/lane-ac.json": { + "mode": 420, + "sha256": "02a1c2f01ca0d11a7c38d416d94fabaea64b5c5919f6ceaead83430fb398710e" + }, + "ghidra/addresses.d/lane-ai1.json": { + "mode": 420, + "sha256": "134a0cb87b95bf5f39ed015bcdf64c6e8da6b22e073d5b5487148cb5421addff" + }, + "ghidra/addresses.d/lane-ai2.json": { + "mode": 420, + "sha256": "e9d94ce026231d420538400fa9c73fa8a2fa882d16f542c6b8ce2c34014acda6" + }, + "ghidra/addresses.d/lane-ai3.json": { + "mode": 420, + "sha256": "89c29e1bbb1159b7b6fb4fc8c232902f8497efc82290aba6f50c9c9097feec6a" + }, + "ghidra/addresses.d/lane-ai4.json": { + "mode": 420, + "sha256": "78b7897d3d2678ddbff7cd982bfa7d93a0c26817846a148fd3f46790fef9d7fb" + }, + "ghidra/addresses.d/lane-b5.json": { + "mode": 420, + "sha256": "641c724d1fbf28f5469aac488401ea2f92bdd3b929fbf053ddeef0ba5b8de9da" + }, + "ghidra/addresses.d/lane-b6.json": { + "mode": 420, + "sha256": "b2b2833220e3a645efab2b767f1d93d1215a54d195e28e6743db8f1d89934697" + }, + "ghidra/addresses.d/lane-c3.json": { + "mode": 420, + "sha256": "b732932503c181c77bb14ba0136379c8fa3501d0c1471b02d9bca7d023bb5f5a" + }, + "ghidra/addresses.d/lane-d2.json": { + "mode": 420, + "sha256": "8b5df39fb5eea0cd40dffc20aaccabe169f5472171dfd242ca2e75dfc4ca608c" + }, + "ghidra/addresses.d/lane-e1.json": { + "mode": 420, + "sha256": "cb38b41b747bf74ee73fb7eaa301da4bb896d089fa1dea4197382e94940c7f69" + }, + "ghidra/addresses.d/lane-e3.json": { + "mode": 420, + "sha256": "a5fe9dbb37ee587bf36a311771bbc9d8dcaa4d4fcc0b420b8f45829929b0ff98" + }, + "ghidra/addresses.d/lane-ev.json": { + "mode": 420, + "sha256": "b243d31bcd69bfb1e5928ba8b70e958e559c88ee5190ca34e569f217a784798c" + }, + "ghidra/addresses.d/lane-g2.json": { + "mode": 420, + "sha256": "84401f05c5cf2ca0839e817877892e904b3fd2fd4175607abc34453acd8ce822" + }, + "ghidra/addresses.d/lane-g3.json": { + "mode": 420, + "sha256": "d176eb4a07bb6b98acea77e1a0a9904d317a594768ecf8719bbfacbdf6522729" + }, + "ghidra/addresses.d/lane-h.json": { + "mode": 420, + "sha256": "e8cffe89c7feb1d9fa1949f33aff01edc7b84b49ab752275662f6f613c16c0b6" + }, + "ghidra/addresses.d/lane-i.json": { + "mode": 420, + "sha256": "a4c482ff6fee78e96da3400b9ba7d76b58634a5933ff388db5993a1b105c8aca" + }, + "ghidra/addresses.d/lane-id.json": { + "mode": 420, + "sha256": "3f48c9b2e2c3a08e13a856bfb78d551af17f5a1a1079f03f8edbf4615f17ca7d" + }, + "ghidra/addresses.d/lane-j.json": { + "mode": 420, + "sha256": "4fd95b08fee60a2748995cb082fe50d61e7179ae90b106f230bfc5c55a35660d" + }, + "ghidra/addresses.d/lane-k.json": { + "mode": 420, + "sha256": "f6ead3ff256fd2e1408d52bfa28e308f106ad672b3fe1cce0d136faac351136e" + }, + "ghidra/addresses.d/lane-l1.json": { + "mode": 420, + "sha256": "ecbab4a1b602beefd6889effc4883b7f7de01afabb7c5c071bbc4e2237e9131b" + }, + "ghidra/addresses.d/lane-l3.json": { + "mode": 420, + "sha256": "eabb96253bee36c799f1eb89108e284162606cfdc5e9bd29dbf7b5f88ee88adf" + }, + "ghidra/addresses.d/lane-l4.json": { + "mode": 420, + "sha256": "5b2b54d2f3e123e352e9a2b0f1d80fc8afcdd0b97916a94ee5a62ddc03b0ae75" + }, + "ghidra/addresses.d/lane-l5.json": { + "mode": 420, + "sha256": "cedc4869149212d401c519c46fa3f02769f9c939fc560fe8d35cc4f898091482" + }, + "ghidra/addresses.d/lane-n.json": { + "mode": 420, + "sha256": "6987efa430f2da8987e42e61e53113f914cb00e3e52a7c679565e7faf5160c82" + }, + "ghidra/addresses.d/lane-o.json": { + "mode": 420, + "sha256": "7fcf357f25ccdf061b6bc688339e2006f830c551718b6419a0a9d0ac968bb555" + }, + "ghidra/addresses.d/lane-p2.json": { + "mode": 420, + "sha256": "7eaa63d64a0054ef88f323f58b31fca07bd2372dc21560b4bda64eb13d869792" + }, + "ghidra/addresses.d/lane-par.json": { + "mode": 420, + "sha256": "3836b786aec28feb028271d05f368d7c332b8930b51cfdceb36540133a3d3237" + }, + "ghidra/addresses.d/lane-pl.json": { + "mode": 420, + "sha256": "f29953d17effbb7d8256687833023d4656522e74c40bf1ea646d3b35da3635d7" + }, + "ghidra/addresses.d/lane-q.json": { + "mode": 420, + "sha256": "6f98496ffc288fb30c3a7347a7e5252b296f2345afd1bf678f98a2c934b8935a" + }, + "ghidra/addresses.d/lane-rb.json": { + "mode": 420, + "sha256": "bff95b9452e0efb63e74f741682c8d1843abfe3e722143cf01cf092aa894d75d" + }, + "ghidra/addresses.d/lane-sd.json": { + "mode": 420, + "sha256": "d3239b619cbef5cddc9c7bde6525301a99a6423f8a0e42c1ea53b9ae269c6da9" + }, + "ghidra/addresses.d/lane-sv.json": { + "mode": 420, + "sha256": "f574d8b4dc75da722870c74eb29cd56c75e04dd0ac384b4549fc95d425e3de3a" + }, + "ghidra/addresses.d/lane-t.json": { + "mode": 420, + "sha256": "70975f3c1dea55ceb11af12b9ba3a04e8f7bba2e25f1355ffcd3cd457c41545c" + }, + "ghidra/addresses.d/lane-t2.json": { + "mode": 420, + "sha256": "1e3c59089b769cc5f5d3cf16c33cb6db002966f5beb1a4fb9dd8e28fe54cd6a7" + }, + "ghidra/addresses.d/lane-u.json": { + "mode": 420, + "sha256": "bcccb6ec9257537eece135adbfd126904ca0becf14f9b5d17253adf5d8c9e8fe" + }, + "ghidra/addresses.d/lane-v2.json": { + "mode": 420, + "sha256": "6a4d4960ce99c05b928164159eaf4482bf763785a1f8c50efe133667886d9a54" + }, + "ghidra/addresses.d/lane-w.json": { + "mode": 420, + "sha256": "3971d65c772146534f5d8c350f2d203add70ac82801f57f3704c47cd59b51226" + }, + "ghidra/addresses.d/lane-w2.json": { + "mode": 420, + "sha256": "677648e94de8e1e0d538c9575c9be942d0b37c1a847effcb3c2312af5b6aa7d9" + }, + "ghidra/addresses.d/lane-w3.json": { + "mode": 420, + "sha256": "50ed8ed1b16288b00bac4df0886646dbf9d6d6392867029b4eac386806b41b51" + }, + "ghidra/addresses.d/lane-z.json": { + "mode": 420, + "sha256": "bc63a82f2d0cb7636e95f8a07f183f80817a4c65d2bb7263a047ec3c540512eb" + }, + "ghidra/addresses.json": { + "mode": 420, + "sha256": "865c02d88ac6ede656160a5ab20521ad8854efa381d5a943ab422216aca2c016" + }, + "ghidra/generated/sots_addresses.h": { + "mode": 420, + "sha256": "1cf6b4ab40d3cde306edee12ba4eb05292b98ddcf5c2b7c22c1c64b6075b1bdf" + }, + "ghidra/scripts/FixPlayer.java": { + "mode": 420, + "sha256": "9f9ea470af063339511b1f1c85d6dea2df0827c4fed5806c6f641b1aad3e5660" + }, + "ghidra/scripts/FixThis.java": { + "mode": 420, + "sha256": "aafeeb482f71d1bdcbc99a51fb3f21989a46fbb49b5a572f3d9e436c9b3b98b4" + }, + "ghidra/scripts/LoaderRecon.java": { + "mode": 420, + "sha256": "1275d460227e0098254885fe70666d618da7215bca99483a5475c1e701ab9b27" + }, + "ghidra/scripts/LoaderWriteBack.java": { + "mode": 420, + "sha256": "d1040cb9ee80f0fe4d2310d95b38d7d94b0972283f74ea6058de0bdb9e510e63" + }, + "ghidra/scripts/SpineRecon.java": { + "mode": 420, + "sha256": "bea798733cf60f9478373cc453692104058b643ba5b7fc68e76945ae6f496950" + }, + "ghidra/scripts/SpineRecon2.java": { + "mode": 420, + "sha256": "94f10ac953091d50187a46b74803abb4812b244356f9336fa8e133a8a6cba0c6" + }, + "ghidra/scripts/SpineRecon3.java": { + "mode": 420, + "sha256": "b2344ab3d7195cfb935505ba1949f3d4862f787ccb95b812cef3856f92c94ffc" + }, + "ghidra/scripts/SpineRecon4.java": { + "mode": 420, + "sha256": "1093ee635be94f0c0bb31b5bd79f030faa0d7cbab96a495426363172cbcd1d66" + }, + "ghidra/scripts/TechFx.java": { + "mode": 420, + "sha256": "bfa8e990d65ad7cb2b665ee284ec2d645395e0fb3794ea146b175e2937a159ad" + }, + "ghidra/scripts/TechFx2.java": { + "mode": 420, + "sha256": "ee7040ed3316f2e717bac207c3e8ba9bf5ecb560f9e2b38335582c4ca6bae5a8" + }, + "ghidra/scripts/TechFx3.java": { + "mode": 420, + "sha256": "b672751160abcfee37d16eb2f107a60420b7d6956c312fe93e9f62578c06b96a" + }, + "ghidra/scripts/TechFx4.java": { + "mode": 420, + "sha256": "ef912e86f802452f33c20a1adb87eeb96f0ec893e26ee4bbd02305ba0c5e46c7" + }, + "ghidra/scripts/WriteBack.java": { + "mode": 420, + "sha256": "e002a5b86bc58cf75ef8d08dbaeb84bdf3306c1e8d49e92c0382f8ed858c57ac" + }, + "ghidra/vtable-owners.json": { + "mode": 420, + "sha256": "8ee89f3b43f56283a6ffcc605394a1ab246f8071370a9db8f1e770942a5a82a3" + }, + "guides/lab-screen-wall.md": { + "mode": 420, + "sha256": "d398b47853013dbce63b4af2f2ec680c39775732b9fbba13f5fc42a46628550f" + }, + "guides/method-rules.md": { + "mode": 420, + "sha256": "a71a8415202fe97ccaee3805bf4035684776c37f5613dc39a1f260aa33f94b69" + }, + "guides/multi-agent-workflow.md": { + "mode": 420, + "sha256": "116ccaa9be9523852d02ee7c78c7f1d587c1ed6270789afca42e687ea826af5b" + }, + "guides/re-windows-2000s-howto.md": { + "mode": 420, + "sha256": "3490650440d6e683cb029915b8c2cace914b1f52538c9db89175ad4547db2901" + }, + "guides/windows-lab-housekeeping.md": { + "mode": 420, + "sha256": "4a9e9d66dd76e6b5ee1951686186190c650a617fa812fa4bd236ef02b783939a" + }, + "notes/.keep.md": { + "mode": 420, + "sha256": "7878c159a1b9636974e9093902027a24bf7b3c7520f13a8d96f930bd10d22f1c" + }, + "objects/generated/sots_stream_schema.h": { + "mode": 420, + "sha256": "13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c" + }, + "objects/layouts.h": { + "mode": 420, + "sha256": "24586f7f1c25530691193a919c6335ab1784fa2815b222326409cfe9e2a42981" + }, + "objects/layouts.json": { + "mode": 420, + "sha256": "16bfffa5020d98c12af61c72a48da8f2c5e06d1060358802717e585a49b150b2" + }, + "objects/layouts.md": { + "mode": 420, + "sha256": "83bc29fcd379847f9ebd6732edf9748c1c878052e889615928659307f97a148c" + }, + "objects/streams.json": { + "mode": 420, + "sha256": "60993eda14d0b1056578718d43a3b6d89816e12c4f5a00674806aeef9e81baf7" + }, + "opencode.json": { + "mode": 420, + "sha256": "027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99" + }, + "scripts/.keep.md": { + "mode": 420, + "sha256": "b0cdcee8cfdc1b15ee444520b6b01c747399deea6d92ff2576ca6eb57331bbac" + }, + "scripts/forgejo_campaign.py": null, + "scripts/lane_v2_writeback.py": { + "mode": 420, + "sha256": "69a66058adb04926eeb6f0e81fa8f0392ce06de2e8d8eb61ebcf503bab6311da" + }, + "tools/DASHBOARD_README.md": { + "mode": 420, + "sha256": "f401cc54f64a4862a938263f37eaab22e6475e063e59726e02dce201f657dcc4" + }, + "tools/aiorders_to_tcb.py": { + "mode": 420, + "sha256": "9762d1fd45f3ab7c045088e222c5386a2cc63a6b25e1c09a49cbbd71837bfe17" + }, + "tools/cache_functions.py": { + "mode": 420, + "sha256": "18c037e48ab035764b0c877123ea7c998ef74240c63090e4f58142f57835e0b1" + }, + "tools/campaign.py": { + "mode": 420, + "sha256": "a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123" + }, + "tools/check_agent_config.py": { + "mode": 420, + "sha256": "8cb42d8de9cc441b547a00aecc7bfbc3619667121b30e150fec9e6c94683beb0" + }, + "tools/dashboard.py": { + "mode": 420, + "sha256": "c84aeeea6fb7d5e45ccec8882bacc59182149f108edd9eb1585eab9ede99911c" + }, + "tools/displacement.py": null, + "tools/evidence.py": { + "mode": 420, + "sha256": "0a7f8497ed287b4b64aa5ba0cb25735172408e38f3605b3ff90f009c7f02eb85" + }, + "tools/gate.py": { + "mode": 420, + "sha256": "4df5ee7022fb2601687f06eab788e2cea1e345e580c4e92c9d47be1787d37460" + }, + "tools/gate.sh": { + "mode": 493, + "sha256": "d7ba27b9b0c6a03df48e4edc71884ef9986743f8afa751dbfec116df5aeee18c" + }, + "tools/gen_addresses.py": { + "mode": 493, + "sha256": "5d995585d4192a19db7cc6d31ed811fa80264159fc114f03f58793f9b6c4908e" + }, + "tools/gen_stream_schema.py": { + "mode": 420, + "sha256": "a9c3e925bb3370371a2c8cde8d738c657fe1cbf68c39c6155562bbb20c551461" + }, + "tools/max_income_oracle.py": { + "mode": 420, + "sha256": "8d3ec6ba5c677486200eab7d1ca55e1350947829e603737307fa394ac8e40bcd" + }, + "tools/max_income_predict.py": { + "mode": 420, + "sha256": "85400c82b6cb7c6786b7fb6486bdc7bcb1140817f7a0ff0b4fa4f7dbeded8797" + }, + "tools/probe_report.py": { + "mode": 420, + "sha256": "f3ef378c10bae4a8bef754d853f0e86616bb95b5e051e04cac97d362587df1a7" + }, + "tools/reva_call.py": { + "mode": 493, + "sha256": "89477650d38985f84b61a664572de1cbde1268b879d3da5e874598942822998b" + }, + "tools/rng_ledger_report.py": { + "mode": 493, + "sha256": "b4f3f581eb6de50118fd531c848354816c20197711e668ce8b0cfcb4d0392cf3" + }, + "tools/rng_oracle_check.py": { + "mode": 420, + "sha256": "f27ca7f9aa03bc672f04067bc71e73ac83742997f12f5f55ce11151bdc39d98a" + }, + "tools/rng_site_report.py": { + "mode": 493, + "sha256": "fabd950c002265403f7b13a8868a158d867828c9930770ed096a2610b086ad35" + }, + "tools/rtti_map.py": { + "mode": 420, + "sha256": "9ac88a8aa566fe08336ba6e50905ec4253409e1317f491c415b1b9ebcc0713e4" + }, + "tools/run_agent.py": { + "mode": 420, + "sha256": "818097896b2e29dbdd2f53d37261236af302178ecd0ee083a3184a7bc33ff152" + }, + "tools/select_evidence.py": { + "mode": 420, + "sha256": "a6e648a77bcf799cc774ff9d0de83011283049ed0f0c44f6e08857a8410e9463" + }, + "tools/serializers.py": { + "mode": 420, + "sha256": "938904eb7b4ae30a61dd966494b112c6d52399f9d4a4658add06b40a54d6cb73" + }, + "tools/serializers_ghidra.py": { + "mode": 420, + "sha256": "d27da0afc8d043d31335bbe274fc76245e50cf0f9091a968b124f31c3a17997c" + }, + "tools/serializers_golden.py": { + "mode": 420, + "sha256": "29d2509b54704b80eff46a59a320719edb17a7eb67fd8acb8ad5e3c427d8e825" + }, + "tools/standalone_report.py": { + "mode": 420, + "sha256": "43a61c4031306732554aca23cd95b57d35f2a870766c33ccf8e005f22436525c" + }, + "tools/streams.py": { + "mode": 420, + "sha256": "57ec4ec5ad222a74f4461d70277d258e51779ae53ff74fd0e07eb51d4bae0afd" + }, + "tools/strfootprint.py": { + "mode": 420, + "sha256": "3b0db212c0b091ae2f63b866ee331435d013c535f233ec34ae3dfb63ded852dc" + }, + "tools/tcb_from_json.py": { + "mode": 420, + "sha256": "8fe09cff16802fda34db24f6f888610baa258399ab39173586b91a7a162f231a" + }, + "tools/techid_table.py": { + "mode": 420, + "sha256": "2c644bdbd3774b70dfdae7e77ff7a3a8e8563b58be7098a2d55ee30dc8b8fd07" + }, + "tools/turncommands_capture.py": { + "mode": 420, + "sha256": "0214d5da6f5f86e188bb2f03db8d3439267baee3a883c7df754601c7c1a38536" + }, + "tools/vmshot.py": { + "mode": 493, + "sha256": "09228bf8bd61918c49afc2b6da931fc8a7833be126be5384b85194e0e86eea44" + }, + "tools/vmwatch-install.sh": { + "mode": 493, + "sha256": "3c004f532422bd589a7294dabdf54d5a726f598c69012eaea3d73a748ad0123a" + }, + "tools/vmwatch.py": { + "mode": 493, + "sha256": "650d8232e46239a55b96f26d581d7d9c5815415c9014fd2e5b846b68c1346b39" + }, + "tools/vtable_map.py": { + "mode": 420, + "sha256": "2e19223efb79421ab4b807e32f0854b2592d7d3a3a52c12e84e47460b960f740" + }, + "tools/windows-housekeeping/Invoke-Housekeeping.ps1": { + "mode": 420, + "sha256": "a97911a3cfbd47813282efa7f52b4de03d28912487fffe0e7e7aa1a250cac01a" + }, + "tools/x86disp.py": { + "mode": 420, + "sha256": "a05a42d63813d2025a4da65bdd684e82a89c95c52901a8f490391e31c49a122e" + }, + "verify/config/test_agent_config.py": { + "mode": 420, + "sha256": "8a7a406f062c3387ec5b99b35f3befb64f676efef174047060c967074545e3e3" + }, + "verify/config/test_source_check.py": { + "mode": 420, + "sha256": "c16731e31a54256dde4f88d33007759ff21ad8537ca6cd2be38b9e34c59525ad" + }, + "verify/design-rules/SHIP_DESIGN_RULES.md": { + "mode": 420, + "sha256": "4decf51bfa03e8ab2b58478198332e834233100126949b920349f210b54521c8" + }, + "verify/design-rules/data/HiverInvasion_FleetTemplates.csv": { + "mode": 420, + "sha256": "327e799be3c75361267725c157f78b425d3a1df6ed6595104b2ce9993e8ae3a7" + }, + "verify/design-rules/data/UpstartApes_GiftFleetTemplates.csv": { + "mode": 420, + "sha256": "89939d70eb6ed48ec776a4a6fc50ccb68fc6be7162706bab199484bf7cdd5e44" + }, + "verify/design-rules/data/_defaultweapons.txt": { + "mode": 420, + "sha256": "ef9e33aa32840f1878ece67f88556d81a4255f63f6e8aad4ac73e575ef2c7ec8" + }, + "verify/design-rules/data/_turrets.txt": { + "mode": 420, + "sha256": "35de6ad40895f76298eef7dc354c739a5a59747b689c2324cfa5040442eddc18" + }, + "verify/design-rules/design_rules.py": { + "mode": 420, + "sha256": "772f70c7d6be2d20d10cf4f5d412233b267440d63d431bf7b320c29f3f06e313" + }, + "verify/design-rules/stock_designs.json": { + "mode": 420, + "sha256": "b363023e02899bc03e4c8b8423b394ef8abb190b1bcf437aade19be463353f68" + }, + "verify/design-rules/stock_designs.py": { + "mode": 420, + "sha256": "fe020f6058ec25b6fc456146abb6594825ee2b98ba5c5c5eeaff969ce4596031" + }, + "verify/design-rules/test_design_rules.py": { + "mode": 420, + "sha256": "6f6764d21d7a3337ec8aba9651b19947239a7d06a6cdf7c6e9be5ddefcfdd186" + }, + "verify/fpu-cw/cw_census.py": { + "mode": 420, + "sha256": "07b7ac5ae60df487867b592e82e9f74201b695437fba248813bc07305a21c7cc" + }, + "verify/fpu-cw/trace_bitdiff.py": { + "mode": 420, + "sha256": "b25c93d70e67ed2fa81e5ea7184f8ffe0cbd2e7c043bc94f923c3db1cf101b59" + }, + "verify/harness/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/harness/cb/README.md": { + "mode": 420, + "sha256": "7a656251a600a9343ffa8afaa4f227e7cb8086be7d3c6879c0a403ab8acec71d" + }, + "verify/harness/cb/cbdo.sh": { + "mode": 493, + "sha256": "6f3d7fd35aeedb0841be9df0ba19136be2e7ccb5c44950d8aa821c61727232a6" + }, + "verify/harness/cb/cbfull.sh": { + "mode": 493, + "sha256": "609101217e9d35bf1caa5cb66f362e0796fcf6c1264bd92ff550d0ed12ca2521" + }, + "verify/harness/cb/cbload.sh": { + "mode": 493, + "sha256": "2e56bb64609434f6dfc6ebcf71a3c839ae59170db80c996ebee7c2219cb664ec" + }, + "verify/harness/cb/cbmenu.py": { + "mode": 420, + "sha256": "fb2e72a1a5390aa28dcae0fbc2d7b920b06bf3b1ea161bb757d4db3c8cd23af2" + }, + "verify/harness/cb/cbstep.sh": { + "mode": 493, + "sha256": "5896b21e8cf08b40e2a2958e44a51beb7e5b5a58cf35d405879a5df7cdd375b4" + }, + "verify/harness/compare/TRACE_FORMAT.md": { + "mode": 420, + "sha256": "cf6f61dc255e3aed0f293c141d9fd3b0d5e848e3abe4dcf50b4ca2d58e37c024" + }, + "verify/harness/compare/mkfixture.py": { + "mode": 420, + "sha256": "f081dd92b9e82e838f59ce8f9c79d5cdebb825255f13b6c49178516e7f3ef118" + }, + "verify/harness/compare/oracle_parsers.py": { + "mode": 420, + "sha256": "b1a745bfa63b447c87279afdb2885a0218f2a0dc2539f79414f8a2534e24c97b" + }, + "verify/harness/compare/test_tracecmp.py": { + "mode": 420, + "sha256": "f25eb9d5ea7215b8366c44924fb49a5f028a0188e709dadfd90cfbc30db0823e" + }, + "verify/harness/compare/tracecmp.py": { + "mode": 420, + "sha256": "d6ca461cabf15351e2040150144084b93d3caf22d879ee158ede04052ab03cbb" + }, + "verify/harness/l2-ui/README.md": { + "mode": 420, + "sha256": "48effd757522ee5ff70af6d77449dcfd805bb7744c9093d01c039b86e030d7f6" + }, + "verify/harness/l2-ui/launch-b.cmd": { + "mode": 420, + "sha256": "8f26c451a88765c49ecb3c8160ed4a3d06f1100a6d9323b305efc01f039dfada" + }, + "verify/harness/l2-ui/socks.ps1": { + "mode": 420, + "sha256": "401cce47d495507f60eeae45942c146586464959046ef9715cd69605753af027" + }, + "verify/harness/l2-ui/ui.ps1": { + "mode": 420, + "sha256": "355c8f222bf99f547d9d16a1665a072e6914917d48e4db22b8438d2d83708e97" + }, + "verify/harness/profiling/battle-run.sh": { + "mode": 493, + "sha256": "79f14ded5c3731efd655a6f9a4ac6795f3ace0a9b064c43ba4bf9a2cb988a7cf" + }, + "verify/harness/profiling/funcs.py": { + "mode": 420, + "sha256": "841a6f5e5dc1d845b7439c9ce9dc08e045864929b0f367908abea7ab54259207" + }, + "verify/harness/profiling/funcs.txt": { + "mode": 420, + "sha256": "d35b17dbb3970f5c24ae862748c5b91aee87491968719c34e48a8b88c0615835" + }, + "verify/harness/profiling/iat.py": { + "mode": 420, + "sha256": "82465ef8284739ab3d3c99acd0fa6cc5a4bb80c8680eb7a949218305fd10d3d3" + }, + "verify/harness/profiling/inspect.ps1": { + "mode": 420, + "sha256": "35bc7dd85108e3f4686975ef7f510b1cc9306b5839329f7fdd2a5ac27a140611" + }, + "verify/harness/profiling/names.txt": { + "mode": 420, + "sha256": "89d90f934e445447c68569448471a8917ee0bbfcb5fb96bba3e6566be9b0779c" + }, + "verify/harness/profiling/parse.py": { + "mode": 420, + "sha256": "680df36804e923d74da8e9fd8877b5ea66975c9ce8d239ad4507c829f881722a" + }, + "verify/harness/profiling/sampler.ps1": { + "mode": 420, + "sha256": "ef0edde8535ef07e508a732f8e11dc3d50fef966e5a9e4d8161085a83372993e" + }, + "verify/harness/profiling/shots.sh": { + "mode": 420, + "sha256": "87e554abf08068d6438417e266f1e7820e34a900a7d559fa0a7c4a2fa18002b3" + }, + "verify/harness/profiling/timerres.ps1": { + "mode": 420, + "sha256": "80362eb9ec8bd882abddf2507236e70db2dd21f64c9db07d217bdd49361ed89c" + }, + "verify/harness/profiling/turnloop.sh": { + "mode": 493, + "sha256": "8e28f076599a9eb53eace77ad77a10b0770f1ce617c7a76e6a2b9044ee0c8774" + }, + "verify/harness/profiling/turnwin.py": { + "mode": 420, + "sha256": "e2033a8e519a7c9f65f67b5592494a9843eb8bef41af6ab5652343aa86bd4c60" + }, + "verify/harness/profiling/ui.sh": { + "mode": 493, + "sha256": "e66774a4d070285e6c6a62472000222a691c7192096039e75fa726bab9f6afb7" + }, + "verify/harness/run-recipe/click_helper.ps1": { + "mode": 420, + "sha256": "150a1c17e12e8479244107cd01d95233c84d550e95a6f5e352fd529818a21d7d" + }, + "verify/harness/run-recipe/display.cfg": { + "mode": 420, + "sha256": "76b4876abd1cd163a5cc6b65a6106670476cde40c9b868a53a0dc45f517e132f" + }, + "verify/harness/run-recipe/dxvk_d3d9.log": { + "mode": 420, + "sha256": "f48ff2684a78cea563ab7f10e2f005638044352fe9cfc30dedf0f26ec7fecf23" + }, + "verify/harness/run-recipe/launch.cmd": { + "mode": 420, + "sha256": "90a6effe8ae835bf641cc775a17ad709198fdfeded4379f658255a82f594e5c2" + }, + "verify/harness/run-recipe/lvp_icd.x86.json": { + "mode": 420, + "sha256": "b89a08526e043a84c3a2550b5ea2fd7692f547ea295e8dd70e79c64fe81f6fbf" + }, + "verify/harness/run-recipe/run.txt": { + "mode": 420, + "sha256": "12c83295dae9db4a98142ef8fe7e45321c90960428df504ed3496e27838a0413" + }, + "verify/harness/run-recipe/session.log": { + "mode": 420, + "sha256": "e9ce9b496e9ee55bd64cc27afe594cee6136dfbc6cf9d9d44e9914b27e568a93" + }, + "verify/parsers/PARITY_NOTES.md": { + "mode": 420, + "sha256": "beecfe60358f5977529bd0784ffe18ca03c38d2dd36766f351c6a9addac83bda" + }, + "verify/parsers/effect_txt.py": { + "mode": 420, + "sha256": "7219045dfaf305dd64218ff8096e8cac69a53df1aabdf85f15e6c5e01c963e74" + }, + "verify/parsers/flat_kv.py": { + "mode": 420, + "sha256": "a26149cb21d152be5cbada3b764e042187daf2ec306b2dba1081737af6a7ae4f" + }, + "verify/parsers/manifest.py": { + "mode": 420, + "sha256": "62a08cfd82d5f701ae3b3f567bc8382cfd1b33b49bf6049ade47a932ef7109da" + }, + "verify/parsers/mars_data.py": { + "mode": 420, + "sha256": "90c7b8421044b1d7e262e6f20e5af391d97a712b12c2d3f0c3033567881d536f" + }, + "verify/parsers/verify.py": { + "mode": 420, + "sha256": "cc5d619bd6b3ca161b4bc8050c30e7d77f6bd3e964c971cc29e051efc1e25a33" + }, + "verify/publishing/test_dashboard.py": { + "mode": 420, + "sha256": "cc44e516da663f5d27bf817cbcbf24c052f2db52ee887d08d7c271caf8f6a000" + }, + "verify/results/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/results/compare/.keep.md": { + "mode": 420, + "sha256": "4581f3fde61549f4c621b2f114228a62d066a528a270a9b41703238ff841ac1d" + }, + "verify/results/compare/b2-techfx-compare.json": { + "mode": 420, + "sha256": "b0533322d44b1694f36baf86d6660481ac5b22ce9c1d6b6b9668ea064cc08f4b" + }, + "verify/results/compare/b2-techfx-golden.json": { + "mode": 420, + "sha256": "4298a8229b85a3329c78d3618d3eb19aff096cb2da66e9238fd843d639b17f11" + }, + "verify/results/compare/cr-compare.json": { + "mode": 420, + "sha256": "f20e9a7c71412688c02b607f08a5224367598eba552e35a50e9922ca8f12edab" + }, + "verify/results/compare/cr-compare.md": { + "mode": 420, + "sha256": "0eb905744120b1cf264ba6e57497db64fdc8e225a87ef7bb86cf3f026ffe4d0d" + }, + "verify/results/compare/cr-replace0.json": { + "mode": 420, + "sha256": "f1556c5d74c236c82617061b5ec60b1a7ce4652bce87b6595eb89406ad832240" + }, + "verify/results/compare/cr-replace0.md": { + "mode": 420, + "sha256": "6f571e46350a29b811bc12b48e12ed2d443acba5f5be6310e0531c3790425d48" + }, + "verify/results/compare/cr-replace1.json": { + "mode": 420, + "sha256": "d0c1d6bd4a1f8f5343b584662d8202184479b01a51480443a97242daf27fccc2" + }, + "verify/results/compare/cr-replace1.md": { + "mode": 420, + "sha256": "111b51290468d5482a1910194487d26dc1b3ec534d699aa07a564de66bbf9d98" + }, + "verify/results/compare/eventlive-b3-t1-5.json": { + "mode": 420, + "sha256": "4f305180bcbe93523f407d1f8406ac52b84d4a20e2d611940716618fd37edfde" + }, + "verify/results/compare/eventlive-b3-t1-5.md": { + "mode": 420, + "sha256": "ec71d98210218fd5b5da69f6b17cf6991128a58a0358a6504e6497dd39159764" + }, + "verify/results/compare/eventlive-b3-t1.json": { + "mode": 420, + "sha256": "84f66c1e6a23f737d1615e75fd22fba958bfd851067acb42503e32a2812dd1de" + }, + "verify/results/compare/eventlive-b3-t1.md": { + "mode": 420, + "sha256": "299b8dd3f2cf42cbc9e6254fac01ee3dcb6abb0758c8f298beb6cc6464db4cfb" + }, + "verify/results/compare/eventlive-b3-zuul.json": { + "mode": 420, + "sha256": "a1a92c06202c8168362c33442edeb7ea7f76f6e586e5deea1b86dff9dc8f3494" + }, + "verify/results/compare/eventlive-b3-zuul.md": { + "mode": 420, + "sha256": "544791f9cd8b77a2d865f2a918d97e74559529f29943171bd1e8e2d8a120dec5" + }, + "verify/results/compare/l5-budget-boundary.md": { + "mode": 420, + "sha256": "6877f9cfc602876b4c213106493853822471a5aaa3e4e8ebf8dffd31373d89d9" + }, + "verify/results/compare/mf-after.json": { + "mode": 420, + "sha256": "586a824a0d0af1de0808c33c1c392c4022128f9c1305dc32b6749e8fa493e8f4" + }, + "verify/results/compare/mf-after.md": { + "mode": 420, + "sha256": "659be3da71cabfd3c34eb818f1bac07f848c58a878fd62d81ac7b1daa5f3ce03" + }, + "verify/results/compare/mf-before.json": { + "mode": 420, + "sha256": "259272b45ca9c63894d8c91e399ff91d7258b7836f1a0d5c91dd3972586b2498" + }, + "verify/results/compare/mf-before.md": { + "mode": 420, + "sha256": "4572530a1c93865d27aba47c23c418773ad39a834c8be1c004f5cc2f16f927a0" + }, + "verify/results/compare/output-ref-turn2.md": { + "mode": 420, + "sha256": "43a569165f9239f13edc31c7a848a6b839829ae06dd6e3b85d289a1552eb8d34" + }, + "verify/results/compare/output-zuul-and-ref.md": { + "mode": 420, + "sha256": "9bc0937c0b3e1e3e5a6cd3768dbfeae56a897615396b00834bd083611f3ef431" + }, + "verify/results/compare/recap-b1-compare.json": { + "mode": 420, + "sha256": "8e86cdd32373e41ac1cdc130b18acc188b35d5ab7112e1fc655d134c44ad9712" + }, + "verify/results/compare/recap-b1-compare.md": { + "mode": 420, + "sha256": "496a3246eda3be76d9d0f08726369d40aa879cf60a510f16209ae77585582841" + }, + "verify/results/compare/recap-b3-compare-t1-5.json": { + "mode": 420, + "sha256": "80eeeeccf15f427b75b053d06f6b32b1692a2ed9ca6b9a51c244e4166a1b0e78" + }, + "verify/results/compare/recap-b3-compare-t1-5.md": { + "mode": 420, + "sha256": "5b6295bff72d599f142e75fa913ca2da590322a6fd1d104328847159fc5e7802" + }, + "verify/results/compare/recap-b3-compare-t1.json": { + "mode": 420, + "sha256": "10d0d5f8aff90f6cce3cd87e30c7f8ff896c5b369f4dc8288141451e25727cb9" + }, + "verify/results/compare/recap-b3-compare-t1.md": { + "mode": 420, + "sha256": "2b0eb8865bb07a2dd8fd038bc19e38a34fbf19b9d3f6fabae085c16a74fbcc6f" + }, + "verify/results/compare/recap-golden-trace.json": { + "mode": 420, + "sha256": "50bb7e34ab2359adc83cc0647fc995d207173fcf6134e413565af450958f652f" + }, + "verify/results/compare/recap-golden-trace.md": { + "mode": 420, + "sha256": "586fc86fe78659902a5d0859c0bce44623bfcda0f375bb57b293796862c48e17" + }, + "verify/results/compare/recap-misc-compare.json": { + "mode": 420, + "sha256": "c73f3f3593a0d715a675b29c7b4f49c02a97578ee9d867ce15d217c43da2e466" + }, + "verify/results/compare/recap-misc-compare.md": { + "mode": 420, + "sha256": "b435c92441742b2b1b0236bfacff10c17757696baf446c544c4759b7e31237ed" + }, + "verify/results/compare/unlock-b3-t1-5.json": { + "mode": 420, + "sha256": "a4dbfc89f6f3d154edbbc62842a4e8d8a3c69b9589eafc1bb496b26a3ecf6e3d" + }, + "verify/results/compare/unlock-b3-t1-5.md": { + "mode": 420, + "sha256": "832626087ddc2da9064a192a1acfb3869d4a52c6398a070cbd66eaa1bdbe2e2e" + }, + "verify/results/compare/unlock-b3-t1.json": { + "mode": 420, + "sha256": "6d8938b8eaeb2da1c7fdccb1fb68f8e3a2b5b7f492cc096326cf3aadb2ab8d55" + }, + "verify/results/compare/unlock-b3-t1.md": { + "mode": 420, + "sha256": "8911e671a143c25765cd7c0b67f1b9cb23f4040fe26aad40ce59b1db858afdcd" + }, + "verify/results/compare/unlock-b3-zuul.json": { + "mode": 420, + "sha256": "3099d248d58c4395e92d65ad18c28227695a7c7935193be6c2bcf752fa0e0f04" + }, + "verify/results/compare/unlock-b3-zuul.md": { + "mode": 420, + "sha256": "f53b165c8502ba9b2416935179fdea68153fb6ebd2458b4ec9b4ecf6c741c91f" + }, + "verify/results/data-catalogs/crosslink.json": { + "mode": 420, + "sha256": "2966ba9780910b596e350c4f81eef5d74c4d235dc3a8d5cf6ad5fd53a407254a" + }, + "verify/results/data-catalogs/schema_stats.json": { + "mode": 420, + "sha256": "6e3f669ae77cdfa2c5cd6bbd29f5cecccd452d9a7b2397c2c23db6c33fda0a2a" + }, + "verify/results/data-catalogs/shipsections.json": { + "mode": 420, + "sha256": "2e7057c608d0cea755bf9dbfa291864d33e3f09ad5deff7bb3a8045bde7a4ab5" + }, + "verify/results/data-catalogs/strings.json": { + "mode": 420, + "sha256": "c36c1b2b9a2eace438f93698df6388fa94aec30d372bcd0bee7e09bb33c54d7c" + }, + "verify/results/data-catalogs/tech_tree.dot": { + "mode": 420, + "sha256": "96ce0492a1284167d82af2c07a8f8a0b3bb9864bc137195560d909df6a913055" + }, + "verify/results/data-catalogs/tech_tree.json": { + "mode": 420, + "sha256": "18df799410c5f650e15808c1ef247b4768a3dfff93795a5ec7f56cd6c4afc597" + }, + "verify/results/data-catalogs/weapons.json": { + "mode": 420, + "sha256": "a446b445c21519fc7992c84155c9652239567030843c405b4219d1f65022db01" + }, + "verify/results/fpu-cw/README.md": { + "mode": 420, + "sha256": "3928fd0f6a03a8ff0b170a7ed23a059120b5014b13bf6870d4f187ff299d5975" + }, + "verify/results/fpu-cw/cw-census.txt": { + "mode": 420, + "sha256": "b7854dc5cd249a2490d04264d758f1894a9ddf4b95573650365d47587c7589d3" + }, + "verify/results/fpu-cw/run-007f-rep/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-007f-rep/(Autosave).sav": { + "mode": 420, + "sha256": "ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918" + }, + "verify/results/fpu-cw/run-007f-rep/shim.log": { + "mode": 420, + "sha256": "73b5b86da743a1cb37d4c0d97b29978923b55a7a47f80c7fa20ca47d424f6c02" + }, + "verify/results/fpu-cw/run-007f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-007f/(Autosave).sav": { + "mode": 420, + "sha256": "ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918" + }, + "verify/results/fpu-cw/run-007f/shim.cfg": { + "mode": 420, + "sha256": "998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363" + }, + "verify/results/fpu-cw/run-007f/shim.log": { + "mode": 420, + "sha256": "5721f47d7fd862156ce2cd1832cd1739636b5aee53c82323ef233ff6401775bb" + }, + "verify/results/fpu-cw/run-007f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "149c4fcf750fcf9e81dc86d8696271d9a14ca788891ac95cf96995e3737c68e4" + }, + "verify/results/fpu-cw/run-027f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-027f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-027f/shim.cfg": { + "mode": 420, + "sha256": "f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd" + }, + "verify/results/fpu-cw/run-027f/shim.log": { + "mode": 420, + "sha256": "4bd3f88bd27eb2e3ae1f42f4dc2ccf1cc5df1a2c1171d2eff8be86e7be684187" + }, + "verify/results/fpu-cw/run-027f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "b5d2611d0c08946c1e1eaa244a7e44782eac2592c392efb3d7147fbbd86816e7" + }, + "verify/results/fpu-cw/run-127f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-127f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-127f/shim.cfg": { + "mode": 420, + "sha256": "1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271" + }, + "verify/results/fpu-cw/run-127f/shim.log": { + "mode": 420, + "sha256": "03f1999dc8964912697782e856f89f190b6680d5732f2cd00b1569bff727a545" + }, + "verify/results/fpu-cw/run-127f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "fb1b9063cc53a6b39ea0a58e0545b9334fbd15d65dd839e72f2c4febbb1dd3f0" + }, + "verify/results/fpu-cw/run-137f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-137f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-137f/shim.cfg": { + "mode": 420, + "sha256": "8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9" + }, + "verify/results/fpu-cw/run-137f/shim.log": { + "mode": 420, + "sha256": "83aa72572412d5248179397895029367685fd590d795991ab91c98cf9828ae29" + }, + "verify/results/fpu-cw/run-137f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "aad1fb6abd86beafb9f44e2c6060157e22618811d105f2379252e19008839b66" + }, + "verify/results/fpu-cw/run-1a7f-rep/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-1a7f-rep/(Autosave).sav": { + "mode": 420, + "sha256": "e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7" + }, + "verify/results/fpu-cw/run-1a7f-rep/shim.log": { + "mode": 420, + "sha256": "38f2824fbe91bf2fa1ef55473a7468707248420805b6f6dc85245fd34fa94200" + }, + "verify/results/fpu-cw/run-1a7f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-1a7f/(Autosave).sav": { + "mode": 420, + "sha256": "e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7" + }, + "verify/results/fpu-cw/run-1a7f/shim.cfg": { + "mode": 420, + "sha256": "59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588" + }, + "verify/results/fpu-cw/run-1a7f/shim.log": { + "mode": 420, + "sha256": "a1bb0bd06dae6955ec09e7d0c6cd1e68e19aa2a114256cdeae1275def0a63091" + }, + "verify/results/fpu-cw/run-1a7f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "b9a7affb8235626fcfdd5afe143e4ec03be869b6b386bd9ac78389097df88cef" + }, + "verify/results/fpu-cw/run-off/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-off/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-off/shim.cfg": { + "mode": 420, + "sha256": "6a19c362121a3dba0aac857d6e998131e8b2478f19edcdcbd58006645d096c70" + }, + "verify/results/fpu-cw/run-off/shim.log": { + "mode": 420, + "sha256": "9e3cbd005f0b68037681939b289834c55629bac0e9cd35ac55e6d8ef5333a116" + }, + "verify/results/fpu-cw/run-off/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "ec2271c0d7e09fe51ead7f8d58859c692e8b302233191841d506ea14248caa8c" + }, + "verify/results/fpu-cw/state-checksum-diffs.txt": { + "mode": 420, + "sha256": "3417dfc1b75ad896ac6a5e974d51248eecca319565e2422e146897d19e121b68" + }, + "verify/results/fpu-cw/trace-bitdiff.txt": { + "mode": 420, + "sha256": "8f86707f26f30638097c85f0db6df219adbfebac4e9ec24f1feb8bfce112d4f2" + }, + "verify/results/multiplayer/l2-combat-hud-client.png": { + "mode": 420, + "sha256": "02c86592531ab2889a0eae04e44a644d33c754096fe60aca6640068a7a3f421f" + }, + "verify/results/multiplayer/l2-combat-hud-host.png": { + "mode": 420, + "sha256": "a56daf36fcc88627b29116ad9874c95a3c46960074ff9b823aa15c4ea2660dd7" + }, + "verify/results/multiplayer/l2-combat-loading.png": { + "mode": 420, + "sha256": "f94a718cee08e1b7d346490058f13a107d23aaa7c269fdd53b159a75d62fa558" + }, + "verify/results/multiplayer/l2-combat-round-draw.png": { + "mode": 420, + "sha256": "c1b8424540b702915302f9ff38eaf765e8e95fddc3c5c4d894438dcfcf8b6256" + }, + "verify/results/multiplayer/l2-combat.pcap": { + "mode": 420, + "sha256": "0f112ef96da6c465dbda51baf99eedd66967eed61c097f643bf6c66fc26af31b" + }, + "verify/results/multiplayer/l2-encounter-query-client.png": { + "mode": 420, + "sha256": "4c41b268ad256b0109483a2d9b5ba35de7b9cadb4eb32ef4a68f7867e6e747fd" + }, + "verify/results/multiplayer/l2-encounter-query-host.png": { + "mode": 420, + "sha256": "8c7b0c6d65ddde45eb3447f044589ffc36500b40c4d676af8321f800162f38a0" + }, + "verify/results/multiplayer/l2-fleet-built.png": { + "mode": 420, + "sha256": "6ac91fcf9b42caef50134de01804046d8e60d0fd3966592e9738ceff511949c2" + }, + "verify/results/multiplayer/l2-lobby-client-joined.png": { + "mode": 420, + "sha256": "4a8e698c9ea935449ff0421cd59acd517ebffa388a7572279b28be0369141ff6" + }, + "verify/results/multiplayer/l2-lobby-host-created.png": { + "mode": 420, + "sha256": "e6a7377cabafa973396cedafa5ad5b4863a42f9866709db88faf9572e0ed3c98" + }, + "verify/results/multiplayer/l2-move-warning-dialog.png": { + "mode": 420, + "sha256": "43c6219d74bc0cb28495f13784cdbd3a90c89746b108824c3a2138dbdadcb53e" + }, + "verify/results/multiplayer/l2-socks.log": { + "mode": 420, + "sha256": "109b630d6548d07404f9f905e6c527f10e25221698f1b66226f67f94c5f294b5" + }, + "verify/results/multiplayer/l2-turn13-client.png": { + "mode": 420, + "sha256": "d19f17c4219f21f6c9950440d528a1a91fe3907761df21fd0ba99321b8820baa" + }, + "verify/results/multiplayer/l2-turn13-host.png": { + "mode": 420, + "sha256": "811efcfb571d60435f772a3b619bb329717d1e162b88e440ec0d636b1c6042fc" + }, + "verify/results/multiplayer/w2-internet-browser-no-error.png": { + "mode": 420, + "sha256": "6409b977056c95b29928a0098f75fffd71c501128f9d9325c3000837131c8791" + }, + "verify/results/multiplayer/w2-join-manually-dialog.png": { + "mode": 420, + "sha256": "86904e94a5aec41c1e89271d2712558c3b5055bd2ae4fededfda103d1e22fb71" + }, + "verify/results/multiplayer/w2-lan-browse-listing.png": { + "mode": 420, + "sha256": "6f5d16fa719fb63dd627fba551221c7665b69002e83fe35b8d84912cd7d8ce83" + }, + "verify/results/multiplayer/w2-lobby-client.png": { + "mode": 420, + "sha256": "ede652b21e2a4ea07c8132e4080ba903d1052ebca336bb007e1e8efa62787f10" + }, + "verify/results/multiplayer/w2-mp-turn1.png": { + "mode": 420, + "sha256": "59f9a1f5d8c0fff45d3ae3406dfd9878a5915f18e999d909a5238a90a3b86ed6" + }, + "verify/results/multiplayer/w2-mp-turn2-client.png": { + "mode": 420, + "sha256": "d9da4c151cd8290f80b31eb5ed8a74a0a30a87d1f7a80a179fa082a9439e08e5" + }, + "verify/results/multiplayer/w2-mp-turn2-host.png": { + "mode": 420, + "sha256": "910efd36b4a7c1a85d8ad487660f856339af037b9b00fef0cafd5e77ebdc36e5" + }, + "verify/results/multiplayer/w2-tier0-filtered.pcap": { + "mode": 420, + "sha256": "e108778fd1afb7718c53a4164310b8523415ef073706d310583dab424e5921cc" + }, + "verify/results/saves/ac-turn20-raider.sav": { + "mode": 420, + "sha256": "ee787db8f63d8f564c597bd5a82709790a0fdf47827912037f96b736f2cbed34" + }, + "verify/results/saves/ac-turn22-raider.sav": { + "mode": 420, + "sha256": "0faeaa601e6a867876819e5646b85f8787851093b8e6bd6e3946eb867f2dcc74" + }, + "verify/results/saves/ad-oracle-A-post.sav": { + "mode": 420, + "sha256": "a634510e7208cceb10d8ce016ceb0153601f11d7291f08122bcdb6418e313331" + }, + "verify/results/saves/ad-oracle-B-post.sav": { + "mode": 420, + "sha256": "676b1778880b5d4784ba7f6ef48b1a8e56745adab70a815943b7744876686260" + }, + "verify/results/saves/ad-turn27-two-raiders.sav": { + "mode": 420, + "sha256": "1c8baa27680809d585ab1728391e82729642d32aaedffd5bf95b616f0a11a436" + }, + "verify/results/saves/ap-deploy-turn15.sav": { + "mode": 420, + "sha256": "844f2b746060dc2c4e2099cdc6ceffd5f55ef858c9e347df28c8aca3041f7165" + }, + "verify/results/saves/ap-oa-turn16.sav": { + "mode": 420, + "sha256": "e296394f578b3a5668e5934b9eec8d6c4638ca7411200078f97de1abd346f4c5" + }, + "verify/results/saves/ap-ob-turn16.sav": { + "mode": 420, + "sha256": "262f8bda97c9511d8d2b41e6a8a0582d6f5364c2b01b1caf99e639d0e4f53ebe" + }, + "verify/results/saves/ap-turn22-spydetected.sav": { + "mode": 420, + "sha256": "91381bd7e722ac3847795a402d78ebb31d74dbb5d2909f33d243aec3ef8abaf8" + }, + "verify/results/saves/ap-turn25-spydestroyed.sav": { + "mode": 420, + "sha256": "46380fcf4498d67507e4471eb9ee3762647c53ee5473be142fe5c34e37344bc3" + }, + "verify/results/saves/ar-oracle-A-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-oracle-A-pre.sav": { + "mode": 420, + "sha256": "15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca" + }, + "verify/results/saves/ar-oracle-B-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-r1-turn43-post.sav": { + "mode": 420, + "sha256": "37f4a54fd32303fdcc86522b07104fbf2fcb124eec9b1f7005b3446fefcc429f" + }, + "verify/results/saves/ar-r2-probes8-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-turn37-816raiders.sav": { + "mode": 420, + "sha256": "b6f4e05ff226eabd1695003b36293553642553cea96ef417364393e2332a7094" + }, + "verify/results/saves/as-turn14-predeploy.sav": { + "mode": 420, + "sha256": "53986f8511cbf9920f32e2ea406ccf531dd08903fa5d06024fcf03ea7627221d" + }, + "verify/results/saves/as-turn15-spydeployed.sav": { + "mode": 420, + "sha256": "854a10fa1ea602f0f7909f9bf9154942e56ea5fa1db4cce47d6d32bf53952e08" + }, + "verify/results/saves/az-turn11-16destroyers.sav": { + "mode": 420, + "sha256": "501583c7cf2ac81c9db3191203cd3dc5ba5b9e228b9b9ce3dbdcc3650d0070a9" + }, + "verify/results/saves/az-turn23-tarka-comraid.sav": { + "mode": 420, + "sha256": "3d5eb826c149d1fd0278c746f32e6148ca9883a1bc5b522c0d5e6e13fac9788a" + }, + "verify/results/saves/bp-pinA-turn28.sav": { + "mode": 420, + "sha256": "e913ff41188211c02d536da616337544e64133996cd7cc7a6521a8df1960226f" + }, + "verify/results/saves/bp-pinB-turn28.sav": { + "mode": 420, + "sha256": "724528ffde9a7514b69ab9e82ed3b8c8ade63d622c0720de30503a73a92df11e" + }, + "verify/results/saves/bp-turn28-pre.sav": { + "mode": 420, + "sha256": "16f63adbf383946db17c381998957172bca803406b7df78f3b03805fef0bbcb8" + }, + "verify/results/saves/bq/bq-1A-endturn.sav": { + "mode": 420, + "sha256": "1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39" + }, + "verify/results/saves/bq/bq-1A-post.sav": { + "mode": 420, + "sha256": "56980aa086e1a145b00f781b9d9cf618b152986f1c2267b9fd96cca0f1f604b9" + }, + "verify/results/saves/bq/bq-1B-endturn.sav": { + "mode": 420, + "sha256": "1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39" + }, + "verify/results/saves/bq/bq-1B-post.sav": { + "mode": 420, + "sha256": "b36ac0ec2986f3a814dd22ca312c895ba6ec8a0e55fca54d8a7fd08a2f96a2c4" + }, + "verify/results/saves/bq/bq-1bA-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bq/bq-1bA-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/bq/bq-1bB-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bq/bq-1bB-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/bq/bq-res-post.sav": { + "mode": 420, + "sha256": "28bbd9b5c377afcd8f075b535eb1036ee46acf71ab614e7091ccdbdfb3703db2" + }, + "verify/results/saves/bs/bs-C-endturn.sav": { + "mode": 420, + "sha256": "15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca" + }, + "verify/results/saves/bs/bs-C-f38-autosave.sav": { + "mode": 420, + "sha256": "0fe8f37479a702d2e4e7752e6cb160dc242f00a082dc4115b7d10c77b24989f0" + }, + "verify/results/saves/bs/bs-C-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/bs/bs-L-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bs/bs-L-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/cb-c3-turn1to2-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-c5a-turn1to2-pinned-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-c5b-turn1to2-pinned-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-turn2to3-autosave.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/saves/cb-turn2to3-endturn.sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/saves/certified-pairs.md": { + "mode": 420, + "sha256": "4e1cfb79cf5a51446b2eae21f91b565348ffa95a9ebac8f95e23019012aefb57" + }, + "verify/results/saves/cr/cr-oracle-autosave.sav": { + "mode": 420, + "sha256": "79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420" + }, + "verify/results/saves/cr/cr-oracle-endturn.sav": { + "mode": 420, + "sha256": "e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f" + }, + "verify/results/saves/cr/cr-replace0-autosave.sav": { + "mode": 420, + "sha256": "6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5" + }, + "verify/results/saves/cr/cr-replace1-autosave.sav": { + "mode": 420, + "sha256": "8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235" + }, + "verify/results/saves/determinism-hashes.txt": { + "mode": 420, + "sha256": "bfa0615c4b310ae21c09a7d373d5a9d8799f36a0460089e5950fa0edf9d614d2" + }, + "verify/results/saves/human-turn11-spytechs.sav": { + "mode": 420, + "sha256": "aa63dd3d5489884f70d9c35acfb06c23c84531f403798842e7b0cf8cde94d1d4" + }, + "verify/results/saves/human-turn15-spyprogram.sav": { + "mode": 420, + "sha256": "22306d26f8831b90a62c00a2ebad5a97e77017b62ee96a7439d4c2c76c455cca" + }, + "verify/results/saves/human-turn2-orders.sav": { + "mode": 420, + "sha256": "9a94dec562622310893d6f522a0fae06f1033470f4182098e808b175e7df7c8d" + }, + "verify/results/saves/human-turn3-noderoute.sav": { + "mode": 420, + "sha256": "6db0912a050a846c8f3a184811644c76df3fdb65e83dffbf70289e21cc098a90" + }, + "verify/results/saves/human-turn5-traderoutes.sav": { + "mode": 420, + "sha256": "3829e6c6d8f26cd1183a972bd66edadbd71364c11a224b0a6e40461011bcab29" + }, + "verify/results/saves/human-turn8-traderoutes.sav": { + "mode": 420, + "sha256": "afeb3b2d724e07cf59f15eb1bdb9fcf853391fc06fe21beb20c069ff75b2f836" + }, + "verify/results/saves/turn1-state.sav": { + "mode": 420, + "sha256": "a3f9dc4b49fc669c814b09b87a9c6795de21bac80a1c7bfe3901b8e239fa36cc" + }, + "verify/results/saves/turn2-state.sav": { + "mode": 420, + "sha256": "ab4ac2d7e2977260a4de916f65c7ecc6dd5b0094dac4bb51241317232ea17ab4" + }, + "verify/results/saves/turn2-strict-issues.txt": { + "mode": 420, + "sha256": "33a169a2de29ad502e9b7c0159cd543e0b4d71f2d9b3903f5be58c7846db2429" + }, + "verify/results/saves/turn3-state.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/saves/zuul-turn15-orders.sav": { + "mode": 420, + "sha256": "ef86a0d61de3533f023af5dc2b9a5720e4e0c5c97d900d88181603a13db7d045" + }, + "verify/results/saves/zuul-turn16-noderoute.sav": { + "mode": 420, + "sha256": "b6b5d283b62cc46bca914e86c34cf45e8960a653e818e59664087429bbb30103" + }, + "verify/results/saves/zuul-turn17-orders2.sav": { + "mode": 420, + "sha256": "1b863e684edecb4afe738ba30c8132065ebcf2d9977409325e714fe0173056e8" + }, + "verify/results/saves/zuul-turn17-rollpending.sav": { + "mode": 420, + "sha256": "aac5ba5b10ff1af6b0e38c565b2f0a60c16858ee4e89dd2a2f5b037eae95ee7d" + }, + "verify/results/saves/zuul-turn23-fleet23.sav": { + "mode": 420, + "sha256": "fd3748327d87b8c478f50fcd09d097eacff21e57d946ecb43b8119b4d0d78b1b" + }, + "verify/results/saves/zuul-turn5-species5.sav": { + "mode": 420, + "sha256": "48559ab5b719b332e47b4bf43af85a616bff1508125d62edb211b80637234af6" + }, + "verify/results/shim/ac/ac-probe-run-shim.log": { + "mode": 420, + "sha256": "b9b4a5f0e399e16b477cde0bd7e2c4ce378549eb5a467f7b8ae5eb64d75cb106" + }, + "verify/results/shim/ac/ac-probe-run-watch.txt": { + "mode": 420, + "sha256": "543d76d150aeb9318b9ae27acf638b8935eea30b1a2d47fb15354b584a458163" + }, + "verify/results/shim/ad/ad-r1-shim.log": { + "mode": 420, + "sha256": "fec98888b030ed42b84551aac1286c0baeaf15b8a545af068dc6605615e96df0" + }, + "verify/results/shim/aidesign/parse_aidesign.py": { + "mode": 420, + "sha256": "fbd4aeb71db548759bdb1ff65a5fdd0af6c192927e6ebe4b510f1083c3bdba13" + }, + "verify/results/shim/aidesign/sd-br-p1-hashes.txt": { + "mode": 420, + "sha256": "cd276116a51df01129f0e840d4c04f7964be34f75e51c384cd8df65969f458e6" + }, + "verify/results/shim/aidesign/sd-br-p1.txt": { + "mode": 420, + "sha256": "325cb9fcfa505ab2a93bbd00d60a7a4644b6b5970cb16a288cc7a43f2e825dd3" + }, + "verify/results/shim/aidesign/sd-pin-p1-hashes.txt": { + "mode": 420, + "sha256": "f0371c0a439d736ae7e67e71bd87d693481100d08243d16a1ac1f2ad0ab8bdce" + }, + "verify/results/shim/aidesign/sd-pin-p1.txt": { + "mode": 420, + "sha256": "45e693d279899e7a04cf59bda67190058896b56f3b0607d5aee21abb12f03071" + }, + "verify/results/shim/aidesign/sd-pin-p2-hashes.txt": { + "mode": 420, + "sha256": "e7d6dc12a940305087ee03dc7f8826f3c6343d24d8fea0f2aa78665d887138c9" + }, + "verify/results/shim/aidesign/sd-pin-p2.txt": { + "mode": 420, + "sha256": "b0206869206bc3a41bebb5175e31179f1a5d125a44b5ddfc10c67c4a0d13c22c" + }, + "verify/results/shim/aidesign/sd-t15-p1-hashes.txt": { + "mode": 420, + "sha256": "1ee71a623eb17e08c623ec8de3775218dc3a7c2de50d36a25dd2395382195962" + }, + "verify/results/shim/aidesign/sd-t15-p1.txt": { + "mode": 420, + "sha256": "df9f4906ee8bbb2efc9ba9a38c41607b89711d0bc9f705473d8448e9715d9280" + }, + "verify/results/shim/aiorders/cb-c1-turn2to3.txt": { + "mode": 420, + "sha256": "9d5014b346cb0fa9e2172f45db77c4437a03b069930eaaa80ea94e742891eb8f" + }, + "verify/results/shim/aiorders/cb-c3-turn1to2-run1.txt": { + "mode": 420, + "sha256": "fdaf27a32b93fdb3024f7a45f0d90b2cf833d3f592960027c3a6cf4ecbb8c616" + }, + "verify/results/shim/aiorders/cb-c5a-turn1to2-pinned.txt": { + "mode": 420, + "sha256": "d4daa0c2599c1b573ed59617243a392861dbc4e1fbeb707c7248708c015d998f" + }, + "verify/results/shim/aiorders/cb-c5b-turn1to2-pinned.txt": { + "mode": 420, + "sha256": "9682186176024242fddb901b10d9a5ad6beba91bd895c2001ca954fc293eab73" + }, + "verify/results/shim/aiorders/l4-research-run1.txt": { + "mode": 420, + "sha256": "5caf1fa25b7b8c2d6af213e59c6ec821be3c46cdd92a1024a6faf5d0a3b1d71c" + }, + "verify/results/shim/aiorders/l4-research-run2.txt": { + "mode": 420, + "sha256": "846ef2cfbc365e7ee2f481048978baf820d57026737261bfba3a328d59cdaad8" + }, + "verify/results/shim/aiorders/l4-turn1to2-aiorders.txt": { + "mode": 420, + "sha256": "c55d9b3c48cb552c02731003c26bb6dfcb8afb611c2a188d21fd4a39f550d269" + }, + "verify/results/shim/aiorders/l4-turn1to2-hooksoff-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/shim/aiorders/l4-turn1to2-instrumented-autosave.sav": { + "mode": 420, + "sha256": "e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d" + }, + "verify/results/shim/aiorders/l4-turn2to3-aiorders.txt": { + "mode": 420, + "sha256": "696c34996e4b5be0383794fae7ea114779f7fdd0a8cdceff5a00aeb07392933a" + }, + "verify/results/shim/airng/par-br-p1-hashes.txt": { + "mode": 420, + "sha256": "656b1d0c073d9988287e5b76543e42eb1c050d9ebc9872e2b7ec5208b7534b42" + }, + "verify/results/shim/airng/par-br-p1.txt": { + "mode": 420, + "sha256": "eadf1cfb7efd7b374472867ddf1cea5f60e30096090c950049f0c264b0299398" + }, + "verify/results/shim/airng/par-br-p2-hashes.txt": { + "mode": 420, + "sha256": "d97916075c7b4c10464962e9e38aed69288a4d68a16a369c1133df16fa134146" + }, + "verify/results/shim/airng/par-br-p2.txt": { + "mode": 420, + "sha256": "bda355cbbf07301cd6d3716eba32312261c402848c91780a97a6d5cce14c3d92" + }, + "verify/results/shim/airng/par-pin-a1-hashes.txt": { + "mode": 420, + "sha256": "5eb1b557826d45fe9d843b37a92aaef54cd1b8a60900f9c34b4fe25e4bd46a24" + }, + "verify/results/shim/airng/par-pin-a1.txt": { + "mode": 420, + "sha256": "17750bab77512434dcc9e66fc86cbfc34df497cadab5b732cf3b0ef3958e09a4" + }, + "verify/results/shim/airng/par-t1-br-p1-hashes.txt": { + "mode": 420, + "sha256": "7577c33ec33d9e94fb77225929c1f34a3dd94c18fe72a394017811b3b5d53467" + }, + "verify/results/shim/airng/par-t1-br-p1.txt": { + "mode": 420, + "sha256": "8bc9969e2da730d26cc5538b758858a00a4ba6ab2d398458ff4dece1edf8bf92" + }, + "verify/results/shim/airng/par-t1-br-p2-hashes.txt": { + "mode": 420, + "sha256": "7e60fc8615163e8ebccf22fc8910f2e7c4f72a9be7a74bc832bc2a0f64ade0da" + }, + "verify/results/shim/airng/par-t1-br-p2.txt": { + "mode": 420, + "sha256": "7e50a728eb5909bd602a9e6996b908b1b2665c8c983cc0258dad000c8bff8e35" + }, + "verify/results/shim/airng/par-t1-br-p3-hashes.txt": { + "mode": 420, + "sha256": "00ce6b3b4c9dbfd192d09b3b06d91b95576cee8a5a85fccdc36a85547fbdcbc4" + }, + "verify/results/shim/airng/par-t1-br-p3.txt": { + "mode": 420, + "sha256": "28cdf1f6b83c1764f1d1e51a67e3f873566b8503f8504ef52f5b5af24b21c0cb" + }, + "verify/results/shim/airng/parse_airng.py": { + "mode": 493, + "sha256": "3fafa7cf2363620d6a25248d085fbc4e3bd1fdbb9388a6795244834a9a2a2ed0" + }, + "verify/results/shim/ap/ap-probes8-d.shim.log": { + "mode": 420, + "sha256": "115545172568edc6a1d5bb3b559f968aa8a7aaa1f6aeba970daebce98fe56a0c" + }, + "verify/results/shim/ap/ap-probes8-w.shim.log": { + "mode": 420, + "sha256": "8af0897a884bb314958c5e6f2fccd88ff8b1890322dafd3bc904b3f983838620" + }, + "verify/results/shim/ar/ar-r1-ledger.txt": { + "mode": 420, + "sha256": "44bddfc0b9e94812a3a1cfd681a1350caedf2ed8e1174900c2f81c90dc95187e" + }, + "verify/results/shim/ar/ar-r1-probes.txt": { + "mode": 420, + "sha256": "c10251c9bcca5436dc42b2c0bd37b66c144aec4036f2069c2df9340fd764992c" + }, + "verify/results/shim/ar/ar-r1-shim.log": { + "mode": 420, + "sha256": "07003ee203d60a638cc8a1cb0a0f6b8042ba227705b4355f1254312c6dd54e28" + }, + "verify/results/shim/ar/ar-r1-sites.txt": { + "mode": 420, + "sha256": "d1923d549ef3567488d0382ae0ef75fa25c5b1b5812ee5349c5c47aea7a30514" + }, + "verify/results/shim/ar/ar-r2-shim.log": { + "mode": 420, + "sha256": "06dbf04cff5a56b0e55d8e73e5b1e3e9d9235f4afafc8139517b68d676781909" + }, + "verify/results/shim/as/as-probes8-run.shim.log": { + "mode": 420, + "sha256": "cd25c93d8b79e0f0df594fe681917fe880741a54a4188d4d72d2fbc6c42ba8d9" + }, + "verify/results/shim/bp/A-aiorders.txt": { + "mode": 420, + "sha256": "ee9f8bb1073e3bf02e115fdee014f79b11100a0e1e35e308c2bcd4b798302c34" + }, + "verify/results/shim/bp/A-shim.log": { + "mode": 420, + "sha256": "853eab98d09ff1e7a8e7da375a678561b02d6236adec627202ff3bb34d90e797" + }, + "verify/results/shim/bp/B-aiorders.txt": { + "mode": 420, + "sha256": "07daeacf33a16afbed64a8a01ffd26fa73c6d2acd0e6993dd9deb06a7fd93fc3" + }, + "verify/results/shim/bp/B-shim.log": { + "mode": 420, + "sha256": "cde2202333e81cc4eec2c47915181229a68a5fa99879968905a2809c4fe0a79a" + }, + "verify/results/shim/bp/L-aiorders.txt": { + "mode": 420, + "sha256": "28492b0f9be74f61db45eae49b44b41efbc1a3bf6f6d2c888e5cc40bfb7753bd" + }, + "verify/results/shim/bp/L-shim.log": { + "mode": 420, + "sha256": "550d8986a35b3f4742e7522df11bfbf2e832e417ad42cc1bff1a39dd4ee510fd" + }, + "verify/results/shim/bp/statecheck-AB.txt": { + "mode": 420, + "sha256": "dacb5cfa5541934f37b2b1c02b87e809c3f65ba8488aa88d925b295fade0083d" + }, + "verify/results/shim/bq/bq-res-aiorders.txt": { + "mode": 420, + "sha256": "991543eb53fbf1353fe99ed96d4ca358e05f6bac32f00bd1f6dc60fcc002c8b4" + }, + "verify/results/shim/bq/bq-res-shim.log": { + "mode": 420, + "sha256": "7855bd268f69443e7ddfda71873458144728630264703482901bf6d8ffbccd3a" + }, + "verify/results/shim/br/BR-aiorders.txt": { + "mode": 420, + "sha256": "d71e11e7c40aaa740adc55651af556afb9e92768336bc11747ad67151f33f4d1" + }, + "verify/results/shim/br/BR-airng.txt": { + "mode": 420, + "sha256": "04eaeaa688a448f64df00dedfd692b78bca0e3e1207a8292c2fafad507f919ea" + }, + "verify/results/shim/br/BR-shim.log": { + "mode": 420, + "sha256": "bc6ef7aa465c2b1a81d08555174e15fb1a97a207da9eefaa8a6155440869a13e" + }, + "verify/results/shim/br/BR2-deep-aiorders.txt": { + "mode": 420, + "sha256": "b9edb53f7d56c1bb26d3bb77349543dce9564930484bc832475a3a04e5f2ad15" + }, + "verify/results/shim/br/BR2-shim.log": { + "mode": 420, + "sha256": "0de7609693747fdf0abaebd60598af127c918f32561c993715aead91cd24b334" + }, + "verify/results/shim/br/aiorders-diff.txt": { + "mode": 420, + "sha256": "411ceb2bacd62185d25a3c58f199c0bdfcd2759705bef2b36536da3870f73a67" + }, + "verify/results/shim/br/cmp_aiorders.py": { + "mode": 420, + "sha256": "b6c192efb40866aa56f29d9ba2b89e17f18ae0579645db8f34a01010db09cc28" + }, + "verify/results/shim/br/shim.cfg.brdeep": { + "mode": 420, + "sha256": "b8017e344666df816f1191906cf8f54504d631bb7ce9d2f51f6f959e4934ff04" + }, + "verify/results/shim/br/shim.cfg.brprobe": { + "mode": 420, + "sha256": "4f090999dba63ef22ab4993bd6af557e9500819c84f27decc126771f48f98efb" + }, + "verify/results/shim/bs/C-aiorders.txt": { + "mode": 420, + "sha256": "5abc20b68edf6ff52301c01825040e1d6b41b582ba40403ed6c4edc42dcbe4e2" + }, + "verify/results/shim/bs/C-airng.txt": { + "mode": 420, + "sha256": "5a4a56506d1eeb82d3bf0fbba95842566911178a82f0aad9d700a9fe00f1b300" + }, + "verify/results/shim/bs/C-shim.log": { + "mode": 420, + "sha256": "8b8dad987589fd159e789806e89dbcf7a7b40b86446d55e1d0bf10ff25cb8f6f" + }, + "verify/results/shim/bs/L-aiorders.txt": { + "mode": 420, + "sha256": "a03e8c1587633ecbb683c376f30e35e126e98ff0e8204c4ee6b5e2b4fc254104" + }, + "verify/results/shim/bs/L-airng.txt": { + "mode": 420, + "sha256": "8d21083857facd3728446af612b3a97b47e5287a5fe0bdf01423812f8445dacd" + }, + "verify/results/shim/bs/L-shim.log": { + "mode": 420, + "sha256": "246af272e464c715c7abb00471b4ddc404b81143f4065006aa4daec4d82cadb9" + }, + "verify/results/shim/bs/shim.cfg.bsrun": { + "mode": 420, + "sha256": "570b15c208d31a367ec6c6886019693cb17b98d254cebead11ec6746ae5af256" + }, + "verify/results/shim/bu/BU1-aiorders.txt": { + "mode": 420, + "sha256": "944eeb701fcd22480513c34d93f8310541977e89a24ae237bd947aed44092529" + }, + "verify/results/shim/bu/BU1-aivisit.txt": { + "mode": 420, + "sha256": "721f038ef80be92325728fc30f095846b54ff1ac67a41537d4a4d1b97d5e9758" + }, + "verify/results/shim/bu/BU1-shim.log": { + "mode": 420, + "sha256": "28ca02f56823e577662744108965bc3ab1d7241143704ac8ceaacf2e9cd077f3" + }, + "verify/results/shim/bu/BU2-aiorders.txt": { + "mode": 420, + "sha256": "5c388039a3e832465f67b4ca88f3f67550d5189a3a68f33c508c4a467733c9ac" + }, + "verify/results/shim/bu/BU2-aivisit.txt": { + "mode": 420, + "sha256": "19963ed364f47fd965508d96fbf9d1f424938f711f2b1cdc83697f789189271a" + }, + "verify/results/shim/bu/BU2-shim.log": { + "mode": 420, + "sha256": "c0a8c467bc4b4134dc83ca5dedbbfed8dac887b432a56cd12f6e211c8d58daca" + }, + "verify/results/shim/bu/BU3-aiorders.txt": { + "mode": 420, + "sha256": "b6443b3f7db541149f54435f14ba830f54d2f950420f3f0694ff12a8b1eec143" + }, + "verify/results/shim/bu/BU3-aivisit.txt": { + "mode": 420, + "sha256": "fe67a4a1cc6a67e06b2eb5675b4b8543ab9f25ea39a18d7f4c83bce74482e0cc" + }, + "verify/results/shim/bu/BU3-shim.log": { + "mode": 420, + "sha256": "0a802ec556c87f44efaa06f211e75d9b89a66ac6db5a08e34d2a7eae992121ed" + }, + "verify/results/shim/bu/claim-order.txt": { + "mode": 420, + "sha256": "7135e3ed0204a4615e546bc882992073d4b48ee42ea341186c32b6b3dd3dfc47" + }, + "verify/results/shim/bu/claimcheck.py": { + "mode": 420, + "sha256": "85c5ec747f12cf37ec2dbc4021447909eeded68ecd1abb697a6fb60005a54aff" + }, + "verify/results/shim/bu/shim.cfg.bupin": { + "mode": 420, + "sha256": "6b37b047adc95f7c08b6767cdec5bd715a8851f14bff7f187772835d1cc032a7" + }, + "verify/results/shim/cr/cr-N.log": { + "mode": 420, + "sha256": "d5459e6dcf44fbe55d0f60f1ac40d68bed96319bb55986cc24a1b9ca0d8103e0" + }, + "verify/results/shim/cr/cr-R0.log": { + "mode": 420, + "sha256": "3b703881aa2b9a1c111201ff9543f2dcae0f948567ee877df275a1093bb567f7" + }, + "verify/results/shim/cr/cr-R1.log": { + "mode": 420, + "sha256": "8df6af84f74891ff9b0b02fa150641f5fadcd0419bc53c41cbe80bf14ec9c712" + }, + "verify/results/shim/eventlive/c6b-loaded.png": { + "mode": 420, + "sha256": "f442d4b211a47b331cef9a255e83732b80a1ede70ac200596c796ac0aa320017" + }, + "verify/results/shim/eventlive/c7b-turn3.png": { + "mode": 420, + "sha256": "3e070abfbdf4efd2662951049f8545f328aa172d64d00b9c5a1f4243426e803a" + }, + "verify/results/shim/eventlive/load-dialog-8files.png": { + "mode": 420, + "sha256": "e0fc5af16042a70b53bf7d44220db56c56a466c22c4abd641557e94b8e6c1693" + }, + "verify/results/shim/eventlive/shim-zuul.log": { + "mode": 420, + "sha256": "f9d184b33c46cab9d497f7a38056c099ce2ff9b5e8149f563a2353d91985fea1" + }, + "verify/results/shim/eventlive/shim.log": { + "mode": 420, + "sha256": "e65f2e3efa1ce8f70c483bb966448239923db2d3924c709a669bb1a890411b0c" + }, + "verify/results/shim/eventlive/t7-after.png": { + "mode": 420, + "sha256": "dc0a3e8f5a5c9032ead266d106fa69a57677711eb807d26376f29baa6ec0b934" + }, + "verify/results/shim/eventlive/zuul-turn1.png": { + "mode": 420, + "sha256": "f9af979ed08315c0a8d644af800318634b3641628f710f3f9b4d2c77d4f70fdc" + }, + "verify/results/shim/l1/README.md": { + "mode": 420, + "sha256": "f008081756d99825aa81d2802869476f8341f81aeb8c4dbbb77502cf76db5145" + }, + "verify/results/shim/l1/cdiff-frames-2-51.txt": { + "mode": 420, + "sha256": "57cb1911c5bfc7bdfacafc6bb1ad382fc05f46fb9cdcee4479d861af48e585c1" + }, + "verify/results/shim/l1/cdiff.py": { + "mode": 420, + "sha256": "2ace41ce6017cfac8758d8b9955f02de84738d90067a7dfadeb8bffffc842027" + }, + "verify/results/shim/l1/rep.py": { + "mode": 420, + "sha256": "1a7a3819da8e9aeaaf213a62b696388b0a9489924c964407536831b5f7dd9488" + }, + "verify/results/shim/l1/saves/l1-t1t2-post-hooksoff.sav": { + "mode": 420, + "sha256": "e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d" + }, + "verify/results/shim/l1/saves/l1-t1t2-post.sav": { + "mode": 420, + "sha256": "62061918176e344106e82357e58acc8adec488f6b2969831cb99a84cf25e31c5" + }, + "verify/results/shim/l1/saves/l1-t2t3-post.sav": { + "mode": 420, + "sha256": "2177c659d8dbc39cf7485abe367d42d55cc42cc9a61949d403dcbc79989ec32d" + }, + "verify/results/shim/l1/saves/l1-t2t3-pre.sav": { + "mode": 420, + "sha256": "641a33f06b2fe1c1caf0c4994442bf13a4b03f25a85b34a9875cd22b75715896" + }, + "verify/results/shim/l1/seed-two-processes.txt": { + "mode": 420, + "sha256": "d60412049ced59705284a46078f1906e1aad4140f90db2169e08aeb9530dd985" + }, + "verify/results/shim/l1/seedrep.py": { + "mode": 420, + "sha256": "a06de5d5ccc1e87808eb3877534076340ef5330bee9a86953b8f4dae0268e087" + }, + "verify/results/shim/l1/trace-et1.jsonl": { + "mode": 420, + "sha256": "f21a213bc56983bc94f24303b0837b160f93bfb7e3ca6abdbf2e18321f8dfa19" + }, + "verify/results/shim/l1/trace-et2.jsonl": { + "mode": 420, + "sha256": "6e44b0fc541c3082f91b115de67f5315f43b9db21f0696b856cfff2ead51323a" + }, + "verify/results/shim/l1/trace-oracle.jsonl": { + "mode": 420, + "sha256": "ad9ecbe79a71c84930302868850806798228fe0f2e625b442dd3ed579c05092c" + }, + "verify/results/shim/l1/trace-playforward-f51.jsonl": { + "mode": 420, + "sha256": "6ed0af385dfe7288ad2c994458c8f5d75fc8e29b603dd6607a3703591d25eeb4" + }, + "verify/results/shim/l1/trace-seed-proc1.jsonl": { + "mode": 420, + "sha256": "120074583eb02cd4c3a29aab5826f789d52a6146930b1763f9b0bb824e9a350a" + }, + "verify/results/shim/l1/trace-seed-proc2.jsonl": { + "mode": 420, + "sha256": "03dffeafeff0c33d926207f869741dc544141425c8f665bf58aad4fd363e2f95" + }, + "verify/results/shim/l1/watch-arm.txt": { + "mode": 420, + "sha256": "f8d5811c938d16d003a72a97f2b4b33112914a7ee378fa2b334282616592943e" + }, + "verify/results/shim/l1/watch-hits.txt": { + "mode": 420, + "sha256": "1bf62ac965036a189055cd59a92007c70a2a6aca307df54ce8ccb997048f43d5" + }, + "verify/results/shim/l3/l3-probe-run-shim.log": { + "mode": 420, + "sha256": "f5cd336971ae3d3eaff642e80d9defa20ec2e1ee11e212a082c24365b18d8684" + }, + "verify/results/shim/l3/l3-probe-run-watch.txt": { + "mode": 420, + "sha256": "8d969595789c690a688f7b8fac05288c614d5d9210388ca94315158948c85f24" + }, + "verify/results/shim/l3/l3-spy-run-shim.log": { + "mode": 420, + "sha256": "5abfd08445e9e8139945b095ddddfb56480062019ce6d40304a440c317f21fd1" + }, + "verify/results/shim/l3/l3-spy-run-watch.txt": { + "mode": 420, + "sha256": "c669ccf79202e7060c153151e4fe1be96acf4030cb64aa71bd6a5c212b550b47" + }, + "verify/results/shim/m0-main-menu.png": { + "mode": 420, + "sha256": "465207fda4722ca53585b71647a08b1149944036792a072e7c34e2c437a3e37c" + }, + "verify/results/shim/m0.log": { + "mode": 420, + "sha256": "581d63139503892b6aeeff71acb742143393e9f107aa1f3605d8c028c927cad1" + }, + "verify/results/shim/m1-shim.log": { + "mode": 420, + "sha256": "35401ea82b9a64dbfdb54c282c06c51d7b696afd4ea2794e16071e0fd5c7cbef" + }, + "verify/results/shim/m2-scout-shim.log": { + "mode": 420, + "sha256": "8c46117bdde6b6911a4d77b059b40803d4966652990c8fa3ed67773e5db0459f" + }, + "verify/results/shim/mf-after-shim.log": { + "mode": 420, + "sha256": "86601372b980828171e98fc71afe865f207b1745ef4dcdca646a618c91d17426" + }, + "verify/results/shim/mf-after-turn2.png": { + "mode": 420, + "sha256": "a1f83011ff96e990d7cc80f8306e8fe0c58b96f84eb73ccb6cb013019900133d" + }, + "verify/results/shim/mf-after-turn7.png": { + "mode": 420, + "sha256": "313f3863ab901320174c8ff7cf6f1f6b0d5b3d9d7a2f8999eae6413aedc46fc5" + }, + "verify/results/shim/mf-before-shim.log": { + "mode": 420, + "sha256": "8377a87c7ed05fd0cd7b61e3f1d5fc9c2b9fa294f812c67183d4ce31323a64b1" + }, + "verify/results/shim/mf-before-turn2.png": { + "mode": 420, + "sha256": "c9805791f402ec159fcc6acdd283120eae8536b230666d3049374525595b589f" + }, + "verify/results/shim/mf-before-turn7.png": { + "mode": 420, + "sha256": "3b880b8f96c4cc328aaff8e41068db29b295be8f000c432e321a51b6030b1272" + }, + "verify/results/shim/mf-human-home-no-ships.png": { + "mode": 420, + "sha256": "dfda3e9784eefdc7b75d04908e95c3a192eda7796685907c65bfde3068d6f2bb" + }, + "verify/results/shim/probes/human-t3-5-perturbed.txt": { + "mode": 420, + "sha256": "9b594ab18cdd9aec4fdf807b4d97576191bc6fd48a85cc872c222b515d0f7c01" + }, + "verify/results/shim/probes/human-t5.txt": { + "mode": 420, + "sha256": "0ddd9f0391a3a5d655f1809a9e79d537badd8071f8834e58bdbc7f95d9ff1320" + }, + "verify/results/shim/probes/oracle-restore/h-oracle-autosave.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/shim/probes/oracle-restore/h-oracle-endturn.sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/shim/probes/zuul-t24-25.txt": { + "mode": 420, + "sha256": "50567b7cb1f008d025baf6cb4b4ad7af7d767a2182afd082c3ac1b1a66c79541" + }, + "verify/results/shim/recap-b1-shim.log": { + "mode": 420, + "sha256": "601cd4cbbec3e8c1f7776eadc4203256ec4c5d1e3e180295369727e1da69ff37" + }, + "verify/results/shim/recap-b3-shim.log": { + "mode": 420, + "sha256": "7c5110a9d4431cc03729a7bddcb13ee69a6d428199051e175b0921391fc02a80" + }, + "verify/results/shim/recap-misc-shim.log": { + "mode": 420, + "sha256": "7cadf2eadb08979cda39fe7e3ed6cfa3f62bdbcd256fc7550b3e27c3f08c9b3e" + }, + "verify/results/shim/recap-misc-turn7.png": { + "mode": 420, + "sha256": "2c1451ded36ad79389f0eb3db098b4e0b0a6f12495d64c832f6e093374005c29" + }, + "verify/results/shim/recap-trace-shim.log": { + "mode": 420, + "sha256": "56da143a92b2edda727862a6fd4a056c716153e23cfddbde076e218ce4c4285f" + }, + "verify/results/shim/recap-turn2-loaded.png": { + "mode": 420, + "sha256": "62a42c44f99d8a53bca735d54a5adf48b89449bb859e859ec573cb40e1a7f2d0" + }, + "verify/results/shim/tailrng/save_rng_delta.py": { + "mode": 420, + "sha256": "a9a04b131427a43372d87688b8eaf230a82a79e2c3c241a90ff4eb31e039749e" + }, + "verify/results/shim/tailrng/z-t5-autosave.sav": { + "mode": 420, + "sha256": "b2124798470d85ea86b0e9e4abfd9e23f3be73caa1115dd7614021be76305939" + }, + "verify/results/shim/tailrng/z-t6-autosave.sav": { + "mode": 420, + "sha256": "2ce6aef9d49ea238455f3ac680556c6a251065af3e28b6540fe09597ae38571c" + }, + "verify/results/shim/tailrng/z-t6-endturn.sav": { + "mode": 420, + "sha256": "afb112896c0236fa715ab3c10139958294085bb2066e22a6d7b76deb0dfa46dc" + }, + "verify/results/shim/tailrng/z2-autosave.sav": { + "mode": 420, + "sha256": "b2124798470d85ea86b0e9e4abfd9e23f3be73caa1115dd7614021be76305939" + }, + "verify/results/shim/tailrng/z2-endturn.sav": { + "mode": 420, + "sha256": "8648957fecf5041233f9add4c8173f78981f026f133ecdbecdb89ddd10917048" + }, + "verify/results/shim/unlock-shim.log": { + "mode": 420, + "sha256": "20a6625b369acb773543e530f1bfdc8b7eaca5c6b58415cc5009bb9858e16f22" + }, + "verify/results/shim/watchpoints/w2-modcount-status-2turns.txt": { + "mode": 420, + "sha256": "335be910dc11a20c9fb80f3b0f37f04fd50a9d8074697bb5365c3fea02790b74" + }, + "verify/results/shim/watchpoints/w2-shim-log-excerpt.txt": { + "mode": 420, + "sha256": "9a344045270e3815004a3376eccfbd030372faba54374d9b6626fd80740b8b13" + }, + "verify/results/shim/watchpoints/w3-modcount-turn1.txt": { + "mode": 420, + "sha256": "328a2319e320f5382e82ad497b6b73245c397cf67515e8a27fa9712418af81ae" + }, + "verify/results/shim/watchpoints/w3-shim-log-excerpt-turn1.txt": { + "mode": 420, + "sha256": "a9b3c20f90a76ee624bde6ee4cae9d1ff1f2baa67aa770a0e70042cb44d11915" + }, + "verify/results/shim/watchpoints/w3-shim-log-excerpt.txt": { + "mode": 420, + "sha256": "af9fe2258fe4168f6066768809c509380183f61bc337331392c5202b900d906a" + }, + "verify/results/shim/watchpoints/w3-tshn-containers.txt": { + "mode": 420, + "sha256": "08eab48d1a202f975f1be87e2279379646142f8b22d9dafc56295399083ed0af" + }, + "verify/results/standalone/cv/cv-input-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "d29f3514e4209954d6c068f34285615aef5f4627ba4627ce97c0e65f93620159" + }, + "verify/results/standalone/cv/cv-leaf-worklist.txt": { + "mode": 420, + "sha256": "0f309711de89cc10cf940d0d4b051b5052ce49a3cc0f3f80c532b50256410778" + }, + "verify/results/standalone/cv/cv-noreplay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "3734f197cfefd017dbe562fd421d40859bfc2c37d9ac2cedf9c7ddd340a3a4a7" + }, + "verify/results/standalone/cv/cv-replay-run.log": { + "mode": 420, + "sha256": "7372c7da437ece21098cc6f66d0631e146d8aae14a9242bd2278a9922a7f7c02" + }, + "verify/results/standalone/cv/cv-replay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "1932158abec82f45b9b838f4cb79b1088190ca5281d388f57356af7776e96950" + }, + "verify/results/standalone/dt/dt-canonical-after.txt": { + "mode": 420, + "sha256": "f32fdcf7d6431293133e951045b42a55e8a27d75cd859ad08cd719e5fb696712" + }, + "verify/results/standalone/dt/dt-canonical-before.txt": { + "mode": 420, + "sha256": "b56160cfdcfa0fff25be2aa566959261e375004905814803e231889da665188f" + }, + "verify/results/standalone/dt/dt-observed-leaves-remaining.txt": { + "mode": 420, + "sha256": "e14bd20e60480f98a564e585c0d25d2e758f71016811b8981dbdacd9d51c0c82" + }, + "verify/results/standalone/dt/dt-replay-run.log": { + "mode": 420, + "sha256": "4b7907fc4e735b1c12e3cf64671079abaad757aabd752b134a9fb27d065656cd" + }, + "verify/results/standalone/dt/dt-replay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "8ddb84e7e6c2f663b1bc4b9611a56a46aac9d09863dcc5be765cb70dc9642c22" + }, + "verify/results/standalone/max-income-oracle.json": { + "mode": 420, + "sha256": "245796e0aea5f5c2238686cba10c651156117fb454805553b2508a8a8fe71a69" + }, + "verify/results/standalone/report.txt": { + "mode": 420, + "sha256": "b47e90432eaf38149f2ecb5316d1962813b6b1423848e36fcc9435ad1f5485df" + }, + "verify/results/standalone/rng-oracle.json": { + "mode": 420, + "sha256": "98a364c80f69d6a84b86c3f9ccc16176d9e769ff061569b0c0ddfced53f9146c" + }, + "verify/results/standalone/rng-oracle.txt": { + "mode": 420, + "sha256": "3496a217a7e4f80bb18c1b067eaedcafcf7bdc877460c6346606fd7f6a55b877" + }, + "verify/results/standalone/status.json": { + "mode": 420, + "sha256": "d38ca6222c83df3a5886e6b32a30772c7174cc0e584f4a3beabedc05770df9cd" + }, + "verify/results/standalone/t36-turnrecord.md": { + "mode": 420, + "sha256": "b017a93ad04af69ef469cd8ea536dff4cab17140d20b3665e7c89533ab5b8a84" + }, + "verify/results/state-checksum/ad-oracleA-vs-oracleB.txt": { + "mode": 420, + "sha256": "b6c440e20108ad2727a7d7aa32a4bd673ec03ca4372461797705d619de1ba48a" + }, + "verify/results/state-checksum/chain-turn1-3.json": { + "mode": 420, + "sha256": "33941d0dd77bfb79e4302f82a410f5f18fe3ae1ade684b5b59c6ed352789a696" + }, + "verify/results/state-checksum/chain.txt": { + "mode": 420, + "sha256": "ae1037dd8394b258ce91262877d348a0561c5f5056cfae74cc0d058e4166aa83" + }, + "verify/results/state-checksum/float-census.txt": { + "mode": 420, + "sha256": "c697c0f187ee8a8ebb157cbff8d7ae42c92f36a501b16acd9f9839a0ffc306a9" + }, + "verify/results/state-checksum/identical-roots.txt": { + "mode": 420, + "sha256": "1143fabfe96954440542adcd3830ad1d862be6c091f3c1b2e63e92a2751703e7" + }, + "verify/results/state-checksum/resave-localisation.txt": { + "mode": 420, + "sha256": "85f4e8fe3581ba5d0ae74974d757c4c2fddc008f3fbe6781891ae8ef65aa693e" + }, + "verify/results/state-checksum/roots.txt": { + "mode": 420, + "sha256": "6ea7ad668703baaff870720683bcc13beff557cebf8e7843526d6677e5b5ef68" + }, + "verify/results/state-checksum/turn2-to-turn3.txt": { + "mode": 420, + "sha256": "3649c86742460a54d89714df1917508f76952c44c07cb7fbc19010910c5df0f4" + }, + "verify/results/turncommands/br2-turn27-deep.tcb": { + "mode": 420, + "sha256": "329b9c3f1e9f85ddeeb71148bd5c0e38f7d26445ed349df60ffbfaf63db46102" + }, + "verify/results/turncommands/br2-turn27-shallow.tcb": { + "mode": 420, + "sha256": "d8346969421a92fa199d0b9faafa642dc2e71a527b08d27984fe73ee70ecbd6b" + }, + "verify/results/turncommands/cb-turn1to2-pinned-run2.json": { + "mode": 420, + "sha256": "01e572975339fbe8a242b2438719173bd5bb4f4916078e5887026408923eb356" + }, + "verify/results/turncommands/cb-turn1to2-pinned-run2.tcb": { + "mode": 420, + "sha256": "16e349db6c46e46520cd2e5f0a9fcf70b537dce878324dd873418ef6cebd8658" + }, + "verify/results/turncommands/cb-turn1to2-pinned.json": { + "mode": 420, + "sha256": "2d4f108b8ac6b1e582382ac25d53f354c293e7caf390b8462d15beaf8e43e01c" + }, + "verify/results/turncommands/cb-turn1to2-pinned.tcb": { + "mode": 420, + "sha256": "28ebfecc3495cc4f5b2892e420cb1b83f3cbdb6b7aabe107f4b1d18233a06094" + }, + "verify/results/turncommands/cb-turn1to2-run1.json": { + "mode": 420, + "sha256": "c9de70196af5453df15cfebcb92c973dfed9d54ffa0dc0a397839cf951ac9b58" + }, + "verify/results/turncommands/cb-turn1to2-run1.tcb": { + "mode": 420, + "sha256": "5cdcfb3ade6cdfb2c00c234f5535c791780230f520d27be14f617462347b4948" + }, + "verify/results/turncommands/cb-turn2to3.json": { + "mode": 420, + "sha256": "8a0d4fc9efae9dcb4eca0de41bf28444d79eb5a4fd4e426671a4d80ab5a46f44" + }, + "verify/results/turncommands/cb-turn2to3.tcb": { + "mode": 420, + "sha256": "420a5d03f2a4ecfa0789835cc46f98961d11bbd7c7fd5f59dc28301aa0b65b6b" + }, + "verify/results/turncommands/l4-turn1to2.tcb": { + "mode": 420, + "sha256": "1b9faa7f8aad9196e36cf1c450e340f37c502a69ccfcaaad7e289bd7b4727b12" + }, + "verify/results/turncommands/l4-turn2to3.tcb": { + "mode": 420, + "sha256": "b0443f176c3915389278de608a8e7c63fa48d4777b924c0e383c7279f2a297e0" + }, + "verify/save-reader/SAVE_FORMAT.md": { + "mode": 420, + "sha256": "5ac2556b6c063c9296ef29e8514cc312983d48a8e2c2832f504c970629990b33" + }, + "verify/save-reader/fixture_joint.sav": { + "mode": 420, + "sha256": "fbe41595e50bb580786f36b197d5b85f87820974c545107c864fa2f1862af3f1" + }, + "verify/save-reader/fixture_split.sav": { + "mode": 420, + "sha256": "3909f12d021bf840617dc8d599841b64d67be46e1c6882cba7728d312d310071" + }, + "verify/save-reader/save_reader.py": { + "mode": 420, + "sha256": "2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35" + }, + "verify/save-reader/save_writer_stub.py": { + "mode": 420, + "sha256": "8343ad15f742ee1b9cd62108efbc9c4b2718c3807442e3dfcfa9513ced7d3638" + }, + "verify/save-reader/test_save_reader.py": { + "mode": 420, + "sha256": "29f609d037eed99bb5444004facbff7b2c5c36fae568e815810585fdc3ddd393" + }, + "verify/state-checksum/STATE_CHECKSUM.md": { + "mode": 420, + "sha256": "5680299a4df27e30cdb545d9d2a640caf9299d61acb662b9512589e4390954e1" + }, + "verify/state-checksum/float_census.py": { + "mode": 420, + "sha256": "a568aad8b9f38aba2474f33941550bf948d050694a1d04dc5c85d15687223ae9" + }, + "verify/state-checksum/run_validation.sh": { + "mode": 493, + "sha256": "bf84b999d2b90368703e80235bac0258b70a1c37dd1902c9205a914a59cb1fc2" + }, + "verify/state-checksum/stability_check.py": { + "mode": 420, + "sha256": "8e640561b05decf590524fbe0dbf3b76a5e2f9c7fde93e005ca6e79464c305f1" + }, + "verify/state-checksum/state_checksum.py": { + "mode": 420, + "sha256": "ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8" + }, + "verify/state-checksum/test_state_checksum.py": { + "mode": 420, + "sha256": "d0ccf8e8390fd0a5d76a8695a490d85dc7e8e415a06ec50b592c57474cc9a73b" + }, + "verify/tooling/README.md": { + "mode": 420, + "sha256": "b05249530d65d43220c1e5c4666939c360d6139ed404a8881f6ad0a9c5c27af6" + }, + "verify/tooling/fixtures.py": { + "mode": 420, + "sha256": "56cccc88b9b9468e07c9ddff39d65813098053ec9e8f00432736906389f200a7" + }, + "verify/tooling/host-tests.json": { + "mode": 420, + "sha256": "90833c99e2749ff890b16b943f43f6ebfc1a1c611f2ed1e40555426fded45c97" + }, + "verify/tooling/test_tooling.py": { + "mode": 420, + "sha256": "bb8d15960dfda13f15cffc57f3b669003b127b4dedbf34100bb4a51c29dd3c6d" + }, + "verify/traces/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/traces/ac-probe-baseline-turn15.jsonl": { + "mode": 420, + "sha256": "a2f4e410f6a8d77f7680b4a69b5b2ac2f59fa80515b0cfe8209e7fec8e4a5b6b" + }, + "verify/traces/ac-probe-turn21-turn23.jsonl": { + "mode": 420, + "sha256": "2bb9317b82744c0da36ef6d9c1a78f31ebacea49b82a18005c0cc75bad62d345" + }, + "verify/traces/ad-r1-turn28-turn29.jsonl": { + "mode": 420, + "sha256": "cde7a1e010aa6195163f3b9320aa5c496fd8c271e9648c90c7319837dd967571" + }, + "verify/traces/ap-probes8-deploy-turn15.jsonl.gz": { + "mode": 420, + "sha256": "e257d5ea3fcb4be8da570d6a5589022e6ba412ff2712f4f06832812d8859e08a" + }, + "verify/traces/ap-probes8-turn16-turn26.jsonl.gz": { + "mode": 420, + "sha256": "df4fb35d9824799d8be79f3a9e976b55b7cd0fb5488b3e12711d04eb3c320f13" + }, + "verify/traces/ar-r1-turn38-turn43.jsonl": { + "mode": 420, + "sha256": "f8653cbd1956346816897b313031c5d70898144d1c84b1c849ac37bfe3bd993c" + }, + "verify/traces/ar-r2-control-turn38-turn39.jsonl": { + "mode": 420, + "sha256": "c1068652ddf54d2ff266c1dc1ef1e69ea663f5d2a83143408f77ec782b3dd988" + }, + "verify/traces/as-probes8-turn15-turn16.jsonl.gz": { + "mode": 420, + "sha256": "024bb0663b167eb364c8e138bae0bf10403860c195bd593cb56f60281060c4e8" + }, + "verify/traces/b2-final-menu.png": { + "mode": 420, + "sha256": "5a95fe260c9cb13dad5fc6f00460819107db93f4ac89f455077ad056600f83fd" + }, + "verify/traces/b2-shim.log": { + "mode": 420, + "sha256": "c31cf01af3659b7fdf008ff44f88f67ee4016dcfb30fc4a72b4d72ea0da8e404" + }, + "verify/traces/b2-techfx-compare.jsonl": { + "mode": 420, + "sha256": "f0202f45b276db6744c80768f12695153812bc882de688cf64705ed6a52f243c" + }, + "verify/traces/b2-techfx-golden.jsonl": { + "mode": 420, + "sha256": "43639e75bd9d510ed270c9cfcbb0c9665f5a6546f748ba81eba3f015e7ca233c" + }, + "verify/traces/cr-N.jsonl.gz": { + "mode": 420, + "sha256": "0071ae72a142533ffb91f9f04caa6704102c826761ff5ae24b57a1c3e9652e46" + }, + "verify/traces/cr-R0.jsonl.gz": { + "mode": 420, + "sha256": "6228c88cebb4dad2158e5586ecbcf71d1160116f2f4a2a8bc020658da8d7d706" + }, + "verify/traces/cr-R1.jsonl.gz": { + "mode": 420, + "sha256": "73f5f15b3343381cf3f973caaf74588fd3d0b6759de1ddcf9e12b9b3ebf29713" + }, + "verify/traces/eventlive-b3-t1-5.jsonl.gz": { + "mode": 420, + "sha256": "9cb344f1d8a3beb4bc1a2bf16baed6c38667443ead9f66fa0f53474a683d263c" + }, + "verify/traces/eventlive-b3-t1.jsonl": { + "mode": 420, + "sha256": "2d9962de9a7ea7fb28b33b72209706b4a27673096f71c8789f9f10ac465f387b" + }, + "verify/traces/eventlive-b3-zuul.jsonl.gz": { + "mode": 420, + "sha256": "0ee09bb884799e72c6a617ab02e741a7ba791ff458af439b9947a87b368a64de" + }, + "verify/traces/h-probes-human-perturbed-t3-5.jsonl.gz": { + "mode": 420, + "sha256": "2567f8ccb6276a4d647c4f4b88d14f7ae63aa4d1797f672a9bd9c7c86e4d7473" + }, + "verify/traces/h-probes-human-t5.jsonl.gz": { + "mode": 420, + "sha256": "92964779111573dc72e6a1845217cd7d709c9900594a106b3de7b59c2b7a88a7" + }, + "verify/traces/h-probes-zuul-t24-25.jsonl.gz": { + "mode": 420, + "sha256": "0966294af27b49159b1e72e683abc0b59fd52cc9bfd9f517130d30cedf7efa29" + }, + "verify/traces/l3-probe-turn8-turn15.jsonl": { + "mode": 420, + "sha256": "d1b5436f917bb4f6f74bd7b1967dbd0626db2c3a5cbc1d67684ef9f010826676" + }, + "verify/traces/m1-compare.jsonl": { + "mode": 420, + "sha256": "f0f6fd15bc73008e43e20d6ed4c4dd91fb2ec8b40935bfd3cc000d8a84ea6731" + }, + "verify/traces/m1-trace-golden.jsonl": { + "mode": 420, + "sha256": "4a4ddc031fb26a8f8b10dace297c73670f53dcbd250a9be94c0e31c9bb44dcc5" + }, + "verify/traces/mf-after-compare.jsonl": { + "mode": 420, + "sha256": "2a894892977176df1a9d6c8199b0f81b48c7bcac15d2c0e7786441fc6125226e" + }, + "verify/traces/mf-before-compare.jsonl": { + "mode": 420, + "sha256": "ee005097ebaac9f30c63f1e400fdf19a47e88010c71d215885234986d122410e" + }, + "verify/traces/output-ref-turn2.jsonl.gz": { + "mode": 420, + "sha256": "7af583350545501414eda38439f2d0fa39149342d9001d2926e2a4e4fdd5cdca" + }, + "verify/traces/output-zuul-and-ref.jsonl.gz": { + "mode": 420, + "sha256": "d581cb50f07766911fa59fa1df1524b33a9df6eec06226966efd5f54f09b6fb5" + }, + "verify/traces/recap-b1-compare.jsonl.gz": { + "mode": 420, + "sha256": "0ce1c92028a8cd10a38d7cca72f90c37ccbd844f24a1950bf0eb6e75739b44e2" + }, + "verify/traces/recap-b3-compare.jsonl": { + "mode": 420, + "sha256": "6ed3bcd99b4657d614bf63cc0fc2dfff650f4cb14e51086ea98c21bccbcf5fa8" + }, + "verify/traces/recap-golden-trace.jsonl.gz": { + "mode": 420, + "sha256": "d62431e9461ffb1b66adc16a39542b86fa8e0cf54a0ed446a8781c4d75a6c3bb" + }, + "verify/traces/recap-misc-compare.jsonl": { + "mode": 420, + "sha256": "d7c4446d45a9cab2af3da4a0d76f7a42c245da1f59db96fddf31d8b1f2c436ed" + }, + "verify/traces/tailrng-drawsites.jsonl.gz": { + "mode": 420, + "sha256": "5c1806e2b1452226674013119e3b220f3cf42be2ad8b0ed998050ad65d1f8415" + }, + "verify/traces/tailrng-refturn2.jsonl.gz": { + "mode": 420, + "sha256": "c33c6cafe015bda6acf5ca32b0c9595e1611f4ac82ecd3adaff8315c7bd3e560" + }, + "verify/traces/tailrng-zuul-long.jsonl.gz": { + "mode": 420, + "sha256": "213e7dd8a6809dd93190f41c87218e802f1fbe77d44d598f287c2a19544063af" + }, + "verify/traces/tailrng-zuul-noderoute.jsonl.gz": { + "mode": 420, + "sha256": "9476ee3b9b397ca9e20bc92eb887c109a075487cdd750746af051797e8838115" + }, + "verify/traces/unlock-b3-t1-5.jsonl.gz": { + "mode": 420, + "sha256": "f6e27a60bf6c74eb98d8bec50146fe1996642285ca008c6a70c3cb148c6ba54c" + }, + "verify/traces/unlock-b3-t1.jsonl.gz": { + "mode": 420, + "sha256": "bfa53bba3e59d17dd330e38ef52fd04fd92f05f3ad357fefd77388d083b49a05" + }, + "verify/traces/unlock-b3-zuul.jsonl.gz": { + "mode": 420, + "sha256": "d94c635105a75a68cb811a3881faf371678c075d240998f48fcf348b8459063f" + } + }, + "manifest_sha256": "e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9", + "path": "/tmp/opencode/sots-final-research-re" + } + }, + "started_at": "2026-09-10T13:12:38.944700+00:00", + "status": "complete", + "stderr": "campaign/runtime/runs/run-35e59053176da458d8b46fea.stderr.log", + "worktrees": { + "engine": "/tmp/opencode/sots-final-research-engine", + "re": "/tmp/opencode/sots-final-research-re" + } +} diff --git a/campaign/runtime/runs/run-35e59053176da458d8b46fea.jsonl b/campaign/runtime/runs/run-35e59053176da458d8b46fea.jsonl new file mode 100644 index 0000000..6524612 --- /dev/null +++ b/campaign/runtime/runs/run-35e59053176da458d8b46fea.jsonl @@ -0,0 +1,155 @@ +{"type":"step_start","timestamp":1789045963074,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b72f93d0018eJCnajANKQzQb","messageID":"msg_08b72ef84001tXsMCgz6vhlex1","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"5190c32c5a4fda5585a556496f830549b707dd85","type":"step-start"}} +{"type":"tool_use","timestamp":1789045968080,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"todowrite","callID":"call_VBsF20ZizE4S0avDkA2yd87Q","state":{"status":"completed","input":{"todos":[{"content":"Read canonical campaign state, contract, checkpoint, and open surprises","status":"in_progress","priority":"high"},{"content":"Verify worktree, source, and resource identities","status":"pending","priority":"high"},{"content":"Execute the checkpoint's exact next ABI research action within owned scope","status":"pending","priority":"high"},{"content":"Coordinate evidence package for independent falsification without delegation","status":"pending","priority":"medium"},{"content":"Write mandatory canonical campaign checkpoint and stop","status":"pending","priority":"high"}]},"output":"[\n {\n \"content\": \"Read canonical campaign state, contract, checkpoint, and open surprises\",\n \"status\": \"in_progress\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Verify worktree, source, and resource identities\",\n \"status\": \"pending\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Execute the checkpoint's exact next ABI research action within owned scope\",\n \"status\": \"pending\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Coordinate evidence package for independent falsification without delegation\",\n \"status\": \"pending\",\n \"priority\": \"medium\"\n },\n {\n \"content\": \"Write mandatory canonical campaign checkpoint and stop\",\n \"status\": \"pending\",\n \"priority\": \"high\"\n }\n]","metadata":{"todos":[{"content":"Read canonical campaign state, contract, checkpoint, and open surprises","status":"in_progress","priority":"high"},{"content":"Verify worktree, source, and resource identities","status":"pending","priority":"high"},{"content":"Execute the checkpoint's exact next ABI research action within owned scope","status":"pending","priority":"high"},{"content":"Coordinate evidence package for independent falsification without delegation","status":"pending","priority":"medium"},{"content":"Write mandatory canonical campaign checkpoint and stop","status":"pending","priority":"high"}],"truncated":false},"title":"5 todos","time":{"start":1789045968074,"end":1789045968077}},"metadata":{"openai":{"itemId":"fc_01993f4d44fbc17c016aa2accc724487d1bab218e6b88af09f"}},"id":"prt_08b72ff2a001u9iex5CoV92ZKq","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b72ef84001tXsMCgz6vhlex1"}} +{"type":"step_finish","timestamp":1789045968154,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b730d17001pWBxfCfD7tWUkK","reason":"tool-calls","snapshot":"c06250985600ffed33fa598276eecd83853003e7","messageID":"msg_08b72ef84001tXsMCgz6vhlex1","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":5956,"input":5799,"output":127,"reasoning":30,"cache":{"write":0,"read":0}},"cost":0}} +{"type":"step_start","timestamp":1789045976830,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b732efa001OzVc7g2RNy0wC9","messageID":"msg_08b730d440010UsuUUNxBvmF11","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"041cd1d60dc45899c975d6d85fa93c974c6bdecb","type":"step-start"}} +{"type":"tool_use","timestamp":1789045976907,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_aB333LQJsiD195WmmMT06US3","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/README.md"},"output":"/home/alex/sots-re/campaign/README.md\nfile\n\n1: # Canonical campaign controls\n2: \n3: `sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\n4: surprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\n5: projections. Historical evidence is not current acceptance. No automatic commits or lab operations.\n6: \n7: Framework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\n8: see [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\n9: Active work is reverse engineering. Change tooling only to unblock a named RE experiment.\n10: \n11: ## Contract format\n12: \n13: `contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\n14: The standard-library validator implements the schema's used subset. A populated example is\n15: [contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\n16: \n17: Required fields:\n18: \n19: | Field | Structure |\n20: |---|---|\n21: | `id`, `title`, `status` | Slug, short title, lifecycle state |\n22: | `owner` | `{ \"name\": \"worker-identity\", \"role\": \"implementer\" }` |\n23: | `baseline` | `{ \"engine\": {\"path\":\"/absolute/canonical/engine\",\"commit\":\"full-commit-id\"}, \"re\": {\"path\":\"/absolute/canonical/re\",\"commit\":\"full-commit-id\"} }` |\n24: | `scope`, `inputs`, `effects` | Arrays of explicit nonempty strings; include full write set and runtime inputs |\n25: | `original_dependencies` | String array, including original-assisted portions and unavailable inputs |\n26: | `dependencies` | Array of other contract IDs; all must be accepted before ready/implementing |\n27: | `acceptance` | Array of `{ \"id\": \"unique-criterion\", \"axis\": \"validation-scope\", \"criterion\": \"executable requirement\" }` |\n28: | `predictions`, `stop_conditions` | String arrays of predictions and conditions that halt work |\n29: | `checkpoint` | `null` or `campaign/runtime/checkpoints/.json` |\n30: \n31: Optional `evidence` is an array of\n32: `{id,axis,path,sha256,source,integrated,source_binding,binaries,inputs,outcomes}`.\n33: `path` is an existing canonical RE-relative artifact; `sha256` hashes its actual bytes; `source`\n34: equals the contract's complete baseline object. Store understanding,\n35: implementation, original dependencies, and validation scope as separate acceptance/evidence axes.\n36: There is no generic `verified` scalar. Baseline commit IDs describe starting repositories;\n37: dirty source identity is machine-bound by `source_binding`, never inferred from those commits.\n38: Criteria need distinct states, branch exposure, positive execution, complete writes/elements,\n39: allocations/IDs/events/RNG/runtime inputs, synthetic and original-game differentials as applicable.\n40: The CLI checks package identity and declared axes; the independent reviewer evaluates the actual\n41: criteria, gate outcomes, full manifests and integrated reproduction. A passing measurement alone\n42: does not establish acceptance.\n43: \n44: ### Source-bound evidence interface (R4)\n45: \n46: `source_binding` is `{engine:{path,commit,sha256},re:{path,commit,sha256}}`. Generate it with:\n47: \n48: ```sh\n49: python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-replacement --engine-worktree /absolute/candidate-engine --re-worktree /absolute/candidate-re\n50: ```\n51: \n52: Omit both worktree arguments to bind the canonical integrated trees. Paths must be Git worktree\n53: roots in the respective baseline repositories. `commit` is the actual current HEAD; `sha256`\n54: is the deterministic digest of the actual file manifest, including dirty/untracked nonignored\n55: files, deleted tracked paths (`null`), file bytes and Unix modes. Symlinks/submodules fail closed.\n56: The fixed manifest policy uses `git ls-files --cached --others --exclude-standard`; ignored\n57: untracked build/output files are not source. Python cache directories are excluded. In RE only,\n58: `verify/results/` and `campaign/` are excluded **except** `campaign/models.json`,\n59: `campaign/contract.schema.json`, and `campaign/agents/**`. These exclusions prevent mutable\n60: contracts/checkpoints/evidence/projections from hashing themselves. Relevant RE tools, tests,\n61: generated facts and guides remain bound. Any consumed item outside that source inventory must\n62: appear among immutable input/binary artifacts. The independent reviewer checks inventory adequacy.\n63: \n64: `binaries` and `inputs` are nonempty arrays of `{path,sha256}` artifact references; for tooling\n65: contracts, bind the executable scripts/interpreter identity package and fixture input package.\n66: `outcomes` exactly covers the acceptance criterion IDs for that evidence axis, with entries\n67: `{criterion,status,artifact:{path,sha256}}`; promotion requires `status: \"pass\"`. Outcome artifacts\n68: contain positive execution, branch/state exposures, reproduction recipe and required effect/input\n69: accounting. The CLI checks identities, hashes and declared outcomes, **not arbitrary criterion\n70: semantics**. The independent verifier must reproduce and challenge those claims.\n71: \n72: For example, an outcome for the bootstrap contract is:\n73: \n74: ```json\n75: {\"criterion\":\"controls-negative-paths\",\"status\":\"pass\",\"artifact\":{\"path\":\"verify/results/controls/result.json\",\"sha256\":\"\"}}\n76: ```\n77: \n78: Capture bindings when producing evidence; do not attach a fresh source hash to old measurements.\n79: Every evidence/verdict/promotion check rehashes referenced sources and artifacts. Same-HEAD byte\n80: changes reject old evidence and verdicts. Integrated records require canonical paths, lead in\n81: integration state, and one identical binding across **all** final integrated evidence. A lead's\n82: `integrated` boolean cannot substitute for this check. Verdicts bind the full evidence array and\n83: the source-binding array; old verdicts lacking these identities must be reproduced.\n84: \n85: This contract wrapper is separate from gate measurement schema **`sots-gate/1`**, whose `source`\n86: still has `engine`/`re`. Reference its immutable manifest/binary/input package; do not rename its\n87: fields to match contract `source`. Reporter output is measured evidence, with `--require-match`\n88: for required equality, and gains acceptance only through independent contract/integration gates.\n89: \n90: ## State and transactions\n91: \n92: Every command requires `--state-root /absolute/canonical/sots-re` (the repository, not `campaign/`).\n93: No sibling inference. Control records stay below canonical `campaign/runtime/`; contracts remain\n94: in `campaign/contracts/`. Immutable hashed artifacts may be referenced anywhere inside canonical\n95: RE, including existing `verify/` corpora, without copying them. Absolute/traversing artifact paths,\n96: outside symlinks, Git internals and named secret/private-key locations are rejected; aliases are\n97: checked after resolution too. Never reference secrets or commit owner-supplied binaries/assets.\n98: JSON writes are atomic and fsynced; a canonical `flock` serializes\n99: CLI mutations, WIP decisions, and resource acquisition. Do not hand-edit active state concurrently\n100: with commands. Interrupted multi-file operations retain blocking records and require inspection.\n101: \n102: Runtime APIs (JSON files; no server):\n103: \n104: - `runtime/checkpoints/*.json`: `sots-checkpoint/1`, contract, actor/role/model/session, timestamp,\n105: contract `basis` digest, bounded summary (6000 characters), up to 32 `{path,sha256}` artifacts,\n106: and one `next_action` (2000 characters). Include observations versus decisions, source identities,\n107: tests, blockers, resources/access/cleanup, exact next action in the summary/artifacts.\n108: Do not attach the checkpoint's own contract as an artifact: saving the pointer changes that\n109: file. Its task metadata is already covered by `basis`; the CLI rejects this self-reference.\n110: - `runtime/surprises/*.json`: `sots-surprise/1`, id, contract, `status: open|resolved`, summary,\n111: discriminating probe, actor/model/session provenance where applicable, optional decision ID.\n112: - `runtime/decisions/*.json`: `sots-decision/1`, Astra resolution, explanation/probe, invalidated\n113: evidence and checkpoint; prior verdict is marked invalidated. Resolution returns needs-revision\n114: only when all surprises are closed. Re-probe and rebuild evidence; resolution is not acceptance.\n115: - `runtime/verdicts/.json`: independent verifier actor/session/model, pass/fail,\n116: explanation, contract basis, complete evidence digest and source-bindings digest.\n117: - `runtime/transitions/*.json`: actor/model, previous/next lifecycle state, timestamp.\n118: - `runtime/leases/.json`: owner, random token, held/released, acquisition/release provenance.\n119: - `runtime/runs/run-*.json`, `.jsonl`, `.stderr.log`: requested model/config, command, worktree\n120: manifests before/after, expanded prompt hash, effective configuration hashes, canonical config\n121: file hashes, actual events/session/model when emitted, completion/checkpoint status. Effective\n122: provider config is hashed rather than persisted because it can contain credentials.\n123: `active-.json` reserves the contract. Interrupted running reservations never auto-expire.\n124: \n125: Lifecycle: `proposed -> ready -> implementing -> verification -> integration -> accepted`.\n126: Blocked and needs-revision edges support repairs; no skipping stages. Ready requires scope,\n127: inputs, acceptance, stop conditions, valid pinned baseline and accepted dependencies. Implementing\n128: is atomically capped at two concurrent contracts; lead schedules only one pilot before enabling\n129: two independent slices. Verification requires fresh checkpoint/artifacts after implementation start.\n130: Integration requires lead plus independent passing verifier bound to current source/evidence.\n131: Accepted requires every declared axis in integrated evidence, passing independent verdict over\n132: that final package, and no open surprises. Adding integrated evidence changes the evidence digest:\n133: the verifier must attest the integrated package again. Handoff/promotion/end checkpoints must be\n134: within 15 minutes; recovery start has no age limit.\n135: \n136: Role/model registry: lead/architecture-review/analyst/implementer/verifier/lab =\n137: `openai/gpt-5.6-sol`; resolver = `openai/gpt-6-astra`.\n138: CLI identity fields are **claims, not authenticated model authority**. The runner requests the\n139: registry model explicitly and records emitted provenance. Editable JSON, agent permissions and\n140: shell-accessible tooling are not a security boundary. No silent routing fallback.\n141: \n142: ## Commands\n143: \n144: Run from either repository using the canonical tool path when necessary. Examples:\n145: \n146: ```sh\n147: python3 tools/campaign.py --state-root /home/alex/sots-re validate\n148: python3 tools/campaign.py --state-root /home/alex/sots-re list\n149: python3 tools/campaign.py --state-root /home/alex/sots-re status research-replacement\n150: python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint controls-bootstrap --actor controls-architect --role architecture-review --model openai/gpt-6-astra --session rollout-controls --summary 'Source identities, observations, decisions, tests and blockers are in the attached checkpoint.' --artifact campaign/rollout/controls-worker-state.md --next-action 'Run the independent controls review.'\n151: python3 tools/campaign.py --state-root /home/alex/sots-re transition controls-bootstrap ready --actor controls-architect --role architecture-review --model openai/gpt-6-astra\n152: ```\n153: \n154: `surprise CONTRACT --summary TEXT --probe TEXT` blocks immediately. `resolve SURPRISE_ID\n155: --explanation TEXT --probe TEXT` requires claimed Astra lead/resolver. Both also require\n156: `--actor NAME --role ROLE --model MODEL`. `evidence CONTRACT --record campaign/path.json`\n157: uses the same identity flags; record format is the evidence object above. Integrated records\n158: require lead and integration state. `verdict CONTRACT --session SESSION --verdict pass|fail\n159: --explanation TEXT` requires verifier identity flags and independent actor/session.\n160: \n161: ```sh\n162: python3 tools/campaign.py --state-root /home/alex/sots-re lease acquire windows-vm --actor lab-one --role lab --model openai/gpt-5.5\n163: python3 tools/campaign.py --state-root /home/alex/sots-re lease show windows-vm\n164: python3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lab-one --role lab --model openai/gpt-5.5 --token TOKEN_FROM_ACQUIRE\n165: python3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lead --role lead --model openai/gpt-6-astra --lead-release --reason 'Confirmed prior operator stopped; access and cleanup checked.'\n166: ```\n167: \n168: No stale lease stealing. Explicit lead release requires an explanation and lab preconditions,\n169: side effects, cleanup, and access verification in the operator checkpoint. Treat lease tokens\n170: as local owner capabilities, not secrets to put in a board/dashboard.\n171: \n172: ## Fresh bounded launches\n173: \n174: Prepare **two actual linked worktrees**, each distinct from its canonical source repository,\n175: at the contract's full baseline commit. No auto commits/worktree creation. Launch uses explicit\n176: canonical `OPENCODE_CONFIG`, checks matching repo-local agent/model/40 steps, and sets the final\n177: environment overlay to bind requested role/model/steps. Other inherited config overrides are\n178: cleared. `opencode models` must list the exact requested model even for dry runs.\n179: \n180: ```sh\n181: python3 tools/run_agent.py --state-root /home/alex/sots-re --role implementer --actor worker-one --contract slice-one --engine-worktree /home/alex/worktrees/slice-one-engine --re-worktree /home/alex/worktrees/slice-one-re --cwd engine --dry-run\n182: ```\n183: \n184: Remove `--dry-run` to execute. Normal worker launch requires a valid durable checkpoint, matching\n185: owner/role/status, no open surprises, baseline HEADs and canonical Git common-directory identity.\n186: Recovery checks checkpoint identity/basis and artifact hashes regardless of age, rechecks any\n187: source-bound evidence, and validates paired Git worktree/baseline identity. Missing ordinary-worker\n188: state still blocks. Bootstrap lead/architecture-review can start without a checkpoint; they still\n189: need paired worktrees. Astra lead/resolver may launch a blocked contract with open surprises and\n190: without a worker checkpoint in **resolution-only** scope: read evidence and write decisions/state,\n191: no implementation. Its prompt and permission overlay carry that limit, and worktree source changes\n192: fail completion. Ordinary affected workers stay blocked. Other Astra architecture actors receive\n193: explicit architecture authority within their owned scope. Each run is a fresh\n194: `opencode run --format json --model ... --agent ...`; no resume/continue option is used. The prompt\n195: supplies the run ID to use as checkpoint `--session`; actual OpenCode session IDs are captured\n196: separately when emitted. On exit, a checkpoint after start matching actor/role/model/run ID is\n197: mandatory or the run is marked incomplete. Completion additionally requires a zero exit, no\n198: `type:error`, a successful `step_finish` with `part.reason: \"stop\"`, one nonempty actual session ID,\n199: and consistent explicitly emitted model IDs. Text/tool-call/length events alone cannot complete a\n200: run. Missing model emission is recorded `observed_model_status: \"unavailable\"`, never invented.\n201: \n202: The runner checks the exact Git baseline again under reservation lock, rejects intervening contract\n203: changes, and checks canonical model/prompt/config files and effective configuration for drift at\n204: completion. Expanded role prompt/model/steps are frozen in the last-layer environment overlay.\n205: `opencode debug config` runs in the actual launch cwd with the actual environment before execution\n206: and again at completion. Permissions explicitly allow read/search, ordinary worker shell commands,\n207: and external-directory access to the assigned paired trees plus canonical RE; role-specific edit\n208: denies survive. Task delegation and interactive questions are denied. No `--auto` is required.\n209: Noninteractive command/environment tests and a live loader check cover this overlay; an actual\n210: normal worker launch smoke is a separate lead integration check. Permissions and before/after\n211: checks are operational guards, not a sandbox or continuous filesystem audit.\n212: Compaction is a backstop; no token threshold or machine-enforced 20-tool-call claim.\n213: \n214: ## Local verification\n215: \n216: ```sh\n217: python3 -m unittest discover -s verify/campaign -p 'test_*.py' -v\n218: python3 tools/campaign.py --state-root /home/alex/sots-re validate\n219: ```\n220: \n221: Tests create commits only in disposable fixture repositories, linked worktrees and fake OpenCode processes; they do\n222: not launch agents or touch the lab. Historical rollout artifacts retain the scope and source identity\n223: of their runs; consult the accepted contract and current evidence, not an old handoff's status prose.\n\n(End of file - total 223 lines)\n","metadata":{"preview":"# Canonical campaign controls\n\n`sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\nsurprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\nprojections. Historical evidence is not current acceptance. No automatic commits or lab operations.\n\nFramework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\nsee [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\nActive work is reverse engineering. Change tooling only to unblock a named RE experiment.\n\n## Contract format\n\n`contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\nThe standard-library validator implements the schema's used subset. A populated example is\n[contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\n\nRequired fields:\n\n| Field | Structure |\n|---|---|","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/README.md","text":"# Canonical campaign controls\n\n`sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\nsurprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\nprojections. Historical evidence is not current acceptance. No automatic commits or lab operations.\n\nFramework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\nsee [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\nActive work is reverse engineering. Change tooling only to unblock a named RE experiment.\n\n## Contract format\n\n`contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\nThe standard-library validator implements the schema's used subset. A populated example is\n[contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\n\nRequired fields:\n\n| Field | Structure |\n|---|---|\n| `id`, `title`, `status` | Slug, short title, lifecycle state |\n| `owner` | `{ \"name\": \"worker-identity\", \"role\": \"implementer\" }` |\n| `baseline` | `{ \"engine\": {\"path\":\"/absolute/canonical/engine\",\"commit\":\"full-commit-id\"}, \"re\": {\"path\":\"/absolute/canonical/re\",\"commit\":\"full-commit-id\"} }` |\n| `scope`, `inputs`, `effects` | Arrays of explicit nonempty strings; include full write set and runtime inputs |\n| `original_dependencies` | String array, including original-assisted portions and unavailable inputs |\n| `dependencies` | Array of other contract IDs; all must be accepted before ready/implementing |\n| `acceptance` | Array of `{ \"id\": \"unique-criterion\", \"axis\": \"validation-scope\", \"criterion\": \"executable requirement\" }` |\n| `predictions`, `stop_conditions` | String arrays of predictions and conditions that halt work |\n| `checkpoint` | `null` or `campaign/runtime/checkpoints/.json` |\n\nOptional `evidence` is an array of\n`{id,axis,path,sha256,source,integrated,source_binding,binaries,inputs,outcomes}`.\n`path` is an existing canonical RE-relative artifact; `sha256` hashes its actual bytes; `source`\nequals the contract's complete baseline object. Store understanding,\nimplementation, original dependencies, and validation scope as separate acceptance/evidence axes.\nThere is no generic `verified` scalar. Baseline commit IDs describe starting repositories;\ndirty source identity is machine-bound by `source_binding`, never inferred from those commits.\nCriteria need distinct states, branch exposure, positive execution, complete writes/elements,\nallocations/IDs/events/RNG/runtime inputs, synthetic and original-game differentials as applicable.\nThe CLI checks package identity and declared axes; the independent reviewer evaluates the actual\ncriteria, gate outcomes, full manifests and integrated reproduction. A passing measurement alone\ndoes not establish acceptance.\n\n### Source-bound evidence interface (R4)\n\n`source_binding` is `{engine:{path,commit,sha256},re:{path,commit,sha256}}`. Generate it with:\n\n```sh\npython3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-replacement --engine-worktree /absolute/candidate-engine --re-worktree /absolute/candidate-re\n```\n\nOmit both worktree arguments to bind the canonical integrated trees. Paths must be Git worktree\nroots in the respective baseline repositories. `commit` is the actual current HEAD; `sha256`\nis the deterministic digest of the actual file manifest, including dirty/untracked nonignored\nfiles, deleted tracked paths (`null`), file bytes and Unix modes. Symlinks/submodules fail closed.\nThe fixed manifest policy uses `git ls-files --cached --others --exclude-standard`; ignored\nuntracked build/output files are not source. Python cache directories are excluded. In RE only,\n`verify/results/` and `campaign/` are excluded **except** `campaign/models.json`,\n`campaign/contract.schema.json`, and `campaign/agents/**`. These exclusions prevent mutable\ncontracts/checkpoints/evidence/projections from hashing themselves. Relevant RE tools, tests,\ngenerated facts and guides remain bound. Any consumed item outside that source inventory must\nappear among immutable input/binary artifacts. The independent reviewer checks inventory adequacy.\n\n`binaries` and `inputs` are nonempty arrays of `{path,sha256}` artifact references; for tooling\ncontracts, bind the executable scripts/interpreter identity package and fixture input package.\n`outcomes` exactly covers the acceptance criterion IDs for that evidence axis, with entries\n`{criterion,status,artifact:{path,sha256}}`; promotion requires `status: \"pass\"`. Outcome artifacts\ncontain positive execution, branch/state exposures, reproduction recipe and required effect/input\naccounting. The CLI checks identities, hashes and declared outcomes, **not arbitrary criterion\nsemantics**. The independent verifier must reproduce and challenge those claims.\n\nFor example, an outcome for the bootstrap contract is:\n\n```json\n{\"criterion\":\"controls-negative-paths\",\"status\":\"pass\",\"artifact\":{\"path\":\"verify/results/controls/result.json\",\"sha256\":\"\"}}\n```\n\nCapture bindings when producing evidence; do not attach a fresh source hash to old measurements.\nEvery evidence/verdict/promotion check rehashes referenced sources and artifacts. Same-HEAD byte\nchanges reject old evidence and verdicts. Integrated records require canonical paths, lead in\nintegration state, and one identical binding across **all** final integrated evidence. A lead's\n`integrated` boolean cannot substitute for this check. Verdicts bind the full evidence array and\nthe source-binding array; old verdicts lacking these identities must be reproduced.\n\nThis contract wrapper is separate from gate measurement schema **`sots-gate/1`**, whose `source`\nstill has `engine`/`re`. Reference its immutable manifest/binary/input package; do not rename its\nfields to match contract `source`. Reporter output is measured evidence, with `--require-match`\nfor required equality, and gains acceptance only through independent contract/integration gates.\n\n## State and transactions\n\nEvery command requires `--state-root /absolute/canonical/sots-re` (the repository, not `campaign/`).\nNo sibling inference. Control records stay below canonical `campaign/runtime/`; contracts remain\nin `campaign/contracts/`. Immutable hashed artifacts may be referenced anywhere inside canonical\nRE, including existing `verify/` corpora, without copying them. Absolute/traversing artifact paths,\noutside symlinks, Git internals and named secret/private-key locations are rejected; aliases are\nchecked after resolution too. Never reference secrets or commit owner-supplied binaries/assets.\nJSON writes are atomic and fsynced; a canonical `flock` serializes\nCLI mutations, WIP decisions, and resource acquisition. Do not hand-edit active state concurrently\nwith commands. Interrupted multi-file operations retain blocking records and require inspection.\n\nRuntime APIs (JSON files; no server):\n\n- `runtime/checkpoints/*.json`: `sots-checkpoint/1`, contract, actor/role/model/session, timestamp,\n contract `basis` digest, bounded summary (6000 characters), up to 32 `{path,sha256}` artifacts,\n and one `next_action` (2000 characters). Include observations versus decisions, source identities,\n tests, blockers, resources/access/cleanup, exact next action in the summary/artifacts.\n Do not attach the checkpoint's own contract as an artifact: saving the pointer changes that\n file. Its task metadata is already covered by `basis`; the CLI rejects this self-reference.\n- `runtime/surprises/*.json`: `sots-surprise/1`, id, contract, `status: open|resolved`, summary,\n discriminating probe, actor/model/session provenance where applicable, optional decision ID.\n- `runtime/decisions/*.json`: `sots-decision/1`, Astra resolution, explanation/probe, invalidated\n evidence and checkpoint; prior verdict is marked invalidated. Resolution returns needs-revision\n only when all surprises are closed. Re-probe and rebuild evidence; resolution is not acceptance.\n- `runtime/verdicts/.json`: independent verifier actor/session/model, pass/fail,\n explanation, contract basis, complete evidence digest and source-bindings digest.\n- `runtime/transitions/*.json`: actor/model, previous/next lifecycle state, timestamp.\n- `runtime/leases/.json`: owner, random token, held/released, acquisition/release provenance.\n- `runtime/runs/run-*.json`, `.jsonl`, `.stderr.log`: requested model/config, command, worktree\n manifests before/after, expanded prompt hash, effective configuration hashes, canonical config\n file hashes, actual events/session/model when emitted, completion/checkpoint status. Effective\n provider config is hashed rather than persisted because it can contain credentials.\n `active-.json` reserves the contract. Interrupted running reservations never auto-expire.\n\nLifecycle: `proposed -> ready -> implementing -> verification -> integration -> accepted`.\nBlocked and needs-revision edges support repairs; no skipping stages. Ready requires scope,\ninputs, acceptance, stop conditions, valid pinned baseline and accepted dependencies. Implementing\nis atomically capped at two concurrent contracts; lead schedules only one pilot before enabling\ntwo independent slices. Verification requires fresh checkpoint/artifacts after implementation start.\nIntegration requires lead plus independent passing verifier bound to current source/evidence.\nAccepted requires every declared axis in integrated evidence, passing independent verdict over\nthat final package, and no open surprises. Adding integrated evidence changes the evidence digest:\nthe verifier must attest the integrated package again. Handoff/promotion/end checkpoints must be\nwithin 15 minutes; recovery start has no age limit.\n\nRole/model registry: lead/architecture-review/analyst/implementer/verifier/lab =\n`openai/gpt-5.6-sol`; resolver = `openai/gpt-6-astra`.\nCLI identity fields are **claims, not authenticated model authority**. The runner requests the\nregistry model explicitly and records emitted provenance. Editable JSON, agent permissions and\nshell-accessible tooling are not a security boundary. No silent routing fallback.\n\n## Commands\n\nRun from either repository using the canonical tool path when necessary. Examples:\n\n```sh\npython3 tools/campaign.py --state-root /home/alex/sots-re validate\npython3 tools/campaign.py --state-root /home/alex/sots-re list\npython3 tools/campaign.py --state-root /home/alex/sots-re status research-replacement\npython3 tools/campaign.py --state-root /home/alex/sots-re checkpoint controls-bootstrap --actor controls-architect --role architecture-review --model openai/gpt-6-astra --session rollout-controls --summary 'Source identities, observations, decisions, tests and blockers are in the attached checkpoint.' --artifact campaign/rollout/controls-worker-state.md --next-action 'Run the independent controls review.'\npython3 tools/campaign.py --state-root /home/alex/sots-re transition controls-bootstrap ready --actor controls-architect --role architecture-review --model openai/gpt-6-astra\n```\n\n`surprise CONTRACT --summary TEXT --probe TEXT` blocks immediately. `resolve SURPRISE_ID\n--explanation TEXT --probe TEXT` requires claimed Astra lead/resolver. Both also require\n`--actor NAME --role ROLE --model MODEL`. `evidence CONTRACT --record campaign/path.json`\nuses the same identity flags; record format is the evidence object above. Integrated records\nrequire lead and integration state. `verdict CONTRACT --session SESSION --verdict pass|fail\n--explanation TEXT` requires verifier identity flags and independent actor/session.\n\n```sh\npython3 tools/campaign.py --state-root /home/alex/sots-re lease acquire windows-vm --actor lab-one --role lab --model openai/gpt-5.5\npython3 tools/campaign.py --state-root /home/alex/sots-re lease show windows-vm\npython3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lab-one --role lab --model openai/gpt-5.5 --token TOKEN_FROM_ACQUIRE\npython3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lead --role lead --model openai/gpt-6-astra --lead-release --reason 'Confirmed prior operator stopped; access and cleanup checked.'\n```\n\nNo stale lease stealing. Explicit lead release requires an explanation and lab preconditions,\nside effects, cleanup, and access verification in the operator checkpoint. Treat lease tokens\nas local owner capabilities, not secrets to put in a board/dashboard.\n\n## Fresh bounded launches\n\nPrepare **two actual linked worktrees**, each distinct from its canonical source repository,\nat the contract's full baseline commit. No auto commits/worktree creation. Launch uses explicit\ncanonical `OPENCODE_CONFIG`, checks matching repo-local agent/model/40 steps, and sets the final\nenvironment overlay to bind requested role/model/steps. Other inherited config overrides are\ncleared. `opencode models` must list the exact requested model even for dry runs.\n\n```sh\npython3 tools/run_agent.py --state-root /home/alex/sots-re --role implementer --actor worker-one --contract slice-one --engine-worktree /home/alex/worktrees/slice-one-engine --re-worktree /home/alex/worktrees/slice-one-re --cwd engine --dry-run\n```\n\nRemove `--dry-run` to execute. Normal worker launch requires a valid durable checkpoint, matching\nowner/role/status, no open surprises, baseline HEADs and canonical Git common-directory identity.\nRecovery checks checkpoint identity/basis and artifact hashes regardless of age, rechecks any\nsource-bound evidence, and validates paired Git worktree/baseline identity. Missing ordinary-worker\nstate still blocks. Bootstrap lead/architecture-review can start without a checkpoint; they still\nneed paired worktrees. Astra lead/resolver may launch a blocked contract with open surprises and\nwithout a worker checkpoint in **resolution-only** scope: read evidence and write decisions/state,\nno implementation. Its prompt and permission overlay carry that limit, and worktree source changes\nfail completion. Ordinary affected workers stay blocked. Other Astra architecture actors receive\nexplicit architecture authority within their owned scope. Each run is a fresh\n`opencode run --format json --model ... --agent ...`; no resume/continue option is used. The prompt\nsupplies the run ID to use as checkpoint `--session`; actual OpenCode session IDs are captured\nseparately when emitted. On exit, a checkpoint after start matching actor/role/model/run ID is\nmandatory or the run is marked incomplete. Completion additionally requires a zero exit, no\n`type:error`, a successful `step_finish` with `part.reason: \"stop\"`, one nonempty actual session ID,\nand consistent explicitly emitted model IDs. Text/tool-call/length events alone cannot complete a\nrun. Missing model emission is recorded `observed_model_status: \"unavailable\"`, never invented.\n\nThe runner checks the exact Git baseline again under reservation lock, rejects intervening contract\nchanges, and checks canonical model/prompt/config files and effective configuration for drift at\ncompletion. Expanded role prompt/model/steps are frozen in the last-layer environment overlay.\n`opencode debug config` runs in the actual launch cwd with the actual environment before execution\nand again at completion. Permissions explicitly allow read/search, ordinary worker shell commands,\nand external-directory access to the assigned paired trees plus canonical RE; role-specific edit\ndenies survive. Task delegation and interactive questions are denied. No `--auto` is required.\nNoninteractive command/environment tests and a live loader check cover this overlay; an actual\nnormal worker launch smoke is a separate lead integration check. Permissions and before/after\nchecks are operational guards, not a sandbox or continuous filesystem audit.\nCompaction is a backstop; no token threshold or machine-enforced 20-tool-call claim.\n\n## Local verification\n\n```sh\npython3 -m unittest discover -s verify/campaign -p 'test_*.py' -v\npython3 tools/campaign.py --state-root /home/alex/sots-re validate\n```\n\nTests create commits only in disposable fixture repositories, linked worktrees and fake OpenCode processes; they do\nnot launch agents or touch the lab. Historical rollout artifacts retain the scope and source identity\nof their runs; consult the accepted contract and current evidence, not an old handoff's status prose.","lineStart":1,"lineEnd":223,"totalLines":223,"truncated":false}},"title":"campaign/README.md","time":{"start":1789045976887,"end":1789045976904}},"metadata":{"openai":{"itemId":"fc_0214bc563f960d2f016aa2acd8a15487d187ef329c5122ea45"}},"id":"prt_08b732efd001OsIbX1pXcNIoQz","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b730d440010UsuUUNxBvmF11"}} +{"type":"tool_use","timestamp":1789045976925,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_XIPPIzrS1rxWDchtAV9lDtJs","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/contracts/research-completion-abi.json"},"output":"/home/alex/sots-re/campaign/contracts/research-completion-abi.json\nfile\n\n1: {\n2: \"acceptance\": [\n3: {\n4: \"axis\": \"static-recovery\",\n5: \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n6: \"id\": \"ownership-recovered\"\n7: },\n8: {\n9: \"axis\": \"validation\",\n10: \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n11: \"id\": \"independent-cross-check\"\n12: }\n13: ],\n14: \"baseline\": {\n15: \"engine\": {\n16: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n17: \"path\": \"/home/alex/sots-engine\"\n18: },\n19: \"re\": {\n20: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n21: \"path\": \"/home/alex/sots-re\"\n22: }\n23: },\n24: \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-c80088956234568ade0a27fb.json\",\n25: \"dependencies\": [\n26: \"controls-bootstrap\"\n27: ],\n28: \"effects\": [\n29: \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n30: ],\n31: \"evidence\": [],\n32: \"id\": \"research-completion-abi\",\n33: \"inputs\": [\n34: \"Existing binary fingerprint/address contract and private RE findings\",\n35: \"Owner-supplied binary or live read-only ReVa endpoint\",\n36: \"Archived CR traces/saves for observed behavior\",\n37: \"Source-identical current engine/RE worktree snapshots\"\n38: ],\n39: \"original_dependencies\": [\n40: \"Original binary is the object of analysis, not a replacement dependency decision\"\n41: ],\n42: \"owner\": {\n43: \"name\": \"research-abi-analyst\",\n44: \"role\": \"analyst\"\n45: },\n46: \"predictions\": [\n47: \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n48: \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n49: ],\n50: \"scope\": [\n51: \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n52: \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n53: \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n54: \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n55: \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n56: ],\n57: \"status\": \"needs-revision\",\n58: \"stop_conditions\": [\n59: \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n60: \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n61: \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n62: ],\n63: \"title\": \"RE: research completion record construction and allocator ABI\"\n64: }\n\n(End of file - total 64 lines)\n","metadata":{"preview":"{\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/contracts/research-completion-abi.json","text":"{\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-c80088956234568ade0a27fb.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"needs-revision\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n}","lineStart":1,"lineEnd":64,"totalLines":64,"truncated":false}},"title":"campaign/contracts/research-completion-abi.json","time":{"start":1789045976910,"end":1789045976923}},"metadata":{"openai":{"itemId":"fc_0214bc563f960d2f016aa2acd8a17887d1918dfa31d15c63e6"}},"id":"prt_08b732f39001s0A3Ao2mxnSbA7","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b730d440010UsuUUNxBvmF11"}} +{"type":"tool_use","timestamp":1789045976958,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_bJjnIgXHC9yZVCOOplN5M4Jc","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-c80088956234568ade0a27fb.json"},"output":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-c80088956234568ade0a27fb.json\nfile\n\n1: {\n2: \"actor\": \"research-problem-resolver\",\n3: \"artifacts\": [\n4: {\n5: \"path\": \"campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json\",\n6: \"sha256\": \"c29e4ce1525f5c06efb87e7454661987026b358e5d9e0d6480df1b6956f19a42\"\n7: },\n8: {\n9: \"path\": \"campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json\",\n10: \"sha256\": \"c94914d5be47b93eac301e745b53ed7b1f008744a0ac90681fefc9c4f7a11327\"\n11: },\n12: {\n13: \"path\": \"campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\",\n14: \"sha256\": \"a2e6f0eaf0c2ba2d8a6a0edea74615d0f90ff9202c28811877b09961a265fb94\"\n15: },\n16: {\n17: \"path\": \"campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json\",\n18: \"sha256\": \"510219b4269311df86f9abe068131efdf3000dbf7757ff9d2c0ef5565001b5fc\"\n19: },\n20: {\n21: \"path\": \"campaign/runtime/runs/run-9daf5c3b75547271d5c3b4ed.json\",\n22: \"sha256\": \"f0e9a8f47d7d31b873d348606800f20609f935c56b3da93f4478a39e4e10447b\"\n23: },\n24: {\n25: \"path\": \"campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json\",\n26: \"sha256\": \"a3452db76124adf1d5ad3ed4593845b589068ba2d83ce5633b9b1792b17bf1db\"\n27: },\n28: {\n29: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n30: \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n31: },\n32: {\n33: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n34: \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n35: },\n36: {\n37: \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n38: \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n39: }\n40: ],\n41: \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n42: \"contract\": \"research-completion-abi\",\n43: \"id\": \"c80088956234568ade0a27fb\",\n44: \"model\": \"openai/gpt-6-astra\",\n45: \"next_action\": \"Lead perform the read-only current paired source-binding and consumed-tool/input preflight specified in d-e9d6d48cd77538556d1a1c1f, recording its result and missing-test disposition before scheduling revised independent static reproduction; do not restore source, reuse old binding or authorize lab work.\",\n46: \"role\": \"resolver\",\n47: \"schema\": \"sots-checkpoint/1\",\n48: \"session\": \"run-481c9379a1efc0e527d2a28c\",\n49: \"summary\": \"END bounded resolution-only quantum. OBSERVATIONS: assigned roots /tmp/opencode/sots-final-research-engine and /tmp/opencode/sots-final-research-re have common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git, HEADs 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Both preexisting dirty; no source changes this session. Current launch runner engine digest ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged; RE e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 versus historical analyst/verifier runner b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4. These runner hashes are NOT campaign-binding domain; old campaign binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 must not be directly equated to them. Complete verifier-to-current git diff identifies ten included byte-changed control/config paths and removed verify/campaign/test_controls.py, plus excluded campaign/housekeeping inventory deltas, all enumerated in decision. No added or mode-only differences. Historical analyst before/after runner digests match verifier. A second whole-run diff against prior completed resolver produced redundant source_after removal and was truncated; it is not used to claim a full fieldwise comparison. Current campaign source-binding was NOT computed (resolver allowlist lacks that command). Canonical binary/tool/save files NOT freshly rehashed or executed. Archived analyst manifest records binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd and twelve positive static commands only. Read raw authority ret bytes and verifier plan; repaired boundary remains unexecuted. DECISION d-e9d6d48cd77538556d1a1c1f resolves source surprise with new-source remeasurement, not restoration/relabeling. Qualified prior unlike-digest comparison; actual source drift survives. Hi... (line truncated to 2000 chars)\n50: \"timestamp\": \"2026-09-10T13:11:37.323815+00:00\"\n51: }\n\n(End of file - total 51 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-problem-resolver\",\n \"artifacts\": [\n {\n \"path\": \"campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json\",\n \"sha256\": \"c29e4ce1525f5c06efb87e7454661987026b358e5d9e0d6480df1b6956f19a42\"\n },\n {\n \"path\": \"campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json\",\n \"sha256\": \"c94914d5be47b93eac301e745b53ed7b1f008744a0ac90681fefc9c4f7a11327\"\n },\n {\n \"path\": \"campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\",\n \"sha256\": \"a2e6f0eaf0c2ba2d8a6a0edea74615d0f90ff9202c28811877b09961a265fb94\"\n },\n {\n \"path\": \"campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json\",\n \"sha256\": \"510219b4269311df86f9abe068131efdf3000dbf7757ff9d2c0ef5565001b5fc\"\n },\n {","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-c80088956234568ade0a27fb.json","text":"{\n \"actor\": \"research-problem-resolver\",\n \"artifacts\": [\n {\n \"path\": \"campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json\",\n \"sha256\": \"c29e4ce1525f5c06efb87e7454661987026b358e5d9e0d6480df1b6956f19a42\"\n },\n {\n \"path\": \"campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json\",\n \"sha256\": \"c94914d5be47b93eac301e745b53ed7b1f008744a0ac90681fefc9c4f7a11327\"\n },\n {\n \"path\": \"campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\",\n \"sha256\": \"a2e6f0eaf0c2ba2d8a6a0edea74615d0f90ff9202c28811877b09961a265fb94\"\n },\n {\n \"path\": \"campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json\",\n \"sha256\": \"510219b4269311df86f9abe068131efdf3000dbf7757ff9d2c0ef5565001b5fc\"\n },\n {\n \"path\": \"campaign/runtime/runs/run-9daf5c3b75547271d5c3b4ed.json\",\n \"sha256\": \"f0e9a8f47d7d31b873d348606800f20609f935c56b3da93f4478a39e4e10447b\"\n },\n {\n \"path\": \"campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json\",\n \"sha256\": \"a3452db76124adf1d5ad3ed4593845b589068ba2d83ce5633b9b1792b17bf1db\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"c80088956234568ade0a27fb\",\n \"model\": \"openai/gpt-6-astra\",\n \"next_action\": \"Lead perform the read-only current paired source-binding and consumed-tool/input preflight specified in d-e9d6d48cd77538556d1a1c1f, recording its result and missing-test disposition before scheduling revised independent static reproduction; do not restore source, reuse old binding or authorize lab work.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-481c9379a1efc0e527d2a28c\",\n \"summary\": \"END bounded resolution-only quantum. OBSERVATIONS: assigned roots /tmp/opencode/sots-final-research-engine and /tmp/opencode/sots-final-research-re have common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git, HEADs 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Both preexisting dirty; no source changes this session. Current launch runner engine digest ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged; RE e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 versus historical analyst/verifier runner b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4. These runner hashes are NOT campaign-binding domain; old campaign binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 must not be directly equated to them. Complete verifier-to-current git diff identifies ten included byte-changed control/config paths and removed verify/campaign/test_controls.py, plus excluded campaign/housekeeping inventory deltas, all enumerated in decision. No added or mode-only differences. Historical analyst before/after runner digests match verifier. A second whole-run diff against prior completed resolver produced redundant source_after removal and was truncated; it is not used to claim a full fieldwise comparison. Current campaign source-binding was NOT computed (resolver allowlist lacks that command). Canonical binary/tool/save files NOT freshly rehashed or executed. Archived analyst manifest records binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd and twelve positive static commands only. Read raw authority ret bytes and verifier plan; repaired boundary remains unexecuted. DECISION d-e9d6d48cd77538556d1a1c1f resolves source surprise with new-source remeasurement, not restoration/relabeling. Qualified prior unlike-digest comparison; actual source drift survives. Hi... (line truncated to 2000 chars)\n \"timestamp\": \"2026-09-10T13:11:37.323815+00:00\"\n}","lineStart":1,"lineEnd":51,"totalLines":51,"truncated":false}},"title":"campaign/runtime/checkpoints/research-completion-abi-c80088956234568ade0a27fb.json","time":{"start":1789045976949,"end":1789045976956}},"metadata":{"openai":{"itemId":"fc_0214bc563f960d2f016aa2acd8a19087d1a7a0bb797cf17a1f"}},"id":"prt_08b732f56001AMw5f6kb4yG5uN","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b730d440010UsuUUNxBvmF11"}} +{"type":"tool_use","timestamp":1789045977063,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_2yrFx2VIG6CtHP8veh4u9DUe","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/models.json"},"output":"/home/alex/sots-re/campaign/models.json\nfile\n\n1: {\n2: \"schema\": \"sots-models/1\",\n3: \"roles\": {\n4: \"lead\": \"openai/gpt-5.6-sol\",\n5: \"resolver\": \"openai/gpt-6-astra\",\n6: \"architecture-review\": \"openai/gpt-5.6-sol\",\n7: \"analyst\": \"openai/gpt-5.6-sol\",\n8: \"implementer\": \"openai/gpt-5.6-sol\",\n9: \"verifier\": \"openai/gpt-5.6-sol\",\n10: \"lab\": \"openai/gpt-5.6-sol\"\n11: },\n12: \"agents\": {\n13: \"lead\": \"sots-lead\",\n14: \"resolver\": \"sots-resolver\",\n15: \"architecture-review\": \"sots-lead\",\n16: \"analyst\": \"sots-analyst\",\n17: \"implementer\": \"sots-implementer\",\n18: \"verifier\": \"sots-verifier\",\n19: \"lab\": \"sots-lab\"\n20: },\n21: \"max_steps\": 40,\n22: \"implementation_wip\": 2\n23: }\n\n(End of file - total 23 lines)\n","metadata":{"preview":"{\n \"schema\": \"sots-models/1\",\n \"roles\": {\n \"lead\": \"openai/gpt-5.6-sol\",\n \"resolver\": \"openai/gpt-6-astra\",\n \"architecture-review\": \"openai/gpt-5.6-sol\",\n \"analyst\": \"openai/gpt-5.6-sol\",\n \"implementer\": \"openai/gpt-5.6-sol\",\n \"verifier\": \"openai/gpt-5.6-sol\",\n \"lab\": \"openai/gpt-5.6-sol\"\n },\n \"agents\": {\n \"lead\": \"sots-lead\",\n \"resolver\": \"sots-resolver\",\n \"architecture-review\": \"sots-lead\",\n \"analyst\": \"sots-analyst\",\n \"implementer\": \"sots-implementer\",\n \"verifier\": \"sots-verifier\",\n \"lab\": \"sots-lab\"\n },","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/models.json","text":"{\n \"schema\": \"sots-models/1\",\n \"roles\": {\n \"lead\": \"openai/gpt-5.6-sol\",\n \"resolver\": \"openai/gpt-6-astra\",\n \"architecture-review\": \"openai/gpt-5.6-sol\",\n \"analyst\": \"openai/gpt-5.6-sol\",\n \"implementer\": \"openai/gpt-5.6-sol\",\n \"verifier\": \"openai/gpt-5.6-sol\",\n \"lab\": \"openai/gpt-5.6-sol\"\n },\n \"agents\": {\n \"lead\": \"sots-lead\",\n \"resolver\": \"sots-resolver\",\n \"architecture-review\": \"sots-lead\",\n \"analyst\": \"sots-analyst\",\n \"implementer\": \"sots-implementer\",\n \"verifier\": \"sots-verifier\",\n \"lab\": \"sots-lab\"\n },\n \"max_steps\": 40,\n \"implementation_wip\": 2\n}","lineStart":1,"lineEnd":23,"totalLines":23,"truncated":false}},"title":"campaign/models.json","time":{"start":1789045977040,"end":1789045977058}},"metadata":{"openai":{"itemId":"fc_0214bc563f960d2f016aa2acd8a1b087d1abe48738bec748a9"}},"id":"prt_08b732fcd001U1hhqj7IM9xDHU","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b730d440010UsuUUNxBvmF11"}} +{"type":"tool_use","timestamp":1789045977063,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_epe9gueR3Sducn7G3JOmJkxu","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/guides/multi-agent-workflow.md"},"output":"/home/alex/sots-re/guides/multi-agent-workflow.md\nfile\n\n1: # Multi-agent operating architecture\n2: \n3: ## Product and milestone\n4: \n5: Reconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\n6: milestone is standalone replay given a captured command stream and complete declared runtime\n7: inputs. The first workflow pilot is the complete research write set. A passing host build is a\n8: component baseline, not a playable engine or independent replacement.\n9: \n10: ## Source of truth\n11: \n12: `campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\n13: leases and surprises, and evidence packages identify inputs, source and executable artifacts.\n14: `campaign/current.json` selects published evidence by path and digest. Board/dashboard are\n15: generated projections, never alternate writable authorities. Exact tool CLI/schema is documented\n16: in `campaign/README.md`. Historical findings retain their original experiment scope; they are\n17: not promoted by copying an old status into a new contract.\n18: \n19: ## Model authority\n20: \n21: | Responsibility | Model |\n22: |---|---|\n23: | Normal planning, architecture and integration loop | GPT-5.6 Sol |\n24: | Bounded RE analysis, implementation and independent verification | GPT-5.6 Sol |\n25: | Routine lab/workload operations | GPT-5.6 Sol |\n26: | Problem and surprise resolution | GPT-6 Astra |\n27: | Context compaction | GPT-5.5 |\n28: \n29: Exact provider IDs are in `campaign/models.json`. The lead escalates to Astra when a falsified\n30: assumption, conflict, instrument effect, or scope change blocks the loop. No fallback is automatic. Model names in editable JSON are\n31: provenance, not authentication: launcher events and independent review support the record.\n32: Permissions reduce accidental role drift; unrestricted local shell access is not a sandbox.\n33: \n34: ## Behavioral slice\n35: \n36: The lead specifies a bounded input domain, full observable write set, dependencies, acceptance\n37: workloads and stop conditions. The analyst recovers behavior; the verifier specifies discriminating\n38: tests before implementation; the implementer changes engine/adapters; the lab operator captures\n39: controls; the verifier reproduces; the integrator tests the combined source snapshot.\n40: \n41: Include transitive effects: allocations, IDs, container ELEMENTS, event text/records, RNG and\n42: nonserialized state. An address/function name is not a sufficient replacement boundary. If a\n43: neighbor function supplies required effects, extend the approved contract or expose it as an\n44: original dependency. Do not call the original and label the result independent.\n45: \n46: Lifecycle is `proposed → ready → implementing → verification → integration → accepted`, with\n47: blocked/revision states. Lifecycle is distinct from evidence strength. Acceptance is scoped to\n48: the manifest's exact procedure and workloads, never universal correctness.\n49: \n50: ## Independence\n51: \n52: Verifier and implementer are different executions. Verification starts with the contract, raw\n53: evidence and reproduction recipe, not just the author's conclusion. Require one meaningful\n54: challenge: held-out state, boundary, negative control, ablation, or independent state accounting.\n55: Both synthetic tests and original-game experiments matter. Repeat-call volume cannot replace\n56: branch and distinct-state coverage. Null effects and zero executions must be distinguishable.\n57: \n58: ## Sessions and recovery\n59: \n60: At most two implementation slices after a single-slice pilot. No nested worker delegation.\n61: Paired worktrees isolate source changes; unique build directories isolate artifacts. Canonical\n62: RE runtime state remains explicit even when a worker runs in `/tmp` worktrees.\n63: \n64: Checkpoint every 20 calls or 15min; also before experiments, compaction, handoff and stopping.\n65: Record source identities, exact changed paths, commands/results, artifacts and hashes, open\n66: surprises, held leases, requested/observed model, session identity and exact next action. Avoid\n67: large prose histories: raw logs belong in evidence; the checkpoint is a bounded resumption record.\n68: \n69: The launcher caps a quantum at 40 agent steps. A new quantum starts fresh using contract and\n70: checkpoint. Auto-compaction with an ample reserved window and four retained turns is enabled.\n71: This is a best-effort context backstop; regular durable checkpoints and fresh quanta provide the\n72: actual recovery discipline. Never claim a model compacted merely because a setting exists.\n73: \n74: ## Surprises\n75: \n76: On a falsified prediction, contradictory claim, unexplained regression, instrument interference,\n77: or newly necessary dependency: record the observation and evidence; block affected work. Astra\n78: first checks the instrument and source identity, then marks claims surviving/qualified/overturned,\n79: chooses a discriminating experiment, and records the revised plan. Unaffected contracted work\n80: may continue. Updating a paragraph without invalidating affected acceptance is insufficient.\n81: \n82: ## Lab ownership\n83: \n84: Acquire a canonical resource lease before VM, build-host or Ghidra mutation. An expired timestamp\n85: does not authorize stealing a lease. The lead reconciles stale ownership with actual processes.\n86: Use one guest at a time for maintenance, capture before/after inventory, preserve access and\n87: runtime dependencies, and verify unattended console login plus authenticated administration.\n88: Reboots require a free guest and a recorded recovery path. Runtime/Ghidra changes are experiments\n89: with provenance, not undocumented preparatory steps.\n90: \n91: ## Gate and publication\n92: \n93: Run the local gate with explicit engine, corpus, new output directory and profile. It snapshots\n94: source, uses fresh builds, records manifests and runs the expected test inventory once. Host\n95: profile allows a named list of unavailable asset/trace tests and publishes them as limitations.\n96: Full acceptance requires the full profile and the slice-specific original oracle; no blanket\n97: waiver converts a host pass to fidelity. Standalone measurement may diverge; acceptance may not.\n98: \n99: The integrator alone selects current results after verifying their hashes and source binding.\n100: No percentages of LOC, mapped rows or closed leaves purport to measure engine completeness.\n101: Run failure and missing evidence are visible states. Old results remain historical, not current.\n\n(End of file - total 101 lines)\n","metadata":{"preview":"# Multi-agent operating architecture\n\n## Product and milestone\n\nReconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\nmilestone is standalone replay given a captured command stream and complete declared runtime\ninputs. The first workflow pilot is the complete research write set. A passing host build is a\ncomponent baseline, not a playable engine or independent replacement.\n\n## Source of truth\n\n`campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\nleases and surprises, and evidence packages identify inputs, source and executable artifacts.\n`campaign/current.json` selects published evidence by path and digest. Board/dashboard are\ngenerated projections, never alternate writable authorities. Exact tool CLI/schema is documented\nin `campaign/README.md`. Historical findings retain their original experiment scope; they are\nnot promoted by copying an old status into a new contract.\n\n## Model authority\n","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/guides/multi-agent-workflow.md","text":"# Multi-agent operating architecture\n\n## Product and milestone\n\nReconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\nmilestone is standalone replay given a captured command stream and complete declared runtime\ninputs. The first workflow pilot is the complete research write set. A passing host build is a\ncomponent baseline, not a playable engine or independent replacement.\n\n## Source of truth\n\n`campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\nleases and surprises, and evidence packages identify inputs, source and executable artifacts.\n`campaign/current.json` selects published evidence by path and digest. Board/dashboard are\ngenerated projections, never alternate writable authorities. Exact tool CLI/schema is documented\nin `campaign/README.md`. Historical findings retain their original experiment scope; they are\nnot promoted by copying an old status into a new contract.\n\n## Model authority\n\n| Responsibility | Model |\n|---|---|\n| Normal planning, architecture and integration loop | GPT-5.6 Sol |\n| Bounded RE analysis, implementation and independent verification | GPT-5.6 Sol |\n| Routine lab/workload operations | GPT-5.6 Sol |\n| Problem and surprise resolution | GPT-6 Astra |\n| Context compaction | GPT-5.5 |\n\nExact provider IDs are in `campaign/models.json`. The lead escalates to Astra when a falsified\nassumption, conflict, instrument effect, or scope change blocks the loop. No fallback is automatic. Model names in editable JSON are\nprovenance, not authentication: launcher events and independent review support the record.\nPermissions reduce accidental role drift; unrestricted local shell access is not a sandbox.\n\n## Behavioral slice\n\nThe lead specifies a bounded input domain, full observable write set, dependencies, acceptance\nworkloads and stop conditions. The analyst recovers behavior; the verifier specifies discriminating\ntests before implementation; the implementer changes engine/adapters; the lab operator captures\ncontrols; the verifier reproduces; the integrator tests the combined source snapshot.\n\nInclude transitive effects: allocations, IDs, container ELEMENTS, event text/records, RNG and\nnonserialized state. An address/function name is not a sufficient replacement boundary. If a\nneighbor function supplies required effects, extend the approved contract or expose it as an\noriginal dependency. Do not call the original and label the result independent.\n\nLifecycle is `proposed → ready → implementing → verification → integration → accepted`, with\nblocked/revision states. Lifecycle is distinct from evidence strength. Acceptance is scoped to\nthe manifest's exact procedure and workloads, never universal correctness.\n\n## Independence\n\nVerifier and implementer are different executions. Verification starts with the contract, raw\nevidence and reproduction recipe, not just the author's conclusion. Require one meaningful\nchallenge: held-out state, boundary, negative control, ablation, or independent state accounting.\nBoth synthetic tests and original-game experiments matter. Repeat-call volume cannot replace\nbranch and distinct-state coverage. Null effects and zero executions must be distinguishable.\n\n## Sessions and recovery\n\nAt most two implementation slices after a single-slice pilot. No nested worker delegation.\nPaired worktrees isolate source changes; unique build directories isolate artifacts. Canonical\nRE runtime state remains explicit even when a worker runs in `/tmp` worktrees.\n\nCheckpoint every 20 calls or 15min; also before experiments, compaction, handoff and stopping.\nRecord source identities, exact changed paths, commands/results, artifacts and hashes, open\nsurprises, held leases, requested/observed model, session identity and exact next action. Avoid\nlarge prose histories: raw logs belong in evidence; the checkpoint is a bounded resumption record.\n\nThe launcher caps a quantum at 40 agent steps. A new quantum starts fresh using contract and\ncheckpoint. Auto-compaction with an ample reserved window and four retained turns is enabled.\nThis is a best-effort context backstop; regular durable checkpoints and fresh quanta provide the\nactual recovery discipline. Never claim a model compacted merely because a setting exists.\n\n## Surprises\n\nOn a falsified prediction, contradictory claim, unexplained regression, instrument interference,\nor newly necessary dependency: record the observation and evidence; block affected work. Astra\nfirst checks the instrument and source identity, then marks claims surviving/qualified/overturned,\nchooses a discriminating experiment, and records the revised plan. Unaffected contracted work\nmay continue. Updating a paragraph without invalidating affected acceptance is insufficient.\n\n## Lab ownership\n\nAcquire a canonical resource lease before VM, build-host or Ghidra mutation. An expired timestamp\ndoes not authorize stealing a lease. The lead reconciles stale ownership with actual processes.\nUse one guest at a time for maintenance, capture before/after inventory, preserve access and\nruntime dependencies, and verify unattended console login plus authenticated administration.\nReboots require a free guest and a recorded recovery path. Runtime/Ghidra changes are experiments\nwith provenance, not undocumented preparatory steps.\n\n## Gate and publication\n\nRun the local gate with explicit engine, corpus, new output directory and profile. It snapshots\nsource, uses fresh builds, records manifests and runs the expected test inventory once. Host\nprofile allows a named list of unavailable asset/trace tests and publishes them as limitations.\nFull acceptance requires the full profile and the slice-specific original oracle; no blanket\nwaiver converts a host pass to fidelity. Standalone measurement may diverge; acceptance may not.\n\nThe integrator alone selects current results after verifying their hashes and source binding.\nNo percentages of LOC, mapped rows or closed leaves purport to measure engine completeness.\nRun failure and missing evidence are visible states. Old results remain historical, not current.","lineStart":1,"lineEnd":101,"totalLines":101,"truncated":false}},"title":"guides/multi-agent-workflow.md","time":{"start":1789045977045,"end":1789045977060}},"metadata":{"openai":{"itemId":"fc_0214bc563f960d2f016aa2acd8a1c487d1bac50481c45f0410"}},"id":"prt_08b732fd2001XXN75aWLGq09R3","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b730d440010UsuUUNxBvmF11"}} +{"type":"tool_use","timestamp":1789045977072,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"glob","callID":"call_YPxypjib7K6dHDETUMdriKfc","state":{"status":"completed","input":{"path":"/home/alex/sots-re/campaign","pattern":"**/*surpris*"},"output":"No files found","metadata":{"count":0,"truncated":false},"title":"campaign","time":{"start":1789045976999,"end":1789045977065}},"metadata":{"openai":{"itemId":"fc_0214bc563f960d2f016aa2acd8a1a087d1bd6e8024487e64a6"}},"id":"prt_08b732f78001N2htE087EMZJZb","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b730d440010UsuUUNxBvmF11"}} +{"type":"step_finish","timestamp":1789045977145,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b733036001JQeNbL0m4Zcrl9","reason":"tool-calls","snapshot":"021877c317f957a1b5493e2a775c821ffa9967ce","messageID":"msg_08b730d440010UsuUUNxBvmF11","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":6341,"input":509,"output":200,"reasoning":0,"cache":{"write":0,"read":5632}},"cost":0}} +{"type":"step_start","timestamp":1789045978881,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7336fd001UEEzf26A5HBOeR","messageID":"msg_08b73305f001iI08s5gbT8IoMg","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"446eece52506db109d192ea3f7f20190f5fa80c8","type":"step-start"}} +{"type":"tool_use","timestamp":1789045998151,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"glob","callID":"call_Dz6H7ZsVt7Jnai795iFLtjLL","state":{"status":"completed","input":{"path":"/home/alex/sots-re/campaign/runtime/surprises","pattern":"*.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-81ffc3041e1f07b87928e6f2.json\n/home/alex/sots-re/campaign/runtime/surprises/s-410e48d5ae6cc4da0a6ae649.json\n/home/alex/sots-re/campaign/runtime/surprises/s-c6786945b302de2a0b629960.json\n/home/alex/sots-re/campaign/runtime/surprises/s-abd1c3613c9922cc94c608d5.json\n/home/alex/sots-re/campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json\n/home/alex/sots-re/campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json\n/home/alex/sots-re/campaign/runtime/surprises/s-5c58b6a921997731f5b5ae1f.json\n/home/alex/sots-re/campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\n/home/alex/sots-re/campaign/runtime/surprises/s-d2c8ec81e980396f2306f8fe.json\n/home/alex/sots-re/campaign/runtime/surprises/s-4a7d66ebd7d8a8f3ec59f11d.json\n/home/alex/sots-re/campaign/runtime/surprises/s-4f71bf4a5df4e5fc992bb6b2.json\n/home/alex/sots-re/campaign/runtime/surprises/s-4f4fb5e8ee42ccff7e68efb5.json\n/home/alex/sots-re/campaign/runtime/surprises/s-f1c41532e618c77d41538902.json\n/home/alex/sots-re/campaign/runtime/surprises/s-d44b9f9e62272794d88bbed6.json\n/home/alex/sots-re/campaign/runtime/surprises/s-8996365dab2cd6dc0e17bb9f.json","metadata":{"count":15,"truncated":false},"title":"campaign/runtime/surprises","time":{"start":1789045998140,"end":1789045998149}},"metadata":{"openai":{"itemId":"fc_0b3401ccd359d84a016aa2acede3e487d18eee8e5a9168c230"}},"id":"prt_08b738208001P8TaUyV8abC7mT","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b73305f001iI08s5gbT8IoMg"}} +{"type":"tool_use","timestamp":1789045998186,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_mDNFX8oly1q5WcMgJI1qvCOH","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json"},"output":"/home/alex/sots-re/campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json\nfile\n\n1: {\n2: \"actor\": \"research-problem-resolver\",\n3: \"contract\": \"research-completion-abi\",\n4: \"explanation\": \"Astra resolution-only run-481c9379a1efc0e527d2a28c. OBSERVATION: complete git diff --no-index of canonical campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json versus run-481c9379a1efc0e527d2a28c.json exposes actual historical-to-current source_before inventory changes. Analyst run-9daf5c3b75547271d5c3b4ed.json records runner RE b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4 before/after, identical to verifier runner. Current and prior resolver runner RE record e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9; engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged. Git roots/common dirs independently match assigned paired trees and baselines engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23, RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Dirty inventories preexist; no resolver source edits.\\nINSTRUMENT IDENTITY: tools/run_agent.py source_identity hashes all inventoried files; tools/campaign.py source_manifest excludes caches, verify/results and mutable campaign except models/schema/agents. Thus historical campaign digest 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 is NOT the historical runner digest. Prior surprise/checkpoint/decision direct comparison is QUALIFIED: unlike hash domains were compared, but actual like-for-like runner drift survives. No fresh current campaign-binding computation occurred; shell resolver allowlist does not authorize source-binding. Do not invent that digest.\\nEXACT CAMPAIGN-INCLUDED DELTA from full runner diff: byte changes, all mode 420 unchanged, AGENTS.md; CLAUDE.md; campaign/agents/lead.md; campaign/models.json; guides/multi-agent-workflow.md; opencode.json; tools/campaign.py; tools/check_agent_config.py; tools/run_agent.py; verify/config/test_agent_config.py. Removed inventory entry verify/campaign/test_controls.py (old mode 420, hash 108460f4e90c4cb7036642e85de581e31fd70c478533c32364691260461814fc). No added entries or mode-only chan... (line truncated to 2000 chars)\n5: \"id\": \"d-e9d6d48cd77538556d1a1c1f\",\n6: \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-f15d822f91601241181df05a.json\",\n7: \"invalidated_evidence\": [],\n8: \"model\": \"openai/gpt-6-astra\",\n9: \"probe\": \"Cheapest discriminator is local read-only preflight, before disassembly: lead-authorized owner runs python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re and archives actual result with canonical consumed campaign/runner/interpreter/binary/objdump/recipe/save hashes. Compare equivalent runner inventories and campaign bindings separately; expect current campaign digest not to equal old 6696fd52, do not infer its value. Confirm required test inputs and source stability; missing inputs or unexplained drift blocks. Lead then records authorized new-source static remeasurement scope and schedules independent verifier after normal lifecycle preconditions, without source restoration. Fresh verifier checkpoints before experiment, uses fail-if-exists output and revised plan; runs negative stop 0x00779913, aligned 0x00779915 and authority 0x00779930 plus direct PE-mapped byte read, all a20/a21/a23/a28 controls and ABI/save checks from prior decision. Record execution/branches/streams and unexercised runtime states, not retroactive passes. Immediate next action is lead source-binding/preflight and contract scheduling, NOT lab work or acceptance.\",\n10: \"role\": \"resolver\",\n11: \"schema\": \"sots-decision/1\",\n12: \"surprise\": \"s-210e489610197533e4f4cce1\",\n13: \"timestamp\": \"2026-09-10T13:10:38.861003+00:00\"\n14: }\n\n(End of file - total 14 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only run-481c9379a1efc0e527d2a28c. OBSERVATION: complete git diff --no-index of canonical campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json versus run-481c9379a1efc0e527d2a28c.json exposes actual historical-to-current source_before inventory changes. Analyst run-9daf5c3b75547271d5c3b4ed.json records runner RE b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4 before/after, identical to verifier runner. Current and prior resolver runner RE record e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9; engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged. Git roots/common dirs independently match assigned paired trees and baselines engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23, RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Dirty inventories preexist; no resolver source edits.\\nINSTRUMENT IDENTITY: tools/run_agent.py source_identity hashes all inventoried files; tools/campaign.py source_manifest excludes caches, verify/results and mutable campaign except models/schema/agents. Thus historical campaign digest 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 is NOT the historical runner digest. Prior surprise/checkpoint/decision direct comparison is QUALIFIED: unlike hash domains were compared, but actual like-for-like runner drift survives. No fresh current campaign-binding computation occurred; shell resolver allowlist does not authorize source-binding. Do not invent that digest.\\nEXACT CAMPAIGN-INCLUDED DELTA from full runner diff: byte changes, all mode 420 unchanged, AGENTS.md; CLAUDE.md; campaign/agents/lead.md; campaign/models.json; guides/multi-agent-workflow.md; opencode.json; tools/campaign.py; tools/check_agent_config.py; tools/run_agent.py; verify/config/test_agent_config.py. Removed inventory entry verify/campaign/test_controls.py (old mode 420, hash 108460f4e90c4cb7036642e85de581e31fd70c478533c32364691260461814fc). No added entries or mode-only chan... (line truncated to 2000 chars)\n \"id\": \"d-e9d6d48cd77538556d1a1c1f\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-f15d822f91601241181df05a.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest discriminator is local read-only preflight, before disassembly: lead-authorized owner runs python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re and archives actual result with canonical consumed campaign/runner/interpreter/binary/objdump/recipe/save hashes. Compare equivalent runner inventories and campaign bindings separately; expect current campaign digest not to equal old 6696fd52, do not infer its value. Confirm required test inputs and source stability; missing inputs or unexplained drift blocks. Lead then records authorized new-source static remeasurement scope and schedules independent verifier after normal lifecycle preconditions, without source restoration. Fresh verifier checkpoints before experiment, uses fail-if-exists output and revised plan; runs negative stop 0x00779913, aligned 0x00779915 and authority 0x00779930 plus direct PE-mapped byte read, all a20/a21/a23/a28 controls and ABI/save checks from prior decision. Record execution/branches/streams and unexercised runtime states, not retroactive passes. Immediate next action is lead source-binding/preflight and contract scheduling, NOT lab work or acceptance.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-210e489610197533e4f4cce1\",\n \"timestamp\": \"2026-09-10T13:10:38.861003+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json","text":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only run-481c9379a1efc0e527d2a28c. OBSERVATION: complete git diff --no-index of canonical campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json versus run-481c9379a1efc0e527d2a28c.json exposes actual historical-to-current source_before inventory changes. Analyst run-9daf5c3b75547271d5c3b4ed.json records runner RE b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4 before/after, identical to verifier runner. Current and prior resolver runner RE record e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9; engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged. Git roots/common dirs independently match assigned paired trees and baselines engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23, RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Dirty inventories preexist; no resolver source edits.\\nINSTRUMENT IDENTITY: tools/run_agent.py source_identity hashes all inventoried files; tools/campaign.py source_manifest excludes caches, verify/results and mutable campaign except models/schema/agents. Thus historical campaign digest 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 is NOT the historical runner digest. Prior surprise/checkpoint/decision direct comparison is QUALIFIED: unlike hash domains were compared, but actual like-for-like runner drift survives. No fresh current campaign-binding computation occurred; shell resolver allowlist does not authorize source-binding. Do not invent that digest.\\nEXACT CAMPAIGN-INCLUDED DELTA from full runner diff: byte changes, all mode 420 unchanged, AGENTS.md; CLAUDE.md; campaign/agents/lead.md; campaign/models.json; guides/multi-agent-workflow.md; opencode.json; tools/campaign.py; tools/check_agent_config.py; tools/run_agent.py; verify/config/test_agent_config.py. Removed inventory entry verify/campaign/test_controls.py (old mode 420, hash 108460f4e90c4cb7036642e85de581e31fd70c478533c32364691260461814fc). No added entries or mode-only chan... (line truncated to 2000 chars)\n \"id\": \"d-e9d6d48cd77538556d1a1c1f\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-f15d822f91601241181df05a.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest discriminator is local read-only preflight, before disassembly: lead-authorized owner runs python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re and archives actual result with canonical consumed campaign/runner/interpreter/binary/objdump/recipe/save hashes. Compare equivalent runner inventories and campaign bindings separately; expect current campaign digest not to equal old 6696fd52, do not infer its value. Confirm required test inputs and source stability; missing inputs or unexplained drift blocks. Lead then records authorized new-source static remeasurement scope and schedules independent verifier after normal lifecycle preconditions, without source restoration. Fresh verifier checkpoints before experiment, uses fail-if-exists output and revised plan; runs negative stop 0x00779913, aligned 0x00779915 and authority 0x00779930 plus direct PE-mapped byte read, all a20/a21/a23/a28 controls and ABI/save checks from prior decision. Record execution/branches/streams and unexercised runtime states, not retroactive passes. Immediate next action is lead source-binding/preflight and contract scheduling, NOT lab work or acceptance.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-210e489610197533e4f4cce1\",\n \"timestamp\": \"2026-09-10T13:10:38.861003+00:00\"\n}","lineStart":1,"lineEnd":14,"totalLines":14,"truncated":false}},"title":"campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json","time":{"start":1789045998173,"end":1789045998181}},"metadata":{"openai":{"itemId":"fc_0b3401ccd359d84a016aa2acede3fc87d1a6e71a0e3989d75d"}},"id":"prt_08b738250001RRaWK4vkWMAk5X","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b73305f001iI08s5gbT8IoMg"}} +{"type":"tool_use","timestamp":1789045998239,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_JrAfvWcKacQQdbV6CiajtrEC","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/research/research-completion-abi.md"},"output":"/home/alex/sots-re/campaign/research/research-completion-abi.md\nfile\n\n1: # Completion record ABI recovery\n2: \n3: Static handoff only. The provenance index is\n4: `verify/results/research-completion-abi/reva-2026-09-09-index.md`; the regenerated instruction\n5: capture and interpretation are respectively\n6: `verify/results/research-completion-abi/objdump-2026-09-09-ownership.txt` and\n7: `verify/results/research-completion-abi/recovered-static.md`. The complete dedup/helper repair is\n8: `verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt`; its first-window raw\n9: provenance is superseded by the paired captures and identity record in\n10: `verify/results/research-completion-abi/objdump-2026-09-10-boundary-repair.md` under Astra decision\n11: `d-d2a9b8be6399a6abaa0e05a5`. Input identity is `dumps/sots.exe`,\n12: SHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841` / MD5\n13: `9969481c39f4b33a8a21c48b62abee4c`.\n14: \n15: The ownership archive's terminal-byte provenance is likewise superseded by the complete package\n16: `verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/` under Astra decision\n17: `d-d4c494ba02ada278030ef473`. Its six narrow/wide pairs, raw section-byte checks and full ten-window\n18: audit establish the encoded return immediates while preserving the static-only limitation. The\n19: package found three additional truncated historical stops (ObservedTech append/reallocator and\n20: string allocation/replacement); their widened streams are now the byte authority. No archive\n21: production-history inference or live-safety claim is made.\n22: \n23: The TurnEvents correction's current-session boundary authority is\n24: `verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/`. It supersedes the stale-session\n25: attribution and truncated nested-copy stream invalidated by decisions\n26: `d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. The package binds the actual session\n27: and a fail-if-used output directory; captures complete helper authority through `0x0077992f`; and\n28: retains `0x00779a20` as an expected-failing boundary beside complete `0x00779a21`, `0x00779a23`, and\n29: `0x00779a28` controls plus raw bytes. It is analyst static evidence awaiting a fresh independent\n30: verifier, not restored acceptance.\n31: \n32: ## Implementable machine boundaries recovered\n33: \n34: * `0x008562a0`: ObservedTech default constructor, ECX receiver, EAX return, plain `ret`.\n35: * `0x007b7320`: ObservedTech vector append, ECX receiver plus one stack word, `ret 4`; stride `0x2c`.\n36: Its copy helper is `0x0079a150` (cdecl-style allocator/destination/source stack arguments), which copy-constructs the embedded string rather than copying a\n37: vector element header. Capacity growth is `0x007b5820` -> `0x007b34e0` -> `0x0057e590`.\n38: * `0x0057e590` calls `0x00924fb6` with `count * 0x2c`; reallocation destroys every old element via\n39: virtual slot 0 with zero and frees the array through `0x00924faa`. These are MSVCR100 scalar-new\n40: and scalar-delete import thunks, not clean-room allocator operations.\n41: * `0x0086c580`: PlayerEvent vector append, ECX receiver plus one stack word, `ret 4`; stride `0x74`.\n42: It grows via `0x00869500` and copy-constructs through `0x007693f0` (ECX destination, stack source,\n43: EAX destination return, ret 4), independently assigning all\n44: three strings. `0x0061ae90` releases each long string via `0x00924faa` when capacity is `>= 0x10`.\n45: * `0x004249a0` (reached by `0x00425430` assignment) allocates through `0x00924fb6` and releases a\n46: prior long destination buffer through `0x00924faa`. A temporary long string is therefore not\n47: transferable by raw header copy.\n48: * `0x00885380`: get-or-create TurnEvents bucket, ECX EventStorage receiver plus stack turn, EAX\n49: bucket return, `ret 4`. It returns the last existing matching turn. On absence it initializes the\n50: stack bucket's vptr and empty nested-vector header but **not** its `EvTurn`; `0x00884cb0` copies\n51: that incoming stack word and deep-copies the nested vector. After temporary nested-vector cleanup,\n52: get/create writes the requested turn into the stored last element and returns it. The transient\n53: word is not measured randomness or a zero default. Fresh correction capture:\n54: `verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/`, governed by\n55: `d-b51f3f76803e852ed250846a`.\n56: * `0x00884cb0`: outer TurnEvents vector append, ECX vector receiver plus stack source, `ret 4`,\n57: stride `0x18`. Full-capacity growth is `0x008841a0` -> `0x00883a60`; allocation is\n58: `0x006e8f50` -> `0x00924fb6` with `count * 0x18`. Existing buckets are copy-constructed by\n59: `0x0077fed0`, including an independently allocated/copied nested PlayerEvent vector via\n60: `0x00779850` -> `0x0078af40` (`count * 0x74`) -> `0x007725a0` -> `0x007693f0`.\n61: * TurnEvents virtual slot zero resolves from vtable `0x00a0f07c` to `0x0062e120`. It destroys the\n62: nested vector through `0x00629580`; that destroys every `0x74` PlayerEvent, frees the nested block,\n63: and zeros its three pointers. Static unwind edges clean partial PlayerEvent and TurnEvents ranges\n64: and free the new outer block, but no allocation failure was executed live.\n65: \n66: ## Ordering / visible effects\n67: \n68: RecordObservedTech's append predicate is name absence, not capacity. A matching existing record\n69: keeps first-turn/name and updates last-turn/with mask. `0x00825d40` scans a bucket's events in\n70: `0x74` steps, checking action, location, three floats, message and image before passing both\n71: description strings to `0x0046f8c0`. Fresh paired-boundary instructions establish that helper as\n72: caller-cleaned `bool string_not_equal(stored, candidate)`: it returns one for any byte/length\n73: difference and zero for equality, handling each operand's inline/heap representation at capacity\n74: `0x10`. FindDuplicate reaches the match return only on zero, so `EvDsc` equality is required and a\n75: description-only difference does not deduplicate. This statically contradicts the inherited\n76: description-omission claim; decision `d-2ff30c9f5355116bea822924` required the now-archived complete\n77: branch/helper repair. The later provenance correction does not itself prove these semantics: an\n78: independent verifier must reproduce the repaired package and predeclared falsifiers. The wrapper\n79: returns the first element equal in all fields and writes nothing.\n80: `0x00879eb0` prunes only a leading\n81: stale run (`EvTurn < turn-50`), deep-shifts from the run's last stale element, and therefore removes\n82: `n-1`: one stale bucket survives, a single stale bucket causes no write, and stale buckets after a\n83: fresh bucket are not inspected. The no-duplicate EventStorage path remains distinct from event-vector\n84: capacity: it is the path that appends a `0x74` PlayerEvent and changes IDs/vector contents. Caller\n85: text/position/action/defaulting and the exact PostEvent write order remain required inputs/effects.\n86: No RNG draw occurs in the recovered bucket, duplicate, prune, copy, allocation, or destruction\n87: boundaries.\n88: \n89: ## Original/runtime dependencies and limits\n90: \n91: Any original-assisted allocation, string assignment or deletion must retain allocator-family\n92: compatibility: the recovered calls target the original MSVCR100 import thunks. A standalone\n93: replacement needs its own coherent allocation/destruction boundary; calling these original helpers\n94: is an original dependency, not independent replacement. Calling `0x0046f8c0` likewise retains an\n95: original string-layout/comparison dependency, though its equality behavior is implementable without\n96: allocation in a standalone boundary. Required unavailable proof inputs are a safe\n97: long-string/full-capacity pre/post fixture (or equivalent archived trace), same-bucket\n98: equal/description-only-different event fixtures covering short and long strings, exact exceptional\n99: cleanup outcomes under a live throw, and independent reproduction of the named static windows and\n100: falsifiers. This handoff makes no live\n101: allocator-safety, runtime event-construction, or replacement-acceptance claim.\n\n(End of file - total 101 lines)\n","metadata":{"preview":"# Completion record ABI recovery\n\nStatic handoff only. The provenance index is\n`verify/results/research-completion-abi/reva-2026-09-09-index.md`; the regenerated instruction\ncapture and interpretation are respectively\n`verify/results/research-completion-abi/objdump-2026-09-09-ownership.txt` and\n`verify/results/research-completion-abi/recovered-static.md`. The complete dedup/helper repair is\n`verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt`; its first-window raw\nprovenance is superseded by the paired captures and identity record in\n`verify/results/research-completion-abi/objdump-2026-09-10-boundary-repair.md` under Astra decision\n`d-d2a9b8be6399a6abaa0e05a5`. Input identity is `dumps/sots.exe`,\nSHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841` / MD5\n`9969481c39f4b33a8a21c48b62abee4c`.\n\nThe ownership archive's terminal-byte provenance is likewise superseded by the complete package\n`verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/` under Astra decision\n`d-d4c494ba02ada278030ef473`. Its six narrow/wide pairs, raw section-byte checks and full ten-window\naudit establish the encoded return immediates while preserving the static-only limitation. The\npackage found three additional truncated historical stops (ObservedTech append/reallocator and\nstring allocation/replacement); their widened streams are now the byte authority. No archive","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/research/research-completion-abi.md","text":"# Completion record ABI recovery\n\nStatic handoff only. The provenance index is\n`verify/results/research-completion-abi/reva-2026-09-09-index.md`; the regenerated instruction\ncapture and interpretation are respectively\n`verify/results/research-completion-abi/objdump-2026-09-09-ownership.txt` and\n`verify/results/research-completion-abi/recovered-static.md`. The complete dedup/helper repair is\n`verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt`; its first-window raw\nprovenance is superseded by the paired captures and identity record in\n`verify/results/research-completion-abi/objdump-2026-09-10-boundary-repair.md` under Astra decision\n`d-d2a9b8be6399a6abaa0e05a5`. Input identity is `dumps/sots.exe`,\nSHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841` / MD5\n`9969481c39f4b33a8a21c48b62abee4c`.\n\nThe ownership archive's terminal-byte provenance is likewise superseded by the complete package\n`verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/` under Astra decision\n`d-d4c494ba02ada278030ef473`. Its six narrow/wide pairs, raw section-byte checks and full ten-window\naudit establish the encoded return immediates while preserving the static-only limitation. The\npackage found three additional truncated historical stops (ObservedTech append/reallocator and\nstring allocation/replacement); their widened streams are now the byte authority. No archive\nproduction-history inference or live-safety claim is made.\n\nThe TurnEvents correction's current-session boundary authority is\n`verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/`. It supersedes the stale-session\nattribution and truncated nested-copy stream invalidated by decisions\n`d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. The package binds the actual session\nand a fail-if-used output directory; captures complete helper authority through `0x0077992f`; and\nretains `0x00779a20` as an expected-failing boundary beside complete `0x00779a21`, `0x00779a23`, and\n`0x00779a28` controls plus raw bytes. It is analyst static evidence awaiting a fresh independent\nverifier, not restored acceptance.\n\n## Implementable machine boundaries recovered\n\n* `0x008562a0`: ObservedTech default constructor, ECX receiver, EAX return, plain `ret`.\n* `0x007b7320`: ObservedTech vector append, ECX receiver plus one stack word, `ret 4`; stride `0x2c`.\n Its copy helper is `0x0079a150` (cdecl-style allocator/destination/source stack arguments), which copy-constructs the embedded string rather than copying a\n vector element header. Capacity growth is `0x007b5820` -> `0x007b34e0` -> `0x0057e590`.\n* `0x0057e590` calls `0x00924fb6` with `count * 0x2c`; reallocation destroys every old element via\n virtual slot 0 with zero and frees the array through `0x00924faa`. These are MSVCR100 scalar-new\n and scalar-delete import thunks, not clean-room allocator operations.\n* `0x0086c580`: PlayerEvent vector append, ECX receiver plus one stack word, `ret 4`; stride `0x74`.\n It grows via `0x00869500` and copy-constructs through `0x007693f0` (ECX destination, stack source,\n EAX destination return, ret 4), independently assigning all\n three strings. `0x0061ae90` releases each long string via `0x00924faa` when capacity is `>= 0x10`.\n* `0x004249a0` (reached by `0x00425430` assignment) allocates through `0x00924fb6` and releases a\n prior long destination buffer through `0x00924faa`. A temporary long string is therefore not\n transferable by raw header copy.\n* `0x00885380`: get-or-create TurnEvents bucket, ECX EventStorage receiver plus stack turn, EAX\n bucket return, `ret 4`. It returns the last existing matching turn. On absence it initializes the\n stack bucket's vptr and empty nested-vector header but **not** its `EvTurn`; `0x00884cb0` copies\n that incoming stack word and deep-copies the nested vector. After temporary nested-vector cleanup,\n get/create writes the requested turn into the stored last element and returns it. The transient\n word is not measured randomness or a zero default. Fresh correction capture:\n `verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/`, governed by\n `d-b51f3f76803e852ed250846a`.\n* `0x00884cb0`: outer TurnEvents vector append, ECX vector receiver plus stack source, `ret 4`,\n stride `0x18`. Full-capacity growth is `0x008841a0` -> `0x00883a60`; allocation is\n `0x006e8f50` -> `0x00924fb6` with `count * 0x18`. Existing buckets are copy-constructed by\n `0x0077fed0`, including an independently allocated/copied nested PlayerEvent vector via\n `0x00779850` -> `0x0078af40` (`count * 0x74`) -> `0x007725a0` -> `0x007693f0`.\n* TurnEvents virtual slot zero resolves from vtable `0x00a0f07c` to `0x0062e120`. It destroys the\n nested vector through `0x00629580`; that destroys every `0x74` PlayerEvent, frees the nested block,\n and zeros its three pointers. Static unwind edges clean partial PlayerEvent and TurnEvents ranges\n and free the new outer block, but no allocation failure was executed live.\n\n## Ordering / visible effects\n\nRecordObservedTech's append predicate is name absence, not capacity. A matching existing record\nkeeps first-turn/name and updates last-turn/with mask. `0x00825d40` scans a bucket's events in\n`0x74` steps, checking action, location, three floats, message and image before passing both\ndescription strings to `0x0046f8c0`. Fresh paired-boundary instructions establish that helper as\ncaller-cleaned `bool string_not_equal(stored, candidate)`: it returns one for any byte/length\ndifference and zero for equality, handling each operand's inline/heap representation at capacity\n`0x10`. FindDuplicate reaches the match return only on zero, so `EvDsc` equality is required and a\ndescription-only difference does not deduplicate. This statically contradicts the inherited\ndescription-omission claim; decision `d-2ff30c9f5355116bea822924` required the now-archived complete\nbranch/helper repair. The later provenance correction does not itself prove these semantics: an\nindependent verifier must reproduce the repaired package and predeclared falsifiers. The wrapper\nreturns the first element equal in all fields and writes nothing.\n`0x00879eb0` prunes only a leading\nstale run (`EvTurn < turn-50`), deep-shifts from the run's last stale element, and therefore removes\n`n-1`: one stale bucket survives, a single stale bucket causes no write, and stale buckets after a\nfresh bucket are not inspected. The no-duplicate EventStorage path remains distinct from event-vector\ncapacity: it is the path that appends a `0x74` PlayerEvent and changes IDs/vector contents. Caller\ntext/position/action/defaulting and the exact PostEvent write order remain required inputs/effects.\nNo RNG draw occurs in the recovered bucket, duplicate, prune, copy, allocation, or destruction\nboundaries.\n\n## Original/runtime dependencies and limits\n\nAny original-assisted allocation, string assignment or deletion must retain allocator-family\ncompatibility: the recovered calls target the original MSVCR100 import thunks. A standalone\nreplacement needs its own coherent allocation/destruction boundary; calling these original helpers\nis an original dependency, not independent replacement. Calling `0x0046f8c0` likewise retains an\noriginal string-layout/comparison dependency, though its equality behavior is implementable without\nallocation in a standalone boundary. Required unavailable proof inputs are a safe\nlong-string/full-capacity pre/post fixture (or equivalent archived trace), same-bucket\nequal/description-only-different event fixtures covering short and long strings, exact exceptional\ncleanup outcomes under a live throw, and independent reproduction of the named static windows and\nfalsifiers. This handoff makes no live\nallocator-safety, runtime event-construction, or replacement-acceptance claim.","lineStart":1,"lineEnd":101,"totalLines":101,"truncated":false}},"title":"campaign/research/research-completion-abi.md","time":{"start":1789045998206,"end":1789045998229}},"metadata":{"openai":{"itemId":"fc_0b3401ccd359d84a016aa2acede42087d1839b1b91da9f6af3"}},"id":"prt_08b73827a001QA0Z6tDrYtppIN","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b73305f001iI08s5gbT8IoMg"}} +{"type":"tool_use","timestamp":1789045998239,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_2ynpZn1PlofswY0x60nbAxtE","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json"},"output":"/home/alex/sots-re/campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json\nfile\n\n1: {\n2: \"actor\": \"research-problem-resolver\",\n3: \"contract\": \"research-completion-abi\",\n4: \"explanation\": \"Astra resolution-only, session run-ec31ee938e1f509cd7130c03. OBSERVATION/PROVENANCE: verifier plan verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 requires complete ret 4 at 0x00779912 with stop 0x00779913. Analyst run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt line 79 shows c2 04 00 through 0x00779914; checkpoint 1d04a2672a212e8b1fb37297 rehashed plan to 78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc and authority to 973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8, matching prior plan hash and analyst manifest. Analyst a20/a28 raw streams show terminal 74 versus 74 10 at 0x00779a1f; section-byte control contains 74 10 8b cf e8 28 6a ff ff. Instrument output is boundary-sensitive even when its mnemonic/target looks complete. This falsifies a verifier expectation before execution, not analyst authority or game behavior.\\nIDENTITY/EXECUTION: assigned Git HEAD/common roots match engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Historical analyst manifest binds binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd GNU 2.38, and twelve explicit commands with zero exits, nonempty stdout and empty stderr. These are positive archived static executions, not fresh resolver executions. Binary/tool not freshly rehashed here. Current runner engine digest matches ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; RE runner digest e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Separate open surprise s-210e489610197533e4f4cce1 blocks source-identical reproduction. No stale-build/game-mechanism diagnosis. No runtime instrument neutrality, allocator, RNG or game execution measured.\\nCLAIMS: O... (line truncated to 2000 chars)\n5: \"id\": \"d-6e30d172051af0385f5979eb\",\n6: \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-1d04a2672a212e8b1fb37297.json\",\n7: \"invalidated_evidence\": [],\n8: \"model\": \"openai/gpt-6-astra\",\n9: \"probe\": \"Cheapest boundary discriminator, NOT run here: after s-210e489610197533e4f4cce1 source reconciliation and lead authorization, checkpoint a fresh independent verifier session and new fail-if-exists directory. Rehash binary, objdump/interpreter, recipe, paired source and archived-save inputs before/after. Run /usr/bin/objdump -D -Mintel --start-address=0x00779850 against dumps/sots.exe twice, stops 0x00779913 and 0x00779915, plus full authority stop 0x00779930. Independently map PE VA 0x00779912..0x00779914 to file offsets and read bytes directly (not only a second disassembly). Predict c2-only truncated byte row at bad stop and c2 04 00 ret 4 at aligned stop, no changed preceding complete rows; preserve mnemonic/bytes separately. Normal-return stop must not be counted as unwind coverage. Keep a20 negative and aligned a21/a23/a28 controls, all other ABI/save falsifiers and explicit unexercised runtime states. Record actual commands, timestamps, exits, raw stdout/stderr hashes, positive executions and all missing/skipped states; reject drift, unexpected stderr, zero execution or contradiction. Mark original prediction failed, repaired control unblinded/new, never retroactive success. Immediate next action is lead scheduling a read-only manifest-delta review for source surprise, not this blocked reproduction.\",\n10: \"role\": \"resolver\",\n11: \"schema\": \"sots-decision/1\",\n12: \"surprise\": \"s-81ffc3041e1f07b87928e6f2\",\n13: \"timestamp\": \"2026-09-10T13:06:19.620541+00:00\"\n14: }\n\n(End of file - total 14 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only, session run-ec31ee938e1f509cd7130c03. OBSERVATION/PROVENANCE: verifier plan verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 requires complete ret 4 at 0x00779912 with stop 0x00779913. Analyst run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt line 79 shows c2 04 00 through 0x00779914; checkpoint 1d04a2672a212e8b1fb37297 rehashed plan to 78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc and authority to 973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8, matching prior plan hash and analyst manifest. Analyst a20/a28 raw streams show terminal 74 versus 74 10 at 0x00779a1f; section-byte control contains 74 10 8b cf e8 28 6a ff ff. Instrument output is boundary-sensitive even when its mnemonic/target looks complete. This falsifies a verifier expectation before execution, not analyst authority or game behavior.\\nIDENTITY/EXECUTION: assigned Git HEAD/common roots match engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Historical analyst manifest binds binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd GNU 2.38, and twelve explicit commands with zero exits, nonempty stdout and empty stderr. These are positive archived static executions, not fresh resolver executions. Binary/tool not freshly rehashed here. Current runner engine digest matches ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; RE runner digest e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Separate open surprise s-210e489610197533e4f4cce1 blocks source-identical reproduction. No stale-build/game-mechanism diagnosis. No runtime instrument neutrality, allocator, RNG or game execution measured.\\nCLAIMS: O... (line truncated to 2000 chars)\n \"id\": \"d-6e30d172051af0385f5979eb\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-1d04a2672a212e8b1fb37297.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest boundary discriminator, NOT run here: after s-210e489610197533e4f4cce1 source reconciliation and lead authorization, checkpoint a fresh independent verifier session and new fail-if-exists directory. Rehash binary, objdump/interpreter, recipe, paired source and archived-save inputs before/after. Run /usr/bin/objdump -D -Mintel --start-address=0x00779850 against dumps/sots.exe twice, stops 0x00779913 and 0x00779915, plus full authority stop 0x00779930. Independently map PE VA 0x00779912..0x00779914 to file offsets and read bytes directly (not only a second disassembly). Predict c2-only truncated byte row at bad stop and c2 04 00 ret 4 at aligned stop, no changed preceding complete rows; preserve mnemonic/bytes separately. Normal-return stop must not be counted as unwind coverage. Keep a20 negative and aligned a21/a23/a28 controls, all other ABI/save falsifiers and explicit unexercised runtime states. Record actual commands, timestamps, exits, raw stdout/stderr hashes, positive executions and all missing/skipped states; reject drift, unexpected stderr, zero execution or contradiction. Mark original prediction failed, repaired control unblinded/new, never retroactive success. Immediate next action is lead scheduling a read-only manifest-delta review for source surprise, not this blocked reproduction.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-81ffc3041e1f07b87928e6f2\",\n \"timestamp\": \"2026-09-10T13:06:19.620541+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json","text":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only, session run-ec31ee938e1f509cd7130c03. OBSERVATION/PROVENANCE: verifier plan verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 requires complete ret 4 at 0x00779912 with stop 0x00779913. Analyst run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt line 79 shows c2 04 00 through 0x00779914; checkpoint 1d04a2672a212e8b1fb37297 rehashed plan to 78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc and authority to 973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8, matching prior plan hash and analyst manifest. Analyst a20/a28 raw streams show terminal 74 versus 74 10 at 0x00779a1f; section-byte control contains 74 10 8b cf e8 28 6a ff ff. Instrument output is boundary-sensitive even when its mnemonic/target looks complete. This falsifies a verifier expectation before execution, not analyst authority or game behavior.\\nIDENTITY/EXECUTION: assigned Git HEAD/common roots match engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Historical analyst manifest binds binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd GNU 2.38, and twelve explicit commands with zero exits, nonempty stdout and empty stderr. These are positive archived static executions, not fresh resolver executions. Binary/tool not freshly rehashed here. Current runner engine digest matches ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; RE runner digest e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Separate open surprise s-210e489610197533e4f4cce1 blocks source-identical reproduction. No stale-build/game-mechanism diagnosis. No runtime instrument neutrality, allocator, RNG or game execution measured.\\nCLAIMS: O... (line truncated to 2000 chars)\n \"id\": \"d-6e30d172051af0385f5979eb\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-1d04a2672a212e8b1fb37297.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest boundary discriminator, NOT run here: after s-210e489610197533e4f4cce1 source reconciliation and lead authorization, checkpoint a fresh independent verifier session and new fail-if-exists directory. Rehash binary, objdump/interpreter, recipe, paired source and archived-save inputs before/after. Run /usr/bin/objdump -D -Mintel --start-address=0x00779850 against dumps/sots.exe twice, stops 0x00779913 and 0x00779915, plus full authority stop 0x00779930. Independently map PE VA 0x00779912..0x00779914 to file offsets and read bytes directly (not only a second disassembly). Predict c2-only truncated byte row at bad stop and c2 04 00 ret 4 at aligned stop, no changed preceding complete rows; preserve mnemonic/bytes separately. Normal-return stop must not be counted as unwind coverage. Keep a20 negative and aligned a21/a23/a28 controls, all other ABI/save falsifiers and explicit unexercised runtime states. Record actual commands, timestamps, exits, raw stdout/stderr hashes, positive executions and all missing/skipped states; reject drift, unexpected stderr, zero execution or contradiction. Mark original prediction failed, repaired control unblinded/new, never retroactive success. Immediate next action is lead scheduling a read-only manifest-delta review for source surprise, not this blocked reproduction.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-81ffc3041e1f07b87928e6f2\",\n \"timestamp\": \"2026-09-10T13:06:19.620541+00:00\"\n}","lineStart":1,"lineEnd":14,"totalLines":14,"truncated":false}},"title":"campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json","time":{"start":1789045998196,"end":1789045998232}},"metadata":{"openai":{"itemId":"fc_0b3401ccd359d84a016aa2acede40c87d1825bdb8d4ed7c679"}},"id":"prt_08b73825f001B2WSSMOW8aT6Si","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b73305f001iI08s5gbT8IoMg"}} +{"type":"tool_use","timestamp":1789045998240,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_XQLHkGMq2vXqqUptZBw6oJXQ","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-210e489610197533e4f4cce1.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\nfile\n\n1: {\n2: \"actor\": \"research-problem-resolver\",\n3: \"contract\": \"research-completion-abi\",\n4: \"decision\": \"d-e9d6d48cd77538556d1a1c1f\",\n5: \"id\": \"s-210e489610197533e4f4cce1\",\n6: \"model\": \"openai/gpt-6-astra\",\n7: \"probe\": \"Lead or authorized source-identity analyst compares the prior analyst/verifier launch RE file manifests with resolver source_before, naming every added/deleted/byte/mode-changed source path and confirming actual current paired source-binding. Preserve both manifests. Astra must decide explicit reconciliation or source-identical snapshot restoration by its owner before reproduction; no autonomous reset/copy or new source hash attached to old evidence.\",\n8: \"role\": \"resolver\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Resolver session run-ec31ee938e1f509cd7130c03 found source identity drift before any experiment: launch record campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json source_before RE manifest_sha256 is e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 (line 5053), not analyst run-9daf5c3b75547271d5c3b4ed manifest source_before/source_after 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 and verifier checkpoint 4555678e34291015554e7e88. Engine launch digest still ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; Git HEADs/common dirs independently match pinned baselines. Same HEAD does not imply source-identical reproduction. Cause and relevance of changed RE inventory not yet measured; do not attach this binding to old measurements or infer a stale game build. No lab/source mutation or new capture executed.\",\n12: \"timestamp\": \"2026-09-10T13:05:26.974324+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-e9d6d48cd77538556d1a1c1f\",\n \"id\": \"s-210e489610197533e4f4cce1\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Lead or authorized source-identity analyst compares the prior analyst/verifier launch RE file manifests with resolver source_before, naming every added/deleted/byte/mode-changed source path and confirming actual current paired source-binding. Preserve both manifests. Astra must decide explicit reconciliation or source-identical snapshot restoration by its owner before reproduction; no autonomous reset/copy or new source hash attached to old evidence.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Resolver session run-ec31ee938e1f509cd7130c03 found source identity drift before any experiment: launch record campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json source_before RE manifest_sha256 is e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 (line 5053), not analyst run-9daf5c3b75547271d5c3b4ed manifest source_before/source_after 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 and verifier checkpoint 4555678e34291015554e7e88. Engine launch digest still ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; Git HEADs/common dirs independently match pinned baselines. Same HEAD does not imply source-identical reproduction. Cause and relevance of changed RE inventory not yet measured; do not attach this binding to old measurements or infer a stale game build. No lab/source mutation or new capture executed.\",\n \"timestamp\": \"2026-09-10T13:05:26.974324+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-210e489610197533e4f4cce1.json","text":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-e9d6d48cd77538556d1a1c1f\",\n \"id\": \"s-210e489610197533e4f4cce1\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Lead or authorized source-identity analyst compares the prior analyst/verifier launch RE file manifests with resolver source_before, naming every added/deleted/byte/mode-changed source path and confirming actual current paired source-binding. Preserve both manifests. Astra must decide explicit reconciliation or source-identical snapshot restoration by its owner before reproduction; no autonomous reset/copy or new source hash attached to old evidence.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Resolver session run-ec31ee938e1f509cd7130c03 found source identity drift before any experiment: launch record campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json source_before RE manifest_sha256 is e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 (line 5053), not analyst run-9daf5c3b75547271d5c3b4ed manifest source_before/source_after 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 and verifier checkpoint 4555678e34291015554e7e88. Engine launch digest still ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; Git HEADs/common dirs independently match pinned baselines. Same HEAD does not imply source-identical reproduction. Cause and relevance of changed RE inventory not yet measured; do not attach this binding to old measurements or infer a stale game build. No lab/source mutation or new capture executed.\",\n \"timestamp\": \"2026-09-10T13:05:26.974324+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-210e489610197533e4f4cce1.json","time":{"start":1789045998200,"end":1789045998234}},"metadata":{"openai":{"itemId":"fc_0b3401ccd359d84a016aa2acede41887d1bc93cebfd6b6c7cc"}},"id":"prt_08b738275001hq6QTKHQlQuqwA","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b73305f001iI08s5gbT8IoMg"}} +{"type":"tool_use","timestamp":1789045998240,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_mdFyiht1fbru6KwdzhejCZTq","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md"},"output":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\nfile\n\n1: # Verification plan — run-d6c4dc15e9f4d15155fee856\n2: \n3: Role `verifier`; actor `research-abi-correction-verifier`; requested model\n4: `openai/gpt-5.6-sol`. This plan predates this session's disassembly and save-state experiments.\n5: \n6: ## Scope separation\n7: \n8: The analyst package is a fresh **static capture**, not live allocator execution, original-assisted\n9: execution, partial/full compare, independent replacement, or integrated replay. This verifier will\n10: independently reproduce static instruction/byte facts and archived save values only. It will not\n11: claim runtime allocator safety, event posting, replacement acceptance, or integrated-tree evidence.\n12: \n13: ## Falsifiers\n14: \n15: 1. Reject if contract/campaign validation fails, an open surprise exists, either paired worktree is\n16: not at its pinned baseline/common repository, source binding differs from the handoff, or binary\n17: or objdump identity differs. Dirty trees are acceptable only when their full source digests match.\n18: 2. Reject zero executions, nonzero command exits, empty required stdout, unexpected stderr/skips,\n19: missing streams, reused output, or a manifest/session mismatch.\n20: 3. Require stop `0x00779a20` to be incomplete despite exit zero: raw bytes must show `74 10` while\n21: decoded output at `0x00779a1f` shows only `74`. If counted as a complete stream, reject.\n22: 4. Require aligned stops `0x00779a21`, `0x00779a23`, and `0x00779a28` to add exactly complete\n23: `74 10`, `8b cf`, and `e8 28 6a ff ff` rows. Any truncated terminal row or non-prefix change in\n24: the shared decoded range rejects the boundary interpretation.\n25: 5. Independently hold out stop `0x00779913` for nested-copy authority. It must include complete\n26: `ret 4` at `0x00779912` without entering the later routine; compare it with raw terminal bytes.\n27: A bad terminal boundary or changed preceding rows falsifies the package's authority boundary.\n28: 6. Check key ABI claims directly: get/create and outer append end `ret 4`; nested destruction ends\n29: `ret`; nested copy has normal `ret 4`, unwind cleanup, and deallocation paths; get/create has no\n30: write to temporary `[ebp-0x20]` before append, copies source `+4`, cleans the temporary nested\n31: vector, then stores requested turn to the stored element. Contradictory def/use evidence pauses.\n32: 7. Independently parse the archived save, not narrative counters. Require the named player/event\n33: container elements, IDs, strings, exact `0x7f7fffff` position words, and empty player states to\n34: match. Missing parse coverage or unexpected skips reject archived-value validation.\n35: 8. Check actual RNG evidence independently: static helper captures execute no game and therefore\n36: expose no RNG state/draws. Any claim that unchanged/zero RNG was measured by these captures is a\n37: failure. Archived W1 unchanged RNG remains historical and outside this static reproduction.\n38: \n39: ## Required branch exposures and distinct states\n40: \n41: Static instruction exposure required now: existing last-match return versus miss; spare-capacity\n42: append versus full-capacity growth edges; empty versus nonempty nested copy; null versus nonnull\n43: nested destruction; normal return versus unwind cleanup; short/long string branch instructions;\n44: known-bad truncated versus aligned boundary. Instruction exposure is not runtime execution.\n45: \n46: Runtime states still unexercised and must remain explicit residuals: existing-last-match, miss with\n47: spare/full outer capacity, empty/nonempty nested vectors owning short/long strings, deliberate\n48: allocation failure/throw, duplicate/description-only-different events, and transient stack\n49: sentinels. Archived save states are distinct from all of those and validate serialized values only.\n50: \n51: ## Planned reproduction\n52: \n53: Create a fail-if-exists session directory owned by this verifier. Use an independent script, not the\n54: analyst's hard-coded recipe, to bind source/input/tool identities, run the package windows and held-\n55: out boundary, archive raw stdout/stderr, parse instruction rows and save values, and emit a manifest\n56: whose failed predictions/residuals remain failures or limitations.\n\n(End of file - total 56 lines)\n","metadata":{"preview":"# Verification plan — run-d6c4dc15e9f4d15155fee856\n\nRole `verifier`; actor `research-abi-correction-verifier`; requested model\n`openai/gpt-5.6-sol`. This plan predates this session's disassembly and save-state experiments.\n\n## Scope separation\n\nThe analyst package is a fresh **static capture**, not live allocator execution, original-assisted\nexecution, partial/full compare, independent replacement, or integrated replay. This verifier will\nindependently reproduce static instruction/byte facts and archived save values only. It will not\nclaim runtime allocator safety, event posting, replacement acceptance, or integrated-tree evidence.\n\n## Falsifiers\n\n1. Reject if contract/campaign validation fails, an open surprise exists, either paired worktree is\n not at its pinned baseline/common repository, source binding differs from the handoff, or binary\n or objdump identity differs. Dirty trees are acceptable only when their full source digests match.\n2. Reject zero executions, nonzero command exits, empty required stdout, unexpected stderr/skips,\n missing streams, reused output, or a manifest/session mismatch.\n3. Require stop `0x00779a20` to be incomplete despite exit zero: raw bytes must show `74 10` while","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md","text":"# Verification plan — run-d6c4dc15e9f4d15155fee856\n\nRole `verifier`; actor `research-abi-correction-verifier`; requested model\n`openai/gpt-5.6-sol`. This plan predates this session's disassembly and save-state experiments.\n\n## Scope separation\n\nThe analyst package is a fresh **static capture**, not live allocator execution, original-assisted\nexecution, partial/full compare, independent replacement, or integrated replay. This verifier will\nindependently reproduce static instruction/byte facts and archived save values only. It will not\nclaim runtime allocator safety, event posting, replacement acceptance, or integrated-tree evidence.\n\n## Falsifiers\n\n1. Reject if contract/campaign validation fails, an open surprise exists, either paired worktree is\n not at its pinned baseline/common repository, source binding differs from the handoff, or binary\n or objdump identity differs. Dirty trees are acceptable only when their full source digests match.\n2. Reject zero executions, nonzero command exits, empty required stdout, unexpected stderr/skips,\n missing streams, reused output, or a manifest/session mismatch.\n3. Require stop `0x00779a20` to be incomplete despite exit zero: raw bytes must show `74 10` while\n decoded output at `0x00779a1f` shows only `74`. If counted as a complete stream, reject.\n4. Require aligned stops `0x00779a21`, `0x00779a23`, and `0x00779a28` to add exactly complete\n `74 10`, `8b cf`, and `e8 28 6a ff ff` rows. Any truncated terminal row or non-prefix change in\n the shared decoded range rejects the boundary interpretation.\n5. Independently hold out stop `0x00779913` for nested-copy authority. It must include complete\n `ret 4` at `0x00779912` without entering the later routine; compare it with raw terminal bytes.\n A bad terminal boundary or changed preceding rows falsifies the package's authority boundary.\n6. Check key ABI claims directly: get/create and outer append end `ret 4`; nested destruction ends\n `ret`; nested copy has normal `ret 4`, unwind cleanup, and deallocation paths; get/create has no\n write to temporary `[ebp-0x20]` before append, copies source `+4`, cleans the temporary nested\n vector, then stores requested turn to the stored element. Contradictory def/use evidence pauses.\n7. Independently parse the archived save, not narrative counters. Require the named player/event\n container elements, IDs, strings, exact `0x7f7fffff` position words, and empty player states to\n match. Missing parse coverage or unexpected skips reject archived-value validation.\n8. Check actual RNG evidence independently: static helper captures execute no game and therefore\n expose no RNG state/draws. Any claim that unchanged/zero RNG was measured by these captures is a\n failure. Archived W1 unchanged RNG remains historical and outside this static reproduction.\n\n## Required branch exposures and distinct states\n\nStatic instruction exposure required now: existing last-match return versus miss; spare-capacity\nappend versus full-capacity growth edges; empty versus nonempty nested copy; null versus nonnull\nnested destruction; normal return versus unwind cleanup; short/long string branch instructions;\nknown-bad truncated versus aligned boundary. Instruction exposure is not runtime execution.\n\nRuntime states still unexercised and must remain explicit residuals: existing-last-match, miss with\nspare/full outer capacity, empty/nonempty nested vectors owning short/long strings, deliberate\nallocation failure/throw, duplicate/description-only-different events, and transient stack\nsentinels. Archived save states are distinct from all of those and validate serialized values only.\n\n## Planned reproduction\n\nCreate a fail-if-exists session directory owned by this verifier. Use an independent script, not the\nanalyst's hard-coded recipe, to bind source/input/tool identities, run the package windows and held-\nout boundary, archive raw stdout/stderr, parse instruction rows and save values, and emit a manifest\nwhose failed predictions/residuals remain failures or limitations.","lineStart":1,"lineEnd":56,"totalLines":56,"truncated":false}},"title":"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md","time":{"start":1789045998213,"end":1789045998237}},"metadata":{"openai":{"itemId":"fc_0b3401ccd359d84a016aa2acede42887d1be59ad19681a7cfe"}},"id":"prt_08b738280001ovNN4P1RakICB6","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b73305f001iI08s5gbT8IoMg"}} +{"type":"tool_use","timestamp":1789045998252,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_Y9O43tvYDzV16lKNQWKrUDit","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\nfile\n\n1: {\n2: \"schema\": \"sots-abi-static-capture/1\",\n3: \"session\": \"run-9daf5c3b75547271d5c3b4ed\",\n4: \"actor\": \"research-abi-analyst\",\n5: \"role\": \"analyst\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"timestamp\": \"2026-09-10T04:59:38.840348+00:00\",\n8: \"decisions\": [\n9: \"d-fd5aff1eaf78a8c15d96723c\",\n10: \"d-0bb927e63b915c87a58d4257\"\n11: ],\n12: \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n13: \"negative_preflight\": [\n14: {\n15: \"name\": \"reject-missing-session\",\n16: \"status\": \"pass\",\n17: \"rejection\": \"missing session\"\n18: },\n19: {\n20: \"name\": \"reject-stale-session\",\n21: \"status\": \"pass\",\n22: \"rejection\": \"stale or unexpected session\"\n23: },\n24: {\n25: \"name\": \"reject-stale-output\",\n26: \"status\": \"pass\",\n27: \"rejection\": \"output location is not bound to session\"\n28: },\n29: {\n30: \"name\": \"reject-reused-output\",\n31: \"status\": \"pass\",\n32: \"rejection\": \"output location was already used\"\n33: }\n34: ],\n35: \"source_before\": {\n36: \"argv\": [\n37: \"python3\",\n38: \"/home/alex/sots-re/tools/campaign.py\",\n39: \"--state-root\",\n40: \"/home/alex/sots-re\",\n41: \"source-binding\",\n42: \"research-completion-abi\",\n43: \"--engine-worktree\",\n44: \"/tmp/opencode/sots-final-research-engine\",\n45: \"--re-worktree\",\n46: \"/tmp/opencode/sots-final-research-re\"\n47: ],\n48: \"value\": {\n49: \"engine\": {\n50: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n51: \"path\": \"/tmp/opencode/sots-final-research-engine\",\n52: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n53: },\n54: \"re\": {\n55: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n56: \"path\": \"/tmp/opencode/sots-final-research-re\",\n57: \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n58: }\n59: }\n60: },\n61: \"source_after\": {\n62: \"argv\": [\n63: \"python3\",\n64: \"/home/alex/sots-re/tools/campaign.py\",\n65: \"--state-root\",\n66: \"/home/alex/sots-re\",\n67: \"source-binding\",\n68: \"research-completion-abi\",\n69: \"--engine-worktree\",\n70: \"/tmp/opencode/sots-final-research-engine\",\n71: \"--re-worktree\",\n72: \"/tmp/opencode/sots-final-research-re\"\n73: ],\n74: \"value\": {\n75: \"engine\": {\n76: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n77: \"path\": \"/tmp/opencode/sots-final-research-engine\",\n78: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n79: },\n80: \"re\": {\n81: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n82: \"path\": \"/tmp/opencode/sots-final-research-re\",\n83: \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n84: }\n85: }\n86: },\n87: \"input\": {\n88: \"path\": \"/home/alex/sots-re/dumps/sots.exe\",\n89: \"bytes\": 7898624,\n90: \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n91: },\n92: \"tool\": {\n93: \"path\": \"/usr/bin/objdump\",\n94: \"bytes\": 373888,\n95: \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n96: \"version\": \"GNU objdump (GNU Binutils for Ubuntu) 2.38\"\n97: },\n98: \"commands\": [\n99: {\n100: \"name\": \"turn-get-create-exact\",\n101: \"classification\": \"complete-control\",\n102: \"argv\": [\n103: \"/usr/bin/objdump\",\n104: \"-D\",\n105: \"-Mintel\",\n106: \"--start-address=0x00885380\",\n107: \"--stop-address=0x0088544a\",\n108: \"/home/alex/sots-re/dumps/sots.exe\"\n109: ],\n110: \"cwd\": \"/home/alex/sots-re\",\n111: \"returncode\": 0,\n112: \"stdout\": {\n113: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stdout.txt\",\n114: \"bytes\": 3974,\n115: \"sha256\": \"f6e72ba9b08fdf48d70f39379b2fb30a5adbe796072485f70c5795c10ab45ca3\"\n116: },\n117: \"stderr\": {\n118: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stderr.txt\",\n119: \"bytes\": 0,\n120: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n121: }\n122: },\n123: {\n124: \"name\": \"turn-get-create-wide\",\n125: \"classification\": \"boundary-audit\",\n126: \"argv\": [\n127: \"/usr/bin/objdump\",\n128: \"-D\",\n129: \"-Mintel\",\n130: \"--start-address=0x00885380\",\n131: \"--stop-address=0x0088544e\",\n132: \"/home/alex/sots-re/dumps/sots.exe\"\n133: ],\n134: \"cwd\": \"/home/alex/sots-re\",\n135: \"returncode\": 0,\n136: \"stdout\": {\n137: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stdout.txt\",\n138: \"bytes\": 4134,\n139: \"sha256\": \"9cb7d2ccfcc645b3b642e520ba51c85330c57d6d4395ed3fbd4a4a1950436e80\"\n140: },\n141: \"stderr\": {\n142: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stderr.txt\",\n143: \"bytes\": 0,\n144: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n145: }\n146: },\n147: {\n148: \"name\": \"turn-append-exact\",\n149: \"classification\": \"complete-control\",\n150: \"argv\": [\n151: \"/usr/bin/objdump\",\n152: \"-D\",\n153: \"-Mintel\",\n154: \"--start-address=0x00884cb0\",\n155: \"--stop-address=0x00884d8f\",\n156: \"/home/alex/sots-re/dumps/sots.exe\"\n157: ],\n158: \"cwd\": \"/home/alex/sots-re\",\n159: \"returncode\": 0,\n160: \"stdout\": {\n161: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stdout.txt\",\n162: \"bytes\": 4179,\n163: \"sha256\": \"57d6655feed0fc137bb2b7eee4bfcb09536b5a715603c917ee142770f1d52a15\"\n164: },\n165: \"stderr\": {\n166: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stderr.txt\",\n167: \"bytes\": 0,\n168: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n169: }\n170: },\n171: {\n172: \"name\": \"turn-append-wide\",\n173: \"classification\": \"boundary-audit\",\n174: \"argv\": [\n175: \"/usr/bin/objdump\",\n176: \"-D\",\n177: \"-Mintel\",\n178: \"--start-address=0x00884cb0\",\n179: \"--stop-address=0x00884d93\",\n180: \"/home/alex/sots-re/dumps/sots.exe\"\n181: ],\n182: \"cwd\": \"/home/alex/sots-re\",\n183: \"returncode\": 0,\n184: \"stdout\": {\n185: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stdout.txt\",\n186: \"bytes\": 4309,\n187: \"sha256\": \"957339f40b2af8947cb883cc1d3a9d1e151bf7663305415065472ef9171dc33d\"\n188: },\n189: \"stderr\": {\n190: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stderr.txt\",\n191: \"bytes\": 0,\n192: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n193: }\n194: },\n195: {\n196: \"name\": \"nested-dtor-exact\",\n197: \"classification\": \"complete-control\",\n198: \"argv\": [\n199: \"/usr/bin/objdump\",\n200: \"-D\",\n201: \"-Mintel\",\n202: \"--start-address=0x00629580\",\n203: \"--stop-address=0x006295ca\",\n204: \"/home/alex/sots-re/dumps/sots.exe\"\n205: ],\n206: \"cwd\": \"/home/alex/sots-re\",\n207: \"returncode\": 0,\n208: \"stdout\": {\n209: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stdout.txt\",\n210: \"bytes\": 1727,\n211: \"sha256\": \"3c38887e60d009ab904772b13be93ac1eedd9bee85024e37110160a625db3a83\"\n212: },\n213: \"stderr\": {\n214: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stderr.txt\",\n215: \"bytes\": 0,\n216: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n217: }\n218: },\n219: {\n220: \"name\": \"nested-dtor-wide\",\n221: \"classification\": \"boundary-audit\",\n222: \"argv\": [\n223: \"/usr/bin/objdump\",\n224: \"-D\",\n225: \"-Mintel\",\n226: \"--start-address=0x00629580\",\n227: \"--stop-address=0x006295ce\",\n228: \"/home/alex/sots-re/dumps/sots.exe\"\n229: ],\n230: \"cwd\": \"/home/alex/sots-re\",\n231: \"returncode\": 0,\n232: \"stdout\": {\n233: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stdout.txt\",\n234: \"bytes\": 1887,\n235: \"sha256\": \"0aba6fc800760e3a113c07238cfb6e721623eb0bb8a933a990d3e2e82823d00f\"\n236: },\n237: \"stderr\": {\n238: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stderr.txt\",\n239: \"bytes\": 0,\n240: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n241: }\n242: },\n243: {\n244: \"name\": \"nested-copy-authority\",\n245: \"classification\": \"bounded-authority\",\n246: \"argv\": [\n247: \"/usr/bin/objdump\",\n248: \"-D\",\n249: \"-Mintel\",\n250: \"--start-address=0x00779850\",\n251: \"--stop-address=0x00779930\",\n252: \"/home/alex/sots-re/dumps/sots.exe\"\n253: ],\n254: \"cwd\": \"/home/alex/sots-re\",\n255: \"returncode\": 0,\n256: \"stdout\": {\n257: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n258: \"bytes\": 4465,\n259: \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n260: },\n261: \"stderr\": {\n262: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stderr.txt\",\n263: \"bytes\": 0,\n264: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n265: }\n266: },\n267: {\n268: \"name\": \"nested-copy-stop-a20\",\n269: \"classification\": \"expected-truncated-negative\",\n270: \"argv\": [\n271: \"/usr/bin/objdump\",\n272: \"-D\",\n273: \"-Mintel\",\n274: \"--start-address=0x00779850\",\n275: \"--stop-address=0x00779a20\",\n276: \"/home/alex/sots-re/dumps/sots.exe\"\n277: ],\n278: \"cwd\": \"/home/alex/sots-re\",\n279: \"returncode\": 0,\n280: \"stdout\": {\n281: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\",\n282: \"bytes\": 8469,\n283: \"sha256\": \"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\"\n284: },\n285: \"stderr\": {\n286: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stderr.txt\",\n287: \"bytes\": 0,\n288: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n289: }\n290: },\n291: {\n292: \"name\": \"nested-copy-stop-a21\",\n293: \"classification\": \"predicted-complete-je\",\n294: \"argv\": [\n295: \"/usr/bin/objdump\",\n296: \"-D\",\n297: \"-Mintel\",\n298: \"--start-address=0x00779850\",\n299: \"--stop-address=0x00779a21\",\n300: \"/home/alex/sots-re/dumps/sots.exe\"\n301: ],\n302: \"cwd\": \"/home/alex/sots-re\",\n303: \"returncode\": 0,\n304: \"stdout\": {\n305: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stdout.txt\",\n306: \"bytes\": 8471,\n307: \"sha256\": \"b6d58767d00328c37139f439db480c9bb5ce6767dabf212f9e750a31fea0d3d7\"\n308: },\n309: \"stderr\": {\n310: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stderr.txt\",\n311: \"bytes\": 0,\n312: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n313: }\n314: },\n315: {\n316: \"name\": \"nested-copy-stop-a23\",\n317: \"classification\": \"predicted-complete-mov\",\n318: \"argv\": [\n319: \"/usr/bin/objdump\",\n320: \"-D\",\n321: \"-Mintel\",\n322: \"--start-address=0x00779850\",\n323: \"--stop-address=0x00779a23\",\n324: \"/home/alex/sots-re/dumps/sots.exe\"\n325: ],\n326: \"cwd\": \"/home/alex/sots-re\",\n327: \"returncode\": 0,\n328: \"stdout\": {\n329: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stdout.txt\",\n330: \"bytes\": 8518,\n331: \"sha256\": \"e8cc66eb74730fcf7853d66df8caa620ddb3fc8c75335f0573ac490037a7a88e\"\n332: },\n333: \"stderr\": {\n334: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stderr.txt\",\n335: \"bytes\": 0,\n336: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n337: }\n338: },\n339: {\n340: \"name\": \"nested-copy-stop-a28\",\n341: \"classification\": \"complete-call-boundary-control\",\n342: \"argv\": [\n343: \"/usr/bin/objdump\",\n344: \"-D\",\n345: \"-Mintel\",\n346: \"--start-address=0x00779850\",\n347: \"--stop-address=0x00779a28\",\n348: \"/home/alex/sots-re/dumps/sots.exe\"\n349: ],\n350: \"cwd\": \"/home/alex/sots-re\",\n351: \"returncode\": 0,\n352: \"stdout\": {\n353: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\",\n354: \"bytes\": 8566,\n355: \"sha256\": \"7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560\"\n356: },\n357: \"stderr\": {\n358: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stderr.txt\",\n359: \"bytes\": 0,\n360: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n361: }\n362: },\n363: {\n364: \"name\": \"nested-copy-boundary-bytes\",\n365: \"classification\": \"raw-byte-boundary-control\",\n366: \"argv\": [\n367: \"/usr/bin/objdump\",\n368: \"-s\",\n369: \"-j\",\n370: \".text\",\n371: \"--start-address=0x00779a1f\",\n372: \"--stop-address=0x00779a28\",\n373: \"/home/alex/sots-re/dumps/sots.exe\"\n374: ],\n375: \"cwd\": \"/home/alex/sots-re\",\n376: \"returncode\": 0,\n377: \"stdout\": {\n378: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\",\n379: \"bytes\": 151,\n380: \"sha256\": \"b2d9b57274be71fcdd853f04758bc65d701e7b4cc169d0d5ede24c8788ef82d5\"\n381: },\n382: \"stderr\": {\n383: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stderr.txt\",\n384: \"bytes\": 0,\n385: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n386: }\n387: }\n388: ],\n389: \"checks\": [\n390: {\n391: \"name\": \"explicit-session\",\n392: \"status\": \"pass\"\n393: },\n394: {\n395: \"name\": \"session-output-match\",\n396: \"status\": \"pass\"\n397: },\n398: {\n399: \"name\": \"negative-preflight-all-rejected\",\n400: \"status\": \"pass\"\n401: },\n402: {\n403: \"name\": \"binary-hash\",\n404: \"status\": \"pass\"\n405: },\n406: {\n407: \"name\": \"tool-hash\",\n408: \"status\": \"pass\"\n409: },\n410: {\n411: \"name\": \"source-stable\",\n412: \"status\": \"pass\"\n413: },\n414: {\n415: \"name\": \"all-return-zero\",\n416: \"status\": \"pass\"\n417: },\n418: {\n419: \"name\": \"all-stdout-nonempty\",\n420: \"status\": \"pass\"\n421: },\n422: {\n423: \"name\": \"all-stderr-empty\",\n424: \"status\": \"pass\"\n425: }\n426: ],\n427: \"failed\": []\n428: }\n\n(End of file - total 428 lines)\n","metadata":{"preview":"{\n \"schema\": \"sots-abi-static-capture/1\",\n \"session\": \"run-9daf5c3b75547271d5c3b4ed\",\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": \"2026-09-10T04:59:38.840348+00:00\",\n \"decisions\": [\n \"d-fd5aff1eaf78a8c15d96723c\",\n \"d-0bb927e63b915c87a58d4257\"\n ],\n \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n \"negative_preflight\": [\n {\n \"name\": \"reject-missing-session\",\n \"status\": \"pass\",\n \"rejection\": \"missing session\"\n },\n {\n \"name\": \"reject-stale-session\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json","text":"{\n \"schema\": \"sots-abi-static-capture/1\",\n \"session\": \"run-9daf5c3b75547271d5c3b4ed\",\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": \"2026-09-10T04:59:38.840348+00:00\",\n \"decisions\": [\n \"d-fd5aff1eaf78a8c15d96723c\",\n \"d-0bb927e63b915c87a58d4257\"\n ],\n \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n \"negative_preflight\": [\n {\n \"name\": \"reject-missing-session\",\n \"status\": \"pass\",\n \"rejection\": \"missing session\"\n },\n {\n \"name\": \"reject-stale-session\",\n \"status\": \"pass\",\n \"rejection\": \"stale or unexpected session\"\n },\n {\n \"name\": \"reject-stale-output\",\n \"status\": \"pass\",\n \"rejection\": \"output location is not bound to session\"\n },\n {\n \"name\": \"reject-reused-output\",\n \"status\": \"pass\",\n \"rejection\": \"output location was already used\"\n }\n ],\n \"source_before\": {\n \"argv\": [\n \"python3\",\n \"/home/alex/sots-re/tools/campaign.py\",\n \"--state-root\",\n \"/home/alex/sots-re\",\n \"source-binding\",\n \"research-completion-abi\",\n \"--engine-worktree\",\n \"/tmp/opencode/sots-final-research-engine\",\n \"--re-worktree\",\n \"/tmp/opencode/sots-final-research-re\"\n ],\n \"value\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n }\n },\n \"source_after\": {\n \"argv\": [\n \"python3\",\n \"/home/alex/sots-re/tools/campaign.py\",\n \"--state-root\",\n \"/home/alex/sots-re\",\n \"source-binding\",\n \"research-completion-abi\",\n \"--engine-worktree\",\n \"/tmp/opencode/sots-final-research-engine\",\n \"--re-worktree\",\n \"/tmp/opencode/sots-final-research-re\"\n ],\n \"value\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n }\n },\n \"input\": {\n \"path\": \"/home/alex/sots-re/dumps/sots.exe\",\n \"bytes\": 7898624,\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n },\n \"tool\": {\n \"path\": \"/usr/bin/objdump\",\n \"bytes\": 373888,\n \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n \"version\": \"GNU objdump (GNU Binutils for Ubuntu) 2.38\"\n },\n \"commands\": [\n {\n \"name\": \"turn-get-create-exact\",\n \"classification\": \"complete-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00885380\",\n \"--stop-address=0x0088544a\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stdout.txt\",\n \"bytes\": 3974,\n \"sha256\": \"f6e72ba9b08fdf48d70f39379b2fb30a5adbe796072485f70c5795c10ab45ca3\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"turn-get-create-wide\",\n \"classification\": \"boundary-audit\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00885380\",\n \"--stop-address=0x0088544e\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stdout.txt\",\n \"bytes\": 4134,\n \"sha256\": \"9cb7d2ccfcc645b3b642e520ba51c85330c57d6d4395ed3fbd4a4a1950436e80\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"turn-append-exact\",\n \"classification\": \"complete-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00884cb0\",\n \"--stop-address=0x00884d8f\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stdout.txt\",\n \"bytes\": 4179,\n \"sha256\": \"57d6655feed0fc137bb2b7eee4bfcb09536b5a715603c917ee142770f1d52a15\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"turn-append-wide\",\n \"classification\": \"boundary-audit\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00884cb0\",\n \"--stop-address=0x00884d93\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stdout.txt\",\n \"bytes\": 4309,\n \"sha256\": \"957339f40b2af8947cb883cc1d3a9d1e151bf7663305415065472ef9171dc33d\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-dtor-exact\",\n \"classification\": \"complete-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00629580\",\n \"--stop-address=0x006295ca\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stdout.txt\",\n \"bytes\": 1727,\n \"sha256\": \"3c38887e60d009ab904772b13be93ac1eedd9bee85024e37110160a625db3a83\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-dtor-wide\",\n \"classification\": \"boundary-audit\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00629580\",\n \"--stop-address=0x006295ce\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stdout.txt\",\n \"bytes\": 1887,\n \"sha256\": \"0aba6fc800760e3a113c07238cfb6e721623eb0bb8a933a990d3e2e82823d00f\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-authority\",\n \"classification\": \"bounded-authority\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779930\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n \"bytes\": 4465,\n \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a20\",\n \"classification\": \"expected-truncated-negative\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a20\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\",\n \"bytes\": 8469,\n \"sha256\": \"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a21\",\n \"classification\": \"predicted-complete-je\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a21\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stdout.txt\",\n \"bytes\": 8471,\n \"sha256\": \"b6d58767d00328c37139f439db480c9bb5ce6767dabf212f9e750a31fea0d3d7\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a23\",\n \"classification\": \"predicted-complete-mov\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a23\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stdout.txt\",\n \"bytes\": 8518,\n \"sha256\": \"e8cc66eb74730fcf7853d66df8caa620ddb3fc8c75335f0573ac490037a7a88e\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a28\",\n \"classification\": \"complete-call-boundary-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a28\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\",\n \"bytes\": 8566,\n \"sha256\": \"7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-boundary-bytes\",\n \"classification\": \"raw-byte-boundary-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-s\",\n \"-j\",\n \".text\",\n \"--start-address=0x00779a1f\",\n \"--stop-address=0x00779a28\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\",\n \"bytes\": 151,\n \"sha256\": \"b2d9b57274be71fcdd853f04758bc65d701e7b4cc169d0d5ede24c8788ef82d5\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n }\n ],\n \"checks\": [\n {\n \"name\": \"explicit-session\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"session-output-match\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"negative-preflight-all-rejected\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"binary-hash\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"tool-hash\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"source-stable\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all-return-zero\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all-stdout-nonempty\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all-stderr-empty\",\n \"status\": \"pass\"\n }\n ],\n \"failed\": []\n}","lineStart":1,"lineEnd":428,"totalLines":428,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json","time":{"start":1789045998218,"end":1789045998250}},"metadata":{"openai":{"itemId":"fc_0b3401ccd359d84a016aa2acede43487d18049b8097e7d66a1"}},"id":"prt_08b738286001QCyCQHMHiBZac8","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b73305f001iI08s5gbT8IoMg"}} +{"type":"step_finish","timestamp":1789045998348,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7383080010nVhmsXE7RTF34","reason":"tool-calls","snapshot":"c8a3f872c040acc410b606efe5c62169bf972ec8","messageID":"msg_08b73305f001iI08s5gbT8IoMg","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":15274,"input":14853,"output":315,"reasoning":106,"cache":{"write":0,"read":0}},"cost":0}} +{"type":"step_start","timestamp":1789046001087,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b738dbc001zfhwi4t02ZxQlb","messageID":"msg_08b738344001WqbSoH4EC67C1I","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"af325b5db3456e2d7f2859e5a7370ebb98caca99","type":"step-start"}} +{"type":"tool_use","timestamp":1789046012719,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_WgmDkZyaEf49SpxqpApl9yEZ","state":{"status":"completed","input":{"command":"git status --short","workdir":"/home/alex/sots-re"},"output":" M README.md\n M campaign/contracts/research-completion-abi.json\n M campaign/runtime/runs/active-research-completion-abi.json\n M campaign/runtime/verdicts/research-completion-abi.json\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? campaign/runtime/checkpoints/research-completion-abi-1d04a2672a212e8b1fb37297.json\n?? campaign/runtime/checkpoints/research-completion-abi-3fc22ea3c402274179ce4d1f.json\n?? campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json\n?? campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\n?? campaign/runtime/checkpoints/research-completion-abi-c80088956234568ade0a27fb.json\n?? campaign/runtime/checkpoints/research-completion-abi-f15d822f91601241181df05a.json\n?? campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json\n?? campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json\n?? campaign/runtime/runs/run-35e59053176da458d8b46fea.json\n?? campaign/runtime/runs/run-35e59053176da458d8b46fea.jsonl\n?? campaign/runtime/runs/run-35e59053176da458d8b46fea.stderr.log\n?? campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.json\n?? campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.jsonl\n?? campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.stderr.log\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.json\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.jsonl\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.stderr.log\n?? campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json\n?? campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.jsonl\n?? campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.stderr.log\n?? campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json\n?? campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.jsonl\n?? campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.stderr.log\n?? campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\n?? campaign/runtime/surprises/s-81ffc3041e1f07b87928e6f2.json\n?? campaign/runtime/transitions/research-completion-abi-6daec310044e13c8c635e05c.json\n?? campaign/runtime/transitions/research-completion-abi-7f8e2dc0b9b23e9aee13e698.json\n?? campaign/runtime/transitions/research-completion-abi-e24f6d6bf417ccc1ff38cbad.json\n?? verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md\n?? verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\n","metadata":{"output":" M README.md\n M campaign/contracts/research-completion-abi.json\n M campaign/runtime/runs/active-research-completion-abi.json\n M campaign/runtime/verdicts/research-completion-abi.json\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? campaign/runtime/checkpoints/research-completion-abi-1d04a2672a212e8b1fb37297.json\n?? campaign/runtime/checkpoints/research-completion-abi-3fc22ea3c402274179ce4d1f.json\n?? campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json\n?? campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\n?? campaign/runtime/checkpoints/research-completion-abi-c80088956234568ade0a27fb.json\n?? campaign/runtime/checkpoints/research-completion-abi-f15d822f91601241181df05a.json\n?? campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json\n?? campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json\n?? campaign/runtime/runs/run-35e59053176da458d8b46fea.json\n?? campaign/runtime/runs/run-35e59053176da458d8b46fea.jsonl\n?? campaign/runtime/runs/run-35e59053176da458d8b46fea.stderr.log\n?? campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.json\n?? campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.jsonl\n?? campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.stderr.log\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.json\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.jsonl\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.stderr.log\n?? campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json\n?? campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.jsonl\n?? campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.stderr.log\n?? campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json\n?? campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.jsonl\n?? campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.stderr.log\n?? campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\n?? campaign/runtime/surprises/s-81ffc3041e1f07b87928e6f2.json\n?? campaign/runtime/transitions/research-completion-abi-6daec310044e13c8c635e05c.json\n?? campaign/runtime/transitions/research-completion-abi-7f8e2dc0b9b23e9aee13e698.json\n?? campaign/runtime/transitions/research-completion-abi-e24f6d6bf417ccc1ff38cbad.json\n?? verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md\n?? verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\n","exit":0,"truncated":false},"title":"git status --short","time":{"start":1789046012632,"end":1789046012717}},"metadata":{"openai":{"itemId":"fc_0f16cca1681d25a8016aa2acfc4fa887d19839c129708a9422"}},"id":"prt_08b73bad5001wcsx0MCIOy9vfO","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b738344001WqbSoH4EC67C1I"}} +{"type":"tool_use","timestamp":1789046012735,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_KKQVCWVJSSVaVOltzqTzFmf6","state":{"status":"completed","input":{"command":"git rev-parse HEAD && git rev-parse --git-common-dir && git status --short","workdir":"/tmp/opencode/sots-final-research-engine"},"output":"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\n/home/alex/sots-engine/.git\n M CONTRIBUTING.md\n M README.md\n M docs/S-standalone.md\n M src/app/turn.cpp\n M src/game/sim/CMakeLists.txt\n M src/mars/rng/mt19937.cpp\n M src/mars/rng/mt19937.h\n M tests/app/CMakeLists.txt\n M tests/app/test_command_replay.cpp\n M tests/app/test_turn.cpp\n M tests/app/test_turn_record.cpp\n M tests/game_config/CMakeLists.txt\n M tests/game_data/CMakeLists.txt\n M tests/game_design/CMakeLists.txt\n M tests/game_design/test_census_saves.cpp\n M tests/game_sim/CMakeLists.txt\n M tests/mars_stream/CMakeLists.txt\n M tests/mars_stream/test_domains.cpp\n M tests/mars_stream/test_rng.cpp\n M tests/mars_stream/test_save.cpp\n M tests/mars_text/CMakeLists.txt\n M tests/mars_vfs/CMakeLists.txt\n M tools/clean_room_check.sh\n?? AGENTS.md\n?? CLAUDE.md\n?? docs/architecture.md\n?? opencode.json\n?? tools/clean_room_check.py\n","metadata":{"output":"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\n/home/alex/sots-engine/.git\n M CONTRIBUTING.md\n M README.md\n M docs/S-standalone.md\n M src/app/turn.cpp\n M src/game/sim/CMakeLists.txt\n M src/mars/rng/mt19937.cpp\n M src/mars/rng/mt19937.h\n M tests/app/CMakeLists.txt\n M tests/app/test_command_replay.cpp\n M tests/app/test_turn.cpp\n M tests/app/test_turn_record.cpp\n M tests/game_config/CMakeLists.txt\n M tests/game_data/CMakeLists.txt\n M tests/game_design/CMakeLists.txt\n M tests/game_design/test_census_saves.cpp\n M tests/game_sim/CMakeLists.txt\n M tests/mars_stream/CMakeLists.txt\n M tests/mars_stream/test_domains.cpp\n M tests/mars_stream/test_rng.cpp\n M tests/mars_stream/test_save.cpp\n M tests/mars_text/CMakeLists.txt\n M tests/mars_vfs/CMakeLists.txt\n M tools/clean_room_check.sh\n?? AGENTS.md\n?? CLAUDE.md\n?? docs/architecture.md\n?? opencode.json\n?? tools/clean_room_check.py\n","exit":0,"truncated":false},"title":"git rev-parse HEAD && git rev-parse --git-common-dir && git status --short","time":{"start":1789046012609,"end":1789046012721}},"metadata":{"openai":{"itemId":"fc_0f16cca1681d25a8016aa2acfc4f7c87d1b616bd01c9d8418d"}},"id":"prt_08b73bab8001DCXNSATpsTzUy2","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b738344001WqbSoH4EC67C1I"}} +{"type":"tool_use","timestamp":1789046012735,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_289nYnD3AibnmtV06GuGxYRf","state":{"status":"completed","input":{"command":"git rev-parse HEAD && git rev-parse --git-common-dir && git status --short","workdir":"/tmp/opencode/sots-final-research-re"},"output":"3bfde5a70d874a723e797a695bbd847fd82c0aa7\n/home/alex/sots-re/.git\n M README.md\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? AGENTS.md\n?? CLAUDE.md\n?? campaign/agents/\n?? campaign/contract.schema.json\n?? campaign/models.json\n?? guides/multi-agent-workflow.md\n?? guides/windows-lab-housekeeping.md\n?? opencode.json\n?? tools/campaign.py\n?? tools/check_agent_config.py\n?? tools/evidence.py\n?? tools/gate.py\n?? tools/run_agent.py\n?? tools/select_evidence.py\n?? tools/windows-housekeeping/\n?? verify/config/\n?? verify/publishing/\n?? verify/tooling/\n","metadata":{"output":"3bfde5a70d874a723e797a695bbd847fd82c0aa7\n/home/alex/sots-re/.git\n M README.md\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? AGENTS.md\n?? CLAUDE.md\n?? campaign/agents/\n?? campaign/contract.schema.json\n?? campaign/models.json\n?? guides/multi-agent-workflow.md\n?? guides/windows-lab-housekeeping.md\n?? opencode.json\n?? tools/campaign.py\n?? tools/check_agent_config.py\n?? tools/evidence.py\n?? tools/gate.py\n?? tools/run_agent.py\n?? tools/select_evidence.py\n?? tools/windows-housekeeping/\n?? verify/config/\n?? verify/publishing/\n?? verify/tooling/\n","exit":0,"truncated":false},"title":"git rev-parse HEAD && git rev-parse --git-common-dir && git status --short","time":{"start":1789046012614,"end":1789046012725}},"metadata":{"openai":{"itemId":"fc_0f16cca1681d25a8016aa2acfc4f8c87d1962eda91cafdc0be"}},"id":"prt_08b73bac3001lEe4tpTn4Tduz2","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b738344001WqbSoH4EC67C1I"}} +{"type":"tool_use","timestamp":1789046012752,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_UchR3scj3rRb6MMjbBdwj9S5","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi","workdir":"/home/alex/sots-re"},"output":"[\n {\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-c80088956234568ade0a27fb.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"open_surprises\": [],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"needs-revision\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n }\n]\n","metadata":{"output":"[\n {\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-c80088956234568ade0a27fb.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"open_surprises\": [],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"needs-revision\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n }\n]\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi","time":{"start":1789046012598,"end":1789046012743}},"metadata":{"openai":{"itemId":"fc_0f16cca1681d25a8016aa2acfc4f6887d1847f6e3cffc3fd71"}},"id":"prt_08b73ba96001HEHej2VlQV76Fb","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b738344001WqbSoH4EC67C1I"}} +{"type":"tool_use","timestamp":1789046012752,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_iC7bOf3nfA2tYovykyfjj2B9","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re validate","workdir":"/home/alex/sots-re"},"output":"[\n \"controls-bootstrap\",\n \"launcher-smoke\",\n \"research-completion-abi\",\n \"research-live-record-bridge\",\n \"research-replacement\"\n]\n","metadata":{"output":"[\n \"controls-bootstrap\",\n \"launcher-smoke\",\n \"research-completion-abi\",\n \"research-live-record-bridge\",\n \"research-replacement\"\n]\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re validate","time":{"start":1789046012623,"end":1789046012745}},"metadata":{"openai":{"itemId":"fc_0f16cca1681d25a8016aa2acfc4f9887d1a0829adbad0bb31f"}},"id":"prt_08b73bacb001ywsxSOXJzBTiWI","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b738344001WqbSoH4EC67C1I"}} +{"type":"tool_use","timestamp":1789046012857,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_aTbDlH1uqKGRIGESQEzkJZZs","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re","workdir":"/home/alex/sots-re","timeout":120000},"output":"{\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\"\n }\n}\n","metadata":{"output":"{\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\"\n }\n}\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re","time":{"start":1789046012628,"end":1789046012854}},"metadata":{"openai":{"itemId":"fc_0f16cca1681d25a8016aa2acfc4fa087d19b46e99d23cc01bc"}},"id":"prt_08b73bad0001CVGM0wuaRIcOYt","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b738344001WqbSoH4EC67C1I"}} +{"type":"step_finish","timestamp":1789046012895,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b73bbdb001MNCLEcEh8w6deD","reason":"tool-calls","snapshot":"79f6420f3a049aa8991b9bee05b9bed2e92d88aa","messageID":"msg_08b738344001WqbSoH4EC67C1I","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":28305,"input":13216,"output":309,"reasoning":60,"cache":{"write":0,"read":14720}},"cost":0}} +{"type":"step_start","timestamp":1789046015635,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b73c68f001jaE3AErNJ8pAoS","messageID":"msg_08b73bc03001AnyYH4Ozb8Mk4b","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"9af2db9b85e653b671b7004dea502e8d9c74272a","type":"step-start"}} +{"type":"tool_use","timestamp":1789046030689,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"glob","callID":"call_8jK7V8hzhjKhTfHeMEJTNQkg","state":{"status":"completed","input":{"path":"/home/alex/sots-re/verify/results/research-completion-abi","pattern":"**/*"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/objdump-2026-09-09-turnevents.txt\n/home/alex/sots-re/verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt\n/home/alex/sots-re/verify/results/research-completion-abi/objdump-2026-09-10-dedup-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/objdump-2026-09-10-dedup-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/objdump-2026-09-10-dedup-narrow.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/reva-2026-09-09-index.md\n/home/alex/sots-re/verify/results/research-completion-abi/recovered-static.md\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/objdump-2026-09-09-ownership.txt\n/home/alex/sots-re/verify/results/research-completion-abi/objdump-2026-09-10-dedup-narrow.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/manifest.json\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-get-create.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-copy.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-copy.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-append.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/objdump-2026-09-10-boundary-repair.md\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/report.md\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/capture.py\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-dtor.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-append.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-dtor.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-get-create.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-audit.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-audit-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/report.md\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-terminal-bytes.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-copy-audit.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/import-thunks-audit.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-terminal-bytes.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/manifest.json\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-terminal-bytes.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-terminal-bytes.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-terminal-bytes.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-audit-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-narrow.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-terminal-bytes.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-terminal-bytes.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-narrow.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-ctor-audit.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/import-thunks-audit.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-audit.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-dtor-audit.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-audit.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-narrow.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-terminal-bytes.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-narrow.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-audit-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-ctor-audit.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-narrow.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-audit.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-terminal-bytes.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-audit-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/comparison.json\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-terminal-bytes.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-audit.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-narrow.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-audit-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-terminal-bytes.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-dtor-audit.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-terminal-bytes.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-audit.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-copy-audit.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-audit-wide.stderr.txt","metadata":{"count":95,"truncated":false},"title":"verify/results/research-completion-abi","time":{"start":1789046030629,"end":1789046030657}},"metadata":{"openai":{"itemId":"fc_05a292c35df9f70d016aa2ad0e5fa487d1a036b59ac65ab650"}},"id":"prt_08b740121001kDt4k5TNjPtt2V","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b73bc03001AnyYH4Ozb8Mk4b"}} +{"type":"tool_use","timestamp":1789046030689,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"glob","callID":"call_dmRYizIh4yiiM6BdVhbErBjQ","state":{"status":"completed","input":{"path":"/home/alex/sots-re","pattern":"**/*research*abi*.py"},"output":"No files found","metadata":{"count":0,"truncated":false},"title":"","time":{"start":1789046030635,"end":1789046030659}},"metadata":{"openai":{"itemId":"fc_05a292c35df9f70d016aa2ad0e5fb487d186fc4d3f99c79a06"}},"id":"prt_08b740127001fVD0DX9IQwGz8g","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b73bc03001AnyYH4Ozb8Mk4b"}} +{"type":"tool_use","timestamp":1789046030690,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_v8Pguh2Kblsa9WJ1cFsOXt9E","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-81ffc3041e1f07b87928e6f2.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-81ffc3041e1f07b87928e6f2.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-correction-verifier\",\n3: \"contract\": \"research-completion-abi\",\n4: \"decision\": \"d-6e30d172051af0385f5979eb\",\n5: \"id\": \"s-81ffc3041e1f07b87928e6f2\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"probe\": \"Astra should inspect verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 and analyst raw authority line 0x00779912 c2 04 00 in verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt. Decide whether to preserve 0x00779913 as an expected-truncated negative and add fresh held-out 0x00779915 as the complete control, then authorize a fresh session-bound verifier reproduction. Require both boundaries plus direct PE bytes; do not erase the failed prediction or treat it as acceptance.\",\n8: \"role\": \"verifier\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Predeclared held-out boundary assumption is falsified before execution. Verification plan run-d6c4dc15e9f4d15155fee856 requires stop 0x00779913 to include the complete ret 4 at 0x00779912. The already-read analyst authority stream shows that instruction bytes are c2 04 00, spanning 0x00779912..0x00779914, so objdump stop 0x00779913 can admit only the first byte c2 under the same stop-address behavior previously established. It cannot be a complete terminal boundary; minimum complete stop is 0x00779915. This is the verifier own failed prediction, not analyst success and not game/runtime behavior. No new disassembly/save experiment, game, allocator, RNG, VM, Ghidra, or source mutation was executed. Pause the affected reproduction plan rather than silently changing its held-out boundary.\",\n12: \"timestamp\": \"2026-09-10T05:27:48.289391+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-6e30d172051af0385f5979eb\",\n \"id\": \"s-81ffc3041e1f07b87928e6f2\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra should inspect verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 and analyst raw authority line 0x00779912 c2 04 00 in verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt. Decide whether to preserve 0x00779913 as an expected-truncated negative and add fresh held-out 0x00779915 as the complete control, then authorize a fresh session-bound verifier reproduction. Require both boundaries plus direct PE bytes; do not erase the failed prediction or treat it as acceptance.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Predeclared held-out boundary assumption is falsified before execution. Verification plan run-d6c4dc15e9f4d15155fee856 requires stop 0x00779913 to include the complete ret 4 at 0x00779912. The already-read analyst authority stream shows that instruction bytes are c2 04 00, spanning 0x00779912..0x00779914, so objdump stop 0x00779913 can admit only the first byte c2 under the same stop-address behavior previously established. It cannot be a complete terminal boundary; minimum complete stop is 0x00779915. This is the verifier own failed prediction, not analyst success and not game/runtime behavior. No new disassembly/save experiment, game, allocator, RNG, VM, Ghidra, or source mutation was executed. Pause the affected reproduction plan rather than silently changing its held-out boundary.\",\n \"timestamp\": \"2026-09-10T05:27:48.289391+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-81ffc3041e1f07b87928e6f2.json","text":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-6e30d172051af0385f5979eb\",\n \"id\": \"s-81ffc3041e1f07b87928e6f2\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra should inspect verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 and analyst raw authority line 0x00779912 c2 04 00 in verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt. Decide whether to preserve 0x00779913 as an expected-truncated negative and add fresh held-out 0x00779915 as the complete control, then authorize a fresh session-bound verifier reproduction. Require both boundaries plus direct PE bytes; do not erase the failed prediction or treat it as acceptance.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Predeclared held-out boundary assumption is falsified before execution. Verification plan run-d6c4dc15e9f4d15155fee856 requires stop 0x00779913 to include the complete ret 4 at 0x00779912. The already-read analyst authority stream shows that instruction bytes are c2 04 00, spanning 0x00779912..0x00779914, so objdump stop 0x00779913 can admit only the first byte c2 under the same stop-address behavior previously established. It cannot be a complete terminal boundary; minimum complete stop is 0x00779915. This is the verifier own failed prediction, not analyst success and not game/runtime behavior. No new disassembly/save experiment, game, allocator, RNG, VM, Ghidra, or source mutation was executed. Pause the affected reproduction plan rather than silently changing its held-out boundary.\",\n \"timestamp\": \"2026-09-10T05:27:48.289391+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-81ffc3041e1f07b87928e6f2.json","time":{"start":1789046030673,"end":1789046030686}},"metadata":{"openai":{"itemId":"fc_05a292c35df9f70d016aa2ad0e5fd487d180595d233a451122"}},"id":"prt_08b74014f001ZH1ivU5QCwXkI0","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b73bc03001AnyYH4Ozb8Mk4b"}} +{"type":"tool_use","timestamp":1789046030690,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_MyFpsHm50fUjRuLoCeJFaxh2","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/runs/active-research-completion-abi.json"},"output":"/home/alex/sots-re/campaign/runtime/runs/active-research-completion-abi.json\nfile\n\n1: {\n2: \"contract\": \"research-completion-abi\",\n3: \"run\": \"run-35e59053176da458d8b46fea\",\n4: \"status\": \"running\"\n5: }\n\n(End of file - total 5 lines)\n","metadata":{"preview":"{\n \"contract\": \"research-completion-abi\",\n \"run\": \"run-35e59053176da458d8b46fea\",\n \"status\": \"running\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/runs/active-research-completion-abi.json","text":"{\n \"contract\": \"research-completion-abi\",\n \"run\": \"run-35e59053176da458d8b46fea\",\n \"status\": \"running\"\n}","lineStart":1,"lineEnd":5,"totalLines":5,"truncated":false}},"title":"campaign/runtime/runs/active-research-completion-abi.json","time":{"start":1789046030677,"end":1789046030688}},"metadata":{"openai":{"itemId":"fc_05a292c35df9f70d016aa2ad0e5fdc87d1b850b5965f35eeff"}},"id":"prt_08b740153001nbzKTqfBwFw6Wu","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b73bc03001AnyYH4Ozb8Mk4b"}} +{"type":"tool_use","timestamp":1789046030697,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"glob","callID":"call_CQPqW47XrLlO0OzlgDHMJK9m","state":{"status":"completed","input":{"path":"/home/alex/sots-re","pattern":"**/*.sots*"},"output":"No files found","metadata":{"count":0,"truncated":false},"title":"","time":{"start":1789046030653,"end":1789046030691}},"metadata":{"openai":{"itemId":"fc_05a292c35df9f70d016aa2ad0e5fc087d1acd3410e03c5ceb3"}},"id":"prt_08b74013a001RIFJOzolSGQzjH","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b73bc03001AnyYH4Ozb8Mk4b"}} +{"type":"tool_use","timestamp":1789046030704,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"grep","callID":"call_Rdsh7HNNHBYkK8kTQuhQwijq","state":{"status":"completed","input":{"path":"/home/alex/sots-re/verify/results/research-completion-abi","pattern":"save|interpreter|recipe|python","include":"*.{json,md,py}"},"output":"Found 7 matches\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md:\n Line 10: contains anything except the recipe. Before capture it positively rejected missing and stale session\n\n Line 11: IDs, a stale output path, and a simulated reused location. The recipe is intentionally not reusable\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py:\n Line 1: #!/usr/bin/env python3\n\n Line 68: \"python3\", str(CAMPAIGN), \"--state-root\", str(ROOT), \"source-binding\",\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/capture.py:\n Line 1: #!/usr/bin/env python3\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json:\n Line 37: \"python3\",\n\n Line 63: \"python3\",\n","metadata":{"matches":7,"truncated":false},"title":"save|interpreter|recipe|python","time":{"start":1789046030669,"end":1789046030695}},"metadata":{"openai":{"itemId":"fc_05a292c35df9f70d016aa2ad0e5fcc87d18e36bccee6733e15"}},"id":"prt_08b74013e001kciazMnHBxGSqv","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b73bc03001AnyYH4Ozb8Mk4b"}} +{"type":"step_finish","timestamp":1789046030859,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b740208001vbSm8aSph3LPkx","reason":"tool-calls","snapshot":"dbc5f644738c6829622de4e6251aa9b58ec50123","messageID":"msg_08b73bc03001AnyYH4Ozb8Mk4b","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":31336,"input":3091,"output":240,"reasoning":229,"cache":{"write":0,"read":27776}},"cost":0}} +{"type":"step_start","timestamp":1789046032733,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b740954001uepJ3jaSRBhpDd","messageID":"msg_08b74022e001F5SpUeUb4c74H9","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"be3fac9ea61189342e00e8d540a584711caeb9d5","type":"step-start"}} +{"type":"tool_use","timestamp":1789046034703,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"grep","callID":"call_YL1ReCMWAYQByJsMlv1azMxq","state":{"status":"completed","input":{"path":"/home/alex/sots-re/campaign/runtime/surprises","pattern":"\"status\": \"open\"","include":"*.json"},"output":"No files found","metadata":{"matches":0,"truncated":false},"title":"\"status\": \"open\"","time":{"start":1789046034693,"end":1789046034701}},"metadata":{"openai":{"itemId":"fc_0386de76cc62b590016aa2ad11923487d1a66e4406d3c0ffac"}},"id":"prt_08b740d3c001H7uAhX1iZN2mOY","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b74022e001F5SpUeUb4c74H9"}} +{"type":"step_finish","timestamp":1789046034837,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b741192001aMzv7i265r236M","reason":"tool-calls","snapshot":"ed0b95740f614e28393ba3157c740828f54aaf1d","messageID":"msg_08b74022e001F5SpUeUb4c74H9","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":36088,"input":5309,"output":46,"reasoning":13,"cache":{"write":0,"read":30720}},"cost":0}} +{"type":"step_start","timestamp":1789046037621,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b741c72001sGN4b1G53h5wxP","messageID":"msg_08b7411b9001JTMpHt4glWHCL2","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"b2e5f5bc0ab76d2d746642a2c4ddb3a97b57f7c5","type":"step-start"}} +{"type":"tool_use","timestamp":1789046049701,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"glob","callID":"call_KMEcFqCgfv9efeNyJBWeoH9I","state":{"status":"completed","input":{"path":"/home/alex/sots-re/verify","pattern":"**/*save*"},"output":"/home/alex/sots-re/verify/save-reader/save_reader.py\n/home/alex/sots-re/verify/save-reader/save_writer_stub.py\n/home/alex/sots-re/verify/save-reader/test_save_reader.py\n/home/alex/sots-re/verify/results/saves/cb-c5b-turn1to2-pinned-autosave.sav\n/home/alex/sots-re/verify/results/saves/cb-c5a-turn1to2-pinned-autosave.sav\n/home/alex/sots-re/verify/results/saves/bs/bs-C-f38-autosave.sav\n/home/alex/sots-re/verify/results/saves/cb-turn2to3-autosave.sav\n/home/alex/sots-re/verify/results/saves/cb-c3-turn1to2-autosave.sav\n/home/alex/sots-re/verify/results/state-checksum/resave-localisation.txt\n/home/alex/sots-re/verify/results/saves/cr/cr-replace1-autosave.sav\n/home/alex/sots-re/verify/results/saves/cr/cr-replace0-autosave.sav\n/home/alex/sots-re/verify/results/saves/cr/cr-oracle-autosave.sav\n/home/alex/sots-re/verify/results/research-completion-abi-independent/integration-lead-20260910/turn3-save-reader.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi-independent/integration-lead-20260910/turn3-save-reader.json\n/home/alex/sots-re/verify/results/research-completion-abi-independent/run-7d85d45cb2196e07025e5096/turn3-save-reader.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi-independent/run-7d85d45cb2196e07025e5096/turn3-save-reader.json\n/home/alex/sots-re/verify/results/research-completion-abi-independent/run-d94d4516b9d898793318805e/turn3-save-reader.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi-independent/run-d94d4516b9d898793318805e/turn3-save-reader.json\n/home/alex/sots-re/verify/results/research-completion-abi-independent/run-eba7860308317f839eb35392/turn3-save-reader.json\n/home/alex/sots-re/verify/results/research-completion-abi-independent/run-eba7860308317f839eb35392/turn3-save-reader.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi-independent/run-735fcb8f4876c10285b03fad/turn3-save-reader.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi-independent/run-735fcb8f4876c10285b03fad/turn3-save-reader.json\n/home/alex/sots-re/verify/results/shim/tailrng/z-t5-autosave.sav\n/home/alex/sots-re/verify/results/shim/tailrng/save_rng_delta.py\n/home/alex/sots-re/verify/results/shim/tailrng/z-t6-autosave.sav\n/home/alex/sots-re/verify/results/shim/tailrng/z2-autosave.sav\n/home/alex/sots-re/verify/results/fpu-cw/run-1a7f-rep/(Autosave EndTurn).sav\n/home/alex/sots-re/verify/results/fpu-cw/run-1a7f-rep/(Autosave).sav\n/home/alex/sots-re/verify/results/shim/aiorders/l4-turn1to2-instrumented-autosave.sav\n/home/alex/sots-re/verify/results/shim/aiorders/l4-turn1to2-hooksoff-autosave.sav\n/home/alex/sots-re/verify/results/fpu-cw/run-137f/(Autosave EndTurn).sav\n/home/alex/sots-re/verify/results/fpu-cw/run-137f/(Autosave).sav\n/home/alex/sots-re/verify/results/fpu-cw/run-007f/(Autosave EndTurn).sav\n/home/alex/sots-re/verify/results/fpu-cw/run-007f/(Autosave).sav\n/home/alex/sots-re/verify/results/fpu-cw/run-127f/(Autosave EndTurn).sav\n/home/alex/sots-re/verify/results/fpu-cw/run-127f/(Autosave).sav\n/home/alex/sots-re/verify/results/shim/probes/oracle-restore/h-oracle-autosave.sav\n/home/alex/sots-re/verify/results/fpu-cw/run-007f-rep/(Autosave).sav\n/home/alex/sots-re/verify/results/fpu-cw/run-007f-rep/(Autosave EndTurn).sav\n/home/alex/sots-re/verify/results/fpu-cw/run-027f/(Autosave).sav\n/home/alex/sots-re/verify/results/fpu-cw/run-027f/(Autosave EndTurn).sav\n/home/alex/sots-re/verify/results/fpu-cw/run-off/(Autosave).sav\n/home/alex/sots-re/verify/results/fpu-cw/run-off/(Autosave EndTurn).sav\n/home/alex/sots-re/verify/results/fpu-cw/run-1a7f/(Autosave).sav\n/home/alex/sots-re/verify/results/fpu-cw/run-1a7f/(Autosave EndTurn).sav","metadata":{"count":45,"truncated":false},"title":"verify","time":{"start":1789046049664,"end":1789046049689}},"metadata":{"openai":{"itemId":"fc_0c59a73010bf2d6f016aa2ad21604087d1bb1291f3106cebdb"}},"id":"prt_08b744b7c001zD5GTbSWKfm2GV","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7411b9001JTMpHt4glWHCL2"}} +{"type":"tool_use","timestamp":1789046049702,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"grep","callID":"call_quv39eH540oJq7M7rk6lwlJ8","state":{"status":"completed","input":{"path":"/home/alex/sots-re","pattern":"0x7f7fffff|7f7fffff","include":"*.{md,json,py,txt}"},"output":"Found 43 matches\n/home/alex/sots-re/findings/objects/schema-gaps-resolved.md:\n Line 162: Planet element (`SystemParams`, from bytes `@0x4cc`, writer not decompiled): `\".\"` frame `{ \".\" frame{ \".\" float ×3 } (Vector3), \".\" int, \".\" int, \".\" int, \".\" 4-byte (0x7f7fffff = FLT_MAX → float) }`.\n\n\n/home/alex/sots-re/findings/subsystems/formula-gaps.md:\n Line 283: **`FLT_MAX` (0x7f7fffff), not infinity** — the `PlayerEvent` constructor at 0x0084ee30 copies\n\n\n/home/alex/sots-re/findings/subsystems/events.md:\n Line 80: **Correction to `formula-gaps.md`:** the default `EvPos` is **`FLT_MAX` (0x7f7fffff), not\n\n Line 83: `EvPos = 2139095039 (0x7f7fffff)` for `EVENT_RESEARCH_OVERBUDGET`. Writing `+inf`\n\n Line 133: EvPos {0x7f7fffff, 0x7f7fffff, 0x7f7fffff} EvAct 1 EvCID 0\n\n\n/home/alex/sots-re/findings/subsystems/path-solver.md:\n Line 146: (min over ships of `ship->Range(+0x20)`, seeded `FLT_MAX` from the `.rdata` word at 0x009e23a8 = `0x7f7fffff`,\n\n Line 567: **6. `MinRange`'s seed and update** — `FLT_MAX` (0x009e23a8 = `0x7f7fffff`), strict `best > range` update, so\n\n\n/home/alex/sots-re/findings/control-flow/combat-retreat-pipeline.md:\n Line 180: best1 = best2 = best3 = FLT_MAX ; the .rdata float at 0x009e23a8 is 0x7f7fffff\n\n\n/home/alex/sots-re/verify/results/research-completion-abi-independent/integration-lead-20260910/manifest.json:\n Line 621: \"expected\": \"ffff7f7fffff7f7fffff7f7f\",\n\n Line 622: \"actual\": \"ffff7f7fffff7f7fffff7f7f\",\n\n\n/home/alex/sots-re/ghidra/addresses.json:\n Line 2753: \"prototype\": \"PlayerEvent* (PlayerEvent* this) RET 0. vptr=0x00a21958; EvEID=EvLoc=EvAct=EvCID=0; the three std::strings = \\\"\\\" (0x009e100c); EvPos = the Vector3 global at 0x00af0dc8 = {FLT_MAX, FLT_MAX, FLT_MAX} (0x7f7fffff x3, NOT infinity)\",\n\n Line 2977: \"prototype\": \"float[3] = {0x7f7fffff, 0x7f7fffff, 0x7f7fffff} = FLT_MAX. PlayerEvent's default EvPos. NOT infinity\",\n\n\n/home/alex/sots-re/ghidra/addresses.d/lane-b5.json:\n Line 23: \"prototype\": \"void (RetreatContext* this, Mars::Vector3* battlePos, ServerSystem* excludeSys, ServerPlayer* p, ServerSystem** out1, ServerSystem** out2, ServerSystem** out3) // ret 0x18. THE RETREAT DESTINATION FORMULA. THREE INDEPENDENT nearest-system searches sharing one pass over S->Systems (S->+0x44/+0x48, 4-byte stride), each with its own best-so-far seeded to the .rdata FLT_MAX at 0x009e23a8 (0x7f7fffff): out1 = nearest sys with FUN_007437e0(sys) == p (owner); out2 = nearest sys with FUN_00744070(sys, p) FALSE (no hostile presence); out3 = nearest sys, unconditional. Both skips: sys == excludeSys, and FUN_007469e0(sys). THE INDEPENDENCE IS LOAD-BEARING -- each 'best' store is INSIDE its predicate arm (0x007872c6 / 0x007872ec), so a nearer rejected system does not spoil that search; a single-loop 'find nearest then filter' gives a different answer. Distance is SQUARED: the three component deltas are each fstp'd to float32 first, the products and sum accumulate on the x87 stack, the total narrows to float32 once at 0x007872a3 (a double accumulator with one final narrowing is BIT-IDENTICAL, since a float32 delta squares exactly in double). Comparison is a strict < (fld best; fcomp d; test ah,0x41; jne skip), so an exact tie goes to the EARLIER system in the vector\",\n\n\n/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-d1d232d95e44383e927ed279.json:\n Line 33: \"summary\": \"MID-QUANTUM POST-EXPERIMENT. OBSERVATIONS: Fresh verifier reproducer executed 22 objdump windows plus strict save reader and whole-state checksum. All 24 subprocesses returned zero with nonempty stdout and empty stderr; no skips. All 22 static stream identities exactly match prior independent output; seven narrow/wide pairs preserve preceding rows and expose five ownership ret-4, one string ret-8 and dedup ret-8. Raw branches retain 0x2c versus 0x74 strides, deep-copy calls, three string assignments, three guarded long-string deletes, description equality and unordered-coordinate mismatch. Held-out direct PE parser independently mapped all seven ret-imm bytes, plain c3, preceding-byte negative control 5d, and three 0x7f7fffff defaults without objdump. Strict archived parse found direct EvNxID=4, turn-3 count 2 and event ID 3 values; whole-state audit rebuilt 609080/609080 bytes, root e9c161e311f8ef8fad6f1aa1903dcf3f, and actual /Sim/RNG is one 2503-byte leaf digest 0978fdf34ff7962f76c2de810dc93e0a. DECISION: scoped PASS is supported for current non-integrated static-recovery/validation evidence only. No prediction failed or new surprise arose; historical provenance failures remain recorded failures. LIMITS: no live game, allocator, branch fixtures, original differential, replacement or integrated replay. No lab/resources/leases. Assigned source worktrees were not edited.\",\n\n\n/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-ebe571c975acd7112778cc97.json:\n Line 37: \"summary\": \"OBSERVATIONS: Completed independent static reproduction from the handoff. Exact identities remained engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23/common-dir /home/alex/sots-engine/.git/binding ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7/common-dir /home/alex/sots-re/.git/binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8; binary SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841; objdump GNU 2.38 SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd. All 22 windows returned zero/nonempty with empty stderr; every stream hash was independently rechecked. Six ownership pairs exactly reproduce five c2 04 00 and one c2 08 00 widened endings with equal preceding rows; four complete controls match. Dedup pair reproduces c2 versus c2 08 00. DECISIONS/CHALLENGES: Scoped pass for independent-cross-check as static reproduction plus archived-state check only. Held-out complete-stop ablation shows 0x85630c omits, 0x85630d includes plain c3; this rejects overgeneralizing ret-imm truncation. Held-out data bytes at 0xaf0dc8 are three 0x7f7fffff defaults. Dedup raw branches require EvDsc equality and reject unordered/NaN coordinates; no live fixture claim. Ownership raw paths preserve distinct 0x2c/0x74 strides, deep string assignment and three long-string deletes. Strict save parse directly found EvNxID=4, turn-3 two-event bucket and event ID 3 archived values. Whole-save audit rebuilt all 609080 bytes exactly, root e9c161e311f8ef8fad6f1aa1903dcf3f; actual /Sim/RNG is a 2503-byte leaf digest 0978fdf34ff7962f76c2de810dc93e0a, not inferred from counters. No prediction failed and no new surprise arose. Prior provenance failures remain failures resolved by Astra, not rewritten as successes. LIMITS/BLOCKERS: no live empty/spare/full, short/long, duplicate/description-different/NaN, unwind or allocation-failure execution; no allocator co...\n\n/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-54f3ffbf418146a024f7681e.json:\n Line 49: \"summary\": \"QUANTUM-END CHECKPOINT. VERDICT: FAIL/BLOCKED for independent-cross-check; open surprise s-4f71bf4a5df4e5fc992bb6b2. OBSERVATIONS: paired identities independently matched handoff: engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23/common /home/alex/sots-engine/.git/binding ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7/common /home/alex/sots-re/.git/binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Pre-existing dirty inventories were not edited. Input SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd/version 2.38 matched. Fresh owned reproducer ran 28 windows: all subprocesses return 0, disassembly outputs nonempty, stderr empty. Direct bytes support repaired dedup: EvDsc helper call, caller cleanup, zero-to-match, inline/heap and byte/length inequality. Held-out NaN challenge supports mismatch for unordered coordinates via fucompp/fnstsw/test ah,0x44/jp. Narrow ablation reproduces c2 truncation versus wide c2 08 00. Strict save parse directly recovers event id 3, exact strings, loc 0/action 1/CID 0 and three 0x7f7fffff words; archived parse only. FAILED PREDICTION/SURPRISE: ownership archive exact commands stop one byte into ret 4 at 0x57e5e3, 0x86c62d, 0x7694bf yet archive prints complete c2 04 00; fresh same commands print c2 only. Affected ownership provenance cannot pass. Manifest instruction_lines is explicitly invalid as a coverage count because it includes the function-label line; raw bytes/address inspection is authoritative. DECISION: paused affected interpretation and recorded surprise rather than treating matching semantics as success. TESTS: campaign validate passes after surprise; campaign status is blocked with that open surprise. CLASSIFICATION: independent static reproduction plus archived-state check only, not original-assisted runtime, p...\n\n/home/alex/sots-re/verify/results/research-completion-abi-independent/verification-plan-run-eba7860308317f839eb35392.md:\n Line 24: buckets, IDs, all event fields, and exact `0x7f7fffff` position words.\n\n\n/home/alex/sots-re/campaign/runtime/checkpoints/research-live-record-bridge-e3b8c9514307f9abe000402d.json:\n Line 53: \"summary\": \"MID-QUANTUM POST-EXPERIMENT CHECKPOINT. OBSERVATIONS: Under the predeclared acceptance and verified source/input/tool identities, local read-only objdump probes ran with env -i PATH=/usr/bin:/bin LC_ALL=C; all returned 0 and stderr is empty. No VM, game process, Ghidra, build host or shared resource was accessed or mutated. Direct constructor capture includes complete callable entry 0x0084ee30 through plain ret at 0x0084eef3. ABI is ECX=this, no stack arguments, EAX=this, caller stack unchanged. The 0x74-byte object is fully initialized: vptr 0x00a21958; +0x04 zero; valid empty strings at +0x08,+0x24,+0x50 with size 0/capacity 0x0f/first byte zero and empty literal call; +0x40 zero; +0x44,+0x48,+0x4c copy three 0x7f7fffff FLT_MAX words from 0x00af0dc8; +0x6c and +0x70 zero. Fresh constructor stdout is 8673 bytes SHA256 e71cefde2e8635e882646ccfa6dbbc7f454574f4b357ef25077e7fcd532d8550; its larger range includes neighboring entries, while the callable constructor is unambiguous and agrees with the accepted dependency window. EH handler 0x0099613e points to FuncInfo 0x00ac98a4. Direct PE extraction records MSVC magic 0x19930522, maxState 3, unwind map 0x00ac988c, no try/IP maps, and actions state0->-1 0x00996120, state1->0 0x00996128, state2->1 0x00996133. Funclets restore base vptr through 0x00763a00 and destroy initialized strings at this+0x08 and this+0x24 through 0x008e0610. Since state advances before each empty-literal helper call, an unwind cleans only predecessor subobjects plus the base; the current string was manually established empty before that call but is not represented as completed until return. This is exact static unwind topology, not proof that the empty-literal helper throws or that live allocation safety holds. DECISION: Add a PlayerEvent constructor operation row and capture provenance to the owned generated-address JSON, update readiness prose, and create an immutable manifest binding all commands/files/hashes. Do not promote bridge ...\n\n/home/alex/sots-re/verify/results/research-completion-abi-independent/run-7d85d45cb2196e07025e5096/manifest.json:\n Line 621: \"expected\": \"ffff7f7fffff7f7fffff7f7f\",\n\n Line 622: \"actual\": \"ffff7f7fffff7f7fffff7f7f\",\n\n\n/home/alex/sots-re/verify/results/research-completion-abi-independent/result-run-d94d4516b9d898793318805e.md:\n Line 35: chain and `0x7f7fffff` position words. The checksum rebuilt all 609080 inflated bytes with no first\n\n\n/home/alex/sots-re/verify/results/research-completion-abi-independent/result-run-eba7860308317f839eb35392.md:\n Line 55: `2139095039` (`0x7f7fffff`). This supports archived values only; parser fields are marked guessed and\n\n\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md:\n Line 33: container elements, IDs, strings, exact `0x7f7fffff` position words, and empty player states to\n\n\n/home/alex/sots-re/verify/state-checksum/float_census.py:\n Line 42: return \"FLT_MAX (0x7f7fffff)\"\n\n\n/home/alex/sots-re/verify/state-checksum/STATE_CHECKSUM.md:\n Line 249: 232 FLT_MAX (0x7f7fffff)\n\n Line 260: The 232 `FLT_MAX` leaves (58 per save) are worth flagging: `FLT_MAX` is `0x7f7fffff`, a finite\n\n\n/home/alex/sots-re/verify/state-checksum/test_state_checksum.py:\n Line 309: \"\"\"events.md: the default EvPos is FLT_MAX (0x7f7fffff), not inf.\"\"\"\n\n\n/home/alex/sots-re/verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py:\n Line 55: \"constructor-defaults\": (0xAF0DC8, \"ffff7f7fffff7f7fffff7f7f\"),\n\n\n/home/alex/sots-re/verify/results/research-completion-abi-independent/result.md:\n Line 60: the integer bit pattern `2139095039` (`0x7f7fffff`). Players 2 and 3 each have `EvNxID=0` and an\n\n\n/home/alex/sots-re/verify/results/research-completion-abi-independent/result-run-7d85d45cb2196e07025e5096.md:\n Line 71: 0, action 1, chain 0 and three integer position words `2139095039` (`0x7f7fffff`). Guessed leaves are\n\n\n/home/alex/sots-re/verify/results/state-checksum/float-census.txt:\n Line 9: 58 FLT_MAX (0x7f7fffff) e.g. /Summary/Session/TMRS/TSTL\n\n Line 15: 58 FLT_MAX (0x7f7fffff) e.g. /Summary/Session/TMRS/TSTL\n\n Line 21: 58 FLT_MAX (0x7f7fffff) e.g. /Summary/Session/TMRS/TSTL\n\n Line 27: 58 FLT_MAX (0x7f7fffff) e.g. /Summary/Session/TMRS/TSTL\n\n Line 33: 232 FLT_MAX (0x7f7fffff)\n\n\n/home/alex/sots-re/verify/results/research-completion-abi-independent/verification-plan-run-7d85d45cb2196e07025e5096.md:\n Line 18: `0x7f7fffff` words; or event/RNG claims available only from counters rather than direct archived\n\n\n/home/alex/sots-re/verify/results/research-completion-abi-independent/result-run-735fcb8f4876c10285b03fad.md:\n Line 69: section-byte capture gives `ff ff 7f 7f` three times, i.e. three `0x7f7fffff` words.\n\n Line 77: action 1, chain ID 0, and three integer position words `2139095039` (`0x7f7fffff`). These parser\n\n\n/home/alex/sots-re/verify/results/research-completion-abi-independent/verification-plan.md:\n Line 22: IDs, nested turn buckets, strings, action/location, and exact `0x7f7fffff` position words from\n\n\n/home/alex/sots-re/verify/results/research-completion-abi-independent/run-d94d4516b9d898793318805e/manifest.json:\n Line 621: \"expected\": \"ffff7f7fffff7f7fffff7f7f\",\n\n Line 622: \"actual\": \"ffff7f7fffff7f7fffff7f7f\",\n\n\n/home/alex/sots-re/verify/results/research-live-record-bridge/run-c1238a40bfc3bfa7c2ff9ba6/manifest.json:\n Line 168: \"The three position dwords copy 0x7f7fffff FLT_MAX from 0x00af0dc8..0x00af0dd0.\",\n\n\n/home/alex/sots-re/campaign/research/research-live-record-addresses.json:\n Line 310: \"EvPos dwords at +0x44, +0x48 and +0x4c copied from 0x00af0dc8, 0x00af0dcc and 0x00af0dd0; each source word is 0x7f7fffff (FLT_MAX)\",\n","metadata":{"matches":43,"truncated":false},"title":"0x7f7fffff|7f7fffff","time":{"start":1789046049669,"end":1789046049692}},"metadata":{"openai":{"itemId":"fc_0c59a73010bf2d6f016aa2ad21604887d1819002c0285c7904"}},"id":"prt_08b744b810016cw1DQFn8j9A47","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7411b9001JTMpHt4glWHCL2"}} +{"type":"tool_use","timestamp":1789046049702,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_VRTorpr7uTlvHE0usjq8IqEf","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md"},"output":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md\nfile\n\n1: # Verification report — run-d6c4dc15e9f4d15155fee856\n2: \n3: ## Result\n4: \n5: **Paused / no verdict.** The verifier's own predeclared held-out boundary prediction was falsified\n6: before the planned experiment. Open surprise: `s-81ffc3041e1f07b87928e6f2`. This failure is not\n7: converted into analyst success, independent-cross-check acceptance, or a replacement claim.\n8: \n9: ## Identity reproduction\n10: \n11: From the assigned worktrees:\n12: \n13: ```sh\n14: git rev-parse HEAD\n15: git rev-parse --show-toplevel\n16: git rev-parse --git-common-dir\n17: git status --short\n18: ```\n19: \n20: Results: engine HEAD `7741d42fc5e4e761e6449bdaf0e4a61d00036a23`, root\n21: `/tmp/opencode/sots-final-research-engine`, common directory `/home/alex/sots-engine/.git`; RE HEAD\n22: `3bfde5a70d874a723e797a695bbd847fd82c0aa7`, root\n23: `/tmp/opencode/sots-final-research-re`, common directory `/home/alex/sots-re/.git`. Both trees are\n24: dirty as expected from the source-identical campaign snapshot; identity was not inferred from HEAD.\n25: \n26: ```sh\n27: python3 tools/campaign.py --state-root /home/alex/sots-re validate\n28: python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi\n29: python3 tools/campaign.py --state-root /home/alex/sots-re source-binding \\\n30: research-completion-abi \\\n31: --engine-worktree /tmp/opencode/sots-final-research-engine \\\n32: --re-worktree /tmp/opencode/sots-final-research-re\n33: ```\n34: \n35: Before the surprise, validation passed, status was `verification` with no open surprises, and the\n36: binding matched the analyst package: engine\n37: `ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd`, RE\n38: `6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8`.\n39: \n40: ```sh\n41: sha256sum dumps/sots.exe /usr/bin/objdump \\\n42: verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json \\\n43: verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md \\\n44: verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\n45: /usr/bin/objdump --version\n46: ```\n47: \n48: Results: executable `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`;\n49: objdump target bytes `1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd`,\n50: GNU Binutils 2.38; handoff artifacts respectively\n51: `aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4`,\n52: `6e74ff0197adc6c97f5924ad3f973d5e8922f1480268d1c96dac3dd89000e38f`, and\n53: `66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1`.\n54: `/usr/bin/objdump` is a symlink whose target bytes were hashed; the manifest's 373,888-byte size is\n55: the dereferenced executable, while `stat` on the link itself reports 24 bytes.\n56: \n57: ## Failed prediction and challenge\n58: \n59: The pre-experiment plan required held-out stop `0x00779913` to include a complete `ret 4` beginning\n60: at `0x00779912`. Independent inspection of the raw authority stream shows bytes `c2 04 00`; the\n61: instruction occupies addresses `0x00779912..0x00779914`. An exclusive stop of `0x00779913` can\n62: therefore expose only `c2`, exactly the truncation class that invalidated earlier archives. The\n63: earliest complete stop is `0x00779915`.\n64: \n65: This challenges the verifier instrument boundary, not game semantics. The planned objdump and save\n66: subprocesses were **not run**, so there is no positive-execution claim, no archived-state/RNG result,\n67: and no verifier manifest. Existing analyst captures remain measurements only. Actual runtime states\n68: (existing/miss, spare/full, empty/nonempty, short/long, unwind) remain unexecuted; static branches do\n69: not substitute for them. No original-assisted execution, partial/full compare, independent\n70: replacement, or integrated replay occurred.\n71: \n72: ## Side effects and exact next action\n73: \n74: Only verifier-owned plan/report files and canonical campaign surprise/checkpoint state were written.\n75: No lease was acquired; no lab, VM, Ghidra, game, allocator, RNG, engine source, staging, commit, or\n76: push operation occurred.\n77: \n78: **Exact next action:** Astra resolves `s-81ffc3041e1f07b87928e6f2` by deciding whether\n79: `0x00779913` becomes an expected-truncated negative and `0x00779915` the fresh complete held-out\n80: control; then a fresh verifier quantum executes the authorized session-bound reproduction.\n\n(End of file - total 80 lines)\n","metadata":{"preview":"# Verification report — run-d6c4dc15e9f4d15155fee856\n\n## Result\n\n**Paused / no verdict.** The verifier's own predeclared held-out boundary prediction was falsified\nbefore the planned experiment. Open surprise: `s-81ffc3041e1f07b87928e6f2`. This failure is not\nconverted into analyst success, independent-cross-check acceptance, or a replacement claim.\n\n## Identity reproduction\n\nFrom the assigned worktrees:\n\n```sh\ngit rev-parse HEAD\ngit rev-parse --show-toplevel\ngit rev-parse --git-common-dir\ngit status --short\n```\n\nResults: engine HEAD `7741d42fc5e4e761e6449bdaf0e4a61d00036a23`, root","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md","text":"# Verification report — run-d6c4dc15e9f4d15155fee856\n\n## Result\n\n**Paused / no verdict.** The verifier's own predeclared held-out boundary prediction was falsified\nbefore the planned experiment. Open surprise: `s-81ffc3041e1f07b87928e6f2`. This failure is not\nconverted into analyst success, independent-cross-check acceptance, or a replacement claim.\n\n## Identity reproduction\n\nFrom the assigned worktrees:\n\n```sh\ngit rev-parse HEAD\ngit rev-parse --show-toplevel\ngit rev-parse --git-common-dir\ngit status --short\n```\n\nResults: engine HEAD `7741d42fc5e4e761e6449bdaf0e4a61d00036a23`, root\n`/tmp/opencode/sots-final-research-engine`, common directory `/home/alex/sots-engine/.git`; RE HEAD\n`3bfde5a70d874a723e797a695bbd847fd82c0aa7`, root\n`/tmp/opencode/sots-final-research-re`, common directory `/home/alex/sots-re/.git`. Both trees are\ndirty as expected from the source-identical campaign snapshot; identity was not inferred from HEAD.\n\n```sh\npython3 tools/campaign.py --state-root /home/alex/sots-re validate\npython3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi\npython3 tools/campaign.py --state-root /home/alex/sots-re source-binding \\\n research-completion-abi \\\n --engine-worktree /tmp/opencode/sots-final-research-engine \\\n --re-worktree /tmp/opencode/sots-final-research-re\n```\n\nBefore the surprise, validation passed, status was `verification` with no open surprises, and the\nbinding matched the analyst package: engine\n`ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd`, RE\n`6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8`.\n\n```sh\nsha256sum dumps/sots.exe /usr/bin/objdump \\\n verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json \\\n verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md \\\n verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\n/usr/bin/objdump --version\n```\n\nResults: executable `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`;\nobjdump target bytes `1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd`,\nGNU Binutils 2.38; handoff artifacts respectively\n`aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4`,\n`6e74ff0197adc6c97f5924ad3f973d5e8922f1480268d1c96dac3dd89000e38f`, and\n`66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1`.\n`/usr/bin/objdump` is a symlink whose target bytes were hashed; the manifest's 373,888-byte size is\nthe dereferenced executable, while `stat` on the link itself reports 24 bytes.\n\n## Failed prediction and challenge\n\nThe pre-experiment plan required held-out stop `0x00779913` to include a complete `ret 4` beginning\nat `0x00779912`. Independent inspection of the raw authority stream shows bytes `c2 04 00`; the\ninstruction occupies addresses `0x00779912..0x00779914`. An exclusive stop of `0x00779913` can\ntherefore expose only `c2`, exactly the truncation class that invalidated earlier archives. The\nearliest complete stop is `0x00779915`.\n\nThis challenges the verifier instrument boundary, not game semantics. The planned objdump and save\nsubprocesses were **not run**, so there is no positive-execution claim, no archived-state/RNG result,\nand no verifier manifest. Existing analyst captures remain measurements only. Actual runtime states\n(existing/miss, spare/full, empty/nonempty, short/long, unwind) remain unexecuted; static branches do\nnot substitute for them. No original-assisted execution, partial/full compare, independent\nreplacement, or integrated replay occurred.\n\n## Side effects and exact next action\n\nOnly verifier-owned plan/report files and canonical campaign surprise/checkpoint state were written.\nNo lease was acquired; no lab, VM, Ghidra, game, allocator, RNG, engine source, staging, commit, or\npush operation occurred.\n\n**Exact next action:** Astra resolves `s-81ffc3041e1f07b87928e6f2` by deciding whether\n`0x00779913` becomes an expected-truncated negative and `0x00779915` the fresh complete held-out\ncontrol; then a fresh verifier quantum executes the authorized session-bound reproduction.","lineStart":1,"lineEnd":80,"totalLines":80,"truncated":false}},"title":"verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md","time":{"start":1789046049647,"end":1789046049697}},"metadata":{"openai":{"itemId":"fc_0c59a73010bf2d6f016aa2ad21601887d18ec45843390d5d97"}},"id":"prt_08b744b6b0017G6n4Fn2GufsSa","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7411b9001JTMpHt4glWHCL2"}} +{"type":"tool_use","timestamp":1789046049702,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_QA4Kyb5GPezbGcjV0eQB3sF7","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json"},"output":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-correction-verifier\",\n3: \"artifacts\": [\n4: {\n5: \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n6: \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n7: }\n8: ],\n9: \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n10: \"contract\": \"research-completion-abi\",\n11: \"id\": \"4555678e34291015554e7e88\",\n12: \"model\": \"openai/gpt-5.6-sol\",\n13: \"next_action\": \"Create and run the independent fail-if-exists static/save reproduction for session run-d6c4dc15e9f4d15155fee856.\",\n14: \"role\": \"verifier\",\n15: \"schema\": \"sots-checkpoint/1\",\n16: \"session\": \"run-d6c4dc15e9f4d15155fee856\",\n17: \"summary\": \"OBSERVATIONS: canonical policy, contract, lead checkpoint, all 13 surprise records, relevant Astra decisions, handoff and raw manifests were read. Contract validates in verification with no open surprises. Assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7 match baselines and common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git. Paired source binding independently remeasured as engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8, matching analyst manifest despite dirty worktrees. Binary SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd/version 2.38 match. Handoff artifacts rehash exactly. No resource lease acquired or lab mutation performed. DECISIONS: verification remains static reproduction plus archived serialized-state checking only; no live allocator safety, original-assisted compare, replacement, or integrated replay claim. Pre-experiment falsifiers and required distinct states/branches are persisted in the attached verifier-owned plan. BLOCKERS/LIMITS: contract evidence array is empty; analyst package itself states runtime capacity/string/unwind states unavailable. Canonical integrated tree is dirty at HEAD 41a6840 but is not the assigned source binding.\",\n18: \"timestamp\": \"2026-09-10T05:26:16.270911+00:00\"\n19: }\n\n(End of file - total 19 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"4555678e34291015554e7e88\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Create and run the independent fail-if-exists static/save reproduction for session run-d6c4dc15e9f4d15155fee856.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-d6c4dc15e9f4d15155fee856\",\n \"summary\": \"OBSERVATIONS: canonical policy, contract, lead checkpoint, all 13 surprise records, relevant Astra decisions, handoff and raw manifests were read. Contract validates in verification with no open surprises. Assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7 match baselines and common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git. Paired source binding independently remeasured as engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8, matching analyst manifest despite dirty worktrees. Binary SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd/version 2.38 match. Handoff artifacts rehash exactly. No resource lease acquired or lab mutation performed. DECISIONS: verification remains static reproduction plus archived serialized-state checking only; no live allocator safety, original-assisted compare, replacement, or integrated replay claim. Pre-experiment falsifiers and required distinct states/branches are persisted in the attached verifier-owned plan. BLOCKERS/LIMITS: contract evidence array is empty; analyst package itself states runtime capacity/string/unwind states unavailable. Canonical integrated tree is dirty at HEAD 41a6840 but is not the assigned source binding.\",\n \"timestamp\": \"2026-09-10T05:26:16.270911+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json","text":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"4555678e34291015554e7e88\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Create and run the independent fail-if-exists static/save reproduction for session run-d6c4dc15e9f4d15155fee856.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-d6c4dc15e9f4d15155fee856\",\n \"summary\": \"OBSERVATIONS: canonical policy, contract, lead checkpoint, all 13 surprise records, relevant Astra decisions, handoff and raw manifests were read. Contract validates in verification with no open surprises. Assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7 match baselines and common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git. Paired source binding independently remeasured as engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8, matching analyst manifest despite dirty worktrees. Binary SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd/version 2.38 match. Handoff artifacts rehash exactly. No resource lease acquired or lab mutation performed. DECISIONS: verification remains static reproduction plus archived serialized-state checking only; no live allocator safety, original-assisted compare, replacement, or integrated replay claim. Pre-experiment falsifiers and required distinct states/branches are persisted in the attached verifier-owned plan. BLOCKERS/LIMITS: contract evidence array is empty; analyst package itself states runtime capacity/string/unwind states unavailable. Canonical integrated tree is dirty at HEAD 41a6840 but is not the assigned source binding.\",\n \"timestamp\": \"2026-09-10T05:26:16.270911+00:00\"\n}","lineStart":1,"lineEnd":19,"totalLines":19,"truncated":false}},"title":"campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json","time":{"start":1789046049653,"end":1789046049700}},"metadata":{"openai":{"itemId":"fc_0c59a73010bf2d6f016aa2ad21602c87d1aa0bd9415dd72a7a"}},"id":"prt_08b744b71001NcSacYsiO1eDoI","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7411b9001JTMpHt4glWHCL2"}} +{"type":"tool_use","timestamp":1789046049711,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_0HcihSk7ZangQOQBxYsqjCaq","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\nfile\n\n1: #!/usr/bin/env python3\n2: \"\"\"Fresh, session-bound static capture required by two 2026-09-10 Astra decisions.\"\"\"\n3: \n4: import argparse\n5: import hashlib\n6: import json\n7: import subprocess\n8: from datetime import datetime, timezone\n9: from pathlib import Path\n10: \n11: \n12: ROOT = Path(\"/home/alex/sots-re\")\n13: SESSION = \"run-9daf5c3b75547271d5c3b4ed\"\n14: STALE_SESSION = \"run-ee78b8773688ca09f8046e21\"\n15: REL_OUT = Path(\"verify/results/research-completion-abi\") / SESSION\n16: OUT = ROOT / REL_OUT\n17: BINARY = ROOT / \"dumps/sots.exe\"\n18: TOOL = Path(\"/usr/bin/objdump\")\n19: CAMPAIGN = ROOT / \"tools/campaign.py\"\n20: ENGINE_TREE = Path(\"/tmp/opencode/sots-final-research-engine\")\n21: RE_TREE = Path(\"/tmp/opencode/sots-final-research-re\")\n22: EXPECTED_BINARY = \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n23: EXPECTED_TOOL = \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\"\n24: \n25: # Exact historical windows remain controls. Each companion widened stop was already shown\n26: # to add rows without changing the exact rows, except nested-copy's known-bad historical stop.\n27: DISASSEMBLY = (\n28: (\"turn-get-create-exact\", 0x00885380, 0x0088544A, \"complete-control\"),\n29: (\"turn-get-create-wide\", 0x00885380, 0x0088544E, \"boundary-audit\"),\n30: (\"turn-append-exact\", 0x00884CB0, 0x00884D8F, \"complete-control\"),\n31: (\"turn-append-wide\", 0x00884CB0, 0x00884D93, \"boundary-audit\"),\n32: (\"nested-dtor-exact\", 0x00629580, 0x006295CA, \"complete-control\"),\n33: (\"nested-dtor-wide\", 0x00629580, 0x006295CE, \"boundary-audit\"),\n34: (\"nested-copy-authority\", 0x00779850, 0x00779930, \"bounded-authority\"),\n35: (\"nested-copy-stop-a20\", 0x00779850, 0x00779A20, \"expected-truncated-negative\"),\n36: (\"nested-copy-stop-a21\", 0x00779850, 0x00779A21, \"predicted-complete-je\"),\n37: (\"nested-copy-stop-a23\", 0x00779850, 0x00779A23, \"predicted-complete-mov\"),\n38: (\"nested-copy-stop-a28\", 0x00779850, 0x00779A28, \"complete-call-boundary-control\"),\n39: )\n40: \n41: RAW_BYTES = (\n42: (\"nested-copy-boundary-bytes\", 0x00779A1F, 0x00779A28),\n43: )\n44: \n45: \n46: def sha(data: bytes) -> str:\n47: return hashlib.sha256(data).hexdigest()\n48: \n49: \n50: def file_identity(path: Path) -> dict:\n51: data = path.read_bytes()\n52: return {\"path\": str(path), \"bytes\": len(data), \"sha256\": sha(data)}\n53: \n54: \n55: def validate_identity(session: str, output: Path, entries: list[str]) -> None:\n56: if not session:\n57: raise ValueError(\"missing session\")\n58: if session == STALE_SESSION or session != SESSION:\n59: raise ValueError(\"stale or unexpected session\")\n60: if output.resolve() != OUT.resolve() or output.name != session:\n61: raise ValueError(\"output location is not bound to session\")\n62: if sorted(entries) not in ([], [\"capture.py\"]):\n63: raise FileExistsError(\"output location was already used\")\n64: \n65: \n66: def source_binding() -> dict:\n67: argv = [\n68: \"python3\", str(CAMPAIGN), \"--state-root\", str(ROOT), \"source-binding\",\n69: \"research-completion-abi\", \"--engine-worktree\", str(ENGINE_TREE),\n70: \"--re-worktree\", str(RE_TREE),\n71: ]\n72: proc = subprocess.run(argv, cwd=ROOT, check=True, capture_output=True, text=True)\n73: return {\"argv\": argv, \"value\": json.loads(proc.stdout)}\n74: \n75: \n76: def run_capture(name: str, argv: list[str], classification: str) -> dict:\n77: proc = subprocess.run(argv, cwd=ROOT, check=False, capture_output=True)\n78: stdout_path = OUT / f\"{name}.stdout.txt\"\n79: stderr_path = OUT / f\"{name}.stderr.txt\"\n80: stdout_path.write_bytes(proc.stdout)\n81: stderr_path.write_bytes(proc.stderr)\n82: return {\n83: \"name\": name,\n84: \"classification\": classification,\n85: \"argv\": argv,\n86: \"cwd\": str(ROOT),\n87: \"returncode\": proc.returncode,\n88: \"stdout\": {\"path\": str(stdout_path.relative_to(ROOT)), \"bytes\": len(proc.stdout), \"sha256\": sha(proc.stdout)},\n89: \"stderr\": {\"path\": str(stderr_path.relative_to(ROOT)), \"bytes\": len(proc.stderr), \"sha256\": sha(proc.stderr)},\n90: }\n91: \n92: \n93: parser = argparse.ArgumentParser()\n94: parser.add_argument(\"--session\", required=True)\n95: parser.add_argument(\"--output\", required=True, type=Path)\n96: args = parser.parse_args()\n97: \n98: negative_preflight = []\n99: for name, candidate_session, candidate_output, entries in (\n100: (\"reject-missing-session\", \"\", OUT, [\"capture.py\"]),\n101: (\"reject-stale-session\", STALE_SESSION, OUT, [\"capture.py\"]),\n102: (\"reject-stale-output\", SESSION, ROOT / \"verify/results/research-completion-abi\" / STALE_SESSION, [\"capture.py\"]),\n103: (\"reject-reused-output\", SESSION, OUT, [\"capture.py\", \"prior-output.txt\"]),\n104: ):\n105: try:\n106: validate_identity(candidate_session, candidate_output, entries)\n107: except (ValueError, FileExistsError) as exc:\n108: negative_preflight.append({\"name\": name, \"status\": \"pass\", \"rejection\": str(exc)})\n109: else:\n110: raise SystemExit(f\"negative preflight unexpectedly accepted: {name}\")\n111: \n112: validate_identity(args.session, args.output, [p.name for p in OUT.iterdir()])\n113: before = source_binding()\n114: binary = file_identity(BINARY)\n115: tool = file_identity(TOOL)\n116: if binary[\"sha256\"] != EXPECTED_BINARY or tool[\"sha256\"] != EXPECTED_TOOL:\n117: raise SystemExit(\"binary/tool identity drift\")\n118: \n119: records = []\n120: for name, start, stop, classification in DISASSEMBLY:\n121: records.append(run_capture(name, [\n122: str(TOOL), \"-D\", \"-Mintel\", f\"--start-address=0x{start:08x}\",\n123: f\"--stop-address=0x{stop:08x}\", str(BINARY),\n124: ], classification))\n125: for name, start, stop in RAW_BYTES:\n126: records.append(run_capture(name, [\n127: str(TOOL), \"-s\", \"-j\", \".text\", f\"--start-address=0x{start:08x}\",\n128: f\"--stop-address=0x{stop:08x}\", str(BINARY),\n129: ], \"raw-byte-boundary-control\"))\n130: \n131: after = source_binding()\n132: checks = {\n133: \"explicit-session\": args.session == SESSION,\n134: \"session-output-match\": args.output.resolve() == OUT.resolve(),\n135: \"negative-preflight-all-rejected\": all(x[\"status\"] == \"pass\" for x in negative_preflight),\n136: \"binary-hash\": binary[\"sha256\"] == EXPECTED_BINARY,\n137: \"tool-hash\": tool[\"sha256\"] == EXPECTED_TOOL,\n138: \"source-stable\": before[\"value\"] == after[\"value\"],\n139: \"all-return-zero\": all(x[\"returncode\"] == 0 for x in records),\n140: \"all-stdout-nonempty\": all(x[\"stdout\"][\"bytes\"] > 0 for x in records),\n141: \"all-stderr-empty\": all(x[\"stderr\"][\"bytes\"] == 0 for x in records),\n142: }\n143: manifest = {\n144: \"schema\": \"sots-abi-static-capture/1\",\n145: \"session\": SESSION,\n146: \"actor\": \"research-abi-analyst\",\n147: \"role\": \"analyst\",\n148: \"model\": \"openai/gpt-5.6-sol\",\n149: \"timestamp\": datetime.now(timezone.utc).isoformat(),\n150: \"decisions\": [\"d-fd5aff1eaf78a8c15d96723c\", \"d-0bb927e63b915c87a58d4257\"],\n151: \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n152: \"negative_preflight\": negative_preflight,\n153: \"source_before\": before,\n154: \"source_after\": after,\n155: \"input\": binary,\n156: \"tool\": {**tool, \"version\": subprocess.run([str(TOOL), \"--version\"], check=True, capture_output=True, text=True).stdout.splitlines()[0]},\n157: \"commands\": records,\n158: \"checks\": [{\"name\": name, \"status\": \"pass\" if status else \"fail\"} for name, status in checks.items()],\n159: \"failed\": [name for name, status in checks.items() if not status],\n160: }\n161: (OUT / \"manifest.json\").write_text(json.dumps(manifest, indent=2) + \"\\n\")\n162: print(json.dumps({\"commands\": len(records), \"failed\": manifest[\"failed\"], \"manifest\": str((OUT / \"manifest.json\").relative_to(ROOT))}, indent=2))\n163: raise SystemExit(bool(manifest[\"failed\"]))\n\n(End of file - total 163 lines)\n","metadata":{"preview":"#!/usr/bin/env python3\n\"\"\"Fresh, session-bound static capture required by two 2026-09-10 Astra decisions.\"\"\"\n\nimport argparse\nimport hashlib\nimport json\nimport subprocess\nfrom datetime import datetime, timezone\nfrom pathlib import Path\n\n\nROOT = Path(\"/home/alex/sots-re\")\nSESSION = \"run-9daf5c3b75547271d5c3b4ed\"\nSTALE_SESSION = \"run-ee78b8773688ca09f8046e21\"\nREL_OUT = Path(\"verify/results/research-completion-abi\") / SESSION\nOUT = ROOT / REL_OUT\nBINARY = ROOT / \"dumps/sots.exe\"\nTOOL = Path(\"/usr/bin/objdump\")\nCAMPAIGN = ROOT / \"tools/campaign.py\"\nENGINE_TREE = Path(\"/tmp/opencode/sots-final-research-engine\")","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py","text":"#!/usr/bin/env python3\n\"\"\"Fresh, session-bound static capture required by two 2026-09-10 Astra decisions.\"\"\"\n\nimport argparse\nimport hashlib\nimport json\nimport subprocess\nfrom datetime import datetime, timezone\nfrom pathlib import Path\n\n\nROOT = Path(\"/home/alex/sots-re\")\nSESSION = \"run-9daf5c3b75547271d5c3b4ed\"\nSTALE_SESSION = \"run-ee78b8773688ca09f8046e21\"\nREL_OUT = Path(\"verify/results/research-completion-abi\") / SESSION\nOUT = ROOT / REL_OUT\nBINARY = ROOT / \"dumps/sots.exe\"\nTOOL = Path(\"/usr/bin/objdump\")\nCAMPAIGN = ROOT / \"tools/campaign.py\"\nENGINE_TREE = Path(\"/tmp/opencode/sots-final-research-engine\")\nRE_TREE = Path(\"/tmp/opencode/sots-final-research-re\")\nEXPECTED_BINARY = \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\nEXPECTED_TOOL = \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\"\n\n# Exact historical windows remain controls. Each companion widened stop was already shown\n# to add rows without changing the exact rows, except nested-copy's known-bad historical stop.\nDISASSEMBLY = (\n (\"turn-get-create-exact\", 0x00885380, 0x0088544A, \"complete-control\"),\n (\"turn-get-create-wide\", 0x00885380, 0x0088544E, \"boundary-audit\"),\n (\"turn-append-exact\", 0x00884CB0, 0x00884D8F, \"complete-control\"),\n (\"turn-append-wide\", 0x00884CB0, 0x00884D93, \"boundary-audit\"),\n (\"nested-dtor-exact\", 0x00629580, 0x006295CA, \"complete-control\"),\n (\"nested-dtor-wide\", 0x00629580, 0x006295CE, \"boundary-audit\"),\n (\"nested-copy-authority\", 0x00779850, 0x00779930, \"bounded-authority\"),\n (\"nested-copy-stop-a20\", 0x00779850, 0x00779A20, \"expected-truncated-negative\"),\n (\"nested-copy-stop-a21\", 0x00779850, 0x00779A21, \"predicted-complete-je\"),\n (\"nested-copy-stop-a23\", 0x00779850, 0x00779A23, \"predicted-complete-mov\"),\n (\"nested-copy-stop-a28\", 0x00779850, 0x00779A28, \"complete-call-boundary-control\"),\n)\n\nRAW_BYTES = (\n (\"nested-copy-boundary-bytes\", 0x00779A1F, 0x00779A28),\n)\n\n\ndef sha(data: bytes) -> str:\n return hashlib.sha256(data).hexdigest()\n\n\ndef file_identity(path: Path) -> dict:\n data = path.read_bytes()\n return {\"path\": str(path), \"bytes\": len(data), \"sha256\": sha(data)}\n\n\ndef validate_identity(session: str, output: Path, entries: list[str]) -> None:\n if not session:\n raise ValueError(\"missing session\")\n if session == STALE_SESSION or session != SESSION:\n raise ValueError(\"stale or unexpected session\")\n if output.resolve() != OUT.resolve() or output.name != session:\n raise ValueError(\"output location is not bound to session\")\n if sorted(entries) not in ([], [\"capture.py\"]):\n raise FileExistsError(\"output location was already used\")\n\n\ndef source_binding() -> dict:\n argv = [\n \"python3\", str(CAMPAIGN), \"--state-root\", str(ROOT), \"source-binding\",\n \"research-completion-abi\", \"--engine-worktree\", str(ENGINE_TREE),\n \"--re-worktree\", str(RE_TREE),\n ]\n proc = subprocess.run(argv, cwd=ROOT, check=True, capture_output=True, text=True)\n return {\"argv\": argv, \"value\": json.loads(proc.stdout)}\n\n\ndef run_capture(name: str, argv: list[str], classification: str) -> dict:\n proc = subprocess.run(argv, cwd=ROOT, check=False, capture_output=True)\n stdout_path = OUT / f\"{name}.stdout.txt\"\n stderr_path = OUT / f\"{name}.stderr.txt\"\n stdout_path.write_bytes(proc.stdout)\n stderr_path.write_bytes(proc.stderr)\n return {\n \"name\": name,\n \"classification\": classification,\n \"argv\": argv,\n \"cwd\": str(ROOT),\n \"returncode\": proc.returncode,\n \"stdout\": {\"path\": str(stdout_path.relative_to(ROOT)), \"bytes\": len(proc.stdout), \"sha256\": sha(proc.stdout)},\n \"stderr\": {\"path\": str(stderr_path.relative_to(ROOT)), \"bytes\": len(proc.stderr), \"sha256\": sha(proc.stderr)},\n }\n\n\nparser = argparse.ArgumentParser()\nparser.add_argument(\"--session\", required=True)\nparser.add_argument(\"--output\", required=True, type=Path)\nargs = parser.parse_args()\n\nnegative_preflight = []\nfor name, candidate_session, candidate_output, entries in (\n (\"reject-missing-session\", \"\", OUT, [\"capture.py\"]),\n (\"reject-stale-session\", STALE_SESSION, OUT, [\"capture.py\"]),\n (\"reject-stale-output\", SESSION, ROOT / \"verify/results/research-completion-abi\" / STALE_SESSION, [\"capture.py\"]),\n (\"reject-reused-output\", SESSION, OUT, [\"capture.py\", \"prior-output.txt\"]),\n):\n try:\n validate_identity(candidate_session, candidate_output, entries)\n except (ValueError, FileExistsError) as exc:\n negative_preflight.append({\"name\": name, \"status\": \"pass\", \"rejection\": str(exc)})\n else:\n raise SystemExit(f\"negative preflight unexpectedly accepted: {name}\")\n\nvalidate_identity(args.session, args.output, [p.name for p in OUT.iterdir()])\nbefore = source_binding()\nbinary = file_identity(BINARY)\ntool = file_identity(TOOL)\nif binary[\"sha256\"] != EXPECTED_BINARY or tool[\"sha256\"] != EXPECTED_TOOL:\n raise SystemExit(\"binary/tool identity drift\")\n\nrecords = []\nfor name, start, stop, classification in DISASSEMBLY:\n records.append(run_capture(name, [\n str(TOOL), \"-D\", \"-Mintel\", f\"--start-address=0x{start:08x}\",\n f\"--stop-address=0x{stop:08x}\", str(BINARY),\n ], classification))\nfor name, start, stop in RAW_BYTES:\n records.append(run_capture(name, [\n str(TOOL), \"-s\", \"-j\", \".text\", f\"--start-address=0x{start:08x}\",\n f\"--stop-address=0x{stop:08x}\", str(BINARY),\n ], \"raw-byte-boundary-control\"))\n\nafter = source_binding()\nchecks = {\n \"explicit-session\": args.session == SESSION,\n \"session-output-match\": args.output.resolve() == OUT.resolve(),\n \"negative-preflight-all-rejected\": all(x[\"status\"] == \"pass\" for x in negative_preflight),\n \"binary-hash\": binary[\"sha256\"] == EXPECTED_BINARY,\n \"tool-hash\": tool[\"sha256\"] == EXPECTED_TOOL,\n \"source-stable\": before[\"value\"] == after[\"value\"],\n \"all-return-zero\": all(x[\"returncode\"] == 0 for x in records),\n \"all-stdout-nonempty\": all(x[\"stdout\"][\"bytes\"] > 0 for x in records),\n \"all-stderr-empty\": all(x[\"stderr\"][\"bytes\"] == 0 for x in records),\n}\nmanifest = {\n \"schema\": \"sots-abi-static-capture/1\",\n \"session\": SESSION,\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": datetime.now(timezone.utc).isoformat(),\n \"decisions\": [\"d-fd5aff1eaf78a8c15d96723c\", \"d-0bb927e63b915c87a58d4257\"],\n \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n \"negative_preflight\": negative_preflight,\n \"source_before\": before,\n \"source_after\": after,\n \"input\": binary,\n \"tool\": {**tool, \"version\": subprocess.run([str(TOOL), \"--version\"], check=True, capture_output=True, text=True).stdout.splitlines()[0]},\n \"commands\": records,\n \"checks\": [{\"name\": name, \"status\": \"pass\" if status else \"fail\"} for name, status in checks.items()],\n \"failed\": [name for name, status in checks.items() if not status],\n}\n(OUT / \"manifest.json\").write_text(json.dumps(manifest, indent=2) + \"\\n\")\nprint(json.dumps({\"commands\": len(records), \"failed\": manifest[\"failed\"], \"manifest\": str((OUT / \"manifest.json\").relative_to(ROOT))}, indent=2))\nraise SystemExit(bool(manifest[\"failed\"]))","lineStart":1,"lineEnd":163,"totalLines":163,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py","time":{"start":1789046049658,"end":1789046049709}},"metadata":{"openai":{"itemId":"fc_0c59a73010bf2d6f016aa2ad21603487d1a4f89fc2b9490de5"}},"id":"prt_08b744b76001Tm7CBt7yZtBUIb","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7411b9001JTMpHt4glWHCL2"}} +{"type":"step_finish","timestamp":1789046049774,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b744bec001vVjxFqBsn8fecE","reason":"tool-calls","snapshot":"1da408a1af28c1dd5a82b10bd64054e0858d96a0","messageID":"msg_08b7411b9001JTMpHt4glWHCL2","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":36473,"input":262,"output":244,"reasoning":127,"cache":{"write":0,"read":35840}},"cost":0}} +{"type":"step_start","timestamp":1789046052613,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b745701001EeFg6X6LHBYEzT","messageID":"msg_08b744c170012l5uyCxu2JR22K","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"d9d3545d3e3806dca0eaea00d15892ffa748b42b","type":"step-start"}} +{"type":"tool_use","timestamp":1789046064741,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_hIECJPlrRTWKsgRAo6epeqSZ","state":{"status":"completed","input":{"command":"python3 -c 'import json; p=\"campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json\"; d=json.load(open(p)); print(d[\"explanation\"]); print(\"\\nPROBE:\\n\"+d[\"probe\"])'","workdir":"/home/alex/sots-re"},"output":"Astra resolution-only run-481c9379a1efc0e527d2a28c. OBSERVATION: complete git diff --no-index of canonical campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json versus run-481c9379a1efc0e527d2a28c.json exposes actual historical-to-current source_before inventory changes. Analyst run-9daf5c3b75547271d5c3b4ed.json records runner RE b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4 before/after, identical to verifier runner. Current and prior resolver runner RE record e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9; engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged. Git roots/common dirs independently match assigned paired trees and baselines engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23, RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Dirty inventories preexist; no resolver source edits.\nINSTRUMENT IDENTITY: tools/run_agent.py source_identity hashes all inventoried files; tools/campaign.py source_manifest excludes caches, verify/results and mutable campaign except models/schema/agents. Thus historical campaign digest 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 is NOT the historical runner digest. Prior surprise/checkpoint/decision direct comparison is QUALIFIED: unlike hash domains were compared, but actual like-for-like runner drift survives. No fresh current campaign-binding computation occurred; shell resolver allowlist does not authorize source-binding. Do not invent that digest.\nEXACT CAMPAIGN-INCLUDED DELTA from full runner diff: byte changes, all mode 420 unchanged, AGENTS.md; CLAUDE.md; campaign/agents/lead.md; campaign/models.json; guides/multi-agent-workflow.md; opencode.json; tools/campaign.py; tools/check_agent_config.py; tools/run_agent.py; verify/config/test_agent_config.py. Removed inventory entry verify/campaign/test_controls.py (old mode 420, hash 108460f4e90c4cb7036642e85de581e31fd70c478533c32364691260461814fc). No added entries or mode-only changes. Campaign-excluded changes: campaign/{DASHBOARD.md,backlog.md,board.md,open-questions.md} changed; campaign/README.md, contracts/{controls-bootstrap,launcher-smoke,research-completion-abi,research-replacement}.json, current.json, pilots/research-replacement.md, research/SESSION.md removed from paired inventory. Removed campaign/rollout entries: RESULT.md, architecture-decision.md, controls-followup.md, controls-worker-state.md, controls-worker.md, controls_evidence.py, engine-followup.md, engine-worker-state.md, engine-worker.md, formal-verifier-state.md, formal-verifier.md, gate-followup.md, gate-worker-state.md, gate-worker.md, housekeeping-completion.md, housekeeping-followup.md, housekeeping-worker-state.md, housekeeping-worker.md, independent-review.md, lead-state.md, publishing-worker-state.md, publishing-worker.md, review-followup.md, review-worker-state.md, review-worker.md, sync_verifier_snapshot.py. Removed verify/results/housekeeping/{vm140,vm141,vm144,vm145,vm146}-result.json. These are inventory observations, not authorization to restore files or proof of cause. Full old/new hashes are in named runner inventories; no excluded save/trace changes appear in this diff.\nBINARY/INPUT/POSITIVE EXECUTION: analyst manifest aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4 rehashed by this session checkpoint; records sots.exe 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd, twelve zero-exit nonempty static captures with empty stderr. These are archived executions, not fresh binary/tool rehash or live execution. Read authority raw output shows c2 04 00 at 0x00779912 and cleanup after 0x00779915. Boundary-sensitive disassembler neutrality remains qualified per d-6e30d172051af0385f5979eb; no runtime neutrality or RNG measurement.\nCLAIMS/INVALIDATION: SURVIVES historical static measurement domain with original binding and prior ABI qualifications; no newly observed contradiction in ABI bytes. OVERTURNED current-source-identical reuse of historical package and unchanged verifier-plan item 1; current source differs including consumed controls. QUALIFIED ownership-recovered: static historical evidence only, requires fresh package before current acceptance. OVERTURNED any current independent-cross-check/pass claim: no fresh verifier reproduction. SURVIVES prior decision invalidation of plan item 5 stop 0x00779913; repaired 0x00779915 remains unexecuted/unblinded, full 0x00779930 authority still required. No active evidence entries to remove; preserve archived captures, invalidate their use as current-source acceptance and supersede checkpoint 3fc22ea3c402274179ce4d1f source-comparison premise. Bridge and replacement acceptance/readiness remain dependency-blocked, not restored by resolution.\nDECISION: choose new-source remeasurement, NOT old snapshot restoration or digest substitution. Scope remains static ABI and archived serialized-value cross-check only. Lead must bind and explicitly schedule the current paired snapshot and canonical consumed tools/inputs, revise verifier plan to this decision and d-6e30d172051af0385f5979eb, then obtain fresh independent reproduction through lifecycle controls. Missing controls tests are a preflight dependency, not permission to skip required gates; owner must supply them if needed, without resolver mutation. Needs-revision is not ready/accepted. No build, VM/Ghidra mutation, delegation or implementation authorized. Integrator links this decision and regenerates projections only after integration; no board history written.\n\nPROBE:\nCheapest discriminator is local read-only preflight, before disassembly: lead-authorized owner runs python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re and archives actual result with canonical consumed campaign/runner/interpreter/binary/objdump/recipe/save hashes. Compare equivalent runner inventories and campaign bindings separately; expect current campaign digest not to equal old 6696fd52, do not infer its value. Confirm required test inputs and source stability; missing inputs or unexplained drift blocks. Lead then records authorized new-source static remeasurement scope and schedules independent verifier after normal lifecycle preconditions, without source restoration. Fresh verifier checkpoints before experiment, uses fail-if-exists output and revised plan; runs negative stop 0x00779913, aligned 0x00779915 and authority 0x00779930 plus direct PE-mapped byte read, all a20/a21/a23/a28 controls and ABI/save checks from prior decision. Record execution/branches/streams and unexercised runtime states, not retroactive passes. Immediate next action is lead source-binding/preflight and contract scheduling, NOT lab work or acceptance.\n","metadata":{"output":"Astra resolution-only run-481c9379a1efc0e527d2a28c. OBSERVATION: complete git diff --no-index of canonical campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json versus run-481c9379a1efc0e527d2a28c.json exposes actual historical-to-current source_before inventory changes. Analyst run-9daf5c3b75547271d5c3b4ed.json records runner RE b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4 before/after, identical to verifier runner. Current and prior resolver runner RE record e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9; engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged. Git roots/common dirs independently match assigned paired trees and baselines engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23, RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Dirty inventories preexist; no resolver source edits.\nINSTRUMENT IDENTITY: tools/run_agent.py source_identity hashes all inventoried files; tools/campaign.py source_manifest excludes caches, verify/results and mutable campaign except models/schema/agents. Thus historical campaign digest 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 is NOT the historical runner digest. Prior surprise/checkpoint/decision direct comparison is QUALIFIED: unlike hash domains were compared, but actual like-for-like runner drift survives. No fresh current campaign-binding computation occurred; shell resolver allowlist does not authorize source-binding. Do not invent that digest.\nEXACT CAMPAIGN-INCLUDED DELTA from full runner diff: byte changes, all mode 420 unchanged, AGENTS.md; CLAUDE.md; campaign/agents/lead.md; campaign/models.json; guides/multi-agent-workflow.md; opencode.json; tools/campaign.py; tools/check_agent_config.py; tools/run_agent.py; verify/config/test_agent_config.py. Removed inventory entry verify/campaign/test_controls.py (old mode 420, hash 108460f4e90c4cb7036642e85de581e31fd70c478533c32364691260461814fc). No added entries or mode-only changes. Campaign-excluded changes: campaign/{DASHBOARD.md,backlog.md,board.md,open-questions.md} changed; campaign/README.md, contracts/{controls-bootstrap,launcher-smoke,research-completion-abi,research-replacement}.json, current.json, pilots/research-replacement.md, research/SESSION.md removed from paired inventory. Removed campaign/rollout entries: RESULT.md, architecture-decision.md, controls-followup.md, controls-worker-state.md, controls-worker.md, controls_evidence.py, engine-followup.md, engine-worker-state.md, engine-worker.md, formal-verifier-state.md, formal-verifier.md, gate-followup.md, gate-worker-state.md, gate-worker.md, housekeeping-completion.md, housekeeping-followup.md, housekeeping-worker-state.md, housekeeping-worker.md, independent-review.md, lead-state.md, publishing-worker-state.md, publishing-worker.md, review-followup.md, review-worker-state.md, review-worker.md, sync_verifier_snapshot.py. Removed verify/results/housekeeping/{vm140,vm141,vm144,vm145,vm146}-result.json. These are inventory observations, not authorization to restore files or proof of cause. Full old/new hashes are in named runner inventories; no excluded save/trace changes appear in this diff.\nBINARY/INPUT/POSITIVE EXECUTION: analyst manifest aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4 rehashed by this session checkpoint; records sots.exe 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd, twelve zero-exit nonempty static captures with empty stderr. These are archived executions, not fresh binary/tool rehash or live execution. Read authority raw output shows c2 04 00 at 0x00779912 and cleanup after 0x00779915. Boundary-sensitive disassembler neutrality remains qualified per d-6e30d172051af0385f5979eb; no runtime neutrality or RNG measurement.\nCLAIMS/INVALIDATION: SURVIVES historical static measurement domain with original binding and prior ABI qualifications; no newly observed contradiction in ABI bytes. OVERTURNED current-source-identical reuse of historical package and unchanged verifier-plan item 1; current source differs including consumed controls. QUALIFIED ownership-recovered: static historical evidence only, requires fresh package before current acceptance. OVERTURNED any current independent-cross-check/pass claim: no fresh verifier reproduction. SURVIVES prior decision invalidation of plan item 5 stop 0x00779913; repaired 0x00779915 remains unexecuted/unblinded, full 0x00779930 authority still required. No active evidence entries to remove; preserve archived captures, invalidate their use as current-source acceptance and supersede checkpoint 3fc22ea3c402274179ce4d1f source-comparison premise. Bridge and replacement acceptance/readiness remain dependency-blocked, not restored by resolution.\nDECISION: choose new-source remeasurement, NOT old snapshot restoration or digest substitution. Scope remains static ABI and archived serialized-value cross-check only. Lead must bind and explicitly schedule the current paired snapshot and canonical consumed tools/inputs, revise verifier plan to this decision and d-6e30d172051af0385f5979eb, then obtain fresh independent reproduction through lifecycle controls. Missing controls tests are a preflight dependency, not permission to skip required gates; owner must supply them if needed, without resolver mutation. Needs-revision is not ready/accepted. No build, VM/Ghidra mutation, delegation or implementation authorized. Integrator links this decision and regenerates projections only after integration; no board history written.\n\nPROBE:\nCheapest discriminator is local read-only preflight, before disassembly: lead-authorized owner runs python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re and archives actual result with canonical consumed campaign/runner/interpreter/binary/objdump/recipe/save hashes. Compare equivalent runner inventories and campaign bindings separately; expect current campaign digest not to equal old 6696fd52, do not infer its value. Confirm required test inputs and source stability; missing inputs or unexplained drift blocks. Lead then records authorized new-source static remeasurement scope and schedules independent verifier after normal lifecycle preconditions, without source restoration. Fresh verifier checkpoints before experiment, uses fail-if-exists output and revised plan; runs negative stop 0x00779913, aligned 0x00779915 and authority 0x00779930 plus direct PE-mapped byte read, all a20/a21/a23/a28 controls and ABI/save checks from prior decision. Record execution/branches/streams and unexercised runtime states, not retroactive passes. Immediate next action is lead source-binding/preflight and contract scheduling, NOT lab work or acceptance.\n","exit":0,"truncated":false},"title":"python3 -c 'import json; p=\"campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json\"; d=json.load(open(p)); print(d[\"explanation\"]); print(\"\\nPROBE:\\n\"+d[\"probe\"])'","time":{"start":1789046064716,"end":1789046064739}},"metadata":{"openai":{"itemId":"fc_08b40dbea77af608016aa2ad30627887d1968e79b6217cd663"}},"id":"prt_08b748617001gdzUeqUP0HkV3q","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b744c170012l5uyCxu2JR22K"}} +{"type":"step_finish","timestamp":1789046064845,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7486c9001ams3K7CpS4TAex","reason":"tool-calls","snapshot":"b4da4fb6f2dfda384fb80d7a48f9940974b6eca4","messageID":"msg_08b744c170012l5uyCxu2JR22K","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":47466,"input":11262,"output":97,"reasoning":139,"cache":{"write":0,"read":35968}},"cost":0}} +{"type":"step_start","timestamp":1789046067888,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b74929a001mCUNLRtbCg8gkf","messageID":"msg_08b7486fc001J4X4tUIKg5XPXF","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"61f3f3026f8d5e7ee2608c38342e2cc285202492","type":"step-start"}} +{"type":"tool_use","timestamp":1789046085555,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_PPNGHIuT4jTsWFMSBGAR56D0","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py","offset":1,"limit":120},"output":"/home/alex/sots-re/verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py\nfile\n\n1: #!/usr/bin/env python3\n2: \"\"\"Fresh verifier-owned ABI/static-state reproduction; refuses overwrite.\"\"\"\n3: import hashlib\n4: import json\n5: import pathlib\n6: import struct\n7: import subprocess\n8: \n9: ROOT = pathlib.Path(\"/home/alex/sots-re\")\n10: SESSION = \"run-7d85d45cb2196e07025e5096\"\n11: OUT = ROOT / \"verify/results/research-completion-abi-independent\" / SESSION\n12: EXE = ROOT / \"dumps/sots.exe\"\n13: SAVE = ROOT / \"verify/results/saves/turn3-state.sav\"\n14: OBJDUMP = pathlib.Path(\"/usr/bin/objdump\")\n15: \n16: WINDOWS = [\n17: (\"observed-alloc-narrow\", 0x57E590, 0x57E5E4),\n18: (\"observed-alloc-wide\", 0x57E590, 0x57E5E6),\n19: (\"player-append-narrow\", 0x86C580, 0x86C62E),\n20: (\"player-append-wide\", 0x86C580, 0x86C630),\n21: (\"player-copy-narrow\", 0x7693F0, 0x7694C0),\n22: (\"player-copy-wide\", 0x7693F0, 0x7694C2),\n23: (\"observed-push-narrow\", 0x7B7320, 0x7B739F),\n24: (\"observed-push-wide\", 0x7B7320, 0x7B73A1),\n25: (\"observed-realloc-narrow\", 0x7B34E0, 0x7B35EF),\n26: (\"observed-realloc-wide\", 0x7B34E0, 0x7B35F1),\n27: (\"string-alloc-narrow\", 0x4249A0, 0x424ADA),\n28: (\"string-alloc-wide\", 0x4249A0, 0x424ADC),\n29: (\"observed-ctor-control\", 0x8562A0, 0x85630D),\n30: (\"observed-copy-control\", 0x79A150, 0x79A1D9),\n31: (\"player-dtor-control\", 0x61AE90, 0x61AEFC),\n32: (\"import-thunks-control\", 0x924FAA, 0x924FBC),\n33: (\"dedup-narrow\", 0x825D40, 0x825E65),\n34: (\"dedup-wide\", 0x825D40, 0x825E67),\n35: (\"string-not-equal\", 0x46F8C0, 0x46F8F0),\n36: (\"string-compare\", 0x4236A0, 0x42370D),\n37: (\"byte-compare\", 0x422720, 0x422796),\n38: (\"player-ctor\", 0x84EE30, 0x84EEF4),\n39: ]\n40: EXPECTED = {\n41: \"observed-alloc\": \"c2 04 00\", \"player-append\": \"c2 04 00\",\n42: \"player-copy\": \"c2 04 00\", \"observed-push\": \"c2 04 00\",\n43: \"observed-realloc\": \"c2 04 00\", \"string-alloc\": \"c2 08 00\",\n44: \"dedup\": \"c2 08 00\",\n45: }\n46: DIRECT = {\n47: \"observed-alloc\": (0x57E5E3, \"c20400\"),\n48: \"player-append\": (0x86C62D, \"c20400\"),\n49: \"player-copy\": (0x7694BF, \"c20400\"),\n50: \"observed-push\": (0x7B739E, \"c20400\"),\n51: \"observed-realloc\": (0x7B35EE, \"c20400\"),\n52: \"string-alloc\": (0x424AD9, \"c20800\"),\n53: \"dedup\": (0x825E64, \"c20800\"),\n54: \"plain-ret\": (0x85630C, \"c3\"),\n55: \"constructor-defaults\": (0xAF0DC8, \"ffff7f7fffff7f7fffff7f7f\"),\n56: }\n57: \n58: def sha(data):\n59: return hashlib.sha256(data).hexdigest()\n60: \n61: def rows(data):\n62: return [x.rstrip() for x in data.splitlines()\n63: if b\":\" in x and x.lstrip()[:1].isdigit()]\n64: \n65: def pe_reader(data):\n66: pe = struct.unpack_from(\"","metadata":{"preview":"#!/usr/bin/env python3\n\"\"\"Fresh verifier-owned ABI/static-state reproduction; refuses overwrite.\"\"\"\nimport hashlib\nimport json\nimport pathlib\nimport struct\nimport subprocess\n\nROOT = pathlib.Path(\"/home/alex/sots-re\")\nSESSION = \"run-7d85d45cb2196e07025e5096\"\nOUT = ROOT / \"verify/results/research-completion-abi-independent\" / SESSION\nEXE = ROOT / \"dumps/sots.exe\"\nSAVE = ROOT / \"verify/results/saves/turn3-state.sav\"\nOBJDUMP = pathlib.Path(\"/usr/bin/objdump\")\n\nWINDOWS = [\n (\"observed-alloc-narrow\", 0x57E590, 0x57E5E4),\n (\"observed-alloc-wide\", 0x57E590, 0x57E5E6),\n (\"player-append-narrow\", 0x86C580, 0x86C62E),\n (\"player-append-wide\", 0x86C580, 0x86C630),","truncated":true,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py","text":"#!/usr/bin/env python3\n\"\"\"Fresh verifier-owned ABI/static-state reproduction; refuses overwrite.\"\"\"\nimport hashlib\nimport json\nimport pathlib\nimport struct\nimport subprocess\n\nROOT = pathlib.Path(\"/home/alex/sots-re\")\nSESSION = \"run-7d85d45cb2196e07025e5096\"\nOUT = ROOT / \"verify/results/research-completion-abi-independent\" / SESSION\nEXE = ROOT / \"dumps/sots.exe\"\nSAVE = ROOT / \"verify/results/saves/turn3-state.sav\"\nOBJDUMP = pathlib.Path(\"/usr/bin/objdump\")\n\nWINDOWS = [\n (\"observed-alloc-narrow\", 0x57E590, 0x57E5E4),\n (\"observed-alloc-wide\", 0x57E590, 0x57E5E6),\n (\"player-append-narrow\", 0x86C580, 0x86C62E),\n (\"player-append-wide\", 0x86C580, 0x86C630),\n (\"player-copy-narrow\", 0x7693F0, 0x7694C0),\n (\"player-copy-wide\", 0x7693F0, 0x7694C2),\n (\"observed-push-narrow\", 0x7B7320, 0x7B739F),\n (\"observed-push-wide\", 0x7B7320, 0x7B73A1),\n (\"observed-realloc-narrow\", 0x7B34E0, 0x7B35EF),\n (\"observed-realloc-wide\", 0x7B34E0, 0x7B35F1),\n (\"string-alloc-narrow\", 0x4249A0, 0x424ADA),\n (\"string-alloc-wide\", 0x4249A0, 0x424ADC),\n (\"observed-ctor-control\", 0x8562A0, 0x85630D),\n (\"observed-copy-control\", 0x79A150, 0x79A1D9),\n (\"player-dtor-control\", 0x61AE90, 0x61AEFC),\n (\"import-thunks-control\", 0x924FAA, 0x924FBC),\n (\"dedup-narrow\", 0x825D40, 0x825E65),\n (\"dedup-wide\", 0x825D40, 0x825E67),\n (\"string-not-equal\", 0x46F8C0, 0x46F8F0),\n (\"string-compare\", 0x4236A0, 0x42370D),\n (\"byte-compare\", 0x422720, 0x422796),\n (\"player-ctor\", 0x84EE30, 0x84EEF4),\n]\nEXPECTED = {\n \"observed-alloc\": \"c2 04 00\", \"player-append\": \"c2 04 00\",\n \"player-copy\": \"c2 04 00\", \"observed-push\": \"c2 04 00\",\n \"observed-realloc\": \"c2 04 00\", \"string-alloc\": \"c2 08 00\",\n \"dedup\": \"c2 08 00\",\n}\nDIRECT = {\n \"observed-alloc\": (0x57E5E3, \"c20400\"),\n \"player-append\": (0x86C62D, \"c20400\"),\n \"player-copy\": (0x7694BF, \"c20400\"),\n \"observed-push\": (0x7B739E, \"c20400\"),\n \"observed-realloc\": (0x7B35EE, \"c20400\"),\n \"string-alloc\": (0x424AD9, \"c20800\"),\n \"dedup\": (0x825E64, \"c20800\"),\n \"plain-ret\": (0x85630C, \"c3\"),\n \"constructor-defaults\": (0xAF0DC8, \"ffff7f7fffff7f7fffff7f7f\"),\n}\n\ndef sha(data):\n return hashlib.sha256(data).hexdigest()\n\ndef rows(data):\n return [x.rstrip() for x in data.splitlines()\n if b\":\" in x and x.lstrip()[:1].isdigit()]\n\ndef pe_reader(data):\n pe = struct.unpack_from(\"/home/alex/sots-re/verify/results/research-completion-abi-independent/run-7d85d45cb2196e07025e5096/manifest.json\nfile\n\n1: {\n2: \"schema\": \"sots-abi-independent-static/2\",\n3: \"session\": \"run-7d85d45cb2196e07025e5096\",\n4: \"scope\": \"independent static reproduction plus archived-state inspection; no live game/allocator/RNG execution\",\n5: \"input\": {\n6: \"path\": \"dumps/sots.exe\",\n7: \"bytes\": 7898624,\n8: \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n9: },\n10: \"save\": {\n11: \"path\": \"verify/results/saves/turn3-state.sav\",\n12: \"bytes\": 67219,\n13: \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n14: },\n15: \"tool\": {\n16: \"path\": \"/usr/bin/objdump\",\n17: \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\"\n18: },\n19: \"windows\": [\n20: {\n21: \"name\": \"observed-alloc-narrow\",\n22: \"argv\": [\n23: \"/usr/bin/objdump\",\n24: \"-D\",\n25: \"-Mintel\",\n26: \"--start-address=0x0057e590\",\n27: \"--stop-address=0x0057e5e4\",\n28: \"dumps/sots.exe\"\n29: ],\n30: \"returncode\": 0,\n31: \"stdout\": {\n32: \"bytes\": 1492,\n33: \"sha256\": \"d3e98f7b6db58de24cbb1f1d4bb0c18eeb1342c7fb4c3317dc4a62338bd875d1\"\n34: },\n35: \"stderr\": {\n36: \"bytes\": 0,\n37: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n38: },\n39: \"instruction_rows\": 29\n40: },\n41: {\n42: \"name\": \"observed-alloc-wide\",\n43: \"argv\": [\n44: \"/usr/bin/objdump\",\n45: \"-D\",\n46: \"-Mintel\",\n47: \"--start-address=0x0057e590\",\n48: \"--stop-address=0x0057e5e6\",\n49: \"dumps/sots.exe\"\n50: ],\n51: \"returncode\": 0,\n52: \"stdout\": {\n53: \"bytes\": 1496,\n54: \"sha256\": \"59a8f45ad330666a2209f23ce320c8dcbeea7571b40512d1ad5672e68d55e406\"\n55: },\n56: \"stderr\": {\n57: \"bytes\": 0,\n58: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n59: },\n60: \"instruction_rows\": 29\n61: },\n62: {\n63: \"name\": \"player-append-narrow\",\n64: \"argv\": [\n65: \"/usr/bin/objdump\",\n66: \"-D\",\n67: \"-Mintel\",\n68: \"--start-address=0x0086c580\",\n69: \"--stop-address=0x0086c62e\",\n70: \"dumps/sots.exe\"\n71: ],\n72: \"returncode\": 0,\n73: \"stdout\": {\n74: \"bytes\": 3356,\n75: \"sha256\": \"dcdb9b3fa370966de82ebdeb896133d95988b11e8159686d85add65c6932affa\"\n76: },\n77: \"stderr\": {\n78: \"bytes\": 0,\n79: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n80: },\n81: \"instruction_rows\": 65\n82: },\n83: {\n84: \"name\": \"player-append-wide\",\n85: \"argv\": [\n86: \"/usr/bin/objdump\",\n87: \"-D\",\n88: \"-Mintel\",\n89: \"--start-address=0x0086c580\",\n90: \"--stop-address=0x0086c630\",\n91: \"dumps/sots.exe\"\n92: ],\n93: \"returncode\": 0,\n94: \"stdout\": {\n95: \"bytes\": 3360,\n96: \"sha256\": \"02164c44a5398853d2ea8efba8dbcb65166fa50229b95facf6e6abaf197cc754\"\n97: },\n98: \"stderr\": {\n99: \"bytes\": 0,\n100: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n101: },\n102: \"instruction_rows\": 65\n103: },\n104: {\n105: \"name\": \"player-copy-narrow\",\n106: \"argv\": [\n107: \"/usr/bin/objdump\",\n108: \"-D\",\n109: \"-Mintel\",\n110: \"--start-address=0x007693f0\",\n111: \"--stop-address=0x007694c0\",\n112: \"dumps/sots.exe\"\n113: ],\n114: \"returncode\": 0,\n115: \"stdout\": {\n116: \"bytes\": 4069,\n117: \"sha256\": \"a73bcdbf5fe92be984ecf2a1747dd9858592edfdb722687392de6abc576b0a93\"\n118: },\n119: \"stderr\": {\n120: \"bytes\": 0,\n\n(Showing lines 1-120 of 680. Use offset=121 to continue.)\n","metadata":{"preview":"{\n \"schema\": \"sots-abi-independent-static/2\",\n \"session\": \"run-7d85d45cb2196e07025e5096\",\n \"scope\": \"independent static reproduction plus archived-state inspection; no live game/allocator/RNG execution\",\n \"input\": {\n \"path\": \"dumps/sots.exe\",\n \"bytes\": 7898624,\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n },\n \"save\": {\n \"path\": \"verify/results/saves/turn3-state.sav\",\n \"bytes\": 67219,\n \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n },\n \"tool\": {\n \"path\": \"/usr/bin/objdump\",\n \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\"\n },\n \"windows\": [\n {","truncated":true,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi-independent/run-7d85d45cb2196e07025e5096/manifest.json","text":"{\n \"schema\": \"sots-abi-independent-static/2\",\n \"session\": \"run-7d85d45cb2196e07025e5096\",\n \"scope\": \"independent static reproduction plus archived-state inspection; no live game/allocator/RNG execution\",\n \"input\": {\n \"path\": \"dumps/sots.exe\",\n \"bytes\": 7898624,\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n },\n \"save\": {\n \"path\": \"verify/results/saves/turn3-state.sav\",\n \"bytes\": 67219,\n \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n },\n \"tool\": {\n \"path\": \"/usr/bin/objdump\",\n \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\"\n },\n \"windows\": [\n {\n \"name\": \"observed-alloc-narrow\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x0057e590\",\n \"--stop-address=0x0057e5e4\",\n \"dumps/sots.exe\"\n ],\n \"returncode\": 0,\n \"stdout\": {\n \"bytes\": 1492,\n \"sha256\": \"d3e98f7b6db58de24cbb1f1d4bb0c18eeb1342c7fb4c3317dc4a62338bd875d1\"\n },\n \"stderr\": {\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"instruction_rows\": 29\n },\n {\n \"name\": \"observed-alloc-wide\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x0057e590\",\n \"--stop-address=0x0057e5e6\",\n \"dumps/sots.exe\"\n ],\n \"returncode\": 0,\n \"stdout\": {\n \"bytes\": 1496,\n \"sha256\": \"59a8f45ad330666a2209f23ce320c8dcbeea7571b40512d1ad5672e68d55e406\"\n },\n \"stderr\": {\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"instruction_rows\": 29\n },\n {\n \"name\": \"player-append-narrow\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x0086c580\",\n \"--stop-address=0x0086c62e\",\n \"dumps/sots.exe\"\n ],\n \"returncode\": 0,\n \"stdout\": {\n \"bytes\": 3356,\n \"sha256\": \"dcdb9b3fa370966de82ebdeb896133d95988b11e8159686d85add65c6932affa\"\n },\n \"stderr\": {\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"instruction_rows\": 65\n },\n {\n \"name\": \"player-append-wide\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x0086c580\",\n \"--stop-address=0x0086c630\",\n \"dumps/sots.exe\"\n ],\n \"returncode\": 0,\n \"stdout\": {\n \"bytes\": 3360,\n \"sha256\": \"02164c44a5398853d2ea8efba8dbcb65166fa50229b95facf6e6abaf197cc754\"\n },\n \"stderr\": {\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"instruction_rows\": 65\n },\n {\n \"name\": \"player-copy-narrow\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x007693f0\",\n \"--stop-address=0x007694c0\",\n \"dumps/sots.exe\"\n ],\n \"returncode\": 0,\n \"stdout\": {\n \"bytes\": 4069,\n \"sha256\": \"a73bcdbf5fe92be984ecf2a1747dd9858592edfdb722687392de6abc576b0a93\"\n },\n \"stderr\": {\n \"bytes\": 0,","lineStart":1,"lineEnd":120,"totalLines":680,"truncated":true}},"title":"verify/results/research-completion-abi-independent/run-7d85d45cb2196e07025e5096/manifest.json","time":{"start":1789046085536,"end":1789046085562}},"metadata":{"openai":{"itemId":"fc_04c8bf7c69a80ae0016aa2ad45432487d19245660f1b0f8bf4"}},"id":"prt_08b74d76e001BOte2yT5cU1w6J","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7486fc001J4X4tUIKg5XPXF"}} +{"type":"tool_use","timestamp":1789046085589,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_e4Co1Ev0noGkvlfpQi5katsb","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-d1d232d95e44383e927ed279.json"},"output":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-d1d232d95e44383e927ed279.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-independent\",\n3: \"artifacts\": [\n4: {\n5: \"path\": \"verify/results/research-completion-abi-independent/verification-plan-run-7d85d45cb2196e07025e5096.md\",\n6: \"sha256\": \"57d96ded9d273f7157257837dbeb5325346c014a21d91f5301be4beda8d5fa05\"\n7: },\n8: {\n9: \"path\": \"verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py\",\n10: \"sha256\": \"0681a9a4f877b7f511d382ca2b010a1b4a9eb5e4863e46b3aed372e895778bfb\"\n11: },\n12: {\n13: \"path\": \"verify/results/research-completion-abi-independent/run-7d85d45cb2196e07025e5096/manifest.json\",\n14: \"sha256\": \"e59149945c90adb0b099552069a0e4a0a6c7271dafd40e13f0ec357d7365d784\"\n15: },\n16: {\n17: \"path\": \"verify/results/research-completion-abi-independent/run-7d85d45cb2196e07025e5096/independent-state.json\",\n18: \"sha256\": \"6463816f322803b2b7b479e1fc116c4ffa33fb2772a3005d492422a00acea433\"\n19: },\n20: {\n21: \"path\": \"verify/results/research-completion-abi-independent/result-run-7d85d45cb2196e07025e5096.md\",\n22: \"sha256\": \"838e19ee3093a44fa7c11408841b03fe676c16a621bceda67af95a278e8f9178\"\n23: }\n24: ],\n25: \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n26: \"contract\": \"research-completion-abi\",\n27: \"id\": \"d1d232d95e44383e927ed279\",\n28: \"model\": \"openai/gpt-5.6-sol\",\n29: \"next_action\": \"Record a scoped PASS verifier verdict over the current non-integrated evidence array, revalidate identities/state, then write the mandatory quantum-end checkpoint.\",\n30: \"role\": \"verifier\",\n31: \"schema\": \"sots-checkpoint/1\",\n32: \"session\": \"run-7d85d45cb2196e07025e5096\",\n33: \"summary\": \"MID-QUANTUM POST-EXPERIMENT. OBSERVATIONS: Fresh verifier reproducer executed 22 objdump windows plus strict save reader and whole-state checksum. All 24 subprocesses returned zero with nonempty stdout and empty stderr; no skips. All 22 static stream identities exactly match prior independent output; seven narrow/wide pairs preserve preceding rows and expose five ownership ret-4, one string ret-8 and dedup ret-8. Raw branches retain 0x2c versus 0x74 strides, deep-copy calls, three string assignments, three guarded long-string deletes, description equality and unordered-coordinate mismatch. Held-out direct PE parser independently mapped all seven ret-imm bytes, plain c3, preceding-byte negative control 5d, and three 0x7f7fffff defaults without objdump. Strict archived parse found direct EvNxID=4, turn-3 count 2 and event ID 3 values; whole-state audit rebuilt 609080/609080 bytes, root e9c161e311f8ef8fad6f1aa1903dcf3f, and actual /Sim/RNG is one 2503-byte leaf digest 0978fdf34ff7962f76c2de810dc93e0a. DECISION: scoped PASS is supported for current non-integrated static-recovery/validation evidence only. No prediction failed or new surprise arose; historical provenance failures remain recorded failures. LIMITS: no live game, allocator, branch fixtures, original differential, replacement or integrated replay. No lab/resources/leases. Assigned source worktrees were not edited.\",\n34: \"timestamp\": \"2026-09-10T01:27:51.378187+00:00\"\n35: }\n\n(End of file - total 35 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-independent\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi-independent/verification-plan-run-7d85d45cb2196e07025e5096.md\",\n \"sha256\": \"57d96ded9d273f7157257837dbeb5325346c014a21d91f5301be4beda8d5fa05\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py\",\n \"sha256\": \"0681a9a4f877b7f511d382ca2b010a1b4a9eb5e4863e46b3aed372e895778bfb\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/run-7d85d45cb2196e07025e5096/manifest.json\",\n \"sha256\": \"e59149945c90adb0b099552069a0e4a0a6c7271dafd40e13f0ec357d7365d784\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/run-7d85d45cb2196e07025e5096/independent-state.json\",\n \"sha256\": \"6463816f322803b2b7b479e1fc116c4ffa33fb2772a3005d492422a00acea433\"\n },\n {","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-d1d232d95e44383e927ed279.json","text":"{\n \"actor\": \"research-abi-independent\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi-independent/verification-plan-run-7d85d45cb2196e07025e5096.md\",\n \"sha256\": \"57d96ded9d273f7157257837dbeb5325346c014a21d91f5301be4beda8d5fa05\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py\",\n \"sha256\": \"0681a9a4f877b7f511d382ca2b010a1b4a9eb5e4863e46b3aed372e895778bfb\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/run-7d85d45cb2196e07025e5096/manifest.json\",\n \"sha256\": \"e59149945c90adb0b099552069a0e4a0a6c7271dafd40e13f0ec357d7365d784\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/run-7d85d45cb2196e07025e5096/independent-state.json\",\n \"sha256\": \"6463816f322803b2b7b479e1fc116c4ffa33fb2772a3005d492422a00acea433\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/result-run-7d85d45cb2196e07025e5096.md\",\n \"sha256\": \"838e19ee3093a44fa7c11408841b03fe676c16a621bceda67af95a278e8f9178\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"d1d232d95e44383e927ed279\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Record a scoped PASS verifier verdict over the current non-integrated evidence array, revalidate identities/state, then write the mandatory quantum-end checkpoint.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-7d85d45cb2196e07025e5096\",\n \"summary\": \"MID-QUANTUM POST-EXPERIMENT. OBSERVATIONS: Fresh verifier reproducer executed 22 objdump windows plus strict save reader and whole-state checksum. All 24 subprocesses returned zero with nonempty stdout and empty stderr; no skips. All 22 static stream identities exactly match prior independent output; seven narrow/wide pairs preserve preceding rows and expose five ownership ret-4, one string ret-8 and dedup ret-8. Raw branches retain 0x2c versus 0x74 strides, deep-copy calls, three string assignments, three guarded long-string deletes, description equality and unordered-coordinate mismatch. Held-out direct PE parser independently mapped all seven ret-imm bytes, plain c3, preceding-byte negative control 5d, and three 0x7f7fffff defaults without objdump. Strict archived parse found direct EvNxID=4, turn-3 count 2 and event ID 3 values; whole-state audit rebuilt 609080/609080 bytes, root e9c161e311f8ef8fad6f1aa1903dcf3f, and actual /Sim/RNG is one 2503-byte leaf digest 0978fdf34ff7962f76c2de810dc93e0a. DECISION: scoped PASS is supported for current non-integrated static-recovery/validation evidence only. No prediction failed or new surprise arose; historical provenance failures remain recorded failures. LIMITS: no live game, allocator, branch fixtures, original differential, replacement or integrated replay. No lab/resources/leases. Assigned source worktrees were not edited.\",\n \"timestamp\": \"2026-09-10T01:27:51.378187+00:00\"\n}","lineStart":1,"lineEnd":35,"totalLines":35,"truncated":false}},"title":"campaign/runtime/checkpoints/research-completion-abi-d1d232d95e44383e927ed279.json","time":{"start":1789046085581,"end":1789046085587}},"metadata":{"openai":{"itemId":"fc_04c8bf7c69a80ae0016aa2ad45434087d1981b276e4fe5179c"}},"id":"prt_08b74d7a7001RftaDaVp8XqXjx","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7486fc001J4X4tUIKg5XPXF"}} +{"type":"tool_use","timestamp":1789046085621,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_pLkDgp7xwluBMHlOq5bUHEEu","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-ebe571c975acd7112778cc97.json"},"output":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-ebe571c975acd7112778cc97.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-independent\",\n3: \"artifacts\": [\n4: {\n5: \"path\": \"verify/results/research-completion-abi-independent/reproduce_run_735fcb8f4876c10285b03fad.py\",\n6: \"sha256\": \"0d495e360b9fb98965af0e60e8fd37a76eadbd0e9e191d0a59c13028ccb7732f\"\n7: },\n8: {\n9: \"path\": \"verify/results/research-completion-abi-independent/run-735fcb8f4876c10285b03fad/manifest.json\",\n10: \"sha256\": \"dfc29230c01f21a8fe84067aa642739b5c68a108eca9ca4a8f655552179850f5\"\n11: },\n12: {\n13: \"path\": \"verify/results/research-completion-abi-independent/run-735fcb8f4876c10285b03fad/heldout.json\",\n14: \"sha256\": \"64e2e3e69ab81ec76558bed75d61740b28ed7b27c7e252a1e48cf5f0a536ec95\"\n15: },\n16: {\n17: \"path\": \"verify/results/research-completion-abi-independent/run-735fcb8f4876c10285b03fad/turn3-save-reader.json\",\n18: \"sha256\": \"3524bb954988f167503345d37349b3f9f529e10e45eb5eccd3aab1ab365bd929\"\n19: },\n20: {\n21: \"path\": \"verify/results/research-completion-abi-independent/run-735fcb8f4876c10285b03fad/turn3-state-checksum.json\",\n22: \"sha256\": \"0629b773857839cf5381a86ed9d2796971a460d601421f3c6632dbdb0ff1b776\"\n23: },\n24: {\n25: \"path\": \"verify/results/research-completion-abi-independent/result-run-735fcb8f4876c10285b03fad.md\",\n26: \"sha256\": \"752c393d51e4c312f4c75e2f6a769d4d9ceadfe34a39164f83d582c989bca32e\"\n27: }\n28: ],\n29: \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n30: \"contract\": \"research-completion-abi\",\n31: \"id\": \"ebe571c975acd7112778cc97\",\n32: \"model\": \"openai/gpt-5.6-sol\",\n33: \"next_action\": \"Lead should package source-bound static-recovery and validation evidence for the current contract, then launch a fresh independent verifier over that complete evidence array before any integration transition.\",\n34: \"role\": \"verifier\",\n35: \"schema\": \"sots-checkpoint/1\",\n36: \"session\": \"run-735fcb8f4876c10285b03fad\",\n37: \"summary\": \"OBSERVATIONS: Completed independent static reproduction from the handoff. Exact identities remained engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23/common-dir /home/alex/sots-engine/.git/binding ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7/common-dir /home/alex/sots-re/.git/binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8; binary SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841; objdump GNU 2.38 SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd. All 22 windows returned zero/nonempty with empty stderr; every stream hash was independently rechecked. Six ownership pairs exactly reproduce five c2 04 00 and one c2 08 00 widened endings with equal preceding rows; four complete controls match. Dedup pair reproduces c2 versus c2 08 00. DECISIONS/CHALLENGES: Scoped pass for independent-cross-check as static reproduction plus archived-state check only. Held-out complete-stop ablation shows 0x85630c omits, 0x85630d includes plain c3; this rejects overgeneralizing ret-imm truncation. Held-out data bytes at 0xaf0dc8 are three 0x7f7fffff defaults. Dedup raw branches require EvDsc equality and reject unordered/NaN coordinates; no live fixture claim. Ownership raw paths preserve distinct 0x2c/0x74 strides, deep string assignment and three long-string deletes. Strict save parse directly found EvNxID=4, turn-3 two-event bucket and event ID 3 archived values. Whole-save audit rebuilt all 609080 bytes exactly, root e9c161e311f8ef8fad6f1aa1903dcf3f; actual /Sim/RNG is a 2503-byte leaf digest 0978fdf34ff7962f76c2de810dc93e0a, not inferred from counters. No prediction failed and no new surprise arose. Prior provenance failures remain failures resolved by Astra, not rewritten as successes. LIMITS/BLOCKERS: no live empty/spare/full, short/long, duplicate/description-different/NaN, unwind or allocation-failure execution; no allocator co... (line truncated to 2000 chars)\n38: \"timestamp\": \"2026-09-10T01:15:53.991634+00:00\"\n39: }\n\n(End of file - total 39 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-independent\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi-independent/reproduce_run_735fcb8f4876c10285b03fad.py\",\n \"sha256\": \"0d495e360b9fb98965af0e60e8fd37a76eadbd0e9e191d0a59c13028ccb7732f\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/run-735fcb8f4876c10285b03fad/manifest.json\",\n \"sha256\": \"dfc29230c01f21a8fe84067aa642739b5c68a108eca9ca4a8f655552179850f5\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/run-735fcb8f4876c10285b03fad/heldout.json\",\n \"sha256\": \"64e2e3e69ab81ec76558bed75d61740b28ed7b27c7e252a1e48cf5f0a536ec95\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/run-735fcb8f4876c10285b03fad/turn3-save-reader.json\",\n \"sha256\": \"3524bb954988f167503345d37349b3f9f529e10e45eb5eccd3aab1ab365bd929\"\n },\n {","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-ebe571c975acd7112778cc97.json","text":"{\n \"actor\": \"research-abi-independent\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi-independent/reproduce_run_735fcb8f4876c10285b03fad.py\",\n \"sha256\": \"0d495e360b9fb98965af0e60e8fd37a76eadbd0e9e191d0a59c13028ccb7732f\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/run-735fcb8f4876c10285b03fad/manifest.json\",\n \"sha256\": \"dfc29230c01f21a8fe84067aa642739b5c68a108eca9ca4a8f655552179850f5\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/run-735fcb8f4876c10285b03fad/heldout.json\",\n \"sha256\": \"64e2e3e69ab81ec76558bed75d61740b28ed7b27c7e252a1e48cf5f0a536ec95\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/run-735fcb8f4876c10285b03fad/turn3-save-reader.json\",\n \"sha256\": \"3524bb954988f167503345d37349b3f9f529e10e45eb5eccd3aab1ab365bd929\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/run-735fcb8f4876c10285b03fad/turn3-state-checksum.json\",\n \"sha256\": \"0629b773857839cf5381a86ed9d2796971a460d601421f3c6632dbdb0ff1b776\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/result-run-735fcb8f4876c10285b03fad.md\",\n \"sha256\": \"752c393d51e4c312f4c75e2f6a769d4d9ceadfe34a39164f83d582c989bca32e\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"ebe571c975acd7112778cc97\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Lead should package source-bound static-recovery and validation evidence for the current contract, then launch a fresh independent verifier over that complete evidence array before any integration transition.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-735fcb8f4876c10285b03fad\",\n \"summary\": \"OBSERVATIONS: Completed independent static reproduction from the handoff. Exact identities remained engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23/common-dir /home/alex/sots-engine/.git/binding ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7/common-dir /home/alex/sots-re/.git/binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8; binary SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841; objdump GNU 2.38 SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd. All 22 windows returned zero/nonempty with empty stderr; every stream hash was independently rechecked. Six ownership pairs exactly reproduce five c2 04 00 and one c2 08 00 widened endings with equal preceding rows; four complete controls match. Dedup pair reproduces c2 versus c2 08 00. DECISIONS/CHALLENGES: Scoped pass for independent-cross-check as static reproduction plus archived-state check only. Held-out complete-stop ablation shows 0x85630c omits, 0x85630d includes plain c3; this rejects overgeneralizing ret-imm truncation. Held-out data bytes at 0xaf0dc8 are three 0x7f7fffff defaults. Dedup raw branches require EvDsc equality and reject unordered/NaN coordinates; no live fixture claim. Ownership raw paths preserve distinct 0x2c/0x74 strides, deep string assignment and three long-string deletes. Strict save parse directly found EvNxID=4, turn-3 two-event bucket and event ID 3 archived values. Whole-save audit rebuilt all 609080 bytes exactly, root e9c161e311f8ef8fad6f1aa1903dcf3f; actual /Sim/RNG is a 2503-byte leaf digest 0978fdf34ff7962f76c2de810dc93e0a, not inferred from counters. No prediction failed and no new surprise arose. Prior provenance failures remain failures resolved by Astra, not rewritten as successes. LIMITS/BLOCKERS: no live empty/spare/full, short/long, duplicate/description-different/NaN, unwind or allocation-failure execution; no allocator co... (line truncated to 2000 chars)\n \"timestamp\": \"2026-09-10T01:15:53.991634+00:00\"\n}","lineStart":1,"lineEnd":39,"totalLines":39,"truncated":false}},"title":"campaign/runtime/checkpoints/research-completion-abi-ebe571c975acd7112778cc97.json","time":{"start":1789046085614,"end":1789046085619}},"metadata":{"openai":{"itemId":"fc_04c8bf7c69a80ae0016aa2ad45434487d187fd6983d34908fe"}},"id":"prt_08b74d7db00105QC7bYSF4Zqtv","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7486fc001J4X4tUIKg5XPXF"}} +{"type":"step_finish","timestamp":1789046085684,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b74d8310018c9AaW3P2SlbTN","reason":"tool-calls","snapshot":"976a950ec7ca0563e5edb47f41912e17828c0a16","messageID":"msg_08b7486fc001J4X4tUIKg5XPXF","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":49512,"input":2074,"output":224,"reasoning":110,"cache":{"write":0,"read":47104}},"cost":0}} +{"type":"step_start","timestamp":1789046088108,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b74e1a800123HOl7RMIFWx3E","messageID":"msg_08b74d864001QCitldeBhITK11","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"6daf7e02187cd1827eeb9f70afc88030cda1fab6","type":"step-start"}} +{"type":"tool_use","timestamp":1789046108649,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"glob","callID":"call_oHjwLtUFnvnn1GvuZHhZinfp","state":{"status":"completed","input":{"path":"/home/alex/sots-re/verify/campaign","pattern":"**/*"},"output":"/home/alex/sots-re/verify/campaign/test_controls.py\n/home/alex/sots-re/verify/campaign/__pycache__/test_controls.cpython-310.pyc","metadata":{"count":2,"truncated":false},"title":"verify/campaign","time":{"start":1789046108632,"end":1789046108647}},"metadata":{"openai":{"itemId":"fc_02c5d8e537c0c49d016aa2ad5beb1487d1ba66c601822efba4"}},"id":"prt_08b7530b4001Yt9kTz5YTQTHgy","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b74d864001QCitldeBhITK11"}} +{"type":"tool_use","timestamp":1789046108743,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"glob","callID":"call_wFRkJjeryJ2EI26wVFp58tko","state":{"status":"completed","input":{"path":"/home/alex/sots-re/verify/config","pattern":"**/*"},"output":"/home/alex/sots-re/verify/config/test_agent_config.py\n/home/alex/sots-re/verify/config/test_source_check.py\n/home/alex/sots-re/verify/config/__pycache__/test_source_check.cpython-310.pyc\n/home/alex/sots-re/verify/config/__pycache__/test_agent_config.cpython-310.pyc","metadata":{"count":4,"truncated":false},"title":"verify/config","time":{"start":1789046108729,"end":1789046108742}},"metadata":{"openai":{"itemId":"fc_02c5d8e537c0c49d016aa2ad5beb2c87d1ae75e4a1a9b8ad7e"}},"id":"prt_08b7531f8001Fy32ZFedf32704","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b74d864001QCitldeBhITK11"}} +{"type":"tool_use","timestamp":1789046108822,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_RzzbahQzWiBNz6xzZBRGEJhM","state":{"status":"completed","input":{"command":"python3 -c 'import hashlib,json,os,sys; from pathlib import Path; ps=[Path(\"tools/campaign.py\"),Path(\"tools/run_agent.py\"),Path(sys.executable),Path(\"/usr/bin/python3\"),Path(\"/usr/bin/objdump\"),Path(\"dumps/sots.exe\"),Path(\"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\"),Path(\"verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py\"),Path(\"verify/results/saves/turn3-state.sav\"),Path(\"verify/save-reader/save_reader.py\"),Path(\"verify/state-checksum/state_checksum.py\")]; out=[]; [(lambda q,d: out.append({\"requested\":str(p),\"resolved\":str(q),\"bytes\":len(d),\"sha256\":hashlib.sha256(d).hexdigest()}))(p.resolve(),p.resolve().read_bytes()) for p in ps]; print(json.dumps({\"python_version\":sys.version,\"files\":out},indent=2))'","workdir":"/home/alex/sots-re"},"output":"{\n \"python_version\": \"3.10.12 (main, Aug 31 2026, 10:18:17) [GCC 11.4.0]\",\n \"files\": [\n {\n \"requested\": \"tools/campaign.py\",\n \"resolved\": \"/home/alex/sots-re/tools/campaign.py\",\n \"bytes\": 35131,\n \"sha256\": \"a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123\"\n },\n {\n \"requested\": \"tools/run_agent.py\",\n \"resolved\": \"/home/alex/sots-re/tools/run_agent.py\",\n \"bytes\": 20079,\n \"sha256\": \"818097896b2e29dbdd2f53d37261236af302178ecd0ee083a3184a7bc33ff152\"\n },\n {\n \"requested\": \"/usr/bin/python3\",\n \"resolved\": \"/usr/bin/python3.10\",\n \"bytes\": 5941864,\n \"sha256\": \"a2f33a6e006989270f4340528eb61f8f97366e00a5d1b602ac8672ea44fc56ae\"\n },\n {\n \"requested\": \"/usr/bin/python3\",\n \"resolved\": \"/usr/bin/python3.10\",\n \"bytes\": 5941864,\n \"sha256\": \"a2f33a6e006989270f4340528eb61f8f97366e00a5d1b602ac8672ea44fc56ae\"\n },\n {\n \"requested\": \"/usr/bin/objdump\",\n \"resolved\": \"/usr/bin/x86_64-linux-gnu-objdump\",\n \"bytes\": 373888,\n \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\"\n },\n {\n \"requested\": \"dumps/sots.exe\",\n \"resolved\": \"/home/alex/sots-re/dumps/sots.exe\",\n \"bytes\": 7898624,\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n },\n {\n \"requested\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\",\n \"resolved\": \"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\",\n \"bytes\": 7265,\n \"sha256\": \"66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1\"\n },\n {\n \"requested\": \"verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py\",\n \"resolved\": \"/home/alex/sots-re/verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py\",\n \"bytes\": 10199,\n \"sha256\": \"0681a9a4f877b7f511d382ca2b010a1b4a9eb5e4863e46b3aed372e895778bfb\"\n },\n {\n \"requested\": \"verify/results/saves/turn3-state.sav\",\n \"resolved\": \"/home/alex/sots-re/verify/results/saves/turn3-state.sav\",\n \"bytes\": 67219,\n \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n },\n {\n \"requested\": \"verify/save-reader/save_reader.py\",\n \"resolved\": \"/home/alex/sots-re/verify/save-reader/save_reader.py\",\n \"bytes\": 74367,\n \"sha256\": \"2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35\"\n },\n {\n \"requested\": \"verify/state-checksum/state_checksum.py\",\n \"resolved\": \"/home/alex/sots-re/verify/state-checksum/state_checksum.py\",\n \"bytes\": 57792,\n \"sha256\": \"ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8\"\n }\n ]\n}\n","metadata":{"output":"{\n \"python_version\": \"3.10.12 (main, Aug 31 2026, 10:18:17) [GCC 11.4.0]\",\n \"files\": [\n {\n \"requested\": \"tools/campaign.py\",\n \"resolved\": \"/home/alex/sots-re/tools/campaign.py\",\n \"bytes\": 35131,\n \"sha256\": \"a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123\"\n },\n {\n \"requested\": \"tools/run_agent.py\",\n \"resolved\": \"/home/alex/sots-re/tools/run_agent.py\",\n \"bytes\": 20079,\n \"sha256\": \"818097896b2e29dbdd2f53d37261236af302178ecd0ee083a3184a7bc33ff152\"\n },\n {\n \"requested\": \"/usr/bin/python3\",\n \"resolved\": \"/usr/bin/python3.10\",\n \"bytes\": 5941864,\n \"sha256\": \"a2f33a6e006989270f4340528eb61f8f97366e00a5d1b602ac8672ea44fc56ae\"\n },\n {\n \"requested\": \"/usr/bin/python3\",\n \"resolved\": \"/usr/bin/python3.10\",\n \"bytes\": 5941864,\n \"sha256\": \"a2f33a6e006989270f4340528eb61f8f97366e00a5d1b602ac8672ea44fc56ae\"\n },\n {\n \"requested\": \"/usr/bin/objdump\",\n \"resolved\": \"/usr/bin/x86_64-linux-gnu-objdump\",\n \"bytes\": 373888,\n \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\"\n },\n {\n \"requested\": \"dumps/sots.exe\",\n \"resolved\": \"/home/alex/sots-re/dumps/sots.exe\",\n \"bytes\": 7898624,\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n },\n {\n \"requested\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\",\n \"resolved\": \"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\",\n \"bytes\": 7265,\n \"sha256\": \"66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1\"\n },\n {\n \"requested\": \"verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py\",\n \"resolved\": \"/home/alex/sots-re/verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py\",\n \"bytes\": 10199,\n \"sha256\": \"0681a9a4f877b7f511d382ca2b010a1b4a9eb5e4863e46b3aed372e895778bfb\"\n },\n {\n \"requested\": \"verify/results/saves/turn3-state.sav\",\n \"resolved\": \"/home/alex/sots-re/verify/results/saves/turn3-state.sav\",\n \"bytes\": 67219,\n \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n },\n {\n \"requested\": \"verify/save-reader/save_reader.py\",\n \"resolved\": \"/home/alex/sots-re/verify/save-reader/save_reader.py\",\n \"bytes\": 74367,\n \"sha256\": \"2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35\"\n },\n {\n \"requested\": \"verify/state-checksum/state_checksum.py\",\n \"resolved\": \"/home/alex/sots-re/verify/state-checksum/state_checksum.py\",\n \"bytes\": 57792,\n \"sha256\": \"ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8\"\n }\n ]\n}\n","exit":0,"truncated":false},"title":"python3 -c 'import hashlib,json,os,sys; from pathlib import Path; ps=[Path(\"tools/campaign.py\"),Path(\"tools/run_agent.py\"),Path(sys.executable),Path(\"/usr/bin/python3\"),Path(\"/usr/bin/objdump\"),Path(\"dumps/sots.exe\"),Path(\"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\"),Path(\"verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py\"),Path(\"verify/results/saves/turn3-state.sav\"),Path(\"verify/save-reader/save_reader.py\"),Path(\"verify/state-checksum/state_checksum.py\")]; out=[]; [(lambda q,d: out.append({\"requested\":str(p),\"resolved\":str(q),\"bytes\":len(d),\"sha256\":hashlib.sha256(d).hexdigest()}))(p.resolve(),p.resolve().read_bytes()) for p in ps]; print(json.dumps({\"python_version\":sys.version,\"files\":out},indent=2))'","time":{"start":1789046108766,"end":1789046108821}},"metadata":{"openai":{"itemId":"fc_02c5d8e537c0c49d016aa2ad5beb3487d1a83dc2644896b97d"}},"id":"prt_08b753251001xUobOQqlTCfI9F","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b74d864001QCitldeBhITK11"}} +{"type":"tool_use","timestamp":1789046108970,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_HvMW3ldjlfwgiEpcrG9ixFlB","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re","workdir":"/home/alex/sots-re","timeout":120000},"output":"{\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\"\n }\n}\n","metadata":{"output":"{\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\"\n }\n}\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re","time":{"start":1789046108812,"end":1789046108968}},"metadata":{"openai":{"itemId":"fc_02c5d8e537c0c49d016aa2ad5beb4087d18016483fea321e6f"}},"id":"prt_08b753262001NWI4XtsxnMfqxq","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b74d864001QCitldeBhITK11"}} +{"type":"tool_use","timestamp":1789046115809,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_NJTDqxtfiCXL1aUwVvAqTDCE","state":{"status":"completed","input":{"command":"python3 -m unittest discover -s verify/campaign -p 'test_*.py' -v","workdir":"/home/alex/sots-re","timeout":120000},"output":"test_schema_rejects_unknown_missing_types_and_ids (test_controls.Controls) ... ok\ntest_duplicate_json_keys_and_nonfinite_numbers (test_controls.Controls) ... ok\ntest_state_root_and_path_escape (test_controls.Controls) ... ok\ntest_lifecycle_no_bypass_or_missing_inputs (test_controls.Controls) ... ok\ntest_identity_and_dependency_fail_closed (test_controls.Controls) ... ok\ntest_missing_and_stale_checkpoint_and_artifact (test_controls.Controls) ... ok\ntest_checkpoint_basis_session_model_and_bounds (test_controls.Controls) ... ok\ntest_wip_bound (test_controls.Controls) ... ok\ntest_surprise_blocks_and_resolution_invalidates (test_controls.Controls) ... ok\ntest_multiple_surprises_remain_blocked_until_all_resolved (test_controls.Controls) ... ok\ntest_acceptance_requires_independent_final_integrated_package (test_controls.Controls) ... ok\ntest_evidence_source_tampering_and_revision (test_controls.Controls) ... ok\ntest_lease_concurrent_acquisition_exactly_one_winner (test_controls.Controls) ... ok\ntest_lease_token_owner_and_explicit_stale_release (test_controls.Controls) ... ok\ntest_model_registry_no_fallback (test_controls.Controls) ... ok\ntest_runner_role_status_surprise_and_missing_checkpoint (test_controls.Controls) ... ok\ntest_final_integrated_verifier_launch_preserves_guards (test_controls.Controls) ... ok\ntest_old_recovery_checks_integrity_but_not_age (test_controls.Controls) ... ok\ntest_same_head_source_mutation_rejects_verdict_and_promotion (test_controls.Controls) ... ok\ntest_integrated_re_source_mutation_rejects_acceptance (test_controls.Controls) ... ok\ntest_immutable_inputs_and_criterion_coverage (test_controls.Controls) ... ok\ntest_candidate_worktree_binding_cannot_claim_integration (test_controls.Controls) ... ok\ntest_source_binding_add_delete_mode_and_escape (test_controls.Controls) ... ok\ntest_scientific_artifacts_and_secret_path_escapes (test_controls.Controls) ... ok\ntest_run_success_captures_actual_events_and_checkpoint (test_controls.Runner) ... ok\ntest_run_missing_end_checkpoint_is_incomplete (test_controls.Runner) ... ok\ntest_unavailable_model_and_config_bound (test_controls.Runner) ... ok\ntest_dry_run_writes_no_run_and_no_fallback (test_controls.Runner) ... ok\ntest_model_mismatch_and_nonzero_exit_fail (test_controls.Runner) ... ok\ntest_running_reservation_is_not_stolen (test_controls.Runner) ... ok\ntest_zero_exit_error_and_incomplete_events_fail (test_controls.Runner) ... ok\ntest_config_mutation_during_zero_exit_success_fails (test_controls.Runner) ... ok\ntest_error_followed_by_success_still_fails (test_controls.Runner) ... ok\ntest_resolution_permission_scope_and_architecture_authority (test_controls.Runner) ... ok\ntest_baseline_rechecked_under_reservation (test_controls.Runner) ... ok\ntest_permissions_expanded_prompt_and_provenance (test_controls.Runner) ... ok\ntest_actual_worktree_identity_and_baseline_without_source_commits (test_controls.Worktrees) ... ok\n\n----------------------------------------------------------------------\nRan 37 tests in 6.870s\n\nOK\n","metadata":{"output":"test_schema_rejects_unknown_missing_types_and_ids (test_controls.Controls) ... ok\ntest_duplicate_json_keys_and_nonfinite_numbers (test_controls.Controls) ... ok\ntest_state_root_and_path_escape (test_controls.Controls) ... ok\ntest_lifecycle_no_bypass_or_missing_inputs (test_controls.Controls) ... ok\ntest_identity_and_dependency_fail_closed (test_controls.Controls) ... ok\ntest_missing_and_stale_checkpoint_and_artifact (test_controls.Controls) ... ok\ntest_checkpoint_basis_session_model_and_bounds (test_controls.Controls) ... ok\ntest_wip_bound (test_controls.Controls) ... ok\ntest_surprise_blocks_and_resolution_invalidates (test_controls.Controls) ... ok\ntest_multiple_surprises_remain_blocked_until_all_resolved (test_controls.Controls) ... ok\ntest_acceptance_requires_independent_final_integrated_package (test_controls.Controls) ... ok\ntest_evidence_source_tampering_and_revision (test_controls.Controls) ... ok\ntest_lease_concurrent_acquisition_exactly_one_winner (test_controls.Controls) ... ok\ntest_lease_token_owner_and_explicit_stale_release (test_controls.Controls) ... ok\ntest_model_registry_no_fallback (test_controls.Controls) ... ok\ntest_runner_role_status_surprise_and_missing_checkpoint (test_controls.Controls) ... ok\ntest_final_integrated_verifier_launch_preserves_guards (test_controls.Controls) ... ok\ntest_old_recovery_checks_integrity_but_not_age (test_controls.Controls) ... ok\ntest_same_head_source_mutation_rejects_verdict_and_promotion (test_controls.Controls) ... ok\ntest_integrated_re_source_mutation_rejects_acceptance (test_controls.Controls) ... ok\ntest_immutable_inputs_and_criterion_coverage (test_controls.Controls) ... ok\ntest_candidate_worktree_binding_cannot_claim_integration (test_controls.Controls) ... ok\ntest_source_binding_add_delete_mode_and_escape (test_controls.Controls) ... ok\ntest_scientific_artifacts_and_secret_path_escapes (test_controls.Controls) ... ok\ntest_run_success_captures_actual_events_and_checkpoint (test_controls.Runner) ... ok\ntest_run_missing_end_checkpoint_is_incomplete (test_controls.Runner) ... ok\ntest_unavailable_model_and_config_bound (test_controls.Runner) ... ok\ntest_dry_run_writes_no_run_and_no_fallback (test_controls.Runner) ... ok\ntest_model_mismatch_and_nonzero_exit_fail (test_controls.Runner) ... ok\ntest_running_reservation_is_not_stolen (test_controls.Runner) ... ok\ntest_zero_exit_error_and_incomplete_events_fail (test_controls.Runner) ... ok\ntest_config_mutation_during_zero_exit_success_fails (test_controls.Runner) ... ok\ntest_error_followed_by_success_still_fails (test_controls.Runner) ... ok\ntest_resolution_permission_scope_and_architecture_authority (test_controls.Runner) ... ok\ntest_baseline_rechecked_under_reservation (test_controls.Runner) ... ok\ntest_permissions_expanded_prompt_and_provenance (test_controls.Runner) ... ok\ntest_actual_worktree_identity_and_baseline_without_source_commits (test_controls.Worktrees) ... ok\n\n----------------------------------------------------------------------\nRan 37 tests in 6.870s\n\nOK\n","exit":0,"truncated":false},"title":"python3 -m unittest discover -s verify/campaign -p 'test_*.py' -v","time":{"start":1789046108846,"end":1789046115807}},"metadata":{"openai":{"itemId":"fc_02c5d8e537c0c49d016aa2ad5beb4887d19fbc105eda84a43d"}},"id":"prt_08b75328f001t8zXXYiLGufNUG","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b74d864001QCitldeBhITK11"}} +{"type":"step_finish","timestamp":1789046115852,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b754e09001B87cxr1MvGonWd","reason":"tool-calls","snapshot":"5b6c0713423862d2171209077ceb4d8b3e351369","messageID":"msg_08b74d864001QCitldeBhITK11","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":56214,"input":6572,"output":477,"reasoning":141,"cache":{"write":0,"read":49024}},"cost":0}} +{"type":"step_start","timestamp":1789046117666,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b75551f001H4sCyfM6qPivZ5","messageID":"msg_08b754e37001H1LckgRDHXtnod","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"b7acf56c90a38215edf2fef9b5d62ece341547e2","type":"step-start"}} +{"type":"tool_use","timestamp":1789046127669,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_CkgPuMD7HFnJ34JAUXWhvxmd","state":{"status":"error","input":{"filePath":"/tmp/opencode/sots-final-research-re/verify/campaign/test_controls.py","offset":1,"limit":5},"error":"File not found: /tmp/opencode/sots-final-research-re/verify/campaign/test_controls.py","time":{"start":1789046127640,"end":1789046127667}},"metadata":{"openai":{"itemId":"fc_0f1f6aa70c47224d016aa2ad6f58e487d19585f659759f7351"}},"id":"prt_08b757c0d001LKRyi6abAi7hp6","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b754e37001H1LckgRDHXtnod"}} +{"type":"tool_use","timestamp":1789046127683,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_ytfjHxioJTDpayt0Y5OaBAIZ","state":{"status":"completed","input":{"command":"git ls-files --stage -- verify/campaign/test_controls.py && git status --short -- verify/campaign/test_controls.py","workdir":"/tmp/opencode/sots-final-research-re"},"output":"warning: could not open directory 'verify/campaign/': No such file or directory\n","metadata":{"output":"warning: could not open directory 'verify/campaign/': No such file or directory\n","exit":0,"truncated":false},"title":"git ls-files --stage -- verify/campaign/test_controls.py && git status --short -- verify/campaign/test_controls.py","time":{"start":1789046127646,"end":1789046127679}},"metadata":{"openai":{"itemId":"fc_0f1f6aa70c47224d016aa2ad6f58f887d1bc66fd3ac4486d00"}},"id":"prt_08b757c1a001IcI2V2CkKOkf0Y","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b754e37001H1LckgRDHXtnod"}} +{"type":"tool_use","timestamp":1789046127683,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_RwpdZAKaqSEjxISu8VkBFPJF","state":{"status":"completed","input":{"command":"git ls-files --stage -- verify/campaign/test_controls.py && git status --short -- verify/campaign/test_controls.py","workdir":"/home/alex/sots-re"},"output":"100644 bf5a60da3db726b5ddd0fae3424ab0a1b71585f0 0\tverify/campaign/test_controls.py\n","metadata":{"output":"100644 bf5a60da3db726b5ddd0fae3424ab0a1b71585f0 0\tverify/campaign/test_controls.py\n","exit":0,"truncated":false},"title":"git ls-files --stage -- verify/campaign/test_controls.py && git status --short -- verify/campaign/test_controls.py","time":{"start":1789046127655,"end":1789046127682}},"metadata":{"openai":{"itemId":"fc_0f1f6aa70c47224d016aa2ad6f590c87d1aeb63b1ec14fe947"}},"id":"prt_08b757c22001rHMv6nLLYPdssj","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b754e37001H1LckgRDHXtnod"}} +{"type":"tool_use","timestamp":1789046127728,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_EV8JTqAc7bOdA22jgQob66CX","state":{"status":"completed","input":{"command":"python3 -m unittest discover -s verify/config -p 'test_*.py' -v","workdir":"/home/alex/sots-re","timeout":120000},"output":"test_current_config (test_agent_config.RoutingTests) ... ok\ntest_loop_model_drift_in_both_sources_is_rejected (test_agent_config.RoutingTests) ... ok\ntest_missing_prompt_and_context_policy (test_agent_config.RoutingTests) ... ok\ntest_nested_delegation (test_agent_config.RoutingTests) ... ok\ntest_resolver_downgrade_in_both_sources_is_rejected (test_agent_config.RoutingTests) ... ok\ntest_worker_drift (test_agent_config.RoutingTests) ... ok\ntest_empty_snapshot_fails (test_source_check.SnapshotTests) ... ok\ntest_plain_snapshot_and_forbidden_contents (test_source_check.SnapshotTests) ... ok\n\n----------------------------------------------------------------------\nRan 8 tests in 0.016s\n\nOK\n","metadata":{"output":"test_current_config (test_agent_config.RoutingTests) ... ok\ntest_loop_model_drift_in_both_sources_is_rejected (test_agent_config.RoutingTests) ... ok\ntest_missing_prompt_and_context_policy (test_agent_config.RoutingTests) ... ok\ntest_nested_delegation (test_agent_config.RoutingTests) ... ok\ntest_resolver_downgrade_in_both_sources_is_rejected (test_agent_config.RoutingTests) ... ok\ntest_worker_drift (test_agent_config.RoutingTests) ... ok\ntest_empty_snapshot_fails (test_source_check.SnapshotTests) ... ok\ntest_plain_snapshot_and_forbidden_contents (test_source_check.SnapshotTests) ... ok\n\n----------------------------------------------------------------------\nRan 8 tests in 0.016s\n\nOK\n","exit":0,"truncated":false},"title":"python3 -m unittest discover -s verify/config -p 'test_*.py' -v","time":{"start":1789046127662,"end":1789046127727}},"metadata":{"openai":{"itemId":"fc_0f1f6aa70c47224d016aa2ad6f591487d18e88de46be179a10"}},"id":"prt_08b757c2a001ltxBlpe2poYO7X","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b754e37001H1LckgRDHXtnod"}} +{"type":"step_finish","timestamp":1789046127819,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b757cc7001qRvFjCyhxeTRZ6","reason":"tool-calls","snapshot":"2a573b60d5999f09a1653083cec449addfb2b2e9","messageID":"msg_08b754e37001H1LckgRDHXtnod","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":58610,"input":2883,"output":208,"reasoning":95,"cache":{"write":0,"read":55424}},"cost":0}} +{"type":"step_start","timestamp":1789046130569,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b758780001ediitEGrXCVC9f","messageID":"msg_08b757cf4001bID7vNLNBZUiMl","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"62e01828817b76ada586894d0becbbdb3913c2c8","type":"step-start"}} +{"type":"tool_use","timestamp":1789046141750,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_Zao1W0YfYld9yicFZOdbJSJd","state":{"status":"completed","input":{"command":"python3 -c 'import hashlib,json; from pathlib import Path; ps=[Path(\"campaign/models.json\"),Path(\"campaign/contract.schema.json\"),Path(\"campaign/agents/analyst.md\"),Path(\"verify/campaign/test_controls.py\"),Path(\"verify/config/test_agent_config.py\"),Path(\"verify/config/test_source_check.py\")]; print(json.dumps([{\"path\":str(p),\"bytes\":len(p.read_bytes()),\"sha256\":hashlib.sha256(p.read_bytes()).hexdigest()} for p in ps],indent=2))'","workdir":"/home/alex/sots-re"},"output":"[\n {\n \"path\": \"campaign/models.json\",\n \"bytes\": 607,\n \"sha256\": \"00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48\"\n },\n {\n \"path\": \"campaign/contract.schema.json\",\n \"bytes\": 4187,\n \"sha256\": \"a2c76ec042ca097a57c3c05c1e519e392d498d387a31808c7d0f70482d43c201\"\n },\n {\n \"path\": \"campaign/agents/analyst.md\",\n \"bytes\": 1220,\n \"sha256\": \"895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952\"\n },\n {\n \"path\": \"verify/campaign/test_controls.py\",\n \"bytes\": 33307,\n \"sha256\": \"fd46a2f7900b5a51facee63b66b1f4f1b1a3f56c00d813dadd016dae1d321925\"\n },\n {\n \"path\": \"verify/config/test_agent_config.py\",\n \"bytes\": 2703,\n \"sha256\": \"8a7a406f062c3387ec5b99b35f3befb64f676efef174047060c967074545e3e3\"\n },\n {\n \"path\": \"verify/config/test_source_check.py\",\n \"bytes\": 1275,\n \"sha256\": \"c16731e31a54256dde4f88d33007759ff21ad8537ca6cd2be38b9e34c59525ad\"\n }\n]\n","metadata":{"output":"[\n {\n \"path\": \"campaign/models.json\",\n \"bytes\": 607,\n \"sha256\": \"00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48\"\n },\n {\n \"path\": \"campaign/contract.schema.json\",\n \"bytes\": 4187,\n \"sha256\": \"a2c76ec042ca097a57c3c05c1e519e392d498d387a31808c7d0f70482d43c201\"\n },\n {\n \"path\": \"campaign/agents/analyst.md\",\n \"bytes\": 1220,\n \"sha256\": \"895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952\"\n },\n {\n \"path\": \"verify/campaign/test_controls.py\",\n \"bytes\": 33307,\n \"sha256\": \"fd46a2f7900b5a51facee63b66b1f4f1b1a3f56c00d813dadd016dae1d321925\"\n },\n {\n \"path\": \"verify/config/test_agent_config.py\",\n \"bytes\": 2703,\n \"sha256\": \"8a7a406f062c3387ec5b99b35f3befb64f676efef174047060c967074545e3e3\"\n },\n {\n \"path\": \"verify/config/test_source_check.py\",\n \"bytes\": 1275,\n \"sha256\": \"c16731e31a54256dde4f88d33007759ff21ad8537ca6cd2be38b9e34c59525ad\"\n }\n]\n","exit":0,"truncated":false},"title":"python3 -c 'import hashlib,json; from pathlib import Path; ps=[Path(\"campaign/models.json\"),Path(\"campaign/contract.schema.json\"),Path(\"campaign/agents/analyst.md\"),Path(\"verify/campaign/test_controls.py\"),Path(\"verify/config/test_agent_config.py\"),Path(\"verify/config/test_source_check.py\")]; print(json.dumps([{\"path\":str(p),\"bytes\":len(p.read_bytes()),\"sha256\":hashlib.sha256(p.read_bytes()).hexdigest()} for p in ps],indent=2))'","time":{"start":1789046141716,"end":1789046141747}},"metadata":{"openai":{"itemId":"fc_09b76b395240c4c2016aa2ad796dd887d1be8b8655d2bc1a4a"}},"id":"prt_08b75a2e4001z4JjIGw0kYz1yg","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b757cf4001bID7vNLNBZUiMl"}} +{"type":"step_finish","timestamp":1789046141856,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b75b39d001emDZdXDbmyrVev","reason":"tool-calls","snapshot":"14abefcc8a2b8da34ce383f30ffcc06394c15a0e","messageID":"msg_08b757cf4001bID7vNLNBZUiMl","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":59228,"input":769,"output":146,"reasoning":201,"cache":{"write":0,"read":58112}},"cost":0}} +{"type":"step_start","timestamp":1789046144252,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b75bcf9001fMZd2LY4Bp6Kxc","messageID":"msg_08b75b3ca001hzwjAWAy9SlSw3","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"78b84b91ea3c8cf1db16ca8e03294160fc64f846","type":"step-start"}} +{"type":"tool_use","timestamp":1789046220002,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"apply_patch","callID":"call_dmi1m7ly8UcLtue5frT7dzNZ","state":{"status":"completed","input":{"patchText":"*** Begin Patch\n*** Add File: /home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\n+{\n+ \"schema\": \"sots-abi-preflight/1\",\n+ \"session\": \"run-35e59053176da458d8b46fea\",\n+ \"actor\": \"research-abi-analyst\",\n+ \"role\": \"analyst\",\n+ \"model\": \"openai/gpt-5.6-sol\",\n+ \"decision\": \"d-e9d6d48cd77538556d1a1c1f\",\n+ \"scope\": \"Read-only current-source and consumed-input preflight; no disassembly, save parse, game, allocator, RNG, VM, Ghidra, or source experiment.\",\n+ \"source_binding_before\": {\n+ \"engine\": {\n+ \"path\": \"/tmp/opencode/sots-final-research-engine\",\n+ \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n+ \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n+ },\n+ \"re\": {\n+ \"path\": \"/tmp/opencode/sots-final-research-re\",\n+ \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n+ \"sha256\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\"\n+ }\n+ },\n+ \"source_binding_after\": {\n+ \"engine\": {\n+ \"path\": \"/tmp/opencode/sots-final-research-engine\",\n+ \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n+ \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n+ },\n+ \"re\": {\n+ \"path\": \"/tmp/opencode/sots-final-research-re\",\n+ \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n+ \"sha256\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\"\n+ }\n+ },\n+ \"source_stable_during_preflight\": true,\n+ \"identity_classification\": {\n+ \"observation\": \"The current campaign-domain RE digest is e5cf1c44..., distinct from historical campaign digest 6696fd52... and from resolver-recorded runner-domain digest e97ad0ed.... The hash domains are not equated.\",\n+ \"decision\": \"Bind any future measurement to e5cf1c44...; do not attach this binding to archived measurements.\"\n+ },\n+ \"consumed_files\": [\n+ {\"path\": \"tools/campaign.py\", \"bytes\": 35131, \"sha256\": \"a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123\"},\n+ {\"path\": \"tools/run_agent.py\", \"bytes\": 20079, \"sha256\": \"818097896b2e29dbdd2f53d37261236af302178ecd0ee083a3184a7bc33ff152\"},\n+ {\"path\": \"campaign/models.json\", \"bytes\": 607, \"sha256\": \"00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48\"},\n+ {\"path\": \"campaign/contract.schema.json\", \"bytes\": 4187, \"sha256\": \"a2c76ec042ca097a57c3c05c1e519e392d498d387a31808c7d0f70482d43c201\"},\n+ {\"path\": \"campaign/agents/analyst.md\", \"bytes\": 1220, \"sha256\": \"895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952\"},\n+ {\"path\": \"/usr/bin/python3\", \"resolved_path\": \"/usr/bin/python3.10\", \"bytes\": 5941864, \"sha256\": \"a2f33a6e006989270f4340528eb61f8f97366e00a5d1b602ac8672ea44fc56ae\", \"version\": \"3.10.12\"},\n+ {\"path\": \"/usr/bin/objdump\", \"resolved_path\": \"/usr/bin/x86_64-linux-gnu-objdump\", \"bytes\": 373888, \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\"},\n+ {\"path\": \"dumps/sots.exe\", \"bytes\": 7898624, \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"},\n+ {\"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\", \"bytes\": 7265, \"sha256\": \"66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1\", \"classification\": \"historical analyst recipe; not executed\"},\n+ {\"path\": \"verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py\", \"bytes\": 10199, \"sha256\": \"0681a9a4f877b7f511d382ca2b010a1b4a9eb5e4863e46b3aed372e895778bfb\", \"classification\": \"historical verifier recipe; not executed and not reusable as independent fresh recipe\"},\n+ {\"path\": \"verify/results/saves/turn3-state.sav\", \"bytes\": 67219, \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"},\n+ {\"path\": \"verify/save-reader/save_reader.py\", \"bytes\": 74367, \"sha256\": \"2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35\"},\n+ {\"path\": \"verify/state-checksum/state_checksum.py\", \"bytes\": 57792, \"sha256\": \"ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8\"}\n+ ],\n+ \"test_input_disposition\": {\n+ \"paired_re_verify_campaign_test_controls\": \"absent from assigned paired RE tree, confirming the resolver's current-inventory observation\",\n+ \"canonical_verify_campaign_test_controls\": {\"path\": \"verify/campaign/test_controls.py\", \"bytes\": 33307, \"sha256\": \"fd46a2f7900b5a51facee63b66b1f4f1b1a3f56c00d813dadd016dae1d321925\", \"result\": \"37 tests executed, all passed\"},\n+ \"canonical_verify_config\": [\n+ {\"path\": \"verify/config/test_agent_config.py\", \"bytes\": 2703, \"sha256\": \"8a7a406f062c3387ec5b99b35f3befb64f676efef174047060c967074545e3e3\"},\n+ {\"path\": \"verify/config/test_source_check.py\", \"bytes\": 1275, \"sha256\": \"c16731e31a54256dde4f88d33007759ff21ad8537ca6cd2be38b9e34c59525ad\"}\n+ ],\n+ \"canonical_verify_config_result\": \"8 tests executed, all passed\",\n+ \"campaign_validate_result\": \"pass\",\n+ \"decision\": \"The canonical controls input required by the current campaign gate exists and passes. Its absence from the paired baseline-pinned RE inventory remains explicit and must not be described as restored source identity. No test file was copied or restored.\"\n+ },\n+ \"runtime_inputs\": {\n+ \"available_for_fresh_static_and_archived-value_reproduction\": [\"dumps/sots.exe\", \"/usr/bin/objdump\", \"/usr/bin/python3\", \"verify/results/saves/turn3-state.sav\", \"verify/save-reader/save_reader.py\", \"verify/state-checksum/state_checksum.py\"],\n+ \"unavailable_or_unexercised\": [\"live existing-last-match and miss states\", \"spare/full outer capacity\", \"empty/nonempty nested vectors with short/long strings\", \"allocation failure/throw cleanup\", \"duplicate and description-only-different events\", \"transient stack sentinels\", \"live allocator safety\", \"runtime event construction\", \"live RNG draws\"]\n+ },\n+ \"resources\": {\"leases\": [], \"lab_access\": false, \"mutations\": []},\n+ \"result\": \"preflight-pass-for-scheduling-only\"\n+}\n*** End Patch"},"output":"Success. Updated the following files:\nA verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json","metadata":{"diff":"Index: /home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\n===================================================================\n--- /home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\n+++ /home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\n@@ -0,0 +1,70 @@\n+{\n+ \"schema\": \"sots-abi-preflight/1\",\n+ \"session\": \"run-35e59053176da458d8b46fea\",\n+ \"actor\": \"research-abi-analyst\",\n+ \"role\": \"analyst\",\n+ \"model\": \"openai/gpt-5.6-sol\",\n+ \"decision\": \"d-e9d6d48cd77538556d1a1c1f\",\n+ \"scope\": \"Read-only current-source and consumed-input preflight; no disassembly, save parse, game, allocator, RNG, VM, Ghidra, or source experiment.\",\n+ \"source_binding_before\": {\n+ \"engine\": {\n+ \"path\": \"/tmp/opencode/sots-final-research-engine\",\n+ \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n+ \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n+ },\n+ \"re\": {\n+ \"path\": \"/tmp/opencode/sots-final-research-re\",\n+ \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n+ \"sha256\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\"\n+ }\n+ },\n+ \"source_binding_after\": {\n+ \"engine\": {\n+ \"path\": \"/tmp/opencode/sots-final-research-engine\",\n+ \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n+ \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n+ },\n+ \"re\": {\n+ \"path\": \"/tmp/opencode/sots-final-research-re\",\n+ \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n+ \"sha256\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\"\n+ }\n+ },\n+ \"source_stable_during_preflight\": true,\n+ \"identity_classification\": {\n+ \"observation\": \"The current campaign-domain RE digest is e5cf1c44..., distinct from historical campaign digest 6696fd52... and from resolver-recorded runner-domain digest e97ad0ed.... The hash domains are not equated.\",\n+ \"decision\": \"Bind any future measurement to e5cf1c44...; do not attach this binding to archived measurements.\"\n+ },\n+ \"consumed_files\": [\n+ {\"path\": \"tools/campaign.py\", \"bytes\": 35131, \"sha256\": \"a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123\"},\n+ {\"path\": \"tools/run_agent.py\", \"bytes\": 20079, \"sha256\": \"818097896b2e29dbdd2f53d37261236af302178ecd0ee083a3184a7bc33ff152\"},\n+ {\"path\": \"campaign/models.json\", \"bytes\": 607, \"sha256\": \"00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48\"},\n+ {\"path\": \"campaign/contract.schema.json\", \"bytes\": 4187, \"sha256\": \"a2c76ec042ca097a57c3c05c1e519e392d498d387a31808c7d0f70482d43c201\"},\n+ {\"path\": \"campaign/agents/analyst.md\", \"bytes\": 1220, \"sha256\": \"895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952\"},\n+ {\"path\": \"/usr/bin/python3\", \"resolved_path\": \"/usr/bin/python3.10\", \"bytes\": 5941864, \"sha256\": \"a2f33a6e006989270f4340528eb61f8f97366e00a5d1b602ac8672ea44fc56ae\", \"version\": \"3.10.12\"},\n+ {\"path\": \"/usr/bin/objdump\", \"resolved_path\": \"/usr/bin/x86_64-linux-gnu-objdump\", \"bytes\": 373888, \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\"},\n+ {\"path\": \"dumps/sots.exe\", \"bytes\": 7898624, \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"},\n+ {\"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\", \"bytes\": 7265, \"sha256\": \"66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1\", \"classification\": \"historical analyst recipe; not executed\"},\n+ {\"path\": \"verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py\", \"bytes\": 10199, \"sha256\": \"0681a9a4f877b7f511d382ca2b010a1b4a9eb5e4863e46b3aed372e895778bfb\", \"classification\": \"historical verifier recipe; not executed and not reusable as independent fresh recipe\"},\n+ {\"path\": \"verify/results/saves/turn3-state.sav\", \"bytes\": 67219, \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"},\n+ {\"path\": \"verify/save-reader/save_reader.py\", \"bytes\": 74367, \"sha256\": \"2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35\"},\n+ {\"path\": \"verify/state-checksum/state_checksum.py\", \"bytes\": 57792, \"sha256\": \"ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8\"}\n+ ],\n+ \"test_input_disposition\": {\n+ \"paired_re_verify_campaign_test_controls\": \"absent from assigned paired RE tree, confirming the resolver's current-inventory observation\",\n+ \"canonical_verify_campaign_test_controls\": {\"path\": \"verify/campaign/test_controls.py\", \"bytes\": 33307, \"sha256\": \"fd46a2f7900b5a51facee63b66b1f4f1b1a3f56c00d813dadd016dae1d321925\", \"result\": \"37 tests executed, all passed\"},\n+ \"canonical_verify_config\": [\n+ {\"path\": \"verify/config/test_agent_config.py\", \"bytes\": 2703, \"sha256\": \"8a7a406f062c3387ec5b99b35f3befb64f676efef174047060c967074545e3e3\"},\n+ {\"path\": \"verify/config/test_source_check.py\", \"bytes\": 1275, \"sha256\": \"c16731e31a54256dde4f88d33007759ff21ad8537ca6cd2be38b9e34c59525ad\"}\n+ ],\n+ \"canonical_verify_config_result\": \"8 tests executed, all passed\",\n+ \"campaign_validate_result\": \"pass\",\n+ \"decision\": \"The canonical controls input required by the current campaign gate exists and passes. Its absence from the paired baseline-pinned RE inventory remains explicit and must not be described as restored source identity. No test file was copied or restored.\"\n+ },\n+ \"runtime_inputs\": {\n+ \"available_for_fresh_static_and_archived-value_reproduction\": [\"dumps/sots.exe\", \"/usr/bin/objdump\", \"/usr/bin/python3\", \"verify/results/saves/turn3-state.sav\", \"verify/save-reader/save_reader.py\", \"verify/state-checksum/state_checksum.py\"],\n+ \"unavailable_or_unexercised\": [\"live existing-last-match and miss states\", \"spare/full outer capacity\", \"empty/nonempty nested vectors with short/long strings\", \"allocation failure/throw cleanup\", \"duplicate and description-only-different events\", \"transient stack sentinels\", \"live allocator safety\", \"runtime event construction\", \"live RNG draws\"]\n+ },\n+ \"resources\": {\"leases\": [], \"lab_access\": false, \"mutations\": []},\n+ \"result\": \"preflight-pass-for-scheduling-only\"\n+}\n\n","files":[{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json","relativePath":"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json","type":"add","patch":"Index: /home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\n===================================================================\n--- /home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\n+++ /home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\n@@ -0,0 +1,70 @@\n+{\n+ \"schema\": \"sots-abi-preflight/1\",\n+ \"session\": \"run-35e59053176da458d8b46fea\",\n+ \"actor\": \"research-abi-analyst\",\n+ \"role\": \"analyst\",\n+ \"model\": \"openai/gpt-5.6-sol\",\n+ \"decision\": \"d-e9d6d48cd77538556d1a1c1f\",\n+ \"scope\": \"Read-only current-source and consumed-input preflight; no disassembly, save parse, game, allocator, RNG, VM, Ghidra, or source experiment.\",\n+ \"source_binding_before\": {\n+ \"engine\": {\n+ \"path\": \"/tmp/opencode/sots-final-research-engine\",\n+ \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n+ \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n+ },\n+ \"re\": {\n+ \"path\": \"/tmp/opencode/sots-final-research-re\",\n+ \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n+ \"sha256\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\"\n+ }\n+ },\n+ \"source_binding_after\": {\n+ \"engine\": {\n+ \"path\": \"/tmp/opencode/sots-final-research-engine\",\n+ \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n+ \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n+ },\n+ \"re\": {\n+ \"path\": \"/tmp/opencode/sots-final-research-re\",\n+ \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n+ \"sha256\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\"\n+ }\n+ },\n+ \"source_stable_during_preflight\": true,\n+ \"identity_classification\": {\n+ \"observation\": \"The current campaign-domain RE digest is e5cf1c44..., distinct from historical campaign digest 6696fd52... and from resolver-recorded runner-domain digest e97ad0ed.... The hash domains are not equated.\",\n+ \"decision\": \"Bind any future measurement to e5cf1c44...; do not attach this binding to archived measurements.\"\n+ },\n+ \"consumed_files\": [\n+ {\"path\": \"tools/campaign.py\", \"bytes\": 35131, \"sha256\": \"a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123\"},\n+ {\"path\": \"tools/run_agent.py\", \"bytes\": 20079, \"sha256\": \"818097896b2e29dbdd2f53d37261236af302178ecd0ee083a3184a7bc33ff152\"},\n+ {\"path\": \"campaign/models.json\", \"bytes\": 607, \"sha256\": \"00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48\"},\n+ {\"path\": \"campaign/contract.schema.json\", \"bytes\": 4187, \"sha256\": \"a2c76ec042ca097a57c3c05c1e519e392d498d387a31808c7d0f70482d43c201\"},\n+ {\"path\": \"campaign/agents/analyst.md\", \"bytes\": 1220, \"sha256\": \"895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952\"},\n+ {\"path\": \"/usr/bin/python3\", \"resolved_path\": \"/usr/bin/python3.10\", \"bytes\": 5941864, \"sha256\": \"a2f33a6e006989270f4340528eb61f8f97366e00a5d1b602ac8672ea44fc56ae\", \"version\": \"3.10.12\"},\n+ {\"path\": \"/usr/bin/objdump\", \"resolved_path\": \"/usr/bin/x86_64-linux-gnu-objdump\", \"bytes\": 373888, \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\"},\n+ {\"path\": \"dumps/sots.exe\", \"bytes\": 7898624, \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"},\n+ {\"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\", \"bytes\": 7265, \"sha256\": \"66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1\", \"classification\": \"historical analyst recipe; not executed\"},\n+ {\"path\": \"verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py\", \"bytes\": 10199, \"sha256\": \"0681a9a4f877b7f511d382ca2b010a1b4a9eb5e4863e46b3aed372e895778bfb\", \"classification\": \"historical verifier recipe; not executed and not reusable as independent fresh recipe\"},\n+ {\"path\": \"verify/results/saves/turn3-state.sav\", \"bytes\": 67219, \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"},\n+ {\"path\": \"verify/save-reader/save_reader.py\", \"bytes\": 74367, \"sha256\": \"2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35\"},\n+ {\"path\": \"verify/state-checksum/state_checksum.py\", \"bytes\": 57792, \"sha256\": \"ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8\"}\n+ ],\n+ \"test_input_disposition\": {\n+ \"paired_re_verify_campaign_test_controls\": \"absent from assigned paired RE tree, confirming the resolver's current-inventory observation\",\n+ \"canonical_verify_campaign_test_controls\": {\"path\": \"verify/campaign/test_controls.py\", \"bytes\": 33307, \"sha256\": \"fd46a2f7900b5a51facee63b66b1f4f1b1a3f56c00d813dadd016dae1d321925\", \"result\": \"37 tests executed, all passed\"},\n+ \"canonical_verify_config\": [\n+ {\"path\": \"verify/config/test_agent_config.py\", \"bytes\": 2703, \"sha256\": \"8a7a406f062c3387ec5b99b35f3befb64f676efef174047060c967074545e3e3\"},\n+ {\"path\": \"verify/config/test_source_check.py\", \"bytes\": 1275, \"sha256\": \"c16731e31a54256dde4f88d33007759ff21ad8537ca6cd2be38b9e34c59525ad\"}\n+ ],\n+ \"canonical_verify_config_result\": \"8 tests executed, all passed\",\n+ \"campaign_validate_result\": \"pass\",\n+ \"decision\": \"The canonical controls input required by the current campaign gate exists and passes. Its absence from the paired baseline-pinned RE inventory remains explicit and must not be described as restored source identity. No test file was copied or restored.\"\n+ },\n+ \"runtime_inputs\": {\n+ \"available_for_fresh_static_and_archived-value_reproduction\": [\"dumps/sots.exe\", \"/usr/bin/objdump\", \"/usr/bin/python3\", \"verify/results/saves/turn3-state.sav\", \"verify/save-reader/save_reader.py\", \"verify/state-checksum/state_checksum.py\"],\n+ \"unavailable_or_unexercised\": [\"live existing-last-match and miss states\", \"spare/full outer capacity\", \"empty/nonempty nested vectors with short/long strings\", \"allocation failure/throw cleanup\", \"duplicate and description-only-different events\", \"transient stack sentinels\", \"live allocator safety\", \"runtime event construction\", \"live RNG draws\"]\n+ },\n+ \"resources\": {\"leases\": [], \"lab_access\": false, \"mutations\": []},\n+ \"result\": \"preflight-pass-for-scheduling-only\"\n+}\n","additions":70,"deletions":0}],"diagnostics":{},"truncated":false},"title":"Success. Updated the following files:\nA verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json","time":{"start":1789046219993,"end":1789046220000}},"metadata":{"openai":{"itemId":"fc_0a7cc6f6746a7f52016aa2ad80f6a487d1ace28dec056577e2"}},"id":"prt_08b75c05c001juGVC3ZQOQWOj5","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b75b3ca001hzwjAWAy9SlSw3"}} +{"type":"step_finish","timestamp":1789046220155,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b76e578001hYdb1NyDMS1QOQ","reason":"tool-calls","snapshot":"e5a2afb77d1b4b321859c41a58daf2a5790c967d","messageID":"msg_08b75b3ca001hzwjAWAy9SlSw3","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":62008,"input":895,"output":2354,"reasoning":7,"cache":{"write":0,"read":58752}},"cost":0}} +{"type":"step_start","timestamp":1789046223413,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b76f232001hir0KLTBis06yW","messageID":"msg_08b76e5af001bgvpoczI7xGzSx","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"1e3d9e2960db8846ba0d5b782f48776917cebf5c","type":"step-start"}} +{"type":"tool_use","timestamp":1789046226023,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_6QRtWQcp3B1wRWH9u0ss7yeF","state":{"status":"completed","input":{"command":"sha256sum verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json","workdir":"/home/alex/sots-re"},"output":"7ca4dc72850cb0fbef6370bfbea8ece5cf102c886a6ef99c9940108fe44501aa verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\n","metadata":{"output":"7ca4dc72850cb0fbef6370bfbea8ece5cf102c886a6ef99c9940108fe44501aa verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\n","exit":0,"truncated":false},"title":"sha256sum verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json","time":{"start":1789046226012,"end":1789046226022}},"metadata":{"openai":{"itemId":"fc_018ad47bb8cdbc7e016aa2add0736087d1bb0ed0cc8e2af58c"}},"id":"prt_08b76f6cb001XZxTsm0FkPG2uq","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b76e5af001bgvpoczI7xGzSx"}} +{"type":"step_finish","timestamp":1789046226144,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b76fcde001pSNuZuBHKvmscr","reason":"tool-calls","snapshot":"4250294d6de0b27261766591e7517a348deb8756","messageID":"msg_08b76e5af001bgvpoczI7xGzSx","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":62128,"input":2532,"output":58,"reasoning":18,"cache":{"write":0,"read":59520}},"cost":0}} +{"type":"step_start","timestamp":1789046229100,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b770865001FuxitCHzczU1e1","messageID":"msg_08b76fd10001031puSh9HsDpUx","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"06043c40fc46ee7dcd9210a11cd20af53ff6bd10","type":"step-start"}} +{"type":"tool_use","timestamp":1789046246666,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_Dckef98h1EZW4shWv61RqKqI","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-abi-analyst --role analyst --model openai/gpt-5.6-sol --session run-35e59053176da458d8b46fea --summary 'MID-QUANTUM PREFLIGHT. OBSERVATIONS: canonical campaign validates; contract is needs-revision with no open surprises. Assigned engine/RE HEADs match 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and 3bfde5a70d874a723e797a695bbd847fd82c0aa7; common dirs are /home/alex/sots-engine/.git and /home/alex/sots-re/.git. Both are preexisting dirty and untouched. Two current campaign source-bindings were stable: engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f. Current RE campaign digest differs from historical 6696fd52; it is not equated with runner-domain e97ad0ed. Fresh hashes for canonical campaign/runner/Python/objdump/binary, historical recipes, turn3 save and parsers are archived. Canonical verify/campaign tests executed 37/37 pass and verify/config 8/8 pass; paired baseline tree lacks verify/campaign/test_controls.py, so no restoration/source-identity claim. DECISION: preflight passes for lead scheduling only; future measurements must bind e5cf1c44 and cannot relabel old captures. No disassembly/save experiment was run. Runtime allocator/capacity/string/unwind/event/RNG states remain unexercised and explicit. No leases, lab access, game, Ghidra, source mutation, staging or commits.' --artifact verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json --next-action 'Within analyst-owned results, prepare a fresh fail-if-exists static capture recipe bound to session run-35e59053176da458d8b46fea and decisions d-e9d6d48cd77538556d1a1c1f/d-6e30d172051af0385f5979eb, then checkpoint before executing it.'","workdir":"/home/alex/sots-re"},"output":"{\n \"actor\": \"research-abi-analyst\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\",\n \"sha256\": \"7ca4dc72850cb0fbef6370bfbea8ece5cf102c886a6ef99c9940108fe44501aa\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"7adc6dc657a6159b06640fcc\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Within analyst-owned results, prepare a fresh fail-if-exists static capture recipe bound to session run-35e59053176da458d8b46fea and decisions d-e9d6d48cd77538556d1a1c1f/d-6e30d172051af0385f5979eb, then checkpoint before executing it.\",\n \"role\": \"analyst\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-35e59053176da458d8b46fea\",\n \"summary\": \"MID-QUANTUM PREFLIGHT. OBSERVATIONS: canonical campaign validates; contract is needs-revision with no open surprises. Assigned engine/RE HEADs match 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and 3bfde5a70d874a723e797a695bbd847fd82c0aa7; common dirs are /home/alex/sots-engine/.git and /home/alex/sots-re/.git. Both are preexisting dirty and untouched. Two current campaign source-bindings were stable: engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f. Current RE campaign digest differs from historical 6696fd52; it is not equated with runner-domain e97ad0ed. Fresh hashes for canonical campaign/runner/Python/objdump/binary, historical recipes, turn3 save and parsers are archived. Canonical verify/campaign tests executed 37/37 pass and verify/config 8/8 pass; paired baseline tree lacks verify/campaign/test_controls.py, so no restoration/source-identity claim. DECISION: preflight passes for lead scheduling only; future measurements must bind e5cf1c44 and cannot relabel old captures. No disassembly/save experiment was run. Runtime allocator/capacity/string/unwind/event/RNG states remain unexercised and explicit. No leases, lab access, game, Ghidra, source mutation, staging or commits.\",\n \"timestamp\": \"2026-09-10T13:17:26.641161+00:00\"\n}\n","metadata":{"output":"{\n \"actor\": \"research-abi-analyst\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\",\n \"sha256\": \"7ca4dc72850cb0fbef6370bfbea8ece5cf102c886a6ef99c9940108fe44501aa\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"7adc6dc657a6159b06640fcc\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Within analyst-owned results, prepare a fresh fail-if-exists static capture recipe bound to session run-35e59053176da458d8b46fea and decisions d-e9d6d48cd77538556d1a1c1f/d-6e30d172051af0385f5979eb, then checkpoint before executing it.\",\n \"role\": \"analyst\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-35e59053176da458d8b46fea\",\n \"summary\": \"MID-QUANTUM PREFLIGHT. OBSERVATIONS: canonical campaign validates; contract is needs-revision with no open surprises. Assigned engine/RE HEADs match 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and 3bfde5a70d874a723e797a695bbd847fd82c0aa7; common dirs are /home/alex/sots-engine/.git and /home/alex/sots-re/.git. Both are preexisting dirty and untouched. Two current campaign source-bindings were stable: engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f. Current RE campaign digest differs from historical 6696fd52; it is not equated with runner-domain e97ad0ed. Fresh hashes for canonical campaign/runner/Python/objdump/binary, historical recipes, turn3 save and parsers are archived. Canonical verify/campaign tests executed 37/37 pass and verify/config 8/8 pass; paired baseline tree lacks verify/campaign/test_controls.py, so no restoration/source-identity claim. DECISION: preflight passes for lead scheduling only; future measurements must bind e5cf1c44 and cannot relabel old captures. No disassembly/save experiment was run. Runtime allocator/capacity/string/unwind/event/RNG states remain unexercised and explicit. No leases, lab access, game, Ghidra, source mutation, staging or commits.\",\n \"timestamp\": \"2026-09-10T13:17:26.641161+00:00\"\n}\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-abi-analyst --role analyst --model openai/gpt-5.6-sol --session run-35e59053176da458d8b46fea --summary 'MID-QUANTUM PREFLIGHT. OBSERVATIONS: canonical campaign validates; contract is needs-revision with no open surprises. Assigned engine/RE HEADs match 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and 3bfde5a70d874a723e797a695bbd847fd82c0aa7; common dirs are /home/alex/sots-engine/.git and /home/alex/sots-re/.git. Both are preexisting dirty and untouched. Two current campaign source-bindings were stable: engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f. Current RE campaign digest differs from historical 6696fd52; it is not equated with runner-domain e97ad0ed. Fresh hashes for canonical campaign/runner/Python/objdump/binary, historical recipes, turn3 save and parsers are archived. Canonical verify/campaign tests executed 37/37 pass and verify/config 8/8 pass; paired baseline tree lacks verify/campaign/test_controls.py, so no restoration/source-identity claim. DECISION: preflight passes for lead scheduling only; future measurements must bind e5cf1c44 and cannot relabel old captures. No disassembly/save experiment was run. Runtime allocator/capacity/string/unwind/event/RNG states remain unexercised and explicit. No leases, lab access, game, Ghidra, source mutation, staging or commits.' --artifact verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json --next-action 'Within analyst-owned results, prepare a fresh fail-if-exists static capture recipe bound to session run-35e59053176da458d8b46fea and decisions d-e9d6d48cd77538556d1a1c1f/d-6e30d172051af0385f5979eb, then checkpoint before executing it.'","time":{"start":1789046246600,"end":1789046246664}},"metadata":{"openai":{"itemId":"fc_069dec09888138ee016aa2add4ac7487d19a0d128c9d321e81"}},"id":"prt_08b77086b001DtfsRHdt8FXtL2","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b76fd10001031puSh9HsDpUx"}} +{"type":"step_finish","timestamp":1789046246824,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b774da40016PTdZ48yrnyeTx","reason":"tool-calls","snapshot":"3e29339e843804baadc31792a3b78cbe74efd24e","messageID":"msg_08b76fd10001031puSh9HsDpUx","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":62767,"input":247,"output":568,"reasoning":0,"cache":{"write":0,"read":61952}},"cost":0}} +{"type":"step_start","timestamp":1789046249225,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b775705001ZrX06zCJb3kCRV","messageID":"msg_08b774ddb001nnAG84vYMj44EE","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"1c86bd027c828acc90d187a8c6c02b7c1f044605","type":"step-start"}} +{"type":"tool_use","timestamp":1789046417730,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"apply_patch","callID":"call_4ftXFX5I8L05tgNmbe2TXaS4","state":{"status":"completed","input":{"patchText":"*** Begin Patch\n*** Add File: /home/alex/sots-re/verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\n+# Current-source ABI static capture plan — run-35e59053176da458d8b46fea\n+\n+This analyst-owned plan implements the new-source remeasurement selected by Astra decisions\n+`d-e9d6d48cd77538556d1a1c1f` and `d-6e30d172051af0385f5979eb`. It is static analysis plus input\n+identity only. It does not execute the game, constructors, destructors, allocation, exception paths,\n+event posting, or RNG, and it cannot satisfy the independent verifier criterion.\n+\n+## Preconditions and falsifiers\n+\n+1. Refuse an absent/wrong session, a pre-existing output directory, baseline HEAD mismatch, source\n+ binding mismatch from preflight, binary/tool/interpreter drift, missing archived save/parser input,\n+ nonzero subprocess return, empty required stdout, nonempty stderr, or source drift during capture.\n+2. Capture nested-copy stop `0x00779913` as an expected truncated negative, stop `0x00779915` as\n+ the aligned complete `c2 04 00` control, and stop `0x00779930` as authority. Read the same bytes\n+ through a direct PE VA-to-file-offset mapper. The old claim that `0x00779913` is complete remains\n+ failed; it is not rewritten as a pass.\n+3. Retain the independent boundary family: bad `0x00779a20`, aligned `0x00779a21`, `0x00779a23`,\n+ and `0x00779a28`, with direct bytes at `0x00779a1f`. Reject changed preceding rows.\n+4. Capture callable entry/return and ownership windows for ObservedTech and PlayerEvent construction,\n+ append, growth, deep copy, destruction, string assignment, imported allocation/deallocation,\n+ TurnEvents get/create, outer append, nested copy/destruction, duplicate comparison, and prune.\n+5. Preserve static branch exposure separately from runtime execution: match/miss, spare/full capacity,\n+ empty/nonempty and null/nonnull nested vectors, short/long string branches, normal/unwind edges,\n+ and known-bad/aligned disassembler boundaries. No static branch is reported as runtime coverage.\n+6. Hash but do not parse the archived save in this analyst capture. A fresh independent verifier must\n+ parse named containers/elements, IDs, all event fields, exact FLT_MAX words, empty player states,\n+ and the actual RNG leaf, and must use a verifier-owned recipe and fail-if-exists directory.\n+\n+## Expected machine facts under test\n+\n+* Distinct element strides remain `0x2c` (ObservedTech), `0x74` (PlayerEvent), and `0x18`\n+ (TurnEvents); append/growth performs element construction rather than raw header transfer.\n+* Long-string ownership uses original allocator/deallocator thunks `0x00924fb6`/`0x00924faa`;\n+ these are original-helper dependencies, not standalone allocator safety.\n+* Get/create checks existing buckets before miss construction, deep-copies the nested vector, cleans\n+ the temporary nested vector, then writes the requested turn into the stored last element.\n+* Duplicate matching includes both description strings; mismatch returns without an event-vector\n+ write, while no duplicate proceeds to PlayerEvent append. No RNG instruction/effect is expected\n+ in these bounded static windows, but unchanged RNG is not measured.\n+\n+## Runtime residuals\n+\n+Still unavailable/unexercised: live existing-last-match and miss paths; spare/full outer capacity;\n+empty/nonempty nested vectors owning short/long strings; deliberate allocation failure and unwind;\n+equal versus description-only-different live events; transient stack sentinels; exact PostEvent\n+caller defaults/write order; allocator-family safety; event IDs and records created at runtime; and\n+all RNG state/draw effects.\n*** Add File: /home/alex/sots-re/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n+#!/usr/bin/env python3\n+\"\"\"Session-bound current-source static ABI capture; refuses output reuse.\"\"\"\n+import hashlib\n+import json\n+import pathlib\n+import struct\n+import subprocess\n+import sys\n+from datetime import datetime, timezone\n+\n+ROOT = pathlib.Path(\"/home/alex/sots-re\")\n+SESSION = \"run-35e59053176da458d8b46fea\"\n+OUT = ROOT / \"verify/results/research-completion-abi\" / SESSION\n+ENGINE = pathlib.Path(\"/tmp/opencode/sots-final-research-engine\")\n+RE = pathlib.Path(\"/tmp/opencode/sots-final-research-re\")\n+CAMPAIGN = ROOT / \"tools/campaign.py\"\n+EXE = ROOT / \"dumps/sots.exe\"\n+SAVE = ROOT / \"verify/results/saves/turn3-state.sav\"\n+OBJDUMP = pathlib.Path(\"/usr/bin/objdump\")\n+EXPECTED = {\n+ \"engine\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n+ \"re\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\",\n+ \"exe\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\",\n+ \"objdump\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n+ \"save\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\",\n+}\n+\n+# Names classify evidence only; these windows expose instructions but execute no branch.\n+WINDOWS = (\n+ (\"observed-ctor\", 0x8562A0, 0x856310),\n+ (\"observed-append\", 0x7B7320, 0x7B73A2),\n+ (\"observed-copy\", 0x79A150, 0x79A1DC),\n+ (\"observed-growth\", 0x7B34E0, 0x7B35F2),\n+ (\"observed-alloc\", 0x57E590, 0x57E5E7),\n+ (\"player-ctor\", 0x84EE30, 0x84EEF4),\n+ (\"player-append\", 0x86C580, 0x86C631),\n+ (\"player-growth\", 0x869500, 0x869620),\n+ (\"player-copy\", 0x7693F0, 0x7694C3),\n+ (\"player-dtor\", 0x61AE90, 0x61AEFC),\n+ (\"string-assign\", 0x4249A0, 0x424ADD),\n+ (\"import-thunks\", 0x924FAA, 0x924FBC),\n+ (\"turn-get-create\", 0x885380, 0x88544E),\n+ (\"turn-append\", 0x884CB0, 0x884D93),\n+ (\"turn-growth\", 0x8841A0, 0x884300),\n+ (\"nested-copy-authority\", 0x779850, 0x779930),\n+ (\"nested-dtor\", 0x629580, 0x6295CE),\n+ (\"turn-virtual-dtor\", 0x62E120, 0x62E170),\n+ (\"dedup\", 0x825D40, 0x825E67),\n+ (\"string-not-equal\", 0x46F8C0, 0x46F8F0),\n+ (\"prune\", 0x879EB0, 0x879FC0),\n+ (\"nested-copy-stop-9913\", 0x779850, 0x779913),\n+ (\"nested-copy-stop-9915\", 0x779850, 0x779915),\n+ (\"nested-copy-stop-a20\", 0x779850, 0x779A20),\n+ (\"nested-copy-stop-a21\", 0x779850, 0x779A21),\n+ (\"nested-copy-stop-a23\", 0x779850, 0x779A23),\n+ (\"nested-copy-stop-a28\", 0x779850, 0x779A28),\n+)\n+\n+def sha(data):\n+ return hashlib.sha256(data).hexdigest()\n+\n+def ident(path):\n+ target = path.resolve()\n+ data = target.read_bytes()\n+ return {\"path\": str(path), \"resolved_path\": str(target), \"bytes\": len(data), \"sha256\": sha(data)}\n+\n+def binding():\n+ argv = [sys.executable, str(CAMPAIGN), \"--state-root\", str(ROOT), \"source-binding\",\n+ \"research-completion-abi\", \"--engine-worktree\", str(ENGINE),\n+ \"--re-worktree\", str(RE)]\n+ p = subprocess.run(argv, cwd=ROOT, capture_output=True, text=True, check=True)\n+ return {\"argv\": argv, \"value\": json.loads(p.stdout)}\n+\n+def rows(data):\n+ return [line.rstrip() for line in data.decode(\"utf-8\").splitlines()\n+ if \":\" in line and line.lstrip()[:1].isdigit()]\n+\n+def pe_reader(data):\n+ pe = struct.unpack_from(\" 0 for x in records),\n+ \"all_stderr_empty\": all(x[\"stderr\"][\"bytes\"] == 0 for x in records),\n+ \"source_stable\": before[\"value\"] == after[\"value\"],\n+ **comparisons,\n+}\n+manifest = {\n+ \"schema\": \"sots-abi-static-capture/2\", \"session\": SESSION,\n+ \"actor\": \"research-abi-analyst\", \"role\": \"analyst\", \"model\": \"openai/gpt-5.6-sol\",\n+ \"timestamp\": datetime.now(timezone.utc).isoformat(),\n+ \"decisions\": [\"d-e9d6d48cd77538556d1a1c1f\", \"d-6e30d172051af0385f5979eb\"],\n+ \"scope\": \"Static instruction/byte capture and immutable input identity; no game/runtime execution.\",\n+ \"source_before\": before, \"source_after\": after, \"files\": files,\n+ \"image_base\": f\"0x{image_base:08x}\", \"commands\": records, \"direct_pe\": direct,\n+ \"checks\": [{\"name\": k, \"status\": \"pass\" if v else \"fail\"} for k, v in checks.items()],\n+ \"failed\": [k for k, v in checks.items() if not v],\n+ \"static_branch_exposure\": [\"existing-match/miss\", \"spare/full capacity\", \"empty/nonempty nested copy\",\n+ \"null/nonnull destruction\", \"short/long string\", \"normal/unwind\", \"bad/aligned boundaries\"],\n+ \"runtime_unexercised\": [\"all listed static branches\", \"allocator safety\", \"event construction and IDs\",\n+ \"PostEvent caller defaults/write order\", \"exception throw\", \"RNG state/draws\"],\n+ \"original_helpers\": [\"0x00924fb6 allocation thunk\", \"0x00924faa deallocation thunk\",\n+ \"0x0046f8c0 original string comparison when called\"],\n+}\n+(OUT / \"manifest.json\").write_text(json.dumps(manifest, indent=2) + \"\\n\")\n+print(json.dumps({\"output\": str(OUT.relative_to(ROOT)), \"commands\": len(records), \"failed\": manifest[\"failed\"]}, indent=2))\n+raise SystemExit(bool(manifest[\"failed\"]))\n*** End Patch"},"output":"Success. Updated the following files:\nA verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\nA verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py","metadata":{"diff":"Index: /home/alex/sots-re/verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\n===================================================================\n--- /home/alex/sots-re/verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\n+++ /home/alex/sots-re/verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\n@@ -0,0 +1,47 @@\n+# Current-source ABI static capture plan — run-35e59053176da458d8b46fea\n+\n+This analyst-owned plan implements the new-source remeasurement selected by Astra decisions\n+`d-e9d6d48cd77538556d1a1c1f` and `d-6e30d172051af0385f5979eb`. It is static analysis plus input\n+identity only. It does not execute the game, constructors, destructors, allocation, exception paths,\n+event posting, or RNG, and it cannot satisfy the independent verifier criterion.\n+\n+## Preconditions and falsifiers\n+\n+1. Refuse an absent/wrong session, a pre-existing output directory, baseline HEAD mismatch, source\n+ binding mismatch from preflight, binary/tool/interpreter drift, missing archived save/parser input,\n+ nonzero subprocess return, empty required stdout, nonempty stderr, or source drift during capture.\n+2. Capture nested-copy stop `0x00779913` as an expected truncated negative, stop `0x00779915` as\n+ the aligned complete `c2 04 00` control, and stop `0x00779930` as authority. Read the same bytes\n+ through a direct PE VA-to-file-offset mapper. The old claim that `0x00779913` is complete remains\n+ failed; it is not rewritten as a pass.\n+3. Retain the independent boundary family: bad `0x00779a20`, aligned `0x00779a21`, `0x00779a23`,\n+ and `0x00779a28`, with direct bytes at `0x00779a1f`. Reject changed preceding rows.\n+4. Capture callable entry/return and ownership windows for ObservedTech and PlayerEvent construction,\n+ append, growth, deep copy, destruction, string assignment, imported allocation/deallocation,\n+ TurnEvents get/create, outer append, nested copy/destruction, duplicate comparison, and prune.\n+5. Preserve static branch exposure separately from runtime execution: match/miss, spare/full capacity,\n+ empty/nonempty and null/nonnull nested vectors, short/long string branches, normal/unwind edges,\n+ and known-bad/aligned disassembler boundaries. No static branch is reported as runtime coverage.\n+6. Hash but do not parse the archived save in this analyst capture. A fresh independent verifier must\n+ parse named containers/elements, IDs, all event fields, exact FLT_MAX words, empty player states,\n+ and the actual RNG leaf, and must use a verifier-owned recipe and fail-if-exists directory.\n+\n+## Expected machine facts under test\n+\n+* Distinct element strides remain `0x2c` (ObservedTech), `0x74` (PlayerEvent), and `0x18`\n+ (TurnEvents); append/growth performs element construction rather than raw header transfer.\n+* Long-string ownership uses original allocator/deallocator thunks `0x00924fb6`/`0x00924faa`;\n+ these are original-helper dependencies, not standalone allocator safety.\n+* Get/create checks existing buckets before miss construction, deep-copies the nested vector, cleans\n+ the temporary nested vector, then writes the requested turn into the stored last element.\n+* Duplicate matching includes both description strings; mismatch returns without an event-vector\n+ write, while no duplicate proceeds to PlayerEvent append. No RNG instruction/effect is expected\n+ in these bounded static windows, but unchanged RNG is not measured.\n+\n+## Runtime residuals\n+\n+Still unavailable/unexercised: live existing-last-match and miss paths; spare/full outer capacity;\n+empty/nonempty nested vectors owning short/long strings; deliberate allocation failure and unwind;\n+equal versus description-only-different live events; transient stack sentinels; exact PostEvent\n+caller defaults/write order; allocator-family safety; event IDs and records created at runtime; and\n+all RNG state/draw effects.\n\nIndex: /home/alex/sots-re/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n===================================================================\n--- /home/alex/sots-re/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n+++ /home/alex/sots-re/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n@@ -0,0 +1,182 @@\n+#!/usr/bin/env python3\n+\"\"\"Session-bound current-source static ABI capture; refuses output reuse.\"\"\"\n+import hashlib\n+import json\n+import pathlib\n+import struct\n+import subprocess\n+import sys\n+from datetime import datetime, timezone\n+\n+ROOT = pathlib.Path(\"/home/alex/sots-re\")\n+SESSION = \"run-35e59053176da458d8b46fea\"\n+OUT = ROOT / \"verify/results/research-completion-abi\" / SESSION\n+ENGINE = pathlib.Path(\"/tmp/opencode/sots-final-research-engine\")\n+RE = pathlib.Path(\"/tmp/opencode/sots-final-research-re\")\n+CAMPAIGN = ROOT / \"tools/campaign.py\"\n+EXE = ROOT / \"dumps/sots.exe\"\n+SAVE = ROOT / \"verify/results/saves/turn3-state.sav\"\n+OBJDUMP = pathlib.Path(\"/usr/bin/objdump\")\n+EXPECTED = {\n+ \"engine\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n+ \"re\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\",\n+ \"exe\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\",\n+ \"objdump\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n+ \"save\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\",\n+}\n+\n+# Names classify evidence only; these windows expose instructions but execute no branch.\n+WINDOWS = (\n+ (\"observed-ctor\", 0x8562A0, 0x856310),\n+ (\"observed-append\", 0x7B7320, 0x7B73A2),\n+ (\"observed-copy\", 0x79A150, 0x79A1DC),\n+ (\"observed-growth\", 0x7B34E0, 0x7B35F2),\n+ (\"observed-alloc\", 0x57E590, 0x57E5E7),\n+ (\"player-ctor\", 0x84EE30, 0x84EEF4),\n+ (\"player-append\", 0x86C580, 0x86C631),\n+ (\"player-growth\", 0x869500, 0x869620),\n+ (\"player-copy\", 0x7693F0, 0x7694C3),\n+ (\"player-dtor\", 0x61AE90, 0x61AEFC),\n+ (\"string-assign\", 0x4249A0, 0x424ADD),\n+ (\"import-thunks\", 0x924FAA, 0x924FBC),\n+ (\"turn-get-create\", 0x885380, 0x88544E),\n+ (\"turn-append\", 0x884CB0, 0x884D93),\n+ (\"turn-growth\", 0x8841A0, 0x884300),\n+ (\"nested-copy-authority\", 0x779850, 0x779930),\n+ (\"nested-dtor\", 0x629580, 0x6295CE),\n+ (\"turn-virtual-dtor\", 0x62E120, 0x62E170),\n+ (\"dedup\", 0x825D40, 0x825E67),\n+ (\"string-not-equal\", 0x46F8C0, 0x46F8F0),\n+ (\"prune\", 0x879EB0, 0x879FC0),\n+ (\"nested-copy-stop-9913\", 0x779850, 0x779913),\n+ (\"nested-copy-stop-9915\", 0x779850, 0x779915),\n+ (\"nested-copy-stop-a20\", 0x779850, 0x779A20),\n+ (\"nested-copy-stop-a21\", 0x779850, 0x779A21),\n+ (\"nested-copy-stop-a23\", 0x779850, 0x779A23),\n+ (\"nested-copy-stop-a28\", 0x779850, 0x779A28),\n+)\n+\n+def sha(data):\n+ return hashlib.sha256(data).hexdigest()\n+\n+def ident(path):\n+ target = path.resolve()\n+ data = target.read_bytes()\n+ return {\"path\": str(path), \"resolved_path\": str(target), \"bytes\": len(data), \"sha256\": sha(data)}\n+\n+def binding():\n+ argv = [sys.executable, str(CAMPAIGN), \"--state-root\", str(ROOT), \"source-binding\",\n+ \"research-completion-abi\", \"--engine-worktree\", str(ENGINE),\n+ \"--re-worktree\", str(RE)]\n+ p = subprocess.run(argv, cwd=ROOT, capture_output=True, text=True, check=True)\n+ return {\"argv\": argv, \"value\": json.loads(p.stdout)}\n+\n+def rows(data):\n+ return [line.rstrip() for line in data.decode(\"utf-8\").splitlines()\n+ if \":\" in line and line.lstrip()[:1].isdigit()]\n+\n+def pe_reader(data):\n+ pe = struct.unpack_from(\" 0 for x in records),\n+ \"all_stderr_empty\": all(x[\"stderr\"][\"bytes\"] == 0 for x in records),\n+ \"source_stable\": before[\"value\"] == after[\"value\"],\n+ **comparisons,\n+}\n+manifest = {\n+ \"schema\": \"sots-abi-static-capture/2\", \"session\": SESSION,\n+ \"actor\": \"research-abi-analyst\", \"role\": \"analyst\", \"model\": \"openai/gpt-5.6-sol\",\n+ \"timestamp\": datetime.now(timezone.utc).isoformat(),\n+ \"decisions\": [\"d-e9d6d48cd77538556d1a1c1f\", \"d-6e30d172051af0385f5979eb\"],\n+ \"scope\": \"Static instruction/byte capture and immutable input identity; no game/runtime execution.\",\n+ \"source_before\": before, \"source_after\": after, \"files\": files,\n+ \"image_base\": f\"0x{image_base:08x}\", \"commands\": records, \"direct_pe\": direct,\n+ \"checks\": [{\"name\": k, \"status\": \"pass\" if v else \"fail\"} for k, v in checks.items()],\n+ \"failed\": [k for k, v in checks.items() if not v],\n+ \"static_branch_exposure\": [\"existing-match/miss\", \"spare/full capacity\", \"empty/nonempty nested copy\",\n+ \"null/nonnull destruction\", \"short/long string\", \"normal/unwind\", \"bad/aligned boundaries\"],\n+ \"runtime_unexercised\": [\"all listed static branches\", \"allocator safety\", \"event construction and IDs\",\n+ \"PostEvent caller defaults/write order\", \"exception throw\", \"RNG state/draws\"],\n+ \"original_helpers\": [\"0x00924fb6 allocation thunk\", \"0x00924faa deallocation thunk\",\n+ \"0x0046f8c0 original string comparison when called\"],\n+}\n+(OUT / \"manifest.json\").write_text(json.dumps(manifest, indent=2) + \"\\n\")\n+print(json.dumps({\"output\": str(OUT.relative_to(ROOT)), \"commands\": len(records), \"failed\": manifest[\"failed\"]}, indent=2))\n+raise SystemExit(bool(manifest[\"failed\"]))\n\n","files":[{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md","relativePath":"verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md","type":"add","patch":"Index: /home/alex/sots-re/verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\n===================================================================\n--- /home/alex/sots-re/verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\n+++ /home/alex/sots-re/verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\n@@ -0,0 +1,47 @@\n+# Current-source ABI static capture plan — run-35e59053176da458d8b46fea\n+\n+This analyst-owned plan implements the new-source remeasurement selected by Astra decisions\n+`d-e9d6d48cd77538556d1a1c1f` and `d-6e30d172051af0385f5979eb`. It is static analysis plus input\n+identity only. It does not execute the game, constructors, destructors, allocation, exception paths,\n+event posting, or RNG, and it cannot satisfy the independent verifier criterion.\n+\n+## Preconditions and falsifiers\n+\n+1. Refuse an absent/wrong session, a pre-existing output directory, baseline HEAD mismatch, source\n+ binding mismatch from preflight, binary/tool/interpreter drift, missing archived save/parser input,\n+ nonzero subprocess return, empty required stdout, nonempty stderr, or source drift during capture.\n+2. Capture nested-copy stop `0x00779913` as an expected truncated negative, stop `0x00779915` as\n+ the aligned complete `c2 04 00` control, and stop `0x00779930` as authority. Read the same bytes\n+ through a direct PE VA-to-file-offset mapper. The old claim that `0x00779913` is complete remains\n+ failed; it is not rewritten as a pass.\n+3. Retain the independent boundary family: bad `0x00779a20`, aligned `0x00779a21`, `0x00779a23`,\n+ and `0x00779a28`, with direct bytes at `0x00779a1f`. Reject changed preceding rows.\n+4. Capture callable entry/return and ownership windows for ObservedTech and PlayerEvent construction,\n+ append, growth, deep copy, destruction, string assignment, imported allocation/deallocation,\n+ TurnEvents get/create, outer append, nested copy/destruction, duplicate comparison, and prune.\n+5. Preserve static branch exposure separately from runtime execution: match/miss, spare/full capacity,\n+ empty/nonempty and null/nonnull nested vectors, short/long string branches, normal/unwind edges,\n+ and known-bad/aligned disassembler boundaries. No static branch is reported as runtime coverage.\n+6. Hash but do not parse the archived save in this analyst capture. A fresh independent verifier must\n+ parse named containers/elements, IDs, all event fields, exact FLT_MAX words, empty player states,\n+ and the actual RNG leaf, and must use a verifier-owned recipe and fail-if-exists directory.\n+\n+## Expected machine facts under test\n+\n+* Distinct element strides remain `0x2c` (ObservedTech), `0x74` (PlayerEvent), and `0x18`\n+ (TurnEvents); append/growth performs element construction rather than raw header transfer.\n+* Long-string ownership uses original allocator/deallocator thunks `0x00924fb6`/`0x00924faa`;\n+ these are original-helper dependencies, not standalone allocator safety.\n+* Get/create checks existing buckets before miss construction, deep-copies the nested vector, cleans\n+ the temporary nested vector, then writes the requested turn into the stored last element.\n+* Duplicate matching includes both description strings; mismatch returns without an event-vector\n+ write, while no duplicate proceeds to PlayerEvent append. No RNG instruction/effect is expected\n+ in these bounded static windows, but unchanged RNG is not measured.\n+\n+## Runtime residuals\n+\n+Still unavailable/unexercised: live existing-last-match and miss paths; spare/full outer capacity;\n+empty/nonempty nested vectors owning short/long strings; deliberate allocation failure and unwind;\n+equal versus description-only-different live events; transient stack sentinels; exact PostEvent\n+caller defaults/write order; allocator-family safety; event IDs and records created at runtime; and\n+all RNG state/draw effects.\n","additions":47,"deletions":0},{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py","relativePath":"verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py","type":"add","patch":"Index: /home/alex/sots-re/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n===================================================================\n--- /home/alex/sots-re/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n+++ /home/alex/sots-re/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n@@ -0,0 +1,182 @@\n+#!/usr/bin/env python3\n+\"\"\"Session-bound current-source static ABI capture; refuses output reuse.\"\"\"\n+import hashlib\n+import json\n+import pathlib\n+import struct\n+import subprocess\n+import sys\n+from datetime import datetime, timezone\n+\n+ROOT = pathlib.Path(\"/home/alex/sots-re\")\n+SESSION = \"run-35e59053176da458d8b46fea\"\n+OUT = ROOT / \"verify/results/research-completion-abi\" / SESSION\n+ENGINE = pathlib.Path(\"/tmp/opencode/sots-final-research-engine\")\n+RE = pathlib.Path(\"/tmp/opencode/sots-final-research-re\")\n+CAMPAIGN = ROOT / \"tools/campaign.py\"\n+EXE = ROOT / \"dumps/sots.exe\"\n+SAVE = ROOT / \"verify/results/saves/turn3-state.sav\"\n+OBJDUMP = pathlib.Path(\"/usr/bin/objdump\")\n+EXPECTED = {\n+ \"engine\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n+ \"re\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\",\n+ \"exe\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\",\n+ \"objdump\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n+ \"save\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\",\n+}\n+\n+# Names classify evidence only; these windows expose instructions but execute no branch.\n+WINDOWS = (\n+ (\"observed-ctor\", 0x8562A0, 0x856310),\n+ (\"observed-append\", 0x7B7320, 0x7B73A2),\n+ (\"observed-copy\", 0x79A150, 0x79A1DC),\n+ (\"observed-growth\", 0x7B34E0, 0x7B35F2),\n+ (\"observed-alloc\", 0x57E590, 0x57E5E7),\n+ (\"player-ctor\", 0x84EE30, 0x84EEF4),\n+ (\"player-append\", 0x86C580, 0x86C631),\n+ (\"player-growth\", 0x869500, 0x869620),\n+ (\"player-copy\", 0x7693F0, 0x7694C3),\n+ (\"player-dtor\", 0x61AE90, 0x61AEFC),\n+ (\"string-assign\", 0x4249A0, 0x424ADD),\n+ (\"import-thunks\", 0x924FAA, 0x924FBC),\n+ (\"turn-get-create\", 0x885380, 0x88544E),\n+ (\"turn-append\", 0x884CB0, 0x884D93),\n+ (\"turn-growth\", 0x8841A0, 0x884300),\n+ (\"nested-copy-authority\", 0x779850, 0x779930),\n+ (\"nested-dtor\", 0x629580, 0x6295CE),\n+ (\"turn-virtual-dtor\", 0x62E120, 0x62E170),\n+ (\"dedup\", 0x825D40, 0x825E67),\n+ (\"string-not-equal\", 0x46F8C0, 0x46F8F0),\n+ (\"prune\", 0x879EB0, 0x879FC0),\n+ (\"nested-copy-stop-9913\", 0x779850, 0x779913),\n+ (\"nested-copy-stop-9915\", 0x779850, 0x779915),\n+ (\"nested-copy-stop-a20\", 0x779850, 0x779A20),\n+ (\"nested-copy-stop-a21\", 0x779850, 0x779A21),\n+ (\"nested-copy-stop-a23\", 0x779850, 0x779A23),\n+ (\"nested-copy-stop-a28\", 0x779850, 0x779A28),\n+)\n+\n+def sha(data):\n+ return hashlib.sha256(data).hexdigest()\n+\n+def ident(path):\n+ target = path.resolve()\n+ data = target.read_bytes()\n+ return {\"path\": str(path), \"resolved_path\": str(target), \"bytes\": len(data), \"sha256\": sha(data)}\n+\n+def binding():\n+ argv = [sys.executable, str(CAMPAIGN), \"--state-root\", str(ROOT), \"source-binding\",\n+ \"research-completion-abi\", \"--engine-worktree\", str(ENGINE),\n+ \"--re-worktree\", str(RE)]\n+ p = subprocess.run(argv, cwd=ROOT, capture_output=True, text=True, check=True)\n+ return {\"argv\": argv, \"value\": json.loads(p.stdout)}\n+\n+def rows(data):\n+ return [line.rstrip() for line in data.decode(\"utf-8\").splitlines()\n+ if \":\" in line and line.lstrip()[:1].isdigit()]\n+\n+def pe_reader(data):\n+ pe = struct.unpack_from(\" 0 for x in records),\n+ \"all_stderr_empty\": all(x[\"stderr\"][\"bytes\"] == 0 for x in records),\n+ \"source_stable\": before[\"value\"] == after[\"value\"],\n+ **comparisons,\n+}\n+manifest = {\n+ \"schema\": \"sots-abi-static-capture/2\", \"session\": SESSION,\n+ \"actor\": \"research-abi-analyst\", \"role\": \"analyst\", \"model\": \"openai/gpt-5.6-sol\",\n+ \"timestamp\": datetime.now(timezone.utc).isoformat(),\n+ \"decisions\": [\"d-e9d6d48cd77538556d1a1c1f\", \"d-6e30d172051af0385f5979eb\"],\n+ \"scope\": \"Static instruction/byte capture and immutable input identity; no game/runtime execution.\",\n+ \"source_before\": before, \"source_after\": after, \"files\": files,\n+ \"image_base\": f\"0x{image_base:08x}\", \"commands\": records, \"direct_pe\": direct,\n+ \"checks\": [{\"name\": k, \"status\": \"pass\" if v else \"fail\"} for k, v in checks.items()],\n+ \"failed\": [k for k, v in checks.items() if not v],\n+ \"static_branch_exposure\": [\"existing-match/miss\", \"spare/full capacity\", \"empty/nonempty nested copy\",\n+ \"null/nonnull destruction\", \"short/long string\", \"normal/unwind\", \"bad/aligned boundaries\"],\n+ \"runtime_unexercised\": [\"all listed static branches\", \"allocator safety\", \"event construction and IDs\",\n+ \"PostEvent caller defaults/write order\", \"exception throw\", \"RNG state/draws\"],\n+ \"original_helpers\": [\"0x00924fb6 allocation thunk\", \"0x00924faa deallocation thunk\",\n+ \"0x0046f8c0 original string comparison when called\"],\n+}\n+(OUT / \"manifest.json\").write_text(json.dumps(manifest, indent=2) + \"\\n\")\n+print(json.dumps({\"output\": str(OUT.relative_to(ROOT)), \"commands\": len(records), \"failed\": manifest[\"failed\"]}, indent=2))\n+raise SystemExit(bool(manifest[\"failed\"]))\n","additions":182,"deletions":0}],"diagnostics":{},"truncated":false},"title":"Success. Updated the following files:\nA verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\nA verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py","time":{"start":1789046417721,"end":1789046417727}},"metadata":{"openai":{"itemId":"fc_0688b97a49c66568016aa2ae02cd1487d1a4b188d40e65e294"}},"id":"prt_08b77bb7f001hd7cdVWYAW5Chn","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b774ddb001nnAG84vYMj44EE"}} +{"type":"step_finish","timestamp":1789046417890,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b79e9de001AoQnFgj2PzqhHW","reason":"tool-calls","snapshot":"cd7bd25a5047e315e3e90aba7c98f78a0bfb105b","messageID":"msg_08b774ddb001nnAG84vYMj44EE","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":68744,"input":1403,"output":4478,"reasoning":783,"cache":{"write":0,"read":62080}},"cost":0}} +{"type":"step_start","timestamp":1789046420831,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b79f55b001dlqDYJcwBOy7VA","messageID":"msg_08b79ea12001hI66tSRXbAyYrz","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"d2573632ef628e0be2fcd04e16edf9a49f5150c3","type":"step-start"}} +{"type":"tool_use","timestamp":1789046425105,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_kXiEoFjuWKmN51VeeBZoxDVS","state":{"status":"completed","input":{"command":"sha256sum verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py && python3 -m py_compile verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py","workdir":"/home/alex/sots-re"},"output":"57d20b2a42fe2db5c1feff7c7839532a505e60305cbfeec82c40969ae73cabcf verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\ne7f6b20f28e21e539714751025873768923fd5dabdb4156d017173cd382647f8 verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n","metadata":{"output":"57d20b2a42fe2db5c1feff7c7839532a505e60305cbfeec82c40969ae73cabcf verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\ne7f6b20f28e21e539714751025873768923fd5dabdb4156d017173cd382647f8 verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n","exit":0,"truncated":false},"title":"sha256sum verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py && python3 -m py_compile verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py","time":{"start":1789046425069,"end":1789046425103}},"metadata":{"openai":{"itemId":"fc_08358712ffb9ab55016aa2ae95d77487d1b22c786ae65c7bb1"}},"id":"prt_08b79f9d3001wI8YKPn0cSDt3r","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b79ea12001hI66tSRXbAyYrz"}} +{"type":"step_finish","timestamp":1789046425209,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7a0676001ZBM2B9Dv0H5xgD","reason":"tool-calls","snapshot":"515ee792055c67519b88dc95853d75edd9762f72","messageID":"msg_08b79ea12001hI66tSRXbAyYrz","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":68944,"input":5455,"output":115,"reasoning":14,"cache":{"write":0,"read":63360}},"cost":0}} +{"type":"step_start","timestamp":1789046428784,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7a1468001HylULZCQZumWFX","messageID":"msg_08b7a06a0001TSJB1MA2ty8LhL","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"d3d1c04c38fd1872e1cadbd1a71c2a8f72010684","type":"step-start"}} +{"type":"tool_use","timestamp":1789046443786,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_f2lbxRWwRp3TbtTQh7CLtkzs","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-abi-analyst --role analyst --model openai/gpt-5.6-sol --session run-35e59053176da458d8b46fea --summary 'PRE-EXPERIMENT CHECKPOINT. OBSERVATIONS: current paired campaign binding remained stable through preflight at engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f; baseline HEAD/common-dir identities match. Binary, objdump, Python, archived save and parsers are available with identities in preflight. Canonical controls tests pass 37/37 and config tests 8/8; paired test_controls absence remains explicit. DECISION: execute only the attached current-source static plan/recipe. It refuses reused output and drift; captures 27 windows, direct PE controls, stop 0x779913 expected truncation, aligned 0x779915, authority 0x779930 and a20/a21/a23/a28. Static branch exposure is not runtime execution. Save is hashed but not parsed. No allocator/game/RNG/VM/Ghidra execution or lease. Block on any identity/stream/check failure or contradictory bytes.' --artifact verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json --artifact verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md --artifact verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py --next-action 'Execute exactly: python3 verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py run-35e59053176da458d8b46fea'","workdir":"/home/alex/sots-re"},"output":"{\n \"actor\": \"research-abi-analyst\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\",\n \"sha256\": \"7ca4dc72850cb0fbef6370bfbea8ece5cf102c886a6ef99c9940108fe44501aa\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\",\n \"sha256\": \"57d20b2a42fe2db5c1feff7c7839532a505e60305cbfeec82c40969ae73cabcf\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\",\n \"sha256\": \"e7f6b20f28e21e539714751025873768923fd5dabdb4156d017173cd382647f8\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"635032703dbd08885360c149\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Execute exactly: python3 verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py run-35e59053176da458d8b46fea\",\n \"role\": \"analyst\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-35e59053176da458d8b46fea\",\n \"summary\": \"PRE-EXPERIMENT CHECKPOINT. OBSERVATIONS: current paired campaign binding remained stable through preflight at engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f; baseline HEAD/common-dir identities match. Binary, objdump, Python, archived save and parsers are available with identities in preflight. Canonical controls tests pass 37/37 and config tests 8/8; paired test_controls absence remains explicit. DECISION: execute only the attached current-source static plan/recipe. It refuses reused output and drift; captures 27 windows, direct PE controls, stop 0x779913 expected truncation, aligned 0x779915, authority 0x779930 and a20/a21/a23/a28. Static branch exposure is not runtime execution. Save is hashed but not parsed. No allocator/game/RNG/VM/Ghidra execution or lease. Block on any identity/stream/check failure or contradictory bytes.\",\n \"timestamp\": \"2026-09-10T13:20:43.762619+00:00\"\n}\n","metadata":{"output":"{\n \"actor\": \"research-abi-analyst\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\",\n \"sha256\": \"7ca4dc72850cb0fbef6370bfbea8ece5cf102c886a6ef99c9940108fe44501aa\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\",\n \"sha256\": \"57d20b2a42fe2db5c1feff7c7839532a505e60305cbfeec82c40969ae73cabcf\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\",\n \"sha256\": \"e7f6b20f28e21e539714751025873768923fd5dabdb4156d017173cd382647f8\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"635032703dbd08885360c149\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Execute exactly: python3 verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py run-35e59053176da458d8b46fea\",\n \"role\": \"analyst\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-35e59053176da458d8b46fea\",\n \"summary\": \"PRE-EXPERIMENT CHECKPOINT. OBSERVATIONS: current paired campaign binding remained stable through preflight at engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f; baseline HEAD/common-dir identities match. Binary, objdump, Python, archived save and parsers are available with identities in preflight. Canonical controls tests pass 37/37 and config tests 8/8; paired test_controls absence remains explicit. DECISION: execute only the attached current-source static plan/recipe. It refuses reused output and drift; captures 27 windows, direct PE controls, stop 0x779913 expected truncation, aligned 0x779915, authority 0x779930 and a20/a21/a23/a28. Static branch exposure is not runtime execution. Save is hashed but not parsed. No allocator/game/RNG/VM/Ghidra execution or lease. Block on any identity/stream/check failure or contradictory bytes.\",\n \"timestamp\": \"2026-09-10T13:20:43.762619+00:00\"\n}\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-abi-analyst --role analyst --model openai/gpt-5.6-sol --session run-35e59053176da458d8b46fea --summary 'PRE-EXPERIMENT CHECKPOINT. OBSERVATIONS: current paired campaign binding remained stable through preflight at engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f; baseline HEAD/common-dir identities match. Binary, objdump, Python, archived save and parsers are available with identities in preflight. Canonical controls tests pass 37/37 and config tests 8/8; paired test_controls absence remains explicit. DECISION: execute only the attached current-source static plan/recipe. It refuses reused output and drift; captures 27 windows, direct PE controls, stop 0x779913 expected truncation, aligned 0x779915, authority 0x779930 and a20/a21/a23/a28. Static branch exposure is not runtime execution. Save is hashed but not parsed. No allocator/game/RNG/VM/Ghidra execution or lease. Block on any identity/stream/check failure or contradictory bytes.' --artifact verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json --artifact verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md --artifact verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py --next-action 'Execute exactly: python3 verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py run-35e59053176da458d8b46fea'","time":{"start":1789046443720,"end":1789046443784}},"metadata":{"openai":{"itemId":"fc_0d6221139a4a0b7c016aa2ae9c95b487d1a4eaaf8d5c947eed"}},"id":"prt_08b7a146e001vNzPIzWmb0AIbe","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7a06a0001TSJB1MA2ty8LhL"}} +{"type":"step_finish","timestamp":1789046443830,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7a4f33001LLuYiuK8DL3Vbu","reason":"tool-calls","snapshot":"31b1feab1adcc98823794c94bc3db5ac8c8be8fa","messageID":"msg_08b7a06a0001TSJB1MA2ty8LhL","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":69553,"input":341,"output":476,"reasoning":0,"cache":{"write":0,"read":68736}},"cost":0}} +{"type":"step_start","timestamp":1789046445935,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7a576b001chJaObU7ZOWvBH","messageID":"msg_08b7a4f5e001gLOpkhjr6UnUcW","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"7f4b2eb48db3d28f9089b10df82f6a5e7cb2cff9","type":"step-start"}} +{"type":"tool_use","timestamp":1789046455703,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_BKEjyEt8urWhjDTbYt8hbJ4T","state":{"status":"completed","input":{"command":"python3 verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py run-35e59053176da458d8b46fea","workdir":"/home/alex/sots-re","timeout":120000},"output":"{\n \"output\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea\",\n \"commands\": 27,\n \"failed\": [\n \"9913_is_truncated_prefix\",\n \"a20_is_truncated_prefix\"\n ]\n}\n","metadata":{"output":"{\n \"output\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea\",\n \"commands\": 27,\n \"failed\": [\n \"9913_is_truncated_prefix\",\n \"a20_is_truncated_prefix\"\n ]\n}\n","exit":1,"truncated":false},"title":"python3 verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py run-35e59053176da458d8b46fea","time":{"start":1789046455218,"end":1789046455701}},"metadata":{"openai":{"itemId":"fc_0740452ce3906a7c016aa2aeb6f1f087d19807075e17a6cda5"}},"id":"prt_08b7a7b96001W1OowGG8hsxtib","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7a4f5e001gLOpkhjr6UnUcW"}} +{"type":"step_finish","timestamp":1789046455752,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7a7dc5001mJ3dWv9Tc47ruY","reason":"tool-calls","snapshot":"48203ef7cbc7346f6ee760c963af448b4b3fabf4","messageID":"msg_08b7a4f5e001gLOpkhjr6UnUcW","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":70357,"input":1281,"output":76,"reasoning":8,"cache":{"write":0,"read":68992}},"cost":0}} +{"type":"step_start","timestamp":1789046457473,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7a847d001zCUHdNOI8hUdWH","messageID":"msg_08b7a7df4001oqASA4j2CDbyJo","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"196c80375b8ee9ddfb3a6554294dd151862e2543","type":"step-start"}} +{"type":"tool_use","timestamp":1789046478019,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_q3idyQ7bRyDf1aZKhOeMoQiA","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9913.stdout.txt","offset":70,"limit":20},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9913.stdout.txt\nfile\n\n70: 7798ff:\t8b c6 \tmov eax,esi\n71: 779901:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n72: 779904:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n73: 77990b:\t59 \tpop ecx\n74: 77990c:\t5f \tpop edi\n75: 77990d:\t5e \tpop esi\n76: 77990e:\t5b \tpop ebx\n77: 77990f:\t8b e5 \tmov esp,ebp\n78: 779911:\t5d \tpop ebp\n79: 779912:\tc2 \tret 0x4\n\n(End of file - total 79 lines)\n","metadata":{"preview":" 7798ff:\t8b c6 \tmov eax,esi\n 779901:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 779904:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 77990b:\t59 \tpop ecx\n 77990c:\t5f \tpop edi\n 77990d:\t5e \tpop esi\n 77990e:\t5b \tpop ebx\n 77990f:\t8b e5 \tmov esp,ebp\n 779911:\t5d \tpop ebp\n 779912:\tc2 \tret 0x4","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9913.stdout.txt","text":" 7798ff:\t8b c6 \tmov eax,esi\n 779901:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 779904:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 77990b:\t59 \tpop ecx\n 77990c:\t5f \tpop edi\n 77990d:\t5e \tpop esi\n 77990e:\t5b \tpop ebx\n 77990f:\t8b e5 \tmov esp,ebp\n 779911:\t5d \tpop ebp\n 779912:\tc2 \tret 0x4","lineStart":70,"lineEnd":79,"totalLines":79,"truncated":false}},"title":"verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9913.stdout.txt","time":{"start":1789046478003,"end":1789046478018}},"metadata":{"openai":{"itemId":"fc_086d5acc870090e5016aa2aecdc44c87d1846277f655d6fd39"}},"id":"prt_08b7ad49c001z8I8yIDxL3eXs6","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7a7df4001oqASA4j2CDbyJo"}} +{"type":"tool_use","timestamp":1789046478084,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_pVG6B81uFT7PTEXceZ8stYY4","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9915.stdout.txt","offset":70,"limit":20},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9915.stdout.txt\nfile\n\n70: 7798ff:\t8b c6 \tmov eax,esi\n71: 779901:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n72: 779904:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n73: 77990b:\t59 \tpop ecx\n74: 77990c:\t5f \tpop edi\n75: 77990d:\t5e \tpop esi\n76: 77990e:\t5b \tpop ebx\n77: 77990f:\t8b e5 \tmov esp,ebp\n78: 779911:\t5d \tpop ebp\n79: 779912:\tc2 04 00 \tret 0x4\n\n(End of file - total 79 lines)\n","metadata":{"preview":" 7798ff:\t8b c6 \tmov eax,esi\n 779901:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 779904:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 77990b:\t59 \tpop ecx\n 77990c:\t5f \tpop edi\n 77990d:\t5e \tpop esi\n 77990e:\t5b \tpop ebx\n 77990f:\t8b e5 \tmov esp,ebp\n 779911:\t5d \tpop ebp\n 779912:\tc2 04 00 \tret 0x4","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9915.stdout.txt","text":" 7798ff:\t8b c6 \tmov eax,esi\n 779901:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 779904:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 77990b:\t59 \tpop ecx\n 77990c:\t5f \tpop edi\n 77990d:\t5e \tpop esi\n 77990e:\t5b \tpop ebx\n 77990f:\t8b e5 \tmov esp,ebp\n 779911:\t5d \tpop ebp\n 779912:\tc2 04 00 \tret 0x4","lineStart":70,"lineEnd":79,"totalLines":79,"truncated":false}},"title":"verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9915.stdout.txt","time":{"start":1789046478046,"end":1789046478054}},"metadata":{"openai":{"itemId":"fc_086d5acc870090e5016aa2aecdc45c87d1a7aab641f9c448ca"}},"id":"prt_08b7ad4b7001IcGwulHRo98Li5","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7a7df4001oqASA4j2CDbyJo"}} +{"type":"tool_use","timestamp":1789046478103,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_ODx6iQna2l91GpA0Kyx7SAbs","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a20.stdout.txt","offset":145,"limit":20},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a20.stdout.txt\nfile\n\n145: 7799d7:\t52 \tpush edx\n146: 7799d8:\te8 f3 d7 c9 ff \tcall 0x4171d0\n147: 7799dd:\t83 c4 1c \tadd esp,0x1c\n148: 7799e0:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n149: 7799e4:\t72 0c \tjb 0x7799f2\n150: 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n151: 7799e9:\t50 \tpush eax\n152: 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n153: 7799ef:\t83 c4 04 \tadd esp,0x4\n154: 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n155: 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n156: 7799fc:\t59 \tpop ecx\n157: 7799fd:\t5e \tpop esi\n158: 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n159: 779a01:\t33 cd \txor ecx,ebp\n160: 779a03:\te8 7a b3 1a 00 \tcall 0x924d82\n161: 779a08:\t8b e5 \tmov esp,ebp\n162: 779a0a:\t5d \tpop ebp\n163: 779a0b:\tc3 \tret \n164: 779a0c:\tcc \tint3 \n\n(Showing lines 145-164 of 175. Use offset=165 to continue.)\n","metadata":{"preview":" 7799d7:\t52 \tpush edx\n 7799d8:\te8 f3 d7 c9 ff \tcall 0x4171d0\n 7799dd:\t83 c4 1c \tadd esp,0x1c\n 7799e0:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n 7799e4:\t72 0c \tjb 0x7799f2\n 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n 7799e9:\t50 \tpush eax\n 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n 7799ef:\t83 c4 04 \tadd esp,0x4\n 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 7799fc:\t59 \tpop ecx\n 7799fd:\t5e \tpop esi\n 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n 779a01:\t33 cd \txor ecx,ebp\n 779a03:\te8 7a b3 1a 00 \tcall 0x924d82\n 779a08:\t8b e5 \tmov esp,ebp\n 779a0a:\t5d \tpop ebp\n 779a0b:\tc3 \tret \n 779a0c:\tcc \tint3 ","truncated":true,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a20.stdout.txt","text":" 7799d7:\t52 \tpush edx\n 7799d8:\te8 f3 d7 c9 ff \tcall 0x4171d0\n 7799dd:\t83 c4 1c \tadd esp,0x1c\n 7799e0:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n 7799e4:\t72 0c \tjb 0x7799f2\n 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n 7799e9:\t50 \tpush eax\n 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n 7799ef:\t83 c4 04 \tadd esp,0x4\n 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 7799fc:\t59 \tpop ecx\n 7799fd:\t5e \tpop esi\n 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n 779a01:\t33 cd \txor ecx,ebp\n 779a03:\te8 7a b3 1a 00 \tcall 0x924d82\n 779a08:\t8b e5 \tmov esp,ebp\n 779a0a:\t5d \tpop ebp\n 779a0b:\tc3 \tret \n 779a0c:\tcc \tint3 ","lineStart":145,"lineEnd":164,"totalLines":175,"truncated":true}},"title":"verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a20.stdout.txt","time":{"start":1789046478077,"end":1789046478101}},"metadata":{"openai":{"itemId":"fc_086d5acc870090e5016aa2aecdc46887d1a31bb1c61965b14b"}},"id":"prt_08b7ad4e0001ptQLJXpMku0Wsb","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7a7df4001oqASA4j2CDbyJo"}} +{"type":"tool_use","timestamp":1789046478107,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_hqe8F3mAjb0CkXVcxZ2ZnQhI","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a21.stdout.txt","offset":145,"limit":20},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a21.stdout.txt\nfile\n\n145: 7799d7:\t52 \tpush edx\n146: 7799d8:\te8 f3 d7 c9 ff \tcall 0x4171d0\n147: 7799dd:\t83 c4 1c \tadd esp,0x1c\n148: 7799e0:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n149: 7799e4:\t72 0c \tjb 0x7799f2\n150: 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n151: 7799e9:\t50 \tpush eax\n152: 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n153: 7799ef:\t83 c4 04 \tadd esp,0x4\n154: 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n155: 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n156: 7799fc:\t59 \tpop ecx\n157: 7799fd:\t5e \tpop esi\n158: 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n159: 779a01:\t33 cd \txor ecx,ebp\n160: 779a03:\te8 7a b3 1a 00 \tcall 0x924d82\n161: 779a08:\t8b e5 \tmov esp,ebp\n162: 779a0a:\t5d \tpop ebp\n163: 779a0b:\tc3 \tret \n164: 779a0c:\tcc \tint3 \n\n(Showing lines 145-164 of 175. Use offset=165 to continue.)\n","metadata":{"preview":" 7799d7:\t52 \tpush edx\n 7799d8:\te8 f3 d7 c9 ff \tcall 0x4171d0\n 7799dd:\t83 c4 1c \tadd esp,0x1c\n 7799e0:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n 7799e4:\t72 0c \tjb 0x7799f2\n 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n 7799e9:\t50 \tpush eax\n 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n 7799ef:\t83 c4 04 \tadd esp,0x4\n 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 7799fc:\t59 \tpop ecx\n 7799fd:\t5e \tpop esi\n 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n 779a01:\t33 cd \txor ecx,ebp\n 779a03:\te8 7a b3 1a 00 \tcall 0x924d82\n 779a08:\t8b e5 \tmov esp,ebp\n 779a0a:\t5d \tpop ebp\n 779a0b:\tc3 \tret \n 779a0c:\tcc \tint3 ","truncated":true,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a21.stdout.txt","text":" 7799d7:\t52 \tpush edx\n 7799d8:\te8 f3 d7 c9 ff \tcall 0x4171d0\n 7799dd:\t83 c4 1c \tadd esp,0x1c\n 7799e0:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n 7799e4:\t72 0c \tjb 0x7799f2\n 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n 7799e9:\t50 \tpush eax\n 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n 7799ef:\t83 c4 04 \tadd esp,0x4\n 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 7799fc:\t59 \tpop ecx\n 7799fd:\t5e \tpop esi\n 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n 779a01:\t33 cd \txor ecx,ebp\n 779a03:\te8 7a b3 1a 00 \tcall 0x924d82\n 779a08:\t8b e5 \tmov esp,ebp\n 779a0a:\t5d \tpop ebp\n 779a0b:\tc3 \tret \n 779a0c:\tcc \tint3 ","lineStart":145,"lineEnd":164,"totalLines":175,"truncated":true}},"title":"verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a21.stdout.txt","time":{"start":1789046478093,"end":1789046478105}},"metadata":{"openai":{"itemId":"fc_086d5acc870090e5016aa2aecdc47087d185a10d2a5a7b2ee9"}},"id":"prt_08b7ad503001aIYoAvoLNmGEsS","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7a7df4001oqASA4j2CDbyJo"}} +{"type":"tool_use","timestamp":1789046478152,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_hGBv3nWs2rLC9Dm3umebdxwT","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json","offset":1,"limit":100},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json\nfile\n\n1: {\n2: \"schema\": \"sots-abi-static-capture/2\",\n3: \"session\": \"run-35e59053176da458d8b46fea\",\n4: \"actor\": \"research-abi-analyst\",\n5: \"role\": \"analyst\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"timestamp\": \"2026-09-10T13:20:55.693635+00:00\",\n8: \"decisions\": [\n9: \"d-e9d6d48cd77538556d1a1c1f\",\n10: \"d-6e30d172051af0385f5979eb\"\n11: ],\n12: \"scope\": \"Static instruction/byte capture and immutable input identity; no game/runtime execution.\",\n13: \"source_before\": {\n14: \"argv\": [\n15: \"/usr/bin/python3\",\n16: \"/home/alex/sots-re/tools/campaign.py\",\n17: \"--state-root\",\n18: \"/home/alex/sots-re\",\n19: \"source-binding\",\n20: \"research-completion-abi\",\n21: \"--engine-worktree\",\n22: \"/tmp/opencode/sots-final-research-engine\",\n23: \"--re-worktree\",\n24: \"/tmp/opencode/sots-final-research-re\"\n25: ],\n26: \"value\": {\n27: \"engine\": {\n28: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n29: \"path\": \"/tmp/opencode/sots-final-research-engine\",\n30: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n31: },\n32: \"re\": {\n33: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n34: \"path\": \"/tmp/opencode/sots-final-research-re\",\n35: \"sha256\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\"\n36: }\n37: }\n38: },\n39: \"source_after\": {\n40: \"argv\": [\n41: \"/usr/bin/python3\",\n42: \"/home/alex/sots-re/tools/campaign.py\",\n43: \"--state-root\",\n44: \"/home/alex/sots-re\",\n45: \"source-binding\",\n46: \"research-completion-abi\",\n47: \"--engine-worktree\",\n48: \"/tmp/opencode/sots-final-research-engine\",\n49: \"--re-worktree\",\n50: \"/tmp/opencode/sots-final-research-re\"\n51: ],\n52: \"value\": {\n53: \"engine\": {\n54: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n55: \"path\": \"/tmp/opencode/sots-final-research-engine\",\n56: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n57: },\n58: \"re\": {\n59: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n60: \"path\": \"/tmp/opencode/sots-final-research-re\",\n61: \"sha256\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\"\n62: }\n63: }\n64: },\n65: \"files\": {\n66: \"binary\": {\n67: \"path\": \"/home/alex/sots-re/dumps/sots.exe\",\n68: \"resolved_path\": \"/home/alex/sots-re/dumps/sots.exe\",\n69: \"bytes\": 7898624,\n70: \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n71: },\n72: \"objdump\": {\n73: \"path\": \"/usr/bin/objdump\",\n74: \"resolved_path\": \"/usr/bin/x86_64-linux-gnu-objdump\",\n75: \"bytes\": 373888,\n76: \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\"\n77: },\n78: \"python\": {\n79: \"path\": \"/usr/bin/python3\",\n80: \"resolved_path\": \"/usr/bin/python3.10\",\n81: \"bytes\": 5941864,\n82: \"sha256\": \"a2f33a6e006989270f4340528eb61f8f97366e00a5d1b602ac8672ea44fc56ae\"\n83: },\n84: \"save\": {\n85: \"path\": \"/home/alex/sots-re/verify/results/saves/turn3-state.sav\",\n86: \"resolved_path\": \"/home/alex/sots-re/verify/results/saves/turn3-state.sav\",\n87: \"bytes\": 67219,\n88: \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n89: },\n90: \"campaign\": {\n91: \"path\": \"/home/alex/sots-re/tools/campaign.py\",\n92: \"resolved_path\": \"/home/alex/sots-re/tools/campaign.py\",\n93: \"bytes\": 35131,\n94: \"sha256\": \"a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123\"\n95: },\n96: \"save_reader\": {\n97: \"path\": \"/home/alex/sots-re/verify/save-reader/save_reader.py\",\n98: \"resolved_path\": \"/home/alex/sots-re/verify/save-reader/save_reader.py\",\n99: \"bytes\": 74367,\n100: \"sha256\": \"2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35\"\n\n(Showing lines 1-100 of 801. Use offset=101 to continue.)\n","metadata":{"preview":"{\n \"schema\": \"sots-abi-static-capture/2\",\n \"session\": \"run-35e59053176da458d8b46fea\",\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": \"2026-09-10T13:20:55.693635+00:00\",\n \"decisions\": [\n \"d-e9d6d48cd77538556d1a1c1f\",\n \"d-6e30d172051af0385f5979eb\"\n ],\n \"scope\": \"Static instruction/byte capture and immutable input identity; no game/runtime execution.\",\n \"source_before\": {\n \"argv\": [\n \"/usr/bin/python3\",\n \"/home/alex/sots-re/tools/campaign.py\",\n \"--state-root\",\n \"/home/alex/sots-re\",\n \"source-binding\",\n \"research-completion-abi\",","truncated":true,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json","text":"{\n \"schema\": \"sots-abi-static-capture/2\",\n \"session\": \"run-35e59053176da458d8b46fea\",\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": \"2026-09-10T13:20:55.693635+00:00\",\n \"decisions\": [\n \"d-e9d6d48cd77538556d1a1c1f\",\n \"d-6e30d172051af0385f5979eb\"\n ],\n \"scope\": \"Static instruction/byte capture and immutable input identity; no game/runtime execution.\",\n \"source_before\": {\n \"argv\": [\n \"/usr/bin/python3\",\n \"/home/alex/sots-re/tools/campaign.py\",\n \"--state-root\",\n \"/home/alex/sots-re\",\n \"source-binding\",\n \"research-completion-abi\",\n \"--engine-worktree\",\n \"/tmp/opencode/sots-final-research-engine\",\n \"--re-worktree\",\n \"/tmp/opencode/sots-final-research-re\"\n ],\n \"value\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\"\n }\n }\n },\n \"source_after\": {\n \"argv\": [\n \"/usr/bin/python3\",\n \"/home/alex/sots-re/tools/campaign.py\",\n \"--state-root\",\n \"/home/alex/sots-re\",\n \"source-binding\",\n \"research-completion-abi\",\n \"--engine-worktree\",\n \"/tmp/opencode/sots-final-research-engine\",\n \"--re-worktree\",\n \"/tmp/opencode/sots-final-research-re\"\n ],\n \"value\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\"\n }\n }\n },\n \"files\": {\n \"binary\": {\n \"path\": \"/home/alex/sots-re/dumps/sots.exe\",\n \"resolved_path\": \"/home/alex/sots-re/dumps/sots.exe\",\n \"bytes\": 7898624,\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n },\n \"objdump\": {\n \"path\": \"/usr/bin/objdump\",\n \"resolved_path\": \"/usr/bin/x86_64-linux-gnu-objdump\",\n \"bytes\": 373888,\n \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\"\n },\n \"python\": {\n \"path\": \"/usr/bin/python3\",\n \"resolved_path\": \"/usr/bin/python3.10\",\n \"bytes\": 5941864,\n \"sha256\": \"a2f33a6e006989270f4340528eb61f8f97366e00a5d1b602ac8672ea44fc56ae\"\n },\n \"save\": {\n \"path\": \"/home/alex/sots-re/verify/results/saves/turn3-state.sav\",\n \"resolved_path\": \"/home/alex/sots-re/verify/results/saves/turn3-state.sav\",\n \"bytes\": 67219,\n \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n },\n \"campaign\": {\n \"path\": \"/home/alex/sots-re/tools/campaign.py\",\n \"resolved_path\": \"/home/alex/sots-re/tools/campaign.py\",\n \"bytes\": 35131,\n \"sha256\": \"a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123\"\n },\n \"save_reader\": {\n \"path\": \"/home/alex/sots-re/verify/save-reader/save_reader.py\",\n \"resolved_path\": \"/home/alex/sots-re/verify/save-reader/save_reader.py\",\n \"bytes\": 74367,\n \"sha256\": \"2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35\"","lineStart":1,"lineEnd":100,"totalLines":801,"truncated":true}},"title":"verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json","time":{"start":1789046478139,"end":1789046478150}},"metadata":{"openai":{"itemId":"fc_086d5acc870090e5016aa2aecdc47887d1a13e2c65f93fd883"}},"id":"prt_08b7ad511001WGQvqylN2j6jE6","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7a7df4001oqASA4j2CDbyJo"}} +{"type":"step_finish","timestamp":1789046478311,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7ad5e3001JxQVTdVv8RmWk9","reason":"tool-calls","snapshot":"282c4f19eb92d328aeb1ac5014cfecd76543402d","messageID":"msg_08b7a7df4001oqASA4j2CDbyJo","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":70874,"input":286,"output":314,"reasoning":130,"cache":{"write":0,"read":70144}},"cost":0}} +{"type":"step_start","timestamp":1789046481334,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7ae1b2001eaX8JC0xOdt243","messageID":"msg_08b7ad618001r0xcROusRB2Lgl","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"2fbf1790bc0db225b9ed0af7b769e3ebb5aafa49","type":"step-start"}} +{"type":"tool_use","timestamp":1789046494568,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_tXqQDi0Ccy1Yil1kAxEWYDUo","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a20.stdout.txt","offset":165,"limit":20},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a20.stdout.txt\nfile\n\n165: 779a0d:\tcc \tint3 \n166: 779a0e:\tcc \tint3 \n167: 779a0f:\tcc \tint3 \n168: 779a10:\t53 \tpush ebx\n169: 779a11:\t56 \tpush esi\n170: 779a12:\t8b f1 \tmov esi,ecx\n171: 779a14:\t57 \tpush edi\n172: 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n173: 779a1b:\t33 db \txor ebx,ebx\n174: 779a1d:\t3b fb \tcmp edi,ebx\n175: 779a1f:\t74 \tje 0x779a31\n\n(End of file - total 175 lines)\n","metadata":{"preview":" 779a0d:\tcc \tint3 \n 779a0e:\tcc \tint3 \n 779a0f:\tcc \tint3 \n 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi\n 779a12:\t8b f1 \tmov esi,ecx\n 779a14:\t57 \tpush edi\n 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n 779a1b:\t33 db \txor ebx,ebx\n 779a1d:\t3b fb \tcmp edi,ebx\n 779a1f:\t74 \tje 0x779a31","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a20.stdout.txt","text":" 779a0d:\tcc \tint3 \n 779a0e:\tcc \tint3 \n 779a0f:\tcc \tint3 \n 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi\n 779a12:\t8b f1 \tmov esi,ecx\n 779a14:\t57 \tpush edi\n 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n 779a1b:\t33 db \txor ebx,ebx\n 779a1d:\t3b fb \tcmp edi,ebx\n 779a1f:\t74 \tje 0x779a31","lineStart":165,"lineEnd":175,"totalLines":175,"truncated":false}},"title":"verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a20.stdout.txt","time":{"start":1789046494552,"end":1789046494566}},"metadata":{"openai":{"itemId":"fc_08b1f5f93b12046a016aa2aede389087d1b675050d97135085"}},"id":"prt_08b7b1533001eMf6Ef0I1u4sKv","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7ad618001r0xcROusRB2Lgl"}} +{"type":"tool_use","timestamp":1789046494617,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_xZc6O8HBA3MH94lAjCsGUlmt","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a21.stdout.txt","offset":165,"limit":20},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a21.stdout.txt\nfile\n\n165: 779a0d:\tcc \tint3 \n166: 779a0e:\tcc \tint3 \n167: 779a0f:\tcc \tint3 \n168: 779a10:\t53 \tpush ebx\n169: 779a11:\t56 \tpush esi\n170: 779a12:\t8b f1 \tmov esi,ecx\n171: 779a14:\t57 \tpush edi\n172: 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n173: 779a1b:\t33 db \txor ebx,ebx\n174: 779a1d:\t3b fb \tcmp edi,ebx\n175: 779a1f:\t74 10 \tje 0x779a31\n\n(End of file - total 175 lines)\n","metadata":{"preview":" 779a0d:\tcc \tint3 \n 779a0e:\tcc \tint3 \n 779a0f:\tcc \tint3 \n 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi\n 779a12:\t8b f1 \tmov esi,ecx\n 779a14:\t57 \tpush edi\n 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n 779a1b:\t33 db \txor ebx,ebx\n 779a1d:\t3b fb \tcmp edi,ebx\n 779a1f:\t74 10 \tje 0x779a31","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a21.stdout.txt","text":" 779a0d:\tcc \tint3 \n 779a0e:\tcc \tint3 \n 779a0f:\tcc \tint3 \n 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi\n 779a12:\t8b f1 \tmov esi,ecx\n 779a14:\t57 \tpush edi\n 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n 779a1b:\t33 db \txor ebx,ebx\n 779a1d:\t3b fb \tcmp edi,ebx\n 779a1f:\t74 10 \tje 0x779a31","lineStart":165,"lineEnd":175,"totalLines":175,"truncated":false}},"title":"verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a21.stdout.txt","time":{"start":1789046494610,"end":1789046494616}},"metadata":{"openai":{"itemId":"fc_08b1f5f93b12046a016aa2aede38a487d18196967f38f83726"}},"id":"prt_08b7b1567001hY0Hrn4lzkqaE4","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7ad618001r0xcROusRB2Lgl"}} +{"type":"tool_use","timestamp":1789046494668,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_jaq3VcZaMx31iYAgqi0nD1X0","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json","offset":700,"limit":110},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json\nfile\n\n700: \"bytes\": \"57a1788baf0033c5\",\n701: \"section\": \".text\",\n702: \"file_offset\": 4635027\n703: },\n704: \"turn-stride\": {\n705: \"va\": \"0x00884cc3\",\n706: \"bytes\": \"57a1788baf0033c5\",\n707: \"section\": \".text\",\n708: \"file_offset\": 4735171\n709: },\n710: \"constructor-defaults\": {\n711: \"va\": \"0x00af0dc8\",\n712: \"bytes\": \"ffff7f7fffff7f7fffff7f7f\",\n713: \"section\": \".data\",\n714: \"file_offset\": 7271880\n715: }\n716: },\n717: \"checks\": [\n718: {\n719: \"name\": \"all_commands_zero\",\n720: \"status\": \"pass\"\n721: },\n722: {\n723: \"name\": \"all_stdout_nonempty\",\n724: \"status\": \"pass\"\n725: },\n726: {\n727: \"name\": \"all_stderr_empty\",\n728: \"status\": \"pass\"\n729: },\n730: {\n731: \"name\": \"source_stable\",\n732: \"status\": \"pass\"\n733: },\n734: {\n735: \"name\": \"9913_is_truncated_prefix\",\n736: \"status\": \"fail\"\n737: },\n738: {\n739: \"name\": \"9915_terminal_ret4\",\n740: \"status\": \"pass\"\n741: },\n742: {\n743: \"name\": \"authority_contains_ret4\",\n744: \"status\": \"pass\"\n745: },\n746: {\n747: \"name\": \"a20_is_truncated_prefix\",\n748: \"status\": \"fail\"\n749: },\n750: {\n751: \"name\": \"a21_adds_complete_je\",\n752: \"status\": \"pass\"\n753: },\n754: {\n755: \"name\": \"a23_adds_complete_mov\",\n756: \"status\": \"pass\"\n757: },\n758: {\n759: \"name\": \"a28_adds_complete_call\",\n760: \"status\": \"pass\"\n761: },\n762: {\n763: \"name\": \"direct_ret4\",\n764: \"status\": \"pass\"\n765: },\n766: {\n767: \"name\": \"direct_a20_family\",\n768: \"status\": \"pass\"\n769: },\n770: {\n771: \"name\": \"direct_defaults\",\n772: \"status\": \"pass\"\n773: }\n774: ],\n775: \"failed\": [\n776: \"9913_is_truncated_prefix\",\n777: \"a20_is_truncated_prefix\"\n778: ],\n779: \"static_branch_exposure\": [\n780: \"existing-match/miss\",\n781: \"spare/full capacity\",\n782: \"empty/nonempty nested copy\",\n783: \"null/nonnull destruction\",\n784: \"short/long string\",\n785: \"normal/unwind\",\n786: \"bad/aligned boundaries\"\n787: ],\n788: \"runtime_unexercised\": [\n789: \"all listed static branches\",\n790: \"allocator safety\",\n791: \"event construction and IDs\",\n792: \"PostEvent caller defaults/write order\",\n793: \"exception throw\",\n794: \"RNG state/draws\"\n795: ],\n796: \"original_helpers\": [\n797: \"0x00924fb6 allocation thunk\",\n798: \"0x00924faa deallocation thunk\",\n799: \"0x0046f8c0 original string comparison when called\"\n800: ]\n801: }\n\n(End of file - total 801 lines)\n","metadata":{"preview":" \"bytes\": \"57a1788baf0033c5\",\n \"section\": \".text\",\n \"file_offset\": 4635027\n },\n \"turn-stride\": {\n \"va\": \"0x00884cc3\",\n \"bytes\": \"57a1788baf0033c5\",\n \"section\": \".text\",\n \"file_offset\": 4735171\n },\n \"constructor-defaults\": {\n \"va\": \"0x00af0dc8\",\n \"bytes\": \"ffff7f7fffff7f7fffff7f7f\",\n \"section\": \".data\",\n \"file_offset\": 7271880\n }\n },\n \"checks\": [\n {\n \"name\": \"all_commands_zero\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json","text":" \"bytes\": \"57a1788baf0033c5\",\n \"section\": \".text\",\n \"file_offset\": 4635027\n },\n \"turn-stride\": {\n \"va\": \"0x00884cc3\",\n \"bytes\": \"57a1788baf0033c5\",\n \"section\": \".text\",\n \"file_offset\": 4735171\n },\n \"constructor-defaults\": {\n \"va\": \"0x00af0dc8\",\n \"bytes\": \"ffff7f7fffff7f7fffff7f7f\",\n \"section\": \".data\",\n \"file_offset\": 7271880\n }\n },\n \"checks\": [\n {\n \"name\": \"all_commands_zero\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all_stdout_nonempty\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all_stderr_empty\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"source_stable\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"9913_is_truncated_prefix\",\n \"status\": \"fail\"\n },\n {\n \"name\": \"9915_terminal_ret4\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"authority_contains_ret4\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"a20_is_truncated_prefix\",\n \"status\": \"fail\"\n },\n {\n \"name\": \"a21_adds_complete_je\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"a23_adds_complete_mov\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"a28_adds_complete_call\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"direct_ret4\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"direct_a20_family\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"direct_defaults\",\n \"status\": \"pass\"\n }\n ],\n \"failed\": [\n \"9913_is_truncated_prefix\",\n \"a20_is_truncated_prefix\"\n ],\n \"static_branch_exposure\": [\n \"existing-match/miss\",\n \"spare/full capacity\",\n \"empty/nonempty nested copy\",\n \"null/nonnull destruction\",\n \"short/long string\",\n \"normal/unwind\",\n \"bad/aligned boundaries\"\n ],\n \"runtime_unexercised\": [\n \"all listed static branches\",\n \"allocator safety\",\n \"event construction and IDs\",\n \"PostEvent caller defaults/write order\",\n \"exception throw\",\n \"RNG state/draws\"\n ],\n \"original_helpers\": [\n \"0x00924fb6 allocation thunk\",\n \"0x00924faa deallocation thunk\",\n \"0x0046f8c0 original string comparison when called\"\n ]\n}","lineStart":700,"lineEnd":801,"totalLines":801,"truncated":false}},"title":"verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json","time":{"start":1789046494659,"end":1789046494667}},"metadata":{"openai":{"itemId":"fc_08b1f5f93b12046a016aa2aede38b087d18821b7c0ead2fe3f"}},"id":"prt_08b7b15b6001cDXi2t1Cg7gT4P","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7ad618001r0xcROusRB2Lgl"}} +{"type":"step_finish","timestamp":1789046494835,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7b1670001s076uokTLoYhV8","reason":"tool-calls","snapshot":"507b919f85b90e486af89c8f13cad5a716d41301","messageID":"msg_08b7ad618001r0xcROusRB2Lgl","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":74385,"input":3905,"output":194,"reasoning":14,"cache":{"write":0,"read":70272}},"cost":0}} +{"type":"step_start","timestamp":1789046498452,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7b2489001r9467PbuIU2yMj","messageID":"msg_08b7b169c001HIlIWTQKcLvz48","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"3bee22f5686eafd8b79547d1e04c778032d46570","type":"step-start"}} +{"type":"tool_use","timestamp":1789046533812,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"apply_patch","callID":"call_QdSrZbDZ7fZOxqDTwWDuhsZg","state":{"status":"completed","input":{"patchText":"*** Begin Patch\n*** Update File: /home/alex/sots-re/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n@@\n-OUT = ROOT / \"verify/results/research-completion-abi\" / SESSION\n+OUT = ROOT / \"verify/results/research-completion-abi\" / (SESSION + \"-repair1\")\n@@\n comparisons = {\n- \"9913_is_truncated_prefix\": rows(streams[\"nested-copy-stop-9913\"]) == rows(streams[\"nested-copy-stop-9915\"])[:-1],\n+ \"9913_is_truncated_terminal\": (rows(streams[\"nested-copy-stop-9913\"])[:-1] == rows(streams[\"nested-copy-stop-9915\"])[:-1]\n+ and \"779912:\" in rows(streams[\"nested-copy-stop-9913\"])[-1].replace(\" \", \"\")\n+ and \"c2\" in rows(streams[\"nested-copy-stop-9913\"])[-1].lower()\n+ and \"c2 04 00\" not in rows(streams[\"nested-copy-stop-9913\"])[-1].lower()),\n@@\n- \"a20_is_truncated_prefix\": rows(streams[\"nested-copy-stop-a20\"]) == rows(streams[\"nested-copy-stop-a21\"])[:-1],\n+ \"a20_is_truncated_terminal\": (rows(streams[\"nested-copy-stop-a20\"])[:-1] == rows(streams[\"nested-copy-stop-a21\"])[:-1]\n+ and \"779a1f:\" in rows(streams[\"nested-copy-stop-a20\"])[-1].replace(\" \", \"\")\n+ and \"74\" in rows(streams[\"nested-copy-stop-a20\"])[-1].lower()\n+ and \"74 10\" not in rows(streams[\"nested-copy-stop-a20\"])[-1].lower()),\n*** End Patch"},"output":"Success. Updated the following files:\nM verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py","metadata":{"diff":"Index: /home/alex/sots-re/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n===================================================================\n--- /home/alex/sots-re/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n+++ /home/alex/sots-re/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n@@ -9,9 +9,9 @@\n from datetime import datetime, timezone\n \n ROOT = pathlib.Path(\"/home/alex/sots-re\")\n SESSION = \"run-35e59053176da458d8b46fea\"\n-OUT = ROOT / \"verify/results/research-completion-abi\" / SESSION\n+OUT = ROOT / \"verify/results/research-completion-abi\" / (SESSION + \"-repair1\")\n ENGINE = pathlib.Path(\"/tmp/opencode/sots-final-research-engine\")\n RE = pathlib.Path(\"/tmp/opencode/sots-final-research-re\")\n CAMPAIGN = ROOT / \"tools/campaign.py\"\n EXE = ROOT / \"dumps/sots.exe\"\n@@ -140,12 +140,18 @@\n direct[name] = {\"va\": f\"0x{address:08x}\", \"bytes\": data.hex(), \"section\": section,\n \"file_offset\": file_offset}\n \n comparisons = {\n- \"9913_is_truncated_prefix\": rows(streams[\"nested-copy-stop-9913\"]) == rows(streams[\"nested-copy-stop-9915\"])[:-1],\n+ \"9913_is_truncated_terminal\": (rows(streams[\"nested-copy-stop-9913\"])[:-1] == rows(streams[\"nested-copy-stop-9915\"])[:-1]\n+ and \"779912:\" in rows(streams[\"nested-copy-stop-9913\"])[-1].replace(\" \", \"\")\n+ and \"c2\" in rows(streams[\"nested-copy-stop-9913\"])[-1].lower()\n+ and \"c2 04 00\" not in rows(streams[\"nested-copy-stop-9913\"])[-1].lower()),\n \"9915_terminal_ret4\": \"c2 04 00\" in rows(streams[\"nested-copy-stop-9915\"])[-1].lower(),\n \"authority_contains_ret4\": any(\"c2 04 00\" in x.lower() for x in rows(streams[\"nested-copy-authority\"])),\n- \"a20_is_truncated_prefix\": rows(streams[\"nested-copy-stop-a20\"]) == rows(streams[\"nested-copy-stop-a21\"])[:-1],\n+ \"a20_is_truncated_terminal\": (rows(streams[\"nested-copy-stop-a20\"])[:-1] == rows(streams[\"nested-copy-stop-a21\"])[:-1]\n+ and \"779a1f:\" in rows(streams[\"nested-copy-stop-a20\"])[-1].replace(\" \", \"\")\n+ and \"74\" in rows(streams[\"nested-copy-stop-a20\"])[-1].lower()\n+ and \"74 10\" not in rows(streams[\"nested-copy-stop-a20\"])[-1].lower()),\n \"a21_adds_complete_je\": \"74 10\" in rows(streams[\"nested-copy-stop-a21\"])[-1].lower(),\n \"a23_adds_complete_mov\": \"8b cf\" in rows(streams[\"nested-copy-stop-a23\"])[-1].lower(),\n \"a28_adds_complete_call\": \"e8 28 6a ff ff\" in rows(streams[\"nested-copy-stop-a28\"])[-1].lower(),\n \"direct_ret4\": direct[\"ret4\"][\"bytes\"] == \"c20400\",\n\n","files":[{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py","relativePath":"verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py","type":"update","patch":"Index: /home/alex/sots-re/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n===================================================================\n--- /home/alex/sots-re/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n+++ /home/alex/sots-re/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n@@ -9,9 +9,9 @@\n from datetime import datetime, timezone\n \n ROOT = pathlib.Path(\"/home/alex/sots-re\")\n SESSION = \"run-35e59053176da458d8b46fea\"\n-OUT = ROOT / \"verify/results/research-completion-abi\" / SESSION\n+OUT = ROOT / \"verify/results/research-completion-abi\" / (SESSION + \"-repair1\")\n ENGINE = pathlib.Path(\"/tmp/opencode/sots-final-research-engine\")\n RE = pathlib.Path(\"/tmp/opencode/sots-final-research-re\")\n CAMPAIGN = ROOT / \"tools/campaign.py\"\n EXE = ROOT / \"dumps/sots.exe\"\n@@ -140,12 +140,18 @@\n direct[name] = {\"va\": f\"0x{address:08x}\", \"bytes\": data.hex(), \"section\": section,\n \"file_offset\": file_offset}\n \n comparisons = {\n- \"9913_is_truncated_prefix\": rows(streams[\"nested-copy-stop-9913\"]) == rows(streams[\"nested-copy-stop-9915\"])[:-1],\n+ \"9913_is_truncated_terminal\": (rows(streams[\"nested-copy-stop-9913\"])[:-1] == rows(streams[\"nested-copy-stop-9915\"])[:-1]\n+ and \"779912:\" in rows(streams[\"nested-copy-stop-9913\"])[-1].replace(\" \", \"\")\n+ and \"c2\" in rows(streams[\"nested-copy-stop-9913\"])[-1].lower()\n+ and \"c2 04 00\" not in rows(streams[\"nested-copy-stop-9913\"])[-1].lower()),\n \"9915_terminal_ret4\": \"c2 04 00\" in rows(streams[\"nested-copy-stop-9915\"])[-1].lower(),\n \"authority_contains_ret4\": any(\"c2 04 00\" in x.lower() for x in rows(streams[\"nested-copy-authority\"])),\n- \"a20_is_truncated_prefix\": rows(streams[\"nested-copy-stop-a20\"]) == rows(streams[\"nested-copy-stop-a21\"])[:-1],\n+ \"a20_is_truncated_terminal\": (rows(streams[\"nested-copy-stop-a20\"])[:-1] == rows(streams[\"nested-copy-stop-a21\"])[:-1]\n+ and \"779a1f:\" in rows(streams[\"nested-copy-stop-a20\"])[-1].replace(\" \", \"\")\n+ and \"74\" in rows(streams[\"nested-copy-stop-a20\"])[-1].lower()\n+ and \"74 10\" not in rows(streams[\"nested-copy-stop-a20\"])[-1].lower()),\n \"a21_adds_complete_je\": \"74 10\" in rows(streams[\"nested-copy-stop-a21\"])[-1].lower(),\n \"a23_adds_complete_mov\": \"8b cf\" in rows(streams[\"nested-copy-stop-a23\"])[-1].lower(),\n \"a28_adds_complete_call\": \"e8 28 6a ff ff\" in rows(streams[\"nested-copy-stop-a28\"])[-1].lower(),\n \"direct_ret4\": direct[\"ret4\"][\"bytes\"] == \"c20400\",\n","additions":9,"deletions":3}],"diagnostics":{},"truncated":false},"title":"Success. Updated the following files:\nM verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py","time":{"start":1789046533798,"end":1789046533810}},"metadata":{"openai":{"itemId":"fc_08b34a03a10052b2016aa2aeebcfa887d19e6a6a008496811c"}},"id":"prt_08b7b49bf0011XYVHs5EERb03X","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7b169c001HIlIWTQKcLvz48"}} +{"type":"step_finish","timestamp":1789046534028,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7baf8900110GqgdNTiABX9Y","reason":"tool-calls","snapshot":"44313a156e72fc5d143d1f63a52731d373c52a48","messageID":"msg_08b7b169c001HIlIWTQKcLvz48","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":76612,"input":1887,"output":471,"reasoning":270,"cache":{"write":0,"read":73984}},"cost":0}} +{"type":"step_start","timestamp":1789046537673,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7bbdc6001oHWqjvizZnVJ1T","messageID":"msg_08b7bafbd001jzOzLe20yzTx1y","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"03ee319238a534af9ef4ed7813cd8cc7b6eb5e65","type":"step-start"}} +{"type":"tool_use","timestamp":1789046549121,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_1MsCKSroCpBizhOxAaOx6C10","state":{"status":"completed","input":{"command":"python3 -m py_compile verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py && sha256sum verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json","workdir":"/home/alex/sots-re"},"output":"4f75d389312bf4ae4c72964728c34b22c6936d716a6fe0463bbc3e035c548faa verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n55fcc92360c26b743389059c54bd69d5a1ac8ca02e3d2e818b9283b3630d83ae verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json\n","metadata":{"output":"4f75d389312bf4ae4c72964728c34b22c6936d716a6fe0463bbc3e035c548faa verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n55fcc92360c26b743389059c54bd69d5a1ac8ca02e3d2e818b9283b3630d83ae verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json\n","exit":0,"truncated":false},"title":"python3 -m py_compile verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py && sha256sum verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json","time":{"start":1789046549083,"end":1789046549115}},"metadata":{"openai":{"itemId":"fc_012cfca6270ec048016aa2af14976c87d1a95a79b469a94069"}},"id":"prt_08b7bea1d001XKrZ06mOBcfnfc","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7bafbd001jzOzLe20yzTx1y"}} +{"type":"step_finish","timestamp":1789046549329,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7beb4e001RmcSyatWWMaQEO","reason":"tool-calls","snapshot":"49fa88b228a8a41f17df5d6715c7d642e03d2af4","messageID":"msg_08b7bafbd001jzOzLe20yzTx1y","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":76788,"input":880,"output":115,"reasoning":17,"cache":{"write":0,"read":75776}},"cost":0}} +{"type":"step_start","timestamp":1789046552028,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7bf5d5001P8DsuvZXZsCNWH","messageID":"msg_08b7beb7e001LK7iliS603Fux8","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"6c71f1537245312651857d91db16b046fda76b2e","type":"step-start"}} +{"type":"tool_use","timestamp":1789046564904,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_Vthn8FdbA8N1AENLc8F0H6th","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-abi-analyst --role analyst --model openai/gpt-5.6-sol --session run-35e59053176da458d8b46fea --summary 'PRE-REPAIR-EXPERIMENT CHECKPOINT. OBSERVATION: first 27-command capture executed with all commands zero, nonempty stdout, empty stderr, stable source, aligned/direct-byte controls passing, but manifest failed two recipe comparisons. Raw bad/good streams show exactly the predeclared instrument behavior: bad 0x779913 retains a truncated c2 terminal row while good 0x779915 replaces it with c2 04 00; bad 0x779a20 retains truncated 74 while good 0x779a21 replaces it with 74 10. DECISION: this is an ordinary predicate bug, not contradictory binary/ABI evidence or a surprise. Preserve failed package and manifest. Recipe now checks equal preceding rows plus explicit truncated terminal replacement and writes a distinct fail-if-exists repair1 directory. No claim is promoted from failed package. No lab/resources/leases.' --artifact verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json --artifact verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py --artifact verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md --next-action 'Execute repaired recipe exactly: python3 verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py run-35e59053176da458d8b46fea'","workdir":"/home/alex/sots-re"},"output":"{\n \"actor\": \"research-abi-analyst\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json\",\n \"sha256\": \"55fcc92360c26b743389059c54bd69d5a1ac8ca02e3d2e818b9283b3630d83ae\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\",\n \"sha256\": \"4f75d389312bf4ae4c72964728c34b22c6936d716a6fe0463bbc3e035c548faa\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\",\n \"sha256\": \"57d20b2a42fe2db5c1feff7c7839532a505e60305cbfeec82c40969ae73cabcf\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"039880ba52a96f1378dcf974\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Execute repaired recipe exactly: python3 verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py run-35e59053176da458d8b46fea\",\n \"role\": \"analyst\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-35e59053176da458d8b46fea\",\n \"summary\": \"PRE-REPAIR-EXPERIMENT CHECKPOINT. OBSERVATION: first 27-command capture executed with all commands zero, nonempty stdout, empty stderr, stable source, aligned/direct-byte controls passing, but manifest failed two recipe comparisons. Raw bad/good streams show exactly the predeclared instrument behavior: bad 0x779913 retains a truncated c2 terminal row while good 0x779915 replaces it with c2 04 00; bad 0x779a20 retains truncated 74 while good 0x779a21 replaces it with 74 10. DECISION: this is an ordinary predicate bug, not contradictory binary/ABI evidence or a surprise. Preserve failed package and manifest. Recipe now checks equal preceding rows plus explicit truncated terminal replacement and writes a distinct fail-if-exists repair1 directory. No claim is promoted from failed package. No lab/resources/leases.\",\n \"timestamp\": \"2026-09-10T13:22:44.882162+00:00\"\n}\n","metadata":{"output":"{\n \"actor\": \"research-abi-analyst\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json\",\n \"sha256\": \"55fcc92360c26b743389059c54bd69d5a1ac8ca02e3d2e818b9283b3630d83ae\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\",\n \"sha256\": \"4f75d389312bf4ae4c72964728c34b22c6936d716a6fe0463bbc3e035c548faa\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\",\n \"sha256\": \"57d20b2a42fe2db5c1feff7c7839532a505e60305cbfeec82c40969ae73cabcf\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"039880ba52a96f1378dcf974\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Execute repaired recipe exactly: python3 verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py run-35e59053176da458d8b46fea\",\n \"role\": \"analyst\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-35e59053176da458d8b46fea\",\n \"summary\": \"PRE-REPAIR-EXPERIMENT CHECKPOINT. OBSERVATION: first 27-command capture executed with all commands zero, nonempty stdout, empty stderr, stable source, aligned/direct-byte controls passing, but manifest failed two recipe comparisons. Raw bad/good streams show exactly the predeclared instrument behavior: bad 0x779913 retains a truncated c2 terminal row while good 0x779915 replaces it with c2 04 00; bad 0x779a20 retains truncated 74 while good 0x779a21 replaces it with 74 10. DECISION: this is an ordinary predicate bug, not contradictory binary/ABI evidence or a surprise. Preserve failed package and manifest. Recipe now checks equal preceding rows plus explicit truncated terminal replacement and writes a distinct fail-if-exists repair1 directory. No claim is promoted from failed package. No lab/resources/leases.\",\n \"timestamp\": \"2026-09-10T13:22:44.882162+00:00\"\n}\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-abi-analyst --role analyst --model openai/gpt-5.6-sol --session run-35e59053176da458d8b46fea --summary 'PRE-REPAIR-EXPERIMENT CHECKPOINT. OBSERVATION: first 27-command capture executed with all commands zero, nonempty stdout, empty stderr, stable source, aligned/direct-byte controls passing, but manifest failed two recipe comparisons. Raw bad/good streams show exactly the predeclared instrument behavior: bad 0x779913 retains a truncated c2 terminal row while good 0x779915 replaces it with c2 04 00; bad 0x779a20 retains truncated 74 while good 0x779a21 replaces it with 74 10. DECISION: this is an ordinary predicate bug, not contradictory binary/ABI evidence or a surprise. Preserve failed package and manifest. Recipe now checks equal preceding rows plus explicit truncated terminal replacement and writes a distinct fail-if-exists repair1 directory. No claim is promoted from failed package. No lab/resources/leases.' --artifact verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json --artifact verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py --artifact verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md --next-action 'Execute repaired recipe exactly: python3 verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py run-35e59053176da458d8b46fea'","time":{"start":1789046564840,"end":1789046564903}},"metadata":{"openai":{"itemId":"fc_00ce5ceecab7a3b7016aa2af17edb887d1914ddd844f22fdc4"}},"id":"prt_08b7bf5db0010zuKAKrL3h90J6","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7beb7e001LK7iliS603Fux8"}} +{"type":"step_finish","timestamp":1789046564983,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7c2874001U7pZdnLnMDQtCi","reason":"tool-calls","snapshot":"d0125f53edaec2c6c607f838d9bd7ae4f8031c21","messageID":"msg_08b7beb7e001LK7iliS603Fux8","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":77331,"input":381,"output":406,"reasoning":0,"cache":{"write":0,"read":76544}},"cost":0}} +{"type":"step_start","timestamp":1789046567335,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7c31a1001IwS4G08iI8dQ9t","messageID":"msg_08b7c28a0001tYN2Kp6495kjv8","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"65ce6e2cf9d6a98bd14c25de694d37f51a068db9","type":"step-start"}} +{"type":"tool_use","timestamp":1789046575671,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_oOjOA5GgLhNEZtxqAc6uOD9u","state":{"status":"completed","input":{"command":"python3 verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py run-35e59053176da458d8b46fea","workdir":"/home/alex/sots-re","timeout":120000},"output":"{\n \"output\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1\",\n \"commands\": 27,\n \"failed\": []\n}\n","metadata":{"output":"{\n \"output\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1\",\n \"commands\": 27,\n \"failed\": []\n}\n","exit":0,"truncated":false},"title":"python3 verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py run-35e59053176da458d8b46fea","time":{"start":1789046575186,"end":1789046575669}},"metadata":{"openai":{"itemId":"fc_04e2fd4025219925016aa2af2efa7887d18b6f47bf37762c6f"}},"id":"prt_08b7c5030001ywaHgXqZ0Z8CtE","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7c28a0001tYN2Kp6495kjv8"}} +{"type":"step_finish","timestamp":1789046575722,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7c52660016AD6yS4JwNn7fq","reason":"tool-calls","snapshot":"c7cb311239222ef06ff777d3b477a780fb6d5307","messageID":"msg_08b7c28a0001tYN2Kp6495kjv8","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":78072,"input":1190,"output":76,"reasoning":6,"cache":{"write":0,"read":76800}},"cost":0}} +{"type":"step_start","timestamp":1789046580232,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7c6400001pjZ1GtbjZIZKz8","messageID":"msg_08b7c52980015D4KPThbOagYBg","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"e4b972ac507d9b3f712ac73ccf9eede3eef7de5c","type":"step-start"}} +{"type":"tool_use","timestamp":1789046602956,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"grep","callID":"call_FORASQ2rn0df2pSNrAV8FUyR","state":{"status":"completed","input":{"path":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1","pattern":"0x2c|0x74|0x18|924fb6|924faa","include":"*.stdout.txt"},"output":"Found 89 matches\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-get-create.stdout.txt:\n Line 14: 885391:\t83 ec 18 \tsub esp,0x18\n\n Line 43: 8853da:\t83 c2 18 \tadd edx,0x18\n\n Line 61: 885406:\t89 5d e8 \tmov DWORD PTR [ebp-0x18],ebx\n\n Line 74: 885433:\t83 e8 18 \tsub eax,0x18\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-append.stdout.txt:\n Line 33: 7b735b:\t6b ff 2c \timul edi,edi,0x2c\n\n Line 41: 7b736e:\t83 46 04 2c \tadd DWORD PTR [esi+0x4],0x2c\n\n Line 58: 7b7397:\t83 46 04 2c \tadd DWORD PTR [esi+0x4],0x2c\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-append.stdout.txt:\n Line 77: 884d78:\t83 47 04 18 \tadd DWORD PTR [edi+0x4],0x18\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-dtor.stdout.txt:\n Line 25: 6295aa:\t83 c6 74 \tadd esi,0x74\n\n Line 30: 6295b4:\te8 f1 b9 2f 00 \tcall 0x924faa\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-dtor.stdout.txt:\n Line 15: 61ae9e:\te8 07 a1 30 00 \tcall 0x924faa\n\n Line 25: 61aebf:\te8 e6 a0 30 00 \tcall 0x924faa\n\n Line 34: 61aede:\te8 c7 a0 30 00 \tcall 0x924faa\n\n Line 36: 61aee6:\t89 5e 18 \tmov DWORD PTR [esi+0x18],ebx\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/string-assign.stdout.txt:\n Line 55: 424a1a:\te8 97 05 50 00 \tcall 0x924fb6\n\n Line 61: 424a2b:\t8d 4d e8 \tlea ecx,[ebp-0x18]\n\n Line 64: 424a32:\tc7 45 e8 00 00 00 00 \tmov DWORD PTR [ebp-0x18],0x0\n\n Line 77: 424a62:\t83 c1 18 \tadd ecx,0x18\n\n Line 103: 424aa7:\te8 fe 04 50 00 \tcall 0x924faa\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-growth.stdout.txt:\n Line 59: 7b3572:\t89 55 e8 \tmov DWORD PTR [ebp-0x18],edx\n\n Line 66: 7b3586:\t83 c4 18 \tadd esp,0x18\n\n Line 72: 7b3598:\t3b 5d e8 \tcmp ebx,DWORD PTR [ebp-0x18]\n\n Line 80: 7b35aa:\t83 c3 2c \tadd ebx,0x2c\n\n Line 81: 7b35ad:\t3b 5d e8 \tcmp ebx,DWORD PTR [ebp-0x18]\n\n Line 85: 7b35b5:\te8 f0 19 17 00 \tcall 0x924faa\n\n Line 90: 7b35c8:\t6b db 2c \timul ebx,ebx,0x2c\n\n Line 91: 7b35cb:\t6b ff 2c \timul edi,edi,0x2c\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/import-thunks.stdout.txt:\n Line 7: 00924faa <.text+0x523faa>:\n\n Line 8: 924faa:\tff 25 c8 d1 9d 00 \tjmp DWORD PTR ds:0x9dd1c8\n\n Line 10: 924fb6:\tff 25 d0 d1 9d 00 \tjmp DWORD PTR ds:0x9dd1d0\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a20.stdout.txt:\n Line 52: 7798d0:\t6b ff 74 \timul edi,edi,0x74\n\n Line 125: 77998f:\tc7 45 e8 0f 00 00 00 \tmov DWORD PTR [ebp-0x18],0xf\n\n Line 127: 77999d:\tc6 45 d4 00 \tmov BYTE PTR [ebp-0x2c],0x0\n\n Line 128: 7799a1:\t8d 4d d4 \tlea ecx,[ebp-0x2c]\n\n Line 133: 7799b2:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n\n Line 135: 7799b8:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n\n Line 137: 7799be:\t8d 45 d4 \tlea eax,[ebp-0x2c]\n\n Line 148: 7799e0:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n\n Line 150: 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n\n Line 152: 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-append.stdout.txt:\n Line 44: 86c5dd:\t6b f6 74 \timul esi,esi,0x74\n\n Line 63: 86c619:\t83 47 04 74 \tadd DWORD PTR [edi+0x4],0x74\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/dedup.stdout.txt:\n Line 102: 825e2e:\t83 45 08 74 \tadd DWORD PTR [ebp+0x8],0x74\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-9913.stdout.txt:\n Line 52: 7798d0:\t6b ff 74 \timul edi,edi,0x74\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-virtual-dtor.stdout.txt:\n Line 30: 62e165:\te8 40 6e 2f 00 \tcall 0x924faa\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a21.stdout.txt:\n Line 52: 7798d0:\t6b ff 74 \timul edi,edi,0x74\n\n Line 125: 77998f:\tc7 45 e8 0f 00 00 00 \tmov DWORD PTR [ebp-0x18],0xf\n\n Line 127: 77999d:\tc6 45 d4 00 \tmov BYTE PTR [ebp-0x2c],0x0\n\n Line 128: 7799a1:\t8d 4d d4 \tlea ecx,[ebp-0x2c]\n\n Line 133: 7799b2:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n\n Line 135: 7799b8:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n\n Line 137: 7799be:\t8d 45 d4 \tlea eax,[ebp-0x2c]\n\n Line 148: 7799e0:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n\n Line 150: 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n\n Line 152: 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a23.stdout.txt:\n Line 52: 7798d0:\t6b ff 74 \timul edi,edi,0x74\n\n Line 125: 77998f:\tc7 45 e8 0f 00 00 00 \tmov DWORD PTR [ebp-0x18],0xf\n\n Line 127: 77999d:\tc6 45 d4 00 \tmov BYTE PTR [ebp-0x2c],0x0\n\n Line 128: 7799a1:\t8d 4d d4 \tlea ecx,[ebp-0x2c]\n\n Line 133: 7799b2:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n\n Line 135: 7799b8:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n\n Line 137: 7799be:\t8d 45 d4 \tlea eax,[ebp-0x2c]\n\n Line 148: 7799e0:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n\n Line 150: 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n\n Line 152: 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-alloc.stdout.txt:\n Line 17: 57e5a7:\t6b c9 2c \timul ecx,ecx,0x2c\n\n Line 19: 57e5ab:\te8 06 6a 3a 00 \tcall 0x924fb6\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-growth.stdout.txt:\n Line 81: 88424d:\t89 5d e8 \tmov DWORD PTR [ebp-0x18],ebx\n\n Line 125: 8842ce:\t8b 4d e8 \tmov ecx,DWORD PTR [ebp-0x18]\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/prune.stdout.txt:\n Line 27: 879ed7:\t83 c0 18 \tadd eax,0x18\n\n Line 48: 879f0b:\t83 c7 18 \tadd edi,0x18\n\n Line 49: 879f0e:\t83 c6 18 \tadd esi,0x18\n\n Line 62: 879f2b:\t83 c7 18 \tadd edi,0x18\n\n Line 96: 879f62:\te8 43 b0 0a 00 \tcall 0x924faa\n\n Line 119: 879f83:\t8b 55 18 \tmov edx,DWORD PTR [ebp+0x18]\n\n Line 135: 879fae:\t88 4e 18 \tmov BYTE PTR [esi+0x18],cl\n\n Line 140: 879fbd:\t8b 45 2c \tmov eax,DWORD PTR [ebp+0x2c]\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-authority.stdout.txt:\n Line 52: 7798d0:\t6b ff 74 \timul edi,edi,0x74\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-9915.stdout.txt:\n Line 52: 7798d0:\t6b ff 74 \timul edi,edi,0x74\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a28.stdout.txt:\n Line 52: 7798d0:\t6b ff 74 \timul edi,edi,0x74\n\n Line 125: 77998f:\tc7 45 e8 0f 00 00 00 \tmov DWORD PTR [ebp-0x18],0xf\n\n Line 127: 77999d:\tc6 45 d4 00 \tmov BYTE PTR [ebp-0x2c],0x0\n\n Line 128: 7799a1:\t8d 4d d4 \tlea ecx,[ebp-0x2c]\n\n Line 133: 7799b2:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n\n Line 135: 7799b8:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n\n Line 137: 7799be:\t8d 45 d4 \tlea eax,[ebp-0x2c]\n\n Line 148: 7799e0:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n\n Line 150: 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n\n Line 152: 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n","metadata":{"matches":89,"truncated":false},"title":"0x2c|0x74|0x18|924fb6|924faa","time":{"start":1789046602938,"end":1789046602955}},"metadata":{"openai":{"itemId":"fc_09fbedc643e24442016aa2af4a8b9487d1b0923709de09d690"}},"id":"prt_08b7cbc8a001eopeU0wevvrxV1","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7c52980015D4KPThbOagYBg"}} +{"type":"tool_use","timestamp":1789046602989,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"grep","callID":"call_2wXaO1W5czmAmN4RKqRphNUB","state":{"status":"completed","input":{"path":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1","pattern":"call\\s+0x7693f0|call\\s+0x779850|call\\s+0x629580|call\\s+0x46f8c0","include":"*.stdout.txt"},"output":"Found 10 matches\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-get-create.stdout.txt:\n Line 69: 885422:\te8 59 41 da ff \tcall 0x629580\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-append.stdout.txt:\n Line 76: 884d73:\te8 d8 4a ef ff \tcall 0x779850\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/dedup.stdout.txt:\n Line 95: 825e19:\te8 a2 9a c4 ff \tcall 0x46f8c0\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-virtual-dtor.stdout.txt:\n Line 25: 62e153:\te8 28 b4 ff ff \tcall 0x629580\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a20.stdout.txt:\n Line 81: 779918:\te8 63 fc ea ff \tcall 0x629580\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-append.stdout.txt:\n Line 62: 86c614:\te8 d7 cd ef ff \tcall 0x7693f0\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a23.stdout.txt:\n Line 81: 779918:\te8 63 fc ea ff \tcall 0x629580\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a21.stdout.txt:\n Line 81: 779918:\te8 63 fc ea ff \tcall 0x629580\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-authority.stdout.txt:\n Line 81: 779918:\te8 63 fc ea ff \tcall 0x629580\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a28.stdout.txt:\n Line 81: 779918:\te8 63 fc ea ff \tcall 0x629580\n","metadata":{"matches":10,"truncated":false},"title":"call\\s+0x7693f0|call\\s+0x779850|call\\s+0x629580|call\\s+0x46f8c0","time":{"start":1789046602980,"end":1789046602988}},"metadata":{"openai":{"itemId":"fc_09fbedc643e24442016aa2af4a8ba887d18a7724f8b662f5a9"}},"id":"prt_08b7cbcbc001RTpmcOpjQcLKHV","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7c52980015D4KPThbOagYBg"}} +{"type":"tool_use","timestamp":1789046603069,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"grep","callID":"call_IGA8S4MYCmF1ACh0BqCvLi1u","state":{"status":"completed","input":{"path":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1","pattern":"\\[ebp-0x20\\]|\\[.*\\+0x4\\]|\\[.*\\+0x10\\]","include":"turn-get-create.stdout.txt"},"output":"Found 3 matches\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-get-create.stdout.txt:\n Line 25: 8853ad:\t2b 56 04 \tsub edx,DWORD PTR [esi+0x4]\n\n Line 26: 8853b0:\t8d 4e 04 \tlea ecx,[esi+0x4]\n\n Line 40: 8853d3:\t39 5a 04 \tcmp DWORD PTR [edx+0x4],ebx\n","metadata":{"matches":3,"truncated":false},"title":"\\[ebp-0x20\\]|\\[.*\\+0x4\\]|\\[.*\\+0x10\\]","time":{"start":1789046603046,"end":1789046603063}},"metadata":{"openai":{"itemId":"fc_09fbedc643e24442016aa2af4a8bb887d1917eb703085ebafc"}},"id":"prt_08b7cbd19001Qt5I0EwlvObyEY","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7c52980015D4KPThbOagYBg"}} +{"type":"tool_use","timestamp":1789046603091,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"grep","callID":"call_GWaOZFITfC0bz9m7NoNHJ5ge","state":{"status":"completed","input":{"path":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1","pattern":"ret\\s+0x4|ret\\s+0x8|ret\\s*$","include":"*.stdout.txt"},"output":"Found 37 matches\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-get-create.stdout.txt:\n Line 58: 8853f9:\tc2 04 00 \tret 0x4\n\n Line 83: 885447:\tc2 04 00 \tret 0x4\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-growth.stdout.txt:\n Line 60: 86957c:\tc2 04 00 \tret 0x4\n\n Line 100: 8695da:\tc2 04 00 \tret 0x4\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-append.stdout.txt:\n Line 85: 884d8c:\tc2 04 00 \tret 0x4\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/string-assign.stdout.txt:\n Line 82: 424a76:\tc3 \tret \n\n Line 122: 424ad9:\tc2 08 00 \tret 0x8\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-dtor.stdout.txt:\n Line 39: 6295c9:\tc3 \tret \n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-copy.stdout.txt:\n Line 55: 79a1d8:\tc3 \tret \n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/dedup.stdout.txt:\n Line 22: 825d56:\tc2 08 00 \tret 0x8\n\n Line 120: 825e59:\tc2 08 00 \tret 0x8\n\n Line 127: 825e64:\tc2 08 00 \tret 0x8\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-dtor.stdout.txt:\n Line 42: 61aefb:\tc3 \tret \n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a20.stdout.txt:\n Line 79: 779912:\tc2 04 00 \tret 0x4\n\n Line 163: 779a0b:\tc3 \tret \n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-ctor.stdout.txt:\n Line 68: 84eef3:\tc3 \tret \n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-9913.stdout.txt:\n Line 79: 779912:\tc2 \tret 0x4\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-alloc.stdout.txt:\n Line 35: 57e5e3:\tc2 04 00 \tret 0x4\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-ctor.stdout.txt:\n Line 46: 85630c:\tc3 \tret \n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a23.stdout.txt:\n Line 79: 779912:\tc2 04 00 \tret 0x4\n\n Line 163: 779a0b:\tc3 \tret \n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/prune.stdout.txt:\n Line 72: 879f3e:\tc2 04 00 \tret 0x4\n\n Line 101: 879f6e:\tc2 04 00 \tret 0x4\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-copy.stdout.txt:\n Line 81: 7694bf:\tc2 04 00 \tret 0x4\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/string-not-equal.stdout.txt:\n Line 26: 46f8e8:\tc3 \tret \n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-growth.stdout.txt:\n Line 56: 884216:\tc2 04 00 \tret 0x4\n\n Line 122: 8842c7:\tc2 08 00 \tret 0x8\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-growth.stdout.txt:\n Line 106: 7b35ee:\tc2 04 00 \tret 0x4\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-append.stdout.txt:\n Line 45: 7b7375:\tc2 04 00 \tret 0x4\n\n Line 62: 7b739e:\tc2 04 00 \tret 0x4\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-authority.stdout.txt:\n Line 79: 779912:\tc2 04 00 \tret 0x4\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-append.stdout.txt:\n Line 71: 86c62d:\tc2 04 00 \tret 0x4\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a21.stdout.txt:\n Line 79: 779912:\tc2 04 00 \tret 0x4\n\n Line 163: 779a0b:\tc3 \tret \n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a28.stdout.txt:\n Line 79: 779912:\tc2 04 00 \tret 0x4\n\n Line 163: 779a0b:\tc3 \tret \n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-9915.stdout.txt:\n Line 79: 779912:\tc2 04 00 \tret 0x4\n","metadata":{"matches":37,"truncated":false},"title":"ret\\s+0x4|ret\\s+0x8|ret\\s*$","time":{"start":1789046603075,"end":1789046603083}},"metadata":{"openai":{"itemId":"fc_09fbedc643e24442016aa2af4a8bc087d18295990504d15b50"}},"id":"prt_08b7cbd27001oX30gNVrMDbiaK","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7c52980015D4KPThbOagYBg"}} +{"type":"tool_use","timestamp":1789046603109,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_7Fjb4UQ2G3qp4gm2QjnE96P3","state":{"status":"completed","input":{"command":"sha256sum verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json && python3 -c 'import json; p=\"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json\"; d=json.load(open(p)); print(len(d[\"commands\"]),len(d[\"failed\"]),d[\"source_before\"][\"value\"]==d[\"source_after\"][\"value\"]); print(sum(x[\"stdout\"][\"bytes\"] for x in d[\"commands\"]),sum(x[\"stderr\"][\"bytes\"] for x in d[\"commands\"]))'","workdir":"/home/alex/sots-re"},"output":"082207ef0c1563c59828fc15f48c4d3b2506d6af20847be0e7efd774bfb82146 verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json\n27 0 True\n118734 0\n","metadata":{"output":"082207ef0c1563c59828fc15f48c4d3b2506d6af20847be0e7efd774bfb82146 verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json\n27 0 True\n118734 0\n","exit":0,"truncated":false},"title":"sha256sum verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json && python3 -c 'import json; p=\"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json\"; d=json.load(open(p)); print(len(d[\"commands\"]),len(d[\"failed\"]),d[\"source_before\"][\"value\"]==d[\"source_after\"][\"value\"]); print(sum(x[\"stdout\"][\"bytes\"] for x in d[\"commands\"]),sum(x[\"stderr\"][\"bytes\"] for x in d[\"commands\"]))'","time":{"start":1789046603087,"end":1789046603108}},"metadata":{"openai":{"itemId":"fc_09fbedc643e24442016aa2af4a8bc887d1b9f3a98c6abdaae2"}},"id":"prt_08b7cbd44001GyUcn9OOaeRoFw","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7c52980015D4KPThbOagYBg"}} +{"type":"step_finish","timestamp":1789046603252,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7cbdf2001LGMqq9Mf3AUlQD","reason":"tool-calls","snapshot":"98c0e20842f16d3104019fc46d8f9860af4cde01","messageID":"msg_08b7c52980015D4KPThbOagYBg","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":78693,"input":304,"output":532,"reasoning":33,"cache":{"write":0,"read":77824}},"cost":0}} +{"type":"step_start","timestamp":1789046605777,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7cc7cd001AIM9b7wqPnCRzi","messageID":"msg_08b7cbe2c001DCqNXToYZHfMEr","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"e4e108c7a3805cb38eb081f254e0287aed5dce67","type":"step-start"}} +{"type":"tool_use","timestamp":1789046617104,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_2nZ89MSSEIkWxHQf1eEvFRUT","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-get-create.stdout.txt","offset":1,"limit":90},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-get-create.stdout.txt\nfile\n\n1: \n2: /home/alex/sots-re/dumps/sots.exe: file format pei-i386\n3: \n4: \n5: Disassembly of section .text:\n6: \n7: 00885380 <.text+0x484380>:\n8: 885380:\t55 \tpush ebp\n9: 885381:\t8b ec \tmov ebp,esp\n10: 885383:\t6a ff \tpush 0xffffffff\n11: 885385:\t68 30 af 99 00 \tpush 0x99af30\n12: 88538a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n13: 885390:\t50 \tpush eax\n14: 885391:\t83 ec 18 \tsub esp,0x18\n15: 885394:\t53 \tpush ebx\n16: 885395:\t56 \tpush esi\n17: 885396:\t57 \tpush edi\n18: 885397:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n19: 88539c:\t33 c5 \txor eax,ebp\n20: 88539e:\t50 \tpush eax\n21: 88539f:\t8d 45 f4 \tlea eax,[ebp-0xc]\n22: 8853a2:\t64 a3 00 00 00 00 \tmov fs:0x0,eax\n23: 8853a8:\t8b f1 \tmov esi,ecx\n24: 8853aa:\t8b 56 08 \tmov edx,DWORD PTR [esi+0x8]\n25: 8853ad:\t2b 56 04 \tsub edx,DWORD PTR [esi+0x4]\n26: 8853b0:\t8d 4e 04 \tlea ecx,[esi+0x4]\n27: 8853b3:\tb8 ab aa aa 2a \tmov eax,0x2aaaaaab\n28: 8853b8:\tf7 ea \timul edx\n29: 8853ba:\tc1 fa 02 \tsar edx,0x2\n30: 8853bd:\t8b c2 \tmov eax,edx\n31: 8853bf:\tc1 e8 1f \tshr eax,0x1f\n32: 8853c2:\t33 db \txor ebx,ebx\n33: 8853c4:\t03 c2 \tadd eax,edx\n34: 8853c6:\t33 ff \txor edi,edi\n35: 8853c8:\t3b c3 \tcmp eax,ebx\n36: 8853ca:\t7e 30 \tjle 0x8853fc\n37: 8853cc:\t8b 11 \tmov edx,DWORD PTR [ecx]\n38: 8853ce:\t8b ff \tmov edi,edi\n39: 8853d0:\t8b 5d 08 \tmov ebx,DWORD PTR [ebp+0x8]\n40: 8853d3:\t39 5a 04 \tcmp DWORD PTR [edx+0x4],ebx\n41: 8853d6:\t75 02 \tjne 0x8853da\n42: 8853d8:\t8b fa \tmov edi,edx\n43: 8853da:\t83 c2 18 \tadd edx,0x18\n44: 8853dd:\t48 \tdec eax\n45: 8853de:\t75 f0 \tjne 0x8853d0\n46: 8853e0:\t33 db \txor ebx,ebx\n47: 8853e2:\t3b fb \tcmp edi,ebx\n48: 8853e4:\t74 16 \tje 0x8853fc\n49: 8853e6:\t8b c7 \tmov eax,edi\n50: 8853e8:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n51: 8853eb:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n52: 8853f2:\t59 \tpop ecx\n53: 8853f3:\t5f \tpop edi\n54: 8853f4:\t5e \tpop esi\n55: 8853f5:\t5b \tpop ebx\n56: 8853f6:\t8b e5 \tmov esp,ebp\n57: 8853f8:\t5d \tpop ebp\n58: 8853f9:\tc2 04 00 \tret 0x4\n59: 8853fc:\tc7 45 dc 7c f0 a0 00 \tmov DWORD PTR [ebp-0x24],0xa0f07c\n60: 885403:\t89 5d e4 \tmov DWORD PTR [ebp-0x1c],ebx\n61: 885406:\t89 5d e8 \tmov DWORD PTR [ebp-0x18],ebx\n62: 885409:\t89 5d ec \tmov DWORD PTR [ebp-0x14],ebx\n63: 88540c:\t8d 45 dc \tlea eax,[ebp-0x24]\n64: 88540f:\t50 \tpush eax\n65: 885410:\t89 5d fc \tmov DWORD PTR [ebp-0x4],ebx\n66: 885413:\te8 98 f8 ff ff \tcall 0x884cb0\n67: 885418:\t8d 4d e4 \tlea ecx,[ebp-0x1c]\n68: 88541b:\tc7 45 fc 01 00 00 00 \tmov DWORD PTR [ebp-0x4],0x1\n69: 885422:\te8 59 41 da ff \tcall 0x629580\n70: 885427:\t8b 46 08 \tmov eax,DWORD PTR [esi+0x8]\n71: 88542a:\t8b 4d 08 \tmov ecx,DWORD PTR [ebp+0x8]\n72: 88542d:\t89 48 ec \tmov DWORD PTR [eax-0x14],ecx\n73: 885430:\t8b 46 08 \tmov eax,DWORD PTR [esi+0x8]\n74: 885433:\t83 e8 18 \tsub eax,0x18\n75: 885436:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n76: 885439:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n77: 885440:\t59 \tpop ecx\n78: 885441:\t5f \tpop edi\n79: 885442:\t5e \tpop esi\n80: 885443:\t5b \tpop ebx\n81: 885444:\t8b e5 \tmov esp,ebp\n82: 885446:\t5d \tpop ebp\n83: 885447:\tc2 04 00 \tret 0x4\n84: 88544a:\tcc \tint3 \n85: 88544b:\tcc \tint3 \n86: 88544c:\tcc \tint3 \n87: 88544d:\tcc \tint3 \n\n(End of file - total 87 lines)\n","metadata":{"preview":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00885380 <.text+0x484380>:\n 885380:\t55 \tpush ebp\n 885381:\t8b ec \tmov ebp,esp\n 885383:\t6a ff \tpush 0xffffffff\n 885385:\t68 30 af 99 00 \tpush 0x99af30\n 88538a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n 885390:\t50 \tpush eax\n 885391:\t83 ec 18 \tsub esp,0x18\n 885394:\t53 \tpush ebx\n 885395:\t56 \tpush esi\n 885396:\t57 \tpush edi\n 885397:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n 88539c:\t33 c5 \txor eax,ebp\n 88539e:\t50 \tpush eax","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-get-create.stdout.txt","text":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00885380 <.text+0x484380>:\n 885380:\t55 \tpush ebp\n 885381:\t8b ec \tmov ebp,esp\n 885383:\t6a ff \tpush 0xffffffff\n 885385:\t68 30 af 99 00 \tpush 0x99af30\n 88538a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n 885390:\t50 \tpush eax\n 885391:\t83 ec 18 \tsub esp,0x18\n 885394:\t53 \tpush ebx\n 885395:\t56 \tpush esi\n 885396:\t57 \tpush edi\n 885397:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n 88539c:\t33 c5 \txor eax,ebp\n 88539e:\t50 \tpush eax\n 88539f:\t8d 45 f4 \tlea eax,[ebp-0xc]\n 8853a2:\t64 a3 00 00 00 00 \tmov fs:0x0,eax\n 8853a8:\t8b f1 \tmov esi,ecx\n 8853aa:\t8b 56 08 \tmov edx,DWORD PTR [esi+0x8]\n 8853ad:\t2b 56 04 \tsub edx,DWORD PTR [esi+0x4]\n 8853b0:\t8d 4e 04 \tlea ecx,[esi+0x4]\n 8853b3:\tb8 ab aa aa 2a \tmov eax,0x2aaaaaab\n 8853b8:\tf7 ea \timul edx\n 8853ba:\tc1 fa 02 \tsar edx,0x2\n 8853bd:\t8b c2 \tmov eax,edx\n 8853bf:\tc1 e8 1f \tshr eax,0x1f\n 8853c2:\t33 db \txor ebx,ebx\n 8853c4:\t03 c2 \tadd eax,edx\n 8853c6:\t33 ff \txor edi,edi\n 8853c8:\t3b c3 \tcmp eax,ebx\n 8853ca:\t7e 30 \tjle 0x8853fc\n 8853cc:\t8b 11 \tmov edx,DWORD PTR [ecx]\n 8853ce:\t8b ff \tmov edi,edi\n 8853d0:\t8b 5d 08 \tmov ebx,DWORD PTR [ebp+0x8]\n 8853d3:\t39 5a 04 \tcmp DWORD PTR [edx+0x4],ebx\n 8853d6:\t75 02 \tjne 0x8853da\n 8853d8:\t8b fa \tmov edi,edx\n 8853da:\t83 c2 18 \tadd edx,0x18\n 8853dd:\t48 \tdec eax\n 8853de:\t75 f0 \tjne 0x8853d0\n 8853e0:\t33 db \txor ebx,ebx\n 8853e2:\t3b fb \tcmp edi,ebx\n 8853e4:\t74 16 \tje 0x8853fc\n 8853e6:\t8b c7 \tmov eax,edi\n 8853e8:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 8853eb:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 8853f2:\t59 \tpop ecx\n 8853f3:\t5f \tpop edi\n 8853f4:\t5e \tpop esi\n 8853f5:\t5b \tpop ebx\n 8853f6:\t8b e5 \tmov esp,ebp\n 8853f8:\t5d \tpop ebp\n 8853f9:\tc2 04 00 \tret 0x4\n 8853fc:\tc7 45 dc 7c f0 a0 00 \tmov DWORD PTR [ebp-0x24],0xa0f07c\n 885403:\t89 5d e4 \tmov DWORD PTR [ebp-0x1c],ebx\n 885406:\t89 5d e8 \tmov DWORD PTR [ebp-0x18],ebx\n 885409:\t89 5d ec \tmov DWORD PTR [ebp-0x14],ebx\n 88540c:\t8d 45 dc \tlea eax,[ebp-0x24]\n 88540f:\t50 \tpush eax\n 885410:\t89 5d fc \tmov DWORD PTR [ebp-0x4],ebx\n 885413:\te8 98 f8 ff ff \tcall 0x884cb0\n 885418:\t8d 4d e4 \tlea ecx,[ebp-0x1c]\n 88541b:\tc7 45 fc 01 00 00 00 \tmov DWORD PTR [ebp-0x4],0x1\n 885422:\te8 59 41 da ff \tcall 0x629580\n 885427:\t8b 46 08 \tmov eax,DWORD PTR [esi+0x8]\n 88542a:\t8b 4d 08 \tmov ecx,DWORD PTR [ebp+0x8]\n 88542d:\t89 48 ec \tmov DWORD PTR [eax-0x14],ecx\n 885430:\t8b 46 08 \tmov eax,DWORD PTR [esi+0x8]\n 885433:\t83 e8 18 \tsub eax,0x18\n 885436:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 885439:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 885440:\t59 \tpop ecx\n 885441:\t5f \tpop edi\n 885442:\t5e \tpop esi\n 885443:\t5b \tpop ebx\n 885444:\t8b e5 \tmov esp,ebp\n 885446:\t5d \tpop ebp\n 885447:\tc2 04 00 \tret 0x4\n 88544a:\tcc \tint3 \n 88544b:\tcc \tint3 \n 88544c:\tcc \tint3 \n 88544d:\tcc \tint3 ","lineStart":1,"lineEnd":87,"totalLines":87,"truncated":false}},"title":"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-get-create.stdout.txt","time":{"start":1789046617065,"end":1789046617094}},"metadata":{"openai":{"itemId":"fc_0a69201215584eca016aa2af58cbf087d1910c49432bf19004"}},"id":"prt_08b7cf3c4001qiuB9T48SiTy5o","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7cbe2c001DCqNXToYZHfMEr"}} +{"type":"tool_use","timestamp":1789046617104,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_EH0eG0YVZJk5kLp1diP8yMeG","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-append.stdout.txt","offset":1,"limit":95},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-append.stdout.txt\nfile\n\n1: \n2: /home/alex/sots-re/dumps/sots.exe: file format pei-i386\n3: \n4: \n5: Disassembly of section .text:\n6: \n7: 00884cb0 <.text+0x483cb0>:\n8: 884cb0:\t55 \tpush ebp\n9: 884cb1:\t8b ec \tmov ebp,esp\n10: 884cb3:\t6a ff \tpush 0xffffffff\n11: 884cb5:\t68 72 0b 98 00 \tpush 0x980b72\n12: 884cba:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n13: 884cc0:\t50 \tpush eax\n14: 884cc1:\t51 \tpush ecx\n15: 884cc2:\t56 \tpush esi\n16: 884cc3:\t57 \tpush edi\n17: 884cc4:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n18: 884cc9:\t33 c5 \txor eax,ebp\n19: 884ccb:\t50 \tpush eax\n20: 884ccc:\t8d 45 f4 \tlea eax,[ebp-0xc]\n21: 884ccf:\t64 a3 00 00 00 00 \tmov fs:0x0,eax\n22: 884cd5:\t8b f9 \tmov edi,ecx\n23: 884cd7:\t8b 4f 04 \tmov ecx,DWORD PTR [edi+0x4]\n24: 884cda:\t8b 75 08 \tmov esi,DWORD PTR [ebp+0x8]\n25: 884cdd:\t3b f1 \tcmp esi,ecx\n26: 884cdf:\t73 59 \tjae 0x884d3a\n27: 884ce1:\t8b 07 \tmov eax,DWORD PTR [edi]\n28: 884ce3:\t3b c6 \tcmp eax,esi\n29: 884ce5:\t77 53 \tja 0x884d3a\n30: 884ce7:\t2b f0 \tsub esi,eax\n31: 884ce9:\tb8 ab aa aa 2a \tmov eax,0x2aaaaaab\n32: 884cee:\tf7 ee \timul esi\n33: 884cf0:\tc1 fa 02 \tsar edx,0x2\n34: 884cf3:\t8b f2 \tmov esi,edx\n35: 884cf5:\tc1 ee 1f \tshr esi,0x1f\n36: 884cf8:\t03 f2 \tadd esi,edx\n37: 884cfa:\t3b 4f 08 \tcmp ecx,DWORD PTR [edi+0x8]\n38: 884cfd:\t75 09 \tjne 0x884d08\n39: 884cff:\t6a 01 \tpush 0x1\n40: 884d01:\t8b cf \tmov ecx,edi\n41: 884d03:\te8 98 f4 ff ff \tcall 0x8841a0\n42: 884d08:\t8b 0f \tmov ecx,DWORD PTR [edi]\n43: 884d0a:\t8d 04 76 \tlea eax,[esi+esi*2]\n44: 884d0d:\t8d 0c c1 \tlea ecx,[ecx+eax*8]\n45: 884d10:\t8b 47 04 \tmov eax,DWORD PTR [edi+0x4]\n46: 884d13:\t89 45 08 \tmov DWORD PTR [ebp+0x8],eax\n47: 884d16:\t89 45 f0 \tmov DWORD PTR [ebp-0x10],eax\n48: 884d19:\tc7 45 fc 00 00 00 00 \tmov DWORD PTR [ebp-0x4],0x0\n49: 884d20:\t85 c0 \ttest eax,eax\n50: 884d22:\t74 54 \tje 0x884d78\n51: 884d24:\tc7 00 7c f0 a0 00 \tmov DWORD PTR [eax],0xa0f07c\n52: 884d2a:\t8b 51 04 \tmov edx,DWORD PTR [ecx+0x4]\n53: 884d2d:\t83 c1 08 \tadd ecx,0x8\n54: 884d30:\tc6 45 fc 01 \tmov BYTE PTR [ebp-0x4],0x1\n55: 884d34:\t89 50 04 \tmov DWORD PTR [eax+0x4],edx\n56: 884d37:\t51 \tpush ecx\n57: 884d38:\teb 36 \tjmp 0x884d70\n58: 884d3a:\t3b 4f 08 \tcmp ecx,DWORD PTR [edi+0x8]\n59: 884d3d:\t75 09 \tjne 0x884d48\n60: 884d3f:\t6a 01 \tpush 0x1\n61: 884d41:\t8b cf \tmov ecx,edi\n62: 884d43:\te8 58 f4 ff ff \tcall 0x8841a0\n63: 884d48:\t8b 47 04 \tmov eax,DWORD PTR [edi+0x4]\n64: 884d4b:\t89 45 08 \tmov DWORD PTR [ebp+0x8],eax\n65: 884d4e:\t89 45 f0 \tmov DWORD PTR [ebp-0x10],eax\n66: 884d51:\tc7 45 fc 02 00 00 00 \tmov DWORD PTR [ebp-0x4],0x2\n67: 884d58:\t85 c0 \ttest eax,eax\n68: 884d5a:\t74 1c \tje 0x884d78\n69: 884d5c:\tc7 00 7c f0 a0 00 \tmov DWORD PTR [eax],0xa0f07c\n70: 884d62:\t8b 4e 04 \tmov ecx,DWORD PTR [esi+0x4]\n71: 884d65:\t83 c6 08 \tadd esi,0x8\n72: 884d68:\tc6 45 fc 03 \tmov BYTE PTR [ebp-0x4],0x3\n73: 884d6c:\t89 48 04 \tmov DWORD PTR [eax+0x4],ecx\n74: 884d6f:\t56 \tpush esi\n75: 884d70:\t8d 48 08 \tlea ecx,[eax+0x8]\n76: 884d73:\te8 d8 4a ef ff \tcall 0x779850\n77: 884d78:\t83 47 04 18 \tadd DWORD PTR [edi+0x4],0x18\n78: 884d7c:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n79: 884d7f:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n80: 884d86:\t59 \tpop ecx\n81: 884d87:\t5f \tpop edi\n82: 884d88:\t5e \tpop esi\n83: 884d89:\t8b e5 \tmov esp,ebp\n84: 884d8b:\t5d \tpop ebp\n85: 884d8c:\tc2 04 00 \tret 0x4\n86: 884d8f:\tcc \tint3 \n87: 884d90:\t55 \tpush ebp\n88: 884d91:\t8b ec \tmov ebp,esp\n\n(End of file - total 88 lines)\n","metadata":{"preview":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00884cb0 <.text+0x483cb0>:\n 884cb0:\t55 \tpush ebp\n 884cb1:\t8b ec \tmov ebp,esp\n 884cb3:\t6a ff \tpush 0xffffffff\n 884cb5:\t68 72 0b 98 00 \tpush 0x980b72\n 884cba:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n 884cc0:\t50 \tpush eax\n 884cc1:\t51 \tpush ecx\n 884cc2:\t56 \tpush esi\n 884cc3:\t57 \tpush edi\n 884cc4:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n 884cc9:\t33 c5 \txor eax,ebp\n 884ccb:\t50 \tpush eax\n 884ccc:\t8d 45 f4 \tlea eax,[ebp-0xc]","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-append.stdout.txt","text":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00884cb0 <.text+0x483cb0>:\n 884cb0:\t55 \tpush ebp\n 884cb1:\t8b ec \tmov ebp,esp\n 884cb3:\t6a ff \tpush 0xffffffff\n 884cb5:\t68 72 0b 98 00 \tpush 0x980b72\n 884cba:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n 884cc0:\t50 \tpush eax\n 884cc1:\t51 \tpush ecx\n 884cc2:\t56 \tpush esi\n 884cc3:\t57 \tpush edi\n 884cc4:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n 884cc9:\t33 c5 \txor eax,ebp\n 884ccb:\t50 \tpush eax\n 884ccc:\t8d 45 f4 \tlea eax,[ebp-0xc]\n 884ccf:\t64 a3 00 00 00 00 \tmov fs:0x0,eax\n 884cd5:\t8b f9 \tmov edi,ecx\n 884cd7:\t8b 4f 04 \tmov ecx,DWORD PTR [edi+0x4]\n 884cda:\t8b 75 08 \tmov esi,DWORD PTR [ebp+0x8]\n 884cdd:\t3b f1 \tcmp esi,ecx\n 884cdf:\t73 59 \tjae 0x884d3a\n 884ce1:\t8b 07 \tmov eax,DWORD PTR [edi]\n 884ce3:\t3b c6 \tcmp eax,esi\n 884ce5:\t77 53 \tja 0x884d3a\n 884ce7:\t2b f0 \tsub esi,eax\n 884ce9:\tb8 ab aa aa 2a \tmov eax,0x2aaaaaab\n 884cee:\tf7 ee \timul esi\n 884cf0:\tc1 fa 02 \tsar edx,0x2\n 884cf3:\t8b f2 \tmov esi,edx\n 884cf5:\tc1 ee 1f \tshr esi,0x1f\n 884cf8:\t03 f2 \tadd esi,edx\n 884cfa:\t3b 4f 08 \tcmp ecx,DWORD PTR [edi+0x8]\n 884cfd:\t75 09 \tjne 0x884d08\n 884cff:\t6a 01 \tpush 0x1\n 884d01:\t8b cf \tmov ecx,edi\n 884d03:\te8 98 f4 ff ff \tcall 0x8841a0\n 884d08:\t8b 0f \tmov ecx,DWORD PTR [edi]\n 884d0a:\t8d 04 76 \tlea eax,[esi+esi*2]\n 884d0d:\t8d 0c c1 \tlea ecx,[ecx+eax*8]\n 884d10:\t8b 47 04 \tmov eax,DWORD PTR [edi+0x4]\n 884d13:\t89 45 08 \tmov DWORD PTR [ebp+0x8],eax\n 884d16:\t89 45 f0 \tmov DWORD PTR [ebp-0x10],eax\n 884d19:\tc7 45 fc 00 00 00 00 \tmov DWORD PTR [ebp-0x4],0x0\n 884d20:\t85 c0 \ttest eax,eax\n 884d22:\t74 54 \tje 0x884d78\n 884d24:\tc7 00 7c f0 a0 00 \tmov DWORD PTR [eax],0xa0f07c\n 884d2a:\t8b 51 04 \tmov edx,DWORD PTR [ecx+0x4]\n 884d2d:\t83 c1 08 \tadd ecx,0x8\n 884d30:\tc6 45 fc 01 \tmov BYTE PTR [ebp-0x4],0x1\n 884d34:\t89 50 04 \tmov DWORD PTR [eax+0x4],edx\n 884d37:\t51 \tpush ecx\n 884d38:\teb 36 \tjmp 0x884d70\n 884d3a:\t3b 4f 08 \tcmp ecx,DWORD PTR [edi+0x8]\n 884d3d:\t75 09 \tjne 0x884d48\n 884d3f:\t6a 01 \tpush 0x1\n 884d41:\t8b cf \tmov ecx,edi\n 884d43:\te8 58 f4 ff ff \tcall 0x8841a0\n 884d48:\t8b 47 04 \tmov eax,DWORD PTR [edi+0x4]\n 884d4b:\t89 45 08 \tmov DWORD PTR [ebp+0x8],eax\n 884d4e:\t89 45 f0 \tmov DWORD PTR [ebp-0x10],eax\n 884d51:\tc7 45 fc 02 00 00 00 \tmov DWORD PTR [ebp-0x4],0x2\n 884d58:\t85 c0 \ttest eax,eax\n 884d5a:\t74 1c \tje 0x884d78\n 884d5c:\tc7 00 7c f0 a0 00 \tmov DWORD PTR [eax],0xa0f07c\n 884d62:\t8b 4e 04 \tmov ecx,DWORD PTR [esi+0x4]\n 884d65:\t83 c6 08 \tadd esi,0x8\n 884d68:\tc6 45 fc 03 \tmov BYTE PTR [ebp-0x4],0x3\n 884d6c:\t89 48 04 \tmov DWORD PTR [eax+0x4],ecx\n 884d6f:\t56 \tpush esi\n 884d70:\t8d 48 08 \tlea ecx,[eax+0x8]\n 884d73:\te8 d8 4a ef ff \tcall 0x779850\n 884d78:\t83 47 04 18 \tadd DWORD PTR [edi+0x4],0x18\n 884d7c:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 884d7f:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 884d86:\t59 \tpop ecx\n 884d87:\t5f \tpop edi\n 884d88:\t5e \tpop esi\n 884d89:\t8b e5 \tmov esp,ebp\n 884d8b:\t5d \tpop ebp\n 884d8c:\tc2 04 00 \tret 0x4\n 884d8f:\tcc \tint3 \n 884d90:\t55 \tpush ebp\n 884d91:\t8b ec \tmov ebp,esp","lineStart":1,"lineEnd":88,"totalLines":88,"truncated":false}},"title":"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-append.stdout.txt","time":{"start":1789046617070,"end":1789046617097}},"metadata":{"openai":{"itemId":"fc_0a69201215584eca016aa2af58cc0887d196e81e1e88d284fb"}},"id":"prt_08b7cf3eb001Pd9cB2d9SG8HXN","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7cbe2c001DCqNXToYZHfMEr"}} +{"type":"tool_use","timestamp":1789046617104,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_9I5HwgAe8zvIvvWT8R3FwTvV","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/dedup.stdout.txt","offset":75,"limit":55},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/dedup.stdout.txt\nfile\n\n75: 825deb:\t85 c0 \ttest eax,eax\n76: 825ded:\t75 36 \tjne 0x825e25\n77: 825def:\t83 7f 64 10 \tcmp DWORD PTR [edi+0x64],0x10\n78: 825df3:\t8b 57 60 \tmov edx,DWORD PTR [edi+0x60]\n79: 825df6:\t8d 47 50 \tlea eax,[edi+0x50]\n80: 825df9:\t8d 4e 50 \tlea ecx,[esi+0x50]\n81: 825dfc:\t72 02 \tjb 0x825e00\n82: 825dfe:\t8b 00 \tmov eax,DWORD PTR [eax]\n83: 825e00:\t52 \tpush edx\n84: 825e01:\t8b 51 10 \tmov edx,DWORD PTR [ecx+0x10]\n85: 825e04:\t50 \tpush eax\n86: 825e05:\t52 \tpush edx\n87: 825e06:\t6a 00 \tpush 0x0\n88: 825e08:\te8 93 d8 bf ff \tcall 0x4236a0\n89: 825e0d:\t85 c0 \ttest eax,eax\n90: 825e0f:\t75 14 \tjne 0x825e25\n91: 825e11:\t8d 47 08 \tlea eax,[edi+0x8]\n92: 825e14:\t50 \tpush eax\n93: 825e15:\t8d 4e 08 \tlea ecx,[esi+0x8]\n94: 825e18:\t51 \tpush ecx\n95: 825e19:\te8 a2 9a c4 ff \tcall 0x46f8c0\n96: 825e1e:\t83 c4 08 \tadd esp,0x8\n97: 825e21:\t84 c0 \ttest al,al\n98: 825e23:\t74 37 \tje 0x825e5c\n99: 825e25:\t8b 4b 0c \tmov ecx,DWORD PTR [ebx+0xc]\n100: 825e28:\t2b 4b 08 \tsub ecx,DWORD PTR [ebx+0x8]\n101: 825e2b:\t8b 75 fc \tmov esi,DWORD PTR [ebp-0x4]\n102: 825e2e:\t83 45 08 74 \tadd DWORD PTR [ebp+0x8],0x74\n103: 825e32:\tb8 09 cb 3d 8d \tmov eax,0x8d3dcb09\n104: 825e37:\tf7 e9 \timul ecx\n105: 825e39:\t03 d1 \tadd edx,ecx\n106: 825e3b:\tc1 fa 06 \tsar edx,0x6\n107: 825e3e:\t8b c2 \tmov eax,edx\n108: 825e40:\tc1 e8 1f \tshr eax,0x1f\n109: 825e43:\t46 \tinc esi\n110: 825e44:\t03 c2 \tadd eax,edx\n111: 825e46:\t89 75 fc \tmov DWORD PTR [ebp-0x4],esi\n112: 825e49:\t3b f0 \tcmp esi,eax\n113: 825e4b:\t0f 82 31 ff ff ff \tjb 0x825d82\n114: 825e51:\t5f \tpop edi\n115: 825e52:\t5e \tpop esi\n116: 825e53:\t33 c0 \txor eax,eax\n117: 825e55:\t5b \tpop ebx\n118: 825e56:\t8b e5 \tmov esp,ebp\n119: 825e58:\t5d \tpop ebp\n120: 825e59:\tc2 08 00 \tret 0x8\n121: 825e5c:\t5f \tpop edi\n122: 825e5d:\t8b c6 \tmov eax,esi\n123: 825e5f:\t5e \tpop esi\n124: 825e60:\t5b \tpop ebx\n125: 825e61:\t8b e5 \tmov esp,ebp\n126: 825e63:\t5d \tpop ebp\n127: 825e64:\tc2 08 00 \tret 0x8\n\n(End of file - total 127 lines)\n","metadata":{"preview":" 825deb:\t85 c0 \ttest eax,eax\n 825ded:\t75 36 \tjne 0x825e25\n 825def:\t83 7f 64 10 \tcmp DWORD PTR [edi+0x64],0x10\n 825df3:\t8b 57 60 \tmov edx,DWORD PTR [edi+0x60]\n 825df6:\t8d 47 50 \tlea eax,[edi+0x50]\n 825df9:\t8d 4e 50 \tlea ecx,[esi+0x50]\n 825dfc:\t72 02 \tjb 0x825e00\n 825dfe:\t8b 00 \tmov eax,DWORD PTR [eax]\n 825e00:\t52 \tpush edx\n 825e01:\t8b 51 10 \tmov edx,DWORD PTR [ecx+0x10]\n 825e04:\t50 \tpush eax\n 825e05:\t52 \tpush edx\n 825e06:\t6a 00 \tpush 0x0\n 825e08:\te8 93 d8 bf ff \tcall 0x4236a0\n 825e0d:\t85 c0 \ttest eax,eax\n 825e0f:\t75 14 \tjne 0x825e25\n 825e11:\t8d 47 08 \tlea eax,[edi+0x8]\n 825e14:\t50 \tpush eax\n 825e15:\t8d 4e 08 \tlea ecx,[esi+0x8]\n 825e18:\t51 \tpush ecx","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/dedup.stdout.txt","text":" 825deb:\t85 c0 \ttest eax,eax\n 825ded:\t75 36 \tjne 0x825e25\n 825def:\t83 7f 64 10 \tcmp DWORD PTR [edi+0x64],0x10\n 825df3:\t8b 57 60 \tmov edx,DWORD PTR [edi+0x60]\n 825df6:\t8d 47 50 \tlea eax,[edi+0x50]\n 825df9:\t8d 4e 50 \tlea ecx,[esi+0x50]\n 825dfc:\t72 02 \tjb 0x825e00\n 825dfe:\t8b 00 \tmov eax,DWORD PTR [eax]\n 825e00:\t52 \tpush edx\n 825e01:\t8b 51 10 \tmov edx,DWORD PTR [ecx+0x10]\n 825e04:\t50 \tpush eax\n 825e05:\t52 \tpush edx\n 825e06:\t6a 00 \tpush 0x0\n 825e08:\te8 93 d8 bf ff \tcall 0x4236a0\n 825e0d:\t85 c0 \ttest eax,eax\n 825e0f:\t75 14 \tjne 0x825e25\n 825e11:\t8d 47 08 \tlea eax,[edi+0x8]\n 825e14:\t50 \tpush eax\n 825e15:\t8d 4e 08 \tlea ecx,[esi+0x8]\n 825e18:\t51 \tpush ecx\n 825e19:\te8 a2 9a c4 ff \tcall 0x46f8c0\n 825e1e:\t83 c4 08 \tadd esp,0x8\n 825e21:\t84 c0 \ttest al,al\n 825e23:\t74 37 \tje 0x825e5c\n 825e25:\t8b 4b 0c \tmov ecx,DWORD PTR [ebx+0xc]\n 825e28:\t2b 4b 08 \tsub ecx,DWORD PTR [ebx+0x8]\n 825e2b:\t8b 75 fc \tmov esi,DWORD PTR [ebp-0x4]\n 825e2e:\t83 45 08 74 \tadd DWORD PTR [ebp+0x8],0x74\n 825e32:\tb8 09 cb 3d 8d \tmov eax,0x8d3dcb09\n 825e37:\tf7 e9 \timul ecx\n 825e39:\t03 d1 \tadd edx,ecx\n 825e3b:\tc1 fa 06 \tsar edx,0x6\n 825e3e:\t8b c2 \tmov eax,edx\n 825e40:\tc1 e8 1f \tshr eax,0x1f\n 825e43:\t46 \tinc esi\n 825e44:\t03 c2 \tadd eax,edx\n 825e46:\t89 75 fc \tmov DWORD PTR [ebp-0x4],esi\n 825e49:\t3b f0 \tcmp esi,eax\n 825e4b:\t0f 82 31 ff ff ff \tjb 0x825d82\n 825e51:\t5f \tpop edi\n 825e52:\t5e \tpop esi\n 825e53:\t33 c0 \txor eax,eax\n 825e55:\t5b \tpop ebx\n 825e56:\t8b e5 \tmov esp,ebp\n 825e58:\t5d \tpop ebp\n 825e59:\tc2 08 00 \tret 0x8\n 825e5c:\t5f \tpop edi\n 825e5d:\t8b c6 \tmov eax,esi\n 825e5f:\t5e \tpop esi\n 825e60:\t5b \tpop ebx\n 825e61:\t8b e5 \tmov esp,ebp\n 825e63:\t5d \tpop ebp\n 825e64:\tc2 08 00 \tret 0x8","lineStart":75,"lineEnd":127,"totalLines":127,"truncated":false}},"title":"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/dedup.stdout.txt","time":{"start":1789046617077,"end":1789046617099}},"metadata":{"openai":{"itemId":"fc_0a69201215584eca016aa2af58cc1487d193d349aef0c06118"}},"id":"prt_08b7cf3f20016DOA4iPjv13o1n","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7cbe2c001DCqNXToYZHfMEr"}} +{"type":"tool_use","timestamp":1789046617104,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_gVEOCNtuZxW8OEr4bQqnGEqf","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-authority.stdout.txt","offset":1,"limit":90},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-authority.stdout.txt\nfile\n\n1: \n2: /home/alex/sots-re/dumps/sots.exe: file format pei-i386\n3: \n4: \n5: Disassembly of section .text:\n6: \n7: 00779850 <.text+0x378850>:\n8: 779850:\t55 \tpush ebp\n9: 779851:\t8b ec \tmov ebp,esp\n10: 779853:\t6a ff \tpush 0xffffffff\n11: 779855:\t68 10 7b 98 00 \tpush 0x987b10\n12: 77985a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n13: 779860:\t50 \tpush eax\n14: 779861:\t83 ec 08 \tsub esp,0x8\n15: 779864:\t53 \tpush ebx\n16: 779865:\t56 \tpush esi\n17: 779866:\t57 \tpush edi\n18: 779867:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n19: 77986c:\t33 c5 \txor eax,ebp\n20: 77986e:\t50 \tpush eax\n21: 77986f:\t8d 45 f4 \tlea eax,[ebp-0xc]\n22: 779872:\t64 a3 00 00 00 00 \tmov fs:0x0,eax\n23: 779878:\t89 65 f0 \tmov DWORD PTR [ebp-0x10],esp\n24: 77987b:\t8b f1 \tmov esi,ecx\n25: 77987d:\t89 75 ec \tmov DWORD PTR [ebp-0x14],esi\n26: 779880:\t8b 5d 08 \tmov ebx,DWORD PTR [ebp+0x8]\n27: 779883:\t33 c0 \txor eax,eax\n28: 779885:\t89 06 \tmov DWORD PTR [esi],eax\n29: 779887:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n30: 77988a:\t89 46 08 \tmov DWORD PTR [esi+0x8],eax\n31: 77988d:\t8b 4b 04 \tmov ecx,DWORD PTR [ebx+0x4]\n32: 779890:\t2b 0b \tsub ecx,DWORD PTR [ebx]\n33: 779892:\tb8 09 cb 3d 8d \tmov eax,0x8d3dcb09\n34: 779897:\tf7 e9 \timul ecx\n35: 779899:\t03 d1 \tadd edx,ecx\n36: 77989b:\tc1 fa 06 \tsar edx,0x6\n37: 77989e:\t8b fa \tmov edi,edx\n38: 7798a0:\tb8 00 00 00 00 \tmov eax,0x0\n39: 7798a5:\tc1 ef 1f \tshr edi,0x1f\n40: 7798a8:\t03 fa \tadd edi,edx\n41: 7798aa:\t89 06 \tmov DWORD PTR [esi],eax\n42: 7798ac:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n43: 7798af:\t89 46 08 \tmov DWORD PTR [esi+0x8],eax\n44: 7798b2:\t74 4b \tje 0x7798ff\n45: 7798b4:\t81 ff 2c f7 34 02 \tcmp edi,0x234f72c\n46: 7798ba:\t76 0b \tjbe 0x7798c7\n47: 7798bc:\t68 90 1f 9e 00 \tpush 0x9e1f90\n48: 7798c1:\tff 15 50 d1 9d 00 \tcall DWORD PTR ds:0x9dd150\n49: 7798c7:\t8d 4e 0c \tlea ecx,[esi+0xc]\n50: 7798ca:\t57 \tpush edi\n51: 7798cb:\te8 70 16 01 00 \tcall 0x78af40\n52: 7798d0:\t6b ff 74 \timul edi,edi,0x74\n53: 7798d3:\t8b 55 08 \tmov edx,DWORD PTR [ebp+0x8]\n54: 7798d6:\t52 \tpush edx\n55: 7798d7:\t8d 56 0c \tlea edx,[esi+0xc]\n56: 7798da:\t52 \tpush edx\n57: 7798db:\t03 f8 \tadd edi,eax\n58: 7798dd:\t89 06 \tmov DWORD PTR [esi],eax\n59: 7798df:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n60: 7798e2:\t89 7e 08 \tmov DWORD PTR [esi+0x8],edi\n61: 7798e5:\t8b 4b 04 \tmov ecx,DWORD PTR [ebx+0x4]\n62: 7798e8:\t8b 1b \tmov ebx,DWORD PTR [ebx]\n63: 7798ea:\t50 \tpush eax\n64: 7798eb:\t51 \tpush ecx\n65: 7798ec:\t53 \tpush ebx\n66: 7798ed:\tc7 45 fc 00 00 00 00 \tmov DWORD PTR [ebp-0x4],0x0\n67: 7798f4:\te8 a7 8c ff ff \tcall 0x7725a0\n68: 7798f9:\t83 c4 14 \tadd esp,0x14\n69: 7798fc:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n70: 7798ff:\t8b c6 \tmov eax,esi\n71: 779901:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n72: 779904:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n73: 77990b:\t59 \tpop ecx\n74: 77990c:\t5f \tpop edi\n75: 77990d:\t5e \tpop esi\n76: 77990e:\t5b \tpop ebx\n77: 77990f:\t8b e5 \tmov esp,ebp\n78: 779911:\t5d \tpop ebp\n79: 779912:\tc2 04 00 \tret 0x4\n80: 779915:\t8b 4d ec \tmov ecx,DWORD PTR [ebp-0x14]\n81: 779918:\te8 63 fc ea ff \tcall 0x629580\n82: 77991d:\t6a 00 \tpush 0x0\n83: 77991f:\t6a 00 \tpush 0x0\n84: 779921:\te8 96 b6 1a 00 \tcall 0x924fbc\n85: 779926:\tcc \tint3 \n86: 779927:\tcc \tint3 \n87: 779928:\tcc \tint3 \n88: 779929:\tcc \tint3 \n89: 77992a:\tcc \tint3 \n90: 77992b:\tcc \tint3 \n\n(Showing lines 1-90 of 94. Use offset=91 to continue.)\n","metadata":{"preview":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00779850 <.text+0x378850>:\n 779850:\t55 \tpush ebp\n 779851:\t8b ec \tmov ebp,esp\n 779853:\t6a ff \tpush 0xffffffff\n 779855:\t68 10 7b 98 00 \tpush 0x987b10\n 77985a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n 779860:\t50 \tpush eax\n 779861:\t83 ec 08 \tsub esp,0x8\n 779864:\t53 \tpush ebx\n 779865:\t56 \tpush esi\n 779866:\t57 \tpush edi\n 779867:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n 77986c:\t33 c5 \txor eax,ebp\n 77986e:\t50 \tpush eax","truncated":true,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-authority.stdout.txt","text":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00779850 <.text+0x378850>:\n 779850:\t55 \tpush ebp\n 779851:\t8b ec \tmov ebp,esp\n 779853:\t6a ff \tpush 0xffffffff\n 779855:\t68 10 7b 98 00 \tpush 0x987b10\n 77985a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n 779860:\t50 \tpush eax\n 779861:\t83 ec 08 \tsub esp,0x8\n 779864:\t53 \tpush ebx\n 779865:\t56 \tpush esi\n 779866:\t57 \tpush edi\n 779867:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n 77986c:\t33 c5 \txor eax,ebp\n 77986e:\t50 \tpush eax\n 77986f:\t8d 45 f4 \tlea eax,[ebp-0xc]\n 779872:\t64 a3 00 00 00 00 \tmov fs:0x0,eax\n 779878:\t89 65 f0 \tmov DWORD PTR [ebp-0x10],esp\n 77987b:\t8b f1 \tmov esi,ecx\n 77987d:\t89 75 ec \tmov DWORD PTR [ebp-0x14],esi\n 779880:\t8b 5d 08 \tmov ebx,DWORD PTR [ebp+0x8]\n 779883:\t33 c0 \txor eax,eax\n 779885:\t89 06 \tmov DWORD PTR [esi],eax\n 779887:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n 77988a:\t89 46 08 \tmov DWORD PTR [esi+0x8],eax\n 77988d:\t8b 4b 04 \tmov ecx,DWORD PTR [ebx+0x4]\n 779890:\t2b 0b \tsub ecx,DWORD PTR [ebx]\n 779892:\tb8 09 cb 3d 8d \tmov eax,0x8d3dcb09\n 779897:\tf7 e9 \timul ecx\n 779899:\t03 d1 \tadd edx,ecx\n 77989b:\tc1 fa 06 \tsar edx,0x6\n 77989e:\t8b fa \tmov edi,edx\n 7798a0:\tb8 00 00 00 00 \tmov eax,0x0\n 7798a5:\tc1 ef 1f \tshr edi,0x1f\n 7798a8:\t03 fa \tadd edi,edx\n 7798aa:\t89 06 \tmov DWORD PTR [esi],eax\n 7798ac:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n 7798af:\t89 46 08 \tmov DWORD PTR [esi+0x8],eax\n 7798b2:\t74 4b \tje 0x7798ff\n 7798b4:\t81 ff 2c f7 34 02 \tcmp edi,0x234f72c\n 7798ba:\t76 0b \tjbe 0x7798c7\n 7798bc:\t68 90 1f 9e 00 \tpush 0x9e1f90\n 7798c1:\tff 15 50 d1 9d 00 \tcall DWORD PTR ds:0x9dd150\n 7798c7:\t8d 4e 0c \tlea ecx,[esi+0xc]\n 7798ca:\t57 \tpush edi\n 7798cb:\te8 70 16 01 00 \tcall 0x78af40\n 7798d0:\t6b ff 74 \timul edi,edi,0x74\n 7798d3:\t8b 55 08 \tmov edx,DWORD PTR [ebp+0x8]\n 7798d6:\t52 \tpush edx\n 7798d7:\t8d 56 0c \tlea edx,[esi+0xc]\n 7798da:\t52 \tpush edx\n 7798db:\t03 f8 \tadd edi,eax\n 7798dd:\t89 06 \tmov DWORD PTR [esi],eax\n 7798df:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n 7798e2:\t89 7e 08 \tmov DWORD PTR [esi+0x8],edi\n 7798e5:\t8b 4b 04 \tmov ecx,DWORD PTR [ebx+0x4]\n 7798e8:\t8b 1b \tmov ebx,DWORD PTR [ebx]\n 7798ea:\t50 \tpush eax\n 7798eb:\t51 \tpush ecx\n 7798ec:\t53 \tpush ebx\n 7798ed:\tc7 45 fc 00 00 00 00 \tmov DWORD PTR [ebp-0x4],0x0\n 7798f4:\te8 a7 8c ff ff \tcall 0x7725a0\n 7798f9:\t83 c4 14 \tadd esp,0x14\n 7798fc:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n 7798ff:\t8b c6 \tmov eax,esi\n 779901:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 779904:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 77990b:\t59 \tpop ecx\n 77990c:\t5f \tpop edi\n 77990d:\t5e \tpop esi\n 77990e:\t5b \tpop ebx\n 77990f:\t8b e5 \tmov esp,ebp\n 779911:\t5d \tpop ebp\n 779912:\tc2 04 00 \tret 0x4\n 779915:\t8b 4d ec \tmov ecx,DWORD PTR [ebp-0x14]\n 779918:\te8 63 fc ea ff \tcall 0x629580\n 77991d:\t6a 00 \tpush 0x0\n 77991f:\t6a 00 \tpush 0x0\n 779921:\te8 96 b6 1a 00 \tcall 0x924fbc\n 779926:\tcc \tint3 \n 779927:\tcc \tint3 \n 779928:\tcc \tint3 \n 779929:\tcc \tint3 \n 77992a:\tcc \tint3 \n 77992b:\tcc \tint3 ","lineStart":1,"lineEnd":90,"totalLines":94,"truncated":true}},"title":"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-authority.stdout.txt","time":{"start":1789046617082,"end":1789046617101}},"metadata":{"openai":{"itemId":"fc_0a69201215584eca016aa2af58cc2087d19f8f89807677356a"}},"id":"prt_08b7cf3f700109g4oSb1f7OCYK","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7cbe2c001DCqNXToYZHfMEr"}} +{"type":"step_finish","timestamp":1789046617296,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7cf4cc001zosG2O80mOrtjF","reason":"tool-calls","snapshot":"5fa7a2d622b58e91e81f38932218efa4f5931492","messageID":"msg_08b7cbe2c001DCqNXToYZHfMEr","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":85625,"input":7326,"output":262,"reasoning":85,"cache":{"write":0,"read":77952}},"cost":0}} +{"type":"step_start","timestamp":1789046622199,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7d07f3001jE1sI47dWIvrO2","messageID":"msg_08b7cf50b001BYS3odR2Y5deN0","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"ea8634b889942653fc2f4aaa6034f876990ba637","type":"step-start"}} +{"type":"tool_use","timestamp":1789046686343,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"apply_patch","callID":"call_0QyqHDnfYdLJXp2TnrikU5gT","state":{"status":"completed","input":{"patchText":"*** Begin Patch\n*** Add File: /home/alex/sots-re/verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md\n+# Current-source ABI static capture report — run-35e59053176da458d8b46fea\n+\n+## Result and provenance\n+\n+The authoritative package is\n+`verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/`; its manifest records\n+27 positive objdump executions, all return code zero with nonempty stdout and empty stderr (118,734\n+stdout bytes, zero stderr bytes), and no failed checks. Paired source identity remained engine\n+`ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd` and RE\n+`e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f` before/after. Binary,\n+objdump, Python, save and parser identities are in the manifest and preflight.\n+\n+The sibling directory without `-repair1` is a preserved failed recipe run. Its streams are valid,\n+but two checks incorrectly required the bad boundary stream to omit its terminal row. Actual objdump\n+retains a one-byte terminal row (`c2` or `74`) and replaces it with the complete row when the stop is\n+aligned. The repaired recipe tests equal preceding rows plus that replacement. This was a local test\n+predicate defect, not contradictory binary behavior and not a retroactive pass.\n+\n+## Measured static observations\n+\n+* Stop `0x00779913` emits truncated `779912: c2`; stop `0x00779915` emits complete\n+ `779912: c2 04 00`, and authority through `0x00779930` includes the complete return plus cleanup at\n+ `0x00779915`. Direct PE mapping independently reads `c20400` at VA `0x00779912`.\n+* The second boundary family reproduces truncated `74` at stop `0x00779a20`, complete `74 10` at\n+ `0x00779a21`, then complete `8b cf` and `e8 28 6a ff ff` at stops `0x00779a23` and\n+ `0x00779a28`. Direct PE bytes are `74108bcfe8286affff`.\n+* ObservedTech append/growth instructions use `0x2c`; PlayerEvent append/nested-copy/destruction use\n+ `0x74`; TurnEvents append/prune use `0x18`. These are distinct concrete element strides.\n+* ObservedTech allocation multiplies count by `0x2c` and calls `0x00924fb6`; old-element growth and\n+ PlayerEvent/string destruction paths call `0x00924faa`. PlayerEvent append calls copy constructor\n+ `0x007693f0`; outer TurnEvents append calls nested copy `0x00779850`.\n+* Nested copy zeros the destination three-pointer header, distinguishes empty count from allocation,\n+ allocates through `0x0078af40`, multiplies by `0x74`, calls range helper `0x007725a0`, writes the\n+ copied end pointer, returns destination in EAX, and ends `ret 4`. Its captured unwind edge calls\n+ `0x00629580` before the allocation-failure helper; this edge was exposed, not executed.\n+* Get/create scans every `0x18` bucket and retains the last matching `+4` turn. On miss it establishes\n+ vptr and zero nested-vector pointers, calls outer append, calls nested-vector cleanup, then stores\n+ the requested stack turn into stored-last `+4`; both returns are `ret 4`.\n+* Outer append separates capacity-growth and spare-capacity edges, copies source `+4`, advances source\n+ to nested vector `+8`, deep-copies it, then increments end by `0x18`; it ends `ret 4`.\n+* Duplicate scan advances by `0x74`; after prior field comparisons it performs description comparison\n+ at `0x0046f8c0`, caller-cleans two arguments, and reaches match return only when AL is zero. Thus the\n+ fresh instructions remain consistent with description equality being required.\n+* Direct PE mapping reads three `0x7f7fffff` words at constructor-default VA `0x00af0dc8`. This is a\n+ binary constant observation, not a newly parsed event record.\n+\n+The manifest's direct-PE entries named `observed-stride`, `player-stride`, and `turn-stride` sampled\n+fixed addresses but were not used to establish strides; their names are overbroad. The stride facts\n+above come from the archived instruction rows. This limitation does not affect the boundary-byte or\n+constructor-default direct controls.\n+\n+## Interpretation, dependencies, and limits\n+\n+The measurements support the prior static interpretation that vector elements require construction\n+and nested/string ownership rather than raw header copy. Calling `0x00924fb6`, `0x00924faa`, or\n+`0x0046f8c0` remains an original-helper dependency with the original CRT/string layout. A standalone\n+implementation needs one coherent allocator/copy/destruction family; this capture does not show that\n+original allocations can safely cross a replacement boundary.\n+\n+No game branch, allocation, constructor, destructor, throw, event post, ID assignment, record write,\n+container mutation, or RNG draw executed. The save was hashed, not parsed. Existing/miss,\n+spare/full-capacity, empty/nonempty, null/nonnull, short/long-string, normal/unwind, duplicate and\n+description-only-different states are instruction exposures only. Exact PostEvent caller inputs,\n+defaulting and total write order remain outside this bounded remeasurement.\n+\n+## Independent falsification package\n+\n+A fresh verifier should use its own recipe and fail-if-exists directory, bind the current paired\n+digest, repeat the negative/aligned/authority boundaries and direct PE reads, challenge at least one\n+additional boundary, and parse the archived save independently for named player/event containers,\n+elements, IDs, strings, FLT_MAX words, empty-player states and the actual RNG leaf. It must preserve\n+all runtime residuals and must not count this analyst capture or archived prior verifier output as an\n+independent cross-check.\n*** Update File: /home/alex/sots-re/campaign/research/research-completion-abi.md\n@@\n-The TurnEvents correction's current-session boundary authority is\n-`verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/`. It supersedes the stale-session\n+The TurnEvents correction's historical-session boundary authority is\n+`verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/`. It superseded the stale-session\n@@\n-verifier, not restored acceptance.\n+verifier, not restored acceptance. Astra decision `d-e9d6d48cd77538556d1a1c1f` later barred reuse of\n+that package against changed source. The current-source remeasurement is\n+`verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/`, with preflight, plan,\n+recipe and interpretation in the sibling `run-35e59053176da458d8b46fea-preflight.json`,\n+`plan-run-35e59053176da458d8b46fea.md`, `capture_run_35e59053176da458d8b46fea.py`, and\n+`report-run-35e59053176da458d8b46fea.md`. The unsuffixed run directory preserves a failed recipe\n+predicate and is not authority. The new package is analyst static evidence awaiting fresh independent\n+reproduction, not restored acceptance.\n*** End Patch"},"output":"Success. Updated the following files:\nA verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md\nM campaign/research/research-completion-abi.md","metadata":{"diff":"Index: /home/alex/sots-re/verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md\n===================================================================\n--- /home/alex/sots-re/verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md\n+++ /home/alex/sots-re/verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md\n@@ -0,0 +1,73 @@\n+# Current-source ABI static capture report — run-35e59053176da458d8b46fea\n+\n+## Result and provenance\n+\n+The authoritative package is\n+`verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/`; its manifest records\n+27 positive objdump executions, all return code zero with nonempty stdout and empty stderr (118,734\n+stdout bytes, zero stderr bytes), and no failed checks. Paired source identity remained engine\n+`ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd` and RE\n+`e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f` before/after. Binary,\n+objdump, Python, save and parser identities are in the manifest and preflight.\n+\n+The sibling directory without `-repair1` is a preserved failed recipe run. Its streams are valid,\n+but two checks incorrectly required the bad boundary stream to omit its terminal row. Actual objdump\n+retains a one-byte terminal row (`c2` or `74`) and replaces it with the complete row when the stop is\n+aligned. The repaired recipe tests equal preceding rows plus that replacement. This was a local test\n+predicate defect, not contradictory binary behavior and not a retroactive pass.\n+\n+## Measured static observations\n+\n+* Stop `0x00779913` emits truncated `779912: c2`; stop `0x00779915` emits complete\n+ `779912: c2 04 00`, and authority through `0x00779930` includes the complete return plus cleanup at\n+ `0x00779915`. Direct PE mapping independently reads `c20400` at VA `0x00779912`.\n+* The second boundary family reproduces truncated `74` at stop `0x00779a20`, complete `74 10` at\n+ `0x00779a21`, then complete `8b cf` and `e8 28 6a ff ff` at stops `0x00779a23` and\n+ `0x00779a28`. Direct PE bytes are `74108bcfe8286affff`.\n+* ObservedTech append/growth instructions use `0x2c`; PlayerEvent append/nested-copy/destruction use\n+ `0x74`; TurnEvents append/prune use `0x18`. These are distinct concrete element strides.\n+* ObservedTech allocation multiplies count by `0x2c` and calls `0x00924fb6`; old-element growth and\n+ PlayerEvent/string destruction paths call `0x00924faa`. PlayerEvent append calls copy constructor\n+ `0x007693f0`; outer TurnEvents append calls nested copy `0x00779850`.\n+* Nested copy zeros the destination three-pointer header, distinguishes empty count from allocation,\n+ allocates through `0x0078af40`, multiplies by `0x74`, calls range helper `0x007725a0`, writes the\n+ copied end pointer, returns destination in EAX, and ends `ret 4`. Its captured unwind edge calls\n+ `0x00629580` before the allocation-failure helper; this edge was exposed, not executed.\n+* Get/create scans every `0x18` bucket and retains the last matching `+4` turn. On miss it establishes\n+ vptr and zero nested-vector pointers, calls outer append, calls nested-vector cleanup, then stores\n+ the requested stack turn into stored-last `+4`; both returns are `ret 4`.\n+* Outer append separates capacity-growth and spare-capacity edges, copies source `+4`, advances source\n+ to nested vector `+8`, deep-copies it, then increments end by `0x18`; it ends `ret 4`.\n+* Duplicate scan advances by `0x74`; after prior field comparisons it performs description comparison\n+ at `0x0046f8c0`, caller-cleans two arguments, and reaches match return only when AL is zero. Thus the\n+ fresh instructions remain consistent with description equality being required.\n+* Direct PE mapping reads three `0x7f7fffff` words at constructor-default VA `0x00af0dc8`. This is a\n+ binary constant observation, not a newly parsed event record.\n+\n+The manifest's direct-PE entries named `observed-stride`, `player-stride`, and `turn-stride` sampled\n+fixed addresses but were not used to establish strides; their names are overbroad. The stride facts\n+above come from the archived instruction rows. This limitation does not affect the boundary-byte or\n+constructor-default direct controls.\n+\n+## Interpretation, dependencies, and limits\n+\n+The measurements support the prior static interpretation that vector elements require construction\n+and nested/string ownership rather than raw header copy. Calling `0x00924fb6`, `0x00924faa`, or\n+`0x0046f8c0` remains an original-helper dependency with the original CRT/string layout. A standalone\n+implementation needs one coherent allocator/copy/destruction family; this capture does not show that\n+original allocations can safely cross a replacement boundary.\n+\n+No game branch, allocation, constructor, destructor, throw, event post, ID assignment, record write,\n+container mutation, or RNG draw executed. The save was hashed, not parsed. Existing/miss,\n+spare/full-capacity, empty/nonempty, null/nonnull, short/long-string, normal/unwind, duplicate and\n+description-only-different states are instruction exposures only. Exact PostEvent caller inputs,\n+defaulting and total write order remain outside this bounded remeasurement.\n+\n+## Independent falsification package\n+\n+A fresh verifier should use its own recipe and fail-if-exists directory, bind the current paired\n+digest, repeat the negative/aligned/authority boundaries and direct PE reads, challenge at least one\n+additional boundary, and parse the archived save independently for named player/event containers,\n+elements, IDs, strings, FLT_MAX words, empty-player states and the actual RNG leaf. It must preserve\n+all runtime residuals and must not count this analyst capture or archived prior verifier output as an\n+independent cross-check.\n\nIndex: /home/alex/sots-re/campaign/research/research-completion-abi.md\n===================================================================\n--- /home/alex/sots-re/campaign/research/research-completion-abi.md\n+++ /home/alex/sots-re/campaign/research/research-completion-abi.md\n@@ -19,16 +19,23 @@\n package found three additional truncated historical stops (ObservedTech append/reallocator and\n string allocation/replacement); their widened streams are now the byte authority. No archive\n production-history inference or live-safety claim is made.\n \n-The TurnEvents correction's current-session boundary authority is\n-`verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/`. It supersedes the stale-session\n+The TurnEvents correction's historical-session boundary authority is\n+`verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/`. It superseded the stale-session\n attribution and truncated nested-copy stream invalidated by decisions\n `d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. The package binds the actual session\n and a fail-if-used output directory; captures complete helper authority through `0x0077992f`; and\n retains `0x00779a20` as an expected-failing boundary beside complete `0x00779a21`, `0x00779a23`, and\n `0x00779a28` controls plus raw bytes. It is analyst static evidence awaiting a fresh independent\n-verifier, not restored acceptance.\n+verifier, not restored acceptance. Astra decision `d-e9d6d48cd77538556d1a1c1f` later barred reuse of\n+that package against changed source. The current-source remeasurement is\n+`verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/`, with preflight, plan,\n+recipe and interpretation in the sibling `run-35e59053176da458d8b46fea-preflight.json`,\n+`plan-run-35e59053176da458d8b46fea.md`, `capture_run_35e59053176da458d8b46fea.py`, and\n+`report-run-35e59053176da458d8b46fea.md`. The unsuffixed run directory preserves a failed recipe\n+predicate and is not authority. The new package is analyst static evidence awaiting fresh independent\n+reproduction, not restored acceptance.\n \n ## Implementable machine boundaries recovered\n \n * `0x008562a0`: ObservedTech default constructor, ECX receiver, EAX return, plain `ret`.\n\n","files":[{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md","relativePath":"verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md","type":"add","patch":"Index: /home/alex/sots-re/verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md\n===================================================================\n--- /home/alex/sots-re/verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md\n+++ /home/alex/sots-re/verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md\n@@ -0,0 +1,73 @@\n+# Current-source ABI static capture report — run-35e59053176da458d8b46fea\n+\n+## Result and provenance\n+\n+The authoritative package is\n+`verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/`; its manifest records\n+27 positive objdump executions, all return code zero with nonempty stdout and empty stderr (118,734\n+stdout bytes, zero stderr bytes), and no failed checks. Paired source identity remained engine\n+`ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd` and RE\n+`e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f` before/after. Binary,\n+objdump, Python, save and parser identities are in the manifest and preflight.\n+\n+The sibling directory without `-repair1` is a preserved failed recipe run. Its streams are valid,\n+but two checks incorrectly required the bad boundary stream to omit its terminal row. Actual objdump\n+retains a one-byte terminal row (`c2` or `74`) and replaces it with the complete row when the stop is\n+aligned. The repaired recipe tests equal preceding rows plus that replacement. This was a local test\n+predicate defect, not contradictory binary behavior and not a retroactive pass.\n+\n+## Measured static observations\n+\n+* Stop `0x00779913` emits truncated `779912: c2`; stop `0x00779915` emits complete\n+ `779912: c2 04 00`, and authority through `0x00779930` includes the complete return plus cleanup at\n+ `0x00779915`. Direct PE mapping independently reads `c20400` at VA `0x00779912`.\n+* The second boundary family reproduces truncated `74` at stop `0x00779a20`, complete `74 10` at\n+ `0x00779a21`, then complete `8b cf` and `e8 28 6a ff ff` at stops `0x00779a23` and\n+ `0x00779a28`. Direct PE bytes are `74108bcfe8286affff`.\n+* ObservedTech append/growth instructions use `0x2c`; PlayerEvent append/nested-copy/destruction use\n+ `0x74`; TurnEvents append/prune use `0x18`. These are distinct concrete element strides.\n+* ObservedTech allocation multiplies count by `0x2c` and calls `0x00924fb6`; old-element growth and\n+ PlayerEvent/string destruction paths call `0x00924faa`. PlayerEvent append calls copy constructor\n+ `0x007693f0`; outer TurnEvents append calls nested copy `0x00779850`.\n+* Nested copy zeros the destination three-pointer header, distinguishes empty count from allocation,\n+ allocates through `0x0078af40`, multiplies by `0x74`, calls range helper `0x007725a0`, writes the\n+ copied end pointer, returns destination in EAX, and ends `ret 4`. Its captured unwind edge calls\n+ `0x00629580` before the allocation-failure helper; this edge was exposed, not executed.\n+* Get/create scans every `0x18` bucket and retains the last matching `+4` turn. On miss it establishes\n+ vptr and zero nested-vector pointers, calls outer append, calls nested-vector cleanup, then stores\n+ the requested stack turn into stored-last `+4`; both returns are `ret 4`.\n+* Outer append separates capacity-growth and spare-capacity edges, copies source `+4`, advances source\n+ to nested vector `+8`, deep-copies it, then increments end by `0x18`; it ends `ret 4`.\n+* Duplicate scan advances by `0x74`; after prior field comparisons it performs description comparison\n+ at `0x0046f8c0`, caller-cleans two arguments, and reaches match return only when AL is zero. Thus the\n+ fresh instructions remain consistent with description equality being required.\n+* Direct PE mapping reads three `0x7f7fffff` words at constructor-default VA `0x00af0dc8`. This is a\n+ binary constant observation, not a newly parsed event record.\n+\n+The manifest's direct-PE entries named `observed-stride`, `player-stride`, and `turn-stride` sampled\n+fixed addresses but were not used to establish strides; their names are overbroad. The stride facts\n+above come from the archived instruction rows. This limitation does not affect the boundary-byte or\n+constructor-default direct controls.\n+\n+## Interpretation, dependencies, and limits\n+\n+The measurements support the prior static interpretation that vector elements require construction\n+and nested/string ownership rather than raw header copy. Calling `0x00924fb6`, `0x00924faa`, or\n+`0x0046f8c0` remains an original-helper dependency with the original CRT/string layout. A standalone\n+implementation needs one coherent allocator/copy/destruction family; this capture does not show that\n+original allocations can safely cross a replacement boundary.\n+\n+No game branch, allocation, constructor, destructor, throw, event post, ID assignment, record write,\n+container mutation, or RNG draw executed. The save was hashed, not parsed. Existing/miss,\n+spare/full-capacity, empty/nonempty, null/nonnull, short/long-string, normal/unwind, duplicate and\n+description-only-different states are instruction exposures only. Exact PostEvent caller inputs,\n+defaulting and total write order remain outside this bounded remeasurement.\n+\n+## Independent falsification package\n+\n+A fresh verifier should use its own recipe and fail-if-exists directory, bind the current paired\n+digest, repeat the negative/aligned/authority boundaries and direct PE reads, challenge at least one\n+additional boundary, and parse the archived save independently for named player/event containers,\n+elements, IDs, strings, FLT_MAX words, empty-player states and the actual RNG leaf. It must preserve\n+all runtime residuals and must not count this analyst capture or archived prior verifier output as an\n+independent cross-check.\n","additions":73,"deletions":0},{"filePath":"/home/alex/sots-re/campaign/research/research-completion-abi.md","relativePath":"campaign/research/research-completion-abi.md","type":"update","patch":"Index: /home/alex/sots-re/campaign/research/research-completion-abi.md\n===================================================================\n--- /home/alex/sots-re/campaign/research/research-completion-abi.md\n+++ /home/alex/sots-re/campaign/research/research-completion-abi.md\n@@ -19,16 +19,23 @@\n package found three additional truncated historical stops (ObservedTech append/reallocator and\n string allocation/replacement); their widened streams are now the byte authority. No archive\n production-history inference or live-safety claim is made.\n \n-The TurnEvents correction's current-session boundary authority is\n-`verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/`. It supersedes the stale-session\n+The TurnEvents correction's historical-session boundary authority is\n+`verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/`. It superseded the stale-session\n attribution and truncated nested-copy stream invalidated by decisions\n `d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. The package binds the actual session\n and a fail-if-used output directory; captures complete helper authority through `0x0077992f`; and\n retains `0x00779a20` as an expected-failing boundary beside complete `0x00779a21`, `0x00779a23`, and\n `0x00779a28` controls plus raw bytes. It is analyst static evidence awaiting a fresh independent\n-verifier, not restored acceptance.\n+verifier, not restored acceptance. Astra decision `d-e9d6d48cd77538556d1a1c1f` later barred reuse of\n+that package against changed source. The current-source remeasurement is\n+`verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/`, with preflight, plan,\n+recipe and interpretation in the sibling `run-35e59053176da458d8b46fea-preflight.json`,\n+`plan-run-35e59053176da458d8b46fea.md`, `capture_run_35e59053176da458d8b46fea.py`, and\n+`report-run-35e59053176da458d8b46fea.md`. The unsuffixed run directory preserves a failed recipe\n+predicate and is not authority. The new package is analyst static evidence awaiting fresh independent\n+reproduction, not restored acceptance.\n \n ## Implementable machine boundaries recovered\n \n * `0x008562a0`: ObservedTech default constructor, ECX receiver, EAX return, plain `ret`.\n","additions":10,"deletions":3}],"diagnostics":{},"truncated":false},"title":"Success. Updated the following files:\nA verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md\nM campaign/research/research-completion-abi.md","time":{"start":1789046686326,"end":1789046686340}},"metadata":{"openai":{"itemId":"fc_078e003b6561b42b016aa2af63a44487d1b347203b58c154fc"}},"id":"prt_08b7d1db7001ncl3lR2gLoD698","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7cf50b001BYS3odR2Y5deN0"}} +{"type":"step_finish","timestamp":1789046686443,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7e02e8001GqTYNLiy29JUWN","reason":"tool-calls","snapshot":"7c8b1b1b72375c4a0ed280afe9054692f02cb9ea","messageID":"msg_08b7cf50b001BYS3odR2Y5deN0","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":95075,"input":7969,"output":1830,"reasoning":156,"cache":{"write":0,"read":85120}},"cost":0}} +{"type":"step_start","timestamp":1789046689212,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7e0db3001JtxiArLNstzEho","messageID":"msg_08b7e03240016SYN9h2CJZDumg","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"99e65a8572147577211122794cc304301f9bf092","type":"step-start"}} +{"type":"tool_use","timestamp":1789046708059,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_NWnQqNKltbKLPGE2uWjK4AOr","state":{"status":"completed","input":{"command":"git status --short -- campaign/research/research-completion-abi.md verify/results/research-completion-abi","workdir":"/home/alex/sots-re"},"output":" M campaign/research/research-completion-abi.md\n?? verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n?? verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\n?? verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md\n?? verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\n?? verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/\n?? verify/results/research-completion-abi/run-35e59053176da458d8b46fea/\n","metadata":{"output":" M campaign/research/research-completion-abi.md\n?? verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n?? verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\n?? verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md\n?? verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\n?? verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/\n?? verify/results/research-completion-abi/run-35e59053176da458d8b46fea/\n","exit":0,"truncated":false},"title":"git status --short -- campaign/research/research-completion-abi.md verify/results/research-completion-abi","time":{"start":1789046708032,"end":1789046708057}},"metadata":{"openai":{"itemId":"fc_05904618e79cfd6b016aa2afb3a59487d1a9c2858579750410"}},"id":"prt_08b7e573d001pX3JxYX5YRtPLY","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7e03240016SYN9h2CJZDumg"}} +{"type":"tool_use","timestamp":1789046708077,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_CB8XpBloBsrA9k2Uj6AldzQw","state":{"status":"completed","input":{"command":"python3 -c 'import json; p=\"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json\"; d=json.load(open(p)); assert not d[\"failed\"]; assert d[\"source_before\"][\"value\"]==d[\"source_after\"][\"value\"]; assert len(d[\"commands\"])==27; print(\"manifest assertions: pass\")' && sha256sum verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md campaign/research/research-completion-abi.md verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json","workdir":"/home/alex/sots-re"},"output":"manifest assertions: pass\n082207ef0c1563c59828fc15f48c4d3b2506d6af20847be0e7efd774bfb82146 verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json\n5d30cb2edbab82e28b61bb034b2242cd271b4cc38fb1c895fad5b0a00f1b1ef8 verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md\n76c35015265ab07e159edf9fc53dfbd9a7a10b6f89046536998ca8e517af229e campaign/research/research-completion-abi.md\n4f75d389312bf4ae4c72964728c34b22c6936d716a6fe0463bbc3e035c548faa verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n57d20b2a42fe2db5c1feff7c7839532a505e60305cbfeec82c40969ae73cabcf verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\n7ca4dc72850cb0fbef6370bfbea8ece5cf102c886a6ef99c9940108fe44501aa verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\n","metadata":{"output":"manifest assertions: pass\n082207ef0c1563c59828fc15f48c4d3b2506d6af20847be0e7efd774bfb82146 verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json\n5d30cb2edbab82e28b61bb034b2242cd271b4cc38fb1c895fad5b0a00f1b1ef8 verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md\n76c35015265ab07e159edf9fc53dfbd9a7a10b6f89046536998ca8e517af229e campaign/research/research-completion-abi.md\n4f75d389312bf4ae4c72964728c34b22c6936d716a6fe0463bbc3e035c548faa verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\n57d20b2a42fe2db5c1feff7c7839532a505e60305cbfeec82c40969ae73cabcf verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\n7ca4dc72850cb0fbef6370bfbea8ece5cf102c886a6ef99c9940108fe44501aa verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\n","exit":0,"truncated":false},"title":"python3 -c 'import json; p=\"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json\"; d=json.load(open(p)); assert not d[\"failed\"]; assert d[\"source_before\"][\"value\"]==d[\"source_after\"][\"value\"]; assert len(d[\"commands\"])==27; print(\"manifest assertions: pass\")' && sha256sum verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md campaign/research/research-completion-abi.md verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json","time":{"start":1789046708026,"end":1789046708076}},"metadata":{"openai":{"itemId":"fc_05904618e79cfd6b016aa2afb3a58c87d18fd97714e70e6f84"}},"id":"prt_08b7e5701001rY4NAqTyJyBd1x","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7e03240016SYN9h2CJZDumg"}} +{"type":"tool_use","timestamp":1789046708125,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_Cy9Nu2B6AlyOsOyU7kgYlwKj","state":{"status":"completed","input":{"command":"git status --short","workdir":"/tmp/opencode/sots-final-research-engine"},"output":" M CONTRIBUTING.md\n M README.md\n M docs/S-standalone.md\n M src/app/turn.cpp\n M src/game/sim/CMakeLists.txt\n M src/mars/rng/mt19937.cpp\n M src/mars/rng/mt19937.h\n M tests/app/CMakeLists.txt\n M tests/app/test_command_replay.cpp\n M tests/app/test_turn.cpp\n M tests/app/test_turn_record.cpp\n M tests/game_config/CMakeLists.txt\n M tests/game_data/CMakeLists.txt\n M tests/game_design/CMakeLists.txt\n M tests/game_design/test_census_saves.cpp\n M tests/game_sim/CMakeLists.txt\n M tests/mars_stream/CMakeLists.txt\n M tests/mars_stream/test_domains.cpp\n M tests/mars_stream/test_rng.cpp\n M tests/mars_stream/test_save.cpp\n M tests/mars_text/CMakeLists.txt\n M tests/mars_vfs/CMakeLists.txt\n M tools/clean_room_check.sh\n?? AGENTS.md\n?? CLAUDE.md\n?? docs/architecture.md\n?? opencode.json\n?? tools/clean_room_check.py\n","metadata":{"output":" M CONTRIBUTING.md\n M README.md\n M docs/S-standalone.md\n M src/app/turn.cpp\n M src/game/sim/CMakeLists.txt\n M src/mars/rng/mt19937.cpp\n M src/mars/rng/mt19937.h\n M tests/app/CMakeLists.txt\n M tests/app/test_command_replay.cpp\n M tests/app/test_turn.cpp\n M tests/app/test_turn_record.cpp\n M tests/game_config/CMakeLists.txt\n M tests/game_data/CMakeLists.txt\n M tests/game_design/CMakeLists.txt\n M tests/game_design/test_census_saves.cpp\n M tests/game_sim/CMakeLists.txt\n M tests/mars_stream/CMakeLists.txt\n M tests/mars_stream/test_domains.cpp\n M tests/mars_stream/test_rng.cpp\n M tests/mars_stream/test_save.cpp\n M tests/mars_text/CMakeLists.txt\n M tests/mars_vfs/CMakeLists.txt\n M tools/clean_room_check.sh\n?? AGENTS.md\n?? CLAUDE.md\n?? docs/architecture.md\n?? opencode.json\n?? tools/clean_room_check.py\n","exit":0,"truncated":false},"title":"git status --short","time":{"start":1789046708101,"end":1789046708119}},"metadata":{"openai":{"itemId":"fc_05904618e79cfd6b016aa2afb3a5a087d1b3c25c1126956701"}},"id":"prt_08b7e5744001oz9gZBGhurL3u4","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7e03240016SYN9h2CJZDumg"}} +{"type":"tool_use","timestamp":1789046708125,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_8MXf8CmRwRL9rwq3TkTKteTO","state":{"status":"completed","input":{"command":"git status --short","workdir":"/tmp/opencode/sots-final-research-re"},"output":" M README.md\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? AGENTS.md\n?? CLAUDE.md\n?? campaign/agents/\n?? campaign/contract.schema.json\n?? campaign/models.json\n?? guides/multi-agent-workflow.md\n?? guides/windows-lab-housekeeping.md\n?? opencode.json\n?? tools/campaign.py\n?? tools/check_agent_config.py\n?? tools/evidence.py\n?? tools/gate.py\n?? tools/run_agent.py\n?? tools/select_evidence.py\n?? tools/windows-housekeeping/\n?? verify/config/\n?? verify/publishing/\n?? verify/tooling/\n","metadata":{"output":" M README.md\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? AGENTS.md\n?? CLAUDE.md\n?? campaign/agents/\n?? campaign/contract.schema.json\n?? campaign/models.json\n?? guides/multi-agent-workflow.md\n?? guides/windows-lab-housekeeping.md\n?? opencode.json\n?? tools/campaign.py\n?? tools/check_agent_config.py\n?? tools/evidence.py\n?? tools/gate.py\n?? tools/run_agent.py\n?? tools/select_evidence.py\n?? tools/windows-housekeeping/\n?? verify/config/\n?? verify/publishing/\n?? verify/tooling/\n","exit":0,"truncated":false},"title":"git status --short","time":{"start":1789046708107,"end":1789046708124}},"metadata":{"openai":{"itemId":"fc_05904618e79cfd6b016aa2afb3a5a887d1beee49a11b34d82f"}},"id":"prt_08b7e5788001Lkwxe552XWgSO2","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7e03240016SYN9h2CJZDumg"}} +{"type":"tool_use","timestamp":1789046708173,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_3sbf08NiyguXT79yzXiF9HBl","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re validate && python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re","workdir":"/home/alex/sots-re","timeout":120000},"output":"[\n \"controls-bootstrap\",\n \"launcher-smoke\",\n \"research-completion-abi\",\n \"research-live-record-bridge\",\n \"research-replacement\"\n]\n{\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\"\n }\n}\n","metadata":{"output":"[\n \"controls-bootstrap\",\n \"launcher-smoke\",\n \"research-completion-abi\",\n \"research-live-record-bridge\",\n \"research-replacement\"\n]\n{\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f\"\n }\n}\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re validate && python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re","time":{"start":1789046707965,"end":1789046708172}},"metadata":{"openai":{"itemId":"fc_05904618e79cfd6b016aa2afb3a57487d1abd5405c86bc8319"}},"id":"prt_08b7e56f6001MwLZgZHX0BblIW","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7e03240016SYN9h2CJZDumg"}} +{"type":"step_finish","timestamp":1789046708269,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7e582b001QmqsG7KH3ncVeR","reason":"tool-calls","snapshot":"d530d1796d7cd0077f2c2e0c9b85f22109afed77","messageID":"msg_08b7e03240016SYN9h2CJZDumg","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":95711,"input":2202,"output":490,"reasoning":91,"cache":{"write":0,"read":92928}},"cost":0}} +{"type":"step_start","timestamp":1789046710363,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7e6057001mx6vi4MqAn9M2M","messageID":"msg_08b7e5864001bhz7eaz644Isw2","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"1d5ff35edf1283bc4c296aa13e9eb5540b4f35ed","type":"step-start"}} +{"type":"tool_use","timestamp":1789046718945,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"todowrite","callID":"call_6RS6ZrqdAksPBSifjONeYCHO","state":{"status":"completed","input":{"todos":[{"content":"Read canonical campaign state, contract, checkpoint, and open surprises","status":"completed","priority":"high"},{"content":"Verify worktree, source, and resource identities","status":"completed","priority":"high"},{"content":"Execute the checkpoint's exact next ABI research action within owned scope","status":"completed","priority":"high"},{"content":"Coordinate evidence package for independent falsification without delegation","status":"completed","priority":"medium"},{"content":"Write mandatory canonical campaign checkpoint and stop","status":"in_progress","priority":"high"}]},"output":"[\n {\n \"content\": \"Read canonical campaign state, contract, checkpoint, and open surprises\",\n \"status\": \"completed\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Verify worktree, source, and resource identities\",\n \"status\": \"completed\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Execute the checkpoint's exact next ABI research action within owned scope\",\n \"status\": \"completed\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Coordinate evidence package for independent falsification without delegation\",\n \"status\": \"completed\",\n \"priority\": \"medium\"\n },\n {\n \"content\": \"Write mandatory canonical campaign checkpoint and stop\",\n \"status\": \"in_progress\",\n \"priority\": \"high\"\n }\n]","metadata":{"todos":[{"content":"Read canonical campaign state, contract, checkpoint, and open surprises","status":"completed","priority":"high"},{"content":"Verify worktree, source, and resource identities","status":"completed","priority":"high"},{"content":"Execute the checkpoint's exact next ABI research action within owned scope","status":"completed","priority":"high"},{"content":"Coordinate evidence package for independent falsification without delegation","status":"completed","priority":"medium"},{"content":"Write mandatory canonical campaign checkpoint and stop","status":"in_progress","priority":"high"}],"truncated":false},"title":"1 todos","time":{"start":1789046718941,"end":1789046718943}},"metadata":{"openai":{"itemId":"fc_0ccdfb20c51d340c016aa2afbb312c87d1a92674883064c7a6"}},"id":"prt_08b7e73a8001PzRuB5ZsorR6s7","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7e5864001bhz7eaz644Isw2"}} +{"type":"step_finish","timestamp":1789046719116,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7e8289001v5LD6ryVLnI3ky","reason":"tool-calls","snapshot":"6cd88d991c174a091328ab2d5b1fa349622c8bca","messageID":"msg_08b7e5864001bhz7eaz644Isw2","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":97211,"input":1971,"output":127,"reasoning":137,"cache":{"write":0,"read":94976}},"cost":0}} +{"type":"step_start","timestamp":1789046721549,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7e8c09001i628nzozzKofGp","messageID":"msg_08b7e82b8001eyrT784phLBJGK","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"aaf683bfe021dbe35860884b9ab9ec54dd48acb6","type":"step-start"}} +{"type":"tool_use","timestamp":1789046752540,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_VgGMMfJQMKMIHGzuIy2AI02H","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-abi-analyst --role analyst --model openai/gpt-5.6-sol --session run-35e59053176da458d8b46fea --summary 'QUANTUM-END CHECKPOINT. OBSERVATIONS: canonical state validates; contract remains needs-revision with no open surprises and no evidence promotion. Assigned engine/RE HEADs remain pinned 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 / 3bfde5a70d874a723e797a695bbd847fd82c0aa7, common dirs /home/alex/sots-engine/.git /home/alex/sots-re/.git, preexisting dirty and untouched. Current campaign binding remained stable before/after capture and final check: engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f. Preflight archives exact campaign/runner/Python/objdump/binary/recipe/save/parser hashes. Canonical controls tests ran 37/37 pass; config tests 8/8 pass; paired verify/campaign/test_controls.py remains absent and no restoration was attempted. EXPERIMENT: authoritative repair1 package ran 27 objdump commands, all zero/nonempty/empty-stderr, 118734 stdout bytes, stable source, zero failed checks. It reproduces expected truncated 0x779913 c2 versus aligned 0x779915 c2 04 00, authority 0x779930, a20/a21/a23/a28 and direct PE bytes. Static rows expose 0x2c/0x74/0x18 strides, original allocation/free thunks, deep nested copy/destruction, get/create scan/miss/copy/cleanup/turn-store ordering and description comparison. DECISION: static current-source observations support the bounded handoff only; no independent-cross-check, live allocator safety, runtime record construction, replacement or acceptance claim. Unsuffixed first run is preserved failed measurement: two recipe predicates wrongly expected omission rather than truncated-row replacement; raw behavior matched predeclared instrument expectation, repaired in distinct fail-if-exists output. Direct entries named observed/player/turn-stride are overbroad and explicitly unused; instruction rows establish strides. RUNTIME LIMITS: no live branch, allocation, throw, constructor/destructor, event/ID/container write, save parse or RNG execution. Original helpers 0x00924fb6, 0x00924faa and 0x0046f8c0 remain dependencies when called. TESTS: campaign validate pass; manifest assertions pass; source binding stable. BLOCKERS: independent criterion remains unperformed; exact PostEvent caller inputs/defaults/write order and live capacity/string/unwind states remain unresolved. RESOURCES: no leases held; no VM, Ghidra, game, build host, or lab access; no staging/commit/push.' --artifact verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json --artifact verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md --artifact verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py --artifact verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json --artifact verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json --artifact verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md --artifact campaign/research/research-completion-abi.md --next-action 'Launch a fresh independent verifier on the current e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f RE binding to predeclare and execute verifier-owned fail-if-exists static boundary/ABI reproduction plus independent turn3 save element/RNG parsing; preserve the failed analyst run and do not promote acceptance.'","workdir":"/home/alex/sots-re"},"output":"{\n \"actor\": \"research-abi-analyst\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\",\n \"sha256\": \"7ca4dc72850cb0fbef6370bfbea8ece5cf102c886a6ef99c9940108fe44501aa\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\",\n \"sha256\": \"57d20b2a42fe2db5c1feff7c7839532a505e60305cbfeec82c40969ae73cabcf\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\",\n \"sha256\": \"4f75d389312bf4ae4c72964728c34b22c6936d716a6fe0463bbc3e035c548faa\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json\",\n \"sha256\": \"55fcc92360c26b743389059c54bd69d5a1ac8ca02e3d2e818b9283b3630d83ae\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json\",\n \"sha256\": \"082207ef0c1563c59828fc15f48c4d3b2506d6af20847be0e7efd774bfb82146\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md\",\n \"sha256\": \"5d30cb2edbab82e28b61bb034b2242cd271b4cc38fb1c895fad5b0a00f1b1ef8\"\n },\n {\n \"path\": \"campaign/research/research-completion-abi.md\",\n \"sha256\": \"76c35015265ab07e159edf9fc53dfbd9a7a10b6f89046536998ca8e517af229e\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"32c9f62a4fda2ab02b29d4c4\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Launch a fresh independent verifier on the current e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f RE binding to predeclare and execute verifier-owned fail-if-exists static boundary/ABI reproduction plus independent turn3 save element/RNG parsing; preserve the failed analyst run and do not promote acceptance.\",\n \"role\": \"analyst\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-35e59053176da458d8b46fea\",\n \"summary\": \"QUANTUM-END CHECKPOINT. OBSERVATIONS: canonical state validates; contract remains needs-revision with no open surprises and no evidence promotion. Assigned engine/RE HEADs remain pinned 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 / 3bfde5a70d874a723e797a695bbd847fd82c0aa7, common dirs /home/alex/sots-engine/.git /home/alex/sots-re/.git, preexisting dirty and untouched. Current campaign binding remained stable before/after capture and final check: engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f. Preflight archives exact campaign/runner/Python/objdump/binary/recipe/save/parser hashes. Canonical controls tests ran 37/37 pass; config tests 8/8 pass; paired verify/campaign/test_controls.py remains absent and no restoration was attempted. EXPERIMENT: authoritative repair1 package ran 27 objdump commands, all zero/nonempty/empty-stderr, 118734 stdout bytes, stable source, zero failed checks. It reproduces expected truncated 0x779913 c2 versus aligned 0x779915 c2 04 00, authority 0x779930, a20/a21/a23/a28 and direct PE bytes. Static rows expose 0x2c/0x74/0x18 strides, original allocation/free thunks, deep nested copy/destruction, get/create scan/miss/copy/cleanup/turn-store ordering and description comparison. DECISION: static current-source observations support the bounded handoff only; no independent-cross-check, live allocator safety, runtime record construction, replacement or acceptance claim. Unsuffixed first run is preserved failed measurement: two recipe predicates wrongly expected omission rather than truncated-row replacement; raw behavior matched predeclared instrument expectation, repaired in distinct fail-if-exists output. Direct entries named observed/player/turn-stride are overbroad and explicitly unused; instruction rows establish strides. RUNTIME LIMITS: no live branch, allocation, throw, constructor/destructor, event/ID/container write, save parse or RNG execution. Original helpers 0x00924fb6, 0x00924faa and 0x0046f8c0 remain dependencies when called. TESTS: campaign validate pass; manifest assertions pass; source binding stable. BLOCKERS: independent criterion remains unperformed; exact PostEvent caller inputs/defaults/write order and live capacity/string/unwind states remain unresolved. RESOURCES: no leases held; no VM, Ghidra, game, build host, or lab access; no staging/commit/push.\",\n \"timestamp\": \"2026-09-10T13:25:52.516269+00:00\"\n}\n","metadata":{"output":"{\n \"actor\": \"research-abi-analyst\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\",\n \"sha256\": \"7ca4dc72850cb0fbef6370bfbea8ece5cf102c886a6ef99c9940108fe44501aa\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\",\n \"sha256\": \"57d20b2a42fe2db5c1feff7c7839532a505e60305cbfeec82c40969ae73cabcf\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\",\n \"sha256\": \"4f75d389312bf4ae4c72964728c34b22c6936d716a6fe0463bbc3e035c548faa\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json\",\n \"sha256\": \"55fcc92360c26b743389059c54bd69d5a1ac8ca02e3d2e818b9283b3630d83ae\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json\",\n \"sha256\": \"082207ef0c1563c59828fc15f48c4d3b2506d6af20847be0e7efd774bfb82146\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md\",\n \"sha256\": \"5d30cb2edbab82e28b61bb034b2242cd271b4cc38fb1c895fad5b0a00f1b1ef8\"\n },\n {\n \"path\": \"campaign/research/research-completion-abi.md\",\n \"sha256\": \"76c35015265ab07e159edf9fc53dfbd9a7a10b6f89046536998ca8e517af229e\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"32c9f62a4fda2ab02b29d4c4\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Launch a fresh independent verifier on the current e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f RE binding to predeclare and execute verifier-owned fail-if-exists static boundary/ABI reproduction plus independent turn3 save element/RNG parsing; preserve the failed analyst run and do not promote acceptance.\",\n \"role\": \"analyst\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-35e59053176da458d8b46fea\",\n \"summary\": \"QUANTUM-END CHECKPOINT. OBSERVATIONS: canonical state validates; contract remains needs-revision with no open surprises and no evidence promotion. Assigned engine/RE HEADs remain pinned 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 / 3bfde5a70d874a723e797a695bbd847fd82c0aa7, common dirs /home/alex/sots-engine/.git /home/alex/sots-re/.git, preexisting dirty and untouched. Current campaign binding remained stable before/after capture and final check: engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f. Preflight archives exact campaign/runner/Python/objdump/binary/recipe/save/parser hashes. Canonical controls tests ran 37/37 pass; config tests 8/8 pass; paired verify/campaign/test_controls.py remains absent and no restoration was attempted. EXPERIMENT: authoritative repair1 package ran 27 objdump commands, all zero/nonempty/empty-stderr, 118734 stdout bytes, stable source, zero failed checks. It reproduces expected truncated 0x779913 c2 versus aligned 0x779915 c2 04 00, authority 0x779930, a20/a21/a23/a28 and direct PE bytes. Static rows expose 0x2c/0x74/0x18 strides, original allocation/free thunks, deep nested copy/destruction, get/create scan/miss/copy/cleanup/turn-store ordering and description comparison. DECISION: static current-source observations support the bounded handoff only; no independent-cross-check, live allocator safety, runtime record construction, replacement or acceptance claim. Unsuffixed first run is preserved failed measurement: two recipe predicates wrongly expected omission rather than truncated-row replacement; raw behavior matched predeclared instrument expectation, repaired in distinct fail-if-exists output. Direct entries named observed/player/turn-stride are overbroad and explicitly unused; instruction rows establish strides. RUNTIME LIMITS: no live branch, allocation, throw, constructor/destructor, event/ID/container write, save parse or RNG execution. Original helpers 0x00924fb6, 0x00924faa and 0x0046f8c0 remain dependencies when called. TESTS: campaign validate pass; manifest assertions pass; source binding stable. BLOCKERS: independent criterion remains unperformed; exact PostEvent caller inputs/defaults/write order and live capacity/string/unwind states remain unresolved. RESOURCES: no leases held; no VM, Ghidra, game, build host, or lab access; no staging/commit/push.\",\n \"timestamp\": \"2026-09-10T13:25:52.516269+00:00\"\n}\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-abi-analyst --role analyst --model openai/gpt-5.6-sol --session run-35e59053176da458d8b46fea --summary 'QUANTUM-END CHECKPOINT. OBSERVATIONS: canonical state validates; contract remains needs-revision with no open surprises and no evidence promotion. Assigned engine/RE HEADs remain pinned 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 / 3bfde5a70d874a723e797a695bbd847fd82c0aa7, common dirs /home/alex/sots-engine/.git /home/alex/sots-re/.git, preexisting dirty and untouched. Current campaign binding remained stable before/after capture and final check: engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f. Preflight archives exact campaign/runner/Python/objdump/binary/recipe/save/parser hashes. Canonical controls tests ran 37/37 pass; config tests 8/8 pass; paired verify/campaign/test_controls.py remains absent and no restoration was attempted. EXPERIMENT: authoritative repair1 package ran 27 objdump commands, all zero/nonempty/empty-stderr, 118734 stdout bytes, stable source, zero failed checks. It reproduces expected truncated 0x779913 c2 versus aligned 0x779915 c2 04 00, authority 0x779930, a20/a21/a23/a28 and direct PE bytes. Static rows expose 0x2c/0x74/0x18 strides, original allocation/free thunks, deep nested copy/destruction, get/create scan/miss/copy/cleanup/turn-store ordering and description comparison. DECISION: static current-source observations support the bounded handoff only; no independent-cross-check, live allocator safety, runtime record construction, replacement or acceptance claim. Unsuffixed first run is preserved failed measurement: two recipe predicates wrongly expected omission rather than truncated-row replacement; raw behavior matched predeclared instrument expectation, repaired in distinct fail-if-exists output. Direct entries named observed/player/turn-stride are overbroad and explicitly unused; instruction rows establish strides. RUNTIME LIMITS: no live branch, allocation, throw, constructor/destructor, event/ID/container write, save parse or RNG execution. Original helpers 0x00924fb6, 0x00924faa and 0x0046f8c0 remain dependencies when called. TESTS: campaign validate pass; manifest assertions pass; source binding stable. BLOCKERS: independent criterion remains unperformed; exact PostEvent caller inputs/defaults/write order and live capacity/string/unwind states remain unresolved. RESOURCES: no leases held; no VM, Ghidra, game, build host, or lab access; no staging/commit/push.' --artifact verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json --artifact verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md --artifact verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py --artifact verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json --artifact verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json --artifact verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md --artifact campaign/research/research-completion-abi.md --next-action 'Launch a fresh independent verifier on the current e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f RE binding to predeclare and execute verifier-owned fail-if-exists static boundary/ABI reproduction plus independent turn3 save element/RNG parsing; preserve the failed analyst run and do not promote acceptance.'","time":{"start":1789046752474,"end":1789046752538}},"metadata":{"openai":{"itemId":"fc_0c6c8310fb4ba5f5016aa2afc1744c87d181f36478c1f92e96"}},"id":"prt_08b7e8c0b001WV9CMw2vkqt5RC","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7e82b8001eyrT784phLBJGK"}} +{"type":"step_finish","timestamp":1789046752678,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7f05a30012wJG04Lr6eNgoy","reason":"tool-calls","snapshot":"b0400d702607dc83cb8960774b20379a1f809bed","messageID":"msg_08b7e82b8001eyrT784phLBJGK","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":98367,"input":628,"output":971,"reasoning":0,"cache":{"write":0,"read":96768}},"cost":0}} +{"type":"step_start","timestamp":1789046754722,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7f0d9a001ynpUDg4tYw2n4M","messageID":"msg_08b7f05d70015XJGErw31fN8b7","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"e7cd18dbb053fbb3f39cac0c9c3f9197eb6f9fc9","type":"step-start"}} +{"type":"tool_use","timestamp":1789046760775,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"bash","callID":"call_LAs9pNN5MxNYouHnC9kYJ9uG","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re validate && python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi","workdir":"/home/alex/sots-re","timeout":120000},"output":"[\n \"controls-bootstrap\",\n \"launcher-smoke\",\n \"research-completion-abi\",\n \"research-live-record-bridge\",\n \"research-replacement\"\n]\n[\n {\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-32c9f62a4fda2ab02b29d4c4.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"open_surprises\": [],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"needs-revision\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n }\n]\n","metadata":{"output":"[\n \"controls-bootstrap\",\n \"launcher-smoke\",\n \"research-completion-abi\",\n \"research-live-record-bridge\",\n \"research-replacement\"\n]\n[\n {\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-32c9f62a4fda2ab02b29d4c4.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"open_surprises\": [],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"needs-revision\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n }\n]\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re validate && python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi","time":{"start":1789046760688,"end":1789046760774}},"metadata":{"openai":{"itemId":"fc_0c1f8f8f880b1301016aa2afe845b087d1b659663422af0cf1"}},"id":"prt_08b7f247f001VMTxK6C0427FMJ","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7f05d70015XJGErw31fN8b7"}} +{"type":"tool_use","timestamp":1789046760806,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"read","callID":"call_jGG6V9PY6kTxbsJLKsvq7TQD","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-32c9f62a4fda2ab02b29d4c4.json","offset":1,"limit":20},"output":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-32c9f62a4fda2ab02b29d4c4.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-analyst\",\n3: \"artifacts\": [\n4: {\n5: \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\",\n6: \"sha256\": \"7ca4dc72850cb0fbef6370bfbea8ece5cf102c886a6ef99c9940108fe44501aa\"\n7: },\n8: {\n9: \"path\": \"verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\",\n10: \"sha256\": \"57d20b2a42fe2db5c1feff7c7839532a505e60305cbfeec82c40969ae73cabcf\"\n11: },\n12: {\n13: \"path\": \"verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\",\n14: \"sha256\": \"4f75d389312bf4ae4c72964728c34b22c6936d716a6fe0463bbc3e035c548faa\"\n15: },\n16: {\n17: \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json\",\n18: \"sha256\": \"55fcc92360c26b743389059c54bd69d5a1ac8ca02e3d2e818b9283b3630d83ae\"\n19: },\n20: {\n\n(Showing lines 1-20 of 43. Use offset=21 to continue.)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-analyst\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\",\n \"sha256\": \"7ca4dc72850cb0fbef6370bfbea8ece5cf102c886a6ef99c9940108fe44501aa\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\",\n \"sha256\": \"57d20b2a42fe2db5c1feff7c7839532a505e60305cbfeec82c40969ae73cabcf\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\",\n \"sha256\": \"4f75d389312bf4ae4c72964728c34b22c6936d716a6fe0463bbc3e035c548faa\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json\",\n \"sha256\": \"55fcc92360c26b743389059c54bd69d5a1ac8ca02e3d2e818b9283b3630d83ae\"\n },\n {","truncated":true,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-32c9f62a4fda2ab02b29d4c4.json","text":"{\n \"actor\": \"research-abi-analyst\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json\",\n \"sha256\": \"7ca4dc72850cb0fbef6370bfbea8ece5cf102c886a6ef99c9940108fe44501aa\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md\",\n \"sha256\": \"57d20b2a42fe2db5c1feff7c7839532a505e60305cbfeec82c40969ae73cabcf\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py\",\n \"sha256\": \"4f75d389312bf4ae4c72964728c34b22c6936d716a6fe0463bbc3e035c548faa\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json\",\n \"sha256\": \"55fcc92360c26b743389059c54bd69d5a1ac8ca02e3d2e818b9283b3630d83ae\"\n },\n {","lineStart":1,"lineEnd":20,"totalLines":43,"truncated":true}},"title":"campaign/runtime/checkpoints/research-completion-abi-32c9f62a4fda2ab02b29d4c4.json","time":{"start":1789046760798,"end":1789046760804}},"metadata":{"openai":{"itemId":"fc_0c1f8f8f880b1301016aa2afe845c487d1b78ec8cc21a596a3"}},"id":"prt_08b7f24fa0014viJ18TR2We70T","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7f05d70015XJGErw31fN8b7"}} +{"type":"step_finish","timestamp":1789046760944,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7f25ed00116Hk26F0PrLGjz","reason":"tool-calls","snapshot":"5f234578f5004c1560198fee2d9615bf4b17425a","messageID":"msg_08b7f05d70015XJGErw31fN8b7","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":99971,"input":2519,"output":150,"reasoning":22,"cache":{"write":0,"read":97280}},"cost":0}} +{"type":"step_start","timestamp":1789046763906,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7f317f001ISMlU6pNJ48ZH2","messageID":"msg_08b7f261e0012Enj44izN15fIG","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"8088beb0f8879abad8cd60392530734894b30e67","type":"step-start"}} +{"type":"tool_use","timestamp":1789046767639,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"type":"tool","tool":"todowrite","callID":"call_yRHsZsZt5JLFOne9FTwONlVn","state":{"status":"completed","input":{"todos":[{"content":"Read canonical campaign state, contract, checkpoint, and open surprises","status":"completed","priority":"high"},{"content":"Verify worktree, source, and resource identities","status":"completed","priority":"high"},{"content":"Execute the checkpoint's exact next ABI research action within owned scope","status":"completed","priority":"high"},{"content":"Coordinate evidence package for independent falsification without delegation","status":"completed","priority":"medium"},{"content":"Write mandatory canonical campaign checkpoint and stop","status":"completed","priority":"high"}]},"output":"[\n {\n \"content\": \"Read canonical campaign state, contract, checkpoint, and open surprises\",\n \"status\": \"completed\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Verify worktree, source, and resource identities\",\n \"status\": \"completed\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Execute the checkpoint's exact next ABI research action within owned scope\",\n \"status\": \"completed\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Coordinate evidence package for independent falsification without delegation\",\n \"status\": \"completed\",\n \"priority\": \"medium\"\n },\n {\n \"content\": \"Write mandatory canonical campaign checkpoint and stop\",\n \"status\": \"completed\",\n \"priority\": \"high\"\n }\n]","metadata":{"todos":[{"content":"Read canonical campaign state, contract, checkpoint, and open surprises","status":"completed","priority":"high"},{"content":"Verify worktree, source, and resource identities","status":"completed","priority":"high"},{"content":"Execute the checkpoint's exact next ABI research action within owned scope","status":"completed","priority":"high"},{"content":"Coordinate evidence package for independent falsification without delegation","status":"completed","priority":"medium"},{"content":"Write mandatory canonical campaign checkpoint and stop","status":"completed","priority":"high"}],"truncated":false},"title":"0 todos","time":{"start":1789046767635,"end":1789046767637}},"metadata":{"openai":{"itemId":"fc_08bc4282501083ff016aa2afebce1887d1b4c1bb829d7eef5a"}},"id":"prt_08b7f3181001xRGozHlFyFEzNy","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","messageID":"msg_08b7f261e0012Enj44izN15fIG"}} +{"type":"step_finish","timestamp":1789046767814,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7f40c2001XOFGqqEMhDLD9O","reason":"tool-calls","snapshot":"c8ff4432e72dbbb44a180572ee5562d86b218b1d","messageID":"msg_08b7f261e0012Enj44izN15fIG","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":101508,"input":1672,"output":124,"reasoning":0,"cache":{"write":0,"read":99712}},"cost":0}} +{"type":"step_start","timestamp":1789046770201,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7f4a11001lpBLIjJcBXuSfQ","messageID":"msg_08b7f40fd001b2xDiVxuLu3v17","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","snapshot":"7c00aaddfb0665be9cf050f0ac70272b5bc00f71","type":"step-start"}} +{"type":"text","timestamp":1789046777322,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7f4a17001Wiz3Bhd8rdPVnb","messageID":"msg_08b7f40fd001b2xDiVxuLu3v17","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"text","text":"Bounded analyst quantum complete.\n\n- Current source binding: engine `ccd8e020…`, RE `e5cf1c44…`\n- Fresh static capture: 27 commands, all successful; no failed final checks\n- Authoritative manifest: `verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json`\n- Report: `verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md`\n- Preserved initial predicate-failure run; no claims promoted\n- Campaign validation passes; contract remains `needs-revision`\n- No leases or lab/source mutations\n- Final checkpoint: `campaign/runtime/checkpoints/research-completion-abi-32c9f62a4fda2ab02b29d4c4.json`\n\nExact next action: launch a fresh independent verifier against RE binding `e5cf1c44…` for verifier-owned static reproduction and independent save/RNG parsing.","time":{"start":1789046770199,"end":1789046777320},"metadata":{"openai":{"itemId":"msg_0bec34a33496f055016aa2aff21a6c87d1b2683d1bed28b351","phase":"final_answer"}}}} +{"type":"step_finish","timestamp":1789046777503,"sessionID":"ses_f748d122dffevl5miyoo8I3vQT","part":{"id":"prt_08b7f669c001tzubxbNhAK1EPE","reason":"stop","snapshot":"c890c4261ae82f94b85a429ef197fdde86f65f09","messageID":"msg_08b7f40fd001b2xDiVxuLu3v17","sessionID":"ses_f748d122dffevl5miyoo8I3vQT","type":"step-finish","tokens":{"total":101908,"input":444,"output":216,"reasoning":0,"cache":{"write":0,"read":101248}},"cost":0}} diff --git a/campaign/runtime/runs/run-35e59053176da458d8b46fea.stderr.log b/campaign/runtime/runs/run-35e59053176da458d8b46fea.stderr.log new file mode 100644 index 0000000..e69de29 diff --git a/campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.json b/campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.json new file mode 100644 index 0000000..cb00613 --- /dev/null +++ b/campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.json @@ -0,0 +1,10049 @@ +{ + "actor": "research-problem-resolver", + "checkpoint": "campaign/runtime/checkpoints/research-completion-abi-c80088956234568ade0a27fb.json", + "checkpoint_session": "run-481c9379a1efc0e527d2a28c", + "command": [ + "opencode", + "run", + "--format", + "json", + "--model", + "openai/gpt-6-astra", + "--agent", + "sots-resolver", + "Start a FRESH bounded campaign quantum (40 steps). No delegation.\nRole=resolver; requested model=openai/gpt-6-astra; actor=research-problem-resolver; checkpoint session=run-481c9379a1efc0e527d2a28c.\nCanonical state root: /home/alex/sots-re\nContract: /home/alex/sots-re/campaign/contracts/research-completion-abi.json\nLatest checkpoint: campaign/runtime/checkpoints/research-completion-abi-3fc22ea3c402274179ce4d1f.json\nEngine worktree: /tmp/opencode/sots-final-research-engine\nRE worktree: /tmp/opencode/sots-final-research-re\nRead canonical campaign/README.md, contract, latest checkpoint and open surprises before work. Verify source/worktree/resource identities. Only edit owned scope. Missing state means blocked. Do not commit, stage, push or mutate lab resources without explicit authority and a lease. Checkpoint every 20 tool calls or 15 minutes, before experiments, compaction and stopping; persist under canonical campaign/ using tools/campaign.py with the session above, exact model, actor and role. Include observations versus decisions, source identities, artifact paths, tests, blockers and ONE exact next action. Fresh checkpoint at quantum end is mandatory. Record a surprise and pause affected work if assumptions are falsified. RESOLUTION-ONLY: read evidence, record decisions/checkpoints; no implementation or architecture source edits. Do not rely on chat resume or automatic compaction." + ], + "completed_sessions": [ + "ses_f74919627ffeRQGj5CsfRwSUeL" + ], + "config": { + "canonical_files": { + "campaign/agents/analyst.md": "895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952", + "campaign/agents/implementer.md": "eb5581051a92b3d2b9ddd947812b1c02ff6a0b5e7619e7674adc26701e9a3d91", + "campaign/agents/lab.md": "48f1765ebdcb2015e631ad91428f65735ff899e119134b652f70788ff2eae5b8", + "campaign/agents/lead.md": "8fcfe52be845ed98a172afb47ea888b19bb7bffa80f7b50ace58d2bb66924220", + "campaign/agents/resolver.md": "742c36dc8567669d462566d6121eed42fcff5bff34e8eff466e92249f7ca195f", + "campaign/agents/verifier.md": "e467fc644e4e37d631a7a4e35038d9d3d0498491f1d7811d61d99271ff345c6b", + "campaign/models.json": "00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48", + "opencode.json": "027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99" + }, + "effective": { + "agent_sha256": "538b7262e3a21bba755e48cc1974eefb35bf710a5d23dde6d05fedb73250b7a0", + "sha256": "b991546a31472fa41788ec79102f8cf5165ebc45f43dbf2ccf848a13c01c727e" + }, + "expanded_prompt_sha256": "75226903f94e211868d70015e18e88cc3e3d338111743753bcd8a0f35e13e317", + "overlay": { + "agent": { + "sots-resolver": { + "model": "openai/gpt-6-astra", + "permission": { + "bash": { + "*": "deny", + "git -C * diff *": "allow", + "git -C * log *": "allow", + "git -C * rev-parse *": "allow", + "git -C * show *": "allow", + "git -C * status *": "allow", + "python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re checkpoint *": "allow", + "python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re resolve *": "allow", + "python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re status *": "allow", + "python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re surprise *": "allow", + "python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re validate *": "allow" + }, + "edit": { + "*": "deny", + "/home/alex/sots-re/campaign/contracts/*": "allow", + "/home/alex/sots-re/campaign/runtime/*": "allow" + }, + "external_directory": { + "*": "deny", + "/home/alex/sots-re": "allow", + "/home/alex/sots-re/*": "allow", + "/tmp/opencode/sots-final-research-engine": "allow", + "/tmp/opencode/sots-final-research-engine/*": "allow", + "/tmp/opencode/sots-final-research-re": "allow", + "/tmp/opencode/sots-final-research-re/*": "allow" + }, + "glob": "allow", + "grep": "allow", + "list": "allow", + "question": "deny", + "read": "allow", + "task": "deny" + }, + "prompt": "You are the SOTS resolver, running GPT-6 Astra. Read canonical RE AGENTS.md, campaign/README.md,\nthe surprise, affected contracts, checkpoints and raw evidence. First state the observation and\nits provenance. Check source/binary/input identity, positive execution and instrument neutrality\nbefore interpreting game behavior. Do not diagnose a stale build as a game mechanism.\n\nFor every affected claim record survives / qualified / overturned and exact domain. Name the\ncheapest discriminating experiment, revised scope/dependencies and affected evidence that must\nbe invalidated. Resolve through campaign controls with a durable Astra decision. Never silently\nwaive acceptance or treat untested inference as measurement. Leave blocked work blocked until\nthe decision supplies a valid next action. No autonomous lab mutation or nested delegation.\n\nCheckpoint every 20 calls/15min and before compaction, handoff or stop. Use short bounded sessions;\nthe repository carries decisions, not chat memory. Do not create another explanatory history in\nthe live board: link the actual decision and regenerate projections after integration.\n", + "steps": 40 + } + }, + "model": "openai/gpt-6-astra" + }, + "path": "/home/alex/sots-re/opencode.json", + "sha256": "027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99" + }, + "contract": "research-completion-abi", + "cwd": "/tmp/opencode/sots-final-research-re", + "ended_at": "2026-09-10T13:12:08.330871+00:00", + "error_events": 0, + "event_count": 71, + "id": "run-481c9379a1efc0e527d2a28c", + "log": "campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.jsonl", + "malformed_events": 0, + "max_steps": 40, + "observed_model_status": "unavailable", + "observed_models": [], + "observed_sessions": [ + "ses_f74919627ffeRQGj5CsfRwSUeL" + ], + "requested_model": "openai/gpt-6-astra", + "resolution_only": true, + "returncode": 0, + "role": "resolver", + "schema": "sots-run/1", + "source_after": { + "engine": { + "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", + "files": { + ".gitignore": { + "mode": 420, + "sha256": "5103c9533f0d31fea29c0cc85d543692af84a697416dfa7557e31c9843210145" + }, + "AGENTS.md": { + "mode": 420, + "sha256": "7d1d4bc05c35e3354a77b3c8d5d2c04fb9d6658d09e87bc814a50bc3d2033fb7" + }, + "CLAUDE.md": { + "mode": 420, + "sha256": "15d60c3d592302a2854df8bf6d39c0a578c22b9273a633447e10b76fd76291f5" + }, + "CMakeLists.txt": { + "mode": 420, + "sha256": "6e9791511ea23bf8bf5f7f58617a7e77bbe5006829609e425e565c11c1e8d7ed" + }, + "CMakePresets.json": { + "mode": 420, + "sha256": "fcd1dfe3989ee4f56fa3e419059e1db5621922165edf05f13cfe8e5d786d8bb0" + }, + "CONTRIBUTING.md": { + "mode": 420, + "sha256": "26a381fe08feb51f861655f77de4e558f056d1dba79162a2e82513a92d0e6506" + }, + "LICENSE": { + "mode": 420, + "sha256": "eedebad43ea495111bf4451d78cb440309d90a733d6a36445699dde0629f1858" + }, + "README.md": { + "mode": 420, + "sha256": "66c2437fe4f074e6499de50b0d5f0d013bc290333f4d4bf554b541261885a0c1" + }, + "cmake/toolchain-mingw-i686.cmake": { + "mode": 420, + "sha256": "231c0b79868a77d54cc6619f0b4ea18454964a1a078806f44a6ffe3fb7741a9b" + }, + "docs/A2-alliance-and-modcount.md": { + "mode": 420, + "sha256": "0c0c45c31d5d64124f3b91a161f8a2f4732c8a5d7f6bc524baf4d59f8a191701" + }, + "docs/AC-predictions.md": { + "mode": 420, + "sha256": "ab9e41714abdbc32e620d8a2068be8ebd2fc8898ba149113c66ccda248b4bcda" + }, + "docs/B1.md": { + "mode": 420, + "sha256": "42b61bbfc135cdcd0f1a32f63164b88e67106400de7f08f543f118eccd814364" + }, + "docs/B2.md": { + "mode": 420, + "sha256": "87dfd333ee15681a3aa4de58cf1b14ff8240e75afabc05012e0f28531cb4b8b8" + }, + "docs/B3.md": { + "mode": 420, + "sha256": "fb65c41037b6cd6252c67e5244d492a3a17ea4ba2ddae821d49fe0a879528518" + }, + "docs/B4.md": { + "mode": 420, + "sha256": "22547b3d2960684e52a380fb07f43a75bf50aebf93cede689f297cf38f4a012d" + }, + "docs/B6-ship-construction.md": { + "mode": 420, + "sha256": "9c5c4fd2059af965e317c9db5b7fbfc440397ddfcdc5bf7860115f6a8a0532ab" + }, + "docs/CB-capture.md": { + "mode": 420, + "sha256": "ce45a9082588051eda7438016dc66eb28bb4afda98b82cdc20102c4ca53529f0" + }, + "docs/CB-predictions.md": { + "mode": 420, + "sha256": "ba51538b018cbb403978f97ad45d4743937d49ba55c8f15d7af8f8e4aa441f0f" + }, + "docs/E-events.md": { + "mode": 420, + "sha256": "de98795aadb1617eab91815ebc34818bef8b52c36ba18b4521170065bfd2d201" + }, + "docs/EV-events.md": { + "mode": 420, + "sha256": "e7d9536cd23f5d800dc97f68167bb738088a16136004419f28de92d7fe1bcfb9" + }, + "docs/G-wire-schema.md": { + "mode": 420, + "sha256": "19db69ae359ddbd2a0509d02f1c616f939e0428480a8bb33c81f69145323a591" + }, + "docs/G3-civilian-growth.md": { + "mode": 420, + "sha256": "38ea3a8ddc3fdca258294d949c4cd2af1a930cdd9ba612d5e8fb48bc446bdf30" + }, + "docs/H-probes.md": { + "mode": 420, + "sha256": "f23e4d4cbc8c9a3000a0a58ed994dddd95466cee1ec45e961685e86dde4dc54f" + }, + "docs/L1-predictions.md": { + "mode": 420, + "sha256": "af97dbc9f15b9c2e6f223c89bac17826056fa4f3bced3c01513c1ad4d9ac1754" + }, + "docs/L2-predictions.md": { + "mode": 420, + "sha256": "18213ce5f3375d478f266de85c38c2b04ca2ae8ab4a2023780dca161fa14f460" + }, + "docs/L3-predictions.md": { + "mode": 420, + "sha256": "d1c9c0006079f47ef0d3371f4a2c2df2fe4f08ebdad0f8a12d1b0de35b15ae7e" + }, + "docs/L4-ai-orders.md": { + "mode": 420, + "sha256": "b04127c5158a882f252b2b6e8afb2d131f0de623cc0c62c86c612af803d75835" + }, + "docs/L4-predictions.md": { + "mode": 420, + "sha256": "6a194ae336920f13d8e4a44549cbe26be959beef81cffed88ef03b3cec563e44" + }, + "docs/L5-live-verification.md": { + "mode": 420, + "sha256": "4c1abe57c516b36f383390164a362f53294feda222c623283f1e6091d8ef0ec4" + }, + "docs/M-movefleet.md": { + "mode": 420, + "sha256": "718338edb8cbe8a449793b22889776a1783d1d0ade553c03973ea45d426eb426" + }, + "docs/M0.md": { + "mode": 420, + "sha256": "e121c380612a42727e3a973d8cf50f884d660bb4b43bc494258dc1c6b6f26705" + }, + "docs/M1.md": { + "mode": 420, + "sha256": "e0a36cf109d096748e55522eb8d7a261764cbf5ab5daf9342ba903d0f2bc6704" + }, + "docs/M2.md": { + "mode": 420, + "sha256": "25f9cad74eeee40afc2117333232384e1cf387b2b9132856650234c5ba593c61" + }, + "docs/N-output-term.md": { + "mode": 420, + "sha256": "3b8317e22714ef66b35efceee6fa0f7057c37f7c6e34d93cc5047cd1dd07ecde" + }, + "docs/P-events-wiring.md": { + "mode": 420, + "sha256": "72ee81b71b4c08ae451721c785dc5e01ed4ca43ff0fd474befca09dcc41599ba" + }, + "docs/PAR-predictions.md": { + "mode": 420, + "sha256": "16e8fbbac5001db0b10d766858c0ae2ea9619f37043a0883ee46da80d4dd4846" + }, + "docs/PL-players-residual.md": { + "mode": 420, + "sha256": "9bc29bc030ee8b0e00e496b91fe8fefac15179ce9fd01c0a11a7b5b5335356dc" + }, + "docs/R-recapture.md": { + "mode": 420, + "sha256": "73c62ab20c5eca5e87e1d18aefa60a2a2acd75cbc7510d31b27a2cd4ebcec38f" + }, + "docs/RB-predictions.md": { + "mode": 420, + "sha256": "c1016781505c10aa304d4710c5389918b744ab20cbd8cb54dce462c3dc28e4e7" + }, + "docs/S-standalone.md": { + "mode": 420, + "sha256": "8979b0a9fef33a55ca15bf3ef78064e72df332033354329ff2471ad6648e4a8e" + }, + "docs/SD-predictions.md": { + "mode": 420, + "sha256": "a76a568ccac7409e3cb3acef724dbe6b618d4ec30259bce33594098daff8b6a0" + }, + "docs/SV-script-objects.md": { + "mode": 420, + "sha256": "80ebd120fa9cf5e68ac4d33117966805b917d24bc339f7d82be972a280449409" + }, + "docs/T-turn-driver.md": { + "mode": 420, + "sha256": "a4096b8223cea87ce77cc64014c489d4625ed36fd3aec1358565ca5cf91d4e1e" + }, + "docs/U-unlock.md": { + "mode": 420, + "sha256": "5cbe3d8fb4bd30d029cb2db006a4dd3c6819885f55f434afb4bc8ae79b526901" + }, + "docs/V-eventlive.md": { + "mode": 420, + "sha256": "ebd08c000f42211e87958278f03d6891475cd8557658e1a42105cf5ed45a1aa1" + }, + "docs/W2-predictions.md": { + "mode": 420, + "sha256": "9972e27467cf0fe23a358818caf7edb979de25697d3aa4b97a2135ca79fe34f5" + }, + "docs/W2-watchpoints.md": { + "mode": 420, + "sha256": "f8634c5f977b2ca9b2e07df105cba09adacaeb6fb4cf046e41e5e1e42b83b107" + }, + "docs/W3-predictions.md": { + "mode": 420, + "sha256": "211cedc2d924bcf47cbb73166b408e9a27d795863ffc90aa2adbb85beeadffcf" + }, + "docs/W3-watchpoints.md": { + "mode": 420, + "sha256": "568e818e66d95f9079a1270c4d9b900c7eecfd5b5a3b4ba5a4aa0c843666f061" + }, + "docs/Y-standalone-rng-and-tail.md": { + "mode": 420, + "sha256": "49d926cc505d6ba07753748366e42ec32493a15c76bfaa45b2f66f52adc57f2b" + }, + "docs/Z-tail-rng.md": { + "mode": 420, + "sha256": "3ed2b40f728bcedd663c305cce13481bad1429af03fd5215ee3189161cfbd7f1" + }, + "docs/architecture.md": { + "mode": 420, + "sha256": "ba4732eb8a4c7054df5136a72d1774e4f1e919a517a1c74e975903fdd254422f" + }, + "docs/game-data.md": { + "mode": 420, + "sha256": "2124ea3d117b4ee6f48660d9711c1b4ef844a4ba37af7cea3766914d77bd6b23" + }, + "docs/game-design.md": { + "mode": 420, + "sha256": "5b40349ad446596b534567a5683cf9ea99709d9eff231890e0f6256c755f0272" + }, + "docs/game-effects.md": { + "mode": 420, + "sha256": "e1e0abc162602daaac255fe44b11c511adf45d4ef5fa188268411829b0817e5d" + }, + "docs/game-sim.md": { + "mode": 420, + "sha256": "d1e14770d252fd2f320a7baa1ad54c90d955cfc840f477d1700cfbbadcec730e" + }, + "docs/harness-audit.md": { + "mode": 420, + "sha256": "931d92cc744ec6ca3d961fbe7fe96dcab28060446058eb78be9835ebbce73ed0" + }, + "docs/mars-parse.md": { + "mode": 420, + "sha256": "d9fa3029ade4f9401c59fb88f4520a1ef3af9a9c6f2bb5d1a0ebfa1d5061d6dd" + }, + "docs/mars-rng.md": { + "mode": 420, + "sha256": "f2a01b88f105d07d0d0d514430e76da7632e5c8e4e3bbd6c99a25f1dc5daa89c" + }, + "docs/mars-stream.md": { + "mode": 420, + "sha256": "61a16c9b7c143b4bc2edee473cf1f8bd06c1a5144c120bc563e5ec6d770dd0e7" + }, + "docs/mars-text.md": { + "mode": 420, + "sha256": "2b6c7d2eecbb684160e7565d1d7224eb0d2f7e9a41f4d807095a182ea605dcf1" + }, + "docs/mars-vfs.md": { + "mode": 420, + "sha256": "1508c2a070d56f4fdabac3c2ef1fd08d3f93d7a3045d59158340ee22a6ff1b62" + }, + "docs/shim-trace.md": { + "mode": 420, + "sha256": "8a059c1ba761b366449c2db8ef248656da917050ed28855c6d812ecf91672fa5" + }, + "include/generated/sots_addresses.h": { + "mode": 420, + "sha256": "fc34ac4ee8cc7fea91c447b5715841dc6d3afe36f9aff04e88b6c29b5b64f448" + }, + "include/generated/sots_stream_schema.h": { + "mode": 420, + "sha256": "13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c" + }, + "opencode.json": { + "mode": 420, + "sha256": "9af560c2a49945e964beb689649c13775e2aaaf691af270a565d6c6826f76c15" + }, + "src/app/CMakeLists.txt": { + "mode": 420, + "sha256": "142999eded2ff494745ce550af76a8f8caf0269ad22d6d5650e7a79c19d22717" + }, + "src/app/alliance.cpp": { + "mode": 420, + "sha256": "37d6e57f7ce82a69a595cf474e7be7a544efef210f960e9cdfeab6168826bac9" + }, + "src/app/alliance.h": { + "mode": 420, + "sha256": "08fa8dc96286c7cb15a90a987fa22b17e195522e642ab8303b659ca58739eafd" + }, + "src/app/command_replay.cpp": { + "mode": 420, + "sha256": "739059930cd3a5f1d988522ff50c60d8657664a66c9fe19b019833f417b55824" + }, + "src/app/command_replay.h": { + "mode": 420, + "sha256": "956429a742554cada2124de49c6955e27b0e5d68db87dcc95b22c75ec7bd93c2" + }, + "src/app/construction_phase.cpp": { + "mode": 420, + "sha256": "025cd0ea1a7badd567f7f1cd59330b1e01149b5c5094575fbd438683658bb0df" + }, + "src/app/construction_phase.h": { + "mode": 420, + "sha256": "a4d39994096683a1144eb20282b205cf71e2045873cc15b53bdac214ab1e9a5e" + }, + "src/app/event_phase.cpp": { + "mode": 420, + "sha256": "80717fa7c7f108004d5250f12b6c994752a1a55d7f32c7d3ebf29f2869118c90" + }, + "src/app/event_phase.h": { + "mode": 420, + "sha256": "54077268fe4705270dc06bdc46a6fd9384fb5e0d36da19e55ea149b478d8cf34" + }, + "src/app/growth_phase.cpp": { + "mode": 420, + "sha256": "5924d2641fc98d902b56a3e6417d7a57d70c1564718951b098e7d14376ebc4e3" + }, + "src/app/growth_phase.h": { + "mode": 420, + "sha256": "8222ef811abff161c8f891a331a52e527de54fbf468949d1e0e188adc473ae3b" + }, + "src/app/main.cpp": { + "mode": 420, + "sha256": "adfd7dd177439bfd57509532bcf0f37779281ae9309daa93efe1ada3ef3f57a7" + }, + "src/app/observed_phase.cpp": { + "mode": 420, + "sha256": "31fb99678d60de6901b4bb1b251abe2421453264653cf5f7bd297a376c2b23f3" + }, + "src/app/observed_phase.h": { + "mode": 420, + "sha256": "f88fc22a5cb21a43e196d7fae09446126635d3284e6b398bca234f265234b693" + }, + "src/app/phase_catalog.cpp": { + "mode": 420, + "sha256": "e3da16e6d499b7836953251d940ce171792ada208156ca583277298f305fc316" + }, + "src/app/phase_catalog.h": { + "mode": 420, + "sha256": "da6fff506002079d8277358d0095981dc260449dc19677a533ef25ab709aed87" + }, + "src/app/report.cpp": { + "mode": 420, + "sha256": "da3feb6043f6e68cb9ea763f7242ac153a5944c59f448284faf34c64ad6b9228" + }, + "src/app/report.h": { + "mode": 420, + "sha256": "0495d164458ddb7187ce3105f82cee06cf9cf6c5b73ed8cb6e434e1d2e0f8481" + }, + "src/app/script_phase.cpp": { + "mode": 420, + "sha256": "61eeeeb7eac3145cee938ccfc564b231b6968ce7926fb9599c136134f0d5ea91" + }, + "src/app/script_phase.h": { + "mode": 420, + "sha256": "e52006ff939fa945870fafdc2412ba67e3d5e1cc2aa51c0ca0a884ce630aa1b7" + }, + "src/app/trade_raid.cpp": { + "mode": 420, + "sha256": "07d6bb904e655bb644ff6df2e417adb448487bb67acb62240ec5ecc978eabebf" + }, + "src/app/trade_raid.h": { + "mode": 420, + "sha256": "10e0b1460eb7810f1fcd61e67d47333373f06bdacf5a11372958a84a91084e52" + }, + "src/app/treaty.cpp": { + "mode": 420, + "sha256": "317463fc0e2a6ca7eaa4e2f096c3821655a4623de4085af44d951ed500837575" + }, + "src/app/treaty.h": { + "mode": 420, + "sha256": "836395a85868cbd6b7fda8f1d304128fd7cc6952aff37003e8e119a5ce0251f9" + }, + "src/app/turn.cpp": { + "mode": 420, + "sha256": "a626ddf80a340de50b70f09bf91c0180d255c533e65edce1532d807fcf5109b4" + }, + "src/app/turn.h": { + "mode": 420, + "sha256": "85c87aab5c5b5ad5a6a34cc9db710b1cf77dec1a7145ba1e0b5e17fff9a6a237" + }, + "src/app/turn_record.cpp": { + "mode": 420, + "sha256": "e1eb0b253e964ab4f8be1333f81e193ac64109544da384cbdf21858cbf931e4d" + }, + "src/app/turn_record.h": { + "mode": 420, + "sha256": "78d8d2948bd04bff5e7d2c55955b726f1cd7552a765e608e390209e03856f76d" + }, + "src/app/visibility_phase.cpp": { + "mode": 420, + "sha256": "34d9df699af3e57823ec8457c442408da854028f9b95db5820171caad0823131" + }, + "src/app/visibility_phase.h": { + "mode": 420, + "sha256": "60db50f5b98c5edafc86a33f982a7773acc291c1a18f9cf23323e53ebadcde27" + }, + "src/game/ai/CMakeLists.txt": { + "mode": 420, + "sha256": "f51509a2699f02ecab9faa1f75feaa38c299e6bbbe08bfbe5e8e86722037f6eb" + }, + "src/game/ai/agent.cpp": { + "mode": 420, + "sha256": "e1bbddc3deb797d62ae9c2b24bc811ec9379699992dd838694bd5eadc73feef7" + }, + "src/game/ai/agent.h": { + "mode": 420, + "sha256": "48aa26f32d52a3f8f4e37ed5c6986b1e87a8fe1e780d5314514eb5c75b8bc244" + }, + "src/game/ai/apply_order.cpp": { + "mode": 420, + "sha256": "122ffea1090382fd01bc505fd30c59557dfec2c9846609d00da6e80109da2253" + }, + "src/game/ai/apply_order.h": { + "mode": 420, + "sha256": "a3b7a1ca26243ba0fdd801b78978175db6f76e297a72876fa0a35e12f38e09b3" + }, + "src/game/ai/command_capture.cpp": { + "mode": 420, + "sha256": "cb9a1d37af9f66e78d368e03aeabec01e4d48f76aaa30348a51f4c70a915e4ec" + }, + "src/game/ai/command_capture.h": { + "mode": 420, + "sha256": "921599e5b2aa8b773db00134618efde687c7d9ba739abd787ec7666f4cfeb78f" + }, + "src/game/ai/orders.cpp": { + "mode": 420, + "sha256": "1b775eb1a030bc6e81e5b7702cbf8ad56288860276e8a0475da66f7367542640" + }, + "src/game/ai/orders.h": { + "mode": 420, + "sha256": "c2a3b8fe1a7c46a1c1104bc87be8696d9f0782cc304d27cb96d0ec6b182f12ae" + }, + "src/game/ai/tasks.cpp": { + "mode": 420, + "sha256": "b05878ccd94c375aac8723c8ea9499f77b98fb94acc5a75a15fa1948dbe83c76" + }, + "src/game/ai/tasks.h": { + "mode": 420, + "sha256": "b1de4f89c1679ccfdeaa8b852cb2ce407b71dcd1bffacf97df389a69f6ae3a5d" + }, + "src/game/ai/turn_order.cpp": { + "mode": 420, + "sha256": "858b12c51c4509e16a22a6c080d1c6b47bd23d2b8a11f84a48d34f24c4635f22" + }, + "src/game/ai/turn_order.h": { + "mode": 420, + "sha256": "3e76710928fc2df52fd8312abfb8f23a2ce162f8e0856f46672a4f46b5b4384f" + }, + "src/game/combat/CMakeLists.txt": { + "mode": 420, + "sha256": "4b3a05c45360e312d6c1d96c1f05a60437d19d2046257835e0d6c70ecc4ce115" + }, + "src/game/combat/retreat.cpp": { + "mode": 420, + "sha256": "eede86a4d25289dfc9132d5776b11114a109179e5aa10f2b985035e5b22d7a1f" + }, + "src/game/combat/retreat.h": { + "mode": 420, + "sha256": "5fc3e002a5f1944f29c74f862ff942b894e40e88afafd52358373ada36644d7d" + }, + "src/game/config/CMakeLists.txt": { + "mode": 420, + "sha256": "c746021654505c92be333cefb9df994431679d40d8d654b937feb950684830f7" + }, + "src/game/config/config_loader.cpp": { + "mode": 420, + "sha256": "d903ba06747e5b7d66400d03ee1f0a9896bf4268bb200dec0b5c8599dbd3d3a1" + }, + "src/game/config/config_loader.h": { + "mode": 420, + "sha256": "fda71dee1a4e2b896760e9ac344768e176ea4f0a08609c7d651033a1ee698085" + }, + "src/game/config/manifest_loader.cpp": { + "mode": 420, + "sha256": "dbe33dc5ae03db18f3b2c01b48cc1fced10f2cca599270c0a028321a7d7dd7c6" + }, + "src/game/config/manifest_loader.h": { + "mode": 420, + "sha256": "68e508b9e6d1222d980b22ae826b127693fdf0821b6539ed9e62a8ec031aa5b5" + }, + "src/game/config/msvc_sort.h": { + "mode": 420, + "sha256": "17fcb13bb49a634c80be38299617c6c16fd8addedfa88c53d67242c90b811716" + }, + "src/game/data/CMakeLists.txt": { + "mode": 420, + "sha256": "677ba0dd0ebb8176f4e7c41d5550f2ccedd56d49e7e4acb1eb0a7970e9e98a51" + }, + "src/game/data/block.cpp": { + "mode": 420, + "sha256": "f61312708c715ce525ed1a01e71f1446d31fc96ca1cc51f5bd863cac51702200" + }, + "src/game/data/block.h": { + "mode": 420, + "sha256": "f14155dfca5fd270ad6b4d462458aa8cd5c5edf5e19da4df492ee2907e99eccc" + }, + "src/game/data/catalog.cpp": { + "mode": 420, + "sha256": "7799ad3b31d43236cacbc51c3ab086265927f98b1346005a8adfed2796178ebc" + }, + "src/game/data/catalog.h": { + "mode": 420, + "sha256": "80223146bcdbf4808776f974df7e5f46b120a021979a22f50b5ce2d74ec16d6e" + }, + "src/game/data/common.cpp": { + "mode": 420, + "sha256": "e58ba046844be11c61f7f7e501829b48b4f16e7c0ab78f10fcf9189c133cf040" + }, + "src/game/data/common.h": { + "mode": 420, + "sha256": "d1ac8375c1be133a98a383e01598f393f194e1bd9790d1c1230bc6121a45a187" + }, + "src/game/data/fields.h": { + "mode": 420, + "sha256": "4209df368ad776b3c24350246acf47ad874fcbbe292fb16f9ca7dacaef2f08fb" + }, + "src/game/data/shipsection.cpp": { + "mode": 420, + "sha256": "82d5ba9be2a446e50934b0b9a03b16839bd3acd1a967d9441180a1baaa271264" + }, + "src/game/data/shipsection.h": { + "mode": 420, + "sha256": "bcf100f83691226c4993dd7866b67a0b48d9b4bc6841463fbf07f0f26bf9dca0" + }, + "src/game/data/strings.cpp": { + "mode": 420, + "sha256": "6d983d3a4cb4284215301409587136fb765a5e6a4c9f4b988e01d710c0815f59" + }, + "src/game/data/strings.h": { + "mode": 420, + "sha256": "fb292bd472ed68eb4a5e93484f3f92d8a0ae8661e6a61ca4b417ab889c508055" + }, + "src/game/data/techtree.cpp": { + "mode": 420, + "sha256": "2ac6e39faeef808c97375f3b8a3ee219fcab8cc09921f0ed8d82eef7374eb9ea" + }, + "src/game/data/techtree.h": { + "mode": 420, + "sha256": "504946c255405ab28d20d0ed6c095b3b63f0e6865afe0e8bb0707e607c363007" + }, + "src/game/data/turrets.cpp": { + "mode": 420, + "sha256": "ce7db50ef10825e168fee2bf57c4b6038dd1a356be7ada9ed6a4f6a4f31b07a4" + }, + "src/game/data/turrets.h": { + "mode": 420, + "sha256": "f01603ad32b0ffdf891c88cc54c39a725c6a436f8dda79ac23e7505e59853c64" + }, + "src/game/data/weapon.cpp": { + "mode": 420, + "sha256": "accb5aab2081babb26443cd257f292909e19440c40346e098144148922f5d3f6" + }, + "src/game/data/weapon.h": { + "mode": 420, + "sha256": "63aeb670ae7b8a1fd6daa35ed60ebe41a87f62a6ec2a12f44b13f9052c55b009" + }, + "src/game/design/CMakeLists.txt": { + "mode": 420, + "sha256": "42692f7917d99fb5b9e392c2d0f1d908b2bc5c61fc2e5687fddbd665dafe0bef" + }, + "src/game/design/defaults.cpp": { + "mode": 420, + "sha256": "8efa0b79646525375739a1acfe77e75d5ae6b669d1ecaa01f49f3f5183caf528" + }, + "src/game/design/defaults.h": { + "mode": 420, + "sha256": "20af056628f362a4d5ad7ba6277135697718197ec6844ae0ae85bf06d4cd818b" + }, + "src/game/design/design.cpp": { + "mode": 420, + "sha256": "e166281c52a6d92fed8810b38bd736cbd2a324f15d290a39a539d01ff35ead20" + }, + "src/game/design/design.h": { + "mode": 420, + "sha256": "7e936c78ca10c3a49470da67f1659cf4ee323d14d50b5b2c1ada08edfa8f6997" + }, + "src/game/design/hull.cpp": { + "mode": 420, + "sha256": "554b0ef6955ac230c7eca29ea2d94d60b5fbc91f34d9ff457091577c8602268a" + }, + "src/game/design/hull.h": { + "mode": 420, + "sha256": "997018e59c9d78ee1da7e7cb9561b94b76befacbe348a4ce3301c5f22b582461" + }, + "src/game/design/rules.cpp": { + "mode": 420, + "sha256": "a623984f9ab40c354320051fec00bab2c7e3728c2c90082b3b8051294b906319" + }, + "src/game/design/rules.h": { + "mode": 420, + "sha256": "70a8a42fe82e9805cbb957717688ab9f9eb3438226f6e0d696ef5f7a51529229" + }, + "src/game/design/stats.cpp": { + "mode": 420, + "sha256": "c05f420a00026289be8693c0d80bbd2354ce354a91a78459cfc8e70467326c54" + }, + "src/game/design/stats.h": { + "mode": 420, + "sha256": "ba0a5d3bcc98f5c3e64579d42da70bfdf563773ce2fe1e6bfa2b36b14c453fe5" + }, + "src/game/effects/CMakeLists.txt": { + "mode": 420, + "sha256": "2e20f138f98bc69653c8360a26f99f3f43f35beedea5e90dfd7e9721e7550f89" + }, + "src/game/effects/tech_effects.cpp": { + "mode": 420, + "sha256": "40358c2af37543ca3ab09b4d0433cdb4b0d2d212b45f648739cc86e979501604" + }, + "src/game/effects/tech_effects.h": { + "mode": 420, + "sha256": "ef70addf2caf1e3abf36ac9d878a8db37d2adbac370957f5b6a0b5825564a0d6" + }, + "src/game/effects/tech_id.cpp": { + "mode": 420, + "sha256": "11cd652e81a52e86d72541a5c3de77bb50de3d31226272e0d1856e5a15b7f9a6" + }, + "src/game/effects/tech_id.h": { + "mode": 420, + "sha256": "f37752250c80c9c75ef8e144e4646dc1290a2cc8ce72d9a37949c6408996df86" + }, + "src/game/events/CMakeLists.txt": { + "mode": 420, + "sha256": "9b1f14a3801a991ba065e0e39ae2e3fa3966018e8a98fcceeddeaca3909328e2" + }, + "src/game/events/event_log.cpp": { + "mode": 420, + "sha256": "3b131879ec5e81cd1ba2bb0cbdfa6e05775ed77684f4ed7a8f5cfae87da1e7b1" + }, + "src/game/events/event_log.h": { + "mode": 420, + "sha256": "2ff415b1120ca3f28421006a566280fb977027cfa3f209bdba0986350376a953" + }, + "src/game/events/research_events.cpp": { + "mode": 420, + "sha256": "9520b20eba2a2b4bd5925f13b420d526fc610d06aae7ffad314e3002c4f5a253" + }, + "src/game/events/research_events.h": { + "mode": 420, + "sha256": "b87340c6b14e9de97e5bc0c5a4cbd74e54bab2831c60edf88c0e42ff5218ea22" + }, + "src/game/nav/CMakeLists.txt": { + "mode": 420, + "sha256": "79cc0ba25c6d49f7784663ace033d01ab3d85a5d8015fe2f466f8f1a3065983a" + }, + "src/game/nav/pathplan.cpp": { + "mode": 420, + "sha256": "04cfe8fca5be565f5443c8f1402eb0072221dbd63f70855e35b3eeea752f1775" + }, + "src/game/nav/pathplan.h": { + "mode": 420, + "sha256": "28b51f737b458679888e555d985b9e8d41adf8ba91fa0980b5e83668758c86e7" + }, + "src/game/sim/CMakeLists.txt": { + "mode": 420, + "sha256": "4b3085116f88c903a137abef6806891f7b7245dcb031153df7a5465dd2521116" + }, + "src/game/sim/colony.cpp": { + "mode": 420, + "sha256": "e0f0bf15d87b6ac2e92053cbfe0869c0dbf9465d90a9bae5456bb46883423b77" + }, + "src/game/sim/colony.h": { + "mode": 420, + "sha256": "357dce21440140a6cf836a3c12175ebb5bb6706c37d5ecd315a4ee4937725b47" + }, + "src/game/sim/construction.cpp": { + "mode": 420, + "sha256": "8cf4792f487162ca3599f16f0e92d73b4c9549046044548c5aecf202dd564130" + }, + "src/game/sim/construction.h": { + "mode": 420, + "sha256": "a7f201101ad704f1994f809259ad60f780760fa36174d99a1ccd9299447f5460" + }, + "src/game/sim/economy.cpp": { + "mode": 420, + "sha256": "1e0b17b589496a6139e8ca10fe20553050be7c965a02daf8b520dd5020412d89" + }, + "src/game/sim/economy.h": { + "mode": 420, + "sha256": "6f3e33e803bb49367d4cee3c8ef6186f04b79e7cf901047fc48d933108ab6d2a" + }, + "src/game/sim/movement.cpp": { + "mode": 420, + "sha256": "80c64b2148304b84683cf3860ced1354f5c29c923bbc50cc5001030dd85c2cd2" + }, + "src/game/sim/movement.h": { + "mode": 420, + "sha256": "9a6b2b4960428634d8004cd5694ed6a7a10ab28fd9c0e2a9824ede3e201e9441" + }, + "src/game/sim/numeric.h": { + "mode": 420, + "sha256": "88f715192ea322ace4eea13ab5ae55f7f41600262025208e468b5259220522c2" + }, + "src/game/sim/observed.cpp": { + "mode": 420, + "sha256": "43d29a9fe1195dcc0b7e6101ea05bfd076f03636f9f68de473539c83db0ddd22" + }, + "src/game/sim/observed.h": { + "mode": 420, + "sha256": "0224b5bf341f30ff0e98d910547261b6732bdc0c5339b520e26fc51939c1269f" + }, + "src/game/sim/player_turn.cpp": { + "mode": 420, + "sha256": "beb1b2ed434df3727e676ac56e751beff87fa98e4a42e4657cc54d41025773a2" + }, + "src/game/sim/player_turn.h": { + "mode": 420, + "sha256": "f24f8f5e161486575cd341c2f5bfed46fa6983263edcf2320e9c24860b4be51a" + }, + "src/game/sim/research.cpp": { + "mode": 420, + "sha256": "95f2d325544ee018ec8d0f945e91b4172f6ba406f95e19f86c4fb9aac6b22a89" + }, + "src/game/sim/research.h": { + "mode": 420, + "sha256": "e27a311e977afb2e01242938dc8d928e9a67d1f761965e191cf907e05c1c86e9" + }, + "src/game/sim/rng.h": { + "mode": 420, + "sha256": "f7e5bbced3dbd37deb49a00b52d05f7c751501d654dabd645ecff7447355929c" + }, + "src/game/sim/scriptobjects.cpp": { + "mode": 420, + "sha256": "a4f9a1b49e4ba22a88726efbbea2f355b40a3c006734d9150d509a344720a4d2" + }, + "src/game/sim/scriptobjects.h": { + "mode": 420, + "sha256": "210d0eb51780df70a9bca133664429589c03ea33e4524e2c182801d4b4a5c74b" + }, + "src/game/sim/species.h": { + "mode": 420, + "sha256": "83b44c0600b99c5acb72a3484bb0708cfba765cdf594aede596a3c47d5ee6298" + }, + "src/game/sim/techgraph.cpp": { + "mode": 420, + "sha256": "81f8f1120eb1fa4a77752bd2e0917df3dd76372461416526ae510bd697944ef8" + }, + "src/game/sim/techgraph.h": { + "mode": 420, + "sha256": "b2fc90666080a6b7f27dc9290eef17774d57742c2a1f9e1f77d94c7fa5689f6e" + }, + "src/game/sim/tuning.h": { + "mode": 420, + "sha256": "4acfad4098de951cc3a94ca25a2f200e96caba1836bf7441de5a2b458c022194" + }, + "src/game/sim/visibility.cpp": { + "mode": 420, + "sha256": "25f86a34f9a98d2439672283a446ba1804973dae3f6d9aa3692342b05f3a3ac0" + }, + "src/game/sim/visibility.h": { + "mode": 420, + "sha256": "783896489a2a9ec8bce617b141bfb631e8ef92f958be7b5c2ca64fd75774471f" + }, + "src/mars/parse/CMakeLists.txt": { + "mode": 420, + "sha256": "76c290b786a3e73387ec8c574fd5a0dbeb6e629adbe970426314f16497f59fa9" + }, + "src/mars/parse/blocks.cpp": { + "mode": 420, + "sha256": "e60baa8127b21cf6eb6c8e2aa02c6a72c6403dbc29e8480ff658bf184266675b" + }, + "src/mars/parse/blocks.h": { + "mode": 420, + "sha256": "1e8b76919a584d1d7fb01c5ff5e3a7173e8456eca892d61f0c6b7bb8f02f33b1" + }, + "src/mars/parse/effect.cpp": { + "mode": 420, + "sha256": "beb76a841a3d42dbc157413384ff1a0312a7068d6b22020eadcee2e1cbbc81f9" + }, + "src/mars/parse/effect.h": { + "mode": 420, + "sha256": "aaa5c83f2d8eef24667bf05d0f71b2a346f2fce09dc9a45d7a5197c894922e44" + }, + "src/mars/parse/result.h": { + "mode": 420, + "sha256": "58cff456e353550abcd0f52e031d9d70f2b7a975f4762cfccc64eb6bc748dbd9" + }, + "src/mars/parse/script.h": { + "mode": 420, + "sha256": "69a493268c47a08672694489a51c3ff0a7f9aa870e5ae5a93d47ba033cf21ad3" + }, + "src/mars/parse/value.cpp": { + "mode": 420, + "sha256": "712133e4d725649f5461e6a46bac6842b0751ac3fb7e1c468f826638ec58f623" + }, + "src/mars/parse/value.h": { + "mode": 420, + "sha256": "60d692648dab7e3e216c8d9e6ef212592ba1df1a98260b1b4599354742947b38" + }, + "src/mars/rng/CMakeLists.txt": { + "mode": 420, + "sha256": "dceb4bc0fb35c95a12ed9aa36380e79aa75641b15ecc06e4289d39824087e2dc" + }, + "src/mars/rng/mt19937.cpp": { + "mode": 420, + "sha256": "0c60775e9437b8eaad49f67a96001c81947c8d9e6d2472e28b2b490515bac95b" + }, + "src/mars/rng/mt19937.h": { + "mode": 420, + "sha256": "300836ab26fd1a4d913b395f08770bb2c248029ef1b80ecbf0c4d886adca2b8e" + }, + "src/mars/stream/CMakeLists.txt": { + "mode": 420, + "sha256": "95ffbb0c519e55b7423ab048a3019e295b7ef3a3e9506044ef2e68569df9601a" + }, + "src/mars/stream/archive.h": { + "mode": 420, + "sha256": "84d9ae2bb3d6f444b3933b3816cafd12caee8619d2219f19cd10d32cfad01d2e" + }, + "src/mars/stream/bytes.h": { + "mode": 420, + "sha256": "9f5869952c9d6b925db32995a417ba292a0c1a672fc3850400150afb8163b3f1" + }, + "src/mars/stream/dump.cpp": { + "mode": 420, + "sha256": "1b5bba86b2f85b1718276f8db557601320ab8a165d5fbfe93e51219cca5a1c16" + }, + "src/mars/stream/dump.h": { + "mode": 420, + "sha256": "a69af300ae7083fb0a5362edbe7eecd5273c8807884aff9fbedd7ae606c7fc4f" + }, + "src/mars/stream/gzip.cpp": { + "mode": 420, + "sha256": "20d71fd50bd637f78e7ebb5217bc6607ebc257535cc4720e640e4badb72f1644" + }, + "src/mars/stream/gzip.h": { + "mode": 420, + "sha256": "6bce52c615eb120999adb1a6f7f06baa813a033c28e02e6d79ce77f5b7a929c9" + }, + "src/mars/stream/node.h": { + "mode": 420, + "sha256": "eb43054c8592db107557979c7fc8612dc0646ba5d62f154b9b7f96a37ba2e860" + }, + "src/mars/stream/probe.h": { + "mode": 420, + "sha256": "6411d0976d1e785e8c32af6ecfe1a797c0a9aa02314e5e42fae3ed7b3449ae13" + }, + "src/mars/stream/reader.cpp": { + "mode": 420, + "sha256": "90f19cbcdb0fc50795895ea1eff09cd6c0ab3069095c49b276f3894e3d6bcbb3" + }, + "src/mars/stream/reader.h": { + "mode": 420, + "sha256": "900508d97be1cbe566d77f2c91755d3db387535cd9574e41704b6d940daa1ff4" + }, + "src/mars/stream/save.cpp": { + "mode": 420, + "sha256": "6db367b3ea570a4d0ee831160e3f44cef380f58de163b9d9205ca7449e51e049" + }, + "src/mars/stream/save.h": { + "mode": 420, + "sha256": "b3a411600d98b42e9014e1fc3cbc3eac5f32f4393e9f72036d3d840c802bb469" + }, + "src/mars/stream/savedump_main.cpp": { + "mode": 420, + "sha256": "8dc687f009d9f455e9bfa4019f03df72e058cebbb3e9ae5bcbb308285470208c" + }, + "src/mars/stream/schema.h": { + "mode": 420, + "sha256": "b1cd64bc43076a3e5893239bd2eb5c216e7293ee541322ef74fb106928183a05" + }, + "src/mars/stream/shapes.h": { + "mode": 420, + "sha256": "45ee379ff8100b6bc27427a2580d7aae19ff3d5d0aa27f682d156ae6a92d0a6d" + }, + "src/mars/stream/writer.cpp": { + "mode": 420, + "sha256": "54804b06266e34793f5294f9a96d2939d641915a0f60fc4e3b4170bfcea6e083" + }, + "src/mars/stream/writer.h": { + "mode": 420, + "sha256": "921cd44ea30e0b9944825b1d2caafc46edc8f2c23506c807050ed9208a397340" + }, + "src/mars/text/CMakeLists.txt": { + "mode": 420, + "sha256": "dccb93b37c21c9b3c3b35a50ca8de55c9f00df2a9e0a33b6c36d659a75455436" + }, + "src/mars/text/csv.cpp": { + "mode": 420, + "sha256": "b190e12b86a3f416a72c110caf9e0b2d98cdd33851d2fa48b55a8d7ea39279af" + }, + "src/mars/text/csv.h": { + "mode": 420, + "sha256": "3b7ec6d0884e95bfab869c253eddc30a802602bd1f230cc69461cb9cf3c17917" + }, + "src/mars/text/flat_kv.cpp": { + "mode": 420, + "sha256": "b98d3b7345489f0b149e56cd15436fd6199e4cf00d7ce3f8b8b31fcdecb90e47" + }, + "src/mars/text/flat_kv.h": { + "mode": 420, + "sha256": "d6765cd42cad46597b6e36e9d08baf6819f7796442293043d5ff686e2376d292" + }, + "src/mars/text/lines.h": { + "mode": 420, + "sha256": "b9a16ccf0dc7bbf36100e0b66c80bcb818590b161f820d3c67d55bccff1c2c65" + }, + "src/mars/text/manifest.cpp": { + "mode": 420, + "sha256": "4da1bb615902ec61883e561f5dd375d89442f7b9046fbc864f6308f27921087e" + }, + "src/mars/text/manifest.h": { + "mode": 420, + "sha256": "dd7351a7a6a144e97f3a3b6a25d22d1518a099e95deadb8965cedb201601e102" + }, + "src/mars/text/result.h": { + "mode": 420, + "sha256": "7f817033811dff6fcef1d5b76f88922cb0392afb4359549876cd017a14755606" + }, + "src/mars/text/value.cpp": { + "mode": 420, + "sha256": "94b433d78f3211e1a4dd9eb8a0a00b514cbeaf63a03e738146c56dbbfe221479" + }, + "src/mars/text/value.h": { + "mode": 420, + "sha256": "d3b5c70af2f339ad27b43c38353fc7a2da83388854b02000fa1b6d9a4e1dfc07" + }, + "src/mars/vfs/CMakeLists.txt": { + "mode": 420, + "sha256": "630d5d4707ef3c0f24a414815cc23158853fe9d5aef429d6619abc1c433b3786" + }, + "src/mars/vfs/path.cpp": { + "mode": 420, + "sha256": "e1f3bbab1f90b0132aec24d8c5997dafab69ec72f01f2dd2fa63c91f83ef7aeb" + }, + "src/mars/vfs/path.h": { + "mode": 420, + "sha256": "043091008f2cab7c88185de63e7aae63ad9b0e384109f5b6fd8c31666c4e2033" + }, + "src/mars/vfs/result.h": { + "mode": 420, + "sha256": "19115bf1c5b3bf01da078a49209230053043610b342b01cdaaed126e2d3ea748" + }, + "src/mars/vfs/vfs.cpp": { + "mode": 420, + "sha256": "ab8272cd14b4b55e7af13f5383d6106f0b1caabdde57e69c1d0fb5b434d31cba" + }, + "src/mars/vfs/vfs.h": { + "mode": 420, + "sha256": "2484231baa64ede6fc35eb0f49e1fd7a3373d5c559f016d5adfb9fc433619d90" + }, + "src/mars/vfs/zip_archive.cpp": { + "mode": 420, + "sha256": "d66e70300539bd42bcf193683df7c34d2b0b03146fd79f0a180385ead1559e87" + }, + "src/mars/vfs/zip_archive.h": { + "mode": 420, + "sha256": "0ffbd90f7919741e63e86e14d0f87d247bc2cd16d2db54771071553249ad935d" + }, + "src/shim/binkw32.def": { + "mode": 420, + "sha256": "fb500fd9f9ecbff44123b89fc24cec72e91fec4c4430ce12a69efc06b20de235" + }, + "src/shim/fpu_force.cpp": { + "mode": 420, + "sha256": "c4b4e41a7ef81139c652ba8164ed8bb0d809b42182f0d0f048b9a9e63bebe59d" + }, + "src/shim/fpu_force.h": { + "mode": 420, + "sha256": "75bac23bc45510961f6b10d21c47e72d8dc0d3971a3ab30b795cad1d25332c06" + }, + "src/shim/hooks/ai_orders.cpp": { + "mode": 420, + "sha256": "091ed885012fffa0e02b83c53e547483dfdeaf1094933726e0291fff0a99e434" + }, + "src/shim/hooks/ai_orders.h": { + "mode": 420, + "sha256": "6e775b3f946f2eaf10dc2e236a3f3c7b9311ed4e82cd4be1ca30e6c62d49d053" + }, + "src/shim/hooks/ai_rng.cpp": { + "mode": 420, + "sha256": "b8fec711cb620561c8f4854e72c3fb0d73013c9b1cd69fa63fc05dd3d2f60289" + }, + "src/shim/hooks/ai_rng.h": { + "mode": 420, + "sha256": "1306f4d3c8071121b06c75232efa5c50b155c1f8752fcae852ee8e5497ce7d08" + }, + "src/shim/hooks/ai_visit.cpp": { + "mode": 420, + "sha256": "cd69811074820810edb1ed3779ca08bd99fea620b162d80a0395d35e8db7fc31" + }, + "src/shim/hooks/ai_visit.h": { + "mode": 420, + "sha256": "8315b433319f680e80a154409124355ad24842e9a0cdef5c8aa6d12422971189" + }, + "src/shim/hooks/budget_inputs.cpp": { + "mode": 420, + "sha256": "fa50fb74a3874886cf8aeb4012b9fd9a5a43ce38ab3c543ee425002ca32fd46b" + }, + "src/shim/hooks/budget_inputs.h": { + "mode": 420, + "sha256": "56e2f95930ff420820a3464162fde74ac0a3ff2e1dc8b493729fed342e4a6548" + }, + "src/shim/hooks/colony_inputs.cpp": { + "mode": 420, + "sha256": "7aa9191ec6292d765fd06c99ff1f2ae2e09a65fb1f238dd2727f28bd465dd46e" + }, + "src/shim/hooks/colony_inputs.h": { + "mode": 420, + "sha256": "87ec765e14106631e3f6423450e6e01d5bb21060fa91f83c267db215ef4986d9" + }, + "src/shim/hooks/colony_turn.cpp": { + "mode": 420, + "sha256": "b82616c7b9b05e96e7f4c40d853c686884b517a5424413686d61799df9d45420" + }, + "src/shim/hooks/colony_turn.h": { + "mode": 420, + "sha256": "a9013cc2e92998ff56ac0c8cc36dc42033fbe3072ee88b86882a1dd4dd0357d6" + }, + "src/shim/hooks/compute_budget.cpp": { + "mode": 420, + "sha256": "76a24f0daf1f49cfabbed13753c65754e26bfcc4f672791b37e926f82b5c1906" + }, + "src/shim/hooks/compute_budget.h": { + "mode": 420, + "sha256": "f308717e44e12151cfb20a6a0cf11ff8e99ecc9c17ef04783198feed05a24caa" + }, + "src/shim/hooks/dictionaries.cpp": { + "mode": 420, + "sha256": "b60794256c07964eb89d5295ecb711b402112fe5f982a9215dc3a304d03a567b" + }, + "src/shim/hooks/dictionaries.h": { + "mode": 420, + "sha256": "ac68fd66eb343d40ee97d6bf29c8b54f5d469a9ef8862687ae15e6ad8bdafdc0" + }, + "src/shim/hooks/draw_sites.cpp": { + "mode": 420, + "sha256": "e7a1fa40262db2ed22b1dfa5ca1bd2588da07bfbab046f23afa8e86c03814d79" + }, + "src/shim/hooks/draw_sites.h": { + "mode": 420, + "sha256": "0021323e918d464223d03b969d0e6992a0efac23ba84a31af901cf2ac74e9b13" + }, + "src/shim/hooks/event_inputs.cpp": { + "mode": 420, + "sha256": "eeb9cc87ef5c39994b7f25d5ccfe220c4775b32a4b11471b0fc0fb81fca4362b" + }, + "src/shim/hooks/event_inputs.h": { + "mode": 420, + "sha256": "c0e74aed8756b3de8ebbe5ab3d70cfa6282403efefc2d795e8f0b1b4cd44d731" + }, + "src/shim/hooks/fleet_movement.cpp": { + "mode": 420, + "sha256": "f01ae7f64b1d545089b002b79c9986d2a39b97ad3995c88a8b71fa05eedb90f0" + }, + "src/shim/hooks/fleet_movement.h": { + "mode": 420, + "sha256": "dbbfe50afaedad63ec45881819aa5de3907cdb411ddf8d1d3e6a5f9a386dc8af" + }, + "src/shim/hooks/global_consts.cpp": { + "mode": 420, + "sha256": "87a51601e1a7d963bf841ca4e892aa79de789a050f5d783c7b5d8bbc2e96a9a1" + }, + "src/shim/hooks/global_consts.h": { + "mode": 420, + "sha256": "b6ac4265ec1f02f11c342536dbc9970c13761ea68aec0a5962d0f4cd6aa5d265" + }, + "src/shim/hooks/movement_inputs.cpp": { + "mode": 420, + "sha256": "0e23f86e4a8ed6c292aea8e45512931cdd06742f25c5e0d175bf0ed3b2217502" + }, + "src/shim/hooks/movement_inputs.h": { + "mode": 420, + "sha256": "32904786cbb122c3c8c36faf6bd9ea5ade4cd8395e74199ec08dbcdb8019b66a" + }, + "src/shim/hooks/player_turn.cpp": { + "mode": 420, + "sha256": "33bcadd7569ad13c69f5f160423c8d469bc67725ce7b944cf4b4346fb8cc7f23" + }, + "src/shim/hooks/player_turn.h": { + "mode": 420, + "sha256": "a766a0d93f3860da6f8d1e0dcf110d6754cd8dfe67d867093f32e3d24e8ff0e0" + }, + "src/shim/hooks/player_turn_inputs.cpp": { + "mode": 420, + "sha256": "993dce2ca771a36337c9561695995a0825746563d2e84b4458de650f3e456799" + }, + "src/shim/hooks/player_turn_inputs.h": { + "mode": 420, + "sha256": "ca0d7916ca17d993aaef19be48d03076220ae15cdcc622aef52a7c6b5957ca71" + }, + "src/shim/hooks/probe_entry.cpp": { + "mode": 420, + "sha256": "5faf9cf04a2cf849d2dd54ce4ad9b812120fb99741f11e9d52fed450badf0506" + }, + "src/shim/hooks/probe_entry.h": { + "mode": 420, + "sha256": "f04f445863a6164d03bc9f6edcaa2e2b0108163241510f4c1dfcb0da7667d89f" + }, + "src/shim/hooks/research.cpp": { + "mode": 420, + "sha256": "dacd16403f1dd5be2ef2cc42f16938977bdd0ee9283d0bca647a079ee3d28e83" + }, + "src/shim/hooks/research.h": { + "mode": 420, + "sha256": "a62c4847be81ed9d10c4f5b9a876bd79898040aa11aa8764149d82db4b010a84" + }, + "src/shim/hooks/rng_ledger.cpp": { + "mode": 420, + "sha256": "119d325fcda72268bdc87f7ca7af05d059d4521c4d7d40ad7426ce070865eabb" + }, + "src/shim/hooks/rng_ledger.h": { + "mode": 420, + "sha256": "0d1e9c79e7601da921253e860c55d9b69c21e03a1014c49f1dd85fd0e5f70f30" + }, + "src/shim/hooks/system_output.cpp": { + "mode": 420, + "sha256": "93bfb7e6ca381041d1e9830f82b8d774a63c12593fc426fd3e9198c9373be3b4" + }, + "src/shim/hooks/system_output.h": { + "mode": 420, + "sha256": "62a8424c70bb8e6c3d9603ce752f6b19a3920a4a78be75718869d7dac73f3738" + }, + "src/shim/hooks/tail_rng.cpp": { + "mode": 420, + "sha256": "9b2a3923d1d837399f3486650ef0e49b502837ff7df46a12df9a9e9b0d4d9d07" + }, + "src/shim/hooks/tail_rng.h": { + "mode": 420, + "sha256": "b9585605e71364872db25c608012e94db2148f22e2e6fd40d4b590a83f3be92b" + }, + "src/shim/hooks/tech_effect_fields.cpp": { + "mode": 420, + "sha256": "4c4d558aba3ac4e1b10e0944c867911e61daea0b4ade716760546846cebcb7b3" + }, + "src/shim/hooks/tech_effect_fields.h": { + "mode": 420, + "sha256": "22b2c050f73c9de011a42dc5a52d92a1bd3b24a59f3ba3b4332d832fb1853420" + }, + "src/shim/hooks/tech_effects.cpp": { + "mode": 420, + "sha256": "2a20f01a18ed30a466e2023ae023aeed8718c680cda927d2f3b463b6dbe35714" + }, + "src/shim/hooks/tech_effects.h": { + "mode": 420, + "sha256": "ffbc4e8262146cd7764f0b9758fff01ce5d359b25a0f5d8c931313f32d035320" + }, + "src/shim/hooks/watchpoints.cpp": { + "mode": 420, + "sha256": "15c94333f22bb592129efe3fb800ea89987045f9ebbc0e6791d4397961fd727d" + }, + "src/shim/hooks/watchpoints.h": { + "mode": 420, + "sha256": "639ae42b230fb31762f50cac0422dcd5b7fda7a1a02c7739a86d1cd6eda62277" + }, + "src/shim/main.cpp": { + "mode": 420, + "sha256": "eebdac7f8f69b8b95cd290c96d41c6f3f0ed5c45ccd5de54ffc790af47083b99" + }, + "src/shim/shim.cfg": { + "mode": 420, + "sha256": "44ca58394455549150c3461cc888128a968b4f062807e19ef25b8eebf0bfd523" + }, + "src/shim/shim.cfg.b4compare": { + "mode": 420, + "sha256": "68bed5883a75132eb5e885b4750d23c1d5734c843a32a56dc7f96d2b73fdf962" + }, + "src/shim/shim.cfg.b4scout": { + "mode": 420, + "sha256": "faac0765478d88b63f371fbc307512e71fe05f2e6f97272e6e0ceb267cc6d626" + }, + "src/shim/shim.cfg.b4trace": { + "mode": 420, + "sha256": "6a89cdd3cfdf53cfbaff29278fd5d0edf156ad8a525c61624b60ddb1eb0575a1" + }, + "src/shim/shim.cfg.bupin": { + "mode": 420, + "sha256": "39d52ef1ccb18d4dea261b87d3f363ba45079022d1b9bc3531c552ef6df80ec2" + }, + "src/shim/shim.cfg.cbcapture": { + "mode": 420, + "sha256": "0939b1ea144976ded2d45ad885fa0f1ffa3d77f16cba9b4d5a9cb87623500a62" + }, + "src/shim/shim.cfg.cboff": { + "mode": 420, + "sha256": "7d5d6e2ceb7f86fd17543c9212e8547be6009f725871aadbaf6057af1f4f5484" + }, + "src/shim/shim.cfg.cbpin": { + "mode": 420, + "sha256": "72a222c025796458dc1a538eed3ea55f053ee5e3c01e5b19b802922a058d4fbe" + }, + "src/shim/shim.cfg.cbtrap": { + "mode": 420, + "sha256": "938c0893b95b576b75927d75787999c22b3424d28c8936456ea3723f62775e51" + }, + "src/shim/shim.cfg.crcompare": { + "mode": 420, + "sha256": "129031ceb358fef9e0fcee2fb42a0f20fd76d9db78f061f956bf75ce2cc51dec" + }, + "src/shim/shim.cfg.croff": { + "mode": 420, + "sha256": "f99345e7db55e695ecabf7a00fc16ced9a42e8882abfeabc8281b9a4ef26d730" + }, + "src/shim/shim.cfg.crreplace0": { + "mode": 420, + "sha256": "60c13bd76e546b4521ab4e6a7836439078e2a176a11e471e03434623153cb7d9" + }, + "src/shim/shim.cfg.crreplace1": { + "mode": 420, + "sha256": "d27f43eb970d6a9c8a0c8d8f7071633a226c34b675a6581b331c6e1ba6f36c9b" + }, + "src/shim/shim.cfg.fpu007f": { + "mode": 420, + "sha256": "998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363" + }, + "src/shim/shim.cfg.fpu027f": { + "mode": 420, + "sha256": "f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd" + }, + "src/shim/shim.cfg.fpu127f": { + "mode": 420, + "sha256": "1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271" + }, + "src/shim/shim.cfg.fpu137f": { + "mode": 420, + "sha256": "8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9" + }, + "src/shim/shim.cfg.fpu1a7f": { + "mode": 420, + "sha256": "59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588" + }, + "src/shim/shim.cfg.fpuoff": { + "mode": 420, + "sha256": "ce637b3f0eca81c04490335cd9fe8a537cd09e5ef14cc5b3050f548ca4d54c65" + }, + "src/shim/shim.cfg.hoff": { + "mode": 420, + "sha256": "dc9b4619fe84921ea5896c2cd190afb5bd4ca89422fb86bfee8459665f92cd7a" + }, + "src/shim/shim.cfg.hp0": { + "mode": 420, + "sha256": "ede723fc540adb94bf16af0f3086c1935aac008acb6a8d550e2a4e97ff232c2c" + }, + "src/shim/shim.cfg.hp10": { + "mode": 420, + "sha256": "1c1f07dfdb7f99d63ed9a62aa9a447efda690623164beeaf434c588e02ef12cd" + }, + "src/shim/shim.cfg.hp11": { + "mode": 420, + "sha256": "36eae0d554a79b9536e3c57d2fef187ae81bd3266947c7f45035be554fb59404" + }, + "src/shim/shim.cfg.hp4": { + "mode": 420, + "sha256": "5bb0d636247c37def9b5cbf0cc9138b13590a50ae8212890fb7d31dfb9e837f4" + }, + "src/shim/shim.cfg.hp8": { + "mode": 420, + "sha256": "a8fe5f16a299b2b9eb81a811c7ec5a3b1baf635fa179a69f1e23243c7d1e2133" + }, + "src/shim/shim.cfg.hp9": { + "mode": 420, + "sha256": "765fdf337bb6942dbd1357166646dbf7fde3777678a606c4dbfd368078f09b5d" + }, + "src/shim/shim.cfg.hpall": { + "mode": 420, + "sha256": "630f99725ea6aa933984f4c545634d127787672de36f6756da2591e22a36f366" + }, + "src/shim/shim.cfg.hprobes": { + "mode": 420, + "sha256": "3bad5e3e7bf35a85acc7169d27531788e9659dbe0f8b1a0c719777fdb6beb5dc" + }, + "src/shim/shim.cfg.hprobes2": { + "mode": 420, + "sha256": "c335f1ec8aeff1165213cd40adcdcd59893c65edf95b1537fc4460e6060911c5" + }, + "src/shim/shim.cfg.l1control": { + "mode": 420, + "sha256": "c5dec81556268795b9a3df175bafde340a3fe76c7d6e05389e09e79d2b138b43" + }, + "src/shim/shim.cfg.l1hive": { + "mode": 420, + "sha256": "970ce465f2363f391a93086f1b596e904265510e02e7d2d38174cc6ea22d9b25" + }, + "src/shim/shim.cfg.l1off": { + "mode": 420, + "sha256": "a4197233c65acb876328666cf37754aea96f942b6ea08105bdfb61d6d5bcbd64" + }, + "src/shim/shim.cfg.l1seed": { + "mode": 420, + "sha256": "360af979eaa0c13eaa4db38ff13dcc64b3e2ab538300c26497921301fd3817b9" + }, + "src/shim/shim.cfg.l1snlv": { + "mode": 420, + "sha256": "3603508983a87906ecce02e4c2e9581cf2fa59390af25335f0b221765c57ef6d" + }, + "src/shim/shim.cfg.l3cont": { + "mode": 420, + "sha256": "629530a34412ebf85fc8ce8d2e5931684eea9891b6b619419e6f8db8c37f0976" + }, + "src/shim/shim.cfg.l3control": { + "mode": 420, + "sha256": "42b6ec7ebc9c83dae4a58884803f627d54956eb308611ce1e8d3691a12a74ccb" + }, + "src/shim/shim.cfg.l3probe": { + "mode": 420, + "sha256": "692dabb6f00343bfcc2f86d62ade827c295acc4630a18a1f2ddcebd53640978d" + }, + "src/shim/shim.cfg.l4control": { + "mode": 420, + "sha256": "ab13b7e3604ee98e9372e3405e0eacb6d5965e02d5317cfee0ea9b9afbd750e3" + }, + "src/shim/shim.cfg.l4dump": { + "mode": 420, + "sha256": "fb40d67d8d7dca4587a1dc13a95826ab68eb3fcf44feb6006388935f3ee346f2" + }, + "src/shim/shim.cfg.l4off": { + "mode": 420, + "sha256": "629a3e41d11daa53325f31aeb77d14d5abe67058e274d36ed8feb71e2e30dc13" + }, + "src/shim/shim.cfg.l4probes": { + "mode": 420, + "sha256": "a446ff3d6117d5352ad9b3c3c02f6d6300ce0b1089f055925afe19b77f0a20f3" + }, + "src/shim/shim.cfg.l4research": { + "mode": 420, + "sha256": "ad400f7082680db82c6fb0d39eed488710e6661f9e3215b9ea2eb0ba53444b9b" + }, + "src/shim/shim.cfg.l5budget": { + "mode": 420, + "sha256": "74df0fa1bd14fec6e8028ba05c516f3a370ba389386e5a8459d594c2c7ad83ae" + }, + "src/shim/shim.cfg.l5control": { + "mode": 420, + "sha256": "3557f716dde348a98fda65a5bad54911fe6d52f75c2cf6a82cc5d4fc47a6e968" + }, + "src/shim/shim.cfg.output": { + "mode": 420, + "sha256": "a811cffac230a1d6c0f9c5adacb1b691ae289ec08de0da3726309a4e1213acb0" + }, + "src/shim/shim.cfg.parbr": { + "mode": 420, + "sha256": "ea8230b596e7baae0c127f5700391ec2c96d546daba8c70ce8b2800c83b096dd" + }, + "src/shim/shim.cfg.parctl": { + "mode": 420, + "sha256": "2d1190d032bb705030746197020c715f4ab8af551f944e9ec0abe136912ea60d" + }, + "src/shim/shim.cfg.parorders": { + "mode": 420, + "sha256": "2107be5ec950e69d01c43ab30919fbfe652823878f150111b158927bc41de8d6" + }, + "src/shim/shim.cfg.parpin": { + "mode": 420, + "sha256": "893f1f81cdef0a964145ebb1c4b1e2725af8868b14fed412d40e3cce71f824f4" + }, + "src/shim/shim.cfg.recapb1": { + "mode": 420, + "sha256": "688840567305218dada122b29284f6af44c3c63ca173db87406de159bb547c8f" + }, + "src/shim/shim.cfg.recapb3": { + "mode": 420, + "sha256": "2120646255bd70adf29ed2880daa6b11d0867b9cfc9f1c9644d63b92c263b69b" + }, + "src/shim/shim.cfg.recapmisc": { + "mode": 420, + "sha256": "cb1f794c51b5d3d74eb91cc084c96a04444cd79f22fc694d821b51924544f595" + }, + "src/shim/shim.cfg.recaptrace": { + "mode": 420, + "sha256": "0ae410cc72fe155837d711c78543e14b1f5743310cd023298eb1e5bbd5457e71" + }, + "src/shim/shim.cfg.sdbr": { + "mode": 420, + "sha256": "7cb2bfd798ed1286628f3a879606eff076c4f6011d95e1223376eb4d0a392ca8" + }, + "src/shim/shim.cfg.sdoff": { + "mode": 420, + "sha256": "9195aeddeb2caa4e3db7dfd775c43e96eb99cfdc59a6a61e65d86fb325f0054a" + }, + "src/shim/shim.cfg.sdpin": { + "mode": 420, + "sha256": "61119f197b1dc8ddcad059d2d2c2753dae457b4bda4eb29e06c78282eeda6a0b" + }, + "src/shim/shim.cfg.sdpin2": { + "mode": 420, + "sha256": "d6d7f82b500df4f3ed120b4ff421178cf4373a145fa803e57d22a0654e4f0f63" + }, + "src/shim/shim.cfg.tturn": { + "mode": 420, + "sha256": "2ab2d64288043c3c55fde668facde9307c0739e0c801c900790e11db57c5759b" + }, + "src/shim/shim.cfg.tturncmp": { + "mode": 420, + "sha256": "114d325ae3ece29422069ee74c790603abb38c49162dd32520a3eecd18ab6061" + }, + "src/shim/shim.cfg.w2control": { + "mode": 420, + "sha256": "d042c0082a8eb4f55b8e21983df292f0950adc4ac5787d4a0b83088c10c5a3eb" + }, + "src/shim/shim.cfg.w2watch": { + "mode": 420, + "sha256": "ddb9c18a1c6b6c23758e51ca9ac18b4b95abe206b162497adc2978c0384d6ee5" + }, + "src/shim/shim.cfg.w3control": { + "mode": 420, + "sha256": "c6a3a5ea1e39a0714dffee0e44a0e8d91a2b450534d7e4377273a55b3e87de8c" + }, + "src/shim/shim.cfg.w3mod": { + "mode": 420, + "sha256": "7c7f82aaa8b5b007a740324373060ca2ba84edc765eb4e7ce55afcaba4e1c2e0" + }, + "src/shim/shim.cfg.w3tshn": { + "mode": 420, + "sha256": "51fa826d0b18d6f01987d6748e6610847ec3a761257ffc382a40d234670afec3" + }, + "src/shim/shim.cfg.zledger": { + "mode": 420, + "sha256": "31d0535aff9660eb1ad06f529c88a42aa71b83b36f8404b7541a29327c508a51" + }, + "src/shim/trace/emitter.cpp": { + "mode": 420, + "sha256": "4253cac49f0761e487fd555c3c01e02fa22e2010789ad3af37c62c8fd2e02030" + }, + "src/shim/trace/emitter.h": { + "mode": 420, + "sha256": "aa7804614b3d3a214d5c32c33ed245ae24276979080baa9d5481d6594ee3f79d" + }, + "src/shim/trace/hook.h": { + "mode": 420, + "sha256": "35be73ac1c9519664957ffea639d873e8a811b4620f0feecb21b54ea2776f800" + }, + "src/shim/trace/platform.h": { + "mode": 420, + "sha256": "f1b78d971798e45998b26c6b0e20db49fceb7d4c63f0c8c37452c6c2c6df9538" + }, + "src/shim/trace/selftest.cpp": { + "mode": 420, + "sha256": "31461ae6d329a8a3856589b245f3bcf8631f0db9a5e00530e4f94279950de354" + }, + "src/shim/trace/selftest.h": { + "mode": 420, + "sha256": "583d7a10ef04254c7a0fb7dd2a6071ad012a9a97dfae0896bbd598970b206475" + }, + "src/shim/trace/sha256.cpp": { + "mode": 420, + "sha256": "2faf44b5b273612c776204c1d83e0910d86394f4f6207129a01c81dedc170aa8" + }, + "src/shim/trace/sha256.h": { + "mode": 420, + "sha256": "31ce080acdc086ff7657d9093ac9bea438203eaa8e392ca38539152cdd15038f" + }, + "src/shim/trace/tracer.cpp": { + "mode": 420, + "sha256": "37d9490dbdedc399ecdb30f46eb27f31a4ff8c902eadb2eb48ecca7fb0e8fb88" + }, + "src/shim/trace/tracer.h": { + "mode": 420, + "sha256": "cbb80f167b8f98777f9fb58ce107226f42027ffdbd868a6808047c48caf10f76" + }, + "tests/addr_smoke.cpp": { + "mode": 420, + "sha256": "ace1ab9549bb6f3e0048d0e6e3ec6061035395581b2db46c0a5acb097c428890" + }, + "tests/app/CMakeLists.txt": { + "mode": 420, + "sha256": "dd18f8e25d2a9ce988dc226e03c7c6e02a275bbbea74f505d005e42ca5972037" + }, + "tests/app/test_alliance.cpp": { + "mode": 420, + "sha256": "671b2cb3295f360c61ee87005287999710d12e10e7e532331c1c946ab97f7c4d" + }, + "tests/app/test_catalog.cpp": { + "mode": 420, + "sha256": "c4cd9840c1f1b5d5a6829f7f1c5a0245b5e66135d3bed6410a2b6eca1a037225" + }, + "tests/app/test_command_replay.cpp": { + "mode": 420, + "sha256": "739ebeea5bed551f232774bc812bcb794cfa057015fd187529fa563b5d7ae5eb" + }, + "tests/app/test_event_phase.cpp": { + "mode": 420, + "sha256": "05498df256759fe5b8af80e9e56c2ca071eb26de0651f257798fe1641da627ca" + }, + "tests/app/test_trade_raid.cpp": { + "mode": 420, + "sha256": "2158008bc711b8062381f346fa347a430582d8d1943b0de5f40eb2a38e9a3f75" + }, + "tests/app/test_treaty.cpp": { + "mode": 420, + "sha256": "0f98150a3f9397fd12109eae7359ff7e04a4060e10e01ecf1693eb2a4606ead7" + }, + "tests/app/test_turn.cpp": { + "mode": 420, + "sha256": "6d45b1d2d065528f14ae83d95314f2b6559e53cc23f1b9e2531c7c09b4b97eab" + }, + "tests/app/test_turn_record.cpp": { + "mode": 420, + "sha256": "a845971b8d25d71c3b1138495354ad392e4fc298f87eb9b89d1567c01ab59cde" + }, + "tests/game_ai/CMakeLists.txt": { + "mode": 420, + "sha256": "a57a82d0c79ff933564e200a5b3137f120e70a19834264eeb2438c4cafd7ad3e" + }, + "tests/game_ai/test_agent.cpp": { + "mode": 420, + "sha256": "41cb3fbfc7e0b277771a2e8dd17601285a1e3a911543fc1335ce05a4e4b5f11c" + }, + "tests/game_ai/test_apply_order.cpp": { + "mode": 420, + "sha256": "8669c2e9a4c95b670a9c41262c68ce183d3cf3900bc262e0a2e33500bfffc594" + }, + "tests/game_ai/test_command_capture.cpp": { + "mode": 420, + "sha256": "8c2bae38754b347beeefe85d796c13bcf43cf5bc9bc99eb743626028b4dbd7ab" + }, + "tests/game_ai/test_live_blocks.cpp": { + "mode": 420, + "sha256": "44cb6bd8b34c13e329f9b1d50bb2a5c5513e52761537dccfb01afb7d48be7580" + }, + "tests/game_ai/test_orders.cpp": { + "mode": 420, + "sha256": "b13d1a3a628de411abb4faf024a1ce8d3e94518f12285bb3d7e7e86b012ad43f" + }, + "tests/game_ai/test_tasks.cpp": { + "mode": 420, + "sha256": "ffd8eed7fa76a24616d579a4e31031dadf43a0534e33743fb104dfca552367fc" + }, + "tests/game_ai/test_turn_order.cpp": { + "mode": 420, + "sha256": "382d6a30e9151c57849595cb134b8e2da25d2763738c9cbfa18d3cad51ecce97" + }, + "tests/game_combat/CMakeLists.txt": { + "mode": 420, + "sha256": "fd0c0dfb54033353b7014e3c764c916522cb529b6b3eae8a8d52afd044c13fe2" + }, + "tests/game_combat/test_retreat.cpp": { + "mode": 420, + "sha256": "3fb0be08d230bbd7c4ea4a59319de7ab252e5b7cbee924afd069847da8dcf73d" + }, + "tests/game_config/CMakeLists.txt": { + "mode": 420, + "sha256": "9874822d186e783f25b2dcd87495e7e380d873b8a0790c67fffb9430468094ed" + }, + "tests/game_config/manifest_tests.cpp": { + "mode": 420, + "sha256": "3bc62e7e49699254151a825421973d831b25bcf7a22028c789e3ca63b0d77319" + }, + "tests/game_config/replay_trace.cpp": { + "mode": 420, + "sha256": "83602ec974b8195c3616230ad44c2d4fd6032f8ef5f96e7aa76d49a0a04ac05e" + }, + "tests/game_config/unit_tests.cpp": { + "mode": 420, + "sha256": "45b07c7289abac61fccd0a6cd0ff87812542ec888eb6d295fb87c3f57755cc6a" + }, + "tests/game_data/CMakeLists.txt": { + "mode": 420, + "sha256": "cb8cffb7217e82077d3db749dcacf29c098549159cc0f312ef04bfccaa30155d" + }, + "tests/game_data/build_and_run.sh": { + "mode": 493, + "sha256": "69ea9cb94468c56c329fcc5b9350431067e97091ed47c08bb10b57b38412883a" + }, + "tests/game_data/dump_catalog.cpp": { + "mode": 420, + "sha256": "4588e699c69586dfb77f0d9289e375407d4f9cf019690e26bfc78f7182167c89" + }, + "tests/game_data/oracle/compare.py": { + "mode": 420, + "sha256": "2cfe1ac93790de3351256d284392372721f94de5375686e6301ef39b1943ad12" + }, + "tests/game_data/realdata_test.cpp": { + "mode": 420, + "sha256": "334a924bf81c6ce6192a6688435b374e115382358f7e4554aa164295bdd38321" + }, + "tests/game_data/test_catalog.cpp": { + "mode": 420, + "sha256": "9ea5c3fff2388c5d7fbf295123dfd7b702ef21f17fc7c45a970822814abfce2e" + }, + "tests/game_data/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/game_data/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/game_data/test_shipsection.cpp": { + "mode": 420, + "sha256": "b3519f0de60d061a6f1ab8ee81d470a28fc17cc81b113639ef2c1e139c249b4c" + }, + "tests/game_data/test_techtree.cpp": { + "mode": 420, + "sha256": "d05c889da9edb622bd2b66aa8e300d8162e0c8788950daa1086fc049b90dd4bc" + }, + "tests/game_data/test_turrets.cpp": { + "mode": 420, + "sha256": "66adff30b974e9bf2c96c1af024fb85677e1a8307c801933d23f3d2ec9d8222c" + }, + "tests/game_data/test_weapon.cpp": { + "mode": 420, + "sha256": "b16b0481c0a8697ff16e39c9feb3ad9d5406250b7dd1c828bf12f1bb40ed746b" + }, + "tests/game_design/CMakeLists.txt": { + "mode": 420, + "sha256": "a26524ff14878564870853bc067c379d2ebd26c14e45bcbb06593d300ee4b3ca" + }, + "tests/game_design/build_and_run.sh": { + "mode": 493, + "sha256": "b1aab4d13b09fb1ea4205978bd7d8b05af5a6422ebe4a34261c3247489b48bd7" + }, + "tests/game_design/dump_designs.cpp": { + "mode": 420, + "sha256": "b1b24c5cb534ad821a20325869713c04b742c541c448ade83543d75608f7eda2" + }, + "tests/game_design/json_min.h": { + "mode": 420, + "sha256": "9cfd3eabe9b36d6b2863872e08fe6ebaddf0749d1966dea693f8bbc0472780ac" + }, + "tests/game_design/mini_catalog.cpp": { + "mode": 420, + "sha256": "5817c0251883c999c6ebd54c77fdcf3981181b41fb5f7637d445824d60942810" + }, + "tests/game_design/mini_catalog.h": { + "mode": 420, + "sha256": "ecb7fd0dffa8709008bcdf9b9da3e70e68f735f9b5ecd0dcb4c871a35ae43b59" + }, + "tests/game_design/oracle/compare.py": { + "mode": 420, + "sha256": "2db14952f7fca9a587995e326651b0d549b39ceefd9c0ac59982cd35ae5d21e7" + }, + "tests/game_design/realdata_test.cpp": { + "mode": 420, + "sha256": "cea57cd53d881b3bf2557cc32ea402c4991aa6de5ff72340861f195a8e20c141" + }, + "tests/game_design/stock_designs.cpp": { + "mode": 420, + "sha256": "2ac1b8bcb0f61852f4bc0a8b7cda51167531ca2a05d1e485991a4758cf586d03" + }, + "tests/game_design/stock_designs.h": { + "mode": 420, + "sha256": "a49173bde083467f5650cfbfbaebba5f16208d660fe7f2f3da81c2caff07c807" + }, + "tests/game_design/test_banks.cpp": { + "mode": 420, + "sha256": "c1d34991c53523cb7610a569e861e8a312da1fe659de0522a3594fb14cad24a6" + }, + "tests/game_design/test_census_saves.cpp": { + "mode": 420, + "sha256": "814c17c7a14db7b123579b7636ee7f2b720fdf4a5cbbe90f676dc01709c45e3b" + }, + "tests/game_design/test_hull.cpp": { + "mode": 420, + "sha256": "cff70268d58ab95ed963d335904110ab55c79d6a0f660f613409cf6d5d63e2bd" + }, + "tests/game_design/test_json.cpp": { + "mode": 420, + "sha256": "e7fa196274a4591834a974f742ff59c7ed1fb15fb138091b48a071354d001c5d" + }, + "tests/game_design/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/game_design/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/game_design/test_stats.cpp": { + "mode": 420, + "sha256": "a3681df901095b848cc6b1ae63d04fd70eeeadd406e7d51f3c76671cbf523a7a" + }, + "tests/game_design/test_structure.cpp": { + "mode": 420, + "sha256": "d09f7707ee170f8a933c657628c1da4f61a29c7eb2dc687a96c3985bdac941aa" + }, + "tests/game_design/test_tech.cpp": { + "mode": 420, + "sha256": "689c081a324c7ece3f70d711f7ac67a5b93207f95e2800a3a708f2f8dbe31965" + }, + "tests/game_effects/CMakeLists.txt": { + "mode": 420, + "sha256": "c80413a7103ce0ed7944fb096ad22fc206a091645428a6015ec3d0e442414a0a" + }, + "tests/game_effects/build_and_run.sh": { + "mode": 493, + "sha256": "ab5085eeab0ec65d8f7ddd7d79357cd15183888b1b4e51cb563810d4e4c64506" + }, + "tests/game_effects/test_effects.cpp": { + "mode": 420, + "sha256": "b10d804b1ad4fb140e13cc1984c6372dbbfdd92560f37583f2411bbcb45c16d4" + }, + "tests/game_events/CMakeLists.txt": { + "mode": 420, + "sha256": "c962651d71ee7783d5565b418f653f2954e489cf698762c5686f5f2dbb4304db" + }, + "tests/game_events/build_and_run.sh": { + "mode": 493, + "sha256": "8b92d249138ee53f728583a0c68b153eaf4e2ad7f92d415d8b3a83df2fb3ec28" + }, + "tests/game_events/test_events.cpp": { + "mode": 420, + "sha256": "182941b9b809b20d24a2e29c5e4bbd626e6da8486e87dc38d1c6088161ec793b" + }, + "tests/game_nav/CMakeLists.txt": { + "mode": 420, + "sha256": "7ee85557a167281f4576252428b4e01795232f31dc1d93c23b284568074cec3b" + }, + "tests/game_nav/test_pathplan.cpp": { + "mode": 420, + "sha256": "6229cc2b1be1ffffb3fbb812c2ccc89dba7099d349be3a6f8f2c2e26aa1dd58d" + }, + "tests/game_sim/CMakeLists.txt": { + "mode": 420, + "sha256": "563547cdd93bce41ef29a73289e5104a5df61f71cc980e49ea37cdbe26743be7" + }, + "tests/game_sim/build_and_run.sh": { + "mode": 493, + "sha256": "a9c42a931242c7f266f512b4d4ad11f6f8ecf43a447a06a04f174301ee19328a" + }, + "tests/game_sim/check.h": { + "mode": 420, + "sha256": "faddddc37a528f0235f510b249cfc1776ce30aff709329954f09093b01231221" + }, + "tests/game_sim/mini_json.h": { + "mode": 420, + "sha256": "710218b637aaf1a5eb7c49eaa7d158bc3e495135ec14bf8b41384769d0227ba5" + }, + "tests/game_sim/smoke_real_save.cpp": { + "mode": 420, + "sha256": "2432e92ac18fadfb1152c54d9dec9a77b3dbf506ea122401cbbd48584b7c9190" + }, + "tests/game_sim/test_colony.cpp": { + "mode": 420, + "sha256": "45355673c46cbaef66b2c81d04a845cf65b6ddfd9819350c7338d9771fafb6fe" + }, + "tests/game_sim/test_construction.cpp": { + "mode": 420, + "sha256": "8df75076a3f460e949e34100d55acf60b054603da6d4aeda4f73297442c06e21" + }, + "tests/game_sim/test_economy.cpp": { + "mode": 420, + "sha256": "43fe658fd2347e3667a901afa642713d70c85ef0ec75094642da2d05b9ca471b" + }, + "tests/game_sim/test_movement.cpp": { + "mode": 420, + "sha256": "1927c371d52115458d88552014cef30bba60e9bef5eb3acfce11b2bc623e06a6" + }, + "tests/game_sim/test_observed.cpp": { + "mode": 420, + "sha256": "1f6ad16c1a2c80f0621573b5196989b0349e47351585d83835be5e27f6ef3fe4" + }, + "tests/game_sim/test_player_turn.cpp": { + "mode": 420, + "sha256": "13f76eaa6cad265deec25416acf0cae2028d6cd1c7b9585df6e9252ba3f0cbed" + }, + "tests/game_sim/test_research.cpp": { + "mode": 420, + "sha256": "3dc668eb889c41f58db6007a96f54fe2a6d56ee6501a298fba3afbbe9637baf6" + }, + "tests/game_sim/test_scriptobjects.cpp": { + "mode": 420, + "sha256": "dfe90a42bcd2844c2ea3666816f97c05237206bf44467ac29790c72b7b498582" + }, + "tests/game_sim/test_techgraph.cpp": { + "mode": 420, + "sha256": "0627ea1c8012b90b62285cae2f31599ba8a8cd47928452910ade91f93502d68e" + }, + "tests/game_sim/test_visibility.cpp": { + "mode": 420, + "sha256": "ad756975b6605a164f2f9106daf2511730642eff354a866bc764a93a4be1efe7" + }, + "tests/mars_parse/.gitignore": { + "mode": 420, + "sha256": "181314065df2f2fdaf920b1a8b5311daa216a2d6489a06ada5b49cc514d89417" + }, + "tests/mars_parse/CMakeLists.txt": { + "mode": 420, + "sha256": "898204fbc1cec44f697e2803c8bc4887857950ba2b1192dd153de74d26de0ea4" + }, + "tests/mars_parse/build_and_run.sh": { + "mode": 493, + "sha256": "550c6df5fffbd85cfffc3312a03a5fa9d59c1e0416e883ddc2576cdb73eac6de" + }, + "tests/mars_parse/canon.cpp": { + "mode": 420, + "sha256": "63e2bcfb2820e7533aa3a287bcec6c318f7238006dce61ad35381562b979cd47" + }, + "tests/mars_parse/canon.h": { + "mode": 420, + "sha256": "c9a78b866d62c4e58643de2c4149572380a1392b411049c8fe74e37475d21d9e" + }, + "tests/mars_parse/oracle/dump.py": { + "mode": 420, + "sha256": "16e98089d5b532e35d6b88b3d50b4bb07e879c18512cf8d06cc5fd2aa9da1117" + }, + "tests/mars_parse/oracle_check.cpp": { + "mode": 420, + "sha256": "5eb81a0c2db8f96c6f8e51246ea9991642e5571dd94dd2e410e2fad632d47adb" + }, + "tests/mars_parse/test_blocks.cpp": { + "mode": 420, + "sha256": "f376a57891a83768ecc8b73ef5eb2333291c280760f7581ead53f7c2a71a4df5" + }, + "tests/mars_parse/test_effect.cpp": { + "mode": 420, + "sha256": "8bb14e7c718e772bfb4a22a7370f41080c49beabfa597ddd603be257bc310011" + }, + "tests/mars_parse/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/mars_parse/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/mars_parse/test_value.cpp": { + "mode": 420, + "sha256": "a8dbe3326e5339cdad8fed7dd678df92e8a8b675d0b854f4cea6517bf557069d" + }, + "tests/mars_stream/CMakeLists.txt": { + "mode": 420, + "sha256": "31c69840e6e2e566d2e0bbaf49ab3dec712d27e505d0810ddf0496ce3ff321e0" + }, + "tests/mars_stream/build_and_run.sh": { + "mode": 493, + "sha256": "3737e42960b66e788a11cdd7fa9917fe255b6a4f60280e9f620593bf688aab41" + }, + "tests/mars_stream/oracle/compare.py": { + "mode": 493, + "sha256": "f39dd70e4bbf1952cf99e3437fd1ed6252249f3455a2d3c73311f98d8ff4370e" + }, + "tests/mars_stream/test_domains.cpp": { + "mode": 420, + "sha256": "08394777f7bc4186883cd02058f17fda8f47c3ee47049892bd8762c28b5aa959" + }, + "tests/mars_stream/test_rng.cpp": { + "mode": 420, + "sha256": "55f77273d8af5880f976a24fb00dcd8042b31a7a33f15c9f4b62fdb85bba9d0a" + }, + "tests/mars_stream/test_save.cpp": { + "mode": 420, + "sha256": "50250bb4b4f2da05f9453c541f080e018b68731f24cbf93278d50ca93ddd8d63" + }, + "tests/mars_stream/test_stream.cpp": { + "mode": 420, + "sha256": "d0da9ac2287910527bdac875ab39e0147a9be2f5535f04b55460438f31be2537" + }, + "tests/mars_stream/test_wire_schema.cpp": { + "mode": 420, + "sha256": "1cfd259f554be8218cb182dd1facc07f6cd3dea52f0daf7303393e78c7c2eb97" + }, + "tests/mars_text/.gitignore": { + "mode": 420, + "sha256": "181314065df2f2fdaf920b1a8b5311daa216a2d6489a06ada5b49cc514d89417" + }, + "tests/mars_text/CMakeLists.txt": { + "mode": 420, + "sha256": "20f8e0cfa044fb4e6b1caca0ec8d6536e012c1c4ea4454fe990923f40a201752" + }, + "tests/mars_text/build_and_run.sh": { + "mode": 493, + "sha256": "59ae392080c01be0c7f5530ecb9ae4fbdcc02366242b27527c14b8efd5076d0c" + }, + "tests/mars_text/dump_json.cpp": { + "mode": 420, + "sha256": "e246384902c3adf4fa8f2a54e38c4912f6b58f168ebc9b1e158a719e2a52b1bc" + }, + "tests/mars_text/oracle/compare.py": { + "mode": 493, + "sha256": "46a796196a413aa28a0069086e45c96399f21308153b578f063801eb997b54ef" + }, + "tests/mars_text/oracle/dump.py": { + "mode": 493, + "sha256": "53fde94f6676a5504a247cf209e2a42d67e108cc9ea0b02f289562799ee7d880" + }, + "tests/mars_text/realdata_test.cpp": { + "mode": 420, + "sha256": "a399ad5cf91cf35f78809f5b9b5cac8b2eff344dbfbab07b8b27bf66058e1e3b" + }, + "tests/mars_text/unit_tests.cpp": { + "mode": 420, + "sha256": "cd1e9e4f6e0e503d4d9b0902bd2936513293490cdc680f94639ce93661ca09d7" + }, + "tests/mars_vfs/CMakeLists.txt": { + "mode": 420, + "sha256": "282015598e03430be0f47b779ce7087662415b3a59de14814cb3ba35c17af363" + }, + "tests/mars_vfs/build_and_run.sh": { + "mode": 493, + "sha256": "b6a8e7b0706d7416f548f071e742e600cab226663f7d4ad42299dbb76f631701" + }, + "tests/mars_vfs/make_fixture.py": { + "mode": 493, + "sha256": "57586249e57550869dd5adfbc4fdab173a59d2aee630ba69c20d562018d249f1" + }, + "tests/mars_vfs/realdata_test.cpp": { + "mode": 420, + "sha256": "c95248ae53d32bd5d8cf963ca3a39ea82e5ef08b76de736104b6aa34ec88c789" + }, + "tests/mars_vfs/test_main.cpp": { + "mode": 420, + "sha256": "cdb7bdf9b9356eb0b7f6cb0fab081cda2161b34af14ecf60cc44970e79d517c2" + }, + "tests/mars_vfs/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/mars_vfs/unit_tests.cpp": { + "mode": 420, + "sha256": "de8da00718799886fbbc5820e0f7d0e468a31ab0608361fb509b0c12932c9caf" + }, + "tests/mars_vfs/vfs_cat.cpp": { + "mode": 420, + "sha256": "4a443e779de264f5c0c68a631b1a353b1310a4e838d342527befd8ad1e2a25bd" + }, + "tests/mars_vfs/zip_builder.h": { + "mode": 420, + "sha256": "a0f3688e5a90b7e209497d66d0dcd30a0e1ac59a56ffcbed31b2a50967c1da3a" + }, + "tests/shim_budget/CMakeLists.txt": { + "mode": 420, + "sha256": "88a0f43e433c3a6879a7f6cccf8c84ba4559009614a3fe5adf6c558ea7a47245" + }, + "tests/shim_budget/unit_tests.cpp": { + "mode": 420, + "sha256": "654e96d0880232d3090223a0d9f92f428aeffa528fbd5eca89d6bfe348aefce0" + }, + "tests/shim_colony/CMakeLists.txt": { + "mode": 420, + "sha256": "d7b2674971b0eda32b2edd62244c32af81cea9e6d984a24ca6648edbaea80e06" + }, + "tests/shim_colony/unit_tests.cpp": { + "mode": 420, + "sha256": "4cc41308c10fa1e6aa047fb6c26e4c655b727884bce87b5a9e8e2f76db665474" + }, + "tests/shim_events/CMakeLists.txt": { + "mode": 420, + "sha256": "2b43190a2ce88cf7227250aa5a3b48e3006d24f0d6f5e9a5e48507c2733e4c45" + }, + "tests/shim_events/unit_tests.cpp": { + "mode": 420, + "sha256": "0dc151a4aecb24217cc38cb818bbe760b3da2b08a23ad734b3fa8506d25fe2b4" + }, + "tests/shim_movement/CMakeLists.txt": { + "mode": 420, + "sha256": "46ffe5a9815b189283e4d5ef67a0dcd159f60da7f9ca4a3577669035fefdc1f8" + }, + "tests/shim_movement/unit_tests.cpp": { + "mode": 420, + "sha256": "ee6ee983aa72f078a7ae398ca5f828aba14370c898ae4e56063697d28919ad69" + }, + "tests/shim_player_turn/CMakeLists.txt": { + "mode": 420, + "sha256": "f6affa205f857d4a45f8be05ae0426b6f9a2e8e127f5aeadbac2ed8a4c4daddc" + }, + "tests/shim_player_turn/unit_tests.cpp": { + "mode": 420, + "sha256": "0a528cdf64904dfd22c94ea911a15213701e7912921f04c1909799e6e6240450" + }, + "tests/shim_rng_ledger/CMakeLists.txt": { + "mode": 420, + "sha256": "b6a349f2611ec1f1de2013145a97f3da59cefec81dbc4d2f3e58af507e598bb4" + }, + "tests/shim_rng_ledger/unit_tests.cpp": { + "mode": 420, + "sha256": "d38d80dd907a3468036dbca2b017718b199ab4a0078eb5e5b019b913a9ef8d8c" + }, + "tests/shim_techfx/CMakeLists.txt": { + "mode": 420, + "sha256": "5eaf9a76df6b10258a8c1d2658b03d97377d48a778a1628ca94c9bd69fa7ba8a" + }, + "tests/shim_techfx/unit_tests.cpp": { + "mode": 420, + "sha256": "99a71a6d0ca1f53fc8ff0bc21e79acd64ba2cd9c9f990641e5970c866794595b" + }, + "tests/shim_trace/CMakeLists.txt": { + "mode": 420, + "sha256": "91bc736e198c5cef86ad2ad69ca77d93ab770e5faecf9e6d915f9263b9ce491b" + }, + "tests/shim_trace/check.h": { + "mode": 420, + "sha256": "f4b72b971886c64383880ba26484f9c908d21f5902dff0de0b42f276b00d8366" + }, + "tests/shim_trace/harness.h": { + "mode": 420, + "sha256": "d7eae563723843c1389b108fe2efb2e31b6c264d23567a370a09fb9b1d513697" + }, + "tests/shim_trace/oracle_emit.py": { + "mode": 420, + "sha256": "29ed06c602e9f0d6430bb3c81192b1946213a3f44b91107f7036f35f17b69f42" + }, + "tests/shim_trace/test_coverage.cpp": { + "mode": 420, + "sha256": "8ed5b6d755fe7e2bc98d525e97bc7817a5efb7ed5f0196d49d1c783de3a91bea" + }, + "tests/shim_trace/test_diff.cpp": { + "mode": 420, + "sha256": "afd8e5124cf6e1ad9c4f3e4c2beeb65d00002cf1d4cbaa2e876fea0817a7a347" + }, + "tests/shim_trace/test_emitter.cpp": { + "mode": 420, + "sha256": "a9255bbc055df36a01931e8a61dd1dbf16085f7713db7e7386f66b69ddb10762" + }, + "tests/shim_trace/test_hook.cpp": { + "mode": 420, + "sha256": "4dd67374e260ba2722219c2e44e6be76e583d0ad65844f34859cff49b66a30cc" + }, + "tests/shim_trace/test_sha256.cpp": { + "mode": 420, + "sha256": "b55aa15dc806e3e4a87ddf50657fa4e0af6a4e4e2205c4bd63d1ae066fe57428" + }, + "third_party/minhook/LICENSE.txt": { + "mode": 420, + "sha256": "d5c2224982b0b95a16b098a561335fa93f3eaf4d0aa964b7843edb986df78dc8" + }, + "third_party/minhook/VENDOR.txt": { + "mode": 420, + "sha256": "c79054234a5340f6199f8d9f47d6b3d88e8abd2120586cd78f081cfb81a6fabd" + }, + "third_party/minhook/include/MinHook.h": { + "mode": 420, + "sha256": "e34bbf7b855c842694f6e3dd78e2d280e99ed9732501e3dc1532a8626a8db8e5" + }, + "third_party/minhook/src/buffer.c": { + "mode": 420, + "sha256": "75a789eb718bd5ed2de039ccd330736a31d0a2d14e43d8e15e6cd2332432482d" + }, + "third_party/minhook/src/buffer.h": { + "mode": 420, + "sha256": "9769702bd625249e59a19ede05c84365fcc7707e1fa0e5df08df42227cee13e3" + }, + "third_party/minhook/src/hde/hde32.c": { + "mode": 420, + "sha256": "0ddbc3ab3e0b37e61691131289a151e34f508233ccf3f701752777e5d3f62d68" + }, + "third_party/minhook/src/hde/hde32.h": { + "mode": 420, + "sha256": "5132de5be8ac7a9d054420f5caef0fb01437faa892f03b3cdc77f795973bf15a" + }, + "third_party/minhook/src/hde/hde64.c": { + "mode": 420, + "sha256": "9bf19dd706d4bc255ebd1709f98fb44899df7a1f2412820d77295136e0620f1d" + }, + "third_party/minhook/src/hde/hde64.h": { + "mode": 420, + "sha256": "e99aa4997bda14b534c614c3d8cb78a72c4aca91a1212c8b03ec605d1d75e36e" + }, + "third_party/minhook/src/hde/pstdint.h": { + "mode": 420, + "sha256": "604d1cdf45c5a95bc9cf1bbf39ca05ef83013541101d34971c5cd7577e3d5247" + }, + "third_party/minhook/src/hde/table32.h": { + "mode": 420, + "sha256": "43bf687a9fff071b5f46070db4d36c846f8e069cdc57485ee897c499aacdde23" + }, + "third_party/minhook/src/hde/table64.h": { + "mode": 420, + "sha256": "b774446d2f110ce954fb0a710f4693c5562ddbd8d56fe84106f2ee80db8b50a2" + }, + "third_party/minhook/src/hook.c": { + "mode": 420, + "sha256": "3060d3c42f03a2f11324cbee95d853071757ed0fe4b1bc9eb5f0d8fc9e346a37" + }, + "third_party/minhook/src/trampoline.c": { + "mode": 420, + "sha256": "d837f8555681c3762468d712c43f2064ed31dee610e0b02965fd8aa54b88172f" + }, + "third_party/minhook/src/trampoline.h": { + "mode": 420, + "sha256": "27426751dde36cdd8346469e61cdcca47950b1056a69f21cc63f4b41743faf6a" + }, + "third_party/miniz/ChangeLog.md": { + "mode": 420, + "sha256": "ff3b6040f7cbd8c9779a0690e906c66408f7efe3cf88a25019323f0189025ec3" + }, + "third_party/miniz/LICENSE": { + "mode": 420, + "sha256": "0115478d567121238cf6cc1c0c361926cf07a49d9e4c9e66da97fac6a01646b3" + }, + "third_party/miniz/miniz.c": { + "mode": 420, + "sha256": "e2c1aeb66eef9191d8c3feb164db2def2335a61d039bf04ed849f6b042433b30" + }, + "third_party/miniz/miniz.h": { + "mode": 420, + "sha256": "b53b62ed122e559b8f679e3cb787a0b0035fe87a58f909da0e44931678f4e85f" + }, + "third_party/miniz/readme.md": { + "mode": 420, + "sha256": "b4ea367be28a36e5386f65118b73962bc659a67936d248be68b7a7c03b8d359b" + }, + "tools/build-shim.sh": { + "mode": 493, + "sha256": "1da3fdcc019dc6495c870a42b93cee9f21ff7f9623f033c2f50d9db9fd6a33e0" + }, + "tools/check_shim_configs.py": { + "mode": 420, + "sha256": "ef5e8f100c06d8c485a165ab668206af3e9aed3e1f6aa6ffec2592419fc2332f" + }, + "tools/clean_room_check.py": { + "mode": 420, + "sha256": "e15bc3ebfd29c6e2d8edfc32cc812858869b49ffa1404cafce14c4c24e0f4e24" + }, + "tools/clean_room_check.sh": { + "mode": 420, + "sha256": "6646eb6010be756113f7af39b9cfcb06e8580893fbd100a41993f87757ccfd6a" + }, + "tools/deploy.ps1": { + "mode": 420, + "sha256": "fe01f46bedc91d7b42ff98cb0e69633845094cc2802108d23d48eb70f32e3f27" + }, + "tools/sync-build.sh": { + "mode": 493, + "sha256": "ce418ace6c5edae8609849233bb5dfd24657f55141c8ef8507659608f12aee2d" + }, + "tools/undeploy.ps1": { + "mode": 420, + "sha256": "5730b6f95f161ba5a727dc0a34f26da7f1f697711495d6a9de9c289ecd747af0" + } + }, + "manifest_sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd", + "path": "/tmp/opencode/sots-final-research-engine" + }, + "re": { + "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", + "files": { + ".gitignore": { + "mode": 420, + "sha256": "ba56b745b84c6d15b7288df65f319831fed3cbf8edd1ab3a6476418f48fd95f8" + }, + "AGENTS.md": { + "mode": 420, + "sha256": "ac21cfb98c6cc2f666c7237967ee71315b4787557e936072548e4e6934a8d9fd" + }, + "CLAUDE.md": { + "mode": 420, + "sha256": "65cc9d5f028959a7d9b53c4828778b27217eb04f37f55b08e6aa3e40afb60a4a" + }, + "README.md": { + "mode": 420, + "sha256": "e318014a84d03e53983cdb1e5b0310f372b959f659b91abc9214faf530544afc" + }, + "campaign/DASHBOARD.md": { + "mode": 420, + "sha256": "c5f72f13d38ad96b5a30131b09c20300743d0d1e15357fd249eac9793759026d" + }, + "campaign/agents/analyst.md": { + "mode": 420, + "sha256": "895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952" + }, + "campaign/agents/implementer.md": { + "mode": 420, + "sha256": "eb5581051a92b3d2b9ddd947812b1c02ff6a0b5e7619e7674adc26701e9a3d91" + }, + "campaign/agents/lab.md": { + "mode": 420, + "sha256": "48f1765ebdcb2015e631ad91428f65735ff899e119134b652f70788ff2eae5b8" + }, + "campaign/agents/lead.md": { + "mode": 420, + "sha256": "8fcfe52be845ed98a172afb47ea888b19bb7bffa80f7b50ace58d2bb66924220" + }, + "campaign/agents/resolver.md": { + "mode": 420, + "sha256": "742c36dc8567669d462566d6121eed42fcff5bff34e8eff466e92249f7ca195f" + }, + "campaign/agents/verifier.md": { + "mode": 420, + "sha256": "e467fc644e4e37d631a7a4e35038d9d3d0498491f1d7811d61d99271ff345c6b" + }, + "campaign/backlog.md": { + "mode": 420, + "sha256": "ee123405f92be97d36d86420707d3d60c67cb4ad50165491bc6e12b8dacf3b6f" + }, + "campaign/board.md": { + "mode": 420, + "sha256": "1c256d6e39063609ba89745d2931ad5005223da89ddbe9fda2d782b88d5acdd2" + }, + "campaign/contract.schema.json": { + "mode": 420, + "sha256": "a2c76ec042ca097a57c3c05c1e519e392d498d387a31808c7d0f70482d43c201" + }, + "campaign/models.json": { + "mode": 420, + "sha256": "00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48" + }, + "campaign/open-questions.md": { + "mode": 420, + "sha256": "bafe95db6591d87a2bd7c67831c34a993afbfd61e9f75357625763dec25fe134" + }, + "findings/.keep.md": { + "mode": 420, + "sha256": "141ed928eaf10a2023dd2c0ff6ea68cf6ec423cfd28d5a359d9c5add730bf64c" + }, + "findings/00-strategy.md": { + "mode": 420, + "sha256": "3bc97827988c6eb4647713c5655271e156dfa466fad5685924010f3244fe6386" + }, + "findings/01-fingerprint.md": { + "mode": 420, + "sha256": "7cf0503c29f5beff852427c2c5bdf8e9d968386de777c47b6130771cac944cac" + }, + "findings/_template.md": { + "mode": 420, + "sha256": "b92d0ca7bfef4498a5f9e594453f15ab15e2c88c7582c4ed5df4c40e6871c3b1" + }, + "findings/control-flow/ai-visit-order-probe.md": { + "mode": 420, + "sha256": "e89f91a33139014ebdc22d79064ecfd06f9b4ffebb4bbc3da73734fc47534047" + }, + "findings/control-flow/alliance-mask-and-modcount.md": { + "mode": 420, + "sha256": "ec66c6b76d9e4c8bed385acf70e6a7d5da08e05eca72ac1e8e5cb307d87f2552" + }, + "findings/control-flow/combat-done-tail.md": { + "mode": 420, + "sha256": "799ace775f12ebe9a2737a711c8d0a6e617f0cefec70b93bf094e47cf81cc348" + }, + "findings/control-flow/combat-resolver.md": { + "mode": 420, + "sha256": "abf1a9329c1bd8a96c76481246a00b380e9a17fa8dc8900810218026e5fe1b9e" + }, + "findings/control-flow/combat-retreat-pipeline.md": { + "mode": 420, + "sha256": "6c40c8bdbdde672c9cd67248d740d88892ad2b93b30e27e9bebe0e96027cf136" + }, + "findings/control-flow/fleet-visit-order-mechanism.md": { + "mode": 420, + "sha256": "a2ea1a6ac9d383380e16910cff89dff0e9b23f1df66f47ef91dd266bd50b3a6d" + }, + "findings/control-flow/gate-indexed-rng-audit.md": { + "mode": 420, + "sha256": "5004b2480787eec7be66f40474648030fdaf7759087a4c4651091152d89351cd" + }, + "findings/control-flow/hive-creation-rng.md": { + "mode": 420, + "sha256": "5ff37d571c0380c798a137e0c6947a0c63109de489fd2100c99bfc6637fc272b" + }, + "findings/control-flow/indirect-edges.md": { + "mode": 420, + "sha256": "3dbf2acf7354f61de66348fe40965f3138dbc4bbff8cb0f06b2751e71ed06ee1" + }, + "findings/control-flow/inlined-draws.md": { + "mode": 420, + "sha256": "3b099718543d7fb112664699749602ff9d61de9aaebb561fc93f1f8b7a152134" + }, + "findings/control-flow/per-history-residue.md": { + "mode": 420, + "sha256": "739c7fc760583ca143036ce554e1eece640d1662fba4642e6f80fadd3dad13f9" + }, + "findings/control-flow/pinned-seed-rich-turn.md": { + "mode": 420, + "sha256": "7c62336767b7c69f513446543f37662ba2a0872e207b906279446bbe399d65b6" + }, + "findings/control-flow/raid-gate-multiplicity.md": { + "mode": 420, + "sha256": "6d7b7357be428ff79186478dc37063657ca4d8e2ad49fcdd92493753748a52f4" + }, + "findings/control-flow/raid-intercept-species-word.md": { + "mode": 420, + "sha256": "1da80eb14f0e3e5a0ce139f62976bb305e3e75a1e5e0631d8287f94eac093d8f" + }, + "findings/control-flow/raid-intercept-z-word.md": { + "mode": 420, + "sha256": "beb421953b70377c8c759f5cc936321faa6316be76d41020b41f26c99706acb3" + }, + "findings/control-flow/raid-target-pick-verdict.md": { + "mode": 420, + "sha256": "d0262a4187e35547b28d6be842e7c730aa3ee93565404b587a790706afabd694" + }, + "findings/control-flow/seed-exposure-forward-test.md": { + "mode": 420, + "sha256": "f108a07ce695b64c482af58db4caeb2607059a3357b62f04f7f36ce45c84ff4a" + }, + "findings/control-flow/standalone-generator-and-turn-record.md": { + "mode": 420, + "sha256": "e499f62534580f27c2a01395e08312ebc7df13bdd307342096f468212aec600b" + }, + "findings/control-flow/standalone-scaffold.md": { + "mode": 420, + "sha256": "0bf928260d5058815a2f09c4df8c08eb359430aeea941f872018de7cbca39105" + }, + "findings/control-flow/tail-probes.md": { + "mode": 420, + "sha256": "ae45e84a9c7f257170f7550301fc4e1a35d5210269bda8070469a5c921cce95e" + }, + "findings/control-flow/tail-rng-ledger.md": { + "mode": 420, + "sha256": "2db588423e7b7de7729e5319477c17fbcea5b7a9cb8ff00b01cfd72bfce25403" + }, + "findings/control-flow/trade-raid-rng-gate.md": { + "mode": 420, + "sha256": "85c7b27aa284988b07b5e67c8e48ef1725289f1a6956d88be2572577cc06e1bf" + }, + "findings/control-flow/turn-driver.md": { + "mode": 420, + "sha256": "3f4e92041a0842d211ea9ae1ae16a9fe400dacf9632209102a1f76acc6b30792" + }, + "findings/control-flow/turn-spine.md": { + "mode": 420, + "sha256": "e2a64f82e5dececb4ba56859d1e53a0f720e08472c79c39197beba7f6041811b" + }, + "findings/control-flow/w3-containers-status-handlers.md": { + "mode": 420, + "sha256": "fffbaa6e3701abbe57a54046416a102502afeaa29b14632f9506905c22bf3914" + }, + "findings/control-flow/watchpoints-modcount-status.md": { + "mode": 420, + "sha256": "0aec4c93ca7219e29827a5069a9829d5e58da2001e79a7316bce288d3e9a6c7d" + }, + "findings/objects/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "findings/objects/00-inventory.md": { + "mode": 420, + "sha256": "cada5fc81c42cb50878a26e43a58640153c600319e66d4c92a23d7c363ff5f14" + }, + "findings/objects/aiagent-block.md": { + "mode": 420, + "sha256": "55d646ab57e90477993d263399254a3b103024d89fff42491b7df5cf4ffc8037" + }, + "findings/objects/classes-game.txt": { + "mode": 420, + "sha256": "e0eceb77c56e05bc7863d3a07805d703fc0ecec489ef24fabe7c6161f2835199" + }, + "findings/objects/classes-mars.txt": { + "mode": 420, + "sha256": "b624f7bd82a5277462a39627140a85c7a7929fd292b62e45edb5c96fd53b6145" + }, + "findings/objects/ghidra-recon.md": { + "mode": 420, + "sha256": "ca4b043a73c1d5573aa0c83cd3942db731884910c90e7d8544c8a32c939e2fda" + }, + "findings/objects/rtti-raw.txt": { + "mode": 420, + "sha256": "39f6fdf8793f8202c19cfb87a75466b215254a13050ec37c0c496699298247ad" + }, + "findings/objects/save-editor-structs.md": { + "mode": 420, + "sha256": "835d4fbf154275542383ea499a527c044ec7d577486c2735b817bd32d6e0c853" + }, + "findings/objects/schema-gaps-resolved.md": { + "mode": 420, + "sha256": "9ddae36eb8e3ef909c4902d01200fc8a17335271e4e063939ae162a3eea5bb3a" + }, + "findings/objects/serializable-types.txt": { + "mode": 420, + "sha256": "59c2f3942f55eb3f6687758a4c447b1ed8902caa60b97d9619bb8228e27c6838" + }, + "findings/objects/serializer-struct-recovery.md": { + "mode": 420, + "sha256": "5b56d8e1a5047d602cea7a76227f30e17244057fe21fde3d4e2cc76e9f185416" + }, + "findings/objects/ship-design-catalogue.md": { + "mode": 420, + "sha256": "feded2191180e184d34d4992935dc117bff8d052e8a2c63ecc29fa7b2e6b561d" + }, + "findings/objects/struct-recovery.md": { + "mode": 420, + "sha256": "4e99ef972529101f5700b52845e263fb3789e0b82d8cdeca921f1595a24d92db" + }, + "findings/objects/svsctob-variants.md": { + "mode": 420, + "sha256": "89617cd2909f2242e9e1657fd4a8f5aafe5aa0c1e0e9bc8926fb67c1e830dd2d" + }, + "findings/objects/svsctob-writers.md": { + "mode": 420, + "sha256": "7a9b7f3bf4eae63cf522246227410b2e3ca789284b7c620f01550fadf479622c" + }, + "findings/objects/turncommands-block.md": { + "mode": 420, + "sha256": "8eca2b79838114e7ae46d34c6e75eaf3b04c0448d9896ed4219b118f09e83046" + }, + "findings/objects/wire-schema-channel.md": { + "mode": 420, + "sha256": "31f0fc4e1cc3c3e7ef938aa22ad65cfdec32be4f1ade476a7ebf32c3c6f07d6f" + }, + "findings/objects/wire-schema-closeout.md": { + "mode": 420, + "sha256": "bbae848b4f8d6d0f2a914268ac34e75b4cea483f52816916202f3bd3cd084255" + }, + "findings/objects/wire-schema-ratchet-debt.md": { + "mode": 420, + "sha256": "0d144181478a607f2474a7c8a1b71ca49c881ef6fd068b5e8859c3fa8129507a" + }, + "findings/resolutions/2026-09-08-ai-seed-per-process.md": { + "mode": 420, + "sha256": "0765bdaeade29122ab5e64493f3a7c339f1e4c4445192ed09ae3d229dd6ae943" + }, + "findings/resolutions/2026-09-09-fleet-id-order-residue.md": { + "mode": 420, + "sha256": "b3d63a11e8ebd55da4af15760d044607b6105216898a018f5ceebc94750817e8" + }, + "findings/resolutions/2026-09-09-seed-exposure-is-a-predicate.md": { + "mode": 420, + "sha256": "dd7ce18738a625b9008ef80783bd64fc3857852775ab3b784b9e5f4fd5ae7de1" + }, + "findings/resolutions/2026-09-09-tail-draws.md": { + "mode": 420, + "sha256": "ff86a332ea9f87bd6f42a0b64e837e6f6f5876423ae9403a903aa9bfe7c42678" + }, + "findings/subsystems/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "findings/subsystems/ai-client-seed-is-per-process.md": { + "mode": 420, + "sha256": "5e6de0418588ff28cee29cb9affd69c3183819318c314eeb0771bbe810e6b4ed" + }, + "findings/subsystems/ai-order-capture.md": { + "mode": 420, + "sha256": "6efebf9f00b375d2c7f29ddeb24ef7a04e3b02cac9027369b490157a196d08ce" + }, + "findings/subsystems/ai-order-emission.md": { + "mode": 420, + "sha256": "9e54a13a18387a4f93acc5c66dbf71d365c81f1a8e6d2aee31f7a89712894ace" + }, + "findings/subsystems/ai-stepping-and-passes.md": { + "mode": 420, + "sha256": "e7e2fc612457a4e77df362aea2928d20fa5a2456fe12a7fbafeaf3c9e01c1dc1" + }, + "findings/subsystems/ai-task-system.md": { + "mode": 420, + "sha256": "577f8fc41256ebdf9629f1e30df9aac7f51c1a84b55f60c2b59e4af4c55126b2" + }, + "findings/subsystems/ai-turn-logic.md": { + "mode": 420, + "sha256": "79e9b7c9592d583db7b9d9ce472804038a71febf7527bd69e31b3399caeb0770" + }, + "findings/subsystems/battle-load-profile.md": { + "mode": 420, + "sha256": "3cf8e28925ebbb162bca9c3be9e6b2599c82ab6aaf9a9d99ffd9c934bf773c77" + }, + "findings/subsystems/data-model.md": { + "mode": 420, + "sha256": "f01c9bfcf8ed9fbf9fdd30556308a1dbb1094896050cc8a5e4fbc1c6c61aff78" + }, + "findings/subsystems/data-parsers.md": { + "mode": 420, + "sha256": "6a428c14279ac2c589b4af932e762ef7e3ada1a878128527b8d88858c11fbc35" + }, + "findings/subsystems/determinism-oracle.md": { + "mode": 420, + "sha256": "4fe0abad0b1b825392cd47b792d06756742495f26ff40a6a433d8608b4680bcb" + }, + "findings/subsystems/eventlive-verification.md": { + "mode": 420, + "sha256": "8bfcc75e57ddf88ec8a4b8885f033be8ffd420965077ab284b1ebce535ecf1a0" + }, + "findings/subsystems/events.md": { + "mode": 420, + "sha256": "c5d6e168d6d48eabec0ae0a448f9c3ec8d0f751a67fc320bc1021ba10008a3bf" + }, + "findings/subsystems/formula-gaps.md": { + "mode": 420, + "sha256": "63ec96a27fac5381d33cdce3e549d230bd5b0230e4d8573f4f3d45bab7d47ffc" + }, + "findings/subsystems/fpu-precision-sensitivity.md": { + "mode": 420, + "sha256": "4cf84e2a1c3d0eaaf9b3a7f218ad663ffa6984389b2a25851249733ad708ff8f" + }, + "findings/subsystems/golden-trace-recapture.md": { + "mode": 420, + "sha256": "b244f939b87dd464d78d919675c0e6aa010b0ec7b4fc6e4178e26c2c8ebee738" + }, + "findings/subsystems/id-allocation.md": { + "mode": 420, + "sha256": "b04a14a5a7d4d1c6137c4f9072987eebc997421e550881dcc2c8e386187f5b90" + }, + "findings/subsystems/income-term.md": { + "mode": 420, + "sha256": "c40286635675a91ce779b887a0394e92f946844873a778015efb98c4a105b67e" + }, + "findings/subsystems/loader-prototypes.md": { + "mode": 420, + "sha256": "f1d09471d5e17c45413b86805f561329f5af24eadfb17c3c740686c39b167ed6" + }, + "findings/subsystems/money-chain-float-widths.md": { + "mode": 420, + "sha256": "99bded6f2d34a713bc175deb4ad5ab4559ce1cc90274b036c1818ad8257c2fef" + }, + "findings/subsystems/movefleet-position-rounding.md": { + "mode": 420, + "sha256": "12dbdc03658cb042b5927586769dc9c19fc2eb812f703e73bf26273f8b0d65a6" + }, + "findings/subsystems/multiplayer-combat.md": { + "mode": 420, + "sha256": "2f4957011b5c5875b8aa7f71531dd5dfe3fd8df4f2c67a7be2fb5999f090c02b" + }, + "findings/subsystems/multiplayer-gamespy.md": { + "mode": 420, + "sha256": "a878e97775d27e085e58b18eaf5a67aaa522456d1055ca142f0477e3d6152d47" + }, + "findings/subsystems/multiplayer-tier0-verified.md": { + "mode": 420, + "sha256": "942ce29cbe22d8f7de5af54f2017c0433c7b8e1a56c864868ec906ffcbb9059a" + }, + "findings/subsystems/nav-classifier-live.md": { + "mode": 420, + "sha256": "b8aacdea8072a99ba1192e235088b372180f094795baf164e8cb95bd2df9f3b0" + }, + "findings/subsystems/nvo-tshn-visible-owner.md": { + "mode": 420, + "sha256": "ef96bb61769c02affd7148cd95e70bf358cbe6263fbe9b47aba6cf4cfa8486ad" + }, + "findings/subsystems/observedtech-append.md": { + "mode": 420, + "sha256": "61efcf51bffe53b8a10a2cdb8123db3f8c55b6874db87418fc31737efedaa652" + }, + "findings/subsystems/output-term.md": { + "mode": 420, + "sha256": "9eb9ff58a1d4cf34d3138f5044788b6f87ff4c94fa871b2dedd6ff6667196533" + }, + "findings/subsystems/output-turn-path.md": { + "mode": 420, + "sha256": "4e199e5cc14802c1b14b37cff0c1359b43aca94dab833f9024c7825c4c512588" + }, + "findings/subsystems/path-solver.md": { + "mode": 420, + "sha256": "3e0e318d45e14f844831c4180e47011263f64067dacf3249742882186d65cf18" + }, + "findings/subsystems/players-residual.md": { + "mode": 420, + "sha256": "e2f56c7983856470d37cd0fba4834a0ccb34dcaddbaf9acaf5dcdc253c6b3507" + }, + "findings/subsystems/population-growth.md": { + "mode": 420, + "sha256": "c2ec2f062e1224045b761640549e7374336ac762bd61c686a0c1378ad829a993" + }, + "findings/subsystems/rcex-explained.md": { + "mode": 420, + "sha256": "df7c9de6f02c1bd38f69e3a5344ec663d97b1d6b738ff408dfdeb0e2f6175b32" + }, + "findings/subsystems/relabel-new-ids.md": { + "mode": 420, + "sha256": "562ffe347adc6432a7824bfa2b324b6b1812b4fcc18343f0732c0f3d9991be20" + }, + "findings/subsystems/research-replace.md": { + "mode": 420, + "sha256": "d0f692cf687a7fe6aab62fc5d7d076eb595e1c33fd84c6f1e437ed01025cab4b" + }, + "findings/subsystems/roll-parity.md": { + "mode": 420, + "sha256": "7d97d7e5eee7b9f135e32b6553bb94ca83fd05b1eca7d18c42e9d65cae4d95d1" + }, + "findings/subsystems/rung-b-rich-turn.md": { + "mode": 420, + "sha256": "44378c6a305a82b2d131270fa5d97fdcd8a7fd5c9760ecbad7715383eac2db68" + }, + "findings/subsystems/running-the-game.md": { + "mode": 420, + "sha256": "f6109f69c6b86e4cf01d0f2e1f8be9921ff632513bca5d9e44e7f6c34f1cd260" + }, + "findings/subsystems/setresearched-cascade.md": { + "mode": 420, + "sha256": "9c079de161a1d1387339b8e8081395c1356c1443a0c898942acfb6efb65a454f" + }, + "findings/subsystems/ship-construction.md": { + "mode": 420, + "sha256": "86f570b1872c8dfac3982d1d7335f4798ccbd1bfd73c91d481afba2734c41216" + }, + "findings/subsystems/ship-design-composer.md": { + "mode": 420, + "sha256": "639b276e9205aaf6c90d9c458a383cc073e89f401ef8f17f8ad5a8a0c5899fa8" + }, + "findings/subsystems/snlv-measured.md": { + "mode": 420, + "sha256": "785324d176be969e1809090acd6b7a48d27f4fa41472c0d9c6f568c0b3a1e539" + }, + "findings/subsystems/spy-detection-roll.md": { + "mode": 420, + "sha256": "214179f5091408ef01ce4b80565068cb9a0885d1c6a233cda476280b9bf29c0a" + }, + "findings/subsystems/spy-program-draws.md": { + "mode": 420, + "sha256": "0c61c2f9cc767ae679921bfc42ef9a207ec9a6e0dc88419a673a8e439f1abfc1" + }, + "findings/subsystems/strategic-turn-internals.md": { + "mode": 420, + "sha256": "3a5c17e025d4968db6030f8ef1daaa2b03ccd4def12d35cf3a0eabcb0b5cbb54" + }, + "findings/subsystems/strings-and-config.md": { + "mode": 420, + "sha256": "67aefda7792e329b7df3f6e8cf42c7bae7049867cdda0741e871b183bc528786" + }, + "findings/subsystems/system-visibility-prediction.md": { + "mode": 420, + "sha256": "b420526ca0410bd4578dd2ed29cd9a21ed3578d6345d9f853a883e0159c1f89c" + }, + "findings/subsystems/system-visibility-record.md": { + "mode": 420, + "sha256": "d2843e10c156a7c85d7dab40d00204475fc725dc9b93656f6cde941ceceb5f51" + }, + "findings/subsystems/t34-observed-designs.md": { + "mode": 420, + "sha256": "207641821a55f5671749b000d478afd9e427336e2d123a55ad2203f34dfaa796" + }, + "findings/subsystems/tech-effects.md": { + "mode": 420, + "sha256": "7423f1e2cb2a597738b244d58bdf467431ee5de725ac434b904676ddcbcfc609" + }, + "findings/subsystems/techid-name-map.md": { + "mode": 420, + "sha256": "cfd92a7885dad3775465fc0c5b40aeb1749499f90071b44855ab8e1746d5f752" + }, + "findings/subsystems/trade-and-spy-workload.md": { + "mode": 420, + "sha256": "147057456fa30b6218df19679abab1ac31b78276a4272d221b70776e154396ba" + }, + "findings/subsystems/treaty-turn-stamp.md": { + "mode": 420, + "sha256": "fa0a8588847cc2b9e92cddeca65fd00fe3d84a00a1034d9354053c7e6cd9ceb5" + }, + "findings/subsystems/turn-command-replay.md": { + "mode": 420, + "sha256": "b65fa3c3c01c67bc16ec488e4a44e6c748256e941c80987528b7602038a56e07" + }, + "findings/subsystems/turn1-to-turn2-nondeterminism.md": { + "mode": 420, + "sha256": "9ebe834fa0f7c1cf864032ec67da76730ed6c239d6bd3a717f147490116acc4d" + }, + "findings/subsystems/turncommands-capture.md": { + "mode": 420, + "sha256": "a57fd2a77784fef1b176749878b161c4f04ac77c1f4a061a6b713787d92fb9ef" + }, + "findings/subsystems/ui-screen-map.md": { + "mode": 420, + "sha256": "d266285e3ca99ba3b5ebbab47c78f3df247a8b539c0519c6fd27a999b9d6f84b" + }, + "findings/subsystems/unlock-cascade.md": { + "mode": 420, + "sha256": "38d29a9484aa3910f5a62b5dd08225ba590bf26901203c5aef1b0b466fbbc5fb" + }, + "findings/subsystems/value-domain-census.md": { + "mode": 420, + "sha256": "bc99139708aee5da4cafec585fc35ab3523b51571518038db19b5f1383c6a6c4" + }, + "findings/subsystems/writer-byte-exact.md": { + "mode": 420, + "sha256": "a0e91a90d2ae78328dbaef30b37d53037cab26489e4729413bcfebbafcab0978" + }, + "ghidra/addresses.d/README.md": { + "mode": 420, + "sha256": "cf2745d5d3e504725ae5a296dc20e3d63b8d32a903445aafe2af61828a6d59c5" + }, + "ghidra/addresses.d/ag.json": { + "mode": 420, + "sha256": "24d5b11779364cf198008b143c7a3a092117ec4a1530c489497dbc8acdf62d8e" + }, + "ghidra/addresses.d/ap.json": { + "mode": 420, + "sha256": "e37f478836eb297f9cc5186cd7df3f5942abc4b6396a4d2866e613841437f778" + }, + "ghidra/addresses.d/ar.json": { + "mode": 420, + "sha256": "8d8620be8dd807a610ff63c0d77cbf266f3d9ce272158991d1f55d9c9910c248" + }, + "ghidra/addresses.d/as.json": { + "mode": 420, + "sha256": "08a869ab9466d4b575363cfb6fc084ca72cdc05d509c5d87e658a9a9977a7ae9" + }, + "ghidra/addresses.d/az.json": { + "mode": 420, + "sha256": "60b9a169605ac171cffb848024141c9224f6897bf69b547b9a4f2b5ddfc8d835" + }, + "ghidra/addresses.d/bu.json": { + "mode": 420, + "sha256": "79037146ba621e43e561bcf0577afc25b2ffac4ced44c902d2ea8ed9171b1bb9" + }, + "ghidra/addresses.d/cz.json": { + "mode": 420, + "sha256": "35de20ff0e38d05b5c58c89690dfc81ce44eb280a2a594ae862e55d56edb5d3c" + }, + "ghidra/addresses.d/dn.json": { + "mode": 420, + "sha256": "c41f877a37bc864f8f315a47b720ac204c22c25de405f4de63b845180641eba0" + }, + "ghidra/addresses.d/dt.json": { + "mode": 420, + "sha256": "580762e01175fb7246d0f9214e4ed9ba16bebcdb82ad1525fd1f77c0910c660f" + }, + "ghidra/addresses.d/lane-a.json": { + "mode": 420, + "sha256": "fce5f06866bddc6bca095d53e376495103dfd8900ad7da0d0d6731f105915d71" + }, + "ghidra/addresses.d/lane-a2.json": { + "mode": 420, + "sha256": "1207088eb2ae041afc2618a627029e25f578ae9fe8db73bb9efb616f39c34bf0" + }, + "ghidra/addresses.d/lane-ac.json": { + "mode": 420, + "sha256": "02a1c2f01ca0d11a7c38d416d94fabaea64b5c5919f6ceaead83430fb398710e" + }, + "ghidra/addresses.d/lane-ai1.json": { + "mode": 420, + "sha256": "134a0cb87b95bf5f39ed015bcdf64c6e8da6b22e073d5b5487148cb5421addff" + }, + "ghidra/addresses.d/lane-ai2.json": { + "mode": 420, + "sha256": "e9d94ce026231d420538400fa9c73fa8a2fa882d16f542c6b8ce2c34014acda6" + }, + "ghidra/addresses.d/lane-ai3.json": { + "mode": 420, + "sha256": "89c29e1bbb1159b7b6fb4fc8c232902f8497efc82290aba6f50c9c9097feec6a" + }, + "ghidra/addresses.d/lane-ai4.json": { + "mode": 420, + "sha256": "78b7897d3d2678ddbff7cd982bfa7d93a0c26817846a148fd3f46790fef9d7fb" + }, + "ghidra/addresses.d/lane-b5.json": { + "mode": 420, + "sha256": "641c724d1fbf28f5469aac488401ea2f92bdd3b929fbf053ddeef0ba5b8de9da" + }, + "ghidra/addresses.d/lane-b6.json": { + "mode": 420, + "sha256": "b2b2833220e3a645efab2b767f1d93d1215a54d195e28e6743db8f1d89934697" + }, + "ghidra/addresses.d/lane-c3.json": { + "mode": 420, + "sha256": "b732932503c181c77bb14ba0136379c8fa3501d0c1471b02d9bca7d023bb5f5a" + }, + "ghidra/addresses.d/lane-d2.json": { + "mode": 420, + "sha256": "8b5df39fb5eea0cd40dffc20aaccabe169f5472171dfd242ca2e75dfc4ca608c" + }, + "ghidra/addresses.d/lane-e1.json": { + "mode": 420, + "sha256": "cb38b41b747bf74ee73fb7eaa301da4bb896d089fa1dea4197382e94940c7f69" + }, + "ghidra/addresses.d/lane-e3.json": { + "mode": 420, + "sha256": "a5fe9dbb37ee587bf36a311771bbc9d8dcaa4d4fcc0b420b8f45829929b0ff98" + }, + "ghidra/addresses.d/lane-ev.json": { + "mode": 420, + "sha256": "b243d31bcd69bfb1e5928ba8b70e958e559c88ee5190ca34e569f217a784798c" + }, + "ghidra/addresses.d/lane-g2.json": { + "mode": 420, + "sha256": "84401f05c5cf2ca0839e817877892e904b3fd2fd4175607abc34453acd8ce822" + }, + "ghidra/addresses.d/lane-g3.json": { + "mode": 420, + "sha256": "d176eb4a07bb6b98acea77e1a0a9904d317a594768ecf8719bbfacbdf6522729" + }, + "ghidra/addresses.d/lane-h.json": { + "mode": 420, + "sha256": "e8cffe89c7feb1d9fa1949f33aff01edc7b84b49ab752275662f6f613c16c0b6" + }, + "ghidra/addresses.d/lane-i.json": { + "mode": 420, + "sha256": "a4c482ff6fee78e96da3400b9ba7d76b58634a5933ff388db5993a1b105c8aca" + }, + "ghidra/addresses.d/lane-id.json": { + "mode": 420, + "sha256": "3f48c9b2e2c3a08e13a856bfb78d551af17f5a1a1079f03f8edbf4615f17ca7d" + }, + "ghidra/addresses.d/lane-j.json": { + "mode": 420, + "sha256": "4fd95b08fee60a2748995cb082fe50d61e7179ae90b106f230bfc5c55a35660d" + }, + "ghidra/addresses.d/lane-k.json": { + "mode": 420, + "sha256": "f6ead3ff256fd2e1408d52bfa28e308f106ad672b3fe1cce0d136faac351136e" + }, + "ghidra/addresses.d/lane-l1.json": { + "mode": 420, + "sha256": "ecbab4a1b602beefd6889effc4883b7f7de01afabb7c5c071bbc4e2237e9131b" + }, + "ghidra/addresses.d/lane-l3.json": { + "mode": 420, + "sha256": "eabb96253bee36c799f1eb89108e284162606cfdc5e9bd29dbf7b5f88ee88adf" + }, + "ghidra/addresses.d/lane-l4.json": { + "mode": 420, + "sha256": "5b2b54d2f3e123e352e9a2b0f1d80fc8afcdd0b97916a94ee5a62ddc03b0ae75" + }, + "ghidra/addresses.d/lane-l5.json": { + "mode": 420, + "sha256": "cedc4869149212d401c519c46fa3f02769f9c939fc560fe8d35cc4f898091482" + }, + "ghidra/addresses.d/lane-n.json": { + "mode": 420, + "sha256": "6987efa430f2da8987e42e61e53113f914cb00e3e52a7c679565e7faf5160c82" + }, + "ghidra/addresses.d/lane-o.json": { + "mode": 420, + "sha256": "7fcf357f25ccdf061b6bc688339e2006f830c551718b6419a0a9d0ac968bb555" + }, + "ghidra/addresses.d/lane-p2.json": { + "mode": 420, + "sha256": "7eaa63d64a0054ef88f323f58b31fca07bd2372dc21560b4bda64eb13d869792" + }, + "ghidra/addresses.d/lane-par.json": { + "mode": 420, + "sha256": "3836b786aec28feb028271d05f368d7c332b8930b51cfdceb36540133a3d3237" + }, + "ghidra/addresses.d/lane-pl.json": { + "mode": 420, + "sha256": "f29953d17effbb7d8256687833023d4656522e74c40bf1ea646d3b35da3635d7" + }, + "ghidra/addresses.d/lane-q.json": { + "mode": 420, + "sha256": "6f98496ffc288fb30c3a7347a7e5252b296f2345afd1bf678f98a2c934b8935a" + }, + "ghidra/addresses.d/lane-rb.json": { + "mode": 420, + "sha256": "bff95b9452e0efb63e74f741682c8d1843abfe3e722143cf01cf092aa894d75d" + }, + "ghidra/addresses.d/lane-sd.json": { + "mode": 420, + "sha256": "d3239b619cbef5cddc9c7bde6525301a99a6423f8a0e42c1ea53b9ae269c6da9" + }, + "ghidra/addresses.d/lane-sv.json": { + "mode": 420, + "sha256": "f574d8b4dc75da722870c74eb29cd56c75e04dd0ac384b4549fc95d425e3de3a" + }, + "ghidra/addresses.d/lane-t.json": { + "mode": 420, + "sha256": "70975f3c1dea55ceb11af12b9ba3a04e8f7bba2e25f1355ffcd3cd457c41545c" + }, + "ghidra/addresses.d/lane-t2.json": { + "mode": 420, + "sha256": "1e3c59089b769cc5f5d3cf16c33cb6db002966f5beb1a4fb9dd8e28fe54cd6a7" + }, + "ghidra/addresses.d/lane-u.json": { + "mode": 420, + "sha256": "bcccb6ec9257537eece135adbfd126904ca0becf14f9b5d17253adf5d8c9e8fe" + }, + "ghidra/addresses.d/lane-v2.json": { + "mode": 420, + "sha256": "6a4d4960ce99c05b928164159eaf4482bf763785a1f8c50efe133667886d9a54" + }, + "ghidra/addresses.d/lane-w.json": { + "mode": 420, + "sha256": "3971d65c772146534f5d8c350f2d203add70ac82801f57f3704c47cd59b51226" + }, + "ghidra/addresses.d/lane-w2.json": { + "mode": 420, + "sha256": "677648e94de8e1e0d538c9575c9be942d0b37c1a847effcb3c2312af5b6aa7d9" + }, + "ghidra/addresses.d/lane-w3.json": { + "mode": 420, + "sha256": "50ed8ed1b16288b00bac4df0886646dbf9d6d6392867029b4eac386806b41b51" + }, + "ghidra/addresses.d/lane-z.json": { + "mode": 420, + "sha256": "bc63a82f2d0cb7636e95f8a07f183f80817a4c65d2bb7263a047ec3c540512eb" + }, + "ghidra/addresses.json": { + "mode": 420, + "sha256": "865c02d88ac6ede656160a5ab20521ad8854efa381d5a943ab422216aca2c016" + }, + "ghidra/generated/sots_addresses.h": { + "mode": 420, + "sha256": "1cf6b4ab40d3cde306edee12ba4eb05292b98ddcf5c2b7c22c1c64b6075b1bdf" + }, + "ghidra/scripts/FixPlayer.java": { + "mode": 420, + "sha256": "9f9ea470af063339511b1f1c85d6dea2df0827c4fed5806c6f641b1aad3e5660" + }, + "ghidra/scripts/FixThis.java": { + "mode": 420, + "sha256": "aafeeb482f71d1bdcbc99a51fb3f21989a46fbb49b5a572f3d9e436c9b3b98b4" + }, + "ghidra/scripts/LoaderRecon.java": { + "mode": 420, + "sha256": "1275d460227e0098254885fe70666d618da7215bca99483a5475c1e701ab9b27" + }, + "ghidra/scripts/LoaderWriteBack.java": { + "mode": 420, + "sha256": "d1040cb9ee80f0fe4d2310d95b38d7d94b0972283f74ea6058de0bdb9e510e63" + }, + "ghidra/scripts/SpineRecon.java": { + "mode": 420, + "sha256": "bea798733cf60f9478373cc453692104058b643ba5b7fc68e76945ae6f496950" + }, + "ghidra/scripts/SpineRecon2.java": { + "mode": 420, + "sha256": "94f10ac953091d50187a46b74803abb4812b244356f9336fa8e133a8a6cba0c6" + }, + "ghidra/scripts/SpineRecon3.java": { + "mode": 420, + "sha256": "b2344ab3d7195cfb935505ba1949f3d4862f787ccb95b812cef3856f92c94ffc" + }, + "ghidra/scripts/SpineRecon4.java": { + "mode": 420, + "sha256": "1093ee635be94f0c0bb31b5bd79f030faa0d7cbab96a495426363172cbcd1d66" + }, + "ghidra/scripts/TechFx.java": { + "mode": 420, + "sha256": "bfa8e990d65ad7cb2b665ee284ec2d645395e0fb3794ea146b175e2937a159ad" + }, + "ghidra/scripts/TechFx2.java": { + "mode": 420, + "sha256": "ee7040ed3316f2e717bac207c3e8ba9bf5ecb560f9e2b38335582c4ca6bae5a8" + }, + "ghidra/scripts/TechFx3.java": { + "mode": 420, + "sha256": "b672751160abcfee37d16eb2f107a60420b7d6956c312fe93e9f62578c06b96a" + }, + "ghidra/scripts/TechFx4.java": { + "mode": 420, + "sha256": "ef912e86f802452f33c20a1adb87eeb96f0ec893e26ee4bbd02305ba0c5e46c7" + }, + "ghidra/scripts/WriteBack.java": { + "mode": 420, + "sha256": "e002a5b86bc58cf75ef8d08dbaeb84bdf3306c1e8d49e92c0382f8ed858c57ac" + }, + "ghidra/vtable-owners.json": { + "mode": 420, + "sha256": "8ee89f3b43f56283a6ffcc605394a1ab246f8071370a9db8f1e770942a5a82a3" + }, + "guides/lab-screen-wall.md": { + "mode": 420, + "sha256": "d398b47853013dbce63b4af2f2ec680c39775732b9fbba13f5fc42a46628550f" + }, + "guides/method-rules.md": { + "mode": 420, + "sha256": "a71a8415202fe97ccaee3805bf4035684776c37f5613dc39a1f260aa33f94b69" + }, + "guides/multi-agent-workflow.md": { + "mode": 420, + "sha256": "116ccaa9be9523852d02ee7c78c7f1d587c1ed6270789afca42e687ea826af5b" + }, + "guides/re-windows-2000s-howto.md": { + "mode": 420, + "sha256": "3490650440d6e683cb029915b8c2cace914b1f52538c9db89175ad4547db2901" + }, + "guides/windows-lab-housekeeping.md": { + "mode": 420, + "sha256": "4a9e9d66dd76e6b5ee1951686186190c650a617fa812fa4bd236ef02b783939a" + }, + "notes/.keep.md": { + "mode": 420, + "sha256": "7878c159a1b9636974e9093902027a24bf7b3c7520f13a8d96f930bd10d22f1c" + }, + "objects/generated/sots_stream_schema.h": { + "mode": 420, + "sha256": "13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c" + }, + "objects/layouts.h": { + "mode": 420, + "sha256": "24586f7f1c25530691193a919c6335ab1784fa2815b222326409cfe9e2a42981" + }, + "objects/layouts.json": { + "mode": 420, + "sha256": "16bfffa5020d98c12af61c72a48da8f2c5e06d1060358802717e585a49b150b2" + }, + "objects/layouts.md": { + "mode": 420, + "sha256": "83bc29fcd379847f9ebd6732edf9748c1c878052e889615928659307f97a148c" + }, + "objects/streams.json": { + "mode": 420, + "sha256": "60993eda14d0b1056578718d43a3b6d89816e12c4f5a00674806aeef9e81baf7" + }, + "opencode.json": { + "mode": 420, + "sha256": "027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99" + }, + "scripts/.keep.md": { + "mode": 420, + "sha256": "b0cdcee8cfdc1b15ee444520b6b01c747399deea6d92ff2576ca6eb57331bbac" + }, + "scripts/forgejo_campaign.py": null, + "scripts/lane_v2_writeback.py": { + "mode": 420, + "sha256": "69a66058adb04926eeb6f0e81fa8f0392ce06de2e8d8eb61ebcf503bab6311da" + }, + "tools/DASHBOARD_README.md": { + "mode": 420, + "sha256": "f401cc54f64a4862a938263f37eaab22e6475e063e59726e02dce201f657dcc4" + }, + "tools/aiorders_to_tcb.py": { + "mode": 420, + "sha256": "9762d1fd45f3ab7c045088e222c5386a2cc63a6b25e1c09a49cbbd71837bfe17" + }, + "tools/cache_functions.py": { + "mode": 420, + "sha256": "18c037e48ab035764b0c877123ea7c998ef74240c63090e4f58142f57835e0b1" + }, + "tools/campaign.py": { + "mode": 420, + "sha256": "a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123" + }, + "tools/check_agent_config.py": { + "mode": 420, + "sha256": "8cb42d8de9cc441b547a00aecc7bfbc3619667121b30e150fec9e6c94683beb0" + }, + "tools/dashboard.py": { + "mode": 420, + "sha256": "c84aeeea6fb7d5e45ccec8882bacc59182149f108edd9eb1585eab9ede99911c" + }, + "tools/displacement.py": null, + "tools/evidence.py": { + "mode": 420, + "sha256": "0a7f8497ed287b4b64aa5ba0cb25735172408e38f3605b3ff90f009c7f02eb85" + }, + "tools/gate.py": { + "mode": 420, + "sha256": "4df5ee7022fb2601687f06eab788e2cea1e345e580c4e92c9d47be1787d37460" + }, + "tools/gate.sh": { + "mode": 493, + "sha256": "d7ba27b9b0c6a03df48e4edc71884ef9986743f8afa751dbfec116df5aeee18c" + }, + "tools/gen_addresses.py": { + "mode": 493, + "sha256": "5d995585d4192a19db7cc6d31ed811fa80264159fc114f03f58793f9b6c4908e" + }, + "tools/gen_stream_schema.py": { + "mode": 420, + "sha256": "a9c3e925bb3370371a2c8cde8d738c657fe1cbf68c39c6155562bbb20c551461" + }, + "tools/max_income_oracle.py": { + "mode": 420, + "sha256": "8d3ec6ba5c677486200eab7d1ca55e1350947829e603737307fa394ac8e40bcd" + }, + "tools/max_income_predict.py": { + "mode": 420, + "sha256": "85400c82b6cb7c6786b7fb6486bdc7bcb1140817f7a0ff0b4fa4f7dbeded8797" + }, + "tools/probe_report.py": { + "mode": 420, + "sha256": "f3ef378c10bae4a8bef754d853f0e86616bb95b5e051e04cac97d362587df1a7" + }, + "tools/reva_call.py": { + "mode": 493, + "sha256": "89477650d38985f84b61a664572de1cbde1268b879d3da5e874598942822998b" + }, + "tools/rng_ledger_report.py": { + "mode": 493, + "sha256": "b4f3f581eb6de50118fd531c848354816c20197711e668ce8b0cfcb4d0392cf3" + }, + "tools/rng_oracle_check.py": { + "mode": 420, + "sha256": "f27ca7f9aa03bc672f04067bc71e73ac83742997f12f5f55ce11151bdc39d98a" + }, + "tools/rng_site_report.py": { + "mode": 493, + "sha256": "fabd950c002265403f7b13a8868a158d867828c9930770ed096a2610b086ad35" + }, + "tools/rtti_map.py": { + "mode": 420, + "sha256": "9ac88a8aa566fe08336ba6e50905ec4253409e1317f491c415b1b9ebcc0713e4" + }, + "tools/run_agent.py": { + "mode": 420, + "sha256": "818097896b2e29dbdd2f53d37261236af302178ecd0ee083a3184a7bc33ff152" + }, + "tools/select_evidence.py": { + "mode": 420, + "sha256": "a6e648a77bcf799cc774ff9d0de83011283049ed0f0c44f6e08857a8410e9463" + }, + "tools/serializers.py": { + "mode": 420, + "sha256": "938904eb7b4ae30a61dd966494b112c6d52399f9d4a4658add06b40a54d6cb73" + }, + "tools/serializers_ghidra.py": { + "mode": 420, + "sha256": "d27da0afc8d043d31335bbe274fc76245e50cf0f9091a968b124f31c3a17997c" + }, + "tools/serializers_golden.py": { + "mode": 420, + "sha256": "29d2509b54704b80eff46a59a320719edb17a7eb67fd8acb8ad5e3c427d8e825" + }, + "tools/standalone_report.py": { + "mode": 420, + "sha256": "43a61c4031306732554aca23cd95b57d35f2a870766c33ccf8e005f22436525c" + }, + "tools/streams.py": { + "mode": 420, + "sha256": "57ec4ec5ad222a74f4461d70277d258e51779ae53ff74fd0e07eb51d4bae0afd" + }, + "tools/strfootprint.py": { + "mode": 420, + "sha256": "3b0db212c0b091ae2f63b866ee331435d013c535f233ec34ae3dfb63ded852dc" + }, + "tools/tcb_from_json.py": { + "mode": 420, + "sha256": "8fe09cff16802fda34db24f6f888610baa258399ab39173586b91a7a162f231a" + }, + "tools/techid_table.py": { + "mode": 420, + "sha256": "2c644bdbd3774b70dfdae7e77ff7a3a8e8563b58be7098a2d55ee30dc8b8fd07" + }, + "tools/turncommands_capture.py": { + "mode": 420, + "sha256": "0214d5da6f5f86e188bb2f03db8d3439267baee3a883c7df754601c7c1a38536" + }, + "tools/vmshot.py": { + "mode": 493, + "sha256": "09228bf8bd61918c49afc2b6da931fc8a7833be126be5384b85194e0e86eea44" + }, + "tools/vmwatch-install.sh": { + "mode": 493, + "sha256": "3c004f532422bd589a7294dabdf54d5a726f598c69012eaea3d73a748ad0123a" + }, + "tools/vmwatch.py": { + "mode": 493, + "sha256": "650d8232e46239a55b96f26d581d7d9c5815415c9014fd2e5b846b68c1346b39" + }, + "tools/vtable_map.py": { + "mode": 420, + "sha256": "2e19223efb79421ab4b807e32f0854b2592d7d3a3a52c12e84e47460b960f740" + }, + "tools/windows-housekeeping/Invoke-Housekeeping.ps1": { + "mode": 420, + "sha256": "a97911a3cfbd47813282efa7f52b4de03d28912487fffe0e7e7aa1a250cac01a" + }, + "tools/x86disp.py": { + "mode": 420, + "sha256": "a05a42d63813d2025a4da65bdd684e82a89c95c52901a8f490391e31c49a122e" + }, + "verify/config/test_agent_config.py": { + "mode": 420, + "sha256": "8a7a406f062c3387ec5b99b35f3befb64f676efef174047060c967074545e3e3" + }, + "verify/config/test_source_check.py": { + "mode": 420, + "sha256": "c16731e31a54256dde4f88d33007759ff21ad8537ca6cd2be38b9e34c59525ad" + }, + "verify/design-rules/SHIP_DESIGN_RULES.md": { + "mode": 420, + "sha256": "4decf51bfa03e8ab2b58478198332e834233100126949b920349f210b54521c8" + }, + "verify/design-rules/data/HiverInvasion_FleetTemplates.csv": { + "mode": 420, + "sha256": "327e799be3c75361267725c157f78b425d3a1df6ed6595104b2ce9993e8ae3a7" + }, + "verify/design-rules/data/UpstartApes_GiftFleetTemplates.csv": { + "mode": 420, + "sha256": "89939d70eb6ed48ec776a4a6fc50ccb68fc6be7162706bab199484bf7cdd5e44" + }, + "verify/design-rules/data/_defaultweapons.txt": { + "mode": 420, + "sha256": "ef9e33aa32840f1878ece67f88556d81a4255f63f6e8aad4ac73e575ef2c7ec8" + }, + "verify/design-rules/data/_turrets.txt": { + "mode": 420, + "sha256": "35de6ad40895f76298eef7dc354c739a5a59747b689c2324cfa5040442eddc18" + }, + "verify/design-rules/design_rules.py": { + "mode": 420, + "sha256": "772f70c7d6be2d20d10cf4f5d412233b267440d63d431bf7b320c29f3f06e313" + }, + "verify/design-rules/stock_designs.json": { + "mode": 420, + "sha256": "b363023e02899bc03e4c8b8423b394ef8abb190b1bcf437aade19be463353f68" + }, + "verify/design-rules/stock_designs.py": { + "mode": 420, + "sha256": "fe020f6058ec25b6fc456146abb6594825ee2b98ba5c5c5eeaff969ce4596031" + }, + "verify/design-rules/test_design_rules.py": { + "mode": 420, + "sha256": "6f6764d21d7a3337ec8aba9651b19947239a7d06a6cdf7c6e9be5ddefcfdd186" + }, + "verify/fpu-cw/cw_census.py": { + "mode": 420, + "sha256": "07b7ac5ae60df487867b592e82e9f74201b695437fba248813bc07305a21c7cc" + }, + "verify/fpu-cw/trace_bitdiff.py": { + "mode": 420, + "sha256": "b25c93d70e67ed2fa81e5ea7184f8ffe0cbd2e7c043bc94f923c3db1cf101b59" + }, + "verify/harness/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/harness/cb/README.md": { + "mode": 420, + "sha256": "7a656251a600a9343ffa8afaa4f227e7cb8086be7d3c6879c0a403ab8acec71d" + }, + "verify/harness/cb/cbdo.sh": { + "mode": 493, + "sha256": "6f3d7fd35aeedb0841be9df0ba19136be2e7ccb5c44950d8aa821c61727232a6" + }, + "verify/harness/cb/cbfull.sh": { + "mode": 493, + "sha256": "609101217e9d35bf1caa5cb66f362e0796fcf6c1264bd92ff550d0ed12ca2521" + }, + "verify/harness/cb/cbload.sh": { + "mode": 493, + "sha256": "2e56bb64609434f6dfc6ebcf71a3c839ae59170db80c996ebee7c2219cb664ec" + }, + "verify/harness/cb/cbmenu.py": { + "mode": 420, + "sha256": "fb2e72a1a5390aa28dcae0fbc2d7b920b06bf3b1ea161bb757d4db3c8cd23af2" + }, + "verify/harness/cb/cbstep.sh": { + "mode": 493, + "sha256": "5896b21e8cf08b40e2a2958e44a51beb7e5b5a58cf35d405879a5df7cdd375b4" + }, + "verify/harness/compare/TRACE_FORMAT.md": { + "mode": 420, + "sha256": "cf6f61dc255e3aed0f293c141d9fd3b0d5e848e3abe4dcf50b4ca2d58e37c024" + }, + "verify/harness/compare/mkfixture.py": { + "mode": 420, + "sha256": "f081dd92b9e82e838f59ce8f9c79d5cdebb825255f13b6c49178516e7f3ef118" + }, + "verify/harness/compare/oracle_parsers.py": { + "mode": 420, + "sha256": "b1a745bfa63b447c87279afdb2885a0218f2a0dc2539f79414f8a2534e24c97b" + }, + "verify/harness/compare/test_tracecmp.py": { + "mode": 420, + "sha256": "f25eb9d5ea7215b8366c44924fb49a5f028a0188e709dadfd90cfbc30db0823e" + }, + "verify/harness/compare/tracecmp.py": { + "mode": 420, + "sha256": "d6ca461cabf15351e2040150144084b93d3caf22d879ee158ede04052ab03cbb" + }, + "verify/harness/l2-ui/README.md": { + "mode": 420, + "sha256": "48effd757522ee5ff70af6d77449dcfd805bb7744c9093d01c039b86e030d7f6" + }, + "verify/harness/l2-ui/launch-b.cmd": { + "mode": 420, + "sha256": "8f26c451a88765c49ecb3c8160ed4a3d06f1100a6d9323b305efc01f039dfada" + }, + "verify/harness/l2-ui/socks.ps1": { + "mode": 420, + "sha256": "401cce47d495507f60eeae45942c146586464959046ef9715cd69605753af027" + }, + "verify/harness/l2-ui/ui.ps1": { + "mode": 420, + "sha256": "355c8f222bf99f547d9d16a1665a072e6914917d48e4db22b8438d2d83708e97" + }, + "verify/harness/profiling/battle-run.sh": { + "mode": 493, + "sha256": "79f14ded5c3731efd655a6f9a4ac6795f3ace0a9b064c43ba4bf9a2cb988a7cf" + }, + "verify/harness/profiling/funcs.py": { + "mode": 420, + "sha256": "841a6f5e5dc1d845b7439c9ce9dc08e045864929b0f367908abea7ab54259207" + }, + "verify/harness/profiling/funcs.txt": { + "mode": 420, + "sha256": "d35b17dbb3970f5c24ae862748c5b91aee87491968719c34e48a8b88c0615835" + }, + "verify/harness/profiling/iat.py": { + "mode": 420, + "sha256": "82465ef8284739ab3d3c99acd0fa6cc5a4bb80c8680eb7a949218305fd10d3d3" + }, + "verify/harness/profiling/inspect.ps1": { + "mode": 420, + "sha256": "35bc7dd85108e3f4686975ef7f510b1cc9306b5839329f7fdd2a5ac27a140611" + }, + "verify/harness/profiling/names.txt": { + "mode": 420, + "sha256": "89d90f934e445447c68569448471a8917ee0bbfcb5fb96bba3e6566be9b0779c" + }, + "verify/harness/profiling/parse.py": { + "mode": 420, + "sha256": "680df36804e923d74da8e9fd8877b5ea66975c9ce8d239ad4507c829f881722a" + }, + "verify/harness/profiling/sampler.ps1": { + "mode": 420, + "sha256": "ef0edde8535ef07e508a732f8e11dc3d50fef966e5a9e4d8161085a83372993e" + }, + "verify/harness/profiling/shots.sh": { + "mode": 420, + "sha256": "87e554abf08068d6438417e266f1e7820e34a900a7d559fa0a7c4a2fa18002b3" + }, + "verify/harness/profiling/timerres.ps1": { + "mode": 420, + "sha256": "80362eb9ec8bd882abddf2507236e70db2dd21f64c9db07d217bdd49361ed89c" + }, + "verify/harness/profiling/turnloop.sh": { + "mode": 493, + "sha256": "8e28f076599a9eb53eace77ad77a10b0770f1ce617c7a76e6a2b9044ee0c8774" + }, + "verify/harness/profiling/turnwin.py": { + "mode": 420, + "sha256": "e2033a8e519a7c9f65f67b5592494a9843eb8bef41af6ab5652343aa86bd4c60" + }, + "verify/harness/profiling/ui.sh": { + "mode": 493, + "sha256": "e66774a4d070285e6c6a62472000222a691c7192096039e75fa726bab9f6afb7" + }, + "verify/harness/run-recipe/click_helper.ps1": { + "mode": 420, + "sha256": "150a1c17e12e8479244107cd01d95233c84d550e95a6f5e352fd529818a21d7d" + }, + "verify/harness/run-recipe/display.cfg": { + "mode": 420, + "sha256": "76b4876abd1cd163a5cc6b65a6106670476cde40c9b868a53a0dc45f517e132f" + }, + "verify/harness/run-recipe/dxvk_d3d9.log": { + "mode": 420, + "sha256": "f48ff2684a78cea563ab7f10e2f005638044352fe9cfc30dedf0f26ec7fecf23" + }, + "verify/harness/run-recipe/launch.cmd": { + "mode": 420, + "sha256": "90a6effe8ae835bf641cc775a17ad709198fdfeded4379f658255a82f594e5c2" + }, + "verify/harness/run-recipe/lvp_icd.x86.json": { + "mode": 420, + "sha256": "b89a08526e043a84c3a2550b5ea2fd7692f547ea295e8dd70e79c64fe81f6fbf" + }, + "verify/harness/run-recipe/run.txt": { + "mode": 420, + "sha256": "12c83295dae9db4a98142ef8fe7e45321c90960428df504ed3496e27838a0413" + }, + "verify/harness/run-recipe/session.log": { + "mode": 420, + "sha256": "e9ce9b496e9ee55bd64cc27afe594cee6136dfbc6cf9d9d44e9914b27e568a93" + }, + "verify/parsers/PARITY_NOTES.md": { + "mode": 420, + "sha256": "beecfe60358f5977529bd0784ffe18ca03c38d2dd36766f351c6a9addac83bda" + }, + "verify/parsers/effect_txt.py": { + "mode": 420, + "sha256": "7219045dfaf305dd64218ff8096e8cac69a53df1aabdf85f15e6c5e01c963e74" + }, + "verify/parsers/flat_kv.py": { + "mode": 420, + "sha256": "a26149cb21d152be5cbada3b764e042187daf2ec306b2dba1081737af6a7ae4f" + }, + "verify/parsers/manifest.py": { + "mode": 420, + "sha256": "62a08cfd82d5f701ae3b3f567bc8382cfd1b33b49bf6049ade47a932ef7109da" + }, + "verify/parsers/mars_data.py": { + "mode": 420, + "sha256": "90c7b8421044b1d7e262e6f20e5af391d97a712b12c2d3f0c3033567881d536f" + }, + "verify/parsers/verify.py": { + "mode": 420, + "sha256": "cc5d619bd6b3ca161b4bc8050c30e7d77f6bd3e964c971cc29e051efc1e25a33" + }, + "verify/publishing/test_dashboard.py": { + "mode": 420, + "sha256": "cc44e516da663f5d27bf817cbcbf24c052f2db52ee887d08d7c271caf8f6a000" + }, + "verify/results/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/results/compare/.keep.md": { + "mode": 420, + "sha256": "4581f3fde61549f4c621b2f114228a62d066a528a270a9b41703238ff841ac1d" + }, + "verify/results/compare/b2-techfx-compare.json": { + "mode": 420, + "sha256": "b0533322d44b1694f36baf86d6660481ac5b22ce9c1d6b6b9668ea064cc08f4b" + }, + "verify/results/compare/b2-techfx-golden.json": { + "mode": 420, + "sha256": "4298a8229b85a3329c78d3618d3eb19aff096cb2da66e9238fd843d639b17f11" + }, + "verify/results/compare/cr-compare.json": { + "mode": 420, + "sha256": "f20e9a7c71412688c02b607f08a5224367598eba552e35a50e9922ca8f12edab" + }, + "verify/results/compare/cr-compare.md": { + "mode": 420, + "sha256": "0eb905744120b1cf264ba6e57497db64fdc8e225a87ef7bb86cf3f026ffe4d0d" + }, + "verify/results/compare/cr-replace0.json": { + "mode": 420, + "sha256": "f1556c5d74c236c82617061b5ec60b1a7ce4652bce87b6595eb89406ad832240" + }, + "verify/results/compare/cr-replace0.md": { + "mode": 420, + "sha256": "6f571e46350a29b811bc12b48e12ed2d443acba5f5be6310e0531c3790425d48" + }, + "verify/results/compare/cr-replace1.json": { + "mode": 420, + "sha256": "d0c1d6bd4a1f8f5343b584662d8202184479b01a51480443a97242daf27fccc2" + }, + "verify/results/compare/cr-replace1.md": { + "mode": 420, + "sha256": "111b51290468d5482a1910194487d26dc1b3ec534d699aa07a564de66bbf9d98" + }, + "verify/results/compare/eventlive-b3-t1-5.json": { + "mode": 420, + "sha256": "4f305180bcbe93523f407d1f8406ac52b84d4a20e2d611940716618fd37edfde" + }, + "verify/results/compare/eventlive-b3-t1-5.md": { + "mode": 420, + "sha256": "ec71d98210218fd5b5da69f6b17cf6991128a58a0358a6504e6497dd39159764" + }, + "verify/results/compare/eventlive-b3-t1.json": { + "mode": 420, + "sha256": "84f66c1e6a23f737d1615e75fd22fba958bfd851067acb42503e32a2812dd1de" + }, + "verify/results/compare/eventlive-b3-t1.md": { + "mode": 420, + "sha256": "299b8dd3f2cf42cbc9e6254fac01ee3dcb6abb0758c8f298beb6cc6464db4cfb" + }, + "verify/results/compare/eventlive-b3-zuul.json": { + "mode": 420, + "sha256": "a1a92c06202c8168362c33442edeb7ea7f76f6e586e5deea1b86dff9dc8f3494" + }, + "verify/results/compare/eventlive-b3-zuul.md": { + "mode": 420, + "sha256": "544791f9cd8b77a2d865f2a918d97e74559529f29943171bd1e8e2d8a120dec5" + }, + "verify/results/compare/l5-budget-boundary.md": { + "mode": 420, + "sha256": "6877f9cfc602876b4c213106493853822471a5aaa3e4e8ebf8dffd31373d89d9" + }, + "verify/results/compare/mf-after.json": { + "mode": 420, + "sha256": "586a824a0d0af1de0808c33c1c392c4022128f9c1305dc32b6749e8fa493e8f4" + }, + "verify/results/compare/mf-after.md": { + "mode": 420, + "sha256": "659be3da71cabfd3c34eb818f1bac07f848c58a878fd62d81ac7b1daa5f3ce03" + }, + "verify/results/compare/mf-before.json": { + "mode": 420, + "sha256": "259272b45ca9c63894d8c91e399ff91d7258b7836f1a0d5c91dd3972586b2498" + }, + "verify/results/compare/mf-before.md": { + "mode": 420, + "sha256": "4572530a1c93865d27aba47c23c418773ad39a834c8be1c004f5cc2f16f927a0" + }, + "verify/results/compare/output-ref-turn2.md": { + "mode": 420, + "sha256": "43a569165f9239f13edc31c7a848a6b839829ae06dd6e3b85d289a1552eb8d34" + }, + "verify/results/compare/output-zuul-and-ref.md": { + "mode": 420, + "sha256": "9bc0937c0b3e1e3e5a6cd3768dbfeae56a897615396b00834bd083611f3ef431" + }, + "verify/results/compare/recap-b1-compare.json": { + "mode": 420, + "sha256": "8e86cdd32373e41ac1cdc130b18acc188b35d5ab7112e1fc655d134c44ad9712" + }, + "verify/results/compare/recap-b1-compare.md": { + "mode": 420, + "sha256": "496a3246eda3be76d9d0f08726369d40aa879cf60a510f16209ae77585582841" + }, + "verify/results/compare/recap-b3-compare-t1-5.json": { + "mode": 420, + "sha256": "80eeeeccf15f427b75b053d06f6b32b1692a2ed9ca6b9a51c244e4166a1b0e78" + }, + "verify/results/compare/recap-b3-compare-t1-5.md": { + "mode": 420, + "sha256": "5b6295bff72d599f142e75fa913ca2da590322a6fd1d104328847159fc5e7802" + }, + "verify/results/compare/recap-b3-compare-t1.json": { + "mode": 420, + "sha256": "10d0d5f8aff90f6cce3cd87e30c7f8ff896c5b369f4dc8288141451e25727cb9" + }, + "verify/results/compare/recap-b3-compare-t1.md": { + "mode": 420, + "sha256": "2b0eb8865bb07a2dd8fd038bc19e38a34fbf19b9d3f6fabae085c16a74fbcc6f" + }, + "verify/results/compare/recap-golden-trace.json": { + "mode": 420, + "sha256": "50bb7e34ab2359adc83cc0647fc995d207173fcf6134e413565af450958f652f" + }, + "verify/results/compare/recap-golden-trace.md": { + "mode": 420, + "sha256": "586fc86fe78659902a5d0859c0bce44623bfcda0f375bb57b293796862c48e17" + }, + "verify/results/compare/recap-misc-compare.json": { + "mode": 420, + "sha256": "c73f3f3593a0d715a675b29c7b4f49c02a97578ee9d867ce15d217c43da2e466" + }, + "verify/results/compare/recap-misc-compare.md": { + "mode": 420, + "sha256": "b435c92441742b2b1b0236bfacff10c17757696baf446c544c4759b7e31237ed" + }, + "verify/results/compare/unlock-b3-t1-5.json": { + "mode": 420, + "sha256": "a4dbfc89f6f3d154edbbc62842a4e8d8a3c69b9589eafc1bb496b26a3ecf6e3d" + }, + "verify/results/compare/unlock-b3-t1-5.md": { + "mode": 420, + "sha256": "832626087ddc2da9064a192a1acfb3869d4a52c6398a070cbd66eaa1bdbe2e2e" + }, + "verify/results/compare/unlock-b3-t1.json": { + "mode": 420, + "sha256": "6d8938b8eaeb2da1c7fdccb1fb68f8e3a2b5b7f492cc096326cf3aadb2ab8d55" + }, + "verify/results/compare/unlock-b3-t1.md": { + "mode": 420, + "sha256": "8911e671a143c25765cd7c0b67f1b9cb23f4040fe26aad40ce59b1db858afdcd" + }, + "verify/results/compare/unlock-b3-zuul.json": { + "mode": 420, + "sha256": "3099d248d58c4395e92d65ad18c28227695a7c7935193be6c2bcf752fa0e0f04" + }, + "verify/results/compare/unlock-b3-zuul.md": { + "mode": 420, + "sha256": "f53b165c8502ba9b2416935179fdea68153fb6ebd2458b4ec9b4ecf6c741c91f" + }, + "verify/results/data-catalogs/crosslink.json": { + "mode": 420, + "sha256": "2966ba9780910b596e350c4f81eef5d74c4d235dc3a8d5cf6ad5fd53a407254a" + }, + "verify/results/data-catalogs/schema_stats.json": { + "mode": 420, + "sha256": "6e3f669ae77cdfa2c5cd6bbd29f5cecccd452d9a7b2397c2c23db6c33fda0a2a" + }, + "verify/results/data-catalogs/shipsections.json": { + "mode": 420, + "sha256": "2e7057c608d0cea755bf9dbfa291864d33e3f09ad5deff7bb3a8045bde7a4ab5" + }, + "verify/results/data-catalogs/strings.json": { + "mode": 420, + "sha256": "c36c1b2b9a2eace438f93698df6388fa94aec30d372bcd0bee7e09bb33c54d7c" + }, + "verify/results/data-catalogs/tech_tree.dot": { + "mode": 420, + "sha256": "96ce0492a1284167d82af2c07a8f8a0b3bb9864bc137195560d909df6a913055" + }, + "verify/results/data-catalogs/tech_tree.json": { + "mode": 420, + "sha256": "18df799410c5f650e15808c1ef247b4768a3dfff93795a5ec7f56cd6c4afc597" + }, + "verify/results/data-catalogs/weapons.json": { + "mode": 420, + "sha256": "a446b445c21519fc7992c84155c9652239567030843c405b4219d1f65022db01" + }, + "verify/results/fpu-cw/README.md": { + "mode": 420, + "sha256": "3928fd0f6a03a8ff0b170a7ed23a059120b5014b13bf6870d4f187ff299d5975" + }, + "verify/results/fpu-cw/cw-census.txt": { + "mode": 420, + "sha256": "b7854dc5cd249a2490d04264d758f1894a9ddf4b95573650365d47587c7589d3" + }, + "verify/results/fpu-cw/run-007f-rep/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-007f-rep/(Autosave).sav": { + "mode": 420, + "sha256": "ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918" + }, + "verify/results/fpu-cw/run-007f-rep/shim.log": { + "mode": 420, + "sha256": "73b5b86da743a1cb37d4c0d97b29978923b55a7a47f80c7fa20ca47d424f6c02" + }, + "verify/results/fpu-cw/run-007f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-007f/(Autosave).sav": { + "mode": 420, + "sha256": "ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918" + }, + "verify/results/fpu-cw/run-007f/shim.cfg": { + "mode": 420, + "sha256": "998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363" + }, + "verify/results/fpu-cw/run-007f/shim.log": { + "mode": 420, + "sha256": "5721f47d7fd862156ce2cd1832cd1739636b5aee53c82323ef233ff6401775bb" + }, + "verify/results/fpu-cw/run-007f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "149c4fcf750fcf9e81dc86d8696271d9a14ca788891ac95cf96995e3737c68e4" + }, + "verify/results/fpu-cw/run-027f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-027f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-027f/shim.cfg": { + "mode": 420, + "sha256": "f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd" + }, + "verify/results/fpu-cw/run-027f/shim.log": { + "mode": 420, + "sha256": "4bd3f88bd27eb2e3ae1f42f4dc2ccf1cc5df1a2c1171d2eff8be86e7be684187" + }, + "verify/results/fpu-cw/run-027f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "b5d2611d0c08946c1e1eaa244a7e44782eac2592c392efb3d7147fbbd86816e7" + }, + "verify/results/fpu-cw/run-127f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-127f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-127f/shim.cfg": { + "mode": 420, + "sha256": "1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271" + }, + "verify/results/fpu-cw/run-127f/shim.log": { + "mode": 420, + "sha256": "03f1999dc8964912697782e856f89f190b6680d5732f2cd00b1569bff727a545" + }, + "verify/results/fpu-cw/run-127f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "fb1b9063cc53a6b39ea0a58e0545b9334fbd15d65dd839e72f2c4febbb1dd3f0" + }, + "verify/results/fpu-cw/run-137f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-137f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-137f/shim.cfg": { + "mode": 420, + "sha256": "8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9" + }, + "verify/results/fpu-cw/run-137f/shim.log": { + "mode": 420, + "sha256": "83aa72572412d5248179397895029367685fd590d795991ab91c98cf9828ae29" + }, + "verify/results/fpu-cw/run-137f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "aad1fb6abd86beafb9f44e2c6060157e22618811d105f2379252e19008839b66" + }, + "verify/results/fpu-cw/run-1a7f-rep/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-1a7f-rep/(Autosave).sav": { + "mode": 420, + "sha256": "e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7" + }, + "verify/results/fpu-cw/run-1a7f-rep/shim.log": { + "mode": 420, + "sha256": "38f2824fbe91bf2fa1ef55473a7468707248420805b6f6dc85245fd34fa94200" + }, + "verify/results/fpu-cw/run-1a7f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-1a7f/(Autosave).sav": { + "mode": 420, + "sha256": "e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7" + }, + "verify/results/fpu-cw/run-1a7f/shim.cfg": { + "mode": 420, + "sha256": "59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588" + }, + "verify/results/fpu-cw/run-1a7f/shim.log": { + "mode": 420, + "sha256": "a1bb0bd06dae6955ec09e7d0c6cd1e68e19aa2a114256cdeae1275def0a63091" + }, + "verify/results/fpu-cw/run-1a7f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "b9a7affb8235626fcfdd5afe143e4ec03be869b6b386bd9ac78389097df88cef" + }, + "verify/results/fpu-cw/run-off/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-off/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-off/shim.cfg": { + "mode": 420, + "sha256": "6a19c362121a3dba0aac857d6e998131e8b2478f19edcdcbd58006645d096c70" + }, + "verify/results/fpu-cw/run-off/shim.log": { + "mode": 420, + "sha256": "9e3cbd005f0b68037681939b289834c55629bac0e9cd35ac55e6d8ef5333a116" + }, + "verify/results/fpu-cw/run-off/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "ec2271c0d7e09fe51ead7f8d58859c692e8b302233191841d506ea14248caa8c" + }, + "verify/results/fpu-cw/state-checksum-diffs.txt": { + "mode": 420, + "sha256": "3417dfc1b75ad896ac6a5e974d51248eecca319565e2422e146897d19e121b68" + }, + "verify/results/fpu-cw/trace-bitdiff.txt": { + "mode": 420, + "sha256": "8f86707f26f30638097c85f0db6df219adbfebac4e9ec24f1feb8bfce112d4f2" + }, + "verify/results/multiplayer/l2-combat-hud-client.png": { + "mode": 420, + "sha256": "02c86592531ab2889a0eae04e44a644d33c754096fe60aca6640068a7a3f421f" + }, + "verify/results/multiplayer/l2-combat-hud-host.png": { + "mode": 420, + "sha256": "a56daf36fcc88627b29116ad9874c95a3c46960074ff9b823aa15c4ea2660dd7" + }, + "verify/results/multiplayer/l2-combat-loading.png": { + "mode": 420, + "sha256": "f94a718cee08e1b7d346490058f13a107d23aaa7c269fdd53b159a75d62fa558" + }, + "verify/results/multiplayer/l2-combat-round-draw.png": { + "mode": 420, + "sha256": "c1b8424540b702915302f9ff38eaf765e8e95fddc3c5c4d894438dcfcf8b6256" + }, + "verify/results/multiplayer/l2-combat.pcap": { + "mode": 420, + "sha256": "0f112ef96da6c465dbda51baf99eedd66967eed61c097f643bf6c66fc26af31b" + }, + "verify/results/multiplayer/l2-encounter-query-client.png": { + "mode": 420, + "sha256": "4c41b268ad256b0109483a2d9b5ba35de7b9cadb4eb32ef4a68f7867e6e747fd" + }, + "verify/results/multiplayer/l2-encounter-query-host.png": { + "mode": 420, + "sha256": "8c7b0c6d65ddde45eb3447f044589ffc36500b40c4d676af8321f800162f38a0" + }, + "verify/results/multiplayer/l2-fleet-built.png": { + "mode": 420, + "sha256": "6ac91fcf9b42caef50134de01804046d8e60d0fd3966592e9738ceff511949c2" + }, + "verify/results/multiplayer/l2-lobby-client-joined.png": { + "mode": 420, + "sha256": "4a8e698c9ea935449ff0421cd59acd517ebffa388a7572279b28be0369141ff6" + }, + "verify/results/multiplayer/l2-lobby-host-created.png": { + "mode": 420, + "sha256": "e6a7377cabafa973396cedafa5ad5b4863a42f9866709db88faf9572e0ed3c98" + }, + "verify/results/multiplayer/l2-move-warning-dialog.png": { + "mode": 420, + "sha256": "43c6219d74bc0cb28495f13784cdbd3a90c89746b108824c3a2138dbdadcb53e" + }, + "verify/results/multiplayer/l2-socks.log": { + "mode": 420, + "sha256": "109b630d6548d07404f9f905e6c527f10e25221698f1b66226f67f94c5f294b5" + }, + "verify/results/multiplayer/l2-turn13-client.png": { + "mode": 420, + "sha256": "d19f17c4219f21f6c9950440d528a1a91fe3907761df21fd0ba99321b8820baa" + }, + "verify/results/multiplayer/l2-turn13-host.png": { + "mode": 420, + "sha256": "811efcfb571d60435f772a3b619bb329717d1e162b88e440ec0d636b1c6042fc" + }, + "verify/results/multiplayer/w2-internet-browser-no-error.png": { + "mode": 420, + "sha256": "6409b977056c95b29928a0098f75fffd71c501128f9d9325c3000837131c8791" + }, + "verify/results/multiplayer/w2-join-manually-dialog.png": { + "mode": 420, + "sha256": "86904e94a5aec41c1e89271d2712558c3b5055bd2ae4fededfda103d1e22fb71" + }, + "verify/results/multiplayer/w2-lan-browse-listing.png": { + "mode": 420, + "sha256": "6f5d16fa719fb63dd627fba551221c7665b69002e83fe35b8d84912cd7d8ce83" + }, + "verify/results/multiplayer/w2-lobby-client.png": { + "mode": 420, + "sha256": "ede652b21e2a4ea07c8132e4080ba903d1052ebca336bb007e1e8efa62787f10" + }, + "verify/results/multiplayer/w2-mp-turn1.png": { + "mode": 420, + "sha256": "59f9a1f5d8c0fff45d3ae3406dfd9878a5915f18e999d909a5238a90a3b86ed6" + }, + "verify/results/multiplayer/w2-mp-turn2-client.png": { + "mode": 420, + "sha256": "d9da4c151cd8290f80b31eb5ed8a74a0a30a87d1f7a80a179fa082a9439e08e5" + }, + "verify/results/multiplayer/w2-mp-turn2-host.png": { + "mode": 420, + "sha256": "910efd36b4a7c1a85d8ad487660f856339af037b9b00fef0cafd5e77ebdc36e5" + }, + "verify/results/multiplayer/w2-tier0-filtered.pcap": { + "mode": 420, + "sha256": "e108778fd1afb7718c53a4164310b8523415ef073706d310583dab424e5921cc" + }, + "verify/results/saves/ac-turn20-raider.sav": { + "mode": 420, + "sha256": "ee787db8f63d8f564c597bd5a82709790a0fdf47827912037f96b736f2cbed34" + }, + "verify/results/saves/ac-turn22-raider.sav": { + "mode": 420, + "sha256": "0faeaa601e6a867876819e5646b85f8787851093b8e6bd6e3946eb867f2dcc74" + }, + "verify/results/saves/ad-oracle-A-post.sav": { + "mode": 420, + "sha256": "a634510e7208cceb10d8ce016ceb0153601f11d7291f08122bcdb6418e313331" + }, + "verify/results/saves/ad-oracle-B-post.sav": { + "mode": 420, + "sha256": "676b1778880b5d4784ba7f6ef48b1a8e56745adab70a815943b7744876686260" + }, + "verify/results/saves/ad-turn27-two-raiders.sav": { + "mode": 420, + "sha256": "1c8baa27680809d585ab1728391e82729642d32aaedffd5bf95b616f0a11a436" + }, + "verify/results/saves/ap-deploy-turn15.sav": { + "mode": 420, + "sha256": "844f2b746060dc2c4e2099cdc6ceffd5f55ef858c9e347df28c8aca3041f7165" + }, + "verify/results/saves/ap-oa-turn16.sav": { + "mode": 420, + "sha256": "e296394f578b3a5668e5934b9eec8d6c4638ca7411200078f97de1abd346f4c5" + }, + "verify/results/saves/ap-ob-turn16.sav": { + "mode": 420, + "sha256": "262f8bda97c9511d8d2b41e6a8a0582d6f5364c2b01b1caf99e639d0e4f53ebe" + }, + "verify/results/saves/ap-turn22-spydetected.sav": { + "mode": 420, + "sha256": "91381bd7e722ac3847795a402d78ebb31d74dbb5d2909f33d243aec3ef8abaf8" + }, + "verify/results/saves/ap-turn25-spydestroyed.sav": { + "mode": 420, + "sha256": "46380fcf4498d67507e4471eb9ee3762647c53ee5473be142fe5c34e37344bc3" + }, + "verify/results/saves/ar-oracle-A-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-oracle-A-pre.sav": { + "mode": 420, + "sha256": "15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca" + }, + "verify/results/saves/ar-oracle-B-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-r1-turn43-post.sav": { + "mode": 420, + "sha256": "37f4a54fd32303fdcc86522b07104fbf2fcb124eec9b1f7005b3446fefcc429f" + }, + "verify/results/saves/ar-r2-probes8-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-turn37-816raiders.sav": { + "mode": 420, + "sha256": "b6f4e05ff226eabd1695003b36293553642553cea96ef417364393e2332a7094" + }, + "verify/results/saves/as-turn14-predeploy.sav": { + "mode": 420, + "sha256": "53986f8511cbf9920f32e2ea406ccf531dd08903fa5d06024fcf03ea7627221d" + }, + "verify/results/saves/as-turn15-spydeployed.sav": { + "mode": 420, + "sha256": "854a10fa1ea602f0f7909f9bf9154942e56ea5fa1db4cce47d6d32bf53952e08" + }, + "verify/results/saves/az-turn11-16destroyers.sav": { + "mode": 420, + "sha256": "501583c7cf2ac81c9db3191203cd3dc5ba5b9e228b9b9ce3dbdcc3650d0070a9" + }, + "verify/results/saves/az-turn23-tarka-comraid.sav": { + "mode": 420, + "sha256": "3d5eb826c149d1fd0278c746f32e6148ca9883a1bc5b522c0d5e6e13fac9788a" + }, + "verify/results/saves/bp-pinA-turn28.sav": { + "mode": 420, + "sha256": "e913ff41188211c02d536da616337544e64133996cd7cc7a6521a8df1960226f" + }, + "verify/results/saves/bp-pinB-turn28.sav": { + "mode": 420, + "sha256": "724528ffde9a7514b69ab9e82ed3b8c8ade63d622c0720de30503a73a92df11e" + }, + "verify/results/saves/bp-turn28-pre.sav": { + "mode": 420, + "sha256": "16f63adbf383946db17c381998957172bca803406b7df78f3b03805fef0bbcb8" + }, + "verify/results/saves/bq/bq-1A-endturn.sav": { + "mode": 420, + "sha256": "1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39" + }, + "verify/results/saves/bq/bq-1A-post.sav": { + "mode": 420, + "sha256": "56980aa086e1a145b00f781b9d9cf618b152986f1c2267b9fd96cca0f1f604b9" + }, + "verify/results/saves/bq/bq-1B-endturn.sav": { + "mode": 420, + "sha256": "1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39" + }, + "verify/results/saves/bq/bq-1B-post.sav": { + "mode": 420, + "sha256": "b36ac0ec2986f3a814dd22ca312c895ba6ec8a0e55fca54d8a7fd08a2f96a2c4" + }, + "verify/results/saves/bq/bq-1bA-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bq/bq-1bA-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/bq/bq-1bB-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bq/bq-1bB-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/bq/bq-res-post.sav": { + "mode": 420, + "sha256": "28bbd9b5c377afcd8f075b535eb1036ee46acf71ab614e7091ccdbdfb3703db2" + }, + "verify/results/saves/bs/bs-C-endturn.sav": { + "mode": 420, + "sha256": "15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca" + }, + "verify/results/saves/bs/bs-C-f38-autosave.sav": { + "mode": 420, + "sha256": "0fe8f37479a702d2e4e7752e6cb160dc242f00a082dc4115b7d10c77b24989f0" + }, + "verify/results/saves/bs/bs-C-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/bs/bs-L-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bs/bs-L-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/cb-c3-turn1to2-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-c5a-turn1to2-pinned-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-c5b-turn1to2-pinned-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-turn2to3-autosave.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/saves/cb-turn2to3-endturn.sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/saves/certified-pairs.md": { + "mode": 420, + "sha256": "4e1cfb79cf5a51446b2eae21f91b565348ffa95a9ebac8f95e23019012aefb57" + }, + "verify/results/saves/cr/cr-oracle-autosave.sav": { + "mode": 420, + "sha256": "79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420" + }, + "verify/results/saves/cr/cr-oracle-endturn.sav": { + "mode": 420, + "sha256": "e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f" + }, + "verify/results/saves/cr/cr-replace0-autosave.sav": { + "mode": 420, + "sha256": "6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5" + }, + "verify/results/saves/cr/cr-replace1-autosave.sav": { + "mode": 420, + "sha256": "8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235" + }, + "verify/results/saves/determinism-hashes.txt": { + "mode": 420, + "sha256": "bfa0615c4b310ae21c09a7d373d5a9d8799f36a0460089e5950fa0edf9d614d2" + }, + "verify/results/saves/human-turn11-spytechs.sav": { + "mode": 420, + "sha256": "aa63dd3d5489884f70d9c35acfb06c23c84531f403798842e7b0cf8cde94d1d4" + }, + "verify/results/saves/human-turn15-spyprogram.sav": { + "mode": 420, + "sha256": "22306d26f8831b90a62c00a2ebad5a97e77017b62ee96a7439d4c2c76c455cca" + }, + "verify/results/saves/human-turn2-orders.sav": { + "mode": 420, + "sha256": "9a94dec562622310893d6f522a0fae06f1033470f4182098e808b175e7df7c8d" + }, + "verify/results/saves/human-turn3-noderoute.sav": { + "mode": 420, + "sha256": "6db0912a050a846c8f3a184811644c76df3fdb65e83dffbf70289e21cc098a90" + }, + "verify/results/saves/human-turn5-traderoutes.sav": { + "mode": 420, + "sha256": "3829e6c6d8f26cd1183a972bd66edadbd71364c11a224b0a6e40461011bcab29" + }, + "verify/results/saves/human-turn8-traderoutes.sav": { + "mode": 420, + "sha256": "afeb3b2d724e07cf59f15eb1bdb9fcf853391fc06fe21beb20c069ff75b2f836" + }, + "verify/results/saves/turn1-state.sav": { + "mode": 420, + "sha256": "a3f9dc4b49fc669c814b09b87a9c6795de21bac80a1c7bfe3901b8e239fa36cc" + }, + "verify/results/saves/turn2-state.sav": { + "mode": 420, + "sha256": "ab4ac2d7e2977260a4de916f65c7ecc6dd5b0094dac4bb51241317232ea17ab4" + }, + "verify/results/saves/turn2-strict-issues.txt": { + "mode": 420, + "sha256": "33a169a2de29ad502e9b7c0159cd543e0b4d71f2d9b3903f5be58c7846db2429" + }, + "verify/results/saves/turn3-state.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/saves/zuul-turn15-orders.sav": { + "mode": 420, + "sha256": "ef86a0d61de3533f023af5dc2b9a5720e4e0c5c97d900d88181603a13db7d045" + }, + "verify/results/saves/zuul-turn16-noderoute.sav": { + "mode": 420, + "sha256": "b6b5d283b62cc46bca914e86c34cf45e8960a653e818e59664087429bbb30103" + }, + "verify/results/saves/zuul-turn17-orders2.sav": { + "mode": 420, + "sha256": "1b863e684edecb4afe738ba30c8132065ebcf2d9977409325e714fe0173056e8" + }, + "verify/results/saves/zuul-turn17-rollpending.sav": { + "mode": 420, + "sha256": "aac5ba5b10ff1af6b0e38c565b2f0a60c16858ee4e89dd2a2f5b037eae95ee7d" + }, + "verify/results/saves/zuul-turn23-fleet23.sav": { + "mode": 420, + "sha256": "fd3748327d87b8c478f50fcd09d097eacff21e57d946ecb43b8119b4d0d78b1b" + }, + "verify/results/saves/zuul-turn5-species5.sav": { + "mode": 420, + "sha256": "48559ab5b719b332e47b4bf43af85a616bff1508125d62edb211b80637234af6" + }, + "verify/results/shim/ac/ac-probe-run-shim.log": { + "mode": 420, + "sha256": "b9b4a5f0e399e16b477cde0bd7e2c4ce378549eb5a467f7b8ae5eb64d75cb106" + }, + "verify/results/shim/ac/ac-probe-run-watch.txt": { + "mode": 420, + "sha256": "543d76d150aeb9318b9ae27acf638b8935eea30b1a2d47fb15354b584a458163" + }, + "verify/results/shim/ad/ad-r1-shim.log": { + "mode": 420, + "sha256": "fec98888b030ed42b84551aac1286c0baeaf15b8a545af068dc6605615e96df0" + }, + "verify/results/shim/aidesign/parse_aidesign.py": { + "mode": 420, + "sha256": "fbd4aeb71db548759bdb1ff65a5fdd0af6c192927e6ebe4b510f1083c3bdba13" + }, + "verify/results/shim/aidesign/sd-br-p1-hashes.txt": { + "mode": 420, + "sha256": "cd276116a51df01129f0e840d4c04f7964be34f75e51c384cd8df65969f458e6" + }, + "verify/results/shim/aidesign/sd-br-p1.txt": { + "mode": 420, + "sha256": "325cb9fcfa505ab2a93bbd00d60a7a4644b6b5970cb16a288cc7a43f2e825dd3" + }, + "verify/results/shim/aidesign/sd-pin-p1-hashes.txt": { + "mode": 420, + "sha256": "f0371c0a439d736ae7e67e71bd87d693481100d08243d16a1ac1f2ad0ab8bdce" + }, + "verify/results/shim/aidesign/sd-pin-p1.txt": { + "mode": 420, + "sha256": "45e693d279899e7a04cf59bda67190058896b56f3b0607d5aee21abb12f03071" + }, + "verify/results/shim/aidesign/sd-pin-p2-hashes.txt": { + "mode": 420, + "sha256": "e7d6dc12a940305087ee03dc7f8826f3c6343d24d8fea0f2aa78665d887138c9" + }, + "verify/results/shim/aidesign/sd-pin-p2.txt": { + "mode": 420, + "sha256": "b0206869206bc3a41bebb5175e31179f1a5d125a44b5ddfc10c67c4a0d13c22c" + }, + "verify/results/shim/aidesign/sd-t15-p1-hashes.txt": { + "mode": 420, + "sha256": "1ee71a623eb17e08c623ec8de3775218dc3a7c2de50d36a25dd2395382195962" + }, + "verify/results/shim/aidesign/sd-t15-p1.txt": { + "mode": 420, + "sha256": "df9f4906ee8bbb2efc9ba9a38c41607b89711d0bc9f705473d8448e9715d9280" + }, + "verify/results/shim/aiorders/cb-c1-turn2to3.txt": { + "mode": 420, + "sha256": "9d5014b346cb0fa9e2172f45db77c4437a03b069930eaaa80ea94e742891eb8f" + }, + "verify/results/shim/aiorders/cb-c3-turn1to2-run1.txt": { + "mode": 420, + "sha256": "fdaf27a32b93fdb3024f7a45f0d90b2cf833d3f592960027c3a6cf4ecbb8c616" + }, + "verify/results/shim/aiorders/cb-c5a-turn1to2-pinned.txt": { + "mode": 420, + "sha256": "d4daa0c2599c1b573ed59617243a392861dbc4e1fbeb707c7248708c015d998f" + }, + "verify/results/shim/aiorders/cb-c5b-turn1to2-pinned.txt": { + "mode": 420, + "sha256": "9682186176024242fddb901b10d9a5ad6beba91bd895c2001ca954fc293eab73" + }, + "verify/results/shim/aiorders/l4-research-run1.txt": { + "mode": 420, + "sha256": "5caf1fa25b7b8c2d6af213e59c6ec821be3c46cdd92a1024a6faf5d0a3b1d71c" + }, + "verify/results/shim/aiorders/l4-research-run2.txt": { + "mode": 420, + "sha256": "846ef2cfbc365e7ee2f481048978baf820d57026737261bfba3a328d59cdaad8" + }, + "verify/results/shim/aiorders/l4-turn1to2-aiorders.txt": { + "mode": 420, + "sha256": "c55d9b3c48cb552c02731003c26bb6dfcb8afb611c2a188d21fd4a39f550d269" + }, + "verify/results/shim/aiorders/l4-turn1to2-hooksoff-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/shim/aiorders/l4-turn1to2-instrumented-autosave.sav": { + "mode": 420, + "sha256": "e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d" + }, + "verify/results/shim/aiorders/l4-turn2to3-aiorders.txt": { + "mode": 420, + "sha256": "696c34996e4b5be0383794fae7ea114779f7fdd0a8cdceff5a00aeb07392933a" + }, + "verify/results/shim/airng/par-br-p1-hashes.txt": { + "mode": 420, + "sha256": "656b1d0c073d9988287e5b76543e42eb1c050d9ebc9872e2b7ec5208b7534b42" + }, + "verify/results/shim/airng/par-br-p1.txt": { + "mode": 420, + "sha256": "eadf1cfb7efd7b374472867ddf1cea5f60e30096090c950049f0c264b0299398" + }, + "verify/results/shim/airng/par-br-p2-hashes.txt": { + "mode": 420, + "sha256": "d97916075c7b4c10464962e9e38aed69288a4d68a16a369c1133df16fa134146" + }, + "verify/results/shim/airng/par-br-p2.txt": { + "mode": 420, + "sha256": "bda355cbbf07301cd6d3716eba32312261c402848c91780a97a6d5cce14c3d92" + }, + "verify/results/shim/airng/par-pin-a1-hashes.txt": { + "mode": 420, + "sha256": "5eb1b557826d45fe9d843b37a92aaef54cd1b8a60900f9c34b4fe25e4bd46a24" + }, + "verify/results/shim/airng/par-pin-a1.txt": { + "mode": 420, + "sha256": "17750bab77512434dcc9e66fc86cbfc34df497cadab5b732cf3b0ef3958e09a4" + }, + "verify/results/shim/airng/par-t1-br-p1-hashes.txt": { + "mode": 420, + "sha256": "7577c33ec33d9e94fb77225929c1f34a3dd94c18fe72a394017811b3b5d53467" + }, + "verify/results/shim/airng/par-t1-br-p1.txt": { + "mode": 420, + "sha256": "8bc9969e2da730d26cc5538b758858a00a4ba6ab2d398458ff4dece1edf8bf92" + }, + "verify/results/shim/airng/par-t1-br-p2-hashes.txt": { + "mode": 420, + "sha256": "7e60fc8615163e8ebccf22fc8910f2e7c4f72a9be7a74bc832bc2a0f64ade0da" + }, + "verify/results/shim/airng/par-t1-br-p2.txt": { + "mode": 420, + "sha256": "7e50a728eb5909bd602a9e6996b908b1b2665c8c983cc0258dad000c8bff8e35" + }, + "verify/results/shim/airng/par-t1-br-p3-hashes.txt": { + "mode": 420, + "sha256": "00ce6b3b4c9dbfd192d09b3b06d91b95576cee8a5a85fccdc36a85547fbdcbc4" + }, + "verify/results/shim/airng/par-t1-br-p3.txt": { + "mode": 420, + "sha256": "28cdf1f6b83c1764f1d1e51a67e3f873566b8503f8504ef52f5b5af24b21c0cb" + }, + "verify/results/shim/airng/parse_airng.py": { + "mode": 493, + "sha256": "3fafa7cf2363620d6a25248d085fbc4e3bd1fdbb9388a6795244834a9a2a2ed0" + }, + "verify/results/shim/ap/ap-probes8-d.shim.log": { + "mode": 420, + "sha256": "115545172568edc6a1d5bb3b559f968aa8a7aaa1f6aeba970daebce98fe56a0c" + }, + "verify/results/shim/ap/ap-probes8-w.shim.log": { + "mode": 420, + "sha256": "8af0897a884bb314958c5e6f2fccd88ff8b1890322dafd3bc904b3f983838620" + }, + "verify/results/shim/ar/ar-r1-ledger.txt": { + "mode": 420, + "sha256": "44bddfc0b9e94812a3a1cfd681a1350caedf2ed8e1174900c2f81c90dc95187e" + }, + "verify/results/shim/ar/ar-r1-probes.txt": { + "mode": 420, + "sha256": "c10251c9bcca5436dc42b2c0bd37b66c144aec4036f2069c2df9340fd764992c" + }, + "verify/results/shim/ar/ar-r1-shim.log": { + "mode": 420, + "sha256": "07003ee203d60a638cc8a1cb0a0f6b8042ba227705b4355f1254312c6dd54e28" + }, + "verify/results/shim/ar/ar-r1-sites.txt": { + "mode": 420, + "sha256": "d1923d549ef3567488d0382ae0ef75fa25c5b1b5812ee5349c5c47aea7a30514" + }, + "verify/results/shim/ar/ar-r2-shim.log": { + "mode": 420, + "sha256": "06dbf04cff5a56b0e55d8e73e5b1e3e9d9235f4afafc8139517b68d676781909" + }, + "verify/results/shim/as/as-probes8-run.shim.log": { + "mode": 420, + "sha256": "cd25c93d8b79e0f0df594fe681917fe880741a54a4188d4d72d2fbc6c42ba8d9" + }, + "verify/results/shim/bp/A-aiorders.txt": { + "mode": 420, + "sha256": "ee9f8bb1073e3bf02e115fdee014f79b11100a0e1e35e308c2bcd4b798302c34" + }, + "verify/results/shim/bp/A-shim.log": { + "mode": 420, + "sha256": "853eab98d09ff1e7a8e7da375a678561b02d6236adec627202ff3bb34d90e797" + }, + "verify/results/shim/bp/B-aiorders.txt": { + "mode": 420, + "sha256": "07daeacf33a16afbed64a8a01ffd26fa73c6d2acd0e6993dd9deb06a7fd93fc3" + }, + "verify/results/shim/bp/B-shim.log": { + "mode": 420, + "sha256": "cde2202333e81cc4eec2c47915181229a68a5fa99879968905a2809c4fe0a79a" + }, + "verify/results/shim/bp/L-aiorders.txt": { + "mode": 420, + "sha256": "28492b0f9be74f61db45eae49b44b41efbc1a3bf6f6d2c888e5cc40bfb7753bd" + }, + "verify/results/shim/bp/L-shim.log": { + "mode": 420, + "sha256": "550d8986a35b3f4742e7522df11bfbf2e832e417ad42cc1bff1a39dd4ee510fd" + }, + "verify/results/shim/bp/statecheck-AB.txt": { + "mode": 420, + "sha256": "dacb5cfa5541934f37b2b1c02b87e809c3f65ba8488aa88d925b295fade0083d" + }, + "verify/results/shim/bq/bq-res-aiorders.txt": { + "mode": 420, + "sha256": "991543eb53fbf1353fe99ed96d4ca358e05f6bac32f00bd1f6dc60fcc002c8b4" + }, + "verify/results/shim/bq/bq-res-shim.log": { + "mode": 420, + "sha256": "7855bd268f69443e7ddfda71873458144728630264703482901bf6d8ffbccd3a" + }, + "verify/results/shim/br/BR-aiorders.txt": { + "mode": 420, + "sha256": "d71e11e7c40aaa740adc55651af556afb9e92768336bc11747ad67151f33f4d1" + }, + "verify/results/shim/br/BR-airng.txt": { + "mode": 420, + "sha256": "04eaeaa688a448f64df00dedfd692b78bca0e3e1207a8292c2fafad507f919ea" + }, + "verify/results/shim/br/BR-shim.log": { + "mode": 420, + "sha256": "bc6ef7aa465c2b1a81d08555174e15fb1a97a207da9eefaa8a6155440869a13e" + }, + "verify/results/shim/br/BR2-deep-aiorders.txt": { + "mode": 420, + "sha256": "b9edb53f7d56c1bb26d3bb77349543dce9564930484bc832475a3a04e5f2ad15" + }, + "verify/results/shim/br/BR2-shim.log": { + "mode": 420, + "sha256": "0de7609693747fdf0abaebd60598af127c918f32561c993715aead91cd24b334" + }, + "verify/results/shim/br/aiorders-diff.txt": { + "mode": 420, + "sha256": "411ceb2bacd62185d25a3c58f199c0bdfcd2759705bef2b36536da3870f73a67" + }, + "verify/results/shim/br/cmp_aiorders.py": { + "mode": 420, + "sha256": "b6c192efb40866aa56f29d9ba2b89e17f18ae0579645db8f34a01010db09cc28" + }, + "verify/results/shim/br/shim.cfg.brdeep": { + "mode": 420, + "sha256": "b8017e344666df816f1191906cf8f54504d631bb7ce9d2f51f6f959e4934ff04" + }, + "verify/results/shim/br/shim.cfg.brprobe": { + "mode": 420, + "sha256": "4f090999dba63ef22ab4993bd6af557e9500819c84f27decc126771f48f98efb" + }, + "verify/results/shim/bs/C-aiorders.txt": { + "mode": 420, + "sha256": "5abc20b68edf6ff52301c01825040e1d6b41b582ba40403ed6c4edc42dcbe4e2" + }, + "verify/results/shim/bs/C-airng.txt": { + "mode": 420, + "sha256": "5a4a56506d1eeb82d3bf0fbba95842566911178a82f0aad9d700a9fe00f1b300" + }, + "verify/results/shim/bs/C-shim.log": { + "mode": 420, + "sha256": "8b8dad987589fd159e789806e89dbcf7a7b40b86446d55e1d0bf10ff25cb8f6f" + }, + "verify/results/shim/bs/L-aiorders.txt": { + "mode": 420, + "sha256": "a03e8c1587633ecbb683c376f30e35e126e98ff0e8204c4ee6b5e2b4fc254104" + }, + "verify/results/shim/bs/L-airng.txt": { + "mode": 420, + "sha256": "8d21083857facd3728446af612b3a97b47e5287a5fe0bdf01423812f8445dacd" + }, + "verify/results/shim/bs/L-shim.log": { + "mode": 420, + "sha256": "246af272e464c715c7abb00471b4ddc404b81143f4065006aa4daec4d82cadb9" + }, + "verify/results/shim/bs/shim.cfg.bsrun": { + "mode": 420, + "sha256": "570b15c208d31a367ec6c6886019693cb17b98d254cebead11ec6746ae5af256" + }, + "verify/results/shim/bu/BU1-aiorders.txt": { + "mode": 420, + "sha256": "944eeb701fcd22480513c34d93f8310541977e89a24ae237bd947aed44092529" + }, + "verify/results/shim/bu/BU1-aivisit.txt": { + "mode": 420, + "sha256": "721f038ef80be92325728fc30f095846b54ff1ac67a41537d4a4d1b97d5e9758" + }, + "verify/results/shim/bu/BU1-shim.log": { + "mode": 420, + "sha256": "28ca02f56823e577662744108965bc3ab1d7241143704ac8ceaacf2e9cd077f3" + }, + "verify/results/shim/bu/BU2-aiorders.txt": { + "mode": 420, + "sha256": "5c388039a3e832465f67b4ca88f3f67550d5189a3a68f33c508c4a467733c9ac" + }, + "verify/results/shim/bu/BU2-aivisit.txt": { + "mode": 420, + "sha256": "19963ed364f47fd965508d96fbf9d1f424938f711f2b1cdc83697f789189271a" + }, + "verify/results/shim/bu/BU2-shim.log": { + "mode": 420, + "sha256": "c0a8c467bc4b4134dc83ca5dedbbfed8dac887b432a56cd12f6e211c8d58daca" + }, + "verify/results/shim/bu/BU3-aiorders.txt": { + "mode": 420, + "sha256": "b6443b3f7db541149f54435f14ba830f54d2f950420f3f0694ff12a8b1eec143" + }, + "verify/results/shim/bu/BU3-aivisit.txt": { + "mode": 420, + "sha256": "fe67a4a1cc6a67e06b2eb5675b4b8543ab9f25ea39a18d7f4c83bce74482e0cc" + }, + "verify/results/shim/bu/BU3-shim.log": { + "mode": 420, + "sha256": "0a802ec556c87f44efaa06f211e75d9b89a66ac6db5a08e34d2a7eae992121ed" + }, + "verify/results/shim/bu/claim-order.txt": { + "mode": 420, + "sha256": "7135e3ed0204a4615e546bc882992073d4b48ee42ea341186c32b6b3dd3dfc47" + }, + "verify/results/shim/bu/claimcheck.py": { + "mode": 420, + "sha256": "85c5ec747f12cf37ec2dbc4021447909eeded68ecd1abb697a6fb60005a54aff" + }, + "verify/results/shim/bu/shim.cfg.bupin": { + "mode": 420, + "sha256": "6b37b047adc95f7c08b6767cdec5bd715a8851f14bff7f187772835d1cc032a7" + }, + "verify/results/shim/cr/cr-N.log": { + "mode": 420, + "sha256": "d5459e6dcf44fbe55d0f60f1ac40d68bed96319bb55986cc24a1b9ca0d8103e0" + }, + "verify/results/shim/cr/cr-R0.log": { + "mode": 420, + "sha256": "3b703881aa2b9a1c111201ff9543f2dcae0f948567ee877df275a1093bb567f7" + }, + "verify/results/shim/cr/cr-R1.log": { + "mode": 420, + "sha256": "8df6af84f74891ff9b0b02fa150641f5fadcd0419bc53c41cbe80bf14ec9c712" + }, + "verify/results/shim/eventlive/c6b-loaded.png": { + "mode": 420, + "sha256": "f442d4b211a47b331cef9a255e83732b80a1ede70ac200596c796ac0aa320017" + }, + "verify/results/shim/eventlive/c7b-turn3.png": { + "mode": 420, + "sha256": "3e070abfbdf4efd2662951049f8545f328aa172d64d00b9c5a1f4243426e803a" + }, + "verify/results/shim/eventlive/load-dialog-8files.png": { + "mode": 420, + "sha256": "e0fc5af16042a70b53bf7d44220db56c56a466c22c4abd641557e94b8e6c1693" + }, + "verify/results/shim/eventlive/shim-zuul.log": { + "mode": 420, + "sha256": "f9d184b33c46cab9d497f7a38056c099ce2ff9b5e8149f563a2353d91985fea1" + }, + "verify/results/shim/eventlive/shim.log": { + "mode": 420, + "sha256": "e65f2e3efa1ce8f70c483bb966448239923db2d3924c709a669bb1a890411b0c" + }, + "verify/results/shim/eventlive/t7-after.png": { + "mode": 420, + "sha256": "dc0a3e8f5a5c9032ead266d106fa69a57677711eb807d26376f29baa6ec0b934" + }, + "verify/results/shim/eventlive/zuul-turn1.png": { + "mode": 420, + "sha256": "f9af979ed08315c0a8d644af800318634b3641628f710f3f9b4d2c77d4f70fdc" + }, + "verify/results/shim/l1/README.md": { + "mode": 420, + "sha256": "f008081756d99825aa81d2802869476f8341f81aeb8c4dbbb77502cf76db5145" + }, + "verify/results/shim/l1/cdiff-frames-2-51.txt": { + "mode": 420, + "sha256": "57cb1911c5bfc7bdfacafc6bb1ad382fc05f46fb9cdcee4479d861af48e585c1" + }, + "verify/results/shim/l1/cdiff.py": { + "mode": 420, + "sha256": "2ace41ce6017cfac8758d8b9955f02de84738d90067a7dfadeb8bffffc842027" + }, + "verify/results/shim/l1/rep.py": { + "mode": 420, + "sha256": "1a7a3819da8e9aeaaf213a62b696388b0a9489924c964407536831b5f7dd9488" + }, + "verify/results/shim/l1/saves/l1-t1t2-post-hooksoff.sav": { + "mode": 420, + "sha256": "e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d" + }, + "verify/results/shim/l1/saves/l1-t1t2-post.sav": { + "mode": 420, + "sha256": "62061918176e344106e82357e58acc8adec488f6b2969831cb99a84cf25e31c5" + }, + "verify/results/shim/l1/saves/l1-t2t3-post.sav": { + "mode": 420, + "sha256": "2177c659d8dbc39cf7485abe367d42d55cc42cc9a61949d403dcbc79989ec32d" + }, + "verify/results/shim/l1/saves/l1-t2t3-pre.sav": { + "mode": 420, + "sha256": "641a33f06b2fe1c1caf0c4994442bf13a4b03f25a85b34a9875cd22b75715896" + }, + "verify/results/shim/l1/seed-two-processes.txt": { + "mode": 420, + "sha256": "d60412049ced59705284a46078f1906e1aad4140f90db2169e08aeb9530dd985" + }, + "verify/results/shim/l1/seedrep.py": { + "mode": 420, + "sha256": "a06de5d5ccc1e87808eb3877534076340ef5330bee9a86953b8f4dae0268e087" + }, + "verify/results/shim/l1/trace-et1.jsonl": { + "mode": 420, + "sha256": "f21a213bc56983bc94f24303b0837b160f93bfb7e3ca6abdbf2e18321f8dfa19" + }, + "verify/results/shim/l1/trace-et2.jsonl": { + "mode": 420, + "sha256": "6e44b0fc541c3082f91b115de67f5315f43b9db21f0696b856cfff2ead51323a" + }, + "verify/results/shim/l1/trace-oracle.jsonl": { + "mode": 420, + "sha256": "ad9ecbe79a71c84930302868850806798228fe0f2e625b442dd3ed579c05092c" + }, + "verify/results/shim/l1/trace-playforward-f51.jsonl": { + "mode": 420, + "sha256": "6ed0af385dfe7288ad2c994458c8f5d75fc8e29b603dd6607a3703591d25eeb4" + }, + "verify/results/shim/l1/trace-seed-proc1.jsonl": { + "mode": 420, + "sha256": "120074583eb02cd4c3a29aab5826f789d52a6146930b1763f9b0bb824e9a350a" + }, + "verify/results/shim/l1/trace-seed-proc2.jsonl": { + "mode": 420, + "sha256": "03dffeafeff0c33d926207f869741dc544141425c8f665bf58aad4fd363e2f95" + }, + "verify/results/shim/l1/watch-arm.txt": { + "mode": 420, + "sha256": "f8d5811c938d16d003a72a97f2b4b33112914a7ee378fa2b334282616592943e" + }, + "verify/results/shim/l1/watch-hits.txt": { + "mode": 420, + "sha256": "1bf62ac965036a189055cd59a92007c70a2a6aca307df54ce8ccb997048f43d5" + }, + "verify/results/shim/l3/l3-probe-run-shim.log": { + "mode": 420, + "sha256": "f5cd336971ae3d3eaff642e80d9defa20ec2e1ee11e212a082c24365b18d8684" + }, + "verify/results/shim/l3/l3-probe-run-watch.txt": { + "mode": 420, + "sha256": "8d969595789c690a688f7b8fac05288c614d5d9210388ca94315158948c85f24" + }, + "verify/results/shim/l3/l3-spy-run-shim.log": { + "mode": 420, + "sha256": "5abfd08445e9e8139945b095ddddfb56480062019ce6d40304a440c317f21fd1" + }, + "verify/results/shim/l3/l3-spy-run-watch.txt": { + "mode": 420, + "sha256": "c669ccf79202e7060c153151e4fe1be96acf4030cb64aa71bd6a5c212b550b47" + }, + "verify/results/shim/m0-main-menu.png": { + "mode": 420, + "sha256": "465207fda4722ca53585b71647a08b1149944036792a072e7c34e2c437a3e37c" + }, + "verify/results/shim/m0.log": { + "mode": 420, + "sha256": "581d63139503892b6aeeff71acb742143393e9f107aa1f3605d8c028c927cad1" + }, + "verify/results/shim/m1-shim.log": { + "mode": 420, + "sha256": "35401ea82b9a64dbfdb54c282c06c51d7b696afd4ea2794e16071e0fd5c7cbef" + }, + "verify/results/shim/m2-scout-shim.log": { + "mode": 420, + "sha256": "8c46117bdde6b6911a4d77b059b40803d4966652990c8fa3ed67773e5db0459f" + }, + "verify/results/shim/mf-after-shim.log": { + "mode": 420, + "sha256": "86601372b980828171e98fc71afe865f207b1745ef4dcdca646a618c91d17426" + }, + "verify/results/shim/mf-after-turn2.png": { + "mode": 420, + "sha256": "a1f83011ff96e990d7cc80f8306e8fe0c58b96f84eb73ccb6cb013019900133d" + }, + "verify/results/shim/mf-after-turn7.png": { + "mode": 420, + "sha256": "313f3863ab901320174c8ff7cf6f1f6b0d5b3d9d7a2f8999eae6413aedc46fc5" + }, + "verify/results/shim/mf-before-shim.log": { + "mode": 420, + "sha256": "8377a87c7ed05fd0cd7b61e3f1d5fc9c2b9fa294f812c67183d4ce31323a64b1" + }, + "verify/results/shim/mf-before-turn2.png": { + "mode": 420, + "sha256": "c9805791f402ec159fcc6acdd283120eae8536b230666d3049374525595b589f" + }, + "verify/results/shim/mf-before-turn7.png": { + "mode": 420, + "sha256": "3b880b8f96c4cc328aaff8e41068db29b295be8f000c432e321a51b6030b1272" + }, + "verify/results/shim/mf-human-home-no-ships.png": { + "mode": 420, + "sha256": "dfda3e9784eefdc7b75d04908e95c3a192eda7796685907c65bfde3068d6f2bb" + }, + "verify/results/shim/probes/human-t3-5-perturbed.txt": { + "mode": 420, + "sha256": "9b594ab18cdd9aec4fdf807b4d97576191bc6fd48a85cc872c222b515d0f7c01" + }, + "verify/results/shim/probes/human-t5.txt": { + "mode": 420, + "sha256": "0ddd9f0391a3a5d655f1809a9e79d537badd8071f8834e58bdbc7f95d9ff1320" + }, + "verify/results/shim/probes/oracle-restore/h-oracle-autosave.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/shim/probes/oracle-restore/h-oracle-endturn.sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/shim/probes/zuul-t24-25.txt": { + "mode": 420, + "sha256": "50567b7cb1f008d025baf6cb4b4ad7af7d767a2182afd082c3ac1b1a66c79541" + }, + "verify/results/shim/recap-b1-shim.log": { + "mode": 420, + "sha256": "601cd4cbbec3e8c1f7776eadc4203256ec4c5d1e3e180295369727e1da69ff37" + }, + "verify/results/shim/recap-b3-shim.log": { + "mode": 420, + "sha256": "7c5110a9d4431cc03729a7bddcb13ee69a6d428199051e175b0921391fc02a80" + }, + "verify/results/shim/recap-misc-shim.log": { + "mode": 420, + "sha256": "7cadf2eadb08979cda39fe7e3ed6cfa3f62bdbcd256fc7550b3e27c3f08c9b3e" + }, + "verify/results/shim/recap-misc-turn7.png": { + "mode": 420, + "sha256": "2c1451ded36ad79389f0eb3db098b4e0b0a6f12495d64c832f6e093374005c29" + }, + "verify/results/shim/recap-trace-shim.log": { + "mode": 420, + "sha256": "56da143a92b2edda727862a6fd4a056c716153e23cfddbde076e218ce4c4285f" + }, + "verify/results/shim/recap-turn2-loaded.png": { + "mode": 420, + "sha256": "62a42c44f99d8a53bca735d54a5adf48b89449bb859e859ec573cb40e1a7f2d0" + }, + "verify/results/shim/tailrng/save_rng_delta.py": { + "mode": 420, + "sha256": "a9a04b131427a43372d87688b8eaf230a82a79e2c3c241a90ff4eb31e039749e" + }, + "verify/results/shim/tailrng/z-t5-autosave.sav": { + "mode": 420, + "sha256": "b2124798470d85ea86b0e9e4abfd9e23f3be73caa1115dd7614021be76305939" + }, + "verify/results/shim/tailrng/z-t6-autosave.sav": { + "mode": 420, + "sha256": "2ce6aef9d49ea238455f3ac680556c6a251065af3e28b6540fe09597ae38571c" + }, + "verify/results/shim/tailrng/z-t6-endturn.sav": { + "mode": 420, + "sha256": "afb112896c0236fa715ab3c10139958294085bb2066e22a6d7b76deb0dfa46dc" + }, + "verify/results/shim/tailrng/z2-autosave.sav": { + "mode": 420, + "sha256": "b2124798470d85ea86b0e9e4abfd9e23f3be73caa1115dd7614021be76305939" + }, + "verify/results/shim/tailrng/z2-endturn.sav": { + "mode": 420, + "sha256": "8648957fecf5041233f9add4c8173f78981f026f133ecdbecdb89ddd10917048" + }, + "verify/results/shim/unlock-shim.log": { + "mode": 420, + "sha256": "20a6625b369acb773543e530f1bfdc8b7eaca5c6b58415cc5009bb9858e16f22" + }, + "verify/results/shim/watchpoints/w2-modcount-status-2turns.txt": { + "mode": 420, + "sha256": "335be910dc11a20c9fb80f3b0f37f04fd50a9d8074697bb5365c3fea02790b74" + }, + "verify/results/shim/watchpoints/w2-shim-log-excerpt.txt": { + "mode": 420, + "sha256": "9a344045270e3815004a3376eccfbd030372faba54374d9b6626fd80740b8b13" + }, + "verify/results/shim/watchpoints/w3-modcount-turn1.txt": { + "mode": 420, + "sha256": "328a2319e320f5382e82ad497b6b73245c397cf67515e8a27fa9712418af81ae" + }, + "verify/results/shim/watchpoints/w3-shim-log-excerpt-turn1.txt": { + "mode": 420, + "sha256": "a9b3c20f90a76ee624bde6ee4cae9d1ff1f2baa67aa770a0e70042cb44d11915" + }, + "verify/results/shim/watchpoints/w3-shim-log-excerpt.txt": { + "mode": 420, + "sha256": "af9fe2258fe4168f6066768809c509380183f61bc337331392c5202b900d906a" + }, + "verify/results/shim/watchpoints/w3-tshn-containers.txt": { + "mode": 420, + "sha256": "08eab48d1a202f975f1be87e2279379646142f8b22d9dafc56295399083ed0af" + }, + "verify/results/standalone/cv/cv-input-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "d29f3514e4209954d6c068f34285615aef5f4627ba4627ce97c0e65f93620159" + }, + "verify/results/standalone/cv/cv-leaf-worklist.txt": { + "mode": 420, + "sha256": "0f309711de89cc10cf940d0d4b051b5052ce49a3cc0f3f80c532b50256410778" + }, + "verify/results/standalone/cv/cv-noreplay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "3734f197cfefd017dbe562fd421d40859bfc2c37d9ac2cedf9c7ddd340a3a4a7" + }, + "verify/results/standalone/cv/cv-replay-run.log": { + "mode": 420, + "sha256": "7372c7da437ece21098cc6f66d0631e146d8aae14a9242bd2278a9922a7f7c02" + }, + "verify/results/standalone/cv/cv-replay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "1932158abec82f45b9b838f4cb79b1088190ca5281d388f57356af7776e96950" + }, + "verify/results/standalone/dt/dt-canonical-after.txt": { + "mode": 420, + "sha256": "f32fdcf7d6431293133e951045b42a55e8a27d75cd859ad08cd719e5fb696712" + }, + "verify/results/standalone/dt/dt-canonical-before.txt": { + "mode": 420, + "sha256": "b56160cfdcfa0fff25be2aa566959261e375004905814803e231889da665188f" + }, + "verify/results/standalone/dt/dt-observed-leaves-remaining.txt": { + "mode": 420, + "sha256": "e14bd20e60480f98a564e585c0d25d2e758f71016811b8981dbdacd9d51c0c82" + }, + "verify/results/standalone/dt/dt-replay-run.log": { + "mode": 420, + "sha256": "4b7907fc4e735b1c12e3cf64671079abaad757aabd752b134a9fb27d065656cd" + }, + "verify/results/standalone/dt/dt-replay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "8ddb84e7e6c2f663b1bc4b9611a56a46aac9d09863dcc5be765cb70dc9642c22" + }, + "verify/results/standalone/max-income-oracle.json": { + "mode": 420, + "sha256": "245796e0aea5f5c2238686cba10c651156117fb454805553b2508a8a8fe71a69" + }, + "verify/results/standalone/report.txt": { + "mode": 420, + "sha256": "b47e90432eaf38149f2ecb5316d1962813b6b1423848e36fcc9435ad1f5485df" + }, + "verify/results/standalone/rng-oracle.json": { + "mode": 420, + "sha256": "98a364c80f69d6a84b86c3f9ccc16176d9e769ff061569b0c0ddfced53f9146c" + }, + "verify/results/standalone/rng-oracle.txt": { + "mode": 420, + "sha256": "3496a217a7e4f80bb18c1b067eaedcafcf7bdc877460c6346606fd7f6a55b877" + }, + "verify/results/standalone/status.json": { + "mode": 420, + "sha256": "d38ca6222c83df3a5886e6b32a30772c7174cc0e584f4a3beabedc05770df9cd" + }, + "verify/results/standalone/t36-turnrecord.md": { + "mode": 420, + "sha256": "b017a93ad04af69ef469cd8ea536dff4cab17140d20b3665e7c89533ab5b8a84" + }, + "verify/results/state-checksum/ad-oracleA-vs-oracleB.txt": { + "mode": 420, + "sha256": "b6c440e20108ad2727a7d7aa32a4bd673ec03ca4372461797705d619de1ba48a" + }, + "verify/results/state-checksum/chain-turn1-3.json": { + "mode": 420, + "sha256": "33941d0dd77bfb79e4302f82a410f5f18fe3ae1ade684b5b59c6ed352789a696" + }, + "verify/results/state-checksum/chain.txt": { + "mode": 420, + "sha256": "ae1037dd8394b258ce91262877d348a0561c5f5056cfae74cc0d058e4166aa83" + }, + "verify/results/state-checksum/float-census.txt": { + "mode": 420, + "sha256": "c697c0f187ee8a8ebb157cbff8d7ae42c92f36a501b16acd9f9839a0ffc306a9" + }, + "verify/results/state-checksum/identical-roots.txt": { + "mode": 420, + "sha256": "1143fabfe96954440542adcd3830ad1d862be6c091f3c1b2e63e92a2751703e7" + }, + "verify/results/state-checksum/resave-localisation.txt": { + "mode": 420, + "sha256": "85f4e8fe3581ba5d0ae74974d757c4c2fddc008f3fbe6781891ae8ef65aa693e" + }, + "verify/results/state-checksum/roots.txt": { + "mode": 420, + "sha256": "6ea7ad668703baaff870720683bcc13beff557cebf8e7843526d6677e5b5ef68" + }, + "verify/results/state-checksum/turn2-to-turn3.txt": { + "mode": 420, + "sha256": "3649c86742460a54d89714df1917508f76952c44c07cb7fbc19010910c5df0f4" + }, + "verify/results/turncommands/br2-turn27-deep.tcb": { + "mode": 420, + "sha256": "329b9c3f1e9f85ddeeb71148bd5c0e38f7d26445ed349df60ffbfaf63db46102" + }, + "verify/results/turncommands/br2-turn27-shallow.tcb": { + "mode": 420, + "sha256": "d8346969421a92fa199d0b9faafa642dc2e71a527b08d27984fe73ee70ecbd6b" + }, + "verify/results/turncommands/cb-turn1to2-pinned-run2.json": { + "mode": 420, + "sha256": "01e572975339fbe8a242b2438719173bd5bb4f4916078e5887026408923eb356" + }, + "verify/results/turncommands/cb-turn1to2-pinned-run2.tcb": { + "mode": 420, + "sha256": "16e349db6c46e46520cd2e5f0a9fcf70b537dce878324dd873418ef6cebd8658" + }, + "verify/results/turncommands/cb-turn1to2-pinned.json": { + "mode": 420, + "sha256": "2d4f108b8ac6b1e582382ac25d53f354c293e7caf390b8462d15beaf8e43e01c" + }, + "verify/results/turncommands/cb-turn1to2-pinned.tcb": { + "mode": 420, + "sha256": "28ebfecc3495cc4f5b2892e420cb1b83f3cbdb6b7aabe107f4b1d18233a06094" + }, + "verify/results/turncommands/cb-turn1to2-run1.json": { + "mode": 420, + "sha256": "c9de70196af5453df15cfebcb92c973dfed9d54ffa0dc0a397839cf951ac9b58" + }, + "verify/results/turncommands/cb-turn1to2-run1.tcb": { + "mode": 420, + "sha256": "5cdcfb3ade6cdfb2c00c234f5535c791780230f520d27be14f617462347b4948" + }, + "verify/results/turncommands/cb-turn2to3.json": { + "mode": 420, + "sha256": "8a0d4fc9efae9dcb4eca0de41bf28444d79eb5a4fd4e426671a4d80ab5a46f44" + }, + "verify/results/turncommands/cb-turn2to3.tcb": { + "mode": 420, + "sha256": "420a5d03f2a4ecfa0789835cc46f98961d11bbd7c7fd5f59dc28301aa0b65b6b" + }, + "verify/results/turncommands/l4-turn1to2.tcb": { + "mode": 420, + "sha256": "1b9faa7f8aad9196e36cf1c450e340f37c502a69ccfcaaad7e289bd7b4727b12" + }, + "verify/results/turncommands/l4-turn2to3.tcb": { + "mode": 420, + "sha256": "b0443f176c3915389278de608a8e7c63fa48d4777b924c0e383c7279f2a297e0" + }, + "verify/save-reader/SAVE_FORMAT.md": { + "mode": 420, + "sha256": "5ac2556b6c063c9296ef29e8514cc312983d48a8e2c2832f504c970629990b33" + }, + "verify/save-reader/fixture_joint.sav": { + "mode": 420, + "sha256": "fbe41595e50bb580786f36b197d5b85f87820974c545107c864fa2f1862af3f1" + }, + "verify/save-reader/fixture_split.sav": { + "mode": 420, + "sha256": "3909f12d021bf840617dc8d599841b64d67be46e1c6882cba7728d312d310071" + }, + "verify/save-reader/save_reader.py": { + "mode": 420, + "sha256": "2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35" + }, + "verify/save-reader/save_writer_stub.py": { + "mode": 420, + "sha256": "8343ad15f742ee1b9cd62108efbc9c4b2718c3807442e3dfcfa9513ced7d3638" + }, + "verify/save-reader/test_save_reader.py": { + "mode": 420, + "sha256": "29f609d037eed99bb5444004facbff7b2c5c36fae568e815810585fdc3ddd393" + }, + "verify/state-checksum/STATE_CHECKSUM.md": { + "mode": 420, + "sha256": "5680299a4df27e30cdb545d9d2a640caf9299d61acb662b9512589e4390954e1" + }, + "verify/state-checksum/float_census.py": { + "mode": 420, + "sha256": "a568aad8b9f38aba2474f33941550bf948d050694a1d04dc5c85d15687223ae9" + }, + "verify/state-checksum/run_validation.sh": { + "mode": 493, + "sha256": "bf84b999d2b90368703e80235bac0258b70a1c37dd1902c9205a914a59cb1fc2" + }, + "verify/state-checksum/stability_check.py": { + "mode": 420, + "sha256": "8e640561b05decf590524fbe0dbf3b76a5e2f9c7fde93e005ca6e79464c305f1" + }, + "verify/state-checksum/state_checksum.py": { + "mode": 420, + "sha256": "ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8" + }, + "verify/state-checksum/test_state_checksum.py": { + "mode": 420, + "sha256": "d0ccf8e8390fd0a5d76a8695a490d85dc7e8e415a06ec50b592c57474cc9a73b" + }, + "verify/tooling/README.md": { + "mode": 420, + "sha256": "b05249530d65d43220c1e5c4666939c360d6139ed404a8881f6ad0a9c5c27af6" + }, + "verify/tooling/fixtures.py": { + "mode": 420, + "sha256": "56cccc88b9b9468e07c9ddff39d65813098053ec9e8f00432736906389f200a7" + }, + "verify/tooling/host-tests.json": { + "mode": 420, + "sha256": "90833c99e2749ff890b16b943f43f6ebfc1a1c611f2ed1e40555426fded45c97" + }, + "verify/tooling/test_tooling.py": { + "mode": 420, + "sha256": "bb8d15960dfda13f15cffc57f3b669003b127b4dedbf34100bb4a51c29dd3c6d" + }, + "verify/traces/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/traces/ac-probe-baseline-turn15.jsonl": { + "mode": 420, + "sha256": "a2f4e410f6a8d77f7680b4a69b5b2ac2f59fa80515b0cfe8209e7fec8e4a5b6b" + }, + "verify/traces/ac-probe-turn21-turn23.jsonl": { + "mode": 420, + "sha256": "2bb9317b82744c0da36ef6d9c1a78f31ebacea49b82a18005c0cc75bad62d345" + }, + "verify/traces/ad-r1-turn28-turn29.jsonl": { + "mode": 420, + "sha256": "cde7a1e010aa6195163f3b9320aa5c496fd8c271e9648c90c7319837dd967571" + }, + "verify/traces/ap-probes8-deploy-turn15.jsonl.gz": { + "mode": 420, + "sha256": "e257d5ea3fcb4be8da570d6a5589022e6ba412ff2712f4f06832812d8859e08a" + }, + "verify/traces/ap-probes8-turn16-turn26.jsonl.gz": { + "mode": 420, + "sha256": "df4fb35d9824799d8be79f3a9e976b55b7cd0fb5488b3e12711d04eb3c320f13" + }, + "verify/traces/ar-r1-turn38-turn43.jsonl": { + "mode": 420, + "sha256": "f8653cbd1956346816897b313031c5d70898144d1c84b1c849ac37bfe3bd993c" + }, + "verify/traces/ar-r2-control-turn38-turn39.jsonl": { + "mode": 420, + "sha256": "c1068652ddf54d2ff266c1dc1ef1e69ea663f5d2a83143408f77ec782b3dd988" + }, + "verify/traces/as-probes8-turn15-turn16.jsonl.gz": { + "mode": 420, + "sha256": "024bb0663b167eb364c8e138bae0bf10403860c195bd593cb56f60281060c4e8" + }, + "verify/traces/b2-final-menu.png": { + "mode": 420, + "sha256": "5a95fe260c9cb13dad5fc6f00460819107db93f4ac89f455077ad056600f83fd" + }, + "verify/traces/b2-shim.log": { + "mode": 420, + "sha256": "c31cf01af3659b7fdf008ff44f88f67ee4016dcfb30fc4a72b4d72ea0da8e404" + }, + "verify/traces/b2-techfx-compare.jsonl": { + "mode": 420, + "sha256": "f0202f45b276db6744c80768f12695153812bc882de688cf64705ed6a52f243c" + }, + "verify/traces/b2-techfx-golden.jsonl": { + "mode": 420, + "sha256": "43639e75bd9d510ed270c9cfcbb0c9665f5a6546f748ba81eba3f015e7ca233c" + }, + "verify/traces/cr-N.jsonl.gz": { + "mode": 420, + "sha256": "0071ae72a142533ffb91f9f04caa6704102c826761ff5ae24b57a1c3e9652e46" + }, + "verify/traces/cr-R0.jsonl.gz": { + "mode": 420, + "sha256": "6228c88cebb4dad2158e5586ecbcf71d1160116f2f4a2a8bc020658da8d7d706" + }, + "verify/traces/cr-R1.jsonl.gz": { + "mode": 420, + "sha256": "73f5f15b3343381cf3f973caaf74588fd3d0b6759de1ddcf9e12b9b3ebf29713" + }, + "verify/traces/eventlive-b3-t1-5.jsonl.gz": { + "mode": 420, + "sha256": "9cb344f1d8a3beb4bc1a2bf16baed6c38667443ead9f66fa0f53474a683d263c" + }, + "verify/traces/eventlive-b3-t1.jsonl": { + "mode": 420, + "sha256": "2d9962de9a7ea7fb28b33b72209706b4a27673096f71c8789f9f10ac465f387b" + }, + "verify/traces/eventlive-b3-zuul.jsonl.gz": { + "mode": 420, + "sha256": "0ee09bb884799e72c6a617ab02e741a7ba791ff458af439b9947a87b368a64de" + }, + "verify/traces/h-probes-human-perturbed-t3-5.jsonl.gz": { + "mode": 420, + "sha256": "2567f8ccb6276a4d647c4f4b88d14f7ae63aa4d1797f672a9bd9c7c86e4d7473" + }, + "verify/traces/h-probes-human-t5.jsonl.gz": { + "mode": 420, + "sha256": "92964779111573dc72e6a1845217cd7d709c9900594a106b3de7b59c2b7a88a7" + }, + "verify/traces/h-probes-zuul-t24-25.jsonl.gz": { + "mode": 420, + "sha256": "0966294af27b49159b1e72e683abc0b59fd52cc9bfd9f517130d30cedf7efa29" + }, + "verify/traces/l3-probe-turn8-turn15.jsonl": { + "mode": 420, + "sha256": "d1b5436f917bb4f6f74bd7b1967dbd0626db2c3a5cbc1d67684ef9f010826676" + }, + "verify/traces/m1-compare.jsonl": { + "mode": 420, + "sha256": "f0f6fd15bc73008e43e20d6ed4c4dd91fb2ec8b40935bfd3cc000d8a84ea6731" + }, + "verify/traces/m1-trace-golden.jsonl": { + "mode": 420, + "sha256": "4a4ddc031fb26a8f8b10dace297c73670f53dcbd250a9be94c0e31c9bb44dcc5" + }, + "verify/traces/mf-after-compare.jsonl": { + "mode": 420, + "sha256": "2a894892977176df1a9d6c8199b0f81b48c7bcac15d2c0e7786441fc6125226e" + }, + "verify/traces/mf-before-compare.jsonl": { + "mode": 420, + "sha256": "ee005097ebaac9f30c63f1e400fdf19a47e88010c71d215885234986d122410e" + }, + "verify/traces/output-ref-turn2.jsonl.gz": { + "mode": 420, + "sha256": "7af583350545501414eda38439f2d0fa39149342d9001d2926e2a4e4fdd5cdca" + }, + "verify/traces/output-zuul-and-ref.jsonl.gz": { + "mode": 420, + "sha256": "d581cb50f07766911fa59fa1df1524b33a9df6eec06226966efd5f54f09b6fb5" + }, + "verify/traces/recap-b1-compare.jsonl.gz": { + "mode": 420, + "sha256": "0ce1c92028a8cd10a38d7cca72f90c37ccbd844f24a1950bf0eb6e75739b44e2" + }, + "verify/traces/recap-b3-compare.jsonl": { + "mode": 420, + "sha256": "6ed3bcd99b4657d614bf63cc0fc2dfff650f4cb14e51086ea98c21bccbcf5fa8" + }, + "verify/traces/recap-golden-trace.jsonl.gz": { + "mode": 420, + "sha256": "d62431e9461ffb1b66adc16a39542b86fa8e0cf54a0ed446a8781c4d75a6c3bb" + }, + "verify/traces/recap-misc-compare.jsonl": { + "mode": 420, + "sha256": "d7c4446d45a9cab2af3da4a0d76f7a42c245da1f59db96fddf31d8b1f2c436ed" + }, + "verify/traces/tailrng-drawsites.jsonl.gz": { + "mode": 420, + "sha256": "5c1806e2b1452226674013119e3b220f3cf42be2ad8b0ed998050ad65d1f8415" + }, + "verify/traces/tailrng-refturn2.jsonl.gz": { + "mode": 420, + "sha256": "c33c6cafe015bda6acf5ca32b0c9595e1611f4ac82ecd3adaff8315c7bd3e560" + }, + "verify/traces/tailrng-zuul-long.jsonl.gz": { + "mode": 420, + "sha256": "213e7dd8a6809dd93190f41c87218e802f1fbe77d44d598f287c2a19544063af" + }, + "verify/traces/tailrng-zuul-noderoute.jsonl.gz": { + "mode": 420, + "sha256": "9476ee3b9b397ca9e20bc92eb887c109a075487cdd750746af051797e8838115" + }, + "verify/traces/unlock-b3-t1-5.jsonl.gz": { + "mode": 420, + "sha256": "f6e27a60bf6c74eb98d8bec50146fe1996642285ca008c6a70c3cb148c6ba54c" + }, + "verify/traces/unlock-b3-t1.jsonl.gz": { + "mode": 420, + "sha256": "bfa53bba3e59d17dd330e38ef52fd04fd92f05f3ad357fefd77388d083b49a05" + }, + "verify/traces/unlock-b3-zuul.jsonl.gz": { + "mode": 420, + "sha256": "d94c635105a75a68cb811a3881faf371678c075d240998f48fcf348b8459063f" + } + }, + "manifest_sha256": "e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9", + "path": "/tmp/opencode/sots-final-research-re" + } + }, + "source_before": { + "engine": { + "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", + "files": { + ".gitignore": { + "mode": 420, + "sha256": "5103c9533f0d31fea29c0cc85d543692af84a697416dfa7557e31c9843210145" + }, + "AGENTS.md": { + "mode": 420, + "sha256": "7d1d4bc05c35e3354a77b3c8d5d2c04fb9d6658d09e87bc814a50bc3d2033fb7" + }, + "CLAUDE.md": { + "mode": 420, + "sha256": "15d60c3d592302a2854df8bf6d39c0a578c22b9273a633447e10b76fd76291f5" + }, + "CMakeLists.txt": { + "mode": 420, + "sha256": "6e9791511ea23bf8bf5f7f58617a7e77bbe5006829609e425e565c11c1e8d7ed" + }, + "CMakePresets.json": { + "mode": 420, + "sha256": "fcd1dfe3989ee4f56fa3e419059e1db5621922165edf05f13cfe8e5d786d8bb0" + }, + "CONTRIBUTING.md": { + "mode": 420, + "sha256": "26a381fe08feb51f861655f77de4e558f056d1dba79162a2e82513a92d0e6506" + }, + "LICENSE": { + "mode": 420, + "sha256": "eedebad43ea495111bf4451d78cb440309d90a733d6a36445699dde0629f1858" + }, + "README.md": { + "mode": 420, + "sha256": "66c2437fe4f074e6499de50b0d5f0d013bc290333f4d4bf554b541261885a0c1" + }, + "cmake/toolchain-mingw-i686.cmake": { + "mode": 420, + "sha256": "231c0b79868a77d54cc6619f0b4ea18454964a1a078806f44a6ffe3fb7741a9b" + }, + "docs/A2-alliance-and-modcount.md": { + "mode": 420, + "sha256": "0c0c45c31d5d64124f3b91a161f8a2f4732c8a5d7f6bc524baf4d59f8a191701" + }, + "docs/AC-predictions.md": { + "mode": 420, + "sha256": "ab9e41714abdbc32e620d8a2068be8ebd2fc8898ba149113c66ccda248b4bcda" + }, + "docs/B1.md": { + "mode": 420, + "sha256": "42b61bbfc135cdcd0f1a32f63164b88e67106400de7f08f543f118eccd814364" + }, + "docs/B2.md": { + "mode": 420, + "sha256": "87dfd333ee15681a3aa4de58cf1b14ff8240e75afabc05012e0f28531cb4b8b8" + }, + "docs/B3.md": { + "mode": 420, + "sha256": "fb65c41037b6cd6252c67e5244d492a3a17ea4ba2ddae821d49fe0a879528518" + }, + "docs/B4.md": { + "mode": 420, + "sha256": "22547b3d2960684e52a380fb07f43a75bf50aebf93cede689f297cf38f4a012d" + }, + "docs/B6-ship-construction.md": { + "mode": 420, + "sha256": "9c5c4fd2059af965e317c9db5b7fbfc440397ddfcdc5bf7860115f6a8a0532ab" + }, + "docs/CB-capture.md": { + "mode": 420, + "sha256": "ce45a9082588051eda7438016dc66eb28bb4afda98b82cdc20102c4ca53529f0" + }, + "docs/CB-predictions.md": { + "mode": 420, + "sha256": "ba51538b018cbb403978f97ad45d4743937d49ba55c8f15d7af8f8e4aa441f0f" + }, + "docs/E-events.md": { + "mode": 420, + "sha256": "de98795aadb1617eab91815ebc34818bef8b52c36ba18b4521170065bfd2d201" + }, + "docs/EV-events.md": { + "mode": 420, + "sha256": "e7d9536cd23f5d800dc97f68167bb738088a16136004419f28de92d7fe1bcfb9" + }, + "docs/G-wire-schema.md": { + "mode": 420, + "sha256": "19db69ae359ddbd2a0509d02f1c616f939e0428480a8bb33c81f69145323a591" + }, + "docs/G3-civilian-growth.md": { + "mode": 420, + "sha256": "38ea3a8ddc3fdca258294d949c4cd2af1a930cdd9ba612d5e8fb48bc446bdf30" + }, + "docs/H-probes.md": { + "mode": 420, + "sha256": "f23e4d4cbc8c9a3000a0a58ed994dddd95466cee1ec45e961685e86dde4dc54f" + }, + "docs/L1-predictions.md": { + "mode": 420, + "sha256": "af97dbc9f15b9c2e6f223c89bac17826056fa4f3bced3c01513c1ad4d9ac1754" + }, + "docs/L2-predictions.md": { + "mode": 420, + "sha256": "18213ce5f3375d478f266de85c38c2b04ca2ae8ab4a2023780dca161fa14f460" + }, + "docs/L3-predictions.md": { + "mode": 420, + "sha256": "d1c9c0006079f47ef0d3371f4a2c2df2fe4f08ebdad0f8a12d1b0de35b15ae7e" + }, + "docs/L4-ai-orders.md": { + "mode": 420, + "sha256": "b04127c5158a882f252b2b6e8afb2d131f0de623cc0c62c86c612af803d75835" + }, + "docs/L4-predictions.md": { + "mode": 420, + "sha256": "6a194ae336920f13d8e4a44549cbe26be959beef81cffed88ef03b3cec563e44" + }, + "docs/L5-live-verification.md": { + "mode": 420, + "sha256": "4c1abe57c516b36f383390164a362f53294feda222c623283f1e6091d8ef0ec4" + }, + "docs/M-movefleet.md": { + "mode": 420, + "sha256": "718338edb8cbe8a449793b22889776a1783d1d0ade553c03973ea45d426eb426" + }, + "docs/M0.md": { + "mode": 420, + "sha256": "e121c380612a42727e3a973d8cf50f884d660bb4b43bc494258dc1c6b6f26705" + }, + "docs/M1.md": { + "mode": 420, + "sha256": "e0a36cf109d096748e55522eb8d7a261764cbf5ab5daf9342ba903d0f2bc6704" + }, + "docs/M2.md": { + "mode": 420, + "sha256": "25f9cad74eeee40afc2117333232384e1cf387b2b9132856650234c5ba593c61" + }, + "docs/N-output-term.md": { + "mode": 420, + "sha256": "3b8317e22714ef66b35efceee6fa0f7057c37f7c6e34d93cc5047cd1dd07ecde" + }, + "docs/P-events-wiring.md": { + "mode": 420, + "sha256": "72ee81b71b4c08ae451721c785dc5e01ed4ca43ff0fd474befca09dcc41599ba" + }, + "docs/PAR-predictions.md": { + "mode": 420, + "sha256": "16e8fbbac5001db0b10d766858c0ae2ea9619f37043a0883ee46da80d4dd4846" + }, + "docs/PL-players-residual.md": { + "mode": 420, + "sha256": "9bc29bc030ee8b0e00e496b91fe8fefac15179ce9fd01c0a11a7b5b5335356dc" + }, + "docs/R-recapture.md": { + "mode": 420, + "sha256": "73c62ab20c5eca5e87e1d18aefa60a2a2acd75cbc7510d31b27a2cd4ebcec38f" + }, + "docs/RB-predictions.md": { + "mode": 420, + "sha256": "c1016781505c10aa304d4710c5389918b744ab20cbd8cb54dce462c3dc28e4e7" + }, + "docs/S-standalone.md": { + "mode": 420, + "sha256": "8979b0a9fef33a55ca15bf3ef78064e72df332033354329ff2471ad6648e4a8e" + }, + "docs/SD-predictions.md": { + "mode": 420, + "sha256": "a76a568ccac7409e3cb3acef724dbe6b618d4ec30259bce33594098daff8b6a0" + }, + "docs/SV-script-objects.md": { + "mode": 420, + "sha256": "80ebd120fa9cf5e68ac4d33117966805b917d24bc339f7d82be972a280449409" + }, + "docs/T-turn-driver.md": { + "mode": 420, + "sha256": "a4096b8223cea87ce77cc64014c489d4625ed36fd3aec1358565ca5cf91d4e1e" + }, + "docs/U-unlock.md": { + "mode": 420, + "sha256": "5cbe3d8fb4bd30d029cb2db006a4dd3c6819885f55f434afb4bc8ae79b526901" + }, + "docs/V-eventlive.md": { + "mode": 420, + "sha256": "ebd08c000f42211e87958278f03d6891475cd8557658e1a42105cf5ed45a1aa1" + }, + "docs/W2-predictions.md": { + "mode": 420, + "sha256": "9972e27467cf0fe23a358818caf7edb979de25697d3aa4b97a2135ca79fe34f5" + }, + "docs/W2-watchpoints.md": { + "mode": 420, + "sha256": "f8634c5f977b2ca9b2e07df105cba09adacaeb6fb4cf046e41e5e1e42b83b107" + }, + "docs/W3-predictions.md": { + "mode": 420, + "sha256": "211cedc2d924bcf47cbb73166b408e9a27d795863ffc90aa2adbb85beeadffcf" + }, + "docs/W3-watchpoints.md": { + "mode": 420, + "sha256": "568e818e66d95f9079a1270c4d9b900c7eecfd5b5a3b4ba5a4aa0c843666f061" + }, + "docs/Y-standalone-rng-and-tail.md": { + "mode": 420, + "sha256": "49d926cc505d6ba07753748366e42ec32493a15c76bfaa45b2f66f52adc57f2b" + }, + "docs/Z-tail-rng.md": { + "mode": 420, + "sha256": "3ed2b40f728bcedd663c305cce13481bad1429af03fd5215ee3189161cfbd7f1" + }, + "docs/architecture.md": { + "mode": 420, + "sha256": "ba4732eb8a4c7054df5136a72d1774e4f1e919a517a1c74e975903fdd254422f" + }, + "docs/game-data.md": { + "mode": 420, + "sha256": "2124ea3d117b4ee6f48660d9711c1b4ef844a4ba37af7cea3766914d77bd6b23" + }, + "docs/game-design.md": { + "mode": 420, + "sha256": "5b40349ad446596b534567a5683cf9ea99709d9eff231890e0f6256c755f0272" + }, + "docs/game-effects.md": { + "mode": 420, + "sha256": "e1e0abc162602daaac255fe44b11c511adf45d4ef5fa188268411829b0817e5d" + }, + "docs/game-sim.md": { + "mode": 420, + "sha256": "d1e14770d252fd2f320a7baa1ad54c90d955cfc840f477d1700cfbbadcec730e" + }, + "docs/harness-audit.md": { + "mode": 420, + "sha256": "931d92cc744ec6ca3d961fbe7fe96dcab28060446058eb78be9835ebbce73ed0" + }, + "docs/mars-parse.md": { + "mode": 420, + "sha256": "d9fa3029ade4f9401c59fb88f4520a1ef3af9a9c6f2bb5d1a0ebfa1d5061d6dd" + }, + "docs/mars-rng.md": { + "mode": 420, + "sha256": "f2a01b88f105d07d0d0d514430e76da7632e5c8e4e3bbd6c99a25f1dc5daa89c" + }, + "docs/mars-stream.md": { + "mode": 420, + "sha256": "61a16c9b7c143b4bc2edee473cf1f8bd06c1a5144c120bc563e5ec6d770dd0e7" + }, + "docs/mars-text.md": { + "mode": 420, + "sha256": "2b6c7d2eecbb684160e7565d1d7224eb0d2f7e9a41f4d807095a182ea605dcf1" + }, + "docs/mars-vfs.md": { + "mode": 420, + "sha256": "1508c2a070d56f4fdabac3c2ef1fd08d3f93d7a3045d59158340ee22a6ff1b62" + }, + "docs/shim-trace.md": { + "mode": 420, + "sha256": "8a059c1ba761b366449c2db8ef248656da917050ed28855c6d812ecf91672fa5" + }, + "include/generated/sots_addresses.h": { + "mode": 420, + "sha256": "fc34ac4ee8cc7fea91c447b5715841dc6d3afe36f9aff04e88b6c29b5b64f448" + }, + "include/generated/sots_stream_schema.h": { + "mode": 420, + "sha256": "13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c" + }, + "opencode.json": { + "mode": 420, + "sha256": "9af560c2a49945e964beb689649c13775e2aaaf691af270a565d6c6826f76c15" + }, + "src/app/CMakeLists.txt": { + "mode": 420, + "sha256": "142999eded2ff494745ce550af76a8f8caf0269ad22d6d5650e7a79c19d22717" + }, + "src/app/alliance.cpp": { + "mode": 420, + "sha256": "37d6e57f7ce82a69a595cf474e7be7a544efef210f960e9cdfeab6168826bac9" + }, + "src/app/alliance.h": { + "mode": 420, + "sha256": "08fa8dc96286c7cb15a90a987fa22b17e195522e642ab8303b659ca58739eafd" + }, + "src/app/command_replay.cpp": { + "mode": 420, + "sha256": "739059930cd3a5f1d988522ff50c60d8657664a66c9fe19b019833f417b55824" + }, + "src/app/command_replay.h": { + "mode": 420, + "sha256": "956429a742554cada2124de49c6955e27b0e5d68db87dcc95b22c75ec7bd93c2" + }, + "src/app/construction_phase.cpp": { + "mode": 420, + "sha256": "025cd0ea1a7badd567f7f1cd59330b1e01149b5c5094575fbd438683658bb0df" + }, + "src/app/construction_phase.h": { + "mode": 420, + "sha256": "a4d39994096683a1144eb20282b205cf71e2045873cc15b53bdac214ab1e9a5e" + }, + "src/app/event_phase.cpp": { + "mode": 420, + "sha256": "80717fa7c7f108004d5250f12b6c994752a1a55d7f32c7d3ebf29f2869118c90" + }, + "src/app/event_phase.h": { + "mode": 420, + "sha256": "54077268fe4705270dc06bdc46a6fd9384fb5e0d36da19e55ea149b478d8cf34" + }, + "src/app/growth_phase.cpp": { + "mode": 420, + "sha256": "5924d2641fc98d902b56a3e6417d7a57d70c1564718951b098e7d14376ebc4e3" + }, + "src/app/growth_phase.h": { + "mode": 420, + "sha256": "8222ef811abff161c8f891a331a52e527de54fbf468949d1e0e188adc473ae3b" + }, + "src/app/main.cpp": { + "mode": 420, + "sha256": "adfd7dd177439bfd57509532bcf0f37779281ae9309daa93efe1ada3ef3f57a7" + }, + "src/app/observed_phase.cpp": { + "mode": 420, + "sha256": "31fb99678d60de6901b4bb1b251abe2421453264653cf5f7bd297a376c2b23f3" + }, + "src/app/observed_phase.h": { + "mode": 420, + "sha256": "f88fc22a5cb21a43e196d7fae09446126635d3284e6b398bca234f265234b693" + }, + "src/app/phase_catalog.cpp": { + "mode": 420, + "sha256": "e3da16e6d499b7836953251d940ce171792ada208156ca583277298f305fc316" + }, + "src/app/phase_catalog.h": { + "mode": 420, + "sha256": "da6fff506002079d8277358d0095981dc260449dc19677a533ef25ab709aed87" + }, + "src/app/report.cpp": { + "mode": 420, + "sha256": "da3feb6043f6e68cb9ea763f7242ac153a5944c59f448284faf34c64ad6b9228" + }, + "src/app/report.h": { + "mode": 420, + "sha256": "0495d164458ddb7187ce3105f82cee06cf9cf6c5b73ed8cb6e434e1d2e0f8481" + }, + "src/app/script_phase.cpp": { + "mode": 420, + "sha256": "61eeeeb7eac3145cee938ccfc564b231b6968ce7926fb9599c136134f0d5ea91" + }, + "src/app/script_phase.h": { + "mode": 420, + "sha256": "e52006ff939fa945870fafdc2412ba67e3d5e1cc2aa51c0ca0a884ce630aa1b7" + }, + "src/app/trade_raid.cpp": { + "mode": 420, + "sha256": "07d6bb904e655bb644ff6df2e417adb448487bb67acb62240ec5ecc978eabebf" + }, + "src/app/trade_raid.h": { + "mode": 420, + "sha256": "10e0b1460eb7810f1fcd61e67d47333373f06bdacf5a11372958a84a91084e52" + }, + "src/app/treaty.cpp": { + "mode": 420, + "sha256": "317463fc0e2a6ca7eaa4e2f096c3821655a4623de4085af44d951ed500837575" + }, + "src/app/treaty.h": { + "mode": 420, + "sha256": "836395a85868cbd6b7fda8f1d304128fd7cc6952aff37003e8e119a5ce0251f9" + }, + "src/app/turn.cpp": { + "mode": 420, + "sha256": "a626ddf80a340de50b70f09bf91c0180d255c533e65edce1532d807fcf5109b4" + }, + "src/app/turn.h": { + "mode": 420, + "sha256": "85c87aab5c5b5ad5a6a34cc9db710b1cf77dec1a7145ba1e0b5e17fff9a6a237" + }, + "src/app/turn_record.cpp": { + "mode": 420, + "sha256": "e1eb0b253e964ab4f8be1333f81e193ac64109544da384cbdf21858cbf931e4d" + }, + "src/app/turn_record.h": { + "mode": 420, + "sha256": "78d8d2948bd04bff5e7d2c55955b726f1cd7552a765e608e390209e03856f76d" + }, + "src/app/visibility_phase.cpp": { + "mode": 420, + "sha256": "34d9df699af3e57823ec8457c442408da854028f9b95db5820171caad0823131" + }, + "src/app/visibility_phase.h": { + "mode": 420, + "sha256": "60db50f5b98c5edafc86a33f982a7773acc291c1a18f9cf23323e53ebadcde27" + }, + "src/game/ai/CMakeLists.txt": { + "mode": 420, + "sha256": "f51509a2699f02ecab9faa1f75feaa38c299e6bbbe08bfbe5e8e86722037f6eb" + }, + "src/game/ai/agent.cpp": { + "mode": 420, + "sha256": "e1bbddc3deb797d62ae9c2b24bc811ec9379699992dd838694bd5eadc73feef7" + }, + "src/game/ai/agent.h": { + "mode": 420, + "sha256": "48aa26f32d52a3f8f4e37ed5c6986b1e87a8fe1e780d5314514eb5c75b8bc244" + }, + "src/game/ai/apply_order.cpp": { + "mode": 420, + "sha256": "122ffea1090382fd01bc505fd30c59557dfec2c9846609d00da6e80109da2253" + }, + "src/game/ai/apply_order.h": { + "mode": 420, + "sha256": "a3b7a1ca26243ba0fdd801b78978175db6f76e297a72876fa0a35e12f38e09b3" + }, + "src/game/ai/command_capture.cpp": { + "mode": 420, + "sha256": "cb9a1d37af9f66e78d368e03aeabec01e4d48f76aaa30348a51f4c70a915e4ec" + }, + "src/game/ai/command_capture.h": { + "mode": 420, + "sha256": "921599e5b2aa8b773db00134618efde687c7d9ba739abd787ec7666f4cfeb78f" + }, + "src/game/ai/orders.cpp": { + "mode": 420, + "sha256": "1b775eb1a030bc6e81e5b7702cbf8ad56288860276e8a0475da66f7367542640" + }, + "src/game/ai/orders.h": { + "mode": 420, + "sha256": "c2a3b8fe1a7c46a1c1104bc87be8696d9f0782cc304d27cb96d0ec6b182f12ae" + }, + "src/game/ai/tasks.cpp": { + "mode": 420, + "sha256": "b05878ccd94c375aac8723c8ea9499f77b98fb94acc5a75a15fa1948dbe83c76" + }, + "src/game/ai/tasks.h": { + "mode": 420, + "sha256": "b1de4f89c1679ccfdeaa8b852cb2ce407b71dcd1bffacf97df389a69f6ae3a5d" + }, + "src/game/ai/turn_order.cpp": { + "mode": 420, + "sha256": "858b12c51c4509e16a22a6c080d1c6b47bd23d2b8a11f84a48d34f24c4635f22" + }, + "src/game/ai/turn_order.h": { + "mode": 420, + "sha256": "3e76710928fc2df52fd8312abfb8f23a2ce162f8e0856f46672a4f46b5b4384f" + }, + "src/game/combat/CMakeLists.txt": { + "mode": 420, + "sha256": "4b3a05c45360e312d6c1d96c1f05a60437d19d2046257835e0d6c70ecc4ce115" + }, + "src/game/combat/retreat.cpp": { + "mode": 420, + "sha256": "eede86a4d25289dfc9132d5776b11114a109179e5aa10f2b985035e5b22d7a1f" + }, + "src/game/combat/retreat.h": { + "mode": 420, + "sha256": "5fc3e002a5f1944f29c74f862ff942b894e40e88afafd52358373ada36644d7d" + }, + "src/game/config/CMakeLists.txt": { + "mode": 420, + "sha256": "c746021654505c92be333cefb9df994431679d40d8d654b937feb950684830f7" + }, + "src/game/config/config_loader.cpp": { + "mode": 420, + "sha256": "d903ba06747e5b7d66400d03ee1f0a9896bf4268bb200dec0b5c8599dbd3d3a1" + }, + "src/game/config/config_loader.h": { + "mode": 420, + "sha256": "fda71dee1a4e2b896760e9ac344768e176ea4f0a08609c7d651033a1ee698085" + }, + "src/game/config/manifest_loader.cpp": { + "mode": 420, + "sha256": "dbe33dc5ae03db18f3b2c01b48cc1fced10f2cca599270c0a028321a7d7dd7c6" + }, + "src/game/config/manifest_loader.h": { + "mode": 420, + "sha256": "68e508b9e6d1222d980b22ae826b127693fdf0821b6539ed9e62a8ec031aa5b5" + }, + "src/game/config/msvc_sort.h": { + "mode": 420, + "sha256": "17fcb13bb49a634c80be38299617c6c16fd8addedfa88c53d67242c90b811716" + }, + "src/game/data/CMakeLists.txt": { + "mode": 420, + "sha256": "677ba0dd0ebb8176f4e7c41d5550f2ccedd56d49e7e4acb1eb0a7970e9e98a51" + }, + "src/game/data/block.cpp": { + "mode": 420, + "sha256": "f61312708c715ce525ed1a01e71f1446d31fc96ca1cc51f5bd863cac51702200" + }, + "src/game/data/block.h": { + "mode": 420, + "sha256": "f14155dfca5fd270ad6b4d462458aa8cd5c5edf5e19da4df492ee2907e99eccc" + }, + "src/game/data/catalog.cpp": { + "mode": 420, + "sha256": "7799ad3b31d43236cacbc51c3ab086265927f98b1346005a8adfed2796178ebc" + }, + "src/game/data/catalog.h": { + "mode": 420, + "sha256": "80223146bcdbf4808776f974df7e5f46b120a021979a22f50b5ce2d74ec16d6e" + }, + "src/game/data/common.cpp": { + "mode": 420, + "sha256": "e58ba046844be11c61f7f7e501829b48b4f16e7c0ab78f10fcf9189c133cf040" + }, + "src/game/data/common.h": { + "mode": 420, + "sha256": "d1ac8375c1be133a98a383e01598f393f194e1bd9790d1c1230bc6121a45a187" + }, + "src/game/data/fields.h": { + "mode": 420, + "sha256": "4209df368ad776b3c24350246acf47ad874fcbbe292fb16f9ca7dacaef2f08fb" + }, + "src/game/data/shipsection.cpp": { + "mode": 420, + "sha256": "82d5ba9be2a446e50934b0b9a03b16839bd3acd1a967d9441180a1baaa271264" + }, + "src/game/data/shipsection.h": { + "mode": 420, + "sha256": "bcf100f83691226c4993dd7866b67a0b48d9b4bc6841463fbf07f0f26bf9dca0" + }, + "src/game/data/strings.cpp": { + "mode": 420, + "sha256": "6d983d3a4cb4284215301409587136fb765a5e6a4c9f4b988e01d710c0815f59" + }, + "src/game/data/strings.h": { + "mode": 420, + "sha256": "fb292bd472ed68eb4a5e93484f3f92d8a0ae8661e6a61ca4b417ab889c508055" + }, + "src/game/data/techtree.cpp": { + "mode": 420, + "sha256": "2ac6e39faeef808c97375f3b8a3ee219fcab8cc09921f0ed8d82eef7374eb9ea" + }, + "src/game/data/techtree.h": { + "mode": 420, + "sha256": "504946c255405ab28d20d0ed6c095b3b63f0e6865afe0e8bb0707e607c363007" + }, + "src/game/data/turrets.cpp": { + "mode": 420, + "sha256": "ce7db50ef10825e168fee2bf57c4b6038dd1a356be7ada9ed6a4f6a4f31b07a4" + }, + "src/game/data/turrets.h": { + "mode": 420, + "sha256": "f01603ad32b0ffdf891c88cc54c39a725c6a436f8dda79ac23e7505e59853c64" + }, + "src/game/data/weapon.cpp": { + "mode": 420, + "sha256": "accb5aab2081babb26443cd257f292909e19440c40346e098144148922f5d3f6" + }, + "src/game/data/weapon.h": { + "mode": 420, + "sha256": "63aeb670ae7b8a1fd6daa35ed60ebe41a87f62a6ec2a12f44b13f9052c55b009" + }, + "src/game/design/CMakeLists.txt": { + "mode": 420, + "sha256": "42692f7917d99fb5b9e392c2d0f1d908b2bc5c61fc2e5687fddbd665dafe0bef" + }, + "src/game/design/defaults.cpp": { + "mode": 420, + "sha256": "8efa0b79646525375739a1acfe77e75d5ae6b669d1ecaa01f49f3f5183caf528" + }, + "src/game/design/defaults.h": { + "mode": 420, + "sha256": "20af056628f362a4d5ad7ba6277135697718197ec6844ae0ae85bf06d4cd818b" + }, + "src/game/design/design.cpp": { + "mode": 420, + "sha256": "e166281c52a6d92fed8810b38bd736cbd2a324f15d290a39a539d01ff35ead20" + }, + "src/game/design/design.h": { + "mode": 420, + "sha256": "7e936c78ca10c3a49470da67f1659cf4ee323d14d50b5b2c1ada08edfa8f6997" + }, + "src/game/design/hull.cpp": { + "mode": 420, + "sha256": "554b0ef6955ac230c7eca29ea2d94d60b5fbc91f34d9ff457091577c8602268a" + }, + "src/game/design/hull.h": { + "mode": 420, + "sha256": "997018e59c9d78ee1da7e7cb9561b94b76befacbe348a4ce3301c5f22b582461" + }, + "src/game/design/rules.cpp": { + "mode": 420, + "sha256": "a623984f9ab40c354320051fec00bab2c7e3728c2c90082b3b8051294b906319" + }, + "src/game/design/rules.h": { + "mode": 420, + "sha256": "70a8a42fe82e9805cbb957717688ab9f9eb3438226f6e0d696ef5f7a51529229" + }, + "src/game/design/stats.cpp": { + "mode": 420, + "sha256": "c05f420a00026289be8693c0d80bbd2354ce354a91a78459cfc8e70467326c54" + }, + "src/game/design/stats.h": { + "mode": 420, + "sha256": "ba0a5d3bcc98f5c3e64579d42da70bfdf563773ce2fe1e6bfa2b36b14c453fe5" + }, + "src/game/effects/CMakeLists.txt": { + "mode": 420, + "sha256": "2e20f138f98bc69653c8360a26f99f3f43f35beedea5e90dfd7e9721e7550f89" + }, + "src/game/effects/tech_effects.cpp": { + "mode": 420, + "sha256": "40358c2af37543ca3ab09b4d0433cdb4b0d2d212b45f648739cc86e979501604" + }, + "src/game/effects/tech_effects.h": { + "mode": 420, + "sha256": "ef70addf2caf1e3abf36ac9d878a8db37d2adbac370957f5b6a0b5825564a0d6" + }, + "src/game/effects/tech_id.cpp": { + "mode": 420, + "sha256": "11cd652e81a52e86d72541a5c3de77bb50de3d31226272e0d1856e5a15b7f9a6" + }, + "src/game/effects/tech_id.h": { + "mode": 420, + "sha256": "f37752250c80c9c75ef8e144e4646dc1290a2cc8ce72d9a37949c6408996df86" + }, + "src/game/events/CMakeLists.txt": { + "mode": 420, + "sha256": "9b1f14a3801a991ba065e0e39ae2e3fa3966018e8a98fcceeddeaca3909328e2" + }, + "src/game/events/event_log.cpp": { + "mode": 420, + "sha256": "3b131879ec5e81cd1ba2bb0cbdfa6e05775ed77684f4ed7a8f5cfae87da1e7b1" + }, + "src/game/events/event_log.h": { + "mode": 420, + "sha256": "2ff415b1120ca3f28421006a566280fb977027cfa3f209bdba0986350376a953" + }, + "src/game/events/research_events.cpp": { + "mode": 420, + "sha256": "9520b20eba2a2b4bd5925f13b420d526fc610d06aae7ffad314e3002c4f5a253" + }, + "src/game/events/research_events.h": { + "mode": 420, + "sha256": "b87340c6b14e9de97e5bc0c5a4cbd74e54bab2831c60edf88c0e42ff5218ea22" + }, + "src/game/nav/CMakeLists.txt": { + "mode": 420, + "sha256": "79cc0ba25c6d49f7784663ace033d01ab3d85a5d8015fe2f466f8f1a3065983a" + }, + "src/game/nav/pathplan.cpp": { + "mode": 420, + "sha256": "04cfe8fca5be565f5443c8f1402eb0072221dbd63f70855e35b3eeea752f1775" + }, + "src/game/nav/pathplan.h": { + "mode": 420, + "sha256": "28b51f737b458679888e555d985b9e8d41adf8ba91fa0980b5e83668758c86e7" + }, + "src/game/sim/CMakeLists.txt": { + "mode": 420, + "sha256": "4b3085116f88c903a137abef6806891f7b7245dcb031153df7a5465dd2521116" + }, + "src/game/sim/colony.cpp": { + "mode": 420, + "sha256": "e0f0bf15d87b6ac2e92053cbfe0869c0dbf9465d90a9bae5456bb46883423b77" + }, + "src/game/sim/colony.h": { + "mode": 420, + "sha256": "357dce21440140a6cf836a3c12175ebb5bb6706c37d5ecd315a4ee4937725b47" + }, + "src/game/sim/construction.cpp": { + "mode": 420, + "sha256": "8cf4792f487162ca3599f16f0e92d73b4c9549046044548c5aecf202dd564130" + }, + "src/game/sim/construction.h": { + "mode": 420, + "sha256": "a7f201101ad704f1994f809259ad60f780760fa36174d99a1ccd9299447f5460" + }, + "src/game/sim/economy.cpp": { + "mode": 420, + "sha256": "1e0b17b589496a6139e8ca10fe20553050be7c965a02daf8b520dd5020412d89" + }, + "src/game/sim/economy.h": { + "mode": 420, + "sha256": "6f3e33e803bb49367d4cee3c8ef6186f04b79e7cf901047fc48d933108ab6d2a" + }, + "src/game/sim/movement.cpp": { + "mode": 420, + "sha256": "80c64b2148304b84683cf3860ced1354f5c29c923bbc50cc5001030dd85c2cd2" + }, + "src/game/sim/movement.h": { + "mode": 420, + "sha256": "9a6b2b4960428634d8004cd5694ed6a7a10ab28fd9c0e2a9824ede3e201e9441" + }, + "src/game/sim/numeric.h": { + "mode": 420, + "sha256": "88f715192ea322ace4eea13ab5ae55f7f41600262025208e468b5259220522c2" + }, + "src/game/sim/observed.cpp": { + "mode": 420, + "sha256": "43d29a9fe1195dcc0b7e6101ea05bfd076f03636f9f68de473539c83db0ddd22" + }, + "src/game/sim/observed.h": { + "mode": 420, + "sha256": "0224b5bf341f30ff0e98d910547261b6732bdc0c5339b520e26fc51939c1269f" + }, + "src/game/sim/player_turn.cpp": { + "mode": 420, + "sha256": "beb1b2ed434df3727e676ac56e751beff87fa98e4a42e4657cc54d41025773a2" + }, + "src/game/sim/player_turn.h": { + "mode": 420, + "sha256": "f24f8f5e161486575cd341c2f5bfed46fa6983263edcf2320e9c24860b4be51a" + }, + "src/game/sim/research.cpp": { + "mode": 420, + "sha256": "95f2d325544ee018ec8d0f945e91b4172f6ba406f95e19f86c4fb9aac6b22a89" + }, + "src/game/sim/research.h": { + "mode": 420, + "sha256": "e27a311e977afb2e01242938dc8d928e9a67d1f761965e191cf907e05c1c86e9" + }, + "src/game/sim/rng.h": { + "mode": 420, + "sha256": "f7e5bbced3dbd37deb49a00b52d05f7c751501d654dabd645ecff7447355929c" + }, + "src/game/sim/scriptobjects.cpp": { + "mode": 420, + "sha256": "a4f9a1b49e4ba22a88726efbbea2f355b40a3c006734d9150d509a344720a4d2" + }, + "src/game/sim/scriptobjects.h": { + "mode": 420, + "sha256": "210d0eb51780df70a9bca133664429589c03ea33e4524e2c182801d4b4a5c74b" + }, + "src/game/sim/species.h": { + "mode": 420, + "sha256": "83b44c0600b99c5acb72a3484bb0708cfba765cdf594aede596a3c47d5ee6298" + }, + "src/game/sim/techgraph.cpp": { + "mode": 420, + "sha256": "81f8f1120eb1fa4a77752bd2e0917df3dd76372461416526ae510bd697944ef8" + }, + "src/game/sim/techgraph.h": { + "mode": 420, + "sha256": "b2fc90666080a6b7f27dc9290eef17774d57742c2a1f9e1f77d94c7fa5689f6e" + }, + "src/game/sim/tuning.h": { + "mode": 420, + "sha256": "4acfad4098de951cc3a94ca25a2f200e96caba1836bf7441de5a2b458c022194" + }, + "src/game/sim/visibility.cpp": { + "mode": 420, + "sha256": "25f86a34f9a98d2439672283a446ba1804973dae3f6d9aa3692342b05f3a3ac0" + }, + "src/game/sim/visibility.h": { + "mode": 420, + "sha256": "783896489a2a9ec8bce617b141bfb631e8ef92f958be7b5c2ca64fd75774471f" + }, + "src/mars/parse/CMakeLists.txt": { + "mode": 420, + "sha256": "76c290b786a3e73387ec8c574fd5a0dbeb6e629adbe970426314f16497f59fa9" + }, + "src/mars/parse/blocks.cpp": { + "mode": 420, + "sha256": "e60baa8127b21cf6eb6c8e2aa02c6a72c6403dbc29e8480ff658bf184266675b" + }, + "src/mars/parse/blocks.h": { + "mode": 420, + "sha256": "1e8b76919a584d1d7fb01c5ff5e3a7173e8456eca892d61f0c6b7bb8f02f33b1" + }, + "src/mars/parse/effect.cpp": { + "mode": 420, + "sha256": "beb76a841a3d42dbc157413384ff1a0312a7068d6b22020eadcee2e1cbbc81f9" + }, + "src/mars/parse/effect.h": { + "mode": 420, + "sha256": "aaa5c83f2d8eef24667bf05d0f71b2a346f2fce09dc9a45d7a5197c894922e44" + }, + "src/mars/parse/result.h": { + "mode": 420, + "sha256": "58cff456e353550abcd0f52e031d9d70f2b7a975f4762cfccc64eb6bc748dbd9" + }, + "src/mars/parse/script.h": { + "mode": 420, + "sha256": "69a493268c47a08672694489a51c3ff0a7f9aa870e5ae5a93d47ba033cf21ad3" + }, + "src/mars/parse/value.cpp": { + "mode": 420, + "sha256": "712133e4d725649f5461e6a46bac6842b0751ac3fb7e1c468f826638ec58f623" + }, + "src/mars/parse/value.h": { + "mode": 420, + "sha256": "60d692648dab7e3e216c8d9e6ef212592ba1df1a98260b1b4599354742947b38" + }, + "src/mars/rng/CMakeLists.txt": { + "mode": 420, + "sha256": "dceb4bc0fb35c95a12ed9aa36380e79aa75641b15ecc06e4289d39824087e2dc" + }, + "src/mars/rng/mt19937.cpp": { + "mode": 420, + "sha256": "0c60775e9437b8eaad49f67a96001c81947c8d9e6d2472e28b2b490515bac95b" + }, + "src/mars/rng/mt19937.h": { + "mode": 420, + "sha256": "300836ab26fd1a4d913b395f08770bb2c248029ef1b80ecbf0c4d886adca2b8e" + }, + "src/mars/stream/CMakeLists.txt": { + "mode": 420, + "sha256": "95ffbb0c519e55b7423ab048a3019e295b7ef3a3e9506044ef2e68569df9601a" + }, + "src/mars/stream/archive.h": { + "mode": 420, + "sha256": "84d9ae2bb3d6f444b3933b3816cafd12caee8619d2219f19cd10d32cfad01d2e" + }, + "src/mars/stream/bytes.h": { + "mode": 420, + "sha256": "9f5869952c9d6b925db32995a417ba292a0c1a672fc3850400150afb8163b3f1" + }, + "src/mars/stream/dump.cpp": { + "mode": 420, + "sha256": "1b5bba86b2f85b1718276f8db557601320ab8a165d5fbfe93e51219cca5a1c16" + }, + "src/mars/stream/dump.h": { + "mode": 420, + "sha256": "a69af300ae7083fb0a5362edbe7eecd5273c8807884aff9fbedd7ae606c7fc4f" + }, + "src/mars/stream/gzip.cpp": { + "mode": 420, + "sha256": "20d71fd50bd637f78e7ebb5217bc6607ebc257535cc4720e640e4badb72f1644" + }, + "src/mars/stream/gzip.h": { + "mode": 420, + "sha256": "6bce52c615eb120999adb1a6f7f06baa813a033c28e02e6d79ce77f5b7a929c9" + }, + "src/mars/stream/node.h": { + "mode": 420, + "sha256": "eb43054c8592db107557979c7fc8612dc0646ba5d62f154b9b7f96a37ba2e860" + }, + "src/mars/stream/probe.h": { + "mode": 420, + "sha256": "6411d0976d1e785e8c32af6ecfe1a797c0a9aa02314e5e42fae3ed7b3449ae13" + }, + "src/mars/stream/reader.cpp": { + "mode": 420, + "sha256": "90f19cbcdb0fc50795895ea1eff09cd6c0ab3069095c49b276f3894e3d6bcbb3" + }, + "src/mars/stream/reader.h": { + "mode": 420, + "sha256": "900508d97be1cbe566d77f2c91755d3db387535cd9574e41704b6d940daa1ff4" + }, + "src/mars/stream/save.cpp": { + "mode": 420, + "sha256": "6db367b3ea570a4d0ee831160e3f44cef380f58de163b9d9205ca7449e51e049" + }, + "src/mars/stream/save.h": { + "mode": 420, + "sha256": "b3a411600d98b42e9014e1fc3cbc3eac5f32f4393e9f72036d3d840c802bb469" + }, + "src/mars/stream/savedump_main.cpp": { + "mode": 420, + "sha256": "8dc687f009d9f455e9bfa4019f03df72e058cebbb3e9ae5bcbb308285470208c" + }, + "src/mars/stream/schema.h": { + "mode": 420, + "sha256": "b1cd64bc43076a3e5893239bd2eb5c216e7293ee541322ef74fb106928183a05" + }, + "src/mars/stream/shapes.h": { + "mode": 420, + "sha256": "45ee379ff8100b6bc27427a2580d7aae19ff3d5d0aa27f682d156ae6a92d0a6d" + }, + "src/mars/stream/writer.cpp": { + "mode": 420, + "sha256": "54804b06266e34793f5294f9a96d2939d641915a0f60fc4e3b4170bfcea6e083" + }, + "src/mars/stream/writer.h": { + "mode": 420, + "sha256": "921cd44ea30e0b9944825b1d2caafc46edc8f2c23506c807050ed9208a397340" + }, + "src/mars/text/CMakeLists.txt": { + "mode": 420, + "sha256": "dccb93b37c21c9b3c3b35a50ca8de55c9f00df2a9e0a33b6c36d659a75455436" + }, + "src/mars/text/csv.cpp": { + "mode": 420, + "sha256": "b190e12b86a3f416a72c110caf9e0b2d98cdd33851d2fa48b55a8d7ea39279af" + }, + "src/mars/text/csv.h": { + "mode": 420, + "sha256": "3b7ec6d0884e95bfab869c253eddc30a802602bd1f230cc69461cb9cf3c17917" + }, + "src/mars/text/flat_kv.cpp": { + "mode": 420, + "sha256": "b98d3b7345489f0b149e56cd15436fd6199e4cf00d7ce3f8b8b31fcdecb90e47" + }, + "src/mars/text/flat_kv.h": { + "mode": 420, + "sha256": "d6765cd42cad46597b6e36e9d08baf6819f7796442293043d5ff686e2376d292" + }, + "src/mars/text/lines.h": { + "mode": 420, + "sha256": "b9a16ccf0dc7bbf36100e0b66c80bcb818590b161f820d3c67d55bccff1c2c65" + }, + "src/mars/text/manifest.cpp": { + "mode": 420, + "sha256": "4da1bb615902ec61883e561f5dd375d89442f7b9046fbc864f6308f27921087e" + }, + "src/mars/text/manifest.h": { + "mode": 420, + "sha256": "dd7351a7a6a144e97f3a3b6a25d22d1518a099e95deadb8965cedb201601e102" + }, + "src/mars/text/result.h": { + "mode": 420, + "sha256": "7f817033811dff6fcef1d5b76f88922cb0392afb4359549876cd017a14755606" + }, + "src/mars/text/value.cpp": { + "mode": 420, + "sha256": "94b433d78f3211e1a4dd9eb8a0a00b514cbeaf63a03e738146c56dbbfe221479" + }, + "src/mars/text/value.h": { + "mode": 420, + "sha256": "d3b5c70af2f339ad27b43c38353fc7a2da83388854b02000fa1b6d9a4e1dfc07" + }, + "src/mars/vfs/CMakeLists.txt": { + "mode": 420, + "sha256": "630d5d4707ef3c0f24a414815cc23158853fe9d5aef429d6619abc1c433b3786" + }, + "src/mars/vfs/path.cpp": { + "mode": 420, + "sha256": "e1f3bbab1f90b0132aec24d8c5997dafab69ec72f01f2dd2fa63c91f83ef7aeb" + }, + "src/mars/vfs/path.h": { + "mode": 420, + "sha256": "043091008f2cab7c88185de63e7aae63ad9b0e384109f5b6fd8c31666c4e2033" + }, + "src/mars/vfs/result.h": { + "mode": 420, + "sha256": "19115bf1c5b3bf01da078a49209230053043610b342b01cdaaed126e2d3ea748" + }, + "src/mars/vfs/vfs.cpp": { + "mode": 420, + "sha256": "ab8272cd14b4b55e7af13f5383d6106f0b1caabdde57e69c1d0fb5b434d31cba" + }, + "src/mars/vfs/vfs.h": { + "mode": 420, + "sha256": "2484231baa64ede6fc35eb0f49e1fd7a3373d5c559f016d5adfb9fc433619d90" + }, + "src/mars/vfs/zip_archive.cpp": { + "mode": 420, + "sha256": "d66e70300539bd42bcf193683df7c34d2b0b03146fd79f0a180385ead1559e87" + }, + "src/mars/vfs/zip_archive.h": { + "mode": 420, + "sha256": "0ffbd90f7919741e63e86e14d0f87d247bc2cd16d2db54771071553249ad935d" + }, + "src/shim/binkw32.def": { + "mode": 420, + "sha256": "fb500fd9f9ecbff44123b89fc24cec72e91fec4c4430ce12a69efc06b20de235" + }, + "src/shim/fpu_force.cpp": { + "mode": 420, + "sha256": "c4b4e41a7ef81139c652ba8164ed8bb0d809b42182f0d0f048b9a9e63bebe59d" + }, + "src/shim/fpu_force.h": { + "mode": 420, + "sha256": "75bac23bc45510961f6b10d21c47e72d8dc0d3971a3ab30b795cad1d25332c06" + }, + "src/shim/hooks/ai_orders.cpp": { + "mode": 420, + "sha256": "091ed885012fffa0e02b83c53e547483dfdeaf1094933726e0291fff0a99e434" + }, + "src/shim/hooks/ai_orders.h": { + "mode": 420, + "sha256": "6e775b3f946f2eaf10dc2e236a3f3c7b9311ed4e82cd4be1ca30e6c62d49d053" + }, + "src/shim/hooks/ai_rng.cpp": { + "mode": 420, + "sha256": "b8fec711cb620561c8f4854e72c3fb0d73013c9b1cd69fa63fc05dd3d2f60289" + }, + "src/shim/hooks/ai_rng.h": { + "mode": 420, + "sha256": "1306f4d3c8071121b06c75232efa5c50b155c1f8752fcae852ee8e5497ce7d08" + }, + "src/shim/hooks/ai_visit.cpp": { + "mode": 420, + "sha256": "cd69811074820810edb1ed3779ca08bd99fea620b162d80a0395d35e8db7fc31" + }, + "src/shim/hooks/ai_visit.h": { + "mode": 420, + "sha256": "8315b433319f680e80a154409124355ad24842e9a0cdef5c8aa6d12422971189" + }, + "src/shim/hooks/budget_inputs.cpp": { + "mode": 420, + "sha256": "fa50fb74a3874886cf8aeb4012b9fd9a5a43ce38ab3c543ee425002ca32fd46b" + }, + "src/shim/hooks/budget_inputs.h": { + "mode": 420, + "sha256": "56e2f95930ff420820a3464162fde74ac0a3ff2e1dc8b493729fed342e4a6548" + }, + "src/shim/hooks/colony_inputs.cpp": { + "mode": 420, + "sha256": "7aa9191ec6292d765fd06c99ff1f2ae2e09a65fb1f238dd2727f28bd465dd46e" + }, + "src/shim/hooks/colony_inputs.h": { + "mode": 420, + "sha256": "87ec765e14106631e3f6423450e6e01d5bb21060fa91f83c267db215ef4986d9" + }, + "src/shim/hooks/colony_turn.cpp": { + "mode": 420, + "sha256": "b82616c7b9b05e96e7f4c40d853c686884b517a5424413686d61799df9d45420" + }, + "src/shim/hooks/colony_turn.h": { + "mode": 420, + "sha256": "a9013cc2e92998ff56ac0c8cc36dc42033fbe3072ee88b86882a1dd4dd0357d6" + }, + "src/shim/hooks/compute_budget.cpp": { + "mode": 420, + "sha256": "76a24f0daf1f49cfabbed13753c65754e26bfcc4f672791b37e926f82b5c1906" + }, + "src/shim/hooks/compute_budget.h": { + "mode": 420, + "sha256": "f308717e44e12151cfb20a6a0cf11ff8e99ecc9c17ef04783198feed05a24caa" + }, + "src/shim/hooks/dictionaries.cpp": { + "mode": 420, + "sha256": "b60794256c07964eb89d5295ecb711b402112fe5f982a9215dc3a304d03a567b" + }, + "src/shim/hooks/dictionaries.h": { + "mode": 420, + "sha256": "ac68fd66eb343d40ee97d6bf29c8b54f5d469a9ef8862687ae15e6ad8bdafdc0" + }, + "src/shim/hooks/draw_sites.cpp": { + "mode": 420, + "sha256": "e7a1fa40262db2ed22b1dfa5ca1bd2588da07bfbab046f23afa8e86c03814d79" + }, + "src/shim/hooks/draw_sites.h": { + "mode": 420, + "sha256": "0021323e918d464223d03b969d0e6992a0efac23ba84a31af901cf2ac74e9b13" + }, + "src/shim/hooks/event_inputs.cpp": { + "mode": 420, + "sha256": "eeb9cc87ef5c39994b7f25d5ccfe220c4775b32a4b11471b0fc0fb81fca4362b" + }, + "src/shim/hooks/event_inputs.h": { + "mode": 420, + "sha256": "c0e74aed8756b3de8ebbe5ab3d70cfa6282403efefc2d795e8f0b1b4cd44d731" + }, + "src/shim/hooks/fleet_movement.cpp": { + "mode": 420, + "sha256": "f01ae7f64b1d545089b002b79c9986d2a39b97ad3995c88a8b71fa05eedb90f0" + }, + "src/shim/hooks/fleet_movement.h": { + "mode": 420, + "sha256": "dbbfe50afaedad63ec45881819aa5de3907cdb411ddf8d1d3e6a5f9a386dc8af" + }, + "src/shim/hooks/global_consts.cpp": { + "mode": 420, + "sha256": "87a51601e1a7d963bf841ca4e892aa79de789a050f5d783c7b5d8bbc2e96a9a1" + }, + "src/shim/hooks/global_consts.h": { + "mode": 420, + "sha256": "b6ac4265ec1f02f11c342536dbc9970c13761ea68aec0a5962d0f4cd6aa5d265" + }, + "src/shim/hooks/movement_inputs.cpp": { + "mode": 420, + "sha256": "0e23f86e4a8ed6c292aea8e45512931cdd06742f25c5e0d175bf0ed3b2217502" + }, + "src/shim/hooks/movement_inputs.h": { + "mode": 420, + "sha256": "32904786cbb122c3c8c36faf6bd9ea5ade4cd8395e74199ec08dbcdb8019b66a" + }, + "src/shim/hooks/player_turn.cpp": { + "mode": 420, + "sha256": "33bcadd7569ad13c69f5f160423c8d469bc67725ce7b944cf4b4346fb8cc7f23" + }, + "src/shim/hooks/player_turn.h": { + "mode": 420, + "sha256": "a766a0d93f3860da6f8d1e0dcf110d6754cd8dfe67d867093f32e3d24e8ff0e0" + }, + "src/shim/hooks/player_turn_inputs.cpp": { + "mode": 420, + "sha256": "993dce2ca771a36337c9561695995a0825746563d2e84b4458de650f3e456799" + }, + "src/shim/hooks/player_turn_inputs.h": { + "mode": 420, + "sha256": "ca0d7916ca17d993aaef19be48d03076220ae15cdcc622aef52a7c6b5957ca71" + }, + "src/shim/hooks/probe_entry.cpp": { + "mode": 420, + "sha256": "5faf9cf04a2cf849d2dd54ce4ad9b812120fb99741f11e9d52fed450badf0506" + }, + "src/shim/hooks/probe_entry.h": { + "mode": 420, + "sha256": "f04f445863a6164d03bc9f6edcaa2e2b0108163241510f4c1dfcb0da7667d89f" + }, + "src/shim/hooks/research.cpp": { + "mode": 420, + "sha256": "dacd16403f1dd5be2ef2cc42f16938977bdd0ee9283d0bca647a079ee3d28e83" + }, + "src/shim/hooks/research.h": { + "mode": 420, + "sha256": "a62c4847be81ed9d10c4f5b9a876bd79898040aa11aa8764149d82db4b010a84" + }, + "src/shim/hooks/rng_ledger.cpp": { + "mode": 420, + "sha256": "119d325fcda72268bdc87f7ca7af05d059d4521c4d7d40ad7426ce070865eabb" + }, + "src/shim/hooks/rng_ledger.h": { + "mode": 420, + "sha256": "0d1e9c79e7601da921253e860c55d9b69c21e03a1014c49f1dd85fd0e5f70f30" + }, + "src/shim/hooks/system_output.cpp": { + "mode": 420, + "sha256": "93bfb7e6ca381041d1e9830f82b8d774a63c12593fc426fd3e9198c9373be3b4" + }, + "src/shim/hooks/system_output.h": { + "mode": 420, + "sha256": "62a8424c70bb8e6c3d9603ce752f6b19a3920a4a78be75718869d7dac73f3738" + }, + "src/shim/hooks/tail_rng.cpp": { + "mode": 420, + "sha256": "9b2a3923d1d837399f3486650ef0e49b502837ff7df46a12df9a9e9b0d4d9d07" + }, + "src/shim/hooks/tail_rng.h": { + "mode": 420, + "sha256": "b9585605e71364872db25c608012e94db2148f22e2e6fd40d4b590a83f3be92b" + }, + "src/shim/hooks/tech_effect_fields.cpp": { + "mode": 420, + "sha256": "4c4d558aba3ac4e1b10e0944c867911e61daea0b4ade716760546846cebcb7b3" + }, + "src/shim/hooks/tech_effect_fields.h": { + "mode": 420, + "sha256": "22b2c050f73c9de011a42dc5a52d92a1bd3b24a59f3ba3b4332d832fb1853420" + }, + "src/shim/hooks/tech_effects.cpp": { + "mode": 420, + "sha256": "2a20f01a18ed30a466e2023ae023aeed8718c680cda927d2f3b463b6dbe35714" + }, + "src/shim/hooks/tech_effects.h": { + "mode": 420, + "sha256": "ffbc4e8262146cd7764f0b9758fff01ce5d359b25a0f5d8c931313f32d035320" + }, + "src/shim/hooks/watchpoints.cpp": { + "mode": 420, + "sha256": "15c94333f22bb592129efe3fb800ea89987045f9ebbc0e6791d4397961fd727d" + }, + "src/shim/hooks/watchpoints.h": { + "mode": 420, + "sha256": "639ae42b230fb31762f50cac0422dcd5b7fda7a1a02c7739a86d1cd6eda62277" + }, + "src/shim/main.cpp": { + "mode": 420, + "sha256": "eebdac7f8f69b8b95cd290c96d41c6f3f0ed5c45ccd5de54ffc790af47083b99" + }, + "src/shim/shim.cfg": { + "mode": 420, + "sha256": "44ca58394455549150c3461cc888128a968b4f062807e19ef25b8eebf0bfd523" + }, + "src/shim/shim.cfg.b4compare": { + "mode": 420, + "sha256": "68bed5883a75132eb5e885b4750d23c1d5734c843a32a56dc7f96d2b73fdf962" + }, + "src/shim/shim.cfg.b4scout": { + "mode": 420, + "sha256": "faac0765478d88b63f371fbc307512e71fe05f2e6f97272e6e0ceb267cc6d626" + }, + "src/shim/shim.cfg.b4trace": { + "mode": 420, + "sha256": "6a89cdd3cfdf53cfbaff29278fd5d0edf156ad8a525c61624b60ddb1eb0575a1" + }, + "src/shim/shim.cfg.bupin": { + "mode": 420, + "sha256": "39d52ef1ccb18d4dea261b87d3f363ba45079022d1b9bc3531c552ef6df80ec2" + }, + "src/shim/shim.cfg.cbcapture": { + "mode": 420, + "sha256": "0939b1ea144976ded2d45ad885fa0f1ffa3d77f16cba9b4d5a9cb87623500a62" + }, + "src/shim/shim.cfg.cboff": { + "mode": 420, + "sha256": "7d5d6e2ceb7f86fd17543c9212e8547be6009f725871aadbaf6057af1f4f5484" + }, + "src/shim/shim.cfg.cbpin": { + "mode": 420, + "sha256": "72a222c025796458dc1a538eed3ea55f053ee5e3c01e5b19b802922a058d4fbe" + }, + "src/shim/shim.cfg.cbtrap": { + "mode": 420, + "sha256": "938c0893b95b576b75927d75787999c22b3424d28c8936456ea3723f62775e51" + }, + "src/shim/shim.cfg.crcompare": { + "mode": 420, + "sha256": "129031ceb358fef9e0fcee2fb42a0f20fd76d9db78f061f956bf75ce2cc51dec" + }, + "src/shim/shim.cfg.croff": { + "mode": 420, + "sha256": "f99345e7db55e695ecabf7a00fc16ced9a42e8882abfeabc8281b9a4ef26d730" + }, + "src/shim/shim.cfg.crreplace0": { + "mode": 420, + "sha256": "60c13bd76e546b4521ab4e6a7836439078e2a176a11e471e03434623153cb7d9" + }, + "src/shim/shim.cfg.crreplace1": { + "mode": 420, + "sha256": "d27f43eb970d6a9c8a0c8d8f7071633a226c34b675a6581b331c6e1ba6f36c9b" + }, + "src/shim/shim.cfg.fpu007f": { + "mode": 420, + "sha256": "998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363" + }, + "src/shim/shim.cfg.fpu027f": { + "mode": 420, + "sha256": "f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd" + }, + "src/shim/shim.cfg.fpu127f": { + "mode": 420, + "sha256": "1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271" + }, + "src/shim/shim.cfg.fpu137f": { + "mode": 420, + "sha256": "8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9" + }, + "src/shim/shim.cfg.fpu1a7f": { + "mode": 420, + "sha256": "59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588" + }, + "src/shim/shim.cfg.fpuoff": { + "mode": 420, + "sha256": "ce637b3f0eca81c04490335cd9fe8a537cd09e5ef14cc5b3050f548ca4d54c65" + }, + "src/shim/shim.cfg.hoff": { + "mode": 420, + "sha256": "dc9b4619fe84921ea5896c2cd190afb5bd4ca89422fb86bfee8459665f92cd7a" + }, + "src/shim/shim.cfg.hp0": { + "mode": 420, + "sha256": "ede723fc540adb94bf16af0f3086c1935aac008acb6a8d550e2a4e97ff232c2c" + }, + "src/shim/shim.cfg.hp10": { + "mode": 420, + "sha256": "1c1f07dfdb7f99d63ed9a62aa9a447efda690623164beeaf434c588e02ef12cd" + }, + "src/shim/shim.cfg.hp11": { + "mode": 420, + "sha256": "36eae0d554a79b9536e3c57d2fef187ae81bd3266947c7f45035be554fb59404" + }, + "src/shim/shim.cfg.hp4": { + "mode": 420, + "sha256": "5bb0d636247c37def9b5cbf0cc9138b13590a50ae8212890fb7d31dfb9e837f4" + }, + "src/shim/shim.cfg.hp8": { + "mode": 420, + "sha256": "a8fe5f16a299b2b9eb81a811c7ec5a3b1baf635fa179a69f1e23243c7d1e2133" + }, + "src/shim/shim.cfg.hp9": { + "mode": 420, + "sha256": "765fdf337bb6942dbd1357166646dbf7fde3777678a606c4dbfd368078f09b5d" + }, + "src/shim/shim.cfg.hpall": { + "mode": 420, + "sha256": "630f99725ea6aa933984f4c545634d127787672de36f6756da2591e22a36f366" + }, + "src/shim/shim.cfg.hprobes": { + "mode": 420, + "sha256": "3bad5e3e7bf35a85acc7169d27531788e9659dbe0f8b1a0c719777fdb6beb5dc" + }, + "src/shim/shim.cfg.hprobes2": { + "mode": 420, + "sha256": "c335f1ec8aeff1165213cd40adcdcd59893c65edf95b1537fc4460e6060911c5" + }, + "src/shim/shim.cfg.l1control": { + "mode": 420, + "sha256": "c5dec81556268795b9a3df175bafde340a3fe76c7d6e05389e09e79d2b138b43" + }, + "src/shim/shim.cfg.l1hive": { + "mode": 420, + "sha256": "970ce465f2363f391a93086f1b596e904265510e02e7d2d38174cc6ea22d9b25" + }, + "src/shim/shim.cfg.l1off": { + "mode": 420, + "sha256": "a4197233c65acb876328666cf37754aea96f942b6ea08105bdfb61d6d5bcbd64" + }, + "src/shim/shim.cfg.l1seed": { + "mode": 420, + "sha256": "360af979eaa0c13eaa4db38ff13dcc64b3e2ab538300c26497921301fd3817b9" + }, + "src/shim/shim.cfg.l1snlv": { + "mode": 420, + "sha256": "3603508983a87906ecce02e4c2e9581cf2fa59390af25335f0b221765c57ef6d" + }, + "src/shim/shim.cfg.l3cont": { + "mode": 420, + "sha256": "629530a34412ebf85fc8ce8d2e5931684eea9891b6b619419e6f8db8c37f0976" + }, + "src/shim/shim.cfg.l3control": { + "mode": 420, + "sha256": "42b6ec7ebc9c83dae4a58884803f627d54956eb308611ce1e8d3691a12a74ccb" + }, + "src/shim/shim.cfg.l3probe": { + "mode": 420, + "sha256": "692dabb6f00343bfcc2f86d62ade827c295acc4630a18a1f2ddcebd53640978d" + }, + "src/shim/shim.cfg.l4control": { + "mode": 420, + "sha256": "ab13b7e3604ee98e9372e3405e0eacb6d5965e02d5317cfee0ea9b9afbd750e3" + }, + "src/shim/shim.cfg.l4dump": { + "mode": 420, + "sha256": "fb40d67d8d7dca4587a1dc13a95826ab68eb3fcf44feb6006388935f3ee346f2" + }, + "src/shim/shim.cfg.l4off": { + "mode": 420, + "sha256": "629a3e41d11daa53325f31aeb77d14d5abe67058e274d36ed8feb71e2e30dc13" + }, + "src/shim/shim.cfg.l4probes": { + "mode": 420, + "sha256": "a446ff3d6117d5352ad9b3c3c02f6d6300ce0b1089f055925afe19b77f0a20f3" + }, + "src/shim/shim.cfg.l4research": { + "mode": 420, + "sha256": "ad400f7082680db82c6fb0d39eed488710e6661f9e3215b9ea2eb0ba53444b9b" + }, + "src/shim/shim.cfg.l5budget": { + "mode": 420, + "sha256": "74df0fa1bd14fec6e8028ba05c516f3a370ba389386e5a8459d594c2c7ad83ae" + }, + "src/shim/shim.cfg.l5control": { + "mode": 420, + "sha256": "3557f716dde348a98fda65a5bad54911fe6d52f75c2cf6a82cc5d4fc47a6e968" + }, + "src/shim/shim.cfg.output": { + "mode": 420, + "sha256": "a811cffac230a1d6c0f9c5adacb1b691ae289ec08de0da3726309a4e1213acb0" + }, + "src/shim/shim.cfg.parbr": { + "mode": 420, + "sha256": "ea8230b596e7baae0c127f5700391ec2c96d546daba8c70ce8b2800c83b096dd" + }, + "src/shim/shim.cfg.parctl": { + "mode": 420, + "sha256": "2d1190d032bb705030746197020c715f4ab8af551f944e9ec0abe136912ea60d" + }, + "src/shim/shim.cfg.parorders": { + "mode": 420, + "sha256": "2107be5ec950e69d01c43ab30919fbfe652823878f150111b158927bc41de8d6" + }, + "src/shim/shim.cfg.parpin": { + "mode": 420, + "sha256": "893f1f81cdef0a964145ebb1c4b1e2725af8868b14fed412d40e3cce71f824f4" + }, + "src/shim/shim.cfg.recapb1": { + "mode": 420, + "sha256": "688840567305218dada122b29284f6af44c3c63ca173db87406de159bb547c8f" + }, + "src/shim/shim.cfg.recapb3": { + "mode": 420, + "sha256": "2120646255bd70adf29ed2880daa6b11d0867b9cfc9f1c9644d63b92c263b69b" + }, + "src/shim/shim.cfg.recapmisc": { + "mode": 420, + "sha256": "cb1f794c51b5d3d74eb91cc084c96a04444cd79f22fc694d821b51924544f595" + }, + "src/shim/shim.cfg.recaptrace": { + "mode": 420, + "sha256": "0ae410cc72fe155837d711c78543e14b1f5743310cd023298eb1e5bbd5457e71" + }, + "src/shim/shim.cfg.sdbr": { + "mode": 420, + "sha256": "7cb2bfd798ed1286628f3a879606eff076c4f6011d95e1223376eb4d0a392ca8" + }, + "src/shim/shim.cfg.sdoff": { + "mode": 420, + "sha256": "9195aeddeb2caa4e3db7dfd775c43e96eb99cfdc59a6a61e65d86fb325f0054a" + }, + "src/shim/shim.cfg.sdpin": { + "mode": 420, + "sha256": "61119f197b1dc8ddcad059d2d2c2753dae457b4bda4eb29e06c78282eeda6a0b" + }, + "src/shim/shim.cfg.sdpin2": { + "mode": 420, + "sha256": "d6d7f82b500df4f3ed120b4ff421178cf4373a145fa803e57d22a0654e4f0f63" + }, + "src/shim/shim.cfg.tturn": { + "mode": 420, + "sha256": "2ab2d64288043c3c55fde668facde9307c0739e0c801c900790e11db57c5759b" + }, + "src/shim/shim.cfg.tturncmp": { + "mode": 420, + "sha256": "114d325ae3ece29422069ee74c790603abb38c49162dd32520a3eecd18ab6061" + }, + "src/shim/shim.cfg.w2control": { + "mode": 420, + "sha256": "d042c0082a8eb4f55b8e21983df292f0950adc4ac5787d4a0b83088c10c5a3eb" + }, + "src/shim/shim.cfg.w2watch": { + "mode": 420, + "sha256": "ddb9c18a1c6b6c23758e51ca9ac18b4b95abe206b162497adc2978c0384d6ee5" + }, + "src/shim/shim.cfg.w3control": { + "mode": 420, + "sha256": "c6a3a5ea1e39a0714dffee0e44a0e8d91a2b450534d7e4377273a55b3e87de8c" + }, + "src/shim/shim.cfg.w3mod": { + "mode": 420, + "sha256": "7c7f82aaa8b5b007a740324373060ca2ba84edc765eb4e7ce55afcaba4e1c2e0" + }, + "src/shim/shim.cfg.w3tshn": { + "mode": 420, + "sha256": "51fa826d0b18d6f01987d6748e6610847ec3a761257ffc382a40d234670afec3" + }, + "src/shim/shim.cfg.zledger": { + "mode": 420, + "sha256": "31d0535aff9660eb1ad06f529c88a42aa71b83b36f8404b7541a29327c508a51" + }, + "src/shim/trace/emitter.cpp": { + "mode": 420, + "sha256": "4253cac49f0761e487fd555c3c01e02fa22e2010789ad3af37c62c8fd2e02030" + }, + "src/shim/trace/emitter.h": { + "mode": 420, + "sha256": "aa7804614b3d3a214d5c32c33ed245ae24276979080baa9d5481d6594ee3f79d" + }, + "src/shim/trace/hook.h": { + "mode": 420, + "sha256": "35be73ac1c9519664957ffea639d873e8a811b4620f0feecb21b54ea2776f800" + }, + "src/shim/trace/platform.h": { + "mode": 420, + "sha256": "f1b78d971798e45998b26c6b0e20db49fceb7d4c63f0c8c37452c6c2c6df9538" + }, + "src/shim/trace/selftest.cpp": { + "mode": 420, + "sha256": "31461ae6d329a8a3856589b245f3bcf8631f0db9a5e00530e4f94279950de354" + }, + "src/shim/trace/selftest.h": { + "mode": 420, + "sha256": "583d7a10ef04254c7a0fb7dd2a6071ad012a9a97dfae0896bbd598970b206475" + }, + "src/shim/trace/sha256.cpp": { + "mode": 420, + "sha256": "2faf44b5b273612c776204c1d83e0910d86394f4f6207129a01c81dedc170aa8" + }, + "src/shim/trace/sha256.h": { + "mode": 420, + "sha256": "31ce080acdc086ff7657d9093ac9bea438203eaa8e392ca38539152cdd15038f" + }, + "src/shim/trace/tracer.cpp": { + "mode": 420, + "sha256": "37d9490dbdedc399ecdb30f46eb27f31a4ff8c902eadb2eb48ecca7fb0e8fb88" + }, + "src/shim/trace/tracer.h": { + "mode": 420, + "sha256": "cbb80f167b8f98777f9fb58ce107226f42027ffdbd868a6808047c48caf10f76" + }, + "tests/addr_smoke.cpp": { + "mode": 420, + "sha256": "ace1ab9549bb6f3e0048d0e6e3ec6061035395581b2db46c0a5acb097c428890" + }, + "tests/app/CMakeLists.txt": { + "mode": 420, + "sha256": "dd18f8e25d2a9ce988dc226e03c7c6e02a275bbbea74f505d005e42ca5972037" + }, + "tests/app/test_alliance.cpp": { + "mode": 420, + "sha256": "671b2cb3295f360c61ee87005287999710d12e10e7e532331c1c946ab97f7c4d" + }, + "tests/app/test_catalog.cpp": { + "mode": 420, + "sha256": "c4cd9840c1f1b5d5a6829f7f1c5a0245b5e66135d3bed6410a2b6eca1a037225" + }, + "tests/app/test_command_replay.cpp": { + "mode": 420, + "sha256": "739ebeea5bed551f232774bc812bcb794cfa057015fd187529fa563b5d7ae5eb" + }, + "tests/app/test_event_phase.cpp": { + "mode": 420, + "sha256": "05498df256759fe5b8af80e9e56c2ca071eb26de0651f257798fe1641da627ca" + }, + "tests/app/test_trade_raid.cpp": { + "mode": 420, + "sha256": "2158008bc711b8062381f346fa347a430582d8d1943b0de5f40eb2a38e9a3f75" + }, + "tests/app/test_treaty.cpp": { + "mode": 420, + "sha256": "0f98150a3f9397fd12109eae7359ff7e04a4060e10e01ecf1693eb2a4606ead7" + }, + "tests/app/test_turn.cpp": { + "mode": 420, + "sha256": "6d45b1d2d065528f14ae83d95314f2b6559e53cc23f1b9e2531c7c09b4b97eab" + }, + "tests/app/test_turn_record.cpp": { + "mode": 420, + "sha256": "a845971b8d25d71c3b1138495354ad392e4fc298f87eb9b89d1567c01ab59cde" + }, + "tests/game_ai/CMakeLists.txt": { + "mode": 420, + "sha256": "a57a82d0c79ff933564e200a5b3137f120e70a19834264eeb2438c4cafd7ad3e" + }, + "tests/game_ai/test_agent.cpp": { + "mode": 420, + "sha256": "41cb3fbfc7e0b277771a2e8dd17601285a1e3a911543fc1335ce05a4e4b5f11c" + }, + "tests/game_ai/test_apply_order.cpp": { + "mode": 420, + "sha256": "8669c2e9a4c95b670a9c41262c68ce183d3cf3900bc262e0a2e33500bfffc594" + }, + "tests/game_ai/test_command_capture.cpp": { + "mode": 420, + "sha256": "8c2bae38754b347beeefe85d796c13bcf43cf5bc9bc99eb743626028b4dbd7ab" + }, + "tests/game_ai/test_live_blocks.cpp": { + "mode": 420, + "sha256": "44cb6bd8b34c13e329f9b1d50bb2a5c5513e52761537dccfb01afb7d48be7580" + }, + "tests/game_ai/test_orders.cpp": { + "mode": 420, + "sha256": "b13d1a3a628de411abb4faf024a1ce8d3e94518f12285bb3d7e7e86b012ad43f" + }, + "tests/game_ai/test_tasks.cpp": { + "mode": 420, + "sha256": "ffd8eed7fa76a24616d579a4e31031dadf43a0534e33743fb104dfca552367fc" + }, + "tests/game_ai/test_turn_order.cpp": { + "mode": 420, + "sha256": "382d6a30e9151c57849595cb134b8e2da25d2763738c9cbfa18d3cad51ecce97" + }, + "tests/game_combat/CMakeLists.txt": { + "mode": 420, + "sha256": "fd0c0dfb54033353b7014e3c764c916522cb529b6b3eae8a8d52afd044c13fe2" + }, + "tests/game_combat/test_retreat.cpp": { + "mode": 420, + "sha256": "3fb0be08d230bbd7c4ea4a59319de7ab252e5b7cbee924afd069847da8dcf73d" + }, + "tests/game_config/CMakeLists.txt": { + "mode": 420, + "sha256": "9874822d186e783f25b2dcd87495e7e380d873b8a0790c67fffb9430468094ed" + }, + "tests/game_config/manifest_tests.cpp": { + "mode": 420, + "sha256": "3bc62e7e49699254151a825421973d831b25bcf7a22028c789e3ca63b0d77319" + }, + "tests/game_config/replay_trace.cpp": { + "mode": 420, + "sha256": "83602ec974b8195c3616230ad44c2d4fd6032f8ef5f96e7aa76d49a0a04ac05e" + }, + "tests/game_config/unit_tests.cpp": { + "mode": 420, + "sha256": "45b07c7289abac61fccd0a6cd0ff87812542ec888eb6d295fb87c3f57755cc6a" + }, + "tests/game_data/CMakeLists.txt": { + "mode": 420, + "sha256": "cb8cffb7217e82077d3db749dcacf29c098549159cc0f312ef04bfccaa30155d" + }, + "tests/game_data/build_and_run.sh": { + "mode": 493, + "sha256": "69ea9cb94468c56c329fcc5b9350431067e97091ed47c08bb10b57b38412883a" + }, + "tests/game_data/dump_catalog.cpp": { + "mode": 420, + "sha256": "4588e699c69586dfb77f0d9289e375407d4f9cf019690e26bfc78f7182167c89" + }, + "tests/game_data/oracle/compare.py": { + "mode": 420, + "sha256": "2cfe1ac93790de3351256d284392372721f94de5375686e6301ef39b1943ad12" + }, + "tests/game_data/realdata_test.cpp": { + "mode": 420, + "sha256": "334a924bf81c6ce6192a6688435b374e115382358f7e4554aa164295bdd38321" + }, + "tests/game_data/test_catalog.cpp": { + "mode": 420, + "sha256": "9ea5c3fff2388c5d7fbf295123dfd7b702ef21f17fc7c45a970822814abfce2e" + }, + "tests/game_data/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/game_data/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/game_data/test_shipsection.cpp": { + "mode": 420, + "sha256": "b3519f0de60d061a6f1ab8ee81d470a28fc17cc81b113639ef2c1e139c249b4c" + }, + "tests/game_data/test_techtree.cpp": { + "mode": 420, + "sha256": "d05c889da9edb622bd2b66aa8e300d8162e0c8788950daa1086fc049b90dd4bc" + }, + "tests/game_data/test_turrets.cpp": { + "mode": 420, + "sha256": "66adff30b974e9bf2c96c1af024fb85677e1a8307c801933d23f3d2ec9d8222c" + }, + "tests/game_data/test_weapon.cpp": { + "mode": 420, + "sha256": "b16b0481c0a8697ff16e39c9feb3ad9d5406250b7dd1c828bf12f1bb40ed746b" + }, + "tests/game_design/CMakeLists.txt": { + "mode": 420, + "sha256": "a26524ff14878564870853bc067c379d2ebd26c14e45bcbb06593d300ee4b3ca" + }, + "tests/game_design/build_and_run.sh": { + "mode": 493, + "sha256": "b1aab4d13b09fb1ea4205978bd7d8b05af5a6422ebe4a34261c3247489b48bd7" + }, + "tests/game_design/dump_designs.cpp": { + "mode": 420, + "sha256": "b1b24c5cb534ad821a20325869713c04b742c541c448ade83543d75608f7eda2" + }, + "tests/game_design/json_min.h": { + "mode": 420, + "sha256": "9cfd3eabe9b36d6b2863872e08fe6ebaddf0749d1966dea693f8bbc0472780ac" + }, + "tests/game_design/mini_catalog.cpp": { + "mode": 420, + "sha256": "5817c0251883c999c6ebd54c77fdcf3981181b41fb5f7637d445824d60942810" + }, + "tests/game_design/mini_catalog.h": { + "mode": 420, + "sha256": "ecb7fd0dffa8709008bcdf9b9da3e70e68f735f9b5ecd0dcb4c871a35ae43b59" + }, + "tests/game_design/oracle/compare.py": { + "mode": 420, + "sha256": "2db14952f7fca9a587995e326651b0d549b39ceefd9c0ac59982cd35ae5d21e7" + }, + "tests/game_design/realdata_test.cpp": { + "mode": 420, + "sha256": "cea57cd53d881b3bf2557cc32ea402c4991aa6de5ff72340861f195a8e20c141" + }, + "tests/game_design/stock_designs.cpp": { + "mode": 420, + "sha256": "2ac1b8bcb0f61852f4bc0a8b7cda51167531ca2a05d1e485991a4758cf586d03" + }, + "tests/game_design/stock_designs.h": { + "mode": 420, + "sha256": "a49173bde083467f5650cfbfbaebba5f16208d660fe7f2f3da81c2caff07c807" + }, + "tests/game_design/test_banks.cpp": { + "mode": 420, + "sha256": "c1d34991c53523cb7610a569e861e8a312da1fe659de0522a3594fb14cad24a6" + }, + "tests/game_design/test_census_saves.cpp": { + "mode": 420, + "sha256": "814c17c7a14db7b123579b7636ee7f2b720fdf4a5cbbe90f676dc01709c45e3b" + }, + "tests/game_design/test_hull.cpp": { + "mode": 420, + "sha256": "cff70268d58ab95ed963d335904110ab55c79d6a0f660f613409cf6d5d63e2bd" + }, + "tests/game_design/test_json.cpp": { + "mode": 420, + "sha256": "e7fa196274a4591834a974f742ff59c7ed1fb15fb138091b48a071354d001c5d" + }, + "tests/game_design/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/game_design/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/game_design/test_stats.cpp": { + "mode": 420, + "sha256": "a3681df901095b848cc6b1ae63d04fd70eeeadd406e7d51f3c76671cbf523a7a" + }, + "tests/game_design/test_structure.cpp": { + "mode": 420, + "sha256": "d09f7707ee170f8a933c657628c1da4f61a29c7eb2dc687a96c3985bdac941aa" + }, + "tests/game_design/test_tech.cpp": { + "mode": 420, + "sha256": "689c081a324c7ece3f70d711f7ac67a5b93207f95e2800a3a708f2f8dbe31965" + }, + "tests/game_effects/CMakeLists.txt": { + "mode": 420, + "sha256": "c80413a7103ce0ed7944fb096ad22fc206a091645428a6015ec3d0e442414a0a" + }, + "tests/game_effects/build_and_run.sh": { + "mode": 493, + "sha256": "ab5085eeab0ec65d8f7ddd7d79357cd15183888b1b4e51cb563810d4e4c64506" + }, + "tests/game_effects/test_effects.cpp": { + "mode": 420, + "sha256": "b10d804b1ad4fb140e13cc1984c6372dbbfdd92560f37583f2411bbcb45c16d4" + }, + "tests/game_events/CMakeLists.txt": { + "mode": 420, + "sha256": "c962651d71ee7783d5565b418f653f2954e489cf698762c5686f5f2dbb4304db" + }, + "tests/game_events/build_and_run.sh": { + "mode": 493, + "sha256": "8b92d249138ee53f728583a0c68b153eaf4e2ad7f92d415d8b3a83df2fb3ec28" + }, + "tests/game_events/test_events.cpp": { + "mode": 420, + "sha256": "182941b9b809b20d24a2e29c5e4bbd626e6da8486e87dc38d1c6088161ec793b" + }, + "tests/game_nav/CMakeLists.txt": { + "mode": 420, + "sha256": "7ee85557a167281f4576252428b4e01795232f31dc1d93c23b284568074cec3b" + }, + "tests/game_nav/test_pathplan.cpp": { + "mode": 420, + "sha256": "6229cc2b1be1ffffb3fbb812c2ccc89dba7099d349be3a6f8f2c2e26aa1dd58d" + }, + "tests/game_sim/CMakeLists.txt": { + "mode": 420, + "sha256": "563547cdd93bce41ef29a73289e5104a5df61f71cc980e49ea37cdbe26743be7" + }, + "tests/game_sim/build_and_run.sh": { + "mode": 493, + "sha256": "a9c42a931242c7f266f512b4d4ad11f6f8ecf43a447a06a04f174301ee19328a" + }, + "tests/game_sim/check.h": { + "mode": 420, + "sha256": "faddddc37a528f0235f510b249cfc1776ce30aff709329954f09093b01231221" + }, + "tests/game_sim/mini_json.h": { + "mode": 420, + "sha256": "710218b637aaf1a5eb7c49eaa7d158bc3e495135ec14bf8b41384769d0227ba5" + }, + "tests/game_sim/smoke_real_save.cpp": { + "mode": 420, + "sha256": "2432e92ac18fadfb1152c54d9dec9a77b3dbf506ea122401cbbd48584b7c9190" + }, + "tests/game_sim/test_colony.cpp": { + "mode": 420, + "sha256": "45355673c46cbaef66b2c81d04a845cf65b6ddfd9819350c7338d9771fafb6fe" + }, + "tests/game_sim/test_construction.cpp": { + "mode": 420, + "sha256": "8df75076a3f460e949e34100d55acf60b054603da6d4aeda4f73297442c06e21" + }, + "tests/game_sim/test_economy.cpp": { + "mode": 420, + "sha256": "43fe658fd2347e3667a901afa642713d70c85ef0ec75094642da2d05b9ca471b" + }, + "tests/game_sim/test_movement.cpp": { + "mode": 420, + "sha256": "1927c371d52115458d88552014cef30bba60e9bef5eb3acfce11b2bc623e06a6" + }, + "tests/game_sim/test_observed.cpp": { + "mode": 420, + "sha256": "1f6ad16c1a2c80f0621573b5196989b0349e47351585d83835be5e27f6ef3fe4" + }, + "tests/game_sim/test_player_turn.cpp": { + "mode": 420, + "sha256": "13f76eaa6cad265deec25416acf0cae2028d6cd1c7b9585df6e9252ba3f0cbed" + }, + "tests/game_sim/test_research.cpp": { + "mode": 420, + "sha256": "3dc668eb889c41f58db6007a96f54fe2a6d56ee6501a298fba3afbbe9637baf6" + }, + "tests/game_sim/test_scriptobjects.cpp": { + "mode": 420, + "sha256": "dfe90a42bcd2844c2ea3666816f97c05237206bf44467ac29790c72b7b498582" + }, + "tests/game_sim/test_techgraph.cpp": { + "mode": 420, + "sha256": "0627ea1c8012b90b62285cae2f31599ba8a8cd47928452910ade91f93502d68e" + }, + "tests/game_sim/test_visibility.cpp": { + "mode": 420, + "sha256": "ad756975b6605a164f2f9106daf2511730642eff354a866bc764a93a4be1efe7" + }, + "tests/mars_parse/.gitignore": { + "mode": 420, + "sha256": "181314065df2f2fdaf920b1a8b5311daa216a2d6489a06ada5b49cc514d89417" + }, + "tests/mars_parse/CMakeLists.txt": { + "mode": 420, + "sha256": "898204fbc1cec44f697e2803c8bc4887857950ba2b1192dd153de74d26de0ea4" + }, + "tests/mars_parse/build_and_run.sh": { + "mode": 493, + "sha256": "550c6df5fffbd85cfffc3312a03a5fa9d59c1e0416e883ddc2576cdb73eac6de" + }, + "tests/mars_parse/canon.cpp": { + "mode": 420, + "sha256": "63e2bcfb2820e7533aa3a287bcec6c318f7238006dce61ad35381562b979cd47" + }, + "tests/mars_parse/canon.h": { + "mode": 420, + "sha256": "c9a78b866d62c4e58643de2c4149572380a1392b411049c8fe74e37475d21d9e" + }, + "tests/mars_parse/oracle/dump.py": { + "mode": 420, + "sha256": "16e98089d5b532e35d6b88b3d50b4bb07e879c18512cf8d06cc5fd2aa9da1117" + }, + "tests/mars_parse/oracle_check.cpp": { + "mode": 420, + "sha256": "5eb81a0c2db8f96c6f8e51246ea9991642e5571dd94dd2e410e2fad632d47adb" + }, + "tests/mars_parse/test_blocks.cpp": { + "mode": 420, + "sha256": "f376a57891a83768ecc8b73ef5eb2333291c280760f7581ead53f7c2a71a4df5" + }, + "tests/mars_parse/test_effect.cpp": { + "mode": 420, + "sha256": "8bb14e7c718e772bfb4a22a7370f41080c49beabfa597ddd603be257bc310011" + }, + "tests/mars_parse/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/mars_parse/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/mars_parse/test_value.cpp": { + "mode": 420, + "sha256": "a8dbe3326e5339cdad8fed7dd678df92e8a8b675d0b854f4cea6517bf557069d" + }, + "tests/mars_stream/CMakeLists.txt": { + "mode": 420, + "sha256": "31c69840e6e2e566d2e0bbaf49ab3dec712d27e505d0810ddf0496ce3ff321e0" + }, + "tests/mars_stream/build_and_run.sh": { + "mode": 493, + "sha256": "3737e42960b66e788a11cdd7fa9917fe255b6a4f60280e9f620593bf688aab41" + }, + "tests/mars_stream/oracle/compare.py": { + "mode": 493, + "sha256": "f39dd70e4bbf1952cf99e3437fd1ed6252249f3455a2d3c73311f98d8ff4370e" + }, + "tests/mars_stream/test_domains.cpp": { + "mode": 420, + "sha256": "08394777f7bc4186883cd02058f17fda8f47c3ee47049892bd8762c28b5aa959" + }, + "tests/mars_stream/test_rng.cpp": { + "mode": 420, + "sha256": "55f77273d8af5880f976a24fb00dcd8042b31a7a33f15c9f4b62fdb85bba9d0a" + }, + "tests/mars_stream/test_save.cpp": { + "mode": 420, + "sha256": "50250bb4b4f2da05f9453c541f080e018b68731f24cbf93278d50ca93ddd8d63" + }, + "tests/mars_stream/test_stream.cpp": { + "mode": 420, + "sha256": "d0da9ac2287910527bdac875ab39e0147a9be2f5535f04b55460438f31be2537" + }, + "tests/mars_stream/test_wire_schema.cpp": { + "mode": 420, + "sha256": "1cfd259f554be8218cb182dd1facc07f6cd3dea52f0daf7303393e78c7c2eb97" + }, + "tests/mars_text/.gitignore": { + "mode": 420, + "sha256": "181314065df2f2fdaf920b1a8b5311daa216a2d6489a06ada5b49cc514d89417" + }, + "tests/mars_text/CMakeLists.txt": { + "mode": 420, + "sha256": "20f8e0cfa044fb4e6b1caca0ec8d6536e012c1c4ea4454fe990923f40a201752" + }, + "tests/mars_text/build_and_run.sh": { + "mode": 493, + "sha256": "59ae392080c01be0c7f5530ecb9ae4fbdcc02366242b27527c14b8efd5076d0c" + }, + "tests/mars_text/dump_json.cpp": { + "mode": 420, + "sha256": "e246384902c3adf4fa8f2a54e38c4912f6b58f168ebc9b1e158a719e2a52b1bc" + }, + "tests/mars_text/oracle/compare.py": { + "mode": 493, + "sha256": "46a796196a413aa28a0069086e45c96399f21308153b578f063801eb997b54ef" + }, + "tests/mars_text/oracle/dump.py": { + "mode": 493, + "sha256": "53fde94f6676a5504a247cf209e2a42d67e108cc9ea0b02f289562799ee7d880" + }, + "tests/mars_text/realdata_test.cpp": { + "mode": 420, + "sha256": "a399ad5cf91cf35f78809f5b9b5cac8b2eff344dbfbab07b8b27bf66058e1e3b" + }, + "tests/mars_text/unit_tests.cpp": { + "mode": 420, + "sha256": "cd1e9e4f6e0e503d4d9b0902bd2936513293490cdc680f94639ce93661ca09d7" + }, + "tests/mars_vfs/CMakeLists.txt": { + "mode": 420, + "sha256": "282015598e03430be0f47b779ce7087662415b3a59de14814cb3ba35c17af363" + }, + "tests/mars_vfs/build_and_run.sh": { + "mode": 493, + "sha256": "b6a8e7b0706d7416f548f071e742e600cab226663f7d4ad42299dbb76f631701" + }, + "tests/mars_vfs/make_fixture.py": { + "mode": 493, + "sha256": "57586249e57550869dd5adfbc4fdab173a59d2aee630ba69c20d562018d249f1" + }, + "tests/mars_vfs/realdata_test.cpp": { + "mode": 420, + "sha256": "c95248ae53d32bd5d8cf963ca3a39ea82e5ef08b76de736104b6aa34ec88c789" + }, + "tests/mars_vfs/test_main.cpp": { + "mode": 420, + "sha256": "cdb7bdf9b9356eb0b7f6cb0fab081cda2161b34af14ecf60cc44970e79d517c2" + }, + "tests/mars_vfs/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/mars_vfs/unit_tests.cpp": { + "mode": 420, + "sha256": "de8da00718799886fbbc5820e0f7d0e468a31ab0608361fb509b0c12932c9caf" + }, + "tests/mars_vfs/vfs_cat.cpp": { + "mode": 420, + "sha256": "4a443e779de264f5c0c68a631b1a353b1310a4e838d342527befd8ad1e2a25bd" + }, + "tests/mars_vfs/zip_builder.h": { + "mode": 420, + "sha256": "a0f3688e5a90b7e209497d66d0dcd30a0e1ac59a56ffcbed31b2a50967c1da3a" + }, + "tests/shim_budget/CMakeLists.txt": { + "mode": 420, + "sha256": "88a0f43e433c3a6879a7f6cccf8c84ba4559009614a3fe5adf6c558ea7a47245" + }, + "tests/shim_budget/unit_tests.cpp": { + "mode": 420, + "sha256": "654e96d0880232d3090223a0d9f92f428aeffa528fbd5eca89d6bfe348aefce0" + }, + "tests/shim_colony/CMakeLists.txt": { + "mode": 420, + "sha256": "d7b2674971b0eda32b2edd62244c32af81cea9e6d984a24ca6648edbaea80e06" + }, + "tests/shim_colony/unit_tests.cpp": { + "mode": 420, + "sha256": "4cc41308c10fa1e6aa047fb6c26e4c655b727884bce87b5a9e8e2f76db665474" + }, + "tests/shim_events/CMakeLists.txt": { + "mode": 420, + "sha256": "2b43190a2ce88cf7227250aa5a3b48e3006d24f0d6f5e9a5e48507c2733e4c45" + }, + "tests/shim_events/unit_tests.cpp": { + "mode": 420, + "sha256": "0dc151a4aecb24217cc38cb818bbe760b3da2b08a23ad734b3fa8506d25fe2b4" + }, + "tests/shim_movement/CMakeLists.txt": { + "mode": 420, + "sha256": "46ffe5a9815b189283e4d5ef67a0dcd159f60da7f9ca4a3577669035fefdc1f8" + }, + "tests/shim_movement/unit_tests.cpp": { + "mode": 420, + "sha256": "ee6ee983aa72f078a7ae398ca5f828aba14370c898ae4e56063697d28919ad69" + }, + "tests/shim_player_turn/CMakeLists.txt": { + "mode": 420, + "sha256": "f6affa205f857d4a45f8be05ae0426b6f9a2e8e127f5aeadbac2ed8a4c4daddc" + }, + "tests/shim_player_turn/unit_tests.cpp": { + "mode": 420, + "sha256": "0a528cdf64904dfd22c94ea911a15213701e7912921f04c1909799e6e6240450" + }, + "tests/shim_rng_ledger/CMakeLists.txt": { + "mode": 420, + "sha256": "b6a349f2611ec1f1de2013145a97f3da59cefec81dbc4d2f3e58af507e598bb4" + }, + "tests/shim_rng_ledger/unit_tests.cpp": { + "mode": 420, + "sha256": "d38d80dd907a3468036dbca2b017718b199ab4a0078eb5e5b019b913a9ef8d8c" + }, + "tests/shim_techfx/CMakeLists.txt": { + "mode": 420, + "sha256": "5eaf9a76df6b10258a8c1d2658b03d97377d48a778a1628ca94c9bd69fa7ba8a" + }, + "tests/shim_techfx/unit_tests.cpp": { + "mode": 420, + "sha256": "99a71a6d0ca1f53fc8ff0bc21e79acd64ba2cd9c9f990641e5970c866794595b" + }, + "tests/shim_trace/CMakeLists.txt": { + "mode": 420, + "sha256": "91bc736e198c5cef86ad2ad69ca77d93ab770e5faecf9e6d915f9263b9ce491b" + }, + "tests/shim_trace/check.h": { + "mode": 420, + "sha256": "f4b72b971886c64383880ba26484f9c908d21f5902dff0de0b42f276b00d8366" + }, + "tests/shim_trace/harness.h": { + "mode": 420, + "sha256": "d7eae563723843c1389b108fe2efb2e31b6c264d23567a370a09fb9b1d513697" + }, + "tests/shim_trace/oracle_emit.py": { + "mode": 420, + "sha256": "29ed06c602e9f0d6430bb3c81192b1946213a3f44b91107f7036f35f17b69f42" + }, + "tests/shim_trace/test_coverage.cpp": { + "mode": 420, + "sha256": "8ed5b6d755fe7e2bc98d525e97bc7817a5efb7ed5f0196d49d1c783de3a91bea" + }, + "tests/shim_trace/test_diff.cpp": { + "mode": 420, + "sha256": "afd8e5124cf6e1ad9c4f3e4c2beeb65d00002cf1d4cbaa2e876fea0817a7a347" + }, + "tests/shim_trace/test_emitter.cpp": { + "mode": 420, + "sha256": "a9255bbc055df36a01931e8a61dd1dbf16085f7713db7e7386f66b69ddb10762" + }, + "tests/shim_trace/test_hook.cpp": { + "mode": 420, + "sha256": "4dd67374e260ba2722219c2e44e6be76e583d0ad65844f34859cff49b66a30cc" + }, + "tests/shim_trace/test_sha256.cpp": { + "mode": 420, + "sha256": "b55aa15dc806e3e4a87ddf50657fa4e0af6a4e4e2205c4bd63d1ae066fe57428" + }, + "third_party/minhook/LICENSE.txt": { + "mode": 420, + "sha256": "d5c2224982b0b95a16b098a561335fa93f3eaf4d0aa964b7843edb986df78dc8" + }, + "third_party/minhook/VENDOR.txt": { + "mode": 420, + "sha256": "c79054234a5340f6199f8d9f47d6b3d88e8abd2120586cd78f081cfb81a6fabd" + }, + "third_party/minhook/include/MinHook.h": { + "mode": 420, + "sha256": "e34bbf7b855c842694f6e3dd78e2d280e99ed9732501e3dc1532a8626a8db8e5" + }, + "third_party/minhook/src/buffer.c": { + "mode": 420, + "sha256": "75a789eb718bd5ed2de039ccd330736a31d0a2d14e43d8e15e6cd2332432482d" + }, + "third_party/minhook/src/buffer.h": { + "mode": 420, + "sha256": "9769702bd625249e59a19ede05c84365fcc7707e1fa0e5df08df42227cee13e3" + }, + "third_party/minhook/src/hde/hde32.c": { + "mode": 420, + "sha256": "0ddbc3ab3e0b37e61691131289a151e34f508233ccf3f701752777e5d3f62d68" + }, + "third_party/minhook/src/hde/hde32.h": { + "mode": 420, + "sha256": "5132de5be8ac7a9d054420f5caef0fb01437faa892f03b3cdc77f795973bf15a" + }, + "third_party/minhook/src/hde/hde64.c": { + "mode": 420, + "sha256": "9bf19dd706d4bc255ebd1709f98fb44899df7a1f2412820d77295136e0620f1d" + }, + "third_party/minhook/src/hde/hde64.h": { + "mode": 420, + "sha256": "e99aa4997bda14b534c614c3d8cb78a72c4aca91a1212c8b03ec605d1d75e36e" + }, + "third_party/minhook/src/hde/pstdint.h": { + "mode": 420, + "sha256": "604d1cdf45c5a95bc9cf1bbf39ca05ef83013541101d34971c5cd7577e3d5247" + }, + "third_party/minhook/src/hde/table32.h": { + "mode": 420, + "sha256": "43bf687a9fff071b5f46070db4d36c846f8e069cdc57485ee897c499aacdde23" + }, + "third_party/minhook/src/hde/table64.h": { + "mode": 420, + "sha256": "b774446d2f110ce954fb0a710f4693c5562ddbd8d56fe84106f2ee80db8b50a2" + }, + "third_party/minhook/src/hook.c": { + "mode": 420, + "sha256": "3060d3c42f03a2f11324cbee95d853071757ed0fe4b1bc9eb5f0d8fc9e346a37" + }, + "third_party/minhook/src/trampoline.c": { + "mode": 420, + "sha256": "d837f8555681c3762468d712c43f2064ed31dee610e0b02965fd8aa54b88172f" + }, + "third_party/minhook/src/trampoline.h": { + "mode": 420, + "sha256": "27426751dde36cdd8346469e61cdcca47950b1056a69f21cc63f4b41743faf6a" + }, + "third_party/miniz/ChangeLog.md": { + "mode": 420, + "sha256": "ff3b6040f7cbd8c9779a0690e906c66408f7efe3cf88a25019323f0189025ec3" + }, + "third_party/miniz/LICENSE": { + "mode": 420, + "sha256": "0115478d567121238cf6cc1c0c361926cf07a49d9e4c9e66da97fac6a01646b3" + }, + "third_party/miniz/miniz.c": { + "mode": 420, + "sha256": "e2c1aeb66eef9191d8c3feb164db2def2335a61d039bf04ed849f6b042433b30" + }, + "third_party/miniz/miniz.h": { + "mode": 420, + "sha256": "b53b62ed122e559b8f679e3cb787a0b0035fe87a58f909da0e44931678f4e85f" + }, + "third_party/miniz/readme.md": { + "mode": 420, + "sha256": "b4ea367be28a36e5386f65118b73962bc659a67936d248be68b7a7c03b8d359b" + }, + "tools/build-shim.sh": { + "mode": 493, + "sha256": "1da3fdcc019dc6495c870a42b93cee9f21ff7f9623f033c2f50d9db9fd6a33e0" + }, + "tools/check_shim_configs.py": { + "mode": 420, + "sha256": "ef5e8f100c06d8c485a165ab668206af3e9aed3e1f6aa6ffec2592419fc2332f" + }, + "tools/clean_room_check.py": { + "mode": 420, + "sha256": "e15bc3ebfd29c6e2d8edfc32cc812858869b49ffa1404cafce14c4c24e0f4e24" + }, + "tools/clean_room_check.sh": { + "mode": 420, + "sha256": "6646eb6010be756113f7af39b9cfcb06e8580893fbd100a41993f87757ccfd6a" + }, + "tools/deploy.ps1": { + "mode": 420, + "sha256": "fe01f46bedc91d7b42ff98cb0e69633845094cc2802108d23d48eb70f32e3f27" + }, + "tools/sync-build.sh": { + "mode": 493, + "sha256": "ce418ace6c5edae8609849233bb5dfd24657f55141c8ef8507659608f12aee2d" + }, + "tools/undeploy.ps1": { + "mode": 420, + "sha256": "5730b6f95f161ba5a727dc0a34f26da7f1f697711495d6a9de9c289ecd747af0" + } + }, + "manifest_sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd", + "path": "/tmp/opencode/sots-final-research-engine" + }, + "re": { + "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", + "files": { + ".gitignore": { + "mode": 420, + "sha256": "ba56b745b84c6d15b7288df65f319831fed3cbf8edd1ab3a6476418f48fd95f8" + }, + "AGENTS.md": { + "mode": 420, + "sha256": "ac21cfb98c6cc2f666c7237967ee71315b4787557e936072548e4e6934a8d9fd" + }, + "CLAUDE.md": { + "mode": 420, + "sha256": "65cc9d5f028959a7d9b53c4828778b27217eb04f37f55b08e6aa3e40afb60a4a" + }, + "README.md": { + "mode": 420, + "sha256": "e318014a84d03e53983cdb1e5b0310f372b959f659b91abc9214faf530544afc" + }, + "campaign/DASHBOARD.md": { + "mode": 420, + "sha256": "c5f72f13d38ad96b5a30131b09c20300743d0d1e15357fd249eac9793759026d" + }, + "campaign/agents/analyst.md": { + "mode": 420, + "sha256": "895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952" + }, + "campaign/agents/implementer.md": { + "mode": 420, + "sha256": "eb5581051a92b3d2b9ddd947812b1c02ff6a0b5e7619e7674adc26701e9a3d91" + }, + "campaign/agents/lab.md": { + "mode": 420, + "sha256": "48f1765ebdcb2015e631ad91428f65735ff899e119134b652f70788ff2eae5b8" + }, + "campaign/agents/lead.md": { + "mode": 420, + "sha256": "8fcfe52be845ed98a172afb47ea888b19bb7bffa80f7b50ace58d2bb66924220" + }, + "campaign/agents/resolver.md": { + "mode": 420, + "sha256": "742c36dc8567669d462566d6121eed42fcff5bff34e8eff466e92249f7ca195f" + }, + "campaign/agents/verifier.md": { + "mode": 420, + "sha256": "e467fc644e4e37d631a7a4e35038d9d3d0498491f1d7811d61d99271ff345c6b" + }, + "campaign/backlog.md": { + "mode": 420, + "sha256": "ee123405f92be97d36d86420707d3d60c67cb4ad50165491bc6e12b8dacf3b6f" + }, + "campaign/board.md": { + "mode": 420, + "sha256": "1c256d6e39063609ba89745d2931ad5005223da89ddbe9fda2d782b88d5acdd2" + }, + "campaign/contract.schema.json": { + "mode": 420, + "sha256": "a2c76ec042ca097a57c3c05c1e519e392d498d387a31808c7d0f70482d43c201" + }, + "campaign/models.json": { + "mode": 420, + "sha256": "00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48" + }, + "campaign/open-questions.md": { + "mode": 420, + "sha256": "bafe95db6591d87a2bd7c67831c34a993afbfd61e9f75357625763dec25fe134" + }, + "findings/.keep.md": { + "mode": 420, + "sha256": "141ed928eaf10a2023dd2c0ff6ea68cf6ec423cfd28d5a359d9c5add730bf64c" + }, + "findings/00-strategy.md": { + "mode": 420, + "sha256": "3bc97827988c6eb4647713c5655271e156dfa466fad5685924010f3244fe6386" + }, + "findings/01-fingerprint.md": { + "mode": 420, + "sha256": "7cf0503c29f5beff852427c2c5bdf8e9d968386de777c47b6130771cac944cac" + }, + "findings/_template.md": { + "mode": 420, + "sha256": "b92d0ca7bfef4498a5f9e594453f15ab15e2c88c7582c4ed5df4c40e6871c3b1" + }, + "findings/control-flow/ai-visit-order-probe.md": { + "mode": 420, + "sha256": "e89f91a33139014ebdc22d79064ecfd06f9b4ffebb4bbc3da73734fc47534047" + }, + "findings/control-flow/alliance-mask-and-modcount.md": { + "mode": 420, + "sha256": "ec66c6b76d9e4c8bed385acf70e6a7d5da08e05eca72ac1e8e5cb307d87f2552" + }, + "findings/control-flow/combat-done-tail.md": { + "mode": 420, + "sha256": "799ace775f12ebe9a2737a711c8d0a6e617f0cefec70b93bf094e47cf81cc348" + }, + "findings/control-flow/combat-resolver.md": { + "mode": 420, + "sha256": "abf1a9329c1bd8a96c76481246a00b380e9a17fa8dc8900810218026e5fe1b9e" + }, + "findings/control-flow/combat-retreat-pipeline.md": { + "mode": 420, + "sha256": "6c40c8bdbdde672c9cd67248d740d88892ad2b93b30e27e9bebe0e96027cf136" + }, + "findings/control-flow/fleet-visit-order-mechanism.md": { + "mode": 420, + "sha256": "a2ea1a6ac9d383380e16910cff89dff0e9b23f1df66f47ef91dd266bd50b3a6d" + }, + "findings/control-flow/gate-indexed-rng-audit.md": { + "mode": 420, + "sha256": "5004b2480787eec7be66f40474648030fdaf7759087a4c4651091152d89351cd" + }, + "findings/control-flow/hive-creation-rng.md": { + "mode": 420, + "sha256": "5ff37d571c0380c798a137e0c6947a0c63109de489fd2100c99bfc6637fc272b" + }, + "findings/control-flow/indirect-edges.md": { + "mode": 420, + "sha256": "3dbf2acf7354f61de66348fe40965f3138dbc4bbff8cb0f06b2751e71ed06ee1" + }, + "findings/control-flow/inlined-draws.md": { + "mode": 420, + "sha256": "3b099718543d7fb112664699749602ff9d61de9aaebb561fc93f1f8b7a152134" + }, + "findings/control-flow/per-history-residue.md": { + "mode": 420, + "sha256": "739c7fc760583ca143036ce554e1eece640d1662fba4642e6f80fadd3dad13f9" + }, + "findings/control-flow/pinned-seed-rich-turn.md": { + "mode": 420, + "sha256": "7c62336767b7c69f513446543f37662ba2a0872e207b906279446bbe399d65b6" + }, + "findings/control-flow/raid-gate-multiplicity.md": { + "mode": 420, + "sha256": "6d7b7357be428ff79186478dc37063657ca4d8e2ad49fcdd92493753748a52f4" + }, + "findings/control-flow/raid-intercept-species-word.md": { + "mode": 420, + "sha256": "1da80eb14f0e3e5a0ce139f62976bb305e3e75a1e5e0631d8287f94eac093d8f" + }, + "findings/control-flow/raid-intercept-z-word.md": { + "mode": 420, + "sha256": "beb421953b70377c8c759f5cc936321faa6316be76d41020b41f26c99706acb3" + }, + "findings/control-flow/raid-target-pick-verdict.md": { + "mode": 420, + "sha256": "d0262a4187e35547b28d6be842e7c730aa3ee93565404b587a790706afabd694" + }, + "findings/control-flow/seed-exposure-forward-test.md": { + "mode": 420, + "sha256": "f108a07ce695b64c482af58db4caeb2607059a3357b62f04f7f36ce45c84ff4a" + }, + "findings/control-flow/standalone-generator-and-turn-record.md": { + "mode": 420, + "sha256": "e499f62534580f27c2a01395e08312ebc7df13bdd307342096f468212aec600b" + }, + "findings/control-flow/standalone-scaffold.md": { + "mode": 420, + "sha256": "0bf928260d5058815a2f09c4df8c08eb359430aeea941f872018de7cbca39105" + }, + "findings/control-flow/tail-probes.md": { + "mode": 420, + "sha256": "ae45e84a9c7f257170f7550301fc4e1a35d5210269bda8070469a5c921cce95e" + }, + "findings/control-flow/tail-rng-ledger.md": { + "mode": 420, + "sha256": "2db588423e7b7de7729e5319477c17fbcea5b7a9cb8ff00b01cfd72bfce25403" + }, + "findings/control-flow/trade-raid-rng-gate.md": { + "mode": 420, + "sha256": "85c7b27aa284988b07b5e67c8e48ef1725289f1a6956d88be2572577cc06e1bf" + }, + "findings/control-flow/turn-driver.md": { + "mode": 420, + "sha256": "3f4e92041a0842d211ea9ae1ae16a9fe400dacf9632209102a1f76acc6b30792" + }, + "findings/control-flow/turn-spine.md": { + "mode": 420, + "sha256": "e2a64f82e5dececb4ba56859d1e53a0f720e08472c79c39197beba7f6041811b" + }, + "findings/control-flow/w3-containers-status-handlers.md": { + "mode": 420, + "sha256": "fffbaa6e3701abbe57a54046416a102502afeaa29b14632f9506905c22bf3914" + }, + "findings/control-flow/watchpoints-modcount-status.md": { + "mode": 420, + "sha256": "0aec4c93ca7219e29827a5069a9829d5e58da2001e79a7316bce288d3e9a6c7d" + }, + "findings/objects/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "findings/objects/00-inventory.md": { + "mode": 420, + "sha256": "cada5fc81c42cb50878a26e43a58640153c600319e66d4c92a23d7c363ff5f14" + }, + "findings/objects/aiagent-block.md": { + "mode": 420, + "sha256": "55d646ab57e90477993d263399254a3b103024d89fff42491b7df5cf4ffc8037" + }, + "findings/objects/classes-game.txt": { + "mode": 420, + "sha256": "e0eceb77c56e05bc7863d3a07805d703fc0ecec489ef24fabe7c6161f2835199" + }, + "findings/objects/classes-mars.txt": { + "mode": 420, + "sha256": "b624f7bd82a5277462a39627140a85c7a7929fd292b62e45edb5c96fd53b6145" + }, + "findings/objects/ghidra-recon.md": { + "mode": 420, + "sha256": "ca4b043a73c1d5573aa0c83cd3942db731884910c90e7d8544c8a32c939e2fda" + }, + "findings/objects/rtti-raw.txt": { + "mode": 420, + "sha256": "39f6fdf8793f8202c19cfb87a75466b215254a13050ec37c0c496699298247ad" + }, + "findings/objects/save-editor-structs.md": { + "mode": 420, + "sha256": "835d4fbf154275542383ea499a527c044ec7d577486c2735b817bd32d6e0c853" + }, + "findings/objects/schema-gaps-resolved.md": { + "mode": 420, + "sha256": "9ddae36eb8e3ef909c4902d01200fc8a17335271e4e063939ae162a3eea5bb3a" + }, + "findings/objects/serializable-types.txt": { + "mode": 420, + "sha256": "59c2f3942f55eb3f6687758a4c447b1ed8902caa60b97d9619bb8228e27c6838" + }, + "findings/objects/serializer-struct-recovery.md": { + "mode": 420, + "sha256": "5b56d8e1a5047d602cea7a76227f30e17244057fe21fde3d4e2cc76e9f185416" + }, + "findings/objects/ship-design-catalogue.md": { + "mode": 420, + "sha256": "feded2191180e184d34d4992935dc117bff8d052e8a2c63ecc29fa7b2e6b561d" + }, + "findings/objects/struct-recovery.md": { + "mode": 420, + "sha256": "4e99ef972529101f5700b52845e263fb3789e0b82d8cdeca921f1595a24d92db" + }, + "findings/objects/svsctob-variants.md": { + "mode": 420, + "sha256": "89617cd2909f2242e9e1657fd4a8f5aafe5aa0c1e0e9bc8926fb67c1e830dd2d" + }, + "findings/objects/svsctob-writers.md": { + "mode": 420, + "sha256": "7a9b7f3bf4eae63cf522246227410b2e3ca789284b7c620f01550fadf479622c" + }, + "findings/objects/turncommands-block.md": { + "mode": 420, + "sha256": "8eca2b79838114e7ae46d34c6e75eaf3b04c0448d9896ed4219b118f09e83046" + }, + "findings/objects/wire-schema-channel.md": { + "mode": 420, + "sha256": "31f0fc4e1cc3c3e7ef938aa22ad65cfdec32be4f1ade476a7ebf32c3c6f07d6f" + }, + "findings/objects/wire-schema-closeout.md": { + "mode": 420, + "sha256": "bbae848b4f8d6d0f2a914268ac34e75b4cea483f52816916202f3bd3cd084255" + }, + "findings/objects/wire-schema-ratchet-debt.md": { + "mode": 420, + "sha256": "0d144181478a607f2474a7c8a1b71ca49c881ef6fd068b5e8859c3fa8129507a" + }, + "findings/resolutions/2026-09-08-ai-seed-per-process.md": { + "mode": 420, + "sha256": "0765bdaeade29122ab5e64493f3a7c339f1e4c4445192ed09ae3d229dd6ae943" + }, + "findings/resolutions/2026-09-09-fleet-id-order-residue.md": { + "mode": 420, + "sha256": "b3d63a11e8ebd55da4af15760d044607b6105216898a018f5ceebc94750817e8" + }, + "findings/resolutions/2026-09-09-seed-exposure-is-a-predicate.md": { + "mode": 420, + "sha256": "dd7ce18738a625b9008ef80783bd64fc3857852775ab3b784b9e5f4fd5ae7de1" + }, + "findings/resolutions/2026-09-09-tail-draws.md": { + "mode": 420, + "sha256": "ff86a332ea9f87bd6f42a0b64e837e6f6f5876423ae9403a903aa9bfe7c42678" + }, + "findings/subsystems/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "findings/subsystems/ai-client-seed-is-per-process.md": { + "mode": 420, + "sha256": "5e6de0418588ff28cee29cb9affd69c3183819318c314eeb0771bbe810e6b4ed" + }, + "findings/subsystems/ai-order-capture.md": { + "mode": 420, + "sha256": "6efebf9f00b375d2c7f29ddeb24ef7a04e3b02cac9027369b490157a196d08ce" + }, + "findings/subsystems/ai-order-emission.md": { + "mode": 420, + "sha256": "9e54a13a18387a4f93acc5c66dbf71d365c81f1a8e6d2aee31f7a89712894ace" + }, + "findings/subsystems/ai-stepping-and-passes.md": { + "mode": 420, + "sha256": "e7e2fc612457a4e77df362aea2928d20fa5a2456fe12a7fbafeaf3c9e01c1dc1" + }, + "findings/subsystems/ai-task-system.md": { + "mode": 420, + "sha256": "577f8fc41256ebdf9629f1e30df9aac7f51c1a84b55f60c2b59e4af4c55126b2" + }, + "findings/subsystems/ai-turn-logic.md": { + "mode": 420, + "sha256": "79e9b7c9592d583db7b9d9ce472804038a71febf7527bd69e31b3399caeb0770" + }, + "findings/subsystems/battle-load-profile.md": { + "mode": 420, + "sha256": "3cf8e28925ebbb162bca9c3be9e6b2599c82ab6aaf9a9d99ffd9c934bf773c77" + }, + "findings/subsystems/data-model.md": { + "mode": 420, + "sha256": "f01c9bfcf8ed9fbf9fdd30556308a1dbb1094896050cc8a5e4fbc1c6c61aff78" + }, + "findings/subsystems/data-parsers.md": { + "mode": 420, + "sha256": "6a428c14279ac2c589b4af932e762ef7e3ada1a878128527b8d88858c11fbc35" + }, + "findings/subsystems/determinism-oracle.md": { + "mode": 420, + "sha256": "4fe0abad0b1b825392cd47b792d06756742495f26ff40a6a433d8608b4680bcb" + }, + "findings/subsystems/eventlive-verification.md": { + "mode": 420, + "sha256": "8bfcc75e57ddf88ec8a4b8885f033be8ffd420965077ab284b1ebce535ecf1a0" + }, + "findings/subsystems/events.md": { + "mode": 420, + "sha256": "c5d6e168d6d48eabec0ae0a448f9c3ec8d0f751a67fc320bc1021ba10008a3bf" + }, + "findings/subsystems/formula-gaps.md": { + "mode": 420, + "sha256": "63ec96a27fac5381d33cdce3e549d230bd5b0230e4d8573f4f3d45bab7d47ffc" + }, + "findings/subsystems/fpu-precision-sensitivity.md": { + "mode": 420, + "sha256": "4cf84e2a1c3d0eaaf9b3a7f218ad663ffa6984389b2a25851249733ad708ff8f" + }, + "findings/subsystems/golden-trace-recapture.md": { + "mode": 420, + "sha256": "b244f939b87dd464d78d919675c0e6aa010b0ec7b4fc6e4178e26c2c8ebee738" + }, + "findings/subsystems/id-allocation.md": { + "mode": 420, + "sha256": "b04a14a5a7d4d1c6137c4f9072987eebc997421e550881dcc2c8e386187f5b90" + }, + "findings/subsystems/income-term.md": { + "mode": 420, + "sha256": "c40286635675a91ce779b887a0394e92f946844873a778015efb98c4a105b67e" + }, + "findings/subsystems/loader-prototypes.md": { + "mode": 420, + "sha256": "f1d09471d5e17c45413b86805f561329f5af24eadfb17c3c740686c39b167ed6" + }, + "findings/subsystems/money-chain-float-widths.md": { + "mode": 420, + "sha256": "99bded6f2d34a713bc175deb4ad5ab4559ce1cc90274b036c1818ad8257c2fef" + }, + "findings/subsystems/movefleet-position-rounding.md": { + "mode": 420, + "sha256": "12dbdc03658cb042b5927586769dc9c19fc2eb812f703e73bf26273f8b0d65a6" + }, + "findings/subsystems/multiplayer-combat.md": { + "mode": 420, + "sha256": "2f4957011b5c5875b8aa7f71531dd5dfe3fd8df4f2c67a7be2fb5999f090c02b" + }, + "findings/subsystems/multiplayer-gamespy.md": { + "mode": 420, + "sha256": "a878e97775d27e085e58b18eaf5a67aaa522456d1055ca142f0477e3d6152d47" + }, + "findings/subsystems/multiplayer-tier0-verified.md": { + "mode": 420, + "sha256": "942ce29cbe22d8f7de5af54f2017c0433c7b8e1a56c864868ec906ffcbb9059a" + }, + "findings/subsystems/nav-classifier-live.md": { + "mode": 420, + "sha256": "b8aacdea8072a99ba1192e235088b372180f094795baf164e8cb95bd2df9f3b0" + }, + "findings/subsystems/nvo-tshn-visible-owner.md": { + "mode": 420, + "sha256": "ef96bb61769c02affd7148cd95e70bf358cbe6263fbe9b47aba6cf4cfa8486ad" + }, + "findings/subsystems/observedtech-append.md": { + "mode": 420, + "sha256": "61efcf51bffe53b8a10a2cdb8123db3f8c55b6874db87418fc31737efedaa652" + }, + "findings/subsystems/output-term.md": { + "mode": 420, + "sha256": "9eb9ff58a1d4cf34d3138f5044788b6f87ff4c94fa871b2dedd6ff6667196533" + }, + "findings/subsystems/output-turn-path.md": { + "mode": 420, + "sha256": "4e199e5cc14802c1b14b37cff0c1359b43aca94dab833f9024c7825c4c512588" + }, + "findings/subsystems/path-solver.md": { + "mode": 420, + "sha256": "3e0e318d45e14f844831c4180e47011263f64067dacf3249742882186d65cf18" + }, + "findings/subsystems/players-residual.md": { + "mode": 420, + "sha256": "e2f56c7983856470d37cd0fba4834a0ccb34dcaddbaf9acaf5dcdc253c6b3507" + }, + "findings/subsystems/population-growth.md": { + "mode": 420, + "sha256": "c2ec2f062e1224045b761640549e7374336ac762bd61c686a0c1378ad829a993" + }, + "findings/subsystems/rcex-explained.md": { + "mode": 420, + "sha256": "df7c9de6f02c1bd38f69e3a5344ec663d97b1d6b738ff408dfdeb0e2f6175b32" + }, + "findings/subsystems/relabel-new-ids.md": { + "mode": 420, + "sha256": "562ffe347adc6432a7824bfa2b324b6b1812b4fcc18343f0732c0f3d9991be20" + }, + "findings/subsystems/research-replace.md": { + "mode": 420, + "sha256": "d0f692cf687a7fe6aab62fc5d7d076eb595e1c33fd84c6f1e437ed01025cab4b" + }, + "findings/subsystems/roll-parity.md": { + "mode": 420, + "sha256": "7d97d7e5eee7b9f135e32b6553bb94ca83fd05b1eca7d18c42e9d65cae4d95d1" + }, + "findings/subsystems/rung-b-rich-turn.md": { + "mode": 420, + "sha256": "44378c6a305a82b2d131270fa5d97fdcd8a7fd5c9760ecbad7715383eac2db68" + }, + "findings/subsystems/running-the-game.md": { + "mode": 420, + "sha256": "f6109f69c6b86e4cf01d0f2e1f8be9921ff632513bca5d9e44e7f6c34f1cd260" + }, + "findings/subsystems/setresearched-cascade.md": { + "mode": 420, + "sha256": "9c079de161a1d1387339b8e8081395c1356c1443a0c898942acfb6efb65a454f" + }, + "findings/subsystems/ship-construction.md": { + "mode": 420, + "sha256": "86f570b1872c8dfac3982d1d7335f4798ccbd1bfd73c91d481afba2734c41216" + }, + "findings/subsystems/ship-design-composer.md": { + "mode": 420, + "sha256": "639b276e9205aaf6c90d9c458a383cc073e89f401ef8f17f8ad5a8a0c5899fa8" + }, + "findings/subsystems/snlv-measured.md": { + "mode": 420, + "sha256": "785324d176be969e1809090acd6b7a48d27f4fa41472c0d9c6f568c0b3a1e539" + }, + "findings/subsystems/spy-detection-roll.md": { + "mode": 420, + "sha256": "214179f5091408ef01ce4b80565068cb9a0885d1c6a233cda476280b9bf29c0a" + }, + "findings/subsystems/spy-program-draws.md": { + "mode": 420, + "sha256": "0c61c2f9cc767ae679921bfc42ef9a207ec9a6e0dc88419a673a8e439f1abfc1" + }, + "findings/subsystems/strategic-turn-internals.md": { + "mode": 420, + "sha256": "3a5c17e025d4968db6030f8ef1daaa2b03ccd4def12d35cf3a0eabcb0b5cbb54" + }, + "findings/subsystems/strings-and-config.md": { + "mode": 420, + "sha256": "67aefda7792e329b7df3f6e8cf42c7bae7049867cdda0741e871b183bc528786" + }, + "findings/subsystems/system-visibility-prediction.md": { + "mode": 420, + "sha256": "b420526ca0410bd4578dd2ed29cd9a21ed3578d6345d9f853a883e0159c1f89c" + }, + "findings/subsystems/system-visibility-record.md": { + "mode": 420, + "sha256": "d2843e10c156a7c85d7dab40d00204475fc725dc9b93656f6cde941ceceb5f51" + }, + "findings/subsystems/t34-observed-designs.md": { + "mode": 420, + "sha256": "207641821a55f5671749b000d478afd9e427336e2d123a55ad2203f34dfaa796" + }, + "findings/subsystems/tech-effects.md": { + "mode": 420, + "sha256": "7423f1e2cb2a597738b244d58bdf467431ee5de725ac434b904676ddcbcfc609" + }, + "findings/subsystems/techid-name-map.md": { + "mode": 420, + "sha256": "cfd92a7885dad3775465fc0c5b40aeb1749499f90071b44855ab8e1746d5f752" + }, + "findings/subsystems/trade-and-spy-workload.md": { + "mode": 420, + "sha256": "147057456fa30b6218df19679abab1ac31b78276a4272d221b70776e154396ba" + }, + "findings/subsystems/treaty-turn-stamp.md": { + "mode": 420, + "sha256": "fa0a8588847cc2b9e92cddeca65fd00fe3d84a00a1034d9354053c7e6cd9ceb5" + }, + "findings/subsystems/turn-command-replay.md": { + "mode": 420, + "sha256": "b65fa3c3c01c67bc16ec488e4a44e6c748256e941c80987528b7602038a56e07" + }, + "findings/subsystems/turn1-to-turn2-nondeterminism.md": { + "mode": 420, + "sha256": "9ebe834fa0f7c1cf864032ec67da76730ed6c239d6bd3a717f147490116acc4d" + }, + "findings/subsystems/turncommands-capture.md": { + "mode": 420, + "sha256": "a57fd2a77784fef1b176749878b161c4f04ac77c1f4a061a6b713787d92fb9ef" + }, + "findings/subsystems/ui-screen-map.md": { + "mode": 420, + "sha256": "d266285e3ca99ba3b5ebbab47c78f3df247a8b539c0519c6fd27a999b9d6f84b" + }, + "findings/subsystems/unlock-cascade.md": { + "mode": 420, + "sha256": "38d29a9484aa3910f5a62b5dd08225ba590bf26901203c5aef1b0b466fbbc5fb" + }, + "findings/subsystems/value-domain-census.md": { + "mode": 420, + "sha256": "bc99139708aee5da4cafec585fc35ab3523b51571518038db19b5f1383c6a6c4" + }, + "findings/subsystems/writer-byte-exact.md": { + "mode": 420, + "sha256": "a0e91a90d2ae78328dbaef30b37d53037cab26489e4729413bcfebbafcab0978" + }, + "ghidra/addresses.d/README.md": { + "mode": 420, + "sha256": "cf2745d5d3e504725ae5a296dc20e3d63b8d32a903445aafe2af61828a6d59c5" + }, + "ghidra/addresses.d/ag.json": { + "mode": 420, + "sha256": "24d5b11779364cf198008b143c7a3a092117ec4a1530c489497dbc8acdf62d8e" + }, + "ghidra/addresses.d/ap.json": { + "mode": 420, + "sha256": "e37f478836eb297f9cc5186cd7df3f5942abc4b6396a4d2866e613841437f778" + }, + "ghidra/addresses.d/ar.json": { + "mode": 420, + "sha256": "8d8620be8dd807a610ff63c0d77cbf266f3d9ce272158991d1f55d9c9910c248" + }, + "ghidra/addresses.d/as.json": { + "mode": 420, + "sha256": "08a869ab9466d4b575363cfb6fc084ca72cdc05d509c5d87e658a9a9977a7ae9" + }, + "ghidra/addresses.d/az.json": { + "mode": 420, + "sha256": "60b9a169605ac171cffb848024141c9224f6897bf69b547b9a4f2b5ddfc8d835" + }, + "ghidra/addresses.d/bu.json": { + "mode": 420, + "sha256": "79037146ba621e43e561bcf0577afc25b2ffac4ced44c902d2ea8ed9171b1bb9" + }, + "ghidra/addresses.d/cz.json": { + "mode": 420, + "sha256": "35de20ff0e38d05b5c58c89690dfc81ce44eb280a2a594ae862e55d56edb5d3c" + }, + "ghidra/addresses.d/dn.json": { + "mode": 420, + "sha256": "c41f877a37bc864f8f315a47b720ac204c22c25de405f4de63b845180641eba0" + }, + "ghidra/addresses.d/dt.json": { + "mode": 420, + "sha256": "580762e01175fb7246d0f9214e4ed9ba16bebcdb82ad1525fd1f77c0910c660f" + }, + "ghidra/addresses.d/lane-a.json": { + "mode": 420, + "sha256": "fce5f06866bddc6bca095d53e376495103dfd8900ad7da0d0d6731f105915d71" + }, + "ghidra/addresses.d/lane-a2.json": { + "mode": 420, + "sha256": "1207088eb2ae041afc2618a627029e25f578ae9fe8db73bb9efb616f39c34bf0" + }, + "ghidra/addresses.d/lane-ac.json": { + "mode": 420, + "sha256": "02a1c2f01ca0d11a7c38d416d94fabaea64b5c5919f6ceaead83430fb398710e" + }, + "ghidra/addresses.d/lane-ai1.json": { + "mode": 420, + "sha256": "134a0cb87b95bf5f39ed015bcdf64c6e8da6b22e073d5b5487148cb5421addff" + }, + "ghidra/addresses.d/lane-ai2.json": { + "mode": 420, + "sha256": "e9d94ce026231d420538400fa9c73fa8a2fa882d16f542c6b8ce2c34014acda6" + }, + "ghidra/addresses.d/lane-ai3.json": { + "mode": 420, + "sha256": "89c29e1bbb1159b7b6fb4fc8c232902f8497efc82290aba6f50c9c9097feec6a" + }, + "ghidra/addresses.d/lane-ai4.json": { + "mode": 420, + "sha256": "78b7897d3d2678ddbff7cd982bfa7d93a0c26817846a148fd3f46790fef9d7fb" + }, + "ghidra/addresses.d/lane-b5.json": { + "mode": 420, + "sha256": "641c724d1fbf28f5469aac488401ea2f92bdd3b929fbf053ddeef0ba5b8de9da" + }, + "ghidra/addresses.d/lane-b6.json": { + "mode": 420, + "sha256": "b2b2833220e3a645efab2b767f1d93d1215a54d195e28e6743db8f1d89934697" + }, + "ghidra/addresses.d/lane-c3.json": { + "mode": 420, + "sha256": "b732932503c181c77bb14ba0136379c8fa3501d0c1471b02d9bca7d023bb5f5a" + }, + "ghidra/addresses.d/lane-d2.json": { + "mode": 420, + "sha256": "8b5df39fb5eea0cd40dffc20aaccabe169f5472171dfd242ca2e75dfc4ca608c" + }, + "ghidra/addresses.d/lane-e1.json": { + "mode": 420, + "sha256": "cb38b41b747bf74ee73fb7eaa301da4bb896d089fa1dea4197382e94940c7f69" + }, + "ghidra/addresses.d/lane-e3.json": { + "mode": 420, + "sha256": "a5fe9dbb37ee587bf36a311771bbc9d8dcaa4d4fcc0b420b8f45829929b0ff98" + }, + "ghidra/addresses.d/lane-ev.json": { + "mode": 420, + "sha256": "b243d31bcd69bfb1e5928ba8b70e958e559c88ee5190ca34e569f217a784798c" + }, + "ghidra/addresses.d/lane-g2.json": { + "mode": 420, + "sha256": "84401f05c5cf2ca0839e817877892e904b3fd2fd4175607abc34453acd8ce822" + }, + "ghidra/addresses.d/lane-g3.json": { + "mode": 420, + "sha256": "d176eb4a07bb6b98acea77e1a0a9904d317a594768ecf8719bbfacbdf6522729" + }, + "ghidra/addresses.d/lane-h.json": { + "mode": 420, + "sha256": "e8cffe89c7feb1d9fa1949f33aff01edc7b84b49ab752275662f6f613c16c0b6" + }, + "ghidra/addresses.d/lane-i.json": { + "mode": 420, + "sha256": "a4c482ff6fee78e96da3400b9ba7d76b58634a5933ff388db5993a1b105c8aca" + }, + "ghidra/addresses.d/lane-id.json": { + "mode": 420, + "sha256": "3f48c9b2e2c3a08e13a856bfb78d551af17f5a1a1079f03f8edbf4615f17ca7d" + }, + "ghidra/addresses.d/lane-j.json": { + "mode": 420, + "sha256": "4fd95b08fee60a2748995cb082fe50d61e7179ae90b106f230bfc5c55a35660d" + }, + "ghidra/addresses.d/lane-k.json": { + "mode": 420, + "sha256": "f6ead3ff256fd2e1408d52bfa28e308f106ad672b3fe1cce0d136faac351136e" + }, + "ghidra/addresses.d/lane-l1.json": { + "mode": 420, + "sha256": "ecbab4a1b602beefd6889effc4883b7f7de01afabb7c5c071bbc4e2237e9131b" + }, + "ghidra/addresses.d/lane-l3.json": { + "mode": 420, + "sha256": "eabb96253bee36c799f1eb89108e284162606cfdc5e9bd29dbf7b5f88ee88adf" + }, + "ghidra/addresses.d/lane-l4.json": { + "mode": 420, + "sha256": "5b2b54d2f3e123e352e9a2b0f1d80fc8afcdd0b97916a94ee5a62ddc03b0ae75" + }, + "ghidra/addresses.d/lane-l5.json": { + "mode": 420, + "sha256": "cedc4869149212d401c519c46fa3f02769f9c939fc560fe8d35cc4f898091482" + }, + "ghidra/addresses.d/lane-n.json": { + "mode": 420, + "sha256": "6987efa430f2da8987e42e61e53113f914cb00e3e52a7c679565e7faf5160c82" + }, + "ghidra/addresses.d/lane-o.json": { + "mode": 420, + "sha256": "7fcf357f25ccdf061b6bc688339e2006f830c551718b6419a0a9d0ac968bb555" + }, + "ghidra/addresses.d/lane-p2.json": { + "mode": 420, + "sha256": "7eaa63d64a0054ef88f323f58b31fca07bd2372dc21560b4bda64eb13d869792" + }, + "ghidra/addresses.d/lane-par.json": { + "mode": 420, + "sha256": "3836b786aec28feb028271d05f368d7c332b8930b51cfdceb36540133a3d3237" + }, + "ghidra/addresses.d/lane-pl.json": { + "mode": 420, + "sha256": "f29953d17effbb7d8256687833023d4656522e74c40bf1ea646d3b35da3635d7" + }, + "ghidra/addresses.d/lane-q.json": { + "mode": 420, + "sha256": "6f98496ffc288fb30c3a7347a7e5252b296f2345afd1bf678f98a2c934b8935a" + }, + "ghidra/addresses.d/lane-rb.json": { + "mode": 420, + "sha256": "bff95b9452e0efb63e74f741682c8d1843abfe3e722143cf01cf092aa894d75d" + }, + "ghidra/addresses.d/lane-sd.json": { + "mode": 420, + "sha256": "d3239b619cbef5cddc9c7bde6525301a99a6423f8a0e42c1ea53b9ae269c6da9" + }, + "ghidra/addresses.d/lane-sv.json": { + "mode": 420, + "sha256": "f574d8b4dc75da722870c74eb29cd56c75e04dd0ac384b4549fc95d425e3de3a" + }, + "ghidra/addresses.d/lane-t.json": { + "mode": 420, + "sha256": "70975f3c1dea55ceb11af12b9ba3a04e8f7bba2e25f1355ffcd3cd457c41545c" + }, + "ghidra/addresses.d/lane-t2.json": { + "mode": 420, + "sha256": "1e3c59089b769cc5f5d3cf16c33cb6db002966f5beb1a4fb9dd8e28fe54cd6a7" + }, + "ghidra/addresses.d/lane-u.json": { + "mode": 420, + "sha256": "bcccb6ec9257537eece135adbfd126904ca0becf14f9b5d17253adf5d8c9e8fe" + }, + "ghidra/addresses.d/lane-v2.json": { + "mode": 420, + "sha256": "6a4d4960ce99c05b928164159eaf4482bf763785a1f8c50efe133667886d9a54" + }, + "ghidra/addresses.d/lane-w.json": { + "mode": 420, + "sha256": "3971d65c772146534f5d8c350f2d203add70ac82801f57f3704c47cd59b51226" + }, + "ghidra/addresses.d/lane-w2.json": { + "mode": 420, + "sha256": "677648e94de8e1e0d538c9575c9be942d0b37c1a847effcb3c2312af5b6aa7d9" + }, + "ghidra/addresses.d/lane-w3.json": { + "mode": 420, + "sha256": "50ed8ed1b16288b00bac4df0886646dbf9d6d6392867029b4eac386806b41b51" + }, + "ghidra/addresses.d/lane-z.json": { + "mode": 420, + "sha256": "bc63a82f2d0cb7636e95f8a07f183f80817a4c65d2bb7263a047ec3c540512eb" + }, + "ghidra/addresses.json": { + "mode": 420, + "sha256": "865c02d88ac6ede656160a5ab20521ad8854efa381d5a943ab422216aca2c016" + }, + "ghidra/generated/sots_addresses.h": { + "mode": 420, + "sha256": "1cf6b4ab40d3cde306edee12ba4eb05292b98ddcf5c2b7c22c1c64b6075b1bdf" + }, + "ghidra/scripts/FixPlayer.java": { + "mode": 420, + "sha256": "9f9ea470af063339511b1f1c85d6dea2df0827c4fed5806c6f641b1aad3e5660" + }, + "ghidra/scripts/FixThis.java": { + "mode": 420, + "sha256": "aafeeb482f71d1bdcbc99a51fb3f21989a46fbb49b5a572f3d9e436c9b3b98b4" + }, + "ghidra/scripts/LoaderRecon.java": { + "mode": 420, + "sha256": "1275d460227e0098254885fe70666d618da7215bca99483a5475c1e701ab9b27" + }, + "ghidra/scripts/LoaderWriteBack.java": { + "mode": 420, + "sha256": "d1040cb9ee80f0fe4d2310d95b38d7d94b0972283f74ea6058de0bdb9e510e63" + }, + "ghidra/scripts/SpineRecon.java": { + "mode": 420, + "sha256": "bea798733cf60f9478373cc453692104058b643ba5b7fc68e76945ae6f496950" + }, + "ghidra/scripts/SpineRecon2.java": { + "mode": 420, + "sha256": "94f10ac953091d50187a46b74803abb4812b244356f9336fa8e133a8a6cba0c6" + }, + "ghidra/scripts/SpineRecon3.java": { + "mode": 420, + "sha256": "b2344ab3d7195cfb935505ba1949f3d4862f787ccb95b812cef3856f92c94ffc" + }, + "ghidra/scripts/SpineRecon4.java": { + "mode": 420, + "sha256": "1093ee635be94f0c0bb31b5bd79f030faa0d7cbab96a495426363172cbcd1d66" + }, + "ghidra/scripts/TechFx.java": { + "mode": 420, + "sha256": "bfa8e990d65ad7cb2b665ee284ec2d645395e0fb3794ea146b175e2937a159ad" + }, + "ghidra/scripts/TechFx2.java": { + "mode": 420, + "sha256": "ee7040ed3316f2e717bac207c3e8ba9bf5ecb560f9e2b38335582c4ca6bae5a8" + }, + "ghidra/scripts/TechFx3.java": { + "mode": 420, + "sha256": "b672751160abcfee37d16eb2f107a60420b7d6956c312fe93e9f62578c06b96a" + }, + "ghidra/scripts/TechFx4.java": { + "mode": 420, + "sha256": "ef912e86f802452f33c20a1adb87eeb96f0ec893e26ee4bbd02305ba0c5e46c7" + }, + "ghidra/scripts/WriteBack.java": { + "mode": 420, + "sha256": "e002a5b86bc58cf75ef8d08dbaeb84bdf3306c1e8d49e92c0382f8ed858c57ac" + }, + "ghidra/vtable-owners.json": { + "mode": 420, + "sha256": "8ee89f3b43f56283a6ffcc605394a1ab246f8071370a9db8f1e770942a5a82a3" + }, + "guides/lab-screen-wall.md": { + "mode": 420, + "sha256": "d398b47853013dbce63b4af2f2ec680c39775732b9fbba13f5fc42a46628550f" + }, + "guides/method-rules.md": { + "mode": 420, + "sha256": "a71a8415202fe97ccaee3805bf4035684776c37f5613dc39a1f260aa33f94b69" + }, + "guides/multi-agent-workflow.md": { + "mode": 420, + "sha256": "116ccaa9be9523852d02ee7c78c7f1d587c1ed6270789afca42e687ea826af5b" + }, + "guides/re-windows-2000s-howto.md": { + "mode": 420, + "sha256": "3490650440d6e683cb029915b8c2cace914b1f52538c9db89175ad4547db2901" + }, + "guides/windows-lab-housekeeping.md": { + "mode": 420, + "sha256": "4a9e9d66dd76e6b5ee1951686186190c650a617fa812fa4bd236ef02b783939a" + }, + "notes/.keep.md": { + "mode": 420, + "sha256": "7878c159a1b9636974e9093902027a24bf7b3c7520f13a8d96f930bd10d22f1c" + }, + "objects/generated/sots_stream_schema.h": { + "mode": 420, + "sha256": "13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c" + }, + "objects/layouts.h": { + "mode": 420, + "sha256": "24586f7f1c25530691193a919c6335ab1784fa2815b222326409cfe9e2a42981" + }, + "objects/layouts.json": { + "mode": 420, + "sha256": "16bfffa5020d98c12af61c72a48da8f2c5e06d1060358802717e585a49b150b2" + }, + "objects/layouts.md": { + "mode": 420, + "sha256": "83bc29fcd379847f9ebd6732edf9748c1c878052e889615928659307f97a148c" + }, + "objects/streams.json": { + "mode": 420, + "sha256": "60993eda14d0b1056578718d43a3b6d89816e12c4f5a00674806aeef9e81baf7" + }, + "opencode.json": { + "mode": 420, + "sha256": "027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99" + }, + "scripts/.keep.md": { + "mode": 420, + "sha256": "b0cdcee8cfdc1b15ee444520b6b01c747399deea6d92ff2576ca6eb57331bbac" + }, + "scripts/forgejo_campaign.py": null, + "scripts/lane_v2_writeback.py": { + "mode": 420, + "sha256": "69a66058adb04926eeb6f0e81fa8f0392ce06de2e8d8eb61ebcf503bab6311da" + }, + "tools/DASHBOARD_README.md": { + "mode": 420, + "sha256": "f401cc54f64a4862a938263f37eaab22e6475e063e59726e02dce201f657dcc4" + }, + "tools/aiorders_to_tcb.py": { + "mode": 420, + "sha256": "9762d1fd45f3ab7c045088e222c5386a2cc63a6b25e1c09a49cbbd71837bfe17" + }, + "tools/cache_functions.py": { + "mode": 420, + "sha256": "18c037e48ab035764b0c877123ea7c998ef74240c63090e4f58142f57835e0b1" + }, + "tools/campaign.py": { + "mode": 420, + "sha256": "a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123" + }, + "tools/check_agent_config.py": { + "mode": 420, + "sha256": "8cb42d8de9cc441b547a00aecc7bfbc3619667121b30e150fec9e6c94683beb0" + }, + "tools/dashboard.py": { + "mode": 420, + "sha256": "c84aeeea6fb7d5e45ccec8882bacc59182149f108edd9eb1585eab9ede99911c" + }, + "tools/displacement.py": null, + "tools/evidence.py": { + "mode": 420, + "sha256": "0a7f8497ed287b4b64aa5ba0cb25735172408e38f3605b3ff90f009c7f02eb85" + }, + "tools/gate.py": { + "mode": 420, + "sha256": "4df5ee7022fb2601687f06eab788e2cea1e345e580c4e92c9d47be1787d37460" + }, + "tools/gate.sh": { + "mode": 493, + "sha256": "d7ba27b9b0c6a03df48e4edc71884ef9986743f8afa751dbfec116df5aeee18c" + }, + "tools/gen_addresses.py": { + "mode": 493, + "sha256": "5d995585d4192a19db7cc6d31ed811fa80264159fc114f03f58793f9b6c4908e" + }, + "tools/gen_stream_schema.py": { + "mode": 420, + "sha256": "a9c3e925bb3370371a2c8cde8d738c657fe1cbf68c39c6155562bbb20c551461" + }, + "tools/max_income_oracle.py": { + "mode": 420, + "sha256": "8d3ec6ba5c677486200eab7d1ca55e1350947829e603737307fa394ac8e40bcd" + }, + "tools/max_income_predict.py": { + "mode": 420, + "sha256": "85400c82b6cb7c6786b7fb6486bdc7bcb1140817f7a0ff0b4fa4f7dbeded8797" + }, + "tools/probe_report.py": { + "mode": 420, + "sha256": "f3ef378c10bae4a8bef754d853f0e86616bb95b5e051e04cac97d362587df1a7" + }, + "tools/reva_call.py": { + "mode": 493, + "sha256": "89477650d38985f84b61a664572de1cbde1268b879d3da5e874598942822998b" + }, + "tools/rng_ledger_report.py": { + "mode": 493, + "sha256": "b4f3f581eb6de50118fd531c848354816c20197711e668ce8b0cfcb4d0392cf3" + }, + "tools/rng_oracle_check.py": { + "mode": 420, + "sha256": "f27ca7f9aa03bc672f04067bc71e73ac83742997f12f5f55ce11151bdc39d98a" + }, + "tools/rng_site_report.py": { + "mode": 493, + "sha256": "fabd950c002265403f7b13a8868a158d867828c9930770ed096a2610b086ad35" + }, + "tools/rtti_map.py": { + "mode": 420, + "sha256": "9ac88a8aa566fe08336ba6e50905ec4253409e1317f491c415b1b9ebcc0713e4" + }, + "tools/run_agent.py": { + "mode": 420, + "sha256": "818097896b2e29dbdd2f53d37261236af302178ecd0ee083a3184a7bc33ff152" + }, + "tools/select_evidence.py": { + "mode": 420, + "sha256": "a6e648a77bcf799cc774ff9d0de83011283049ed0f0c44f6e08857a8410e9463" + }, + "tools/serializers.py": { + "mode": 420, + "sha256": "938904eb7b4ae30a61dd966494b112c6d52399f9d4a4658add06b40a54d6cb73" + }, + "tools/serializers_ghidra.py": { + "mode": 420, + "sha256": "d27da0afc8d043d31335bbe274fc76245e50cf0f9091a968b124f31c3a17997c" + }, + "tools/serializers_golden.py": { + "mode": 420, + "sha256": "29d2509b54704b80eff46a59a320719edb17a7eb67fd8acb8ad5e3c427d8e825" + }, + "tools/standalone_report.py": { + "mode": 420, + "sha256": "43a61c4031306732554aca23cd95b57d35f2a870766c33ccf8e005f22436525c" + }, + "tools/streams.py": { + "mode": 420, + "sha256": "57ec4ec5ad222a74f4461d70277d258e51779ae53ff74fd0e07eb51d4bae0afd" + }, + "tools/strfootprint.py": { + "mode": 420, + "sha256": "3b0db212c0b091ae2f63b866ee331435d013c535f233ec34ae3dfb63ded852dc" + }, + "tools/tcb_from_json.py": { + "mode": 420, + "sha256": "8fe09cff16802fda34db24f6f888610baa258399ab39173586b91a7a162f231a" + }, + "tools/techid_table.py": { + "mode": 420, + "sha256": "2c644bdbd3774b70dfdae7e77ff7a3a8e8563b58be7098a2d55ee30dc8b8fd07" + }, + "tools/turncommands_capture.py": { + "mode": 420, + "sha256": "0214d5da6f5f86e188bb2f03db8d3439267baee3a883c7df754601c7c1a38536" + }, + "tools/vmshot.py": { + "mode": 493, + "sha256": "09228bf8bd61918c49afc2b6da931fc8a7833be126be5384b85194e0e86eea44" + }, + "tools/vmwatch-install.sh": { + "mode": 493, + "sha256": "3c004f532422bd589a7294dabdf54d5a726f598c69012eaea3d73a748ad0123a" + }, + "tools/vmwatch.py": { + "mode": 493, + "sha256": "650d8232e46239a55b96f26d581d7d9c5815415c9014fd2e5b846b68c1346b39" + }, + "tools/vtable_map.py": { + "mode": 420, + "sha256": "2e19223efb79421ab4b807e32f0854b2592d7d3a3a52c12e84e47460b960f740" + }, + "tools/windows-housekeeping/Invoke-Housekeeping.ps1": { + "mode": 420, + "sha256": "a97911a3cfbd47813282efa7f52b4de03d28912487fffe0e7e7aa1a250cac01a" + }, + "tools/x86disp.py": { + "mode": 420, + "sha256": "a05a42d63813d2025a4da65bdd684e82a89c95c52901a8f490391e31c49a122e" + }, + "verify/config/test_agent_config.py": { + "mode": 420, + "sha256": "8a7a406f062c3387ec5b99b35f3befb64f676efef174047060c967074545e3e3" + }, + "verify/config/test_source_check.py": { + "mode": 420, + "sha256": "c16731e31a54256dde4f88d33007759ff21ad8537ca6cd2be38b9e34c59525ad" + }, + "verify/design-rules/SHIP_DESIGN_RULES.md": { + "mode": 420, + "sha256": "4decf51bfa03e8ab2b58478198332e834233100126949b920349f210b54521c8" + }, + "verify/design-rules/data/HiverInvasion_FleetTemplates.csv": { + "mode": 420, + "sha256": "327e799be3c75361267725c157f78b425d3a1df6ed6595104b2ce9993e8ae3a7" + }, + "verify/design-rules/data/UpstartApes_GiftFleetTemplates.csv": { + "mode": 420, + "sha256": "89939d70eb6ed48ec776a4a6fc50ccb68fc6be7162706bab199484bf7cdd5e44" + }, + "verify/design-rules/data/_defaultweapons.txt": { + "mode": 420, + "sha256": "ef9e33aa32840f1878ece67f88556d81a4255f63f6e8aad4ac73e575ef2c7ec8" + }, + "verify/design-rules/data/_turrets.txt": { + "mode": 420, + "sha256": "35de6ad40895f76298eef7dc354c739a5a59747b689c2324cfa5040442eddc18" + }, + "verify/design-rules/design_rules.py": { + "mode": 420, + "sha256": "772f70c7d6be2d20d10cf4f5d412233b267440d63d431bf7b320c29f3f06e313" + }, + "verify/design-rules/stock_designs.json": { + "mode": 420, + "sha256": "b363023e02899bc03e4c8b8423b394ef8abb190b1bcf437aade19be463353f68" + }, + "verify/design-rules/stock_designs.py": { + "mode": 420, + "sha256": "fe020f6058ec25b6fc456146abb6594825ee2b98ba5c5c5eeaff969ce4596031" + }, + "verify/design-rules/test_design_rules.py": { + "mode": 420, + "sha256": "6f6764d21d7a3337ec8aba9651b19947239a7d06a6cdf7c6e9be5ddefcfdd186" + }, + "verify/fpu-cw/cw_census.py": { + "mode": 420, + "sha256": "07b7ac5ae60df487867b592e82e9f74201b695437fba248813bc07305a21c7cc" + }, + "verify/fpu-cw/trace_bitdiff.py": { + "mode": 420, + "sha256": "b25c93d70e67ed2fa81e5ea7184f8ffe0cbd2e7c043bc94f923c3db1cf101b59" + }, + "verify/harness/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/harness/cb/README.md": { + "mode": 420, + "sha256": "7a656251a600a9343ffa8afaa4f227e7cb8086be7d3c6879c0a403ab8acec71d" + }, + "verify/harness/cb/cbdo.sh": { + "mode": 493, + "sha256": "6f3d7fd35aeedb0841be9df0ba19136be2e7ccb5c44950d8aa821c61727232a6" + }, + "verify/harness/cb/cbfull.sh": { + "mode": 493, + "sha256": "609101217e9d35bf1caa5cb66f362e0796fcf6c1264bd92ff550d0ed12ca2521" + }, + "verify/harness/cb/cbload.sh": { + "mode": 493, + "sha256": "2e56bb64609434f6dfc6ebcf71a3c839ae59170db80c996ebee7c2219cb664ec" + }, + "verify/harness/cb/cbmenu.py": { + "mode": 420, + "sha256": "fb2e72a1a5390aa28dcae0fbc2d7b920b06bf3b1ea161bb757d4db3c8cd23af2" + }, + "verify/harness/cb/cbstep.sh": { + "mode": 493, + "sha256": "5896b21e8cf08b40e2a2958e44a51beb7e5b5a58cf35d405879a5df7cdd375b4" + }, + "verify/harness/compare/TRACE_FORMAT.md": { + "mode": 420, + "sha256": "cf6f61dc255e3aed0f293c141d9fd3b0d5e848e3abe4dcf50b4ca2d58e37c024" + }, + "verify/harness/compare/mkfixture.py": { + "mode": 420, + "sha256": "f081dd92b9e82e838f59ce8f9c79d5cdebb825255f13b6c49178516e7f3ef118" + }, + "verify/harness/compare/oracle_parsers.py": { + "mode": 420, + "sha256": "b1a745bfa63b447c87279afdb2885a0218f2a0dc2539f79414f8a2534e24c97b" + }, + "verify/harness/compare/test_tracecmp.py": { + "mode": 420, + "sha256": "f25eb9d5ea7215b8366c44924fb49a5f028a0188e709dadfd90cfbc30db0823e" + }, + "verify/harness/compare/tracecmp.py": { + "mode": 420, + "sha256": "d6ca461cabf15351e2040150144084b93d3caf22d879ee158ede04052ab03cbb" + }, + "verify/harness/l2-ui/README.md": { + "mode": 420, + "sha256": "48effd757522ee5ff70af6d77449dcfd805bb7744c9093d01c039b86e030d7f6" + }, + "verify/harness/l2-ui/launch-b.cmd": { + "mode": 420, + "sha256": "8f26c451a88765c49ecb3c8160ed4a3d06f1100a6d9323b305efc01f039dfada" + }, + "verify/harness/l2-ui/socks.ps1": { + "mode": 420, + "sha256": "401cce47d495507f60eeae45942c146586464959046ef9715cd69605753af027" + }, + "verify/harness/l2-ui/ui.ps1": { + "mode": 420, + "sha256": "355c8f222bf99f547d9d16a1665a072e6914917d48e4db22b8438d2d83708e97" + }, + "verify/harness/profiling/battle-run.sh": { + "mode": 493, + "sha256": "79f14ded5c3731efd655a6f9a4ac6795f3ace0a9b064c43ba4bf9a2cb988a7cf" + }, + "verify/harness/profiling/funcs.py": { + "mode": 420, + "sha256": "841a6f5e5dc1d845b7439c9ce9dc08e045864929b0f367908abea7ab54259207" + }, + "verify/harness/profiling/funcs.txt": { + "mode": 420, + "sha256": "d35b17dbb3970f5c24ae862748c5b91aee87491968719c34e48a8b88c0615835" + }, + "verify/harness/profiling/iat.py": { + "mode": 420, + "sha256": "82465ef8284739ab3d3c99acd0fa6cc5a4bb80c8680eb7a949218305fd10d3d3" + }, + "verify/harness/profiling/inspect.ps1": { + "mode": 420, + "sha256": "35bc7dd85108e3f4686975ef7f510b1cc9306b5839329f7fdd2a5ac27a140611" + }, + "verify/harness/profiling/names.txt": { + "mode": 420, + "sha256": "89d90f934e445447c68569448471a8917ee0bbfcb5fb96bba3e6566be9b0779c" + }, + "verify/harness/profiling/parse.py": { + "mode": 420, + "sha256": "680df36804e923d74da8e9fd8877b5ea66975c9ce8d239ad4507c829f881722a" + }, + "verify/harness/profiling/sampler.ps1": { + "mode": 420, + "sha256": "ef0edde8535ef07e508a732f8e11dc3d50fef966e5a9e4d8161085a83372993e" + }, + "verify/harness/profiling/shots.sh": { + "mode": 420, + "sha256": "87e554abf08068d6438417e266f1e7820e34a900a7d559fa0a7c4a2fa18002b3" + }, + "verify/harness/profiling/timerres.ps1": { + "mode": 420, + "sha256": "80362eb9ec8bd882abddf2507236e70db2dd21f64c9db07d217bdd49361ed89c" + }, + "verify/harness/profiling/turnloop.sh": { + "mode": 493, + "sha256": "8e28f076599a9eb53eace77ad77a10b0770f1ce617c7a76e6a2b9044ee0c8774" + }, + "verify/harness/profiling/turnwin.py": { + "mode": 420, + "sha256": "e2033a8e519a7c9f65f67b5592494a9843eb8bef41af6ab5652343aa86bd4c60" + }, + "verify/harness/profiling/ui.sh": { + "mode": 493, + "sha256": "e66774a4d070285e6c6a62472000222a691c7192096039e75fa726bab9f6afb7" + }, + "verify/harness/run-recipe/click_helper.ps1": { + "mode": 420, + "sha256": "150a1c17e12e8479244107cd01d95233c84d550e95a6f5e352fd529818a21d7d" + }, + "verify/harness/run-recipe/display.cfg": { + "mode": 420, + "sha256": "76b4876abd1cd163a5cc6b65a6106670476cde40c9b868a53a0dc45f517e132f" + }, + "verify/harness/run-recipe/dxvk_d3d9.log": { + "mode": 420, + "sha256": "f48ff2684a78cea563ab7f10e2f005638044352fe9cfc30dedf0f26ec7fecf23" + }, + "verify/harness/run-recipe/launch.cmd": { + "mode": 420, + "sha256": "90a6effe8ae835bf641cc775a17ad709198fdfeded4379f658255a82f594e5c2" + }, + "verify/harness/run-recipe/lvp_icd.x86.json": { + "mode": 420, + "sha256": "b89a08526e043a84c3a2550b5ea2fd7692f547ea295e8dd70e79c64fe81f6fbf" + }, + "verify/harness/run-recipe/run.txt": { + "mode": 420, + "sha256": "12c83295dae9db4a98142ef8fe7e45321c90960428df504ed3496e27838a0413" + }, + "verify/harness/run-recipe/session.log": { + "mode": 420, + "sha256": "e9ce9b496e9ee55bd64cc27afe594cee6136dfbc6cf9d9d44e9914b27e568a93" + }, + "verify/parsers/PARITY_NOTES.md": { + "mode": 420, + "sha256": "beecfe60358f5977529bd0784ffe18ca03c38d2dd36766f351c6a9addac83bda" + }, + "verify/parsers/effect_txt.py": { + "mode": 420, + "sha256": "7219045dfaf305dd64218ff8096e8cac69a53df1aabdf85f15e6c5e01c963e74" + }, + "verify/parsers/flat_kv.py": { + "mode": 420, + "sha256": "a26149cb21d152be5cbada3b764e042187daf2ec306b2dba1081737af6a7ae4f" + }, + "verify/parsers/manifest.py": { + "mode": 420, + "sha256": "62a08cfd82d5f701ae3b3f567bc8382cfd1b33b49bf6049ade47a932ef7109da" + }, + "verify/parsers/mars_data.py": { + "mode": 420, + "sha256": "90c7b8421044b1d7e262e6f20e5af391d97a712b12c2d3f0c3033567881d536f" + }, + "verify/parsers/verify.py": { + "mode": 420, + "sha256": "cc5d619bd6b3ca161b4bc8050c30e7d77f6bd3e964c971cc29e051efc1e25a33" + }, + "verify/publishing/test_dashboard.py": { + "mode": 420, + "sha256": "cc44e516da663f5d27bf817cbcbf24c052f2db52ee887d08d7c271caf8f6a000" + }, + "verify/results/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/results/compare/.keep.md": { + "mode": 420, + "sha256": "4581f3fde61549f4c621b2f114228a62d066a528a270a9b41703238ff841ac1d" + }, + "verify/results/compare/b2-techfx-compare.json": { + "mode": 420, + "sha256": "b0533322d44b1694f36baf86d6660481ac5b22ce9c1d6b6b9668ea064cc08f4b" + }, + "verify/results/compare/b2-techfx-golden.json": { + "mode": 420, + "sha256": "4298a8229b85a3329c78d3618d3eb19aff096cb2da66e9238fd843d639b17f11" + }, + "verify/results/compare/cr-compare.json": { + "mode": 420, + "sha256": "f20e9a7c71412688c02b607f08a5224367598eba552e35a50e9922ca8f12edab" + }, + "verify/results/compare/cr-compare.md": { + "mode": 420, + "sha256": "0eb905744120b1cf264ba6e57497db64fdc8e225a87ef7bb86cf3f026ffe4d0d" + }, + "verify/results/compare/cr-replace0.json": { + "mode": 420, + "sha256": "f1556c5d74c236c82617061b5ec60b1a7ce4652bce87b6595eb89406ad832240" + }, + "verify/results/compare/cr-replace0.md": { + "mode": 420, + "sha256": "6f571e46350a29b811bc12b48e12ed2d443acba5f5be6310e0531c3790425d48" + }, + "verify/results/compare/cr-replace1.json": { + "mode": 420, + "sha256": "d0c1d6bd4a1f8f5343b584662d8202184479b01a51480443a97242daf27fccc2" + }, + "verify/results/compare/cr-replace1.md": { + "mode": 420, + "sha256": "111b51290468d5482a1910194487d26dc1b3ec534d699aa07a564de66bbf9d98" + }, + "verify/results/compare/eventlive-b3-t1-5.json": { + "mode": 420, + "sha256": "4f305180bcbe93523f407d1f8406ac52b84d4a20e2d611940716618fd37edfde" + }, + "verify/results/compare/eventlive-b3-t1-5.md": { + "mode": 420, + "sha256": "ec71d98210218fd5b5da69f6b17cf6991128a58a0358a6504e6497dd39159764" + }, + "verify/results/compare/eventlive-b3-t1.json": { + "mode": 420, + "sha256": "84f66c1e6a23f737d1615e75fd22fba958bfd851067acb42503e32a2812dd1de" + }, + "verify/results/compare/eventlive-b3-t1.md": { + "mode": 420, + "sha256": "299b8dd3f2cf42cbc9e6254fac01ee3dcb6abb0758c8f298beb6cc6464db4cfb" + }, + "verify/results/compare/eventlive-b3-zuul.json": { + "mode": 420, + "sha256": "a1a92c06202c8168362c33442edeb7ea7f76f6e586e5deea1b86dff9dc8f3494" + }, + "verify/results/compare/eventlive-b3-zuul.md": { + "mode": 420, + "sha256": "544791f9cd8b77a2d865f2a918d97e74559529f29943171bd1e8e2d8a120dec5" + }, + "verify/results/compare/l5-budget-boundary.md": { + "mode": 420, + "sha256": "6877f9cfc602876b4c213106493853822471a5aaa3e4e8ebf8dffd31373d89d9" + }, + "verify/results/compare/mf-after.json": { + "mode": 420, + "sha256": "586a824a0d0af1de0808c33c1c392c4022128f9c1305dc32b6749e8fa493e8f4" + }, + "verify/results/compare/mf-after.md": { + "mode": 420, + "sha256": "659be3da71cabfd3c34eb818f1bac07f848c58a878fd62d81ac7b1daa5f3ce03" + }, + "verify/results/compare/mf-before.json": { + "mode": 420, + "sha256": "259272b45ca9c63894d8c91e399ff91d7258b7836f1a0d5c91dd3972586b2498" + }, + "verify/results/compare/mf-before.md": { + "mode": 420, + "sha256": "4572530a1c93865d27aba47c23c418773ad39a834c8be1c004f5cc2f16f927a0" + }, + "verify/results/compare/output-ref-turn2.md": { + "mode": 420, + "sha256": "43a569165f9239f13edc31c7a848a6b839829ae06dd6e3b85d289a1552eb8d34" + }, + "verify/results/compare/output-zuul-and-ref.md": { + "mode": 420, + "sha256": "9bc0937c0b3e1e3e5a6cd3768dbfeae56a897615396b00834bd083611f3ef431" + }, + "verify/results/compare/recap-b1-compare.json": { + "mode": 420, + "sha256": "8e86cdd32373e41ac1cdc130b18acc188b35d5ab7112e1fc655d134c44ad9712" + }, + "verify/results/compare/recap-b1-compare.md": { + "mode": 420, + "sha256": "496a3246eda3be76d9d0f08726369d40aa879cf60a510f16209ae77585582841" + }, + "verify/results/compare/recap-b3-compare-t1-5.json": { + "mode": 420, + "sha256": "80eeeeccf15f427b75b053d06f6b32b1692a2ed9ca6b9a51c244e4166a1b0e78" + }, + "verify/results/compare/recap-b3-compare-t1-5.md": { + "mode": 420, + "sha256": "5b6295bff72d599f142e75fa913ca2da590322a6fd1d104328847159fc5e7802" + }, + "verify/results/compare/recap-b3-compare-t1.json": { + "mode": 420, + "sha256": "10d0d5f8aff90f6cce3cd87e30c7f8ff896c5b369f4dc8288141451e25727cb9" + }, + "verify/results/compare/recap-b3-compare-t1.md": { + "mode": 420, + "sha256": "2b0eb8865bb07a2dd8fd038bc19e38a34fbf19b9d3f6fabae085c16a74fbcc6f" + }, + "verify/results/compare/recap-golden-trace.json": { + "mode": 420, + "sha256": "50bb7e34ab2359adc83cc0647fc995d207173fcf6134e413565af450958f652f" + }, + "verify/results/compare/recap-golden-trace.md": { + "mode": 420, + "sha256": "586fc86fe78659902a5d0859c0bce44623bfcda0f375bb57b293796862c48e17" + }, + "verify/results/compare/recap-misc-compare.json": { + "mode": 420, + "sha256": "c73f3f3593a0d715a675b29c7b4f49c02a97578ee9d867ce15d217c43da2e466" + }, + "verify/results/compare/recap-misc-compare.md": { + "mode": 420, + "sha256": "b435c92441742b2b1b0236bfacff10c17757696baf446c544c4759b7e31237ed" + }, + "verify/results/compare/unlock-b3-t1-5.json": { + "mode": 420, + "sha256": "a4dbfc89f6f3d154edbbc62842a4e8d8a3c69b9589eafc1bb496b26a3ecf6e3d" + }, + "verify/results/compare/unlock-b3-t1-5.md": { + "mode": 420, + "sha256": "832626087ddc2da9064a192a1acfb3869d4a52c6398a070cbd66eaa1bdbe2e2e" + }, + "verify/results/compare/unlock-b3-t1.json": { + "mode": 420, + "sha256": "6d8938b8eaeb2da1c7fdccb1fb68f8e3a2b5b7f492cc096326cf3aadb2ab8d55" + }, + "verify/results/compare/unlock-b3-t1.md": { + "mode": 420, + "sha256": "8911e671a143c25765cd7c0b67f1b9cb23f4040fe26aad40ce59b1db858afdcd" + }, + "verify/results/compare/unlock-b3-zuul.json": { + "mode": 420, + "sha256": "3099d248d58c4395e92d65ad18c28227695a7c7935193be6c2bcf752fa0e0f04" + }, + "verify/results/compare/unlock-b3-zuul.md": { + "mode": 420, + "sha256": "f53b165c8502ba9b2416935179fdea68153fb6ebd2458b4ec9b4ecf6c741c91f" + }, + "verify/results/data-catalogs/crosslink.json": { + "mode": 420, + "sha256": "2966ba9780910b596e350c4f81eef5d74c4d235dc3a8d5cf6ad5fd53a407254a" + }, + "verify/results/data-catalogs/schema_stats.json": { + "mode": 420, + "sha256": "6e3f669ae77cdfa2c5cd6bbd29f5cecccd452d9a7b2397c2c23db6c33fda0a2a" + }, + "verify/results/data-catalogs/shipsections.json": { + "mode": 420, + "sha256": "2e7057c608d0cea755bf9dbfa291864d33e3f09ad5deff7bb3a8045bde7a4ab5" + }, + "verify/results/data-catalogs/strings.json": { + "mode": 420, + "sha256": "c36c1b2b9a2eace438f93698df6388fa94aec30d372bcd0bee7e09bb33c54d7c" + }, + "verify/results/data-catalogs/tech_tree.dot": { + "mode": 420, + "sha256": "96ce0492a1284167d82af2c07a8f8a0b3bb9864bc137195560d909df6a913055" + }, + "verify/results/data-catalogs/tech_tree.json": { + "mode": 420, + "sha256": "18df799410c5f650e15808c1ef247b4768a3dfff93795a5ec7f56cd6c4afc597" + }, + "verify/results/data-catalogs/weapons.json": { + "mode": 420, + "sha256": "a446b445c21519fc7992c84155c9652239567030843c405b4219d1f65022db01" + }, + "verify/results/fpu-cw/README.md": { + "mode": 420, + "sha256": "3928fd0f6a03a8ff0b170a7ed23a059120b5014b13bf6870d4f187ff299d5975" + }, + "verify/results/fpu-cw/cw-census.txt": { + "mode": 420, + "sha256": "b7854dc5cd249a2490d04264d758f1894a9ddf4b95573650365d47587c7589d3" + }, + "verify/results/fpu-cw/run-007f-rep/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-007f-rep/(Autosave).sav": { + "mode": 420, + "sha256": "ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918" + }, + "verify/results/fpu-cw/run-007f-rep/shim.log": { + "mode": 420, + "sha256": "73b5b86da743a1cb37d4c0d97b29978923b55a7a47f80c7fa20ca47d424f6c02" + }, + "verify/results/fpu-cw/run-007f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-007f/(Autosave).sav": { + "mode": 420, + "sha256": "ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918" + }, + "verify/results/fpu-cw/run-007f/shim.cfg": { + "mode": 420, + "sha256": "998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363" + }, + "verify/results/fpu-cw/run-007f/shim.log": { + "mode": 420, + "sha256": "5721f47d7fd862156ce2cd1832cd1739636b5aee53c82323ef233ff6401775bb" + }, + "verify/results/fpu-cw/run-007f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "149c4fcf750fcf9e81dc86d8696271d9a14ca788891ac95cf96995e3737c68e4" + }, + "verify/results/fpu-cw/run-027f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-027f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-027f/shim.cfg": { + "mode": 420, + "sha256": "f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd" + }, + "verify/results/fpu-cw/run-027f/shim.log": { + "mode": 420, + "sha256": "4bd3f88bd27eb2e3ae1f42f4dc2ccf1cc5df1a2c1171d2eff8be86e7be684187" + }, + "verify/results/fpu-cw/run-027f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "b5d2611d0c08946c1e1eaa244a7e44782eac2592c392efb3d7147fbbd86816e7" + }, + "verify/results/fpu-cw/run-127f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-127f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-127f/shim.cfg": { + "mode": 420, + "sha256": "1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271" + }, + "verify/results/fpu-cw/run-127f/shim.log": { + "mode": 420, + "sha256": "03f1999dc8964912697782e856f89f190b6680d5732f2cd00b1569bff727a545" + }, + "verify/results/fpu-cw/run-127f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "fb1b9063cc53a6b39ea0a58e0545b9334fbd15d65dd839e72f2c4febbb1dd3f0" + }, + "verify/results/fpu-cw/run-137f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-137f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-137f/shim.cfg": { + "mode": 420, + "sha256": "8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9" + }, + "verify/results/fpu-cw/run-137f/shim.log": { + "mode": 420, + "sha256": "83aa72572412d5248179397895029367685fd590d795991ab91c98cf9828ae29" + }, + "verify/results/fpu-cw/run-137f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "aad1fb6abd86beafb9f44e2c6060157e22618811d105f2379252e19008839b66" + }, + "verify/results/fpu-cw/run-1a7f-rep/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-1a7f-rep/(Autosave).sav": { + "mode": 420, + "sha256": "e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7" + }, + "verify/results/fpu-cw/run-1a7f-rep/shim.log": { + "mode": 420, + "sha256": "38f2824fbe91bf2fa1ef55473a7468707248420805b6f6dc85245fd34fa94200" + }, + "verify/results/fpu-cw/run-1a7f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-1a7f/(Autosave).sav": { + "mode": 420, + "sha256": "e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7" + }, + "verify/results/fpu-cw/run-1a7f/shim.cfg": { + "mode": 420, + "sha256": "59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588" + }, + "verify/results/fpu-cw/run-1a7f/shim.log": { + "mode": 420, + "sha256": "a1bb0bd06dae6955ec09e7d0c6cd1e68e19aa2a114256cdeae1275def0a63091" + }, + "verify/results/fpu-cw/run-1a7f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "b9a7affb8235626fcfdd5afe143e4ec03be869b6b386bd9ac78389097df88cef" + }, + "verify/results/fpu-cw/run-off/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-off/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-off/shim.cfg": { + "mode": 420, + "sha256": "6a19c362121a3dba0aac857d6e998131e8b2478f19edcdcbd58006645d096c70" + }, + "verify/results/fpu-cw/run-off/shim.log": { + "mode": 420, + "sha256": "9e3cbd005f0b68037681939b289834c55629bac0e9cd35ac55e6d8ef5333a116" + }, + "verify/results/fpu-cw/run-off/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "ec2271c0d7e09fe51ead7f8d58859c692e8b302233191841d506ea14248caa8c" + }, + "verify/results/fpu-cw/state-checksum-diffs.txt": { + "mode": 420, + "sha256": "3417dfc1b75ad896ac6a5e974d51248eecca319565e2422e146897d19e121b68" + }, + "verify/results/fpu-cw/trace-bitdiff.txt": { + "mode": 420, + "sha256": "8f86707f26f30638097c85f0db6df219adbfebac4e9ec24f1feb8bfce112d4f2" + }, + "verify/results/multiplayer/l2-combat-hud-client.png": { + "mode": 420, + "sha256": "02c86592531ab2889a0eae04e44a644d33c754096fe60aca6640068a7a3f421f" + }, + "verify/results/multiplayer/l2-combat-hud-host.png": { + "mode": 420, + "sha256": "a56daf36fcc88627b29116ad9874c95a3c46960074ff9b823aa15c4ea2660dd7" + }, + "verify/results/multiplayer/l2-combat-loading.png": { + "mode": 420, + "sha256": "f94a718cee08e1b7d346490058f13a107d23aaa7c269fdd53b159a75d62fa558" + }, + "verify/results/multiplayer/l2-combat-round-draw.png": { + "mode": 420, + "sha256": "c1b8424540b702915302f9ff38eaf765e8e95fddc3c5c4d894438dcfcf8b6256" + }, + "verify/results/multiplayer/l2-combat.pcap": { + "mode": 420, + "sha256": "0f112ef96da6c465dbda51baf99eedd66967eed61c097f643bf6c66fc26af31b" + }, + "verify/results/multiplayer/l2-encounter-query-client.png": { + "mode": 420, + "sha256": "4c41b268ad256b0109483a2d9b5ba35de7b9cadb4eb32ef4a68f7867e6e747fd" + }, + "verify/results/multiplayer/l2-encounter-query-host.png": { + "mode": 420, + "sha256": "8c7b0c6d65ddde45eb3447f044589ffc36500b40c4d676af8321f800162f38a0" + }, + "verify/results/multiplayer/l2-fleet-built.png": { + "mode": 420, + "sha256": "6ac91fcf9b42caef50134de01804046d8e60d0fd3966592e9738ceff511949c2" + }, + "verify/results/multiplayer/l2-lobby-client-joined.png": { + "mode": 420, + "sha256": "4a8e698c9ea935449ff0421cd59acd517ebffa388a7572279b28be0369141ff6" + }, + "verify/results/multiplayer/l2-lobby-host-created.png": { + "mode": 420, + "sha256": "e6a7377cabafa973396cedafa5ad5b4863a42f9866709db88faf9572e0ed3c98" + }, + "verify/results/multiplayer/l2-move-warning-dialog.png": { + "mode": 420, + "sha256": "43c6219d74bc0cb28495f13784cdbd3a90c89746b108824c3a2138dbdadcb53e" + }, + "verify/results/multiplayer/l2-socks.log": { + "mode": 420, + "sha256": "109b630d6548d07404f9f905e6c527f10e25221698f1b66226f67f94c5f294b5" + }, + "verify/results/multiplayer/l2-turn13-client.png": { + "mode": 420, + "sha256": "d19f17c4219f21f6c9950440d528a1a91fe3907761df21fd0ba99321b8820baa" + }, + "verify/results/multiplayer/l2-turn13-host.png": { + "mode": 420, + "sha256": "811efcfb571d60435f772a3b619bb329717d1e162b88e440ec0d636b1c6042fc" + }, + "verify/results/multiplayer/w2-internet-browser-no-error.png": { + "mode": 420, + "sha256": "6409b977056c95b29928a0098f75fffd71c501128f9d9325c3000837131c8791" + }, + "verify/results/multiplayer/w2-join-manually-dialog.png": { + "mode": 420, + "sha256": "86904e94a5aec41c1e89271d2712558c3b5055bd2ae4fededfda103d1e22fb71" + }, + "verify/results/multiplayer/w2-lan-browse-listing.png": { + "mode": 420, + "sha256": "6f5d16fa719fb63dd627fba551221c7665b69002e83fe35b8d84912cd7d8ce83" + }, + "verify/results/multiplayer/w2-lobby-client.png": { + "mode": 420, + "sha256": "ede652b21e2a4ea07c8132e4080ba903d1052ebca336bb007e1e8efa62787f10" + }, + "verify/results/multiplayer/w2-mp-turn1.png": { + "mode": 420, + "sha256": "59f9a1f5d8c0fff45d3ae3406dfd9878a5915f18e999d909a5238a90a3b86ed6" + }, + "verify/results/multiplayer/w2-mp-turn2-client.png": { + "mode": 420, + "sha256": "d9da4c151cd8290f80b31eb5ed8a74a0a30a87d1f7a80a179fa082a9439e08e5" + }, + "verify/results/multiplayer/w2-mp-turn2-host.png": { + "mode": 420, + "sha256": "910efd36b4a7c1a85d8ad487660f856339af037b9b00fef0cafd5e77ebdc36e5" + }, + "verify/results/multiplayer/w2-tier0-filtered.pcap": { + "mode": 420, + "sha256": "e108778fd1afb7718c53a4164310b8523415ef073706d310583dab424e5921cc" + }, + "verify/results/saves/ac-turn20-raider.sav": { + "mode": 420, + "sha256": "ee787db8f63d8f564c597bd5a82709790a0fdf47827912037f96b736f2cbed34" + }, + "verify/results/saves/ac-turn22-raider.sav": { + "mode": 420, + "sha256": "0faeaa601e6a867876819e5646b85f8787851093b8e6bd6e3946eb867f2dcc74" + }, + "verify/results/saves/ad-oracle-A-post.sav": { + "mode": 420, + "sha256": "a634510e7208cceb10d8ce016ceb0153601f11d7291f08122bcdb6418e313331" + }, + "verify/results/saves/ad-oracle-B-post.sav": { + "mode": 420, + "sha256": "676b1778880b5d4784ba7f6ef48b1a8e56745adab70a815943b7744876686260" + }, + "verify/results/saves/ad-turn27-two-raiders.sav": { + "mode": 420, + "sha256": "1c8baa27680809d585ab1728391e82729642d32aaedffd5bf95b616f0a11a436" + }, + "verify/results/saves/ap-deploy-turn15.sav": { + "mode": 420, + "sha256": "844f2b746060dc2c4e2099cdc6ceffd5f55ef858c9e347df28c8aca3041f7165" + }, + "verify/results/saves/ap-oa-turn16.sav": { + "mode": 420, + "sha256": "e296394f578b3a5668e5934b9eec8d6c4638ca7411200078f97de1abd346f4c5" + }, + "verify/results/saves/ap-ob-turn16.sav": { + "mode": 420, + "sha256": "262f8bda97c9511d8d2b41e6a8a0582d6f5364c2b01b1caf99e639d0e4f53ebe" + }, + "verify/results/saves/ap-turn22-spydetected.sav": { + "mode": 420, + "sha256": "91381bd7e722ac3847795a402d78ebb31d74dbb5d2909f33d243aec3ef8abaf8" + }, + "verify/results/saves/ap-turn25-spydestroyed.sav": { + "mode": 420, + "sha256": "46380fcf4498d67507e4471eb9ee3762647c53ee5473be142fe5c34e37344bc3" + }, + "verify/results/saves/ar-oracle-A-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-oracle-A-pre.sav": { + "mode": 420, + "sha256": "15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca" + }, + "verify/results/saves/ar-oracle-B-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-r1-turn43-post.sav": { + "mode": 420, + "sha256": "37f4a54fd32303fdcc86522b07104fbf2fcb124eec9b1f7005b3446fefcc429f" + }, + "verify/results/saves/ar-r2-probes8-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-turn37-816raiders.sav": { + "mode": 420, + "sha256": "b6f4e05ff226eabd1695003b36293553642553cea96ef417364393e2332a7094" + }, + "verify/results/saves/as-turn14-predeploy.sav": { + "mode": 420, + "sha256": "53986f8511cbf9920f32e2ea406ccf531dd08903fa5d06024fcf03ea7627221d" + }, + "verify/results/saves/as-turn15-spydeployed.sav": { + "mode": 420, + "sha256": "854a10fa1ea602f0f7909f9bf9154942e56ea5fa1db4cce47d6d32bf53952e08" + }, + "verify/results/saves/az-turn11-16destroyers.sav": { + "mode": 420, + "sha256": "501583c7cf2ac81c9db3191203cd3dc5ba5b9e228b9b9ce3dbdcc3650d0070a9" + }, + "verify/results/saves/az-turn23-tarka-comraid.sav": { + "mode": 420, + "sha256": "3d5eb826c149d1fd0278c746f32e6148ca9883a1bc5b522c0d5e6e13fac9788a" + }, + "verify/results/saves/bp-pinA-turn28.sav": { + "mode": 420, + "sha256": "e913ff41188211c02d536da616337544e64133996cd7cc7a6521a8df1960226f" + }, + "verify/results/saves/bp-pinB-turn28.sav": { + "mode": 420, + "sha256": "724528ffde9a7514b69ab9e82ed3b8c8ade63d622c0720de30503a73a92df11e" + }, + "verify/results/saves/bp-turn28-pre.sav": { + "mode": 420, + "sha256": "16f63adbf383946db17c381998957172bca803406b7df78f3b03805fef0bbcb8" + }, + "verify/results/saves/bq/bq-1A-endturn.sav": { + "mode": 420, + "sha256": "1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39" + }, + "verify/results/saves/bq/bq-1A-post.sav": { + "mode": 420, + "sha256": "56980aa086e1a145b00f781b9d9cf618b152986f1c2267b9fd96cca0f1f604b9" + }, + "verify/results/saves/bq/bq-1B-endturn.sav": { + "mode": 420, + "sha256": "1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39" + }, + "verify/results/saves/bq/bq-1B-post.sav": { + "mode": 420, + "sha256": "b36ac0ec2986f3a814dd22ca312c895ba6ec8a0e55fca54d8a7fd08a2f96a2c4" + }, + "verify/results/saves/bq/bq-1bA-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bq/bq-1bA-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/bq/bq-1bB-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bq/bq-1bB-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/bq/bq-res-post.sav": { + "mode": 420, + "sha256": "28bbd9b5c377afcd8f075b535eb1036ee46acf71ab614e7091ccdbdfb3703db2" + }, + "verify/results/saves/bs/bs-C-endturn.sav": { + "mode": 420, + "sha256": "15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca" + }, + "verify/results/saves/bs/bs-C-f38-autosave.sav": { + "mode": 420, + "sha256": "0fe8f37479a702d2e4e7752e6cb160dc242f00a082dc4115b7d10c77b24989f0" + }, + "verify/results/saves/bs/bs-C-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/bs/bs-L-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bs/bs-L-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/cb-c3-turn1to2-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-c5a-turn1to2-pinned-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-c5b-turn1to2-pinned-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-turn2to3-autosave.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/saves/cb-turn2to3-endturn.sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/saves/certified-pairs.md": { + "mode": 420, + "sha256": "4e1cfb79cf5a51446b2eae21f91b565348ffa95a9ebac8f95e23019012aefb57" + }, + "verify/results/saves/cr/cr-oracle-autosave.sav": { + "mode": 420, + "sha256": "79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420" + }, + "verify/results/saves/cr/cr-oracle-endturn.sav": { + "mode": 420, + "sha256": "e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f" + }, + "verify/results/saves/cr/cr-replace0-autosave.sav": { + "mode": 420, + "sha256": "6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5" + }, + "verify/results/saves/cr/cr-replace1-autosave.sav": { + "mode": 420, + "sha256": "8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235" + }, + "verify/results/saves/determinism-hashes.txt": { + "mode": 420, + "sha256": "bfa0615c4b310ae21c09a7d373d5a9d8799f36a0460089e5950fa0edf9d614d2" + }, + "verify/results/saves/human-turn11-spytechs.sav": { + "mode": 420, + "sha256": "aa63dd3d5489884f70d9c35acfb06c23c84531f403798842e7b0cf8cde94d1d4" + }, + "verify/results/saves/human-turn15-spyprogram.sav": { + "mode": 420, + "sha256": "22306d26f8831b90a62c00a2ebad5a97e77017b62ee96a7439d4c2c76c455cca" + }, + "verify/results/saves/human-turn2-orders.sav": { + "mode": 420, + "sha256": "9a94dec562622310893d6f522a0fae06f1033470f4182098e808b175e7df7c8d" + }, + "verify/results/saves/human-turn3-noderoute.sav": { + "mode": 420, + "sha256": "6db0912a050a846c8f3a184811644c76df3fdb65e83dffbf70289e21cc098a90" + }, + "verify/results/saves/human-turn5-traderoutes.sav": { + "mode": 420, + "sha256": "3829e6c6d8f26cd1183a972bd66edadbd71364c11a224b0a6e40461011bcab29" + }, + "verify/results/saves/human-turn8-traderoutes.sav": { + "mode": 420, + "sha256": "afeb3b2d724e07cf59f15eb1bdb9fcf853391fc06fe21beb20c069ff75b2f836" + }, + "verify/results/saves/turn1-state.sav": { + "mode": 420, + "sha256": "a3f9dc4b49fc669c814b09b87a9c6795de21bac80a1c7bfe3901b8e239fa36cc" + }, + "verify/results/saves/turn2-state.sav": { + "mode": 420, + "sha256": "ab4ac2d7e2977260a4de916f65c7ecc6dd5b0094dac4bb51241317232ea17ab4" + }, + "verify/results/saves/turn2-strict-issues.txt": { + "mode": 420, + "sha256": "33a169a2de29ad502e9b7c0159cd543e0b4d71f2d9b3903f5be58c7846db2429" + }, + "verify/results/saves/turn3-state.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/saves/zuul-turn15-orders.sav": { + "mode": 420, + "sha256": "ef86a0d61de3533f023af5dc2b9a5720e4e0c5c97d900d88181603a13db7d045" + }, + "verify/results/saves/zuul-turn16-noderoute.sav": { + "mode": 420, + "sha256": "b6b5d283b62cc46bca914e86c34cf45e8960a653e818e59664087429bbb30103" + }, + "verify/results/saves/zuul-turn17-orders2.sav": { + "mode": 420, + "sha256": "1b863e684edecb4afe738ba30c8132065ebcf2d9977409325e714fe0173056e8" + }, + "verify/results/saves/zuul-turn17-rollpending.sav": { + "mode": 420, + "sha256": "aac5ba5b10ff1af6b0e38c565b2f0a60c16858ee4e89dd2a2f5b037eae95ee7d" + }, + "verify/results/saves/zuul-turn23-fleet23.sav": { + "mode": 420, + "sha256": "fd3748327d87b8c478f50fcd09d097eacff21e57d946ecb43b8119b4d0d78b1b" + }, + "verify/results/saves/zuul-turn5-species5.sav": { + "mode": 420, + "sha256": "48559ab5b719b332e47b4bf43af85a616bff1508125d62edb211b80637234af6" + }, + "verify/results/shim/ac/ac-probe-run-shim.log": { + "mode": 420, + "sha256": "b9b4a5f0e399e16b477cde0bd7e2c4ce378549eb5a467f7b8ae5eb64d75cb106" + }, + "verify/results/shim/ac/ac-probe-run-watch.txt": { + "mode": 420, + "sha256": "543d76d150aeb9318b9ae27acf638b8935eea30b1a2d47fb15354b584a458163" + }, + "verify/results/shim/ad/ad-r1-shim.log": { + "mode": 420, + "sha256": "fec98888b030ed42b84551aac1286c0baeaf15b8a545af068dc6605615e96df0" + }, + "verify/results/shim/aidesign/parse_aidesign.py": { + "mode": 420, + "sha256": "fbd4aeb71db548759bdb1ff65a5fdd0af6c192927e6ebe4b510f1083c3bdba13" + }, + "verify/results/shim/aidesign/sd-br-p1-hashes.txt": { + "mode": 420, + "sha256": "cd276116a51df01129f0e840d4c04f7964be34f75e51c384cd8df65969f458e6" + }, + "verify/results/shim/aidesign/sd-br-p1.txt": { + "mode": 420, + "sha256": "325cb9fcfa505ab2a93bbd00d60a7a4644b6b5970cb16a288cc7a43f2e825dd3" + }, + "verify/results/shim/aidesign/sd-pin-p1-hashes.txt": { + "mode": 420, + "sha256": "f0371c0a439d736ae7e67e71bd87d693481100d08243d16a1ac1f2ad0ab8bdce" + }, + "verify/results/shim/aidesign/sd-pin-p1.txt": { + "mode": 420, + "sha256": "45e693d279899e7a04cf59bda67190058896b56f3b0607d5aee21abb12f03071" + }, + "verify/results/shim/aidesign/sd-pin-p2-hashes.txt": { + "mode": 420, + "sha256": "e7d6dc12a940305087ee03dc7f8826f3c6343d24d8fea0f2aa78665d887138c9" + }, + "verify/results/shim/aidesign/sd-pin-p2.txt": { + "mode": 420, + "sha256": "b0206869206bc3a41bebb5175e31179f1a5d125a44b5ddfc10c67c4a0d13c22c" + }, + "verify/results/shim/aidesign/sd-t15-p1-hashes.txt": { + "mode": 420, + "sha256": "1ee71a623eb17e08c623ec8de3775218dc3a7c2de50d36a25dd2395382195962" + }, + "verify/results/shim/aidesign/sd-t15-p1.txt": { + "mode": 420, + "sha256": "df9f4906ee8bbb2efc9ba9a38c41607b89711d0bc9f705473d8448e9715d9280" + }, + "verify/results/shim/aiorders/cb-c1-turn2to3.txt": { + "mode": 420, + "sha256": "9d5014b346cb0fa9e2172f45db77c4437a03b069930eaaa80ea94e742891eb8f" + }, + "verify/results/shim/aiorders/cb-c3-turn1to2-run1.txt": { + "mode": 420, + "sha256": "fdaf27a32b93fdb3024f7a45f0d90b2cf833d3f592960027c3a6cf4ecbb8c616" + }, + "verify/results/shim/aiorders/cb-c5a-turn1to2-pinned.txt": { + "mode": 420, + "sha256": "d4daa0c2599c1b573ed59617243a392861dbc4e1fbeb707c7248708c015d998f" + }, + "verify/results/shim/aiorders/cb-c5b-turn1to2-pinned.txt": { + "mode": 420, + "sha256": "9682186176024242fddb901b10d9a5ad6beba91bd895c2001ca954fc293eab73" + }, + "verify/results/shim/aiorders/l4-research-run1.txt": { + "mode": 420, + "sha256": "5caf1fa25b7b8c2d6af213e59c6ec821be3c46cdd92a1024a6faf5d0a3b1d71c" + }, + "verify/results/shim/aiorders/l4-research-run2.txt": { + "mode": 420, + "sha256": "846ef2cfbc365e7ee2f481048978baf820d57026737261bfba3a328d59cdaad8" + }, + "verify/results/shim/aiorders/l4-turn1to2-aiorders.txt": { + "mode": 420, + "sha256": "c55d9b3c48cb552c02731003c26bb6dfcb8afb611c2a188d21fd4a39f550d269" + }, + "verify/results/shim/aiorders/l4-turn1to2-hooksoff-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/shim/aiorders/l4-turn1to2-instrumented-autosave.sav": { + "mode": 420, + "sha256": "e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d" + }, + "verify/results/shim/aiorders/l4-turn2to3-aiorders.txt": { + "mode": 420, + "sha256": "696c34996e4b5be0383794fae7ea114779f7fdd0a8cdceff5a00aeb07392933a" + }, + "verify/results/shim/airng/par-br-p1-hashes.txt": { + "mode": 420, + "sha256": "656b1d0c073d9988287e5b76543e42eb1c050d9ebc9872e2b7ec5208b7534b42" + }, + "verify/results/shim/airng/par-br-p1.txt": { + "mode": 420, + "sha256": "eadf1cfb7efd7b374472867ddf1cea5f60e30096090c950049f0c264b0299398" + }, + "verify/results/shim/airng/par-br-p2-hashes.txt": { + "mode": 420, + "sha256": "d97916075c7b4c10464962e9e38aed69288a4d68a16a369c1133df16fa134146" + }, + "verify/results/shim/airng/par-br-p2.txt": { + "mode": 420, + "sha256": "bda355cbbf07301cd6d3716eba32312261c402848c91780a97a6d5cce14c3d92" + }, + "verify/results/shim/airng/par-pin-a1-hashes.txt": { + "mode": 420, + "sha256": "5eb1b557826d45fe9d843b37a92aaef54cd1b8a60900f9c34b4fe25e4bd46a24" + }, + "verify/results/shim/airng/par-pin-a1.txt": { + "mode": 420, + "sha256": "17750bab77512434dcc9e66fc86cbfc34df497cadab5b732cf3b0ef3958e09a4" + }, + "verify/results/shim/airng/par-t1-br-p1-hashes.txt": { + "mode": 420, + "sha256": "7577c33ec33d9e94fb77225929c1f34a3dd94c18fe72a394017811b3b5d53467" + }, + "verify/results/shim/airng/par-t1-br-p1.txt": { + "mode": 420, + "sha256": "8bc9969e2da730d26cc5538b758858a00a4ba6ab2d398458ff4dece1edf8bf92" + }, + "verify/results/shim/airng/par-t1-br-p2-hashes.txt": { + "mode": 420, + "sha256": "7e60fc8615163e8ebccf22fc8910f2e7c4f72a9be7a74bc832bc2a0f64ade0da" + }, + "verify/results/shim/airng/par-t1-br-p2.txt": { + "mode": 420, + "sha256": "7e50a728eb5909bd602a9e6996b908b1b2665c8c983cc0258dad000c8bff8e35" + }, + "verify/results/shim/airng/par-t1-br-p3-hashes.txt": { + "mode": 420, + "sha256": "00ce6b3b4c9dbfd192d09b3b06d91b95576cee8a5a85fccdc36a85547fbdcbc4" + }, + "verify/results/shim/airng/par-t1-br-p3.txt": { + "mode": 420, + "sha256": "28cdf1f6b83c1764f1d1e51a67e3f873566b8503f8504ef52f5b5af24b21c0cb" + }, + "verify/results/shim/airng/parse_airng.py": { + "mode": 493, + "sha256": "3fafa7cf2363620d6a25248d085fbc4e3bd1fdbb9388a6795244834a9a2a2ed0" + }, + "verify/results/shim/ap/ap-probes8-d.shim.log": { + "mode": 420, + "sha256": "115545172568edc6a1d5bb3b559f968aa8a7aaa1f6aeba970daebce98fe56a0c" + }, + "verify/results/shim/ap/ap-probes8-w.shim.log": { + "mode": 420, + "sha256": "8af0897a884bb314958c5e6f2fccd88ff8b1890322dafd3bc904b3f983838620" + }, + "verify/results/shim/ar/ar-r1-ledger.txt": { + "mode": 420, + "sha256": "44bddfc0b9e94812a3a1cfd681a1350caedf2ed8e1174900c2f81c90dc95187e" + }, + "verify/results/shim/ar/ar-r1-probes.txt": { + "mode": 420, + "sha256": "c10251c9bcca5436dc42b2c0bd37b66c144aec4036f2069c2df9340fd764992c" + }, + "verify/results/shim/ar/ar-r1-shim.log": { + "mode": 420, + "sha256": "07003ee203d60a638cc8a1cb0a0f6b8042ba227705b4355f1254312c6dd54e28" + }, + "verify/results/shim/ar/ar-r1-sites.txt": { + "mode": 420, + "sha256": "d1923d549ef3567488d0382ae0ef75fa25c5b1b5812ee5349c5c47aea7a30514" + }, + "verify/results/shim/ar/ar-r2-shim.log": { + "mode": 420, + "sha256": "06dbf04cff5a56b0e55d8e73e5b1e3e9d9235f4afafc8139517b68d676781909" + }, + "verify/results/shim/as/as-probes8-run.shim.log": { + "mode": 420, + "sha256": "cd25c93d8b79e0f0df594fe681917fe880741a54a4188d4d72d2fbc6c42ba8d9" + }, + "verify/results/shim/bp/A-aiorders.txt": { + "mode": 420, + "sha256": "ee9f8bb1073e3bf02e115fdee014f79b11100a0e1e35e308c2bcd4b798302c34" + }, + "verify/results/shim/bp/A-shim.log": { + "mode": 420, + "sha256": "853eab98d09ff1e7a8e7da375a678561b02d6236adec627202ff3bb34d90e797" + }, + "verify/results/shim/bp/B-aiorders.txt": { + "mode": 420, + "sha256": "07daeacf33a16afbed64a8a01ffd26fa73c6d2acd0e6993dd9deb06a7fd93fc3" + }, + "verify/results/shim/bp/B-shim.log": { + "mode": 420, + "sha256": "cde2202333e81cc4eec2c47915181229a68a5fa99879968905a2809c4fe0a79a" + }, + "verify/results/shim/bp/L-aiorders.txt": { + "mode": 420, + "sha256": "28492b0f9be74f61db45eae49b44b41efbc1a3bf6f6d2c888e5cc40bfb7753bd" + }, + "verify/results/shim/bp/L-shim.log": { + "mode": 420, + "sha256": "550d8986a35b3f4742e7522df11bfbf2e832e417ad42cc1bff1a39dd4ee510fd" + }, + "verify/results/shim/bp/statecheck-AB.txt": { + "mode": 420, + "sha256": "dacb5cfa5541934f37b2b1c02b87e809c3f65ba8488aa88d925b295fade0083d" + }, + "verify/results/shim/bq/bq-res-aiorders.txt": { + "mode": 420, + "sha256": "991543eb53fbf1353fe99ed96d4ca358e05f6bac32f00bd1f6dc60fcc002c8b4" + }, + "verify/results/shim/bq/bq-res-shim.log": { + "mode": 420, + "sha256": "7855bd268f69443e7ddfda71873458144728630264703482901bf6d8ffbccd3a" + }, + "verify/results/shim/br/BR-aiorders.txt": { + "mode": 420, + "sha256": "d71e11e7c40aaa740adc55651af556afb9e92768336bc11747ad67151f33f4d1" + }, + "verify/results/shim/br/BR-airng.txt": { + "mode": 420, + "sha256": "04eaeaa688a448f64df00dedfd692b78bca0e3e1207a8292c2fafad507f919ea" + }, + "verify/results/shim/br/BR-shim.log": { + "mode": 420, + "sha256": "bc6ef7aa465c2b1a81d08555174e15fb1a97a207da9eefaa8a6155440869a13e" + }, + "verify/results/shim/br/BR2-deep-aiorders.txt": { + "mode": 420, + "sha256": "b9edb53f7d56c1bb26d3bb77349543dce9564930484bc832475a3a04e5f2ad15" + }, + "verify/results/shim/br/BR2-shim.log": { + "mode": 420, + "sha256": "0de7609693747fdf0abaebd60598af127c918f32561c993715aead91cd24b334" + }, + "verify/results/shim/br/aiorders-diff.txt": { + "mode": 420, + "sha256": "411ceb2bacd62185d25a3c58f199c0bdfcd2759705bef2b36536da3870f73a67" + }, + "verify/results/shim/br/cmp_aiorders.py": { + "mode": 420, + "sha256": "b6c192efb40866aa56f29d9ba2b89e17f18ae0579645db8f34a01010db09cc28" + }, + "verify/results/shim/br/shim.cfg.brdeep": { + "mode": 420, + "sha256": "b8017e344666df816f1191906cf8f54504d631bb7ce9d2f51f6f959e4934ff04" + }, + "verify/results/shim/br/shim.cfg.brprobe": { + "mode": 420, + "sha256": "4f090999dba63ef22ab4993bd6af557e9500819c84f27decc126771f48f98efb" + }, + "verify/results/shim/bs/C-aiorders.txt": { + "mode": 420, + "sha256": "5abc20b68edf6ff52301c01825040e1d6b41b582ba40403ed6c4edc42dcbe4e2" + }, + "verify/results/shim/bs/C-airng.txt": { + "mode": 420, + "sha256": "5a4a56506d1eeb82d3bf0fbba95842566911178a82f0aad9d700a9fe00f1b300" + }, + "verify/results/shim/bs/C-shim.log": { + "mode": 420, + "sha256": "8b8dad987589fd159e789806e89dbcf7a7b40b86446d55e1d0bf10ff25cb8f6f" + }, + "verify/results/shim/bs/L-aiorders.txt": { + "mode": 420, + "sha256": "a03e8c1587633ecbb683c376f30e35e126e98ff0e8204c4ee6b5e2b4fc254104" + }, + "verify/results/shim/bs/L-airng.txt": { + "mode": 420, + "sha256": "8d21083857facd3728446af612b3a97b47e5287a5fe0bdf01423812f8445dacd" + }, + "verify/results/shim/bs/L-shim.log": { + "mode": 420, + "sha256": "246af272e464c715c7abb00471b4ddc404b81143f4065006aa4daec4d82cadb9" + }, + "verify/results/shim/bs/shim.cfg.bsrun": { + "mode": 420, + "sha256": "570b15c208d31a367ec6c6886019693cb17b98d254cebead11ec6746ae5af256" + }, + "verify/results/shim/bu/BU1-aiorders.txt": { + "mode": 420, + "sha256": "944eeb701fcd22480513c34d93f8310541977e89a24ae237bd947aed44092529" + }, + "verify/results/shim/bu/BU1-aivisit.txt": { + "mode": 420, + "sha256": "721f038ef80be92325728fc30f095846b54ff1ac67a41537d4a4d1b97d5e9758" + }, + "verify/results/shim/bu/BU1-shim.log": { + "mode": 420, + "sha256": "28ca02f56823e577662744108965bc3ab1d7241143704ac8ceaacf2e9cd077f3" + }, + "verify/results/shim/bu/BU2-aiorders.txt": { + "mode": 420, + "sha256": "5c388039a3e832465f67b4ca88f3f67550d5189a3a68f33c508c4a467733c9ac" + }, + "verify/results/shim/bu/BU2-aivisit.txt": { + "mode": 420, + "sha256": "19963ed364f47fd965508d96fbf9d1f424938f711f2b1cdc83697f789189271a" + }, + "verify/results/shim/bu/BU2-shim.log": { + "mode": 420, + "sha256": "c0a8c467bc4b4134dc83ca5dedbbfed8dac887b432a56cd12f6e211c8d58daca" + }, + "verify/results/shim/bu/BU3-aiorders.txt": { + "mode": 420, + "sha256": "b6443b3f7db541149f54435f14ba830f54d2f950420f3f0694ff12a8b1eec143" + }, + "verify/results/shim/bu/BU3-aivisit.txt": { + "mode": 420, + "sha256": "fe67a4a1cc6a67e06b2eb5675b4b8543ab9f25ea39a18d7f4c83bce74482e0cc" + }, + "verify/results/shim/bu/BU3-shim.log": { + "mode": 420, + "sha256": "0a802ec556c87f44efaa06f211e75d9b89a66ac6db5a08e34d2a7eae992121ed" + }, + "verify/results/shim/bu/claim-order.txt": { + "mode": 420, + "sha256": "7135e3ed0204a4615e546bc882992073d4b48ee42ea341186c32b6b3dd3dfc47" + }, + "verify/results/shim/bu/claimcheck.py": { + "mode": 420, + "sha256": "85c5ec747f12cf37ec2dbc4021447909eeded68ecd1abb697a6fb60005a54aff" + }, + "verify/results/shim/bu/shim.cfg.bupin": { + "mode": 420, + "sha256": "6b37b047adc95f7c08b6767cdec5bd715a8851f14bff7f187772835d1cc032a7" + }, + "verify/results/shim/cr/cr-N.log": { + "mode": 420, + "sha256": "d5459e6dcf44fbe55d0f60f1ac40d68bed96319bb55986cc24a1b9ca0d8103e0" + }, + "verify/results/shim/cr/cr-R0.log": { + "mode": 420, + "sha256": "3b703881aa2b9a1c111201ff9543f2dcae0f948567ee877df275a1093bb567f7" + }, + "verify/results/shim/cr/cr-R1.log": { + "mode": 420, + "sha256": "8df6af84f74891ff9b0b02fa150641f5fadcd0419bc53c41cbe80bf14ec9c712" + }, + "verify/results/shim/eventlive/c6b-loaded.png": { + "mode": 420, + "sha256": "f442d4b211a47b331cef9a255e83732b80a1ede70ac200596c796ac0aa320017" + }, + "verify/results/shim/eventlive/c7b-turn3.png": { + "mode": 420, + "sha256": "3e070abfbdf4efd2662951049f8545f328aa172d64d00b9c5a1f4243426e803a" + }, + "verify/results/shim/eventlive/load-dialog-8files.png": { + "mode": 420, + "sha256": "e0fc5af16042a70b53bf7d44220db56c56a466c22c4abd641557e94b8e6c1693" + }, + "verify/results/shim/eventlive/shim-zuul.log": { + "mode": 420, + "sha256": "f9d184b33c46cab9d497f7a38056c099ce2ff9b5e8149f563a2353d91985fea1" + }, + "verify/results/shim/eventlive/shim.log": { + "mode": 420, + "sha256": "e65f2e3efa1ce8f70c483bb966448239923db2d3924c709a669bb1a890411b0c" + }, + "verify/results/shim/eventlive/t7-after.png": { + "mode": 420, + "sha256": "dc0a3e8f5a5c9032ead266d106fa69a57677711eb807d26376f29baa6ec0b934" + }, + "verify/results/shim/eventlive/zuul-turn1.png": { + "mode": 420, + "sha256": "f9af979ed08315c0a8d644af800318634b3641628f710f3f9b4d2c77d4f70fdc" + }, + "verify/results/shim/l1/README.md": { + "mode": 420, + "sha256": "f008081756d99825aa81d2802869476f8341f81aeb8c4dbbb77502cf76db5145" + }, + "verify/results/shim/l1/cdiff-frames-2-51.txt": { + "mode": 420, + "sha256": "57cb1911c5bfc7bdfacafc6bb1ad382fc05f46fb9cdcee4479d861af48e585c1" + }, + "verify/results/shim/l1/cdiff.py": { + "mode": 420, + "sha256": "2ace41ce6017cfac8758d8b9955f02de84738d90067a7dfadeb8bffffc842027" + }, + "verify/results/shim/l1/rep.py": { + "mode": 420, + "sha256": "1a7a3819da8e9aeaaf213a62b696388b0a9489924c964407536831b5f7dd9488" + }, + "verify/results/shim/l1/saves/l1-t1t2-post-hooksoff.sav": { + "mode": 420, + "sha256": "e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d" + }, + "verify/results/shim/l1/saves/l1-t1t2-post.sav": { + "mode": 420, + "sha256": "62061918176e344106e82357e58acc8adec488f6b2969831cb99a84cf25e31c5" + }, + "verify/results/shim/l1/saves/l1-t2t3-post.sav": { + "mode": 420, + "sha256": "2177c659d8dbc39cf7485abe367d42d55cc42cc9a61949d403dcbc79989ec32d" + }, + "verify/results/shim/l1/saves/l1-t2t3-pre.sav": { + "mode": 420, + "sha256": "641a33f06b2fe1c1caf0c4994442bf13a4b03f25a85b34a9875cd22b75715896" + }, + "verify/results/shim/l1/seed-two-processes.txt": { + "mode": 420, + "sha256": "d60412049ced59705284a46078f1906e1aad4140f90db2169e08aeb9530dd985" + }, + "verify/results/shim/l1/seedrep.py": { + "mode": 420, + "sha256": "a06de5d5ccc1e87808eb3877534076340ef5330bee9a86953b8f4dae0268e087" + }, + "verify/results/shim/l1/trace-et1.jsonl": { + "mode": 420, + "sha256": "f21a213bc56983bc94f24303b0837b160f93bfb7e3ca6abdbf2e18321f8dfa19" + }, + "verify/results/shim/l1/trace-et2.jsonl": { + "mode": 420, + "sha256": "6e44b0fc541c3082f91b115de67f5315f43b9db21f0696b856cfff2ead51323a" + }, + "verify/results/shim/l1/trace-oracle.jsonl": { + "mode": 420, + "sha256": "ad9ecbe79a71c84930302868850806798228fe0f2e625b442dd3ed579c05092c" + }, + "verify/results/shim/l1/trace-playforward-f51.jsonl": { + "mode": 420, + "sha256": "6ed0af385dfe7288ad2c994458c8f5d75fc8e29b603dd6607a3703591d25eeb4" + }, + "verify/results/shim/l1/trace-seed-proc1.jsonl": { + "mode": 420, + "sha256": "120074583eb02cd4c3a29aab5826f789d52a6146930b1763f9b0bb824e9a350a" + }, + "verify/results/shim/l1/trace-seed-proc2.jsonl": { + "mode": 420, + "sha256": "03dffeafeff0c33d926207f869741dc544141425c8f665bf58aad4fd363e2f95" + }, + "verify/results/shim/l1/watch-arm.txt": { + "mode": 420, + "sha256": "f8d5811c938d16d003a72a97f2b4b33112914a7ee378fa2b334282616592943e" + }, + "verify/results/shim/l1/watch-hits.txt": { + "mode": 420, + "sha256": "1bf62ac965036a189055cd59a92007c70a2a6aca307df54ce8ccb997048f43d5" + }, + "verify/results/shim/l3/l3-probe-run-shim.log": { + "mode": 420, + "sha256": "f5cd336971ae3d3eaff642e80d9defa20ec2e1ee11e212a082c24365b18d8684" + }, + "verify/results/shim/l3/l3-probe-run-watch.txt": { + "mode": 420, + "sha256": "8d969595789c690a688f7b8fac05288c614d5d9210388ca94315158948c85f24" + }, + "verify/results/shim/l3/l3-spy-run-shim.log": { + "mode": 420, + "sha256": "5abfd08445e9e8139945b095ddddfb56480062019ce6d40304a440c317f21fd1" + }, + "verify/results/shim/l3/l3-spy-run-watch.txt": { + "mode": 420, + "sha256": "c669ccf79202e7060c153151e4fe1be96acf4030cb64aa71bd6a5c212b550b47" + }, + "verify/results/shim/m0-main-menu.png": { + "mode": 420, + "sha256": "465207fda4722ca53585b71647a08b1149944036792a072e7c34e2c437a3e37c" + }, + "verify/results/shim/m0.log": { + "mode": 420, + "sha256": "581d63139503892b6aeeff71acb742143393e9f107aa1f3605d8c028c927cad1" + }, + "verify/results/shim/m1-shim.log": { + "mode": 420, + "sha256": "35401ea82b9a64dbfdb54c282c06c51d7b696afd4ea2794e16071e0fd5c7cbef" + }, + "verify/results/shim/m2-scout-shim.log": { + "mode": 420, + "sha256": "8c46117bdde6b6911a4d77b059b40803d4966652990c8fa3ed67773e5db0459f" + }, + "verify/results/shim/mf-after-shim.log": { + "mode": 420, + "sha256": "86601372b980828171e98fc71afe865f207b1745ef4dcdca646a618c91d17426" + }, + "verify/results/shim/mf-after-turn2.png": { + "mode": 420, + "sha256": "a1f83011ff96e990d7cc80f8306e8fe0c58b96f84eb73ccb6cb013019900133d" + }, + "verify/results/shim/mf-after-turn7.png": { + "mode": 420, + "sha256": "313f3863ab901320174c8ff7cf6f1f6b0d5b3d9d7a2f8999eae6413aedc46fc5" + }, + "verify/results/shim/mf-before-shim.log": { + "mode": 420, + "sha256": "8377a87c7ed05fd0cd7b61e3f1d5fc9c2b9fa294f812c67183d4ce31323a64b1" + }, + "verify/results/shim/mf-before-turn2.png": { + "mode": 420, + "sha256": "c9805791f402ec159fcc6acdd283120eae8536b230666d3049374525595b589f" + }, + "verify/results/shim/mf-before-turn7.png": { + "mode": 420, + "sha256": "3b880b8f96c4cc328aaff8e41068db29b295be8f000c432e321a51b6030b1272" + }, + "verify/results/shim/mf-human-home-no-ships.png": { + "mode": 420, + "sha256": "dfda3e9784eefdc7b75d04908e95c3a192eda7796685907c65bfde3068d6f2bb" + }, + "verify/results/shim/probes/human-t3-5-perturbed.txt": { + "mode": 420, + "sha256": "9b594ab18cdd9aec4fdf807b4d97576191bc6fd48a85cc872c222b515d0f7c01" + }, + "verify/results/shim/probes/human-t5.txt": { + "mode": 420, + "sha256": "0ddd9f0391a3a5d655f1809a9e79d537badd8071f8834e58bdbc7f95d9ff1320" + }, + "verify/results/shim/probes/oracle-restore/h-oracle-autosave.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/shim/probes/oracle-restore/h-oracle-endturn.sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/shim/probes/zuul-t24-25.txt": { + "mode": 420, + "sha256": "50567b7cb1f008d025baf6cb4b4ad7af7d767a2182afd082c3ac1b1a66c79541" + }, + "verify/results/shim/recap-b1-shim.log": { + "mode": 420, + "sha256": "601cd4cbbec3e8c1f7776eadc4203256ec4c5d1e3e180295369727e1da69ff37" + }, + "verify/results/shim/recap-b3-shim.log": { + "mode": 420, + "sha256": "7c5110a9d4431cc03729a7bddcb13ee69a6d428199051e175b0921391fc02a80" + }, + "verify/results/shim/recap-misc-shim.log": { + "mode": 420, + "sha256": "7cadf2eadb08979cda39fe7e3ed6cfa3f62bdbcd256fc7550b3e27c3f08c9b3e" + }, + "verify/results/shim/recap-misc-turn7.png": { + "mode": 420, + "sha256": "2c1451ded36ad79389f0eb3db098b4e0b0a6f12495d64c832f6e093374005c29" + }, + "verify/results/shim/recap-trace-shim.log": { + "mode": 420, + "sha256": "56da143a92b2edda727862a6fd4a056c716153e23cfddbde076e218ce4c4285f" + }, + "verify/results/shim/recap-turn2-loaded.png": { + "mode": 420, + "sha256": "62a42c44f99d8a53bca735d54a5adf48b89449bb859e859ec573cb40e1a7f2d0" + }, + "verify/results/shim/tailrng/save_rng_delta.py": { + "mode": 420, + "sha256": "a9a04b131427a43372d87688b8eaf230a82a79e2c3c241a90ff4eb31e039749e" + }, + "verify/results/shim/tailrng/z-t5-autosave.sav": { + "mode": 420, + "sha256": "b2124798470d85ea86b0e9e4abfd9e23f3be73caa1115dd7614021be76305939" + }, + "verify/results/shim/tailrng/z-t6-autosave.sav": { + "mode": 420, + "sha256": "2ce6aef9d49ea238455f3ac680556c6a251065af3e28b6540fe09597ae38571c" + }, + "verify/results/shim/tailrng/z-t6-endturn.sav": { + "mode": 420, + "sha256": "afb112896c0236fa715ab3c10139958294085bb2066e22a6d7b76deb0dfa46dc" + }, + "verify/results/shim/tailrng/z2-autosave.sav": { + "mode": 420, + "sha256": "b2124798470d85ea86b0e9e4abfd9e23f3be73caa1115dd7614021be76305939" + }, + "verify/results/shim/tailrng/z2-endturn.sav": { + "mode": 420, + "sha256": "8648957fecf5041233f9add4c8173f78981f026f133ecdbecdb89ddd10917048" + }, + "verify/results/shim/unlock-shim.log": { + "mode": 420, + "sha256": "20a6625b369acb773543e530f1bfdc8b7eaca5c6b58415cc5009bb9858e16f22" + }, + "verify/results/shim/watchpoints/w2-modcount-status-2turns.txt": { + "mode": 420, + "sha256": "335be910dc11a20c9fb80f3b0f37f04fd50a9d8074697bb5365c3fea02790b74" + }, + "verify/results/shim/watchpoints/w2-shim-log-excerpt.txt": { + "mode": 420, + "sha256": "9a344045270e3815004a3376eccfbd030372faba54374d9b6626fd80740b8b13" + }, + "verify/results/shim/watchpoints/w3-modcount-turn1.txt": { + "mode": 420, + "sha256": "328a2319e320f5382e82ad497b6b73245c397cf67515e8a27fa9712418af81ae" + }, + "verify/results/shim/watchpoints/w3-shim-log-excerpt-turn1.txt": { + "mode": 420, + "sha256": "a9b3c20f90a76ee624bde6ee4cae9d1ff1f2baa67aa770a0e70042cb44d11915" + }, + "verify/results/shim/watchpoints/w3-shim-log-excerpt.txt": { + "mode": 420, + "sha256": "af9fe2258fe4168f6066768809c509380183f61bc337331392c5202b900d906a" + }, + "verify/results/shim/watchpoints/w3-tshn-containers.txt": { + "mode": 420, + "sha256": "08eab48d1a202f975f1be87e2279379646142f8b22d9dafc56295399083ed0af" + }, + "verify/results/standalone/cv/cv-input-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "d29f3514e4209954d6c068f34285615aef5f4627ba4627ce97c0e65f93620159" + }, + "verify/results/standalone/cv/cv-leaf-worklist.txt": { + "mode": 420, + "sha256": "0f309711de89cc10cf940d0d4b051b5052ce49a3cc0f3f80c532b50256410778" + }, + "verify/results/standalone/cv/cv-noreplay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "3734f197cfefd017dbe562fd421d40859bfc2c37d9ac2cedf9c7ddd340a3a4a7" + }, + "verify/results/standalone/cv/cv-replay-run.log": { + "mode": 420, + "sha256": "7372c7da437ece21098cc6f66d0631e146d8aae14a9242bd2278a9922a7f7c02" + }, + "verify/results/standalone/cv/cv-replay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "1932158abec82f45b9b838f4cb79b1088190ca5281d388f57356af7776e96950" + }, + "verify/results/standalone/dt/dt-canonical-after.txt": { + "mode": 420, + "sha256": "f32fdcf7d6431293133e951045b42a55e8a27d75cd859ad08cd719e5fb696712" + }, + "verify/results/standalone/dt/dt-canonical-before.txt": { + "mode": 420, + "sha256": "b56160cfdcfa0fff25be2aa566959261e375004905814803e231889da665188f" + }, + "verify/results/standalone/dt/dt-observed-leaves-remaining.txt": { + "mode": 420, + "sha256": "e14bd20e60480f98a564e585c0d25d2e758f71016811b8981dbdacd9d51c0c82" + }, + "verify/results/standalone/dt/dt-replay-run.log": { + "mode": 420, + "sha256": "4b7907fc4e735b1c12e3cf64671079abaad757aabd752b134a9fb27d065656cd" + }, + "verify/results/standalone/dt/dt-replay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "8ddb84e7e6c2f663b1bc4b9611a56a46aac9d09863dcc5be765cb70dc9642c22" + }, + "verify/results/standalone/max-income-oracle.json": { + "mode": 420, + "sha256": "245796e0aea5f5c2238686cba10c651156117fb454805553b2508a8a8fe71a69" + }, + "verify/results/standalone/report.txt": { + "mode": 420, + "sha256": "b47e90432eaf38149f2ecb5316d1962813b6b1423848e36fcc9435ad1f5485df" + }, + "verify/results/standalone/rng-oracle.json": { + "mode": 420, + "sha256": "98a364c80f69d6a84b86c3f9ccc16176d9e769ff061569b0c0ddfced53f9146c" + }, + "verify/results/standalone/rng-oracle.txt": { + "mode": 420, + "sha256": "3496a217a7e4f80bb18c1b067eaedcafcf7bdc877460c6346606fd7f6a55b877" + }, + "verify/results/standalone/status.json": { + "mode": 420, + "sha256": "d38ca6222c83df3a5886e6b32a30772c7174cc0e584f4a3beabedc05770df9cd" + }, + "verify/results/standalone/t36-turnrecord.md": { + "mode": 420, + "sha256": "b017a93ad04af69ef469cd8ea536dff4cab17140d20b3665e7c89533ab5b8a84" + }, + "verify/results/state-checksum/ad-oracleA-vs-oracleB.txt": { + "mode": 420, + "sha256": "b6c440e20108ad2727a7d7aa32a4bd673ec03ca4372461797705d619de1ba48a" + }, + "verify/results/state-checksum/chain-turn1-3.json": { + "mode": 420, + "sha256": "33941d0dd77bfb79e4302f82a410f5f18fe3ae1ade684b5b59c6ed352789a696" + }, + "verify/results/state-checksum/chain.txt": { + "mode": 420, + "sha256": "ae1037dd8394b258ce91262877d348a0561c5f5056cfae74cc0d058e4166aa83" + }, + "verify/results/state-checksum/float-census.txt": { + "mode": 420, + "sha256": "c697c0f187ee8a8ebb157cbff8d7ae42c92f36a501b16acd9f9839a0ffc306a9" + }, + "verify/results/state-checksum/identical-roots.txt": { + "mode": 420, + "sha256": "1143fabfe96954440542adcd3830ad1d862be6c091f3c1b2e63e92a2751703e7" + }, + "verify/results/state-checksum/resave-localisation.txt": { + "mode": 420, + "sha256": "85f4e8fe3581ba5d0ae74974d757c4c2fddc008f3fbe6781891ae8ef65aa693e" + }, + "verify/results/state-checksum/roots.txt": { + "mode": 420, + "sha256": "6ea7ad668703baaff870720683bcc13beff557cebf8e7843526d6677e5b5ef68" + }, + "verify/results/state-checksum/turn2-to-turn3.txt": { + "mode": 420, + "sha256": "3649c86742460a54d89714df1917508f76952c44c07cb7fbc19010910c5df0f4" + }, + "verify/results/turncommands/br2-turn27-deep.tcb": { + "mode": 420, + "sha256": "329b9c3f1e9f85ddeeb71148bd5c0e38f7d26445ed349df60ffbfaf63db46102" + }, + "verify/results/turncommands/br2-turn27-shallow.tcb": { + "mode": 420, + "sha256": "d8346969421a92fa199d0b9faafa642dc2e71a527b08d27984fe73ee70ecbd6b" + }, + "verify/results/turncommands/cb-turn1to2-pinned-run2.json": { + "mode": 420, + "sha256": "01e572975339fbe8a242b2438719173bd5bb4f4916078e5887026408923eb356" + }, + "verify/results/turncommands/cb-turn1to2-pinned-run2.tcb": { + "mode": 420, + "sha256": "16e349db6c46e46520cd2e5f0a9fcf70b537dce878324dd873418ef6cebd8658" + }, + "verify/results/turncommands/cb-turn1to2-pinned.json": { + "mode": 420, + "sha256": "2d4f108b8ac6b1e582382ac25d53f354c293e7caf390b8462d15beaf8e43e01c" + }, + "verify/results/turncommands/cb-turn1to2-pinned.tcb": { + "mode": 420, + "sha256": "28ebfecc3495cc4f5b2892e420cb1b83f3cbdb6b7aabe107f4b1d18233a06094" + }, + "verify/results/turncommands/cb-turn1to2-run1.json": { + "mode": 420, + "sha256": "c9de70196af5453df15cfebcb92c973dfed9d54ffa0dc0a397839cf951ac9b58" + }, + "verify/results/turncommands/cb-turn1to2-run1.tcb": { + "mode": 420, + "sha256": "5cdcfb3ade6cdfb2c00c234f5535c791780230f520d27be14f617462347b4948" + }, + "verify/results/turncommands/cb-turn2to3.json": { + "mode": 420, + "sha256": "8a0d4fc9efae9dcb4eca0de41bf28444d79eb5a4fd4e426671a4d80ab5a46f44" + }, + "verify/results/turncommands/cb-turn2to3.tcb": { + "mode": 420, + "sha256": "420a5d03f2a4ecfa0789835cc46f98961d11bbd7c7fd5f59dc28301aa0b65b6b" + }, + "verify/results/turncommands/l4-turn1to2.tcb": { + "mode": 420, + "sha256": "1b9faa7f8aad9196e36cf1c450e340f37c502a69ccfcaaad7e289bd7b4727b12" + }, + "verify/results/turncommands/l4-turn2to3.tcb": { + "mode": 420, + "sha256": "b0443f176c3915389278de608a8e7c63fa48d4777b924c0e383c7279f2a297e0" + }, + "verify/save-reader/SAVE_FORMAT.md": { + "mode": 420, + "sha256": "5ac2556b6c063c9296ef29e8514cc312983d48a8e2c2832f504c970629990b33" + }, + "verify/save-reader/fixture_joint.sav": { + "mode": 420, + "sha256": "fbe41595e50bb580786f36b197d5b85f87820974c545107c864fa2f1862af3f1" + }, + "verify/save-reader/fixture_split.sav": { + "mode": 420, + "sha256": "3909f12d021bf840617dc8d599841b64d67be46e1c6882cba7728d312d310071" + }, + "verify/save-reader/save_reader.py": { + "mode": 420, + "sha256": "2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35" + }, + "verify/save-reader/save_writer_stub.py": { + "mode": 420, + "sha256": "8343ad15f742ee1b9cd62108efbc9c4b2718c3807442e3dfcfa9513ced7d3638" + }, + "verify/save-reader/test_save_reader.py": { + "mode": 420, + "sha256": "29f609d037eed99bb5444004facbff7b2c5c36fae568e815810585fdc3ddd393" + }, + "verify/state-checksum/STATE_CHECKSUM.md": { + "mode": 420, + "sha256": "5680299a4df27e30cdb545d9d2a640caf9299d61acb662b9512589e4390954e1" + }, + "verify/state-checksum/float_census.py": { + "mode": 420, + "sha256": "a568aad8b9f38aba2474f33941550bf948d050694a1d04dc5c85d15687223ae9" + }, + "verify/state-checksum/run_validation.sh": { + "mode": 493, + "sha256": "bf84b999d2b90368703e80235bac0258b70a1c37dd1902c9205a914a59cb1fc2" + }, + "verify/state-checksum/stability_check.py": { + "mode": 420, + "sha256": "8e640561b05decf590524fbe0dbf3b76a5e2f9c7fde93e005ca6e79464c305f1" + }, + "verify/state-checksum/state_checksum.py": { + "mode": 420, + "sha256": "ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8" + }, + "verify/state-checksum/test_state_checksum.py": { + "mode": 420, + "sha256": "d0ccf8e8390fd0a5d76a8695a490d85dc7e8e415a06ec50b592c57474cc9a73b" + }, + "verify/tooling/README.md": { + "mode": 420, + "sha256": "b05249530d65d43220c1e5c4666939c360d6139ed404a8881f6ad0a9c5c27af6" + }, + "verify/tooling/fixtures.py": { + "mode": 420, + "sha256": "56cccc88b9b9468e07c9ddff39d65813098053ec9e8f00432736906389f200a7" + }, + "verify/tooling/host-tests.json": { + "mode": 420, + "sha256": "90833c99e2749ff890b16b943f43f6ebfc1a1c611f2ed1e40555426fded45c97" + }, + "verify/tooling/test_tooling.py": { + "mode": 420, + "sha256": "bb8d15960dfda13f15cffc57f3b669003b127b4dedbf34100bb4a51c29dd3c6d" + }, + "verify/traces/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/traces/ac-probe-baseline-turn15.jsonl": { + "mode": 420, + "sha256": "a2f4e410f6a8d77f7680b4a69b5b2ac2f59fa80515b0cfe8209e7fec8e4a5b6b" + }, + "verify/traces/ac-probe-turn21-turn23.jsonl": { + "mode": 420, + "sha256": "2bb9317b82744c0da36ef6d9c1a78f31ebacea49b82a18005c0cc75bad62d345" + }, + "verify/traces/ad-r1-turn28-turn29.jsonl": { + "mode": 420, + "sha256": "cde7a1e010aa6195163f3b9320aa5c496fd8c271e9648c90c7319837dd967571" + }, + "verify/traces/ap-probes8-deploy-turn15.jsonl.gz": { + "mode": 420, + "sha256": "e257d5ea3fcb4be8da570d6a5589022e6ba412ff2712f4f06832812d8859e08a" + }, + "verify/traces/ap-probes8-turn16-turn26.jsonl.gz": { + "mode": 420, + "sha256": "df4fb35d9824799d8be79f3a9e976b55b7cd0fb5488b3e12711d04eb3c320f13" + }, + "verify/traces/ar-r1-turn38-turn43.jsonl": { + "mode": 420, + "sha256": "f8653cbd1956346816897b313031c5d70898144d1c84b1c849ac37bfe3bd993c" + }, + "verify/traces/ar-r2-control-turn38-turn39.jsonl": { + "mode": 420, + "sha256": "c1068652ddf54d2ff266c1dc1ef1e69ea663f5d2a83143408f77ec782b3dd988" + }, + "verify/traces/as-probes8-turn15-turn16.jsonl.gz": { + "mode": 420, + "sha256": "024bb0663b167eb364c8e138bae0bf10403860c195bd593cb56f60281060c4e8" + }, + "verify/traces/b2-final-menu.png": { + "mode": 420, + "sha256": "5a95fe260c9cb13dad5fc6f00460819107db93f4ac89f455077ad056600f83fd" + }, + "verify/traces/b2-shim.log": { + "mode": 420, + "sha256": "c31cf01af3659b7fdf008ff44f88f67ee4016dcfb30fc4a72b4d72ea0da8e404" + }, + "verify/traces/b2-techfx-compare.jsonl": { + "mode": 420, + "sha256": "f0202f45b276db6744c80768f12695153812bc882de688cf64705ed6a52f243c" + }, + "verify/traces/b2-techfx-golden.jsonl": { + "mode": 420, + "sha256": "43639e75bd9d510ed270c9cfcbb0c9665f5a6546f748ba81eba3f015e7ca233c" + }, + "verify/traces/cr-N.jsonl.gz": { + "mode": 420, + "sha256": "0071ae72a142533ffb91f9f04caa6704102c826761ff5ae24b57a1c3e9652e46" + }, + "verify/traces/cr-R0.jsonl.gz": { + "mode": 420, + "sha256": "6228c88cebb4dad2158e5586ecbcf71d1160116f2f4a2a8bc020658da8d7d706" + }, + "verify/traces/cr-R1.jsonl.gz": { + "mode": 420, + "sha256": "73f5f15b3343381cf3f973caaf74588fd3d0b6759de1ddcf9e12b9b3ebf29713" + }, + "verify/traces/eventlive-b3-t1-5.jsonl.gz": { + "mode": 420, + "sha256": "9cb344f1d8a3beb4bc1a2bf16baed6c38667443ead9f66fa0f53474a683d263c" + }, + "verify/traces/eventlive-b3-t1.jsonl": { + "mode": 420, + "sha256": "2d9962de9a7ea7fb28b33b72209706b4a27673096f71c8789f9f10ac465f387b" + }, + "verify/traces/eventlive-b3-zuul.jsonl.gz": { + "mode": 420, + "sha256": "0ee09bb884799e72c6a617ab02e741a7ba791ff458af439b9947a87b368a64de" + }, + "verify/traces/h-probes-human-perturbed-t3-5.jsonl.gz": { + "mode": 420, + "sha256": "2567f8ccb6276a4d647c4f4b88d14f7ae63aa4d1797f672a9bd9c7c86e4d7473" + }, + "verify/traces/h-probes-human-t5.jsonl.gz": { + "mode": 420, + "sha256": "92964779111573dc72e6a1845217cd7d709c9900594a106b3de7b59c2b7a88a7" + }, + "verify/traces/h-probes-zuul-t24-25.jsonl.gz": { + "mode": 420, + "sha256": "0966294af27b49159b1e72e683abc0b59fd52cc9bfd9f517130d30cedf7efa29" + }, + "verify/traces/l3-probe-turn8-turn15.jsonl": { + "mode": 420, + "sha256": "d1b5436f917bb4f6f74bd7b1967dbd0626db2c3a5cbc1d67684ef9f010826676" + }, + "verify/traces/m1-compare.jsonl": { + "mode": 420, + "sha256": "f0f6fd15bc73008e43e20d6ed4c4dd91fb2ec8b40935bfd3cc000d8a84ea6731" + }, + "verify/traces/m1-trace-golden.jsonl": { + "mode": 420, + "sha256": "4a4ddc031fb26a8f8b10dace297c73670f53dcbd250a9be94c0e31c9bb44dcc5" + }, + "verify/traces/mf-after-compare.jsonl": { + "mode": 420, + "sha256": "2a894892977176df1a9d6c8199b0f81b48c7bcac15d2c0e7786441fc6125226e" + }, + "verify/traces/mf-before-compare.jsonl": { + "mode": 420, + "sha256": "ee005097ebaac9f30c63f1e400fdf19a47e88010c71d215885234986d122410e" + }, + "verify/traces/output-ref-turn2.jsonl.gz": { + "mode": 420, + "sha256": "7af583350545501414eda38439f2d0fa39149342d9001d2926e2a4e4fdd5cdca" + }, + "verify/traces/output-zuul-and-ref.jsonl.gz": { + "mode": 420, + "sha256": "d581cb50f07766911fa59fa1df1524b33a9df6eec06226966efd5f54f09b6fb5" + }, + "verify/traces/recap-b1-compare.jsonl.gz": { + "mode": 420, + "sha256": "0ce1c92028a8cd10a38d7cca72f90c37ccbd844f24a1950bf0eb6e75739b44e2" + }, + "verify/traces/recap-b3-compare.jsonl": { + "mode": 420, + "sha256": "6ed3bcd99b4657d614bf63cc0fc2dfff650f4cb14e51086ea98c21bccbcf5fa8" + }, + "verify/traces/recap-golden-trace.jsonl.gz": { + "mode": 420, + "sha256": "d62431e9461ffb1b66adc16a39542b86fa8e0cf54a0ed446a8781c4d75a6c3bb" + }, + "verify/traces/recap-misc-compare.jsonl": { + "mode": 420, + "sha256": "d7c4446d45a9cab2af3da4a0d76f7a42c245da1f59db96fddf31d8b1f2c436ed" + }, + "verify/traces/tailrng-drawsites.jsonl.gz": { + "mode": 420, + "sha256": "5c1806e2b1452226674013119e3b220f3cf42be2ad8b0ed998050ad65d1f8415" + }, + "verify/traces/tailrng-refturn2.jsonl.gz": { + "mode": 420, + "sha256": "c33c6cafe015bda6acf5ca32b0c9595e1611f4ac82ecd3adaff8315c7bd3e560" + }, + "verify/traces/tailrng-zuul-long.jsonl.gz": { + "mode": 420, + "sha256": "213e7dd8a6809dd93190f41c87218e802f1fbe77d44d598f287c2a19544063af" + }, + "verify/traces/tailrng-zuul-noderoute.jsonl.gz": { + "mode": 420, + "sha256": "9476ee3b9b397ca9e20bc92eb887c109a075487cdd750746af051797e8838115" + }, + "verify/traces/unlock-b3-t1-5.jsonl.gz": { + "mode": 420, + "sha256": "f6e27a60bf6c74eb98d8bec50146fe1996642285ca008c6a70c3cb148c6ba54c" + }, + "verify/traces/unlock-b3-t1.jsonl.gz": { + "mode": 420, + "sha256": "bfa53bba3e59d17dd330e38ef52fd04fd92f05f3ad357fefd77388d083b49a05" + }, + "verify/traces/unlock-b3-zuul.jsonl.gz": { + "mode": 420, + "sha256": "d94c635105a75a68cb811a3881faf371678c075d240998f48fcf348b8459063f" + } + }, + "manifest_sha256": "e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9", + "path": "/tmp/opencode/sots-final-research-re" + } + }, + "started_at": "2026-09-10T13:07:42.991422+00:00", + "status": "complete", + "stderr": "campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.stderr.log", + "worktrees": { + "engine": "/tmp/opencode/sots-final-research-engine", + "re": "/tmp/opencode/sots-final-research-re" + } +} diff --git a/campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.jsonl b/campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.jsonl new file mode 100644 index 0000000..392fc82 --- /dev/null +++ b/campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.jsonl @@ -0,0 +1,71 @@ +{"type":"step_start","timestamp":1789045674388,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6e918f001g15igamP4fglKB","messageID":"msg_08b6e6b9e001tsGRUW65mvGp3r","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","snapshot":"5e20a97b7f6d27f2282c4ceccd70169c67c46756","type":"step-start"}} +{"type":"tool_use","timestamp":1789045674498,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_uFUKe4jPTy8UY6gkP4gdPXrj","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/AGENTS.md"},"output":"/home/alex/sots-re/AGENTS.md\nfile\n\n1: # SOTS campaign instructions\n2: \n3: This repository is the state authority for the SOTS reconstruction and its Windows lab.\n4: Start with `campaign/README.md`, your contract, its latest checkpoint, and open surprises.\n5: Current policy: `guides/multi-agent-workflow.md`. Engine architecture: `sots-engine/docs/architecture.md`.\n6: Historical findings are evidence, not current execution instructions or accepted status.\n7: \n8: ## Authority and models\n9: \n10: - The normal lead/RE/implementation/verification/lab loop runs on **GPT-5.6 Sol\n11: (`openai/gpt-5.6-sol`)**. Reserve **GPT-6 Astra (`openai/gpt-6-astra`)** for resolving\n12: falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope.\n13: - `campaign/models.json` is the role/model registry. Launch with `tools/run_agent.py` and an\n14: explicit role, contract, state root, and paired worktrees. Never silently downgrade or fall back.\n15: - Ordinary implementation/test failures inside the contract may be fixed by its worker.\n16: Falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope\n17: require a recorded surprise and an Astra resolution before affected work continues.\n18: - No worker subdelegation. The lead assigns parallelism; max two implementation slices after\n19: the pilot. Independent workload preparation is scheduled against explicit resource leases.\n20: \n21: ## Durable state and context\n22: \n23: Checkpoint in the canonical RE state root every **20 tool calls or 15 minutes**, whichever is\n24: earlier, and before an experiment, compaction, handoff, or stop. Include model/session, exact\n25: source identities, evidence paths, decisions versus observations, tests, blockers, and ONE exact\n26: next action. Do not store state only in a chat summary or `/tmp`.\n27: The runner uses bounded 40-step quanta. After checkpointing, stop and restart from the repository;\n28: automatic compaction is a backstop, not proof that a checkpoint was written. On recovery read the\n29: contract/checkpoint, verify worktree and resource identities, then continue. Missing state means\n30: blocked, not permission to reconstruct progress from memory.\n31: \n32: ## Ownership\n33: \n34: Use distinct engine and RE worktrees per lane, baseline-pinned. Canonical runtime state is shared\n35: only through the campaign tools. One integrator writes current evidence pointers and projections.\n36: Never stage someone else's changes. No automatic commit, push, pull, or reset. Commands requiring\n37: these actions need explicit user authorization. Source edits use apply_patch.\n38: VM, shared build-host, and Ghidra mutation require leases. A stale lease is not automatically free.\n39: Record preconditions, side effects, cleanup and access verification for any lab operation.\n40: Rollout bootstrap file-ownership exception: `campaign/rollout/architecture-decision.md` only.\n41: \n42: ## Evidence\n43: \n44: No generic `verified` promotion. Separate understanding, implementation, original dependencies,\n45: and validation scope. A count is insufficient without distinct states, branch exposures, and\n46: positive execution evidence. Include all writes, container elements, allocations, IDs, events,\n47: RNG draws, and runtime-only inputs. Original-assisted execution is not independent replacement.\n48: Synthetic boundary tests and original-game differential tests are complementary. Missing required\n49: inputs, zero execution, incomplete coverage, unexpected skips, stale binaries or unbound source\n50: identity fail acceptance. One independent verifier must reproduce the package; integrated-tree\n51: evidence is required for acceptance. Reports are measurements until those gates pass.\n52: \n53: Never commit owner-supplied binaries/assets or secrets. Engine facts cross only documented\n54: generated channels. Never paste disassembly/decompiler output into the engine repository.\n\n(End of file - total 54 lines)\n","metadata":{"preview":"# SOTS campaign instructions\n\nThis repository is the state authority for the SOTS reconstruction and its Windows lab.\nStart with `campaign/README.md`, your contract, its latest checkpoint, and open surprises.\nCurrent policy: `guides/multi-agent-workflow.md`. Engine architecture: `sots-engine/docs/architecture.md`.\nHistorical findings are evidence, not current execution instructions or accepted status.\n\n## Authority and models\n\n- The normal lead/RE/implementation/verification/lab loop runs on **GPT-5.6 Sol\n (`openai/gpt-5.6-sol`)**. Reserve **GPT-6 Astra (`openai/gpt-6-astra`)** for resolving\n falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope.\n- `campaign/models.json` is the role/model registry. Launch with `tools/run_agent.py` and an\n explicit role, contract, state root, and paired worktrees. Never silently downgrade or fall back.\n- Ordinary implementation/test failures inside the contract may be fixed by its worker.\n Falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope\n require a recorded surprise and an Astra resolution before affected work continues.\n- No worker subdelegation. The lead assigns parallelism; max two implementation slices after\n the pilot. Independent workload preparation is scheduled against explicit resource leases.\n","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/AGENTS.md","text":"# SOTS campaign instructions\n\nThis repository is the state authority for the SOTS reconstruction and its Windows lab.\nStart with `campaign/README.md`, your contract, its latest checkpoint, and open surprises.\nCurrent policy: `guides/multi-agent-workflow.md`. Engine architecture: `sots-engine/docs/architecture.md`.\nHistorical findings are evidence, not current execution instructions or accepted status.\n\n## Authority and models\n\n- The normal lead/RE/implementation/verification/lab loop runs on **GPT-5.6 Sol\n (`openai/gpt-5.6-sol`)**. Reserve **GPT-6 Astra (`openai/gpt-6-astra`)** for resolving\n falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope.\n- `campaign/models.json` is the role/model registry. Launch with `tools/run_agent.py` and an\n explicit role, contract, state root, and paired worktrees. Never silently downgrade or fall back.\n- Ordinary implementation/test failures inside the contract may be fixed by its worker.\n Falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope\n require a recorded surprise and an Astra resolution before affected work continues.\n- No worker subdelegation. The lead assigns parallelism; max two implementation slices after\n the pilot. Independent workload preparation is scheduled against explicit resource leases.\n\n## Durable state and context\n\nCheckpoint in the canonical RE state root every **20 tool calls or 15 minutes**, whichever is\nearlier, and before an experiment, compaction, handoff, or stop. Include model/session, exact\nsource identities, evidence paths, decisions versus observations, tests, blockers, and ONE exact\nnext action. Do not store state only in a chat summary or `/tmp`.\nThe runner uses bounded 40-step quanta. After checkpointing, stop and restart from the repository;\nautomatic compaction is a backstop, not proof that a checkpoint was written. On recovery read the\ncontract/checkpoint, verify worktree and resource identities, then continue. Missing state means\nblocked, not permission to reconstruct progress from memory.\n\n## Ownership\n\nUse distinct engine and RE worktrees per lane, baseline-pinned. Canonical runtime state is shared\nonly through the campaign tools. One integrator writes current evidence pointers and projections.\nNever stage someone else's changes. No automatic commit, push, pull, or reset. Commands requiring\nthese actions need explicit user authorization. Source edits use apply_patch.\nVM, shared build-host, and Ghidra mutation require leases. A stale lease is not automatically free.\nRecord preconditions, side effects, cleanup and access verification for any lab operation.\nRollout bootstrap file-ownership exception: `campaign/rollout/architecture-decision.md` only.\n\n## Evidence\n\nNo generic `verified` promotion. Separate understanding, implementation, original dependencies,\nand validation scope. A count is insufficient without distinct states, branch exposures, and\npositive execution evidence. Include all writes, container elements, allocations, IDs, events,\nRNG draws, and runtime-only inputs. Original-assisted execution is not independent replacement.\nSynthetic boundary tests and original-game differential tests are complementary. Missing required\ninputs, zero execution, incomplete coverage, unexpected skips, stale binaries or unbound source\nidentity fail acceptance. One independent verifier must reproduce the package; integrated-tree\nevidence is required for acceptance. Reports are measurements until those gates pass.\n\nNever commit owner-supplied binaries/assets or secrets. Engine facts cross only documented\ngenerated channels. Never paste disassembly/decompiler output into the engine repository.","lineStart":1,"lineEnd":54,"totalLines":54,"truncated":false}},"title":"AGENTS.md","time":{"start":1789045674474,"end":1789045674488}},"metadata":{"openai":{"itemId":"fc_08ea132604c1f4ba016aa2abaa2ad887d188d4eb2621a895b4"}},"id":"prt_08b6e91e6001L6AT03TPM71vKB","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6e6b9e001tsGRUW65mvGp3r"}} +{"type":"tool_use","timestamp":1789045674498,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_yYljeyntbC3Gv3Skg7pdso7G","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/README.md"},"output":"/home/alex/sots-re/campaign/README.md\nfile\n\n1: # Canonical campaign controls\n2: \n3: `sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\n4: surprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\n5: projections. Historical evidence is not current acceptance. No automatic commits or lab operations.\n6: \n7: Framework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\n8: see [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\n9: Active work is reverse engineering. Change tooling only to unblock a named RE experiment.\n10: \n11: ## Contract format\n12: \n13: `contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\n14: The standard-library validator implements the schema's used subset. A populated example is\n15: [contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\n16: \n17: Required fields:\n18: \n19: | Field | Structure |\n20: |---|---|\n21: | `id`, `title`, `status` | Slug, short title, lifecycle state |\n22: | `owner` | `{ \"name\": \"worker-identity\", \"role\": \"implementer\" }` |\n23: | `baseline` | `{ \"engine\": {\"path\":\"/absolute/canonical/engine\",\"commit\":\"full-commit-id\"}, \"re\": {\"path\":\"/absolute/canonical/re\",\"commit\":\"full-commit-id\"} }` |\n24: | `scope`, `inputs`, `effects` | Arrays of explicit nonempty strings; include full write set and runtime inputs |\n25: | `original_dependencies` | String array, including original-assisted portions and unavailable inputs |\n26: | `dependencies` | Array of other contract IDs; all must be accepted before ready/implementing |\n27: | `acceptance` | Array of `{ \"id\": \"unique-criterion\", \"axis\": \"validation-scope\", \"criterion\": \"executable requirement\" }` |\n28: | `predictions`, `stop_conditions` | String arrays of predictions and conditions that halt work |\n29: | `checkpoint` | `null` or `campaign/runtime/checkpoints/.json` |\n30: \n31: Optional `evidence` is an array of\n32: `{id,axis,path,sha256,source,integrated,source_binding,binaries,inputs,outcomes}`.\n33: `path` is an existing canonical RE-relative artifact; `sha256` hashes its actual bytes; `source`\n34: equals the contract's complete baseline object. Store understanding,\n35: implementation, original dependencies, and validation scope as separate acceptance/evidence axes.\n36: There is no generic `verified` scalar. Baseline commit IDs describe starting repositories;\n37: dirty source identity is machine-bound by `source_binding`, never inferred from those commits.\n38: Criteria need distinct states, branch exposure, positive execution, complete writes/elements,\n39: allocations/IDs/events/RNG/runtime inputs, synthetic and original-game differentials as applicable.\n40: The CLI checks package identity and declared axes; the independent reviewer evaluates the actual\n41: criteria, gate outcomes, full manifests and integrated reproduction. A passing measurement alone\n42: does not establish acceptance.\n43: \n44: ### Source-bound evidence interface (R4)\n45: \n46: `source_binding` is `{engine:{path,commit,sha256},re:{path,commit,sha256}}`. Generate it with:\n47: \n48: ```sh\n49: python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-replacement --engine-worktree /absolute/candidate-engine --re-worktree /absolute/candidate-re\n50: ```\n51: \n52: Omit both worktree arguments to bind the canonical integrated trees. Paths must be Git worktree\n53: roots in the respective baseline repositories. `commit` is the actual current HEAD; `sha256`\n54: is the deterministic digest of the actual file manifest, including dirty/untracked nonignored\n55: files, deleted tracked paths (`null`), file bytes and Unix modes. Symlinks/submodules fail closed.\n56: The fixed manifest policy uses `git ls-files --cached --others --exclude-standard`; ignored\n57: untracked build/output files are not source. Python cache directories are excluded. In RE only,\n58: `verify/results/` and `campaign/` are excluded **except** `campaign/models.json`,\n59: `campaign/contract.schema.json`, and `campaign/agents/**`. These exclusions prevent mutable\n60: contracts/checkpoints/evidence/projections from hashing themselves. Relevant RE tools, tests,\n61: generated facts and guides remain bound. Any consumed item outside that source inventory must\n62: appear among immutable input/binary artifacts. The independent reviewer checks inventory adequacy.\n63: \n64: `binaries` and `inputs` are nonempty arrays of `{path,sha256}` artifact references; for tooling\n65: contracts, bind the executable scripts/interpreter identity package and fixture input package.\n66: `outcomes` exactly covers the acceptance criterion IDs for that evidence axis, with entries\n67: `{criterion,status,artifact:{path,sha256}}`; promotion requires `status: \"pass\"`. Outcome artifacts\n68: contain positive execution, branch/state exposures, reproduction recipe and required effect/input\n69: accounting. The CLI checks identities, hashes and declared outcomes, **not arbitrary criterion\n70: semantics**. The independent verifier must reproduce and challenge those claims.\n71: \n72: For example, an outcome for the bootstrap contract is:\n73: \n74: ```json\n75: {\"criterion\":\"controls-negative-paths\",\"status\":\"pass\",\"artifact\":{\"path\":\"verify/results/controls/result.json\",\"sha256\":\"\"}}\n76: ```\n77: \n78: Capture bindings when producing evidence; do not attach a fresh source hash to old measurements.\n79: Every evidence/verdict/promotion check rehashes referenced sources and artifacts. Same-HEAD byte\n80: changes reject old evidence and verdicts. Integrated records require canonical paths, lead in\n81: integration state, and one identical binding across **all** final integrated evidence. A lead's\n82: `integrated` boolean cannot substitute for this check. Verdicts bind the full evidence array and\n83: the source-binding array; old verdicts lacking these identities must be reproduced.\n84: \n85: This contract wrapper is separate from gate measurement schema **`sots-gate/1`**, whose `source`\n86: still has `engine`/`re`. Reference its immutable manifest/binary/input package; do not rename its\n87: fields to match contract `source`. Reporter output is measured evidence, with `--require-match`\n88: for required equality, and gains acceptance only through independent contract/integration gates.\n89: \n90: ## State and transactions\n91: \n92: Every command requires `--state-root /absolute/canonical/sots-re` (the repository, not `campaign/`).\n93: No sibling inference. Control records stay below canonical `campaign/runtime/`; contracts remain\n94: in `campaign/contracts/`. Immutable hashed artifacts may be referenced anywhere inside canonical\n95: RE, including existing `verify/` corpora, without copying them. Absolute/traversing artifact paths,\n96: outside symlinks, Git internals and named secret/private-key locations are rejected; aliases are\n97: checked after resolution too. Never reference secrets or commit owner-supplied binaries/assets.\n98: JSON writes are atomic and fsynced; a canonical `flock` serializes\n99: CLI mutations, WIP decisions, and resource acquisition. Do not hand-edit active state concurrently\n100: with commands. Interrupted multi-file operations retain blocking records and require inspection.\n101: \n102: Runtime APIs (JSON files; no server):\n103: \n104: - `runtime/checkpoints/*.json`: `sots-checkpoint/1`, contract, actor/role/model/session, timestamp,\n105: contract `basis` digest, bounded summary (6000 characters), up to 32 `{path,sha256}` artifacts,\n106: and one `next_action` (2000 characters). Include observations versus decisions, source identities,\n107: tests, blockers, resources/access/cleanup, exact next action in the summary/artifacts.\n108: Do not attach the checkpoint's own contract as an artifact: saving the pointer changes that\n109: file. Its task metadata is already covered by `basis`; the CLI rejects this self-reference.\n110: - `runtime/surprises/*.json`: `sots-surprise/1`, id, contract, `status: open|resolved`, summary,\n111: discriminating probe, actor/model/session provenance where applicable, optional decision ID.\n112: - `runtime/decisions/*.json`: `sots-decision/1`, Astra resolution, explanation/probe, invalidated\n113: evidence and checkpoint; prior verdict is marked invalidated. Resolution returns needs-revision\n114: only when all surprises are closed. Re-probe and rebuild evidence; resolution is not acceptance.\n115: - `runtime/verdicts/.json`: independent verifier actor/session/model, pass/fail,\n116: explanation, contract basis, complete evidence digest and source-bindings digest.\n117: - `runtime/transitions/*.json`: actor/model, previous/next lifecycle state, timestamp.\n118: - `runtime/leases/.json`: owner, random token, held/released, acquisition/release provenance.\n119: - `runtime/runs/run-*.json`, `.jsonl`, `.stderr.log`: requested model/config, command, worktree\n120: manifests before/after, expanded prompt hash, effective configuration hashes, canonical config\n121: file hashes, actual events/session/model when emitted, completion/checkpoint status. Effective\n122: provider config is hashed rather than persisted because it can contain credentials.\n123: `active-.json` reserves the contract. Interrupted running reservations never auto-expire.\n124: \n125: Lifecycle: `proposed -> ready -> implementing -> verification -> integration -> accepted`.\n126: Blocked and needs-revision edges support repairs; no skipping stages. Ready requires scope,\n127: inputs, acceptance, stop conditions, valid pinned baseline and accepted dependencies. Implementing\n128: is atomically capped at two concurrent contracts; lead schedules only one pilot before enabling\n129: two independent slices. Verification requires fresh checkpoint/artifacts after implementation start.\n130: Integration requires lead plus independent passing verifier bound to current source/evidence.\n131: Accepted requires every declared axis in integrated evidence, passing independent verdict over\n132: that final package, and no open surprises. Adding integrated evidence changes the evidence digest:\n133: the verifier must attest the integrated package again. Handoff/promotion/end checkpoints must be\n134: within 15 minutes; recovery start has no age limit.\n135: \n136: Role/model registry: lead/architecture-review/analyst/implementer/verifier/lab =\n137: `openai/gpt-5.6-sol`; resolver = `openai/gpt-6-astra`.\n138: CLI identity fields are **claims, not authenticated model authority**. The runner requests the\n139: registry model explicitly and records emitted provenance. Editable JSON, agent permissions and\n140: shell-accessible tooling are not a security boundary. No silent routing fallback.\n141: \n142: ## Commands\n143: \n144: Run from either repository using the canonical tool path when necessary. Examples:\n145: \n146: ```sh\n147: python3 tools/campaign.py --state-root /home/alex/sots-re validate\n148: python3 tools/campaign.py --state-root /home/alex/sots-re list\n149: python3 tools/campaign.py --state-root /home/alex/sots-re status research-replacement\n150: python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint controls-bootstrap --actor controls-architect --role architecture-review --model openai/gpt-6-astra --session rollout-controls --summary 'Source identities, observations, decisions, tests and blockers are in the attached checkpoint.' --artifact campaign/rollout/controls-worker-state.md --next-action 'Run the independent controls review.'\n151: python3 tools/campaign.py --state-root /home/alex/sots-re transition controls-bootstrap ready --actor controls-architect --role architecture-review --model openai/gpt-6-astra\n152: ```\n153: \n154: `surprise CONTRACT --summary TEXT --probe TEXT` blocks immediately. `resolve SURPRISE_ID\n155: --explanation TEXT --probe TEXT` requires claimed Astra lead/resolver. Both also require\n156: `--actor NAME --role ROLE --model MODEL`. `evidence CONTRACT --record campaign/path.json`\n157: uses the same identity flags; record format is the evidence object above. Integrated records\n158: require lead and integration state. `verdict CONTRACT --session SESSION --verdict pass|fail\n159: --explanation TEXT` requires verifier identity flags and independent actor/session.\n160: \n161: ```sh\n162: python3 tools/campaign.py --state-root /home/alex/sots-re lease acquire windows-vm --actor lab-one --role lab --model openai/gpt-5.5\n163: python3 tools/campaign.py --state-root /home/alex/sots-re lease show windows-vm\n164: python3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lab-one --role lab --model openai/gpt-5.5 --token TOKEN_FROM_ACQUIRE\n165: python3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lead --role lead --model openai/gpt-6-astra --lead-release --reason 'Confirmed prior operator stopped; access and cleanup checked.'\n166: ```\n167: \n168: No stale lease stealing. Explicit lead release requires an explanation and lab preconditions,\n169: side effects, cleanup, and access verification in the operator checkpoint. Treat lease tokens\n170: as local owner capabilities, not secrets to put in a board/dashboard.\n171: \n172: ## Fresh bounded launches\n173: \n174: Prepare **two actual linked worktrees**, each distinct from its canonical source repository,\n175: at the contract's full baseline commit. No auto commits/worktree creation. Launch uses explicit\n176: canonical `OPENCODE_CONFIG`, checks matching repo-local agent/model/40 steps, and sets the final\n177: environment overlay to bind requested role/model/steps. Other inherited config overrides are\n178: cleared. `opencode models` must list the exact requested model even for dry runs.\n179: \n180: ```sh\n181: python3 tools/run_agent.py --state-root /home/alex/sots-re --role implementer --actor worker-one --contract slice-one --engine-worktree /home/alex/worktrees/slice-one-engine --re-worktree /home/alex/worktrees/slice-one-re --cwd engine --dry-run\n182: ```\n183: \n184: Remove `--dry-run` to execute. Normal worker launch requires a valid durable checkpoint, matching\n185: owner/role/status, no open surprises, baseline HEADs and canonical Git common-directory identity.\n186: Recovery checks checkpoint identity/basis and artifact hashes regardless of age, rechecks any\n187: source-bound evidence, and validates paired Git worktree/baseline identity. Missing ordinary-worker\n188: state still blocks. Bootstrap lead/architecture-review can start without a checkpoint; they still\n189: need paired worktrees. Astra lead/resolver may launch a blocked contract with open surprises and\n190: without a worker checkpoint in **resolution-only** scope: read evidence and write decisions/state,\n191: no implementation. Its prompt and permission overlay carry that limit, and worktree source changes\n192: fail completion. Ordinary affected workers stay blocked. Other Astra architecture actors receive\n193: explicit architecture authority within their owned scope. Each run is a fresh\n194: `opencode run --format json --model ... --agent ...`; no resume/continue option is used. The prompt\n195: supplies the run ID to use as checkpoint `--session`; actual OpenCode session IDs are captured\n196: separately when emitted. On exit, a checkpoint after start matching actor/role/model/run ID is\n197: mandatory or the run is marked incomplete. Completion additionally requires a zero exit, no\n198: `type:error`, a successful `step_finish` with `part.reason: \"stop\"`, one nonempty actual session ID,\n199: and consistent explicitly emitted model IDs. Text/tool-call/length events alone cannot complete a\n200: run. Missing model emission is recorded `observed_model_status: \"unavailable\"`, never invented.\n201: \n202: The runner checks the exact Git baseline again under reservation lock, rejects intervening contract\n203: changes, and checks canonical model/prompt/config files and effective configuration for drift at\n204: completion. Expanded role prompt/model/steps are frozen in the last-layer environment overlay.\n205: `opencode debug config` runs in the actual launch cwd with the actual environment before execution\n206: and again at completion. Permissions explicitly allow read/search, ordinary worker shell commands,\n207: and external-directory access to the assigned paired trees plus canonical RE; role-specific edit\n208: denies survive. Task delegation and interactive questions are denied. No `--auto` is required.\n209: Noninteractive command/environment tests and a live loader check cover this overlay; an actual\n210: normal worker launch smoke is a separate lead integration check. Permissions and before/after\n211: checks are operational guards, not a sandbox or continuous filesystem audit.\n212: Compaction is a backstop; no token threshold or machine-enforced 20-tool-call claim.\n213: \n214: ## Local verification\n215: \n216: ```sh\n217: python3 -m unittest discover -s verify/campaign -p 'test_*.py' -v\n218: python3 tools/campaign.py --state-root /home/alex/sots-re validate\n219: ```\n220: \n221: Tests create commits only in disposable fixture repositories, linked worktrees and fake OpenCode processes; they do\n222: not launch agents or touch the lab. Historical rollout artifacts retain the scope and source identity\n223: of their runs; consult the accepted contract and current evidence, not an old handoff's status prose.\n\n(End of file - total 223 lines)\n","metadata":{"preview":"# Canonical campaign controls\n\n`sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\nsurprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\nprojections. Historical evidence is not current acceptance. No automatic commits or lab operations.\n\nFramework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\nsee [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\nActive work is reverse engineering. Change tooling only to unblock a named RE experiment.\n\n## Contract format\n\n`contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\nThe standard-library validator implements the schema's used subset. A populated example is\n[contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\n\nRequired fields:\n\n| Field | Structure |\n|---|---|","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/README.md","text":"# Canonical campaign controls\n\n`sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\nsurprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\nprojections. Historical evidence is not current acceptance. No automatic commits or lab operations.\n\nFramework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\nsee [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\nActive work is reverse engineering. Change tooling only to unblock a named RE experiment.\n\n## Contract format\n\n`contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\nThe standard-library validator implements the schema's used subset. A populated example is\n[contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\n\nRequired fields:\n\n| Field | Structure |\n|---|---|\n| `id`, `title`, `status` | Slug, short title, lifecycle state |\n| `owner` | `{ \"name\": \"worker-identity\", \"role\": \"implementer\" }` |\n| `baseline` | `{ \"engine\": {\"path\":\"/absolute/canonical/engine\",\"commit\":\"full-commit-id\"}, \"re\": {\"path\":\"/absolute/canonical/re\",\"commit\":\"full-commit-id\"} }` |\n| `scope`, `inputs`, `effects` | Arrays of explicit nonempty strings; include full write set and runtime inputs |\n| `original_dependencies` | String array, including original-assisted portions and unavailable inputs |\n| `dependencies` | Array of other contract IDs; all must be accepted before ready/implementing |\n| `acceptance` | Array of `{ \"id\": \"unique-criterion\", \"axis\": \"validation-scope\", \"criterion\": \"executable requirement\" }` |\n| `predictions`, `stop_conditions` | String arrays of predictions and conditions that halt work |\n| `checkpoint` | `null` or `campaign/runtime/checkpoints/.json` |\n\nOptional `evidence` is an array of\n`{id,axis,path,sha256,source,integrated,source_binding,binaries,inputs,outcomes}`.\n`path` is an existing canonical RE-relative artifact; `sha256` hashes its actual bytes; `source`\nequals the contract's complete baseline object. Store understanding,\nimplementation, original dependencies, and validation scope as separate acceptance/evidence axes.\nThere is no generic `verified` scalar. Baseline commit IDs describe starting repositories;\ndirty source identity is machine-bound by `source_binding`, never inferred from those commits.\nCriteria need distinct states, branch exposure, positive execution, complete writes/elements,\nallocations/IDs/events/RNG/runtime inputs, synthetic and original-game differentials as applicable.\nThe CLI checks package identity and declared axes; the independent reviewer evaluates the actual\ncriteria, gate outcomes, full manifests and integrated reproduction. A passing measurement alone\ndoes not establish acceptance.\n\n### Source-bound evidence interface (R4)\n\n`source_binding` is `{engine:{path,commit,sha256},re:{path,commit,sha256}}`. Generate it with:\n\n```sh\npython3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-replacement --engine-worktree /absolute/candidate-engine --re-worktree /absolute/candidate-re\n```\n\nOmit both worktree arguments to bind the canonical integrated trees. Paths must be Git worktree\nroots in the respective baseline repositories. `commit` is the actual current HEAD; `sha256`\nis the deterministic digest of the actual file manifest, including dirty/untracked nonignored\nfiles, deleted tracked paths (`null`), file bytes and Unix modes. Symlinks/submodules fail closed.\nThe fixed manifest policy uses `git ls-files --cached --others --exclude-standard`; ignored\nuntracked build/output files are not source. Python cache directories are excluded. In RE only,\n`verify/results/` and `campaign/` are excluded **except** `campaign/models.json`,\n`campaign/contract.schema.json`, and `campaign/agents/**`. These exclusions prevent mutable\ncontracts/checkpoints/evidence/projections from hashing themselves. Relevant RE tools, tests,\ngenerated facts and guides remain bound. Any consumed item outside that source inventory must\nappear among immutable input/binary artifacts. The independent reviewer checks inventory adequacy.\n\n`binaries` and `inputs` are nonempty arrays of `{path,sha256}` artifact references; for tooling\ncontracts, bind the executable scripts/interpreter identity package and fixture input package.\n`outcomes` exactly covers the acceptance criterion IDs for that evidence axis, with entries\n`{criterion,status,artifact:{path,sha256}}`; promotion requires `status: \"pass\"`. Outcome artifacts\ncontain positive execution, branch/state exposures, reproduction recipe and required effect/input\naccounting. The CLI checks identities, hashes and declared outcomes, **not arbitrary criterion\nsemantics**. The independent verifier must reproduce and challenge those claims.\n\nFor example, an outcome for the bootstrap contract is:\n\n```json\n{\"criterion\":\"controls-negative-paths\",\"status\":\"pass\",\"artifact\":{\"path\":\"verify/results/controls/result.json\",\"sha256\":\"\"}}\n```\n\nCapture bindings when producing evidence; do not attach a fresh source hash to old measurements.\nEvery evidence/verdict/promotion check rehashes referenced sources and artifacts. Same-HEAD byte\nchanges reject old evidence and verdicts. Integrated records require canonical paths, lead in\nintegration state, and one identical binding across **all** final integrated evidence. A lead's\n`integrated` boolean cannot substitute for this check. Verdicts bind the full evidence array and\nthe source-binding array; old verdicts lacking these identities must be reproduced.\n\nThis contract wrapper is separate from gate measurement schema **`sots-gate/1`**, whose `source`\nstill has `engine`/`re`. Reference its immutable manifest/binary/input package; do not rename its\nfields to match contract `source`. Reporter output is measured evidence, with `--require-match`\nfor required equality, and gains acceptance only through independent contract/integration gates.\n\n## State and transactions\n\nEvery command requires `--state-root /absolute/canonical/sots-re` (the repository, not `campaign/`).\nNo sibling inference. Control records stay below canonical `campaign/runtime/`; contracts remain\nin `campaign/contracts/`. Immutable hashed artifacts may be referenced anywhere inside canonical\nRE, including existing `verify/` corpora, without copying them. Absolute/traversing artifact paths,\noutside symlinks, Git internals and named secret/private-key locations are rejected; aliases are\nchecked after resolution too. Never reference secrets or commit owner-supplied binaries/assets.\nJSON writes are atomic and fsynced; a canonical `flock` serializes\nCLI mutations, WIP decisions, and resource acquisition. Do not hand-edit active state concurrently\nwith commands. Interrupted multi-file operations retain blocking records and require inspection.\n\nRuntime APIs (JSON files; no server):\n\n- `runtime/checkpoints/*.json`: `sots-checkpoint/1`, contract, actor/role/model/session, timestamp,\n contract `basis` digest, bounded summary (6000 characters), up to 32 `{path,sha256}` artifacts,\n and one `next_action` (2000 characters). Include observations versus decisions, source identities,\n tests, blockers, resources/access/cleanup, exact next action in the summary/artifacts.\n Do not attach the checkpoint's own contract as an artifact: saving the pointer changes that\n file. Its task metadata is already covered by `basis`; the CLI rejects this self-reference.\n- `runtime/surprises/*.json`: `sots-surprise/1`, id, contract, `status: open|resolved`, summary,\n discriminating probe, actor/model/session provenance where applicable, optional decision ID.\n- `runtime/decisions/*.json`: `sots-decision/1`, Astra resolution, explanation/probe, invalidated\n evidence and checkpoint; prior verdict is marked invalidated. Resolution returns needs-revision\n only when all surprises are closed. Re-probe and rebuild evidence; resolution is not acceptance.\n- `runtime/verdicts/.json`: independent verifier actor/session/model, pass/fail,\n explanation, contract basis, complete evidence digest and source-bindings digest.\n- `runtime/transitions/*.json`: actor/model, previous/next lifecycle state, timestamp.\n- `runtime/leases/.json`: owner, random token, held/released, acquisition/release provenance.\n- `runtime/runs/run-*.json`, `.jsonl`, `.stderr.log`: requested model/config, command, worktree\n manifests before/after, expanded prompt hash, effective configuration hashes, canonical config\n file hashes, actual events/session/model when emitted, completion/checkpoint status. Effective\n provider config is hashed rather than persisted because it can contain credentials.\n `active-.json` reserves the contract. Interrupted running reservations never auto-expire.\n\nLifecycle: `proposed -> ready -> implementing -> verification -> integration -> accepted`.\nBlocked and needs-revision edges support repairs; no skipping stages. Ready requires scope,\ninputs, acceptance, stop conditions, valid pinned baseline and accepted dependencies. Implementing\nis atomically capped at two concurrent contracts; lead schedules only one pilot before enabling\ntwo independent slices. Verification requires fresh checkpoint/artifacts after implementation start.\nIntegration requires lead plus independent passing verifier bound to current source/evidence.\nAccepted requires every declared axis in integrated evidence, passing independent verdict over\nthat final package, and no open surprises. Adding integrated evidence changes the evidence digest:\nthe verifier must attest the integrated package again. Handoff/promotion/end checkpoints must be\nwithin 15 minutes; recovery start has no age limit.\n\nRole/model registry: lead/architecture-review/analyst/implementer/verifier/lab =\n`openai/gpt-5.6-sol`; resolver = `openai/gpt-6-astra`.\nCLI identity fields are **claims, not authenticated model authority**. The runner requests the\nregistry model explicitly and records emitted provenance. Editable JSON, agent permissions and\nshell-accessible tooling are not a security boundary. No silent routing fallback.\n\n## Commands\n\nRun from either repository using the canonical tool path when necessary. Examples:\n\n```sh\npython3 tools/campaign.py --state-root /home/alex/sots-re validate\npython3 tools/campaign.py --state-root /home/alex/sots-re list\npython3 tools/campaign.py --state-root /home/alex/sots-re status research-replacement\npython3 tools/campaign.py --state-root /home/alex/sots-re checkpoint controls-bootstrap --actor controls-architect --role architecture-review --model openai/gpt-6-astra --session rollout-controls --summary 'Source identities, observations, decisions, tests and blockers are in the attached checkpoint.' --artifact campaign/rollout/controls-worker-state.md --next-action 'Run the independent controls review.'\npython3 tools/campaign.py --state-root /home/alex/sots-re transition controls-bootstrap ready --actor controls-architect --role architecture-review --model openai/gpt-6-astra\n```\n\n`surprise CONTRACT --summary TEXT --probe TEXT` blocks immediately. `resolve SURPRISE_ID\n--explanation TEXT --probe TEXT` requires claimed Astra lead/resolver. Both also require\n`--actor NAME --role ROLE --model MODEL`. `evidence CONTRACT --record campaign/path.json`\nuses the same identity flags; record format is the evidence object above. Integrated records\nrequire lead and integration state. `verdict CONTRACT --session SESSION --verdict pass|fail\n--explanation TEXT` requires verifier identity flags and independent actor/session.\n\n```sh\npython3 tools/campaign.py --state-root /home/alex/sots-re lease acquire windows-vm --actor lab-one --role lab --model openai/gpt-5.5\npython3 tools/campaign.py --state-root /home/alex/sots-re lease show windows-vm\npython3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lab-one --role lab --model openai/gpt-5.5 --token TOKEN_FROM_ACQUIRE\npython3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lead --role lead --model openai/gpt-6-astra --lead-release --reason 'Confirmed prior operator stopped; access and cleanup checked.'\n```\n\nNo stale lease stealing. Explicit lead release requires an explanation and lab preconditions,\nside effects, cleanup, and access verification in the operator checkpoint. Treat lease tokens\nas local owner capabilities, not secrets to put in a board/dashboard.\n\n## Fresh bounded launches\n\nPrepare **two actual linked worktrees**, each distinct from its canonical source repository,\nat the contract's full baseline commit. No auto commits/worktree creation. Launch uses explicit\ncanonical `OPENCODE_CONFIG`, checks matching repo-local agent/model/40 steps, and sets the final\nenvironment overlay to bind requested role/model/steps. Other inherited config overrides are\ncleared. `opencode models` must list the exact requested model even for dry runs.\n\n```sh\npython3 tools/run_agent.py --state-root /home/alex/sots-re --role implementer --actor worker-one --contract slice-one --engine-worktree /home/alex/worktrees/slice-one-engine --re-worktree /home/alex/worktrees/slice-one-re --cwd engine --dry-run\n```\n\nRemove `--dry-run` to execute. Normal worker launch requires a valid durable checkpoint, matching\nowner/role/status, no open surprises, baseline HEADs and canonical Git common-directory identity.\nRecovery checks checkpoint identity/basis and artifact hashes regardless of age, rechecks any\nsource-bound evidence, and validates paired Git worktree/baseline identity. Missing ordinary-worker\nstate still blocks. Bootstrap lead/architecture-review can start without a checkpoint; they still\nneed paired worktrees. Astra lead/resolver may launch a blocked contract with open surprises and\nwithout a worker checkpoint in **resolution-only** scope: read evidence and write decisions/state,\nno implementation. Its prompt and permission overlay carry that limit, and worktree source changes\nfail completion. Ordinary affected workers stay blocked. Other Astra architecture actors receive\nexplicit architecture authority within their owned scope. Each run is a fresh\n`opencode run --format json --model ... --agent ...`; no resume/continue option is used. The prompt\nsupplies the run ID to use as checkpoint `--session`; actual OpenCode session IDs are captured\nseparately when emitted. On exit, a checkpoint after start matching actor/role/model/run ID is\nmandatory or the run is marked incomplete. Completion additionally requires a zero exit, no\n`type:error`, a successful `step_finish` with `part.reason: \"stop\"`, one nonempty actual session ID,\nand consistent explicitly emitted model IDs. Text/tool-call/length events alone cannot complete a\nrun. Missing model emission is recorded `observed_model_status: \"unavailable\"`, never invented.\n\nThe runner checks the exact Git baseline again under reservation lock, rejects intervening contract\nchanges, and checks canonical model/prompt/config files and effective configuration for drift at\ncompletion. Expanded role prompt/model/steps are frozen in the last-layer environment overlay.\n`opencode debug config` runs in the actual launch cwd with the actual environment before execution\nand again at completion. Permissions explicitly allow read/search, ordinary worker shell commands,\nand external-directory access to the assigned paired trees plus canonical RE; role-specific edit\ndenies survive. Task delegation and interactive questions are denied. No `--auto` is required.\nNoninteractive command/environment tests and a live loader check cover this overlay; an actual\nnormal worker launch smoke is a separate lead integration check. Permissions and before/after\nchecks are operational guards, not a sandbox or continuous filesystem audit.\nCompaction is a backstop; no token threshold or machine-enforced 20-tool-call claim.\n\n## Local verification\n\n```sh\npython3 -m unittest discover -s verify/campaign -p 'test_*.py' -v\npython3 tools/campaign.py --state-root /home/alex/sots-re validate\n```\n\nTests create commits only in disposable fixture repositories, linked worktrees and fake OpenCode processes; they do\nnot launch agents or touch the lab. Historical rollout artifacts retain the scope and source identity\nof their runs; consult the accepted contract and current evidence, not an old handoff's status prose.","lineStart":1,"lineEnd":223,"totalLines":223,"truncated":false}},"title":"campaign/README.md","time":{"start":1789045674453,"end":1789045674491}},"metadata":{"openai":{"itemId":"fc_08ea132604c1f4ba016aa2abaa2aac87d1aebe327fea194e21"}},"id":"prt_08b6e9192001wIIjB7CoKVVMT3","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6e6b9e001tsGRUW65mvGp3r"}} +{"type":"tool_use","timestamp":1789045674498,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_IijXcmz6mcIS3iQXuWFhbjz9","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/contracts/research-completion-abi.json"},"output":"/home/alex/sots-re/campaign/contracts/research-completion-abi.json\nfile\n\n1: {\n2: \"acceptance\": [\n3: {\n4: \"axis\": \"static-recovery\",\n5: \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n6: \"id\": \"ownership-recovered\"\n7: },\n8: {\n9: \"axis\": \"validation\",\n10: \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n11: \"id\": \"independent-cross-check\"\n12: }\n13: ],\n14: \"baseline\": {\n15: \"engine\": {\n16: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n17: \"path\": \"/home/alex/sots-engine\"\n18: },\n19: \"re\": {\n20: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n21: \"path\": \"/home/alex/sots-re\"\n22: }\n23: },\n24: \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-3fc22ea3c402274179ce4d1f.json\",\n25: \"dependencies\": [\n26: \"controls-bootstrap\"\n27: ],\n28: \"effects\": [\n29: \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n30: ],\n31: \"evidence\": [],\n32: \"id\": \"research-completion-abi\",\n33: \"inputs\": [\n34: \"Existing binary fingerprint/address contract and private RE findings\",\n35: \"Owner-supplied binary or live read-only ReVa endpoint\",\n36: \"Archived CR traces/saves for observed behavior\",\n37: \"Source-identical current engine/RE worktree snapshots\"\n38: ],\n39: \"original_dependencies\": [\n40: \"Original binary is the object of analysis, not a replacement dependency decision\"\n41: ],\n42: \"owner\": {\n43: \"name\": \"research-abi-analyst\",\n44: \"role\": \"analyst\"\n45: },\n46: \"predictions\": [\n47: \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n48: \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n49: ],\n50: \"scope\": [\n51: \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n52: \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n53: \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n54: \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n55: \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n56: ],\n57: \"status\": \"blocked\",\n58: \"stop_conditions\": [\n59: \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n60: \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n61: \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n62: ],\n63: \"title\": \"RE: research completion record construction and allocator ABI\"\n64: }\n\n(End of file - total 64 lines)\n","metadata":{"preview":"{\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/contracts/research-completion-abi.json","text":"{\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-3fc22ea3c402274179ce4d1f.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"blocked\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n}","lineStart":1,"lineEnd":64,"totalLines":64,"truncated":false}},"title":"campaign/contracts/research-completion-abi.json","time":{"start":1789045674461,"end":1789045674495}},"metadata":{"openai":{"itemId":"fc_08ea132604c1f4ba016aa2abaa2ac487d1a1bcff364aa47c6a"}},"id":"prt_08b6e91d7001OWpv1VCfcDHVQA","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6e6b9e001tsGRUW65mvGp3r"}} +{"type":"tool_use","timestamp":1789045674505,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_Qg1cAdGjvAgiWTtWr8CqTLrt","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-3fc22ea3c402274179ce4d1f.json"},"output":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-3fc22ea3c402274179ce4d1f.json\nfile\n\n1: {\n2: \"actor\": \"research-problem-resolver\",\n3: \"artifacts\": [\n4: {\n5: \"path\": \"campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json\",\n6: \"sha256\": \"c94914d5be47b93eac301e745b53ed7b1f008744a0ac90681fefc9c4f7a11327\"\n7: },\n8: {\n9: \"path\": \"campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\",\n10: \"sha256\": \"2e6b3fdf239a1dbffb887cf382e0ae80823667d6cf96afd590b4057a9438502e\"\n11: },\n12: {\n13: \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n14: \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n15: },\n16: {\n17: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n18: \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n19: },\n20: {\n21: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n22: \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n23: },\n24: {\n25: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\",\n26: \"sha256\": \"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\"\n27: },\n28: {\n29: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\",\n30: \"sha256\": \"7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560\"\n31: },\n32: {\n33: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\",\n34: \"sha256\": \"b2d9b57274be71fcdd853f04758bc65d701e7b4cc169d0d5ede24c8788ef82d5\"\n35: }\n36: ],\n37: \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n38: \"contract\": \"research-completion-abi\",\n39: \"id\": \"3fc22ea3c402274179ce4d1f\",\n40: \"model\": \"openai/gpt-6-astra\",\n41: \"next_action\": \"Lead schedule one fresh resolution-only Astra quantum to compare prior analyst/verifier RE file manifests against run-ec31ee938e1f509cd7130c03 source_before and resolve s-210e489610197533e4f4cce1 before authorizing any verifier reproduction; no source restoration or lab mutation is authorized.\",\n42: \"role\": \"resolver\",\n43: \"schema\": \"sots-checkpoint/1\",\n44: \"session\": \"run-ec31ee938e1f509cd7130c03\",\n45: \"summary\": \"END QUANTUM. OBSERVATIONS: verified assigned Git roots/common dirs and baseline HEADs engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 (/home/alex/sots-engine/.git), RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7 (/home/alex/sots-re/.git). Both preexisting dirty; no source edits made. Resolver runner source_before engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd matches analyst, but RE e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. These are runner/archived digest observations, not a resolver content rehash. Analyst manifest records binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, GNU objdump 2.38 hash 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd; twelve recorded positive static subprocess captures, no runtime execution. Read raw ret and boundary byte/decoded controls; plan and authority checkpoint hashes match historical records. DECISIONS: d-6e30d172051af0385f5979eb resolves s-81ffc3041e1f07b87928e6f2, overturns verifier item 5 complete-stop 0x00779913 and unchanged-plan next action in checkpoint 4555678e34291015554e7e88. Preserve failed prediction; new 0x00779915 normal-return control is unexecuted and unblinded, not cleanup coverage or acceptance. Full authority 0x00779930 remains required. New source-drift surprise s-210e489610197533e4f4cce1 remains OPEN; contract stays BLOCKED. No independent-cross-check, runtime allocator safety, RNG measurement or replacement acceptance restored; downstream bridge/replacement stay dependency-blocked. TESTS: Git identity/status passed; campaign validate research-completion-abi passed after decision. No disassembly/save experiment, build, game, allocator or lab execution this session. No lease held/acquired; lease inventory inspected only, no resource availability assumed; no access changes or cleanup needed. No delegation, implementation/archit... (line truncated to 2000 chars)\n46: \"timestamp\": \"2026-09-10T13:07:03.524603+00:00\"\n47: }\n\n(End of file - total 47 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-problem-resolver\",\n \"artifacts\": [\n {\n \"path\": \"campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json\",\n \"sha256\": \"c94914d5be47b93eac301e745b53ed7b1f008744a0ac90681fefc9c4f7a11327\"\n },\n {\n \"path\": \"campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\",\n \"sha256\": \"2e6b3fdf239a1dbffb887cf382e0ae80823667d6cf96afd590b4057a9438502e\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n },\n {","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-3fc22ea3c402274179ce4d1f.json","text":"{\n \"actor\": \"research-problem-resolver\",\n \"artifacts\": [\n {\n \"path\": \"campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json\",\n \"sha256\": \"c94914d5be47b93eac301e745b53ed7b1f008744a0ac90681fefc9c4f7a11327\"\n },\n {\n \"path\": \"campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\",\n \"sha256\": \"2e6b3fdf239a1dbffb887cf382e0ae80823667d6cf96afd590b4057a9438502e\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\",\n \"sha256\": \"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\",\n \"sha256\": \"7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\",\n \"sha256\": \"b2d9b57274be71fcdd853f04758bc65d701e7b4cc169d0d5ede24c8788ef82d5\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"3fc22ea3c402274179ce4d1f\",\n \"model\": \"openai/gpt-6-astra\",\n \"next_action\": \"Lead schedule one fresh resolution-only Astra quantum to compare prior analyst/verifier RE file manifests against run-ec31ee938e1f509cd7130c03 source_before and resolve s-210e489610197533e4f4cce1 before authorizing any verifier reproduction; no source restoration or lab mutation is authorized.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-ec31ee938e1f509cd7130c03\",\n \"summary\": \"END QUANTUM. OBSERVATIONS: verified assigned Git roots/common dirs and baseline HEADs engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 (/home/alex/sots-engine/.git), RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7 (/home/alex/sots-re/.git). Both preexisting dirty; no source edits made. Resolver runner source_before engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd matches analyst, but RE e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. These are runner/archived digest observations, not a resolver content rehash. Analyst manifest records binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, GNU objdump 2.38 hash 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd; twelve recorded positive static subprocess captures, no runtime execution. Read raw ret and boundary byte/decoded controls; plan and authority checkpoint hashes match historical records. DECISIONS: d-6e30d172051af0385f5979eb resolves s-81ffc3041e1f07b87928e6f2, overturns verifier item 5 complete-stop 0x00779913 and unchanged-plan next action in checkpoint 4555678e34291015554e7e88. Preserve failed prediction; new 0x00779915 normal-return control is unexecuted and unblinded, not cleanup coverage or acceptance. Full authority 0x00779930 remains required. New source-drift surprise s-210e489610197533e4f4cce1 remains OPEN; contract stays BLOCKED. No independent-cross-check, runtime allocator safety, RNG measurement or replacement acceptance restored; downstream bridge/replacement stay dependency-blocked. TESTS: Git identity/status passed; campaign validate research-completion-abi passed after decision. No disassembly/save experiment, build, game, allocator or lab execution this session. No lease held/acquired; lease inventory inspected only, no resource availability assumed; no access changes or cleanup needed. No delegation, implementation/archit... (line truncated to 2000 chars)\n \"timestamp\": \"2026-09-10T13:07:03.524603+00:00\"\n}","lineStart":1,"lineEnd":47,"totalLines":47,"truncated":false}},"title":"campaign/runtime/checkpoints/research-completion-abi-3fc22ea3c402274179ce4d1f.json","time":{"start":1789045674468,"end":1789045674501}},"metadata":{"openai":{"itemId":"fc_08ea132604c1f4ba016aa2abaa2acc87d1a1c6ae45bfd0116f"}},"id":"prt_08b6e91e0001AeMFkzdnTfWsRq","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6e6b9e001tsGRUW65mvGp3r"}} +{"type":"step_finish","timestamp":1789045674581,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6e924e001r3EhaYDa5B36qi","reason":"tool-calls","snapshot":"83b8855302d646b90a9c97e81be18d12d736c572","messageID":"msg_08b6e6b9e001tsGRUW65mvGp3r","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"step-finish","tokens":{"total":5940,"input":5794,"output":146,"reasoning":0,"cache":{"write":0,"read":0}},"cost":0}} +{"type":"step_start","timestamp":1789045677506,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6e9dbd001ua0dP8TNx97Nwo","messageID":"msg_08b6e9287001P4iG1bFsnBFSHN","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","snapshot":"b7014962fad2f6f336a627249e12819898d87016","type":"step-start"}} +{"type":"tool_use","timestamp":1789045678749,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_xzVVh7dtCm1gblgBrVaXAbCi","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-210e489610197533e4f4cce1.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\nfile\n\n1: {\n2: \"actor\": \"research-problem-resolver\",\n3: \"contract\": \"research-completion-abi\",\n4: \"id\": \"s-210e489610197533e4f4cce1\",\n5: \"model\": \"openai/gpt-6-astra\",\n6: \"probe\": \"Lead or authorized source-identity analyst compares the prior analyst/verifier launch RE file manifests with resolver source_before, naming every added/deleted/byte/mode-changed source path and confirming actual current paired source-binding. Preserve both manifests. Astra must decide explicit reconciliation or source-identical snapshot restoration by its owner before reproduction; no autonomous reset/copy or new source hash attached to old evidence.\",\n7: \"role\": \"resolver\",\n8: \"schema\": \"sots-surprise/1\",\n9: \"status\": \"open\",\n10: \"summary\": \"Resolver session run-ec31ee938e1f509cd7130c03 found source identity drift before any experiment: launch record campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json source_before RE manifest_sha256 is e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 (line 5053), not analyst run-9daf5c3b75547271d5c3b4ed manifest source_before/source_after 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 and verifier checkpoint 4555678e34291015554e7e88. Engine launch digest still ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; Git HEADs/common dirs independently match pinned baselines. Same HEAD does not imply source-identical reproduction. Cause and relevance of changed RE inventory not yet measured; do not attach this binding to old measurements or infer a stale game build. No lab/source mutation or new capture executed.\",\n11: \"timestamp\": \"2026-09-10T13:05:26.974324+00:00\"\n12: }\n\n(End of file - total 12 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"s-210e489610197533e4f4cce1\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Lead or authorized source-identity analyst compares the prior analyst/verifier launch RE file manifests with resolver source_before, naming every added/deleted/byte/mode-changed source path and confirming actual current paired source-binding. Preserve both manifests. Astra must decide explicit reconciliation or source-identical snapshot restoration by its owner before reproduction; no autonomous reset/copy or new source hash attached to old evidence.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"open\",\n \"summary\": \"Resolver session run-ec31ee938e1f509cd7130c03 found source identity drift before any experiment: launch record campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json source_before RE manifest_sha256 is e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 (line 5053), not analyst run-9daf5c3b75547271d5c3b4ed manifest source_before/source_after 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 and verifier checkpoint 4555678e34291015554e7e88. Engine launch digest still ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; Git HEADs/common dirs independently match pinned baselines. Same HEAD does not imply source-identical reproduction. Cause and relevance of changed RE inventory not yet measured; do not attach this binding to old measurements or infer a stale game build. No lab/source mutation or new capture executed.\",\n \"timestamp\": \"2026-09-10T13:05:26.974324+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-210e489610197533e4f4cce1.json","text":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"s-210e489610197533e4f4cce1\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Lead or authorized source-identity analyst compares the prior analyst/verifier launch RE file manifests with resolver source_before, naming every added/deleted/byte/mode-changed source path and confirming actual current paired source-binding. Preserve both manifests. Astra must decide explicit reconciliation or source-identical snapshot restoration by its owner before reproduction; no autonomous reset/copy or new source hash attached to old evidence.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"open\",\n \"summary\": \"Resolver session run-ec31ee938e1f509cd7130c03 found source identity drift before any experiment: launch record campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json source_before RE manifest_sha256 is e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 (line 5053), not analyst run-9daf5c3b75547271d5c3b4ed manifest source_before/source_after 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 and verifier checkpoint 4555678e34291015554e7e88. Engine launch digest still ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; Git HEADs/common dirs independently match pinned baselines. Same HEAD does not imply source-identical reproduction. Cause and relevance of changed RE inventory not yet measured; do not attach this binding to old measurements or infer a stale game build. No lab/source mutation or new capture executed.\",\n \"timestamp\": \"2026-09-10T13:05:26.974324+00:00\"\n}","lineStart":1,"lineEnd":12,"totalLines":12,"truncated":false}},"title":"campaign/runtime/surprises/s-210e489610197533e4f4cce1.json","time":{"start":1789045678739,"end":1789045678746}},"metadata":{"openai":{"itemId":"fc_085c9c87206af036016aa2abad623c87d1b5715d114f08eb0f"}},"id":"prt_08b6e9dc0001rpdcaEZjkfICHq","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6e9287001P4iG1bFsnBFSHN"}} +{"type":"step_finish","timestamp":1789045678857,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6ea305001MZ3yKglRmf7dr5","reason":"tool-calls","snapshot":"8fc0c9a536873d89ee059a0fc12aa2c21fe25caa","messageID":"msg_08b6e9287001P4iG1bFsnBFSHN","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"step-finish","tokens":{"total":13604,"input":13558,"output":46,"reasoning":0,"cache":{"write":0,"read":0}},"cost":0}} +{"type":"step_start","timestamp":1789045682079,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6eaf9b0016n2wqRm1evLsJj","messageID":"msg_08b6ea32f001OKckojipOT3Qjx","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","snapshot":"242364c69ca11dbeb831a1eb8603034e00a58874","type":"step-start"}} +{"type":"text","timestamp":1789045685565,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6eaf9e001H1tjRzhfv31dql","messageID":"msg_08b6ea32f001OKckojipOT3Qjx","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"text","text":"Observation: the prior resolver recorded an RE source-manifest mismatch despite matching baseline Git HEADs; the engine digest was unchanged. Provenance is open surprise `s-210e489610197533e4f4cce1` and checkpoint `3fc22ea3c402274179ce4d1f`. This establishes source-identity drift, not a stale game binary or game behavior. I’ll compare the recorded inventories and current bindings before deciding which evidence can be reused.\n\n","time":{"start":1789045682078,"end":1789045685560},"metadata":{"openai":{"itemId":"msg_029767b07e4b1a0a016aa2abb1f2b887d18b9f6d6dfc1a48fd","phase":"commentary"}}}} +{"type":"tool_use","timestamp":1789045688099,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"todowrite","callID":"call_mAXKpBltTQcxsA9c9iQxM3UT","state":{"status":"completed","input":{"todos":[{"content":"Inspect controls, affected records and current/historical source identities","status":"in_progress","priority":"high"},{"content":"Classify source drift and record scoped Astra resolution through campaign controls","status":"pending","priority":"high"},{"content":"Validate state and persist final session checkpoint with exact next action","status":"pending","priority":"high"}]},"output":"[\n {\n \"content\": \"Inspect controls, affected records and current/historical source identities\",\n \"status\": \"in_progress\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Classify source drift and record scoped Astra resolution through campaign controls\",\n \"status\": \"pending\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Validate state and persist final session checkpoint with exact next action\",\n \"status\": \"pending\",\n \"priority\": \"high\"\n }\n]","metadata":{"todos":[{"content":"Inspect controls, affected records and current/historical source identities","status":"in_progress","priority":"high"},{"content":"Classify source drift and record scoped Astra resolution through campaign controls","status":"pending","priority":"high"},{"content":"Validate state and persist final session checkpoint with exact next action","status":"pending","priority":"high"}],"truncated":false},"title":"3 todos","time":{"start":1789045688094,"end":1789045688097}},"metadata":{"openai":{"itemId":"fc_029767b07e4b1a0a016aa2abb56d8c87d1b9d1e561c9620492"}},"id":"prt_08b6ebd3b001eW77RqMSmPgzoK","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6ea32f001OKckojipOT3Qjx"}} +{"type":"step_finish","timestamp":1789045688162,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6ec75f001Lp6jwuifrp1yxG","reason":"tool-calls","snapshot":"88069bb93e8825c385f61e1ddb2a315a4cec3a47","messageID":"msg_08b6ea32f001OKckojipOT3Qjx","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"step-finish","tokens":{"total":14364,"input":731,"output":193,"reasoning":0,"cache":{"write":0,"read":13440}},"cost":0}} +{"type":"step_start","timestamp":1789045698381,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6eef4a0019ehZOv9z2mwRrd","messageID":"msg_08b6ec783001AHE0CO0Agtfh6F","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","snapshot":"360e1c169afdb1206b6fa21cae00739bd3ae460e","type":"step-start"}} +{"type":"tool_use","timestamp":1789045698475,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_WL6wX10SCYee8pghh9wmuS3r","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/guides/multi-agent-workflow.md"},"output":"/home/alex/sots-re/guides/multi-agent-workflow.md\nfile\n\n1: # Multi-agent operating architecture\n2: \n3: ## Product and milestone\n4: \n5: Reconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\n6: milestone is standalone replay given a captured command stream and complete declared runtime\n7: inputs. The first workflow pilot is the complete research write set. A passing host build is a\n8: component baseline, not a playable engine or independent replacement.\n9: \n10: ## Source of truth\n11: \n12: `campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\n13: leases and surprises, and evidence packages identify inputs, source and executable artifacts.\n14: `campaign/current.json` selects published evidence by path and digest. Board/dashboard are\n15: generated projections, never alternate writable authorities. Exact tool CLI/schema is documented\n16: in `campaign/README.md`. Historical findings retain their original experiment scope; they are\n17: not promoted by copying an old status into a new contract.\n18: \n19: ## Model authority\n20: \n21: | Responsibility | Model |\n22: |---|---|\n23: | Normal planning, architecture and integration loop | GPT-5.6 Sol |\n24: | Bounded RE analysis, implementation and independent verification | GPT-5.6 Sol |\n25: | Routine lab/workload operations | GPT-5.6 Sol |\n26: | Problem and surprise resolution | GPT-6 Astra |\n27: | Context compaction | GPT-5.5 |\n28: \n29: Exact provider IDs are in `campaign/models.json`. The lead escalates to Astra when a falsified\n30: assumption, conflict, instrument effect, or scope change blocks the loop. No fallback is automatic. Model names in editable JSON are\n31: provenance, not authentication: launcher events and independent review support the record.\n32: Permissions reduce accidental role drift; unrestricted local shell access is not a sandbox.\n33: \n34: ## Behavioral slice\n35: \n36: The lead specifies a bounded input domain, full observable write set, dependencies, acceptance\n37: workloads and stop conditions. The analyst recovers behavior; the verifier specifies discriminating\n38: tests before implementation; the implementer changes engine/adapters; the lab operator captures\n39: controls; the verifier reproduces; the integrator tests the combined source snapshot.\n40: \n41: Include transitive effects: allocations, IDs, container ELEMENTS, event text/records, RNG and\n42: nonserialized state. An address/function name is not a sufficient replacement boundary. If a\n43: neighbor function supplies required effects, extend the approved contract or expose it as an\n44: original dependency. Do not call the original and label the result independent.\n45: \n46: Lifecycle is `proposed → ready → implementing → verification → integration → accepted`, with\n47: blocked/revision states. Lifecycle is distinct from evidence strength. Acceptance is scoped to\n48: the manifest's exact procedure and workloads, never universal correctness.\n49: \n50: ## Independence\n51: \n52: Verifier and implementer are different executions. Verification starts with the contract, raw\n53: evidence and reproduction recipe, not just the author's conclusion. Require one meaningful\n54: challenge: held-out state, boundary, negative control, ablation, or independent state accounting.\n55: Both synthetic tests and original-game experiments matter. Repeat-call volume cannot replace\n56: branch and distinct-state coverage. Null effects and zero executions must be distinguishable.\n57: \n58: ## Sessions and recovery\n59: \n60: At most two implementation slices after a single-slice pilot. No nested worker delegation.\n61: Paired worktrees isolate source changes; unique build directories isolate artifacts. Canonical\n62: RE runtime state remains explicit even when a worker runs in `/tmp` worktrees.\n63: \n64: Checkpoint every 20 calls or 15min; also before experiments, compaction, handoff and stopping.\n65: Record source identities, exact changed paths, commands/results, artifacts and hashes, open\n66: surprises, held leases, requested/observed model, session identity and exact next action. Avoid\n67: large prose histories: raw logs belong in evidence; the checkpoint is a bounded resumption record.\n68: \n69: The launcher caps a quantum at 40 agent steps. A new quantum starts fresh using contract and\n70: checkpoint. Auto-compaction with an ample reserved window and four retained turns is enabled.\n71: This is a best-effort context backstop; regular durable checkpoints and fresh quanta provide the\n72: actual recovery discipline. Never claim a model compacted merely because a setting exists.\n73: \n74: ## Surprises\n75: \n76: On a falsified prediction, contradictory claim, unexplained regression, instrument interference,\n77: or newly necessary dependency: record the observation and evidence; block affected work. Astra\n78: first checks the instrument and source identity, then marks claims surviving/qualified/overturned,\n79: chooses a discriminating experiment, and records the revised plan. Unaffected contracted work\n80: may continue. Updating a paragraph without invalidating affected acceptance is insufficient.\n81: \n82: ## Lab ownership\n83: \n84: Acquire a canonical resource lease before VM, build-host or Ghidra mutation. An expired timestamp\n85: does not authorize stealing a lease. The lead reconciles stale ownership with actual processes.\n86: Use one guest at a time for maintenance, capture before/after inventory, preserve access and\n87: runtime dependencies, and verify unattended console login plus authenticated administration.\n88: Reboots require a free guest and a recorded recovery path. Runtime/Ghidra changes are experiments\n89: with provenance, not undocumented preparatory steps.\n90: \n91: ## Gate and publication\n92: \n93: Run the local gate with explicit engine, corpus, new output directory and profile. It snapshots\n94: source, uses fresh builds, records manifests and runs the expected test inventory once. Host\n95: profile allows a named list of unavailable asset/trace tests and publishes them as limitations.\n96: Full acceptance requires the full profile and the slice-specific original oracle; no blanket\n97: waiver converts a host pass to fidelity. Standalone measurement may diverge; acceptance may not.\n98: \n99: The integrator alone selects current results after verifying their hashes and source binding.\n100: No percentages of LOC, mapped rows or closed leaves purport to measure engine completeness.\n101: Run failure and missing evidence are visible states. Old results remain historical, not current.\n\n(End of file - total 101 lines)\n","metadata":{"preview":"# Multi-agent operating architecture\n\n## Product and milestone\n\nReconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\nmilestone is standalone replay given a captured command stream and complete declared runtime\ninputs. The first workflow pilot is the complete research write set. A passing host build is a\ncomponent baseline, not a playable engine or independent replacement.\n\n## Source of truth\n\n`campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\nleases and surprises, and evidence packages identify inputs, source and executable artifacts.\n`campaign/current.json` selects published evidence by path and digest. Board/dashboard are\ngenerated projections, never alternate writable authorities. Exact tool CLI/schema is documented\nin `campaign/README.md`. Historical findings retain their original experiment scope; they are\nnot promoted by copying an old status into a new contract.\n\n## Model authority\n","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/guides/multi-agent-workflow.md","text":"# Multi-agent operating architecture\n\n## Product and milestone\n\nReconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\nmilestone is standalone replay given a captured command stream and complete declared runtime\ninputs. The first workflow pilot is the complete research write set. A passing host build is a\ncomponent baseline, not a playable engine or independent replacement.\n\n## Source of truth\n\n`campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\nleases and surprises, and evidence packages identify inputs, source and executable artifacts.\n`campaign/current.json` selects published evidence by path and digest. Board/dashboard are\ngenerated projections, never alternate writable authorities. Exact tool CLI/schema is documented\nin `campaign/README.md`. Historical findings retain their original experiment scope; they are\nnot promoted by copying an old status into a new contract.\n\n## Model authority\n\n| Responsibility | Model |\n|---|---|\n| Normal planning, architecture and integration loop | GPT-5.6 Sol |\n| Bounded RE analysis, implementation and independent verification | GPT-5.6 Sol |\n| Routine lab/workload operations | GPT-5.6 Sol |\n| Problem and surprise resolution | GPT-6 Astra |\n| Context compaction | GPT-5.5 |\n\nExact provider IDs are in `campaign/models.json`. The lead escalates to Astra when a falsified\nassumption, conflict, instrument effect, or scope change blocks the loop. No fallback is automatic. Model names in editable JSON are\nprovenance, not authentication: launcher events and independent review support the record.\nPermissions reduce accidental role drift; unrestricted local shell access is not a sandbox.\n\n## Behavioral slice\n\nThe lead specifies a bounded input domain, full observable write set, dependencies, acceptance\nworkloads and stop conditions. The analyst recovers behavior; the verifier specifies discriminating\ntests before implementation; the implementer changes engine/adapters; the lab operator captures\ncontrols; the verifier reproduces; the integrator tests the combined source snapshot.\n\nInclude transitive effects: allocations, IDs, container ELEMENTS, event text/records, RNG and\nnonserialized state. An address/function name is not a sufficient replacement boundary. If a\nneighbor function supplies required effects, extend the approved contract or expose it as an\noriginal dependency. Do not call the original and label the result independent.\n\nLifecycle is `proposed → ready → implementing → verification → integration → accepted`, with\nblocked/revision states. Lifecycle is distinct from evidence strength. Acceptance is scoped to\nthe manifest's exact procedure and workloads, never universal correctness.\n\n## Independence\n\nVerifier and implementer are different executions. Verification starts with the contract, raw\nevidence and reproduction recipe, not just the author's conclusion. Require one meaningful\nchallenge: held-out state, boundary, negative control, ablation, or independent state accounting.\nBoth synthetic tests and original-game experiments matter. Repeat-call volume cannot replace\nbranch and distinct-state coverage. Null effects and zero executions must be distinguishable.\n\n## Sessions and recovery\n\nAt most two implementation slices after a single-slice pilot. No nested worker delegation.\nPaired worktrees isolate source changes; unique build directories isolate artifacts. Canonical\nRE runtime state remains explicit even when a worker runs in `/tmp` worktrees.\n\nCheckpoint every 20 calls or 15min; also before experiments, compaction, handoff and stopping.\nRecord source identities, exact changed paths, commands/results, artifacts and hashes, open\nsurprises, held leases, requested/observed model, session identity and exact next action. Avoid\nlarge prose histories: raw logs belong in evidence; the checkpoint is a bounded resumption record.\n\nThe launcher caps a quantum at 40 agent steps. A new quantum starts fresh using contract and\ncheckpoint. Auto-compaction with an ample reserved window and four retained turns is enabled.\nThis is a best-effort context backstop; regular durable checkpoints and fresh quanta provide the\nactual recovery discipline. Never claim a model compacted merely because a setting exists.\n\n## Surprises\n\nOn a falsified prediction, contradictory claim, unexplained regression, instrument interference,\nor newly necessary dependency: record the observation and evidence; block affected work. Astra\nfirst checks the instrument and source identity, then marks claims surviving/qualified/overturned,\nchooses a discriminating experiment, and records the revised plan. Unaffected contracted work\nmay continue. Updating a paragraph without invalidating affected acceptance is insufficient.\n\n## Lab ownership\n\nAcquire a canonical resource lease before VM, build-host or Ghidra mutation. An expired timestamp\ndoes not authorize stealing a lease. The lead reconciles stale ownership with actual processes.\nUse one guest at a time for maintenance, capture before/after inventory, preserve access and\nruntime dependencies, and verify unattended console login plus authenticated administration.\nReboots require a free guest and a recorded recovery path. Runtime/Ghidra changes are experiments\nwith provenance, not undocumented preparatory steps.\n\n## Gate and publication\n\nRun the local gate with explicit engine, corpus, new output directory and profile. It snapshots\nsource, uses fresh builds, records manifests and runs the expected test inventory once. Host\nprofile allows a named list of unavailable asset/trace tests and publishes them as limitations.\nFull acceptance requires the full profile and the slice-specific original oracle; no blanket\nwaiver converts a host pass to fidelity. Standalone measurement may diverge; acceptance may not.\n\nThe integrator alone selects current results after verifying their hashes and source binding.\nNo percentages of LOC, mapped rows or closed leaves purport to measure engine completeness.\nRun failure and missing evidence are visible states. Old results remain historical, not current.","lineStart":1,"lineEnd":101,"totalLines":101,"truncated":false}},"title":"guides/multi-agent-workflow.md","time":{"start":1789045698430,"end":1789045698470}},"metadata":{"openai":{"itemId":"fc_07cc987a0ac3c536016aa2abc2340c87d19c1b585c026dc0fc"}},"id":"prt_08b6eef4c001DeVqjOyzitJzgD","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6ec783001AHE0CO0Agtfh6F"}} +{"type":"tool_use","timestamp":1789045698499,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"bash","callID":"call_8J3SOajWma9VJc8U2tltd9RZ","state":{"status":"error","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi && python3 tools/campaign.py --state-root /home/alex/sots-re --help"},"error":"The user has specified a rule which prevents you from using this specific tool call. Here are some of the relevant rules [{\"permission\":\"*\",\"action\":\"allow\",\"pattern\":\"*\"},{\"permission\":\"bash\",\"pattern\":\"*\",\"action\":\"deny\"},{\"permission\":\"bash\",\"pattern\":\"git -C * status *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"git -C * diff *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"git -C * log *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"git -C * rev-parse *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"git -C * show *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re checkpoint *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re resolve *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re surprise *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re status *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re validate *\",\"action\":\"allow\"}]","time":{"start":1789045698450,"end":1789045698494}},"metadata":{"openai":{"itemId":"fc_07cc987a0ac3c536016aa2abc2345087d184c16ba638965cf2"}},"id":"prt_08b6eef8d001kBqhKgCiulpXN5","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6ec783001AHE0CO0Agtfh6F"}} +{"type":"tool_use","timestamp":1789045698500,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_JuByZ6GdMqYPNXfYIbxpluux","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json"},"output":"/home/alex/sots-re/campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json\nfile\n\n1: {\n2: \"actor\": \"research-problem-resolver\",\n3: \"contract\": \"research-completion-abi\",\n4: \"explanation\": \"Astra resolution-only, session run-ec31ee938e1f509cd7130c03. OBSERVATION/PROVENANCE: verifier plan verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 requires complete ret 4 at 0x00779912 with stop 0x00779913. Analyst run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt line 79 shows c2 04 00 through 0x00779914; checkpoint 1d04a2672a212e8b1fb37297 rehashed plan to 78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc and authority to 973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8, matching prior plan hash and analyst manifest. Analyst a20/a28 raw streams show terminal 74 versus 74 10 at 0x00779a1f; section-byte control contains 74 10 8b cf e8 28 6a ff ff. Instrument output is boundary-sensitive even when its mnemonic/target looks complete. This falsifies a verifier expectation before execution, not analyst authority or game behavior.\\nIDENTITY/EXECUTION: assigned Git HEAD/common roots match engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Historical analyst manifest binds binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd GNU 2.38, and twelve explicit commands with zero exits, nonempty stdout and empty stderr. These are positive archived static executions, not fresh resolver executions. Binary/tool not freshly rehashed here. Current runner engine digest matches ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; RE runner digest e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Separate open surprise s-210e489610197533e4f4cce1 blocks source-identical reproduction. No stale-build/game-mechanism diagnosis. No runtime instrument neutrality, allocator, RNG or game execution measured.\\nCLAIMS: O... (line truncated to 2000 chars)\n5: \"id\": \"d-6e30d172051af0385f5979eb\",\n6: \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-1d04a2672a212e8b1fb37297.json\",\n7: \"invalidated_evidence\": [],\n8: \"model\": \"openai/gpt-6-astra\",\n9: \"probe\": \"Cheapest boundary discriminator, NOT run here: after s-210e489610197533e4f4cce1 source reconciliation and lead authorization, checkpoint a fresh independent verifier session and new fail-if-exists directory. Rehash binary, objdump/interpreter, recipe, paired source and archived-save inputs before/after. Run /usr/bin/objdump -D -Mintel --start-address=0x00779850 against dumps/sots.exe twice, stops 0x00779913 and 0x00779915, plus full authority stop 0x00779930. Independently map PE VA 0x00779912..0x00779914 to file offsets and read bytes directly (not only a second disassembly). Predict c2-only truncated byte row at bad stop and c2 04 00 ret 4 at aligned stop, no changed preceding complete rows; preserve mnemonic/bytes separately. Normal-return stop must not be counted as unwind coverage. Keep a20 negative and aligned a21/a23/a28 controls, all other ABI/save falsifiers and explicit unexercised runtime states. Record actual commands, timestamps, exits, raw stdout/stderr hashes, positive executions and all missing/skipped states; reject drift, unexpected stderr, zero execution or contradiction. Mark original prediction failed, repaired control unblinded/new, never retroactive success. Immediate next action is lead scheduling a read-only manifest-delta review for source surprise, not this blocked reproduction.\",\n10: \"role\": \"resolver\",\n11: \"schema\": \"sots-decision/1\",\n12: \"surprise\": \"s-81ffc3041e1f07b87928e6f2\",\n13: \"timestamp\": \"2026-09-10T13:06:19.620541+00:00\"\n14: }\n\n(End of file - total 14 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only, session run-ec31ee938e1f509cd7130c03. OBSERVATION/PROVENANCE: verifier plan verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 requires complete ret 4 at 0x00779912 with stop 0x00779913. Analyst run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt line 79 shows c2 04 00 through 0x00779914; checkpoint 1d04a2672a212e8b1fb37297 rehashed plan to 78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc and authority to 973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8, matching prior plan hash and analyst manifest. Analyst a20/a28 raw streams show terminal 74 versus 74 10 at 0x00779a1f; section-byte control contains 74 10 8b cf e8 28 6a ff ff. Instrument output is boundary-sensitive even when its mnemonic/target looks complete. This falsifies a verifier expectation before execution, not analyst authority or game behavior.\\nIDENTITY/EXECUTION: assigned Git HEAD/common roots match engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Historical analyst manifest binds binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd GNU 2.38, and twelve explicit commands with zero exits, nonempty stdout and empty stderr. These are positive archived static executions, not fresh resolver executions. Binary/tool not freshly rehashed here. Current runner engine digest matches ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; RE runner digest e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Separate open surprise s-210e489610197533e4f4cce1 blocks source-identical reproduction. No stale-build/game-mechanism diagnosis. No runtime instrument neutrality, allocator, RNG or game execution measured.\\nCLAIMS: O... (line truncated to 2000 chars)\n \"id\": \"d-6e30d172051af0385f5979eb\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-1d04a2672a212e8b1fb37297.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest boundary discriminator, NOT run here: after s-210e489610197533e4f4cce1 source reconciliation and lead authorization, checkpoint a fresh independent verifier session and new fail-if-exists directory. Rehash binary, objdump/interpreter, recipe, paired source and archived-save inputs before/after. Run /usr/bin/objdump -D -Mintel --start-address=0x00779850 against dumps/sots.exe twice, stops 0x00779913 and 0x00779915, plus full authority stop 0x00779930. Independently map PE VA 0x00779912..0x00779914 to file offsets and read bytes directly (not only a second disassembly). Predict c2-only truncated byte row at bad stop and c2 04 00 ret 4 at aligned stop, no changed preceding complete rows; preserve mnemonic/bytes separately. Normal-return stop must not be counted as unwind coverage. Keep a20 negative and aligned a21/a23/a28 controls, all other ABI/save falsifiers and explicit unexercised runtime states. Record actual commands, timestamps, exits, raw stdout/stderr hashes, positive executions and all missing/skipped states; reject drift, unexpected stderr, zero execution or contradiction. Mark original prediction failed, repaired control unblinded/new, never retroactive success. Immediate next action is lead scheduling a read-only manifest-delta review for source surprise, not this blocked reproduction.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-81ffc3041e1f07b87928e6f2\",\n \"timestamp\": \"2026-09-10T13:06:19.620541+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json","text":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only, session run-ec31ee938e1f509cd7130c03. OBSERVATION/PROVENANCE: verifier plan verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 requires complete ret 4 at 0x00779912 with stop 0x00779913. Analyst run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt line 79 shows c2 04 00 through 0x00779914; checkpoint 1d04a2672a212e8b1fb37297 rehashed plan to 78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc and authority to 973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8, matching prior plan hash and analyst manifest. Analyst a20/a28 raw streams show terminal 74 versus 74 10 at 0x00779a1f; section-byte control contains 74 10 8b cf e8 28 6a ff ff. Instrument output is boundary-sensitive even when its mnemonic/target looks complete. This falsifies a verifier expectation before execution, not analyst authority or game behavior.\\nIDENTITY/EXECUTION: assigned Git HEAD/common roots match engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Historical analyst manifest binds binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd GNU 2.38, and twelve explicit commands with zero exits, nonempty stdout and empty stderr. These are positive archived static executions, not fresh resolver executions. Binary/tool not freshly rehashed here. Current runner engine digest matches ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; RE runner digest e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Separate open surprise s-210e489610197533e4f4cce1 blocks source-identical reproduction. No stale-build/game-mechanism diagnosis. No runtime instrument neutrality, allocator, RNG or game execution measured.\\nCLAIMS: O... (line truncated to 2000 chars)\n \"id\": \"d-6e30d172051af0385f5979eb\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-1d04a2672a212e8b1fb37297.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest boundary discriminator, NOT run here: after s-210e489610197533e4f4cce1 source reconciliation and lead authorization, checkpoint a fresh independent verifier session and new fail-if-exists directory. Rehash binary, objdump/interpreter, recipe, paired source and archived-save inputs before/after. Run /usr/bin/objdump -D -Mintel --start-address=0x00779850 against dumps/sots.exe twice, stops 0x00779913 and 0x00779915, plus full authority stop 0x00779930. Independently map PE VA 0x00779912..0x00779914 to file offsets and read bytes directly (not only a second disassembly). Predict c2-only truncated byte row at bad stop and c2 04 00 ret 4 at aligned stop, no changed preceding complete rows; preserve mnemonic/bytes separately. Normal-return stop must not be counted as unwind coverage. Keep a20 negative and aligned a21/a23/a28 controls, all other ABI/save falsifiers and explicit unexercised runtime states. Record actual commands, timestamps, exits, raw stdout/stderr hashes, positive executions and all missing/skipped states; reject drift, unexpected stderr, zero execution or contradiction. Mark original prediction failed, repaired control unblinded/new, never retroactive success. Immediate next action is lead scheduling a read-only manifest-delta review for source surprise, not this blocked reproduction.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-81ffc3041e1f07b87928e6f2\",\n \"timestamp\": \"2026-09-10T13:06:19.620541+00:00\"\n}","lineStart":1,"lineEnd":14,"totalLines":14,"truncated":false}},"title":"campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json","time":{"start":1789045698437,"end":1789045698497}},"metadata":{"openai":{"itemId":"fc_07cc987a0ac3c536016aa2abc2342087d19b80004283250c51"}},"id":"prt_08b6eef80001KHSAzeIfoeoEca","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6ec783001AHE0CO0Agtfh6F"}} +{"type":"tool_use","timestamp":1789045698505,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_gjvReMNPff4eZxgQIsgHp40K","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\nfile\n\n1: {\n2: \"schema\": \"sots-abi-static-capture/1\",\n3: \"session\": \"run-9daf5c3b75547271d5c3b4ed\",\n4: \"actor\": \"research-abi-analyst\",\n5: \"role\": \"analyst\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"timestamp\": \"2026-09-10T04:59:38.840348+00:00\",\n8: \"decisions\": [\n9: \"d-fd5aff1eaf78a8c15d96723c\",\n10: \"d-0bb927e63b915c87a58d4257\"\n11: ],\n12: \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n13: \"negative_preflight\": [\n14: {\n15: \"name\": \"reject-missing-session\",\n16: \"status\": \"pass\",\n17: \"rejection\": \"missing session\"\n18: },\n19: {\n20: \"name\": \"reject-stale-session\",\n21: \"status\": \"pass\",\n22: \"rejection\": \"stale or unexpected session\"\n23: },\n24: {\n25: \"name\": \"reject-stale-output\",\n26: \"status\": \"pass\",\n27: \"rejection\": \"output location is not bound to session\"\n28: },\n29: {\n30: \"name\": \"reject-reused-output\",\n31: \"status\": \"pass\",\n32: \"rejection\": \"output location was already used\"\n33: }\n34: ],\n35: \"source_before\": {\n36: \"argv\": [\n37: \"python3\",\n38: \"/home/alex/sots-re/tools/campaign.py\",\n39: \"--state-root\",\n40: \"/home/alex/sots-re\",\n41: \"source-binding\",\n42: \"research-completion-abi\",\n43: \"--engine-worktree\",\n44: \"/tmp/opencode/sots-final-research-engine\",\n45: \"--re-worktree\",\n46: \"/tmp/opencode/sots-final-research-re\"\n47: ],\n48: \"value\": {\n49: \"engine\": {\n50: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n51: \"path\": \"/tmp/opencode/sots-final-research-engine\",\n52: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n53: },\n54: \"re\": {\n55: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n56: \"path\": \"/tmp/opencode/sots-final-research-re\",\n57: \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n58: }\n59: }\n60: },\n61: \"source_after\": {\n62: \"argv\": [\n63: \"python3\",\n64: \"/home/alex/sots-re/tools/campaign.py\",\n65: \"--state-root\",\n66: \"/home/alex/sots-re\",\n67: \"source-binding\",\n68: \"research-completion-abi\",\n69: \"--engine-worktree\",\n70: \"/tmp/opencode/sots-final-research-engine\",\n71: \"--re-worktree\",\n72: \"/tmp/opencode/sots-final-research-re\"\n73: ],\n74: \"value\": {\n75: \"engine\": {\n76: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n77: \"path\": \"/tmp/opencode/sots-final-research-engine\",\n78: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n79: },\n80: \"re\": {\n81: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n82: \"path\": \"/tmp/opencode/sots-final-research-re\",\n83: \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n84: }\n85: }\n86: },\n87: \"input\": {\n88: \"path\": \"/home/alex/sots-re/dumps/sots.exe\",\n89: \"bytes\": 7898624,\n90: \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n91: },\n92: \"tool\": {\n93: \"path\": \"/usr/bin/objdump\",\n94: \"bytes\": 373888,\n95: \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n96: \"version\": \"GNU objdump (GNU Binutils for Ubuntu) 2.38\"\n97: },\n98: \"commands\": [\n99: {\n100: \"name\": \"turn-get-create-exact\",\n101: \"classification\": \"complete-control\",\n102: \"argv\": [\n103: \"/usr/bin/objdump\",\n104: \"-D\",\n105: \"-Mintel\",\n106: \"--start-address=0x00885380\",\n107: \"--stop-address=0x0088544a\",\n108: \"/home/alex/sots-re/dumps/sots.exe\"\n109: ],\n110: \"cwd\": \"/home/alex/sots-re\",\n111: \"returncode\": 0,\n112: \"stdout\": {\n113: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stdout.txt\",\n114: \"bytes\": 3974,\n115: \"sha256\": \"f6e72ba9b08fdf48d70f39379b2fb30a5adbe796072485f70c5795c10ab45ca3\"\n116: },\n117: \"stderr\": {\n118: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stderr.txt\",\n119: \"bytes\": 0,\n120: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n121: }\n122: },\n123: {\n124: \"name\": \"turn-get-create-wide\",\n125: \"classification\": \"boundary-audit\",\n126: \"argv\": [\n127: \"/usr/bin/objdump\",\n128: \"-D\",\n129: \"-Mintel\",\n130: \"--start-address=0x00885380\",\n131: \"--stop-address=0x0088544e\",\n132: \"/home/alex/sots-re/dumps/sots.exe\"\n133: ],\n134: \"cwd\": \"/home/alex/sots-re\",\n135: \"returncode\": 0,\n136: \"stdout\": {\n137: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stdout.txt\",\n138: \"bytes\": 4134,\n139: \"sha256\": \"9cb7d2ccfcc645b3b642e520ba51c85330c57d6d4395ed3fbd4a4a1950436e80\"\n140: },\n141: \"stderr\": {\n142: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stderr.txt\",\n143: \"bytes\": 0,\n144: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n145: }\n146: },\n147: {\n148: \"name\": \"turn-append-exact\",\n149: \"classification\": \"complete-control\",\n150: \"argv\": [\n151: \"/usr/bin/objdump\",\n152: \"-D\",\n153: \"-Mintel\",\n154: \"--start-address=0x00884cb0\",\n155: \"--stop-address=0x00884d8f\",\n156: \"/home/alex/sots-re/dumps/sots.exe\"\n157: ],\n158: \"cwd\": \"/home/alex/sots-re\",\n159: \"returncode\": 0,\n160: \"stdout\": {\n161: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stdout.txt\",\n162: \"bytes\": 4179,\n163: \"sha256\": \"57d6655feed0fc137bb2b7eee4bfcb09536b5a715603c917ee142770f1d52a15\"\n164: },\n165: \"stderr\": {\n166: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stderr.txt\",\n167: \"bytes\": 0,\n168: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n169: }\n170: },\n171: {\n172: \"name\": \"turn-append-wide\",\n173: \"classification\": \"boundary-audit\",\n174: \"argv\": [\n175: \"/usr/bin/objdump\",\n176: \"-D\",\n177: \"-Mintel\",\n178: \"--start-address=0x00884cb0\",\n179: \"--stop-address=0x00884d93\",\n180: \"/home/alex/sots-re/dumps/sots.exe\"\n181: ],\n182: \"cwd\": \"/home/alex/sots-re\",\n183: \"returncode\": 0,\n184: \"stdout\": {\n185: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stdout.txt\",\n186: \"bytes\": 4309,\n187: \"sha256\": \"957339f40b2af8947cb883cc1d3a9d1e151bf7663305415065472ef9171dc33d\"\n188: },\n189: \"stderr\": {\n190: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stderr.txt\",\n191: \"bytes\": 0,\n192: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n193: }\n194: },\n195: {\n196: \"name\": \"nested-dtor-exact\",\n197: \"classification\": \"complete-control\",\n198: \"argv\": [\n199: \"/usr/bin/objdump\",\n200: \"-D\",\n201: \"-Mintel\",\n202: \"--start-address=0x00629580\",\n203: \"--stop-address=0x006295ca\",\n204: \"/home/alex/sots-re/dumps/sots.exe\"\n205: ],\n206: \"cwd\": \"/home/alex/sots-re\",\n207: \"returncode\": 0,\n208: \"stdout\": {\n209: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stdout.txt\",\n210: \"bytes\": 1727,\n211: \"sha256\": \"3c38887e60d009ab904772b13be93ac1eedd9bee85024e37110160a625db3a83\"\n212: },\n213: \"stderr\": {\n214: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stderr.txt\",\n215: \"bytes\": 0,\n216: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n217: }\n218: },\n219: {\n220: \"name\": \"nested-dtor-wide\",\n221: \"classification\": \"boundary-audit\",\n222: \"argv\": [\n223: \"/usr/bin/objdump\",\n224: \"-D\",\n225: \"-Mintel\",\n226: \"--start-address=0x00629580\",\n227: \"--stop-address=0x006295ce\",\n228: \"/home/alex/sots-re/dumps/sots.exe\"\n229: ],\n230: \"cwd\": \"/home/alex/sots-re\",\n231: \"returncode\": 0,\n232: \"stdout\": {\n233: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stdout.txt\",\n234: \"bytes\": 1887,\n235: \"sha256\": \"0aba6fc800760e3a113c07238cfb6e721623eb0bb8a933a990d3e2e82823d00f\"\n236: },\n237: \"stderr\": {\n238: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stderr.txt\",\n239: \"bytes\": 0,\n240: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n241: }\n242: },\n243: {\n244: \"name\": \"nested-copy-authority\",\n245: \"classification\": \"bounded-authority\",\n246: \"argv\": [\n247: \"/usr/bin/objdump\",\n248: \"-D\",\n249: \"-Mintel\",\n250: \"--start-address=0x00779850\",\n251: \"--stop-address=0x00779930\",\n252: \"/home/alex/sots-re/dumps/sots.exe\"\n253: ],\n254: \"cwd\": \"/home/alex/sots-re\",\n255: \"returncode\": 0,\n256: \"stdout\": {\n257: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n258: \"bytes\": 4465,\n259: \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n260: },\n261: \"stderr\": {\n262: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stderr.txt\",\n263: \"bytes\": 0,\n264: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n265: }\n266: },\n267: {\n268: \"name\": \"nested-copy-stop-a20\",\n269: \"classification\": \"expected-truncated-negative\",\n270: \"argv\": [\n271: \"/usr/bin/objdump\",\n272: \"-D\",\n273: \"-Mintel\",\n274: \"--start-address=0x00779850\",\n275: \"--stop-address=0x00779a20\",\n276: \"/home/alex/sots-re/dumps/sots.exe\"\n277: ],\n278: \"cwd\": \"/home/alex/sots-re\",\n279: \"returncode\": 0,\n280: \"stdout\": {\n281: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\",\n282: \"bytes\": 8469,\n283: \"sha256\": \"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\"\n284: },\n285: \"stderr\": {\n286: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stderr.txt\",\n287: \"bytes\": 0,\n288: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n289: }\n290: },\n291: {\n292: \"name\": \"nested-copy-stop-a21\",\n293: \"classification\": \"predicted-complete-je\",\n294: \"argv\": [\n295: \"/usr/bin/objdump\",\n296: \"-D\",\n297: \"-Mintel\",\n298: \"--start-address=0x00779850\",\n299: \"--stop-address=0x00779a21\",\n300: \"/home/alex/sots-re/dumps/sots.exe\"\n301: ],\n302: \"cwd\": \"/home/alex/sots-re\",\n303: \"returncode\": 0,\n304: \"stdout\": {\n305: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stdout.txt\",\n306: \"bytes\": 8471,\n307: \"sha256\": \"b6d58767d00328c37139f439db480c9bb5ce6767dabf212f9e750a31fea0d3d7\"\n308: },\n309: \"stderr\": {\n310: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stderr.txt\",\n311: \"bytes\": 0,\n312: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n313: }\n314: },\n315: {\n316: \"name\": \"nested-copy-stop-a23\",\n317: \"classification\": \"predicted-complete-mov\",\n318: \"argv\": [\n319: \"/usr/bin/objdump\",\n320: \"-D\",\n321: \"-Mintel\",\n322: \"--start-address=0x00779850\",\n323: \"--stop-address=0x00779a23\",\n324: \"/home/alex/sots-re/dumps/sots.exe\"\n325: ],\n326: \"cwd\": \"/home/alex/sots-re\",\n327: \"returncode\": 0,\n328: \"stdout\": {\n329: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stdout.txt\",\n330: \"bytes\": 8518,\n331: \"sha256\": \"e8cc66eb74730fcf7853d66df8caa620ddb3fc8c75335f0573ac490037a7a88e\"\n332: },\n333: \"stderr\": {\n334: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stderr.txt\",\n335: \"bytes\": 0,\n336: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n337: }\n338: },\n339: {\n340: \"name\": \"nested-copy-stop-a28\",\n341: \"classification\": \"complete-call-boundary-control\",\n342: \"argv\": [\n343: \"/usr/bin/objdump\",\n344: \"-D\",\n345: \"-Mintel\",\n346: \"--start-address=0x00779850\",\n347: \"--stop-address=0x00779a28\",\n348: \"/home/alex/sots-re/dumps/sots.exe\"\n349: ],\n350: \"cwd\": \"/home/alex/sots-re\",\n351: \"returncode\": 0,\n352: \"stdout\": {\n353: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\",\n354: \"bytes\": 8566,\n355: \"sha256\": \"7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560\"\n356: },\n357: \"stderr\": {\n358: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stderr.txt\",\n359: \"bytes\": 0,\n360: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n361: }\n362: },\n363: {\n364: \"name\": \"nested-copy-boundary-bytes\",\n365: \"classification\": \"raw-byte-boundary-control\",\n366: \"argv\": [\n367: \"/usr/bin/objdump\",\n368: \"-s\",\n369: \"-j\",\n370: \".text\",\n371: \"--start-address=0x00779a1f\",\n372: \"--stop-address=0x00779a28\",\n373: \"/home/alex/sots-re/dumps/sots.exe\"\n374: ],\n375: \"cwd\": \"/home/alex/sots-re\",\n376: \"returncode\": 0,\n377: \"stdout\": {\n378: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\",\n379: \"bytes\": 151,\n380: \"sha256\": \"b2d9b57274be71fcdd853f04758bc65d701e7b4cc169d0d5ede24c8788ef82d5\"\n381: },\n382: \"stderr\": {\n383: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stderr.txt\",\n384: \"bytes\": 0,\n385: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n386: }\n387: }\n388: ],\n389: \"checks\": [\n390: {\n391: \"name\": \"explicit-session\",\n392: \"status\": \"pass\"\n393: },\n394: {\n395: \"name\": \"session-output-match\",\n396: \"status\": \"pass\"\n397: },\n398: {\n399: \"name\": \"negative-preflight-all-rejected\",\n400: \"status\": \"pass\"\n401: },\n402: {\n403: \"name\": \"binary-hash\",\n404: \"status\": \"pass\"\n405: },\n406: {\n407: \"name\": \"tool-hash\",\n408: \"status\": \"pass\"\n409: },\n410: {\n411: \"name\": \"source-stable\",\n412: \"status\": \"pass\"\n413: },\n414: {\n415: \"name\": \"all-return-zero\",\n416: \"status\": \"pass\"\n417: },\n418: {\n419: \"name\": \"all-stdout-nonempty\",\n420: \"status\": \"pass\"\n421: },\n422: {\n423: \"name\": \"all-stderr-empty\",\n424: \"status\": \"pass\"\n425: }\n426: ],\n427: \"failed\": []\n428: }\n\n(End of file - total 428 lines)\n","metadata":{"preview":"{\n \"schema\": \"sots-abi-static-capture/1\",\n \"session\": \"run-9daf5c3b75547271d5c3b4ed\",\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": \"2026-09-10T04:59:38.840348+00:00\",\n \"decisions\": [\n \"d-fd5aff1eaf78a8c15d96723c\",\n \"d-0bb927e63b915c87a58d4257\"\n ],\n \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n \"negative_preflight\": [\n {\n \"name\": \"reject-missing-session\",\n \"status\": \"pass\",\n \"rejection\": \"missing session\"\n },\n {\n \"name\": \"reject-stale-session\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json","text":"{\n \"schema\": \"sots-abi-static-capture/1\",\n \"session\": \"run-9daf5c3b75547271d5c3b4ed\",\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": \"2026-09-10T04:59:38.840348+00:00\",\n \"decisions\": [\n \"d-fd5aff1eaf78a8c15d96723c\",\n \"d-0bb927e63b915c87a58d4257\"\n ],\n \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n \"negative_preflight\": [\n {\n \"name\": \"reject-missing-session\",\n \"status\": \"pass\",\n \"rejection\": \"missing session\"\n },\n {\n \"name\": \"reject-stale-session\",\n \"status\": \"pass\",\n \"rejection\": \"stale or unexpected session\"\n },\n {\n \"name\": \"reject-stale-output\",\n \"status\": \"pass\",\n \"rejection\": \"output location is not bound to session\"\n },\n {\n \"name\": \"reject-reused-output\",\n \"status\": \"pass\",\n \"rejection\": \"output location was already used\"\n }\n ],\n \"source_before\": {\n \"argv\": [\n \"python3\",\n \"/home/alex/sots-re/tools/campaign.py\",\n \"--state-root\",\n \"/home/alex/sots-re\",\n \"source-binding\",\n \"research-completion-abi\",\n \"--engine-worktree\",\n \"/tmp/opencode/sots-final-research-engine\",\n \"--re-worktree\",\n \"/tmp/opencode/sots-final-research-re\"\n ],\n \"value\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n }\n },\n \"source_after\": {\n \"argv\": [\n \"python3\",\n \"/home/alex/sots-re/tools/campaign.py\",\n \"--state-root\",\n \"/home/alex/sots-re\",\n \"source-binding\",\n \"research-completion-abi\",\n \"--engine-worktree\",\n \"/tmp/opencode/sots-final-research-engine\",\n \"--re-worktree\",\n \"/tmp/opencode/sots-final-research-re\"\n ],\n \"value\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n }\n },\n \"input\": {\n \"path\": \"/home/alex/sots-re/dumps/sots.exe\",\n \"bytes\": 7898624,\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n },\n \"tool\": {\n \"path\": \"/usr/bin/objdump\",\n \"bytes\": 373888,\n \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n \"version\": \"GNU objdump (GNU Binutils for Ubuntu) 2.38\"\n },\n \"commands\": [\n {\n \"name\": \"turn-get-create-exact\",\n \"classification\": \"complete-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00885380\",\n \"--stop-address=0x0088544a\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stdout.txt\",\n \"bytes\": 3974,\n \"sha256\": \"f6e72ba9b08fdf48d70f39379b2fb30a5adbe796072485f70c5795c10ab45ca3\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"turn-get-create-wide\",\n \"classification\": \"boundary-audit\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00885380\",\n \"--stop-address=0x0088544e\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stdout.txt\",\n \"bytes\": 4134,\n \"sha256\": \"9cb7d2ccfcc645b3b642e520ba51c85330c57d6d4395ed3fbd4a4a1950436e80\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"turn-append-exact\",\n \"classification\": \"complete-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00884cb0\",\n \"--stop-address=0x00884d8f\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stdout.txt\",\n \"bytes\": 4179,\n \"sha256\": \"57d6655feed0fc137bb2b7eee4bfcb09536b5a715603c917ee142770f1d52a15\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"turn-append-wide\",\n \"classification\": \"boundary-audit\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00884cb0\",\n \"--stop-address=0x00884d93\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stdout.txt\",\n \"bytes\": 4309,\n \"sha256\": \"957339f40b2af8947cb883cc1d3a9d1e151bf7663305415065472ef9171dc33d\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-dtor-exact\",\n \"classification\": \"complete-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00629580\",\n \"--stop-address=0x006295ca\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stdout.txt\",\n \"bytes\": 1727,\n \"sha256\": \"3c38887e60d009ab904772b13be93ac1eedd9bee85024e37110160a625db3a83\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-dtor-wide\",\n \"classification\": \"boundary-audit\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00629580\",\n \"--stop-address=0x006295ce\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stdout.txt\",\n \"bytes\": 1887,\n \"sha256\": \"0aba6fc800760e3a113c07238cfb6e721623eb0bb8a933a990d3e2e82823d00f\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-authority\",\n \"classification\": \"bounded-authority\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779930\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n \"bytes\": 4465,\n \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a20\",\n \"classification\": \"expected-truncated-negative\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a20\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\",\n \"bytes\": 8469,\n \"sha256\": \"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a21\",\n \"classification\": \"predicted-complete-je\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a21\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stdout.txt\",\n \"bytes\": 8471,\n \"sha256\": \"b6d58767d00328c37139f439db480c9bb5ce6767dabf212f9e750a31fea0d3d7\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a23\",\n \"classification\": \"predicted-complete-mov\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a23\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stdout.txt\",\n \"bytes\": 8518,\n \"sha256\": \"e8cc66eb74730fcf7853d66df8caa620ddb3fc8c75335f0573ac490037a7a88e\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a28\",\n \"classification\": \"complete-call-boundary-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a28\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\",\n \"bytes\": 8566,\n \"sha256\": \"7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-boundary-bytes\",\n \"classification\": \"raw-byte-boundary-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-s\",\n \"-j\",\n \".text\",\n \"--start-address=0x00779a1f\",\n \"--stop-address=0x00779a28\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\",\n \"bytes\": 151,\n \"sha256\": \"b2d9b57274be71fcdd853f04758bc65d701e7b4cc169d0d5ede24c8788ef82d5\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n }\n ],\n \"checks\": [\n {\n \"name\": \"explicit-session\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"session-output-match\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"negative-preflight-all-rejected\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"binary-hash\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"tool-hash\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"source-stable\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all-return-zero\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all-stdout-nonempty\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all-stderr-empty\",\n \"status\": \"pass\"\n }\n ],\n \"failed\": []\n}","lineStart":1,"lineEnd":428,"totalLines":428,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json","time":{"start":1789045698443,"end":1789045698502}},"metadata":{"openai":{"itemId":"fc_07cc987a0ac3c536016aa2abc2344487d1aee4ec2023a41bba"}},"id":"prt_08b6eef870015jIorR3hhzdoSA","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6ec783001AHE0CO0Agtfh6F"}} +{"type":"step_finish","timestamp":1789045698596,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6ef01f001qC2vKg86ez90LM","reason":"tool-calls","snapshot":"5592139d9978d24aa32b9485ae3f7d0af31eab54","messageID":"msg_08b6ec783001AHE0CO0Agtfh6F","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"step-finish","tokens":{"total":14681,"input":406,"output":195,"reasoning":0,"cache":{"write":0,"read":14080}},"cost":0}} +{"type":"step_start","timestamp":1789045702992,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6f0148001lGdApYjy5rj1wn","messageID":"msg_08b6ef051001Avv5NSLaSIXvbY","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","snapshot":"bf6b2711ac98dec72a01c91349145d82b5cff8ab","type":"step-start"}} +{"type":"tool_use","timestamp":1789045711890,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_zsNRMiLO2qBdV9afsXrrwyhF","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/leases"},"output":"/home/alex/sots-re/campaign/runtime/leases\ndirectory\n\nspicy-autounattend-credential.json\nvm140.json\nvm141.json\nvm144.json\nvm145.json\nvm146.json\n\n(6 entries)\n","metadata":{"preview":"spicy-autounattend-credential.json\nvm140.json\nvm141.json\nvm144.json\nvm145.json\nvm146.json","truncated":false,"loaded":[],"display":{"type":"directory","path":"/home/alex/sots-re/campaign/runtime/leases","entries":["spicy-autounattend-credential.json","vm140.json","vm141.json","vm144.json","vm145.json","vm146.json"],"offset":1,"totalEntries":6,"truncated":false}},"title":"campaign/runtime/leases","time":{"start":1789045711840,"end":1789045711886}},"metadata":{"openai":{"itemId":"fc_0e13190077a4bf1c016aa2abcf937c87d1addc6097522377de"}},"id":"prt_08b6f23dc0018WaIlIKUBktDf1","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6ef051001Avv5NSLaSIXvbY"}} +{"type":"tool_use","timestamp":1789045711920,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"bash","callID":"call_RNEl9OmNnAfsEUEUQIfk87nx","state":{"status":"completed","input":{"command":"git -C /tmp/opencode/sots-final-research-re rev-parse --show-toplevel --git-common-dir HEAD"},"output":"/tmp/opencode/sots-final-research-re\n/home/alex/sots-re/.git\n3bfde5a70d874a723e797a695bbd847fd82c0aa7\n","metadata":{"output":"/tmp/opencode/sots-final-research-re\n/home/alex/sots-re/.git\n3bfde5a70d874a723e797a695bbd847fd82c0aa7\n","exit":0,"truncated":false},"title":"git -C /tmp/opencode/sots-final-research-re rev-parse --show-toplevel --git-common-dir HEAD","time":{"start":1789045711818,"end":1789045711904}},"metadata":{"openai":{"itemId":"fc_0e13190077a4bf1c016aa2abcf935487d1bd0f29ee3e249c57"}},"id":"prt_08b6f23a5001ilNQhefNe6ZN3B","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6ef051001Avv5NSLaSIXvbY"}} +{"type":"tool_use","timestamp":1789045711920,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"bash","callID":"call_XucJBabc4VlhG8CvcwEBEmCQ","state":{"status":"completed","input":{"command":"git -C /tmp/opencode/sots-final-research-engine rev-parse --show-toplevel --git-common-dir HEAD"},"output":"/tmp/opencode/sots-final-research-engine\n/home/alex/sots-engine/.git\n7741d42fc5e4e761e6449bdaf0e4a61d00036a23\n","metadata":{"output":"/tmp/opencode/sots-final-research-engine\n/home/alex/sots-engine/.git\n7741d42fc5e4e761e6449bdaf0e4a61d00036a23\n","exit":0,"truncated":false},"title":"git -C /tmp/opencode/sots-final-research-engine rev-parse --show-toplevel --git-common-dir HEAD","time":{"start":1789045711826,"end":1789045711907}},"metadata":{"openai":{"itemId":"fc_0e13190077a4bf1c016aa2abcf936887d1b1a8dcba380c1f13"}},"id":"prt_08b6f23ce001qDSXestctp42lQ","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6ef051001Avv5NSLaSIXvbY"}} +{"type":"tool_use","timestamp":1789045711920,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"grep","callID":"call_LkQJMZJUbMOc5K4wCpFlmKq1","state":{"status":"completed","input":{"pattern":"\"status\": \"open\"","path":"/home/alex/sots-re/campaign/runtime/surprises"},"output":"Found 1 matches\n/home/alex/sots-re/campaign/runtime/surprises/s-210e489610197533e4f4cce1.json:\n Line 9: \"status\": \"open\",\n","metadata":{"matches":1,"truncated":false},"title":"\"status\": \"open\"","time":{"start":1789045711846,"end":1789045711913}},"metadata":{"openai":{"itemId":"fc_0e13190077a4bf1c016aa2abcf938487d1922cd1a02255ee92"}},"id":"prt_08b6f23e1001mZ2HtLZze0qiHT","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6ef051001Avv5NSLaSIXvbY"}} +{"type":"tool_use","timestamp":1789045711926,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"grep","callID":"call_KhmjOD3hZKsqDXoO8iabot92","state":{"status":"completed","input":{"pattern":"source_before|manifest_sha256|source_after|\"path\":|\"files\"","path":"/home/alex/sots-re/campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.json"},"output":"Found 100 matches (more matches available)\n/home/alex/sots-re/campaign/runtime/runs/run-e459b5bcb1b0a0a7cbe960f5.json:\n Line 73: \"path\": \"/home/alex/sots-re/opencode.json\",\n\n Line 95: \"source_after\": {\n\n Line 98: \"files\": {\n\n Line 2176: \"manifest_sha256\": \"949dfb46cb8c42afe3a371e988d63adf1c1f18d7cca50565fd558e5a466cf93b\",\n\n Line 2177: \"path\": \"/tmp/opencode/sots-launch-engine\"\n\n Line 2181: \"files\": {\n\n Line 4939: \"manifest_sha256\": \"12f78f7777929b74f0241265372035164c36653e05a26a94834d842cc5320f80\",\n\n Line 4940: \"path\": \"/tmp/opencode/sots-launch-re\"\n\n Line 4943: \"source_before\": {\n\n Line 4946: \"files\": {\n\n Line 7024: \"manifest_sha256\": \"949dfb46cb8c42afe3a371e988d63adf1c1f18d7cca50565fd558e5a466cf93b\",\n\n Line 7025: \"path\": \"/tmp/opencode/sots-launch-engine\"\n\n Line 7029: \"files\": {\n\n Line 9787: \"manifest_sha256\": \"12f78f7777929b74f0241265372035164c36653e05a26a94834d842cc5320f80\",\n\n Line 9788: \"path\": \"/tmp/opencode/sots-launch-re\"\n\n\n/home/alex/sots-re/campaign/runtime/runs/run-735fcb8f4876c10285b03fad.json:\n Line 73: \"path\": \"/home/alex/sots-re/opencode.json\",\n\n Line 95: \"source_after\": {\n\n Line 98: \"files\": {\n\n Line 2196: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 2197: \"path\": \"/tmp/opencode/sots-final-research-engine\"\n\n Line 2201: \"files\": {\n\n Line 5221: \"manifest_sha256\": \"b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4\",\n\n Line 5222: \"path\": \"/tmp/opencode/sots-final-research-re\"\n\n Line 5225: \"source_before\": {\n\n Line 5228: \"files\": {\n\n Line 7326: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 7327: \"path\": \"/tmp/opencode/sots-final-research-engine\"\n\n Line 7331: \"files\": {\n\n Line 10351: \"manifest_sha256\": \"b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4\",\n\n Line 10352: \"path\": \"/tmp/opencode/sots-final-research-re\"\n\n\n/home/alex/sots-re/campaign/runtime/runs/run-73a78465cbde3cd6c811f761.json:\n Line 63: \"path\": \"/home/alex/sots-re/opencode.json\",\n\n Line 85: \"source_after\": {\n\n Line 88: \"files\": {\n\n Line 2186: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 2187: \"path\": \"/tmp/opencode/sots-final-research-engine\"\n\n Line 2191: \"files\": {\n\n Line 5211: \"manifest_sha256\": \"b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4\",\n\n Line 5212: \"path\": \"/tmp/opencode/sots-final-research-re\"\n\n Line 5215: \"source_before\": {\n\n Line 5218: \"files\": {\n\n Line 7316: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 7317: \"path\": \"/tmp/opencode/sots-final-research-engine\"\n\n Line 7321: \"files\": {\n\n Line 10341: \"manifest_sha256\": \"b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4\",\n\n Line 10342: \"path\": \"/tmp/opencode/sots-final-research-re\"\n\n\n/home/alex/sots-re/campaign/runtime/runs/run-36c401e90eb0ec1db4d35865.json:\n Line 63: \"path\": \"/home/alex/sots-re/opencode.json\",\n\n Line 85: \"source_after\": {\n\n Line 88: \"files\": {\n\n Line 2186: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 2187: \"path\": \"/tmp/opencode/sots-final-research-engine\"\n\n Line 2191: \"files\": {\n\n Line 5211: \"manifest_sha256\": \"b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4\",\n\n Line 5212: \"path\": \"/tmp/opencode/sots-final-research-re\"\n\n Line 5215: \"source_before\": {\n\n Line 5218: \"files\": {\n\n Line 7316: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 7317: \"path\": \"/tmp/opencode/sots-final-research-engine\"\n\n Line 7321: \"files\": {\n\n Line 10341: \"manifest_sha256\": \"b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4\",\n\n Line 10342: \"path\": \"/tmp/opencode/sots-final-research-re\"\n\n\n/home/alex/sots-re/campaign/runtime/runs/run-f4ee1aa70be8601ad527689f.json:\n Line 73: \"path\": \"/home/alex/sots-re/opencode.json\",\n\n Line 95: \"source_after\": {\n\n Line 98: \"files\": {\n\n Line 2176: \"manifest_sha256\": \"949dfb46cb8c42afe3a371e988d63adf1c1f18d7cca50565fd558e5a466cf93b\",\n\n Line 2177: \"path\": \"/tmp/opencode/sots-launch-engine\"\n\n Line 2181: \"files\": {\n\n Line 4939: \"manifest_sha256\": \"12f78f7777929b74f0241265372035164c36653e05a26a94834d842cc5320f80\",\n\n Line 4940: \"path\": \"/tmp/opencode/sots-launch-re\"\n\n Line 4943: \"source_before\": {\n\n Line 4946: \"files\": {\n\n Line 7024: \"manifest_sha256\": \"949dfb46cb8c42afe3a371e988d63adf1c1f18d7cca50565fd558e5a466cf93b\",\n\n Line 7025: \"path\": \"/tmp/opencode/sots-launch-engine\"\n\n Line 7029: \"files\": {\n\n Line 9787: \"manifest_sha256\": \"12f78f7777929b74f0241265372035164c36653e05a26a94834d842cc5320f80\",\n\n Line 9788: \"path\": \"/tmp/opencode/sots-launch-re\"\n\n\n/home/alex/sots-re/campaign/runtime/runs/run-472955e277202c411388c66b.json:\n Line 63: \"path\": \"/home/alex/sots-re/opencode.json\",\n\n Line 85: \"source_after\": {\n\n Line 88: \"files\": {\n\n Line 2186: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 2187: \"path\": \"/tmp/opencode/sots-final-research-engine\"\n\n Line 2191: \"files\": {\n\n Line 5211: \"manifest_sha256\": \"b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4\",\n\n Line 5212: \"path\": \"/tmp/opencode/sots-final-research-re\"\n\n Line 5215: \"source_before\": {\n\n Line 5218: \"files\": {\n\n Line 7316: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 7317: \"path\": \"/tmp/opencode/sots-final-research-engine\"\n\n Line 7321: \"files\": {\n\n Line 10341: \"manifest_sha256\": \"b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4\",\n\n Line 10342: \"path\": \"/tmp/opencode/sots-final-research-re\"\n\n\n/home/alex/sots-re/campaign/runtime/runs/run-f63d1e050a7ee3fac7b44885.jsonl:\n Line 2: {\"type\":\"tool_use\",\"timestamp\":1789013806414,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_nyW1IsZ1Y25j70k6fgmBmRr8\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/README.md\"},\"output\":\"/home/alex/sots-re/campaign/README.md\\nfile\\n\\n1: # Canonical campaign controls\\n2: \\n3: `sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\\n4: surprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\\n5: projections. Historical evidence is not current acceptance. No automatic commits or lab operations.\\n6: \\n7: Framework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\\n8: see [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\\n9: Active work is reverse engineering. Change tooling only to unblock a named RE experiment.\\n10: \\n11: ## Contract format\\n12: \\n13: `contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\\n14: The standard-library validator implements the schema's used subset. A populated example is\\n15: [contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\\n16: \\n17: Required fields:\\n18: \\n19: | Field | Structure |\\n20: |---|---|\\n21: | `id`, `title`, `status` | Slug, short title, lifecycle state |\\n22: | `owner` | `{ \\\"name\\\": \\\"worker-identity\\\", \\\"role\\\": \\\"implementer\\\" }` |\\n23: | `baseline` | `{ \\\"engine\\\": {\\\"path\\\":\\\"/absolute/canonical/engine\\\",\\\"commit\\\":\\\"full-commit-id\\\"}, \\\"re\\\": {\\\"path\\\":\\\"/absolute/canonical/re\\\",\\\"commit\\\":\\\"full-commit-id\\\"} }` |\\n24: | `scope`, `inputs`, `effects` | Arrays of explicit nonempty strings; include full write set and runtime inputs |\\n25: | `original_dependencies` | String array, including original-assisted portions and unavailable inputs |\\n26: | `dependencies` | A...\n Line 5: {\"type\":\"tool_use\",\"timestamp\":1789013813495,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_66cqNO5eeNExqVPJVPP4Dn2L\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/AGENTS.md\"},\"output\":\"/home/alex/sots-re/AGENTS.md\\nfile\\n\\n1: # SOTS campaign instructions\\n2: \\n3: This repository is the state authority for the SOTS reconstruction and its Windows lab.\\n4: Start with `campaign/README.md`, your contract, its latest checkpoint, and open surprises.\\n5: Current policy: `guides/multi-agent-workflow.md`. Engine architecture: `sots-engine/docs/architecture.md`.\\n6: Historical findings are evidence, not current execution instructions or accepted status.\\n7: \\n8: ## Authority and models\\n9: \\n10: - The normal lead/RE/implementation/verification/lab loop runs on **GPT-5.6 Sol\\n11: (`openai/gpt-5.6-sol`)**. Reserve **GPT-6 Astra (`openai/gpt-6-astra`)** for resolving\\n12: falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope.\\n13: - `campaign/models.json` is the role/model registry. Launch with `tools/run_agent.py` and an\\n14: explicit role, contract, state root, and paired worktrees. Never silently downgrade or fall back.\\n15: - Ordinary implementation/test failures inside the contract may be fixed by its worker.\\n16: Falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope\\n17: require a recorded surprise and an Astra resolution before affected work continues.\\n18: - No worker subdelegation. The lead assigns parallelism; max two implementation slices after\\n19: the pilot. Independent workload preparation is scheduled against explicit resource leases.\\n20: \\n21: ## Durable state and context\\n22: \\n23: Checkpoint in the canonical RE state root every **20 tool calls or 15 minutes**, whichever is\\n24: earlier, and before an experiment, compaction, handoff, or stop. Include model/session, e...\n Line 6: {\"type\":\"tool_use\",\"timestamp\":1789013813496,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_sAzHRy90ZxLEYpbSipG3rO8d\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/contracts/research-live-record-bridge.json\"},\"output\":\"/home/alex/sots-re/campaign/contracts/research-live-record-bridge.json\\nfile\\n\\n1: {\\n2: \\\"acceptance\\\": [\\n3: {\\n4: \\\"axis\\\": \\\"planning\\\",\\n5: \\\"criterion\\\": \\\"Before ready, publish exact bridge-only source/test ownership, callable entrypoints and calling conventions, generated-address provenance, a bridge-only invocation route, VM/build resources, executable acceptance commands and immutable source/binary/fixture manifests. The route must not call or wire research replacement.\\\",\\n6: \\\"id\\\": \\\"readiness\\\"\\n7: },\\n8: {\\n9: \\\"axis\\\": \\\"understanding\\\",\\n10: \\\"criterion\\\": \\\"Reconcile accepted binary evidence with generated and pure-model facts, including whether EvDsc participates in duplicate equality and whether the callable ObservedTech copy operation begins at 0x0079a150 or an interior site. Every exposed constructor/copy/append/destructor/new/delete operation has an exact ABI and ownership contract.\\\",\\n11: \\\"id\\\": \\\"abi-reconciliation\\\"\\n12: },\\n13: {\\n14: \\\"axis\\\": \\\"implementation\\\",\\n15: \\\"criterion\\\": \\\"An isolated bridge constructs, copies, appends, updates and destroys complete live-layout ObservedTech, TurnEvents and PlayerEvent values using compatible original-runtime allocation services. It never copies raw owning headers and never calls original RecordObservedTech, EventStorage::PostEvent or any research completion root.\\\",\\n16: \\\"id\\\": \\\"bridge-operations\\\"\\n17: },\\n18: {\\n19: \\\"axis\\\": \\\"validation\\\",\\n20: \\\"criterion\\\": \\\"Host tests and a fresh leased disposable-VM run positively execute empty, spare and full capacity; sho...\n Line 7: {\"type\":\"tool_use\",\"timestamp\":1789013813496,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_poY8W7iZxmRzMACS5c7w0GFN\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/checkpoints/research-live-record-bridge-3374a5a2a8d056e7b4dc261c.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/checkpoints/research-live-record-bridge-3374a5a2a8d056e7b4dc261c.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"live-record bridge architect\\\",\\n3: \\\"artifacts\\\": [\\n4: {\\n5: \\\"path\\\": \\\"verify/results/research-live-record-bridge/run-472955e277202c411388c66b/manifest.json\\\",\\n6: \\\"sha256\\\": \\\"ae16b4b500db5b84bea27c659e254842ab0c67c040ca782c016381384338773b\\\"\\n7: },\\n8: {\\n9: \\\"path\\\": \\\"verify/results/research-live-record-bridge/run-472955e277202c411388c66b/turn-get-create.stdout.txt\\\",\\n10: \\\"sha256\\\": \\\"f6e72ba9b08fdf48d70f39379b2fb30a5adbe796072485f70c5795c10ab45ca3\\\"\\n11: },\\n12: {\\n13: \\\"path\\\": \\\"verify/results/research-live-record-bridge/run-472955e277202c411388c66b/turn-append.stdout.txt\\\",\\n14: \\\"sha256\\\": \\\"57d6655feed0fc137bb2b7eee4bfcb09536b5a715603c917ee142770f1d52a15\\\"\\n15: },\\n16: {\\n17: \\\"path\\\": \\\"verify/results/research-live-record-bridge/run-472955e277202c411388c66b/turn-grow.stdout.txt\\\",\\n18: \\\"sha256\\\": \\\"eb887fbef7b4686530d2fc1c0caf2c2ee78c761aa3706cebcf3c146a22480b2e\\\"\\n19: },\\n20: {\\n21: \\\"path\\\": \\\"verify/results/research-live-record-bridge/run-472955e277202c411388c66b/nested-copy.stdout.txt\\\",\\n22: \\\"sha256\\\": \\\"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\\\"\\n23: },\\n24: {\\n25: \\\"path\\\": \\\"verify/results/research-live-record-bridge/run-472955e277202c411388c66b/nested-dtor.stdout.txt\\\",\\n26: \\\"sha256\\\": \\\"3c38887e60d009ab904772b13be93ac1eedd9bee85024e37110160a625db3a83\\\"\\n27: },\\n28: {\\n29: \\\"path\\\": ...\n Line 9: {\"type\":\"tool_use\",\"timestamp\":1789013813512,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_x0DCvPHdno337onJW8amJdz8\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/guides/multi-agent-workflow.md\"},\"output\":\"/home/alex/sots-re/guides/multi-agent-workflow.md\\nfile\\n\\n1: # Multi-agent operating architecture\\n2: \\n3: ## Product and milestone\\n4: \\n5: Reconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\\n6: milestone is standalone replay given a captured command stream and complete declared runtime\\n7: inputs. The first workflow pilot is the complete research write set. A passing host build is a\\n8: component baseline, not a playable engine or independent replacement.\\n9: \\n10: ## Source of truth\\n11: \\n12: `campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\\n13: leases and surprises, and evidence packages identify inputs, source and executable artifacts.\\n14: `campaign/current.json` selects published evidence by path and digest. Board/dashboard are\\n15: generated projections, never alternate writable authorities. Exact tool CLI/schema is documented\\n16: in `campaign/README.md`. Historical findings retain their original experiment scope; they are\\n17: not promoted by copying an old status into a new contract.\\n18: \\n19: ## Model authority\\n20: \\n21: | Responsibility | Model |\\n22: |---|---|\\n23: | Normal planning, architecture and integration loop | GPT-5.6 Sol |\\n24: | Bounded RE analysis, implementation and independent verification | GPT-5.6 Sol |\\n25: | Routine lab/workload operations | GPT-5.6 Sol |\\n26: | Problem and surprise resolution | GPT-6 Astra |\\n27: | Context compaction | GPT-5.5 |\\n28: \\n29: Exact provider IDs are in `campaign/models.json`. The lead escalates to Astra when a falsified\\n30: assumption, conflict, instrument effect, or scope change blocks the loop. No fallbac...\n Line 12: {\"type\":\"tool_use\",\"timestamp\":1789013826371,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_ezi501MzjQTB6ucarhGpPedB\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"live-record bridge architect\\\",\\n3: \\\"contract\\\": \\\"research-live-record-bridge\\\",\\n4: \\\"id\\\": \\\"s-5a78d3a0a10c1f8545df8eb1\\\",\\n5: \\\"model\\\": \\\"openai/gpt-5.6-sol\\\",\\n6: \\\"probe\\\": \\\"Astra must inspect the complete 0x00885380..0x0088544a entry window and 0x00884cb0..0x00884d8f append window from verify/results/research-live-record-bridge/run-472955e277202c411388c66b, enumerate every write to [EBP-0x20] before the append call, and decide whether the transient EvTurn is indeterminate and whether final post-publication semantics remain usable. Revise/invalidate the accepted dependency interpretation and prescribe the exact generated-row wording before TurnEvents planning continues.\\\",\\n7: \\\"role\\\": \\\"architecture-review\\\",\\n8: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n9: \\\"status\\\": \\\"open\\\",\\n10: \\\"summary\\\": \\\"Session run-472955e277202c411388c66b fresh pinned-binary capture contradicts the accepted dependency interpretation that EventStorage get/create initializes a miss-path temporary TurnEvents EvTurn to zero before append. In 0x00885380, local TurnEvents begins at [EBP-0x24]: 0x008853fc writes vptr, and 0x00885403/06/09 zero only nested-vector pointers at +0x08/+0x0c/+0x10. No instruction writes temporary EvTurn at [EBP-0x20] before 0x00885413 calls append. Append 0x00884d62 copies source+0x04 into destination+0x04, so the newly appended element transiently receives the uninitialized stack word; 0x0088542d overwrites the stored element EvTurn with the requested turn after temporary nested-vector destruction. SU...\n Line 13: {\"type\":\"tool_use\",\"timestamp\":1789013826507,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_NoefcDKfw7HnrQQyES1f7eG3\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/contracts/research-completion-abi.json\"},\"output\":\"/home/alex/sots-re/campaign/contracts/research-completion-abi.json\\nfile\\n\\n1: {\\n2: \\\"acceptance\\\": [\\n3: {\\n4: \\\"axis\\\": \\\"static-recovery\\\",\\n5: \\\"criterion\\\": \\\"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\\\",\\n6: \\\"id\\\": \\\"ownership-recovered\\\"\\n7: },\\n8: {\\n9: \\\"axis\\\": \\\"validation\\\",\\n10: \\\"criterion\\\": \\\"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\\\",\\n11: \\\"id\\\": \\\"independent-cross-check\\\"\\n12: }\\n13: ],\\n14: \\\"baseline\\\": {\\n15: \\\"engine\\\": {\\n16: \\\"commit\\\": \\\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\\",\\n17: \\\"path\\\": \\\"/home/alex/sots-engine\\\"\\n18: },\\n19: \\\"re\\\": {\\n20: \\\"commit\\\": \\\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\\",\\n21: \\\"path\\\": \\\"/home/alex/sots-re\\\"\\n22: }\\n23: },\\n24: \\\"checkpoint\\\": \\\"campaign/runtime/checkpoints/research-completion-abi-d2e4078886c66df34ee00b24.json\\\",\\n25: \\\"dependencies\\\": [\\n26: \\\"controls-bootstrap\\\"\\n27: ],\\n28: \\\"effects\\\": [\\n29: \\\"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\\\"\\n30: ],\\n31: \\\"evidence\\\": [\\n32: {\\n33: \\\"axis\\\": \\\"static-recovery\\\",\\n34: \\\"binaries\\\": [\\n35: {\\n36: \\\"path\\\": \\\"dumps/sots.exe\\\",\\n37: \\\"sha256\\\": \\\"970b7de729956a53094c7eb98aba4270a...\n Line 14: {\"type\":\"tool_use\",\"timestamp\":1789013826840,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_9uXEhLwxBNbIXWg8CsOOMg3Z\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/verify/results/research-live-record-bridge/run-472955e277202c411388c66b/manifest.json\"},\"output\":\"/home/alex/sots-re/verify/results/research-live-record-bridge/run-472955e277202c411388c66b/manifest.json\\nfile\\n\\n1: {\\n2: \\\"schema\\\": \\\"sots-live-record-static-capture/1\\\",\\n3: \\\"session\\\": \\\"run-472955e277202c411388c66b\\\",\\n4: \\\"scope\\\": \\\"Read-only TurnEvents get/create and directly required lifetime helpers; static planning evidence only.\\\",\\n5: \\\"cwd\\\": \\\"/home/alex/sots-re\\\",\\n6: \\\"source_identity\\\": {\\n7: \\\"engine\\\": {\\n8: \\\"path\\\": \\\"/tmp/opencode/sots-final-research-engine\\\",\\n9: \\\"commit\\\": \\\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\\",\\n10: \\\"sha256\\\": \\\"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\\\"\\n11: },\\n12: \\\"re\\\": {\\n13: \\\"path\\\": \\\"/tmp/opencode/sots-final-research-re\\\",\\n14: \\\"commit\\\": \\\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\\",\\n15: \\\"sha256\\\": \\\"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\\\"\\n16: }\\n17: },\\n18: \\\"input\\\": {\\n19: \\\"path\\\": \\\"/home/alex/sots-re/dumps/sots.exe\\\",\\n20: \\\"sha256\\\": \\\"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\\\"\\n21: },\\n22: \\\"tool\\\": {\\n23: \\\"path\\\": \\\"/usr/bin/objdump\\\",\\n24: \\\"version\\\": \\\"GNU Binutils 2.38\\\",\\n25: \\\"sha256\\\": \\\"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\\\"\\n26: },\\n27: \\\"windows\\\": [\\n28: {\\n29: \\\"name\\\": \\\"turn-get-create\\\",\\n30: \\\"argv\\\": [\\n31: \\\"/usr/bin/objdump\\\",\\n32: \\\"-D\\\",\\n33: \\\"-Mintel\\\",\\n34: \\\"--start-address=0x00885380\\\",\\n35: \\\"--stop-address=0x0088544a\\\",\\n36: \\\"/home/alex/sots-r...\n Line 15: {\"type\":\"tool_use\",\"timestamp\":1789013826937,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"grep\",\"callID\":\"call_P3TMrpgimYben9KmpJVCH8CD\",\"state\":{\"status\":\"completed\",\"input\":{\"pattern\":\"\\\"status\\\": \\\"open\\\"\",\"path\":\"/home/alex/sots-re/campaign/runtime/surprises\"},\"output\":\"Found 1 matches\\n/home/alex/sots-re/campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json:\\n Line 9: \\\"status\\\": \\\"open\\\",\\n\",\"metadata\":{\"matches\":1,\"truncated\":false},\"title\":\"\\\"status\\\": \\\"open\\\"\",\"time\":{\"start\":1789013826916,\"end\":1789013826936}},\"metadata\":{\"openai\":{\"itemId\":\"fc_0ad496f45a2f3a29016aa22f41ede487d1bbb592508536fc55\"}},\"id\":\"prt_089889d590019rigbbJP13UfOo\",\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"messageID\":\"msg_08988698c001qEMT7i73D1mysj\"}}\n\n Line 20: {\"type\":\"tool_use\",\"timestamp\":1789013840548,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_aOxSO2knDksFKXf25C7g4r4M\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/verify/results/research-live-record-bridge/run-472955e277202c411388c66b/turn-get-create.stdout.txt\"},\"output\":\"/home/alex/sots-re/verify/results/research-live-record-bridge/run-472955e277202c411388c66b/turn-get-create.stdout.txt\\nfile\\n\\n1: \\n2: /home/alex/sots-re/dumps/sots.exe: file format pei-i386\\n3: \\n4: \\n5: Disassembly of section .text:\\n6: \\n7: 00885380 <.text+0x484380>:\\n8: 885380:\\t55 \\tpush ebp\\n9: 885381:\\t8b ec \\tmov ebp,esp\\n10: 885383:\\t6a ff \\tpush 0xffffffff\\n11: 885385:\\t68 30 af 99 00 \\tpush 0x99af30\\n12: 88538a:\\t64 a1 00 00 00 00 \\tmov eax,fs:0x0\\n13: 885390:\\t50 \\tpush eax\\n14: 885391:\\t83 ec 18 \\tsub esp,0x18\\n15: 885394:\\t53 \\tpush ebx\\n16: 885395:\\t56 \\tpush esi\\n17: 885396:\\t57 \\tpush edi\\n18: 885397:\\ta1 78 8b af 00 \\tmov eax,ds:0xaf8b78\\n19: 88539c:\\t33 c5 \\txor eax,ebp\\n20: 88539e:\\t50 \\tpush eax\\n21: 88539f:\\t8d 45 f4 \\tlea eax,[ebp-0xc]\\n22: 8853a2:\\t64 a3 00 00 00 00 \\tmov fs:0x0,eax\\n23: 8853a8:\\t8b f1 \\tmov esi,ecx\\n24: 8853aa:\\t8b 56 08 \\tmov edx,DWORD PTR [esi+0x8]\\n25: 8853ad:\\t2b 56 04 \\tsub edx,DWORD PTR [esi+0x4]\\n26: 8853b0:\\t8d 4e 04 \\tlea ecx,[esi+0x4]\\n27: 8853b3:\\tb8 ab aa aa 2a \\tmov eax,0x2aaaaaab\\n28: 8853b8:\\tf7 ea \\timul edx\\n29: 8853ba:\\tc1 fa 02 \\tsar edx,0x2\\n30: 8853bd:\\t8b c2 \\tmov eax,edx\\n31: 8853bf:\\tc1 e8 1f \\tshr eax,0x1f\\n32: ...\n\n(Results truncated. Consider using a more specific path or pattern.)","metadata":{"matches":100,"truncated":true},"title":"source_before|manifest_sha256|source_after|\"path\":|\"files\"","time":{"start":1789045711834,"end":1789045711924}},"metadata":{"openai":{"itemId":"fc_0e13190077a4bf1c016aa2abcf937487d18094e8745a6fa7d6"}},"id":"prt_08b6f23d6001XhLS3Qr1YHwpoY","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6ef051001Avv5NSLaSIXvbY"}} +{"type":"tool_use","timestamp":1789045711951,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_6AzWzUjWuSJ2aWkShhXAe2Yr","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json","offset":4800,"limit":260},"output":"/home/alex/sots-re/campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json\nfile\n\n4800: \"mode\": 420,\n4801: \"sha256\": \"d8346969421a92fa199d0b9faafa642dc2e71a527b08d27984fe73ee70ecbd6b\"\n4802: },\n4803: \"verify/results/turncommands/cb-turn1to2-pinned-run2.json\": {\n4804: \"mode\": 420,\n4805: \"sha256\": \"01e572975339fbe8a242b2438719173bd5bb4f4916078e5887026408923eb356\"\n4806: },\n4807: \"verify/results/turncommands/cb-turn1to2-pinned-run2.tcb\": {\n4808: \"mode\": 420,\n4809: \"sha256\": \"16e349db6c46e46520cd2e5f0a9fcf70b537dce878324dd873418ef6cebd8658\"\n4810: },\n4811: \"verify/results/turncommands/cb-turn1to2-pinned.json\": {\n4812: \"mode\": 420,\n4813: \"sha256\": \"2d4f108b8ac6b1e582382ac25d53f354c293e7caf390b8462d15beaf8e43e01c\"\n4814: },\n4815: \"verify/results/turncommands/cb-turn1to2-pinned.tcb\": {\n4816: \"mode\": 420,\n4817: \"sha256\": \"28ebfecc3495cc4f5b2892e420cb1b83f3cbdb6b7aabe107f4b1d18233a06094\"\n4818: },\n4819: \"verify/results/turncommands/cb-turn1to2-run1.json\": {\n4820: \"mode\": 420,\n4821: \"sha256\": \"c9de70196af5453df15cfebcb92c973dfed9d54ffa0dc0a397839cf951ac9b58\"\n4822: },\n4823: \"verify/results/turncommands/cb-turn1to2-run1.tcb\": {\n4824: \"mode\": 420,\n4825: \"sha256\": \"5cdcfb3ade6cdfb2c00c234f5535c791780230f520d27be14f617462347b4948\"\n4826: },\n4827: \"verify/results/turncommands/cb-turn2to3.json\": {\n4828: \"mode\": 420,\n4829: \"sha256\": \"8a0d4fc9efae9dcb4eca0de41bf28444d79eb5a4fd4e426671a4d80ab5a46f44\"\n4830: },\n4831: \"verify/results/turncommands/cb-turn2to3.tcb\": {\n4832: \"mode\": 420,\n4833: \"sha256\": \"420a5d03f2a4ecfa0789835cc46f98961d11bbd7c7fd5f59dc28301aa0b65b6b\"\n4834: },\n4835: \"verify/results/turncommands/l4-turn1to2.tcb\": {\n4836: \"mode\": 420,\n4837: \"sha256\": \"1b9faa7f8aad9196e36cf1c450e340f37c502a69ccfcaaad7e289bd7b4727b12\"\n4838: },\n4839: \"verify/results/turncommands/l4-turn2to3.tcb\": {\n4840: \"mode\": 420,\n4841: \"sha256\": \"b0443f176c3915389278de608a8e7c63fa48d4777b924c0e383c7279f2a297e0\"\n4842: },\n4843: \"verify/save-reader/SAVE_FORMAT.md\": {\n4844: \"mode\": 420,\n4845: \"sha256\": \"5ac2556b6c063c9296ef29e8514cc312983d48a8e2c2832f504c970629990b33\"\n4846: },\n4847: \"verify/save-reader/fixture_joint.sav\": {\n4848: \"mode\": 420,\n4849: \"sha256\": \"fbe41595e50bb580786f36b197d5b85f87820974c545107c864fa2f1862af3f1\"\n4850: },\n4851: \"verify/save-reader/fixture_split.sav\": {\n4852: \"mode\": 420,\n4853: \"sha256\": \"3909f12d021bf840617dc8d599841b64d67be46e1c6882cba7728d312d310071\"\n4854: },\n4855: \"verify/save-reader/save_reader.py\": {\n4856: \"mode\": 420,\n4857: \"sha256\": \"2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35\"\n4858: },\n4859: \"verify/save-reader/save_writer_stub.py\": {\n4860: \"mode\": 420,\n4861: \"sha256\": \"8343ad15f742ee1b9cd62108efbc9c4b2718c3807442e3dfcfa9513ced7d3638\"\n4862: },\n4863: \"verify/save-reader/test_save_reader.py\": {\n4864: \"mode\": 420,\n4865: \"sha256\": \"29f609d037eed99bb5444004facbff7b2c5c36fae568e815810585fdc3ddd393\"\n4866: },\n4867: \"verify/state-checksum/STATE_CHECKSUM.md\": {\n4868: \"mode\": 420,\n4869: \"sha256\": \"5680299a4df27e30cdb545d9d2a640caf9299d61acb662b9512589e4390954e1\"\n4870: },\n4871: \"verify/state-checksum/float_census.py\": {\n4872: \"mode\": 420,\n4873: \"sha256\": \"a568aad8b9f38aba2474f33941550bf948d050694a1d04dc5c85d15687223ae9\"\n4874: },\n4875: \"verify/state-checksum/run_validation.sh\": {\n4876: \"mode\": 493,\n4877: \"sha256\": \"bf84b999d2b90368703e80235bac0258b70a1c37dd1902c9205a914a59cb1fc2\"\n4878: },\n4879: \"verify/state-checksum/stability_check.py\": {\n4880: \"mode\": 420,\n4881: \"sha256\": \"8e640561b05decf590524fbe0dbf3b76a5e2f9c7fde93e005ca6e79464c305f1\"\n4882: },\n4883: \"verify/state-checksum/state_checksum.py\": {\n4884: \"mode\": 420,\n4885: \"sha256\": \"ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8\"\n4886: },\n4887: \"verify/state-checksum/test_state_checksum.py\": {\n4888: \"mode\": 420,\n4889: \"sha256\": \"d0ccf8e8390fd0a5d76a8695a490d85dc7e8e415a06ec50b592c57474cc9a73b\"\n4890: },\n4891: \"verify/tooling/README.md\": {\n4892: \"mode\": 420,\n4893: \"sha256\": \"b05249530d65d43220c1e5c4666939c360d6139ed404a8881f6ad0a9c5c27af6\"\n4894: },\n4895: \"verify/tooling/fixtures.py\": {\n4896: \"mode\": 420,\n4897: \"sha256\": \"56cccc88b9b9468e07c9ddff39d65813098053ec9e8f00432736906389f200a7\"\n4898: },\n4899: \"verify/tooling/host-tests.json\": {\n4900: \"mode\": 420,\n4901: \"sha256\": \"90833c99e2749ff890b16b943f43f6ebfc1a1c611f2ed1e40555426fded45c97\"\n4902: },\n4903: \"verify/tooling/test_tooling.py\": {\n4904: \"mode\": 420,\n4905: \"sha256\": \"bb8d15960dfda13f15cffc57f3b669003b127b4dedbf34100bb4a51c29dd3c6d\"\n4906: },\n4907: \"verify/traces/.keep.md\": {\n4908: \"mode\": 420,\n4909: \"sha256\": \"b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786\"\n4910: },\n4911: \"verify/traces/ac-probe-baseline-turn15.jsonl\": {\n4912: \"mode\": 420,\n4913: \"sha256\": \"a2f4e410f6a8d77f7680b4a69b5b2ac2f59fa80515b0cfe8209e7fec8e4a5b6b\"\n4914: },\n4915: \"verify/traces/ac-probe-turn21-turn23.jsonl\": {\n4916: \"mode\": 420,\n4917: \"sha256\": \"2bb9317b82744c0da36ef6d9c1a78f31ebacea49b82a18005c0cc75bad62d345\"\n4918: },\n4919: \"verify/traces/ad-r1-turn28-turn29.jsonl\": {\n4920: \"mode\": 420,\n4921: \"sha256\": \"cde7a1e010aa6195163f3b9320aa5c496fd8c271e9648c90c7319837dd967571\"\n4922: },\n4923: \"verify/traces/ap-probes8-deploy-turn15.jsonl.gz\": {\n4924: \"mode\": 420,\n4925: \"sha256\": \"e257d5ea3fcb4be8da570d6a5589022e6ba412ff2712f4f06832812d8859e08a\"\n4926: },\n4927: \"verify/traces/ap-probes8-turn16-turn26.jsonl.gz\": {\n4928: \"mode\": 420,\n4929: \"sha256\": \"df4fb35d9824799d8be79f3a9e976b55b7cd0fb5488b3e12711d04eb3c320f13\"\n4930: },\n4931: \"verify/traces/ar-r1-turn38-turn43.jsonl\": {\n4932: \"mode\": 420,\n4933: \"sha256\": \"f8653cbd1956346816897b313031c5d70898144d1c84b1c849ac37bfe3bd993c\"\n4934: },\n4935: \"verify/traces/ar-r2-control-turn38-turn39.jsonl\": {\n4936: \"mode\": 420,\n4937: \"sha256\": \"c1068652ddf54d2ff266c1dc1ef1e69ea663f5d2a83143408f77ec782b3dd988\"\n4938: },\n4939: \"verify/traces/as-probes8-turn15-turn16.jsonl.gz\": {\n4940: \"mode\": 420,\n4941: \"sha256\": \"024bb0663b167eb364c8e138bae0bf10403860c195bd593cb56f60281060c4e8\"\n4942: },\n4943: \"verify/traces/b2-final-menu.png\": {\n4944: \"mode\": 420,\n4945: \"sha256\": \"5a95fe260c9cb13dad5fc6f00460819107db93f4ac89f455077ad056600f83fd\"\n4946: },\n4947: \"verify/traces/b2-shim.log\": {\n4948: \"mode\": 420,\n4949: \"sha256\": \"c31cf01af3659b7fdf008ff44f88f67ee4016dcfb30fc4a72b4d72ea0da8e404\"\n4950: },\n4951: \"verify/traces/b2-techfx-compare.jsonl\": {\n4952: \"mode\": 420,\n4953: \"sha256\": \"f0202f45b276db6744c80768f12695153812bc882de688cf64705ed6a52f243c\"\n4954: },\n4955: \"verify/traces/b2-techfx-golden.jsonl\": {\n4956: \"mode\": 420,\n4957: \"sha256\": \"43639e75bd9d510ed270c9cfcbb0c9665f5a6546f748ba81eba3f015e7ca233c\"\n4958: },\n4959: \"verify/traces/cr-N.jsonl.gz\": {\n4960: \"mode\": 420,\n4961: \"sha256\": \"0071ae72a142533ffb91f9f04caa6704102c826761ff5ae24b57a1c3e9652e46\"\n4962: },\n4963: \"verify/traces/cr-R0.jsonl.gz\": {\n4964: \"mode\": 420,\n4965: \"sha256\": \"6228c88cebb4dad2158e5586ecbcf71d1160116f2f4a2a8bc020658da8d7d706\"\n4966: },\n4967: \"verify/traces/cr-R1.jsonl.gz\": {\n4968: \"mode\": 420,\n4969: \"sha256\": \"73f5f15b3343381cf3f973caaf74588fd3d0b6759de1ddcf9e12b9b3ebf29713\"\n4970: },\n4971: \"verify/traces/eventlive-b3-t1-5.jsonl.gz\": {\n4972: \"mode\": 420,\n4973: \"sha256\": \"9cb344f1d8a3beb4bc1a2bf16baed6c38667443ead9f66fa0f53474a683d263c\"\n4974: },\n4975: \"verify/traces/eventlive-b3-t1.jsonl\": {\n4976: \"mode\": 420,\n4977: \"sha256\": \"2d9962de9a7ea7fb28b33b72209706b4a27673096f71c8789f9f10ac465f387b\"\n4978: },\n4979: \"verify/traces/eventlive-b3-zuul.jsonl.gz\": {\n4980: \"mode\": 420,\n4981: \"sha256\": \"0ee09bb884799e72c6a617ab02e741a7ba791ff458af439b9947a87b368a64de\"\n4982: },\n4983: \"verify/traces/h-probes-human-perturbed-t3-5.jsonl.gz\": {\n4984: \"mode\": 420,\n4985: \"sha256\": \"2567f8ccb6276a4d647c4f4b88d14f7ae63aa4d1797f672a9bd9c7c86e4d7473\"\n4986: },\n4987: \"verify/traces/h-probes-human-t5.jsonl.gz\": {\n4988: \"mode\": 420,\n4989: \"sha256\": \"92964779111573dc72e6a1845217cd7d709c9900594a106b3de7b59c2b7a88a7\"\n4990: },\n4991: \"verify/traces/h-probes-zuul-t24-25.jsonl.gz\": {\n4992: \"mode\": 420,\n4993: \"sha256\": \"0966294af27b49159b1e72e683abc0b59fd52cc9bfd9f517130d30cedf7efa29\"\n4994: },\n4995: \"verify/traces/l3-probe-turn8-turn15.jsonl\": {\n4996: \"mode\": 420,\n4997: \"sha256\": \"d1b5436f917bb4f6f74bd7b1967dbd0626db2c3a5cbc1d67684ef9f010826676\"\n4998: },\n4999: \"verify/traces/m1-compare.jsonl\": {\n5000: \"mode\": 420,\n5001: \"sha256\": \"f0f6fd15bc73008e43e20d6ed4c4dd91fb2ec8b40935bfd3cc000d8a84ea6731\"\n5002: },\n5003: \"verify/traces/m1-trace-golden.jsonl\": {\n5004: \"mode\": 420,\n5005: \"sha256\": \"4a4ddc031fb26a8f8b10dace297c73670f53dcbd250a9be94c0e31c9bb44dcc5\"\n5006: },\n5007: \"verify/traces/mf-after-compare.jsonl\": {\n5008: \"mode\": 420,\n5009: \"sha256\": \"2a894892977176df1a9d6c8199b0f81b48c7bcac15d2c0e7786441fc6125226e\"\n5010: },\n5011: \"verify/traces/mf-before-compare.jsonl\": {\n5012: \"mode\": 420,\n5013: \"sha256\": \"ee005097ebaac9f30c63f1e400fdf19a47e88010c71d215885234986d122410e\"\n5014: },\n5015: \"verify/traces/output-ref-turn2.jsonl.gz\": {\n5016: \"mode\": 420,\n5017: \"sha256\": \"7af583350545501414eda38439f2d0fa39149342d9001d2926e2a4e4fdd5cdca\"\n5018: },\n5019: \"verify/traces/output-zuul-and-ref.jsonl.gz\": {\n5020: \"mode\": 420,\n5021: \"sha256\": \"d581cb50f07766911fa59fa1df1524b33a9df6eec06226966efd5f54f09b6fb5\"\n5022: },\n5023: \"verify/traces/recap-b1-compare.jsonl.gz\": {\n5024: \"mode\": 420,\n5025: \"sha256\": \"0ce1c92028a8cd10a38d7cca72f90c37ccbd844f24a1950bf0eb6e75739b44e2\"\n5026: },\n5027: \"verify/traces/recap-b3-compare.jsonl\": {\n5028: \"mode\": 420,\n5029: \"sha256\": \"6ed3bcd99b4657d614bf63cc0fc2dfff650f4cb14e51086ea98c21bccbcf5fa8\"\n5030: },\n5031: \"verify/traces/recap-golden-trace.jsonl.gz\": {\n5032: \"mode\": 420,\n5033: \"sha256\": \"d62431e9461ffb1b66adc16a39542b86fa8e0cf54a0ed446a8781c4d75a6c3bb\"\n5034: },\n5035: \"verify/traces/recap-misc-compare.jsonl\": {\n5036: \"mode\": 420,\n5037: \"sha256\": \"d7c4446d45a9cab2af3da4a0d76f7a42c245da1f59db96fddf31d8b1f2c436ed\"\n5038: },\n5039: \"verify/traces/tailrng-drawsites.jsonl.gz\": {\n5040: \"mode\": 420,\n5041: \"sha256\": \"5c1806e2b1452226674013119e3b220f3cf42be2ad8b0ed998050ad65d1f8415\"\n5042: },\n5043: \"verify/traces/tailrng-refturn2.jsonl.gz\": {\n5044: \"mode\": 420,\n5045: \"sha256\": \"c33c6cafe015bda6acf5ca32b0c9595e1611f4ac82ecd3adaff8315c7bd3e560\"\n5046: },\n5047: \"verify/traces/tailrng-zuul-long.jsonl.gz\": {\n5048: \"mode\": 420,\n5049: \"sha256\": \"213e7dd8a6809dd93190f41c87218e802f1fbe77d44d598f287c2a19544063af\"\n5050: },\n5051: \"verify/traces/tailrng-zuul-noderoute.jsonl.gz\": {\n5052: \"mode\": 420,\n5053: \"sha256\": \"9476ee3b9b397ca9e20bc92eb887c109a075487cdd750746af051797e8838115\"\n5054: },\n5055: \"verify/traces/unlock-b3-t1-5.jsonl.gz\": {\n5056: \"mode\": 420,\n5057: \"sha256\": \"f6e27a60bf6c74eb98d8bec50146fe1996642285ca008c6a70c3cb148c6ba54c\"\n5058: },\n5059: \"verify/traces/unlock-b3-t1.jsonl.gz\": {\n\n(Showing lines 4800-5059 of 10049. Use offset=5060 to continue.)\n","metadata":{"preview":" \"mode\": 420,\n \"sha256\": \"d8346969421a92fa199d0b9faafa642dc2e71a527b08d27984fe73ee70ecbd6b\"\n },\n \"verify/results/turncommands/cb-turn1to2-pinned-run2.json\": {\n \"mode\": 420,\n \"sha256\": \"01e572975339fbe8a242b2438719173bd5bb4f4916078e5887026408923eb356\"\n },\n \"verify/results/turncommands/cb-turn1to2-pinned-run2.tcb\": {\n \"mode\": 420,\n \"sha256\": \"16e349db6c46e46520cd2e5f0a9fcf70b537dce878324dd873418ef6cebd8658\"\n },\n \"verify/results/turncommands/cb-turn1to2-pinned.json\": {\n \"mode\": 420,\n \"sha256\": \"2d4f108b8ac6b1e582382ac25d53f354c293e7caf390b8462d15beaf8e43e01c\"\n },\n \"verify/results/turncommands/cb-turn1to2-pinned.tcb\": {\n \"mode\": 420,\n \"sha256\": \"28ebfecc3495cc4f5b2892e420cb1b83f3cbdb6b7aabe107f4b1d18233a06094\"\n },\n \"verify/results/turncommands/cb-turn1to2-run1.json\": {","truncated":true,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json","text":" \"mode\": 420,\n \"sha256\": \"d8346969421a92fa199d0b9faafa642dc2e71a527b08d27984fe73ee70ecbd6b\"\n },\n \"verify/results/turncommands/cb-turn1to2-pinned-run2.json\": {\n \"mode\": 420,\n \"sha256\": \"01e572975339fbe8a242b2438719173bd5bb4f4916078e5887026408923eb356\"\n },\n \"verify/results/turncommands/cb-turn1to2-pinned-run2.tcb\": {\n \"mode\": 420,\n \"sha256\": \"16e349db6c46e46520cd2e5f0a9fcf70b537dce878324dd873418ef6cebd8658\"\n },\n \"verify/results/turncommands/cb-turn1to2-pinned.json\": {\n \"mode\": 420,\n \"sha256\": \"2d4f108b8ac6b1e582382ac25d53f354c293e7caf390b8462d15beaf8e43e01c\"\n },\n \"verify/results/turncommands/cb-turn1to2-pinned.tcb\": {\n \"mode\": 420,\n \"sha256\": \"28ebfecc3495cc4f5b2892e420cb1b83f3cbdb6b7aabe107f4b1d18233a06094\"\n },\n \"verify/results/turncommands/cb-turn1to2-run1.json\": {\n \"mode\": 420,\n \"sha256\": \"c9de70196af5453df15cfebcb92c973dfed9d54ffa0dc0a397839cf951ac9b58\"\n },\n \"verify/results/turncommands/cb-turn1to2-run1.tcb\": {\n \"mode\": 420,\n \"sha256\": \"5cdcfb3ade6cdfb2c00c234f5535c791780230f520d27be14f617462347b4948\"\n },\n \"verify/results/turncommands/cb-turn2to3.json\": {\n \"mode\": 420,\n \"sha256\": \"8a0d4fc9efae9dcb4eca0de41bf28444d79eb5a4fd4e426671a4d80ab5a46f44\"\n },\n \"verify/results/turncommands/cb-turn2to3.tcb\": {\n \"mode\": 420,\n \"sha256\": \"420a5d03f2a4ecfa0789835cc46f98961d11bbd7c7fd5f59dc28301aa0b65b6b\"\n },\n \"verify/results/turncommands/l4-turn1to2.tcb\": {\n \"mode\": 420,\n \"sha256\": \"1b9faa7f8aad9196e36cf1c450e340f37c502a69ccfcaaad7e289bd7b4727b12\"\n },\n \"verify/results/turncommands/l4-turn2to3.tcb\": {\n \"mode\": 420,\n \"sha256\": \"b0443f176c3915389278de608a8e7c63fa48d4777b924c0e383c7279f2a297e0\"\n },\n \"verify/save-reader/SAVE_FORMAT.md\": {\n \"mode\": 420,\n \"sha256\": \"5ac2556b6c063c9296ef29e8514cc312983d48a8e2c2832f504c970629990b33\"\n },\n \"verify/save-reader/fixture_joint.sav\": {\n \"mode\": 420,\n \"sha256\": \"fbe41595e50bb580786f36b197d5b85f87820974c545107c864fa2f1862af3f1\"\n },\n \"verify/save-reader/fixture_split.sav\": {\n \"mode\": 420,\n \"sha256\": \"3909f12d021bf840617dc8d599841b64d67be46e1c6882cba7728d312d310071\"\n },\n \"verify/save-reader/save_reader.py\": {\n \"mode\": 420,\n \"sha256\": \"2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35\"\n },\n \"verify/save-reader/save_writer_stub.py\": {\n \"mode\": 420,\n \"sha256\": \"8343ad15f742ee1b9cd62108efbc9c4b2718c3807442e3dfcfa9513ced7d3638\"\n },\n \"verify/save-reader/test_save_reader.py\": {\n \"mode\": 420,\n \"sha256\": \"29f609d037eed99bb5444004facbff7b2c5c36fae568e815810585fdc3ddd393\"\n },\n \"verify/state-checksum/STATE_CHECKSUM.md\": {\n \"mode\": 420,\n \"sha256\": \"5680299a4df27e30cdb545d9d2a640caf9299d61acb662b9512589e4390954e1\"\n },\n \"verify/state-checksum/float_census.py\": {\n \"mode\": 420,\n \"sha256\": \"a568aad8b9f38aba2474f33941550bf948d050694a1d04dc5c85d15687223ae9\"\n },\n \"verify/state-checksum/run_validation.sh\": {\n \"mode\": 493,\n \"sha256\": \"bf84b999d2b90368703e80235bac0258b70a1c37dd1902c9205a914a59cb1fc2\"\n },\n \"verify/state-checksum/stability_check.py\": {\n \"mode\": 420,\n \"sha256\": \"8e640561b05decf590524fbe0dbf3b76a5e2f9c7fde93e005ca6e79464c305f1\"\n },\n \"verify/state-checksum/state_checksum.py\": {\n \"mode\": 420,\n \"sha256\": \"ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8\"\n },\n \"verify/state-checksum/test_state_checksum.py\": {\n \"mode\": 420,\n \"sha256\": \"d0ccf8e8390fd0a5d76a8695a490d85dc7e8e415a06ec50b592c57474cc9a73b\"\n },\n \"verify/tooling/README.md\": {\n \"mode\": 420,\n \"sha256\": \"b05249530d65d43220c1e5c4666939c360d6139ed404a8881f6ad0a9c5c27af6\"\n },\n \"verify/tooling/fixtures.py\": {\n \"mode\": 420,\n \"sha256\": \"56cccc88b9b9468e07c9ddff39d65813098053ec9e8f00432736906389f200a7\"\n },\n \"verify/tooling/host-tests.json\": {\n \"mode\": 420,\n \"sha256\": \"90833c99e2749ff890b16b943f43f6ebfc1a1c611f2ed1e40555426fded45c97\"\n },\n \"verify/tooling/test_tooling.py\": {\n \"mode\": 420,\n \"sha256\": \"bb8d15960dfda13f15cffc57f3b669003b127b4dedbf34100bb4a51c29dd3c6d\"\n },\n \"verify/traces/.keep.md\": {\n \"mode\": 420,\n \"sha256\": \"b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786\"\n },\n \"verify/traces/ac-probe-baseline-turn15.jsonl\": {\n \"mode\": 420,\n \"sha256\": \"a2f4e410f6a8d77f7680b4a69b5b2ac2f59fa80515b0cfe8209e7fec8e4a5b6b\"\n },\n \"verify/traces/ac-probe-turn21-turn23.jsonl\": {\n \"mode\": 420,\n \"sha256\": \"2bb9317b82744c0da36ef6d9c1a78f31ebacea49b82a18005c0cc75bad62d345\"\n },\n \"verify/traces/ad-r1-turn28-turn29.jsonl\": {\n \"mode\": 420,\n \"sha256\": \"cde7a1e010aa6195163f3b9320aa5c496fd8c271e9648c90c7319837dd967571\"\n },\n \"verify/traces/ap-probes8-deploy-turn15.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"e257d5ea3fcb4be8da570d6a5589022e6ba412ff2712f4f06832812d8859e08a\"\n },\n \"verify/traces/ap-probes8-turn16-turn26.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"df4fb35d9824799d8be79f3a9e976b55b7cd0fb5488b3e12711d04eb3c320f13\"\n },\n \"verify/traces/ar-r1-turn38-turn43.jsonl\": {\n \"mode\": 420,\n \"sha256\": \"f8653cbd1956346816897b313031c5d70898144d1c84b1c849ac37bfe3bd993c\"\n },\n \"verify/traces/ar-r2-control-turn38-turn39.jsonl\": {\n \"mode\": 420,\n \"sha256\": \"c1068652ddf54d2ff266c1dc1ef1e69ea663f5d2a83143408f77ec782b3dd988\"\n },\n \"verify/traces/as-probes8-turn15-turn16.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"024bb0663b167eb364c8e138bae0bf10403860c195bd593cb56f60281060c4e8\"\n },\n \"verify/traces/b2-final-menu.png\": {\n \"mode\": 420,\n \"sha256\": \"5a95fe260c9cb13dad5fc6f00460819107db93f4ac89f455077ad056600f83fd\"\n },\n \"verify/traces/b2-shim.log\": {\n \"mode\": 420,\n \"sha256\": \"c31cf01af3659b7fdf008ff44f88f67ee4016dcfb30fc4a72b4d72ea0da8e404\"\n },\n \"verify/traces/b2-techfx-compare.jsonl\": {\n \"mode\": 420,\n \"sha256\": \"f0202f45b276db6744c80768f12695153812bc882de688cf64705ed6a52f243c\"\n },\n \"verify/traces/b2-techfx-golden.jsonl\": {\n \"mode\": 420,\n \"sha256\": \"43639e75bd9d510ed270c9cfcbb0c9665f5a6546f748ba81eba3f015e7ca233c\"\n },\n \"verify/traces/cr-N.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"0071ae72a142533ffb91f9f04caa6704102c826761ff5ae24b57a1c3e9652e46\"\n },\n \"verify/traces/cr-R0.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"6228c88cebb4dad2158e5586ecbcf71d1160116f2f4a2a8bc020658da8d7d706\"\n },\n \"verify/traces/cr-R1.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"73f5f15b3343381cf3f973caaf74588fd3d0b6759de1ddcf9e12b9b3ebf29713\"\n },\n \"verify/traces/eventlive-b3-t1-5.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"9cb344f1d8a3beb4bc1a2bf16baed6c38667443ead9f66fa0f53474a683d263c\"\n },\n \"verify/traces/eventlive-b3-t1.jsonl\": {\n \"mode\": 420,\n \"sha256\": \"2d9962de9a7ea7fb28b33b72209706b4a27673096f71c8789f9f10ac465f387b\"\n },\n \"verify/traces/eventlive-b3-zuul.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"0ee09bb884799e72c6a617ab02e741a7ba791ff458af439b9947a87b368a64de\"\n },\n \"verify/traces/h-probes-human-perturbed-t3-5.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"2567f8ccb6276a4d647c4f4b88d14f7ae63aa4d1797f672a9bd9c7c86e4d7473\"\n },\n \"verify/traces/h-probes-human-t5.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"92964779111573dc72e6a1845217cd7d709c9900594a106b3de7b59c2b7a88a7\"\n },\n \"verify/traces/h-probes-zuul-t24-25.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"0966294af27b49159b1e72e683abc0b59fd52cc9bfd9f517130d30cedf7efa29\"\n },\n \"verify/traces/l3-probe-turn8-turn15.jsonl\": {\n \"mode\": 420,\n \"sha256\": \"d1b5436f917bb4f6f74bd7b1967dbd0626db2c3a5cbc1d67684ef9f010826676\"\n },\n \"verify/traces/m1-compare.jsonl\": {\n \"mode\": 420,\n \"sha256\": \"f0f6fd15bc73008e43e20d6ed4c4dd91fb2ec8b40935bfd3cc000d8a84ea6731\"\n },\n \"verify/traces/m1-trace-golden.jsonl\": {\n \"mode\": 420,\n \"sha256\": \"4a4ddc031fb26a8f8b10dace297c73670f53dcbd250a9be94c0e31c9bb44dcc5\"\n },\n \"verify/traces/mf-after-compare.jsonl\": {\n \"mode\": 420,\n \"sha256\": \"2a894892977176df1a9d6c8199b0f81b48c7bcac15d2c0e7786441fc6125226e\"\n },\n \"verify/traces/mf-before-compare.jsonl\": {\n \"mode\": 420,\n \"sha256\": \"ee005097ebaac9f30c63f1e400fdf19a47e88010c71d215885234986d122410e\"\n },\n \"verify/traces/output-ref-turn2.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"7af583350545501414eda38439f2d0fa39149342d9001d2926e2a4e4fdd5cdca\"\n },\n \"verify/traces/output-zuul-and-ref.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"d581cb50f07766911fa59fa1df1524b33a9df6eec06226966efd5f54f09b6fb5\"\n },\n \"verify/traces/recap-b1-compare.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"0ce1c92028a8cd10a38d7cca72f90c37ccbd844f24a1950bf0eb6e75739b44e2\"\n },\n \"verify/traces/recap-b3-compare.jsonl\": {\n \"mode\": 420,\n \"sha256\": \"6ed3bcd99b4657d614bf63cc0fc2dfff650f4cb14e51086ea98c21bccbcf5fa8\"\n },\n \"verify/traces/recap-golden-trace.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"d62431e9461ffb1b66adc16a39542b86fa8e0cf54a0ed446a8781c4d75a6c3bb\"\n },\n \"verify/traces/recap-misc-compare.jsonl\": {\n \"mode\": 420,\n \"sha256\": \"d7c4446d45a9cab2af3da4a0d76f7a42c245da1f59db96fddf31d8b1f2c436ed\"\n },\n \"verify/traces/tailrng-drawsites.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"5c1806e2b1452226674013119e3b220f3cf42be2ad8b0ed998050ad65d1f8415\"\n },\n \"verify/traces/tailrng-refturn2.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"c33c6cafe015bda6acf5ca32b0c9595e1611f4ac82ecd3adaff8315c7bd3e560\"\n },\n \"verify/traces/tailrng-zuul-long.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"213e7dd8a6809dd93190f41c87218e802f1fbe77d44d598f287c2a19544063af\"\n },\n \"verify/traces/tailrng-zuul-noderoute.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"9476ee3b9b397ca9e20bc92eb887c109a075487cdd750746af051797e8838115\"\n },\n \"verify/traces/unlock-b3-t1-5.jsonl.gz\": {\n \"mode\": 420,\n \"sha256\": \"f6e27a60bf6c74eb98d8bec50146fe1996642285ca008c6a70c3cb148c6ba54c\"\n },\n \"verify/traces/unlock-b3-t1.jsonl.gz\": {","lineStart":4800,"lineEnd":5059,"totalLines":10049,"truncated":true}},"title":"campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json","time":{"start":1789045711851,"end":1789045711948}},"metadata":{"openai":{"itemId":"fc_0e13190077a4bf1c016aa2abcf938c87d18b7f6ee62fb25cb1"}},"id":"prt_08b6f23e8001gMSPvyinpny600","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6ef051001Avv5NSLaSIXvbY"}} +{"type":"step_finish","timestamp":1789045711991,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6f2474001ZCGYeCNo5jFu1k","reason":"tool-calls","snapshot":"20dc58b433ef995725c037b3d7dc30bee5c04cbd","messageID":"msg_08b6ef051001Avv5NSLaSIXvbY","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"step-finish","tokens":{"total":23805,"input":9178,"output":272,"reasoning":19,"cache":{"write":0,"read":14336}},"cost":0}} +{"type":"step_start","timestamp":1789045716913,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6f37ad001si94skq37eu1xX","messageID":"msg_08b6f249b001w7ITGf1zs2fBhh","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","snapshot":"1f0ca14527656e40eee19311f6faf703dbd0b92f","type":"step-start"}} +{"type":"tool_use","timestamp":1789045732444,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"bash","callID":"call_4P1nN82WMwc2bE2uDJW7VztI","state":{"status":"completed","input":{"command":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-problem-resolver --role resolver --model openai/gpt-6-astra --session run-481c9379a1efc0e527d2a28c --summary 'INTERIM resolution-only. Read canonical instructions, contract, prior checkpoint, open source-drift surprise and analyst static manifest. OBSERVED Git roots/common dirs and HEADs match assigned engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Historical analyst binding RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 versus prior resolver runner e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 not yet reconciled. Raw runner inventories include verify/results entries; must inspect binding policy before equating runner and campaign digests. No source or lab changes, no experiments or runtime execution. Shell allowlist rejected relative campaign command; will use authorized absolute control commands only. Lease directory inspected, no lease acquired or availability assumed. DECISION: keep s-210e489610197533e4f4cce1 open pending policy/inventory comparison; no stale-build diagnosis or acceptance.' --artifact campaign/runtime/surprises/s-210e489610197533e4f4cce1.json --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json --next-action 'Inspect runner versus campaign manifest hashing policy and relevant historical/current run digest records before deciding whether the reported mismatch compares equivalent identities.'"},"output":"{\n \"actor\": \"research-problem-resolver\",\n \"artifacts\": [\n {\n \"path\": \"campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\",\n \"sha256\": \"2e6b3fdf239a1dbffb887cf382e0ae80823667d6cf96afd590b4057a9438502e\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"f15d822f91601241181df05a\",\n \"model\": \"openai/gpt-6-astra\",\n \"next_action\": \"Inspect runner versus campaign manifest hashing policy and relevant historical/current run digest records before deciding whether the reported mismatch compares equivalent identities.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-481c9379a1efc0e527d2a28c\",\n \"summary\": \"INTERIM resolution-only. Read canonical instructions, contract, prior checkpoint, open source-drift surprise and analyst static manifest. OBSERVED Git roots/common dirs and HEADs match assigned engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Historical analyst binding RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 versus prior resolver runner e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 not yet reconciled. Raw runner inventories include verify/results entries; must inspect binding policy before equating runner and campaign digests. No source or lab changes, no experiments or runtime execution. Shell allowlist rejected relative campaign command; will use authorized absolute control commands only. Lease directory inspected, no lease acquired or availability assumed. DECISION: keep s-210e489610197533e4f4cce1 open pending policy/inventory comparison; no stale-build diagnosis or acceptance.\",\n \"timestamp\": \"2026-09-10T13:08:52.419410+00:00\"\n}\n","metadata":{"output":"{\n \"actor\": \"research-problem-resolver\",\n \"artifacts\": [\n {\n \"path\": \"campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\",\n \"sha256\": \"2e6b3fdf239a1dbffb887cf382e0ae80823667d6cf96afd590b4057a9438502e\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"f15d822f91601241181df05a\",\n \"model\": \"openai/gpt-6-astra\",\n \"next_action\": \"Inspect runner versus campaign manifest hashing policy and relevant historical/current run digest records before deciding whether the reported mismatch compares equivalent identities.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-481c9379a1efc0e527d2a28c\",\n \"summary\": \"INTERIM resolution-only. Read canonical instructions, contract, prior checkpoint, open source-drift surprise and analyst static manifest. OBSERVED Git roots/common dirs and HEADs match assigned engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Historical analyst binding RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 versus prior resolver runner e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 not yet reconciled. Raw runner inventories include verify/results entries; must inspect binding policy before equating runner and campaign digests. No source or lab changes, no experiments or runtime execution. Shell allowlist rejected relative campaign command; will use authorized absolute control commands only. Lease directory inspected, no lease acquired or availability assumed. DECISION: keep s-210e489610197533e4f4cce1 open pending policy/inventory comparison; no stale-build diagnosis or acceptance.\",\n \"timestamp\": \"2026-09-10T13:08:52.419410+00:00\"\n}\n","exit":0,"truncated":false},"title":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-problem-resolver --role resolver --model openai/gpt-6-astra --session run-481c9379a1efc0e527d2a28c --summary 'INTERIM resolution-only. Read canonical instructions, contract, prior checkpoint, open source-drift surprise and analyst static manifest. OBSERVED Git roots/common dirs and HEADs match assigned engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Historical analyst binding RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 versus prior resolver runner e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 not yet reconciled. Raw runner inventories include verify/results entries; must inspect binding policy before equating runner and campaign digests. No source or lab changes, no experiments or runtime execution. Shell allowlist rejected relative campaign command; will use authorized absolute control commands only. Lease directory inspected, no lease acquired or availability assumed. DECISION: keep s-210e489610197533e4f4cce1 open pending policy/inventory comparison; no stale-build diagnosis or acceptance.' --artifact campaign/runtime/surprises/s-210e489610197533e4f4cce1.json --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json --next-action 'Inspect runner versus campaign manifest hashing policy and relevant historical/current run digest records before deciding whether the reported mismatch compares equivalent identities.'","time":{"start":1789045732376,"end":1789045732442}},"metadata":{"openai":{"itemId":"fc_088539ed21003f05016aa2abd729f487d199ac380de6ab2aee"}},"id":"prt_08b6f41000010hfMCZdQ2Ki9jM","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6f249b001w7ITGf1zs2fBhh"}} +{"type":"step_finish","timestamp":1789045732498,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6f748f001SGH6oucngo2hFY","reason":"tool-calls","snapshot":"b8b45632685156f02d4262bb69ea070d8a7cd689","messageID":"msg_08b6f249b001w7ITGf1zs2fBhh","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"step-finish","tokens":{"total":38298,"input":14362,"output":444,"reasoning":68,"cache":{"write":0,"read":23424}},"cost":0}} +{"type":"step_start","timestamp":1789045747495,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6faf23001QgqQB6yjpmkhsQ","messageID":"msg_08b6f74c100116cIALfLLzUo2o","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","snapshot":"8950f7c9e80c9710dece53cd53014b317b243672","type":"step-start"}} +{"type":"tool_use","timestamp":1789045747670,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"grep","callID":"call_1DQDGGu5V8EVJplL21n46xx8","state":{"status":"completed","input":{"pattern":"manifest_sha256|source_before|source_after","path":"/home/alex/sots-re/campaign/runtime/runs","include":"run-481c9379a1efc0e527d2a28c.json"},"output":"Found 3 matches\n/home/alex/sots-re/campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.json:\n Line 87: \"source_before\": {\n\n Line 2188: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 5053: \"manifest_sha256\": \"e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9\",\n","metadata":{"matches":3,"truncated":false},"title":"manifest_sha256|source_before|source_after","time":{"start":1789045747661,"end":1789045747669}},"metadata":{"openai":{"itemId":"fc_0b75d386d474849f016aa2abf3361c87d1bfb807be9976a7f2"}},"id":"prt_08b6faf25001c31k5jyyYnCpuo","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6f74c100116cIALfLLzUo2o"}} +{"type":"tool_use","timestamp":1789045747815,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"grep","callID":"call_VWvOkxPbE2yKPHC8AxqtxS4l","state":{"status":"completed","input":{"pattern":"manifest_sha256|source_before|source_after","path":"/home/alex/sots-re/campaign/runtime/runs","include":"run-9daf5c3b75547271d5c3b4ed.json"},"output":"Found 6 matches\n/home/alex/sots-re/campaign/runtime/runs/run-9daf5c3b75547271d5c3b4ed.json:\n Line 94: \"source_after\": {\n\n Line 2195: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 5220: \"manifest_sha256\": \"b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4\",\n\n Line 5224: \"source_before\": {\n\n Line 7325: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 10350: \"manifest_sha256\": \"b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4\",\n","metadata":{"matches":6,"truncated":false},"title":"manifest_sha256|source_before|source_after","time":{"start":1789045747799,"end":1789045747813}},"metadata":{"openai":{"itemId":"fc_0b75d386d474849f016aa2abf3362887d1967e9027dfd4f06f"}},"id":"prt_08b6fafee001VmE5yQl8Zc3H7F","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6f74c100116cIALfLLzUo2o"}} +{"type":"tool_use","timestamp":1789045747929,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"grep","callID":"call_XzJVzB7xygtDb4JKohVPuRGs","state":{"status":"completed","input":{"pattern":"manifest_sha256|source_before|source_after","path":"/home/alex/sots-re/campaign/runtime/runs","include":"run-d6c4dc15e9f4d15155fee856.json"},"output":"Found 3 matches\n/home/alex/sots-re/campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json:\n Line 80: \"source_before\": {\n\n Line 2181: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 5206: \"manifest_sha256\": \"b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4\",\n","metadata":{"matches":3,"truncated":false},"title":"manifest_sha256|source_before|source_after","time":{"start":1789045747920,"end":1789045747928}},"metadata":{"openai":{"itemId":"fc_0b75d386d474849f016aa2abf3363487d1b75c252c69ebd182"}},"id":"prt_08b6fb063001A1Js6ktUmB7U51","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6f74c100116cIALfLLzUo2o"}} +{"type":"tool_use","timestamp":1789045748067,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"grep","callID":"call_65LkQDYZKLLcWCNgp8D0l39m","state":{"status":"completed","input":{"pattern":"manifest_sha256|def .*manifest|source_binding|verify/results","path":"/home/alex/sots-re/tools","include":"run_agent.py"},"output":"Found 1 matches\n/home/alex/sots-re/tools/run_agent.py:\n Line 85: \"manifest_sha256\": digest(files), \"files\": files}\n","metadata":{"matches":1,"truncated":false},"title":"manifest_sha256|def .*manifest|source_binding|verify/results","time":{"start":1789045748051,"end":1789045748066}},"metadata":{"openai":{"itemId":"fc_0b75d386d474849f016aa2abf3363c87d18fec787993c43140"}},"id":"prt_08b6fb143001P9g4CKoXS0m4lQ","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6f74c100116cIALfLLzUo2o"}} +{"type":"tool_use","timestamp":1789045748094,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"grep","callID":"call_FFvY1clRbdvODWHF8i9KXEY9","state":{"status":"completed","input":{"pattern":"def .*manifest|verify/results|def .*binding","path":"/home/alex/sots-re/tools","include":"campaign.py"},"output":"Found 3 matches\n/home/alex/sots-re/tools/campaign.py:\n Line 72: def source_manifest(path, kind):\n\n Line 83: if kind == \"re\" and (name.startswith(\"verify/results/\") or\n\n Line 331: def source_binding(self, c, paths=None):\n","metadata":{"matches":3,"truncated":false},"title":"def .*manifest|verify/results|def .*binding","time":{"start":1789045748082,"end":1789045748092}},"metadata":{"openai":{"itemId":"fc_0b75d386d474849f016aa2abf3364087d187d950113478a874"}},"id":"prt_08b6fb15b001chffZwwVzzrv4B","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6f74c100116cIALfLLzUo2o"}} +{"type":"tool_use","timestamp":1789045748341,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"bash","callID":"call_PkewDdaSGrqwO1Jj9NMpRekO","state":{"status":"completed","input":{"command":"git -C /tmp/opencode/sots-final-research-re status --short"},"output":" M README.md\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? AGENTS.md\n?? CLAUDE.md\n?? campaign/agents/\n?? campaign/contract.schema.json\n?? campaign/models.json\n?? guides/multi-agent-workflow.md\n?? guides/windows-lab-housekeeping.md\n?? opencode.json\n?? tools/campaign.py\n?? tools/check_agent_config.py\n?? tools/evidence.py\n?? tools/gate.py\n?? tools/run_agent.py\n?? tools/select_evidence.py\n?? tools/windows-housekeeping/\n?? verify/config/\n?? verify/publishing/\n?? verify/tooling/\n","metadata":{"output":" M README.md\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? AGENTS.md\n?? CLAUDE.md\n?? campaign/agents/\n?? campaign/contract.schema.json\n?? campaign/models.json\n?? guides/multi-agent-workflow.md\n?? guides/windows-lab-housekeeping.md\n?? opencode.json\n?? tools/campaign.py\n?? tools/check_agent_config.py\n?? tools/evidence.py\n?? tools/gate.py\n?? tools/run_agent.py\n?? tools/select_evidence.py\n?? tools/windows-housekeeping/\n?? verify/config/\n?? verify/publishing/\n?? verify/tooling/\n","exit":0,"truncated":false},"title":"git -C /tmp/opencode/sots-final-research-re status --short","time":{"start":1789045748321,"end":1789045748340}},"metadata":{"openai":{"itemId":"fc_0b75d386d474849f016aa2abf3364887d19839afedf91d72bf"}},"id":"prt_08b6fb1740014IJREWnQaQ5y3K","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6f74c100116cIALfLLzUo2o"}} +{"type":"tool_use","timestamp":1789045748385,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"bash","callID":"call_EXyTIo3wM4dt6pTW9yJMPQrB","state":{"status":"completed","input":{"command":"git -C /tmp/opencode/sots-final-research-engine status --short"},"output":" M CONTRIBUTING.md\n M README.md\n M docs/S-standalone.md\n M src/app/turn.cpp\n M src/game/sim/CMakeLists.txt\n M src/mars/rng/mt19937.cpp\n M src/mars/rng/mt19937.h\n M tests/app/CMakeLists.txt\n M tests/app/test_command_replay.cpp\n M tests/app/test_turn.cpp\n M tests/app/test_turn_record.cpp\n M tests/game_config/CMakeLists.txt\n M tests/game_data/CMakeLists.txt\n M tests/game_design/CMakeLists.txt\n M tests/game_design/test_census_saves.cpp\n M tests/game_sim/CMakeLists.txt\n M tests/mars_stream/CMakeLists.txt\n M tests/mars_stream/test_domains.cpp\n M tests/mars_stream/test_rng.cpp\n M tests/mars_stream/test_save.cpp\n M tests/mars_text/CMakeLists.txt\n M tests/mars_vfs/CMakeLists.txt\n M tools/clean_room_check.sh\n?? AGENTS.md\n?? CLAUDE.md\n?? docs/architecture.md\n?? opencode.json\n?? tools/clean_room_check.py\n","metadata":{"output":" M CONTRIBUTING.md\n M README.md\n M docs/S-standalone.md\n M src/app/turn.cpp\n M src/game/sim/CMakeLists.txt\n M src/mars/rng/mt19937.cpp\n M src/mars/rng/mt19937.h\n M tests/app/CMakeLists.txt\n M tests/app/test_command_replay.cpp\n M tests/app/test_turn.cpp\n M tests/app/test_turn_record.cpp\n M tests/game_config/CMakeLists.txt\n M tests/game_data/CMakeLists.txt\n M tests/game_design/CMakeLists.txt\n M tests/game_design/test_census_saves.cpp\n M tests/game_sim/CMakeLists.txt\n M tests/mars_stream/CMakeLists.txt\n M tests/mars_stream/test_domains.cpp\n M tests/mars_stream/test_rng.cpp\n M tests/mars_stream/test_save.cpp\n M tests/mars_text/CMakeLists.txt\n M tests/mars_vfs/CMakeLists.txt\n M tools/clean_room_check.sh\n?? AGENTS.md\n?? CLAUDE.md\n?? docs/architecture.md\n?? opencode.json\n?? tools/clean_room_check.py\n","exit":0,"truncated":false},"title":"git -C /tmp/opencode/sots-final-research-engine status --short","time":{"start":1789045748371,"end":1789045748384}},"metadata":{"openai":{"itemId":"fc_0b75d386d474849f016aa2abf3365487d19dfa69a2aecc75be"}},"id":"prt_08b6fb2660012CGuUQJkSLm9zD","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6f74c100116cIALfLLzUo2o"}} +{"type":"step_finish","timestamp":1789045748553,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6fb338001N1kDCsU4gn5HYz","reason":"tool-calls","snapshot":"c08e464154b27b3a4fb10b334eb14864effb3ea1","messageID":"msg_08b6f74c100116cIALfLLzUo2o","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"step-finish","tokens":{"total":39283,"input":1316,"output":335,"reasoning":0,"cache":{"write":0,"read":37632}},"cost":0}} +{"type":"step_start","timestamp":1789045752102,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6fc122001QDrbbv02n3umpJ","messageID":"msg_08b6fb3750010f32lloIx6nuIM","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","snapshot":"29aebd20b28bac837009983947e2930a4de74d33","type":"step-start"}} +{"type":"tool_use","timestamp":1789045759990,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_ChC3zmqIUXI0aPzGaPZUzlI0","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/tools/run_agent.py","offset":48,"limit":45},"output":"/home/alex/sots-re/tools/run_agent.py\nfile\n\n48: if tree == canonical:\n49: raise ControlError(f\"{kind}: worker must use a distinct linked worktree, not canonical source\")\n50: if Path(git(tree, \"rev-parse\", \"--show-toplevel\")).resolve() != tree:\n51: raise ControlError(f\"{kind}: supplied path is not worktree root\")\n52: common = Path(git(canonical, \"rev-parse\", \"--path-format=absolute\", \"--git-common-dir\")).resolve()\n53: if Path(git(tree, \"rev-parse\", \"--path-format=absolute\", \"--git-common-dir\")).resolve() != common:\n54: raise ControlError(f\"{kind}: worktree is not paired with canonical source repository\")\n55: entries = git(canonical, \"-c\", \"core.quotePath=false\", \"worktree\", \"list\", \"--porcelain\").splitlines()\n56: if f\"worktree {tree}\" not in entries:\n57: raise ControlError(f\"{kind}: not a registered Git worktree\")\n58: if git(tree, \"rev-parse\", \"HEAD\") != source[\"commit\"]:\n59: raise ControlError(f\"{kind}: worktree HEAD does not match pinned baseline\")\n60: if git(canonical, \"cat-file\", \"-t\", source[\"commit\"]) != \"commit\":\n61: raise ControlError(f\"{kind}: baseline is not a commit\")\n62: common_dirs.append(common)\n63: if common_dirs[0] == common_dirs[1]:\n64: raise ControlError(\"engine and RE must be different source repositories\")\n65: if Path(contract[\"baseline\"][\"re\"][\"path\"]).resolve() != campaign.root:\n66: raise ControlError(\"RE baseline/state root mismatch\")\n67: return trees\n68: \n69: \n70: def source_identity(trees):\n71: result = {}\n72: for kind, tree in trees.items():\n73: files = {}\n74: for name in sorted(set(git(tree, \"ls-files\", \"-z\", \"--cached\", \"--others\", \"--exclude-standard\").split(\"\\0\")) - {\"\"}):\n75: p = tree / name\n76: if p.is_symlink():\n77: files[name] = {\"symlink\": os.readlink(p)}\n78: elif p.is_file():\n79: files[name] = {\"sha256\": file_hash(p), \"mode\": p.stat().st_mode & 0o777}\n80: elif p.is_dir():\n81: raise ControlError(f\"submodule/directory requires explicit manifest support: {p}\")\n82: else:\n83: files[name] = None\n84: result[kind] = {\"path\": str(tree), \"commit\": git(tree, \"rev-parse\", \"HEAD\"),\n85: \"manifest_sha256\": digest(files), \"files\": files}\n86: return result\n87: \n88: \n89: def check_launch(campaign, contract, role, actor):\n90: if role not in MODELS or contract[\"status\"] not in ROLE_STATUS[role]:\n91: raise ControlError(\"role cannot launch in this contract status\")\n92: recovery = role in {\"lead\", \"resolver\"} and (contract[\"status\"] == \"blocked\" or bool(campaign.open_surprises(contract[\"id\"])))\n\n(Showing lines 48-92 of 342. Use offset=93 to continue.)\n","metadata":{"preview":" if tree == canonical:\n raise ControlError(f\"{kind}: worker must use a distinct linked worktree, not canonical source\")\n if Path(git(tree, \"rev-parse\", \"--show-toplevel\")).resolve() != tree:\n raise ControlError(f\"{kind}: supplied path is not worktree root\")\n common = Path(git(canonical, \"rev-parse\", \"--path-format=absolute\", \"--git-common-dir\")).resolve()\n if Path(git(tree, \"rev-parse\", \"--path-format=absolute\", \"--git-common-dir\")).resolve() != common:\n raise ControlError(f\"{kind}: worktree is not paired with canonical source repository\")\n entries = git(canonical, \"-c\", \"core.quotePath=false\", \"worktree\", \"list\", \"--porcelain\").splitlines()\n if f\"worktree {tree}\" not in entries:\n raise ControlError(f\"{kind}: not a registered Git worktree\")\n if git(tree, \"rev-parse\", \"HEAD\") != source[\"commit\"]:\n raise ControlError(f\"{kind}: worktree HEAD does not match pinned baseline\")\n if git(canonical, \"cat-file\", \"-t\", source[\"commit\"]) != \"commit\":\n raise ControlError(f\"{kind}: baseline is not a commit\")\n common_dirs.append(common)\n if common_dirs[0] == common_dirs[1]:\n raise ControlError(\"engine and RE must be different source repositories\")\n if Path(contract[\"baseline\"][\"re\"][\"path\"]).resolve() != campaign.root:\n raise ControlError(\"RE baseline/state root mismatch\")\n return trees","truncated":true,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/tools/run_agent.py","text":" if tree == canonical:\n raise ControlError(f\"{kind}: worker must use a distinct linked worktree, not canonical source\")\n if Path(git(tree, \"rev-parse\", \"--show-toplevel\")).resolve() != tree:\n raise ControlError(f\"{kind}: supplied path is not worktree root\")\n common = Path(git(canonical, \"rev-parse\", \"--path-format=absolute\", \"--git-common-dir\")).resolve()\n if Path(git(tree, \"rev-parse\", \"--path-format=absolute\", \"--git-common-dir\")).resolve() != common:\n raise ControlError(f\"{kind}: worktree is not paired with canonical source repository\")\n entries = git(canonical, \"-c\", \"core.quotePath=false\", \"worktree\", \"list\", \"--porcelain\").splitlines()\n if f\"worktree {tree}\" not in entries:\n raise ControlError(f\"{kind}: not a registered Git worktree\")\n if git(tree, \"rev-parse\", \"HEAD\") != source[\"commit\"]:\n raise ControlError(f\"{kind}: worktree HEAD does not match pinned baseline\")\n if git(canonical, \"cat-file\", \"-t\", source[\"commit\"]) != \"commit\":\n raise ControlError(f\"{kind}: baseline is not a commit\")\n common_dirs.append(common)\n if common_dirs[0] == common_dirs[1]:\n raise ControlError(\"engine and RE must be different source repositories\")\n if Path(contract[\"baseline\"][\"re\"][\"path\"]).resolve() != campaign.root:\n raise ControlError(\"RE baseline/state root mismatch\")\n return trees\n\n\ndef source_identity(trees):\n result = {}\n for kind, tree in trees.items():\n files = {}\n for name in sorted(set(git(tree, \"ls-files\", \"-z\", \"--cached\", \"--others\", \"--exclude-standard\").split(\"\\0\")) - {\"\"}):\n p = tree / name\n if p.is_symlink():\n files[name] = {\"symlink\": os.readlink(p)}\n elif p.is_file():\n files[name] = {\"sha256\": file_hash(p), \"mode\": p.stat().st_mode & 0o777}\n elif p.is_dir():\n raise ControlError(f\"submodule/directory requires explicit manifest support: {p}\")\n else:\n files[name] = None\n result[kind] = {\"path\": str(tree), \"commit\": git(tree, \"rev-parse\", \"HEAD\"),\n \"manifest_sha256\": digest(files), \"files\": files}\n return result\n\n\ndef check_launch(campaign, contract, role, actor):\n if role not in MODELS or contract[\"status\"] not in ROLE_STATUS[role]:\n raise ControlError(\"role cannot launch in this contract status\")\n recovery = role in {\"lead\", \"resolver\"} and (contract[\"status\"] == \"blocked\" or bool(campaign.open_surprises(contract[\"id\"])))","lineStart":48,"lineEnd":92,"totalLines":342,"truncated":true}},"title":"tools/run_agent.py","time":{"start":1789045759956,"end":1789045759988}},"metadata":{"openai":{"itemId":"fc_0f800aba04d4ba9e016aa2abffb69487d1b07b1bc381b4a7dc"}},"id":"prt_08b6fdfb1001sbg5SdIEmq5hO2","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6fb3750010f32lloIx6nuIM"}} +{"type":"tool_use","timestamp":1789045760009,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_GKcToYhyEIwF3KYooUqA1Gv3","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/tools/campaign.py","offset":65,"limit":48},"output":"/home/alex/sots-re/tools/campaign.py\nfile\n\n65: def git_value(path, *args):\n66: result = subprocess.run([\"git\", \"-C\", str(path), *args], capture_output=True, text=True)\n67: if result.returncode:\n68: raise ControlError(f\"source git identity unavailable: {path}: {result.stderr.strip()}\")\n69: return result.stdout.rstrip(\"\\n\")\n70: \n71: \n72: def source_manifest(path, kind):\n73: \"\"\"Fixed exclusions, never caller-selected: mutable state cannot hash itself.\"\"\"\n74: root = Path(path).resolve()\n75: if Path(git_value(root, \"rev-parse\", \"--show-toplevel\")).resolve() != root:\n76: raise ControlError(\"source path must be a Git worktree root\")\n77: files = {}\n78: names = git_value(root, \"ls-files\", \"-z\", \"--cached\", \"--others\", \"--exclude-standard\").split(\"\\0\")\n79: for name in sorted(set(names) - {\"\"}):\n80: parts = Path(name).parts\n81: if any(p in {\"__pycache__\", \".pytest_cache\"} for p in parts):\n82: continue\n83: if kind == \"re\" and (name.startswith(\"verify/results/\") or\n84: (name.startswith(\"campaign/\") and not\n85: (name in {\"campaign/models.json\", \"campaign/contract.schema.json\"} or\n86: name.startswith(\"campaign/agents/\")))):\n87: continue\n88: p = root / name\n89: if not p.resolve().is_relative_to(root):\n90: raise ControlError(f\"source link escapes repository: {name}\")\n91: if p.is_symlink() or p.is_dir():\n92: raise ControlError(f\"source symlink/submodule unsupported: {name}\")\n93: files[name] = {\"sha256\": file_hash(p), \"mode\": p.stat().st_mode & 0o777} if p.is_file() else None\n94: return {\"path\": str(root), \"commit\": git_value(root, \"rev-parse\", \"HEAD\"), \"sha256\": digest(files)}\n95: \n96: \n97: def atomic_json(path, value):\n98: path = Path(path)\n99: path.parent.mkdir(parents=True, exist_ok=True)\n100: fd, temporary = tempfile.mkstemp(prefix=\".write-\", dir=path.parent)\n101: try:\n102: with os.fdopen(fd, \"w\") as stream:\n103: json.dump(value, stream, indent=2, sort_keys=True, allow_nan=False)\n104: stream.write(\"\\n\")\n105: stream.flush()\n106: os.fsync(stream.fileno())\n107: os.replace(temporary, path)\n108: directory = os.open(path.parent, os.O_RDONLY | os.O_DIRECTORY)\n109: try:\n110: os.fsync(directory)\n111: finally:\n112: os.close(directory)\n\n(Showing lines 65-112 of 624. Use offset=113 to continue.)\n","metadata":{"preview":"def git_value(path, *args):\n result = subprocess.run([\"git\", \"-C\", str(path), *args], capture_output=True, text=True)\n if result.returncode:\n raise ControlError(f\"source git identity unavailable: {path}: {result.stderr.strip()}\")\n return result.stdout.rstrip(\"\\n\")\n\n\ndef source_manifest(path, kind):\n \"\"\"Fixed exclusions, never caller-selected: mutable state cannot hash itself.\"\"\"\n root = Path(path).resolve()\n if Path(git_value(root, \"rev-parse\", \"--show-toplevel\")).resolve() != root:\n raise ControlError(\"source path must be a Git worktree root\")\n files = {}\n names = git_value(root, \"ls-files\", \"-z\", \"--cached\", \"--others\", \"--exclude-standard\").split(\"\\0\")\n for name in sorted(set(names) - {\"\"}):\n parts = Path(name).parts\n if any(p in {\"__pycache__\", \".pytest_cache\"} for p in parts):\n continue\n if kind == \"re\" and (name.startswith(\"verify/results/\") or\n (name.startswith(\"campaign/\") and not","truncated":true,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/tools/campaign.py","text":"def git_value(path, *args):\n result = subprocess.run([\"git\", \"-C\", str(path), *args], capture_output=True, text=True)\n if result.returncode:\n raise ControlError(f\"source git identity unavailable: {path}: {result.stderr.strip()}\")\n return result.stdout.rstrip(\"\\n\")\n\n\ndef source_manifest(path, kind):\n \"\"\"Fixed exclusions, never caller-selected: mutable state cannot hash itself.\"\"\"\n root = Path(path).resolve()\n if Path(git_value(root, \"rev-parse\", \"--show-toplevel\")).resolve() != root:\n raise ControlError(\"source path must be a Git worktree root\")\n files = {}\n names = git_value(root, \"ls-files\", \"-z\", \"--cached\", \"--others\", \"--exclude-standard\").split(\"\\0\")\n for name in sorted(set(names) - {\"\"}):\n parts = Path(name).parts\n if any(p in {\"__pycache__\", \".pytest_cache\"} for p in parts):\n continue\n if kind == \"re\" and (name.startswith(\"verify/results/\") or\n (name.startswith(\"campaign/\") and not\n (name in {\"campaign/models.json\", \"campaign/contract.schema.json\"} or\n name.startswith(\"campaign/agents/\")))):\n continue\n p = root / name\n if not p.resolve().is_relative_to(root):\n raise ControlError(f\"source link escapes repository: {name}\")\n if p.is_symlink() or p.is_dir():\n raise ControlError(f\"source symlink/submodule unsupported: {name}\")\n files[name] = {\"sha256\": file_hash(p), \"mode\": p.stat().st_mode & 0o777} if p.is_file() else None\n return {\"path\": str(root), \"commit\": git_value(root, \"rev-parse\", \"HEAD\"), \"sha256\": digest(files)}\n\n\ndef atomic_json(path, value):\n path = Path(path)\n path.parent.mkdir(parents=True, exist_ok=True)\n fd, temporary = tempfile.mkstemp(prefix=\".write-\", dir=path.parent)\n try:\n with os.fdopen(fd, \"w\") as stream:\n json.dump(value, stream, indent=2, sort_keys=True, allow_nan=False)\n stream.write(\"\\n\")\n stream.flush()\n os.fsync(stream.fileno())\n os.replace(temporary, path)\n directory = os.open(path.parent, os.O_RDONLY | os.O_DIRECTORY)\n try:\n os.fsync(directory)\n finally:\n os.close(directory)","lineStart":65,"lineEnd":112,"totalLines":624,"truncated":true}},"title":"tools/campaign.py","time":{"start":1789045759962,"end":1789045760003}},"metadata":{"openai":{"itemId":"fc_0f800aba04d4ba9e016aa2abffb6a887d187b728225cd5988b"}},"id":"prt_08b6fdfd6001414MqhFcVsuuuV","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6fb3750010f32lloIx6nuIM"}} +{"type":"tool_use","timestamp":1789045760009,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_sXFSuzVkrMH7KeZ5Qi9GPX7t","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/contracts/research-live-record-bridge.json"},"output":"/home/alex/sots-re/campaign/contracts/research-live-record-bridge.json\nfile\n\n1: {\n2: \"acceptance\": [\n3: {\n4: \"axis\": \"planning\",\n5: \"criterion\": \"Before ready, publish exact bridge-only source/test ownership, callable entrypoints and calling conventions, generated-address provenance, a bridge-only invocation route, VM/build resources, executable acceptance commands and immutable source/binary/fixture manifests. The route must not call or wire research replacement.\",\n6: \"id\": \"readiness\"\n7: },\n8: {\n9: \"axis\": \"understanding\",\n10: \"criterion\": \"Reconcile accepted binary evidence with generated and pure-model facts, including whether EvDsc participates in duplicate equality and whether the callable ObservedTech copy operation begins at 0x0079a150 or an interior site. Every exposed constructor/copy/append/destructor/new/delete operation has an exact ABI and ownership contract.\",\n11: \"id\": \"abi-reconciliation\"\n12: },\n13: {\n14: \"axis\": \"implementation\",\n15: \"criterion\": \"An isolated bridge constructs, copies, appends, updates and destroys complete live-layout ObservedTech, TurnEvents and PlayerEvent values using compatible original-runtime allocation services. It never copies raw owning headers and never calls original RecordObservedTech, EventStorage::PostEvent or any research completion root.\",\n16: \"id\": \"bridge-operations\"\n17: },\n18: {\n19: \"axis\": \"validation\",\n20: \"criterion\": \"Host tests and a fresh leased disposable-VM run positively execute empty, spare and full capacity; short and long strings; repeated observed names; exact duplicate and description-only-different events; normal destruction; and one contained recorded failure path. Preserve per-case operation/allocation/destruction counts and complete resulting records.\",\n21: \"id\": \"runtime-matrix\"\n22: },\n23: {\n24: \"axis\": \"validation\",\n25: \"criterion\": \"Executable negative controls reject raw string/header transfer, wrong callable entry or convention, mismatched allocator family, missing cleanup, double free, incomplete record fields, forbidden original decision-root calls, zero execution, missing artifacts and source/binary/fixture drift.\",\n26: \"id\": \"negative-controls\"\n27: },\n28: {\n29: \"axis\": \"validation\",\n30: \"criterion\": \"A different verifier session reproduces the source/binary/fixture-bound package and at least one meaningful negative control on an integrated tree. Author-only or static-only evidence cannot accept live allocator safety.\",\n31: \"id\": \"independent-reproduction\"\n32: }\n33: ],\n34: \"baseline\": {\n35: \"engine\": {\n36: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n37: \"path\": \"/home/alex/sots-engine\"\n38: },\n39: \"re\": {\n40: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n41: \"path\": \"/home/alex/sots-re\"\n42: }\n43: },\n44: \"checkpoint\": \"campaign/runtime/checkpoints/research-live-record-bridge-646a5ada115eaf0a3924db19.json\",\n45: \"dependencies\": [\n46: \"research-completion-abi\"\n47: ],\n48: \"effects\": [\n49: \"Complete 0x2c ObservedTech object fields, owned name string, existing-name update semantics, vector first/last/end and element lifetime across no-growth and growth paths.\",\n50: \"Complete 0x74 PlayerEvent fields and three independently owned strings, plus complete 0x18 TurnEvents bucket and nested vector lifetime across no-growth and growth paths.\",\n51: \"Event ID/order, exact duplicate behavior, description-only-different behavior and stale-bucket pruning only as needed to exercise the bridge fixture; no research callback or player-state effects.\",\n52: \"Allocation, copy, destruction and failure-path counters sufficient to detect leaks, mismatched frees, partial construction and double destruction.\"\n53: ],\n54: \"evidence\": [],\n55: \"id\": \"research-live-record-bridge\",\n56: \"inputs\": [\n57: \"Accepted research-completion-abi evidence and handoff, including binary fingerprint and independently reproduced static ownership windows.\",\n58: \"Original binary /home/alex/sots-re/dumps/sots.exe sha256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841; owner-supplied and never committed.\",\n59: \"Source-identical paired worktrees /tmp/opencode/sots-final-research-engine and /tmp/opencode/sots-final-research-re at the contract baselines; exact dirty source-content manifests are required before implementation evidence.\",\n60: \"Disposable VM144 is the preferred runtime fixture guest; verify its current MAC/IP, session/process state and housekeeping immediately before use, then acquire campaign/runtime/leases/vm144.json. VM140 is excluded from this experiment.\",\n61: \"Required but missing before ready: bridge-only invocation fixture, generated callable-address package, 32-bit shim/toolchain manifest, failure-containment design, executable acceptance checker and per-case expected records.\"\n62: ],\n63: \"original_dependencies\": [\n64: \"Original MSVCR100 scalar new/delete and narrowly accepted constructor/copy/append/destructor operations are permitted only as declared, counted ABI services.\",\n65: \"Original RecordObservedTech, EventStorage::PostEvent, ProcessResearch, SetResearched, OnTechResearched and localized string lookup are forbidden in the bridge fixture.\",\n66: \"The original game process supplies the MSVCR100 runtime and object address space for live tests; this contract does not claim standalone allocator or game-decision replacement.\"\n67: ],\n68: \"owner\": {\n69: \"name\": \"live-record bridge architect\",\n70: \"role\": \"architecture-review\"\n71: },\n72: \"predictions\": [\n73: \"ObservedTech no-growth append deep-copies one name; growth relocates every existing 0x2c element and destroys the old range without cross-runtime frees.\",\n74: \"PlayerEvent append deep-copies EvDsc, EvMsg and EvImg independently; full-capacity growth preserves all scalar/default fields and destroys old strings exactly once.\",\n75: \"Repeated observed name updates the existing record without vector growth; exact duplicate event does not append; description-only-different event does append if the accepted EvDsc equality result is correct.\",\n76: \"A contained allocation-failure fixture reports failure without an accepted partial record, leaked owned string, mismatched free or exception crossing into an unsafe ABI boundary.\"\n77: ],\n78: \"scope\": [\n79: \"Recover and implement only the live ABI bridge for ObservedTech, TurnEvents and PlayerEvent construction/copy/append/update/destruction plus isolated fixtures and acceptance tooling.\",\n80: \"First quantum is RE and architecture: reconcile callable boundaries and duplicate semantics, specify failure containment and name exact owned files. No engine implementation or VM mutation until the contract is ready and the operator holds required leases.\",\n81: \"Runtime validation uses a bridge-only fixture on a disposable clone. It must not wire src/shim/hooks/research.cpp or src/shim/main.cpp and must not execute a research completion workload.\",\n82: \"Static ABI acceptance is a dependency, not evidence of live safety. Acceptance remains scoped to bridge operations and does not promote research-replacement.\"\n83: ],\n84: \"status\": \"needs-revision\",\n85: \"stop_conditions\": [\n86: \"Remain proposed while callable ABI, exact ownership, fixture route, manifests, failure containment or executable acceptance is unresolved.\",\n87: \"Stop affected work and record a surprise on contradictory fresh binary/runtime evidence, binary/source drift, allocator mismatch, exception crossing, unexpected game-decision-root execution, leak/double-free, guest interference or access change.\",\n88: \"No Ghidra mutation or VM/build-host mutation without explicit assignment and the corresponding canonical lease; never touch VM140 under this contract.\",\n89: \"No research replacement wiring, delegation, staging, commit, push or destructive canonical worktree operation. Checkpoint every 20 calls/15 minutes and before experiment, handoff or stop.\"\n90: ],\n91: \"title\": \"Live ObservedTech and event record ABI bridge\"\n92: }\n\n(End of file - total 92 lines)\n","metadata":{"preview":"{\n \"acceptance\": [\n {\n \"axis\": \"planning\",\n \"criterion\": \"Before ready, publish exact bridge-only source/test ownership, callable entrypoints and calling conventions, generated-address provenance, a bridge-only invocation route, VM/build resources, executable acceptance commands and immutable source/binary/fixture manifests. The route must not call or wire research replacement.\",\n \"id\": \"readiness\"\n },\n {\n \"axis\": \"understanding\",\n \"criterion\": \"Reconcile accepted binary evidence with generated and pure-model facts, including whether EvDsc participates in duplicate equality and whether the callable ObservedTech copy operation begins at 0x0079a150 or an interior site. Every exposed constructor/copy/append/destructor/new/delete operation has an exact ABI and ownership contract.\",\n \"id\": \"abi-reconciliation\"\n },\n {\n \"axis\": \"implementation\",\n \"criterion\": \"An isolated bridge constructs, copies, appends, updates and destroys complete live-layout ObservedTech, TurnEvents and PlayerEvent values using compatible original-runtime allocation services. It never copies raw owning headers and never calls original RecordObservedTech, EventStorage::PostEvent or any research completion root.\",\n \"id\": \"bridge-operations\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Host tests and a fresh leased disposable-VM run positively execute empty, spare and full capacity; short and long strings; repeated observed names; exact duplicate and description-only-different events; normal destruction; and one contained recorded failure path. Preserve per-case operation/allocation/destruction counts and complete resulting records.\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/contracts/research-live-record-bridge.json","text":"{\n \"acceptance\": [\n {\n \"axis\": \"planning\",\n \"criterion\": \"Before ready, publish exact bridge-only source/test ownership, callable entrypoints and calling conventions, generated-address provenance, a bridge-only invocation route, VM/build resources, executable acceptance commands and immutable source/binary/fixture manifests. The route must not call or wire research replacement.\",\n \"id\": \"readiness\"\n },\n {\n \"axis\": \"understanding\",\n \"criterion\": \"Reconcile accepted binary evidence with generated and pure-model facts, including whether EvDsc participates in duplicate equality and whether the callable ObservedTech copy operation begins at 0x0079a150 or an interior site. Every exposed constructor/copy/append/destructor/new/delete operation has an exact ABI and ownership contract.\",\n \"id\": \"abi-reconciliation\"\n },\n {\n \"axis\": \"implementation\",\n \"criterion\": \"An isolated bridge constructs, copies, appends, updates and destroys complete live-layout ObservedTech, TurnEvents and PlayerEvent values using compatible original-runtime allocation services. It never copies raw owning headers and never calls original RecordObservedTech, EventStorage::PostEvent or any research completion root.\",\n \"id\": \"bridge-operations\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Host tests and a fresh leased disposable-VM run positively execute empty, spare and full capacity; short and long strings; repeated observed names; exact duplicate and description-only-different events; normal destruction; and one contained recorded failure path. Preserve per-case operation/allocation/destruction counts and complete resulting records.\",\n \"id\": \"runtime-matrix\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Executable negative controls reject raw string/header transfer, wrong callable entry or convention, mismatched allocator family, missing cleanup, double free, incomplete record fields, forbidden original decision-root calls, zero execution, missing artifacts and source/binary/fixture drift.\",\n \"id\": \"negative-controls\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"A different verifier session reproduces the source/binary/fixture-bound package and at least one meaningful negative control on an integrated tree. Author-only or static-only evidence cannot accept live allocator safety.\",\n \"id\": \"independent-reproduction\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-live-record-bridge-646a5ada115eaf0a3924db19.json\",\n \"dependencies\": [\n \"research-completion-abi\"\n ],\n \"effects\": [\n \"Complete 0x2c ObservedTech object fields, owned name string, existing-name update semantics, vector first/last/end and element lifetime across no-growth and growth paths.\",\n \"Complete 0x74 PlayerEvent fields and three independently owned strings, plus complete 0x18 TurnEvents bucket and nested vector lifetime across no-growth and growth paths.\",\n \"Event ID/order, exact duplicate behavior, description-only-different behavior and stale-bucket pruning only as needed to exercise the bridge fixture; no research callback or player-state effects.\",\n \"Allocation, copy, destruction and failure-path counters sufficient to detect leaks, mismatched frees, partial construction and double destruction.\"\n ],\n \"evidence\": [],\n \"id\": \"research-live-record-bridge\",\n \"inputs\": [\n \"Accepted research-completion-abi evidence and handoff, including binary fingerprint and independently reproduced static ownership windows.\",\n \"Original binary /home/alex/sots-re/dumps/sots.exe sha256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841; owner-supplied and never committed.\",\n \"Source-identical paired worktrees /tmp/opencode/sots-final-research-engine and /tmp/opencode/sots-final-research-re at the contract baselines; exact dirty source-content manifests are required before implementation evidence.\",\n \"Disposable VM144 is the preferred runtime fixture guest; verify its current MAC/IP, session/process state and housekeeping immediately before use, then acquire campaign/runtime/leases/vm144.json. VM140 is excluded from this experiment.\",\n \"Required but missing before ready: bridge-only invocation fixture, generated callable-address package, 32-bit shim/toolchain manifest, failure-containment design, executable acceptance checker and per-case expected records.\"\n ],\n \"original_dependencies\": [\n \"Original MSVCR100 scalar new/delete and narrowly accepted constructor/copy/append/destructor operations are permitted only as declared, counted ABI services.\",\n \"Original RecordObservedTech, EventStorage::PostEvent, ProcessResearch, SetResearched, OnTechResearched and localized string lookup are forbidden in the bridge fixture.\",\n \"The original game process supplies the MSVCR100 runtime and object address space for live tests; this contract does not claim standalone allocator or game-decision replacement.\"\n ],\n \"owner\": {\n \"name\": \"live-record bridge architect\",\n \"role\": \"architecture-review\"\n },\n \"predictions\": [\n \"ObservedTech no-growth append deep-copies one name; growth relocates every existing 0x2c element and destroys the old range without cross-runtime frees.\",\n \"PlayerEvent append deep-copies EvDsc, EvMsg and EvImg independently; full-capacity growth preserves all scalar/default fields and destroys old strings exactly once.\",\n \"Repeated observed name updates the existing record without vector growth; exact duplicate event does not append; description-only-different event does append if the accepted EvDsc equality result is correct.\",\n \"A contained allocation-failure fixture reports failure without an accepted partial record, leaked owned string, mismatched free or exception crossing into an unsafe ABI boundary.\"\n ],\n \"scope\": [\n \"Recover and implement only the live ABI bridge for ObservedTech, TurnEvents and PlayerEvent construction/copy/append/update/destruction plus isolated fixtures and acceptance tooling.\",\n \"First quantum is RE and architecture: reconcile callable boundaries and duplicate semantics, specify failure containment and name exact owned files. No engine implementation or VM mutation until the contract is ready and the operator holds required leases.\",\n \"Runtime validation uses a bridge-only fixture on a disposable clone. It must not wire src/shim/hooks/research.cpp or src/shim/main.cpp and must not execute a research completion workload.\",\n \"Static ABI acceptance is a dependency, not evidence of live safety. Acceptance remains scoped to bridge operations and does not promote research-replacement.\"\n ],\n \"status\": \"needs-revision\",\n \"stop_conditions\": [\n \"Remain proposed while callable ABI, exact ownership, fixture route, manifests, failure containment or executable acceptance is unresolved.\",\n \"Stop affected work and record a surprise on contradictory fresh binary/runtime evidence, binary/source drift, allocator mismatch, exception crossing, unexpected game-decision-root execution, leak/double-free, guest interference or access change.\",\n \"No Ghidra mutation or VM/build-host mutation without explicit assignment and the corresponding canonical lease; never touch VM140 under this contract.\",\n \"No research replacement wiring, delegation, staging, commit, push or destructive canonical worktree operation. Checkpoint every 20 calls/15 minutes and before experiment, handoff or stop.\"\n ],\n \"title\": \"Live ObservedTech and event record ABI bridge\"\n}","lineStart":1,"lineEnd":92,"totalLines":92,"truncated":false}},"title":"campaign/contracts/research-live-record-bridge.json","time":{"start":1789045759974,"end":1789045760005}},"metadata":{"openai":{"itemId":"fc_0f800aba04d4ba9e016aa2abffb6b887d1ad8038452bff0ec3"}},"id":"prt_08b6fdfe3001Qk1XvQjTf2e2sR","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6fb3750010f32lloIx6nuIM"}} +{"type":"tool_use","timestamp":1789045760009,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_IRjdkUQGNbxGMBrv3hUDz40c","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/contracts/research-replacement.json"},"output":"/home/alex/sots-re/campaign/contracts/research-replacement.json\nfile\n\n1: {\n2: \"acceptance\": [\n3: {\n4: \"axis\": \"planning\",\n5: \"criterion\": \"BLOCKED: accepted static ABI dependency is named and original-helper policy is fixed, but readiness still requires an accepted live-record-bridge contract, implemented tools/research_replacement.py interfaces from the pilot plan, required asset paths/hashes, W0 recertification, exact coordinator-owned paths and immutable source/binary/input manifests.\",\n6: \"id\": \"readiness\"\n7: },\n8: {\n9: \"axis\": \"implementation\",\n10: \"criterion\": \"Fresh full-profile source-bound host/assets/shim build; expected test identities and explicit positive executed workloads; no required missing input, unexpected skip or stale binary.\",\n11: \"id\": \"full-gate\"\n12: },\n13: {\n14: \"axis\": \"validation\",\n15: \"criterion\": \"Two fresh C1/C2 hooks-off processes and candidate compare N on the exact W1 input/route produce identical pre/post save pairs; full installed-site manifests and per-call CW retained. Reject incomplete raw bundles or disagreement.\",\n16: \"id\": \"control-neutrality\"\n17: },\n18: {\n19: \"axis\": \"implementation\",\n20: \"criterion\": \"W1 replace executes exactly one tech-144 completion and three unlocks, two actual event records and one full observed-tech record, refund 1166 and primary player effects; original displaced roots bypassed, declared helpers counted; zero unsupported paths, unreadable inputs or failures.\",\n21: \"id\": \"positive-replace\"\n22: },\n23: {\n24: \"axis\": \"validation\",\n25: \"criterion\": \"Require post-turn file-byte, inflated-byte and exact-bit unmasked state equality plus complete reader coverage and nonserialized order/RNG checks. Pre-turn resave equality, count-only regions and zero-execution passes cannot satisfy this criterion.\",\n26: \"id\": \"oracle\"\n27: },\n28: {\n29: \"axis\": \"validation\",\n30: \"criterion\": \"Executable checker rejects archived R0's 27 and R1's 16 leaf differences, absent callback/event/ObservedTech writes, W0 as completion evidence, missing artifacts, wrong hashes, and unknown RNG reported as zero.\",\n31: \"id\": \"negative-controls\"\n32: },\n33: {\n34: \"axis\": \"validation\",\n35: \"criterion\": \"Different verifier execution reproduces source/binary/input-bound package and a meaningful negative control; integrated-tree evidence is required before accepted. No author-only verdict or reporter --accept flag grants campaign acceptance.\",\n36: \"id\": \"independent-reproduction\"\n37: },\n38: {\n39: \"axis\": \"original_dependencies\",\n40: \"criterion\": \"Publish retained original helpers and W1-only scope separately. Require certified W2 and branch-specific original experiments plus synthetic boundaries before claiming RNG-consuming, other-effect-family, recursive, dedup, decay, plague or rebellion coverage.\",\n41: \"id\": \"coverage-and-dependencies\"\n42: }\n43: ],\n44: \"baseline\": {\n45: \"engine\": {\n46: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n47: \"path\": \"/home/alex/sots-engine\"\n48: },\n49: \"re\": {\n50: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n51: \"path\": \"/home/alex/sots-re\"\n52: }\n53: },\n54: \"checkpoint\": \"campaign/runtime/checkpoints/research-replacement-fc19e142bf1db96b10d29391.json\",\n55: \"dependencies\": [\n56: \"research-completion-abi\"\n57: ],\n58: \"effects\": [\n59: \"All node state/progress/flag/cost/availability/researched-turn/order words; tree order counter; capped spend and refund accumulator; idle-node decay; ordered cascade including conditional recursive zero-cost completions.\",\n60: \"RNG full state, left and next-index plus actual consumed words, including conditional completion rolls, Zuul second roll and research-event paths; W1 has zero words and proves no positive-draw branch.\",\n61: \"All applicable callback player floats, boolean/species/design-option masks, target and roll flags, node-bore storage and lifetimes. Existing WritePlayerState is not integration of the full research callback.\",\n62: \"ObservedTech full record name/first-last turn/detected/with fields, dedup/update, vector elements/header/capacity and compatible allocation/destruction. Scratch span growth is not an append implementation.\",\n63: \"Complete ordered event turn buckets, records, ids/nextId, text, image/action/location/position/chainId, dedup/pruning and allocation lifetimes; keyless count-only events cannot satisfy the save oracle.\",\n64: \"Conditional transitive system/ship AI/cap/addiction/plague changes, recursive Zuul grant, rebellion object allocation and cancellation must be implemented or rejected by approved preflight before mutation; TechApplyOutcome alone performs none of them.\",\n65: \"Observe downstream bankruptcy, repair and checksum consequences through full turn/save validation; never copy original post-state or patch expected derived leaves.\"\n66: ],\n67: \"id\": \"research-replacement\",\n68: \"inputs\": [\n69: \"W1 verify/results/saves/turn3-state.sav sha256 978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921; exact fresh-process LOAD route, one End Turn.\",\n70: \"Historical oracle verify/results/saves/cr/cr-oracle-endturn.sav sha256 e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f and cr-oracle-autosave.sav sha256 79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420; re-certify controls with current candidate inputs.\",\n71: \"Historical negative saves cr-replace0-autosave.sav sha256 6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5 and cr-replace1-autosave.sav sha256 8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235 under verify/results/saves/cr/.\",\n72: \"Raw historical evidence: verify/traces/cr-{N,R0,R1}.jsonl.gz; verify/results/compare/cr-{compare,replace0,replace1}.json; verify/results/shim/cr/cr-{N,R0,R1}.log. Historical build cr-618ccb1-20260909T131556Z does not identify the current candidate.\",\n73: \"Required but missing: operator-owned executable/proxy and tech graph/tuning/localized string assets with explicit paths, SHA-256, locale and load order; generated-address provenance; compiler/toolchain; exact candidate source-content and binary manifests.\",\n74: \"Runtime-only inputs include tree order counter, allocation entries/order, current turn, target and pending-roll flags, preexisting observed-tech and event elements, RNG state/index/left, full FPU CW, installed interception sites and LOAD/continuation route.\",\n75: \"W0 turn2-state.sav one End Turn is a no-completion regression control; pin hash and re-certify. W2 different-tech positive-RNG/second-completion workload remains to be selected and certified before expanding scope.\",\n76: \"Accepted static dependency research-completion-abi establishes record/container/string ABI only; live allocator safety, runtime construction and replacement acceptance remain absent.\"\n77: ],\n78: \"original_dependencies\": [\n79: \"Retained and counted original TechTree::Cost supplies effective and cascade costs; independent effective-cost replacement is excluded.\",\n80: \"Retained and counted original TechTree::HasResearched supplies common-tail/design-mask lookup; replacement owns resulting writes.\",\n81: \"Retained and counted ServerPlayer::UpdateNodeBoreParams runs in common-tail order and may allocate/free state; independent node-bore maintenance is excluded.\",\n82: \"Original MSVCR100 scalar new/delete and accepted copy/container ABI may be used only as a counted live memory bridge. Original RecordObservedTech, EventStorage::PostEvent and string lookup are forbidden displaced roots; localized text must come from manifested runtime assets.\",\n83: \"Shim workload retains original turn driver, budget allocation, remaining simulation, data loading and save serialization. Successful scoped shim replacement would not establish independent standalone turn parity.\"\n84: ],\n85: \"owner\": {\n86: \"name\": \"Astra pilot architect\",\n87: \"role\": \"architecture-review\"\n88: },\n89: \"predictions\": [\n90: \"W1 owner order 32/496/512 with allocations 144:2898,90:0,9:0; exactly one completion and two null calls.\",\n91: \"Tech144 progress 5768->7500, state3->4, researched turn4/order22, counter22->23, unchanged flag; capped spend1732/refund1166; no RNG words.\",\n92: \"Tech132/136/142 become available turn4 at costs10000/16000/8000; observed-tech count10->11 with real element; event nextId5->7 with complete records.\",\n93: \"Existing R1 still fails by 16 leaves (independently reproduced); merely enabling cascade cannot close callback residuals. Runtime text assets may avoid original PostEvent but live adapter and policy are unresolved.\"\n94: ],\n95: \"scope\": [\n96: \"Planning only until ready: campaign/pilots/research-replacement.md is the detailed input, write-boundary and acceptance specification. No replacement code or lab operations authorized by this proposed contract.\",\n97: \"Target ProcessResearch plus SetResearched and required OnTechResearched effects for the W1 turn3 LOAD-to-turn4 completion; broad research correctness is not implied.\",\n98: \"The accepted static ABI dependency does not authorize live wiring. First accept a separately contracted live record bridge; then assign one complete W1 coordinator write set with baseline-pinned paired worktrees and exclusive source/build/VM ownership.\",\n99: \"Before implementation provide exact owned source paths, supported-input preflight, executable acceptance and immutable manifests. Uncommitted bootstrap changes are not bound by these HEAD IDs.\"\n100: ],\n101: \"status\": \"proposed\",\n102: \"stop_conditions\": [\n103: \"Remain proposed while readiness criterion, dependency decisions, input manifests and executable acceptance are missing; do not interpret narrative strings as execution proof.\",\n104: \"Stop on control disagreement, instrumentation mismatch, source/input drift, missing artifacts/assets, unknown RNG, unmodelled fired branch, unexpected writes, zero required execution or forbidden original fallback.\",\n105: \"Record any falsified assumption or changed scope as a surprise and obtain Astra resolution before affected work continues; checkpoint at 20 calls/15 minutes and before experiments, handoff or stop.\",\n106: \"No lab or shared-host mutation without explicit assignment and lease; no commits, staging, push or delegated work under the current pilot-design assignment.\"\n107: ],\n108: \"title\": \"Completion-bearing W1 research replacement pilot (proposed; live bridge, assets and runner pending)\"\n109: }\n\n(End of file - total 109 lines)\n","metadata":{"preview":"{\n \"acceptance\": [\n {\n \"axis\": \"planning\",\n \"criterion\": \"BLOCKED: accepted static ABI dependency is named and original-helper policy is fixed, but readiness still requires an accepted live-record-bridge contract, implemented tools/research_replacement.py interfaces from the pilot plan, required asset paths/hashes, W0 recertification, exact coordinator-owned paths and immutable source/binary/input manifests.\",\n \"id\": \"readiness\"\n },\n {\n \"axis\": \"implementation\",\n \"criterion\": \"Fresh full-profile source-bound host/assets/shim build; expected test identities and explicit positive executed workloads; no required missing input, unexpected skip or stale binary.\",\n \"id\": \"full-gate\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Two fresh C1/C2 hooks-off processes and candidate compare N on the exact W1 input/route produce identical pre/post save pairs; full installed-site manifests and per-call CW retained. Reject incomplete raw bundles or disagreement.\",\n \"id\": \"control-neutrality\"\n },\n {\n \"axis\": \"implementation\",\n \"criterion\": \"W1 replace executes exactly one tech-144 completion and three unlocks, two actual event records and one full observed-tech record, refund 1166 and primary player effects; original displaced roots bypassed, declared helpers counted; zero unsupported paths, unreadable inputs or failures.\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/contracts/research-replacement.json","text":"{\n \"acceptance\": [\n {\n \"axis\": \"planning\",\n \"criterion\": \"BLOCKED: accepted static ABI dependency is named and original-helper policy is fixed, but readiness still requires an accepted live-record-bridge contract, implemented tools/research_replacement.py interfaces from the pilot plan, required asset paths/hashes, W0 recertification, exact coordinator-owned paths and immutable source/binary/input manifests.\",\n \"id\": \"readiness\"\n },\n {\n \"axis\": \"implementation\",\n \"criterion\": \"Fresh full-profile source-bound host/assets/shim build; expected test identities and explicit positive executed workloads; no required missing input, unexpected skip or stale binary.\",\n \"id\": \"full-gate\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Two fresh C1/C2 hooks-off processes and candidate compare N on the exact W1 input/route produce identical pre/post save pairs; full installed-site manifests and per-call CW retained. Reject incomplete raw bundles or disagreement.\",\n \"id\": \"control-neutrality\"\n },\n {\n \"axis\": \"implementation\",\n \"criterion\": \"W1 replace executes exactly one tech-144 completion and three unlocks, two actual event records and one full observed-tech record, refund 1166 and primary player effects; original displaced roots bypassed, declared helpers counted; zero unsupported paths, unreadable inputs or failures.\",\n \"id\": \"positive-replace\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Require post-turn file-byte, inflated-byte and exact-bit unmasked state equality plus complete reader coverage and nonserialized order/RNG checks. Pre-turn resave equality, count-only regions and zero-execution passes cannot satisfy this criterion.\",\n \"id\": \"oracle\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Executable checker rejects archived R0's 27 and R1's 16 leaf differences, absent callback/event/ObservedTech writes, W0 as completion evidence, missing artifacts, wrong hashes, and unknown RNG reported as zero.\",\n \"id\": \"negative-controls\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Different verifier execution reproduces source/binary/input-bound package and a meaningful negative control; integrated-tree evidence is required before accepted. No author-only verdict or reporter --accept flag grants campaign acceptance.\",\n \"id\": \"independent-reproduction\"\n },\n {\n \"axis\": \"original_dependencies\",\n \"criterion\": \"Publish retained original helpers and W1-only scope separately. Require certified W2 and branch-specific original experiments plus synthetic boundaries before claiming RNG-consuming, other-effect-family, recursive, dedup, decay, plague or rebellion coverage.\",\n \"id\": \"coverage-and-dependencies\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-replacement-fc19e142bf1db96b10d29391.json\",\n \"dependencies\": [\n \"research-completion-abi\"\n ],\n \"effects\": [\n \"All node state/progress/flag/cost/availability/researched-turn/order words; tree order counter; capped spend and refund accumulator; idle-node decay; ordered cascade including conditional recursive zero-cost completions.\",\n \"RNG full state, left and next-index plus actual consumed words, including conditional completion rolls, Zuul second roll and research-event paths; W1 has zero words and proves no positive-draw branch.\",\n \"All applicable callback player floats, boolean/species/design-option masks, target and roll flags, node-bore storage and lifetimes. Existing WritePlayerState is not integration of the full research callback.\",\n \"ObservedTech full record name/first-last turn/detected/with fields, dedup/update, vector elements/header/capacity and compatible allocation/destruction. Scratch span growth is not an append implementation.\",\n \"Complete ordered event turn buckets, records, ids/nextId, text, image/action/location/position/chainId, dedup/pruning and allocation lifetimes; keyless count-only events cannot satisfy the save oracle.\",\n \"Conditional transitive system/ship AI/cap/addiction/plague changes, recursive Zuul grant, rebellion object allocation and cancellation must be implemented or rejected by approved preflight before mutation; TechApplyOutcome alone performs none of them.\",\n \"Observe downstream bankruptcy, repair and checksum consequences through full turn/save validation; never copy original post-state or patch expected derived leaves.\"\n ],\n \"id\": \"research-replacement\",\n \"inputs\": [\n \"W1 verify/results/saves/turn3-state.sav sha256 978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921; exact fresh-process LOAD route, one End Turn.\",\n \"Historical oracle verify/results/saves/cr/cr-oracle-endturn.sav sha256 e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f and cr-oracle-autosave.sav sha256 79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420; re-certify controls with current candidate inputs.\",\n \"Historical negative saves cr-replace0-autosave.sav sha256 6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5 and cr-replace1-autosave.sav sha256 8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235 under verify/results/saves/cr/.\",\n \"Raw historical evidence: verify/traces/cr-{N,R0,R1}.jsonl.gz; verify/results/compare/cr-{compare,replace0,replace1}.json; verify/results/shim/cr/cr-{N,R0,R1}.log. Historical build cr-618ccb1-20260909T131556Z does not identify the current candidate.\",\n \"Required but missing: operator-owned executable/proxy and tech graph/tuning/localized string assets with explicit paths, SHA-256, locale and load order; generated-address provenance; compiler/toolchain; exact candidate source-content and binary manifests.\",\n \"Runtime-only inputs include tree order counter, allocation entries/order, current turn, target and pending-roll flags, preexisting observed-tech and event elements, RNG state/index/left, full FPU CW, installed interception sites and LOAD/continuation route.\",\n \"W0 turn2-state.sav one End Turn is a no-completion regression control; pin hash and re-certify. W2 different-tech positive-RNG/second-completion workload remains to be selected and certified before expanding scope.\",\n \"Accepted static dependency research-completion-abi establishes record/container/string ABI only; live allocator safety, runtime construction and replacement acceptance remain absent.\"\n ],\n \"original_dependencies\": [\n \"Retained and counted original TechTree::Cost supplies effective and cascade costs; independent effective-cost replacement is excluded.\",\n \"Retained and counted original TechTree::HasResearched supplies common-tail/design-mask lookup; replacement owns resulting writes.\",\n \"Retained and counted ServerPlayer::UpdateNodeBoreParams runs in common-tail order and may allocate/free state; independent node-bore maintenance is excluded.\",\n \"Original MSVCR100 scalar new/delete and accepted copy/container ABI may be used only as a counted live memory bridge. Original RecordObservedTech, EventStorage::PostEvent and string lookup are forbidden displaced roots; localized text must come from manifested runtime assets.\",\n \"Shim workload retains original turn driver, budget allocation, remaining simulation, data loading and save serialization. Successful scoped shim replacement would not establish independent standalone turn parity.\"\n ],\n \"owner\": {\n \"name\": \"Astra pilot architect\",\n \"role\": \"architecture-review\"\n },\n \"predictions\": [\n \"W1 owner order 32/496/512 with allocations 144:2898,90:0,9:0; exactly one completion and two null calls.\",\n \"Tech144 progress 5768->7500, state3->4, researched turn4/order22, counter22->23, unchanged flag; capped spend1732/refund1166; no RNG words.\",\n \"Tech132/136/142 become available turn4 at costs10000/16000/8000; observed-tech count10->11 with real element; event nextId5->7 with complete records.\",\n \"Existing R1 still fails by 16 leaves (independently reproduced); merely enabling cascade cannot close callback residuals. Runtime text assets may avoid original PostEvent but live adapter and policy are unresolved.\"\n ],\n \"scope\": [\n \"Planning only until ready: campaign/pilots/research-replacement.md is the detailed input, write-boundary and acceptance specification. No replacement code or lab operations authorized by this proposed contract.\",\n \"Target ProcessResearch plus SetResearched and required OnTechResearched effects for the W1 turn3 LOAD-to-turn4 completion; broad research correctness is not implied.\",\n \"The accepted static ABI dependency does not authorize live wiring. First accept a separately contracted live record bridge; then assign one complete W1 coordinator write set with baseline-pinned paired worktrees and exclusive source/build/VM ownership.\",\n \"Before implementation provide exact owned source paths, supported-input preflight, executable acceptance and immutable manifests. Uncommitted bootstrap changes are not bound by these HEAD IDs.\"\n ],\n \"status\": \"proposed\",\n \"stop_conditions\": [\n \"Remain proposed while readiness criterion, dependency decisions, input manifests and executable acceptance are missing; do not interpret narrative strings as execution proof.\",\n \"Stop on control disagreement, instrumentation mismatch, source/input drift, missing artifacts/assets, unknown RNG, unmodelled fired branch, unexpected writes, zero required execution or forbidden original fallback.\",\n \"Record any falsified assumption or changed scope as a surprise and obtain Astra resolution before affected work continues; checkpoint at 20 calls/15 minutes and before experiments, handoff or stop.\",\n \"No lab or shared-host mutation without explicit assignment and lease; no commits, staging, push or delegated work under the current pilot-design assignment.\"\n ],\n \"title\": \"Completion-bearing W1 research replacement pilot (proposed; live bridge, assets and runner pending)\"\n}","lineStart":1,"lineEnd":109,"totalLines":109,"truncated":false}},"title":"campaign/contracts/research-replacement.json","time":{"start":1789045759978,"end":1789045760007}},"metadata":{"openai":{"itemId":"fc_0f800aba04d4ba9e016aa2abffb6c087d1a2eba4cde0e6e6b6"}},"id":"prt_08b6fdfe7001H5caRZvIhbnv1Z","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6fb3750010f32lloIx6nuIM"}} +{"type":"tool_use","timestamp":1789045760020,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"bash","callID":"call_kc9PHrPC3rxfZFtZRY7EGajT","state":{"status":"completed","input":{"command":"git -C /home/alex/sots-re diff --no-index -- campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.json"},"output":"diff --git a/campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json b/campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.json\nindex e25e941..e9ca2e7 100644\n--- a/campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json\n+++ b/campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.json\n@@ -1,16 +1,16 @@\n {\n- \"actor\": \"research-abi-correction-verifier\",\n- \"checkpoint_session\": \"run-d6c4dc15e9f4d15155fee856\",\n+ \"actor\": \"research-problem-resolver\",\n+ \"checkpoint_session\": \"run-481c9379a1efc0e527d2a28c\",\n \"command\": [\n \"opencode\",\n \"run\",\n \"--format\",\n \"json\",\n \"--model\",\n- \"openai/gpt-5.6-sol\",\n+ \"openai/gpt-6-astra\",\n \"--agent\",\n- \"sots-verifier\",\n- \"Start a FRESH bounded campaign quantum (40 steps). No delegation.\\nRole=verifier; requested model=openai/gpt-5.6-sol; actor=research-abi-correction-verifier; checkpoint session=run-d6c4dc15e9f4d15155fee856.\\nCanonical state root: /home/alex/sots-re\\nContract: /home/alex/sots-re/campaign/contracts/research-completion-abi.json\\nLatest checkpoint: campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\\nEngine worktree: /tmp/opencode/sots-final-research-engine\\nRE worktree: /tmp/opencode/sots-final-research-re\\nRead canonical campaign/README.md, contract, latest checkpoint and open surprises before work. Verify source/worktree/resource identities. Only edit owned scope. Missing state means blocked. Do not commit, stage, push or mutate lab resources without explicit authority and a lease. Checkpoint every 20 tool calls or 15 minutes, before experiments, compaction and stopping; persist under canonical campaign/ using tools/campaign.py with the session above, exact model, actor and role. Include observations versus decisions, source identities, artifact paths, tests, blockers and ONE exact next action. Fresh checkpoint at quantum end is mandatory. Record a surprise and pause affected work if assumptions are falsified. Workers cannot change architecture. Do not rely on chat resume or automatic compaction.\"\n+ \"sots-resolver\",\n+ \"Start a FRESH bounded campaign quantum (40 steps). No delegation.\\nRole=resolver; requested model=openai/gpt-6-astra; actor=research-problem-resolver; checkpoint session=run-481c9379a1efc0e527d2a28c.\\nCanonical state root: /home/alex/sots-re\\nContract: /home/alex/sots-re/campaign/contracts/research-completion-abi.json\\nLatest checkpoint: campaign/runtime/checkpoints/research-completion-abi-3fc22ea3c402274179ce4d1f.json\\nEngine worktree: /tmp/opencode/sots-final-research-engine\\nRE worktree: /tmp/opencode/sots-final-research-re\\nRead canonical campaign/README.md, contract, latest checkpoint and open surprises before work. Verify source/worktree/resource identities. Only edit owned scope. Missing state means blocked. Do not commit, stage, push or mutate lab resources without explicit authority and a lease. Checkpoint every 20 tool calls or 15 minutes, before experiments, compaction and stopping; persist under canonical campaign/ using tools/campaign.py with the session above, exact model, actor and role. Include observations versus decisions, source identities, artifact paths, tests, blockers and ONE exact next action. Fresh checkpoint at quantum end is mandatory. Record a surprise and pause affected work if assumptions are falsified. RESOLUTION-ONLY: read evidence, record decisions/checkpoints; no implementation or architecture source edits. Do not rely on chat resume or automatic compaction.\"\n ],\n \"config\": {\n \"canonical_files\": {\n@@ -24,25 +24,32 @@\n \"opencode.json\": \"027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99\"\n },\n \"effective\": {\n- \"agent_sha256\": \"468c1dace9725c494d826ac41a8ebd79b50387eaabd92161005c125f21ee8016\",\n- \"sha256\": \"ef16bed80451572986c1eae10b1bce128fb23bdfbdb2c315bb83faf1c2385937\"\n+ \"agent_sha256\": \"538b7262e3a21bba755e48cc1974eefb35bf710a5d23dde6d05fedb73250b7a0\",\n+ \"sha256\": \"b991546a31472fa41788ec79102f8cf5165ebc45f43dbf2ccf848a13c01c727e\"\n },\n- \"expanded_prompt_sha256\": \"3ba305b39b9c1925acd4652dfda1792fe337ef9f7194b7da9a036e237571de9f\",\n+ \"expanded_prompt_sha256\": \"75226903f94e211868d70015e18e88cc3e3d338111743753bcd8a0f35e13e317\",\n \"overlay\": {\n \"agent\": {\n- \"sots-verifier\": {\n- \"model\": \"openai/gpt-5.6-sol\",\n+ \"sots-resolver\": {\n+ \"model\": \"openai/gpt-6-astra\",\n \"permission\": {\n- \"bash\": \"allow\",\n+ \"bash\": {\n+ \"*\": \"deny\",\n+ \"git -C * diff *\": \"allow\",\n+ \"git -C * log *\": \"allow\",\n+ \"git -C * rev-parse *\": \"allow\",\n+ \"git -C * show *\": \"allow\",\n+ \"git -C * status *\": \"allow\",\n+ \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re checkpoint *\": \"allow\",\n+ \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re resolve *\": \"allow\",\n+ \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re status *\": \"allow\",\n+ \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re surprise *\": \"allow\",\n+ \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re validate *\": \"allow\"\n+ },\n \"edit\": {\n- \"*\": \"allow\",\n- \"*/sots-engine*/src/*\": \"deny\",\n- \"*AGENTS.md\": \"deny\",\n- \"*campaign/agents/*\": \"deny\",\n- \"*campaign/models.json\": \"deny\",\n- \"*docs/architecture.md\": \"deny\",\n- \"*guides/multi-agent-workflow.md\": \"deny\",\n- \"*opencode.json\": \"deny\"\n+ \"*\": \"deny\",\n+ \"/home/alex/sots-re/campaign/contracts/*\": \"allow\",\n+ \"/home/alex/sots-re/campaign/runtime/*\": \"allow\"\n },\n \"external_directory\": {\n \"*\": \"deny\",\n@@ -60,22 +67,22 @@\n \"read\": \"allow\",\n \"task\": \"deny\"\n },\n- \"prompt\": \"You are the independent SOTS verifier, a separate execution from the implementation author.\\nRead canonical RE AGENTS.md, campaign/README.md, the contract, raw evidence and checkpoint.\\nChallenge the interpretation, boundary and instrument, not just the implementation syntax.\\nBefore coding starts define falsifiers, required branch exposures and distinct states. Afterward\\nreproduce from the handoff alone and challenge at least one assumption with a held-out workload,\\nboundary, negative control or ablation. Check actual state/RNG independently of reported counters.\\n\\nReject missing/invalid inputs, zero execution, unexpected skips, truncated coverage, stale binary\\nidentity and self-certified evidence. Separate original-assisted, partial compare, full compare,\\nindependent replacement and integrated replay. Whole-state equality on one workload has that\\nworkload's scope. Record failed predictions and residuals without converting them into success.\\n\\nOwn verification artifacts only; no edits to implementation to make tests pass, architecture\\nchanges, delegates, shared status or unleased lab actions. Plan-changing surprises require Astra.\\nCheckpoint every 20 calls/15min and before compaction, experiments, handoff/stop. Finish each\\n40-step quantum with reproduction commands/results and exact next action in canonical RE.\\n\",\n+ \"prompt\": \"You are the SOTS resolver, running GPT-6 Astra. Read canonical RE AGENTS.md, campaign/README.md,\\nthe surprise, affected contracts, checkpoints and raw evidence. First state the observation and\\nits provenance. Check source/binary/input identity, positive execution and instrument neutrality\\nbefore interpreting game behavior. Do not diagnose a stale build as a game mechanism.\\n\\nFor every affected claim record survives / qualified / overturned and exact domain. Name the\\ncheapest discriminating experiment, revised scope/dependencies and affected evidence that must\\nbe invalidated. Resolve through campaign controls with a durable Astra decision. Never silently\\nwaive acceptance or treat untested inference as measurement. Leave blocked work blocked until\\nthe decision supplies a valid next action. No autonomous lab mutation or nested delegation.\\n\\nCheckpoint every 20 calls/15min and before compaction, handoff or stop. Use short bounded sessions;\\nthe repository carries decisions, not chat memory. Do not create another explanatory history in\\nthe live board: link the actual decision and regenerate projections after integration.\\n\",\n \"steps\": 40\n }\n },\n- \"model\": \"openai/gpt-5.6-sol\"\n+ \"model\": \"openai/gpt-6-astra\"\n },\n \"path\": \"/home/alex/sots-re/opencode.json\",\n \"sha256\": \"027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99\"\n },\n \"contract\": \"research-completion-abi\",\n \"cwd\": \"/tmp/opencode/sots-final-research-re\",\n- \"id\": \"run-d6c4dc15e9f4d15155fee856\",\n+ \"id\": \"run-481c9379a1efc0e527d2a28c\",\n \"max_steps\": 40,\n- \"requested_model\": \"openai/gpt-5.6-sol\",\n- \"resolution_only\": false,\n- \"role\": \"verifier\",\n+ \"requested_model\": \"openai/gpt-6-astra\",\n+ \"resolution_only\": true,\n+ \"role\": \"resolver\",\n \"schema\": \"sots-run/1\",\n \"source_before\": {\n \"engine\": {\n@@ -2190,11 +2197,11 @@\n },\n \"AGENTS.md\": {\n \"mode\": 420,\n- \"sha256\": \"e722b65480a9f72c2fde1c677c789d4f4b347ef9b450894e9f4295035373df7a\"\n+ \"sha256\": \"ac21cfb98c6cc2f666c7237967ee71315b4787557e936072548e4e6934a8d9fd\"\n },\n \"CLAUDE.md\": {\n \"mode\": 420,\n- \"sha256\": \"b3e3e5851645a05543e91f128eb6d349abdc6f22accfd997012526e4d35eaa8e\"\n+ \"sha256\": \"65cc9d5f028959a7d9b53c4828778b27217eb04f37f55b08e6aa3e40afb60a4a\"\n },\n \"README.md\": {\n \"mode\": 420,\n@@ -2202,11 +2209,7 @@\n },\n \"campaign/DASHBOARD.md\": {\n \"mode\": 420,\n- \"sha256\": \"eb207987006a3a661bf05b24fc361e1dda74b7a7f42f4abf4a3788cb17a254e6\"\n- },\n- \"campaign/README.md\": {\n- \"mode\": 420,\n- \"sha256\": \"dc702a81c2c664c07eb170f082deb65bc3ff24e2b80d892bb082c7c4feac64fd\"\n+ \"sha256\": \"c5f72f13d38ad96b5a30131b09c20300743d0d1e15357fd249eac9793759026d\"\n },\n \"campaign/agents/analyst.md\": {\n \"mode\": 420,\n@@ -2222,7 +2225,7 @@\n },\n \"campaign/agents/lead.md\": {\n \"mode\": 420,\n- \"sha256\": \"7661bbfca972be50a52c735b7f15f5be740158542c3d0cdbdf9a6a2590c7f1ea\"\n+ \"sha256\": \"8fcfe52be845ed98a172afb47ea888b19bb7bffa80f7b50ace58d2bb66924220\"\n },\n \"campaign/agents/resolver.md\": {\n \"mode\": 420,\n@@ -2234,155 +2237,23 @@\n },\n \"campaign/backlog.md\": {\n \"mode\": 420,\n- \"sha256\": \"a10edaae044e84ee4d26e7461b88e557112f572d60c57e0025171a53dd209a35\"\n+ \"sha256\": \"ee123405f92be97d36d86420707d3d60c67cb4ad50165491bc6e12b8dacf3b6f\"\n },\n \"campaign/board.md\": {\n \"mode\": 420,\n- \"sha256\": \"040c12a20f5bf70b8e6a239efb205039d1ce00a805411ba194a12bde9f40c03e\"\n+ \"sha256\": \"1c256d6e39063609ba89745d2931ad5005223da89ddbe9fda2d782b88d5acdd2\"\n },\n \"campaign/contract.schema.json\": {\n \"mode\": 420,\n \"sha256\": \"a2c76ec042ca097a57c3c05c1e519e392d498d387a31808c7d0f70482d43c201\"\n },\n- \"campaign/contracts/controls-bootstrap.json\": {\n- \"mode\": 384,\n- \"sha256\": \"2943d2281229c102dd612676428a9714510e540671c1e04dae3e6fa7ea1b56ab\"\n- },\n- \"campaign/contracts/launcher-smoke.json\": {\n- \"mode\": 384,\n- \"sha256\": \"c0418dd22bafc321b2f800acaf574dca7956c37b239d789981b920d50ab36599\"\n- },\n- \"campaign/contracts/research-completion-abi.json\": {\n- \"mode\": 420,\n- \"sha256\": \"a5cf5e4bbc5052aa13dc34b55ee65f2997f9342e0b01062e85ad2c16d99daf71\"\n- },\n- \"campaign/contracts/research-replacement.json\": {\n- \"mode\": 420,\n- \"sha256\": \"1108d30bf7e28f30b2446014503fc3200a8b8198a8fab0b866b873a81bf7b8b9\"\n- },\n- \"campaign/current.json\": {\n- \"mode\": 384,\n- \"sha256\": \"87661aaf5ddfbb872365dae8c531453a1e0cb7f91b3ada046be3e829d2555f77\"\n- },\n \"campaign/models.json\": {\n \"mode\": 420,\n- \"sha256\": \"95f507237a8e4fcf14189da4aa102dfae1dbaa536d4d8db6bcbfc30162ac5443\"\n+ \"sha256\": \"00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48\"\n },\n \"campaign/open-questions.md\": {\n \"mode\": 420,\n- \"sha256\": \"efb1c736a07bff32e75e0eede20681c206e2c95f439dffe9824702cb864972e7\"\n- },\n- \"campaign/pilots/research-replacement.md\": {\n- \"mode\": 420,\n- \"sha256\": \"3101b8959f28ba2c6ffbac02a82b5ae0e841e7d78bd1f40f05b9d1d2278490ad\"\n- },\n- \"campaign/research/SESSION.md\": {\n- \"mode\": 420,\n- \"sha256\": \"258a2884486ee777fbd8ff180abf23a3a320b2981ee1e90b57d4e3efe18643f2\"\n- },\n- \"campaign/rollout/RESULT.md\": {\n- \"mode\": 420,\n- \"sha256\": \"87aba912d66e2f7bd9779f86cbae3c78d64b1be2572db02ac39fc70c750cb79c\"\n- },\n- \"campaign/rollout/architecture-decision.md\": {\n- \"mode\": 420,\n- \"sha256\": \"8c710f390671500386745d063d6cb6edb175e6e26572286334d2f14a36be6d41\"\n- },\n- \"campaign/rollout/controls-followup.md\": {\n- \"mode\": 420,\n- \"sha256\": \"44d0c95978cbc0953d6b1feab4463b29fab68c9d8dad2eca5fd562bb5aee1578\"\n- },\n- \"campaign/rollout/controls-worker-state.md\": {\n- \"mode\": 420,\n- \"sha256\": \"02ff66f3f0fa978819e5c100e24cfd3752b9041590e2aed36f6abd62ce790f4e\"\n- },\n- \"campaign/rollout/controls-worker.md\": {\n- \"mode\": 420,\n- \"sha256\": \"d022483618d3c3412785ba40e71106976c9b1c9978c43e424e3023a67b8b3f0f\"\n- },\n- \"campaign/rollout/controls_evidence.py\": {\n- \"mode\": 420,\n- \"sha256\": \"bfaf4e523b2ca39c0ecdab94adf0b2b19a3da68aab8a0fcba69a613aed46588a\"\n- },\n- \"campaign/rollout/engine-followup.md\": {\n- \"mode\": 420,\n- \"sha256\": \"d3d289fb4e4cfb7cf1ab6c3de597f530eafd27d3b1aa2f3e8904d6da3a95ac44\"\n- },\n- \"campaign/rollout/engine-worker-state.md\": {\n- \"mode\": 420,\n- \"sha256\": \"76601fa42c95bd7d78ce46f528a33ef0483e0b7f2e19a1cfe1cab8e560bed05c\"\n- },\n- \"campaign/rollout/engine-worker.md\": {\n- \"mode\": 420,\n- \"sha256\": \"fd8bbe69947b69baa61449548d5746723c941ad8b663ec66d1b278234bebe5b2\"\n- },\n- \"campaign/rollout/formal-verifier-state.md\": {\n- \"mode\": 420,\n- \"sha256\": \"2fbac02f5f22b45e94ee33f9f53779fa059c5e93282d3c2f5ad0af027029a1f4\"\n- },\n- \"campaign/rollout/formal-verifier.md\": {\n- \"mode\": 420,\n- \"sha256\": \"f961ceaef0037001e6576d760e28e7aded0502f3d8311925e5ed1cc537c996dc\"\n- },\n- \"campaign/rollout/gate-followup.md\": {\n- \"mode\": 420,\n- \"sha256\": \"677f17aef214e7a6c92958dd8ad98137b238cc7fe7c1da23bcf36d727f28f7c8\"\n- },\n- \"campaign/rollout/gate-worker-state.md\": {\n- \"mode\": 420,\n- \"sha256\": \"96514befccc589487ac3b6ff9348106aca2e4e8e3aa348471943d589c74629e2\"\n- },\n- \"campaign/rollout/gate-worker.md\": {\n- \"mode\": 420,\n- \"sha256\": \"55db7c5f637d849fb2f200ab12c35a794c86e377a5de3f562b1c32455583e65f\"\n- },\n- \"campaign/rollout/housekeeping-completion.md\": {\n- \"mode\": 420,\n- \"sha256\": \"a25041ebaeb030f1cfc62564b5bc57a98818ea75e082f28036e9cc367096ccd1\"\n- },\n- \"campaign/rollout/housekeeping-followup.md\": {\n- \"mode\": 420,\n- \"sha256\": \"5759aaf403c019173450822dc5e9d4aad711a7497eba906caea39bdb39bd3702\"\n- },\n- \"campaign/rollout/housekeeping-worker-state.md\": {\n- \"mode\": 420,\n- \"sha256\": \"5ee9a48a691709af325994fd3d44a1ac6e40d05f26e09b03ae7efec2ecbe25cc\"\n- },\n- \"campaign/rollout/housekeeping-worker.md\": {\n- \"mode\": 420,\n- \"sha256\": \"bab8219fadd0688e91d6211478a01403a36ae74fd2b6f7df0ad5c8745a542ca9\"\n- },\n- \"campaign/rollout/independent-review.md\": {\n- \"mode\": 420,\n- \"sha256\": \"a7a8ebcce5202db0e67c8c65135df751e69ee6728c4c2ced92e1cc85b4279f22\"\n- },\n- \"campaign/rollout/lead-state.md\": {\n- \"mode\": 420,\n- \"sha256\": \"3ded5b3f97d7882f72abef5ea268765a5db29c8b619486c153f5c92742040c01\"\n- },\n- \"campaign/rollout/publishing-worker-state.md\": {\n- \"mode\": 420,\n- \"sha256\": \"641977e4d0ec400a3a6c38121ae5e7904aa1accc47179ee148ad7cb199029b0e\"\n- },\n- \"campaign/rollout/publishing-worker.md\": {\n- \"mode\": 420,\n- \"sha256\": \"822812fbc803d443fb7e0855268c34224eda29f95e57274c217275b09ff4410f\"\n- },\n- \"campaign/rollout/review-followup.md\": {\n- \"mode\": 420,\n- \"sha256\": \"853e3b5aab09cd77fd54cae6d8a61fb5ae092603ab2be8dee2db6d80492a6443\"\n- },\n- \"campaign/rollout/review-worker-state.md\": {\n- \"mode\": 420,\n- \"sha256\": \"a704e6023eaf3424761bf431e49687ae1f1d687119fe00a466b9da2d9ef7bd42\"\n- },\n- \"campaign/rollout/review-worker.md\": {\n- \"mode\": 420,\n- \"sha256\": \"0e348015440aabef95766010f14880619d34a472102698c9819dfbb029b8a6c8\"\n- },\n- \"campaign/rollout/sync_verifier_snapshot.py\": {\n- \"mode\": 420,\n- \"sha256\": \"4133e536bfdb0e206ecdfc072062e7674b07b973c7f8b9d7f1a268520523d6eb\"\n+ \"sha256\": \"bafe95db6591d87a2bd7c67831c34a993afbfd61e9f75357625763dec25fe134\"\n },\n \"findings/.keep.md\": {\n \"mode\": 420,\n@@ -3118,7 +2989,7 @@\n },\n \"guides/multi-agent-workflow.md\": {\n \"mode\": 420,\n- \"sha256\": \"f5bf0c30c12a3a9e1725549fe000be0105d415ca25b120673a780901148f08da\"\n+ \"sha256\": \"116ccaa9be9523852d02ee7c78c7f1d587c1ed6270789afca42e687ea826af5b\"\n },\n \"guides/re-windows-2000s-howto.md\": {\n \"mode\": 420,\n@@ -3154,7 +3025,7 @@\n },\n \"opencode.json\": {\n \"mode\": 420,\n- \"sha256\": \"d24be7fcee57d5eb04c6b7189822a2ca055dd4a70daafbea67f09a120945d49f\"\n+ \"sha256\": \"027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99\"\n },\n \"scripts/.keep.md\": {\n \"mode\": 420,\n@@ -3179,11 +3050,11 @@\n },\n \"tools/campaign.py\": {\n \"mode\": 420,\n- \"sha256\": \"c7b7c7a30d907bba8e59386dee8704d7f3f5e978fcf709b686e37996fa465c31\"\n+ \"sha256\": \"a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123\"\n },\n \"tools/check_agent_config.py\": {\n \"mode\": 420,\n- \"sha256\": \"93115532cb38105777a5c5c20a9f2a808043370e0d4f560a9c82fe8e800076ec\"\n+ \"sha256\": \"8cb42d8de9cc441b547a00aecc7bfbc3619667121b30e150fec9e6c94683beb0\"\n },\n \"tools/dashboard.py\": {\n \"mode\": 420,\n@@ -3244,7 +3115,7 @@\n },\n \"tools/run_agent.py\": {\n \"mode\": 420,\n- \"sha256\": \"0f5ccb53dcde59b64fe999768737b6cbd2dabcc1272e5605c1f1ecd86e5d5d2b\"\n+ \"sha256\": \"818097896b2e29dbdd2f53d37261236af302178ecd0ee083a3184a7bc33ff152\"\n },\n \"tools/select_evidence.py\": {\n \"mode\": 420,\n@@ -3310,13 +3181,9 @@\n \"mode\": 420,\n \"sha256\": \"a05a42d63813d2025a4da65bdd684e82a89c95c52901a8f490391e31c49a122e\"\n },\n- \"verify/campaign/test_controls.py\": {\n- \"mode\": 420,\n- \"sha256\": \"108460f4e90c4cb7036642e85de581e31fd70c478533c32364691260461814fc\"\n- },\n \"verify/config/test_agent_config.py\": {\n \"mode\": 420,\n- \"sha256\": \"e60ee546672da91de08ca8fdd5d563b5f1207d0a865adf935017e06bf437585b\"\n+ \"sha256\": \"8a7a406f062c3387ec5b99b35f3befb64f676efef174047060c967074545e3e3\"\n },\n \"verify/config/test_source_check.py\": {\n \"mode\": 420,\n@@ -3882,26 +3749,6 @@\n \"mode\": 420,\n \"sha256\": \"8f86707f26f30638097c85f0db6df219adbfebac4e9ec24f1feb8bfce112d4f2\"\n },\n- \"verify/results/housekeeping/vm140-result.json\": {\n- \"mode\": 420,\n- \"sha256\": \"2250b02342f5c02ba5464cb4656543c6366dec098fbc948006600896ac9254c0\"\n- },\n- \"verify/results/housekeeping/vm141-result.json\": {\n- \"mode\": 420,\n- \"sha256\": \"03d92ffd2947b2f0c058e5c613e04567cffee45be456aece6d771b789f32fb93\"\n- },\n- \"verify/results/housekeeping/vm144-result.json\": {\n- \"mode\": 420,\n- \"sha256\": \"ace15320f7e60995a68f2c9c03a5a44159ae2d64fa273d34d38e285d313a0393\"\n- },\n- \"verify/results/housekeeping/vm145-result.json\": {\n- \"mode\": 420,\n- \"sha256\": \"768666178bf2910a2ff026351727b5cc96e48df70e1ba012031d34eafc95ad7a\"\n- },\n- \"verify/results/housekeeping/vm146-result.json\": {\n- \"mode\": 420,\n- \"sha256\": \"eebb306a3ec8533abae6dfd59f127c48effe9f21107e0c5c09c751108e77bb97\"\n- },\n \"verify/results/multiplayer/l2-combat-hud-client.png\": {\n \"mode\": 420,\n \"sha256\": \"02c86592531ab2889a0eae04e44a644d33c754096fe60aca6640068a7a3f421f\"\n@@ -5203,14 +5050,12 @@\n \"sha256\": \"d94c635105a75a68cb811a3881faf371678c075d240998f48fcf348b8459063f\"\n }\n },\n- \"manifest_sha256\": \"b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4\",\n+ \"manifest_sha256\": \"e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9\",\n \"path\": \"/tmp/opencode/sots-final-research-re\"\n }\n },\n- \"ended_at\": \"2026-09-10T12:59:19+00:00\",\n- \"error\": \"host interrupted by Windows Update after durable checkpoint and surprise; no child process survived\",\n- \"started_at\": \"2026-09-10T05:23:06.116970+00:00\",\n- \"status\": \"incomplete\",\n+ \"started_at\": \"2026-09-10T13:07:42.991422+00:00\",\n+ \"status\": \"running\",\n \"worktrees\": {\n \"engine\": \"/tmp/opencode/sots-final-research-engine\",\n \"re\": \"/tmp/opencode/sots-final-research-re\"\n","metadata":{"output":"diff --git a/campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json b/campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.json\nindex e25e941..e9ca2e7 100644\n--- a/campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json\n+++ b/campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.json\n@@ -1,16 +1,16 @@\n {\n- \"actor\": \"research-abi-correction-verifier\",\n- \"checkpoint_session\": \"run-d6c4dc15e9f4d15155fee856\",\n+ \"actor\": \"research-problem-resolver\",\n+ \"checkpoint_session\": \"run-481c9379a1efc0e527d2a28c\",\n \"command\": [\n \"opencode\",\n \"run\",\n \"--format\",\n \"json\",\n \"--model\",\n- \"openai/gpt-5.6-sol\",\n+ \"openai/gpt-6-astra\",\n \"--agent\",\n- \"sots-verifier\",\n- \"Start a FRESH bounded campaign quantum (40 steps). No delegation.\\nRole=verifier; requested model=openai/gpt-5.6-sol; actor=research-abi-correction-verifier; checkpoint session=run-d6c4dc15e9f4d15155fee856.\\nCanonical state root: /home/alex/sots-re\\nContract: /home/alex/sots-re/campaign/contracts/research-completion-abi.json\\nLatest checkpoint: campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\\nEngine worktree: /tmp/opencode/sots-final-research-engine\\nRE worktree: /tmp/opencode/sots-final-research-re\\nRead canonical campaign/README.md, contract, latest checkpoint and open surprises before work. Verify source/worktree/resource identities. Only edit owned scope. Missing state means blocked. Do not commit, stage, push or mutate lab resources without explicit authority and a lease. Checkpoint every 20 tool calls or 15 minutes, before experiments, compaction and stopping; persist under canonical campaign/ using tools/campaign.py with the session above, exact model, actor and role. Include observations versus decisions, source identities, artifact paths, tests, blockers and ONE exact next action. Fresh checkpoint at quantum end is mandatory. Record a surprise and pause affected work if assumptions are falsified. Workers cannot change architecture. Do not rely on chat resume or automatic compaction.\"\n+ \"sots-resolver\",\n+ \"Start a FRESH bounded campaign quantum (40 steps). No delegation.\\nRole=resolver; requested model=openai/gpt-6-astra; actor=research-problem-resolver; checkpoint session=run-481c9379a1efc0e527d2a28c.\\nCanonical state root: /home/alex/sots-re\\nContract: /home/alex/sots-re/campaign/contracts/research-completion-abi.json\\nLatest checkpoint: campaign/runtime/checkpoints/research-completion-abi-3fc22ea3c402274179ce4d1f.json\\nEngine worktree: /tmp/opencode/sots-final-research-engine\\nRE worktree: /tmp/opencode/sots-final-research-re\\nRead canonical campaign/README.md, contract, latest checkpoint and open surprises before work. Verify source/worktree/resource identities. Only edit owned scope. Missing state means blocked. Do not commit, stage, push or mutate lab resources without explicit authority and a lease. Checkpoint every 20 tool calls or 15 minutes, before experiments, compaction and stopping; persist under canonical campaign/ using tools/campaign.py with the session above, exact model, actor and role. Include observations versus decisions, source identities, artifact paths, tests, blockers and ONE exact next action. Fresh checkpoint at quantum end is mandatory. Record a surprise and pause affected work if assumptions are falsified. RESOLUTION-ONLY: read evidence, record decisions/checkpoints; no implementation or architecture source edits. Do not rely on chat resume or automatic compaction.\"\n ],\n \"config\": {\n \"canonical_files\": {\n@@ -24,25 +24,32 @@\n \"opencode.json\": \"027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99\"\n },\n \"effective\": {\n- \"agent_sha256\": \"468c1dace9725c494d826ac41a8ebd79b50387eaabd92161005c125f21ee8016\",\n- \"sha256\": \"ef16bed80451572986c1eae10b1bce128fb23bdfbdb2c315bb83faf1c2385937\"\n+ \"agent_sha256\": \"538b7262e3a21bba755e48cc1974eefb35bf710a5d23dde6d05fedb73250b7a0\",\n+ \"sha256\": \"b991546a31472fa41788ec79102f8cf5165ebc45f43dbf2ccf848a13c01c727e\"\n },\n- \"expanded_prompt_sha256\": \"3ba305b39b9c1925acd4652dfda1792fe337ef9f7194b7da9a036e237571de9f\",\n+ \"expanded_prompt_sha256\": \"75226903f94e211868d70015e18e88cc3e3d338111743753bcd8a0f35e13e317\",\n \"overlay\": {\n \"agent\": {\n- \"sots-verifier\": {\n- \"model\": \"openai/gpt-5.6-sol\",\n+ \"sots-resolver\": {\n+ \"model\": \"openai/gpt-6-astra\",\n \"permission\": {\n- \"bash\": \"allow\",\n+ \"bash\": {\n+ \"*\": \"deny\",\n+ \"git -C * diff *\": \"allow\",\n+ \"git -C * log *\": \"allow\",\n+ \"git -C * rev-parse *\": \"allow\",\n+ \"git -C * show *\": \"allow\",\n+ \"git -C * status *\": \"allow\",\n+ \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re checkpoint *\": \"allow\",\n+ \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re resolve *\": \"allow\",\n+ \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re status *\": \"allow\",\n+ \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re surprise *\": \"allow\",\n+ \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re validate *\": \"allow\"\n+ },\n \"edit\": {\n- \"*\": \"allow\",\n- \"*/sots-engine*/src/*\": \"deny\",\n- \"*AGENTS.md\": \"deny\",\n- \"*campaign/agents/*\": \"deny\",\n- \"*campaign/models.json\": \"deny\",\n- \"*docs/architecture.md\": \"deny\",\n- \"*guides/multi-agent-workflow.md\": \"deny\",\n- \"*opencode.json\": \"deny\"\n+ \"*\": \"deny\",\n+ \"/home/alex/sots-re/campaign/contracts/*\": \"allow\",\n+ \"/home/alex/sots-re/campaign/runtime/*\": \"allow\"\n },\n \"external_directory\": {\n \"*\": \"deny\",\n@@ -60,22 +67,22 @@\n \"read\": \"allow\",\n \"task\": \"deny\"\n },\n- \"prompt\": \"You are the independent SOTS verifier, a separate execution from the implementation author.\\nRead canonical RE AGENTS.md, campaign/README.md, the contract, raw evidence and checkpoint.\\nChallenge the interpretation, boundary and instrument, not just the implementation syntax.\\nBefore coding starts define falsifiers, required branch exposures and distinct states. Afterward\\nreproduce from the handoff alone and challenge at least one assumption with a held-out workload,\\nboundary, negative control or ablation. Check actual state/RNG independently of reported counters.\\n\\nReject missing/invalid inputs, zero execution, unexpected skips, truncated coverage, stale binary\\nidentity and self-certified evidence. Separate original-assisted, partial compare, full compare,\\nindependent replacement and integrated replay. Whole-state equality on one workload has that\\nworkload's scope. Record failed predictions and residuals without converting them into success.\\n\\nOwn verification artifacts only; no edits to implementation to make tests pass, architecture\\nchanges, delegates, shared status or unleased lab actions. Plan-changing surprises require Astra.\\nCheckpoint every 20 calls/15min and before compaction, experiments, handoff/stop. Finish each\\n40-step quantum with reproduction commands/results and exact next action in canonical RE.\\n\",\n+ \"prompt\": \"You are the SOTS resolver, running GPT-6 Astra. Read canonical RE AGENTS.md, campaign/README.md,\\nthe surprise, affected contracts, checkpoints and raw evidence. First state the observation and\\nits provenance. Check source/binary/input identity, positive execution and instrument neutrality\\nbefore interpreting game behavior. Do not diagnose a stale build as a game mechanism.\\n\\nFor every affected claim record survives / qualified / overturned and exact domain. Name the\\ncheapest discriminating experiment, revised scope/dependencies and affected evidence that must\\nbe invalidated. Resolve through campaign controls with a durable Astra decision. Never silently\\nwaive acceptance or treat untested inference as measurement. Leave blocked work blocked until\\nthe decision supplies a valid next action. No autonomous lab mutation or nested delegation.\\n\\nCheckpoint every 20 calls/15min and before compaction, handoff or stop. Use short bounded sessions;\\nthe repository carries decisions, not chat memory. Do not create another explanatory history in\\nthe live board: link the actual decision and regenerate projections after integration.\\n\",\n \"steps\": 40\n }\n },\n- \"model\": \"openai/gpt-5.6-sol\"\n+ \"model\": \"openai/gpt-6-astra\"\n },\n \"path\": \"/home/alex/sots-re/opencode.json\",\n \"sha256\": \"027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99\"\n },\n \"contract\": \"research-completion-abi\",\n \"cwd\": \"/tmp/opencode/sots-final-research-re\",\n- \"id\": \"run-d6c4dc15e9f4d15155fee856\",\n+ \"id\": \"run-481c9379a1efc0e527d2a28c\",\n \"max_steps\": 40,\n- \"requested_model\": \"openai/gpt-5.6-sol\",\n- \"resolution_only\": false,\n- \"role\": \"verifier\",\n+ \"requested_model\": \"openai/gpt-6-astra\",\n+ \"resolution_only\": true,\n+ \"role\": \"resolver\",\n \"schema\": \"sots-run/1\",\n \"source_before\": {\n \"engine\": {\n@@ -2190,11 +2197,11 @@\n },\n \"AGENTS.md\": {\n \"mode\": 420,\n- \"sha256\": \"e722b65480a9f72c2fde1c677c789d4f4b347ef9b450894e9f4295035373df7a\"\n+ \"sha256\": \"ac21cfb98c6cc2f666c7237967ee71315b4787557e936072548e4e6934a8d9fd\"\n },\n \"CLAUDE.md\": {\n \"mode\": 420,\n- \"sha256\": \"b3e3e5851645a05543e91f128eb6d349abdc6f22accfd997012526e4d35eaa8e\"\n+ \"sha256\": \"65cc9d5f028959a7d9b53c4828778b27217eb04f37f55b08e6aa3e40afb60a4a\"\n },\n \"README.md\": {\n \"mode\": 420,\n@@ -2202,11 +2209,7 @@\n },\n \"campaign/DASHBOARD.md\": {\n \"mode\": 420,\n- \"sha256\": \"eb207987006a3a661bf05b24fc361e1dda74b7a7f42f4abf4a3788cb17a254e6\"\n- },\n- \"campaign/README.md\": {\n- \"mode\": 420,\n- \"sha256\": \"dc702a81c2c664c07eb170f082deb65bc3ff24e2b80d892bb082c7c4feac64fd\"\n+ \"sha256\": \"c5f72f13d38ad96b5a30131b09c20300743d0d1e15357fd249eac9793759026d\"\n },\n \"campaign/agents/analyst.md\": {\n \"mode\": 420,\n@@ -2222,7 +2225,7 @@\n },\n \"campaign/agents/lead.md\": {\n \"mode\": 420,\n- \"sha256\": \"7661bbfca972be50a52c735b7f15f5be740158542c3d0cdbdf9a6a2590c7f1ea\"\n+ \"sha256\": \"8fcfe52be845ed98a172afb47ea888b19bb7bffa80f7b50ace58d2bb66924220\"\n },\n \"campaign/agents/resolver.md\": {\n \"mode\": 420,\n@@ -2234,155 +2237,23 @@\n },\n \"campaign/backlog.md\": {\n \"mode\": 420,\n- \"sha256\": \"a10edaae044e84ee4d26e7461b88e557112f572d60c57e0025171a53dd209a35\"\n+ \"sha256\": \"ee123405f92be97d36d86420707d3d60c67cb4ad50165491bc6e12b8dacf3b6f\"\n },\n \"campaign/board.md\": {\n \"mode\": 420,\n- \"sha256\": \"040c12a20f5bf70b8e6a239efb205039d1ce00a805411ba194a12bde9f40c03e\"\n+ \"sha256\": \"1c256d6e39063609ba89745d2931ad5005223da89ddbe9fda2d782b88d5acdd2\"\n },\n \"campaign/contract.schema.json\": {\n \"mode\": 420,\n \"sha256\": \"a2c76ec042ca097a57c3c05c1e519e392d498d387a31808c7d0f70482d43c201\"\n },\n- \"campaign/contracts/controls-bootstrap.json\": {\n- \"mode\": 384,\n- \"sha256\": \"2943d2281229c102dd612676428a9714510e540671c1e04dae3e6fa7ea1b56ab\"\n- },\n- \"campaign/contracts/launcher-smoke.json\": {\n- \"mode\": 384,\n- \"sha256\": \"c0418dd22bafc321b2f800acaf574dca7956c37b239d789981b920d50ab36599\"\n- },\n- \"campaign/contracts/research-completion-abi.json\": {\n- \"mode\": 420,\n- \"sha256\": \"a5cf5e4bbc5052aa13dc34b55ee65f2997f9342e0b01062e85ad2c16d99daf71\"\n- },\n- \"campaign/contracts/research-replacement.json\": {\n- \"mode\": 420,\n- \"sha256\": \"1108d30bf7e28f30b2446014503fc3200a8b8198a8fab0b866b873a81bf7b8b9\"\n- },\n- \"campaign/current.json\": {\n- \"mode\": 384,\n- \"sha256\": \"87661aaf5ddfbb872365dae8c531453a1e0cb7f91b3ada046be3e829d2555f77\"\n- },\n \"campaign/models.json\": {\n \"mode\": 420,\n- \"sha256\": \"95f507237a8e4fcf14189da4aa102dfae1dbaa536d4d8db6bcbfc30162ac5443\"\n+ \"sha256\": \"00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48\"\n },\n \"campaign/open-questions.md\": {\n \"mode\": 420,\n- \"sha256\": \"efb1c736a07bff32e75e0eede20681c206e2c95f439dffe9824702cb864972e7\"\n- },\n- \"campaign/pilots/research-replacement.md\": {\n- \"mode\": 420,\n- \"sha256\": \"3101b8959f28ba2c6ffbac02a82b5ae0e841e7d78bd1f40f05b9d1d2278490ad\"\n- },\n- \"campaign/research/SESSION.md\": {\n- \"mode\": 420,\n- \"sha256\": \"258a2884486ee777fbd8ff180abf23a3a320b2981ee1e90b57d4e3efe18643f2\"\n- },\n- \"campaign/rollout/RESULT.md\": {\n- \"mode\": 420,\n- \"sha256\": \"87aba912d66e2f7bd9779f86cbae3c78d64b1be2572db02ac39fc70c750cb79c\"\n- },\n- \"campaign/rollout/architecture-decision.md\": {\n- \"mode\": 420,\n- \"sha256\": \"8c710f390671500386745d063d6cb6edb175e6e26572286334d2f14a36be6d41\"\n- },\n- \"campaign/rollout/controls-followup.md\": {\n- \"mode\": 420,\n- \"sha256\": \"44d0c95978cbc0953d6b1feab4463b29fab68c9d8dad2eca5fd562bb5aee1578\"\n- },\n- \"campaign/rollout/controls-worker-state.md\": {\n- \"mode\": 420,\n- \"sha256\": \"02ff66f3f0fa978819e5c100e24cfd3752b9041590e2aed36f6abd62ce790f4e\"\n- },\n- \"campaign/rollout/controls-worker.md\": {\n- \"mode\": 420,\n- \"sha256\": \"d022483618d3c3412785ba40e71106976c9b1c9978c43e424e3023a67b8b3f0f\"\n- },\n- \"campaign/rollout/controls_evidence.py\": {\n- \"mode\": 420,\n- \"sha256\": \"bfaf4e523b2ca39c0ecdab94adf0b2b19a3da68aab8a0fcba69a613aed46588a\"\n- },\n- \"campaign/rollout/engine-followup.md\": {\n- \"mode\": 420,\n- \"sha256\": \"d3d289fb4e4cfb7cf1ab6c3de597f530eafd27d3b1aa2f3e8904d6da3a95ac44\"\n- },\n- \"campaign/rollout/engine-worker-state.md\": {\n- \"mode\": 420,\n- \"sha256\": \"76601fa42c95bd7d78ce46f528a33ef0483e0b7f2e19a1cfe1cab8e560bed05c\"\n- },\n- \"campaign/rollout/engine-worker.md\": {\n- \"mode\": 420,\n- \"sha256\": \"fd8bbe69947b69baa61449548d5746723c941ad8b663ec66d1b278234bebe5b2\"\n- },\n- \"campaign/rollout/formal-verifier-state.md\": {\n- \"mode\": 420,\n- \"sha256\": \"2fbac02f5f22b45e94ee33f9f53779fa059c5e93282d3c2f5ad0af027029a1f4\"\n- },\n- \"campaign/rollout/formal-verifier.md\": {\n- \"mode\": 420,\n- \"sha256\": \"f961ceaef0037001e6576d760e28e7aded0502f3d8311925e5ed1cc537c996dc\"\n- },\n- \"campaign/rollout/gate-followup.md\": {\n- \"mode\": 420,\n- \"sha256\": \"677f17aef214e7a6c92958dd8ad98137b238cc7fe7c1da23bcf36d727f28f7c8\"\n- },\n- \"campaign/rollout/gate-worker-state.md\": {\n- \"mode\": 420,\n- \"sha256\": \"96514befccc589487ac3b6ff9348106aca2e4e8e3aa348471943d589c74629e2\"\n- },\n- \"campaign/rollout/gate-worker.md\": {\n- \"mode\": 420,\n- \"sha256\": \"55db7c5f637d849fb2f200ab12c35a794c86e377a5de3f562b1c32455583e65f\"\n- },\n- \"campaign/rollout/housekeeping-completion.md\": {\n- \"mode\": 420,\n- \"sha256\": \"a25041ebaeb030f1cfc62564b5bc57a98818ea75e082f28036e9cc367096ccd1\"\n- },\n- \"campaign/rollout/housekeeping-followup.md\": {\n- \"mode\": 420,\n- \"sha256\": \"5759aaf403c019173450822dc5e9d4aad711a7497eba906caea39bdb39bd3702\"\n- },\n- \"campaign/rollout/housekeeping-worker-state.md\": {\n- \"mode\": 420,\n- \"sha256\": \"5ee9a48a691709af325994fd3d44a1ac6e40d05f26e09b03ae7efec2ecbe25cc\"\n- },\n- \"campaign/rollout/housekeeping-worker.md\": {\n- \"mode\": 420,\n- \"sha256\": \"bab8219fadd0688e91d6211478a01403a36ae74fd2b6f7df0ad5c8745a542ca9\"\n- },\n- \"campaign/rollout/independent-review.md\": {\n- \"mode\": 420,\n- \"sha256\": \"a7a8ebcce5202db0e67c8c65135df751e69ee6728c4c2ced92e1cc85b4279f22\"\n- },\n- \"campaign/rollout/lead-state.md\": {\n- \"mode\": 420,\n- \"sha256\": \"3ded5b3f97d7882f72abef5ea268765a5db29c8b619486c153f5c92742040c01\"\n- },\n- \"campaign/rollout/publishing-worker-state.md\": {\n- \"mode\": 420,\n- \"sha256\": \"641977e4d0ec400a3a6c38121ae5e7904aa1accc47179ee148ad7cb199029b0e\"\n- },\n- \"campaign/rollout/publishing-worker.md\": {\n- \"mode\": 420,\n- \"sha256\": \"822812fbc803d443fb7e0855268c34224eda29f95e57274c217275b09ff4410f\"\n- },\n- \"campaign/rollout/review-followup.md\": {\n- \"mode\": 420,\n- \"sha256\": \"853e3b5aab09cd77fd54cae6d8a61fb5ae092603ab2be8dee2db6d80492a6443\"\n- },\n- \"campaign/rollout/review-worker-state.md\": {\n- \"mode\": 420,\n- \"sha256\": \"a704e6023eaf3424761bf431e49687ae1f1d687119fe00a466b9da2d9ef7bd42\"\n- },\n- \"campaign/rollout/review-worker.md\": {\n- \"mode\": 420,\n- \"sha256\": \"0e348015440aabef95766010f14880619d34a472102698c9819dfbb029b8a6c8\"\n- },\n- \"campaign/rollout/sync_verifier_snapshot.py\": {\n- \"mode\": 420,\n- \"sha256\": \"4133e536bfdb0e206ecdfc072062e7674b07b973c7f8b9d7f1a268520523d6eb\"\n+ \"sha256\": \"bafe95db6591d87a2bd7c67831c34a993afbfd61e9f75357625763dec25fe134\"\n },\n \"findings/.keep.md\": {\n \"mode\": 420,\n@@ -3118,7 +2989,7 @@\n },\n \"guides/multi-agent-workflow.md\": {\n \"mode\": 420,\n- \"sha256\": \"f5bf0c30c12a3a9e1725549fe000be0105d415ca25b120673a780901148f08da\"\n+ \"sha256\": \"116ccaa9be9523852d02ee7c78c7f1d587c1ed6270789afca42e687ea826af5b\"\n },\n \"guides/re-windows-2000s-howto.md\": {\n \"mode\": 420,\n@@ -3154,7 +3025,7 @@\n },\n \"opencode.json\": {\n \"mode\": 420,\n- \"sha256\": \"d24be7fcee57d5eb04c6b7189822a2ca055dd4a70daafbea67f09a120945d49f\"\n+ \"sha256\": \"027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99\"\n },\n \"scripts/.keep.md\": {\n \"mode\": 420,\n@@ -3179,11 +3050,11 @@\n },\n \"tools/campaign.py\": {\n \"mode\": 420,\n- \"sha256\": \"c7b7c7a30d907bba8e59386dee8704d7f3f5e978fcf709b686e37996fa465c31\"\n+ \"sha256\": \"a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123\"\n },\n \"tools/check_agent_config.py\": {\n \"mode\": 420,\n- \"sha256\": \"93115532cb38105777a5c5c20a9f2a808043370e0d4f560a9c82fe8e800076ec\"\n+ \"sha256\": \"8cb42d8de9cc441b547a00aecc7bfbc3619667121b30e150fec9e6c94683beb0\"\n },\n \"tools/dashboard.py\": {\n \"mode\": 420,\n@@ -3244,7 +3115,7 @@\n },\n \"tools/run_agent.py\": {\n \"mode\": 420,\n- \"sha256\": \"0f5ccb53dcde59b64fe999768737b6cbd2dabcc1272e5605c1f1ecd86e5d5d2b\"\n+ \"sha256\": \"818097896b2e29dbdd2f53d37261236af302178ecd0ee083a3184a7bc33ff152\"\n },\n \"tools/select_evidence.py\": {\n \"mode\": 420,\n@@ -3310,13 +3181,9 @@\n \"mode\": 420,\n \"sha256\": \"a05a42d63813d2025a4da65bdd684e82a89c95c52901a8f490391e31c49a122e\"\n },\n- \"verify/campaign/test_controls.py\": {\n- \"mode\": 420,\n- \"sha256\": \"108460f4e90c4cb7036642e85de581e31fd70c478533c32364691260461814fc\"\n- },\n \"verify/config/test_agent_config.py\": {\n \"mode\": 420,\n- \"sha256\": \"e60ee546672da91de08ca8fdd5d563b5f1207d0a865adf935017e06bf437585b\"\n+ \"sha256\": \"8a7a406f062c3387ec5b99b35f3befb64f676efef174047060c967074545e3e3\"\n },\n \"verify/config/test_source_check.py\": {\n \"mode\": 420,\n@@ -3882,26 +3749,6 @@\n \"mode\": 420,\n \"sha256\": \"8f86707f26f30638097c85f0db6df219adbfebac4e9ec24f1feb8bfce112d4f2\"\n },\n- \"verify/results/housekeeping/vm140-result.json\": {\n- \"mode\": 420,\n- \"sha256\": \"2250b02342f5c02ba5464cb4656543c6366dec098fbc948006600896ac9254c0\"\n- },\n- \"verify/results/housekeeping/vm141-result.json\": {\n- \"mode\": 420,\n- \"sha256\": \"03d92ffd2947b2f0c058e5c613e04567cffee45be456aece6d771b789f32fb93\"\n- },\n- \"verify/results/housekeeping/vm144-result.json\": {\n- \"mode\": 420,\n- \"sha256\": \"ace15320f7e60995a68f2c9c03a5a44159ae2d64fa273d34d38e285d313a0393\"\n- },\n- \"verify/results/housekeeping/vm145-result.json\": {\n- \"mode\": 420,\n- \"sha256\": \"768666178bf2910a2ff026351727b5cc96e48df70e1ba012031d34eafc95ad7a\"\n- },\n- \"verify/results/housekeeping/vm146-result.json\": {\n- \"mode\": 420,\n- \"sha256\": \"eebb306a3ec8533abae6dfd59f127c48effe9f21107e0c5c09c751108e77bb97\"\n- },\n \"verify/results/multiplayer/l2-combat-hud-client.png\": {\n \"mode\": 420,\n \"sha256\": \"02c86592531ab2889a0eae04e44a644d33c754096fe60aca6640068a7a3f421f\"\n@@ -5203,14 +5050,12 @@\n \"sha256\": \"d94c635105a75a68cb811a3881faf371678c075d240998f48fcf348b8459063f\"\n }\n },\n- \"manifest_sha256\": \"b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4\",\n+ \"manifest_sha256\": \"e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9\",\n \"path\": \"/tmp/opencode/sots-final-research-re\"\n }\n },\n- \"ended_at\": \"2026-09-10T12:59:19+00:00\",\n- \"error\": \"host interrupted by Windows Update after durable checkpoint and surprise; no child process survived\",\n- \"started_at\": \"2026-09-10T05:23:06.116970+00:00\",\n- \"status\": \"incomplete\",\n+ \"started_at\": \"2026-09-10T13:07:42.991422+00:00\",\n+ \"status\": \"running\",\n \"worktrees\": {\n \"engine\": \"/tmp/opencode/sots-final-research-engine\",\n \"re\": \"/tmp/opencode/sots-final-research-re\"\n","exit":1,"truncated":false},"title":"git -C /home/alex/sots-re diff --no-index -- campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.json","time":{"start":1789045759967,"end":1789045760012}},"metadata":{"openai":{"itemId":"fc_0f800aba04d4ba9e016aa2abffb6b487d19e6de64be41952f1"}},"id":"prt_08b6fdfdb001rwEgqFiWykNz2r","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6fb3750010f32lloIx6nuIM"}} +{"type":"step_finish","timestamp":1789045760094,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6fe05a0013oyH6tjeB4J6LG","reason":"tool-calls","snapshot":"3f49d052d91051d51c9a20c4cf1a5b96e94d0d6d","messageID":"msg_08b6fb3750010f32lloIx6nuIM","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"step-finish","tokens":{"total":40693,"input":1651,"output":216,"reasoning":42,"cache":{"write":0,"read":38784}},"cost":0}} +{"type":"step_start","timestamp":1789045763318,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b6fecf2001bzPkWt4kqLfUEb","messageID":"msg_08b6fe090001XStEFyBT1qquvn","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","snapshot":"24797335a2c9102683c1ffe09233ce854c43d0fc","type":"step-start"}} +{"type":"tool_use","timestamp":1789045773650,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"bash","callID":"call_nm93aPZ769N2vnmH7wTTE9TB","state":{"status":"completed","input":{"command":"git -C /home/alex/sots-re diff --no-index -- campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.json"},"output":"...output truncated...\n\nFull output saved to: /home/alex/.local/share/opencode/tool-output/tool_08b70154a0013Mgqxc7IiG91s2\n\n- \"mode\": 420,\n- \"sha256\": \"0a7f8497ed287b4b64aa5ba0cb25735172408e38f3605b3ff90f009c7f02eb85\"\n- },\n- \"tools/gate.py\": {\n- \"mode\": 420,\n- \"sha256\": \"4df5ee7022fb2601687f06eab788e2cea1e345e580c4e92c9d47be1787d37460\"\n- },\n- \"tools/gate.sh\": {\n- \"mode\": 493,\n- \"sha256\": \"d7ba27b9b0c6a03df48e4edc71884ef9986743f8afa751dbfec116df5aeee18c\"\n- },\n- \"tools/gen_addresses.py\": {\n- \"mode\": 493,\n- \"sha256\": \"5d995585d4192a19db7cc6d31ed811fa80264159fc114f03f58793f9b6c4908e\"\n- },\n- \"tools/gen_stream_schema.py\": {\n- \"mode\": 420,\n- \"sha256\": \"a9c3e925bb3370371a2c8cde8d738c657fe1cbf68c39c6155562bbb20c551461\"\n- },\n- \"tools/max_income_oracle.py\": {\n- \"mode\": 420,\n- \"sha256\": \"8d3ec6ba5c677486200eab7d1ca55e1350947829e603737307fa394ac8e40bcd\"\n- },\n- \"tools/max_income_predict.py\": {\n- \"mode\": 420,\n- \"sha256\": \"85400c82b6cb7c6786b7fb6486bdc7bcb1140817f7a0ff0b4fa4f7dbeded8797\"\n- },\n- \"tools/probe_report.py\": {\n- \"mode\": 420,\n- \"sha256\": \"f3ef378c10bae4a8bef754d853f0e86616bb95b5e051e04cac97d362587df1a7\"\n- },\n- \"tools/reva_call.py\": {\n- \"mode\": 493,\n- \"sha256\": \"89477650d38985f84b61a664572de1cbde1268b879d3da5e874598942822998b\"\n- },\n- \"tools/rng_ledger_report.py\": {\n- \"mode\": 493,\n- \"sha256\": \"b4f3f581eb6de50118fd531c848354816c20197711e668ce8b0cfcb4d0392cf3\"\n- },\n- \"tools/rng_oracle_check.py\": {\n- \"mode\": 420,\n- \"sha256\": \"f27ca7f9aa03bc672f04067bc71e73ac83742997f12f5f55ce11151bdc39d98a\"\n- },\n- \"tools/rng_site_report.py\": {\n- \"mode\": 493,\n- \"sha256\": \"fabd950c002265403f7b13a8868a158d867828c9930770ed096a2610b086ad35\"\n- },\n- \"tools/rtti_map.py\": {\n- \"mode\": 420,\n- \"sha256\": \"9ac88a8aa566fe08336ba6e50905ec4253409e1317f491c415b1b9ebcc0713e4\"\n- },\n- \"tools/run_agent.py\": {\n- \"mode\": 420,\n- \"sha256\": \"818097896b2e29dbdd2f53d37261236af302178ecd0ee083a3184a7bc33ff152\"\n- },\n- \"tools/select_evidence.py\": {\n- \"mode\": 420,\n- \"sha256\": \"a6e648a77bcf799cc774ff9d0de83011283049ed0f0c44f6e08857a8410e9463\"\n- },\n- \"tools/serializers.py\": {\n- \"mode\": 420,\n- \"sha256\": \"938904eb7b4ae30a61dd966494b112c6d52399f9d4a4658add06b40a54d6cb73\"\n- },\n- \"tools/serializers_ghidra.py\": {\n- \"mode\": 420,\n- \"sha256\": \"d27da0afc8d043d31335bbe274fc76245e50cf0f9091a968b124f31c3a17997c\"\n- },\n- \"tools/serializers_golden.py\": {\n- \"mode\": 420,\n- \"sha256\": \"29d2509b54704b80eff46a59a320719edb17a7eb67fd8acb8ad5e3c427d8e825\"\n- },\n- \"tools/standalone_report.py\": {\n- \"mode\": 420,\n- \"sha256\": \"43a61c4031306732554aca23cd95b57d35f2a870766c33ccf8e005f22436525c\"\n- },\n- \"tools/streams.py\": {\n- \"mode\": 420,\n- \"sha256\": \"57ec4ec5ad222a74f4461d70277d258e51779ae53ff74fd0e07eb51d4bae0afd\"\n- },\n- \"tools/strfootprint.py\": {\n- \"mode\": 420,\n- \"sha256\": \"3b0db212c0b091ae2f63b866ee331435d013c535f233ec34ae3dfb63ded852dc\"\n- },\n- \"tools/tcb_from_json.py\": {\n- \"mode\": 420,\n- \"sha256\": \"8fe09cff16802fda34db24f6f888610baa258399ab39173586b91a7a162f231a\"\n- },\n- \"tools/techid_table.py\": {\n- \"mode\": 420,\n- \"sha256\": \"2c644bdbd3774b70dfdae7e77ff7a3a8e8563b58be7098a2d55ee30dc8b8fd07\"\n- },\n- \"tools/turncommands_capture.py\": {\n- \"mode\": 420,\n- \"sha256\": \"0214d5da6f5f86e188bb2f03db8d3439267baee3a883c7df754601c7c1a38536\"\n- },\n- \"tools/vmshot.py\": {\n- \"mode\": 493,\n- \"sha256\": \"09228bf8bd61918c49afc2b6da931fc8a7833be126be5384b85194e0e86eea44\"\n- },\n- \"tools/vmwatch-install.sh\": {\n- \"mode\": 493,\n- \"sha256\": \"3c004f532422bd589a7294dabdf54d5a726f598c69012eaea3d73a748ad0123a\"\n- },\n- \"tools/vmwatch.py\": {\n- \"mode\": 493,\n- \"sha256\": \"650d8232e46239a55b96f26d581d7d9c5815415c9014fd2e5b846b68c1346b39\"\n- },\n- \"tools/vtable_map.py\": {\n- \"mode\": 420,\n- \"sha256\": \"2e19223efb79421ab4b807e32f0854b2592d7d3a3a52c12e84e47460b960f740\"\n- },\n- \"tools/windows-housekeeping/Invoke-Housekeeping.ps1\": {\n- \"mode\": 420,\n- \"sha256\": \"a97911a3cfbd47813282efa7f52b4de03d28912487fffe0e7e7aa1a250cac01a\"\n- },\n- \"tools/x86disp.py\": {\n- \"mode\": 420,\n- \"sha256\": \"a05a42d63813d2025a4da65bdd684e82a89c95c52901a8f490391e31c49a122e\"\n- },\n- \"verify/config/test_agent_config.py\": {\n- \"mode\": 420,\n- \"sha256\": \"8a7a406f062c3387ec5b99b35f3befb64f676efef174047060c967074545e3e3\"\n- },\n- \"verify/config/test_source_check.py\": {\n- \"mode\": 420,\n- \"sha256\": \"c16731e31a54256dde4f88d33007759ff21ad8537ca6cd2be38b9e34c59525ad\"\n- },\n- \"verify/design-rules/SHIP_DESIGN_RULES.md\": {\n- \"mode\": 420,\n- \"sha256\": \"4decf51bfa03e8ab2b58478198332e834233100126949b920349f210b54521c8\"\n- },\n- \"verify/design-rules/data/HiverInvasion_FleetTemplates.csv\": {\n- \"mode\": 420,\n- \"sha256\": \"327e799be3c75361267725c157f78b425d3a1df6ed6595104b2ce9993e8ae3a7\"\n- },\n- \"verify/design-rules/data/UpstartApes_GiftFleetTemplates.csv\": {\n- \"mode\": 420,\n- \"sha256\": \"89939d70eb6ed48ec776a4a6fc50ccb68fc6be7162706bab199484bf7cdd5e44\"\n- },\n- \"verify/design-rules/data/_defaultweapons.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"ef9e33aa32840f1878ece67f88556d81a4255f63f6e8aad4ac73e575ef2c7ec8\"\n- },\n- \"verify/design-rules/data/_turrets.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"35de6ad40895f76298eef7dc354c739a5a59747b689c2324cfa5040442eddc18\"\n- },\n- \"verify/design-rules/design_rules.py\": {\n- \"mode\": 420,\n- \"sha256\": \"772f70c7d6be2d20d10cf4f5d412233b267440d63d431bf7b320c29f3f06e313\"\n- },\n- \"verify/design-rules/stock_designs.json\": {\n- \"mode\": 420,\n- \"sha256\": \"b363023e02899bc03e4c8b8423b394ef8abb190b1bcf437aade19be463353f68\"\n- },\n- \"verify/design-rules/stock_designs.py\": {\n- \"mode\": 420,\n- \"sha256\": \"fe020f6058ec25b6fc456146abb6594825ee2b98ba5c5c5eeaff969ce4596031\"\n- },\n- \"verify/design-rules/test_design_rules.py\": {\n- \"mode\": 420,\n- \"sha256\": \"6f6764d21d7a3337ec8aba9651b19947239a7d06a6cdf7c6e9be5ddefcfdd186\"\n- },\n- \"verify/fpu-cw/cw_census.py\": {\n- \"mode\": 420,\n- \"sha256\": \"07b7ac5ae60df487867b592e82e9f74201b695437fba248813bc07305a21c7cc\"\n- },\n- \"verify/fpu-cw/trace_bitdiff.py\": {\n- \"mode\": 420,\n- \"sha256\": \"b25c93d70e67ed2fa81e5ea7184f8ffe0cbd2e7c043bc94f923c3db1cf101b59\"\n- },\n- \"verify/harness/.keep.md\": {\n- \"mode\": 420,\n- \"sha256\": \"b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786\"\n- },\n- \"verify/harness/cb/README.md\": {\n- \"mode\": 420,\n- \"sha256\": \"7a656251a600a9343ffa8afaa4f227e7cb8086be7d3c6879c0a403ab8acec71d\"\n- },\n- \"verify/harness/cb/cbdo.sh\": {\n- \"mode\": 493,\n- \"sha256\": \"6f3d7fd35aeedb0841be9df0ba19136be2e7ccb5c44950d8aa821c61727232a6\"\n- },\n- \"verify/harness/cb/cbfull.sh\": {\n- \"mode\": 493,\n- \"sha256\": \"609101217e9d35bf1caa5cb66f362e0796fcf6c1264bd92ff550d0ed12ca2521\"\n- },\n- \"verify/harness/cb/cbload.sh\": {\n- \"mode\": 493,\n- \"sha256\": \"2e56bb64609434f6dfc6ebcf71a3c839ae59170db80c996ebee7c2219cb664ec\"\n- },\n- \"verify/harness/cb/cbmenu.py\": {\n- \"mode\": 420,\n- \"sha256\": \"fb2e72a1a5390aa28dcae0fbc2d7b920b06bf3b1ea161bb757d4db3c8cd23af2\"\n- },\n- \"verify/harness/cb/cbstep.sh\": {\n- \"mode\": 493,\n- \"sha256\": \"5896b21e8cf08b40e2a2958e44a51beb7e5b5a58cf35d405879a5df7cdd375b4\"\n- },\n- \"verify/harness/compare/TRACE_FORMAT.md\": {\n- \"mode\": 420,\n- \"sha256\": \"cf6f61dc255e3aed0f293c141d9fd3b0d5e848e3abe4dcf50b4ca2d58e37c024\"\n- },\n- \"verify/harness/compare/mkfixture.py\": {\n- \"mode\": 420,\n- \"sha256\": \"f081dd92b9e82e838f59ce8f9c79d5cdebb825255f13b6c49178516e7f3ef118\"\n- },\n- \"verify/harness/compare/oracle_parsers.py\": {\n- \"mode\": 420,\n- \"sha256\": \"b1a745bfa63b447c87279afdb2885a0218f2a0dc2539f79414f8a2534e24c97b\"\n- },\n- \"verify/harness/compare/test_tracecmp.py\": {\n- \"mode\": 420,\n- \"sha256\": \"f25eb9d5ea7215b8366c44924fb49a5f028a0188e709dadfd90cfbc30db0823e\"\n- },\n- \"verify/harness/compare/tracecmp.py\": {\n- \"mode\": 420,\n- \"sha256\": \"d6ca461cabf15351e2040150144084b93d3caf22d879ee158ede04052ab03cbb\"\n- },\n- \"verify/harness/l2-ui/README.md\": {\n- \"mode\": 420,\n- \"sha256\": \"48effd757522ee5ff70af6d77449dcfd805bb7744c9093d01c039b86e030d7f6\"\n- },\n- \"verify/harness/l2-ui/launch-b.cmd\": {\n- \"mode\": 420,\n- \"sha256\": \"8f26c451a88765c49ecb3c8160ed4a3d06f1100a6d9323b305efc01f039dfada\"\n- },\n- \"verify/harness/l2-ui/socks.ps1\": {\n- \"mode\": 420,\n- \"sha256\": \"401cce47d495507f60eeae45942c146586464959046ef9715cd69605753af027\"\n- },\n- \"verify/harness/l2-ui/ui.ps1\": {\n- \"mode\": 420,\n- \"sha256\": \"355c8f222bf99f547d9d16a1665a072e6914917d48e4db22b8438d2d83708e97\"\n- },\n- \"verify/harness/profiling/battle-run.sh\": {\n- \"mode\": 493,\n- \"sha256\": \"79f14ded5c3731efd655a6f9a4ac6795f3ace0a9b064c43ba4bf9a2cb988a7cf\"\n- },\n- \"verify/harness/profiling/funcs.py\": {\n- \"mode\": 420,\n- \"sha256\": \"841a6f5e5dc1d845b7439c9ce9dc08e045864929b0f367908abea7ab54259207\"\n- },\n- \"verify/harness/profiling/funcs.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"d35b17dbb3970f5c24ae862748c5b91aee87491968719c34e48a8b88c0615835\"\n- },\n- \"verify/harness/profiling/iat.py\": {\n- \"mode\": 420,\n- \"sha256\": \"82465ef8284739ab3d3c99acd0fa6cc5a4bb80c8680eb7a949218305fd10d3d3\"\n- },\n- \"verify/harness/profiling/inspect.ps1\": {\n- \"mode\": 420,\n- \"sha256\": \"35bc7dd85108e3f4686975ef7f510b1cc9306b5839329f7fdd2a5ac27a140611\"\n- },\n- \"verify/harness/profiling/names.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"89d90f934e445447c68569448471a8917ee0bbfcb5fb96bba3e6566be9b0779c\"\n- },\n- \"verify/harness/profiling/parse.py\": {\n- \"mode\": 420,\n- \"sha256\": \"680df36804e923d74da8e9fd8877b5ea66975c9ce8d239ad4507c829f881722a\"\n- },\n- \"verify/harness/profiling/sampler.ps1\": {\n- \"mode\": 420,\n- \"sha256\": \"ef0edde8535ef07e508a732f8e11dc3d50fef966e5a9e4d8161085a83372993e\"\n- },\n- \"verify/harness/profiling/shots.sh\": {\n- \"mode\": 420,\n- \"sha256\": \"87e554abf08068d6438417e266f1e7820e34a900a7d559fa0a7c4a2fa18002b3\"\n- },\n- \"verify/harness/profiling/timerres.ps1\": {\n- \"mode\": 420,\n- \"sha256\": \"80362eb9ec8bd882abddf2507236e70db2dd21f64c9db07d217bdd49361ed89c\"\n- },\n- \"verify/harness/profiling/turnloop.sh\": {\n- \"mode\": 493,\n- \"sha256\": \"8e28f076599a9eb53eace77ad77a10b0770f1ce617c7a76e6a2b9044ee0c8774\"\n- },\n- \"verify/harness/profiling/turnwin.py\": {\n- \"mode\": 420,\n- \"sha256\": \"e2033a8e519a7c9f65f67b5592494a9843eb8bef41af6ab5652343aa86bd4c60\"\n- },\n- \"verify/harness/profiling/ui.sh\": {\n- \"mode\": 493,\n- \"sha256\": \"e66774a4d070285e6c6a62472000222a691c7192096039e75fa726bab9f6afb7\"\n- },\n- \"verify/harness/run-recipe/click_helper.ps1\": {\n- \"mode\": 420,\n- \"sha256\": \"150a1c17e12e8479244107cd01d95233c84d550e95a6f5e352fd529818a21d7d\"\n- },\n- \"verify/harness/run-recipe/display.cfg\": {\n- \"mode\": 420,\n- \"sha256\": \"76b4876abd1cd163a5cc6b65a6106670476cde40c9b868a53a0dc45f517e132f\"\n- },\n- \"verify/harness/run-recipe/dxvk_d3d9.log\": {\n- \"mode\": 420,\n- \"sha256\": \"f48ff2684a78cea563ab7f10e2f005638044352fe9cfc30dedf0f26ec7fecf23\"\n- },\n- \"verify/harness/run-recipe/launch.cmd\": {\n- \"mode\": 420,\n- \"sha256\": \"90a6effe8ae835bf641cc775a17ad709198fdfeded4379f658255a82f594e5c2\"\n- },\n- \"verify/harness/run-recipe/lvp_icd.x86.json\": {\n- \"mode\": 420,\n- \"sha256\": \"b89a08526e043a84c3a2550b5ea2fd7692f547ea295e8dd70e79c64fe81f6fbf\"\n- },\n- \"verify/harness/run-recipe/run.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"12c83295dae9db4a98142ef8fe7e45321c90960428df504ed3496e27838a0413\"\n- },\n- \"verify/harness/run-recipe/session.log\": {\n- \"mode\": 420,\n- \"sha256\": \"e9ce9b496e9ee55bd64cc27afe594cee6136dfbc6cf9d9d44e9914b27e568a93\"\n- },\n- \"verify/parsers/PARITY_NOTES.md\": {\n- \"mode\": 420,\n- \"sha256\": \"beecfe60358f5977529bd0784ffe18ca03c38d2dd36766f351c6a9addac83bda\"\n- },\n- \"verify/parsers/effect_txt.py\": {\n- \"mode\": 420,\n- \"sha256\": \"7219045dfaf305dd64218ff8096e8cac69a53df1aabdf85f15e6c5e01c963e74\"\n- },\n- \"verify/parsers/flat_kv.py\": {\n- \"mode\": 420,\n- \"sha256\": \"a26149cb21d152be5cbada3b764e042187daf2ec306b2dba1081737af6a7ae4f\"\n- },\n- \"verify/parsers/manifest.py\": {\n- \"mode\": 420,\n- \"sha256\": \"62a08cfd82d5f701ae3b3f567bc8382cfd1b33b49bf6049ade47a932ef7109da\"\n- },\n- \"verify/parsers/mars_data.py\": {\n- \"mode\": 420,\n- \"sha256\": \"90c7b8421044b1d7e262e6f20e5af391d97a712b12c2d3f0c3033567881d536f\"\n- },\n- \"verify/parsers/verify.py\": {\n- \"mode\": 420,\n- \"sha256\": \"cc5d619bd6b3ca161b4bc8050c30e7d77f6bd3e964c971cc29e051efc1e25a33\"\n- },\n- \"verify/publishing/test_dashboard.py\": {\n- \"mode\": 420,\n- \"sha256\": \"cc44e516da663f5d27bf817cbcbf24c052f2db52ee887d08d7c271caf8f6a000\"\n- },\n- \"verify/results/.keep.md\": {\n- \"mode\": 420,\n- \"sha256\": \"b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786\"\n- },\n- \"verify/results/compare/.keep.md\": {\n- \"mode\": 420,\n- \"sha256\": \"4581f3fde61549f4c621b2f114228a62d066a528a270a9b41703238ff841ac1d\"\n- },\n- \"verify/results/compare/b2-techfx-compare.json\": {\n- \"mode\": 420,\n- \"sha256\": \"b0533322d44b1694f36baf86d6660481ac5b22ce9c1d6b6b9668ea064cc08f4b\"\n- },\n- \"verify/results/compare/b2-techfx-golden.json\": {\n- \"mode\": 420,\n- \"sha256\": \"4298a8229b85a3329c78d3618d3eb19aff096cb2da66e9238fd843d639b17f11\"\n- },\n- \"verify/results/compare/cr-compare.json\": {\n- \"mode\": 420,\n- \"sha256\": \"f20e9a7c71412688c02b607f08a5224367598eba552e35a50e9922ca8f12edab\"\n- },\n- \"verify/results/compare/cr-compare.md\": {\n- \"mode\": 420,\n- \"sha256\": \"0eb905744120b1cf264ba6e57497db64fdc8e225a87ef7bb86cf3f026ffe4d0d\"\n- },\n- \"verify/results/compare/cr-replace0.json\": {\n- \"mode\": 420,\n- \"sha256\": \"f1556c5d74c236c82617061b5ec60b1a7ce4652bce87b6595eb89406ad832240\"\n- },\n- \"verify/results/compare/cr-replace0.md\": {\n- \"mode\": 420,\n- \"sha256\": \"6f571e46350a29b811bc12b48e12ed2d443acba5f5be6310e0531c3790425d48\"\n- },\n- \"verify/results/compare/cr-replace1.json\": {\n- \"mode\": 420,\n- \"sha256\": \"d0c1d6bd4a1f8f5343b584662d8202184479b01a51480443a97242daf27fccc2\"\n- },\n- \"verify/results/compare/cr-replace1.md\": {\n- \"mode\": 420,\n- \"sha256\": \"111b51290468d5482a1910194487d26dc1b3ec534d699aa07a564de66bbf9d98\"\n- },\n- \"verify/results/compare/eventlive-b3-t1-5.json\": {\n- \"mode\": 420,\n- \"sha256\": \"4f305180bcbe93523f407d1f8406ac52b84d4a20e2d611940716618fd37edfde\"\n- },\n- \"verify/results/compare/eventlive-b3-t1-5.md\": {\n- \"mode\": 420,\n- \"sha256\": \"ec71d98210218fd5b5da69f6b17cf6991128a58a0358a6504e6497dd39159764\"\n- },\n- \"verify/results/compare/eventlive-b3-t1.json\": {\n- \"mode\": 420,\n- \"sha256\": \"84f66c1e6a23f737d1615e75fd22fba958bfd851067acb42503e32a2812dd1de\"\n- },\n- \"verify/results/compare/eventlive-b3-t1.md\": {\n- \"mode\": 420,\n- \"sha256\": \"299b8dd3f2cf42cbc9e6254fac01ee3dcb6abb0758c8f298beb6cc6464db4cfb\"\n- },\n- \"verify/results/compare/eventlive-b3-zuul.json\": {\n- \"mode\": 420,\n- \"sha256\": \"a1a92c06202c8168362c33442edeb7ea7f76f6e586e5deea1b86dff9dc8f3494\"\n- },\n- \"verify/results/compare/eventlive-b3-zuul.md\": {\n- \"mode\": 420,\n- \"sha256\": \"544791f9cd8b77a2d865f2a918d97e74559529f29943171bd1e8e2d8a120dec5\"\n- },\n- \"verify/results/compare/l5-budget-boundary.md\": {\n- \"mode\": 420,\n- \"sha256\": \"6877f9cfc602876b4c213106493853822471a5aaa3e4e8ebf8dffd31373d89d9\"\n- },\n- \"verify/results/compare/mf-after.json\": {\n- \"mode\": 420,\n- \"sha256\": \"586a824a0d0af1de0808c33c1c392c4022128f9c1305dc32b6749e8fa493e8f4\"\n- },\n- \"verify/results/compare/mf-after.md\": {\n- \"mode\": 420,\n- \"sha256\": \"659be3da71cabfd3c34eb818f1bac07f848c58a878fd62d81ac7b1daa5f3ce03\"\n- },\n- \"verify/results/compare/mf-before.json\": {\n- \"mode\": 420,\n- \"sha256\": \"259272b45ca9c63894d8c91e399ff91d7258b7836f1a0d5c91dd3972586b2498\"\n- },\n- \"verify/results/compare/mf-before.md\": {\n- \"mode\": 420,\n- \"sha256\": \"4572530a1c93865d27aba47c23c418773ad39a834c8be1c004f5cc2f16f927a0\"\n- },\n- \"verify/results/compare/output-ref-turn2.md\": {\n- \"mode\": 420,\n- \"sha256\": \"43a569165f9239f13edc31c7a848a6b839829ae06dd6e3b85d289a1552eb8d34\"\n- },\n- \"verify/results/compare/output-zuul-and-ref.md\": {\n- \"mode\": 420,\n- \"sha256\": \"9bc0937c0b3e1e3e5a6cd3768dbfeae56a897615396b00834bd083611f3ef431\"\n- },\n- \"verify/results/compare/recap-b1-compare.json\": {\n- \"mode\": 420,\n- \"sha256\": \"8e86cdd32373e41ac1cdc130b18acc188b35d5ab7112e1fc655d134c44ad9712\"\n- },\n- \"verify/results/compare/recap-b1-compare.md\": {\n- \"mode\": 420,\n- \"sha256\": \"496a3246eda3be76d9d0f08726369d40aa879cf60a510f16209ae77585582841\"\n- },\n- \"verify/results/compare/recap-b3-compare-t1-5.json\": {\n- \"mode\": 420,\n- \"sha256\": \"80eeeeccf15f427b75b053d06f6b32b1692a2ed9ca6b9a51c244e4166a1b0e78\"\n- },\n- \"verify/results/compare/recap-b3-compare-t1-5.md\": {\n- \"mode\": 420,\n- \"sha256\": \"5b6295bff72d599f142e75fa913ca2da590322a6fd1d104328847159fc5e7802\"\n- },\n- \"verify/results/compare/recap-b3-compare-t1.json\": {\n- \"mode\": 420,\n- \"sha256\": \"10d0d5f8aff90f6cce3cd87e30c7f8ff896c5b369f4dc8288141451e25727cb9\"\n- },\n- \"verify/results/compare/recap-b3-compare-t1.md\": {\n- \"mode\": 420,\n- \"sha256\": \"2b0eb8865bb07a2dd8fd038bc19e38a34fbf19b9d3f6fabae085c16a74fbcc6f\"\n- },\n- \"verify/results/compare/recap-golden-trace.json\": {\n- \"mode\": 420,\n- \"sha256\": \"50bb7e34ab2359adc83cc0647fc995d207173fcf6134e413565af450958f652f\"\n- },\n- \"verify/results/compare/recap-golden-trace.md\": {\n- \"mode\": 420,\n- \"sha256\": \"586fc86fe78659902a5d0859c0bce44623bfcda0f375bb57b293796862c48e17\"\n- },\n- \"verify/results/compare/recap-misc-compare.json\": {\n- \"mode\": 420,\n- \"sha256\": \"c73f3f3593a0d715a675b29c7b4f49c02a97578ee9d867ce15d217c43da2e466\"\n- },\n- \"verify/results/compare/recap-misc-compare.md\": {\n- \"mode\": 420,\n- \"sha256\": \"b435c92441742b2b1b0236bfacff10c17757696baf446c544c4759b7e31237ed\"\n- },\n- \"verify/results/compare/unlock-b3-t1-5.json\": {\n- \"mode\": 420,\n- \"sha256\": \"a4dbfc89f6f3d154edbbc62842a4e8d8a3c69b9589eafc1bb496b26a3ecf6e3d\"\n- },\n- \"verify/results/compare/unlock-b3-t1-5.md\": {\n- \"mode\": 420,\n- \"sha256\": \"832626087ddc2da9064a192a1acfb3869d4a52c6398a070cbd66eaa1bdbe2e2e\"\n- },\n- \"verify/results/compare/unlock-b3-t1.json\": {\n- \"mode\": 420,\n- \"sha256\": \"6d8938b8eaeb2da1c7fdccb1fb68f8e3a2b5b7f492cc096326cf3aadb2ab8d55\"\n- },\n- \"verify/results/compare/unlock-b3-t1.md\": {\n- \"mode\": 420,\n- \"sha256\": \"8911e671a143c25765cd7c0b67f1b9cb23f4040fe26aad40ce59b1db858afdcd\"\n- },\n- \"verify/results/compare/unlock-b3-zuul.json\": {\n- \"mode\": 420,\n- \"sha256\": \"3099d248d58c4395e92d65ad18c28227695a7c7935193be6c2bcf752fa0e0f04\"\n- },\n- \"verify/results/compare/unlock-b3-zuul.md\": {\n- \"mode\": 420,\n- \"sha256\": \"f53b165c8502ba9b2416935179fdea68153fb6ebd2458b4ec9b4ecf6c741c91f\"\n- },\n- \"verify/results/data-catalogs/crosslink.json\": {\n- \"mode\": 420,\n- \"sha256\": \"2966ba9780910b596e350c4f81eef5d74c4d235dc3a8d5cf6ad5fd53a407254a\"\n- },\n- \"verify/results/data-catalogs/schema_stats.json\": {\n- \"mode\": 420,\n- \"sha256\": \"6e3f669ae77cdfa2c5cd6bbd29f5cecccd452d9a7b2397c2c23db6c33fda0a2a\"\n- },\n- \"verify/results/data-catalogs/shipsections.json\": {\n- \"mode\": 420,\n- \"sha256\": \"2e7057c608d0cea755bf9dbfa291864d33e3f09ad5deff7bb3a8045bde7a4ab5\"\n- },\n- \"verify/results/data-catalogs/strings.json\": {\n- \"mode\": 420,\n- \"sha256\": \"c36c1b2b9a2eace438f93698df6388fa94aec30d372bcd0bee7e09bb33c54d7c\"\n- },\n- \"verify/results/data-catalogs/tech_tree.dot\": {\n- \"mode\": 420,\n- \"sha256\": \"96ce0492a1284167d82af2c07a8f8a0b3bb9864bc137195560d909df6a913055\"\n- },\n- \"verify/results/data-catalogs/tech_tree.json\": {\n- \"mode\": 420,\n- \"sha256\": \"18df799410c5f650e15808c1ef247b4768a3dfff93795a5ec7f56cd6c4afc597\"\n- },\n- \"verify/results/data-catalogs/weapons.json\": {\n- \"mode\": 420,\n- \"sha256\": \"a446b445c21519fc7992c84155c9652239567030843c405b4219d1f65022db01\"\n- },\n- \"verify/results/fpu-cw/README.md\": {\n- \"mode\": 420,\n- \"sha256\": \"3928fd0f6a03a8ff0b170a7ed23a059120b5014b13bf6870d4f187ff299d5975\"\n- },\n- \"verify/results/fpu-cw/cw-census.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"b7854dc5cd249a2490d04264d758f1894a9ddf4b95573650365d47587c7589d3\"\n- },\n- \"verify/results/fpu-cw/run-007f-rep/(Autosave EndTurn).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/fpu-cw/run-007f-rep/(Autosave).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918\"\n- },\n- \"verify/results/fpu-cw/run-007f-rep/shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"73b5b86da743a1cb37d4c0d97b29978923b55a7a47f80c7fa20ca47d424f6c02\"\n- },\n- \"verify/results/fpu-cw/run-007f/(Autosave EndTurn).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/fpu-cw/run-007f/(Autosave).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918\"\n- },\n- \"verify/results/fpu-cw/run-007f/shim.cfg\": {\n- \"mode\": 420,\n- \"sha256\": \"998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363\"\n- },\n- \"verify/results/fpu-cw/run-007f/shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"5721f47d7fd862156ce2cd1832cd1739636b5aee53c82323ef233ff6401775bb\"\n- },\n- \"verify/results/fpu-cw/run-007f/shim.trace.jsonl.gz\": {\n- \"mode\": 420,\n- \"sha256\": \"149c4fcf750fcf9e81dc86d8696271d9a14ca788891ac95cf96995e3737c68e4\"\n- },\n- \"verify/results/fpu-cw/run-027f/(Autosave EndTurn).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/fpu-cw/run-027f/(Autosave).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n- },\n- \"verify/results/fpu-cw/run-027f/shim.cfg\": {\n- \"mode\": 420,\n- \"sha256\": \"f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd\"\n- },\n- \"verify/results/fpu-cw/run-027f/shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"4bd3f88bd27eb2e3ae1f42f4dc2ccf1cc5df1a2c1171d2eff8be86e7be684187\"\n- },\n- \"verify/results/fpu-cw/run-027f/shim.trace.jsonl.gz\": {\n- \"mode\": 420,\n- \"sha256\": \"b5d2611d0c08946c1e1eaa244a7e44782eac2592c392efb3d7147fbbd86816e7\"\n- },\n- \"verify/results/fpu-cw/run-127f/(Autosave EndTurn).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/fpu-cw/run-127f/(Autosave).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n- },\n- \"verify/results/fpu-cw/run-127f/shim.cfg\": {\n- \"mode\": 420,\n- \"sha256\": \"1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271\"\n- },\n- \"verify/results/fpu-cw/run-127f/shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"03f1999dc8964912697782e856f89f190b6680d5732f2cd00b1569bff727a545\"\n- },\n- \"verify/results/fpu-cw/run-127f/shim.trace.jsonl.gz\": {\n- \"mode\": 420,\n- \"sha256\": \"fb1b9063cc53a6b39ea0a58e0545b9334fbd15d65dd839e72f2c4febbb1dd3f0\"\n- },\n- \"verify/results/fpu-cw/run-137f/(Autosave EndTurn).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/fpu-cw/run-137f/(Autosave).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n- },\n- \"verify/results/fpu-cw/run-137f/shim.cfg\": {\n- \"mode\": 420,\n- \"sha256\": \"8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9\"\n- },\n- \"verify/results/fpu-cw/run-137f/shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"83aa72572412d5248179397895029367685fd590d795991ab91c98cf9828ae29\"\n- },\n- \"verify/results/fpu-cw/run-137f/shim.trace.jsonl.gz\": {\n- \"mode\": 420,\n- \"sha256\": \"aad1fb6abd86beafb9f44e2c6060157e22618811d105f2379252e19008839b66\"\n- },\n- \"verify/results/fpu-cw/run-1a7f-rep/(Autosave EndTurn).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/fpu-cw/run-1a7f-rep/(Autosave).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7\"\n- },\n- \"verify/results/fpu-cw/run-1a7f-rep/shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"38f2824fbe91bf2fa1ef55473a7468707248420805b6f6dc85245fd34fa94200\"\n- },\n- \"verify/results/fpu-cw/run-1a7f/(Autosave EndTurn).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/fpu-cw/run-1a7f/(Autosave).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7\"\n- },\n- \"verify/results/fpu-cw/run-1a7f/shim.cfg\": {\n- \"mode\": 420,\n- \"sha256\": \"59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588\"\n- },\n- \"verify/results/fpu-cw/run-1a7f/shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"a1bb0bd06dae6955ec09e7d0c6cd1e68e19aa2a114256cdeae1275def0a63091\"\n- },\n- \"verify/results/fpu-cw/run-1a7f/shim.trace.jsonl.gz\": {\n- \"mode\": 420,\n- \"sha256\": \"b9a7affb8235626fcfdd5afe143e4ec03be869b6b386bd9ac78389097df88cef\"\n- },\n- \"verify/results/fpu-cw/run-off/(Autosave EndTurn).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/fpu-cw/run-off/(Autosave).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n- },\n- \"verify/results/fpu-cw/run-off/shim.cfg\": {\n- \"mode\": 420,\n- \"sha256\": \"6a19c362121a3dba0aac857d6e998131e8b2478f19edcdcbd58006645d096c70\"\n- },\n- \"verify/results/fpu-cw/run-off/shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"9e3cbd005f0b68037681939b289834c55629bac0e9cd35ac55e6d8ef5333a116\"\n- },\n- \"verify/results/fpu-cw/run-off/shim.trace.jsonl.gz\": {\n- \"mode\": 420,\n- \"sha256\": \"ec2271c0d7e09fe51ead7f8d58859c692e8b302233191841d506ea14248caa8c\"\n- },\n- \"verify/results/fpu-cw/state-checksum-diffs.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"3417dfc1b75ad896ac6a5e974d51248eecca319565e2422e146897d19e121b68\"\n- },\n- \"verify/results/fpu-cw/trace-bitdiff.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"8f86707f26f30638097c85f0db6df219adbfebac4e9ec24f1feb8bfce112d4f2\"\n- },\n- \"verify/results/multiplayer/l2-combat-hud-client.png\": {\n- \"mode\": 420,\n- \"sha256\": \"02c86592531ab2889a0eae04e44a644d33c754096fe60aca6640068a7a3f421f\"\n- },\n- \"verify/results/multiplayer/l2-combat-hud-host.png\": {\n- \"mode\": 420,\n- \"sha256\": \"a56daf36fcc88627b29116ad9874c95a3c46960074ff9b823aa15c4ea2660dd7\"\n- },\n- \"verify/results/multiplayer/l2-combat-loading.png\": {\n- \"mode\": 420,\n- \"sha256\": \"f94a718cee08e1b7d346490058f13a107d23aaa7c269fdd53b159a75d62fa558\"\n- },\n- \"verify/results/multiplayer/l2-combat-round-draw.png\": {\n- \"mode\": 420,\n- \"sha256\": \"c1b8424540b702915302f9ff38eaf765e8e95fddc3c5c4d894438dcfcf8b6256\"\n- },\n- \"verify/results/multiplayer/l2-combat.pcap\": {\n- \"mode\": 420,\n- \"sha256\": \"0f112ef96da6c465dbda51baf99eedd66967eed61c097f643bf6c66fc26af31b\"\n- },\n- \"verify/results/multiplayer/l2-encounter-query-client.png\": {\n- \"mode\": 420,\n- \"sha256\": \"4c41b268ad256b0109483a2d9b5ba35de7b9cadb4eb32ef4a68f7867e6e747fd\"\n- },\n- \"verify/results/multiplayer/l2-encounter-query-host.png\": {\n- \"mode\": 420,\n- \"sha256\": \"8c7b0c6d65ddde45eb3447f044589ffc36500b40c4d676af8321f800162f38a0\"\n- },\n- \"verify/results/multiplayer/l2-fleet-built.png\": {\n- \"mode\": 420,\n- \"sha256\": \"6ac91fcf9b42caef50134de01804046d8e60d0fd3966592e9738ceff511949c2\"\n- },\n- \"verify/results/multiplayer/l2-lobby-client-joined.png\": {\n- \"mode\": 420,\n- \"sha256\": \"4a8e698c9ea935449ff0421cd59acd517ebffa388a7572279b28be0369141ff6\"\n- },\n- \"verify/results/multiplayer/l2-lobby-host-created.png\": {\n- \"mode\": 420,\n- \"sha256\": \"e6a7377cabafa973396cedafa5ad5b4863a42f9866709db88faf9572e0ed3c98\"\n- },\n- \"verify/results/multiplayer/l2-move-warning-dialog.png\": {\n- \"mode\": 420,\n- \"sha256\": \"43c6219d74bc0cb28495f13784cdbd3a90c89746b108824c3a2138dbdadcb53e\"\n- },\n- \"verify/results/multiplayer/l2-socks.log\": {\n- \"mode\": 420,\n- \"sha256\": \"109b630d6548d07404f9f905e6c527f10e25221698f1b66226f67f94c5f294b5\"\n- },\n- \"verify/results/multiplayer/l2-turn13-client.png\": {\n- \"mode\": 420,\n- \"sha256\": \"d19f17c4219f21f6c9950440d528a1a91fe3907761df21fd0ba99321b8820baa\"\n- },\n- \"verify/results/multiplayer/l2-turn13-host.png\": {\n- \"mode\": 420,\n- \"sha256\": \"811efcfb571d60435f772a3b619bb329717d1e162b88e440ec0d636b1c6042fc\"\n- },\n- \"verify/results/multiplayer/w2-internet-browser-no-error.png\": {\n- \"mode\": 420,\n- \"sha256\": \"6409b977056c95b29928a0098f75fffd71c501128f9d9325c3000837131c8791\"\n- },\n- \"verify/results/multiplayer/w2-join-manually-dialog.png\": {\n- \"mode\": 420,\n- \"sha256\": \"86904e94a5aec41c1e89271d2712558c3b5055bd2ae4fededfda103d1e22fb71\"\n- },\n- \"verify/results/multiplayer/w2-lan-browse-listing.png\": {\n- \"mode\": 420,\n- \"sha256\": \"6f5d16fa719fb63dd627fba551221c7665b69002e83fe35b8d84912cd7d8ce83\"\n- },\n- \"verify/results/multiplayer/w2-lobby-client.png\": {\n- \"mode\": 420,\n- \"sha256\": \"ede652b21e2a4ea07c8132e4080ba903d1052ebca336bb007e1e8efa62787f10\"\n- },\n- \"verify/results/multiplayer/w2-mp-turn1.png\": {\n- \"mode\": 420,\n- \"sha256\": \"59f9a1f5d8c0fff45d3ae3406dfd9878a5915f18e999d909a5238a90a3b86ed6\"\n- },\n- \"verify/results/multiplayer/w2-mp-turn2-client.png\": {\n- \"mode\": 420,\n- \"sha256\": \"d9da4c151cd8290f80b31eb5ed8a74a0a30a87d1f7a80a179fa082a9439e08e5\"\n- },\n- \"verify/results/multiplayer/w2-mp-turn2-host.png\": {\n- \"mode\": 420,\n- \"sha256\": \"910efd36b4a7c1a85d8ad487660f856339af037b9b00fef0cafd5e77ebdc36e5\"\n- },\n- \"verify/results/multiplayer/w2-tier0-filtered.pcap\": {\n- \"mode\": 420,\n- \"sha256\": \"e108778fd1afb7718c53a4164310b8523415ef073706d310583dab424e5921cc\"\n- },\n- \"verify/results/saves/ac-turn20-raider.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"ee787db8f63d8f564c597bd5a82709790a0fdf47827912037f96b736f2cbed34\"\n- },\n- \"verify/results/saves/ac-turn22-raider.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"0faeaa601e6a867876819e5646b85f8787851093b8e6bd6e3946eb867f2dcc74\"\n- },\n- \"verify/results/saves/ad-oracle-A-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"a634510e7208cceb10d8ce016ceb0153601f11d7291f08122bcdb6418e313331\"\n- },\n- \"verify/results/saves/ad-oracle-B-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"676b1778880b5d4784ba7f6ef48b1a8e56745adab70a815943b7744876686260\"\n- },\n- \"verify/results/saves/ad-turn27-two-raiders.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"1c8baa27680809d585ab1728391e82729642d32aaedffd5bf95b616f0a11a436\"\n- },\n- \"verify/results/saves/ap-deploy-turn15.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"844f2b746060dc2c4e2099cdc6ceffd5f55ef858c9e347df28c8aca3041f7165\"\n- },\n- \"verify/results/saves/ap-oa-turn16.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"e296394f578b3a5668e5934b9eec8d6c4638ca7411200078f97de1abd346f4c5\"\n- },\n- \"verify/results/saves/ap-ob-turn16.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"262f8bda97c9511d8d2b41e6a8a0582d6f5364c2b01b1caf99e639d0e4f53ebe\"\n- },\n- \"verify/results/saves/ap-turn22-spydetected.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"91381bd7e722ac3847795a402d78ebb31d74dbb5d2909f33d243aec3ef8abaf8\"\n- },\n- \"verify/results/saves/ap-turn25-spydestroyed.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"46380fcf4498d67507e4471eb9ee3762647c53ee5473be142fe5c34e37344bc3\"\n- },\n- \"verify/results/saves/ar-oracle-A-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38\"\n- },\n- \"verify/results/saves/ar-oracle-A-pre.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca\"\n- },\n- \"verify/results/saves/ar-oracle-B-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38\"\n- },\n- \"verify/results/saves/ar-r1-turn43-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"37f4a54fd32303fdcc86522b07104fbf2fcb124eec9b1f7005b3446fefcc429f\"\n- },\n- \"verify/results/saves/ar-r2-probes8-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38\"\n- },\n- \"verify/results/saves/ar-turn37-816raiders.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"b6f4e05ff226eabd1695003b36293553642553cea96ef417364393e2332a7094\"\n- },\n- \"verify/results/saves/as-turn14-predeploy.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"53986f8511cbf9920f32e2ea406ccf531dd08903fa5d06024fcf03ea7627221d\"\n- },\n- \"verify/results/saves/as-turn15-spydeployed.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"854a10fa1ea602f0f7909f9bf9154942e56ea5fa1db4cce47d6d32bf53952e08\"\n- },\n- \"verify/results/saves/az-turn11-16destroyers.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"501583c7cf2ac81c9db3191203cd3dc5ba5b9e228b9b9ce3dbdcc3650d0070a9\"\n- },\n- \"verify/results/saves/az-turn23-tarka-comraid.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"3d5eb826c149d1fd0278c746f32e6148ca9883a1bc5b522c0d5e6e13fac9788a\"\n- },\n- \"verify/results/saves/bp-pinA-turn28.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"e913ff41188211c02d536da616337544e64133996cd7cc7a6521a8df1960226f\"\n- },\n- \"verify/results/saves/bp-pinB-turn28.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"724528ffde9a7514b69ab9e82ed3b8c8ade63d622c0720de30503a73a92df11e\"\n- },\n- \"verify/results/saves/bp-turn28-pre.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"16f63adbf383946db17c381998957172bca803406b7df78f3b03805fef0bbcb8\"\n- },\n- \"verify/results/saves/bq/bq-1A-endturn.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39\"\n- },\n- \"verify/results/saves/bq/bq-1A-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"56980aa086e1a145b00f781b9d9cf618b152986f1c2267b9fd96cca0f1f604b9\"\n- },\n- \"verify/results/saves/bq/bq-1B-endturn.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39\"\n- },\n- \"verify/results/saves/bq/bq-1B-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"b36ac0ec2986f3a814dd22ca312c895ba6ec8a0e55fca54d8a7fd08a2f96a2c4\"\n- },\n- \"verify/results/saves/bq/bq-1bA-endturn.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21\"\n- },\n- \"verify/results/saves/bq/bq-1bA-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10\"\n- },\n- \"verify/results/saves/bq/bq-1bB-endturn.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21\"\n- },\n- \"verify/results/saves/bq/bq-1bB-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10\"\n- },\n- \"verify/results/saves/bq/bq-res-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"28bbd9b5c377afcd8f075b535eb1036ee46acf71ab614e7091ccdbdfb3703db2\"\n- },\n- \"verify/results/saves/bs/bs-C-endturn.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca\"\n- },\n- \"verify/results/saves/bs/bs-C-f38-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"0fe8f37479a702d2e4e7752e6cb160dc242f00a082dc4115b7d10c77b24989f0\"\n- },\n- \"verify/results/saves/bs/bs-C-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38\"\n- },\n- \"verify/results/saves/bs/bs-L-endturn.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21\"\n- },\n- \"verify/results/saves/bs/bs-L-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10\"\n- },\n- \"verify/results/saves/cb-c3-turn1to2-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8\"\n- },\n- \"verify/results/saves/cb-c5a-turn1to2-pinned-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8\"\n- },\n- \"verify/results/saves/cb-c5b-turn1to2-pinned-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8\"\n- },\n- \"verify/results/saves/cb-turn2to3-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n- },\n- \"verify/results/saves/cb-turn2to3-endturn.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/saves/certified-pairs.md\": {\n- \"mode\": 420,\n- \"sha256\": \"4e1cfb79cf5a51446b2eae21f91b565348ffa95a9ebac8f95e23019012aefb57\"\n- },\n- \"verify/results/saves/cr/cr-oracle-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420\"\n- },\n- \"verify/results/saves/cr/cr-oracle-endturn.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f\"\n- },\n- \"verify/results/saves/cr/cr-replace0-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5\"\n- },\n- \"verify/results/saves/cr/cr-replace1-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235\"\n- },\n- \"verify/results/saves/determinism-hashes.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"bfa0615c4b310ae21c09a7d373d5a9d8799f36a0460089e5950fa0edf9d614d2\"\n- },\n- \"verify/results/saves/human-turn11-spytechs.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"aa63dd3d5489884f70d9c35acfb06c23c84531f403798842e7b0cf8cde94d1d4\"\n- },\n- \"verify/results/saves/human-turn15-spyprogram.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"22306d26f8831b90a62c00a2ebad5a97e77017b62ee96a7439d4c2c76c455cca\"\n- },\n- \"verify/results/saves/human-turn2-orders.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"9a94dec562622310893d6f522a0fae06f1033470f4182098e808b175e7df7c8d\"\n- },\n- \"verify/results/saves/human-turn3-noderoute.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"6db0912a050a846c8f3a184811644c76df3fdb65e83dffbf70289e21cc098a90\"\n- },\n- \"verify/results/saves/human-turn5-traderoutes.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"3829e6c6d8f26cd1183a972bd66edadbd71364c11a224b0a6e40461011bcab29\"\n- },\n- \"verify/results/saves/human-turn8-traderoutes.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"afeb3b2d724e07cf59f15eb1bdb9fcf853391fc06fe21beb20c069ff75b2f836\"\n- },\n- \"verify/results/saves/turn1-state.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"a3f9dc4b49fc669c814b09b87a9c6795de21bac80a1c7bfe3901b8e239fa36cc\"\n- },\n- \"verify/results/saves/turn2-state.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"ab4ac2d7e2977260a4de916f65c7ecc6dd5b0094dac4bb51241317232ea17ab4\"\n- },\n- \"verify/results/saves/turn2-strict-issues.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"33a169a2de29ad502e9b7c0159cd543e0b4d71f2d9b3903f5be58c7846db2429\"\n- },\n- \"verify/results/saves/turn3-state.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n- },\n- \"verify/results/saves/zuul-turn15-orders.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"ef86a0d61de3533f023af5dc2b9a5720e4e0c5c97d900d88181603a13db7d045\"\n- },\n- \"verify/results/saves/zuul-turn16-noderoute.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"b6b5d283b62cc46bca914e86c34cf45e8960a653e818e59664087429bbb30103\"\n- },\n- \"verify/results/saves/zuul-turn17-orders2.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"1b863e684edecb4afe738ba30c8132065ebcf2d9977409325e714fe0173056e8\"\n- },\n- \"verify/results/saves/zuul-turn17-rollpending.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"aac5ba5b10ff1af6b0e38c565b2f0a60c16858ee4e89dd2a2f5b037eae95ee7d\"\n- },\n- \"verify/results/saves/zuul-turn23-fleet23.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"fd3748327d87b8c478f50fcd09d097eacff21e57d946ecb43b8119b4d0d78b1b\"\n- },\n- \"verify/results/saves/zuul-turn5-species5.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"48559ab5b719b332e47b4bf43af85a616bff1508125d62edb211b80637234af6\"\n- },\n- \"verify/results/shim/ac/ac-probe-run-shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"b9b4a5f0e399e16b477cde0bd7e2c4ce378549eb5a467f7b8ae5eb64d75cb106\"\n- },\n- \"verify/results/shim/ac/ac-probe-run-watch.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"543d76d150aeb9318b9ae27acf638b8935eea30b1a2d47fb15354b584a458163\"\n- },\n- \"verify/results/shim/ad/ad-r1-shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"fec98888b030ed42b84551aac1286c0baeaf15b8a545af068dc6605615e96df0\"\n- },\n- \"verify/results/shim/aidesign/parse_aidesign.py\": {\n- \"mode\": 420,\n- \"sha256\": \"fbd4aeb71db548759bdb1ff65a5fdd0af6c192927e6ebe4b510f1083c3bdba13\"\n- },\n- \"verify/results/shim/aidesign/sd-br-p1-hashes.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"cd276116a51df01129f0e840d4c04f7964be34f75e51c384cd8df65969f458e6\"\n- },\n- \"verify/results/shim/aidesign/sd-br-p1.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"325cb9fcfa505ab2a93bbd00d60a7a4644b6b5970cb16a288cc7a43f2e825dd3\"\n- },\n- \"verify/results/shim/aidesign/sd-pin-p1-hashes.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"f0371c0a439d736ae7e67e71bd87d693481100d08243d16a1ac1f2ad0ab8bdce\"\n- },\n- \"verify/results/shim/aidesign/sd-pin-p1.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"45e693d279899e7a04cf59bda67190058896b56f3b0607d5aee21abb12f03071\"\n- },\n- \"verify/results/shim/aidesign/sd-pin-p2-hashes.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"e7d6dc12a940305087ee03dc7f8826f3c6343d24d8fea0f2aa78665d887138c9\"\n- },\n- \"verify/results/shim/aidesign/sd-pin-p2.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"b0206869206bc3a41bebb5175e31179f1a5d125a44b5ddfc10c67c4a0d13c22c\"\n- },\n- \"verify/results/shim/aidesign/sd-t15-p1-hashes.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"1ee71a623eb17e08c623ec8de3775218dc3a7c2de50d36a25dd2395382195962\"\n- },\n- \"verify/results/shim/aidesign/sd-t15-p1.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"df9f4906ee8bbb2efc9ba9a38c41607b89711d0bc9f705473d8448e9715d9280\"\n- },\n- \"verify/results/shim/aiorders/cb-c1-turn2to3.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"9d5014b346cb0fa9e2172f45db77c4437a03b069930eaaa80ea94e742891eb8f\"\n- },\n- \"verify/results/shim/aiorders/cb-c3-turn1to2-run1.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"fdaf27a32b93fdb3024f7a45f0d90b2cf833d3f592960027c3a6cf4ecbb8c616\"\n- },\n- \"verify/results/shim/aiorders/cb-c5a-turn1to2-pinned.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"d4daa0c2599c1b573ed59617243a392861dbc4e1fbeb707c7248708c015d998f\"\n- },\n- \"verify/results/shim/aiorders/cb-c5b-turn1to2-pinned.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"9682186176024242fddb901b10d9a5ad6beba91bd895c2001ca954fc293eab73\"\n- },\n- \"verify/results/shim/aiorders/l4-research-run1.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"5caf1fa25b7b8c2d6af213e59c6ec821be3c46cdd92a1024a6faf5d0a3b1d71c\"\n- },\n- \"verify/results/shim/aiorders/l4-research-run2.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"846ef2cfbc365e7ee2f481048978baf820d57026737261bfba3a328d59cdaad8\"\n- },\n- \"verify/results/shim/aiorders/l4-turn1to2-aiorders.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"c55d9b3c48cb552c02731003c26bb6dfcb8afb611c2a188d21fd4a39f550d269\"\n- },\n- \"verify/results/shim/aiorders/l4-turn1to2-hooksoff-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8\"\n- },\n- \"verify/results/shim/aiorders/l4-turn1to2-instrumented-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d\"\n- },\n- \"verify/results/shim/aiorders/l4-turn2to3-aiorders.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"696c34996e4b5be0383794fae7ea114779f7fdd0a8cdceff5a00aeb07392933a\"\n- },\n- \"verify/results/shim/airng/par-br-p1-hashes.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"656b1d0c073d9988287e5b76543e42eb1c050d9ebc9872e2b7ec5208b7534b42\"\n- },\n- \"verify/results/shim/airng/par-br-p1.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"eadf1cfb7efd7b374472867ddf1cea5f60e30096090c950049f0c264b0299398\"\n- },\n- \"verify/results/shim/airng/par-br-p2-hashes.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"d97916075c7b4c10464962e9e38aed69288a4d68a16a369c1133df16fa134146\"\n- },\n- \"verify/results/shim/airng/par-br-p2.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"bda355cbbf07301cd6d3716eba32312261c402848c91780a97a6d5cce14c3d92\"\n- },\n- \"verify/results/shim/airng/par-pin-a1-hashes.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"5eb1b557826d45fe9d843b37a92aaef54cd1b8a60900f9c34b4fe25e4bd46a24\"\n- },\n- \"verify/results/shim/airng/par-pin-a1.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"17750bab77512434dcc9e66fc86cbfc34df497cadab5b732cf3b0ef3958e09a4\"\n- },\n- \"verify/results/shim/airng/par-t1-b","metadata":{"output":"...\n\nl.json\": {\n- \"mode\": 420,\n- \"sha256\": \"3099d248d58c4395e92d65ad18c28227695a7c7935193be6c2bcf752fa0e0f04\"\n- },\n- \"verify/results/compare/unlock-b3-zuul.md\": {\n- \"mode\": 420,\n- \"sha256\": \"f53b165c8502ba9b2416935179fdea68153fb6ebd2458b4ec9b4ecf6c741c91f\"\n- },\n- \"verify/results/data-catalogs/crosslink.json\": {\n- \"mode\": 420,\n- \"sha256\": \"2966ba9780910b596e350c4f81eef5d74c4d235dc3a8d5cf6ad5fd53a407254a\"\n- },\n- \"verify/results/data-catalogs/schema_stats.json\": {\n- \"mode\": 420,\n- \"sha256\": \"6e3f669ae77cdfa2c5cd6bbd29f5cecccd452d9a7b2397c2c23db6c33fda0a2a\"\n- },\n- \"verify/results/data-catalogs/shipsections.json\": {\n- \"mode\": 420,\n- \"sha256\": \"2e7057c608d0cea755bf9dbfa291864d33e3f09ad5deff7bb3a8045bde7a4ab5\"\n- },\n- \"verify/results/data-catalogs/strings.json\": {\n- \"mode\": 420,\n- \"sha256\": \"c36c1b2b9a2eace438f93698df6388fa94aec30d372bcd0bee7e09bb33c54d7c\"\n- },\n- \"verify/results/data-catalogs/tech_tree.dot\": {\n- \"mode\": 420,\n- \"sha256\": \"96ce0492a1284167d82af2c07a8f8a0b3bb9864bc137195560d909df6a913055\"\n- },\n- \"verify/results/data-catalogs/tech_tree.json\": {\n- \"mode\": 420,\n- \"sha256\": \"18df799410c5f650e15808c1ef247b4768a3dfff93795a5ec7f56cd6c4afc597\"\n- },\n- \"verify/results/data-catalogs/weapons.json\": {\n- \"mode\": 420,\n- \"sha256\": \"a446b445c21519fc7992c84155c9652239567030843c405b4219d1f65022db01\"\n- },\n- \"verify/results/fpu-cw/README.md\": {\n- \"mode\": 420,\n- \"sha256\": \"3928fd0f6a03a8ff0b170a7ed23a059120b5014b13bf6870d4f187ff299d5975\"\n- },\n- \"verify/results/fpu-cw/cw-census.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"b7854dc5cd249a2490d04264d758f1894a9ddf4b95573650365d47587c7589d3\"\n- },\n- \"verify/results/fpu-cw/run-007f-rep/(Autosave EndTurn).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/fpu-cw/run-007f-rep/(Autosave).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918\"\n- },\n- \"verify/results/fpu-cw/run-007f-rep/shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"73b5b86da743a1cb37d4c0d97b29978923b55a7a47f80c7fa20ca47d424f6c02\"\n- },\n- \"verify/results/fpu-cw/run-007f/(Autosave EndTurn).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/fpu-cw/run-007f/(Autosave).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918\"\n- },\n- \"verify/results/fpu-cw/run-007f/shim.cfg\": {\n- \"mode\": 420,\n- \"sha256\": \"998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363\"\n- },\n- \"verify/results/fpu-cw/run-007f/shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"5721f47d7fd862156ce2cd1832cd1739636b5aee53c82323ef233ff6401775bb\"\n- },\n- \"verify/results/fpu-cw/run-007f/shim.trace.jsonl.gz\": {\n- \"mode\": 420,\n- \"sha256\": \"149c4fcf750fcf9e81dc86d8696271d9a14ca788891ac95cf96995e3737c68e4\"\n- },\n- \"verify/results/fpu-cw/run-027f/(Autosave EndTurn).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/fpu-cw/run-027f/(Autosave).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n- },\n- \"verify/results/fpu-cw/run-027f/shim.cfg\": {\n- \"mode\": 420,\n- \"sha256\": \"f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd\"\n- },\n- \"verify/results/fpu-cw/run-027f/shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"4bd3f88bd27eb2e3ae1f42f4dc2ccf1cc5df1a2c1171d2eff8be86e7be684187\"\n- },\n- \"verify/results/fpu-cw/run-027f/shim.trace.jsonl.gz\": {\n- \"mode\": 420,\n- \"sha256\": \"b5d2611d0c08946c1e1eaa244a7e44782eac2592c392efb3d7147fbbd86816e7\"\n- },\n- \"verify/results/fpu-cw/run-127f/(Autosave EndTurn).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/fpu-cw/run-127f/(Autosave).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n- },\n- \"verify/results/fpu-cw/run-127f/shim.cfg\": {\n- \"mode\": 420,\n- \"sha256\": \"1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271\"\n- },\n- \"verify/results/fpu-cw/run-127f/shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"03f1999dc8964912697782e856f89f190b6680d5732f2cd00b1569bff727a545\"\n- },\n- \"verify/results/fpu-cw/run-127f/shim.trace.jsonl.gz\": {\n- \"mode\": 420,\n- \"sha256\": \"fb1b9063cc53a6b39ea0a58e0545b9334fbd15d65dd839e72f2c4febbb1dd3f0\"\n- },\n- \"verify/results/fpu-cw/run-137f/(Autosave EndTurn).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/fpu-cw/run-137f/(Autosave).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n- },\n- \"verify/results/fpu-cw/run-137f/shim.cfg\": {\n- \"mode\": 420,\n- \"sha256\": \"8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9\"\n- },\n- \"verify/results/fpu-cw/run-137f/shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"83aa72572412d5248179397895029367685fd590d795991ab91c98cf9828ae29\"\n- },\n- \"verify/results/fpu-cw/run-137f/shim.trace.jsonl.gz\": {\n- \"mode\": 420,\n- \"sha256\": \"aad1fb6abd86beafb9f44e2c6060157e22618811d105f2379252e19008839b66\"\n- },\n- \"verify/results/fpu-cw/run-1a7f-rep/(Autosave EndTurn).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/fpu-cw/run-1a7f-rep/(Autosave).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7\"\n- },\n- \"verify/results/fpu-cw/run-1a7f-rep/shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"38f2824fbe91bf2fa1ef55473a7468707248420805b6f6dc85245fd34fa94200\"\n- },\n- \"verify/results/fpu-cw/run-1a7f/(Autosave EndTurn).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/fpu-cw/run-1a7f/(Autosave).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7\"\n- },\n- \"verify/results/fpu-cw/run-1a7f/shim.cfg\": {\n- \"mode\": 420,\n- \"sha256\": \"59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588\"\n- },\n- \"verify/results/fpu-cw/run-1a7f/shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"a1bb0bd06dae6955ec09e7d0c6cd1e68e19aa2a114256cdeae1275def0a63091\"\n- },\n- \"verify/results/fpu-cw/run-1a7f/shim.trace.jsonl.gz\": {\n- \"mode\": 420,\n- \"sha256\": \"b9a7affb8235626fcfdd5afe143e4ec03be869b6b386bd9ac78389097df88cef\"\n- },\n- \"verify/results/fpu-cw/run-off/(Autosave EndTurn).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/fpu-cw/run-off/(Autosave).sav\": {\n- \"mode\": 420,\n- \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n- },\n- \"verify/results/fpu-cw/run-off/shim.cfg\": {\n- \"mode\": 420,\n- \"sha256\": \"6a19c362121a3dba0aac857d6e998131e8b2478f19edcdcbd58006645d096c70\"\n- },\n- \"verify/results/fpu-cw/run-off/shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"9e3cbd005f0b68037681939b289834c55629bac0e9cd35ac55e6d8ef5333a116\"\n- },\n- \"verify/results/fpu-cw/run-off/shim.trace.jsonl.gz\": {\n- \"mode\": 420,\n- \"sha256\": \"ec2271c0d7e09fe51ead7f8d58859c692e8b302233191841d506ea14248caa8c\"\n- },\n- \"verify/results/fpu-cw/state-checksum-diffs.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"3417dfc1b75ad896ac6a5e974d51248eecca319565e2422e146897d19e121b68\"\n- },\n- \"verify/results/fpu-cw/trace-bitdiff.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"8f86707f26f30638097c85f0db6df219adbfebac4e9ec24f1feb8bfce112d4f2\"\n- },\n- \"verify/results/multiplayer/l2-combat-hud-client.png\": {\n- \"mode\": 420,\n- \"sha256\": \"02c86592531ab2889a0eae04e44a644d33c754096fe60aca6640068a7a3f421f\"\n- },\n- \"verify/results/multiplayer/l2-combat-hud-host.png\": {\n- \"mode\": 420,\n- \"sha256\": \"a56daf36fcc88627b29116ad9874c95a3c46960074ff9b823aa15c4ea2660dd7\"\n- },\n- \"verify/results/multiplayer/l2-combat-loading.png\": {\n- \"mode\": 420,\n- \"sha256\": \"f94a718cee08e1b7d346490058f13a107d23aaa7c269fdd53b159a75d62fa558\"\n- },\n- \"verify/results/multiplayer/l2-combat-round-draw.png\": {\n- \"mode\": 420,\n- \"sha256\": \"c1b8424540b702915302f9ff38eaf765e8e95fddc3c5c4d894438dcfcf8b6256\"\n- },\n- \"verify/results/multiplayer/l2-combat.pcap\": {\n- \"mode\": 420,\n- \"sha256\": \"0f112ef96da6c465dbda51baf99eedd66967eed61c097f643bf6c66fc26af31b\"\n- },\n- \"verify/results/multiplayer/l2-encounter-query-client.png\": {\n- \"mode\": 420,\n- \"sha256\": \"4c41b268ad256b0109483a2d9b5ba35de7b9cadb4eb32ef4a68f7867e6e747fd\"\n- },\n- \"verify/results/multiplayer/l2-encounter-query-host.png\": {\n- \"mode\": 420,\n- \"sha256\": \"8c7b0c6d65ddde45eb3447f044589ffc36500b40c4d676af8321f800162f38a0\"\n- },\n- \"verify/results/multiplayer/l2-fleet-built.png\": {\n- \"mode\": 420,\n- \"sha256\": \"6ac91fcf9b42caef50134de01804046d8e60d0fd3966592e9738ceff511949c2\"\n- },\n- \"verify/results/multiplayer/l2-lobby-client-joined.png\": {\n- \"mode\": 420,\n- \"sha256\": \"4a8e698c9ea935449ff0421cd59acd517ebffa388a7572279b28be0369141ff6\"\n- },\n- \"verify/results/multiplayer/l2-lobby-host-created.png\": {\n- \"mode\": 420,\n- \"sha256\": \"e6a7377cabafa973396cedafa5ad5b4863a42f9866709db88faf9572e0ed3c98\"\n- },\n- \"verify/results/multiplayer/l2-move-warning-dialog.png\": {\n- \"mode\": 420,\n- \"sha256\": \"43c6219d74bc0cb28495f13784cdbd3a90c89746b108824c3a2138dbdadcb53e\"\n- },\n- \"verify/results/multiplayer/l2-socks.log\": {\n- \"mode\": 420,\n- \"sha256\": \"109b630d6548d07404f9f905e6c527f10e25221698f1b66226f67f94c5f294b5\"\n- },\n- \"verify/results/multiplayer/l2-turn13-client.png\": {\n- \"mode\": 420,\n- \"sha256\": \"d19f17c4219f21f6c9950440d528a1a91fe3907761df21fd0ba99321b8820baa\"\n- },\n- \"verify/results/multiplayer/l2-turn13-host.png\": {\n- \"mode\": 420,\n- \"sha256\": \"811efcfb571d60435f772a3b619bb329717d1e162b88e440ec0d636b1c6042fc\"\n- },\n- \"verify/results/multiplayer/w2-internet-browser-no-error.png\": {\n- \"mode\": 420,\n- \"sha256\": \"6409b977056c95b29928a0098f75fffd71c501128f9d9325c3000837131c8791\"\n- },\n- \"verify/results/multiplayer/w2-join-manually-dialog.png\": {\n- \"mode\": 420,\n- \"sha256\": \"86904e94a5aec41c1e89271d2712558c3b5055bd2ae4fededfda103d1e22fb71\"\n- },\n- \"verify/results/multiplayer/w2-lan-browse-listing.png\": {\n- \"mode\": 420,\n- \"sha256\": \"6f5d16fa719fb63dd627fba551221c7665b69002e83fe35b8d84912cd7d8ce83\"\n- },\n- \"verify/results/multiplayer/w2-lobby-client.png\": {\n- \"mode\": 420,\n- \"sha256\": \"ede652b21e2a4ea07c8132e4080ba903d1052ebca336bb007e1e8efa62787f10\"\n- },\n- \"verify/results/multiplayer/w2-mp-turn1.png\": {\n- \"mode\": 420,\n- \"sha256\": \"59f9a1f5d8c0fff45d3ae3406dfd9878a5915f18e999d909a5238a90a3b86ed6\"\n- },\n- \"verify/results/multiplayer/w2-mp-turn2-client.png\": {\n- \"mode\": 420,\n- \"sha256\": \"d9da4c151cd8290f80b31eb5ed8a74a0a30a87d1f7a80a179fa082a9439e08e5\"\n- },\n- \"verify/results/multiplayer/w2-mp-turn2-host.png\": {\n- \"mode\": 420,\n- \"sha256\": \"910efd36b4a7c1a85d8ad487660f856339af037b9b00fef0cafd5e77ebdc36e5\"\n- },\n- \"verify/results/multiplayer/w2-tier0-filtered.pcap\": {\n- \"mode\": 420,\n- \"sha256\": \"e108778fd1afb7718c53a4164310b8523415ef073706d310583dab424e5921cc\"\n- },\n- \"verify/results/saves/ac-turn20-raider.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"ee787db8f63d8f564c597bd5a82709790a0fdf47827912037f96b736f2cbed34\"\n- },\n- \"verify/results/saves/ac-turn22-raider.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"0faeaa601e6a867876819e5646b85f8787851093b8e6bd6e3946eb867f2dcc74\"\n- },\n- \"verify/results/saves/ad-oracle-A-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"a634510e7208cceb10d8ce016ceb0153601f11d7291f08122bcdb6418e313331\"\n- },\n- \"verify/results/saves/ad-oracle-B-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"676b1778880b5d4784ba7f6ef48b1a8e56745adab70a815943b7744876686260\"\n- },\n- \"verify/results/saves/ad-turn27-two-raiders.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"1c8baa27680809d585ab1728391e82729642d32aaedffd5bf95b616f0a11a436\"\n- },\n- \"verify/results/saves/ap-deploy-turn15.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"844f2b746060dc2c4e2099cdc6ceffd5f55ef858c9e347df28c8aca3041f7165\"\n- },\n- \"verify/results/saves/ap-oa-turn16.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"e296394f578b3a5668e5934b9eec8d6c4638ca7411200078f97de1abd346f4c5\"\n- },\n- \"verify/results/saves/ap-ob-turn16.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"262f8bda97c9511d8d2b41e6a8a0582d6f5364c2b01b1caf99e639d0e4f53ebe\"\n- },\n- \"verify/results/saves/ap-turn22-spydetected.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"91381bd7e722ac3847795a402d78ebb31d74dbb5d2909f33d243aec3ef8abaf8\"\n- },\n- \"verify/results/saves/ap-turn25-spydestroyed.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"46380fcf4498d67507e4471eb9ee3762647c53ee5473be142fe5c34e37344bc3\"\n- },\n- \"verify/results/saves/ar-oracle-A-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38\"\n- },\n- \"verify/results/saves/ar-oracle-A-pre.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca\"\n- },\n- \"verify/results/saves/ar-oracle-B-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38\"\n- },\n- \"verify/results/saves/ar-r1-turn43-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"37f4a54fd32303fdcc86522b07104fbf2fcb124eec9b1f7005b3446fefcc429f\"\n- },\n- \"verify/results/saves/ar-r2-probes8-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38\"\n- },\n- \"verify/results/saves/ar-turn37-816raiders.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"b6f4e05ff226eabd1695003b36293553642553cea96ef417364393e2332a7094\"\n- },\n- \"verify/results/saves/as-turn14-predeploy.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"53986f8511cbf9920f32e2ea406ccf531dd08903fa5d06024fcf03ea7627221d\"\n- },\n- \"verify/results/saves/as-turn15-spydeployed.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"854a10fa1ea602f0f7909f9bf9154942e56ea5fa1db4cce47d6d32bf53952e08\"\n- },\n- \"verify/results/saves/az-turn11-16destroyers.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"501583c7cf2ac81c9db3191203cd3dc5ba5b9e228b9b9ce3dbdcc3650d0070a9\"\n- },\n- \"verify/results/saves/az-turn23-tarka-comraid.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"3d5eb826c149d1fd0278c746f32e6148ca9883a1bc5b522c0d5e6e13fac9788a\"\n- },\n- \"verify/results/saves/bp-pinA-turn28.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"e913ff41188211c02d536da616337544e64133996cd7cc7a6521a8df1960226f\"\n- },\n- \"verify/results/saves/bp-pinB-turn28.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"724528ffde9a7514b69ab9e82ed3b8c8ade63d622c0720de30503a73a92df11e\"\n- },\n- \"verify/results/saves/bp-turn28-pre.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"16f63adbf383946db17c381998957172bca803406b7df78f3b03805fef0bbcb8\"\n- },\n- \"verify/results/saves/bq/bq-1A-endturn.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39\"\n- },\n- \"verify/results/saves/bq/bq-1A-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"56980aa086e1a145b00f781b9d9cf618b152986f1c2267b9fd96cca0f1f604b9\"\n- },\n- \"verify/results/saves/bq/bq-1B-endturn.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39\"\n- },\n- \"verify/results/saves/bq/bq-1B-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"b36ac0ec2986f3a814dd22ca312c895ba6ec8a0e55fca54d8a7fd08a2f96a2c4\"\n- },\n- \"verify/results/saves/bq/bq-1bA-endturn.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21\"\n- },\n- \"verify/results/saves/bq/bq-1bA-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10\"\n- },\n- \"verify/results/saves/bq/bq-1bB-endturn.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21\"\n- },\n- \"verify/results/saves/bq/bq-1bB-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10\"\n- },\n- \"verify/results/saves/bq/bq-res-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"28bbd9b5c377afcd8f075b535eb1036ee46acf71ab614e7091ccdbdfb3703db2\"\n- },\n- \"verify/results/saves/bs/bs-C-endturn.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca\"\n- },\n- \"verify/results/saves/bs/bs-C-f38-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"0fe8f37479a702d2e4e7752e6cb160dc242f00a082dc4115b7d10c77b24989f0\"\n- },\n- \"verify/results/saves/bs/bs-C-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38\"\n- },\n- \"verify/results/saves/bs/bs-L-endturn.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21\"\n- },\n- \"verify/results/saves/bs/bs-L-post.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10\"\n- },\n- \"verify/results/saves/cb-c3-turn1to2-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8\"\n- },\n- \"verify/results/saves/cb-c5a-turn1to2-pinned-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8\"\n- },\n- \"verify/results/saves/cb-c5b-turn1to2-pinned-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8\"\n- },\n- \"verify/results/saves/cb-turn2to3-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n- },\n- \"verify/results/saves/cb-turn2to3-endturn.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948\"\n- },\n- \"verify/results/saves/certified-pairs.md\": {\n- \"mode\": 420,\n- \"sha256\": \"4e1cfb79cf5a51446b2eae21f91b565348ffa95a9ebac8f95e23019012aefb57\"\n- },\n- \"verify/results/saves/cr/cr-oracle-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420\"\n- },\n- \"verify/results/saves/cr/cr-oracle-endturn.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f\"\n- },\n- \"verify/results/saves/cr/cr-replace0-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5\"\n- },\n- \"verify/results/saves/cr/cr-replace1-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235\"\n- },\n- \"verify/results/saves/determinism-hashes.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"bfa0615c4b310ae21c09a7d373d5a9d8799f36a0460089e5950fa0edf9d614d2\"\n- },\n- \"verify/results/saves/human-turn11-spytechs.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"aa63dd3d5489884f70d9c35acfb06c23c84531f403798842e7b0cf8cde94d1d4\"\n- },\n- \"verify/results/saves/human-turn15-spyprogram.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"22306d26f8831b90a62c00a2ebad5a97e77017b62ee96a7439d4c2c76c455cca\"\n- },\n- \"verify/results/saves/human-turn2-orders.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"9a94dec562622310893d6f522a0fae06f1033470f4182098e808b175e7df7c8d\"\n- },\n- \"verify/results/saves/human-turn3-noderoute.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"6db0912a050a846c8f3a184811644c76df3fdb65e83dffbf70289e21cc098a90\"\n- },\n- \"verify/results/saves/human-turn5-traderoutes.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"3829e6c6d8f26cd1183a972bd66edadbd71364c11a224b0a6e40461011bcab29\"\n- },\n- \"verify/results/saves/human-turn8-traderoutes.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"afeb3b2d724e07cf59f15eb1bdb9fcf853391fc06fe21beb20c069ff75b2f836\"\n- },\n- \"verify/results/saves/turn1-state.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"a3f9dc4b49fc669c814b09b87a9c6795de21bac80a1c7bfe3901b8e239fa36cc\"\n- },\n- \"verify/results/saves/turn2-state.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"ab4ac2d7e2977260a4de916f65c7ecc6dd5b0094dac4bb51241317232ea17ab4\"\n- },\n- \"verify/results/saves/turn2-strict-issues.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"33a169a2de29ad502e9b7c0159cd543e0b4d71f2d9b3903f5be58c7846db2429\"\n- },\n- \"verify/results/saves/turn3-state.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n- },\n- \"verify/results/saves/zuul-turn15-orders.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"ef86a0d61de3533f023af5dc2b9a5720e4e0c5c97d900d88181603a13db7d045\"\n- },\n- \"verify/results/saves/zuul-turn16-noderoute.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"b6b5d283b62cc46bca914e86c34cf45e8960a653e818e59664087429bbb30103\"\n- },\n- \"verify/results/saves/zuul-turn17-orders2.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"1b863e684edecb4afe738ba30c8132065ebcf2d9977409325e714fe0173056e8\"\n- },\n- \"verify/results/saves/zuul-turn17-rollpending.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"aac5ba5b10ff1af6b0e38c565b2f0a60c16858ee4e89dd2a2f5b037eae95ee7d\"\n- },\n- \"verify/results/saves/zuul-turn23-fleet23.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"fd3748327d87b8c478f50fcd09d097eacff21e57d946ecb43b8119b4d0d78b1b\"\n- },\n- \"verify/results/saves/zuul-turn5-species5.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"48559ab5b719b332e47b4bf43af85a616bff1508125d62edb211b80637234af6\"\n- },\n- \"verify/results/shim/ac/ac-probe-run-shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"b9b4a5f0e399e16b477cde0bd7e2c4ce378549eb5a467f7b8ae5eb64d75cb106\"\n- },\n- \"verify/results/shim/ac/ac-probe-run-watch.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"543d76d150aeb9318b9ae27acf638b8935eea30b1a2d47fb15354b584a458163\"\n- },\n- \"verify/results/shim/ad/ad-r1-shim.log\": {\n- \"mode\": 420,\n- \"sha256\": \"fec98888b030ed42b84551aac1286c0baeaf15b8a545af068dc6605615e96df0\"\n- },\n- \"verify/results/shim/aidesign/parse_aidesign.py\": {\n- \"mode\": 420,\n- \"sha256\": \"fbd4aeb71db548759bdb1ff65a5fdd0af6c192927e6ebe4b510f1083c3bdba13\"\n- },\n- \"verify/results/shim/aidesign/sd-br-p1-hashes.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"cd276116a51df01129f0e840d4c04f7964be34f75e51c384cd8df65969f458e6\"\n- },\n- \"verify/results/shim/aidesign/sd-br-p1.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"325cb9fcfa505ab2a93bbd00d60a7a4644b6b5970cb16a288cc7a43f2e825dd3\"\n- },\n- \"verify/results/shim/aidesign/sd-pin-p1-hashes.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"f0371c0a439d736ae7e67e71bd87d693481100d08243d16a1ac1f2ad0ab8bdce\"\n- },\n- \"verify/results/shim/aidesign/sd-pin-p1.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"45e693d279899e7a04cf59bda67190058896b56f3b0607d5aee21abb12f03071\"\n- },\n- \"verify/results/shim/aidesign/sd-pin-p2-hashes.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"e7d6dc12a940305087ee03dc7f8826f3c6343d24d8fea0f2aa78665d887138c9\"\n- },\n- \"verify/results/shim/aidesign/sd-pin-p2.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"b0206869206bc3a41bebb5175e31179f1a5d125a44b5ddfc10c67c4a0d13c22c\"\n- },\n- \"verify/results/shim/aidesign/sd-t15-p1-hashes.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"1ee71a623eb17e08c623ec8de3775218dc3a7c2de50d36a25dd2395382195962\"\n- },\n- \"verify/results/shim/aidesign/sd-t15-p1.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"df9f4906ee8bbb2efc9ba9a38c41607b89711d0bc9f705473d8448e9715d9280\"\n- },\n- \"verify/results/shim/aiorders/cb-c1-turn2to3.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"9d5014b346cb0fa9e2172f45db77c4437a03b069930eaaa80ea94e742891eb8f\"\n- },\n- \"verify/results/shim/aiorders/cb-c3-turn1to2-run1.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"fdaf27a32b93fdb3024f7a45f0d90b2cf833d3f592960027c3a6cf4ecbb8c616\"\n- },\n- \"verify/results/shim/aiorders/cb-c5a-turn1to2-pinned.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"d4daa0c2599c1b573ed59617243a392861dbc4e1fbeb707c7248708c015d998f\"\n- },\n- \"verify/results/shim/aiorders/cb-c5b-turn1to2-pinned.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"9682186176024242fddb901b10d9a5ad6beba91bd895c2001ca954fc293eab73\"\n- },\n- \"verify/results/shim/aiorders/l4-research-run1.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"5caf1fa25b7b8c2d6af213e59c6ec821be3c46cdd92a1024a6faf5d0a3b1d71c\"\n- },\n- \"verify/results/shim/aiorders/l4-research-run2.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"846ef2cfbc365e7ee2f481048978baf820d57026737261bfba3a328d59cdaad8\"\n- },\n- \"verify/results/shim/aiorders/l4-turn1to2-aiorders.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"c55d9b3c48cb552c02731003c26bb6dfcb8afb611c2a188d21fd4a39f550d269\"\n- },\n- \"verify/results/shim/aiorders/l4-turn1to2-hooksoff-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8\"\n- },\n- \"verify/results/shim/aiorders/l4-turn1to2-instrumented-autosave.sav\": {\n- \"mode\": 420,\n- \"sha256\": \"e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d\"\n- },\n- \"verify/results/shim/aiorders/l4-turn2to3-aiorders.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"696c34996e4b5be0383794fae7ea114779f7fdd0a8cdceff5a00aeb07392933a\"\n- },\n- \"verify/results/shim/airng/par-br-p1-hashes.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"656b1d0c073d9988287e5b76543e42eb1c050d9ebc9872e2b7ec5208b7534b42\"\n- },\n- \"verify/results/shim/airng/par-br-p1.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"eadf1cfb7efd7b374472867ddf1cea5f60e30096090c950049f0c264b0299398\"\n- },\n- \"verify/results/shim/airng/par-br-p2-hashes.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"d97916075c7b4c10464962e9e38aed69288a4d68a16a369c1133df16fa134146\"\n- },\n- \"verify/results/shim/airng/par-br-p2.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"bda355cbbf07301cd6d3716eba32312261c402848c91780a97a6d5cce14c3d92\"\n- },\n- \"verify/results/shim/airng/par-pin-a1-hashes.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"5eb1b557826d45fe9d843b37a92aaef54cd1b8a60900f9c34b4fe25e4bd46a24\"\n- },\n- \"verify/results/shim/airng/par-pin-a1.txt\": {\n- \"mode\": 420,\n- \"sha256\": \"17750bab77512434dcc9e66fc86cbfc34df497cadab5b732cf3b0ef3958e09a4\"\n- },\n- \"verify/results/shim/airng/par-t1-b","exit":1,"truncated":true,"outputPath":"/home/alex/.local/share/opencode/tool-output/tool_08b70154a0013Mgqxc7IiG91s2"},"title":"git -C /home/alex/sots-re diff --no-index -- campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.json","time":{"start":1789045773626,"end":1789045773643}},"metadata":{"openai":{"itemId":"fc_0da6f30fb0052d24016aa2ac0d622887d18c9770866c41553b"}},"id":"prt_08b7015280017dYZRrYhgpHwus","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6fe090001XStEFyBT1qquvn"}} +{"type":"tool_use","timestamp":1789045773667,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_XxRgqXwaaF2ItYQOvVRmXK4l","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\nfile\n\n1: \n2: /home/alex/sots-re/dumps/sots.exe: file format pei-i386\n3: \n4: \n5: Disassembly of section .text:\n6: \n7: 00779850 <.text+0x378850>:\n8: 779850:\t55 \tpush ebp\n9: 779851:\t8b ec \tmov ebp,esp\n10: 779853:\t6a ff \tpush 0xffffffff\n11: 779855:\t68 10 7b 98 00 \tpush 0x987b10\n12: 77985a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n13: 779860:\t50 \tpush eax\n14: 779861:\t83 ec 08 \tsub esp,0x8\n15: 779864:\t53 \tpush ebx\n16: 779865:\t56 \tpush esi\n17: 779866:\t57 \tpush edi\n18: 779867:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n19: 77986c:\t33 c5 \txor eax,ebp\n20: 77986e:\t50 \tpush eax\n21: 77986f:\t8d 45 f4 \tlea eax,[ebp-0xc]\n22: 779872:\t64 a3 00 00 00 00 \tmov fs:0x0,eax\n23: 779878:\t89 65 f0 \tmov DWORD PTR [ebp-0x10],esp\n24: 77987b:\t8b f1 \tmov esi,ecx\n25: 77987d:\t89 75 ec \tmov DWORD PTR [ebp-0x14],esi\n26: 779880:\t8b 5d 08 \tmov ebx,DWORD PTR [ebp+0x8]\n27: 779883:\t33 c0 \txor eax,eax\n28: 779885:\t89 06 \tmov DWORD PTR [esi],eax\n29: 779887:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n30: 77988a:\t89 46 08 \tmov DWORD PTR [esi+0x8],eax\n31: 77988d:\t8b 4b 04 \tmov ecx,DWORD PTR [ebx+0x4]\n32: 779890:\t2b 0b \tsub ecx,DWORD PTR [ebx]\n33: 779892:\tb8 09 cb 3d 8d \tmov eax,0x8d3dcb09\n34: 779897:\tf7 e9 \timul ecx\n35: 779899:\t03 d1 \tadd edx,ecx\n36: 77989b:\tc1 fa 06 \tsar edx,0x6\n37: 77989e:\t8b fa \tmov edi,edx\n38: 7798a0:\tb8 00 00 00 00 \tmov eax,0x0\n39: 7798a5:\tc1 ef 1f \tshr edi,0x1f\n40: 7798a8:\t03 fa \tadd edi,edx\n41: 7798aa:\t89 06 \tmov DWORD PTR [esi],eax\n42: 7798ac:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n43: 7798af:\t89 46 08 \tmov DWORD PTR [esi+0x8],eax\n44: 7798b2:\t74 4b \tje 0x7798ff\n45: 7798b4:\t81 ff 2c f7 34 02 \tcmp edi,0x234f72c\n46: 7798ba:\t76 0b \tjbe 0x7798c7\n47: 7798bc:\t68 90 1f 9e 00 \tpush 0x9e1f90\n48: 7798c1:\tff 15 50 d1 9d 00 \tcall DWORD PTR ds:0x9dd150\n49: 7798c7:\t8d 4e 0c \tlea ecx,[esi+0xc]\n50: 7798ca:\t57 \tpush edi\n51: 7798cb:\te8 70 16 01 00 \tcall 0x78af40\n52: 7798d0:\t6b ff 74 \timul edi,edi,0x74\n53: 7798d3:\t8b 55 08 \tmov edx,DWORD PTR [ebp+0x8]\n54: 7798d6:\t52 \tpush edx\n55: 7798d7:\t8d 56 0c \tlea edx,[esi+0xc]\n56: 7798da:\t52 \tpush edx\n57: 7798db:\t03 f8 \tadd edi,eax\n58: 7798dd:\t89 06 \tmov DWORD PTR [esi],eax\n59: 7798df:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n60: 7798e2:\t89 7e 08 \tmov DWORD PTR [esi+0x8],edi\n61: 7798e5:\t8b 4b 04 \tmov ecx,DWORD PTR [ebx+0x4]\n62: 7798e8:\t8b 1b \tmov ebx,DWORD PTR [ebx]\n63: 7798ea:\t50 \tpush eax\n64: 7798eb:\t51 \tpush ecx\n65: 7798ec:\t53 \tpush ebx\n66: 7798ed:\tc7 45 fc 00 00 00 00 \tmov DWORD PTR [ebp-0x4],0x0\n67: 7798f4:\te8 a7 8c ff ff \tcall 0x7725a0\n68: 7798f9:\t83 c4 14 \tadd esp,0x14\n69: 7798fc:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n70: 7798ff:\t8b c6 \tmov eax,esi\n71: 779901:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n72: 779904:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n73: 77990b:\t59 \tpop ecx\n74: 77990c:\t5f \tpop edi\n75: 77990d:\t5e \tpop esi\n76: 77990e:\t5b \tpop ebx\n77: 77990f:\t8b e5 \tmov esp,ebp\n78: 779911:\t5d \tpop ebp\n79: 779912:\tc2 04 00 \tret 0x4\n80: 779915:\t8b 4d ec \tmov ecx,DWORD PTR [ebp-0x14]\n81: 779918:\te8 63 fc ea ff \tcall 0x629580\n82: 77991d:\t6a 00 \tpush 0x0\n83: 77991f:\t6a 00 \tpush 0x0\n84: 779921:\te8 96 b6 1a 00 \tcall 0x924fbc\n85: 779926:\tcc \tint3 \n86: 779927:\tcc \tint3 \n87: 779928:\tcc \tint3 \n88: 779929:\tcc \tint3 \n89: 77992a:\tcc \tint3 \n90: 77992b:\tcc \tint3 \n91: 77992c:\tcc \tint3 \n92: 77992d:\tcc \tint3 \n93: 77992e:\tcc \tint3 \n94: 77992f:\tcc \tint3 \n\n(End of file - total 94 lines)\n","metadata":{"preview":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00779850 <.text+0x378850>:\n 779850:\t55 \tpush ebp\n 779851:\t8b ec \tmov ebp,esp\n 779853:\t6a ff \tpush 0xffffffff\n 779855:\t68 10 7b 98 00 \tpush 0x987b10\n 77985a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n 779860:\t50 \tpush eax\n 779861:\t83 ec 08 \tsub esp,0x8\n 779864:\t53 \tpush ebx\n 779865:\t56 \tpush esi\n 779866:\t57 \tpush edi\n 779867:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n 77986c:\t33 c5 \txor eax,ebp\n 77986e:\t50 \tpush eax","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt","text":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00779850 <.text+0x378850>:\n 779850:\t55 \tpush ebp\n 779851:\t8b ec \tmov ebp,esp\n 779853:\t6a ff \tpush 0xffffffff\n 779855:\t68 10 7b 98 00 \tpush 0x987b10\n 77985a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n 779860:\t50 \tpush eax\n 779861:\t83 ec 08 \tsub esp,0x8\n 779864:\t53 \tpush ebx\n 779865:\t56 \tpush esi\n 779866:\t57 \tpush edi\n 779867:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n 77986c:\t33 c5 \txor eax,ebp\n 77986e:\t50 \tpush eax\n 77986f:\t8d 45 f4 \tlea eax,[ebp-0xc]\n 779872:\t64 a3 00 00 00 00 \tmov fs:0x0,eax\n 779878:\t89 65 f0 \tmov DWORD PTR [ebp-0x10],esp\n 77987b:\t8b f1 \tmov esi,ecx\n 77987d:\t89 75 ec \tmov DWORD PTR [ebp-0x14],esi\n 779880:\t8b 5d 08 \tmov ebx,DWORD PTR [ebp+0x8]\n 779883:\t33 c0 \txor eax,eax\n 779885:\t89 06 \tmov DWORD PTR [esi],eax\n 779887:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n 77988a:\t89 46 08 \tmov DWORD PTR [esi+0x8],eax\n 77988d:\t8b 4b 04 \tmov ecx,DWORD PTR [ebx+0x4]\n 779890:\t2b 0b \tsub ecx,DWORD PTR [ebx]\n 779892:\tb8 09 cb 3d 8d \tmov eax,0x8d3dcb09\n 779897:\tf7 e9 \timul ecx\n 779899:\t03 d1 \tadd edx,ecx\n 77989b:\tc1 fa 06 \tsar edx,0x6\n 77989e:\t8b fa \tmov edi,edx\n 7798a0:\tb8 00 00 00 00 \tmov eax,0x0\n 7798a5:\tc1 ef 1f \tshr edi,0x1f\n 7798a8:\t03 fa \tadd edi,edx\n 7798aa:\t89 06 \tmov DWORD PTR [esi],eax\n 7798ac:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n 7798af:\t89 46 08 \tmov DWORD PTR [esi+0x8],eax\n 7798b2:\t74 4b \tje 0x7798ff\n 7798b4:\t81 ff 2c f7 34 02 \tcmp edi,0x234f72c\n 7798ba:\t76 0b \tjbe 0x7798c7\n 7798bc:\t68 90 1f 9e 00 \tpush 0x9e1f90\n 7798c1:\tff 15 50 d1 9d 00 \tcall DWORD PTR ds:0x9dd150\n 7798c7:\t8d 4e 0c \tlea ecx,[esi+0xc]\n 7798ca:\t57 \tpush edi\n 7798cb:\te8 70 16 01 00 \tcall 0x78af40\n 7798d0:\t6b ff 74 \timul edi,edi,0x74\n 7798d3:\t8b 55 08 \tmov edx,DWORD PTR [ebp+0x8]\n 7798d6:\t52 \tpush edx\n 7798d7:\t8d 56 0c \tlea edx,[esi+0xc]\n 7798da:\t52 \tpush edx\n 7798db:\t03 f8 \tadd edi,eax\n 7798dd:\t89 06 \tmov DWORD PTR [esi],eax\n 7798df:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n 7798e2:\t89 7e 08 \tmov DWORD PTR [esi+0x8],edi\n 7798e5:\t8b 4b 04 \tmov ecx,DWORD PTR [ebx+0x4]\n 7798e8:\t8b 1b \tmov ebx,DWORD PTR [ebx]\n 7798ea:\t50 \tpush eax\n 7798eb:\t51 \tpush ecx\n 7798ec:\t53 \tpush ebx\n 7798ed:\tc7 45 fc 00 00 00 00 \tmov DWORD PTR [ebp-0x4],0x0\n 7798f4:\te8 a7 8c ff ff \tcall 0x7725a0\n 7798f9:\t83 c4 14 \tadd esp,0x14\n 7798fc:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n 7798ff:\t8b c6 \tmov eax,esi\n 779901:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 779904:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 77990b:\t59 \tpop ecx\n 77990c:\t5f \tpop edi\n 77990d:\t5e \tpop esi\n 77990e:\t5b \tpop ebx\n 77990f:\t8b e5 \tmov esp,ebp\n 779911:\t5d \tpop ebp\n 779912:\tc2 04 00 \tret 0x4\n 779915:\t8b 4d ec \tmov ecx,DWORD PTR [ebp-0x14]\n 779918:\te8 63 fc ea ff \tcall 0x629580\n 77991d:\t6a 00 \tpush 0x0\n 77991f:\t6a 00 \tpush 0x0\n 779921:\te8 96 b6 1a 00 \tcall 0x924fbc\n 779926:\tcc \tint3 \n 779927:\tcc \tint3 \n 779928:\tcc \tint3 \n 779929:\tcc \tint3 \n 77992a:\tcc \tint3 \n 77992b:\tcc \tint3 \n 77992c:\tcc \tint3 \n 77992d:\tcc \tint3 \n 77992e:\tcc \tint3 \n 77992f:\tcc \tint3 ","lineStart":1,"lineEnd":94,"totalLines":94,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt","time":{"start":1789045773647,"end":1789045773665}},"metadata":{"openai":{"itemId":"fc_0da6f30fb0052d24016aa2ac0d623c87d19e2fb0cf35d88b1c"}},"id":"prt_08b70153d001lg8J8Ujy4d1h3h","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6fe090001XStEFyBT1qquvn"}} +{"type":"tool_use","timestamp":1789045773670,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_pyZtQHINByUjnwGoKTC26ldM","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md"},"output":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\nfile\n\n1: # Verification plan — run-d6c4dc15e9f4d15155fee856\n2: \n3: Role `verifier`; actor `research-abi-correction-verifier`; requested model\n4: `openai/gpt-5.6-sol`. This plan predates this session's disassembly and save-state experiments.\n5: \n6: ## Scope separation\n7: \n8: The analyst package is a fresh **static capture**, not live allocator execution, original-assisted\n9: execution, partial/full compare, independent replacement, or integrated replay. This verifier will\n10: independently reproduce static instruction/byte facts and archived save values only. It will not\n11: claim runtime allocator safety, event posting, replacement acceptance, or integrated-tree evidence.\n12: \n13: ## Falsifiers\n14: \n15: 1. Reject if contract/campaign validation fails, an open surprise exists, either paired worktree is\n16: not at its pinned baseline/common repository, source binding differs from the handoff, or binary\n17: or objdump identity differs. Dirty trees are acceptable only when their full source digests match.\n18: 2. Reject zero executions, nonzero command exits, empty required stdout, unexpected stderr/skips,\n19: missing streams, reused output, or a manifest/session mismatch.\n20: 3. Require stop `0x00779a20` to be incomplete despite exit zero: raw bytes must show `74 10` while\n21: decoded output at `0x00779a1f` shows only `74`. If counted as a complete stream, reject.\n22: 4. Require aligned stops `0x00779a21`, `0x00779a23`, and `0x00779a28` to add exactly complete\n23: `74 10`, `8b cf`, and `e8 28 6a ff ff` rows. Any truncated terminal row or non-prefix change in\n24: the shared decoded range rejects the boundary interpretation.\n25: 5. Independently hold out stop `0x00779913` for nested-copy authority. It must include complete\n26: `ret 4` at `0x00779912` without entering the later routine; compare it with raw terminal bytes.\n27: A bad terminal boundary or changed preceding rows falsifies the package's authority boundary.\n28: 6. Check key ABI claims directly: get/create and outer append end `ret 4`; nested destruction ends\n29: `ret`; nested copy has normal `ret 4`, unwind cleanup, and deallocation paths; get/create has no\n30: write to temporary `[ebp-0x20]` before append, copies source `+4`, cleans the temporary nested\n31: vector, then stores requested turn to the stored element. Contradictory def/use evidence pauses.\n32: 7. Independently parse the archived save, not narrative counters. Require the named player/event\n33: container elements, IDs, strings, exact `0x7f7fffff` position words, and empty player states to\n34: match. Missing parse coverage or unexpected skips reject archived-value validation.\n35: 8. Check actual RNG evidence independently: static helper captures execute no game and therefore\n36: expose no RNG state/draws. Any claim that unchanged/zero RNG was measured by these captures is a\n37: failure. Archived W1 unchanged RNG remains historical and outside this static reproduction.\n38: \n39: ## Required branch exposures and distinct states\n40: \n41: Static instruction exposure required now: existing last-match return versus miss; spare-capacity\n42: append versus full-capacity growth edges; empty versus nonempty nested copy; null versus nonnull\n43: nested destruction; normal return versus unwind cleanup; short/long string branch instructions;\n44: known-bad truncated versus aligned boundary. Instruction exposure is not runtime execution.\n45: \n46: Runtime states still unexercised and must remain explicit residuals: existing-last-match, miss with\n47: spare/full outer capacity, empty/nonempty nested vectors owning short/long strings, deliberate\n48: allocation failure/throw, duplicate/description-only-different events, and transient stack\n49: sentinels. Archived save states are distinct from all of those and validate serialized values only.\n50: \n51: ## Planned reproduction\n52: \n53: Create a fail-if-exists session directory owned by this verifier. Use an independent script, not the\n54: analyst's hard-coded recipe, to bind source/input/tool identities, run the package windows and held-\n55: out boundary, archive raw stdout/stderr, parse instruction rows and save values, and emit a manifest\n56: whose failed predictions/residuals remain failures or limitations.\n\n(End of file - total 56 lines)\n","metadata":{"preview":"# Verification plan — run-d6c4dc15e9f4d15155fee856\n\nRole `verifier`; actor `research-abi-correction-verifier`; requested model\n`openai/gpt-5.6-sol`. This plan predates this session's disassembly and save-state experiments.\n\n## Scope separation\n\nThe analyst package is a fresh **static capture**, not live allocator execution, original-assisted\nexecution, partial/full compare, independent replacement, or integrated replay. This verifier will\nindependently reproduce static instruction/byte facts and archived save values only. It will not\nclaim runtime allocator safety, event posting, replacement acceptance, or integrated-tree evidence.\n\n## Falsifiers\n\n1. Reject if contract/campaign validation fails, an open surprise exists, either paired worktree is\n not at its pinned baseline/common repository, source binding differs from the handoff, or binary\n or objdump identity differs. Dirty trees are acceptable only when their full source digests match.\n2. Reject zero executions, nonzero command exits, empty required stdout, unexpected stderr/skips,\n missing streams, reused output, or a manifest/session mismatch.\n3. Require stop `0x00779a20` to be incomplete despite exit zero: raw bytes must show `74 10` while","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md","text":"# Verification plan — run-d6c4dc15e9f4d15155fee856\n\nRole `verifier`; actor `research-abi-correction-verifier`; requested model\n`openai/gpt-5.6-sol`. This plan predates this session's disassembly and save-state experiments.\n\n## Scope separation\n\nThe analyst package is a fresh **static capture**, not live allocator execution, original-assisted\nexecution, partial/full compare, independent replacement, or integrated replay. This verifier will\nindependently reproduce static instruction/byte facts and archived save values only. It will not\nclaim runtime allocator safety, event posting, replacement acceptance, or integrated-tree evidence.\n\n## Falsifiers\n\n1. Reject if contract/campaign validation fails, an open surprise exists, either paired worktree is\n not at its pinned baseline/common repository, source binding differs from the handoff, or binary\n or objdump identity differs. Dirty trees are acceptable only when their full source digests match.\n2. Reject zero executions, nonzero command exits, empty required stdout, unexpected stderr/skips,\n missing streams, reused output, or a manifest/session mismatch.\n3. Require stop `0x00779a20` to be incomplete despite exit zero: raw bytes must show `74 10` while\n decoded output at `0x00779a1f` shows only `74`. If counted as a complete stream, reject.\n4. Require aligned stops `0x00779a21`, `0x00779a23`, and `0x00779a28` to add exactly complete\n `74 10`, `8b cf`, and `e8 28 6a ff ff` rows. Any truncated terminal row or non-prefix change in\n the shared decoded range rejects the boundary interpretation.\n5. Independently hold out stop `0x00779913` for nested-copy authority. It must include complete\n `ret 4` at `0x00779912` without entering the later routine; compare it with raw terminal bytes.\n A bad terminal boundary or changed preceding rows falsifies the package's authority boundary.\n6. Check key ABI claims directly: get/create and outer append end `ret 4`; nested destruction ends\n `ret`; nested copy has normal `ret 4`, unwind cleanup, and deallocation paths; get/create has no\n write to temporary `[ebp-0x20]` before append, copies source `+4`, cleans the temporary nested\n vector, then stores requested turn to the stored element. Contradictory def/use evidence pauses.\n7. Independently parse the archived save, not narrative counters. Require the named player/event\n container elements, IDs, strings, exact `0x7f7fffff` position words, and empty player states to\n match. Missing parse coverage or unexpected skips reject archived-value validation.\n8. Check actual RNG evidence independently: static helper captures execute no game and therefore\n expose no RNG state/draws. Any claim that unchanged/zero RNG was measured by these captures is a\n failure. Archived W1 unchanged RNG remains historical and outside this static reproduction.\n\n## Required branch exposures and distinct states\n\nStatic instruction exposure required now: existing last-match return versus miss; spare-capacity\nappend versus full-capacity growth edges; empty versus nonempty nested copy; null versus nonnull\nnested destruction; normal return versus unwind cleanup; short/long string branch instructions;\nknown-bad truncated versus aligned boundary. Instruction exposure is not runtime execution.\n\nRuntime states still unexercised and must remain explicit residuals: existing-last-match, miss with\nspare/full outer capacity, empty/nonempty nested vectors owning short/long strings, deliberate\nallocation failure/throw, duplicate/description-only-different events, and transient stack\nsentinels. Archived save states are distinct from all of those and validate serialized values only.\n\n## Planned reproduction\n\nCreate a fail-if-exists session directory owned by this verifier. Use an independent script, not the\nanalyst's hard-coded recipe, to bind source/input/tool identities, run the package windows and held-\nout boundary, archive raw stdout/stderr, parse instruction rows and save values, and emit a manifest\nwhose failed predictions/residuals remain failures or limitations.","lineStart":1,"lineEnd":56,"totalLines":56,"truncated":false}},"title":"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md","time":{"start":1789045773659,"end":1789045773668}},"metadata":{"openai":{"itemId":"fc_0da6f30fb0052d24016aa2ac0d624487d1b2894fcbd5d29b24"}},"id":"prt_08b701553001DFyQEU6vL406Es","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6fe090001XStEFyBT1qquvn"}} +{"type":"tool_use","timestamp":1789045773735,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"read","callID":"call_Tj22og1GX24I2GCrsr9hJQUb","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/tools/campaign.py","offset":448,"limit":62},"output":"/home/alex/sots-re/tools/campaign.py\nfile\n\n448: self.authorize(c, actor, role, model)\n449: if target not in edges[c[\"status\"]]:\n450: raise ControlError(f\"illegal lifecycle transition {c['status']} -> {target}\")\n451: if target != \"blocked\" and self.open_surprises(cid):\n452: raise ControlError(\"unresolved surprise blocks transition\")\n453: if target in {\"integration\", \"accepted\"} and role != \"lead\":\n454: raise ControlError(\"integration/acceptance requires explicit lead\")\n455: if target in {\"ready\", \"implementing\"}:\n456: self.check_baseline(c)\n457: if not all(c[k] for k in (\"scope\", \"inputs\", \"acceptance\", \"stop_conditions\")):\n458: raise ControlError(\"ready requires scope, inputs, acceptance and stop conditions\")\n459: for dependency in c[\"dependencies\"]:\n460: if self.load(dependency)[\"status\"] != \"accepted\" or self.open_surprises(dependency):\n461: raise ControlError(f\"dependency not accepted: {dependency}\")\n462: if target == \"implementing\":\n463: if sum(x[\"status\"] == \"implementing\" for x in self.contracts()) >= self.models[\"implementation_wip\"]:\n464: raise ControlError(\"implementation WIP bound reached (2)\")\n465: if target == \"verification\":\n466: starts = self.records(\"transitions\", cid)\n467: since = max((x[\"timestamp\"] for x in starts if x.get(\"to\") == \"implementing\"), default=None)\n468: self.check_checkpoint(c, since=since)\n469: if target in {\"integration\", \"accepted\"}:\n470: self.check_checkpoint(c)\n471: if not c[\"acceptance\"] or not c.get(\"evidence\"):\n472: raise ControlError(\"acceptance criteria and evidence required\")\n473: self.check_evidence(c, integrated=target == \"accepted\")\n474: self.check_verdict(c)\n475: event = {\"contract\": cid, \"from\": c[\"status\"], \"to\": target, \"timestamp\": now(), \"actor\": actor, \"role\": role, \"model\": model}\n476: # Write blocking intent first; unresolved surprises also guard against interrupted writes.\n477: atomic_json(self.path(f\"campaign/runtime/transitions/{cid}-{secrets.token_hex(12)}.json\"), event)\n478: c[\"status\"] = target\n479: if target == \"needs-revision\":\n480: c[\"evidence\"] = []\n481: c[\"checkpoint\"] = None\n482: self.save(c)\n483: return c\n484: \n485: def surprise(self, cid, actor, role, model, summary, probe):\n486: self.identity(actor, role, model)\n487: if not summary.strip() or not probe.strip() or len(summary) > 6000 or len(probe) > 2000:\n488: raise ControlError(\"surprise requires bounded explanation and discriminating probe\")\n489: with self.lock():\n490: c = self.load(cid)\n491: sid = \"s-\" + secrets.token_hex(12)\n492: record = {\"schema\": \"sots-surprise/1\", \"id\": sid, \"contract\": cid, \"status\": \"open\", \"summary\": summary,\n493: \"probe\": probe, \"actor\": actor, \"role\": role, \"model\": model, \"timestamp\": now()}\n494: atomic_json(self.path(f\"campaign/runtime/surprises/{sid}.json\"), record)\n495: c[\"status\"] = \"blocked\"\n496: self.save(c)\n497: return record\n498: \n499: def resolve(self, sid, actor, role, model, explanation, probe):\n500: self.identity(actor, role, model)\n501: if role not in {\"lead\", \"resolver\"} or not explanation.strip() or not probe.strip() or len(explanation) > 6000 or len(probe) > 2000:\n502: raise ControlError(\"Astra lead/resolver explanation and discriminating probe required\")\n503: with self.lock():\n504: path = self.path(f\"campaign/runtime/surprises/{self.identifier(sid)}.json\")\n505: s = read_json(path)\n506: if s.get(\"status\") != \"open\":\n507: raise ControlError(\"surprise is not open\")\n508: c = self.load(s[\"contract\"])\n509: decision = {\"schema\": \"sots-decision/1\", \"id\": \"d-\" + secrets.token_hex(12), \"contract\": c[\"id\"], \"surprise\": sid,\n\n(Showing lines 448-509 of 624. Use offset=510 to continue.)\n","metadata":{"preview":" self.authorize(c, actor, role, model)\n if target not in edges[c[\"status\"]]:\n raise ControlError(f\"illegal lifecycle transition {c['status']} -> {target}\")\n if target != \"blocked\" and self.open_surprises(cid):\n raise ControlError(\"unresolved surprise blocks transition\")\n if target in {\"integration\", \"accepted\"} and role != \"lead\":\n raise ControlError(\"integration/acceptance requires explicit lead\")\n if target in {\"ready\", \"implementing\"}:\n self.check_baseline(c)\n if not all(c[k] for k in (\"scope\", \"inputs\", \"acceptance\", \"stop_conditions\")):\n raise ControlError(\"ready requires scope, inputs, acceptance and stop conditions\")\n for dependency in c[\"dependencies\"]:\n if self.load(dependency)[\"status\"] != \"accepted\" or self.open_surprises(dependency):\n raise ControlError(f\"dependency not accepted: {dependency}\")\n if target == \"implementing\":\n if sum(x[\"status\"] == \"implementing\" for x in self.contracts()) >= self.models[\"implementation_wip\"]:\n raise ControlError(\"implementation WIP bound reached (2)\")\n if target == \"verification\":\n starts = self.records(\"transitions\", cid)\n since = max((x[\"timestamp\"] for x in starts if x.get(\"to\") == \"implementing\"), default=None)","truncated":true,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/tools/campaign.py","text":" self.authorize(c, actor, role, model)\n if target not in edges[c[\"status\"]]:\n raise ControlError(f\"illegal lifecycle transition {c['status']} -> {target}\")\n if target != \"blocked\" and self.open_surprises(cid):\n raise ControlError(\"unresolved surprise blocks transition\")\n if target in {\"integration\", \"accepted\"} and role != \"lead\":\n raise ControlError(\"integration/acceptance requires explicit lead\")\n if target in {\"ready\", \"implementing\"}:\n self.check_baseline(c)\n if not all(c[k] for k in (\"scope\", \"inputs\", \"acceptance\", \"stop_conditions\")):\n raise ControlError(\"ready requires scope, inputs, acceptance and stop conditions\")\n for dependency in c[\"dependencies\"]:\n if self.load(dependency)[\"status\"] != \"accepted\" or self.open_surprises(dependency):\n raise ControlError(f\"dependency not accepted: {dependency}\")\n if target == \"implementing\":\n if sum(x[\"status\"] == \"implementing\" for x in self.contracts()) >= self.models[\"implementation_wip\"]:\n raise ControlError(\"implementation WIP bound reached (2)\")\n if target == \"verification\":\n starts = self.records(\"transitions\", cid)\n since = max((x[\"timestamp\"] for x in starts if x.get(\"to\") == \"implementing\"), default=None)\n self.check_checkpoint(c, since=since)\n if target in {\"integration\", \"accepted\"}:\n self.check_checkpoint(c)\n if not c[\"acceptance\"] or not c.get(\"evidence\"):\n raise ControlError(\"acceptance criteria and evidence required\")\n self.check_evidence(c, integrated=target == \"accepted\")\n self.check_verdict(c)\n event = {\"contract\": cid, \"from\": c[\"status\"], \"to\": target, \"timestamp\": now(), \"actor\": actor, \"role\": role, \"model\": model}\n # Write blocking intent first; unresolved surprises also guard against interrupted writes.\n atomic_json(self.path(f\"campaign/runtime/transitions/{cid}-{secrets.token_hex(12)}.json\"), event)\n c[\"status\"] = target\n if target == \"needs-revision\":\n c[\"evidence\"] = []\n c[\"checkpoint\"] = None\n self.save(c)\n return c\n\n def surprise(self, cid, actor, role, model, summary, probe):\n self.identity(actor, role, model)\n if not summary.strip() or not probe.strip() or len(summary) > 6000 or len(probe) > 2000:\n raise ControlError(\"surprise requires bounded explanation and discriminating probe\")\n with self.lock():\n c = self.load(cid)\n sid = \"s-\" + secrets.token_hex(12)\n record = {\"schema\": \"sots-surprise/1\", \"id\": sid, \"contract\": cid, \"status\": \"open\", \"summary\": summary,\n \"probe\": probe, \"actor\": actor, \"role\": role, \"model\": model, \"timestamp\": now()}\n atomic_json(self.path(f\"campaign/runtime/surprises/{sid}.json\"), record)\n c[\"status\"] = \"blocked\"\n self.save(c)\n return record\n\n def resolve(self, sid, actor, role, model, explanation, probe):\n self.identity(actor, role, model)\n if role not in {\"lead\", \"resolver\"} or not explanation.strip() or not probe.strip() or len(explanation) > 6000 or len(probe) > 2000:\n raise ControlError(\"Astra lead/resolver explanation and discriminating probe required\")\n with self.lock():\n path = self.path(f\"campaign/runtime/surprises/{self.identifier(sid)}.json\")\n s = read_json(path)\n if s.get(\"status\") != \"open\":\n raise ControlError(\"surprise is not open\")\n c = self.load(s[\"contract\"])\n decision = {\"schema\": \"sots-decision/1\", \"id\": \"d-\" + secrets.token_hex(12), \"contract\": c[\"id\"], \"surprise\": sid,","lineStart":448,"lineEnd":509,"totalLines":624,"truncated":true}},"title":"tools/campaign.py","time":{"start":1789045773727,"end":1789045773733}},"metadata":{"openai":{"itemId":"fc_0da6f30fb0052d24016aa2ac0d624887d1b8f73ae445067ddb"}},"id":"prt_08b70156c001WDreCfg3fJqxdh","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b6fe090001XStEFyBT1qquvn"}} +{"type":"step_finish","timestamp":1789045773808,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b7015ee001wcPWjbM7uGej6Q","reason":"tool-calls","snapshot":"1634e2894d8591aad6242e633e6cd94e764f5120","messageID":"msg_08b6fe090001XStEFyBT1qquvn","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"step-finish","tokens":{"total":54513,"input":13847,"output":232,"reasoning":114,"cache":{"write":0,"read":40320}},"cost":0}} +{"type":"step_start","timestamp":1789045777650,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b7024ea001SauUpuYpNn0PcO","messageID":"msg_08b701616001aJm0EzPTnw4QPP","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","snapshot":"2048ba76cee869a640281be9c3d1aca85169c492","type":"step-start"}} +{"type":"text","timestamp":1789045784778,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b703197001QiBpQIDWyBQlos","messageID":"msg_08b701616001aJm0EzPTnw4QPP","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"text","text":"The mismatch has two parts:\n\n- The earlier comparison mixed **runner inventory hashes** with **campaign source-binding hashes**, which use different exclusion rules.\n- A like-for-like runner comparison still shows real RE drift: control/configuration files changed, and `verify/campaign/test_controls.py` disappeared from the assigned snapshot. The engine inventory is unchanged.\n\nI will not waive that drift or relabel old measurements. The scoped resolution will require a fresh, explicitly bound reproduction package, retaining the archived static captures only as historical evidence. Live allocator safety and replacement acceptance remain unestablished.\n\n","time":{"start":1789045780887,"end":1789045784775},"metadata":{"openai":{"itemId":"msg_0e688fa3d46f176e016aa2ac14c13087d1813b274861911157","phase":"commentary"}}}} +{"type":"tool_use","timestamp":1789045838910,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"bash","callID":"call_gQkQS5PEv321Xoyg71RTp4u1","state":{"status":"completed","input":{"command":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re resolve s-210e489610197533e4f4cce1 --actor research-problem-resolver --role resolver --model openai/gpt-6-astra --explanation 'Astra resolution-only run-481c9379a1efc0e527d2a28c. OBSERVATION: complete git diff --no-index of canonical campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json versus run-481c9379a1efc0e527d2a28c.json exposes actual historical-to-current source_before inventory changes. Analyst run-9daf5c3b75547271d5c3b4ed.json records runner RE b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4 before/after, identical to verifier runner. Current and prior resolver runner RE record e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9; engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged. Git roots/common dirs independently match assigned paired trees and baselines engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23, RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Dirty inventories preexist; no resolver source edits.\nINSTRUMENT IDENTITY: tools/run_agent.py source_identity hashes all inventoried files; tools/campaign.py source_manifest excludes caches, verify/results and mutable campaign except models/schema/agents. Thus historical campaign digest 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 is NOT the historical runner digest. Prior surprise/checkpoint/decision direct comparison is QUALIFIED: unlike hash domains were compared, but actual like-for-like runner drift survives. No fresh current campaign-binding computation occurred; shell resolver allowlist does not authorize source-binding. Do not invent that digest.\nEXACT CAMPAIGN-INCLUDED DELTA from full runner diff: byte changes, all mode 420 unchanged, AGENTS.md; CLAUDE.md; campaign/agents/lead.md; campaign/models.json; guides/multi-agent-workflow.md; opencode.json; tools/campaign.py; tools/check_agent_config.py; tools/run_agent.py; verify/config/test_agent_config.py. Removed inventory entry verify/campaign/test_controls.py (old mode 420, hash 108460f4e90c4cb7036642e85de581e31fd70c478533c32364691260461814fc). No added entries or mode-only changes. Campaign-excluded changes: campaign/{DASHBOARD.md,backlog.md,board.md,open-questions.md} changed; campaign/README.md, contracts/{controls-bootstrap,launcher-smoke,research-completion-abi,research-replacement}.json, current.json, pilots/research-replacement.md, research/SESSION.md removed from paired inventory. Removed campaign/rollout entries: RESULT.md, architecture-decision.md, controls-followup.md, controls-worker-state.md, controls-worker.md, controls_evidence.py, engine-followup.md, engine-worker-state.md, engine-worker.md, formal-verifier-state.md, formal-verifier.md, gate-followup.md, gate-worker-state.md, gate-worker.md, housekeeping-completion.md, housekeeping-followup.md, housekeeping-worker-state.md, housekeeping-worker.md, independent-review.md, lead-state.md, publishing-worker-state.md, publishing-worker.md, review-followup.md, review-worker-state.md, review-worker.md, sync_verifier_snapshot.py. Removed verify/results/housekeeping/{vm140,vm141,vm144,vm145,vm146}-result.json. These are inventory observations, not authorization to restore files or proof of cause. Full old/new hashes are in named runner inventories; no excluded save/trace changes appear in this diff.\nBINARY/INPUT/POSITIVE EXECUTION: analyst manifest aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4 rehashed by this session checkpoint; records sots.exe 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd, twelve zero-exit nonempty static captures with empty stderr. These are archived executions, not fresh binary/tool rehash or live execution. Read authority raw output shows c2 04 00 at 0x00779912 and cleanup after 0x00779915. Boundary-sensitive disassembler neutrality remains qualified per d-6e30d172051af0385f5979eb; no runtime neutrality or RNG measurement.\nCLAIMS/INVALIDATION: SURVIVES historical static measurement domain with original binding and prior ABI qualifications; no newly observed contradiction in ABI bytes. OVERTURNED current-source-identical reuse of historical package and unchanged verifier-plan item 1; current source differs including consumed controls. QUALIFIED ownership-recovered: static historical evidence only, requires fresh package before current acceptance. OVERTURNED any current independent-cross-check/pass claim: no fresh verifier reproduction. SURVIVES prior decision invalidation of plan item 5 stop 0x00779913; repaired 0x00779915 remains unexecuted/unblinded, full 0x00779930 authority still required. No active evidence entries to remove; preserve archived captures, invalidate their use as current-source acceptance and supersede checkpoint 3fc22ea3c402274179ce4d1f source-comparison premise. Bridge and replacement acceptance/readiness remain dependency-blocked, not restored by resolution.\nDECISION: choose new-source remeasurement, NOT old snapshot restoration or digest substitution. Scope remains static ABI and archived serialized-value cross-check only. Lead must bind and explicitly schedule the current paired snapshot and canonical consumed tools/inputs, revise verifier plan to this decision and d-6e30d172051af0385f5979eb, then obtain fresh independent reproduction through lifecycle controls. Missing controls tests are a preflight dependency, not permission to skip required gates; owner must supply them if needed, without resolver mutation. Needs-revision is not ready/accepted. No build, VM/Ghidra mutation, delegation or implementation authorized. Integrator links this decision and regenerates projections only after integration; no board history written.' --probe 'Cheapest discriminator is local read-only preflight, before disassembly: lead-authorized owner runs python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re and archives actual result with canonical consumed campaign/runner/interpreter/binary/objdump/recipe/save hashes. Compare equivalent runner inventories and campaign bindings separately; expect current campaign digest not to equal old 6696fd52, do not infer its value. Confirm required test inputs and source stability; missing inputs or unexplained drift blocks. Lead then records authorized new-source static remeasurement scope and schedules independent verifier after normal lifecycle preconditions, without source restoration. Fresh verifier checkpoints before experiment, uses fail-if-exists output and revised plan; runs negative stop 0x00779913, aligned 0x00779915 and authority 0x00779930 plus direct PE-mapped byte read, all a20/a21/a23/a28 controls and ABI/save checks from prior decision. Record execution/branches/streams and unexercised runtime states, not retroactive passes. Immediate next action is lead source-binding/preflight and contract scheduling, NOT lab work or acceptance.'"},"output":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only run-481c9379a1efc0e527d2a28c. OBSERVATION: complete git diff --no-index of canonical campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json versus run-481c9379a1efc0e527d2a28c.json exposes actual historical-to-current source_before inventory changes. Analyst run-9daf5c3b75547271d5c3b4ed.json records runner RE b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4 before/after, identical to verifier runner. Current and prior resolver runner RE record e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9; engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged. Git roots/common dirs independently match assigned paired trees and baselines engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23, RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Dirty inventories preexist; no resolver source edits.\\nINSTRUMENT IDENTITY: tools/run_agent.py source_identity hashes all inventoried files; tools/campaign.py source_manifest excludes caches, verify/results and mutable campaign except models/schema/agents. Thus historical campaign digest 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 is NOT the historical runner digest. Prior surprise/checkpoint/decision direct comparison is QUALIFIED: unlike hash domains were compared, but actual like-for-like runner drift survives. No fresh current campaign-binding computation occurred; shell resolver allowlist does not authorize source-binding. Do not invent that digest.\\nEXACT CAMPAIGN-INCLUDED DELTA from full runner diff: byte changes, all mode 420 unchanged, AGENTS.md; CLAUDE.md; campaign/agents/lead.md; campaign/models.json; guides/multi-agent-workflow.md; opencode.json; tools/campaign.py; tools/check_agent_config.py; tools/run_agent.py; verify/config/test_agent_config.py. Removed inventory entry verify/campaign/test_controls.py (old mode 420, hash 108460f4e90c4cb7036642e85de581e31fd70c478533c32364691260461814fc). No added entries or mode-only changes. Campaign-excluded changes: campaign/{DASHBOARD.md,backlog.md,board.md,open-questions.md} changed; campaign/README.md, contracts/{controls-bootstrap,launcher-smoke,research-completion-abi,research-replacement}.json, current.json, pilots/research-replacement.md, research/SESSION.md removed from paired inventory. Removed campaign/rollout entries: RESULT.md, architecture-decision.md, controls-followup.md, controls-worker-state.md, controls-worker.md, controls_evidence.py, engine-followup.md, engine-worker-state.md, engine-worker.md, formal-verifier-state.md, formal-verifier.md, gate-followup.md, gate-worker-state.md, gate-worker.md, housekeeping-completion.md, housekeeping-followup.md, housekeeping-worker-state.md, housekeeping-worker.md, independent-review.md, lead-state.md, publishing-worker-state.md, publishing-worker.md, review-followup.md, review-worker-state.md, review-worker.md, sync_verifier_snapshot.py. Removed verify/results/housekeeping/{vm140,vm141,vm144,vm145,vm146}-result.json. These are inventory observations, not authorization to restore files or proof of cause. Full old/new hashes are in named runner inventories; no excluded save/trace changes appear in this diff.\\nBINARY/INPUT/POSITIVE EXECUTION: analyst manifest aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4 rehashed by this session checkpoint; records sots.exe 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd, twelve zero-exit nonempty static captures with empty stderr. These are archived executions, not fresh binary/tool rehash or live execution. Read authority raw output shows c2 04 00 at 0x00779912 and cleanup after 0x00779915. Boundary-sensitive disassembler neutrality remains qualified per d-6e30d172051af0385f5979eb; no runtime neutrality or RNG measurement.\\nCLAIMS/INVALIDATION: SURVIVES historical static measurement domain with original binding and prior ABI qualifications; no newly observed contradiction in ABI bytes. OVERTURNED current-source-identical reuse of historical package and unchanged verifier-plan item 1; current source differs including consumed controls. QUALIFIED ownership-recovered: static historical evidence only, requires fresh package before current acceptance. OVERTURNED any current independent-cross-check/pass claim: no fresh verifier reproduction. SURVIVES prior decision invalidation of plan item 5 stop 0x00779913; repaired 0x00779915 remains unexecuted/unblinded, full 0x00779930 authority still required. No active evidence entries to remove; preserve archived captures, invalidate their use as current-source acceptance and supersede checkpoint 3fc22ea3c402274179ce4d1f source-comparison premise. Bridge and replacement acceptance/readiness remain dependency-blocked, not restored by resolution.\\nDECISION: choose new-source remeasurement, NOT old snapshot restoration or digest substitution. Scope remains static ABI and archived serialized-value cross-check only. Lead must bind and explicitly schedule the current paired snapshot and canonical consumed tools/inputs, revise verifier plan to this decision and d-6e30d172051af0385f5979eb, then obtain fresh independent reproduction through lifecycle controls. Missing controls tests are a preflight dependency, not permission to skip required gates; owner must supply them if needed, without resolver mutation. Needs-revision is not ready/accepted. No build, VM/Ghidra mutation, delegation or implementation authorized. Integrator links this decision and regenerates projections only after integration; no board history written.\",\n \"id\": \"d-e9d6d48cd77538556d1a1c1f\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-f15d822f91601241181df05a.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest discriminator is local read-only preflight, before disassembly: lead-authorized owner runs python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re and archives actual result with canonical consumed campaign/runner/interpreter/binary/objdump/recipe/save hashes. Compare equivalent runner inventories and campaign bindings separately; expect current campaign digest not to equal old 6696fd52, do not infer its value. Confirm required test inputs and source stability; missing inputs or unexplained drift blocks. Lead then records authorized new-source static remeasurement scope and schedules independent verifier after normal lifecycle preconditions, without source restoration. Fresh verifier checkpoints before experiment, uses fail-if-exists output and revised plan; runs negative stop 0x00779913, aligned 0x00779915 and authority 0x00779930 plus direct PE-mapped byte read, all a20/a21/a23/a28 controls and ABI/save checks from prior decision. Record execution/branches/streams and unexercised runtime states, not retroactive passes. Immediate next action is lead source-binding/preflight and contract scheduling, NOT lab work or acceptance.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-210e489610197533e4f4cce1\",\n \"timestamp\": \"2026-09-10T13:10:38.861003+00:00\"\n}\n","metadata":{"output":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only run-481c9379a1efc0e527d2a28c. OBSERVATION: complete git diff --no-index of canonical campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json versus run-481c9379a1efc0e527d2a28c.json exposes actual historical-to-current source_before inventory changes. Analyst run-9daf5c3b75547271d5c3b4ed.json records runner RE b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4 before/after, identical to verifier runner. Current and prior resolver runner RE record e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9; engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged. Git roots/common dirs independently match assigned paired trees and baselines engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23, RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Dirty inventories preexist; no resolver source edits.\\nINSTRUMENT IDENTITY: tools/run_agent.py source_identity hashes all inventoried files; tools/campaign.py source_manifest excludes caches, verify/results and mutable campaign except models/schema/agents. Thus historical campaign digest 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 is NOT the historical runner digest. Prior surprise/checkpoint/decision direct comparison is QUALIFIED: unlike hash domains were compared, but actual like-for-like runner drift survives. No fresh current campaign-binding computation occurred; shell resolver allowlist does not authorize source-binding. Do not invent that digest.\\nEXACT CAMPAIGN-INCLUDED DELTA from full runner diff: byte changes, all mode 420 unchanged, AGENTS.md; CLAUDE.md; campaign/agents/lead.md; campaign/models.json; guides/multi-agent-workflow.md; opencode.json; tools/campaign.py; tools/check_agent_config.py; tools/run_agent.py; verify/config/test_agent_config.py. Removed inventory entry verify/campaign/test_controls.py (old mode 420, hash 108460f4e90c4cb7036642e85de581e31fd70c478533c32364691260461814fc). No added entries or mode-only changes. Campaign-excluded changes: campaign/{DASHBOARD.md,backlog.md,board.md,open-questions.md} changed; campaign/README.md, contracts/{controls-bootstrap,launcher-smoke,research-completion-abi,research-replacement}.json, current.json, pilots/research-replacement.md, research/SESSION.md removed from paired inventory. Removed campaign/rollout entries: RESULT.md, architecture-decision.md, controls-followup.md, controls-worker-state.md, controls-worker.md, controls_evidence.py, engine-followup.md, engine-worker-state.md, engine-worker.md, formal-verifier-state.md, formal-verifier.md, gate-followup.md, gate-worker-state.md, gate-worker.md, housekeeping-completion.md, housekeeping-followup.md, housekeeping-worker-state.md, housekeeping-worker.md, independent-review.md, lead-state.md, publishing-worker-state.md, publishing-worker.md, review-followup.md, review-worker-state.md, review-worker.md, sync_verifier_snapshot.py. Removed verify/results/housekeeping/{vm140,vm141,vm144,vm145,vm146}-result.json. These are inventory observations, not authorization to restore files or proof of cause. Full old/new hashes are in named runner inventories; no excluded save/trace changes appear in this diff.\\nBINARY/INPUT/POSITIVE EXECUTION: analyst manifest aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4 rehashed by this session checkpoint; records sots.exe 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd, twelve zero-exit nonempty static captures with empty stderr. These are archived executions, not fresh binary/tool rehash or live execution. Read authority raw output shows c2 04 00 at 0x00779912 and cleanup after 0x00779915. Boundary-sensitive disassembler neutrality remains qualified per d-6e30d172051af0385f5979eb; no runtime neutrality or RNG measurement.\\nCLAIMS/INVALIDATION: SURVIVES historical static measurement domain with original binding and prior ABI qualifications; no newly observed contradiction in ABI bytes. OVERTURNED current-source-identical reuse of historical package and unchanged verifier-plan item 1; current source differs including consumed controls. QUALIFIED ownership-recovered: static historical evidence only, requires fresh package before current acceptance. OVERTURNED any current independent-cross-check/pass claim: no fresh verifier reproduction. SURVIVES prior decision invalidation of plan item 5 stop 0x00779913; repaired 0x00779915 remains unexecuted/unblinded, full 0x00779930 authority still required. No active evidence entries to remove; preserve archived captures, invalidate their use as current-source acceptance and supersede checkpoint 3fc22ea3c402274179ce4d1f source-comparison premise. Bridge and replacement acceptance/readiness remain dependency-blocked, not restored by resolution.\\nDECISION: choose new-source remeasurement, NOT old snapshot restoration or digest substitution. Scope remains static ABI and archived serialized-value cross-check only. Lead must bind and explicitly schedule the current paired snapshot and canonical consumed tools/inputs, revise verifier plan to this decision and d-6e30d172051af0385f5979eb, then obtain fresh independent reproduction through lifecycle controls. Missing controls tests are a preflight dependency, not permission to skip required gates; owner must supply them if needed, without resolver mutation. Needs-revision is not ready/accepted. No build, VM/Ghidra mutation, delegation or implementation authorized. Integrator links this decision and regenerates projections only after integration; no board history written.\",\n \"id\": \"d-e9d6d48cd77538556d1a1c1f\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-f15d822f91601241181df05a.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest discriminator is local read-only preflight, before disassembly: lead-authorized owner runs python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re and archives actual result with canonical consumed campaign/runner/interpreter/binary/objdump/recipe/save hashes. Compare equivalent runner inventories and campaign bindings separately; expect current campaign digest not to equal old 6696fd52, do not infer its value. Confirm required test inputs and source stability; missing inputs or unexplained drift blocks. Lead then records authorized new-source static remeasurement scope and schedules independent verifier after normal lifecycle preconditions, without source restoration. Fresh verifier checkpoints before experiment, uses fail-if-exists output and revised plan; runs negative stop 0x00779913, aligned 0x00779915 and authority 0x00779930 plus direct PE-mapped byte read, all a20/a21/a23/a28 controls and ABI/save checks from prior decision. Record execution/branches/streams and unexercised runtime states, not retroactive passes. Immediate next action is lead source-binding/preflight and contract scheduling, NOT lab work or acceptance.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-210e489610197533e4f4cce1\",\n \"timestamp\": \"2026-09-10T13:10:38.861003+00:00\"\n}\n","exit":0,"truncated":false},"title":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re resolve s-210e489610197533e4f4cce1 --actor research-problem-resolver --role resolver --model openai/gpt-6-astra --explanation 'Astra resolution-only run-481c9379a1efc0e527d2a28c. OBSERVATION: complete git diff --no-index of canonical campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json versus run-481c9379a1efc0e527d2a28c.json exposes actual historical-to-current source_before inventory changes. Analyst run-9daf5c3b75547271d5c3b4ed.json records runner RE b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4 before/after, identical to verifier runner. Current and prior resolver runner RE record e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9; engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged. Git roots/common dirs independently match assigned paired trees and baselines engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23, RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Dirty inventories preexist; no resolver source edits.\nINSTRUMENT IDENTITY: tools/run_agent.py source_identity hashes all inventoried files; tools/campaign.py source_manifest excludes caches, verify/results and mutable campaign except models/schema/agents. Thus historical campaign digest 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 is NOT the historical runner digest. Prior surprise/checkpoint/decision direct comparison is QUALIFIED: unlike hash domains were compared, but actual like-for-like runner drift survives. No fresh current campaign-binding computation occurred; shell resolver allowlist does not authorize source-binding. Do not invent that digest.\nEXACT CAMPAIGN-INCLUDED DELTA from full runner diff: byte changes, all mode 420 unchanged, AGENTS.md; CLAUDE.md; campaign/agents/lead.md; campaign/models.json; guides/multi-agent-workflow.md; opencode.json; tools/campaign.py; tools/check_agent_config.py; tools/run_agent.py; verify/config/test_agent_config.py. Removed inventory entry verify/campaign/test_controls.py (old mode 420, hash 108460f4e90c4cb7036642e85de581e31fd70c478533c32364691260461814fc). No added entries or mode-only changes. Campaign-excluded changes: campaign/{DASHBOARD.md,backlog.md,board.md,open-questions.md} changed; campaign/README.md, contracts/{controls-bootstrap,launcher-smoke,research-completion-abi,research-replacement}.json, current.json, pilots/research-replacement.md, research/SESSION.md removed from paired inventory. Removed campaign/rollout entries: RESULT.md, architecture-decision.md, controls-followup.md, controls-worker-state.md, controls-worker.md, controls_evidence.py, engine-followup.md, engine-worker-state.md, engine-worker.md, formal-verifier-state.md, formal-verifier.md, gate-followup.md, gate-worker-state.md, gate-worker.md, housekeeping-completion.md, housekeeping-followup.md, housekeeping-worker-state.md, housekeeping-worker.md, independent-review.md, lead-state.md, publishing-worker-state.md, publishing-worker.md, review-followup.md, review-worker-state.md, review-worker.md, sync_verifier_snapshot.py. Removed verify/results/housekeeping/{vm140,vm141,vm144,vm145,vm146}-result.json. These are inventory observations, not authorization to restore files or proof of cause. Full old/new hashes are in named runner inventories; no excluded save/trace changes appear in this diff.\nBINARY/INPUT/POSITIVE EXECUTION: analyst manifest aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4 rehashed by this session checkpoint; records sots.exe 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd, twelve zero-exit nonempty static captures with empty stderr. These are archived executions, not fresh binary/tool rehash or live execution. Read authority raw output shows c2 04 00 at 0x00779912 and cleanup after 0x00779915. Boundary-sensitive disassembler neutrality remains qualified per d-6e30d172051af0385f5979eb; no runtime neutrality or RNG measurement.\nCLAIMS/INVALIDATION: SURVIVES historical static measurement domain with original binding and prior ABI qualifications; no newly observed contradiction in ABI bytes. OVERTURNED current-source-identical reuse of historical package and unchanged verifier-plan item 1; current source differs including consumed controls. QUALIFIED ownership-recovered: static historical evidence only, requires fresh package before current acceptance. OVERTURNED any current independent-cross-check/pass claim: no fresh verifier reproduction. SURVIVES prior decision invalidation of plan item 5 stop 0x00779913; repaired 0x00779915 remains unexecuted/unblinded, full 0x00779930 authority still required. No active evidence entries to remove; preserve archived captures, invalidate their use as current-source acceptance and supersede checkpoint 3fc22ea3c402274179ce4d1f source-comparison premise. Bridge and replacement acceptance/readiness remain dependency-blocked, not restored by resolution.\nDECISION: choose new-source remeasurement, NOT old snapshot restoration or digest substitution. Scope remains static ABI and archived serialized-value cross-check only. Lead must bind and explicitly schedule the current paired snapshot and canonical consumed tools/inputs, revise verifier plan to this decision and d-6e30d172051af0385f5979eb, then obtain fresh independent reproduction through lifecycle controls. Missing controls tests are a preflight dependency, not permission to skip required gates; owner must supply them if needed, without resolver mutation. Needs-revision is not ready/accepted. No build, VM/Ghidra mutation, delegation or implementation authorized. Integrator links this decision and regenerates projections only after integration; no board history written.' --probe 'Cheapest discriminator is local read-only preflight, before disassembly: lead-authorized owner runs python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re and archives actual result with canonical consumed campaign/runner/interpreter/binary/objdump/recipe/save hashes. Compare equivalent runner inventories and campaign bindings separately; expect current campaign digest not to equal old 6696fd52, do not infer its value. Confirm required test inputs and source stability; missing inputs or unexplained drift blocks. Lead then records authorized new-source static remeasurement scope and schedules independent verifier after normal lifecycle preconditions, without source restoration. Fresh verifier checkpoints before experiment, uses fail-if-exists output and revised plan; runs negative stop 0x00779913, aligned 0x00779915 and authority 0x00779930 plus direct PE-mapped byte read, all a20/a21/a23/a28 controls and ABI/save checks from prior decision. Record execution/branches/streams and unexercised runtime states, not retroactive passes. Immediate next action is lead source-binding/preflight and contract scheduling, NOT lab work or acceptance.'","time":{"start":1789045838817,"end":1789045838907}},"metadata":{"openai":{"itemId":"fc_0e688fa3d46f176e016aa2ac18a5fc87d1a8aae41715aaff7a"}},"id":"prt_08b7040c90015wsXpf1mPIqaOR","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b701616001aJm0EzPTnw4QPP"}} +{"type":"step_finish","timestamp":1789045838952,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b7114660015fJ1kFez0aWFl3","reason":"tool-calls","snapshot":"83b65b4f2301cc4097f61e4e09a577152de5ccca","messageID":"msg_08b701616001aJm0EzPTnw4QPP","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"step-finish","tokens":{"total":81501,"input":25471,"output":1910,"reasoning":104,"cache":{"write":0,"read":54016}},"cost":0}} +{"type":"step_start","timestamp":1789045845284,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b712d21001XqOaWLcnbFKTuI","messageID":"msg_08b71149b001PLZLArLen2uvp8","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","snapshot":"d15a573d76b801a326f8509d884fba925e637d47","type":"step-start"}} +{"type":"tool_use","timestamp":1789045846425,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"bash","callID":"call_CXt8hYepe9YymLyonjyXRhZ0","state":{"status":"completed","input":{"command":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re validate research-completion-abi"},"output":"[\n \"research-completion-abi\"\n]\n","metadata":{"output":"[\n \"research-completion-abi\"\n]\n","exit":0,"truncated":false},"title":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re validate research-completion-abi","time":{"start":1789045846374,"end":1789045846422}},"metadata":{"openai":{"itemId":"fc_05eda0d2d4e2e485016aa2ac54fc4487d1b81bf66cc6edac17"}},"id":"prt_08b712d230014TpAC7abeefdpJ","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b71149b001PLZLArLen2uvp8"}} +{"type":"step_finish","timestamp":1789045846488,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b7131d5001faoejAK7iHgUCf","reason":"tool-calls","snapshot":"c1d222b84db8fab307fbe7ebde011fda05cdc357","messageID":"msg_08b71149b001PLZLArLen2uvp8","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"step-finish","tokens":{"total":83439,"input":4033,"output":46,"reasoning":0,"cache":{"write":0,"read":79360}},"cost":0}} +{"type":"step_start","timestamp":1789045852347,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b7148b7001WZkpk9b3ZDRKXP","messageID":"msg_08b713204001VAiCec4n2TQY61","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","snapshot":"2eeff632b71b8986ceb7a1fc14250825fa3f795b","type":"step-start"}} +{"type":"tool_use","timestamp":1789045854736,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"todowrite","callID":"call_ijHmH9ws2sEbYHgPQGIVjfRs","state":{"status":"completed","input":{"todos":[{"content":"Inspect controls, affected records and current/historical source identities","status":"completed","priority":"high"},{"content":"Classify source drift and record scoped Astra resolution through campaign controls","status":"completed","priority":"high"},{"content":"Validate state and persist final session checkpoint with exact next action","status":"in_progress","priority":"high"}]},"output":"[\n {\n \"content\": \"Inspect controls, affected records and current/historical source identities\",\n \"status\": \"completed\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Classify source drift and record scoped Astra resolution through campaign controls\",\n \"status\": \"completed\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Validate state and persist final session checkpoint with exact next action\",\n \"status\": \"in_progress\",\n \"priority\": \"high\"\n }\n]","metadata":{"todos":[{"content":"Inspect controls, affected records and current/historical source identities","status":"completed","priority":"high"},{"content":"Classify source drift and record scoped Astra resolution through campaign controls","status":"completed","priority":"high"},{"content":"Validate state and persist final session checkpoint with exact next action","status":"in_progress","priority":"high"}],"truncated":false},"title":"1 todos","time":{"start":1789045854732,"end":1789045854734}},"metadata":{"openai":{"itemId":"fc_041368f7415de1ab016aa2ac5c339087d18c35c1ad46b6732e"}},"id":"prt_08b7148b90018pQ4EY6W4mKPde","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b713204001VAiCec4n2TQY61"}} +{"type":"step_finish","timestamp":1789045854869,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b715293001VIvUfuXFyh1WJc","reason":"tool-calls","snapshot":"962c3e94a9f15ee1094f59f1ff5689bfa5a6fff2","messageID":"msg_08b713204001VAiCec4n2TQY61","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"step-finish","tokens":{"total":83548,"input":260,"output":88,"reasoning":0,"cache":{"write":0,"read":83200}},"cost":0}} +{"type":"step_start","timestamp":1789045862145,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b716ef8001tUwPDMa8i8oG1s","messageID":"msg_08b7152c5001RpXPvZ5yK3s2nH","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","snapshot":"3a5d7befa1c0d8a8054a736e469bf863f6d8477c","type":"step-start"}} +{"type":"tool_use","timestamp":1789045897351,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"bash","callID":"call_zF8lTE82m9P3iK7XA4mK5mW1","state":{"status":"completed","input":{"command":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-problem-resolver --role resolver --model openai/gpt-6-astra --session run-481c9379a1efc0e527d2a28c --summary 'END bounded resolution-only quantum. OBSERVATIONS: assigned roots /tmp/opencode/sots-final-research-engine and /tmp/opencode/sots-final-research-re have common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git, HEADs 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Both preexisting dirty; no source changes this session. Current launch runner engine digest ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged; RE e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 versus historical analyst/verifier runner b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4. These runner hashes are NOT campaign-binding domain; old campaign binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 must not be directly equated to them. Complete verifier-to-current git diff identifies ten included byte-changed control/config paths and removed verify/campaign/test_controls.py, plus excluded campaign/housekeeping inventory deltas, all enumerated in decision. No added or mode-only differences. Historical analyst before/after runner digests match verifier. A second whole-run diff against prior completed resolver produced redundant source_after removal and was truncated; it is not used to claim a full fieldwise comparison. Current campaign source-binding was NOT computed (resolver allowlist lacks that command). Canonical binary/tool/save files NOT freshly rehashed or executed. Archived analyst manifest records binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd and twelve positive static commands only. Read raw authority ret bytes and verifier plan; repaired boundary remains unexecuted. DECISION d-e9d6d48cd77538556d1a1c1f resolves source surprise with new-source remeasurement, not restoration/relabeling. Qualified prior unlike-digest comparison; actual source drift survives. Historical static facts retain original scope; current-source reuse and independent-cross-check promotion invalidated. Prior d-6e30d172051af0385f5979eb boundary correction remains required. Contract now needs-revision, no acceptance restored; bridge/replacement remain dependency-blocked. TESTS: Git root/common-dir/HEAD and status checks; read-only manifest diff (exit 1 denotes differences); campaign validate research-completion-abi passed after resolution. No disassembly/save experiment, build, runtime, allocator, RNG or lab execution. No lease acquired; lease inventory inspected only, no availability/access assumed, no cleanup needed. No delegation, implementation/architecture edits, staging, commit, push or board/projection edits. BLOCKERS: current binding and consumed canonical input/tool hashes, required test availability, revised plan, lead scheduling and fresh independent/integrated evidence. Lead/integrator must link actual decision and regenerate projections after integration, not copy a history into board.' --artifact campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json --artifact campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json --artifact campaign/runtime/surprises/s-210e489610197533e4f4cce1.json --artifact campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json --artifact campaign/runtime/runs/run-9daf5c3b75547271d5c3b4ed.json --artifact campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt --artifact verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md --next-action 'Lead perform the read-only current paired source-binding and consumed-tool/input preflight specified in d-e9d6d48cd77538556d1a1c1f, recording its result and missing-test disposition before scheduling revised independent static reproduction; do not restore source, reuse old binding or authorize lab work.'"},"output":"{\n \"actor\": \"research-problem-resolver\",\n \"artifacts\": [\n {\n \"path\": \"campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json\",\n \"sha256\": \"c29e4ce1525f5c06efb87e7454661987026b358e5d9e0d6480df1b6956f19a42\"\n },\n {\n \"path\": \"campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json\",\n \"sha256\": \"c94914d5be47b93eac301e745b53ed7b1f008744a0ac90681fefc9c4f7a11327\"\n },\n {\n \"path\": \"campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\",\n \"sha256\": \"a2e6f0eaf0c2ba2d8a6a0edea74615d0f90ff9202c28811877b09961a265fb94\"\n },\n {\n \"path\": \"campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json\",\n \"sha256\": \"510219b4269311df86f9abe068131efdf3000dbf7757ff9d2c0ef5565001b5fc\"\n },\n {\n \"path\": \"campaign/runtime/runs/run-9daf5c3b75547271d5c3b4ed.json\",\n \"sha256\": \"f0e9a8f47d7d31b873d348606800f20609f935c56b3da93f4478a39e4e10447b\"\n },\n {\n \"path\": \"campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json\",\n \"sha256\": \"a3452db76124adf1d5ad3ed4593845b589068ba2d83ce5633b9b1792b17bf1db\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"c80088956234568ade0a27fb\",\n \"model\": \"openai/gpt-6-astra\",\n \"next_action\": \"Lead perform the read-only current paired source-binding and consumed-tool/input preflight specified in d-e9d6d48cd77538556d1a1c1f, recording its result and missing-test disposition before scheduling revised independent static reproduction; do not restore source, reuse old binding or authorize lab work.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-481c9379a1efc0e527d2a28c\",\n \"summary\": \"END bounded resolution-only quantum. OBSERVATIONS: assigned roots /tmp/opencode/sots-final-research-engine and /tmp/opencode/sots-final-research-re have common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git, HEADs 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Both preexisting dirty; no source changes this session. Current launch runner engine digest ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged; RE e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 versus historical analyst/verifier runner b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4. These runner hashes are NOT campaign-binding domain; old campaign binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 must not be directly equated to them. Complete verifier-to-current git diff identifies ten included byte-changed control/config paths and removed verify/campaign/test_controls.py, plus excluded campaign/housekeeping inventory deltas, all enumerated in decision. No added or mode-only differences. Historical analyst before/after runner digests match verifier. A second whole-run diff against prior completed resolver produced redundant source_after removal and was truncated; it is not used to claim a full fieldwise comparison. Current campaign source-binding was NOT computed (resolver allowlist lacks that command). Canonical binary/tool/save files NOT freshly rehashed or executed. Archived analyst manifest records binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd and twelve positive static commands only. Read raw authority ret bytes and verifier plan; repaired boundary remains unexecuted. DECISION d-e9d6d48cd77538556d1a1c1f resolves source surprise with new-source remeasurement, not restoration/relabeling. Qualified prior unlike-digest comparison; actual source drift survives. Historical static facts retain original scope; current-source reuse and independent-cross-check promotion invalidated. Prior d-6e30d172051af0385f5979eb boundary correction remains required. Contract now needs-revision, no acceptance restored; bridge/replacement remain dependency-blocked. TESTS: Git root/common-dir/HEAD and status checks; read-only manifest diff (exit 1 denotes differences); campaign validate research-completion-abi passed after resolution. No disassembly/save experiment, build, runtime, allocator, RNG or lab execution. No lease acquired; lease inventory inspected only, no availability/access assumed, no cleanup needed. No delegation, implementation/architecture edits, staging, commit, push or board/projection edits. BLOCKERS: current binding and consumed canonical input/tool hashes, required test availability, revised plan, lead scheduling and fresh independent/integrated evidence. Lead/integrator must link actual decision and regenerate projections after integration, not copy a history into board.\",\n \"timestamp\": \"2026-09-10T13:11:37.323815+00:00\"\n}\n","metadata":{"output":"{\n \"actor\": \"research-problem-resolver\",\n \"artifacts\": [\n {\n \"path\": \"campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json\",\n \"sha256\": \"c29e4ce1525f5c06efb87e7454661987026b358e5d9e0d6480df1b6956f19a42\"\n },\n {\n \"path\": \"campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json\",\n \"sha256\": \"c94914d5be47b93eac301e745b53ed7b1f008744a0ac90681fefc9c4f7a11327\"\n },\n {\n \"path\": \"campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\",\n \"sha256\": \"a2e6f0eaf0c2ba2d8a6a0edea74615d0f90ff9202c28811877b09961a265fb94\"\n },\n {\n \"path\": \"campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json\",\n \"sha256\": \"510219b4269311df86f9abe068131efdf3000dbf7757ff9d2c0ef5565001b5fc\"\n },\n {\n \"path\": \"campaign/runtime/runs/run-9daf5c3b75547271d5c3b4ed.json\",\n \"sha256\": \"f0e9a8f47d7d31b873d348606800f20609f935c56b3da93f4478a39e4e10447b\"\n },\n {\n \"path\": \"campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json\",\n \"sha256\": \"a3452db76124adf1d5ad3ed4593845b589068ba2d83ce5633b9b1792b17bf1db\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"c80088956234568ade0a27fb\",\n \"model\": \"openai/gpt-6-astra\",\n \"next_action\": \"Lead perform the read-only current paired source-binding and consumed-tool/input preflight specified in d-e9d6d48cd77538556d1a1c1f, recording its result and missing-test disposition before scheduling revised independent static reproduction; do not restore source, reuse old binding or authorize lab work.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-481c9379a1efc0e527d2a28c\",\n \"summary\": \"END bounded resolution-only quantum. OBSERVATIONS: assigned roots /tmp/opencode/sots-final-research-engine and /tmp/opencode/sots-final-research-re have common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git, HEADs 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Both preexisting dirty; no source changes this session. Current launch runner engine digest ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged; RE e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 versus historical analyst/verifier runner b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4. These runner hashes are NOT campaign-binding domain; old campaign binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 must not be directly equated to them. Complete verifier-to-current git diff identifies ten included byte-changed control/config paths and removed verify/campaign/test_controls.py, plus excluded campaign/housekeeping inventory deltas, all enumerated in decision. No added or mode-only differences. Historical analyst before/after runner digests match verifier. A second whole-run diff against prior completed resolver produced redundant source_after removal and was truncated; it is not used to claim a full fieldwise comparison. Current campaign source-binding was NOT computed (resolver allowlist lacks that command). Canonical binary/tool/save files NOT freshly rehashed or executed. Archived analyst manifest records binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd and twelve positive static commands only. Read raw authority ret bytes and verifier plan; repaired boundary remains unexecuted. DECISION d-e9d6d48cd77538556d1a1c1f resolves source surprise with new-source remeasurement, not restoration/relabeling. Qualified prior unlike-digest comparison; actual source drift survives. Historical static facts retain original scope; current-source reuse and independent-cross-check promotion invalidated. Prior d-6e30d172051af0385f5979eb boundary correction remains required. Contract now needs-revision, no acceptance restored; bridge/replacement remain dependency-blocked. TESTS: Git root/common-dir/HEAD and status checks; read-only manifest diff (exit 1 denotes differences); campaign validate research-completion-abi passed after resolution. No disassembly/save experiment, build, runtime, allocator, RNG or lab execution. No lease acquired; lease inventory inspected only, no availability/access assumed, no cleanup needed. No delegation, implementation/architecture edits, staging, commit, push or board/projection edits. BLOCKERS: current binding and consumed canonical input/tool hashes, required test availability, revised plan, lead scheduling and fresh independent/integrated evidence. Lead/integrator must link actual decision and regenerate projections after integration, not copy a history into board.\",\n \"timestamp\": \"2026-09-10T13:11:37.323815+00:00\"\n}\n","exit":0,"truncated":false},"title":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-problem-resolver --role resolver --model openai/gpt-6-astra --session run-481c9379a1efc0e527d2a28c --summary 'END bounded resolution-only quantum. OBSERVATIONS: assigned roots /tmp/opencode/sots-final-research-engine and /tmp/opencode/sots-final-research-re have common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git, HEADs 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Both preexisting dirty; no source changes this session. Current launch runner engine digest ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd unchanged; RE e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 versus historical analyst/verifier runner b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4. These runner hashes are NOT campaign-binding domain; old campaign binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 must not be directly equated to them. Complete verifier-to-current git diff identifies ten included byte-changed control/config paths and removed verify/campaign/test_controls.py, plus excluded campaign/housekeeping inventory deltas, all enumerated in decision. No added or mode-only differences. Historical analyst before/after runner digests match verifier. A second whole-run diff against prior completed resolver produced redundant source_after removal and was truncated; it is not used to claim a full fieldwise comparison. Current campaign source-binding was NOT computed (resolver allowlist lacks that command). Canonical binary/tool/save files NOT freshly rehashed or executed. Archived analyst manifest records binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd and twelve positive static commands only. Read raw authority ret bytes and verifier plan; repaired boundary remains unexecuted. DECISION d-e9d6d48cd77538556d1a1c1f resolves source surprise with new-source remeasurement, not restoration/relabeling. Qualified prior unlike-digest comparison; actual source drift survives. Historical static facts retain original scope; current-source reuse and independent-cross-check promotion invalidated. Prior d-6e30d172051af0385f5979eb boundary correction remains required. Contract now needs-revision, no acceptance restored; bridge/replacement remain dependency-blocked. TESTS: Git root/common-dir/HEAD and status checks; read-only manifest diff (exit 1 denotes differences); campaign validate research-completion-abi passed after resolution. No disassembly/save experiment, build, runtime, allocator, RNG or lab execution. No lease acquired; lease inventory inspected only, no availability/access assumed, no cleanup needed. No delegation, implementation/architecture edits, staging, commit, push or board/projection edits. BLOCKERS: current binding and consumed canonical input/tool hashes, required test availability, revised plan, lead scheduling and fresh independent/integrated evidence. Lead/integrator must link actual decision and regenerate projections after integration, not copy a history into board.' --artifact campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json --artifact campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json --artifact campaign/runtime/surprises/s-210e489610197533e4f4cce1.json --artifact campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json --artifact campaign/runtime/runs/run-9daf5c3b75547271d5c3b4ed.json --artifact campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt --artifact verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md --next-action 'Lead perform the read-only current paired source-binding and consumed-tool/input preflight specified in d-e9d6d48cd77538556d1a1c1f, recording its result and missing-test disposition before scheduling revised independent static reproduction; do not restore source, reuse old binding or authorize lab work.'","time":{"start":1789045897281,"end":1789045897349}},"metadata":{"openai":{"itemId":"fc_08a300a6877cb65c016aa2ac6603d887d1965ad3a7b91efe61"}},"id":"prt_08b716eff001NStX11IZKlMjLL","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b7152c5001RpXPvZ5yK3s2nH"}} +{"type":"step_finish","timestamp":1789045897460,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b71f8f1001t3eFrh6UFYUet3","reason":"tool-calls","snapshot":"29d54aac2013e0dc6e42d0c2f5ee57e8d9e3acb9","messageID":"msg_08b7152c5001RpXPvZ5yK3s2nH","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"step-finish","tokens":{"total":84846,"input":342,"output":1176,"reasoning":0,"cache":{"write":0,"read":83328}},"cost":0}} +{"type":"step_start","timestamp":1789045903060,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b720ed0001sCSr9wf2Lnr32x","messageID":"msg_08b71f920001Q6dsTCDUyBddso","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","snapshot":"81d4027627ef8194ead974eed111baceccef57e3","type":"step-start"}} +{"type":"tool_use","timestamp":1789045905411,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"type":"tool","tool":"todowrite","callID":"call_gCajzooHrpGJNHVYHq6FK1XH","state":{"status":"completed","input":{"todos":[{"content":"Inspect controls, affected records and current/historical source identities","status":"completed","priority":"high"},{"content":"Classify source drift and record scoped Astra resolution through campaign controls","status":"completed","priority":"high"},{"content":"Validate state and persist final session checkpoint with exact next action","status":"completed","priority":"high"}]},"output":"[\n {\n \"content\": \"Inspect controls, affected records and current/historical source identities\",\n \"status\": \"completed\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Classify source drift and record scoped Astra resolution through campaign controls\",\n \"status\": \"completed\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Validate state and persist final session checkpoint with exact next action\",\n \"status\": \"completed\",\n \"priority\": \"high\"\n }\n]","metadata":{"todos":[{"content":"Inspect controls, affected records and current/historical source identities","status":"completed","priority":"high"},{"content":"Classify source drift and record scoped Astra resolution through campaign controls","status":"completed","priority":"high"},{"content":"Validate state and persist final session checkpoint with exact next action","status":"completed","priority":"high"}],"truncated":false},"title":"0 todos","time":{"start":1789045905407,"end":1789045905410}},"metadata":{"openai":{"itemId":"fc_05ef038a55b73b99016aa2ac8eede887d1a0fec4a468e148be"}},"id":"prt_08b720ed2001jlW7YvaqX3dwpl","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","messageID":"msg_08b71f920001Q6dsTCDUyBddso"}} +{"type":"step_finish","timestamp":1789045905536,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b72187d0017PAb5N7kDWwsot","reason":"tool-calls","snapshot":"fb1108c8cb7da63ccc4ea20e12f7f21a89d4ab4e","messageID":"msg_08b71f920001Q6dsTCDUyBddso","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"step-finish","tokens":{"total":86689,"input":3018,"output":87,"reasoning":0,"cache":{"write":0,"read":83584}},"cost":0}} +{"type":"step_start","timestamp":1789045918113,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b72499d00158Iu0I556xYHwk","messageID":"msg_08b7218b0001my6sWZzxyAaikq","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","snapshot":"77035ea1d9499f13923419c6cb7f22a32b83025b","type":"step-start"}} +{"type":"text","timestamp":1789045927082,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b72499f001ADePpjuKXexzWG","messageID":"msg_08b7218b0001my6sWZzxyAaikq","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"text","text":"Bounded resolution-only quantum completed.\n\n**Finding:** The prior comparison mixed runner inventory hashes with campaign source-binding hashes. However, a like-for-like comparison confirms actual RE drift: ten source-bound control/configuration files changed, and `verify/campaign/test_controls.py` disappeared from the assigned inventory. Engine identity remained unchanged. This is not evidence of a stale game binary or game behavior.\n\n**Durable resolution:** [d-e9d6d48cd77538556d1a1c1f](campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json)\n- Historical static measurements survive within their original scope.\n- Current-source-identical reuse is overturned.\n- Fresh independent reproduction remains required; no acceptance was restored.\n- Choose new-source remeasurement—not snapshot restoration or relabeling old evidence.\n\nThe surprise is resolved; `research-completion-abi` is **needs-revision**. Bridge/replacement work remains dependency-blocked.\n\n**Next action:** Lead performs the decision’s current source-binding and consumed-tool/input preflight, resolves required-test availability, then schedules revised independent static reproduction.\n\nCampaign validation passed. No implementation edits, lab operations, delegation, staging, or commits occurred.\n\n**Final checkpoint:** [c80088956234568ade0a27fb](campaign/runtime/checkpoints/research-completion-abi-c80088956234568ade0a27fb.json).","time":{"start":1789045918111,"end":1789045927079},"metadata":{"openai":{"itemId":"msg_099ead0379a6cb7e016aa2ac9dfb5087d1b25d52db4281c171","phase":"final_answer"}}}} +{"type":"step_finish","timestamp":1789045927239,"sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","part":{"id":"prt_08b726d44001lQGI212HKhmpBE","reason":"stop","snapshot":"a5489510fa1b8cb2beac39e0c23f83af2e19947c","messageID":"msg_08b7218b0001my6sWZzxyAaikq","sessionID":"ses_f74919627ffeRQGj5CsfRwSUeL","type":"step-finish","tokens":{"total":87106,"input":410,"output":296,"reasoning":0,"cache":{"write":0,"read":86400}},"cost":0}} diff --git a/campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.stderr.log b/campaign/runtime/runs/run-481c9379a1efc0e527d2a28c.stderr.log new file mode 100644 index 0000000..e69de29 diff --git a/campaign/runtime/runs/run-81e5e65ab544c63ed8984365.json b/campaign/runtime/runs/run-81e5e65ab544c63ed8984365.json new file mode 100644 index 0000000..88a3623 --- /dev/null +++ b/campaign/runtime/runs/run-81e5e65ab544c63ed8984365.json @@ -0,0 +1,5218 @@ +{ + "actor": "research-abi-correction-verifier", + "checkpoint_session": "run-81e5e65ab544c63ed8984365", + "command": [ + "opencode", + "run", + "--format", + "json", + "--model", + "openai/gpt-5.6-sol", + "--agent", + "sots-verifier", + "Start a FRESH bounded campaign quantum (40 steps). No delegation.\nRole=verifier; requested model=openai/gpt-5.6-sol; actor=research-abi-correction-verifier; checkpoint session=run-81e5e65ab544c63ed8984365.\nCanonical state root: /home/alex/sots-re\nContract: /home/alex/sots-re/campaign/contracts/research-completion-abi.json\nLatest checkpoint: campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\nEngine worktree: /tmp/opencode/sots-final-research-engine\nRE worktree: /tmp/opencode/sots-final-research-re\nRead canonical campaign/README.md, contract, latest checkpoint and open surprises before work. Verify source/worktree/resource identities. Only edit owned scope. Missing state means blocked. Do not commit, stage, push or mutate lab resources without explicit authority and a lease. Checkpoint every 20 tool calls or 15 minutes, before experiments, compaction and stopping; persist under canonical campaign/ using tools/campaign.py with the session above, exact model, actor and role. Include observations versus decisions, source identities, artifact paths, tests, blockers and ONE exact next action. Fresh checkpoint at quantum end is mandatory. Record a surprise and pause affected work if assumptions are falsified. Workers cannot change architecture. Do not rely on chat resume or automatic compaction." + ], + "config": { + "canonical_files": { + "campaign/agents/analyst.md": "895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952", + "campaign/agents/implementer.md": "eb5581051a92b3d2b9ddd947812b1c02ff6a0b5e7619e7674adc26701e9a3d91", + "campaign/agents/lab.md": "48f1765ebdcb2015e631ad91428f65735ff899e119134b652f70788ff2eae5b8", + "campaign/agents/lead.md": "8fcfe52be845ed98a172afb47ea888b19bb7bffa80f7b50ace58d2bb66924220", + "campaign/agents/resolver.md": "742c36dc8567669d462566d6121eed42fcff5bff34e8eff466e92249f7ca195f", + "campaign/agents/verifier.md": "e467fc644e4e37d631a7a4e35038d9d3d0498491f1d7811d61d99271ff345c6b", + "campaign/models.json": "00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48", + "opencode.json": "027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99" + }, + "effective": { + "agent_sha256": "468c1dace9725c494d826ac41a8ebd79b50387eaabd92161005c125f21ee8016", + "sha256": "ef16bed80451572986c1eae10b1bce128fb23bdfbdb2c315bb83faf1c2385937" + }, + "expanded_prompt_sha256": "3ba305b39b9c1925acd4652dfda1792fe337ef9f7194b7da9a036e237571de9f", + "overlay": { + "agent": { + "sots-verifier": { + "model": "openai/gpt-5.6-sol", + "permission": { + "bash": "allow", + "edit": { + "*": "allow", + "*/sots-engine*/src/*": "deny", + "*AGENTS.md": "deny", + "*campaign/agents/*": "deny", + "*campaign/models.json": "deny", + "*docs/architecture.md": "deny", + "*guides/multi-agent-workflow.md": "deny", + "*opencode.json": "deny" + }, + "external_directory": { + "*": "deny", + "/home/alex/sots-re": "allow", + "/home/alex/sots-re/*": "allow", + "/tmp/opencode/sots-final-research-engine": "allow", + "/tmp/opencode/sots-final-research-engine/*": "allow", + "/tmp/opencode/sots-final-research-re": "allow", + "/tmp/opencode/sots-final-research-re/*": "allow" + }, + "glob": "allow", + "grep": "allow", + "list": "allow", + "question": "deny", + "read": "allow", + "task": "deny" + }, + "prompt": "You are the independent SOTS verifier, a separate execution from the implementation author.\nRead canonical RE AGENTS.md, campaign/README.md, the contract, raw evidence and checkpoint.\nChallenge the interpretation, boundary and instrument, not just the implementation syntax.\nBefore coding starts define falsifiers, required branch exposures and distinct states. Afterward\nreproduce from the handoff alone and challenge at least one assumption with a held-out workload,\nboundary, negative control or ablation. Check actual state/RNG independently of reported counters.\n\nReject missing/invalid inputs, zero execution, unexpected skips, truncated coverage, stale binary\nidentity and self-certified evidence. Separate original-assisted, partial compare, full compare,\nindependent replacement and integrated replay. Whole-state equality on one workload has that\nworkload's scope. Record failed predictions and residuals without converting them into success.\n\nOwn verification artifacts only; no edits to implementation to make tests pass, architecture\nchanges, delegates, shared status or unleased lab actions. Plan-changing surprises require Astra.\nCheckpoint every 20 calls/15min and before compaction, experiments, handoff/stop. Finish each\n40-step quantum with reproduction commands/results and exact next action in canonical RE.\n", + "steps": 40 + } + }, + "model": "openai/gpt-5.6-sol" + }, + "path": "/home/alex/sots-re/opencode.json", + "sha256": "027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99" + }, + "contract": "research-completion-abi", + "cwd": "/tmp/opencode/sots-final-research-re", + "id": "run-81e5e65ab544c63ed8984365", + "max_steps": 40, + "requested_model": "openai/gpt-5.6-sol", + "resolution_only": false, + "role": "verifier", + "schema": "sots-run/1", + "source_before": { + "engine": { + "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", + "files": { + ".gitignore": { + "mode": 420, + "sha256": "5103c9533f0d31fea29c0cc85d543692af84a697416dfa7557e31c9843210145" + }, + "AGENTS.md": { + "mode": 420, + "sha256": "7d1d4bc05c35e3354a77b3c8d5d2c04fb9d6658d09e87bc814a50bc3d2033fb7" + }, + "CLAUDE.md": { + "mode": 420, + "sha256": "15d60c3d592302a2854df8bf6d39c0a578c22b9273a633447e10b76fd76291f5" + }, + "CMakeLists.txt": { + "mode": 420, + "sha256": "6e9791511ea23bf8bf5f7f58617a7e77bbe5006829609e425e565c11c1e8d7ed" + }, + "CMakePresets.json": { + "mode": 420, + "sha256": "fcd1dfe3989ee4f56fa3e419059e1db5621922165edf05f13cfe8e5d786d8bb0" + }, + "CONTRIBUTING.md": { + "mode": 420, + "sha256": "26a381fe08feb51f861655f77de4e558f056d1dba79162a2e82513a92d0e6506" + }, + "LICENSE": { + "mode": 420, + "sha256": "eedebad43ea495111bf4451d78cb440309d90a733d6a36445699dde0629f1858" + }, + "README.md": { + "mode": 420, + "sha256": "66c2437fe4f074e6499de50b0d5f0d013bc290333f4d4bf554b541261885a0c1" + }, + "cmake/toolchain-mingw-i686.cmake": { + "mode": 420, + "sha256": "231c0b79868a77d54cc6619f0b4ea18454964a1a078806f44a6ffe3fb7741a9b" + }, + "docs/A2-alliance-and-modcount.md": { + "mode": 420, + "sha256": "0c0c45c31d5d64124f3b91a161f8a2f4732c8a5d7f6bc524baf4d59f8a191701" + }, + "docs/AC-predictions.md": { + "mode": 420, + "sha256": "ab9e41714abdbc32e620d8a2068be8ebd2fc8898ba149113c66ccda248b4bcda" + }, + "docs/B1.md": { + "mode": 420, + "sha256": "42b61bbfc135cdcd0f1a32f63164b88e67106400de7f08f543f118eccd814364" + }, + "docs/B2.md": { + "mode": 420, + "sha256": "87dfd333ee15681a3aa4de58cf1b14ff8240e75afabc05012e0f28531cb4b8b8" + }, + "docs/B3.md": { + "mode": 420, + "sha256": "fb65c41037b6cd6252c67e5244d492a3a17ea4ba2ddae821d49fe0a879528518" + }, + "docs/B4.md": { + "mode": 420, + "sha256": "22547b3d2960684e52a380fb07f43a75bf50aebf93cede689f297cf38f4a012d" + }, + "docs/B6-ship-construction.md": { + "mode": 420, + "sha256": "9c5c4fd2059af965e317c9db5b7fbfc440397ddfcdc5bf7860115f6a8a0532ab" + }, + "docs/CB-capture.md": { + "mode": 420, + "sha256": "ce45a9082588051eda7438016dc66eb28bb4afda98b82cdc20102c4ca53529f0" + }, + "docs/CB-predictions.md": { + "mode": 420, + "sha256": "ba51538b018cbb403978f97ad45d4743937d49ba55c8f15d7af8f8e4aa441f0f" + }, + "docs/E-events.md": { + "mode": 420, + "sha256": "de98795aadb1617eab91815ebc34818bef8b52c36ba18b4521170065bfd2d201" + }, + "docs/EV-events.md": { + "mode": 420, + "sha256": "e7d9536cd23f5d800dc97f68167bb738088a16136004419f28de92d7fe1bcfb9" + }, + "docs/G-wire-schema.md": { + "mode": 420, + "sha256": "19db69ae359ddbd2a0509d02f1c616f939e0428480a8bb33c81f69145323a591" + }, + "docs/G3-civilian-growth.md": { + "mode": 420, + "sha256": "38ea3a8ddc3fdca258294d949c4cd2af1a930cdd9ba612d5e8fb48bc446bdf30" + }, + "docs/H-probes.md": { + "mode": 420, + "sha256": "f23e4d4cbc8c9a3000a0a58ed994dddd95466cee1ec45e961685e86dde4dc54f" + }, + "docs/L1-predictions.md": { + "mode": 420, + "sha256": "af97dbc9f15b9c2e6f223c89bac17826056fa4f3bced3c01513c1ad4d9ac1754" + }, + "docs/L2-predictions.md": { + "mode": 420, + "sha256": "18213ce5f3375d478f266de85c38c2b04ca2ae8ab4a2023780dca161fa14f460" + }, + "docs/L3-predictions.md": { + "mode": 420, + "sha256": "d1c9c0006079f47ef0d3371f4a2c2df2fe4f08ebdad0f8a12d1b0de35b15ae7e" + }, + "docs/L4-ai-orders.md": { + "mode": 420, + "sha256": "b04127c5158a882f252b2b6e8afb2d131f0de623cc0c62c86c612af803d75835" + }, + "docs/L4-predictions.md": { + "mode": 420, + "sha256": "6a194ae336920f13d8e4a44549cbe26be959beef81cffed88ef03b3cec563e44" + }, + "docs/L5-live-verification.md": { + "mode": 420, + "sha256": "4c1abe57c516b36f383390164a362f53294feda222c623283f1e6091d8ef0ec4" + }, + "docs/M-movefleet.md": { + "mode": 420, + "sha256": "718338edb8cbe8a449793b22889776a1783d1d0ade553c03973ea45d426eb426" + }, + "docs/M0.md": { + "mode": 420, + "sha256": "e121c380612a42727e3a973d8cf50f884d660bb4b43bc494258dc1c6b6f26705" + }, + "docs/M1.md": { + "mode": 420, + "sha256": "e0a36cf109d096748e55522eb8d7a261764cbf5ab5daf9342ba903d0f2bc6704" + }, + "docs/M2.md": { + "mode": 420, + "sha256": "25f9cad74eeee40afc2117333232384e1cf387b2b9132856650234c5ba593c61" + }, + "docs/N-output-term.md": { + "mode": 420, + "sha256": "3b8317e22714ef66b35efceee6fa0f7057c37f7c6e34d93cc5047cd1dd07ecde" + }, + "docs/P-events-wiring.md": { + "mode": 420, + "sha256": "72ee81b71b4c08ae451721c785dc5e01ed4ca43ff0fd474befca09dcc41599ba" + }, + "docs/PAR-predictions.md": { + "mode": 420, + "sha256": "16e8fbbac5001db0b10d766858c0ae2ea9619f37043a0883ee46da80d4dd4846" + }, + "docs/PL-players-residual.md": { + "mode": 420, + "sha256": "9bc29bc030ee8b0e00e496b91fe8fefac15179ce9fd01c0a11a7b5b5335356dc" + }, + "docs/R-recapture.md": { + "mode": 420, + "sha256": "73c62ab20c5eca5e87e1d18aefa60a2a2acd75cbc7510d31b27a2cd4ebcec38f" + }, + "docs/RB-predictions.md": { + "mode": 420, + "sha256": "c1016781505c10aa304d4710c5389918b744ab20cbd8cb54dce462c3dc28e4e7" + }, + "docs/S-standalone.md": { + "mode": 420, + "sha256": "8979b0a9fef33a55ca15bf3ef78064e72df332033354329ff2471ad6648e4a8e" + }, + "docs/SD-predictions.md": { + "mode": 420, + "sha256": "a76a568ccac7409e3cb3acef724dbe6b618d4ec30259bce33594098daff8b6a0" + }, + "docs/SV-script-objects.md": { + "mode": 420, + "sha256": "80ebd120fa9cf5e68ac4d33117966805b917d24bc339f7d82be972a280449409" + }, + "docs/T-turn-driver.md": { + "mode": 420, + "sha256": "a4096b8223cea87ce77cc64014c489d4625ed36fd3aec1358565ca5cf91d4e1e" + }, + "docs/U-unlock.md": { + "mode": 420, + "sha256": "5cbe3d8fb4bd30d029cb2db006a4dd3c6819885f55f434afb4bc8ae79b526901" + }, + "docs/V-eventlive.md": { + "mode": 420, + "sha256": "ebd08c000f42211e87958278f03d6891475cd8557658e1a42105cf5ed45a1aa1" + }, + "docs/W2-predictions.md": { + "mode": 420, + "sha256": "9972e27467cf0fe23a358818caf7edb979de25697d3aa4b97a2135ca79fe34f5" + }, + "docs/W2-watchpoints.md": { + "mode": 420, + "sha256": "f8634c5f977b2ca9b2e07df105cba09adacaeb6fb4cf046e41e5e1e42b83b107" + }, + "docs/W3-predictions.md": { + "mode": 420, + "sha256": "211cedc2d924bcf47cbb73166b408e9a27d795863ffc90aa2adbb85beeadffcf" + }, + "docs/W3-watchpoints.md": { + "mode": 420, + "sha256": "568e818e66d95f9079a1270c4d9b900c7eecfd5b5a3b4ba5a4aa0c843666f061" + }, + "docs/Y-standalone-rng-and-tail.md": { + "mode": 420, + "sha256": "49d926cc505d6ba07753748366e42ec32493a15c76bfaa45b2f66f52adc57f2b" + }, + "docs/Z-tail-rng.md": { + "mode": 420, + "sha256": "3ed2b40f728bcedd663c305cce13481bad1429af03fd5215ee3189161cfbd7f1" + }, + "docs/architecture.md": { + "mode": 420, + "sha256": "ba4732eb8a4c7054df5136a72d1774e4f1e919a517a1c74e975903fdd254422f" + }, + "docs/game-data.md": { + "mode": 420, + "sha256": "2124ea3d117b4ee6f48660d9711c1b4ef844a4ba37af7cea3766914d77bd6b23" + }, + "docs/game-design.md": { + "mode": 420, + "sha256": "5b40349ad446596b534567a5683cf9ea99709d9eff231890e0f6256c755f0272" + }, + "docs/game-effects.md": { + "mode": 420, + "sha256": "e1e0abc162602daaac255fe44b11c511adf45d4ef5fa188268411829b0817e5d" + }, + "docs/game-sim.md": { + "mode": 420, + "sha256": "d1e14770d252fd2f320a7baa1ad54c90d955cfc840f477d1700cfbbadcec730e" + }, + "docs/harness-audit.md": { + "mode": 420, + "sha256": "931d92cc744ec6ca3d961fbe7fe96dcab28060446058eb78be9835ebbce73ed0" + }, + "docs/mars-parse.md": { + "mode": 420, + "sha256": "d9fa3029ade4f9401c59fb88f4520a1ef3af9a9c6f2bb5d1a0ebfa1d5061d6dd" + }, + "docs/mars-rng.md": { + "mode": 420, + "sha256": "f2a01b88f105d07d0d0d514430e76da7632e5c8e4e3bbd6c99a25f1dc5daa89c" + }, + "docs/mars-stream.md": { + "mode": 420, + "sha256": "61a16c9b7c143b4bc2edee473cf1f8bd06c1a5144c120bc563e5ec6d770dd0e7" + }, + "docs/mars-text.md": { + "mode": 420, + "sha256": "2b6c7d2eecbb684160e7565d1d7224eb0d2f7e9a41f4d807095a182ea605dcf1" + }, + "docs/mars-vfs.md": { + "mode": 420, + "sha256": "1508c2a070d56f4fdabac3c2ef1fd08d3f93d7a3045d59158340ee22a6ff1b62" + }, + "docs/shim-trace.md": { + "mode": 420, + "sha256": "8a059c1ba761b366449c2db8ef248656da917050ed28855c6d812ecf91672fa5" + }, + "include/generated/sots_addresses.h": { + "mode": 420, + "sha256": "fc34ac4ee8cc7fea91c447b5715841dc6d3afe36f9aff04e88b6c29b5b64f448" + }, + "include/generated/sots_stream_schema.h": { + "mode": 420, + "sha256": "13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c" + }, + "opencode.json": { + "mode": 420, + "sha256": "9af560c2a49945e964beb689649c13775e2aaaf691af270a565d6c6826f76c15" + }, + "src/app/CMakeLists.txt": { + "mode": 420, + "sha256": "142999eded2ff494745ce550af76a8f8caf0269ad22d6d5650e7a79c19d22717" + }, + "src/app/alliance.cpp": { + "mode": 420, + "sha256": "37d6e57f7ce82a69a595cf474e7be7a544efef210f960e9cdfeab6168826bac9" + }, + "src/app/alliance.h": { + "mode": 420, + "sha256": "08fa8dc96286c7cb15a90a987fa22b17e195522e642ab8303b659ca58739eafd" + }, + "src/app/command_replay.cpp": { + "mode": 420, + "sha256": "739059930cd3a5f1d988522ff50c60d8657664a66c9fe19b019833f417b55824" + }, + "src/app/command_replay.h": { + "mode": 420, + "sha256": "956429a742554cada2124de49c6955e27b0e5d68db87dcc95b22c75ec7bd93c2" + }, + "src/app/construction_phase.cpp": { + "mode": 420, + "sha256": "025cd0ea1a7badd567f7f1cd59330b1e01149b5c5094575fbd438683658bb0df" + }, + "src/app/construction_phase.h": { + "mode": 420, + "sha256": "a4d39994096683a1144eb20282b205cf71e2045873cc15b53bdac214ab1e9a5e" + }, + "src/app/event_phase.cpp": { + "mode": 420, + "sha256": "80717fa7c7f108004d5250f12b6c994752a1a55d7f32c7d3ebf29f2869118c90" + }, + "src/app/event_phase.h": { + "mode": 420, + "sha256": "54077268fe4705270dc06bdc46a6fd9384fb5e0d36da19e55ea149b478d8cf34" + }, + "src/app/growth_phase.cpp": { + "mode": 420, + "sha256": "5924d2641fc98d902b56a3e6417d7a57d70c1564718951b098e7d14376ebc4e3" + }, + "src/app/growth_phase.h": { + "mode": 420, + "sha256": "8222ef811abff161c8f891a331a52e527de54fbf468949d1e0e188adc473ae3b" + }, + "src/app/main.cpp": { + "mode": 420, + "sha256": "adfd7dd177439bfd57509532bcf0f37779281ae9309daa93efe1ada3ef3f57a7" + }, + "src/app/observed_phase.cpp": { + "mode": 420, + "sha256": "31fb99678d60de6901b4bb1b251abe2421453264653cf5f7bd297a376c2b23f3" + }, + "src/app/observed_phase.h": { + "mode": 420, + "sha256": "f88fc22a5cb21a43e196d7fae09446126635d3284e6b398bca234f265234b693" + }, + "src/app/phase_catalog.cpp": { + "mode": 420, + "sha256": "e3da16e6d499b7836953251d940ce171792ada208156ca583277298f305fc316" + }, + "src/app/phase_catalog.h": { + "mode": 420, + "sha256": "da6fff506002079d8277358d0095981dc260449dc19677a533ef25ab709aed87" + }, + "src/app/report.cpp": { + "mode": 420, + "sha256": "da3feb6043f6e68cb9ea763f7242ac153a5944c59f448284faf34c64ad6b9228" + }, + "src/app/report.h": { + "mode": 420, + "sha256": "0495d164458ddb7187ce3105f82cee06cf9cf6c5b73ed8cb6e434e1d2e0f8481" + }, + "src/app/script_phase.cpp": { + "mode": 420, + "sha256": "61eeeeb7eac3145cee938ccfc564b231b6968ce7926fb9599c136134f0d5ea91" + }, + "src/app/script_phase.h": { + "mode": 420, + "sha256": "e52006ff939fa945870fafdc2412ba67e3d5e1cc2aa51c0ca0a884ce630aa1b7" + }, + "src/app/trade_raid.cpp": { + "mode": 420, + "sha256": "07d6bb904e655bb644ff6df2e417adb448487bb67acb62240ec5ecc978eabebf" + }, + "src/app/trade_raid.h": { + "mode": 420, + "sha256": "10e0b1460eb7810f1fcd61e67d47333373f06bdacf5a11372958a84a91084e52" + }, + "src/app/treaty.cpp": { + "mode": 420, + "sha256": "317463fc0e2a6ca7eaa4e2f096c3821655a4623de4085af44d951ed500837575" + }, + "src/app/treaty.h": { + "mode": 420, + "sha256": "836395a85868cbd6b7fda8f1d304128fd7cc6952aff37003e8e119a5ce0251f9" + }, + "src/app/turn.cpp": { + "mode": 420, + "sha256": "a626ddf80a340de50b70f09bf91c0180d255c533e65edce1532d807fcf5109b4" + }, + "src/app/turn.h": { + "mode": 420, + "sha256": "85c87aab5c5b5ad5a6a34cc9db710b1cf77dec1a7145ba1e0b5e17fff9a6a237" + }, + "src/app/turn_record.cpp": { + "mode": 420, + "sha256": "e1eb0b253e964ab4f8be1333f81e193ac64109544da384cbdf21858cbf931e4d" + }, + "src/app/turn_record.h": { + "mode": 420, + "sha256": "78d8d2948bd04bff5e7d2c55955b726f1cd7552a765e608e390209e03856f76d" + }, + "src/app/visibility_phase.cpp": { + "mode": 420, + "sha256": "34d9df699af3e57823ec8457c442408da854028f9b95db5820171caad0823131" + }, + "src/app/visibility_phase.h": { + "mode": 420, + "sha256": "60db50f5b98c5edafc86a33f982a7773acc291c1a18f9cf23323e53ebadcde27" + }, + "src/game/ai/CMakeLists.txt": { + "mode": 420, + "sha256": "f51509a2699f02ecab9faa1f75feaa38c299e6bbbe08bfbe5e8e86722037f6eb" + }, + "src/game/ai/agent.cpp": { + "mode": 420, + "sha256": "e1bbddc3deb797d62ae9c2b24bc811ec9379699992dd838694bd5eadc73feef7" + }, + "src/game/ai/agent.h": { + "mode": 420, + "sha256": "48aa26f32d52a3f8f4e37ed5c6986b1e87a8fe1e780d5314514eb5c75b8bc244" + }, + "src/game/ai/apply_order.cpp": { + "mode": 420, + "sha256": "122ffea1090382fd01bc505fd30c59557dfec2c9846609d00da6e80109da2253" + }, + "src/game/ai/apply_order.h": { + "mode": 420, + "sha256": "a3b7a1ca26243ba0fdd801b78978175db6f76e297a72876fa0a35e12f38e09b3" + }, + "src/game/ai/command_capture.cpp": { + "mode": 420, + "sha256": "cb9a1d37af9f66e78d368e03aeabec01e4d48f76aaa30348a51f4c70a915e4ec" + }, + "src/game/ai/command_capture.h": { + "mode": 420, + "sha256": "921599e5b2aa8b773db00134618efde687c7d9ba739abd787ec7666f4cfeb78f" + }, + "src/game/ai/orders.cpp": { + "mode": 420, + "sha256": "1b775eb1a030bc6e81e5b7702cbf8ad56288860276e8a0475da66f7367542640" + }, + "src/game/ai/orders.h": { + "mode": 420, + "sha256": "c2a3b8fe1a7c46a1c1104bc87be8696d9f0782cc304d27cb96d0ec6b182f12ae" + }, + "src/game/ai/tasks.cpp": { + "mode": 420, + "sha256": "b05878ccd94c375aac8723c8ea9499f77b98fb94acc5a75a15fa1948dbe83c76" + }, + "src/game/ai/tasks.h": { + "mode": 420, + "sha256": "b1de4f89c1679ccfdeaa8b852cb2ce407b71dcd1bffacf97df389a69f6ae3a5d" + }, + "src/game/ai/turn_order.cpp": { + "mode": 420, + "sha256": "858b12c51c4509e16a22a6c080d1c6b47bd23d2b8a11f84a48d34f24c4635f22" + }, + "src/game/ai/turn_order.h": { + "mode": 420, + "sha256": "3e76710928fc2df52fd8312abfb8f23a2ce162f8e0856f46672a4f46b5b4384f" + }, + "src/game/combat/CMakeLists.txt": { + "mode": 420, + "sha256": "4b3a05c45360e312d6c1d96c1f05a60437d19d2046257835e0d6c70ecc4ce115" + }, + "src/game/combat/retreat.cpp": { + "mode": 420, + "sha256": "eede86a4d25289dfc9132d5776b11114a109179e5aa10f2b985035e5b22d7a1f" + }, + "src/game/combat/retreat.h": { + "mode": 420, + "sha256": "5fc3e002a5f1944f29c74f862ff942b894e40e88afafd52358373ada36644d7d" + }, + "src/game/config/CMakeLists.txt": { + "mode": 420, + "sha256": "c746021654505c92be333cefb9df994431679d40d8d654b937feb950684830f7" + }, + "src/game/config/config_loader.cpp": { + "mode": 420, + "sha256": "d903ba06747e5b7d66400d03ee1f0a9896bf4268bb200dec0b5c8599dbd3d3a1" + }, + "src/game/config/config_loader.h": { + "mode": 420, + "sha256": "fda71dee1a4e2b896760e9ac344768e176ea4f0a08609c7d651033a1ee698085" + }, + "src/game/config/manifest_loader.cpp": { + "mode": 420, + "sha256": "dbe33dc5ae03db18f3b2c01b48cc1fced10f2cca599270c0a028321a7d7dd7c6" + }, + "src/game/config/manifest_loader.h": { + "mode": 420, + "sha256": "68e508b9e6d1222d980b22ae826b127693fdf0821b6539ed9e62a8ec031aa5b5" + }, + "src/game/config/msvc_sort.h": { + "mode": 420, + "sha256": "17fcb13bb49a634c80be38299617c6c16fd8addedfa88c53d67242c90b811716" + }, + "src/game/data/CMakeLists.txt": { + "mode": 420, + "sha256": "677ba0dd0ebb8176f4e7c41d5550f2ccedd56d49e7e4acb1eb0a7970e9e98a51" + }, + "src/game/data/block.cpp": { + "mode": 420, + "sha256": "f61312708c715ce525ed1a01e71f1446d31fc96ca1cc51f5bd863cac51702200" + }, + "src/game/data/block.h": { + "mode": 420, + "sha256": "f14155dfca5fd270ad6b4d462458aa8cd5c5edf5e19da4df492ee2907e99eccc" + }, + "src/game/data/catalog.cpp": { + "mode": 420, + "sha256": "7799ad3b31d43236cacbc51c3ab086265927f98b1346005a8adfed2796178ebc" + }, + "src/game/data/catalog.h": { + "mode": 420, + "sha256": "80223146bcdbf4808776f974df7e5f46b120a021979a22f50b5ce2d74ec16d6e" + }, + "src/game/data/common.cpp": { + "mode": 420, + "sha256": "e58ba046844be11c61f7f7e501829b48b4f16e7c0ab78f10fcf9189c133cf040" + }, + "src/game/data/common.h": { + "mode": 420, + "sha256": "d1ac8375c1be133a98a383e01598f393f194e1bd9790d1c1230bc6121a45a187" + }, + "src/game/data/fields.h": { + "mode": 420, + "sha256": "4209df368ad776b3c24350246acf47ad874fcbbe292fb16f9ca7dacaef2f08fb" + }, + "src/game/data/shipsection.cpp": { + "mode": 420, + "sha256": "82d5ba9be2a446e50934b0b9a03b16839bd3acd1a967d9441180a1baaa271264" + }, + "src/game/data/shipsection.h": { + "mode": 420, + "sha256": "bcf100f83691226c4993dd7866b67a0b48d9b4bc6841463fbf07f0f26bf9dca0" + }, + "src/game/data/strings.cpp": { + "mode": 420, + "sha256": "6d983d3a4cb4284215301409587136fb765a5e6a4c9f4b988e01d710c0815f59" + }, + "src/game/data/strings.h": { + "mode": 420, + "sha256": "fb292bd472ed68eb4a5e93484f3f92d8a0ae8661e6a61ca4b417ab889c508055" + }, + "src/game/data/techtree.cpp": { + "mode": 420, + "sha256": "2ac6e39faeef808c97375f3b8a3ee219fcab8cc09921f0ed8d82eef7374eb9ea" + }, + "src/game/data/techtree.h": { + "mode": 420, + "sha256": "504946c255405ab28d20d0ed6c095b3b63f0e6865afe0e8bb0707e607c363007" + }, + "src/game/data/turrets.cpp": { + "mode": 420, + "sha256": "ce7db50ef10825e168fee2bf57c4b6038dd1a356be7ada9ed6a4f6a4f31b07a4" + }, + "src/game/data/turrets.h": { + "mode": 420, + "sha256": "f01603ad32b0ffdf891c88cc54c39a725c6a436f8dda79ac23e7505e59853c64" + }, + "src/game/data/weapon.cpp": { + "mode": 420, + "sha256": "accb5aab2081babb26443cd257f292909e19440c40346e098144148922f5d3f6" + }, + "src/game/data/weapon.h": { + "mode": 420, + "sha256": "63aeb670ae7b8a1fd6daa35ed60ebe41a87f62a6ec2a12f44b13f9052c55b009" + }, + "src/game/design/CMakeLists.txt": { + "mode": 420, + "sha256": "42692f7917d99fb5b9e392c2d0f1d908b2bc5c61fc2e5687fddbd665dafe0bef" + }, + "src/game/design/defaults.cpp": { + "mode": 420, + "sha256": "8efa0b79646525375739a1acfe77e75d5ae6b669d1ecaa01f49f3f5183caf528" + }, + "src/game/design/defaults.h": { + "mode": 420, + "sha256": "20af056628f362a4d5ad7ba6277135697718197ec6844ae0ae85bf06d4cd818b" + }, + "src/game/design/design.cpp": { + "mode": 420, + "sha256": "e166281c52a6d92fed8810b38bd736cbd2a324f15d290a39a539d01ff35ead20" + }, + "src/game/design/design.h": { + "mode": 420, + "sha256": "7e936c78ca10c3a49470da67f1659cf4ee323d14d50b5b2c1ada08edfa8f6997" + }, + "src/game/design/hull.cpp": { + "mode": 420, + "sha256": "554b0ef6955ac230c7eca29ea2d94d60b5fbc91f34d9ff457091577c8602268a" + }, + "src/game/design/hull.h": { + "mode": 420, + "sha256": "997018e59c9d78ee1da7e7cb9561b94b76befacbe348a4ce3301c5f22b582461" + }, + "src/game/design/rules.cpp": { + "mode": 420, + "sha256": "a623984f9ab40c354320051fec00bab2c7e3728c2c90082b3b8051294b906319" + }, + "src/game/design/rules.h": { + "mode": 420, + "sha256": "70a8a42fe82e9805cbb957717688ab9f9eb3438226f6e0d696ef5f7a51529229" + }, + "src/game/design/stats.cpp": { + "mode": 420, + "sha256": "c05f420a00026289be8693c0d80bbd2354ce354a91a78459cfc8e70467326c54" + }, + "src/game/design/stats.h": { + "mode": 420, + "sha256": "ba0a5d3bcc98f5c3e64579d42da70bfdf563773ce2fe1e6bfa2b36b14c453fe5" + }, + "src/game/effects/CMakeLists.txt": { + "mode": 420, + "sha256": "2e20f138f98bc69653c8360a26f99f3f43f35beedea5e90dfd7e9721e7550f89" + }, + "src/game/effects/tech_effects.cpp": { + "mode": 420, + "sha256": "40358c2af37543ca3ab09b4d0433cdb4b0d2d212b45f648739cc86e979501604" + }, + "src/game/effects/tech_effects.h": { + "mode": 420, + "sha256": "ef70addf2caf1e3abf36ac9d878a8db37d2adbac370957f5b6a0b5825564a0d6" + }, + "src/game/effects/tech_id.cpp": { + "mode": 420, + "sha256": "11cd652e81a52e86d72541a5c3de77bb50de3d31226272e0d1856e5a15b7f9a6" + }, + "src/game/effects/tech_id.h": { + "mode": 420, + "sha256": "f37752250c80c9c75ef8e144e4646dc1290a2cc8ce72d9a37949c6408996df86" + }, + "src/game/events/CMakeLists.txt": { + "mode": 420, + "sha256": "9b1f14a3801a991ba065e0e39ae2e3fa3966018e8a98fcceeddeaca3909328e2" + }, + "src/game/events/event_log.cpp": { + "mode": 420, + "sha256": "3b131879ec5e81cd1ba2bb0cbdfa6e05775ed77684f4ed7a8f5cfae87da1e7b1" + }, + "src/game/events/event_log.h": { + "mode": 420, + "sha256": "2ff415b1120ca3f28421006a566280fb977027cfa3f209bdba0986350376a953" + }, + "src/game/events/research_events.cpp": { + "mode": 420, + "sha256": "9520b20eba2a2b4bd5925f13b420d526fc610d06aae7ffad314e3002c4f5a253" + }, + "src/game/events/research_events.h": { + "mode": 420, + "sha256": "b87340c6b14e9de97e5bc0c5a4cbd74e54bab2831c60edf88c0e42ff5218ea22" + }, + "src/game/nav/CMakeLists.txt": { + "mode": 420, + "sha256": "79cc0ba25c6d49f7784663ace033d01ab3d85a5d8015fe2f466f8f1a3065983a" + }, + "src/game/nav/pathplan.cpp": { + "mode": 420, + "sha256": "04cfe8fca5be565f5443c8f1402eb0072221dbd63f70855e35b3eeea752f1775" + }, + "src/game/nav/pathplan.h": { + "mode": 420, + "sha256": "28b51f737b458679888e555d985b9e8d41adf8ba91fa0980b5e83668758c86e7" + }, + "src/game/sim/CMakeLists.txt": { + "mode": 420, + "sha256": "4b3085116f88c903a137abef6806891f7b7245dcb031153df7a5465dd2521116" + }, + "src/game/sim/colony.cpp": { + "mode": 420, + "sha256": "e0f0bf15d87b6ac2e92053cbfe0869c0dbf9465d90a9bae5456bb46883423b77" + }, + "src/game/sim/colony.h": { + "mode": 420, + "sha256": "357dce21440140a6cf836a3c12175ebb5bb6706c37d5ecd315a4ee4937725b47" + }, + "src/game/sim/construction.cpp": { + "mode": 420, + "sha256": "8cf4792f487162ca3599f16f0e92d73b4c9549046044548c5aecf202dd564130" + }, + "src/game/sim/construction.h": { + "mode": 420, + "sha256": "a7f201101ad704f1994f809259ad60f780760fa36174d99a1ccd9299447f5460" + }, + "src/game/sim/economy.cpp": { + "mode": 420, + "sha256": "1e0b17b589496a6139e8ca10fe20553050be7c965a02daf8b520dd5020412d89" + }, + "src/game/sim/economy.h": { + "mode": 420, + "sha256": "6f3e33e803bb49367d4cee3c8ef6186f04b79e7cf901047fc48d933108ab6d2a" + }, + "src/game/sim/movement.cpp": { + "mode": 420, + "sha256": "80c64b2148304b84683cf3860ced1354f5c29c923bbc50cc5001030dd85c2cd2" + }, + "src/game/sim/movement.h": { + "mode": 420, + "sha256": "9a6b2b4960428634d8004cd5694ed6a7a10ab28fd9c0e2a9824ede3e201e9441" + }, + "src/game/sim/numeric.h": { + "mode": 420, + "sha256": "88f715192ea322ace4eea13ab5ae55f7f41600262025208e468b5259220522c2" + }, + "src/game/sim/observed.cpp": { + "mode": 420, + "sha256": "43d29a9fe1195dcc0b7e6101ea05bfd076f03636f9f68de473539c83db0ddd22" + }, + "src/game/sim/observed.h": { + "mode": 420, + "sha256": "0224b5bf341f30ff0e98d910547261b6732bdc0c5339b520e26fc51939c1269f" + }, + "src/game/sim/player_turn.cpp": { + "mode": 420, + "sha256": "beb1b2ed434df3727e676ac56e751beff87fa98e4a42e4657cc54d41025773a2" + }, + "src/game/sim/player_turn.h": { + "mode": 420, + "sha256": "f24f8f5e161486575cd341c2f5bfed46fa6983263edcf2320e9c24860b4be51a" + }, + "src/game/sim/research.cpp": { + "mode": 420, + "sha256": "95f2d325544ee018ec8d0f945e91b4172f6ba406f95e19f86c4fb9aac6b22a89" + }, + "src/game/sim/research.h": { + "mode": 420, + "sha256": "e27a311e977afb2e01242938dc8d928e9a67d1f761965e191cf907e05c1c86e9" + }, + "src/game/sim/rng.h": { + "mode": 420, + "sha256": "f7e5bbced3dbd37deb49a00b52d05f7c751501d654dabd645ecff7447355929c" + }, + "src/game/sim/scriptobjects.cpp": { + "mode": 420, + "sha256": "a4f9a1b49e4ba22a88726efbbea2f355b40a3c006734d9150d509a344720a4d2" + }, + "src/game/sim/scriptobjects.h": { + "mode": 420, + "sha256": "210d0eb51780df70a9bca133664429589c03ea33e4524e2c182801d4b4a5c74b" + }, + "src/game/sim/species.h": { + "mode": 420, + "sha256": "83b44c0600b99c5acb72a3484bb0708cfba765cdf594aede596a3c47d5ee6298" + }, + "src/game/sim/techgraph.cpp": { + "mode": 420, + "sha256": "81f8f1120eb1fa4a77752bd2e0917df3dd76372461416526ae510bd697944ef8" + }, + "src/game/sim/techgraph.h": { + "mode": 420, + "sha256": "b2fc90666080a6b7f27dc9290eef17774d57742c2a1f9e1f77d94c7fa5689f6e" + }, + "src/game/sim/tuning.h": { + "mode": 420, + "sha256": "4acfad4098de951cc3a94ca25a2f200e96caba1836bf7441de5a2b458c022194" + }, + "src/game/sim/visibility.cpp": { + "mode": 420, + "sha256": "25f86a34f9a98d2439672283a446ba1804973dae3f6d9aa3692342b05f3a3ac0" + }, + "src/game/sim/visibility.h": { + "mode": 420, + "sha256": "783896489a2a9ec8bce617b141bfb631e8ef92f958be7b5c2ca64fd75774471f" + }, + "src/mars/parse/CMakeLists.txt": { + "mode": 420, + "sha256": "76c290b786a3e73387ec8c574fd5a0dbeb6e629adbe970426314f16497f59fa9" + }, + "src/mars/parse/blocks.cpp": { + "mode": 420, + "sha256": "e60baa8127b21cf6eb6c8e2aa02c6a72c6403dbc29e8480ff658bf184266675b" + }, + "src/mars/parse/blocks.h": { + "mode": 420, + "sha256": "1e8b76919a584d1d7fb01c5ff5e3a7173e8456eca892d61f0c6b7bb8f02f33b1" + }, + "src/mars/parse/effect.cpp": { + "mode": 420, + "sha256": "beb76a841a3d42dbc157413384ff1a0312a7068d6b22020eadcee2e1cbbc81f9" + }, + "src/mars/parse/effect.h": { + "mode": 420, + "sha256": "aaa5c83f2d8eef24667bf05d0f71b2a346f2fce09dc9a45d7a5197c894922e44" + }, + "src/mars/parse/result.h": { + "mode": 420, + "sha256": "58cff456e353550abcd0f52e031d9d70f2b7a975f4762cfccc64eb6bc748dbd9" + }, + "src/mars/parse/script.h": { + "mode": 420, + "sha256": "69a493268c47a08672694489a51c3ff0a7f9aa870e5ae5a93d47ba033cf21ad3" + }, + "src/mars/parse/value.cpp": { + "mode": 420, + "sha256": "712133e4d725649f5461e6a46bac6842b0751ac3fb7e1c468f826638ec58f623" + }, + "src/mars/parse/value.h": { + "mode": 420, + "sha256": "60d692648dab7e3e216c8d9e6ef212592ba1df1a98260b1b4599354742947b38" + }, + "src/mars/rng/CMakeLists.txt": { + "mode": 420, + "sha256": "dceb4bc0fb35c95a12ed9aa36380e79aa75641b15ecc06e4289d39824087e2dc" + }, + "src/mars/rng/mt19937.cpp": { + "mode": 420, + "sha256": "0c60775e9437b8eaad49f67a96001c81947c8d9e6d2472e28b2b490515bac95b" + }, + "src/mars/rng/mt19937.h": { + "mode": 420, + "sha256": "300836ab26fd1a4d913b395f08770bb2c248029ef1b80ecbf0c4d886adca2b8e" + }, + "src/mars/stream/CMakeLists.txt": { + "mode": 420, + "sha256": "95ffbb0c519e55b7423ab048a3019e295b7ef3a3e9506044ef2e68569df9601a" + }, + "src/mars/stream/archive.h": { + "mode": 420, + "sha256": "84d9ae2bb3d6f444b3933b3816cafd12caee8619d2219f19cd10d32cfad01d2e" + }, + "src/mars/stream/bytes.h": { + "mode": 420, + "sha256": "9f5869952c9d6b925db32995a417ba292a0c1a672fc3850400150afb8163b3f1" + }, + "src/mars/stream/dump.cpp": { + "mode": 420, + "sha256": "1b5bba86b2f85b1718276f8db557601320ab8a165d5fbfe93e51219cca5a1c16" + }, + "src/mars/stream/dump.h": { + "mode": 420, + "sha256": "a69af300ae7083fb0a5362edbe7eecd5273c8807884aff9fbedd7ae606c7fc4f" + }, + "src/mars/stream/gzip.cpp": { + "mode": 420, + "sha256": "20d71fd50bd637f78e7ebb5217bc6607ebc257535cc4720e640e4badb72f1644" + }, + "src/mars/stream/gzip.h": { + "mode": 420, + "sha256": "6bce52c615eb120999adb1a6f7f06baa813a033c28e02e6d79ce77f5b7a929c9" + }, + "src/mars/stream/node.h": { + "mode": 420, + "sha256": "eb43054c8592db107557979c7fc8612dc0646ba5d62f154b9b7f96a37ba2e860" + }, + "src/mars/stream/probe.h": { + "mode": 420, + "sha256": "6411d0976d1e785e8c32af6ecfe1a797c0a9aa02314e5e42fae3ed7b3449ae13" + }, + "src/mars/stream/reader.cpp": { + "mode": 420, + "sha256": "90f19cbcdb0fc50795895ea1eff09cd6c0ab3069095c49b276f3894e3d6bcbb3" + }, + "src/mars/stream/reader.h": { + "mode": 420, + "sha256": "900508d97be1cbe566d77f2c91755d3db387535cd9574e41704b6d940daa1ff4" + }, + "src/mars/stream/save.cpp": { + "mode": 420, + "sha256": "6db367b3ea570a4d0ee831160e3f44cef380f58de163b9d9205ca7449e51e049" + }, + "src/mars/stream/save.h": { + "mode": 420, + "sha256": "b3a411600d98b42e9014e1fc3cbc3eac5f32f4393e9f72036d3d840c802bb469" + }, + "src/mars/stream/savedump_main.cpp": { + "mode": 420, + "sha256": "8dc687f009d9f455e9bfa4019f03df72e058cebbb3e9ae5bcbb308285470208c" + }, + "src/mars/stream/schema.h": { + "mode": 420, + "sha256": "b1cd64bc43076a3e5893239bd2eb5c216e7293ee541322ef74fb106928183a05" + }, + "src/mars/stream/shapes.h": { + "mode": 420, + "sha256": "45ee379ff8100b6bc27427a2580d7aae19ff3d5d0aa27f682d156ae6a92d0a6d" + }, + "src/mars/stream/writer.cpp": { + "mode": 420, + "sha256": "54804b06266e34793f5294f9a96d2939d641915a0f60fc4e3b4170bfcea6e083" + }, + "src/mars/stream/writer.h": { + "mode": 420, + "sha256": "921cd44ea30e0b9944825b1d2caafc46edc8f2c23506c807050ed9208a397340" + }, + "src/mars/text/CMakeLists.txt": { + "mode": 420, + "sha256": "dccb93b37c21c9b3c3b35a50ca8de55c9f00df2a9e0a33b6c36d659a75455436" + }, + "src/mars/text/csv.cpp": { + "mode": 420, + "sha256": "b190e12b86a3f416a72c110caf9e0b2d98cdd33851d2fa48b55a8d7ea39279af" + }, + "src/mars/text/csv.h": { + "mode": 420, + "sha256": "3b7ec6d0884e95bfab869c253eddc30a802602bd1f230cc69461cb9cf3c17917" + }, + "src/mars/text/flat_kv.cpp": { + "mode": 420, + "sha256": "b98d3b7345489f0b149e56cd15436fd6199e4cf00d7ce3f8b8b31fcdecb90e47" + }, + "src/mars/text/flat_kv.h": { + "mode": 420, + "sha256": "d6765cd42cad46597b6e36e9d08baf6819f7796442293043d5ff686e2376d292" + }, + "src/mars/text/lines.h": { + "mode": 420, + "sha256": "b9a16ccf0dc7bbf36100e0b66c80bcb818590b161f820d3c67d55bccff1c2c65" + }, + "src/mars/text/manifest.cpp": { + "mode": 420, + "sha256": "4da1bb615902ec61883e561f5dd375d89442f7b9046fbc864f6308f27921087e" + }, + "src/mars/text/manifest.h": { + "mode": 420, + "sha256": "dd7351a7a6a144e97f3a3b6a25d22d1518a099e95deadb8965cedb201601e102" + }, + "src/mars/text/result.h": { + "mode": 420, + "sha256": "7f817033811dff6fcef1d5b76f88922cb0392afb4359549876cd017a14755606" + }, + "src/mars/text/value.cpp": { + "mode": 420, + "sha256": "94b433d78f3211e1a4dd9eb8a0a00b514cbeaf63a03e738146c56dbbfe221479" + }, + "src/mars/text/value.h": { + "mode": 420, + "sha256": "d3b5c70af2f339ad27b43c38353fc7a2da83388854b02000fa1b6d9a4e1dfc07" + }, + "src/mars/vfs/CMakeLists.txt": { + "mode": 420, + "sha256": "630d5d4707ef3c0f24a414815cc23158853fe9d5aef429d6619abc1c433b3786" + }, + "src/mars/vfs/path.cpp": { + "mode": 420, + "sha256": "e1f3bbab1f90b0132aec24d8c5997dafab69ec72f01f2dd2fa63c91f83ef7aeb" + }, + "src/mars/vfs/path.h": { + "mode": 420, + "sha256": "043091008f2cab7c88185de63e7aae63ad9b0e384109f5b6fd8c31666c4e2033" + }, + "src/mars/vfs/result.h": { + "mode": 420, + "sha256": "19115bf1c5b3bf01da078a49209230053043610b342b01cdaaed126e2d3ea748" + }, + "src/mars/vfs/vfs.cpp": { + "mode": 420, + "sha256": "ab8272cd14b4b55e7af13f5383d6106f0b1caabdde57e69c1d0fb5b434d31cba" + }, + "src/mars/vfs/vfs.h": { + "mode": 420, + "sha256": "2484231baa64ede6fc35eb0f49e1fd7a3373d5c559f016d5adfb9fc433619d90" + }, + "src/mars/vfs/zip_archive.cpp": { + "mode": 420, + "sha256": "d66e70300539bd42bcf193683df7c34d2b0b03146fd79f0a180385ead1559e87" + }, + "src/mars/vfs/zip_archive.h": { + "mode": 420, + "sha256": "0ffbd90f7919741e63e86e14d0f87d247bc2cd16d2db54771071553249ad935d" + }, + "src/shim/binkw32.def": { + "mode": 420, + "sha256": "fb500fd9f9ecbff44123b89fc24cec72e91fec4c4430ce12a69efc06b20de235" + }, + "src/shim/fpu_force.cpp": { + "mode": 420, + "sha256": "c4b4e41a7ef81139c652ba8164ed8bb0d809b42182f0d0f048b9a9e63bebe59d" + }, + "src/shim/fpu_force.h": { + "mode": 420, + "sha256": "75bac23bc45510961f6b10d21c47e72d8dc0d3971a3ab30b795cad1d25332c06" + }, + "src/shim/hooks/ai_orders.cpp": { + "mode": 420, + "sha256": "091ed885012fffa0e02b83c53e547483dfdeaf1094933726e0291fff0a99e434" + }, + "src/shim/hooks/ai_orders.h": { + "mode": 420, + "sha256": "6e775b3f946f2eaf10dc2e236a3f3c7b9311ed4e82cd4be1ca30e6c62d49d053" + }, + "src/shim/hooks/ai_rng.cpp": { + "mode": 420, + "sha256": "b8fec711cb620561c8f4854e72c3fb0d73013c9b1cd69fa63fc05dd3d2f60289" + }, + "src/shim/hooks/ai_rng.h": { + "mode": 420, + "sha256": "1306f4d3c8071121b06c75232efa5c50b155c1f8752fcae852ee8e5497ce7d08" + }, + "src/shim/hooks/ai_visit.cpp": { + "mode": 420, + "sha256": "cd69811074820810edb1ed3779ca08bd99fea620b162d80a0395d35e8db7fc31" + }, + "src/shim/hooks/ai_visit.h": { + "mode": 420, + "sha256": "8315b433319f680e80a154409124355ad24842e9a0cdef5c8aa6d12422971189" + }, + "src/shim/hooks/budget_inputs.cpp": { + "mode": 420, + "sha256": "fa50fb74a3874886cf8aeb4012b9fd9a5a43ce38ab3c543ee425002ca32fd46b" + }, + "src/shim/hooks/budget_inputs.h": { + "mode": 420, + "sha256": "56e2f95930ff420820a3464162fde74ac0a3ff2e1dc8b493729fed342e4a6548" + }, + "src/shim/hooks/colony_inputs.cpp": { + "mode": 420, + "sha256": "7aa9191ec6292d765fd06c99ff1f2ae2e09a65fb1f238dd2727f28bd465dd46e" + }, + "src/shim/hooks/colony_inputs.h": { + "mode": 420, + "sha256": "87ec765e14106631e3f6423450e6e01d5bb21060fa91f83c267db215ef4986d9" + }, + "src/shim/hooks/colony_turn.cpp": { + "mode": 420, + "sha256": "b82616c7b9b05e96e7f4c40d853c686884b517a5424413686d61799df9d45420" + }, + "src/shim/hooks/colony_turn.h": { + "mode": 420, + "sha256": "a9013cc2e92998ff56ac0c8cc36dc42033fbe3072ee88b86882a1dd4dd0357d6" + }, + "src/shim/hooks/compute_budget.cpp": { + "mode": 420, + "sha256": "76a24f0daf1f49cfabbed13753c65754e26bfcc4f672791b37e926f82b5c1906" + }, + "src/shim/hooks/compute_budget.h": { + "mode": 420, + "sha256": "f308717e44e12151cfb20a6a0cf11ff8e99ecc9c17ef04783198feed05a24caa" + }, + "src/shim/hooks/dictionaries.cpp": { + "mode": 420, + "sha256": "b60794256c07964eb89d5295ecb711b402112fe5f982a9215dc3a304d03a567b" + }, + "src/shim/hooks/dictionaries.h": { + "mode": 420, + "sha256": "ac68fd66eb343d40ee97d6bf29c8b54f5d469a9ef8862687ae15e6ad8bdafdc0" + }, + "src/shim/hooks/draw_sites.cpp": { + "mode": 420, + "sha256": "e7a1fa40262db2ed22b1dfa5ca1bd2588da07bfbab046f23afa8e86c03814d79" + }, + "src/shim/hooks/draw_sites.h": { + "mode": 420, + "sha256": "0021323e918d464223d03b969d0e6992a0efac23ba84a31af901cf2ac74e9b13" + }, + "src/shim/hooks/event_inputs.cpp": { + "mode": 420, + "sha256": "eeb9cc87ef5c39994b7f25d5ccfe220c4775b32a4b11471b0fc0fb81fca4362b" + }, + "src/shim/hooks/event_inputs.h": { + "mode": 420, + "sha256": "c0e74aed8756b3de8ebbe5ab3d70cfa6282403efefc2d795e8f0b1b4cd44d731" + }, + "src/shim/hooks/fleet_movement.cpp": { + "mode": 420, + "sha256": "f01ae7f64b1d545089b002b79c9986d2a39b97ad3995c88a8b71fa05eedb90f0" + }, + "src/shim/hooks/fleet_movement.h": { + "mode": 420, + "sha256": "dbbfe50afaedad63ec45881819aa5de3907cdb411ddf8d1d3e6a5f9a386dc8af" + }, + "src/shim/hooks/global_consts.cpp": { + "mode": 420, + "sha256": "87a51601e1a7d963bf841ca4e892aa79de789a050f5d783c7b5d8bbc2e96a9a1" + }, + "src/shim/hooks/global_consts.h": { + "mode": 420, + "sha256": "b6ac4265ec1f02f11c342536dbc9970c13761ea68aec0a5962d0f4cd6aa5d265" + }, + "src/shim/hooks/movement_inputs.cpp": { + "mode": 420, + "sha256": "0e23f86e4a8ed6c292aea8e45512931cdd06742f25c5e0d175bf0ed3b2217502" + }, + "src/shim/hooks/movement_inputs.h": { + "mode": 420, + "sha256": "32904786cbb122c3c8c36faf6bd9ea5ade4cd8395e74199ec08dbcdb8019b66a" + }, + "src/shim/hooks/player_turn.cpp": { + "mode": 420, + "sha256": "33bcadd7569ad13c69f5f160423c8d469bc67725ce7b944cf4b4346fb8cc7f23" + }, + "src/shim/hooks/player_turn.h": { + "mode": 420, + "sha256": "a766a0d93f3860da6f8d1e0dcf110d6754cd8dfe67d867093f32e3d24e8ff0e0" + }, + "src/shim/hooks/player_turn_inputs.cpp": { + "mode": 420, + "sha256": "993dce2ca771a36337c9561695995a0825746563d2e84b4458de650f3e456799" + }, + "src/shim/hooks/player_turn_inputs.h": { + "mode": 420, + "sha256": "ca0d7916ca17d993aaef19be48d03076220ae15cdcc622aef52a7c6b5957ca71" + }, + "src/shim/hooks/probe_entry.cpp": { + "mode": 420, + "sha256": "5faf9cf04a2cf849d2dd54ce4ad9b812120fb99741f11e9d52fed450badf0506" + }, + "src/shim/hooks/probe_entry.h": { + "mode": 420, + "sha256": "f04f445863a6164d03bc9f6edcaa2e2b0108163241510f4c1dfcb0da7667d89f" + }, + "src/shim/hooks/research.cpp": { + "mode": 420, + "sha256": "dacd16403f1dd5be2ef2cc42f16938977bdd0ee9283d0bca647a079ee3d28e83" + }, + "src/shim/hooks/research.h": { + "mode": 420, + "sha256": "a62c4847be81ed9d10c4f5b9a876bd79898040aa11aa8764149d82db4b010a84" + }, + "src/shim/hooks/rng_ledger.cpp": { + "mode": 420, + "sha256": "119d325fcda72268bdc87f7ca7af05d059d4521c4d7d40ad7426ce070865eabb" + }, + "src/shim/hooks/rng_ledger.h": { + "mode": 420, + "sha256": "0d1e9c79e7601da921253e860c55d9b69c21e03a1014c49f1dd85fd0e5f70f30" + }, + "src/shim/hooks/system_output.cpp": { + "mode": 420, + "sha256": "93bfb7e6ca381041d1e9830f82b8d774a63c12593fc426fd3e9198c9373be3b4" + }, + "src/shim/hooks/system_output.h": { + "mode": 420, + "sha256": "62a8424c70bb8e6c3d9603ce752f6b19a3920a4a78be75718869d7dac73f3738" + }, + "src/shim/hooks/tail_rng.cpp": { + "mode": 420, + "sha256": "9b2a3923d1d837399f3486650ef0e49b502837ff7df46a12df9a9e9b0d4d9d07" + }, + "src/shim/hooks/tail_rng.h": { + "mode": 420, + "sha256": "b9585605e71364872db25c608012e94db2148f22e2e6fd40d4b590a83f3be92b" + }, + "src/shim/hooks/tech_effect_fields.cpp": { + "mode": 420, + "sha256": "4c4d558aba3ac4e1b10e0944c867911e61daea0b4ade716760546846cebcb7b3" + }, + "src/shim/hooks/tech_effect_fields.h": { + "mode": 420, + "sha256": "22b2c050f73c9de011a42dc5a52d92a1bd3b24a59f3ba3b4332d832fb1853420" + }, + "src/shim/hooks/tech_effects.cpp": { + "mode": 420, + "sha256": "2a20f01a18ed30a466e2023ae023aeed8718c680cda927d2f3b463b6dbe35714" + }, + "src/shim/hooks/tech_effects.h": { + "mode": 420, + "sha256": "ffbc4e8262146cd7764f0b9758fff01ce5d359b25a0f5d8c931313f32d035320" + }, + "src/shim/hooks/watchpoints.cpp": { + "mode": 420, + "sha256": "15c94333f22bb592129efe3fb800ea89987045f9ebbc0e6791d4397961fd727d" + }, + "src/shim/hooks/watchpoints.h": { + "mode": 420, + "sha256": "639ae42b230fb31762f50cac0422dcd5b7fda7a1a02c7739a86d1cd6eda62277" + }, + "src/shim/main.cpp": { + "mode": 420, + "sha256": "eebdac7f8f69b8b95cd290c96d41c6f3f0ed5c45ccd5de54ffc790af47083b99" + }, + "src/shim/shim.cfg": { + "mode": 420, + "sha256": "44ca58394455549150c3461cc888128a968b4f062807e19ef25b8eebf0bfd523" + }, + "src/shim/shim.cfg.b4compare": { + "mode": 420, + "sha256": "68bed5883a75132eb5e885b4750d23c1d5734c843a32a56dc7f96d2b73fdf962" + }, + "src/shim/shim.cfg.b4scout": { + "mode": 420, + "sha256": "faac0765478d88b63f371fbc307512e71fe05f2e6f97272e6e0ceb267cc6d626" + }, + "src/shim/shim.cfg.b4trace": { + "mode": 420, + "sha256": "6a89cdd3cfdf53cfbaff29278fd5d0edf156ad8a525c61624b60ddb1eb0575a1" + }, + "src/shim/shim.cfg.bupin": { + "mode": 420, + "sha256": "39d52ef1ccb18d4dea261b87d3f363ba45079022d1b9bc3531c552ef6df80ec2" + }, + "src/shim/shim.cfg.cbcapture": { + "mode": 420, + "sha256": "0939b1ea144976ded2d45ad885fa0f1ffa3d77f16cba9b4d5a9cb87623500a62" + }, + "src/shim/shim.cfg.cboff": { + "mode": 420, + "sha256": "7d5d6e2ceb7f86fd17543c9212e8547be6009f725871aadbaf6057af1f4f5484" + }, + "src/shim/shim.cfg.cbpin": { + "mode": 420, + "sha256": "72a222c025796458dc1a538eed3ea55f053ee5e3c01e5b19b802922a058d4fbe" + }, + "src/shim/shim.cfg.cbtrap": { + "mode": 420, + "sha256": "938c0893b95b576b75927d75787999c22b3424d28c8936456ea3723f62775e51" + }, + "src/shim/shim.cfg.crcompare": { + "mode": 420, + "sha256": "129031ceb358fef9e0fcee2fb42a0f20fd76d9db78f061f956bf75ce2cc51dec" + }, + "src/shim/shim.cfg.croff": { + "mode": 420, + "sha256": "f99345e7db55e695ecabf7a00fc16ced9a42e8882abfeabc8281b9a4ef26d730" + }, + "src/shim/shim.cfg.crreplace0": { + "mode": 420, + "sha256": "60c13bd76e546b4521ab4e6a7836439078e2a176a11e471e03434623153cb7d9" + }, + "src/shim/shim.cfg.crreplace1": { + "mode": 420, + "sha256": "d27f43eb970d6a9c8a0c8d8f7071633a226c34b675a6581b331c6e1ba6f36c9b" + }, + "src/shim/shim.cfg.fpu007f": { + "mode": 420, + "sha256": "998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363" + }, + "src/shim/shim.cfg.fpu027f": { + "mode": 420, + "sha256": "f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd" + }, + "src/shim/shim.cfg.fpu127f": { + "mode": 420, + "sha256": "1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271" + }, + "src/shim/shim.cfg.fpu137f": { + "mode": 420, + "sha256": "8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9" + }, + "src/shim/shim.cfg.fpu1a7f": { + "mode": 420, + "sha256": "59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588" + }, + "src/shim/shim.cfg.fpuoff": { + "mode": 420, + "sha256": "ce637b3f0eca81c04490335cd9fe8a537cd09e5ef14cc5b3050f548ca4d54c65" + }, + "src/shim/shim.cfg.hoff": { + "mode": 420, + "sha256": "dc9b4619fe84921ea5896c2cd190afb5bd4ca89422fb86bfee8459665f92cd7a" + }, + "src/shim/shim.cfg.hp0": { + "mode": 420, + "sha256": "ede723fc540adb94bf16af0f3086c1935aac008acb6a8d550e2a4e97ff232c2c" + }, + "src/shim/shim.cfg.hp10": { + "mode": 420, + "sha256": "1c1f07dfdb7f99d63ed9a62aa9a447efda690623164beeaf434c588e02ef12cd" + }, + "src/shim/shim.cfg.hp11": { + "mode": 420, + "sha256": "36eae0d554a79b9536e3c57d2fef187ae81bd3266947c7f45035be554fb59404" + }, + "src/shim/shim.cfg.hp4": { + "mode": 420, + "sha256": "5bb0d636247c37def9b5cbf0cc9138b13590a50ae8212890fb7d31dfb9e837f4" + }, + "src/shim/shim.cfg.hp8": { + "mode": 420, + "sha256": "a8fe5f16a299b2b9eb81a811c7ec5a3b1baf635fa179a69f1e23243c7d1e2133" + }, + "src/shim/shim.cfg.hp9": { + "mode": 420, + "sha256": "765fdf337bb6942dbd1357166646dbf7fde3777678a606c4dbfd368078f09b5d" + }, + "src/shim/shim.cfg.hpall": { + "mode": 420, + "sha256": "630f99725ea6aa933984f4c545634d127787672de36f6756da2591e22a36f366" + }, + "src/shim/shim.cfg.hprobes": { + "mode": 420, + "sha256": "3bad5e3e7bf35a85acc7169d27531788e9659dbe0f8b1a0c719777fdb6beb5dc" + }, + "src/shim/shim.cfg.hprobes2": { + "mode": 420, + "sha256": "c335f1ec8aeff1165213cd40adcdcd59893c65edf95b1537fc4460e6060911c5" + }, + "src/shim/shim.cfg.l1control": { + "mode": 420, + "sha256": "c5dec81556268795b9a3df175bafde340a3fe76c7d6e05389e09e79d2b138b43" + }, + "src/shim/shim.cfg.l1hive": { + "mode": 420, + "sha256": "970ce465f2363f391a93086f1b596e904265510e02e7d2d38174cc6ea22d9b25" + }, + "src/shim/shim.cfg.l1off": { + "mode": 420, + "sha256": "a4197233c65acb876328666cf37754aea96f942b6ea08105bdfb61d6d5bcbd64" + }, + "src/shim/shim.cfg.l1seed": { + "mode": 420, + "sha256": "360af979eaa0c13eaa4db38ff13dcc64b3e2ab538300c26497921301fd3817b9" + }, + "src/shim/shim.cfg.l1snlv": { + "mode": 420, + "sha256": "3603508983a87906ecce02e4c2e9581cf2fa59390af25335f0b221765c57ef6d" + }, + "src/shim/shim.cfg.l3cont": { + "mode": 420, + "sha256": "629530a34412ebf85fc8ce8d2e5931684eea9891b6b619419e6f8db8c37f0976" + }, + "src/shim/shim.cfg.l3control": { + "mode": 420, + "sha256": "42b6ec7ebc9c83dae4a58884803f627d54956eb308611ce1e8d3691a12a74ccb" + }, + "src/shim/shim.cfg.l3probe": { + "mode": 420, + "sha256": "692dabb6f00343bfcc2f86d62ade827c295acc4630a18a1f2ddcebd53640978d" + }, + "src/shim/shim.cfg.l4control": { + "mode": 420, + "sha256": "ab13b7e3604ee98e9372e3405e0eacb6d5965e02d5317cfee0ea9b9afbd750e3" + }, + "src/shim/shim.cfg.l4dump": { + "mode": 420, + "sha256": "fb40d67d8d7dca4587a1dc13a95826ab68eb3fcf44feb6006388935f3ee346f2" + }, + "src/shim/shim.cfg.l4off": { + "mode": 420, + "sha256": "629a3e41d11daa53325f31aeb77d14d5abe67058e274d36ed8feb71e2e30dc13" + }, + "src/shim/shim.cfg.l4probes": { + "mode": 420, + "sha256": "a446ff3d6117d5352ad9b3c3c02f6d6300ce0b1089f055925afe19b77f0a20f3" + }, + "src/shim/shim.cfg.l4research": { + "mode": 420, + "sha256": "ad400f7082680db82c6fb0d39eed488710e6661f9e3215b9ea2eb0ba53444b9b" + }, + "src/shim/shim.cfg.l5budget": { + "mode": 420, + "sha256": "74df0fa1bd14fec6e8028ba05c516f3a370ba389386e5a8459d594c2c7ad83ae" + }, + "src/shim/shim.cfg.l5control": { + "mode": 420, + "sha256": "3557f716dde348a98fda65a5bad54911fe6d52f75c2cf6a82cc5d4fc47a6e968" + }, + "src/shim/shim.cfg.output": { + "mode": 420, + "sha256": "a811cffac230a1d6c0f9c5adacb1b691ae289ec08de0da3726309a4e1213acb0" + }, + "src/shim/shim.cfg.parbr": { + "mode": 420, + "sha256": "ea8230b596e7baae0c127f5700391ec2c96d546daba8c70ce8b2800c83b096dd" + }, + "src/shim/shim.cfg.parctl": { + "mode": 420, + "sha256": "2d1190d032bb705030746197020c715f4ab8af551f944e9ec0abe136912ea60d" + }, + "src/shim/shim.cfg.parorders": { + "mode": 420, + "sha256": "2107be5ec950e69d01c43ab30919fbfe652823878f150111b158927bc41de8d6" + }, + "src/shim/shim.cfg.parpin": { + "mode": 420, + "sha256": "893f1f81cdef0a964145ebb1c4b1e2725af8868b14fed412d40e3cce71f824f4" + }, + "src/shim/shim.cfg.recapb1": { + "mode": 420, + "sha256": "688840567305218dada122b29284f6af44c3c63ca173db87406de159bb547c8f" + }, + "src/shim/shim.cfg.recapb3": { + "mode": 420, + "sha256": "2120646255bd70adf29ed2880daa6b11d0867b9cfc9f1c9644d63b92c263b69b" + }, + "src/shim/shim.cfg.recapmisc": { + "mode": 420, + "sha256": "cb1f794c51b5d3d74eb91cc084c96a04444cd79f22fc694d821b51924544f595" + }, + "src/shim/shim.cfg.recaptrace": { + "mode": 420, + "sha256": "0ae410cc72fe155837d711c78543e14b1f5743310cd023298eb1e5bbd5457e71" + }, + "src/shim/shim.cfg.sdbr": { + "mode": 420, + "sha256": "7cb2bfd798ed1286628f3a879606eff076c4f6011d95e1223376eb4d0a392ca8" + }, + "src/shim/shim.cfg.sdoff": { + "mode": 420, + "sha256": "9195aeddeb2caa4e3db7dfd775c43e96eb99cfdc59a6a61e65d86fb325f0054a" + }, + "src/shim/shim.cfg.sdpin": { + "mode": 420, + "sha256": "61119f197b1dc8ddcad059d2d2c2753dae457b4bda4eb29e06c78282eeda6a0b" + }, + "src/shim/shim.cfg.sdpin2": { + "mode": 420, + "sha256": "d6d7f82b500df4f3ed120b4ff421178cf4373a145fa803e57d22a0654e4f0f63" + }, + "src/shim/shim.cfg.tturn": { + "mode": 420, + "sha256": "2ab2d64288043c3c55fde668facde9307c0739e0c801c900790e11db57c5759b" + }, + "src/shim/shim.cfg.tturncmp": { + "mode": 420, + "sha256": "114d325ae3ece29422069ee74c790603abb38c49162dd32520a3eecd18ab6061" + }, + "src/shim/shim.cfg.w2control": { + "mode": 420, + "sha256": "d042c0082a8eb4f55b8e21983df292f0950adc4ac5787d4a0b83088c10c5a3eb" + }, + "src/shim/shim.cfg.w2watch": { + "mode": 420, + "sha256": "ddb9c18a1c6b6c23758e51ca9ac18b4b95abe206b162497adc2978c0384d6ee5" + }, + "src/shim/shim.cfg.w3control": { + "mode": 420, + "sha256": "c6a3a5ea1e39a0714dffee0e44a0e8d91a2b450534d7e4377273a55b3e87de8c" + }, + "src/shim/shim.cfg.w3mod": { + "mode": 420, + "sha256": "7c7f82aaa8b5b007a740324373060ca2ba84edc765eb4e7ce55afcaba4e1c2e0" + }, + "src/shim/shim.cfg.w3tshn": { + "mode": 420, + "sha256": "51fa826d0b18d6f01987d6748e6610847ec3a761257ffc382a40d234670afec3" + }, + "src/shim/shim.cfg.zledger": { + "mode": 420, + "sha256": "31d0535aff9660eb1ad06f529c88a42aa71b83b36f8404b7541a29327c508a51" + }, + "src/shim/trace/emitter.cpp": { + "mode": 420, + "sha256": "4253cac49f0761e487fd555c3c01e02fa22e2010789ad3af37c62c8fd2e02030" + }, + "src/shim/trace/emitter.h": { + "mode": 420, + "sha256": "aa7804614b3d3a214d5c32c33ed245ae24276979080baa9d5481d6594ee3f79d" + }, + "src/shim/trace/hook.h": { + "mode": 420, + "sha256": "35be73ac1c9519664957ffea639d873e8a811b4620f0feecb21b54ea2776f800" + }, + "src/shim/trace/platform.h": { + "mode": 420, + "sha256": "f1b78d971798e45998b26c6b0e20db49fceb7d4c63f0c8c37452c6c2c6df9538" + }, + "src/shim/trace/selftest.cpp": { + "mode": 420, + "sha256": "31461ae6d329a8a3856589b245f3bcf8631f0db9a5e00530e4f94279950de354" + }, + "src/shim/trace/selftest.h": { + "mode": 420, + "sha256": "583d7a10ef04254c7a0fb7dd2a6071ad012a9a97dfae0896bbd598970b206475" + }, + "src/shim/trace/sha256.cpp": { + "mode": 420, + "sha256": "2faf44b5b273612c776204c1d83e0910d86394f4f6207129a01c81dedc170aa8" + }, + "src/shim/trace/sha256.h": { + "mode": 420, + "sha256": "31ce080acdc086ff7657d9093ac9bea438203eaa8e392ca38539152cdd15038f" + }, + "src/shim/trace/tracer.cpp": { + "mode": 420, + "sha256": "37d9490dbdedc399ecdb30f46eb27f31a4ff8c902eadb2eb48ecca7fb0e8fb88" + }, + "src/shim/trace/tracer.h": { + "mode": 420, + "sha256": "cbb80f167b8f98777f9fb58ce107226f42027ffdbd868a6808047c48caf10f76" + }, + "tests/addr_smoke.cpp": { + "mode": 420, + "sha256": "ace1ab9549bb6f3e0048d0e6e3ec6061035395581b2db46c0a5acb097c428890" + }, + "tests/app/CMakeLists.txt": { + "mode": 420, + "sha256": "dd18f8e25d2a9ce988dc226e03c7c6e02a275bbbea74f505d005e42ca5972037" + }, + "tests/app/test_alliance.cpp": { + "mode": 420, + "sha256": "671b2cb3295f360c61ee87005287999710d12e10e7e532331c1c946ab97f7c4d" + }, + "tests/app/test_catalog.cpp": { + "mode": 420, + "sha256": "c4cd9840c1f1b5d5a6829f7f1c5a0245b5e66135d3bed6410a2b6eca1a037225" + }, + "tests/app/test_command_replay.cpp": { + "mode": 420, + "sha256": "739ebeea5bed551f232774bc812bcb794cfa057015fd187529fa563b5d7ae5eb" + }, + "tests/app/test_event_phase.cpp": { + "mode": 420, + "sha256": "05498df256759fe5b8af80e9e56c2ca071eb26de0651f257798fe1641da627ca" + }, + "tests/app/test_trade_raid.cpp": { + "mode": 420, + "sha256": "2158008bc711b8062381f346fa347a430582d8d1943b0de5f40eb2a38e9a3f75" + }, + "tests/app/test_treaty.cpp": { + "mode": 420, + "sha256": "0f98150a3f9397fd12109eae7359ff7e04a4060e10e01ecf1693eb2a4606ead7" + }, + "tests/app/test_turn.cpp": { + "mode": 420, + "sha256": "6d45b1d2d065528f14ae83d95314f2b6559e53cc23f1b9e2531c7c09b4b97eab" + }, + "tests/app/test_turn_record.cpp": { + "mode": 420, + "sha256": "a845971b8d25d71c3b1138495354ad392e4fc298f87eb9b89d1567c01ab59cde" + }, + "tests/game_ai/CMakeLists.txt": { + "mode": 420, + "sha256": "a57a82d0c79ff933564e200a5b3137f120e70a19834264eeb2438c4cafd7ad3e" + }, + "tests/game_ai/test_agent.cpp": { + "mode": 420, + "sha256": "41cb3fbfc7e0b277771a2e8dd17601285a1e3a911543fc1335ce05a4e4b5f11c" + }, + "tests/game_ai/test_apply_order.cpp": { + "mode": 420, + "sha256": "8669c2e9a4c95b670a9c41262c68ce183d3cf3900bc262e0a2e33500bfffc594" + }, + "tests/game_ai/test_command_capture.cpp": { + "mode": 420, + "sha256": "8c2bae38754b347beeefe85d796c13bcf43cf5bc9bc99eb743626028b4dbd7ab" + }, + "tests/game_ai/test_live_blocks.cpp": { + "mode": 420, + "sha256": "44cb6bd8b34c13e329f9b1d50bb2a5c5513e52761537dccfb01afb7d48be7580" + }, + "tests/game_ai/test_orders.cpp": { + "mode": 420, + "sha256": "b13d1a3a628de411abb4faf024a1ce8d3e94518f12285bb3d7e7e86b012ad43f" + }, + "tests/game_ai/test_tasks.cpp": { + "mode": 420, + "sha256": "ffd8eed7fa76a24616d579a4e31031dadf43a0534e33743fb104dfca552367fc" + }, + "tests/game_ai/test_turn_order.cpp": { + "mode": 420, + "sha256": "382d6a30e9151c57849595cb134b8e2da25d2763738c9cbfa18d3cad51ecce97" + }, + "tests/game_combat/CMakeLists.txt": { + "mode": 420, + "sha256": "fd0c0dfb54033353b7014e3c764c916522cb529b6b3eae8a8d52afd044c13fe2" + }, + "tests/game_combat/test_retreat.cpp": { + "mode": 420, + "sha256": "3fb0be08d230bbd7c4ea4a59319de7ab252e5b7cbee924afd069847da8dcf73d" + }, + "tests/game_config/CMakeLists.txt": { + "mode": 420, + "sha256": "9874822d186e783f25b2dcd87495e7e380d873b8a0790c67fffb9430468094ed" + }, + "tests/game_config/manifest_tests.cpp": { + "mode": 420, + "sha256": "3bc62e7e49699254151a825421973d831b25bcf7a22028c789e3ca63b0d77319" + }, + "tests/game_config/replay_trace.cpp": { + "mode": 420, + "sha256": "83602ec974b8195c3616230ad44c2d4fd6032f8ef5f96e7aa76d49a0a04ac05e" + }, + "tests/game_config/unit_tests.cpp": { + "mode": 420, + "sha256": "45b07c7289abac61fccd0a6cd0ff87812542ec888eb6d295fb87c3f57755cc6a" + }, + "tests/game_data/CMakeLists.txt": { + "mode": 420, + "sha256": "cb8cffb7217e82077d3db749dcacf29c098549159cc0f312ef04bfccaa30155d" + }, + "tests/game_data/build_and_run.sh": { + "mode": 493, + "sha256": "69ea9cb94468c56c329fcc5b9350431067e97091ed47c08bb10b57b38412883a" + }, + "tests/game_data/dump_catalog.cpp": { + "mode": 420, + "sha256": "4588e699c69586dfb77f0d9289e375407d4f9cf019690e26bfc78f7182167c89" + }, + "tests/game_data/oracle/compare.py": { + "mode": 420, + "sha256": "2cfe1ac93790de3351256d284392372721f94de5375686e6301ef39b1943ad12" + }, + "tests/game_data/realdata_test.cpp": { + "mode": 420, + "sha256": "334a924bf81c6ce6192a6688435b374e115382358f7e4554aa164295bdd38321" + }, + "tests/game_data/test_catalog.cpp": { + "mode": 420, + "sha256": "9ea5c3fff2388c5d7fbf295123dfd7b702ef21f17fc7c45a970822814abfce2e" + }, + "tests/game_data/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/game_data/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/game_data/test_shipsection.cpp": { + "mode": 420, + "sha256": "b3519f0de60d061a6f1ab8ee81d470a28fc17cc81b113639ef2c1e139c249b4c" + }, + "tests/game_data/test_techtree.cpp": { + "mode": 420, + "sha256": "d05c889da9edb622bd2b66aa8e300d8162e0c8788950daa1086fc049b90dd4bc" + }, + "tests/game_data/test_turrets.cpp": { + "mode": 420, + "sha256": "66adff30b974e9bf2c96c1af024fb85677e1a8307c801933d23f3d2ec9d8222c" + }, + "tests/game_data/test_weapon.cpp": { + "mode": 420, + "sha256": "b16b0481c0a8697ff16e39c9feb3ad9d5406250b7dd1c828bf12f1bb40ed746b" + }, + "tests/game_design/CMakeLists.txt": { + "mode": 420, + "sha256": "a26524ff14878564870853bc067c379d2ebd26c14e45bcbb06593d300ee4b3ca" + }, + "tests/game_design/build_and_run.sh": { + "mode": 493, + "sha256": "b1aab4d13b09fb1ea4205978bd7d8b05af5a6422ebe4a34261c3247489b48bd7" + }, + "tests/game_design/dump_designs.cpp": { + "mode": 420, + "sha256": "b1b24c5cb534ad821a20325869713c04b742c541c448ade83543d75608f7eda2" + }, + "tests/game_design/json_min.h": { + "mode": 420, + "sha256": "9cfd3eabe9b36d6b2863872e08fe6ebaddf0749d1966dea693f8bbc0472780ac" + }, + "tests/game_design/mini_catalog.cpp": { + "mode": 420, + "sha256": "5817c0251883c999c6ebd54c77fdcf3981181b41fb5f7637d445824d60942810" + }, + "tests/game_design/mini_catalog.h": { + "mode": 420, + "sha256": "ecb7fd0dffa8709008bcdf9b9da3e70e68f735f9b5ecd0dcb4c871a35ae43b59" + }, + "tests/game_design/oracle/compare.py": { + "mode": 420, + "sha256": "2db14952f7fca9a587995e326651b0d549b39ceefd9c0ac59982cd35ae5d21e7" + }, + "tests/game_design/realdata_test.cpp": { + "mode": 420, + "sha256": "cea57cd53d881b3bf2557cc32ea402c4991aa6de5ff72340861f195a8e20c141" + }, + "tests/game_design/stock_designs.cpp": { + "mode": 420, + "sha256": "2ac1b8bcb0f61852f4bc0a8b7cda51167531ca2a05d1e485991a4758cf586d03" + }, + "tests/game_design/stock_designs.h": { + "mode": 420, + "sha256": "a49173bde083467f5650cfbfbaebba5f16208d660fe7f2f3da81c2caff07c807" + }, + "tests/game_design/test_banks.cpp": { + "mode": 420, + "sha256": "c1d34991c53523cb7610a569e861e8a312da1fe659de0522a3594fb14cad24a6" + }, + "tests/game_design/test_census_saves.cpp": { + "mode": 420, + "sha256": "814c17c7a14db7b123579b7636ee7f2b720fdf4a5cbbe90f676dc01709c45e3b" + }, + "tests/game_design/test_hull.cpp": { + "mode": 420, + "sha256": "cff70268d58ab95ed963d335904110ab55c79d6a0f660f613409cf6d5d63e2bd" + }, + "tests/game_design/test_json.cpp": { + "mode": 420, + "sha256": "e7fa196274a4591834a974f742ff59c7ed1fb15fb138091b48a071354d001c5d" + }, + "tests/game_design/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/game_design/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/game_design/test_stats.cpp": { + "mode": 420, + "sha256": "a3681df901095b848cc6b1ae63d04fd70eeeadd406e7d51f3c76671cbf523a7a" + }, + "tests/game_design/test_structure.cpp": { + "mode": 420, + "sha256": "d09f7707ee170f8a933c657628c1da4f61a29c7eb2dc687a96c3985bdac941aa" + }, + "tests/game_design/test_tech.cpp": { + "mode": 420, + "sha256": "689c081a324c7ece3f70d711f7ac67a5b93207f95e2800a3a708f2f8dbe31965" + }, + "tests/game_effects/CMakeLists.txt": { + "mode": 420, + "sha256": "c80413a7103ce0ed7944fb096ad22fc206a091645428a6015ec3d0e442414a0a" + }, + "tests/game_effects/build_and_run.sh": { + "mode": 493, + "sha256": "ab5085eeab0ec65d8f7ddd7d79357cd15183888b1b4e51cb563810d4e4c64506" + }, + "tests/game_effects/test_effects.cpp": { + "mode": 420, + "sha256": "b10d804b1ad4fb140e13cc1984c6372dbbfdd92560f37583f2411bbcb45c16d4" + }, + "tests/game_events/CMakeLists.txt": { + "mode": 420, + "sha256": "c962651d71ee7783d5565b418f653f2954e489cf698762c5686f5f2dbb4304db" + }, + "tests/game_events/build_and_run.sh": { + "mode": 493, + "sha256": "8b92d249138ee53f728583a0c68b153eaf4e2ad7f92d415d8b3a83df2fb3ec28" + }, + "tests/game_events/test_events.cpp": { + "mode": 420, + "sha256": "182941b9b809b20d24a2e29c5e4bbd626e6da8486e87dc38d1c6088161ec793b" + }, + "tests/game_nav/CMakeLists.txt": { + "mode": 420, + "sha256": "7ee85557a167281f4576252428b4e01795232f31dc1d93c23b284568074cec3b" + }, + "tests/game_nav/test_pathplan.cpp": { + "mode": 420, + "sha256": "6229cc2b1be1ffffb3fbb812c2ccc89dba7099d349be3a6f8f2c2e26aa1dd58d" + }, + "tests/game_sim/CMakeLists.txt": { + "mode": 420, + "sha256": "563547cdd93bce41ef29a73289e5104a5df61f71cc980e49ea37cdbe26743be7" + }, + "tests/game_sim/build_and_run.sh": { + "mode": 493, + "sha256": "a9c42a931242c7f266f512b4d4ad11f6f8ecf43a447a06a04f174301ee19328a" + }, + "tests/game_sim/check.h": { + "mode": 420, + "sha256": "faddddc37a528f0235f510b249cfc1776ce30aff709329954f09093b01231221" + }, + "tests/game_sim/mini_json.h": { + "mode": 420, + "sha256": "710218b637aaf1a5eb7c49eaa7d158bc3e495135ec14bf8b41384769d0227ba5" + }, + "tests/game_sim/smoke_real_save.cpp": { + "mode": 420, + "sha256": "2432e92ac18fadfb1152c54d9dec9a77b3dbf506ea122401cbbd48584b7c9190" + }, + "tests/game_sim/test_colony.cpp": { + "mode": 420, + "sha256": "45355673c46cbaef66b2c81d04a845cf65b6ddfd9819350c7338d9771fafb6fe" + }, + "tests/game_sim/test_construction.cpp": { + "mode": 420, + "sha256": "8df75076a3f460e949e34100d55acf60b054603da6d4aeda4f73297442c06e21" + }, + "tests/game_sim/test_economy.cpp": { + "mode": 420, + "sha256": "43fe658fd2347e3667a901afa642713d70c85ef0ec75094642da2d05b9ca471b" + }, + "tests/game_sim/test_movement.cpp": { + "mode": 420, + "sha256": "1927c371d52115458d88552014cef30bba60e9bef5eb3acfce11b2bc623e06a6" + }, + "tests/game_sim/test_observed.cpp": { + "mode": 420, + "sha256": "1f6ad16c1a2c80f0621573b5196989b0349e47351585d83835be5e27f6ef3fe4" + }, + "tests/game_sim/test_player_turn.cpp": { + "mode": 420, + "sha256": "13f76eaa6cad265deec25416acf0cae2028d6cd1c7b9585df6e9252ba3f0cbed" + }, + "tests/game_sim/test_research.cpp": { + "mode": 420, + "sha256": "3dc668eb889c41f58db6007a96f54fe2a6d56ee6501a298fba3afbbe9637baf6" + }, + "tests/game_sim/test_scriptobjects.cpp": { + "mode": 420, + "sha256": "dfe90a42bcd2844c2ea3666816f97c05237206bf44467ac29790c72b7b498582" + }, + "tests/game_sim/test_techgraph.cpp": { + "mode": 420, + "sha256": "0627ea1c8012b90b62285cae2f31599ba8a8cd47928452910ade91f93502d68e" + }, + "tests/game_sim/test_visibility.cpp": { + "mode": 420, + "sha256": "ad756975b6605a164f2f9106daf2511730642eff354a866bc764a93a4be1efe7" + }, + "tests/mars_parse/.gitignore": { + "mode": 420, + "sha256": "181314065df2f2fdaf920b1a8b5311daa216a2d6489a06ada5b49cc514d89417" + }, + "tests/mars_parse/CMakeLists.txt": { + "mode": 420, + "sha256": "898204fbc1cec44f697e2803c8bc4887857950ba2b1192dd153de74d26de0ea4" + }, + "tests/mars_parse/build_and_run.sh": { + "mode": 493, + "sha256": "550c6df5fffbd85cfffc3312a03a5fa9d59c1e0416e883ddc2576cdb73eac6de" + }, + "tests/mars_parse/canon.cpp": { + "mode": 420, + "sha256": "63e2bcfb2820e7533aa3a287bcec6c318f7238006dce61ad35381562b979cd47" + }, + "tests/mars_parse/canon.h": { + "mode": 420, + "sha256": "c9a78b866d62c4e58643de2c4149572380a1392b411049c8fe74e37475d21d9e" + }, + "tests/mars_parse/oracle/dump.py": { + "mode": 420, + "sha256": "16e98089d5b532e35d6b88b3d50b4bb07e879c18512cf8d06cc5fd2aa9da1117" + }, + "tests/mars_parse/oracle_check.cpp": { + "mode": 420, + "sha256": "5eb81a0c2db8f96c6f8e51246ea9991642e5571dd94dd2e410e2fad632d47adb" + }, + "tests/mars_parse/test_blocks.cpp": { + "mode": 420, + "sha256": "f376a57891a83768ecc8b73ef5eb2333291c280760f7581ead53f7c2a71a4df5" + }, + "tests/mars_parse/test_effect.cpp": { + "mode": 420, + "sha256": "8bb14e7c718e772bfb4a22a7370f41080c49beabfa597ddd603be257bc310011" + }, + "tests/mars_parse/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/mars_parse/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/mars_parse/test_value.cpp": { + "mode": 420, + "sha256": "a8dbe3326e5339cdad8fed7dd678df92e8a8b675d0b854f4cea6517bf557069d" + }, + "tests/mars_stream/CMakeLists.txt": { + "mode": 420, + "sha256": "31c69840e6e2e566d2e0bbaf49ab3dec712d27e505d0810ddf0496ce3ff321e0" + }, + "tests/mars_stream/build_and_run.sh": { + "mode": 493, + "sha256": "3737e42960b66e788a11cdd7fa9917fe255b6a4f60280e9f620593bf688aab41" + }, + "tests/mars_stream/oracle/compare.py": { + "mode": 493, + "sha256": "f39dd70e4bbf1952cf99e3437fd1ed6252249f3455a2d3c73311f98d8ff4370e" + }, + "tests/mars_stream/test_domains.cpp": { + "mode": 420, + "sha256": "08394777f7bc4186883cd02058f17fda8f47c3ee47049892bd8762c28b5aa959" + }, + "tests/mars_stream/test_rng.cpp": { + "mode": 420, + "sha256": "55f77273d8af5880f976a24fb00dcd8042b31a7a33f15c9f4b62fdb85bba9d0a" + }, + "tests/mars_stream/test_save.cpp": { + "mode": 420, + "sha256": "50250bb4b4f2da05f9453c541f080e018b68731f24cbf93278d50ca93ddd8d63" + }, + "tests/mars_stream/test_stream.cpp": { + "mode": 420, + "sha256": "d0da9ac2287910527bdac875ab39e0147a9be2f5535f04b55460438f31be2537" + }, + "tests/mars_stream/test_wire_schema.cpp": { + "mode": 420, + "sha256": "1cfd259f554be8218cb182dd1facc07f6cd3dea52f0daf7303393e78c7c2eb97" + }, + "tests/mars_text/.gitignore": { + "mode": 420, + "sha256": "181314065df2f2fdaf920b1a8b5311daa216a2d6489a06ada5b49cc514d89417" + }, + "tests/mars_text/CMakeLists.txt": { + "mode": 420, + "sha256": "20f8e0cfa044fb4e6b1caca0ec8d6536e012c1c4ea4454fe990923f40a201752" + }, + "tests/mars_text/build_and_run.sh": { + "mode": 493, + "sha256": "59ae392080c01be0c7f5530ecb9ae4fbdcc02366242b27527c14b8efd5076d0c" + }, + "tests/mars_text/dump_json.cpp": { + "mode": 420, + "sha256": "e246384902c3adf4fa8f2a54e38c4912f6b58f168ebc9b1e158a719e2a52b1bc" + }, + "tests/mars_text/oracle/compare.py": { + "mode": 493, + "sha256": "46a796196a413aa28a0069086e45c96399f21308153b578f063801eb997b54ef" + }, + "tests/mars_text/oracle/dump.py": { + "mode": 493, + "sha256": "53fde94f6676a5504a247cf209e2a42d67e108cc9ea0b02f289562799ee7d880" + }, + "tests/mars_text/realdata_test.cpp": { + "mode": 420, + "sha256": "a399ad5cf91cf35f78809f5b9b5cac8b2eff344dbfbab07b8b27bf66058e1e3b" + }, + "tests/mars_text/unit_tests.cpp": { + "mode": 420, + "sha256": "cd1e9e4f6e0e503d4d9b0902bd2936513293490cdc680f94639ce93661ca09d7" + }, + "tests/mars_vfs/CMakeLists.txt": { + "mode": 420, + "sha256": "282015598e03430be0f47b779ce7087662415b3a59de14814cb3ba35c17af363" + }, + "tests/mars_vfs/build_and_run.sh": { + "mode": 493, + "sha256": "b6a8e7b0706d7416f548f071e742e600cab226663f7d4ad42299dbb76f631701" + }, + "tests/mars_vfs/make_fixture.py": { + "mode": 493, + "sha256": "57586249e57550869dd5adfbc4fdab173a59d2aee630ba69c20d562018d249f1" + }, + "tests/mars_vfs/realdata_test.cpp": { + "mode": 420, + "sha256": "c95248ae53d32bd5d8cf963ca3a39ea82e5ef08b76de736104b6aa34ec88c789" + }, + "tests/mars_vfs/test_main.cpp": { + "mode": 420, + "sha256": "cdb7bdf9b9356eb0b7f6cb0fab081cda2161b34af14ecf60cc44970e79d517c2" + }, + "tests/mars_vfs/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/mars_vfs/unit_tests.cpp": { + "mode": 420, + "sha256": "de8da00718799886fbbc5820e0f7d0e468a31ab0608361fb509b0c12932c9caf" + }, + "tests/mars_vfs/vfs_cat.cpp": { + "mode": 420, + "sha256": "4a443e779de264f5c0c68a631b1a353b1310a4e838d342527befd8ad1e2a25bd" + }, + "tests/mars_vfs/zip_builder.h": { + "mode": 420, + "sha256": "a0f3688e5a90b7e209497d66d0dcd30a0e1ac59a56ffcbed31b2a50967c1da3a" + }, + "tests/shim_budget/CMakeLists.txt": { + "mode": 420, + "sha256": "88a0f43e433c3a6879a7f6cccf8c84ba4559009614a3fe5adf6c558ea7a47245" + }, + "tests/shim_budget/unit_tests.cpp": { + "mode": 420, + "sha256": "654e96d0880232d3090223a0d9f92f428aeffa528fbd5eca89d6bfe348aefce0" + }, + "tests/shim_colony/CMakeLists.txt": { + "mode": 420, + "sha256": "d7b2674971b0eda32b2edd62244c32af81cea9e6d984a24ca6648edbaea80e06" + }, + "tests/shim_colony/unit_tests.cpp": { + "mode": 420, + "sha256": "4cc41308c10fa1e6aa047fb6c26e4c655b727884bce87b5a9e8e2f76db665474" + }, + "tests/shim_events/CMakeLists.txt": { + "mode": 420, + "sha256": "2b43190a2ce88cf7227250aa5a3b48e3006d24f0d6f5e9a5e48507c2733e4c45" + }, + "tests/shim_events/unit_tests.cpp": { + "mode": 420, + "sha256": "0dc151a4aecb24217cc38cb818bbe760b3da2b08a23ad734b3fa8506d25fe2b4" + }, + "tests/shim_movement/CMakeLists.txt": { + "mode": 420, + "sha256": "46ffe5a9815b189283e4d5ef67a0dcd159f60da7f9ca4a3577669035fefdc1f8" + }, + "tests/shim_movement/unit_tests.cpp": { + "mode": 420, + "sha256": "ee6ee983aa72f078a7ae398ca5f828aba14370c898ae4e56063697d28919ad69" + }, + "tests/shim_player_turn/CMakeLists.txt": { + "mode": 420, + "sha256": "f6affa205f857d4a45f8be05ae0426b6f9a2e8e127f5aeadbac2ed8a4c4daddc" + }, + "tests/shim_player_turn/unit_tests.cpp": { + "mode": 420, + "sha256": "0a528cdf64904dfd22c94ea911a15213701e7912921f04c1909799e6e6240450" + }, + "tests/shim_rng_ledger/CMakeLists.txt": { + "mode": 420, + "sha256": "b6a349f2611ec1f1de2013145a97f3da59cefec81dbc4d2f3e58af507e598bb4" + }, + "tests/shim_rng_ledger/unit_tests.cpp": { + "mode": 420, + "sha256": "d38d80dd907a3468036dbca2b017718b199ab4a0078eb5e5b019b913a9ef8d8c" + }, + "tests/shim_techfx/CMakeLists.txt": { + "mode": 420, + "sha256": "5eaf9a76df6b10258a8c1d2658b03d97377d48a778a1628ca94c9bd69fa7ba8a" + }, + "tests/shim_techfx/unit_tests.cpp": { + "mode": 420, + "sha256": "99a71a6d0ca1f53fc8ff0bc21e79acd64ba2cd9c9f990641e5970c866794595b" + }, + "tests/shim_trace/CMakeLists.txt": { + "mode": 420, + "sha256": "91bc736e198c5cef86ad2ad69ca77d93ab770e5faecf9e6d915f9263b9ce491b" + }, + "tests/shim_trace/check.h": { + "mode": 420, + "sha256": "f4b72b971886c64383880ba26484f9c908d21f5902dff0de0b42f276b00d8366" + }, + "tests/shim_trace/harness.h": { + "mode": 420, + "sha256": "d7eae563723843c1389b108fe2efb2e31b6c264d23567a370a09fb9b1d513697" + }, + "tests/shim_trace/oracle_emit.py": { + "mode": 420, + "sha256": "29ed06c602e9f0d6430bb3c81192b1946213a3f44b91107f7036f35f17b69f42" + }, + "tests/shim_trace/test_coverage.cpp": { + "mode": 420, + "sha256": "8ed5b6d755fe7e2bc98d525e97bc7817a5efb7ed5f0196d49d1c783de3a91bea" + }, + "tests/shim_trace/test_diff.cpp": { + "mode": 420, + "sha256": "afd8e5124cf6e1ad9c4f3e4c2beeb65d00002cf1d4cbaa2e876fea0817a7a347" + }, + "tests/shim_trace/test_emitter.cpp": { + "mode": 420, + "sha256": "a9255bbc055df36a01931e8a61dd1dbf16085f7713db7e7386f66b69ddb10762" + }, + "tests/shim_trace/test_hook.cpp": { + "mode": 420, + "sha256": "4dd67374e260ba2722219c2e44e6be76e583d0ad65844f34859cff49b66a30cc" + }, + "tests/shim_trace/test_sha256.cpp": { + "mode": 420, + "sha256": "b55aa15dc806e3e4a87ddf50657fa4e0af6a4e4e2205c4bd63d1ae066fe57428" + }, + "third_party/minhook/LICENSE.txt": { + "mode": 420, + "sha256": "d5c2224982b0b95a16b098a561335fa93f3eaf4d0aa964b7843edb986df78dc8" + }, + "third_party/minhook/VENDOR.txt": { + "mode": 420, + "sha256": "c79054234a5340f6199f8d9f47d6b3d88e8abd2120586cd78f081cfb81a6fabd" + }, + "third_party/minhook/include/MinHook.h": { + "mode": 420, + "sha256": "e34bbf7b855c842694f6e3dd78e2d280e99ed9732501e3dc1532a8626a8db8e5" + }, + "third_party/minhook/src/buffer.c": { + "mode": 420, + "sha256": "75a789eb718bd5ed2de039ccd330736a31d0a2d14e43d8e15e6cd2332432482d" + }, + "third_party/minhook/src/buffer.h": { + "mode": 420, + "sha256": "9769702bd625249e59a19ede05c84365fcc7707e1fa0e5df08df42227cee13e3" + }, + "third_party/minhook/src/hde/hde32.c": { + "mode": 420, + "sha256": "0ddbc3ab3e0b37e61691131289a151e34f508233ccf3f701752777e5d3f62d68" + }, + "third_party/minhook/src/hde/hde32.h": { + "mode": 420, + "sha256": "5132de5be8ac7a9d054420f5caef0fb01437faa892f03b3cdc77f795973bf15a" + }, + "third_party/minhook/src/hde/hde64.c": { + "mode": 420, + "sha256": "9bf19dd706d4bc255ebd1709f98fb44899df7a1f2412820d77295136e0620f1d" + }, + "third_party/minhook/src/hde/hde64.h": { + "mode": 420, + "sha256": "e99aa4997bda14b534c614c3d8cb78a72c4aca91a1212c8b03ec605d1d75e36e" + }, + "third_party/minhook/src/hde/pstdint.h": { + "mode": 420, + "sha256": "604d1cdf45c5a95bc9cf1bbf39ca05ef83013541101d34971c5cd7577e3d5247" + }, + "third_party/minhook/src/hde/table32.h": { + "mode": 420, + "sha256": "43bf687a9fff071b5f46070db4d36c846f8e069cdc57485ee897c499aacdde23" + }, + "third_party/minhook/src/hde/table64.h": { + "mode": 420, + "sha256": "b774446d2f110ce954fb0a710f4693c5562ddbd8d56fe84106f2ee80db8b50a2" + }, + "third_party/minhook/src/hook.c": { + "mode": 420, + "sha256": "3060d3c42f03a2f11324cbee95d853071757ed0fe4b1bc9eb5f0d8fc9e346a37" + }, + "third_party/minhook/src/trampoline.c": { + "mode": 420, + "sha256": "d837f8555681c3762468d712c43f2064ed31dee610e0b02965fd8aa54b88172f" + }, + "third_party/minhook/src/trampoline.h": { + "mode": 420, + "sha256": "27426751dde36cdd8346469e61cdcca47950b1056a69f21cc63f4b41743faf6a" + }, + "third_party/miniz/ChangeLog.md": { + "mode": 420, + "sha256": "ff3b6040f7cbd8c9779a0690e906c66408f7efe3cf88a25019323f0189025ec3" + }, + "third_party/miniz/LICENSE": { + "mode": 420, + "sha256": "0115478d567121238cf6cc1c0c361926cf07a49d9e4c9e66da97fac6a01646b3" + }, + "third_party/miniz/miniz.c": { + "mode": 420, + "sha256": "e2c1aeb66eef9191d8c3feb164db2def2335a61d039bf04ed849f6b042433b30" + }, + "third_party/miniz/miniz.h": { + "mode": 420, + "sha256": "b53b62ed122e559b8f679e3cb787a0b0035fe87a58f909da0e44931678f4e85f" + }, + "third_party/miniz/readme.md": { + "mode": 420, + "sha256": "b4ea367be28a36e5386f65118b73962bc659a67936d248be68b7a7c03b8d359b" + }, + "tools/build-shim.sh": { + "mode": 493, + "sha256": "1da3fdcc019dc6495c870a42b93cee9f21ff7f9623f033c2f50d9db9fd6a33e0" + }, + "tools/check_shim_configs.py": { + "mode": 420, + "sha256": "ef5e8f100c06d8c485a165ab668206af3e9aed3e1f6aa6ffec2592419fc2332f" + }, + "tools/clean_room_check.py": { + "mode": 420, + "sha256": "e15bc3ebfd29c6e2d8edfc32cc812858869b49ffa1404cafce14c4c24e0f4e24" + }, + "tools/clean_room_check.sh": { + "mode": 420, + "sha256": "6646eb6010be756113f7af39b9cfcb06e8580893fbd100a41993f87757ccfd6a" + }, + "tools/deploy.ps1": { + "mode": 420, + "sha256": "fe01f46bedc91d7b42ff98cb0e69633845094cc2802108d23d48eb70f32e3f27" + }, + "tools/sync-build.sh": { + "mode": 493, + "sha256": "ce418ace6c5edae8609849233bb5dfd24657f55141c8ef8507659608f12aee2d" + }, + "tools/undeploy.ps1": { + "mode": 420, + "sha256": "5730b6f95f161ba5a727dc0a34f26da7f1f697711495d6a9de9c289ecd747af0" + } + }, + "manifest_sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd", + "path": "/tmp/opencode/sots-final-research-engine" + }, + "re": { + "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", + "files": { + ".gitignore": { + "mode": 420, + "sha256": "ba56b745b84c6d15b7288df65f319831fed3cbf8edd1ab3a6476418f48fd95f8" + }, + "AGENTS.md": { + "mode": 420, + "sha256": "e722b65480a9f72c2fde1c677c789d4f4b347ef9b450894e9f4295035373df7a" + }, + "CLAUDE.md": { + "mode": 420, + "sha256": "b3e3e5851645a05543e91f128eb6d349abdc6f22accfd997012526e4d35eaa8e" + }, + "README.md": { + "mode": 420, + "sha256": "e318014a84d03e53983cdb1e5b0310f372b959f659b91abc9214faf530544afc" + }, + "campaign/DASHBOARD.md": { + "mode": 420, + "sha256": "eb207987006a3a661bf05b24fc361e1dda74b7a7f42f4abf4a3788cb17a254e6" + }, + "campaign/README.md": { + "mode": 420, + "sha256": "dc702a81c2c664c07eb170f082deb65bc3ff24e2b80d892bb082c7c4feac64fd" + }, + "campaign/agents/analyst.md": { + "mode": 420, + "sha256": "895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952" + }, + "campaign/agents/implementer.md": { + "mode": 420, + "sha256": "eb5581051a92b3d2b9ddd947812b1c02ff6a0b5e7619e7674adc26701e9a3d91" + }, + "campaign/agents/lab.md": { + "mode": 420, + "sha256": "48f1765ebdcb2015e631ad91428f65735ff899e119134b652f70788ff2eae5b8" + }, + "campaign/agents/lead.md": { + "mode": 420, + "sha256": "7661bbfca972be50a52c735b7f15f5be740158542c3d0cdbdf9a6a2590c7f1ea" + }, + "campaign/agents/resolver.md": { + "mode": 420, + "sha256": "742c36dc8567669d462566d6121eed42fcff5bff34e8eff466e92249f7ca195f" + }, + "campaign/agents/verifier.md": { + "mode": 420, + "sha256": "e467fc644e4e37d631a7a4e35038d9d3d0498491f1d7811d61d99271ff345c6b" + }, + "campaign/backlog.md": { + "mode": 420, + "sha256": "a10edaae044e84ee4d26e7461b88e557112f572d60c57e0025171a53dd209a35" + }, + "campaign/board.md": { + "mode": 420, + "sha256": "040c12a20f5bf70b8e6a239efb205039d1ce00a805411ba194a12bde9f40c03e" + }, + "campaign/contract.schema.json": { + "mode": 420, + "sha256": "a2c76ec042ca097a57c3c05c1e519e392d498d387a31808c7d0f70482d43c201" + }, + "campaign/contracts/controls-bootstrap.json": { + "mode": 384, + "sha256": "2943d2281229c102dd612676428a9714510e540671c1e04dae3e6fa7ea1b56ab" + }, + "campaign/contracts/launcher-smoke.json": { + "mode": 384, + "sha256": "c0418dd22bafc321b2f800acaf574dca7956c37b239d789981b920d50ab36599" + }, + "campaign/contracts/research-completion-abi.json": { + "mode": 420, + "sha256": "a5cf5e4bbc5052aa13dc34b55ee65f2997f9342e0b01062e85ad2c16d99daf71" + }, + "campaign/contracts/research-replacement.json": { + "mode": 420, + "sha256": "1108d30bf7e28f30b2446014503fc3200a8b8198a8fab0b866b873a81bf7b8b9" + }, + "campaign/current.json": { + "mode": 384, + "sha256": "87661aaf5ddfbb872365dae8c531453a1e0cb7f91b3ada046be3e829d2555f77" + }, + "campaign/models.json": { + "mode": 420, + "sha256": "95f507237a8e4fcf14189da4aa102dfae1dbaa536d4d8db6bcbfc30162ac5443" + }, + "campaign/open-questions.md": { + "mode": 420, + "sha256": "efb1c736a07bff32e75e0eede20681c206e2c95f439dffe9824702cb864972e7" + }, + "campaign/pilots/research-replacement.md": { + "mode": 420, + "sha256": "3101b8959f28ba2c6ffbac02a82b5ae0e841e7d78bd1f40f05b9d1d2278490ad" + }, + "campaign/research/SESSION.md": { + "mode": 420, + "sha256": "258a2884486ee777fbd8ff180abf23a3a320b2981ee1e90b57d4e3efe18643f2" + }, + "campaign/rollout/RESULT.md": { + "mode": 420, + "sha256": "87aba912d66e2f7bd9779f86cbae3c78d64b1be2572db02ac39fc70c750cb79c" + }, + "campaign/rollout/architecture-decision.md": { + "mode": 420, + "sha256": "8c710f390671500386745d063d6cb6edb175e6e26572286334d2f14a36be6d41" + }, + "campaign/rollout/controls-followup.md": { + "mode": 420, + "sha256": "44d0c95978cbc0953d6b1feab4463b29fab68c9d8dad2eca5fd562bb5aee1578" + }, + "campaign/rollout/controls-worker-state.md": { + "mode": 420, + "sha256": "02ff66f3f0fa978819e5c100e24cfd3752b9041590e2aed36f6abd62ce790f4e" + }, + "campaign/rollout/controls-worker.md": { + "mode": 420, + "sha256": "d022483618d3c3412785ba40e71106976c9b1c9978c43e424e3023a67b8b3f0f" + }, + "campaign/rollout/controls_evidence.py": { + "mode": 420, + "sha256": "bfaf4e523b2ca39c0ecdab94adf0b2b19a3da68aab8a0fcba69a613aed46588a" + }, + "campaign/rollout/engine-followup.md": { + "mode": 420, + "sha256": "d3d289fb4e4cfb7cf1ab6c3de597f530eafd27d3b1aa2f3e8904d6da3a95ac44" + }, + "campaign/rollout/engine-worker-state.md": { + "mode": 420, + "sha256": "76601fa42c95bd7d78ce46f528a33ef0483e0b7f2e19a1cfe1cab8e560bed05c" + }, + "campaign/rollout/engine-worker.md": { + "mode": 420, + "sha256": "fd8bbe69947b69baa61449548d5746723c941ad8b663ec66d1b278234bebe5b2" + }, + "campaign/rollout/formal-verifier-state.md": { + "mode": 420, + "sha256": "2fbac02f5f22b45e94ee33f9f53779fa059c5e93282d3c2f5ad0af027029a1f4" + }, + "campaign/rollout/formal-verifier.md": { + "mode": 420, + "sha256": "f961ceaef0037001e6576d760e28e7aded0502f3d8311925e5ed1cc537c996dc" + }, + "campaign/rollout/gate-followup.md": { + "mode": 420, + "sha256": "677f17aef214e7a6c92958dd8ad98137b238cc7fe7c1da23bcf36d727f28f7c8" + }, + "campaign/rollout/gate-worker-state.md": { + "mode": 420, + "sha256": "96514befccc589487ac3b6ff9348106aca2e4e8e3aa348471943d589c74629e2" + }, + "campaign/rollout/gate-worker.md": { + "mode": 420, + "sha256": "55db7c5f637d849fb2f200ab12c35a794c86e377a5de3f562b1c32455583e65f" + }, + "campaign/rollout/housekeeping-completion.md": { + "mode": 420, + "sha256": "a25041ebaeb030f1cfc62564b5bc57a98818ea75e082f28036e9cc367096ccd1" + }, + "campaign/rollout/housekeeping-followup.md": { + "mode": 420, + "sha256": "5759aaf403c019173450822dc5e9d4aad711a7497eba906caea39bdb39bd3702" + }, + "campaign/rollout/housekeeping-worker-state.md": { + "mode": 420, + "sha256": "5ee9a48a691709af325994fd3d44a1ac6e40d05f26e09b03ae7efec2ecbe25cc" + }, + "campaign/rollout/housekeeping-worker.md": { + "mode": 420, + "sha256": "bab8219fadd0688e91d6211478a01403a36ae74fd2b6f7df0ad5c8745a542ca9" + }, + "campaign/rollout/independent-review.md": { + "mode": 420, + "sha256": "a7a8ebcce5202db0e67c8c65135df751e69ee6728c4c2ced92e1cc85b4279f22" + }, + "campaign/rollout/lead-state.md": { + "mode": 420, + "sha256": "3ded5b3f97d7882f72abef5ea268765a5db29c8b619486c153f5c92742040c01" + }, + "campaign/rollout/publishing-worker-state.md": { + "mode": 420, + "sha256": "641977e4d0ec400a3a6c38121ae5e7904aa1accc47179ee148ad7cb199029b0e" + }, + "campaign/rollout/publishing-worker.md": { + "mode": 420, + "sha256": "822812fbc803d443fb7e0855268c34224eda29f95e57274c217275b09ff4410f" + }, + "campaign/rollout/review-followup.md": { + "mode": 420, + "sha256": "853e3b5aab09cd77fd54cae6d8a61fb5ae092603ab2be8dee2db6d80492a6443" + }, + "campaign/rollout/review-worker-state.md": { + "mode": 420, + "sha256": "a704e6023eaf3424761bf431e49687ae1f1d687119fe00a466b9da2d9ef7bd42" + }, + "campaign/rollout/review-worker.md": { + "mode": 420, + "sha256": "0e348015440aabef95766010f14880619d34a472102698c9819dfbb029b8a6c8" + }, + "campaign/rollout/sync_verifier_snapshot.py": { + "mode": 420, + "sha256": "4133e536bfdb0e206ecdfc072062e7674b07b973c7f8b9d7f1a268520523d6eb" + }, + "findings/.keep.md": { + "mode": 420, + "sha256": "141ed928eaf10a2023dd2c0ff6ea68cf6ec423cfd28d5a359d9c5add730bf64c" + }, + "findings/00-strategy.md": { + "mode": 420, + "sha256": "3bc97827988c6eb4647713c5655271e156dfa466fad5685924010f3244fe6386" + }, + "findings/01-fingerprint.md": { + "mode": 420, + "sha256": "7cf0503c29f5beff852427c2c5bdf8e9d968386de777c47b6130771cac944cac" + }, + "findings/_template.md": { + "mode": 420, + "sha256": "b92d0ca7bfef4498a5f9e594453f15ab15e2c88c7582c4ed5df4c40e6871c3b1" + }, + "findings/control-flow/ai-visit-order-probe.md": { + "mode": 420, + "sha256": "e89f91a33139014ebdc22d79064ecfd06f9b4ffebb4bbc3da73734fc47534047" + }, + "findings/control-flow/alliance-mask-and-modcount.md": { + "mode": 420, + "sha256": "ec66c6b76d9e4c8bed385acf70e6a7d5da08e05eca72ac1e8e5cb307d87f2552" + }, + "findings/control-flow/combat-done-tail.md": { + "mode": 420, + "sha256": "799ace775f12ebe9a2737a711c8d0a6e617f0cefec70b93bf094e47cf81cc348" + }, + "findings/control-flow/combat-resolver.md": { + "mode": 420, + "sha256": "abf1a9329c1bd8a96c76481246a00b380e9a17fa8dc8900810218026e5fe1b9e" + }, + "findings/control-flow/combat-retreat-pipeline.md": { + "mode": 420, + "sha256": "6c40c8bdbdde672c9cd67248d740d88892ad2b93b30e27e9bebe0e96027cf136" + }, + "findings/control-flow/fleet-visit-order-mechanism.md": { + "mode": 420, + "sha256": "a2ea1a6ac9d383380e16910cff89dff0e9b23f1df66f47ef91dd266bd50b3a6d" + }, + "findings/control-flow/gate-indexed-rng-audit.md": { + "mode": 420, + "sha256": "5004b2480787eec7be66f40474648030fdaf7759087a4c4651091152d89351cd" + }, + "findings/control-flow/hive-creation-rng.md": { + "mode": 420, + "sha256": "5ff37d571c0380c798a137e0c6947a0c63109de489fd2100c99bfc6637fc272b" + }, + "findings/control-flow/indirect-edges.md": { + "mode": 420, + "sha256": "3dbf2acf7354f61de66348fe40965f3138dbc4bbff8cb0f06b2751e71ed06ee1" + }, + "findings/control-flow/inlined-draws.md": { + "mode": 420, + "sha256": "3b099718543d7fb112664699749602ff9d61de9aaebb561fc93f1f8b7a152134" + }, + "findings/control-flow/per-history-residue.md": { + "mode": 420, + "sha256": "739c7fc760583ca143036ce554e1eece640d1662fba4642e6f80fadd3dad13f9" + }, + "findings/control-flow/pinned-seed-rich-turn.md": { + "mode": 420, + "sha256": "7c62336767b7c69f513446543f37662ba2a0872e207b906279446bbe399d65b6" + }, + "findings/control-flow/raid-gate-multiplicity.md": { + "mode": 420, + "sha256": "6d7b7357be428ff79186478dc37063657ca4d8e2ad49fcdd92493753748a52f4" + }, + "findings/control-flow/raid-intercept-species-word.md": { + "mode": 420, + "sha256": "1da80eb14f0e3e5a0ce139f62976bb305e3e75a1e5e0631d8287f94eac093d8f" + }, + "findings/control-flow/raid-intercept-z-word.md": { + "mode": 420, + "sha256": "beb421953b70377c8c759f5cc936321faa6316be76d41020b41f26c99706acb3" + }, + "findings/control-flow/raid-target-pick-verdict.md": { + "mode": 420, + "sha256": "d0262a4187e35547b28d6be842e7c730aa3ee93565404b587a790706afabd694" + }, + "findings/control-flow/seed-exposure-forward-test.md": { + "mode": 420, + "sha256": "f108a07ce695b64c482af58db4caeb2607059a3357b62f04f7f36ce45c84ff4a" + }, + "findings/control-flow/standalone-generator-and-turn-record.md": { + "mode": 420, + "sha256": "e499f62534580f27c2a01395e08312ebc7df13bdd307342096f468212aec600b" + }, + "findings/control-flow/standalone-scaffold.md": { + "mode": 420, + "sha256": "0bf928260d5058815a2f09c4df8c08eb359430aeea941f872018de7cbca39105" + }, + "findings/control-flow/tail-probes.md": { + "mode": 420, + "sha256": "ae45e84a9c7f257170f7550301fc4e1a35d5210269bda8070469a5c921cce95e" + }, + "findings/control-flow/tail-rng-ledger.md": { + "mode": 420, + "sha256": "2db588423e7b7de7729e5319477c17fbcea5b7a9cb8ff00b01cfd72bfce25403" + }, + "findings/control-flow/trade-raid-rng-gate.md": { + "mode": 420, + "sha256": "85c7b27aa284988b07b5e67c8e48ef1725289f1a6956d88be2572577cc06e1bf" + }, + "findings/control-flow/turn-driver.md": { + "mode": 420, + "sha256": "3f4e92041a0842d211ea9ae1ae16a9fe400dacf9632209102a1f76acc6b30792" + }, + "findings/control-flow/turn-spine.md": { + "mode": 420, + "sha256": "e2a64f82e5dececb4ba56859d1e53a0f720e08472c79c39197beba7f6041811b" + }, + "findings/control-flow/w3-containers-status-handlers.md": { + "mode": 420, + "sha256": "fffbaa6e3701abbe57a54046416a102502afeaa29b14632f9506905c22bf3914" + }, + "findings/control-flow/watchpoints-modcount-status.md": { + "mode": 420, + "sha256": "0aec4c93ca7219e29827a5069a9829d5e58da2001e79a7316bce288d3e9a6c7d" + }, + "findings/objects/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "findings/objects/00-inventory.md": { + "mode": 420, + "sha256": "cada5fc81c42cb50878a26e43a58640153c600319e66d4c92a23d7c363ff5f14" + }, + "findings/objects/aiagent-block.md": { + "mode": 420, + "sha256": "55d646ab57e90477993d263399254a3b103024d89fff42491b7df5cf4ffc8037" + }, + "findings/objects/classes-game.txt": { + "mode": 420, + "sha256": "e0eceb77c56e05bc7863d3a07805d703fc0ecec489ef24fabe7c6161f2835199" + }, + "findings/objects/classes-mars.txt": { + "mode": 420, + "sha256": "b624f7bd82a5277462a39627140a85c7a7929fd292b62e45edb5c96fd53b6145" + }, + "findings/objects/ghidra-recon.md": { + "mode": 420, + "sha256": "ca4b043a73c1d5573aa0c83cd3942db731884910c90e7d8544c8a32c939e2fda" + }, + "findings/objects/rtti-raw.txt": { + "mode": 420, + "sha256": "39f6fdf8793f8202c19cfb87a75466b215254a13050ec37c0c496699298247ad" + }, + "findings/objects/save-editor-structs.md": { + "mode": 420, + "sha256": "835d4fbf154275542383ea499a527c044ec7d577486c2735b817bd32d6e0c853" + }, + "findings/objects/schema-gaps-resolved.md": { + "mode": 420, + "sha256": "9ddae36eb8e3ef909c4902d01200fc8a17335271e4e063939ae162a3eea5bb3a" + }, + "findings/objects/serializable-types.txt": { + "mode": 420, + "sha256": "59c2f3942f55eb3f6687758a4c447b1ed8902caa60b97d9619bb8228e27c6838" + }, + "findings/objects/serializer-struct-recovery.md": { + "mode": 420, + "sha256": "5b56d8e1a5047d602cea7a76227f30e17244057fe21fde3d4e2cc76e9f185416" + }, + "findings/objects/ship-design-catalogue.md": { + "mode": 420, + "sha256": "feded2191180e184d34d4992935dc117bff8d052e8a2c63ecc29fa7b2e6b561d" + }, + "findings/objects/struct-recovery.md": { + "mode": 420, + "sha256": "4e99ef972529101f5700b52845e263fb3789e0b82d8cdeca921f1595a24d92db" + }, + "findings/objects/svsctob-variants.md": { + "mode": 420, + "sha256": "89617cd2909f2242e9e1657fd4a8f5aafe5aa0c1e0e9bc8926fb67c1e830dd2d" + }, + "findings/objects/svsctob-writers.md": { + "mode": 420, + "sha256": "7a9b7f3bf4eae63cf522246227410b2e3ca789284b7c620f01550fadf479622c" + }, + "findings/objects/turncommands-block.md": { + "mode": 420, + "sha256": "8eca2b79838114e7ae46d34c6e75eaf3b04c0448d9896ed4219b118f09e83046" + }, + "findings/objects/wire-schema-channel.md": { + "mode": 420, + "sha256": "31f0fc4e1cc3c3e7ef938aa22ad65cfdec32be4f1ade476a7ebf32c3c6f07d6f" + }, + "findings/objects/wire-schema-closeout.md": { + "mode": 420, + "sha256": "bbae848b4f8d6d0f2a914268ac34e75b4cea483f52816916202f3bd3cd084255" + }, + "findings/objects/wire-schema-ratchet-debt.md": { + "mode": 420, + "sha256": "0d144181478a607f2474a7c8a1b71ca49c881ef6fd068b5e8859c3fa8129507a" + }, + "findings/resolutions/2026-09-08-ai-seed-per-process.md": { + "mode": 420, + "sha256": "0765bdaeade29122ab5e64493f3a7c339f1e4c4445192ed09ae3d229dd6ae943" + }, + "findings/resolutions/2026-09-09-fleet-id-order-residue.md": { + "mode": 420, + "sha256": "b3d63a11e8ebd55da4af15760d044607b6105216898a018f5ceebc94750817e8" + }, + "findings/resolutions/2026-09-09-seed-exposure-is-a-predicate.md": { + "mode": 420, + "sha256": "dd7ce18738a625b9008ef80783bd64fc3857852775ab3b784b9e5f4fd5ae7de1" + }, + "findings/resolutions/2026-09-09-tail-draws.md": { + "mode": 420, + "sha256": "ff86a332ea9f87bd6f42a0b64e837e6f6f5876423ae9403a903aa9bfe7c42678" + }, + "findings/subsystems/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "findings/subsystems/ai-client-seed-is-per-process.md": { + "mode": 420, + "sha256": "5e6de0418588ff28cee29cb9affd69c3183819318c314eeb0771bbe810e6b4ed" + }, + "findings/subsystems/ai-order-capture.md": { + "mode": 420, + "sha256": "6efebf9f00b375d2c7f29ddeb24ef7a04e3b02cac9027369b490157a196d08ce" + }, + "findings/subsystems/ai-order-emission.md": { + "mode": 420, + "sha256": "9e54a13a18387a4f93acc5c66dbf71d365c81f1a8e6d2aee31f7a89712894ace" + }, + "findings/subsystems/ai-stepping-and-passes.md": { + "mode": 420, + "sha256": "e7e2fc612457a4e77df362aea2928d20fa5a2456fe12a7fbafeaf3c9e01c1dc1" + }, + "findings/subsystems/ai-task-system.md": { + "mode": 420, + "sha256": "577f8fc41256ebdf9629f1e30df9aac7f51c1a84b55f60c2b59e4af4c55126b2" + }, + "findings/subsystems/ai-turn-logic.md": { + "mode": 420, + "sha256": "79e9b7c9592d583db7b9d9ce472804038a71febf7527bd69e31b3399caeb0770" + }, + "findings/subsystems/battle-load-profile.md": { + "mode": 420, + "sha256": "3cf8e28925ebbb162bca9c3be9e6b2599c82ab6aaf9a9d99ffd9c934bf773c77" + }, + "findings/subsystems/data-model.md": { + "mode": 420, + "sha256": "f01c9bfcf8ed9fbf9fdd30556308a1dbb1094896050cc8a5e4fbc1c6c61aff78" + }, + "findings/subsystems/data-parsers.md": { + "mode": 420, + "sha256": "6a428c14279ac2c589b4af932e762ef7e3ada1a878128527b8d88858c11fbc35" + }, + "findings/subsystems/determinism-oracle.md": { + "mode": 420, + "sha256": "4fe0abad0b1b825392cd47b792d06756742495f26ff40a6a433d8608b4680bcb" + }, + "findings/subsystems/eventlive-verification.md": { + "mode": 420, + "sha256": "8bfcc75e57ddf88ec8a4b8885f033be8ffd420965077ab284b1ebce535ecf1a0" + }, + "findings/subsystems/events.md": { + "mode": 420, + "sha256": "c5d6e168d6d48eabec0ae0a448f9c3ec8d0f751a67fc320bc1021ba10008a3bf" + }, + "findings/subsystems/formula-gaps.md": { + "mode": 420, + "sha256": "63ec96a27fac5381d33cdce3e549d230bd5b0230e4d8573f4f3d45bab7d47ffc" + }, + "findings/subsystems/fpu-precision-sensitivity.md": { + "mode": 420, + "sha256": "4cf84e2a1c3d0eaaf9b3a7f218ad663ffa6984389b2a25851249733ad708ff8f" + }, + "findings/subsystems/golden-trace-recapture.md": { + "mode": 420, + "sha256": "b244f939b87dd464d78d919675c0e6aa010b0ec7b4fc6e4178e26c2c8ebee738" + }, + "findings/subsystems/id-allocation.md": { + "mode": 420, + "sha256": "b04a14a5a7d4d1c6137c4f9072987eebc997421e550881dcc2c8e386187f5b90" + }, + "findings/subsystems/income-term.md": { + "mode": 420, + "sha256": "c40286635675a91ce779b887a0394e92f946844873a778015efb98c4a105b67e" + }, + "findings/subsystems/loader-prototypes.md": { + "mode": 420, + "sha256": "f1d09471d5e17c45413b86805f561329f5af24eadfb17c3c740686c39b167ed6" + }, + "findings/subsystems/money-chain-float-widths.md": { + "mode": 420, + "sha256": "99bded6f2d34a713bc175deb4ad5ab4559ce1cc90274b036c1818ad8257c2fef" + }, + "findings/subsystems/movefleet-position-rounding.md": { + "mode": 420, + "sha256": "12dbdc03658cb042b5927586769dc9c19fc2eb812f703e73bf26273f8b0d65a6" + }, + "findings/subsystems/multiplayer-combat.md": { + "mode": 420, + "sha256": "2f4957011b5c5875b8aa7f71531dd5dfe3fd8df4f2c67a7be2fb5999f090c02b" + }, + "findings/subsystems/multiplayer-gamespy.md": { + "mode": 420, + "sha256": "a878e97775d27e085e58b18eaf5a67aaa522456d1055ca142f0477e3d6152d47" + }, + "findings/subsystems/multiplayer-tier0-verified.md": { + "mode": 420, + "sha256": "942ce29cbe22d8f7de5af54f2017c0433c7b8e1a56c864868ec906ffcbb9059a" + }, + "findings/subsystems/nav-classifier-live.md": { + "mode": 420, + "sha256": "b8aacdea8072a99ba1192e235088b372180f094795baf164e8cb95bd2df9f3b0" + }, + "findings/subsystems/nvo-tshn-visible-owner.md": { + "mode": 420, + "sha256": "ef96bb61769c02affd7148cd95e70bf358cbe6263fbe9b47aba6cf4cfa8486ad" + }, + "findings/subsystems/observedtech-append.md": { + "mode": 420, + "sha256": "61efcf51bffe53b8a10a2cdb8123db3f8c55b6874db87418fc31737efedaa652" + }, + "findings/subsystems/output-term.md": { + "mode": 420, + "sha256": "9eb9ff58a1d4cf34d3138f5044788b6f87ff4c94fa871b2dedd6ff6667196533" + }, + "findings/subsystems/output-turn-path.md": { + "mode": 420, + "sha256": "4e199e5cc14802c1b14b37cff0c1359b43aca94dab833f9024c7825c4c512588" + }, + "findings/subsystems/path-solver.md": { + "mode": 420, + "sha256": "3e0e318d45e14f844831c4180e47011263f64067dacf3249742882186d65cf18" + }, + "findings/subsystems/players-residual.md": { + "mode": 420, + "sha256": "e2f56c7983856470d37cd0fba4834a0ccb34dcaddbaf9acaf5dcdc253c6b3507" + }, + "findings/subsystems/population-growth.md": { + "mode": 420, + "sha256": "c2ec2f062e1224045b761640549e7374336ac762bd61c686a0c1378ad829a993" + }, + "findings/subsystems/rcex-explained.md": { + "mode": 420, + "sha256": "df7c9de6f02c1bd38f69e3a5344ec663d97b1d6b738ff408dfdeb0e2f6175b32" + }, + "findings/subsystems/relabel-new-ids.md": { + "mode": 420, + "sha256": "562ffe347adc6432a7824bfa2b324b6b1812b4fcc18343f0732c0f3d9991be20" + }, + "findings/subsystems/research-replace.md": { + "mode": 420, + "sha256": "d0f692cf687a7fe6aab62fc5d7d076eb595e1c33fd84c6f1e437ed01025cab4b" + }, + "findings/subsystems/roll-parity.md": { + "mode": 420, + "sha256": "7d97d7e5eee7b9f135e32b6553bb94ca83fd05b1eca7d18c42e9d65cae4d95d1" + }, + "findings/subsystems/rung-b-rich-turn.md": { + "mode": 420, + "sha256": "44378c6a305a82b2d131270fa5d97fdcd8a7fd5c9760ecbad7715383eac2db68" + }, + "findings/subsystems/running-the-game.md": { + "mode": 420, + "sha256": "f6109f69c6b86e4cf01d0f2e1f8be9921ff632513bca5d9e44e7f6c34f1cd260" + }, + "findings/subsystems/setresearched-cascade.md": { + "mode": 420, + "sha256": "9c079de161a1d1387339b8e8081395c1356c1443a0c898942acfb6efb65a454f" + }, + "findings/subsystems/ship-construction.md": { + "mode": 420, + "sha256": "86f570b1872c8dfac3982d1d7335f4798ccbd1bfd73c91d481afba2734c41216" + }, + "findings/subsystems/ship-design-composer.md": { + "mode": 420, + "sha256": "639b276e9205aaf6c90d9c458a383cc073e89f401ef8f17f8ad5a8a0c5899fa8" + }, + "findings/subsystems/snlv-measured.md": { + "mode": 420, + "sha256": "785324d176be969e1809090acd6b7a48d27f4fa41472c0d9c6f568c0b3a1e539" + }, + "findings/subsystems/spy-detection-roll.md": { + "mode": 420, + "sha256": "214179f5091408ef01ce4b80565068cb9a0885d1c6a233cda476280b9bf29c0a" + }, + "findings/subsystems/spy-program-draws.md": { + "mode": 420, + "sha256": "0c61c2f9cc767ae679921bfc42ef9a207ec9a6e0dc88419a673a8e439f1abfc1" + }, + "findings/subsystems/strategic-turn-internals.md": { + "mode": 420, + "sha256": "3a5c17e025d4968db6030f8ef1daaa2b03ccd4def12d35cf3a0eabcb0b5cbb54" + }, + "findings/subsystems/strings-and-config.md": { + "mode": 420, + "sha256": "67aefda7792e329b7df3f6e8cf42c7bae7049867cdda0741e871b183bc528786" + }, + "findings/subsystems/system-visibility-prediction.md": { + "mode": 420, + "sha256": "b420526ca0410bd4578dd2ed29cd9a21ed3578d6345d9f853a883e0159c1f89c" + }, + "findings/subsystems/system-visibility-record.md": { + "mode": 420, + "sha256": "d2843e10c156a7c85d7dab40d00204475fc725dc9b93656f6cde941ceceb5f51" + }, + "findings/subsystems/t34-observed-designs.md": { + "mode": 420, + "sha256": "207641821a55f5671749b000d478afd9e427336e2d123a55ad2203f34dfaa796" + }, + "findings/subsystems/tech-effects.md": { + "mode": 420, + "sha256": "7423f1e2cb2a597738b244d58bdf467431ee5de725ac434b904676ddcbcfc609" + }, + "findings/subsystems/techid-name-map.md": { + "mode": 420, + "sha256": "cfd92a7885dad3775465fc0c5b40aeb1749499f90071b44855ab8e1746d5f752" + }, + "findings/subsystems/trade-and-spy-workload.md": { + "mode": 420, + "sha256": "147057456fa30b6218df19679abab1ac31b78276a4272d221b70776e154396ba" + }, + "findings/subsystems/treaty-turn-stamp.md": { + "mode": 420, + "sha256": "fa0a8588847cc2b9e92cddeca65fd00fe3d84a00a1034d9354053c7e6cd9ceb5" + }, + "findings/subsystems/turn-command-replay.md": { + "mode": 420, + "sha256": "b65fa3c3c01c67bc16ec488e4a44e6c748256e941c80987528b7602038a56e07" + }, + "findings/subsystems/turn1-to-turn2-nondeterminism.md": { + "mode": 420, + "sha256": "9ebe834fa0f7c1cf864032ec67da76730ed6c239d6bd3a717f147490116acc4d" + }, + "findings/subsystems/turncommands-capture.md": { + "mode": 420, + "sha256": "a57fd2a77784fef1b176749878b161c4f04ac77c1f4a061a6b713787d92fb9ef" + }, + "findings/subsystems/ui-screen-map.md": { + "mode": 420, + "sha256": "d266285e3ca99ba3b5ebbab47c78f3df247a8b539c0519c6fd27a999b9d6f84b" + }, + "findings/subsystems/unlock-cascade.md": { + "mode": 420, + "sha256": "38d29a9484aa3910f5a62b5dd08225ba590bf26901203c5aef1b0b466fbbc5fb" + }, + "findings/subsystems/value-domain-census.md": { + "mode": 420, + "sha256": "bc99139708aee5da4cafec585fc35ab3523b51571518038db19b5f1383c6a6c4" + }, + "findings/subsystems/writer-byte-exact.md": { + "mode": 420, + "sha256": "a0e91a90d2ae78328dbaef30b37d53037cab26489e4729413bcfebbafcab0978" + }, + "ghidra/addresses.d/README.md": { + "mode": 420, + "sha256": "cf2745d5d3e504725ae5a296dc20e3d63b8d32a903445aafe2af61828a6d59c5" + }, + "ghidra/addresses.d/ag.json": { + "mode": 420, + "sha256": "24d5b11779364cf198008b143c7a3a092117ec4a1530c489497dbc8acdf62d8e" + }, + "ghidra/addresses.d/ap.json": { + "mode": 420, + "sha256": "e37f478836eb297f9cc5186cd7df3f5942abc4b6396a4d2866e613841437f778" + }, + "ghidra/addresses.d/ar.json": { + "mode": 420, + "sha256": "8d8620be8dd807a610ff63c0d77cbf266f3d9ce272158991d1f55d9c9910c248" + }, + "ghidra/addresses.d/as.json": { + "mode": 420, + "sha256": "08a869ab9466d4b575363cfb6fc084ca72cdc05d509c5d87e658a9a9977a7ae9" + }, + "ghidra/addresses.d/az.json": { + "mode": 420, + "sha256": "60b9a169605ac171cffb848024141c9224f6897bf69b547b9a4f2b5ddfc8d835" + }, + "ghidra/addresses.d/bu.json": { + "mode": 420, + "sha256": "79037146ba621e43e561bcf0577afc25b2ffac4ced44c902d2ea8ed9171b1bb9" + }, + "ghidra/addresses.d/cz.json": { + "mode": 420, + "sha256": "35de20ff0e38d05b5c58c89690dfc81ce44eb280a2a594ae862e55d56edb5d3c" + }, + "ghidra/addresses.d/dn.json": { + "mode": 420, + "sha256": "c41f877a37bc864f8f315a47b720ac204c22c25de405f4de63b845180641eba0" + }, + "ghidra/addresses.d/dt.json": { + "mode": 420, + "sha256": "580762e01175fb7246d0f9214e4ed9ba16bebcdb82ad1525fd1f77c0910c660f" + }, + "ghidra/addresses.d/lane-a.json": { + "mode": 420, + "sha256": "fce5f06866bddc6bca095d53e376495103dfd8900ad7da0d0d6731f105915d71" + }, + "ghidra/addresses.d/lane-a2.json": { + "mode": 420, + "sha256": "1207088eb2ae041afc2618a627029e25f578ae9fe8db73bb9efb616f39c34bf0" + }, + "ghidra/addresses.d/lane-ac.json": { + "mode": 420, + "sha256": "02a1c2f01ca0d11a7c38d416d94fabaea64b5c5919f6ceaead83430fb398710e" + }, + "ghidra/addresses.d/lane-ai1.json": { + "mode": 420, + "sha256": "134a0cb87b95bf5f39ed015bcdf64c6e8da6b22e073d5b5487148cb5421addff" + }, + "ghidra/addresses.d/lane-ai2.json": { + "mode": 420, + "sha256": "e9d94ce026231d420538400fa9c73fa8a2fa882d16f542c6b8ce2c34014acda6" + }, + "ghidra/addresses.d/lane-ai3.json": { + "mode": 420, + "sha256": "89c29e1bbb1159b7b6fb4fc8c232902f8497efc82290aba6f50c9c9097feec6a" + }, + "ghidra/addresses.d/lane-ai4.json": { + "mode": 420, + "sha256": "78b7897d3d2678ddbff7cd982bfa7d93a0c26817846a148fd3f46790fef9d7fb" + }, + "ghidra/addresses.d/lane-b5.json": { + "mode": 420, + "sha256": "641c724d1fbf28f5469aac488401ea2f92bdd3b929fbf053ddeef0ba5b8de9da" + }, + "ghidra/addresses.d/lane-b6.json": { + "mode": 420, + "sha256": "b2b2833220e3a645efab2b767f1d93d1215a54d195e28e6743db8f1d89934697" + }, + "ghidra/addresses.d/lane-c3.json": { + "mode": 420, + "sha256": "b732932503c181c77bb14ba0136379c8fa3501d0c1471b02d9bca7d023bb5f5a" + }, + "ghidra/addresses.d/lane-d2.json": { + "mode": 420, + "sha256": "8b5df39fb5eea0cd40dffc20aaccabe169f5472171dfd242ca2e75dfc4ca608c" + }, + "ghidra/addresses.d/lane-e1.json": { + "mode": 420, + "sha256": "cb38b41b747bf74ee73fb7eaa301da4bb896d089fa1dea4197382e94940c7f69" + }, + "ghidra/addresses.d/lane-e3.json": { + "mode": 420, + "sha256": "a5fe9dbb37ee587bf36a311771bbc9d8dcaa4d4fcc0b420b8f45829929b0ff98" + }, + "ghidra/addresses.d/lane-ev.json": { + "mode": 420, + "sha256": "b243d31bcd69bfb1e5928ba8b70e958e559c88ee5190ca34e569f217a784798c" + }, + "ghidra/addresses.d/lane-g2.json": { + "mode": 420, + "sha256": "84401f05c5cf2ca0839e817877892e904b3fd2fd4175607abc34453acd8ce822" + }, + "ghidra/addresses.d/lane-g3.json": { + "mode": 420, + "sha256": "d176eb4a07bb6b98acea77e1a0a9904d317a594768ecf8719bbfacbdf6522729" + }, + "ghidra/addresses.d/lane-h.json": { + "mode": 420, + "sha256": "e8cffe89c7feb1d9fa1949f33aff01edc7b84b49ab752275662f6f613c16c0b6" + }, + "ghidra/addresses.d/lane-i.json": { + "mode": 420, + "sha256": "a4c482ff6fee78e96da3400b9ba7d76b58634a5933ff388db5993a1b105c8aca" + }, + "ghidra/addresses.d/lane-id.json": { + "mode": 420, + "sha256": "3f48c9b2e2c3a08e13a856bfb78d551af17f5a1a1079f03f8edbf4615f17ca7d" + }, + "ghidra/addresses.d/lane-j.json": { + "mode": 420, + "sha256": "4fd95b08fee60a2748995cb082fe50d61e7179ae90b106f230bfc5c55a35660d" + }, + "ghidra/addresses.d/lane-k.json": { + "mode": 420, + "sha256": "f6ead3ff256fd2e1408d52bfa28e308f106ad672b3fe1cce0d136faac351136e" + }, + "ghidra/addresses.d/lane-l1.json": { + "mode": 420, + "sha256": "ecbab4a1b602beefd6889effc4883b7f7de01afabb7c5c071bbc4e2237e9131b" + }, + "ghidra/addresses.d/lane-l3.json": { + "mode": 420, + "sha256": "eabb96253bee36c799f1eb89108e284162606cfdc5e9bd29dbf7b5f88ee88adf" + }, + "ghidra/addresses.d/lane-l4.json": { + "mode": 420, + "sha256": "5b2b54d2f3e123e352e9a2b0f1d80fc8afcdd0b97916a94ee5a62ddc03b0ae75" + }, + "ghidra/addresses.d/lane-l5.json": { + "mode": 420, + "sha256": "cedc4869149212d401c519c46fa3f02769f9c939fc560fe8d35cc4f898091482" + }, + "ghidra/addresses.d/lane-n.json": { + "mode": 420, + "sha256": "6987efa430f2da8987e42e61e53113f914cb00e3e52a7c679565e7faf5160c82" + }, + "ghidra/addresses.d/lane-o.json": { + "mode": 420, + "sha256": "7fcf357f25ccdf061b6bc688339e2006f830c551718b6419a0a9d0ac968bb555" + }, + "ghidra/addresses.d/lane-p2.json": { + "mode": 420, + "sha256": "7eaa63d64a0054ef88f323f58b31fca07bd2372dc21560b4bda64eb13d869792" + }, + "ghidra/addresses.d/lane-par.json": { + "mode": 420, + "sha256": "3836b786aec28feb028271d05f368d7c332b8930b51cfdceb36540133a3d3237" + }, + "ghidra/addresses.d/lane-pl.json": { + "mode": 420, + "sha256": "f29953d17effbb7d8256687833023d4656522e74c40bf1ea646d3b35da3635d7" + }, + "ghidra/addresses.d/lane-q.json": { + "mode": 420, + "sha256": "6f98496ffc288fb30c3a7347a7e5252b296f2345afd1bf678f98a2c934b8935a" + }, + "ghidra/addresses.d/lane-rb.json": { + "mode": 420, + "sha256": "bff95b9452e0efb63e74f741682c8d1843abfe3e722143cf01cf092aa894d75d" + }, + "ghidra/addresses.d/lane-sd.json": { + "mode": 420, + "sha256": "d3239b619cbef5cddc9c7bde6525301a99a6423f8a0e42c1ea53b9ae269c6da9" + }, + "ghidra/addresses.d/lane-sv.json": { + "mode": 420, + "sha256": "f574d8b4dc75da722870c74eb29cd56c75e04dd0ac384b4549fc95d425e3de3a" + }, + "ghidra/addresses.d/lane-t.json": { + "mode": 420, + "sha256": "70975f3c1dea55ceb11af12b9ba3a04e8f7bba2e25f1355ffcd3cd457c41545c" + }, + "ghidra/addresses.d/lane-t2.json": { + "mode": 420, + "sha256": "1e3c59089b769cc5f5d3cf16c33cb6db002966f5beb1a4fb9dd8e28fe54cd6a7" + }, + "ghidra/addresses.d/lane-u.json": { + "mode": 420, + "sha256": "bcccb6ec9257537eece135adbfd126904ca0becf14f9b5d17253adf5d8c9e8fe" + }, + "ghidra/addresses.d/lane-v2.json": { + "mode": 420, + "sha256": "6a4d4960ce99c05b928164159eaf4482bf763785a1f8c50efe133667886d9a54" + }, + "ghidra/addresses.d/lane-w.json": { + "mode": 420, + "sha256": "3971d65c772146534f5d8c350f2d203add70ac82801f57f3704c47cd59b51226" + }, + "ghidra/addresses.d/lane-w2.json": { + "mode": 420, + "sha256": "677648e94de8e1e0d538c9575c9be942d0b37c1a847effcb3c2312af5b6aa7d9" + }, + "ghidra/addresses.d/lane-w3.json": { + "mode": 420, + "sha256": "50ed8ed1b16288b00bac4df0886646dbf9d6d6392867029b4eac386806b41b51" + }, + "ghidra/addresses.d/lane-z.json": { + "mode": 420, + "sha256": "bc63a82f2d0cb7636e95f8a07f183f80817a4c65d2bb7263a047ec3c540512eb" + }, + "ghidra/addresses.json": { + "mode": 420, + "sha256": "865c02d88ac6ede656160a5ab20521ad8854efa381d5a943ab422216aca2c016" + }, + "ghidra/generated/sots_addresses.h": { + "mode": 420, + "sha256": "1cf6b4ab40d3cde306edee12ba4eb05292b98ddcf5c2b7c22c1c64b6075b1bdf" + }, + "ghidra/scripts/FixPlayer.java": { + "mode": 420, + "sha256": "9f9ea470af063339511b1f1c85d6dea2df0827c4fed5806c6f641b1aad3e5660" + }, + "ghidra/scripts/FixThis.java": { + "mode": 420, + "sha256": "aafeeb482f71d1bdcbc99a51fb3f21989a46fbb49b5a572f3d9e436c9b3b98b4" + }, + "ghidra/scripts/LoaderRecon.java": { + "mode": 420, + "sha256": "1275d460227e0098254885fe70666d618da7215bca99483a5475c1e701ab9b27" + }, + "ghidra/scripts/LoaderWriteBack.java": { + "mode": 420, + "sha256": "d1040cb9ee80f0fe4d2310d95b38d7d94b0972283f74ea6058de0bdb9e510e63" + }, + "ghidra/scripts/SpineRecon.java": { + "mode": 420, + "sha256": "bea798733cf60f9478373cc453692104058b643ba5b7fc68e76945ae6f496950" + }, + "ghidra/scripts/SpineRecon2.java": { + "mode": 420, + "sha256": "94f10ac953091d50187a46b74803abb4812b244356f9336fa8e133a8a6cba0c6" + }, + "ghidra/scripts/SpineRecon3.java": { + "mode": 420, + "sha256": "b2344ab3d7195cfb935505ba1949f3d4862f787ccb95b812cef3856f92c94ffc" + }, + "ghidra/scripts/SpineRecon4.java": { + "mode": 420, + "sha256": "1093ee635be94f0c0bb31b5bd79f030faa0d7cbab96a495426363172cbcd1d66" + }, + "ghidra/scripts/TechFx.java": { + "mode": 420, + "sha256": "bfa8e990d65ad7cb2b665ee284ec2d645395e0fb3794ea146b175e2937a159ad" + }, + "ghidra/scripts/TechFx2.java": { + "mode": 420, + "sha256": "ee7040ed3316f2e717bac207c3e8ba9bf5ecb560f9e2b38335582c4ca6bae5a8" + }, + "ghidra/scripts/TechFx3.java": { + "mode": 420, + "sha256": "b672751160abcfee37d16eb2f107a60420b7d6956c312fe93e9f62578c06b96a" + }, + "ghidra/scripts/TechFx4.java": { + "mode": 420, + "sha256": "ef912e86f802452f33c20a1adb87eeb96f0ec893e26ee4bbd02305ba0c5e46c7" + }, + "ghidra/scripts/WriteBack.java": { + "mode": 420, + "sha256": "e002a5b86bc58cf75ef8d08dbaeb84bdf3306c1e8d49e92c0382f8ed858c57ac" + }, + "ghidra/vtable-owners.json": { + "mode": 420, + "sha256": "8ee89f3b43f56283a6ffcc605394a1ab246f8071370a9db8f1e770942a5a82a3" + }, + "guides/lab-screen-wall.md": { + "mode": 420, + "sha256": "d398b47853013dbce63b4af2f2ec680c39775732b9fbba13f5fc42a46628550f" + }, + "guides/method-rules.md": { + "mode": 420, + "sha256": "a71a8415202fe97ccaee3805bf4035684776c37f5613dc39a1f260aa33f94b69" + }, + "guides/multi-agent-workflow.md": { + "mode": 420, + "sha256": "f5bf0c30c12a3a9e1725549fe000be0105d415ca25b120673a780901148f08da" + }, + "guides/re-windows-2000s-howto.md": { + "mode": 420, + "sha256": "3490650440d6e683cb029915b8c2cace914b1f52538c9db89175ad4547db2901" + }, + "guides/windows-lab-housekeeping.md": { + "mode": 420, + "sha256": "4a9e9d66dd76e6b5ee1951686186190c650a617fa812fa4bd236ef02b783939a" + }, + "notes/.keep.md": { + "mode": 420, + "sha256": "7878c159a1b9636974e9093902027a24bf7b3c7520f13a8d96f930bd10d22f1c" + }, + "objects/generated/sots_stream_schema.h": { + "mode": 420, + "sha256": "13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c" + }, + "objects/layouts.h": { + "mode": 420, + "sha256": "24586f7f1c25530691193a919c6335ab1784fa2815b222326409cfe9e2a42981" + }, + "objects/layouts.json": { + "mode": 420, + "sha256": "16bfffa5020d98c12af61c72a48da8f2c5e06d1060358802717e585a49b150b2" + }, + "objects/layouts.md": { + "mode": 420, + "sha256": "83bc29fcd379847f9ebd6732edf9748c1c878052e889615928659307f97a148c" + }, + "objects/streams.json": { + "mode": 420, + "sha256": "60993eda14d0b1056578718d43a3b6d89816e12c4f5a00674806aeef9e81baf7" + }, + "opencode.json": { + "mode": 420, + "sha256": "d24be7fcee57d5eb04c6b7189822a2ca055dd4a70daafbea67f09a120945d49f" + }, + "scripts/.keep.md": { + "mode": 420, + "sha256": "b0cdcee8cfdc1b15ee444520b6b01c747399deea6d92ff2576ca6eb57331bbac" + }, + "scripts/forgejo_campaign.py": null, + "scripts/lane_v2_writeback.py": { + "mode": 420, + "sha256": "69a66058adb04926eeb6f0e81fa8f0392ce06de2e8d8eb61ebcf503bab6311da" + }, + "tools/DASHBOARD_README.md": { + "mode": 420, + "sha256": "f401cc54f64a4862a938263f37eaab22e6475e063e59726e02dce201f657dcc4" + }, + "tools/aiorders_to_tcb.py": { + "mode": 420, + "sha256": "9762d1fd45f3ab7c045088e222c5386a2cc63a6b25e1c09a49cbbd71837bfe17" + }, + "tools/cache_functions.py": { + "mode": 420, + "sha256": "18c037e48ab035764b0c877123ea7c998ef74240c63090e4f58142f57835e0b1" + }, + "tools/campaign.py": { + "mode": 420, + "sha256": "c7b7c7a30d907bba8e59386dee8704d7f3f5e978fcf709b686e37996fa465c31" + }, + "tools/check_agent_config.py": { + "mode": 420, + "sha256": "93115532cb38105777a5c5c20a9f2a808043370e0d4f560a9c82fe8e800076ec" + }, + "tools/dashboard.py": { + "mode": 420, + "sha256": "c84aeeea6fb7d5e45ccec8882bacc59182149f108edd9eb1585eab9ede99911c" + }, + "tools/displacement.py": null, + "tools/evidence.py": { + "mode": 420, + "sha256": "0a7f8497ed287b4b64aa5ba0cb25735172408e38f3605b3ff90f009c7f02eb85" + }, + "tools/gate.py": { + "mode": 420, + "sha256": "4df5ee7022fb2601687f06eab788e2cea1e345e580c4e92c9d47be1787d37460" + }, + "tools/gate.sh": { + "mode": 493, + "sha256": "d7ba27b9b0c6a03df48e4edc71884ef9986743f8afa751dbfec116df5aeee18c" + }, + "tools/gen_addresses.py": { + "mode": 493, + "sha256": "5d995585d4192a19db7cc6d31ed811fa80264159fc114f03f58793f9b6c4908e" + }, + "tools/gen_stream_schema.py": { + "mode": 420, + "sha256": "a9c3e925bb3370371a2c8cde8d738c657fe1cbf68c39c6155562bbb20c551461" + }, + "tools/max_income_oracle.py": { + "mode": 420, + "sha256": "8d3ec6ba5c677486200eab7d1ca55e1350947829e603737307fa394ac8e40bcd" + }, + "tools/max_income_predict.py": { + "mode": 420, + "sha256": "85400c82b6cb7c6786b7fb6486bdc7bcb1140817f7a0ff0b4fa4f7dbeded8797" + }, + "tools/probe_report.py": { + "mode": 420, + "sha256": "f3ef378c10bae4a8bef754d853f0e86616bb95b5e051e04cac97d362587df1a7" + }, + "tools/reva_call.py": { + "mode": 493, + "sha256": "89477650d38985f84b61a664572de1cbde1268b879d3da5e874598942822998b" + }, + "tools/rng_ledger_report.py": { + "mode": 493, + "sha256": "b4f3f581eb6de50118fd531c848354816c20197711e668ce8b0cfcb4d0392cf3" + }, + "tools/rng_oracle_check.py": { + "mode": 420, + "sha256": "f27ca7f9aa03bc672f04067bc71e73ac83742997f12f5f55ce11151bdc39d98a" + }, + "tools/rng_site_report.py": { + "mode": 493, + "sha256": "fabd950c002265403f7b13a8868a158d867828c9930770ed096a2610b086ad35" + }, + "tools/rtti_map.py": { + "mode": 420, + "sha256": "9ac88a8aa566fe08336ba6e50905ec4253409e1317f491c415b1b9ebcc0713e4" + }, + "tools/run_agent.py": { + "mode": 420, + "sha256": "0f5ccb53dcde59b64fe999768737b6cbd2dabcc1272e5605c1f1ecd86e5d5d2b" + }, + "tools/select_evidence.py": { + "mode": 420, + "sha256": "a6e648a77bcf799cc774ff9d0de83011283049ed0f0c44f6e08857a8410e9463" + }, + "tools/serializers.py": { + "mode": 420, + "sha256": "938904eb7b4ae30a61dd966494b112c6d52399f9d4a4658add06b40a54d6cb73" + }, + "tools/serializers_ghidra.py": { + "mode": 420, + "sha256": "d27da0afc8d043d31335bbe274fc76245e50cf0f9091a968b124f31c3a17997c" + }, + "tools/serializers_golden.py": { + "mode": 420, + "sha256": "29d2509b54704b80eff46a59a320719edb17a7eb67fd8acb8ad5e3c427d8e825" + }, + "tools/standalone_report.py": { + "mode": 420, + "sha256": "43a61c4031306732554aca23cd95b57d35f2a870766c33ccf8e005f22436525c" + }, + "tools/streams.py": { + "mode": 420, + "sha256": "57ec4ec5ad222a74f4461d70277d258e51779ae53ff74fd0e07eb51d4bae0afd" + }, + "tools/strfootprint.py": { + "mode": 420, + "sha256": "3b0db212c0b091ae2f63b866ee331435d013c535f233ec34ae3dfb63ded852dc" + }, + "tools/tcb_from_json.py": { + "mode": 420, + "sha256": "8fe09cff16802fda34db24f6f888610baa258399ab39173586b91a7a162f231a" + }, + "tools/techid_table.py": { + "mode": 420, + "sha256": "2c644bdbd3774b70dfdae7e77ff7a3a8e8563b58be7098a2d55ee30dc8b8fd07" + }, + "tools/turncommands_capture.py": { + "mode": 420, + "sha256": "0214d5da6f5f86e188bb2f03db8d3439267baee3a883c7df754601c7c1a38536" + }, + "tools/vmshot.py": { + "mode": 493, + "sha256": "09228bf8bd61918c49afc2b6da931fc8a7833be126be5384b85194e0e86eea44" + }, + "tools/vmwatch-install.sh": { + "mode": 493, + "sha256": "3c004f532422bd589a7294dabdf54d5a726f598c69012eaea3d73a748ad0123a" + }, + "tools/vmwatch.py": { + "mode": 493, + "sha256": "650d8232e46239a55b96f26d581d7d9c5815415c9014fd2e5b846b68c1346b39" + }, + "tools/vtable_map.py": { + "mode": 420, + "sha256": "2e19223efb79421ab4b807e32f0854b2592d7d3a3a52c12e84e47460b960f740" + }, + "tools/windows-housekeeping/Invoke-Housekeeping.ps1": { + "mode": 420, + "sha256": "a97911a3cfbd47813282efa7f52b4de03d28912487fffe0e7e7aa1a250cac01a" + }, + "tools/x86disp.py": { + "mode": 420, + "sha256": "a05a42d63813d2025a4da65bdd684e82a89c95c52901a8f490391e31c49a122e" + }, + "verify/campaign/test_controls.py": { + "mode": 420, + "sha256": "108460f4e90c4cb7036642e85de581e31fd70c478533c32364691260461814fc" + }, + "verify/config/test_agent_config.py": { + "mode": 420, + "sha256": "e60ee546672da91de08ca8fdd5d563b5f1207d0a865adf935017e06bf437585b" + }, + "verify/config/test_source_check.py": { + "mode": 420, + "sha256": "c16731e31a54256dde4f88d33007759ff21ad8537ca6cd2be38b9e34c59525ad" + }, + "verify/design-rules/SHIP_DESIGN_RULES.md": { + "mode": 420, + "sha256": "4decf51bfa03e8ab2b58478198332e834233100126949b920349f210b54521c8" + }, + "verify/design-rules/data/HiverInvasion_FleetTemplates.csv": { + "mode": 420, + "sha256": "327e799be3c75361267725c157f78b425d3a1df6ed6595104b2ce9993e8ae3a7" + }, + "verify/design-rules/data/UpstartApes_GiftFleetTemplates.csv": { + "mode": 420, + "sha256": "89939d70eb6ed48ec776a4a6fc50ccb68fc6be7162706bab199484bf7cdd5e44" + }, + "verify/design-rules/data/_defaultweapons.txt": { + "mode": 420, + "sha256": "ef9e33aa32840f1878ece67f88556d81a4255f63f6e8aad4ac73e575ef2c7ec8" + }, + "verify/design-rules/data/_turrets.txt": { + "mode": 420, + "sha256": "35de6ad40895f76298eef7dc354c739a5a59747b689c2324cfa5040442eddc18" + }, + "verify/design-rules/design_rules.py": { + "mode": 420, + "sha256": "772f70c7d6be2d20d10cf4f5d412233b267440d63d431bf7b320c29f3f06e313" + }, + "verify/design-rules/stock_designs.json": { + "mode": 420, + "sha256": "b363023e02899bc03e4c8b8423b394ef8abb190b1bcf437aade19be463353f68" + }, + "verify/design-rules/stock_designs.py": { + "mode": 420, + "sha256": "fe020f6058ec25b6fc456146abb6594825ee2b98ba5c5c5eeaff969ce4596031" + }, + "verify/design-rules/test_design_rules.py": { + "mode": 420, + "sha256": "6f6764d21d7a3337ec8aba9651b19947239a7d06a6cdf7c6e9be5ddefcfdd186" + }, + "verify/fpu-cw/cw_census.py": { + "mode": 420, + "sha256": "07b7ac5ae60df487867b592e82e9f74201b695437fba248813bc07305a21c7cc" + }, + "verify/fpu-cw/trace_bitdiff.py": { + "mode": 420, + "sha256": "b25c93d70e67ed2fa81e5ea7184f8ffe0cbd2e7c043bc94f923c3db1cf101b59" + }, + "verify/harness/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/harness/cb/README.md": { + "mode": 420, + "sha256": "7a656251a600a9343ffa8afaa4f227e7cb8086be7d3c6879c0a403ab8acec71d" + }, + "verify/harness/cb/cbdo.sh": { + "mode": 493, + "sha256": "6f3d7fd35aeedb0841be9df0ba19136be2e7ccb5c44950d8aa821c61727232a6" + }, + "verify/harness/cb/cbfull.sh": { + "mode": 493, + "sha256": "609101217e9d35bf1caa5cb66f362e0796fcf6c1264bd92ff550d0ed12ca2521" + }, + "verify/harness/cb/cbload.sh": { + "mode": 493, + "sha256": "2e56bb64609434f6dfc6ebcf71a3c839ae59170db80c996ebee7c2219cb664ec" + }, + "verify/harness/cb/cbmenu.py": { + "mode": 420, + "sha256": "fb2e72a1a5390aa28dcae0fbc2d7b920b06bf3b1ea161bb757d4db3c8cd23af2" + }, + "verify/harness/cb/cbstep.sh": { + "mode": 493, + "sha256": "5896b21e8cf08b40e2a2958e44a51beb7e5b5a58cf35d405879a5df7cdd375b4" + }, + "verify/harness/compare/TRACE_FORMAT.md": { + "mode": 420, + "sha256": "cf6f61dc255e3aed0f293c141d9fd3b0d5e848e3abe4dcf50b4ca2d58e37c024" + }, + "verify/harness/compare/mkfixture.py": { + "mode": 420, + "sha256": "f081dd92b9e82e838f59ce8f9c79d5cdebb825255f13b6c49178516e7f3ef118" + }, + "verify/harness/compare/oracle_parsers.py": { + "mode": 420, + "sha256": "b1a745bfa63b447c87279afdb2885a0218f2a0dc2539f79414f8a2534e24c97b" + }, + "verify/harness/compare/test_tracecmp.py": { + "mode": 420, + "sha256": "f25eb9d5ea7215b8366c44924fb49a5f028a0188e709dadfd90cfbc30db0823e" + }, + "verify/harness/compare/tracecmp.py": { + "mode": 420, + "sha256": "d6ca461cabf15351e2040150144084b93d3caf22d879ee158ede04052ab03cbb" + }, + "verify/harness/l2-ui/README.md": { + "mode": 420, + "sha256": "48effd757522ee5ff70af6d77449dcfd805bb7744c9093d01c039b86e030d7f6" + }, + "verify/harness/l2-ui/launch-b.cmd": { + "mode": 420, + "sha256": "8f26c451a88765c49ecb3c8160ed4a3d06f1100a6d9323b305efc01f039dfada" + }, + "verify/harness/l2-ui/socks.ps1": { + "mode": 420, + "sha256": "401cce47d495507f60eeae45942c146586464959046ef9715cd69605753af027" + }, + "verify/harness/l2-ui/ui.ps1": { + "mode": 420, + "sha256": "355c8f222bf99f547d9d16a1665a072e6914917d48e4db22b8438d2d83708e97" + }, + "verify/harness/profiling/battle-run.sh": { + "mode": 493, + "sha256": "79f14ded5c3731efd655a6f9a4ac6795f3ace0a9b064c43ba4bf9a2cb988a7cf" + }, + "verify/harness/profiling/funcs.py": { + "mode": 420, + "sha256": "841a6f5e5dc1d845b7439c9ce9dc08e045864929b0f367908abea7ab54259207" + }, + "verify/harness/profiling/funcs.txt": { + "mode": 420, + "sha256": "d35b17dbb3970f5c24ae862748c5b91aee87491968719c34e48a8b88c0615835" + }, + "verify/harness/profiling/iat.py": { + "mode": 420, + "sha256": "82465ef8284739ab3d3c99acd0fa6cc5a4bb80c8680eb7a949218305fd10d3d3" + }, + "verify/harness/profiling/inspect.ps1": { + "mode": 420, + "sha256": "35bc7dd85108e3f4686975ef7f510b1cc9306b5839329f7fdd2a5ac27a140611" + }, + "verify/harness/profiling/names.txt": { + "mode": 420, + "sha256": "89d90f934e445447c68569448471a8917ee0bbfcb5fb96bba3e6566be9b0779c" + }, + "verify/harness/profiling/parse.py": { + "mode": 420, + "sha256": "680df36804e923d74da8e9fd8877b5ea66975c9ce8d239ad4507c829f881722a" + }, + "verify/harness/profiling/sampler.ps1": { + "mode": 420, + "sha256": "ef0edde8535ef07e508a732f8e11dc3d50fef966e5a9e4d8161085a83372993e" + }, + "verify/harness/profiling/shots.sh": { + "mode": 420, + "sha256": "87e554abf08068d6438417e266f1e7820e34a900a7d559fa0a7c4a2fa18002b3" + }, + "verify/harness/profiling/timerres.ps1": { + "mode": 420, + "sha256": "80362eb9ec8bd882abddf2507236e70db2dd21f64c9db07d217bdd49361ed89c" + }, + "verify/harness/profiling/turnloop.sh": { + "mode": 493, + "sha256": "8e28f076599a9eb53eace77ad77a10b0770f1ce617c7a76e6a2b9044ee0c8774" + }, + "verify/harness/profiling/turnwin.py": { + "mode": 420, + "sha256": "e2033a8e519a7c9f65f67b5592494a9843eb8bef41af6ab5652343aa86bd4c60" + }, + "verify/harness/profiling/ui.sh": { + "mode": 493, + "sha256": "e66774a4d070285e6c6a62472000222a691c7192096039e75fa726bab9f6afb7" + }, + "verify/harness/run-recipe/click_helper.ps1": { + "mode": 420, + "sha256": "150a1c17e12e8479244107cd01d95233c84d550e95a6f5e352fd529818a21d7d" + }, + "verify/harness/run-recipe/display.cfg": { + "mode": 420, + "sha256": "76b4876abd1cd163a5cc6b65a6106670476cde40c9b868a53a0dc45f517e132f" + }, + "verify/harness/run-recipe/dxvk_d3d9.log": { + "mode": 420, + "sha256": "f48ff2684a78cea563ab7f10e2f005638044352fe9cfc30dedf0f26ec7fecf23" + }, + "verify/harness/run-recipe/launch.cmd": { + "mode": 420, + "sha256": "90a6effe8ae835bf641cc775a17ad709198fdfeded4379f658255a82f594e5c2" + }, + "verify/harness/run-recipe/lvp_icd.x86.json": { + "mode": 420, + "sha256": "b89a08526e043a84c3a2550b5ea2fd7692f547ea295e8dd70e79c64fe81f6fbf" + }, + "verify/harness/run-recipe/run.txt": { + "mode": 420, + "sha256": "12c83295dae9db4a98142ef8fe7e45321c90960428df504ed3496e27838a0413" + }, + "verify/harness/run-recipe/session.log": { + "mode": 420, + "sha256": "e9ce9b496e9ee55bd64cc27afe594cee6136dfbc6cf9d9d44e9914b27e568a93" + }, + "verify/parsers/PARITY_NOTES.md": { + "mode": 420, + "sha256": "beecfe60358f5977529bd0784ffe18ca03c38d2dd36766f351c6a9addac83bda" + }, + "verify/parsers/effect_txt.py": { + "mode": 420, + "sha256": "7219045dfaf305dd64218ff8096e8cac69a53df1aabdf85f15e6c5e01c963e74" + }, + "verify/parsers/flat_kv.py": { + "mode": 420, + "sha256": "a26149cb21d152be5cbada3b764e042187daf2ec306b2dba1081737af6a7ae4f" + }, + "verify/parsers/manifest.py": { + "mode": 420, + "sha256": "62a08cfd82d5f701ae3b3f567bc8382cfd1b33b49bf6049ade47a932ef7109da" + }, + "verify/parsers/mars_data.py": { + "mode": 420, + "sha256": "90c7b8421044b1d7e262e6f20e5af391d97a712b12c2d3f0c3033567881d536f" + }, + "verify/parsers/verify.py": { + "mode": 420, + "sha256": "cc5d619bd6b3ca161b4bc8050c30e7d77f6bd3e964c971cc29e051efc1e25a33" + }, + "verify/publishing/test_dashboard.py": { + "mode": 420, + "sha256": "cc44e516da663f5d27bf817cbcbf24c052f2db52ee887d08d7c271caf8f6a000" + }, + "verify/results/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/results/compare/.keep.md": { + "mode": 420, + "sha256": "4581f3fde61549f4c621b2f114228a62d066a528a270a9b41703238ff841ac1d" + }, + "verify/results/compare/b2-techfx-compare.json": { + "mode": 420, + "sha256": "b0533322d44b1694f36baf86d6660481ac5b22ce9c1d6b6b9668ea064cc08f4b" + }, + "verify/results/compare/b2-techfx-golden.json": { + "mode": 420, + "sha256": "4298a8229b85a3329c78d3618d3eb19aff096cb2da66e9238fd843d639b17f11" + }, + "verify/results/compare/cr-compare.json": { + "mode": 420, + "sha256": "f20e9a7c71412688c02b607f08a5224367598eba552e35a50e9922ca8f12edab" + }, + "verify/results/compare/cr-compare.md": { + "mode": 420, + "sha256": "0eb905744120b1cf264ba6e57497db64fdc8e225a87ef7bb86cf3f026ffe4d0d" + }, + "verify/results/compare/cr-replace0.json": { + "mode": 420, + "sha256": "f1556c5d74c236c82617061b5ec60b1a7ce4652bce87b6595eb89406ad832240" + }, + "verify/results/compare/cr-replace0.md": { + "mode": 420, + "sha256": "6f571e46350a29b811bc12b48e12ed2d443acba5f5be6310e0531c3790425d48" + }, + "verify/results/compare/cr-replace1.json": { + "mode": 420, + "sha256": "d0c1d6bd4a1f8f5343b584662d8202184479b01a51480443a97242daf27fccc2" + }, + "verify/results/compare/cr-replace1.md": { + "mode": 420, + "sha256": "111b51290468d5482a1910194487d26dc1b3ec534d699aa07a564de66bbf9d98" + }, + "verify/results/compare/eventlive-b3-t1-5.json": { + "mode": 420, + "sha256": "4f305180bcbe93523f407d1f8406ac52b84d4a20e2d611940716618fd37edfde" + }, + "verify/results/compare/eventlive-b3-t1-5.md": { + "mode": 420, + "sha256": "ec71d98210218fd5b5da69f6b17cf6991128a58a0358a6504e6497dd39159764" + }, + "verify/results/compare/eventlive-b3-t1.json": { + "mode": 420, + "sha256": "84f66c1e6a23f737d1615e75fd22fba958bfd851067acb42503e32a2812dd1de" + }, + "verify/results/compare/eventlive-b3-t1.md": { + "mode": 420, + "sha256": "299b8dd3f2cf42cbc9e6254fac01ee3dcb6abb0758c8f298beb6cc6464db4cfb" + }, + "verify/results/compare/eventlive-b3-zuul.json": { + "mode": 420, + "sha256": "a1a92c06202c8168362c33442edeb7ea7f76f6e586e5deea1b86dff9dc8f3494" + }, + "verify/results/compare/eventlive-b3-zuul.md": { + "mode": 420, + "sha256": "544791f9cd8b77a2d865f2a918d97e74559529f29943171bd1e8e2d8a120dec5" + }, + "verify/results/compare/l5-budget-boundary.md": { + "mode": 420, + "sha256": "6877f9cfc602876b4c213106493853822471a5aaa3e4e8ebf8dffd31373d89d9" + }, + "verify/results/compare/mf-after.json": { + "mode": 420, + "sha256": "586a824a0d0af1de0808c33c1c392c4022128f9c1305dc32b6749e8fa493e8f4" + }, + "verify/results/compare/mf-after.md": { + "mode": 420, + "sha256": "659be3da71cabfd3c34eb818f1bac07f848c58a878fd62d81ac7b1daa5f3ce03" + }, + "verify/results/compare/mf-before.json": { + "mode": 420, + "sha256": "259272b45ca9c63894d8c91e399ff91d7258b7836f1a0d5c91dd3972586b2498" + }, + "verify/results/compare/mf-before.md": { + "mode": 420, + "sha256": "4572530a1c93865d27aba47c23c418773ad39a834c8be1c004f5cc2f16f927a0" + }, + "verify/results/compare/output-ref-turn2.md": { + "mode": 420, + "sha256": "43a569165f9239f13edc31c7a848a6b839829ae06dd6e3b85d289a1552eb8d34" + }, + "verify/results/compare/output-zuul-and-ref.md": { + "mode": 420, + "sha256": "9bc0937c0b3e1e3e5a6cd3768dbfeae56a897615396b00834bd083611f3ef431" + }, + "verify/results/compare/recap-b1-compare.json": { + "mode": 420, + "sha256": "8e86cdd32373e41ac1cdc130b18acc188b35d5ab7112e1fc655d134c44ad9712" + }, + "verify/results/compare/recap-b1-compare.md": { + "mode": 420, + "sha256": "496a3246eda3be76d9d0f08726369d40aa879cf60a510f16209ae77585582841" + }, + "verify/results/compare/recap-b3-compare-t1-5.json": { + "mode": 420, + "sha256": "80eeeeccf15f427b75b053d06f6b32b1692a2ed9ca6b9a51c244e4166a1b0e78" + }, + "verify/results/compare/recap-b3-compare-t1-5.md": { + "mode": 420, + "sha256": "5b6295bff72d599f142e75fa913ca2da590322a6fd1d104328847159fc5e7802" + }, + "verify/results/compare/recap-b3-compare-t1.json": { + "mode": 420, + "sha256": "10d0d5f8aff90f6cce3cd87e30c7f8ff896c5b369f4dc8288141451e25727cb9" + }, + "verify/results/compare/recap-b3-compare-t1.md": { + "mode": 420, + "sha256": "2b0eb8865bb07a2dd8fd038bc19e38a34fbf19b9d3f6fabae085c16a74fbcc6f" + }, + "verify/results/compare/recap-golden-trace.json": { + "mode": 420, + "sha256": "50bb7e34ab2359adc83cc0647fc995d207173fcf6134e413565af450958f652f" + }, + "verify/results/compare/recap-golden-trace.md": { + "mode": 420, + "sha256": "586fc86fe78659902a5d0859c0bce44623bfcda0f375bb57b293796862c48e17" + }, + "verify/results/compare/recap-misc-compare.json": { + "mode": 420, + "sha256": "c73f3f3593a0d715a675b29c7b4f49c02a97578ee9d867ce15d217c43da2e466" + }, + "verify/results/compare/recap-misc-compare.md": { + "mode": 420, + "sha256": "b435c92441742b2b1b0236bfacff10c17757696baf446c544c4759b7e31237ed" + }, + "verify/results/compare/unlock-b3-t1-5.json": { + "mode": 420, + "sha256": "a4dbfc89f6f3d154edbbc62842a4e8d8a3c69b9589eafc1bb496b26a3ecf6e3d" + }, + "verify/results/compare/unlock-b3-t1-5.md": { + "mode": 420, + "sha256": "832626087ddc2da9064a192a1acfb3869d4a52c6398a070cbd66eaa1bdbe2e2e" + }, + "verify/results/compare/unlock-b3-t1.json": { + "mode": 420, + "sha256": "6d8938b8eaeb2da1c7fdccb1fb68f8e3a2b5b7f492cc096326cf3aadb2ab8d55" + }, + "verify/results/compare/unlock-b3-t1.md": { + "mode": 420, + "sha256": "8911e671a143c25765cd7c0b67f1b9cb23f4040fe26aad40ce59b1db858afdcd" + }, + "verify/results/compare/unlock-b3-zuul.json": { + "mode": 420, + "sha256": "3099d248d58c4395e92d65ad18c28227695a7c7935193be6c2bcf752fa0e0f04" + }, + "verify/results/compare/unlock-b3-zuul.md": { + "mode": 420, + "sha256": "f53b165c8502ba9b2416935179fdea68153fb6ebd2458b4ec9b4ecf6c741c91f" + }, + "verify/results/data-catalogs/crosslink.json": { + "mode": 420, + "sha256": "2966ba9780910b596e350c4f81eef5d74c4d235dc3a8d5cf6ad5fd53a407254a" + }, + "verify/results/data-catalogs/schema_stats.json": { + "mode": 420, + "sha256": "6e3f669ae77cdfa2c5cd6bbd29f5cecccd452d9a7b2397c2c23db6c33fda0a2a" + }, + "verify/results/data-catalogs/shipsections.json": { + "mode": 420, + "sha256": "2e7057c608d0cea755bf9dbfa291864d33e3f09ad5deff7bb3a8045bde7a4ab5" + }, + "verify/results/data-catalogs/strings.json": { + "mode": 420, + "sha256": "c36c1b2b9a2eace438f93698df6388fa94aec30d372bcd0bee7e09bb33c54d7c" + }, + "verify/results/data-catalogs/tech_tree.dot": { + "mode": 420, + "sha256": "96ce0492a1284167d82af2c07a8f8a0b3bb9864bc137195560d909df6a913055" + }, + "verify/results/data-catalogs/tech_tree.json": { + "mode": 420, + "sha256": "18df799410c5f650e15808c1ef247b4768a3dfff93795a5ec7f56cd6c4afc597" + }, + "verify/results/data-catalogs/weapons.json": { + "mode": 420, + "sha256": "a446b445c21519fc7992c84155c9652239567030843c405b4219d1f65022db01" + }, + "verify/results/fpu-cw/README.md": { + "mode": 420, + "sha256": "3928fd0f6a03a8ff0b170a7ed23a059120b5014b13bf6870d4f187ff299d5975" + }, + "verify/results/fpu-cw/cw-census.txt": { + "mode": 420, + "sha256": "b7854dc5cd249a2490d04264d758f1894a9ddf4b95573650365d47587c7589d3" + }, + "verify/results/fpu-cw/run-007f-rep/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-007f-rep/(Autosave).sav": { + "mode": 420, + "sha256": "ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918" + }, + "verify/results/fpu-cw/run-007f-rep/shim.log": { + "mode": 420, + "sha256": "73b5b86da743a1cb37d4c0d97b29978923b55a7a47f80c7fa20ca47d424f6c02" + }, + "verify/results/fpu-cw/run-007f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-007f/(Autosave).sav": { + "mode": 420, + "sha256": "ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918" + }, + "verify/results/fpu-cw/run-007f/shim.cfg": { + "mode": 420, + "sha256": "998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363" + }, + "verify/results/fpu-cw/run-007f/shim.log": { + "mode": 420, + "sha256": "5721f47d7fd862156ce2cd1832cd1739636b5aee53c82323ef233ff6401775bb" + }, + "verify/results/fpu-cw/run-007f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "149c4fcf750fcf9e81dc86d8696271d9a14ca788891ac95cf96995e3737c68e4" + }, + "verify/results/fpu-cw/run-027f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-027f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-027f/shim.cfg": { + "mode": 420, + "sha256": "f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd" + }, + "verify/results/fpu-cw/run-027f/shim.log": { + "mode": 420, + "sha256": "4bd3f88bd27eb2e3ae1f42f4dc2ccf1cc5df1a2c1171d2eff8be86e7be684187" + }, + "verify/results/fpu-cw/run-027f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "b5d2611d0c08946c1e1eaa244a7e44782eac2592c392efb3d7147fbbd86816e7" + }, + "verify/results/fpu-cw/run-127f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-127f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-127f/shim.cfg": { + "mode": 420, + "sha256": "1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271" + }, + "verify/results/fpu-cw/run-127f/shim.log": { + "mode": 420, + "sha256": "03f1999dc8964912697782e856f89f190b6680d5732f2cd00b1569bff727a545" + }, + "verify/results/fpu-cw/run-127f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "fb1b9063cc53a6b39ea0a58e0545b9334fbd15d65dd839e72f2c4febbb1dd3f0" + }, + "verify/results/fpu-cw/run-137f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-137f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-137f/shim.cfg": { + "mode": 420, + "sha256": "8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9" + }, + "verify/results/fpu-cw/run-137f/shim.log": { + "mode": 420, + "sha256": "83aa72572412d5248179397895029367685fd590d795991ab91c98cf9828ae29" + }, + "verify/results/fpu-cw/run-137f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "aad1fb6abd86beafb9f44e2c6060157e22618811d105f2379252e19008839b66" + }, + "verify/results/fpu-cw/run-1a7f-rep/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-1a7f-rep/(Autosave).sav": { + "mode": 420, + "sha256": "e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7" + }, + "verify/results/fpu-cw/run-1a7f-rep/shim.log": { + "mode": 420, + "sha256": "38f2824fbe91bf2fa1ef55473a7468707248420805b6f6dc85245fd34fa94200" + }, + "verify/results/fpu-cw/run-1a7f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-1a7f/(Autosave).sav": { + "mode": 420, + "sha256": "e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7" + }, + "verify/results/fpu-cw/run-1a7f/shim.cfg": { + "mode": 420, + "sha256": "59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588" + }, + "verify/results/fpu-cw/run-1a7f/shim.log": { + "mode": 420, + "sha256": "a1bb0bd06dae6955ec09e7d0c6cd1e68e19aa2a114256cdeae1275def0a63091" + }, + "verify/results/fpu-cw/run-1a7f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "b9a7affb8235626fcfdd5afe143e4ec03be869b6b386bd9ac78389097df88cef" + }, + "verify/results/fpu-cw/run-off/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-off/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-off/shim.cfg": { + "mode": 420, + "sha256": "6a19c362121a3dba0aac857d6e998131e8b2478f19edcdcbd58006645d096c70" + }, + "verify/results/fpu-cw/run-off/shim.log": { + "mode": 420, + "sha256": "9e3cbd005f0b68037681939b289834c55629bac0e9cd35ac55e6d8ef5333a116" + }, + "verify/results/fpu-cw/run-off/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "ec2271c0d7e09fe51ead7f8d58859c692e8b302233191841d506ea14248caa8c" + }, + "verify/results/fpu-cw/state-checksum-diffs.txt": { + "mode": 420, + "sha256": "3417dfc1b75ad896ac6a5e974d51248eecca319565e2422e146897d19e121b68" + }, + "verify/results/fpu-cw/trace-bitdiff.txt": { + "mode": 420, + "sha256": "8f86707f26f30638097c85f0db6df219adbfebac4e9ec24f1feb8bfce112d4f2" + }, + "verify/results/housekeeping/vm140-result.json": { + "mode": 420, + "sha256": "2250b02342f5c02ba5464cb4656543c6366dec098fbc948006600896ac9254c0" + }, + "verify/results/housekeeping/vm141-result.json": { + "mode": 420, + "sha256": "03d92ffd2947b2f0c058e5c613e04567cffee45be456aece6d771b789f32fb93" + }, + "verify/results/housekeeping/vm144-result.json": { + "mode": 420, + "sha256": "ace15320f7e60995a68f2c9c03a5a44159ae2d64fa273d34d38e285d313a0393" + }, + "verify/results/housekeeping/vm145-result.json": { + "mode": 420, + "sha256": "768666178bf2910a2ff026351727b5cc96e48df70e1ba012031d34eafc95ad7a" + }, + "verify/results/housekeeping/vm146-result.json": { + "mode": 420, + "sha256": "eebb306a3ec8533abae6dfd59f127c48effe9f21107e0c5c09c751108e77bb97" + }, + "verify/results/multiplayer/l2-combat-hud-client.png": { + "mode": 420, + "sha256": "02c86592531ab2889a0eae04e44a644d33c754096fe60aca6640068a7a3f421f" + }, + "verify/results/multiplayer/l2-combat-hud-host.png": { + "mode": 420, + "sha256": "a56daf36fcc88627b29116ad9874c95a3c46960074ff9b823aa15c4ea2660dd7" + }, + "verify/results/multiplayer/l2-combat-loading.png": { + "mode": 420, + "sha256": "f94a718cee08e1b7d346490058f13a107d23aaa7c269fdd53b159a75d62fa558" + }, + "verify/results/multiplayer/l2-combat-round-draw.png": { + "mode": 420, + "sha256": "c1b8424540b702915302f9ff38eaf765e8e95fddc3c5c4d894438dcfcf8b6256" + }, + "verify/results/multiplayer/l2-combat.pcap": { + "mode": 420, + "sha256": "0f112ef96da6c465dbda51baf99eedd66967eed61c097f643bf6c66fc26af31b" + }, + "verify/results/multiplayer/l2-encounter-query-client.png": { + "mode": 420, + "sha256": "4c41b268ad256b0109483a2d9b5ba35de7b9cadb4eb32ef4a68f7867e6e747fd" + }, + "verify/results/multiplayer/l2-encounter-query-host.png": { + "mode": 420, + "sha256": "8c7b0c6d65ddde45eb3447f044589ffc36500b40c4d676af8321f800162f38a0" + }, + "verify/results/multiplayer/l2-fleet-built.png": { + "mode": 420, + "sha256": "6ac91fcf9b42caef50134de01804046d8e60d0fd3966592e9738ceff511949c2" + }, + "verify/results/multiplayer/l2-lobby-client-joined.png": { + "mode": 420, + "sha256": "4a8e698c9ea935449ff0421cd59acd517ebffa388a7572279b28be0369141ff6" + }, + "verify/results/multiplayer/l2-lobby-host-created.png": { + "mode": 420, + "sha256": "e6a7377cabafa973396cedafa5ad5b4863a42f9866709db88faf9572e0ed3c98" + }, + "verify/results/multiplayer/l2-move-warning-dialog.png": { + "mode": 420, + "sha256": "43c6219d74bc0cb28495f13784cdbd3a90c89746b108824c3a2138dbdadcb53e" + }, + "verify/results/multiplayer/l2-socks.log": { + "mode": 420, + "sha256": "109b630d6548d07404f9f905e6c527f10e25221698f1b66226f67f94c5f294b5" + }, + "verify/results/multiplayer/l2-turn13-client.png": { + "mode": 420, + "sha256": "d19f17c4219f21f6c9950440d528a1a91fe3907761df21fd0ba99321b8820baa" + }, + "verify/results/multiplayer/l2-turn13-host.png": { + "mode": 420, + "sha256": "811efcfb571d60435f772a3b619bb329717d1e162b88e440ec0d636b1c6042fc" + }, + "verify/results/multiplayer/w2-internet-browser-no-error.png": { + "mode": 420, + "sha256": "6409b977056c95b29928a0098f75fffd71c501128f9d9325c3000837131c8791" + }, + "verify/results/multiplayer/w2-join-manually-dialog.png": { + "mode": 420, + "sha256": "86904e94a5aec41c1e89271d2712558c3b5055bd2ae4fededfda103d1e22fb71" + }, + "verify/results/multiplayer/w2-lan-browse-listing.png": { + "mode": 420, + "sha256": "6f5d16fa719fb63dd627fba551221c7665b69002e83fe35b8d84912cd7d8ce83" + }, + "verify/results/multiplayer/w2-lobby-client.png": { + "mode": 420, + "sha256": "ede652b21e2a4ea07c8132e4080ba903d1052ebca336bb007e1e8efa62787f10" + }, + "verify/results/multiplayer/w2-mp-turn1.png": { + "mode": 420, + "sha256": "59f9a1f5d8c0fff45d3ae3406dfd9878a5915f18e999d909a5238a90a3b86ed6" + }, + "verify/results/multiplayer/w2-mp-turn2-client.png": { + "mode": 420, + "sha256": "d9da4c151cd8290f80b31eb5ed8a74a0a30a87d1f7a80a179fa082a9439e08e5" + }, + "verify/results/multiplayer/w2-mp-turn2-host.png": { + "mode": 420, + "sha256": "910efd36b4a7c1a85d8ad487660f856339af037b9b00fef0cafd5e77ebdc36e5" + }, + "verify/results/multiplayer/w2-tier0-filtered.pcap": { + "mode": 420, + "sha256": "e108778fd1afb7718c53a4164310b8523415ef073706d310583dab424e5921cc" + }, + "verify/results/saves/ac-turn20-raider.sav": { + "mode": 420, + "sha256": "ee787db8f63d8f564c597bd5a82709790a0fdf47827912037f96b736f2cbed34" + }, + "verify/results/saves/ac-turn22-raider.sav": { + "mode": 420, + "sha256": "0faeaa601e6a867876819e5646b85f8787851093b8e6bd6e3946eb867f2dcc74" + }, + "verify/results/saves/ad-oracle-A-post.sav": { + "mode": 420, + "sha256": "a634510e7208cceb10d8ce016ceb0153601f11d7291f08122bcdb6418e313331" + }, + "verify/results/saves/ad-oracle-B-post.sav": { + "mode": 420, + "sha256": "676b1778880b5d4784ba7f6ef48b1a8e56745adab70a815943b7744876686260" + }, + "verify/results/saves/ad-turn27-two-raiders.sav": { + "mode": 420, + "sha256": "1c8baa27680809d585ab1728391e82729642d32aaedffd5bf95b616f0a11a436" + }, + "verify/results/saves/ap-deploy-turn15.sav": { + "mode": 420, + "sha256": "844f2b746060dc2c4e2099cdc6ceffd5f55ef858c9e347df28c8aca3041f7165" + }, + "verify/results/saves/ap-oa-turn16.sav": { + "mode": 420, + "sha256": "e296394f578b3a5668e5934b9eec8d6c4638ca7411200078f97de1abd346f4c5" + }, + "verify/results/saves/ap-ob-turn16.sav": { + "mode": 420, + "sha256": "262f8bda97c9511d8d2b41e6a8a0582d6f5364c2b01b1caf99e639d0e4f53ebe" + }, + "verify/results/saves/ap-turn22-spydetected.sav": { + "mode": 420, + "sha256": "91381bd7e722ac3847795a402d78ebb31d74dbb5d2909f33d243aec3ef8abaf8" + }, + "verify/results/saves/ap-turn25-spydestroyed.sav": { + "mode": 420, + "sha256": "46380fcf4498d67507e4471eb9ee3762647c53ee5473be142fe5c34e37344bc3" + }, + "verify/results/saves/ar-oracle-A-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-oracle-A-pre.sav": { + "mode": 420, + "sha256": "15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca" + }, + "verify/results/saves/ar-oracle-B-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-r1-turn43-post.sav": { + "mode": 420, + "sha256": "37f4a54fd32303fdcc86522b07104fbf2fcb124eec9b1f7005b3446fefcc429f" + }, + "verify/results/saves/ar-r2-probes8-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-turn37-816raiders.sav": { + "mode": 420, + "sha256": "b6f4e05ff226eabd1695003b36293553642553cea96ef417364393e2332a7094" + }, + "verify/results/saves/as-turn14-predeploy.sav": { + "mode": 420, + "sha256": "53986f8511cbf9920f32e2ea406ccf531dd08903fa5d06024fcf03ea7627221d" + }, + "verify/results/saves/as-turn15-spydeployed.sav": { + "mode": 420, + "sha256": "854a10fa1ea602f0f7909f9bf9154942e56ea5fa1db4cce47d6d32bf53952e08" + }, + "verify/results/saves/az-turn11-16destroyers.sav": { + "mode": 420, + "sha256": "501583c7cf2ac81c9db3191203cd3dc5ba5b9e228b9b9ce3dbdcc3650d0070a9" + }, + "verify/results/saves/az-turn23-tarka-comraid.sav": { + "mode": 420, + "sha256": "3d5eb826c149d1fd0278c746f32e6148ca9883a1bc5b522c0d5e6e13fac9788a" + }, + "verify/results/saves/bp-pinA-turn28.sav": { + "mode": 420, + "sha256": "e913ff41188211c02d536da616337544e64133996cd7cc7a6521a8df1960226f" + }, + "verify/results/saves/bp-pinB-turn28.sav": { + "mode": 420, + "sha256": "724528ffde9a7514b69ab9e82ed3b8c8ade63d622c0720de30503a73a92df11e" + }, + "verify/results/saves/bp-turn28-pre.sav": { + "mode": 420, + "sha256": "16f63adbf383946db17c381998957172bca803406b7df78f3b03805fef0bbcb8" + }, + "verify/results/saves/bq/bq-1A-endturn.sav": { + "mode": 420, + "sha256": "1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39" + }, + "verify/results/saves/bq/bq-1A-post.sav": { + "mode": 420, + "sha256": "56980aa086e1a145b00f781b9d9cf618b152986f1c2267b9fd96cca0f1f604b9" + }, + "verify/results/saves/bq/bq-1B-endturn.sav": { + "mode": 420, + "sha256": "1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39" + }, + "verify/results/saves/bq/bq-1B-post.sav": { + "mode": 420, + "sha256": "b36ac0ec2986f3a814dd22ca312c895ba6ec8a0e55fca54d8a7fd08a2f96a2c4" + }, + "verify/results/saves/bq/bq-1bA-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bq/bq-1bA-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/bq/bq-1bB-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bq/bq-1bB-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/bq/bq-res-post.sav": { + "mode": 420, + "sha256": "28bbd9b5c377afcd8f075b535eb1036ee46acf71ab614e7091ccdbdfb3703db2" + }, + "verify/results/saves/bs/bs-C-endturn.sav": { + "mode": 420, + "sha256": "15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca" + }, + "verify/results/saves/bs/bs-C-f38-autosave.sav": { + "mode": 420, + "sha256": "0fe8f37479a702d2e4e7752e6cb160dc242f00a082dc4115b7d10c77b24989f0" + }, + "verify/results/saves/bs/bs-C-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/bs/bs-L-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bs/bs-L-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/cb-c3-turn1to2-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-c5a-turn1to2-pinned-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-c5b-turn1to2-pinned-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-turn2to3-autosave.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/saves/cb-turn2to3-endturn.sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/saves/certified-pairs.md": { + "mode": 420, + "sha256": "4e1cfb79cf5a51446b2eae21f91b565348ffa95a9ebac8f95e23019012aefb57" + }, + "verify/results/saves/cr/cr-oracle-autosave.sav": { + "mode": 420, + "sha256": "79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420" + }, + "verify/results/saves/cr/cr-oracle-endturn.sav": { + "mode": 420, + "sha256": "e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f" + }, + "verify/results/saves/cr/cr-replace0-autosave.sav": { + "mode": 420, + "sha256": "6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5" + }, + "verify/results/saves/cr/cr-replace1-autosave.sav": { + "mode": 420, + "sha256": "8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235" + }, + "verify/results/saves/determinism-hashes.txt": { + "mode": 420, + "sha256": "bfa0615c4b310ae21c09a7d373d5a9d8799f36a0460089e5950fa0edf9d614d2" + }, + "verify/results/saves/human-turn11-spytechs.sav": { + "mode": 420, + "sha256": "aa63dd3d5489884f70d9c35acfb06c23c84531f403798842e7b0cf8cde94d1d4" + }, + "verify/results/saves/human-turn15-spyprogram.sav": { + "mode": 420, + "sha256": "22306d26f8831b90a62c00a2ebad5a97e77017b62ee96a7439d4c2c76c455cca" + }, + "verify/results/saves/human-turn2-orders.sav": { + "mode": 420, + "sha256": "9a94dec562622310893d6f522a0fae06f1033470f4182098e808b175e7df7c8d" + }, + "verify/results/saves/human-turn3-noderoute.sav": { + "mode": 420, + "sha256": "6db0912a050a846c8f3a184811644c76df3fdb65e83dffbf70289e21cc098a90" + }, + "verify/results/saves/human-turn5-traderoutes.sav": { + "mode": 420, + "sha256": "3829e6c6d8f26cd1183a972bd66edadbd71364c11a224b0a6e40461011bcab29" + }, + "verify/results/saves/human-turn8-traderoutes.sav": { + "mode": 420, + "sha256": "afeb3b2d724e07cf59f15eb1bdb9fcf853391fc06fe21beb20c069ff75b2f836" + }, + "verify/results/saves/turn1-state.sav": { + "mode": 420, + "sha256": "a3f9dc4b49fc669c814b09b87a9c6795de21bac80a1c7bfe3901b8e239fa36cc" + }, + "verify/results/saves/turn2-state.sav": { + "mode": 420, + "sha256": "ab4ac2d7e2977260a4de916f65c7ecc6dd5b0094dac4bb51241317232ea17ab4" + }, + "verify/results/saves/turn2-strict-issues.txt": { + "mode": 420, + "sha256": "33a169a2de29ad502e9b7c0159cd543e0b4d71f2d9b3903f5be58c7846db2429" + }, + "verify/results/saves/turn3-state.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/saves/zuul-turn15-orders.sav": { + "mode": 420, + "sha256": "ef86a0d61de3533f023af5dc2b9a5720e4e0c5c97d900d88181603a13db7d045" + }, + "verify/results/saves/zuul-turn16-noderoute.sav": { + "mode": 420, + "sha256": "b6b5d283b62cc46bca914e86c34cf45e8960a653e818e59664087429bbb30103" + }, + "verify/results/saves/zuul-turn17-orders2.sav": { + "mode": 420, + "sha256": "1b863e684edecb4afe738ba30c8132065ebcf2d9977409325e714fe0173056e8" + }, + "verify/results/saves/zuul-turn17-rollpending.sav": { + "mode": 420, + "sha256": "aac5ba5b10ff1af6b0e38c565b2f0a60c16858ee4e89dd2a2f5b037eae95ee7d" + }, + "verify/results/saves/zuul-turn23-fleet23.sav": { + "mode": 420, + "sha256": "fd3748327d87b8c478f50fcd09d097eacff21e57d946ecb43b8119b4d0d78b1b" + }, + "verify/results/saves/zuul-turn5-species5.sav": { + "mode": 420, + "sha256": "48559ab5b719b332e47b4bf43af85a616bff1508125d62edb211b80637234af6" + }, + "verify/results/shim/ac/ac-probe-run-shim.log": { + "mode": 420, + "sha256": "b9b4a5f0e399e16b477cde0bd7e2c4ce378549eb5a467f7b8ae5eb64d75cb106" + }, + "verify/results/shim/ac/ac-probe-run-watch.txt": { + "mode": 420, + "sha256": "543d76d150aeb9318b9ae27acf638b8935eea30b1a2d47fb15354b584a458163" + }, + "verify/results/shim/ad/ad-r1-shim.log": { + "mode": 420, + "sha256": "fec98888b030ed42b84551aac1286c0baeaf15b8a545af068dc6605615e96df0" + }, + "verify/results/shim/aidesign/parse_aidesign.py": { + "mode": 420, + "sha256": "fbd4aeb71db548759bdb1ff65a5fdd0af6c192927e6ebe4b510f1083c3bdba13" + }, + "verify/results/shim/aidesign/sd-br-p1-hashes.txt": { + "mode": 420, + "sha256": "cd276116a51df01129f0e840d4c04f7964be34f75e51c384cd8df65969f458e6" + }, + "verify/results/shim/aidesign/sd-br-p1.txt": { + "mode": 420, + "sha256": "325cb9fcfa505ab2a93bbd00d60a7a4644b6b5970cb16a288cc7a43f2e825dd3" + }, + "verify/results/shim/aidesign/sd-pin-p1-hashes.txt": { + "mode": 420, + "sha256": "f0371c0a439d736ae7e67e71bd87d693481100d08243d16a1ac1f2ad0ab8bdce" + }, + "verify/results/shim/aidesign/sd-pin-p1.txt": { + "mode": 420, + "sha256": "45e693d279899e7a04cf59bda67190058896b56f3b0607d5aee21abb12f03071" + }, + "verify/results/shim/aidesign/sd-pin-p2-hashes.txt": { + "mode": 420, + "sha256": "e7d6dc12a940305087ee03dc7f8826f3c6343d24d8fea0f2aa78665d887138c9" + }, + "verify/results/shim/aidesign/sd-pin-p2.txt": { + "mode": 420, + "sha256": "b0206869206bc3a41bebb5175e31179f1a5d125a44b5ddfc10c67c4a0d13c22c" + }, + "verify/results/shim/aidesign/sd-t15-p1-hashes.txt": { + "mode": 420, + "sha256": "1ee71a623eb17e08c623ec8de3775218dc3a7c2de50d36a25dd2395382195962" + }, + "verify/results/shim/aidesign/sd-t15-p1.txt": { + "mode": 420, + "sha256": "df9f4906ee8bbb2efc9ba9a38c41607b89711d0bc9f705473d8448e9715d9280" + }, + "verify/results/shim/aiorders/cb-c1-turn2to3.txt": { + "mode": 420, + "sha256": "9d5014b346cb0fa9e2172f45db77c4437a03b069930eaaa80ea94e742891eb8f" + }, + "verify/results/shim/aiorders/cb-c3-turn1to2-run1.txt": { + "mode": 420, + "sha256": "fdaf27a32b93fdb3024f7a45f0d90b2cf833d3f592960027c3a6cf4ecbb8c616" + }, + "verify/results/shim/aiorders/cb-c5a-turn1to2-pinned.txt": { + "mode": 420, + "sha256": "d4daa0c2599c1b573ed59617243a392861dbc4e1fbeb707c7248708c015d998f" + }, + "verify/results/shim/aiorders/cb-c5b-turn1to2-pinned.txt": { + "mode": 420, + "sha256": "9682186176024242fddb901b10d9a5ad6beba91bd895c2001ca954fc293eab73" + }, + "verify/results/shim/aiorders/l4-research-run1.txt": { + "mode": 420, + "sha256": "5caf1fa25b7b8c2d6af213e59c6ec821be3c46cdd92a1024a6faf5d0a3b1d71c" + }, + "verify/results/shim/aiorders/l4-research-run2.txt": { + "mode": 420, + "sha256": "846ef2cfbc365e7ee2f481048978baf820d57026737261bfba3a328d59cdaad8" + }, + "verify/results/shim/aiorders/l4-turn1to2-aiorders.txt": { + "mode": 420, + "sha256": "c55d9b3c48cb552c02731003c26bb6dfcb8afb611c2a188d21fd4a39f550d269" + }, + "verify/results/shim/aiorders/l4-turn1to2-hooksoff-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/shim/aiorders/l4-turn1to2-instrumented-autosave.sav": { + "mode": 420, + "sha256": "e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d" + }, + "verify/results/shim/aiorders/l4-turn2to3-aiorders.txt": { + "mode": 420, + "sha256": "696c34996e4b5be0383794fae7ea114779f7fdd0a8cdceff5a00aeb07392933a" + }, + "verify/results/shim/airng/par-br-p1-hashes.txt": { + "mode": 420, + "sha256": "656b1d0c073d9988287e5b76543e42eb1c050d9ebc9872e2b7ec5208b7534b42" + }, + "verify/results/shim/airng/par-br-p1.txt": { + "mode": 420, + "sha256": "eadf1cfb7efd7b374472867ddf1cea5f60e30096090c950049f0c264b0299398" + }, + "verify/results/shim/airng/par-br-p2-hashes.txt": { + "mode": 420, + "sha256": "d97916075c7b4c10464962e9e38aed69288a4d68a16a369c1133df16fa134146" + }, + "verify/results/shim/airng/par-br-p2.txt": { + "mode": 420, + "sha256": "bda355cbbf07301cd6d3716eba32312261c402848c91780a97a6d5cce14c3d92" + }, + "verify/results/shim/airng/par-pin-a1-hashes.txt": { + "mode": 420, + "sha256": "5eb1b557826d45fe9d843b37a92aaef54cd1b8a60900f9c34b4fe25e4bd46a24" + }, + "verify/results/shim/airng/par-pin-a1.txt": { + "mode": 420, + "sha256": "17750bab77512434dcc9e66fc86cbfc34df497cadab5b732cf3b0ef3958e09a4" + }, + "verify/results/shim/airng/par-t1-br-p1-hashes.txt": { + "mode": 420, + "sha256": "7577c33ec33d9e94fb77225929c1f34a3dd94c18fe72a394017811b3b5d53467" + }, + "verify/results/shim/airng/par-t1-br-p1.txt": { + "mode": 420, + "sha256": "8bc9969e2da730d26cc5538b758858a00a4ba6ab2d398458ff4dece1edf8bf92" + }, + "verify/results/shim/airng/par-t1-br-p2-hashes.txt": { + "mode": 420, + "sha256": "7e60fc8615163e8ebccf22fc8910f2e7c4f72a9be7a74bc832bc2a0f64ade0da" + }, + "verify/results/shim/airng/par-t1-br-p2.txt": { + "mode": 420, + "sha256": "7e50a728eb5909bd602a9e6996b908b1b2665c8c983cc0258dad000c8bff8e35" + }, + "verify/results/shim/airng/par-t1-br-p3-hashes.txt": { + "mode": 420, + "sha256": "00ce6b3b4c9dbfd192d09b3b06d91b95576cee8a5a85fccdc36a85547fbdcbc4" + }, + "verify/results/shim/airng/par-t1-br-p3.txt": { + "mode": 420, + "sha256": "28cdf1f6b83c1764f1d1e51a67e3f873566b8503f8504ef52f5b5af24b21c0cb" + }, + "verify/results/shim/airng/parse_airng.py": { + "mode": 493, + "sha256": "3fafa7cf2363620d6a25248d085fbc4e3bd1fdbb9388a6795244834a9a2a2ed0" + }, + "verify/results/shim/ap/ap-probes8-d.shim.log": { + "mode": 420, + "sha256": "115545172568edc6a1d5bb3b559f968aa8a7aaa1f6aeba970daebce98fe56a0c" + }, + "verify/results/shim/ap/ap-probes8-w.shim.log": { + "mode": 420, + "sha256": "8af0897a884bb314958c5e6f2fccd88ff8b1890322dafd3bc904b3f983838620" + }, + "verify/results/shim/ar/ar-r1-ledger.txt": { + "mode": 420, + "sha256": "44bddfc0b9e94812a3a1cfd681a1350caedf2ed8e1174900c2f81c90dc95187e" + }, + "verify/results/shim/ar/ar-r1-probes.txt": { + "mode": 420, + "sha256": "c10251c9bcca5436dc42b2c0bd37b66c144aec4036f2069c2df9340fd764992c" + }, + "verify/results/shim/ar/ar-r1-shim.log": { + "mode": 420, + "sha256": "07003ee203d60a638cc8a1cb0a0f6b8042ba227705b4355f1254312c6dd54e28" + }, + "verify/results/shim/ar/ar-r1-sites.txt": { + "mode": 420, + "sha256": "d1923d549ef3567488d0382ae0ef75fa25c5b1b5812ee5349c5c47aea7a30514" + }, + "verify/results/shim/ar/ar-r2-shim.log": { + "mode": 420, + "sha256": "06dbf04cff5a56b0e55d8e73e5b1e3e9d9235f4afafc8139517b68d676781909" + }, + "verify/results/shim/as/as-probes8-run.shim.log": { + "mode": 420, + "sha256": "cd25c93d8b79e0f0df594fe681917fe880741a54a4188d4d72d2fbc6c42ba8d9" + }, + "verify/results/shim/bp/A-aiorders.txt": { + "mode": 420, + "sha256": "ee9f8bb1073e3bf02e115fdee014f79b11100a0e1e35e308c2bcd4b798302c34" + }, + "verify/results/shim/bp/A-shim.log": { + "mode": 420, + "sha256": "853eab98d09ff1e7a8e7da375a678561b02d6236adec627202ff3bb34d90e797" + }, + "verify/results/shim/bp/B-aiorders.txt": { + "mode": 420, + "sha256": "07daeacf33a16afbed64a8a01ffd26fa73c6d2acd0e6993dd9deb06a7fd93fc3" + }, + "verify/results/shim/bp/B-shim.log": { + "mode": 420, + "sha256": "cde2202333e81cc4eec2c47915181229a68a5fa99879968905a2809c4fe0a79a" + }, + "verify/results/shim/bp/L-aiorders.txt": { + "mode": 420, + "sha256": "28492b0f9be74f61db45eae49b44b41efbc1a3bf6f6d2c888e5cc40bfb7753bd" + }, + "verify/results/shim/bp/L-shim.log": { + "mode": 420, + "sha256": "550d8986a35b3f4742e7522df11bfbf2e832e417ad42cc1bff1a39dd4ee510fd" + }, + "verify/results/shim/bp/statecheck-AB.txt": { + "mode": 420, + "sha256": "dacb5cfa5541934f37b2b1c02b87e809c3f65ba8488aa88d925b295fade0083d" + }, + "verify/results/shim/bq/bq-res-aiorders.txt": { + "mode": 420, + "sha256": "991543eb53fbf1353fe99ed96d4ca358e05f6bac32f00bd1f6dc60fcc002c8b4" + }, + "verify/results/shim/bq/bq-res-shim.log": { + "mode": 420, + "sha256": "7855bd268f69443e7ddfda71873458144728630264703482901bf6d8ffbccd3a" + }, + "verify/results/shim/br/BR-aiorders.txt": { + "mode": 420, + "sha256": "d71e11e7c40aaa740adc55651af556afb9e92768336bc11747ad67151f33f4d1" + }, + "verify/results/shim/br/BR-airng.txt": { + "mode": 420, + "sha256": "04eaeaa688a448f64df00dedfd692b78bca0e3e1207a8292c2fafad507f919ea" + }, + "verify/results/shim/br/BR-shim.log": { + "mode": 420, + "sha256": "bc6ef7aa465c2b1a81d08555174e15fb1a97a207da9eefaa8a6155440869a13e" + }, + "verify/results/shim/br/BR2-deep-aiorders.txt": { + "mode": 420, + "sha256": "b9edb53f7d56c1bb26d3bb77349543dce9564930484bc832475a3a04e5f2ad15" + }, + "verify/results/shim/br/BR2-shim.log": { + "mode": 420, + "sha256": "0de7609693747fdf0abaebd60598af127c918f32561c993715aead91cd24b334" + }, + "verify/results/shim/br/aiorders-diff.txt": { + "mode": 420, + "sha256": "411ceb2bacd62185d25a3c58f199c0bdfcd2759705bef2b36536da3870f73a67" + }, + "verify/results/shim/br/cmp_aiorders.py": { + "mode": 420, + "sha256": "b6c192efb40866aa56f29d9ba2b89e17f18ae0579645db8f34a01010db09cc28" + }, + "verify/results/shim/br/shim.cfg.brdeep": { + "mode": 420, + "sha256": "b8017e344666df816f1191906cf8f54504d631bb7ce9d2f51f6f959e4934ff04" + }, + "verify/results/shim/br/shim.cfg.brprobe": { + "mode": 420, + "sha256": "4f090999dba63ef22ab4993bd6af557e9500819c84f27decc126771f48f98efb" + }, + "verify/results/shim/bs/C-aiorders.txt": { + "mode": 420, + "sha256": "5abc20b68edf6ff52301c01825040e1d6b41b582ba40403ed6c4edc42dcbe4e2" + }, + "verify/results/shim/bs/C-airng.txt": { + "mode": 420, + "sha256": "5a4a56506d1eeb82d3bf0fbba95842566911178a82f0aad9d700a9fe00f1b300" + }, + "verify/results/shim/bs/C-shim.log": { + "mode": 420, + "sha256": "8b8dad987589fd159e789806e89dbcf7a7b40b86446d55e1d0bf10ff25cb8f6f" + }, + "verify/results/shim/bs/L-aiorders.txt": { + "mode": 420, + "sha256": "a03e8c1587633ecbb683c376f30e35e126e98ff0e8204c4ee6b5e2b4fc254104" + }, + "verify/results/shim/bs/L-airng.txt": { + "mode": 420, + "sha256": "8d21083857facd3728446af612b3a97b47e5287a5fe0bdf01423812f8445dacd" + }, + "verify/results/shim/bs/L-shim.log": { + "mode": 420, + "sha256": "246af272e464c715c7abb00471b4ddc404b81143f4065006aa4daec4d82cadb9" + }, + "verify/results/shim/bs/shim.cfg.bsrun": { + "mode": 420, + "sha256": "570b15c208d31a367ec6c6886019693cb17b98d254cebead11ec6746ae5af256" + }, + "verify/results/shim/bu/BU1-aiorders.txt": { + "mode": 420, + "sha256": "944eeb701fcd22480513c34d93f8310541977e89a24ae237bd947aed44092529" + }, + "verify/results/shim/bu/BU1-aivisit.txt": { + "mode": 420, + "sha256": "721f038ef80be92325728fc30f095846b54ff1ac67a41537d4a4d1b97d5e9758" + }, + "verify/results/shim/bu/BU1-shim.log": { + "mode": 420, + "sha256": "28ca02f56823e577662744108965bc3ab1d7241143704ac8ceaacf2e9cd077f3" + }, + "verify/results/shim/bu/BU2-aiorders.txt": { + "mode": 420, + "sha256": "5c388039a3e832465f67b4ca88f3f67550d5189a3a68f33c508c4a467733c9ac" + }, + "verify/results/shim/bu/BU2-aivisit.txt": { + "mode": 420, + "sha256": "19963ed364f47fd965508d96fbf9d1f424938f711f2b1cdc83697f789189271a" + }, + "verify/results/shim/bu/BU2-shim.log": { + "mode": 420, + "sha256": "c0a8c467bc4b4134dc83ca5dedbbfed8dac887b432a56cd12f6e211c8d58daca" + }, + "verify/results/shim/bu/BU3-aiorders.txt": { + "mode": 420, + "sha256": "b6443b3f7db541149f54435f14ba830f54d2f950420f3f0694ff12a8b1eec143" + }, + "verify/results/shim/bu/BU3-aivisit.txt": { + "mode": 420, + "sha256": "fe67a4a1cc6a67e06b2eb5675b4b8543ab9f25ea39a18d7f4c83bce74482e0cc" + }, + "verify/results/shim/bu/BU3-shim.log": { + "mode": 420, + "sha256": "0a802ec556c87f44efaa06f211e75d9b89a66ac6db5a08e34d2a7eae992121ed" + }, + "verify/results/shim/bu/claim-order.txt": { + "mode": 420, + "sha256": "7135e3ed0204a4615e546bc882992073d4b48ee42ea341186c32b6b3dd3dfc47" + }, + "verify/results/shim/bu/claimcheck.py": { + "mode": 420, + "sha256": "85c5ec747f12cf37ec2dbc4021447909eeded68ecd1abb697a6fb60005a54aff" + }, + "verify/results/shim/bu/shim.cfg.bupin": { + "mode": 420, + "sha256": "6b37b047adc95f7c08b6767cdec5bd715a8851f14bff7f187772835d1cc032a7" + }, + "verify/results/shim/cr/cr-N.log": { + "mode": 420, + "sha256": "d5459e6dcf44fbe55d0f60f1ac40d68bed96319bb55986cc24a1b9ca0d8103e0" + }, + "verify/results/shim/cr/cr-R0.log": { + "mode": 420, + "sha256": "3b703881aa2b9a1c111201ff9543f2dcae0f948567ee877df275a1093bb567f7" + }, + "verify/results/shim/cr/cr-R1.log": { + "mode": 420, + "sha256": "8df6af84f74891ff9b0b02fa150641f5fadcd0419bc53c41cbe80bf14ec9c712" + }, + "verify/results/shim/eventlive/c6b-loaded.png": { + "mode": 420, + "sha256": "f442d4b211a47b331cef9a255e83732b80a1ede70ac200596c796ac0aa320017" + }, + "verify/results/shim/eventlive/c7b-turn3.png": { + "mode": 420, + "sha256": "3e070abfbdf4efd2662951049f8545f328aa172d64d00b9c5a1f4243426e803a" + }, + "verify/results/shim/eventlive/load-dialog-8files.png": { + "mode": 420, + "sha256": "e0fc5af16042a70b53bf7d44220db56c56a466c22c4abd641557e94b8e6c1693" + }, + "verify/results/shim/eventlive/shim-zuul.log": { + "mode": 420, + "sha256": "f9d184b33c46cab9d497f7a38056c099ce2ff9b5e8149f563a2353d91985fea1" + }, + "verify/results/shim/eventlive/shim.log": { + "mode": 420, + "sha256": "e65f2e3efa1ce8f70c483bb966448239923db2d3924c709a669bb1a890411b0c" + }, + "verify/results/shim/eventlive/t7-after.png": { + "mode": 420, + "sha256": "dc0a3e8f5a5c9032ead266d106fa69a57677711eb807d26376f29baa6ec0b934" + }, + "verify/results/shim/eventlive/zuul-turn1.png": { + "mode": 420, + "sha256": "f9af979ed08315c0a8d644af800318634b3641628f710f3f9b4d2c77d4f70fdc" + }, + "verify/results/shim/l1/README.md": { + "mode": 420, + "sha256": "f008081756d99825aa81d2802869476f8341f81aeb8c4dbbb77502cf76db5145" + }, + "verify/results/shim/l1/cdiff-frames-2-51.txt": { + "mode": 420, + "sha256": "57cb1911c5bfc7bdfacafc6bb1ad382fc05f46fb9cdcee4479d861af48e585c1" + }, + "verify/results/shim/l1/cdiff.py": { + "mode": 420, + "sha256": "2ace41ce6017cfac8758d8b9955f02de84738d90067a7dfadeb8bffffc842027" + }, + "verify/results/shim/l1/rep.py": { + "mode": 420, + "sha256": "1a7a3819da8e9aeaaf213a62b696388b0a9489924c964407536831b5f7dd9488" + }, + "verify/results/shim/l1/saves/l1-t1t2-post-hooksoff.sav": { + "mode": 420, + "sha256": "e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d" + }, + "verify/results/shim/l1/saves/l1-t1t2-post.sav": { + "mode": 420, + "sha256": "62061918176e344106e82357e58acc8adec488f6b2969831cb99a84cf25e31c5" + }, + "verify/results/shim/l1/saves/l1-t2t3-post.sav": { + "mode": 420, + "sha256": "2177c659d8dbc39cf7485abe367d42d55cc42cc9a61949d403dcbc79989ec32d" + }, + "verify/results/shim/l1/saves/l1-t2t3-pre.sav": { + "mode": 420, + "sha256": "641a33f06b2fe1c1caf0c4994442bf13a4b03f25a85b34a9875cd22b75715896" + }, + "verify/results/shim/l1/seed-two-processes.txt": { + "mode": 420, + "sha256": "d60412049ced59705284a46078f1906e1aad4140f90db2169e08aeb9530dd985" + }, + "verify/results/shim/l1/seedrep.py": { + "mode": 420, + "sha256": "a06de5d5ccc1e87808eb3877534076340ef5330bee9a86953b8f4dae0268e087" + }, + "verify/results/shim/l1/trace-et1.jsonl": { + "mode": 420, + "sha256": "f21a213bc56983bc94f24303b0837b160f93bfb7e3ca6abdbf2e18321f8dfa19" + }, + "verify/results/shim/l1/trace-et2.jsonl": { + "mode": 420, + "sha256": "6e44b0fc541c3082f91b115de67f5315f43b9db21f0696b856cfff2ead51323a" + }, + "verify/results/shim/l1/trace-oracle.jsonl": { + "mode": 420, + "sha256": "ad9ecbe79a71c84930302868850806798228fe0f2e625b442dd3ed579c05092c" + }, + "verify/results/shim/l1/trace-playforward-f51.jsonl": { + "mode": 420, + "sha256": "6ed0af385dfe7288ad2c994458c8f5d75fc8e29b603dd6607a3703591d25eeb4" + }, + "verify/results/shim/l1/trace-seed-proc1.jsonl": { + "mode": 420, + "sha256": "120074583eb02cd4c3a29aab5826f789d52a6146930b1763f9b0bb824e9a350a" + }, + "verify/results/shim/l1/trace-seed-proc2.jsonl": { + "mode": 420, + "sha256": "03dffeafeff0c33d926207f869741dc544141425c8f665bf58aad4fd363e2f95" + }, + "verify/results/shim/l1/watch-arm.txt": { + "mode": 420, + "sha256": "f8d5811c938d16d003a72a97f2b4b33112914a7ee378fa2b334282616592943e" + }, + "verify/results/shim/l1/watch-hits.txt": { + "mode": 420, + "sha256": "1bf62ac965036a189055cd59a92007c70a2a6aca307df54ce8ccb997048f43d5" + }, + "verify/results/shim/l3/l3-probe-run-shim.log": { + "mode": 420, + "sha256": "f5cd336971ae3d3eaff642e80d9defa20ec2e1ee11e212a082c24365b18d8684" + }, + "verify/results/shim/l3/l3-probe-run-watch.txt": { + "mode": 420, + "sha256": "8d969595789c690a688f7b8fac05288c614d5d9210388ca94315158948c85f24" + }, + "verify/results/shim/l3/l3-spy-run-shim.log": { + "mode": 420, + "sha256": "5abfd08445e9e8139945b095ddddfb56480062019ce6d40304a440c317f21fd1" + }, + "verify/results/shim/l3/l3-spy-run-watch.txt": { + "mode": 420, + "sha256": "c669ccf79202e7060c153151e4fe1be96acf4030cb64aa71bd6a5c212b550b47" + }, + "verify/results/shim/m0-main-menu.png": { + "mode": 420, + "sha256": "465207fda4722ca53585b71647a08b1149944036792a072e7c34e2c437a3e37c" + }, + "verify/results/shim/m0.log": { + "mode": 420, + "sha256": "581d63139503892b6aeeff71acb742143393e9f107aa1f3605d8c028c927cad1" + }, + "verify/results/shim/m1-shim.log": { + "mode": 420, + "sha256": "35401ea82b9a64dbfdb54c282c06c51d7b696afd4ea2794e16071e0fd5c7cbef" + }, + "verify/results/shim/m2-scout-shim.log": { + "mode": 420, + "sha256": "8c46117bdde6b6911a4d77b059b40803d4966652990c8fa3ed67773e5db0459f" + }, + "verify/results/shim/mf-after-shim.log": { + "mode": 420, + "sha256": "86601372b980828171e98fc71afe865f207b1745ef4dcdca646a618c91d17426" + }, + "verify/results/shim/mf-after-turn2.png": { + "mode": 420, + "sha256": "a1f83011ff96e990d7cc80f8306e8fe0c58b96f84eb73ccb6cb013019900133d" + }, + "verify/results/shim/mf-after-turn7.png": { + "mode": 420, + "sha256": "313f3863ab901320174c8ff7cf6f1f6b0d5b3d9d7a2f8999eae6413aedc46fc5" + }, + "verify/results/shim/mf-before-shim.log": { + "mode": 420, + "sha256": "8377a87c7ed05fd0cd7b61e3f1d5fc9c2b9fa294f812c67183d4ce31323a64b1" + }, + "verify/results/shim/mf-before-turn2.png": { + "mode": 420, + "sha256": "c9805791f402ec159fcc6acdd283120eae8536b230666d3049374525595b589f" + }, + "verify/results/shim/mf-before-turn7.png": { + "mode": 420, + "sha256": "3b880b8f96c4cc328aaff8e41068db29b295be8f000c432e321a51b6030b1272" + }, + "verify/results/shim/mf-human-home-no-ships.png": { + "mode": 420, + "sha256": "dfda3e9784eefdc7b75d04908e95c3a192eda7796685907c65bfde3068d6f2bb" + }, + "verify/results/shim/probes/human-t3-5-perturbed.txt": { + "mode": 420, + "sha256": "9b594ab18cdd9aec4fdf807b4d97576191bc6fd48a85cc872c222b515d0f7c01" + }, + "verify/results/shim/probes/human-t5.txt": { + "mode": 420, + "sha256": "0ddd9f0391a3a5d655f1809a9e79d537badd8071f8834e58bdbc7f95d9ff1320" + }, + "verify/results/shim/probes/oracle-restore/h-oracle-autosave.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/shim/probes/oracle-restore/h-oracle-endturn.sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/shim/probes/zuul-t24-25.txt": { + "mode": 420, + "sha256": "50567b7cb1f008d025baf6cb4b4ad7af7d767a2182afd082c3ac1b1a66c79541" + }, + "verify/results/shim/recap-b1-shim.log": { + "mode": 420, + "sha256": "601cd4cbbec3e8c1f7776eadc4203256ec4c5d1e3e180295369727e1da69ff37" + }, + "verify/results/shim/recap-b3-shim.log": { + "mode": 420, + "sha256": "7c5110a9d4431cc03729a7bddcb13ee69a6d428199051e175b0921391fc02a80" + }, + "verify/results/shim/recap-misc-shim.log": { + "mode": 420, + "sha256": "7cadf2eadb08979cda39fe7e3ed6cfa3f62bdbcd256fc7550b3e27c3f08c9b3e" + }, + "verify/results/shim/recap-misc-turn7.png": { + "mode": 420, + "sha256": "2c1451ded36ad79389f0eb3db098b4e0b0a6f12495d64c832f6e093374005c29" + }, + "verify/results/shim/recap-trace-shim.log": { + "mode": 420, + "sha256": "56da143a92b2edda727862a6fd4a056c716153e23cfddbde076e218ce4c4285f" + }, + "verify/results/shim/recap-turn2-loaded.png": { + "mode": 420, + "sha256": "62a42c44f99d8a53bca735d54a5adf48b89449bb859e859ec573cb40e1a7f2d0" + }, + "verify/results/shim/tailrng/save_rng_delta.py": { + "mode": 420, + "sha256": "a9a04b131427a43372d87688b8eaf230a82a79e2c3c241a90ff4eb31e039749e" + }, + "verify/results/shim/tailrng/z-t5-autosave.sav": { + "mode": 420, + "sha256": "b2124798470d85ea86b0e9e4abfd9e23f3be73caa1115dd7614021be76305939" + }, + "verify/results/shim/tailrng/z-t6-autosave.sav": { + "mode": 420, + "sha256": "2ce6aef9d49ea238455f3ac680556c6a251065af3e28b6540fe09597ae38571c" + }, + "verify/results/shim/tailrng/z-t6-endturn.sav": { + "mode": 420, + "sha256": "afb112896c0236fa715ab3c10139958294085bb2066e22a6d7b76deb0dfa46dc" + }, + "verify/results/shim/tailrng/z2-autosave.sav": { + "mode": 420, + "sha256": "b2124798470d85ea86b0e9e4abfd9e23f3be73caa1115dd7614021be76305939" + }, + "verify/results/shim/tailrng/z2-endturn.sav": { + "mode": 420, + "sha256": "8648957fecf5041233f9add4c8173f78981f026f133ecdbecdb89ddd10917048" + }, + "verify/results/shim/unlock-shim.log": { + "mode": 420, + "sha256": "20a6625b369acb773543e530f1bfdc8b7eaca5c6b58415cc5009bb9858e16f22" + }, + "verify/results/shim/watchpoints/w2-modcount-status-2turns.txt": { + "mode": 420, + "sha256": "335be910dc11a20c9fb80f3b0f37f04fd50a9d8074697bb5365c3fea02790b74" + }, + "verify/results/shim/watchpoints/w2-shim-log-excerpt.txt": { + "mode": 420, + "sha256": "9a344045270e3815004a3376eccfbd030372faba54374d9b6626fd80740b8b13" + }, + "verify/results/shim/watchpoints/w3-modcount-turn1.txt": { + "mode": 420, + "sha256": "328a2319e320f5382e82ad497b6b73245c397cf67515e8a27fa9712418af81ae" + }, + "verify/results/shim/watchpoints/w3-shim-log-excerpt-turn1.txt": { + "mode": 420, + "sha256": "a9b3c20f90a76ee624bde6ee4cae9d1ff1f2baa67aa770a0e70042cb44d11915" + }, + "verify/results/shim/watchpoints/w3-shim-log-excerpt.txt": { + "mode": 420, + "sha256": "af9fe2258fe4168f6066768809c509380183f61bc337331392c5202b900d906a" + }, + "verify/results/shim/watchpoints/w3-tshn-containers.txt": { + "mode": 420, + "sha256": "08eab48d1a202f975f1be87e2279379646142f8b22d9dafc56295399083ed0af" + }, + "verify/results/standalone/cv/cv-input-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "d29f3514e4209954d6c068f34285615aef5f4627ba4627ce97c0e65f93620159" + }, + "verify/results/standalone/cv/cv-leaf-worklist.txt": { + "mode": 420, + "sha256": "0f309711de89cc10cf940d0d4b051b5052ce49a3cc0f3f80c532b50256410778" + }, + "verify/results/standalone/cv/cv-noreplay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "3734f197cfefd017dbe562fd421d40859bfc2c37d9ac2cedf9c7ddd340a3a4a7" + }, + "verify/results/standalone/cv/cv-replay-run.log": { + "mode": 420, + "sha256": "7372c7da437ece21098cc6f66d0631e146d8aae14a9242bd2278a9922a7f7c02" + }, + "verify/results/standalone/cv/cv-replay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "1932158abec82f45b9b838f4cb79b1088190ca5281d388f57356af7776e96950" + }, + "verify/results/standalone/dt/dt-canonical-after.txt": { + "mode": 420, + "sha256": "f32fdcf7d6431293133e951045b42a55e8a27d75cd859ad08cd719e5fb696712" + }, + "verify/results/standalone/dt/dt-canonical-before.txt": { + "mode": 420, + "sha256": "b56160cfdcfa0fff25be2aa566959261e375004905814803e231889da665188f" + }, + "verify/results/standalone/dt/dt-observed-leaves-remaining.txt": { + "mode": 420, + "sha256": "e14bd20e60480f98a564e585c0d25d2e758f71016811b8981dbdacd9d51c0c82" + }, + "verify/results/standalone/dt/dt-replay-run.log": { + "mode": 420, + "sha256": "4b7907fc4e735b1c12e3cf64671079abaad757aabd752b134a9fb27d065656cd" + }, + "verify/results/standalone/dt/dt-replay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "8ddb84e7e6c2f663b1bc4b9611a56a46aac9d09863dcc5be765cb70dc9642c22" + }, + "verify/results/standalone/max-income-oracle.json": { + "mode": 420, + "sha256": "245796e0aea5f5c2238686cba10c651156117fb454805553b2508a8a8fe71a69" + }, + "verify/results/standalone/report.txt": { + "mode": 420, + "sha256": "b47e90432eaf38149f2ecb5316d1962813b6b1423848e36fcc9435ad1f5485df" + }, + "verify/results/standalone/rng-oracle.json": { + "mode": 420, + "sha256": "98a364c80f69d6a84b86c3f9ccc16176d9e769ff061569b0c0ddfced53f9146c" + }, + "verify/results/standalone/rng-oracle.txt": { + "mode": 420, + "sha256": "3496a217a7e4f80bb18c1b067eaedcafcf7bdc877460c6346606fd7f6a55b877" + }, + "verify/results/standalone/status.json": { + "mode": 420, + "sha256": "d38ca6222c83df3a5886e6b32a30772c7174cc0e584f4a3beabedc05770df9cd" + }, + "verify/results/standalone/t36-turnrecord.md": { + "mode": 420, + "sha256": "b017a93ad04af69ef469cd8ea536dff4cab17140d20b3665e7c89533ab5b8a84" + }, + "verify/results/state-checksum/ad-oracleA-vs-oracleB.txt": { + "mode": 420, + "sha256": "b6c440e20108ad2727a7d7aa32a4bd673ec03ca4372461797705d619de1ba48a" + }, + "verify/results/state-checksum/chain-turn1-3.json": { + "mode": 420, + "sha256": "33941d0dd77bfb79e4302f82a410f5f18fe3ae1ade684b5b59c6ed352789a696" + }, + "verify/results/state-checksum/chain.txt": { + "mode": 420, + "sha256": "ae1037dd8394b258ce91262877d348a0561c5f5056cfae74cc0d058e4166aa83" + }, + "verify/results/state-checksum/float-census.txt": { + "mode": 420, + "sha256": "c697c0f187ee8a8ebb157cbff8d7ae42c92f36a501b16acd9f9839a0ffc306a9" + }, + "verify/results/state-checksum/identical-roots.txt": { + "mode": 420, + "sha256": "1143fabfe96954440542adcd3830ad1d862be6c091f3c1b2e63e92a2751703e7" + }, + "verify/results/state-checksum/resave-localisation.txt": { + "mode": 420, + "sha256": "85f4e8fe3581ba5d0ae74974d757c4c2fddc008f3fbe6781891ae8ef65aa693e" + }, + "verify/results/state-checksum/roots.txt": { + "mode": 420, + "sha256": "6ea7ad668703baaff870720683bcc13beff557cebf8e7843526d6677e5b5ef68" + }, + "verify/results/state-checksum/turn2-to-turn3.txt": { + "mode": 420, + "sha256": "3649c86742460a54d89714df1917508f76952c44c07cb7fbc19010910c5df0f4" + }, + "verify/results/turncommands/br2-turn27-deep.tcb": { + "mode": 420, + "sha256": "329b9c3f1e9f85ddeeb71148bd5c0e38f7d26445ed349df60ffbfaf63db46102" + }, + "verify/results/turncommands/br2-turn27-shallow.tcb": { + "mode": 420, + "sha256": "d8346969421a92fa199d0b9faafa642dc2e71a527b08d27984fe73ee70ecbd6b" + }, + "verify/results/turncommands/cb-turn1to2-pinned-run2.json": { + "mode": 420, + "sha256": "01e572975339fbe8a242b2438719173bd5bb4f4916078e5887026408923eb356" + }, + "verify/results/turncommands/cb-turn1to2-pinned-run2.tcb": { + "mode": 420, + "sha256": "16e349db6c46e46520cd2e5f0a9fcf70b537dce878324dd873418ef6cebd8658" + }, + "verify/results/turncommands/cb-turn1to2-pinned.json": { + "mode": 420, + "sha256": "2d4f108b8ac6b1e582382ac25d53f354c293e7caf390b8462d15beaf8e43e01c" + }, + "verify/results/turncommands/cb-turn1to2-pinned.tcb": { + "mode": 420, + "sha256": "28ebfecc3495cc4f5b2892e420cb1b83f3cbdb6b7aabe107f4b1d18233a06094" + }, + "verify/results/turncommands/cb-turn1to2-run1.json": { + "mode": 420, + "sha256": "c9de70196af5453df15cfebcb92c973dfed9d54ffa0dc0a397839cf951ac9b58" + }, + "verify/results/turncommands/cb-turn1to2-run1.tcb": { + "mode": 420, + "sha256": "5cdcfb3ade6cdfb2c00c234f5535c791780230f520d27be14f617462347b4948" + }, + "verify/results/turncommands/cb-turn2to3.json": { + "mode": 420, + "sha256": "8a0d4fc9efae9dcb4eca0de41bf28444d79eb5a4fd4e426671a4d80ab5a46f44" + }, + "verify/results/turncommands/cb-turn2to3.tcb": { + "mode": 420, + "sha256": "420a5d03f2a4ecfa0789835cc46f98961d11bbd7c7fd5f59dc28301aa0b65b6b" + }, + "verify/results/turncommands/l4-turn1to2.tcb": { + "mode": 420, + "sha256": "1b9faa7f8aad9196e36cf1c450e340f37c502a69ccfcaaad7e289bd7b4727b12" + }, + "verify/results/turncommands/l4-turn2to3.tcb": { + "mode": 420, + "sha256": "b0443f176c3915389278de608a8e7c63fa48d4777b924c0e383c7279f2a297e0" + }, + "verify/save-reader/SAVE_FORMAT.md": { + "mode": 420, + "sha256": "5ac2556b6c063c9296ef29e8514cc312983d48a8e2c2832f504c970629990b33" + }, + "verify/save-reader/fixture_joint.sav": { + "mode": 420, + "sha256": "fbe41595e50bb580786f36b197d5b85f87820974c545107c864fa2f1862af3f1" + }, + "verify/save-reader/fixture_split.sav": { + "mode": 420, + "sha256": "3909f12d021bf840617dc8d599841b64d67be46e1c6882cba7728d312d310071" + }, + "verify/save-reader/save_reader.py": { + "mode": 420, + "sha256": "2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35" + }, + "verify/save-reader/save_writer_stub.py": { + "mode": 420, + "sha256": "8343ad15f742ee1b9cd62108efbc9c4b2718c3807442e3dfcfa9513ced7d3638" + }, + "verify/save-reader/test_save_reader.py": { + "mode": 420, + "sha256": "29f609d037eed99bb5444004facbff7b2c5c36fae568e815810585fdc3ddd393" + }, + "verify/state-checksum/STATE_CHECKSUM.md": { + "mode": 420, + "sha256": "5680299a4df27e30cdb545d9d2a640caf9299d61acb662b9512589e4390954e1" + }, + "verify/state-checksum/float_census.py": { + "mode": 420, + "sha256": "a568aad8b9f38aba2474f33941550bf948d050694a1d04dc5c85d15687223ae9" + }, + "verify/state-checksum/run_validation.sh": { + "mode": 493, + "sha256": "bf84b999d2b90368703e80235bac0258b70a1c37dd1902c9205a914a59cb1fc2" + }, + "verify/state-checksum/stability_check.py": { + "mode": 420, + "sha256": "8e640561b05decf590524fbe0dbf3b76a5e2f9c7fde93e005ca6e79464c305f1" + }, + "verify/state-checksum/state_checksum.py": { + "mode": 420, + "sha256": "ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8" + }, + "verify/state-checksum/test_state_checksum.py": { + "mode": 420, + "sha256": "d0ccf8e8390fd0a5d76a8695a490d85dc7e8e415a06ec50b592c57474cc9a73b" + }, + "verify/tooling/README.md": { + "mode": 420, + "sha256": "b05249530d65d43220c1e5c4666939c360d6139ed404a8881f6ad0a9c5c27af6" + }, + "verify/tooling/fixtures.py": { + "mode": 420, + "sha256": "56cccc88b9b9468e07c9ddff39d65813098053ec9e8f00432736906389f200a7" + }, + "verify/tooling/host-tests.json": { + "mode": 420, + "sha256": "90833c99e2749ff890b16b943f43f6ebfc1a1c611f2ed1e40555426fded45c97" + }, + "verify/tooling/test_tooling.py": { + "mode": 420, + "sha256": "bb8d15960dfda13f15cffc57f3b669003b127b4dedbf34100bb4a51c29dd3c6d" + }, + "verify/traces/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/traces/ac-probe-baseline-turn15.jsonl": { + "mode": 420, + "sha256": "a2f4e410f6a8d77f7680b4a69b5b2ac2f59fa80515b0cfe8209e7fec8e4a5b6b" + }, + "verify/traces/ac-probe-turn21-turn23.jsonl": { + "mode": 420, + "sha256": "2bb9317b82744c0da36ef6d9c1a78f31ebacea49b82a18005c0cc75bad62d345" + }, + "verify/traces/ad-r1-turn28-turn29.jsonl": { + "mode": 420, + "sha256": "cde7a1e010aa6195163f3b9320aa5c496fd8c271e9648c90c7319837dd967571" + }, + "verify/traces/ap-probes8-deploy-turn15.jsonl.gz": { + "mode": 420, + "sha256": "e257d5ea3fcb4be8da570d6a5589022e6ba412ff2712f4f06832812d8859e08a" + }, + "verify/traces/ap-probes8-turn16-turn26.jsonl.gz": { + "mode": 420, + "sha256": "df4fb35d9824799d8be79f3a9e976b55b7cd0fb5488b3e12711d04eb3c320f13" + }, + "verify/traces/ar-r1-turn38-turn43.jsonl": { + "mode": 420, + "sha256": "f8653cbd1956346816897b313031c5d70898144d1c84b1c849ac37bfe3bd993c" + }, + "verify/traces/ar-r2-control-turn38-turn39.jsonl": { + "mode": 420, + "sha256": "c1068652ddf54d2ff266c1dc1ef1e69ea663f5d2a83143408f77ec782b3dd988" + }, + "verify/traces/as-probes8-turn15-turn16.jsonl.gz": { + "mode": 420, + "sha256": "024bb0663b167eb364c8e138bae0bf10403860c195bd593cb56f60281060c4e8" + }, + "verify/traces/b2-final-menu.png": { + "mode": 420, + "sha256": "5a95fe260c9cb13dad5fc6f00460819107db93f4ac89f455077ad056600f83fd" + }, + "verify/traces/b2-shim.log": { + "mode": 420, + "sha256": "c31cf01af3659b7fdf008ff44f88f67ee4016dcfb30fc4a72b4d72ea0da8e404" + }, + "verify/traces/b2-techfx-compare.jsonl": { + "mode": 420, + "sha256": "f0202f45b276db6744c80768f12695153812bc882de688cf64705ed6a52f243c" + }, + "verify/traces/b2-techfx-golden.jsonl": { + "mode": 420, + "sha256": "43639e75bd9d510ed270c9cfcbb0c9665f5a6546f748ba81eba3f015e7ca233c" + }, + "verify/traces/cr-N.jsonl.gz": { + "mode": 420, + "sha256": "0071ae72a142533ffb91f9f04caa6704102c826761ff5ae24b57a1c3e9652e46" + }, + "verify/traces/cr-R0.jsonl.gz": { + "mode": 420, + "sha256": "6228c88cebb4dad2158e5586ecbcf71d1160116f2f4a2a8bc020658da8d7d706" + }, + "verify/traces/cr-R1.jsonl.gz": { + "mode": 420, + "sha256": "73f5f15b3343381cf3f973caaf74588fd3d0b6759de1ddcf9e12b9b3ebf29713" + }, + "verify/traces/eventlive-b3-t1-5.jsonl.gz": { + "mode": 420, + "sha256": "9cb344f1d8a3beb4bc1a2bf16baed6c38667443ead9f66fa0f53474a683d263c" + }, + "verify/traces/eventlive-b3-t1.jsonl": { + "mode": 420, + "sha256": "2d9962de9a7ea7fb28b33b72209706b4a27673096f71c8789f9f10ac465f387b" + }, + "verify/traces/eventlive-b3-zuul.jsonl.gz": { + "mode": 420, + "sha256": "0ee09bb884799e72c6a617ab02e741a7ba791ff458af439b9947a87b368a64de" + }, + "verify/traces/h-probes-human-perturbed-t3-5.jsonl.gz": { + "mode": 420, + "sha256": "2567f8ccb6276a4d647c4f4b88d14f7ae63aa4d1797f672a9bd9c7c86e4d7473" + }, + "verify/traces/h-probes-human-t5.jsonl.gz": { + "mode": 420, + "sha256": "92964779111573dc72e6a1845217cd7d709c9900594a106b3de7b59c2b7a88a7" + }, + "verify/traces/h-probes-zuul-t24-25.jsonl.gz": { + "mode": 420, + "sha256": "0966294af27b49159b1e72e683abc0b59fd52cc9bfd9f517130d30cedf7efa29" + }, + "verify/traces/l3-probe-turn8-turn15.jsonl": { + "mode": 420, + "sha256": "d1b5436f917bb4f6f74bd7b1967dbd0626db2c3a5cbc1d67684ef9f010826676" + }, + "verify/traces/m1-compare.jsonl": { + "mode": 420, + "sha256": "f0f6fd15bc73008e43e20d6ed4c4dd91fb2ec8b40935bfd3cc000d8a84ea6731" + }, + "verify/traces/m1-trace-golden.jsonl": { + "mode": 420, + "sha256": "4a4ddc031fb26a8f8b10dace297c73670f53dcbd250a9be94c0e31c9bb44dcc5" + }, + "verify/traces/mf-after-compare.jsonl": { + "mode": 420, + "sha256": "2a894892977176df1a9d6c8199b0f81b48c7bcac15d2c0e7786441fc6125226e" + }, + "verify/traces/mf-before-compare.jsonl": { + "mode": 420, + "sha256": "ee005097ebaac9f30c63f1e400fdf19a47e88010c71d215885234986d122410e" + }, + "verify/traces/output-ref-turn2.jsonl.gz": { + "mode": 420, + "sha256": "7af583350545501414eda38439f2d0fa39149342d9001d2926e2a4e4fdd5cdca" + }, + "verify/traces/output-zuul-and-ref.jsonl.gz": { + "mode": 420, + "sha256": "d581cb50f07766911fa59fa1df1524b33a9df6eec06226966efd5f54f09b6fb5" + }, + "verify/traces/recap-b1-compare.jsonl.gz": { + "mode": 420, + "sha256": "0ce1c92028a8cd10a38d7cca72f90c37ccbd844f24a1950bf0eb6e75739b44e2" + }, + "verify/traces/recap-b3-compare.jsonl": { + "mode": 420, + "sha256": "6ed3bcd99b4657d614bf63cc0fc2dfff650f4cb14e51086ea98c21bccbcf5fa8" + }, + "verify/traces/recap-golden-trace.jsonl.gz": { + "mode": 420, + "sha256": "d62431e9461ffb1b66adc16a39542b86fa8e0cf54a0ed446a8781c4d75a6c3bb" + }, + "verify/traces/recap-misc-compare.jsonl": { + "mode": 420, + "sha256": "d7c4446d45a9cab2af3da4a0d76f7a42c245da1f59db96fddf31d8b1f2c436ed" + }, + "verify/traces/tailrng-drawsites.jsonl.gz": { + "mode": 420, + "sha256": "5c1806e2b1452226674013119e3b220f3cf42be2ad8b0ed998050ad65d1f8415" + }, + "verify/traces/tailrng-refturn2.jsonl.gz": { + "mode": 420, + "sha256": "c33c6cafe015bda6acf5ca32b0c9595e1611f4ac82ecd3adaff8315c7bd3e560" + }, + "verify/traces/tailrng-zuul-long.jsonl.gz": { + "mode": 420, + "sha256": "213e7dd8a6809dd93190f41c87218e802f1fbe77d44d598f287c2a19544063af" + }, + "verify/traces/tailrng-zuul-noderoute.jsonl.gz": { + "mode": 420, + "sha256": "9476ee3b9b397ca9e20bc92eb887c109a075487cdd750746af051797e8838115" + }, + "verify/traces/unlock-b3-t1-5.jsonl.gz": { + "mode": 420, + "sha256": "f6e27a60bf6c74eb98d8bec50146fe1996642285ca008c6a70c3cb148c6ba54c" + }, + "verify/traces/unlock-b3-t1.jsonl.gz": { + "mode": 420, + "sha256": "bfa53bba3e59d17dd330e38ef52fd04fd92f05f3ad357fefd77388d083b49a05" + }, + "verify/traces/unlock-b3-zuul.jsonl.gz": { + "mode": 420, + "sha256": "d94c635105a75a68cb811a3881faf371678c075d240998f48fcf348b8459063f" + } + }, + "manifest_sha256": "b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4", + "path": "/tmp/opencode/sots-final-research-re" + } + }, + "ended_at": "2026-09-10T05:22:31+00:00", + "error": "launcher process terminated by external 120-second shell timeout; no child process or end checkpoint survived", + "started_at": "2026-09-10T05:07:56.630324+00:00", + "status": "incomplete", + "worktrees": { + "engine": "/tmp/opencode/sots-final-research-engine", + "re": "/tmp/opencode/sots-final-research-re" + } +} diff --git a/campaign/runtime/runs/run-81e5e65ab544c63ed8984365.jsonl b/campaign/runtime/runs/run-81e5e65ab544c63ed8984365.jsonl new file mode 100644 index 0000000..e5a064a --- /dev/null +++ b/campaign/runtime/runs/run-81e5e65ab544c63ed8984365.jsonl @@ -0,0 +1,60 @@ +{"type":"step_start","timestamp":1789016881545,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"id":"prt_089b73984001AFgaMy1p26zdgX","messageID":"msg_089b72d010018rGqrA2smUCXMr","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","snapshot":"07708e4f201b66c93d82dd7ff24ad0f737ee9048","type":"step-start"}} +{"type":"tool_use","timestamp":1789016888257,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"todowrite","callID":"call_jyGk6OQmZrTckg2aWBQ2xvYY","state":{"status":"completed","input":{"todos":[{"content":"Read campaign authority, contract, checkpoint, policy, and open surprises; verify identities","status":"in_progress","priority":"high"},{"content":"Define falsifiers, branch exposures, distinct states, and verification plan in owned artifact","status":"pending","priority":"high"},{"content":"Reproduce handoff evidence and independently inspect actual state/RNG","status":"pending","priority":"high"},{"content":"Run a held-out challenge or negative control and assess acceptance scope","status":"pending","priority":"high"},{"content":"Write verifier artifact and mandatory canonical end-of-quantum checkpoint","status":"pending","priority":"high"}]},"output":"[\n {\n \"content\": \"Read campaign authority, contract, checkpoint, policy, and open surprises; verify identities\",\n \"status\": \"in_progress\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Define falsifiers, branch exposures, distinct states, and verification plan in owned artifact\",\n \"status\": \"pending\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Reproduce handoff evidence and independently inspect actual state/RNG\",\n \"status\": \"pending\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Run a held-out challenge or negative control and assess acceptance scope\",\n \"status\": \"pending\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Write verifier artifact and mandatory canonical end-of-quantum checkpoint\",\n \"status\": \"pending\",\n \"priority\": \"high\"\n }\n]","metadata":{"todos":[{"content":"Read campaign authority, contract, checkpoint, policy, and open surprises; verify identities","status":"in_progress","priority":"high"},{"content":"Define falsifiers, branch exposures, distinct states, and verification plan in owned artifact","status":"pending","priority":"high"},{"content":"Reproduce handoff evidence and independently inspect actual state/RNG","status":"pending","priority":"high"},{"content":"Run a held-out challenge or negative control and assess acceptance scope","status":"pending","priority":"high"},{"content":"Write verifier artifact and mandatory canonical end-of-quantum checkpoint","status":"pending","priority":"high"}],"truncated":false},"title":"5 todos","time":{"start":1789016888250,"end":1789016888255}},"metadata":{"openai":{"itemId":"fc_076fcee3c65bfcdf016aa23b3441a087d19f2f664482812f88"}},"id":"prt_089b74462001mJ3c28jCE0Y7L2","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b72d010018rGqrA2smUCXMr"}} +{"type":"step_finish","timestamp":1789016888350,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"id":"prt_089b754180017ZAuF9tPqBpsgL","reason":"tool-calls","snapshot":"3c51b588bc34b8223b3322e085a77ec64ae7e62a","messageID":"msg_089b72d010018rGqrA2smUCXMr","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","type":"step-finish","tokens":{"total":6018,"input":5812,"output":146,"reasoning":60,"cache":{"write":0,"read":0}},"cost":0}} +{"type":"step_start","timestamp":1789016898260,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"id":"prt_089b77ad0001WTYPWSJG1c8ayP","messageID":"msg_089b7544400194K61siY3ywSKn","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","snapshot":"17b8fc4762b2b1b0beec81280ce74fcc8d0256e7","type":"step-start"}} +{"type":"tool_use","timestamp":1789016898340,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_sBdmlvEwKqirxkjxhQMNuuXD","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/README.md"},"output":"/home/alex/sots-re/campaign/README.md\nfile\n\n1: # Canonical campaign controls\n2: \n3: `sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\n4: surprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\n5: projections. Historical evidence is not current acceptance. No automatic commits or lab operations.\n6: \n7: Framework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\n8: see [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\n9: Active work is reverse engineering. Change tooling only to unblock a named RE experiment.\n10: \n11: ## Contract format\n12: \n13: `contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\n14: The standard-library validator implements the schema's used subset. A populated example is\n15: [contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\n16: \n17: Required fields:\n18: \n19: | Field | Structure |\n20: |---|---|\n21: | `id`, `title`, `status` | Slug, short title, lifecycle state |\n22: | `owner` | `{ \"name\": \"worker-identity\", \"role\": \"implementer\" }` |\n23: | `baseline` | `{ \"engine\": {\"path\":\"/absolute/canonical/engine\",\"commit\":\"full-commit-id\"}, \"re\": {\"path\":\"/absolute/canonical/re\",\"commit\":\"full-commit-id\"} }` |\n24: | `scope`, `inputs`, `effects` | Arrays of explicit nonempty strings; include full write set and runtime inputs |\n25: | `original_dependencies` | String array, including original-assisted portions and unavailable inputs |\n26: | `dependencies` | Array of other contract IDs; all must be accepted before ready/implementing |\n27: | `acceptance` | Array of `{ \"id\": \"unique-criterion\", \"axis\": \"validation-scope\", \"criterion\": \"executable requirement\" }` |\n28: | `predictions`, `stop_conditions` | String arrays of predictions and conditions that halt work |\n29: | `checkpoint` | `null` or `campaign/runtime/checkpoints/.json` |\n30: \n31: Optional `evidence` is an array of\n32: `{id,axis,path,sha256,source,integrated,source_binding,binaries,inputs,outcomes}`.\n33: `path` is an existing canonical RE-relative artifact; `sha256` hashes its actual bytes; `source`\n34: equals the contract's complete baseline object. Store understanding,\n35: implementation, original dependencies, and validation scope as separate acceptance/evidence axes.\n36: There is no generic `verified` scalar. Baseline commit IDs describe starting repositories;\n37: dirty source identity is machine-bound by `source_binding`, never inferred from those commits.\n38: Criteria need distinct states, branch exposure, positive execution, complete writes/elements,\n39: allocations/IDs/events/RNG/runtime inputs, synthetic and original-game differentials as applicable.\n40: The CLI checks package identity and declared axes; the independent reviewer evaluates the actual\n41: criteria, gate outcomes, full manifests and integrated reproduction. A passing measurement alone\n42: does not establish acceptance.\n43: \n44: ### Source-bound evidence interface (R4)\n45: \n46: `source_binding` is `{engine:{path,commit,sha256},re:{path,commit,sha256}}`. Generate it with:\n47: \n48: ```sh\n49: python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-replacement --engine-worktree /absolute/candidate-engine --re-worktree /absolute/candidate-re\n50: ```\n51: \n52: Omit both worktree arguments to bind the canonical integrated trees. Paths must be Git worktree\n53: roots in the respective baseline repositories. `commit` is the actual current HEAD; `sha256`\n54: is the deterministic digest of the actual file manifest, including dirty/untracked nonignored\n55: files, deleted tracked paths (`null`), file bytes and Unix modes. Symlinks/submodules fail closed.\n56: The fixed manifest policy uses `git ls-files --cached --others --exclude-standard`; ignored\n57: untracked build/output files are not source. Python cache directories are excluded. In RE only,\n58: `verify/results/` and `campaign/` are excluded **except** `campaign/models.json`,\n59: `campaign/contract.schema.json`, and `campaign/agents/**`. These exclusions prevent mutable\n60: contracts/checkpoints/evidence/projections from hashing themselves. Relevant RE tools, tests,\n61: generated facts and guides remain bound. Any consumed item outside that source inventory must\n62: appear among immutable input/binary artifacts. The independent reviewer checks inventory adequacy.\n63: \n64: `binaries` and `inputs` are nonempty arrays of `{path,sha256}` artifact references; for tooling\n65: contracts, bind the executable scripts/interpreter identity package and fixture input package.\n66: `outcomes` exactly covers the acceptance criterion IDs for that evidence axis, with entries\n67: `{criterion,status,artifact:{path,sha256}}`; promotion requires `status: \"pass\"`. Outcome artifacts\n68: contain positive execution, branch/state exposures, reproduction recipe and required effect/input\n69: accounting. The CLI checks identities, hashes and declared outcomes, **not arbitrary criterion\n70: semantics**. The independent verifier must reproduce and challenge those claims.\n71: \n72: For example, an outcome for the bootstrap contract is:\n73: \n74: ```json\n75: {\"criterion\":\"controls-negative-paths\",\"status\":\"pass\",\"artifact\":{\"path\":\"verify/results/controls/result.json\",\"sha256\":\"\"}}\n76: ```\n77: \n78: Capture bindings when producing evidence; do not attach a fresh source hash to old measurements.\n79: Every evidence/verdict/promotion check rehashes referenced sources and artifacts. Same-HEAD byte\n80: changes reject old evidence and verdicts. Integrated records require canonical paths, lead in\n81: integration state, and one identical binding across **all** final integrated evidence. A lead's\n82: `integrated` boolean cannot substitute for this check. Verdicts bind the full evidence array and\n83: the source-binding array; old verdicts lacking these identities must be reproduced.\n84: \n85: This contract wrapper is separate from gate measurement schema **`sots-gate/1`**, whose `source`\n86: still has `engine`/`re`. Reference its immutable manifest/binary/input package; do not rename its\n87: fields to match contract `source`. Reporter output is measured evidence, with `--require-match`\n88: for required equality, and gains acceptance only through independent contract/integration gates.\n89: \n90: ## State and transactions\n91: \n92: Every command requires `--state-root /absolute/canonical/sots-re` (the repository, not `campaign/`).\n93: No sibling inference. Control records stay below canonical `campaign/runtime/`; contracts remain\n94: in `campaign/contracts/`. Immutable hashed artifacts may be referenced anywhere inside canonical\n95: RE, including existing `verify/` corpora, without copying them. Absolute/traversing artifact paths,\n96: outside symlinks, Git internals and named secret/private-key locations are rejected; aliases are\n97: checked after resolution too. Never reference secrets or commit owner-supplied binaries/assets.\n98: JSON writes are atomic and fsynced; a canonical `flock` serializes\n99: CLI mutations, WIP decisions, and resource acquisition. Do not hand-edit active state concurrently\n100: with commands. Interrupted multi-file operations retain blocking records and require inspection.\n101: \n102: Runtime APIs (JSON files; no server):\n103: \n104: - `runtime/checkpoints/*.json`: `sots-checkpoint/1`, contract, actor/role/model/session, timestamp,\n105: contract `basis` digest, bounded summary (6000 characters), up to 32 `{path,sha256}` artifacts,\n106: and one `next_action` (2000 characters). Include observations versus decisions, source identities,\n107: tests, blockers, resources/access/cleanup, exact next action in the summary/artifacts.\n108: Do not attach the checkpoint's own contract as an artifact: saving the pointer changes that\n109: file. Its task metadata is already covered by `basis`; the CLI rejects this self-reference.\n110: - `runtime/surprises/*.json`: `sots-surprise/1`, id, contract, `status: open|resolved`, summary,\n111: discriminating probe, actor/model/session provenance where applicable, optional decision ID.\n112: - `runtime/decisions/*.json`: `sots-decision/1`, Astra resolution, explanation/probe, invalidated\n113: evidence and checkpoint; prior verdict is marked invalidated. Resolution returns needs-revision\n114: only when all surprises are closed. Re-probe and rebuild evidence; resolution is not acceptance.\n115: - `runtime/verdicts/.json`: independent verifier actor/session/model, pass/fail,\n116: explanation, contract basis, complete evidence digest and source-bindings digest.\n117: - `runtime/transitions/*.json`: actor/model, previous/next lifecycle state, timestamp.\n118: - `runtime/leases/.json`: owner, random token, held/released, acquisition/release provenance.\n119: - `runtime/runs/run-*.json`, `.jsonl`, `.stderr.log`: requested model/config, command, worktree\n120: manifests before/after, expanded prompt hash, effective configuration hashes, canonical config\n121: file hashes, actual events/session/model when emitted, completion/checkpoint status. Effective\n122: provider config is hashed rather than persisted because it can contain credentials.\n123: `active-.json` reserves the contract. Interrupted running reservations never auto-expire.\n124: \n125: Lifecycle: `proposed -> ready -> implementing -> verification -> integration -> accepted`.\n126: Blocked and needs-revision edges support repairs; no skipping stages. Ready requires scope,\n127: inputs, acceptance, stop conditions, valid pinned baseline and accepted dependencies. Implementing\n128: is atomically capped at two concurrent contracts; lead schedules only one pilot before enabling\n129: two independent slices. Verification requires fresh checkpoint/artifacts after implementation start.\n130: Integration requires lead plus independent passing verifier bound to current source/evidence.\n131: Accepted requires every declared axis in integrated evidence, passing independent verdict over\n132: that final package, and no open surprises. Adding integrated evidence changes the evidence digest:\n133: the verifier must attest the integrated package again. Handoff/promotion/end checkpoints must be\n134: within 15 minutes; recovery start has no age limit.\n135: \n136: Role/model registry: lead/architecture-review/analyst/implementer/verifier/lab =\n137: `openai/gpt-5.6-sol`; resolver = `openai/gpt-6-astra`.\n138: CLI identity fields are **claims, not authenticated model authority**. The runner requests the\n139: registry model explicitly and records emitted provenance. Editable JSON, agent permissions and\n140: shell-accessible tooling are not a security boundary. No silent routing fallback.\n141: \n142: ## Commands\n143: \n144: Run from either repository using the canonical tool path when necessary. Examples:\n145: \n146: ```sh\n147: python3 tools/campaign.py --state-root /home/alex/sots-re validate\n148: python3 tools/campaign.py --state-root /home/alex/sots-re list\n149: python3 tools/campaign.py --state-root /home/alex/sots-re status research-replacement\n150: python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint controls-bootstrap --actor controls-architect --role architecture-review --model openai/gpt-6-astra --session rollout-controls --summary 'Source identities, observations, decisions, tests and blockers are in the attached checkpoint.' --artifact campaign/rollout/controls-worker-state.md --next-action 'Run the independent controls review.'\n151: python3 tools/campaign.py --state-root /home/alex/sots-re transition controls-bootstrap ready --actor controls-architect --role architecture-review --model openai/gpt-6-astra\n152: ```\n153: \n154: `surprise CONTRACT --summary TEXT --probe TEXT` blocks immediately. `resolve SURPRISE_ID\n155: --explanation TEXT --probe TEXT` requires claimed Astra lead/resolver. Both also require\n156: `--actor NAME --role ROLE --model MODEL`. `evidence CONTRACT --record campaign/path.json`\n157: uses the same identity flags; record format is the evidence object above. Integrated records\n158: require lead and integration state. `verdict CONTRACT --session SESSION --verdict pass|fail\n159: --explanation TEXT` requires verifier identity flags and independent actor/session.\n160: \n161: ```sh\n162: python3 tools/campaign.py --state-root /home/alex/sots-re lease acquire windows-vm --actor lab-one --role lab --model openai/gpt-5.5\n163: python3 tools/campaign.py --state-root /home/alex/sots-re lease show windows-vm\n164: python3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lab-one --role lab --model openai/gpt-5.5 --token TOKEN_FROM_ACQUIRE\n165: python3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lead --role lead --model openai/gpt-6-astra --lead-release --reason 'Confirmed prior operator stopped; access and cleanup checked.'\n166: ```\n167: \n168: No stale lease stealing. Explicit lead release requires an explanation and lab preconditions,\n169: side effects, cleanup, and access verification in the operator checkpoint. Treat lease tokens\n170: as local owner capabilities, not secrets to put in a board/dashboard.\n171: \n172: ## Fresh bounded launches\n173: \n174: Prepare **two actual linked worktrees**, each distinct from its canonical source repository,\n175: at the contract's full baseline commit. No auto commits/worktree creation. Launch uses explicit\n176: canonical `OPENCODE_CONFIG`, checks matching repo-local agent/model/40 steps, and sets the final\n177: environment overlay to bind requested role/model/steps. Other inherited config overrides are\n178: cleared. `opencode models` must list the exact requested model even for dry runs.\n179: \n180: ```sh\n181: python3 tools/run_agent.py --state-root /home/alex/sots-re --role implementer --actor worker-one --contract slice-one --engine-worktree /home/alex/worktrees/slice-one-engine --re-worktree /home/alex/worktrees/slice-one-re --cwd engine --dry-run\n182: ```\n183: \n184: Remove `--dry-run` to execute. Normal worker launch requires a valid durable checkpoint, matching\n185: owner/role/status, no open surprises, baseline HEADs and canonical Git common-directory identity.\n186: Recovery checks checkpoint identity/basis and artifact hashes regardless of age, rechecks any\n187: source-bound evidence, and validates paired Git worktree/baseline identity. Missing ordinary-worker\n188: state still blocks. Bootstrap lead/architecture-review can start without a checkpoint; they still\n189: need paired worktrees. Astra lead/resolver may launch a blocked contract with open surprises and\n190: without a worker checkpoint in **resolution-only** scope: read evidence and write decisions/state,\n191: no implementation. Its prompt and permission overlay carry that limit, and worktree source changes\n192: fail completion. Ordinary affected workers stay blocked. Other Astra architecture actors receive\n193: explicit architecture authority within their owned scope. Each run is a fresh\n194: `opencode run --format json --model ... --agent ...`; no resume/continue option is used. The prompt\n195: supplies the run ID to use as checkpoint `--session`; actual OpenCode session IDs are captured\n196: separately when emitted. On exit, a checkpoint after start matching actor/role/model/run ID is\n197: mandatory or the run is marked incomplete. Completion additionally requires a zero exit, no\n198: `type:error`, a successful `step_finish` with `part.reason: \"stop\"`, one nonempty actual session ID,\n199: and consistent explicitly emitted model IDs. Text/tool-call/length events alone cannot complete a\n200: run. Missing model emission is recorded `observed_model_status: \"unavailable\"`, never invented.\n201: \n202: The runner checks the exact Git baseline again under reservation lock, rejects intervening contract\n203: changes, and checks canonical model/prompt/config files and effective configuration for drift at\n204: completion. Expanded role prompt/model/steps are frozen in the last-layer environment overlay.\n205: `opencode debug config` runs in the actual launch cwd with the actual environment before execution\n206: and again at completion. Permissions explicitly allow read/search, ordinary worker shell commands,\n207: and external-directory access to the assigned paired trees plus canonical RE; role-specific edit\n208: denies survive. Task delegation and interactive questions are denied. No `--auto` is required.\n209: Noninteractive command/environment tests and a live loader check cover this overlay; an actual\n210: normal worker launch smoke is a separate lead integration check. Permissions and before/after\n211: checks are operational guards, not a sandbox or continuous filesystem audit.\n212: Compaction is a backstop; no token threshold or machine-enforced 20-tool-call claim.\n213: \n214: ## Local verification\n215: \n216: ```sh\n217: python3 -m unittest discover -s verify/campaign -p 'test_*.py' -v\n218: python3 tools/campaign.py --state-root /home/alex/sots-re validate\n219: ```\n220: \n221: Tests create commits only in disposable fixture repositories, linked worktrees and fake OpenCode processes; they do\n222: not launch agents or touch the lab. Historical rollout artifacts retain the scope and source identity\n223: of their runs; consult the accepted contract and current evidence, not an old handoff's status prose.\n\n(End of file - total 223 lines)\n","metadata":{"preview":"# Canonical campaign controls\n\n`sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\nsurprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\nprojections. Historical evidence is not current acceptance. No automatic commits or lab operations.\n\nFramework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\nsee [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\nActive work is reverse engineering. Change tooling only to unblock a named RE experiment.\n\n## Contract format\n\n`contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\nThe standard-library validator implements the schema's used subset. A populated example is\n[contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\n\nRequired fields:\n\n| Field | Structure |\n|---|---|","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/README.md","text":"# Canonical campaign controls\n\n`sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\nsurprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\nprojections. Historical evidence is not current acceptance. No automatic commits or lab operations.\n\nFramework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\nsee [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\nActive work is reverse engineering. Change tooling only to unblock a named RE experiment.\n\n## Contract format\n\n`contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\nThe standard-library validator implements the schema's used subset. A populated example is\n[contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\n\nRequired fields:\n\n| Field | Structure |\n|---|---|\n| `id`, `title`, `status` | Slug, short title, lifecycle state |\n| `owner` | `{ \"name\": \"worker-identity\", \"role\": \"implementer\" }` |\n| `baseline` | `{ \"engine\": {\"path\":\"/absolute/canonical/engine\",\"commit\":\"full-commit-id\"}, \"re\": {\"path\":\"/absolute/canonical/re\",\"commit\":\"full-commit-id\"} }` |\n| `scope`, `inputs`, `effects` | Arrays of explicit nonempty strings; include full write set and runtime inputs |\n| `original_dependencies` | String array, including original-assisted portions and unavailable inputs |\n| `dependencies` | Array of other contract IDs; all must be accepted before ready/implementing |\n| `acceptance` | Array of `{ \"id\": \"unique-criterion\", \"axis\": \"validation-scope\", \"criterion\": \"executable requirement\" }` |\n| `predictions`, `stop_conditions` | String arrays of predictions and conditions that halt work |\n| `checkpoint` | `null` or `campaign/runtime/checkpoints/.json` |\n\nOptional `evidence` is an array of\n`{id,axis,path,sha256,source,integrated,source_binding,binaries,inputs,outcomes}`.\n`path` is an existing canonical RE-relative artifact; `sha256` hashes its actual bytes; `source`\nequals the contract's complete baseline object. Store understanding,\nimplementation, original dependencies, and validation scope as separate acceptance/evidence axes.\nThere is no generic `verified` scalar. Baseline commit IDs describe starting repositories;\ndirty source identity is machine-bound by `source_binding`, never inferred from those commits.\nCriteria need distinct states, branch exposure, positive execution, complete writes/elements,\nallocations/IDs/events/RNG/runtime inputs, synthetic and original-game differentials as applicable.\nThe CLI checks package identity and declared axes; the independent reviewer evaluates the actual\ncriteria, gate outcomes, full manifests and integrated reproduction. A passing measurement alone\ndoes not establish acceptance.\n\n### Source-bound evidence interface (R4)\n\n`source_binding` is `{engine:{path,commit,sha256},re:{path,commit,sha256}}`. Generate it with:\n\n```sh\npython3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-replacement --engine-worktree /absolute/candidate-engine --re-worktree /absolute/candidate-re\n```\n\nOmit both worktree arguments to bind the canonical integrated trees. Paths must be Git worktree\nroots in the respective baseline repositories. `commit` is the actual current HEAD; `sha256`\nis the deterministic digest of the actual file manifest, including dirty/untracked nonignored\nfiles, deleted tracked paths (`null`), file bytes and Unix modes. Symlinks/submodules fail closed.\nThe fixed manifest policy uses `git ls-files --cached --others --exclude-standard`; ignored\nuntracked build/output files are not source. Python cache directories are excluded. In RE only,\n`verify/results/` and `campaign/` are excluded **except** `campaign/models.json`,\n`campaign/contract.schema.json`, and `campaign/agents/**`. These exclusions prevent mutable\ncontracts/checkpoints/evidence/projections from hashing themselves. Relevant RE tools, tests,\ngenerated facts and guides remain bound. Any consumed item outside that source inventory must\nappear among immutable input/binary artifacts. The independent reviewer checks inventory adequacy.\n\n`binaries` and `inputs` are nonempty arrays of `{path,sha256}` artifact references; for tooling\ncontracts, bind the executable scripts/interpreter identity package and fixture input package.\n`outcomes` exactly covers the acceptance criterion IDs for that evidence axis, with entries\n`{criterion,status,artifact:{path,sha256}}`; promotion requires `status: \"pass\"`. Outcome artifacts\ncontain positive execution, branch/state exposures, reproduction recipe and required effect/input\naccounting. The CLI checks identities, hashes and declared outcomes, **not arbitrary criterion\nsemantics**. The independent verifier must reproduce and challenge those claims.\n\nFor example, an outcome for the bootstrap contract is:\n\n```json\n{\"criterion\":\"controls-negative-paths\",\"status\":\"pass\",\"artifact\":{\"path\":\"verify/results/controls/result.json\",\"sha256\":\"\"}}\n```\n\nCapture bindings when producing evidence; do not attach a fresh source hash to old measurements.\nEvery evidence/verdict/promotion check rehashes referenced sources and artifacts. Same-HEAD byte\nchanges reject old evidence and verdicts. Integrated records require canonical paths, lead in\nintegration state, and one identical binding across **all** final integrated evidence. A lead's\n`integrated` boolean cannot substitute for this check. Verdicts bind the full evidence array and\nthe source-binding array; old verdicts lacking these identities must be reproduced.\n\nThis contract wrapper is separate from gate measurement schema **`sots-gate/1`**, whose `source`\nstill has `engine`/`re`. Reference its immutable manifest/binary/input package; do not rename its\nfields to match contract `source`. Reporter output is measured evidence, with `--require-match`\nfor required equality, and gains acceptance only through independent contract/integration gates.\n\n## State and transactions\n\nEvery command requires `--state-root /absolute/canonical/sots-re` (the repository, not `campaign/`).\nNo sibling inference. Control records stay below canonical `campaign/runtime/`; contracts remain\nin `campaign/contracts/`. Immutable hashed artifacts may be referenced anywhere inside canonical\nRE, including existing `verify/` corpora, without copying them. Absolute/traversing artifact paths,\noutside symlinks, Git internals and named secret/private-key locations are rejected; aliases are\nchecked after resolution too. Never reference secrets or commit owner-supplied binaries/assets.\nJSON writes are atomic and fsynced; a canonical `flock` serializes\nCLI mutations, WIP decisions, and resource acquisition. Do not hand-edit active state concurrently\nwith commands. Interrupted multi-file operations retain blocking records and require inspection.\n\nRuntime APIs (JSON files; no server):\n\n- `runtime/checkpoints/*.json`: `sots-checkpoint/1`, contract, actor/role/model/session, timestamp,\n contract `basis` digest, bounded summary (6000 characters), up to 32 `{path,sha256}` artifacts,\n and one `next_action` (2000 characters). Include observations versus decisions, source identities,\n tests, blockers, resources/access/cleanup, exact next action in the summary/artifacts.\n Do not attach the checkpoint's own contract as an artifact: saving the pointer changes that\n file. Its task metadata is already covered by `basis`; the CLI rejects this self-reference.\n- `runtime/surprises/*.json`: `sots-surprise/1`, id, contract, `status: open|resolved`, summary,\n discriminating probe, actor/model/session provenance where applicable, optional decision ID.\n- `runtime/decisions/*.json`: `sots-decision/1`, Astra resolution, explanation/probe, invalidated\n evidence and checkpoint; prior verdict is marked invalidated. Resolution returns needs-revision\n only when all surprises are closed. Re-probe and rebuild evidence; resolution is not acceptance.\n- `runtime/verdicts/.json`: independent verifier actor/session/model, pass/fail,\n explanation, contract basis, complete evidence digest and source-bindings digest.\n- `runtime/transitions/*.json`: actor/model, previous/next lifecycle state, timestamp.\n- `runtime/leases/.json`: owner, random token, held/released, acquisition/release provenance.\n- `runtime/runs/run-*.json`, `.jsonl`, `.stderr.log`: requested model/config, command, worktree\n manifests before/after, expanded prompt hash, effective configuration hashes, canonical config\n file hashes, actual events/session/model when emitted, completion/checkpoint status. Effective\n provider config is hashed rather than persisted because it can contain credentials.\n `active-.json` reserves the contract. Interrupted running reservations never auto-expire.\n\nLifecycle: `proposed -> ready -> implementing -> verification -> integration -> accepted`.\nBlocked and needs-revision edges support repairs; no skipping stages. Ready requires scope,\ninputs, acceptance, stop conditions, valid pinned baseline and accepted dependencies. Implementing\nis atomically capped at two concurrent contracts; lead schedules only one pilot before enabling\ntwo independent slices. Verification requires fresh checkpoint/artifacts after implementation start.\nIntegration requires lead plus independent passing verifier bound to current source/evidence.\nAccepted requires every declared axis in integrated evidence, passing independent verdict over\nthat final package, and no open surprises. Adding integrated evidence changes the evidence digest:\nthe verifier must attest the integrated package again. Handoff/promotion/end checkpoints must be\nwithin 15 minutes; recovery start has no age limit.\n\nRole/model registry: lead/architecture-review/analyst/implementer/verifier/lab =\n`openai/gpt-5.6-sol`; resolver = `openai/gpt-6-astra`.\nCLI identity fields are **claims, not authenticated model authority**. The runner requests the\nregistry model explicitly and records emitted provenance. Editable JSON, agent permissions and\nshell-accessible tooling are not a security boundary. No silent routing fallback.\n\n## Commands\n\nRun from either repository using the canonical tool path when necessary. Examples:\n\n```sh\npython3 tools/campaign.py --state-root /home/alex/sots-re validate\npython3 tools/campaign.py --state-root /home/alex/sots-re list\npython3 tools/campaign.py --state-root /home/alex/sots-re status research-replacement\npython3 tools/campaign.py --state-root /home/alex/sots-re checkpoint controls-bootstrap --actor controls-architect --role architecture-review --model openai/gpt-6-astra --session rollout-controls --summary 'Source identities, observations, decisions, tests and blockers are in the attached checkpoint.' --artifact campaign/rollout/controls-worker-state.md --next-action 'Run the independent controls review.'\npython3 tools/campaign.py --state-root /home/alex/sots-re transition controls-bootstrap ready --actor controls-architect --role architecture-review --model openai/gpt-6-astra\n```\n\n`surprise CONTRACT --summary TEXT --probe TEXT` blocks immediately. `resolve SURPRISE_ID\n--explanation TEXT --probe TEXT` requires claimed Astra lead/resolver. Both also require\n`--actor NAME --role ROLE --model MODEL`. `evidence CONTRACT --record campaign/path.json`\nuses the same identity flags; record format is the evidence object above. Integrated records\nrequire lead and integration state. `verdict CONTRACT --session SESSION --verdict pass|fail\n--explanation TEXT` requires verifier identity flags and independent actor/session.\n\n```sh\npython3 tools/campaign.py --state-root /home/alex/sots-re lease acquire windows-vm --actor lab-one --role lab --model openai/gpt-5.5\npython3 tools/campaign.py --state-root /home/alex/sots-re lease show windows-vm\npython3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lab-one --role lab --model openai/gpt-5.5 --token TOKEN_FROM_ACQUIRE\npython3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lead --role lead --model openai/gpt-6-astra --lead-release --reason 'Confirmed prior operator stopped; access and cleanup checked.'\n```\n\nNo stale lease stealing. Explicit lead release requires an explanation and lab preconditions,\nside effects, cleanup, and access verification in the operator checkpoint. Treat lease tokens\nas local owner capabilities, not secrets to put in a board/dashboard.\n\n## Fresh bounded launches\n\nPrepare **two actual linked worktrees**, each distinct from its canonical source repository,\nat the contract's full baseline commit. No auto commits/worktree creation. Launch uses explicit\ncanonical `OPENCODE_CONFIG`, checks matching repo-local agent/model/40 steps, and sets the final\nenvironment overlay to bind requested role/model/steps. Other inherited config overrides are\ncleared. `opencode models` must list the exact requested model even for dry runs.\n\n```sh\npython3 tools/run_agent.py --state-root /home/alex/sots-re --role implementer --actor worker-one --contract slice-one --engine-worktree /home/alex/worktrees/slice-one-engine --re-worktree /home/alex/worktrees/slice-one-re --cwd engine --dry-run\n```\n\nRemove `--dry-run` to execute. Normal worker launch requires a valid durable checkpoint, matching\nowner/role/status, no open surprises, baseline HEADs and canonical Git common-directory identity.\nRecovery checks checkpoint identity/basis and artifact hashes regardless of age, rechecks any\nsource-bound evidence, and validates paired Git worktree/baseline identity. Missing ordinary-worker\nstate still blocks. Bootstrap lead/architecture-review can start without a checkpoint; they still\nneed paired worktrees. Astra lead/resolver may launch a blocked contract with open surprises and\nwithout a worker checkpoint in **resolution-only** scope: read evidence and write decisions/state,\nno implementation. Its prompt and permission overlay carry that limit, and worktree source changes\nfail completion. Ordinary affected workers stay blocked. Other Astra architecture actors receive\nexplicit architecture authority within their owned scope. Each run is a fresh\n`opencode run --format json --model ... --agent ...`; no resume/continue option is used. The prompt\nsupplies the run ID to use as checkpoint `--session`; actual OpenCode session IDs are captured\nseparately when emitted. On exit, a checkpoint after start matching actor/role/model/run ID is\nmandatory or the run is marked incomplete. Completion additionally requires a zero exit, no\n`type:error`, a successful `step_finish` with `part.reason: \"stop\"`, one nonempty actual session ID,\nand consistent explicitly emitted model IDs. Text/tool-call/length events alone cannot complete a\nrun. Missing model emission is recorded `observed_model_status: \"unavailable\"`, never invented.\n\nThe runner checks the exact Git baseline again under reservation lock, rejects intervening contract\nchanges, and checks canonical model/prompt/config files and effective configuration for drift at\ncompletion. Expanded role prompt/model/steps are frozen in the last-layer environment overlay.\n`opencode debug config` runs in the actual launch cwd with the actual environment before execution\nand again at completion. Permissions explicitly allow read/search, ordinary worker shell commands,\nand external-directory access to the assigned paired trees plus canonical RE; role-specific edit\ndenies survive. Task delegation and interactive questions are denied. No `--auto` is required.\nNoninteractive command/environment tests and a live loader check cover this overlay; an actual\nnormal worker launch smoke is a separate lead integration check. Permissions and before/after\nchecks are operational guards, not a sandbox or continuous filesystem audit.\nCompaction is a backstop; no token threshold or machine-enforced 20-tool-call claim.\n\n## Local verification\n\n```sh\npython3 -m unittest discover -s verify/campaign -p 'test_*.py' -v\npython3 tools/campaign.py --state-root /home/alex/sots-re validate\n```\n\nTests create commits only in disposable fixture repositories, linked worktrees and fake OpenCode processes; they do\nnot launch agents or touch the lab. Historical rollout artifacts retain the scope and source identity\nof their runs; consult the accepted contract and current evidence, not an old handoff's status prose.","lineStart":1,"lineEnd":223,"totalLines":223,"truncated":false}},"title":"campaign/README.md","time":{"start":1789016898316,"end":1789016898337}},"metadata":{"openai":{"itemId":"fc_0417a93c5e3f18d7016aa23b4228c887d1b782bc1b49c89f58"}},"id":"prt_089b77ad30011M9xPUrF8AK37H","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7544400194K61siY3ywSKn"}} +{"type":"tool_use","timestamp":1789016898394,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_om8M7TPgTptnkGc3ZzSgqBAC","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/contracts/research-completion-abi.json"},"output":"/home/alex/sots-re/campaign/contracts/research-completion-abi.json\nfile\n\n1: {\n2: \"acceptance\": [\n3: {\n4: \"axis\": \"static-recovery\",\n5: \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n6: \"id\": \"ownership-recovered\"\n7: },\n8: {\n9: \"axis\": \"validation\",\n10: \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n11: \"id\": \"independent-cross-check\"\n12: }\n13: ],\n14: \"baseline\": {\n15: \"engine\": {\n16: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n17: \"path\": \"/home/alex/sots-engine\"\n18: },\n19: \"re\": {\n20: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n21: \"path\": \"/home/alex/sots-re\"\n22: }\n23: },\n24: \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\",\n25: \"dependencies\": [\n26: \"controls-bootstrap\"\n27: ],\n28: \"effects\": [\n29: \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n30: ],\n31: \"evidence\": [],\n32: \"id\": \"research-completion-abi\",\n33: \"inputs\": [\n34: \"Existing binary fingerprint/address contract and private RE findings\",\n35: \"Owner-supplied binary or live read-only ReVa endpoint\",\n36: \"Archived CR traces/saves for observed behavior\",\n37: \"Source-identical current engine/RE worktree snapshots\"\n38: ],\n39: \"original_dependencies\": [\n40: \"Original binary is the object of analysis, not a replacement dependency decision\"\n41: ],\n42: \"owner\": {\n43: \"name\": \"research-abi-analyst\",\n44: \"role\": \"analyst\"\n45: },\n46: \"predictions\": [\n47: \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n48: \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n49: ],\n50: \"scope\": [\n51: \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n52: \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n53: \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n54: \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n55: \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n56: ],\n57: \"status\": \"verification\",\n58: \"stop_conditions\": [\n59: \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n60: \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n61: \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n62: ],\n63: \"title\": \"RE: research completion record construction and allocator ABI\"\n64: }\n\n(End of file - total 64 lines)\n","metadata":{"preview":"{\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/contracts/research-completion-abi.json","text":"{\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"verification\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n}","lineStart":1,"lineEnd":64,"totalLines":64,"truncated":false}},"title":"campaign/contracts/research-completion-abi.json","time":{"start":1789016898382,"end":1789016898391}},"metadata":{"openai":{"itemId":"fc_0417a93c5e3f18d7016aa23b4228dc87d1b5bd83177f456bc2"}},"id":"prt_089b77b0e001kOIMadEewB6p70","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7544400194K61siY3ywSKn"}} +{"type":"tool_use","timestamp":1789016898527,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_ENoZIeGMnCEGm1dAgtfJP1pA","state":{"status":"completed","input":{"filePath":"/tmp/opencode/sots-final-research-engine/AGENTS.md"},"output":"/tmp/opencode/sots-final-research-engine/AGENTS.md\nfile\n\n1: # SOTS engine instructions\n2: \n3: Read `CONTRIBUTING.md` and `docs/architecture.md` before changing code.\n4: All task state, contracts, checkpoints, surprises, lab leases and acceptance evidence belong to\n5: the **canonical sots-re repository**, selected explicitly by the campaign runner's state root.\n6: The canonical local checkout is `/home/alex/sots-re`; paired worktrees must use the assigned\n7: state root, not assume their sibling directory is the RE repository.\n8: \n9: Read that repository's `AGENTS.md`, `campaign/README.md`, and your contract/checkpoint. Architecture\n10: and plan-changing surprises require GPT-6 Astra (`openai/gpt-6-astra`). No silent model fallback.\n11: Do not introduce another task board or agent fleet here. Checkpoint every 20 tool calls/15min and\n12: before compaction, experiments, handoffs and stops. Workers run bounded sessions and resume from\n13: repository state. No worker subdelegation, automatic commits, pushes or shared worktree edits.\n14: \n15: Keep engine logic independent of original-process memory; adapters marshal complete inputs and\n16: effects. Partial phases must report unknown dependencies. Missing dependencies are not zeros by\n17: default. Never claim independent replacement while original helpers perform the claimed work.\n18: Test both boundaries and original observations; report skipped tests honestly. Run a fresh gate\n19: from sots-re against explicit source/corpus paths for a source-bound result.\n\n(End of file - total 19 lines)\n","metadata":{"preview":"# SOTS engine instructions\n\nRead `CONTRIBUTING.md` and `docs/architecture.md` before changing code.\nAll task state, contracts, checkpoints, surprises, lab leases and acceptance evidence belong to\nthe **canonical sots-re repository**, selected explicitly by the campaign runner's state root.\nThe canonical local checkout is `/home/alex/sots-re`; paired worktrees must use the assigned\nstate root, not assume their sibling directory is the RE repository.\n\nRead that repository's `AGENTS.md`, `campaign/README.md`, and your contract/checkpoint. Architecture\nand plan-changing surprises require GPT-6 Astra (`openai/gpt-6-astra`). No silent model fallback.\nDo not introduce another task board or agent fleet here. Checkpoint every 20 tool calls/15min and\nbefore compaction, experiments, handoffs and stops. Workers run bounded sessions and resume from\nrepository state. No worker subdelegation, automatic commits, pushes or shared worktree edits.\n\nKeep engine logic independent of original-process memory; adapters marshal complete inputs and\neffects. Partial phases must report unknown dependencies. Missing dependencies are not zeros by\ndefault. Never claim independent replacement while original helpers perform the claimed work.\nTest both boundaries and original observations; report skipped tests honestly. Run a fresh gate\nfrom sots-re against explicit source/corpus paths for a source-bound result.","truncated":false,"loaded":[],"display":{"type":"file","path":"/tmp/opencode/sots-final-research-engine/AGENTS.md","text":"# SOTS engine instructions\n\nRead `CONTRIBUTING.md` and `docs/architecture.md` before changing code.\nAll task state, contracts, checkpoints, surprises, lab leases and acceptance evidence belong to\nthe **canonical sots-re repository**, selected explicitly by the campaign runner's state root.\nThe canonical local checkout is `/home/alex/sots-re`; paired worktrees must use the assigned\nstate root, not assume their sibling directory is the RE repository.\n\nRead that repository's `AGENTS.md`, `campaign/README.md`, and your contract/checkpoint. Architecture\nand plan-changing surprises require GPT-6 Astra (`openai/gpt-6-astra`). No silent model fallback.\nDo not introduce another task board or agent fleet here. Checkpoint every 20 tool calls/15min and\nbefore compaction, experiments, handoffs and stops. Workers run bounded sessions and resume from\nrepository state. No worker subdelegation, automatic commits, pushes or shared worktree edits.\n\nKeep engine logic independent of original-process memory; adapters marshal complete inputs and\neffects. Partial phases must report unknown dependencies. Missing dependencies are not zeros by\ndefault. Never claim independent replacement while original helpers perform the claimed work.\nTest both boundaries and original observations; report skipped tests honestly. Run a fresh gate\nfrom sots-re against explicit source/corpus paths for a source-bound result.","lineStart":1,"lineEnd":19,"totalLines":19,"truncated":false}},"title":"../../../tmp/opencode/sots-final-research-engine/AGENTS.md","time":{"start":1789016898467,"end":1789016898515}},"metadata":{"openai":{"itemId":"fc_0417a93c5e3f18d7016aa23b42290487d192f16f2393a9e97c"}},"id":"prt_089b77b9f001KTVK7XAddt2ua4","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7544400194K61siY3ywSKn"}} +{"type":"tool_use","timestamp":1789016898528,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_PeUxEUOZUZcIOWraekNjagvi","state":{"status":"completed","input":{"filePath":"/tmp/opencode/sots-final-research-re/AGENTS.md"},"output":"/tmp/opencode/sots-final-research-re/AGENTS.md\nfile\n\n1: # SOTS campaign instructions\n2: \n3: This repository is the state authority for the SOTS reconstruction and its Windows lab.\n4: Start with `campaign/README.md`, your contract, its latest checkpoint, and open surprises.\n5: Current policy: `guides/multi-agent-workflow.md`. Engine architecture: `sots-engine/docs/architecture.md`.\n6: Historical findings are evidence, not current execution instructions or accepted status.\n7: \n8: ## Authority and models\n9: \n10: - Architecture, planning, acceptance-policy changes, and evidence that changes the plan belong\n11: to **GPT-6 Astra (`openai/gpt-6-astra`)**. The user's final correction supersedes SOL/MYTHOS.\n12: - `campaign/models.json` is the role/model registry. Launch with `tools/run_agent.py` and an\n13: explicit role, contract, state root, and paired worktrees. Never silently downgrade or fall back.\n14: - Ordinary implementation/test failures inside the contract may be fixed by its worker.\n15: Falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope\n16: require a recorded surprise and an Astra resolution before affected work continues.\n17: - No worker subdelegation. The lead assigns parallelism; max two implementation slices after\n18: the pilot. Independent workload preparation is scheduled against explicit resource leases.\n19: \n20: ## Durable state and context\n21: \n22: Checkpoint in the canonical RE state root every **20 tool calls or 15 minutes**, whichever is\n23: earlier, and before an experiment, compaction, handoff, or stop. Include model/session, exact\n24: source identities, evidence paths, decisions versus observations, tests, blockers, and ONE exact\n25: next action. Do not store state only in a chat summary or `/tmp`.\n26: The runner uses bounded 40-step quanta. After checkpointing, stop and restart from the repository;\n27: automatic compaction is a backstop, not proof that a checkpoint was written. On recovery read the\n28: contract/checkpoint, verify worktree and resource identities, then continue. Missing state means\n29: blocked, not permission to reconstruct progress from memory.\n30: \n31: ## Ownership\n32: \n33: Use distinct engine and RE worktrees per lane, baseline-pinned. Canonical runtime state is shared\n34: only through the campaign tools. One integrator writes current evidence pointers and projections.\n35: Never stage someone else's changes. No automatic commit, push, pull, or reset. Commands requiring\n36: these actions need explicit user authorization. Source edits use apply_patch.\n37: VM, shared build-host, and Ghidra mutation require leases. A stale lease is not automatically free.\n38: Record preconditions, side effects, cleanup and access verification for any lab operation.\n39: Rollout bootstrap file-ownership exception: `campaign/rollout/architecture-decision.md` only.\n40: \n41: ## Evidence\n42: \n43: No generic `verified` promotion. Separate understanding, implementation, original dependencies,\n44: and validation scope. A count is insufficient without distinct states, branch exposures, and\n45: positive execution evidence. Include all writes, container elements, allocations, IDs, events,\n46: RNG draws, and runtime-only inputs. Original-assisted execution is not independent replacement.\n47: Synthetic boundary tests and original-game differential tests are complementary. Missing required\n48: inputs, zero execution, incomplete coverage, unexpected skips, stale binaries or unbound source\n49: identity fail acceptance. One independent verifier must reproduce the package; integrated-tree\n50: evidence is required for acceptance. Reports are measurements until those gates pass.\n51: \n52: Never commit owner-supplied binaries/assets or secrets. Engine facts cross only documented\n53: generated channels. Never paste disassembly/decompiler output into the engine repository.\n\n(End of file - total 53 lines)\n","metadata":{"preview":"# SOTS campaign instructions\n\nThis repository is the state authority for the SOTS reconstruction and its Windows lab.\nStart with `campaign/README.md`, your contract, its latest checkpoint, and open surprises.\nCurrent policy: `guides/multi-agent-workflow.md`. Engine architecture: `sots-engine/docs/architecture.md`.\nHistorical findings are evidence, not current execution instructions or accepted status.\n\n## Authority and models\n\n- Architecture, planning, acceptance-policy changes, and evidence that changes the plan belong\n to **GPT-6 Astra (`openai/gpt-6-astra`)**. The user's final correction supersedes SOL/MYTHOS.\n- `campaign/models.json` is the role/model registry. Launch with `tools/run_agent.py` and an\n explicit role, contract, state root, and paired worktrees. Never silently downgrade or fall back.\n- Ordinary implementation/test failures inside the contract may be fixed by its worker.\n Falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope\n require a recorded surprise and an Astra resolution before affected work continues.\n- No worker subdelegation. The lead assigns parallelism; max two implementation slices after\n the pilot. Independent workload preparation is scheduled against explicit resource leases.\n\n## Durable state and context","truncated":false,"loaded":[],"display":{"type":"file","path":"/tmp/opencode/sots-final-research-re/AGENTS.md","text":"# SOTS campaign instructions\n\nThis repository is the state authority for the SOTS reconstruction and its Windows lab.\nStart with `campaign/README.md`, your contract, its latest checkpoint, and open surprises.\nCurrent policy: `guides/multi-agent-workflow.md`. Engine architecture: `sots-engine/docs/architecture.md`.\nHistorical findings are evidence, not current execution instructions or accepted status.\n\n## Authority and models\n\n- Architecture, planning, acceptance-policy changes, and evidence that changes the plan belong\n to **GPT-6 Astra (`openai/gpt-6-astra`)**. The user's final correction supersedes SOL/MYTHOS.\n- `campaign/models.json` is the role/model registry. Launch with `tools/run_agent.py` and an\n explicit role, contract, state root, and paired worktrees. Never silently downgrade or fall back.\n- Ordinary implementation/test failures inside the contract may be fixed by its worker.\n Falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope\n require a recorded surprise and an Astra resolution before affected work continues.\n- No worker subdelegation. The lead assigns parallelism; max two implementation slices after\n the pilot. Independent workload preparation is scheduled against explicit resource leases.\n\n## Durable state and context\n\nCheckpoint in the canonical RE state root every **20 tool calls or 15 minutes**, whichever is\nearlier, and before an experiment, compaction, handoff, or stop. Include model/session, exact\nsource identities, evidence paths, decisions versus observations, tests, blockers, and ONE exact\nnext action. Do not store state only in a chat summary or `/tmp`.\nThe runner uses bounded 40-step quanta. After checkpointing, stop and restart from the repository;\nautomatic compaction is a backstop, not proof that a checkpoint was written. On recovery read the\ncontract/checkpoint, verify worktree and resource identities, then continue. Missing state means\nblocked, not permission to reconstruct progress from memory.\n\n## Ownership\n\nUse distinct engine and RE worktrees per lane, baseline-pinned. Canonical runtime state is shared\nonly through the campaign tools. One integrator writes current evidence pointers and projections.\nNever stage someone else's changes. No automatic commit, push, pull, or reset. Commands requiring\nthese actions need explicit user authorization. Source edits use apply_patch.\nVM, shared build-host, and Ghidra mutation require leases. A stale lease is not automatically free.\nRecord preconditions, side effects, cleanup and access verification for any lab operation.\nRollout bootstrap file-ownership exception: `campaign/rollout/architecture-decision.md` only.\n\n## Evidence\n\nNo generic `verified` promotion. Separate understanding, implementation, original dependencies,\nand validation scope. A count is insufficient without distinct states, branch exposures, and\npositive execution evidence. Include all writes, container elements, allocations, IDs, events,\nRNG draws, and runtime-only inputs. Original-assisted execution is not independent replacement.\nSynthetic boundary tests and original-game differential tests are complementary. Missing required\ninputs, zero execution, incomplete coverage, unexpected skips, stale binaries or unbound source\nidentity fail acceptance. One independent verifier must reproduce the package; integrated-tree\nevidence is required for acceptance. Reports are measurements until those gates pass.\n\nNever commit owner-supplied binaries/assets or secrets. Engine facts cross only documented\ngenerated channels. Never paste disassembly/decompiler output into the engine repository.","lineStart":1,"lineEnd":53,"totalLines":53,"truncated":false}},"title":"../../../tmp/opencode/sots-final-research-re/AGENTS.md","time":{"start":1789016898473,"end":1789016898518}},"metadata":{"openai":{"itemId":"fc_0417a93c5e3f18d7016aa23b42290c87d1a39c0f0dbedd01ef"}},"id":"prt_089b77ba5001i5UFzB3Cg7t1Ad","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7544400194K61siY3ywSKn"}} +{"type":"tool_use","timestamp":1789016898528,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_eQ3ulewgDxhGYrLneVfzOiXf","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/guides/multi-agent-workflow.md"},"output":"/home/alex/sots-re/guides/multi-agent-workflow.md\nfile\n\n1: # Multi-agent operating architecture\n2: \n3: ## Product and milestone\n4: \n5: Reconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\n6: milestone is standalone replay given a captured command stream and complete declared runtime\n7: inputs. The first workflow pilot is the complete research write set. A passing host build is a\n8: component baseline, not a playable engine or independent replacement.\n9: \n10: ## Source of truth\n11: \n12: `campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\n13: leases and surprises, and evidence packages identify inputs, source and executable artifacts.\n14: `campaign/current.json` selects published evidence by path and digest. Board/dashboard are\n15: generated projections, never alternate writable authorities. Exact tool CLI/schema is documented\n16: in `campaign/README.md`. Historical findings retain their original experiment scope; they are\n17: not promoted by copying an old status into a new contract.\n18: \n19: ## Model authority\n20: \n21: | Responsibility | Model |\n22: |---|---|\n23: | Normal planning, architecture and integration loop | GPT-5.6 Sol |\n24: | Bounded RE analysis, implementation and independent verification | GPT-5.6 Sol |\n25: | Routine lab/workload operations | GPT-5.6 Sol |\n26: | Problem and surprise resolution | GPT-6 Astra |\n27: | Context compaction | GPT-5.5 |\n28: \n29: Exact provider IDs are in `campaign/models.json`. The lead escalates to Astra when a falsified\n30: assumption, conflict, instrument effect, or scope change blocks the loop. No fallback is automatic. Model names in editable JSON are\n31: provenance, not authentication: launcher events and independent review support the record.\n32: Permissions reduce accidental role drift; unrestricted local shell access is not a sandbox.\n33: \n34: ## Behavioral slice\n35: \n36: The lead specifies a bounded input domain, full observable write set, dependencies, acceptance\n37: workloads and stop conditions. The analyst recovers behavior; the verifier specifies discriminating\n38: tests before implementation; the implementer changes engine/adapters; the lab operator captures\n39: controls; the verifier reproduces; the integrator tests the combined source snapshot.\n40: \n41: Include transitive effects: allocations, IDs, container ELEMENTS, event text/records, RNG and\n42: nonserialized state. An address/function name is not a sufficient replacement boundary. If a\n43: neighbor function supplies required effects, extend the approved contract or expose it as an\n44: original dependency. Do not call the original and label the result independent.\n45: \n46: Lifecycle is `proposed → ready → implementing → verification → integration → accepted`, with\n47: blocked/revision states. Lifecycle is distinct from evidence strength. Acceptance is scoped to\n48: the manifest's exact procedure and workloads, never universal correctness.\n49: \n50: ## Independence\n51: \n52: Verifier and implementer are different executions. Verification starts with the contract, raw\n53: evidence and reproduction recipe, not just the author's conclusion. Require one meaningful\n54: challenge: held-out state, boundary, negative control, ablation, or independent state accounting.\n55: Both synthetic tests and original-game experiments matter. Repeat-call volume cannot replace\n56: branch and distinct-state coverage. Null effects and zero executions must be distinguishable.\n57: \n58: ## Sessions and recovery\n59: \n60: At most two implementation slices after a single-slice pilot. No nested worker delegation.\n61: Paired worktrees isolate source changes; unique build directories isolate artifacts. Canonical\n62: RE runtime state remains explicit even when a worker runs in `/tmp` worktrees.\n63: \n64: Checkpoint every 20 calls or 15min; also before experiments, compaction, handoff and stopping.\n65: Record source identities, exact changed paths, commands/results, artifacts and hashes, open\n66: surprises, held leases, requested/observed model, session identity and exact next action. Avoid\n67: large prose histories: raw logs belong in evidence; the checkpoint is a bounded resumption record.\n68: \n69: The launcher caps a quantum at 40 agent steps. A new quantum starts fresh using contract and\n70: checkpoint. Auto-compaction with an ample reserved window and four retained turns is enabled.\n71: This is a best-effort context backstop; regular durable checkpoints and fresh quanta provide the\n72: actual recovery discipline. Never claim a model compacted merely because a setting exists.\n73: \n74: ## Surprises\n75: \n76: On a falsified prediction, contradictory claim, unexplained regression, instrument interference,\n77: or newly necessary dependency: record the observation and evidence; block affected work. Astra\n78: first checks the instrument and source identity, then marks claims surviving/qualified/overturned,\n79: chooses a discriminating experiment, and records the revised plan. Unaffected contracted work\n80: may continue. Updating a paragraph without invalidating affected acceptance is insufficient.\n81: \n82: ## Lab ownership\n83: \n84: Acquire a canonical resource lease before VM, build-host or Ghidra mutation. An expired timestamp\n85: does not authorize stealing a lease. The lead reconciles stale ownership with actual processes.\n86: Use one guest at a time for maintenance, capture before/after inventory, preserve access and\n87: runtime dependencies, and verify unattended console login plus authenticated administration.\n88: Reboots require a free guest and a recorded recovery path. Runtime/Ghidra changes are experiments\n89: with provenance, not undocumented preparatory steps.\n90: \n91: ## Gate and publication\n92: \n93: Run the local gate with explicit engine, corpus, new output directory and profile. It snapshots\n94: source, uses fresh builds, records manifests and runs the expected test inventory once. Host\n95: profile allows a named list of unavailable asset/trace tests and publishes them as limitations.\n96: Full acceptance requires the full profile and the slice-specific original oracle; no blanket\n97: waiver converts a host pass to fidelity. Standalone measurement may diverge; acceptance may not.\n98: \n99: The integrator alone selects current results after verifying their hashes and source binding.\n100: No percentages of LOC, mapped rows or closed leaves purport to measure engine completeness.\n101: Run failure and missing evidence are visible states. Old results remain historical, not current.\n\n(End of file - total 101 lines)\n","metadata":{"preview":"# Multi-agent operating architecture\n\n## Product and milestone\n\nReconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\nmilestone is standalone replay given a captured command stream and complete declared runtime\ninputs. The first workflow pilot is the complete research write set. A passing host build is a\ncomponent baseline, not a playable engine or independent replacement.\n\n## Source of truth\n\n`campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\nleases and surprises, and evidence packages identify inputs, source and executable artifacts.\n`campaign/current.json` selects published evidence by path and digest. Board/dashboard are\ngenerated projections, never alternate writable authorities. Exact tool CLI/schema is documented\nin `campaign/README.md`. Historical findings retain their original experiment scope; they are\nnot promoted by copying an old status into a new contract.\n\n## Model authority\n","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/guides/multi-agent-workflow.md","text":"# Multi-agent operating architecture\n\n## Product and milestone\n\nReconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\nmilestone is standalone replay given a captured command stream and complete declared runtime\ninputs. The first workflow pilot is the complete research write set. A passing host build is a\ncomponent baseline, not a playable engine or independent replacement.\n\n## Source of truth\n\n`campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\nleases and surprises, and evidence packages identify inputs, source and executable artifacts.\n`campaign/current.json` selects published evidence by path and digest. Board/dashboard are\ngenerated projections, never alternate writable authorities. Exact tool CLI/schema is documented\nin `campaign/README.md`. Historical findings retain their original experiment scope; they are\nnot promoted by copying an old status into a new contract.\n\n## Model authority\n\n| Responsibility | Model |\n|---|---|\n| Normal planning, architecture and integration loop | GPT-5.6 Sol |\n| Bounded RE analysis, implementation and independent verification | GPT-5.6 Sol |\n| Routine lab/workload operations | GPT-5.6 Sol |\n| Problem and surprise resolution | GPT-6 Astra |\n| Context compaction | GPT-5.5 |\n\nExact provider IDs are in `campaign/models.json`. The lead escalates to Astra when a falsified\nassumption, conflict, instrument effect, or scope change blocks the loop. No fallback is automatic. Model names in editable JSON are\nprovenance, not authentication: launcher events and independent review support the record.\nPermissions reduce accidental role drift; unrestricted local shell access is not a sandbox.\n\n## Behavioral slice\n\nThe lead specifies a bounded input domain, full observable write set, dependencies, acceptance\nworkloads and stop conditions. The analyst recovers behavior; the verifier specifies discriminating\ntests before implementation; the implementer changes engine/adapters; the lab operator captures\ncontrols; the verifier reproduces; the integrator tests the combined source snapshot.\n\nInclude transitive effects: allocations, IDs, container ELEMENTS, event text/records, RNG and\nnonserialized state. An address/function name is not a sufficient replacement boundary. If a\nneighbor function supplies required effects, extend the approved contract or expose it as an\noriginal dependency. Do not call the original and label the result independent.\n\nLifecycle is `proposed → ready → implementing → verification → integration → accepted`, with\nblocked/revision states. Lifecycle is distinct from evidence strength. Acceptance is scoped to\nthe manifest's exact procedure and workloads, never universal correctness.\n\n## Independence\n\nVerifier and implementer are different executions. Verification starts with the contract, raw\nevidence and reproduction recipe, not just the author's conclusion. Require one meaningful\nchallenge: held-out state, boundary, negative control, ablation, or independent state accounting.\nBoth synthetic tests and original-game experiments matter. Repeat-call volume cannot replace\nbranch and distinct-state coverage. Null effects and zero executions must be distinguishable.\n\n## Sessions and recovery\n\nAt most two implementation slices after a single-slice pilot. No nested worker delegation.\nPaired worktrees isolate source changes; unique build directories isolate artifacts. Canonical\nRE runtime state remains explicit even when a worker runs in `/tmp` worktrees.\n\nCheckpoint every 20 calls or 15min; also before experiments, compaction, handoff and stopping.\nRecord source identities, exact changed paths, commands/results, artifacts and hashes, open\nsurprises, held leases, requested/observed model, session identity and exact next action. Avoid\nlarge prose histories: raw logs belong in evidence; the checkpoint is a bounded resumption record.\n\nThe launcher caps a quantum at 40 agent steps. A new quantum starts fresh using contract and\ncheckpoint. Auto-compaction with an ample reserved window and four retained turns is enabled.\nThis is a best-effort context backstop; regular durable checkpoints and fresh quanta provide the\nactual recovery discipline. Never claim a model compacted merely because a setting exists.\n\n## Surprises\n\nOn a falsified prediction, contradictory claim, unexplained regression, instrument interference,\nor newly necessary dependency: record the observation and evidence; block affected work. Astra\nfirst checks the instrument and source identity, then marks claims surviving/qualified/overturned,\nchooses a discriminating experiment, and records the revised plan. Unaffected contracted work\nmay continue. Updating a paragraph without invalidating affected acceptance is insufficient.\n\n## Lab ownership\n\nAcquire a canonical resource lease before VM, build-host or Ghidra mutation. An expired timestamp\ndoes not authorize stealing a lease. The lead reconciles stale ownership with actual processes.\nUse one guest at a time for maintenance, capture before/after inventory, preserve access and\nruntime dependencies, and verify unattended console login plus authenticated administration.\nReboots require a free guest and a recorded recovery path. Runtime/Ghidra changes are experiments\nwith provenance, not undocumented preparatory steps.\n\n## Gate and publication\n\nRun the local gate with explicit engine, corpus, new output directory and profile. It snapshots\nsource, uses fresh builds, records manifests and runs the expected test inventory once. Host\nprofile allows a named list of unavailable asset/trace tests and publishes them as limitations.\nFull acceptance requires the full profile and the slice-specific original oracle; no blanket\nwaiver converts a host pass to fidelity. Standalone measurement may diverge; acceptance may not.\n\nThe integrator alone selects current results after verifying their hashes and source binding.\nNo percentages of LOC, mapped rows or closed leaves purport to measure engine completeness.\nRun failure and missing evidence are visible states. Old results remain historical, not current.","lineStart":1,"lineEnd":101,"totalLines":101,"truncated":false}},"title":"guides/multi-agent-workflow.md","time":{"start":1789016898448,"end":1789016898521}},"metadata":{"openai":{"itemId":"fc_0417a93c5e3f18d7016aa23b4228f087d19e43fa95a1a67fa1"}},"id":"prt_089b77b8b001xcpyx6g5R5k7s1","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7544400194K61siY3ywSKn"}} +{"type":"tool_use","timestamp":1789016898528,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_REoTdfHsjiokoOerd76Ubvyu","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/models.json"},"output":"/home/alex/sots-re/campaign/models.json\nfile\n\n1: {\n2: \"schema\": \"sots-models/1\",\n3: \"roles\": {\n4: \"lead\": \"openai/gpt-5.6-sol\",\n5: \"resolver\": \"openai/gpt-6-astra\",\n6: \"architecture-review\": \"openai/gpt-5.6-sol\",\n7: \"analyst\": \"openai/gpt-5.6-sol\",\n8: \"implementer\": \"openai/gpt-5.6-sol\",\n9: \"verifier\": \"openai/gpt-5.6-sol\",\n10: \"lab\": \"openai/gpt-5.6-sol\"\n11: },\n12: \"agents\": {\n13: \"lead\": \"sots-lead\",\n14: \"resolver\": \"sots-resolver\",\n15: \"architecture-review\": \"sots-lead\",\n16: \"analyst\": \"sots-analyst\",\n17: \"implementer\": \"sots-implementer\",\n18: \"verifier\": \"sots-verifier\",\n19: \"lab\": \"sots-lab\"\n20: },\n21: \"max_steps\": 40,\n22: \"implementation_wip\": 2\n23: }\n\n(End of file - total 23 lines)\n","metadata":{"preview":"{\n \"schema\": \"sots-models/1\",\n \"roles\": {\n \"lead\": \"openai/gpt-5.6-sol\",\n \"resolver\": \"openai/gpt-6-astra\",\n \"architecture-review\": \"openai/gpt-5.6-sol\",\n \"analyst\": \"openai/gpt-5.6-sol\",\n \"implementer\": \"openai/gpt-5.6-sol\",\n \"verifier\": \"openai/gpt-5.6-sol\",\n \"lab\": \"openai/gpt-5.6-sol\"\n },\n \"agents\": {\n \"lead\": \"sots-lead\",\n \"resolver\": \"sots-resolver\",\n \"architecture-review\": \"sots-lead\",\n \"analyst\": \"sots-analyst\",\n \"implementer\": \"sots-implementer\",\n \"verifier\": \"sots-verifier\",\n \"lab\": \"sots-lab\"\n },","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/models.json","text":"{\n \"schema\": \"sots-models/1\",\n \"roles\": {\n \"lead\": \"openai/gpt-5.6-sol\",\n \"resolver\": \"openai/gpt-6-astra\",\n \"architecture-review\": \"openai/gpt-5.6-sol\",\n \"analyst\": \"openai/gpt-5.6-sol\",\n \"implementer\": \"openai/gpt-5.6-sol\",\n \"verifier\": \"openai/gpt-5.6-sol\",\n \"lab\": \"openai/gpt-5.6-sol\"\n },\n \"agents\": {\n \"lead\": \"sots-lead\",\n \"resolver\": \"sots-resolver\",\n \"architecture-review\": \"sots-lead\",\n \"analyst\": \"sots-analyst\",\n \"implementer\": \"sots-implementer\",\n \"verifier\": \"sots-verifier\",\n \"lab\": \"sots-lab\"\n },\n \"max_steps\": 40,\n \"implementation_wip\": 2\n}","lineStart":1,"lineEnd":23,"totalLines":23,"truncated":false}},"title":"campaign/models.json","time":{"start":1789016898461,"end":1789016898525}},"metadata":{"openai":{"itemId":"fc_0417a93c5e3f18d7016aa23b4228fc87d197c0555d99373a2f"}},"id":"prt_089b77b99001xg4i9MWfFQ2OKY","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7544400194K61siY3ywSKn"}} +{"type":"tool_use","timestamp":1789016898545,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"glob","callID":"call_YOSYNSqRWnFzHFKl2bARVMaL","state":{"status":"completed","input":{"path":"/home/alex/sots-re/campaign","pattern":"**/*surpris*"},"output":"No files found","metadata":{"count":0,"truncated":false},"title":"campaign","time":{"start":1789016898455,"end":1789016898530}},"metadata":{"openai":{"itemId":"fc_0417a93c5e3f18d7016aa23b4228f887d1a0ecfa310d8007a5"}},"id":"prt_089b77b92001zVmRe4rfdwIzmA","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7544400194K61siY3ywSKn"}} +{"type":"tool_use","timestamp":1789016898545,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_7DIOEYG7rx5Do2AI7TO7kyQ5","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json"},"output":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\nfile\n\n1: {\n2: \"actor\": \"campaign-lead\",\n3: \"artifacts\": [\n4: {\n5: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n6: \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n7: },\n8: {\n9: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md\",\n10: \"sha256\": \"6e74ff0197adc6c97f5924ad3f973d5e8922f1480268d1c96dac3dd89000e38f\"\n11: },\n12: {\n13: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\",\n14: \"sha256\": \"66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1\"\n15: }\n16: ],\n17: \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n18: \"contract\": \"research-completion-abi\",\n19: \"id\": \"63895701b38ae7ffac31aaed\",\n20: \"model\": \"openai/gpt-5.6-sol\",\n21: \"next_action\": \"Launch research-abi-correction-verifier in a fresh bounded verifier session to reproduce the package independently and execute its falsifiers.\",\n22: \"role\": \"lead\",\n23: \"schema\": \"sots-checkpoint/1\",\n24: \"session\": \"lead-verifier-handoff-41a6840\",\n25: \"summary\": \"Lead inspected analyst run run-9daf5c3b75547271d5c3b4ed and its current-session fail-if-exists capture. Twelve static captures succeeded; complete instruction boundaries and raw bytes correct the invalidated provenance without claiming runtime safety. Campaign validation and all 37 control tests pass. No lease or mutable lab resource is held.\",\n26: \"timestamp\": \"2026-09-10T05:07:46.089883+00:00\"\n27: }\n\n(End of file - total 27 lines)\n","metadata":{"preview":"{\n \"actor\": \"campaign-lead\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md\",\n \"sha256\": \"6e74ff0197adc6c97f5924ad3f973d5e8922f1480268d1c96dac3dd89000e38f\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\",\n \"sha256\": \"66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"63895701b38ae7ffac31aaed\",\n \"model\": \"openai/gpt-5.6-sol\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json","text":"{\n \"actor\": \"campaign-lead\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md\",\n \"sha256\": \"6e74ff0197adc6c97f5924ad3f973d5e8922f1480268d1c96dac3dd89000e38f\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\",\n \"sha256\": \"66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"63895701b38ae7ffac31aaed\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Launch research-abi-correction-verifier in a fresh bounded verifier session to reproduce the package independently and execute its falsifiers.\",\n \"role\": \"lead\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"lead-verifier-handoff-41a6840\",\n \"summary\": \"Lead inspected analyst run run-9daf5c3b75547271d5c3b4ed and its current-session fail-if-exists capture. Twelve static captures succeeded; complete instruction boundaries and raw bytes correct the invalidated provenance without claiming runtime safety. Campaign validation and all 37 control tests pass. No lease or mutable lab resource is held.\",\n \"timestamp\": \"2026-09-10T05:07:46.089883+00:00\"\n}","lineStart":1,"lineEnd":27,"totalLines":27,"truncated":false}},"title":"campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json","time":{"start":1789016898441,"end":1789016898542}},"metadata":{"openai":{"itemId":"fc_0417a93c5e3f18d7016aa23b4228e887d1b0c8c175ba67e64c"}},"id":"prt_089b77b82001FRe1ATyRhsEU6Y","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7544400194K61siY3ywSKn"}} +{"type":"step_finish","timestamp":1789016898594,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"id":"prt_089b77c1e001TLJzQRAddS7OS0","reason":"tool-calls","snapshot":"bfb8214b564a554338ebbde18964b4ff28b0c6b8","messageID":"msg_089b7544400194K61siY3ywSKn","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","type":"step-finish","tokens":{"total":6478,"input":6222,"output":256,"reasoning":0,"cache":{"write":0,"read":0}},"cost":0}} +{"type":"step_start","timestamp":1789016901055,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"id":"prt_089b785bb0011Hxwq3kEGQb07v","messageID":"msg_089b77c52001PoTmstaHMevnX1","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","snapshot":"4c23db169059e423aa37213b182c052597da4ad7","type":"step-start"}} +{"type":"tool_use","timestamp":1789016917809,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_oYIpIxcmOqga6XujYisNeu3x","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises"},"output":"/home/alex/sots-re/campaign/runtime/surprises\ndirectory\n\ns-410e48d5ae6cc4da0a6ae649.json\ns-4a7d66ebd7d8a8f3ec59f11d.json\ns-4f4fb5e8ee42ccff7e68efb5.json\ns-4f71bf4a5df4e5fc992bb6b2.json\ns-5a78d3a0a10c1f8545df8eb1.json\ns-5c58b6a921997731f5b5ae1f.json\ns-6d1fcc617a20ca2bcbffc0cc.json\ns-8996365dab2cd6dc0e17bb9f.json\ns-abd1c3613c9922cc94c608d5.json\ns-c6786945b302de2a0b629960.json\ns-d2c8ec81e980396f2306f8fe.json\ns-d44b9f9e62272794d88bbed6.json\ns-f1c41532e618c77d41538902.json\n\n(13 entries)\n","metadata":{"preview":"s-410e48d5ae6cc4da0a6ae649.json\ns-4a7d66ebd7d8a8f3ec59f11d.json\ns-4f4fb5e8ee42ccff7e68efb5.json\ns-4f71bf4a5df4e5fc992bb6b2.json\ns-5a78d3a0a10c1f8545df8eb1.json\ns-5c58b6a921997731f5b5ae1f.json\ns-6d1fcc617a20ca2bcbffc0cc.json\ns-8996365dab2cd6dc0e17bb9f.json\ns-abd1c3613c9922cc94c608d5.json\ns-c6786945b302de2a0b629960.json\ns-d2c8ec81e980396f2306f8fe.json\ns-d44b9f9e62272794d88bbed6.json\ns-f1c41532e618c77d41538902.json","truncated":false,"loaded":[],"display":{"type":"directory","path":"/home/alex/sots-re/campaign/runtime/surprises","entries":["s-410e48d5ae6cc4da0a6ae649.json","s-4a7d66ebd7d8a8f3ec59f11d.json","s-4f4fb5e8ee42ccff7e68efb5.json","s-4f71bf4a5df4e5fc992bb6b2.json","s-5a78d3a0a10c1f8545df8eb1.json","s-5c58b6a921997731f5b5ae1f.json","s-6d1fcc617a20ca2bcbffc0cc.json","s-8996365dab2cd6dc0e17bb9f.json","s-abd1c3613c9922cc94c608d5.json","s-c6786945b302de2a0b629960.json","s-d2c8ec81e980396f2306f8fe.json","s-d44b9f9e62272794d88bbed6.json","s-f1c41532e618c77d41538902.json"],"offset":1,"totalEntries":13,"truncated":false}},"title":"campaign/runtime/surprises","time":{"start":1789016917804,"end":1789016917808}},"metadata":{"openai":{"itemId":"fc_0a9b1191c74318a5016aa23b5599ac87d1ac710f9b66903e3f"}},"id":"prt_089b7c6eb0018IZOjtMkDhxAvh","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b77c52001PoTmstaHMevnX1"}} +{"type":"tool_use","timestamp":1789016917900,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_xRcitBNMWlJsyNnrOZAUYCOw","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\nfile\n\n1: {\n2: \"schema\": \"sots-abi-static-capture/1\",\n3: \"session\": \"run-9daf5c3b75547271d5c3b4ed\",\n4: \"actor\": \"research-abi-analyst\",\n5: \"role\": \"analyst\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"timestamp\": \"2026-09-10T04:59:38.840348+00:00\",\n8: \"decisions\": [\n9: \"d-fd5aff1eaf78a8c15d96723c\",\n10: \"d-0bb927e63b915c87a58d4257\"\n11: ],\n12: \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n13: \"negative_preflight\": [\n14: {\n15: \"name\": \"reject-missing-session\",\n16: \"status\": \"pass\",\n17: \"rejection\": \"missing session\"\n18: },\n19: {\n20: \"name\": \"reject-stale-session\",\n21: \"status\": \"pass\",\n22: \"rejection\": \"stale or unexpected session\"\n23: },\n24: {\n25: \"name\": \"reject-stale-output\",\n26: \"status\": \"pass\",\n27: \"rejection\": \"output location is not bound to session\"\n28: },\n29: {\n30: \"name\": \"reject-reused-output\",\n31: \"status\": \"pass\",\n32: \"rejection\": \"output location was already used\"\n33: }\n34: ],\n35: \"source_before\": {\n36: \"argv\": [\n37: \"python3\",\n38: \"/home/alex/sots-re/tools/campaign.py\",\n39: \"--state-root\",\n40: \"/home/alex/sots-re\",\n41: \"source-binding\",\n42: \"research-completion-abi\",\n43: \"--engine-worktree\",\n44: \"/tmp/opencode/sots-final-research-engine\",\n45: \"--re-worktree\",\n46: \"/tmp/opencode/sots-final-research-re\"\n47: ],\n48: \"value\": {\n49: \"engine\": {\n50: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n51: \"path\": \"/tmp/opencode/sots-final-research-engine\",\n52: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n53: },\n54: \"re\": {\n55: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n56: \"path\": \"/tmp/opencode/sots-final-research-re\",\n57: \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n58: }\n59: }\n60: },\n61: \"source_after\": {\n62: \"argv\": [\n63: \"python3\",\n64: \"/home/alex/sots-re/tools/campaign.py\",\n65: \"--state-root\",\n66: \"/home/alex/sots-re\",\n67: \"source-binding\",\n68: \"research-completion-abi\",\n69: \"--engine-worktree\",\n70: \"/tmp/opencode/sots-final-research-engine\",\n71: \"--re-worktree\",\n72: \"/tmp/opencode/sots-final-research-re\"\n73: ],\n74: \"value\": {\n75: \"engine\": {\n76: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n77: \"path\": \"/tmp/opencode/sots-final-research-engine\",\n78: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n79: },\n80: \"re\": {\n81: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n82: \"path\": \"/tmp/opencode/sots-final-research-re\",\n83: \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n84: }\n85: }\n86: },\n87: \"input\": {\n88: \"path\": \"/home/alex/sots-re/dumps/sots.exe\",\n89: \"bytes\": 7898624,\n90: \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n91: },\n92: \"tool\": {\n93: \"path\": \"/usr/bin/objdump\",\n94: \"bytes\": 373888,\n95: \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n96: \"version\": \"GNU objdump (GNU Binutils for Ubuntu) 2.38\"\n97: },\n98: \"commands\": [\n99: {\n100: \"name\": \"turn-get-create-exact\",\n101: \"classification\": \"complete-control\",\n102: \"argv\": [\n103: \"/usr/bin/objdump\",\n104: \"-D\",\n105: \"-Mintel\",\n106: \"--start-address=0x00885380\",\n107: \"--stop-address=0x0088544a\",\n108: \"/home/alex/sots-re/dumps/sots.exe\"\n109: ],\n110: \"cwd\": \"/home/alex/sots-re\",\n111: \"returncode\": 0,\n112: \"stdout\": {\n113: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stdout.txt\",\n114: \"bytes\": 3974,\n115: \"sha256\": \"f6e72ba9b08fdf48d70f39379b2fb30a5adbe796072485f70c5795c10ab45ca3\"\n116: },\n117: \"stderr\": {\n118: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stderr.txt\",\n119: \"bytes\": 0,\n120: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n121: }\n122: },\n123: {\n124: \"name\": \"turn-get-create-wide\",\n125: \"classification\": \"boundary-audit\",\n126: \"argv\": [\n127: \"/usr/bin/objdump\",\n128: \"-D\",\n129: \"-Mintel\",\n130: \"--start-address=0x00885380\",\n131: \"--stop-address=0x0088544e\",\n132: \"/home/alex/sots-re/dumps/sots.exe\"\n133: ],\n134: \"cwd\": \"/home/alex/sots-re\",\n135: \"returncode\": 0,\n136: \"stdout\": {\n137: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stdout.txt\",\n138: \"bytes\": 4134,\n139: \"sha256\": \"9cb7d2ccfcc645b3b642e520ba51c85330c57d6d4395ed3fbd4a4a1950436e80\"\n140: },\n141: \"stderr\": {\n142: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stderr.txt\",\n143: \"bytes\": 0,\n144: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n145: }\n146: },\n147: {\n148: \"name\": \"turn-append-exact\",\n149: \"classification\": \"complete-control\",\n150: \"argv\": [\n151: \"/usr/bin/objdump\",\n152: \"-D\",\n153: \"-Mintel\",\n154: \"--start-address=0x00884cb0\",\n155: \"--stop-address=0x00884d8f\",\n156: \"/home/alex/sots-re/dumps/sots.exe\"\n157: ],\n158: \"cwd\": \"/home/alex/sots-re\",\n159: \"returncode\": 0,\n160: \"stdout\": {\n161: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stdout.txt\",\n162: \"bytes\": 4179,\n163: \"sha256\": \"57d6655feed0fc137bb2b7eee4bfcb09536b5a715603c917ee142770f1d52a15\"\n164: },\n165: \"stderr\": {\n166: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stderr.txt\",\n167: \"bytes\": 0,\n168: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n169: }\n170: },\n171: {\n172: \"name\": \"turn-append-wide\",\n173: \"classification\": \"boundary-audit\",\n174: \"argv\": [\n175: \"/usr/bin/objdump\",\n176: \"-D\",\n177: \"-Mintel\",\n178: \"--start-address=0x00884cb0\",\n179: \"--stop-address=0x00884d93\",\n180: \"/home/alex/sots-re/dumps/sots.exe\"\n181: ],\n182: \"cwd\": \"/home/alex/sots-re\",\n183: \"returncode\": 0,\n184: \"stdout\": {\n185: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stdout.txt\",\n186: \"bytes\": 4309,\n187: \"sha256\": \"957339f40b2af8947cb883cc1d3a9d1e151bf7663305415065472ef9171dc33d\"\n188: },\n189: \"stderr\": {\n190: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stderr.txt\",\n191: \"bytes\": 0,\n192: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n193: }\n194: },\n195: {\n196: \"name\": \"nested-dtor-exact\",\n197: \"classification\": \"complete-control\",\n198: \"argv\": [\n199: \"/usr/bin/objdump\",\n200: \"-D\",\n201: \"-Mintel\",\n202: \"--start-address=0x00629580\",\n203: \"--stop-address=0x006295ca\",\n204: \"/home/alex/sots-re/dumps/sots.exe\"\n205: ],\n206: \"cwd\": \"/home/alex/sots-re\",\n207: \"returncode\": 0,\n208: \"stdout\": {\n209: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stdout.txt\",\n210: \"bytes\": 1727,\n211: \"sha256\": \"3c38887e60d009ab904772b13be93ac1eedd9bee85024e37110160a625db3a83\"\n212: },\n213: \"stderr\": {\n214: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stderr.txt\",\n215: \"bytes\": 0,\n216: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n217: }\n218: },\n219: {\n220: \"name\": \"nested-dtor-wide\",\n221: \"classification\": \"boundary-audit\",\n222: \"argv\": [\n223: \"/usr/bin/objdump\",\n224: \"-D\",\n225: \"-Mintel\",\n226: \"--start-address=0x00629580\",\n227: \"--stop-address=0x006295ce\",\n228: \"/home/alex/sots-re/dumps/sots.exe\"\n229: ],\n230: \"cwd\": \"/home/alex/sots-re\",\n231: \"returncode\": 0,\n232: \"stdout\": {\n233: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stdout.txt\",\n234: \"bytes\": 1887,\n235: \"sha256\": \"0aba6fc800760e3a113c07238cfb6e721623eb0bb8a933a990d3e2e82823d00f\"\n236: },\n237: \"stderr\": {\n238: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stderr.txt\",\n239: \"bytes\": 0,\n240: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n241: }\n242: },\n243: {\n244: \"name\": \"nested-copy-authority\",\n245: \"classification\": \"bounded-authority\",\n246: \"argv\": [\n247: \"/usr/bin/objdump\",\n248: \"-D\",\n249: \"-Mintel\",\n250: \"--start-address=0x00779850\",\n251: \"--stop-address=0x00779930\",\n252: \"/home/alex/sots-re/dumps/sots.exe\"\n253: ],\n254: \"cwd\": \"/home/alex/sots-re\",\n255: \"returncode\": 0,\n256: \"stdout\": {\n257: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n258: \"bytes\": 4465,\n259: \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n260: },\n261: \"stderr\": {\n262: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stderr.txt\",\n263: \"bytes\": 0,\n264: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n265: }\n266: },\n267: {\n268: \"name\": \"nested-copy-stop-a20\",\n269: \"classification\": \"expected-truncated-negative\",\n270: \"argv\": [\n271: \"/usr/bin/objdump\",\n272: \"-D\",\n273: \"-Mintel\",\n274: \"--start-address=0x00779850\",\n275: \"--stop-address=0x00779a20\",\n276: \"/home/alex/sots-re/dumps/sots.exe\"\n277: ],\n278: \"cwd\": \"/home/alex/sots-re\",\n279: \"returncode\": 0,\n280: \"stdout\": {\n281: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\",\n282: \"bytes\": 8469,\n283: \"sha256\": \"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\"\n284: },\n285: \"stderr\": {\n286: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stderr.txt\",\n287: \"bytes\": 0,\n288: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n289: }\n290: },\n291: {\n292: \"name\": \"nested-copy-stop-a21\",\n293: \"classification\": \"predicted-complete-je\",\n294: \"argv\": [\n295: \"/usr/bin/objdump\",\n296: \"-D\",\n297: \"-Mintel\",\n298: \"--start-address=0x00779850\",\n299: \"--stop-address=0x00779a21\",\n300: \"/home/alex/sots-re/dumps/sots.exe\"\n301: ],\n302: \"cwd\": \"/home/alex/sots-re\",\n303: \"returncode\": 0,\n304: \"stdout\": {\n305: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stdout.txt\",\n306: \"bytes\": 8471,\n307: \"sha256\": \"b6d58767d00328c37139f439db480c9bb5ce6767dabf212f9e750a31fea0d3d7\"\n308: },\n309: \"stderr\": {\n310: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stderr.txt\",\n311: \"bytes\": 0,\n312: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n313: }\n314: },\n315: {\n316: \"name\": \"nested-copy-stop-a23\",\n317: \"classification\": \"predicted-complete-mov\",\n318: \"argv\": [\n319: \"/usr/bin/objdump\",\n320: \"-D\",\n321: \"-Mintel\",\n322: \"--start-address=0x00779850\",\n323: \"--stop-address=0x00779a23\",\n324: \"/home/alex/sots-re/dumps/sots.exe\"\n325: ],\n326: \"cwd\": \"/home/alex/sots-re\",\n327: \"returncode\": 0,\n328: \"stdout\": {\n329: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stdout.txt\",\n330: \"bytes\": 8518,\n331: \"sha256\": \"e8cc66eb74730fcf7853d66df8caa620ddb3fc8c75335f0573ac490037a7a88e\"\n332: },\n333: \"stderr\": {\n334: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stderr.txt\",\n335: \"bytes\": 0,\n336: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n337: }\n338: },\n339: {\n340: \"name\": \"nested-copy-stop-a28\",\n341: \"classification\": \"complete-call-boundary-control\",\n342: \"argv\": [\n343: \"/usr/bin/objdump\",\n344: \"-D\",\n345: \"-Mintel\",\n346: \"--start-address=0x00779850\",\n347: \"--stop-address=0x00779a28\",\n348: \"/home/alex/sots-re/dumps/sots.exe\"\n349: ],\n350: \"cwd\": \"/home/alex/sots-re\",\n351: \"returncode\": 0,\n352: \"stdout\": {\n353: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\",\n354: \"bytes\": 8566,\n355: \"sha256\": \"7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560\"\n356: },\n357: \"stderr\": {\n358: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stderr.txt\",\n359: \"bytes\": 0,\n360: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n361: }\n362: },\n363: {\n364: \"name\": \"nested-copy-boundary-bytes\",\n365: \"classification\": \"raw-byte-boundary-control\",\n366: \"argv\": [\n367: \"/usr/bin/objdump\",\n368: \"-s\",\n369: \"-j\",\n370: \".text\",\n371: \"--start-address=0x00779a1f\",\n372: \"--stop-address=0x00779a28\",\n373: \"/home/alex/sots-re/dumps/sots.exe\"\n374: ],\n375: \"cwd\": \"/home/alex/sots-re\",\n376: \"returncode\": 0,\n377: \"stdout\": {\n378: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\",\n379: \"bytes\": 151,\n380: \"sha256\": \"b2d9b57274be71fcdd853f04758bc65d701e7b4cc169d0d5ede24c8788ef82d5\"\n381: },\n382: \"stderr\": {\n383: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stderr.txt\",\n384: \"bytes\": 0,\n385: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n386: }\n387: }\n388: ],\n389: \"checks\": [\n390: {\n391: \"name\": \"explicit-session\",\n392: \"status\": \"pass\"\n393: },\n394: {\n395: \"name\": \"session-output-match\",\n396: \"status\": \"pass\"\n397: },\n398: {\n399: \"name\": \"negative-preflight-all-rejected\",\n400: \"status\": \"pass\"\n401: },\n402: {\n403: \"name\": \"binary-hash\",\n404: \"status\": \"pass\"\n405: },\n406: {\n407: \"name\": \"tool-hash\",\n408: \"status\": \"pass\"\n409: },\n410: {\n411: \"name\": \"source-stable\",\n412: \"status\": \"pass\"\n413: },\n414: {\n415: \"name\": \"all-return-zero\",\n416: \"status\": \"pass\"\n417: },\n418: {\n419: \"name\": \"all-stdout-nonempty\",\n420: \"status\": \"pass\"\n421: },\n422: {\n423: \"name\": \"all-stderr-empty\",\n424: \"status\": \"pass\"\n425: }\n426: ],\n427: \"failed\": []\n428: }\n\n(End of file - total 428 lines)\n","metadata":{"preview":"{\n \"schema\": \"sots-abi-static-capture/1\",\n \"session\": \"run-9daf5c3b75547271d5c3b4ed\",\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": \"2026-09-10T04:59:38.840348+00:00\",\n \"decisions\": [\n \"d-fd5aff1eaf78a8c15d96723c\",\n \"d-0bb927e63b915c87a58d4257\"\n ],\n \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n \"negative_preflight\": [\n {\n \"name\": \"reject-missing-session\",\n \"status\": \"pass\",\n \"rejection\": \"missing session\"\n },\n {\n \"name\": \"reject-stale-session\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json","text":"{\n \"schema\": \"sots-abi-static-capture/1\",\n \"session\": \"run-9daf5c3b75547271d5c3b4ed\",\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": \"2026-09-10T04:59:38.840348+00:00\",\n \"decisions\": [\n \"d-fd5aff1eaf78a8c15d96723c\",\n \"d-0bb927e63b915c87a58d4257\"\n ],\n \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n \"negative_preflight\": [\n {\n \"name\": \"reject-missing-session\",\n \"status\": \"pass\",\n \"rejection\": \"missing session\"\n },\n {\n \"name\": \"reject-stale-session\",\n \"status\": \"pass\",\n \"rejection\": \"stale or unexpected session\"\n },\n {\n \"name\": \"reject-stale-output\",\n \"status\": \"pass\",\n \"rejection\": \"output location is not bound to session\"\n },\n {\n \"name\": \"reject-reused-output\",\n \"status\": \"pass\",\n \"rejection\": \"output location was already used\"\n }\n ],\n \"source_before\": {\n \"argv\": [\n \"python3\",\n \"/home/alex/sots-re/tools/campaign.py\",\n \"--state-root\",\n \"/home/alex/sots-re\",\n \"source-binding\",\n \"research-completion-abi\",\n \"--engine-worktree\",\n \"/tmp/opencode/sots-final-research-engine\",\n \"--re-worktree\",\n \"/tmp/opencode/sots-final-research-re\"\n ],\n \"value\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n }\n },\n \"source_after\": {\n \"argv\": [\n \"python3\",\n \"/home/alex/sots-re/tools/campaign.py\",\n \"--state-root\",\n \"/home/alex/sots-re\",\n \"source-binding\",\n \"research-completion-abi\",\n \"--engine-worktree\",\n \"/tmp/opencode/sots-final-research-engine\",\n \"--re-worktree\",\n \"/tmp/opencode/sots-final-research-re\"\n ],\n \"value\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n }\n },\n \"input\": {\n \"path\": \"/home/alex/sots-re/dumps/sots.exe\",\n \"bytes\": 7898624,\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n },\n \"tool\": {\n \"path\": \"/usr/bin/objdump\",\n \"bytes\": 373888,\n \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n \"version\": \"GNU objdump (GNU Binutils for Ubuntu) 2.38\"\n },\n \"commands\": [\n {\n \"name\": \"turn-get-create-exact\",\n \"classification\": \"complete-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00885380\",\n \"--stop-address=0x0088544a\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stdout.txt\",\n \"bytes\": 3974,\n \"sha256\": \"f6e72ba9b08fdf48d70f39379b2fb30a5adbe796072485f70c5795c10ab45ca3\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"turn-get-create-wide\",\n \"classification\": \"boundary-audit\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00885380\",\n \"--stop-address=0x0088544e\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stdout.txt\",\n \"bytes\": 4134,\n \"sha256\": \"9cb7d2ccfcc645b3b642e520ba51c85330c57d6d4395ed3fbd4a4a1950436e80\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"turn-append-exact\",\n \"classification\": \"complete-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00884cb0\",\n \"--stop-address=0x00884d8f\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stdout.txt\",\n \"bytes\": 4179,\n \"sha256\": \"57d6655feed0fc137bb2b7eee4bfcb09536b5a715603c917ee142770f1d52a15\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"turn-append-wide\",\n \"classification\": \"boundary-audit\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00884cb0\",\n \"--stop-address=0x00884d93\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stdout.txt\",\n \"bytes\": 4309,\n \"sha256\": \"957339f40b2af8947cb883cc1d3a9d1e151bf7663305415065472ef9171dc33d\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-dtor-exact\",\n \"classification\": \"complete-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00629580\",\n \"--stop-address=0x006295ca\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stdout.txt\",\n \"bytes\": 1727,\n \"sha256\": \"3c38887e60d009ab904772b13be93ac1eedd9bee85024e37110160a625db3a83\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-dtor-wide\",\n \"classification\": \"boundary-audit\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00629580\",\n \"--stop-address=0x006295ce\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stdout.txt\",\n \"bytes\": 1887,\n \"sha256\": \"0aba6fc800760e3a113c07238cfb6e721623eb0bb8a933a990d3e2e82823d00f\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-authority\",\n \"classification\": \"bounded-authority\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779930\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n \"bytes\": 4465,\n \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a20\",\n \"classification\": \"expected-truncated-negative\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a20\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\",\n \"bytes\": 8469,\n \"sha256\": \"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a21\",\n \"classification\": \"predicted-complete-je\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a21\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stdout.txt\",\n \"bytes\": 8471,\n \"sha256\": \"b6d58767d00328c37139f439db480c9bb5ce6767dabf212f9e750a31fea0d3d7\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a23\",\n \"classification\": \"predicted-complete-mov\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a23\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stdout.txt\",\n \"bytes\": 8518,\n \"sha256\": \"e8cc66eb74730fcf7853d66df8caa620ddb3fc8c75335f0573ac490037a7a88e\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a28\",\n \"classification\": \"complete-call-boundary-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a28\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\",\n \"bytes\": 8566,\n \"sha256\": \"7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-boundary-bytes\",\n \"classification\": \"raw-byte-boundary-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-s\",\n \"-j\",\n \".text\",\n \"--start-address=0x00779a1f\",\n \"--stop-address=0x00779a28\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\",\n \"bytes\": 151,\n \"sha256\": \"b2d9b57274be71fcdd853f04758bc65d701e7b4cc169d0d5ede24c8788ef82d5\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n }\n ],\n \"checks\": [\n {\n \"name\": \"explicit-session\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"session-output-match\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"negative-preflight-all-rejected\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"binary-hash\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"tool-hash\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"source-stable\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all-return-zero\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all-stdout-nonempty\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all-stderr-empty\",\n \"status\": \"pass\"\n }\n ],\n \"failed\": []\n}","lineStart":1,"lineEnd":428,"totalLines":428,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json","time":{"start":1789016917887,"end":1789016917897}},"metadata":{"openai":{"itemId":"fc_0a9b1191c74318a5016aa23b5599c087d1b2d34acc1c5b4acf"}},"id":"prt_089b7c77c001ftftGi8mMQEiWs","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b77c52001PoTmstaHMevnX1"}} +{"type":"tool_use","timestamp":1789016918002,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_qGpVVCwyA8mN8fHp9IDNNGx9","state":{"status":"completed","input":{"filePath":"/tmp/opencode/sots-final-research-re/findings/subsystems/events.md"},"output":"/tmp/opencode/sots-final-research-re/findings/subsystems/events.md\nfile\n\n1: # Player event posting API (lane E, 2026-09-08)\n2: \n3: Target: recover the API the game uses to post player-visible turn events, so the\n4: reimplementation can post them and so the compare harness can *see* them.\n5: \n6: Motivation: `TechTree::ProcessResearch` (P2-B3) failed its replace-mode oracle by exactly\n7: one item across 40,300 — an unposted `EVENT_RESEARCH_OVERBUDGET`. `ServerPlayer::\n8: OnTechResearched` (P2-B2) has the same gap. Until events are modelled, both \"0 divergence\"\n9: verdicts bound the economy fields only.\n10: \n11: **Everything below with an address was read out of the instruction stream** (bytes fetched\n12: with `read-memory` over the ReVa HTTP shim, disassembled locally with capstone) unless the\n13: line says *inferred*. Layout claims are additionally confirmed against three real saves via\n14: `verify/save-reader/save_reader.py`.\n15: \n16: ---\n17: \n18: ## 1. The container\n19: \n20: `ServerPlayer::Events` is an **`EventStorage` embedded at `ServerPlayer+0x29c`**, size `0x1c`.\n21: \n22: Verified by `ServerPlayer::GetEventStorage` at **0x0080db00**, which is the whole function:\n23: \n24: ```\n25: 0080db00 8d819c020000 lea eax, [ecx + 0x29c]\n26: 0080db06 c3 ret\n27: ```\n28: \n29: `__thiscall EventStorage* ServerPlayer::GetEventStorage(ServerPlayer* this)` — no stack args,\n30: plain `ret`. Every research-path post site either calls it (`ProcessResearch`) or inlines the\n31: `lea ecx,[esi+0x29c]` (`OnTechResearched`, 0x008919ab / 0x0089241d).\n32: \n33: ### `EventStorage` (0x1c bytes) — already in the Ghidra project, now confirmed by code\n34: \n35: | off | type | name | evidence |\n36: |---|---|---|---|\n37: | 0x00 | `void*` | vptr | not touched by the post path |\n38: | 0x04 | `TurnEvents*` | `Events._Myfirst` | 0x008853aa `mov edx,[esi+8]; sub edx,[esi+4]` |\n39: | 0x08 | `TurnEvents*` | `Events._Mylast` | same |\n40: | 0x0c | `TurnEvents*` | `Events._Myend` | vector growth in 0x00885427+ |\n41: | 0x10 | `allocator` | `Events._Alval` | MSVC `_Vector_val` tail, 4 B |\n42: | 0x14 | `int` | **`EvNxID`** | 0x008863e3–0x008863f6 |\n43: | 0x18 | — | padding | struct size 0x1c |\n44: \n45: `EvNxID` lands at **`ServerPlayer+0x2b0`** — exactly the byte run the harness guard reported\n46: as `player+0x2b0:4`. That is now explained, not merely observed.\n47: \n48: The vector element stride is **0x18**: `0x008853b3 mov eax,0x2aaaaaab; imul edx; sar edx,2`\n49: = signed divide by 24.\n50: \n51: ### `TurnEvents` (0x18 bytes) — new\n52: \n53: | off | type | name | evidence |\n54: |---|---|---|---|\n55: | 0x00 | `void*` | vptr | virtual dtor called at 0x00879f21 (`mov edx,[edi]; mov eax,[edx]; push 0; call eax`) |\n56: | 0x04 | `int` | **`EvTurn`** | 0x008853d3 `cmp [edx+4], ebx` (ebx = the turn argument) |\n57: | 0x08 | `PlayerEvent*` | `Events._Myfirst` | `lea ecx,[esi+8]` handed to `vector::push_back` at 0x008863db |\n58: | 0x0c | `PlayerEvent*` | `Events._Mylast` | 0x008863f9 `mov eax,[esi+0xc]` |\n59: | 0x10 | `PlayerEvent*` | `Events._Myend` | |\n60: | 0x14 | `allocator` | `Events._Alval` | |\n61: \n62: ### `PlayerEvent` (0x74 = 116 bytes) — new\n63: \n64: Stride confirmed two independent ways: the duplicate scanner's divisor at 0x00825d5f\n65: (`mov eax,0x8d3dcb09; imul ecx; add edx,ecx; sar edx,6` = signed divide by 116) and the\n66: post function's `mov [eax-0x70], ecx` writing `id` at `element+4` off `_Mylast`.\n67: \n68: | off | type | on-disk tag | set by |\n69: |---|---|---|---|\n70: | 0x00 | `void*` | — | ctor: vftable `0x00a21958` |\n71: | 0x04 | `int` | `EvEID` | `PostEvent`: `EvNxID++` (or the duplicate's id) |\n72: | 0x08 | `std::string` (0x1c) | `EvDsc` | `PostEvent` arg 0 (summary / title) |\n73: | 0x24 | `std::string` (0x1c) | `EvMsg` | `PostEvent` arg 1 (body) |\n74: | 0x40 | `int` | `EvLoc` | `obj ? obj->[+4] : 0` |\n75: | 0x44 | `float[3]` | `EvPos` | `obj ? obj->[+0x18..0x20] : (pos ? *pos : ctor default)` |\n76: | 0x50 | `std::string` (0x1c) | `EvImg` | `PostEvent` arg `img` (`\"\"` if NULL) |\n77: | 0x6c | `int` | `EvAct` | `PostEvent` arg `act`; forced to **2** if `act==0 && !obj && !pos` |\n78: | 0x70 | `int` | `EvCID` | ctor 0; never written by `PostEvent` |\n79: \n80: **Correction to `formula-gaps.md`:** the default `EvPos` is **`FLT_MAX` (0x7f7fffff), not\n81: infinity**. `PlayerEvent::PlayerEvent` (0x0084ee30) copies the three floats from the global\n82: `Vector3` at `0x00af0dc8`, whose bytes are `FF FF 7F 7F` × 3. Confirmed in the save:\n83: `EvPos = 2139095039 (0x7f7fffff)` for `EVENT_RESEARCH_OVERBUDGET`. Writing `+inf`\n84: (0x7f800000) would produce a different save byte and a different oracle hash.\n85: \n86: Ctor also sets `EvEID=0`, `EvLoc=0`, `EvAct=0`, `EvCID=0` and the three strings to `\"\"`\n87: (`0x009e100c`).\n88: \n89: ### Serialization (matches the save exactly)\n90: \n91: `PlayerEvent::Serialize` = vftable slot 1 at **0x00825970**, `__thiscall`, `ret 4`. Tag\n92: pointers all come from the table at `0x00a2bd88` (stride 8): `EvEID EvNxID EvTurn Events\n93: EvPos EvLoc EvMsg EvImg EvDsc EvCID EvAct sasc`. Emission order read off the instruction\n94: stream: `EvEID, EvDsc, EvMsg, EvImg, EvLoc, EvPos, EvAct, EvCID`.\n95: \n96: `TurnEvents` write 0x00825bb0 / read 0x00825c40: `EvTurn` then the nested collection `Events`.\n97: `EventStorage` read 0x00825cc0: `EvNxID` then the nested collection `Events`.\n98: \n99: So on disk the shape is **nested, not flat**:\n100: \n101: ```\n102: Events (EventStorage)\n103: EvNxID : int\n104: Events : n × TurnEvents\n105: EvTurn : int\n106: Events : m × PlayerEvent\n107: EvEID EvDsc EvMsg EvImg EvLoc EvPos{x,y,z} EvAct EvCID\n108: ```\n109: \n110: `findings/objects/save-editor-structs.md:271` models this as\n111: `SimPlayerEventsSaveStruct events (Int32 evNxId; ComplexArray)` — a **flat**\n112: array of events. That is wrong (or at least the R1 C# editor's simplification): the\n113: `ComplexArray` elements are *turn groups*, each holding its own array. `save_reader.py`\n114: parses it correctly today because `Events` falls into the generic tree; nothing needs fixing\n115: in the reader, but the struct note should be corrected.\n116: \n117: ### Ground truth: `verify/results/saves/turn3-state.sav`\n118: \n119: Player index 1 (`/Sim/Player[1]/Events`, file offset 120372):\n120: \n121: ```\n122: EvNxID = 4\n123: EvTurn = 2\n124: EvEID 1 EvDsc \"Ships Constructed At Ke'Dolarra\"\n125: EvMsg \"1 ship built in system Ke'Dolarra\"\n126: EvImg \"EVENT_SHIPS_BUILT\" EvLoc 288 EvPos {-11.9286, 4.71900, 2.31785}\n127: EvAct 0 EvCID 0\n128: EvTurn = 3\n129: EvEID 2 (the same EVENT_SHIPS_BUILT record, next turn)\n130: EvEID 3 EvDsc \"Research Over Budget\"\n131: EvMsg \"Research for Waldo Units has gone overbudget.\"\n132: EvImg \"EVENT_RESEARCH_OVERBUDGET\" EvLoc 0\n133: EvPos {0x7f7fffff, 0x7f7fffff, 0x7f7fffff} EvAct 1 EvCID 0\n134: ```\n135: \n136: Player index 0 has two `EVENT_NO_RESEARCH` records (turns 2 and 3, ids 1 and 2, `EvNxID` 3).\n137: Players 2 and 3 have `EvNxID = 0` and an empty list — note **`EvNxID` starts at 0**, and\n138: `PostEvent` lazily promotes 0 → 1 on the first post (0x008863e3).\n139: \n140: ---\n141: \n142: ## 2. The entry point\n143: \n144: ```c\n145: // 0x008862b0\n146: int __thiscall EventStorage::PostEvent(\n147: EventStorage* this, // ecx\n148: std::string summary, // [ebp+0x08], BY VALUE, 0x1c bytes -> EvDsc\n149: std::string message, // [ebp+0x24], BY VALUE, 0x1c bytes -> EvMsg\n150: void* obj, // [ebp+0x40] may be NULL\n151: Vector3* pos, // [ebp+0x44] may be NULL\n152: int turn, // [ebp+0x48]\n153: const char* img, // [ebp+0x4c] may be NULL -> \"\"\n154: int act); // [ebp+0x50]\n155: // returns the event id; ret 0x4c\n156: ```\n157: \n158: `ret 0x4c` = 76 = 2 × 0x1c (the two by-value `std::string`s) + 5 × 4. Both string arguments\n159: are built **in the caller's frame by `sub esp,0x1c`** and a copy-construct, which is the MSVC\n160: by-value-`std::string` idiom; `PostEvent` frees their buffers itself before returning\n161: (0x00886415–0x00886446), so the caller must not.\n162: \n163: Body, in order (all read from the instruction stream):\n164: \n165: 1. `PlayerEvent ev;` — default ctor `0x0084ee30` on a `[ebp-0x84]` temporary.\n166: 2. `ev.EvDsc = summary; ev.EvMsg = message;` (0x0088630d, 0x0088631a).\n167: 3. `ev.EvLoc = obj ? obj->[+4] : 0` (0x00886322).\n168: 4. `ev.EvImg = img ? img : \"\"` — `\"\"` is `0x009e100c`; length by inline `strlen` (0x00886330).\n169: 5. `ev.EvAct = act`; **if `act == 0 && obj == NULL && pos == NULL` then `ev.EvAct = 2`**\n170: (0x00886353–0x0088636f). This default is easy to miss and changes the save bytes.\n171: 6. Position: `obj` wins (`obj->[+0x18/+0x1c/+0x20]`), else `pos` (`pos->[0/4/8]`), else the\n172: ctor's `FLT_MAX` triple (0x0088637a–0x008863a7).\n173: 7. `PruneOldTurns(turn)` — 0x00879eb0.\n174: 8. `TurnEvents* bucket = GetOrCreateTurnBucket(turn)` — 0x00885380.\n175: 9. `PlayerEvent* dup = FindDuplicate(bucket, &ev)` — 0x00825d40. **If non-NULL, return\n176: `dup->EvEID` and post nothing.**\n177: 10. else `bucket->Events.push_back(ev)`; `if (EvNxID == 0) EvNxID = 1;`\n178: `id = EvNxID++; back().EvEID = id;` return `id`.\n179: \n180: ### `EventStorage::FindDuplicate` — 0x00825d40, `__thiscall (TurnEvents*, PlayerEvent*)`, `ret 8`\n181: \n182: Linear scan of the bucket. Two events are the same when **all** of these match:\n183: `EvAct` (+0x6c), `EvLoc` (+0x40), the three `EvPos` floats (`fucompp`, so bitwise-unequal\n184: NaNs never match but the `FLT_MAX` sentinels always do), `EvMsg` (+0x24) and `EvImg` (+0x50).\n185: **`EvDsc` is NOT compared.** A NULL bucket returns 0 immediately.\n186: \n187: This is why the two identical `EVENT_SHIPS_BUILT` records in `turn3-state.sav` survive as\n188: separate events: they are in different turn buckets, and dedup is per-bucket.\n189: \n190: ### `EventStorage::GetOrCreateTurnBucket` — 0x00885380, `__thiscall (int turn)`, `ret 4`\n191: \n192: Scans `Events` for `EvTurn == turn`; **keeps scanning to the end and returns the *last*\n193: match** (0x008853d0–0x008853de has no early exit). If none, constructs a bucket\n194: (`0x00884cb0`, vtable `0x00a0f07c`), appends, and sets `_Mylast[-1].EvTurn = turn`\n195: (0x0088542d, `mov [eax-0x14], ecx`, i.e. `+4` off the new element at `_Mylast-0x18`).\n196: \n197: ### `EventStorage::PruneOldTurns` — 0x00879eb0, `__thiscall (int turn)`\n198: \n199: Cutoff is `turn - 0x32` (**50 turns**), constant, not from config: `0x00879ec3 add ebx,-0x32`.\n200: \n201: Precisely as coded — and this is a quirk worth reproducing rather than \"fixing\": it walks the\n202: **leading** run of buckets with `EvTurn < cutoff`, leaves `edi` pointing at the **last** one\n203: of that run, and then shifts from `edi` down to `_Myfirst`. So it erases `n-1` buckets, not\n204: `n`: **one stale bucket always survives**, and a single leading stale bucket is never\n205: removed at all (`0x00879ee2 cmp esi,edi; je` returns). It also stops at the first non-stale\n206: bucket, so a stale bucket after a fresh one is never reached.\n207: \n208: ### Convenience wrapper\n209: \n210: `0x00886470` (`ret` and prototype not verified by this lane) posts via `PostEvent` twice at\n211: 0x00886802 / 0x00886b22. **161 call sites in 113 functions** reference `PostEvent` directly —\n212: this is the single event API for the whole simulation, not a research-specific helper.\n213: \n214: ### Turn number\n215: \n216: Every research-path site computes the turn as `*(int*)(*(char**)(player + 8) + 8)`.\n217: `ServerPlayer+8` is the `StrategyServer` *second* base; `0x0080e320` is\n218: `__thiscall void* ServerPlayer::GetServer()` = `[this+8] ? [this+8]-4 : 0`, so the field is\n219: `StrategyServer(primary base)+0x0c`. This matches the B4 finding that `StrategyServer` has\n220: two bases four bytes apart.\n221: \n222: **CORRECTION (lane EV 2026-09-08): that field is the FRAME (the turn counter), not\n223: `ModCount`.** The two are different words and the saves separate them cleanly:\n224: `turn2-state.sav` has `Summary/Turn = 2`, `Sim/Frame = 2` and `Sim/ModCount = 12`, and every\n225: event the turn posted landed in bucket `EvTurn = 2`. If the argument were `ModCount` the\n226: buckets would be 12 and 24. The value is the **post-increment** turn — a turn run from a save\n227: at turn *N* posts into bucket *N+1* — because the frame is bumped in `BeginProcessTurn`,\n228: before either turn driver runs.\n229: \n230: ---\n231: \n232: ## 3. Which events the research path posts\n233: \n234: Order within `ServerPlayer::ProcessTurn` (0x00891340):\n235: \n236: | # | site | event | condition |\n237: |---|---|---|---|\n238: | 1 | `TechTree::ProcessResearch` 0x00587b97 | `EVENT_RESEARCH_OVERBUDGET` | per node, see below |\n239: | 2 | → `SetResearched` → `OnTechResearched` 0x008919b5 | `EVENT_RESEARCH_COMPLETE` / `_UNDERBUDGET` | see below |\n240: | 3 | → `OnTechResearched` 0x00892427 | `EVENT_TEMPERANCE` | temperance tech cured ≥1 addicted system |\n241: | 4 | `TechTree::ProcessResearch` 0x00587ff4 | `EVENT_TECHS_UNLOCKED` | tail loop, ≥1 newly available node |\n242: | 5 | `ProcessTurn` 0x0089168c | `EVENT_NO_RESEARCH` | no target, no affordable tech, tree not exhausted |\n243: \n244: `ProcessResearch`'s two posts bracket the per-node loop: OVERBUDGET fires **inside** the loop\n245: (so once per over-budget node), TECHS_UNLOCKED **once** after it.\n246: \n247: ### 3.1 `EVENT_RESEARCH_OVERBUDGET` — the B3 defect, fully explained\n248: \n249: Posted at **0x00587b97**, in `TechTree::ProcessResearch` (0x005876c0).\n250: \n251: Per-node arithmetic recovered from 0x00587732–0x00587907 (naming `cost =\n252: TechTree::GetNodeCost(node)` = 0x0057da00, `pts = node->points` at `node+0x1c`):\n253: \n254: ```\n255: minPts = max(cost * 50 / 100, 0) ; 0x51eb851f/sar 5 = /100\n256: maxPts = max(minPts, cost * 150 / 100)\n257: wasDone = (pts >= cost) ; [ebp-0xcd], setge @0x005877e1\n258: granted = min(requested, maxPts - pts)\n259: *overbudgetOut += requested - granted ; the out-param accumulates unspent points\n260: pts += granted\n261: nowDone = (pts >= cost) ; [ebp-0xce], setge @0x00587828\n262: \n263: if (pts >= maxPts) chance = 1.0f, draw = 0.0f ; always completes\n264: else if (granted == 0) chance = 0.0f, draw = 1.0f ; never completes, no draw\n265: else chance = (float)(pts - minPts) / maxPts ; NOTE: / maxPts, not /(max-min)\n266: draw = rng.NextFloat()*(1.0-0.0) + 0.0 ; [0x009e1e68] == 0.0\n267: if (owner && owner->Species == 5) ; Zuul\n268: draw = max(draw, rng.NextFloat()*(1.0-0.0)+0.0)\n269: \n270: if (chance < draw) { ; roll FAILED -> tech not completed this turn\n271: if (!wasDone && nowDone && owner) {\n272: PostEvent(EVENT_RESEARCH_OVERBUDGET); node->flag(+0x2c) = 2;\n273: }\n274: } else { ; roll succeeded\n275: log(\"Research completed at %d of %d (%.1f%%). (Odds: %.2f, Roll: %.2f)\\n\", ...)\n276: if (pts/cost < 0.8) node->flag(+0x2c) = 0;\n277: SetResearched(node->def, 2); ; 0x00581e10 -> OnTechResearched\n278: }\n279: ```\n280: \n281: So **over budget means: the node has accumulated at least its full cost, but the completion\n282: roll failed, and this is the first turn that has been true.** `!wasDone` is what makes it\n283: fire exactly once per node.\n284: \n285: The record it posts:\n286: \n287: | field | value | evidence |\n288: |---|---|---|\n289: | `EvDsc` | `\"Research Over Budget\"` | key `EVENTSUM_RESEARCH_OVERBUDGET`, slot `0x00ae48e0`, thunk key at `0x00a00cac` |\n290: | `EvMsg` | `\"Research for %s has gone overbudget.\"` % `node->def->name` | key `EVENTMSG_RESEARCH_OVERBUDGET`, slot `0x00ae48e8`, key at `0x00a00ccc` |\n291: | `EvImg` | `\"EVENT_RESEARCH_OVERBUDGET\"` | literal `0x00a0078c`, pushed at 0x00587b24 |\n292: | `EvLoc` | `0` | `obj = NULL` (0x00587b2c) |\n293: | `EvPos` | `{FLT_MAX, FLT_MAX, FLT_MAX}` | `pos = NULL` → ctor default |\n294: | `EvAct` | `1` | literal, 0x00587b22 |\n295: | `EvCID` | `0` | ctor |\n296: \n297: Both strings go through `0x008c97f0` (`__cdecl` format-into-`std::string`, 8 stack args:\n298: `out, fmt, a1..a6`) with the tech name as the single substitution; the summary format\n299: contains no `%s`, so it comes out literal. The tech name is `def+0x40` (a `std::string`;\n300: `_Myres` at `+0x54` selects heap vs. inline buffer, 0x00587a1d).\n301: \n302: **Save cross-check:** `turn3-state.sav`, player 1, turn-3 bucket, `EvEID 3` is exactly this\n303: record, with `EvMsg \"Research for Waldo Units has gone overbudget.\"` — the format string, the\n304: `%s` substitution, `EvAct 1`, `EvLoc 0` and the `FLT_MAX` position all match byte for byte.\n305: \n306: ### 3.2 `EVENT_RESEARCH_COMPLETE` / `EVENT_RESEARCH_UNDERBUDGET`\n307: \n308: Posted at **0x008919b5** in `ServerPlayer::OnTechResearched` (0x00891790), guarded by\n309: `if (!silent)` (0x00891804 `cmp byte [ebp+0xc], 0; jne`).\n310: \n311: ```\n312: ratio = TechTree::GetProgressRatio(tree, def) ; 0x0057e950, float\n313: if (ratio >= 0.8f) img = \"EVENT_RESEARCH_COMPLETE\" (0x00a33368)\n314: sum = EVENTSUM_RESEARCH_COMPLETE (slot 0x00af09e8)\n315: msg = EVENTMSG_RESEARCH_COMPLETE (slot 0x00af09f0)\n316: else img = \"EVENT_RESEARCH_UNDERBUDGET\" (0x00a33380)\n317: sum = EVENTSUM_RESEARCH_UNDERBUDGET(slot 0x00af09f8)\n318: msg = EVENTMSG_RESEARCH_UNDERBUDGET(slot 0x00af0a00)\n319: PostEvent(sum, snprintf(msg, 0x100, def->name), NULL, NULL, turn, img, 1)\n320: ```\n321: \n322: The 0.8 constant is the `double` at `0x009e20c8` = `0.800000011920929`, i.e. `(double)0.8f` —\n323: the comparison is `fcomp` of the `float` ratio against that double. Text:\n324: \n325: * `EVENTSUM_RESEARCH_COMPLETE` = `\"Research Complete\"`,\n326: `EVENTMSG_RESEARCH_COMPLETE` = `\"Tech %s has been acquired\"`\n327: * `EVENTSUM_RESEARCH_UNDERBUDGET` = `\"Research Breakthrough!\"`,\n328: `EVENTMSG_RESEARCH_UNDERBUDGET` = `\"Your scientists made a breakthrough with %s. Research has completed ahead of schedule!\"`\n329: \n330: `EvAct = 1`, `obj = pos = NULL`, so `EvLoc = 0` and `EvPos = FLT_MAX³`. Message buffer is a\n331: 0x100-byte stack buffer formatted with `0x008c8eb0` (`_snprintf`-shaped, 9 args), then\n332: assigned into a `std::string`, so **a message longer than 255 chars is truncated** — a real\n333: behaviour to reproduce.\n334: \n335: Note the naming is counter-intuitive: `UNDERBUDGET` is the *cheap* completion (ratio < 0.8).\n336: \n337: ### 3.3 `EVENT_TEMPERANCE`\n338: \n339: Posted at **0x00892427**, same function, after the per-species temperance sweep\n340: (0x00892280–0x008922b9: for each species with flag bit 5, cure every owned addicted system\n341: via 0x00745e40 / 0x00743800). Guarded by `!silent` **and** by a local \"something was cured\"\n342: flag (`[ebp-0x189]`, set at 0x008922a6). Strings `EVENTSUM_ADDICTION_TEMPERENCE` /\n343: `EVENTMSG_ADDICTION_TEMPERENCE` (slots `0x00af0a88` / `0x00af0a90`, note the shipped\n344: misspelling \"TEMPERENCE\").\n345: \n346: `EvImg = \"EVENT_TEMPERANCE\"` (0x00a33340), `obj = pos = NULL`, and **`EvAct = 0`** — which\n347: means rule 5 of `PostEvent` fires and the stored `EvAct` becomes **2**, not 0. Any\n348: reimplementation that stores the literal 0 will differ from the oracle here.\n349: \n350: ### 3.4 `EVENT_TECHS_UNLOCKED`\n351: \n352: Posted at **0x00587ff4**, at the tail of `ProcessResearch` (loop at 0x00587cc3). Collects\n353: every node `n` where `n != NULL`, `n->def != NULL`, `tree->nodes[n->def->index] != NULL`,\n354: that node's **`state` (`+0x14`) `== 2` (available)**, and **`n->turnAvailable` (`+0x20`)\n355: `== currentTurn`** (0x00587cfc–0x00587d42). If the collected vector is non-empty it posts\n356: once.\n357: \n358: *Correction to `strategic-turn-internals.md:233`*, which reads the condition as \"state==2 &&\n359: turnAvailable == currentTurn **&& parent researched**\". There is no parent test: the\n360: `mov ecx,[ecx]; mov eax,[eax+ecx*4]` pair at 0x00587d0d–0x00587d19 dereferences `n->def` and\n361: then indexes `tree->nodes` by `def->[0]`, which is the tech's **own** index (the same\n362: indirection the entry loop uses at 0x00587738–0x00587740). It resolves back to `n` itself;\n363: the two null checks around it are defensive. The state test is therefore on `n`, not on a\n364: parent.\n365: \n366: `EvDsc` = `EVENTSUM_UNLOCKEDTECHS` (slot `0x00ae48f0`) = `\"New Technologies Available\"`.\n367: `EvMsg` = `EVENTMSG_UNLOCKEDTECHS` (slot `0x00ae48f8`) =\n368: `\"The following technologies are now available for research:\"` followed by, per node, the\n369: separator string at `0x009e4588` and the node's `def->name` (0x00587f46–0x00587f82).\n370: `EvImg` = literal `\"EVENT_TECHS_UNLOCKED\"` (`0x00a00774`, length pushed as 0x14).\n371: `EvAct = 1`, `obj = pos = NULL`.\n372: \n373: ### 3.5 `EVENT_NO_RESEARCH`\n374: \n375: Posted at **0x0089168c** in `ServerPlayer::ProcessTurn`. Condition (0x0089162a–0x0089167e):\n376: \n377: ```\n378: if (player->ResT (+0x294) == NULL)\n379: TechTree::CollectResearchedTechs(&out, turn, INT_MAX, sort=1) ; 0x00584e50\n380: if (out.empty() && TechTree::FindFirstAvailableTech() != NULL) ; 0x0057da90\n381: PostEvent(EVENTSUM_NO_RESEARCH, EVENTMSG_NO_RESEARCH, NULL, NULL, turn,\n382: \"EVENT_NO_RESEARCH\" (0x00a3332c), 1)\n383: ```\n384: \n385: Both strings are `\"No Research Project Assigned.\"` — matches `turn3-state.sav` player 0\n386: exactly (`EvAct 1`, `EvLoc 0`, `EvPos` FLT_MAX³).\n387: \n388: **CORRECTION (lane EV 2026-09-08) to this section as first written.** 0x00584e50 was named\n389: here as a `ListAvailableTechs` and the middle test read as \"no affordable tech\". It is\n390: `TechTree::CollectResearchedTechs` (lane T read the whole body; the call site's argument order\n391: was re-read here byte for byte from 0x00891600), and the test is about what was **researched**,\n392: not about what is available:\n393: \n394: 1. `ResT == NULL` — the player holds no research target;\n395: 2. **no tech has `state == 4` (researched) with `turnResearched (+0x24) >= turn`**, i.e.\n396: nothing finished on this turn or later. The turn is passed as the collector's `minTurn`\n397: and the range runs to `INT_MAX`;\n398: 3. at least one node is in `state == 2` (available) — that is the availability half, and it is\n399: what excludes the four monster factions, whose entire tree is state 4.\n400: \n401: Test 2 is not decoration and the corpus exercises it: in `zuul-turn23-fleet23.sav` the human\n402: posts `EVENT_RESEARCH_COMPLETE` on turn 22 and **no** no-research event that turn, then\n403: `EVENT_NO_RESEARCH` again on turn 23. `sots-engine`'s P11 implements all three tests; before\n404: this lane it implemented tests 1 and 3 only, and over-fired.\n405: \n406: Test 1 is the one a save cannot answer. `ResTNm` on the wire is the target the file was\n407: **written** with; on the reference pair all four real players start the turn with none and\n408: three of them acquire one *during* it, which is AI research selection. Across all eleven\n409: corpus saves no AI player ever posts `EVENT_NO_RESEARCH` (~90 player-turns) while the human\n410: posts it on every turn it lacks a target — stated as a hypothesis, with the operator's\n411: `--ai-player` roster standing in for the missing input.\n412: \n413: Also in this window (0x008915ec–0x00891624): `RollResearchEvent` (0x0088df20) is called when\n414: `ResT != NULL && ResErrRoll(+0x3b4) != 0 && (const at 0x00a2c788) < progressRatio`, then\n415: `ResErrRoll` is cleared — the same draw the B2/B3 lanes measured. `RollResearchAccident`\n416: (0x00889dc0) posts the `EVENT_LABACCIDENT_*` family; not traced here.\n417: \n418: ---\n419: \n420: ## 4. What is *not* verified\n421: \n422: * `0x00886470` — the wrapper that also calls `PostEvent`. Its prototype and its two call\n423: paths were not read; I only established that it exists and is not on the research path.\n424: * `TurnEvents`' vptr/vtable contents beyond slot 0 (the virtual dtor used by the pruner).\n425: * The `sasc` tag at `0x00a2bde0` — adjacent to the event tag block, owner unknown.\n426: * Whether `PostEvent`'s dedup can ever collapse two research events in practice. It cannot\n427: for OVERBUDGET vs COMPLETE (different `EvImg`), but two *different techs* going over budget\n428: in the same turn differ only in `EvMsg`, which **is** compared — so both are kept. Verified\n429: by reading the comparator, not by observing it.\n430: * `EventStorage::Write` (the save-side counterpart of 0x00825cc0) was not located; only the\n431: read/`0x8b9d50` direction and the two `TurnEvents` directions were disassembled. The field\n432: order is identical in both directions and is confirmed by the save, so this is a gap in\n433: coverage, not in confidence about the layout.\n434: * The 50-turn prune has never been observed running (our saves are at turn ≤ 3).\n435: \n436: ---\n437: \n438: ## 5. What a turn actually posts (lane EV 2026-09-08, measured over all 11 saves)\n439: \n440: Read out of the corpus with `verify/state-checksum/state_checksum.py`, not derived. Every\n441: `EvImg` value, bucket and id below is a file fact.\n442: \n443: **Only two players in the whole corpus ever hold an event.** `PlyrIdx 0` (the human) and\n444: `PlyrIdx 1` (the one AI empire that owns colonies). `PlyrIdx 2..3` are the dormant shadow\n445: empires — `Sav = 0`, no colonies — and although they *do* pick research targets every turn,\n446: their `EvNxID` is 0 on every save. `PlyrIdx 4..7` are the monster factions, whose whole tech\n447: tree is state 4 and whose `EvNxID` is likewise 0 throughout. So \"who posts\" is not a property\n448: of the event API; it is a property of who does anything.\n449: \n450: ### The reference pair\n451: \n452: | pair | player | bucket | id | image | EvAct | EvLoc |\n453: |---|---|---|---|---|---|---|\n454: | turn1 -> turn2 | 0 | `EvTurn=2` | 1 | `EVENT_NO_RESEARCH` | 1 | 0 |\n455: | turn1 -> turn2 | 1 | `EvTurn=2` | 1 | `EVENT_SHIPS_BUILT` | 0 | 288 |\n456: | turn2 -> turn3 | 0 | `EvTurn=3` | 2 | `EVENT_NO_RESEARCH` | 1 | 0 |\n457: | turn2 -> turn3 | 1 | `EvTurn=3` | 2 | `EVENT_SHIPS_BUILT` | 0 | 288 |\n458: | turn2 -> turn3 | 1 | `EvTurn=3` | 3 | `EVENT_RESEARCH_OVERBUDGET` | 1 | 0 |\n459: \n460: **Order within a player is readable off the ids**: on turn 3 player 1's construction event is\n461: id 2 and its research event id 3, so **the build pass posts before the research pass**. Ids\n462: are per player (`EvNxID` is on the player's own storage), so no cross-player order is\n463: observable from a save and none should be assumed.\n464: \n465: `EVENT_SHIPS_BUILT` carries `EvAct = 0` **as stored**, because it has a subject (`EvLoc` 288,\n466: a real position) — the `act == 0 && !obj && !pos -> 2` rule does not fire. The only stored\n467: `EvAct = 2` in the corpus is `EVENT_LABACCIDENT_SMALL`.\n468: \n469: ### Every image the corpus contains\n470: \n471: `EVENT_NO_RESEARCH`, `EVENT_SHIPS_BUILT`, `EVENT_RESEARCH_COMPLETE`, `EVENT_TECHS_UNLOCKED`,\n472: `EVENT_RESEARCH_OVERBUDGET`, `EVENT_FLEET_ARRIVED`, `EVENT_FLEET_EXPLORED`,\n473: `EVENT_FLEET_MULTIPOINT_NONODE`, `EVENT_LABACCIDENT_SMALL`, `EVENT_COLONY_NEWSETTLERS`,\n474: `EVENT_ENEMY_INCOMING_Human`. The last is worth noting: the **event type is the `EvImg`\n475: string and it is composed at run time** — `_Human` is a species suffix, so the type space is\n476: not a fixed enumeration and never was.\n477: \n478: ### Text keys used, from `Locale/EN/Strings.csv`\n479: \n480: `EVENTSUM_SHIPS_BUILT` = `Ships Constructed At %s`; `EVENTMSG_SHIPS_BUILT_1SHIP` =\n481: `1 ship built in system %s`; `EVENTMSG_SHIPS_BUILT_NSHIPS` = `%s ships built in system %s`.\n482: So the construction event picks between **two** message keys on the ship count, and the count\n483: is substituted as a `%s`. Both `EVENTSUM_NO_RESEARCH` and `EVENTMSG_NO_RESEARCH` are the same\n484: string and take no parameter.\n485: \n486: ### Wired into `sots-engine`\n487: \n488: `src/app/event_phase.{h,cpp}` bridges the save's event subtree to `game::events` and P11 posts\n489: through it. On the reference pair, with the data root and the AI roster supplied and\n490: `--commit-blocked=P11`: **4 leaves closed on turn1->turn2 and 3 on turn2->turn3, 0 regressed**,\n491: and the posted record agrees with the oracle on every one of its eight fields. Engine-side\n492: write-up: `sots-engine docs/EV-events.md`.\n\n(End of file - total 492 lines)\n","metadata":{"preview":"# Player event posting API (lane E, 2026-09-08)\n\nTarget: recover the API the game uses to post player-visible turn events, so the\nreimplementation can post them and so the compare harness can *see* them.\n\nMotivation: `TechTree::ProcessResearch` (P2-B3) failed its replace-mode oracle by exactly\none item across 40,300 — an unposted `EVENT_RESEARCH_OVERBUDGET`. `ServerPlayer::\nOnTechResearched` (P2-B2) has the same gap. Until events are modelled, both \"0 divergence\"\nverdicts bound the economy fields only.\n\n**Everything below with an address was read out of the instruction stream** (bytes fetched\nwith `read-memory` over the ReVa HTTP shim, disassembled locally with capstone) unless the\nline says *inferred*. Layout claims are additionally confirmed against three real saves via\n`verify/save-reader/save_reader.py`.\n\n---\n\n## 1. The container\n\n`ServerPlayer::Events` is an **`EventStorage` embedded at `ServerPlayer+0x29c`**, size `0x1c`.","truncated":false,"loaded":[],"display":{"type":"file","path":"/tmp/opencode/sots-final-research-re/findings/subsystems/events.md","text":"# Player event posting API (lane E, 2026-09-08)\n\nTarget: recover the API the game uses to post player-visible turn events, so the\nreimplementation can post them and so the compare harness can *see* them.\n\nMotivation: `TechTree::ProcessResearch` (P2-B3) failed its replace-mode oracle by exactly\none item across 40,300 — an unposted `EVENT_RESEARCH_OVERBUDGET`. `ServerPlayer::\nOnTechResearched` (P2-B2) has the same gap. Until events are modelled, both \"0 divergence\"\nverdicts bound the economy fields only.\n\n**Everything below with an address was read out of the instruction stream** (bytes fetched\nwith `read-memory` over the ReVa HTTP shim, disassembled locally with capstone) unless the\nline says *inferred*. Layout claims are additionally confirmed against three real saves via\n`verify/save-reader/save_reader.py`.\n\n---\n\n## 1. The container\n\n`ServerPlayer::Events` is an **`EventStorage` embedded at `ServerPlayer+0x29c`**, size `0x1c`.\n\nVerified by `ServerPlayer::GetEventStorage` at **0x0080db00**, which is the whole function:\n\n```\n0080db00 8d819c020000 lea eax, [ecx + 0x29c]\n0080db06 c3 ret\n```\n\n`__thiscall EventStorage* ServerPlayer::GetEventStorage(ServerPlayer* this)` — no stack args,\nplain `ret`. Every research-path post site either calls it (`ProcessResearch`) or inlines the\n`lea ecx,[esi+0x29c]` (`OnTechResearched`, 0x008919ab / 0x0089241d).\n\n### `EventStorage` (0x1c bytes) — already in the Ghidra project, now confirmed by code\n\n| off | type | name | evidence |\n|---|---|---|---|\n| 0x00 | `void*` | vptr | not touched by the post path |\n| 0x04 | `TurnEvents*` | `Events._Myfirst` | 0x008853aa `mov edx,[esi+8]; sub edx,[esi+4]` |\n| 0x08 | `TurnEvents*` | `Events._Mylast` | same |\n| 0x0c | `TurnEvents*` | `Events._Myend` | vector growth in 0x00885427+ |\n| 0x10 | `allocator` | `Events._Alval` | MSVC `_Vector_val` tail, 4 B |\n| 0x14 | `int` | **`EvNxID`** | 0x008863e3–0x008863f6 |\n| 0x18 | — | padding | struct size 0x1c |\n\n`EvNxID` lands at **`ServerPlayer+0x2b0`** — exactly the byte run the harness guard reported\nas `player+0x2b0:4`. That is now explained, not merely observed.\n\nThe vector element stride is **0x18**: `0x008853b3 mov eax,0x2aaaaaab; imul edx; sar edx,2`\n= signed divide by 24.\n\n### `TurnEvents` (0x18 bytes) — new\n\n| off | type | name | evidence |\n|---|---|---|---|\n| 0x00 | `void*` | vptr | virtual dtor called at 0x00879f21 (`mov edx,[edi]; mov eax,[edx]; push 0; call eax`) |\n| 0x04 | `int` | **`EvTurn`** | 0x008853d3 `cmp [edx+4], ebx` (ebx = the turn argument) |\n| 0x08 | `PlayerEvent*` | `Events._Myfirst` | `lea ecx,[esi+8]` handed to `vector::push_back` at 0x008863db |\n| 0x0c | `PlayerEvent*` | `Events._Mylast` | 0x008863f9 `mov eax,[esi+0xc]` |\n| 0x10 | `PlayerEvent*` | `Events._Myend` | |\n| 0x14 | `allocator` | `Events._Alval` | |\n\n### `PlayerEvent` (0x74 = 116 bytes) — new\n\nStride confirmed two independent ways: the duplicate scanner's divisor at 0x00825d5f\n(`mov eax,0x8d3dcb09; imul ecx; add edx,ecx; sar edx,6` = signed divide by 116) and the\npost function's `mov [eax-0x70], ecx` writing `id` at `element+4` off `_Mylast`.\n\n| off | type | on-disk tag | set by |\n|---|---|---|---|\n| 0x00 | `void*` | — | ctor: vftable `0x00a21958` |\n| 0x04 | `int` | `EvEID` | `PostEvent`: `EvNxID++` (or the duplicate's id) |\n| 0x08 | `std::string` (0x1c) | `EvDsc` | `PostEvent` arg 0 (summary / title) |\n| 0x24 | `std::string` (0x1c) | `EvMsg` | `PostEvent` arg 1 (body) |\n| 0x40 | `int` | `EvLoc` | `obj ? obj->[+4] : 0` |\n| 0x44 | `float[3]` | `EvPos` | `obj ? obj->[+0x18..0x20] : (pos ? *pos : ctor default)` |\n| 0x50 | `std::string` (0x1c) | `EvImg` | `PostEvent` arg `img` (`\"\"` if NULL) |\n| 0x6c | `int` | `EvAct` | `PostEvent` arg `act`; forced to **2** if `act==0 && !obj && !pos` |\n| 0x70 | `int` | `EvCID` | ctor 0; never written by `PostEvent` |\n\n**Correction to `formula-gaps.md`:** the default `EvPos` is **`FLT_MAX` (0x7f7fffff), not\ninfinity**. `PlayerEvent::PlayerEvent` (0x0084ee30) copies the three floats from the global\n`Vector3` at `0x00af0dc8`, whose bytes are `FF FF 7F 7F` × 3. Confirmed in the save:\n`EvPos = 2139095039 (0x7f7fffff)` for `EVENT_RESEARCH_OVERBUDGET`. Writing `+inf`\n(0x7f800000) would produce a different save byte and a different oracle hash.\n\nCtor also sets `EvEID=0`, `EvLoc=0`, `EvAct=0`, `EvCID=0` and the three strings to `\"\"`\n(`0x009e100c`).\n\n### Serialization (matches the save exactly)\n\n`PlayerEvent::Serialize` = vftable slot 1 at **0x00825970**, `__thiscall`, `ret 4`. Tag\npointers all come from the table at `0x00a2bd88` (stride 8): `EvEID EvNxID EvTurn Events\nEvPos EvLoc EvMsg EvImg EvDsc EvCID EvAct sasc`. Emission order read off the instruction\nstream: `EvEID, EvDsc, EvMsg, EvImg, EvLoc, EvPos, EvAct, EvCID`.\n\n`TurnEvents` write 0x00825bb0 / read 0x00825c40: `EvTurn` then the nested collection `Events`.\n`EventStorage` read 0x00825cc0: `EvNxID` then the nested collection `Events`.\n\nSo on disk the shape is **nested, not flat**:\n\n```\nEvents (EventStorage)\n EvNxID : int\n Events : n × TurnEvents\n EvTurn : int\n Events : m × PlayerEvent\n EvEID EvDsc EvMsg EvImg EvLoc EvPos{x,y,z} EvAct EvCID\n```\n\n`findings/objects/save-editor-structs.md:271` models this as\n`SimPlayerEventsSaveStruct events (Int32 evNxId; ComplexArray)` — a **flat**\narray of events. That is wrong (or at least the R1 C# editor's simplification): the\n`ComplexArray` elements are *turn groups*, each holding its own array. `save_reader.py`\nparses it correctly today because `Events` falls into the generic tree; nothing needs fixing\nin the reader, but the struct note should be corrected.\n\n### Ground truth: `verify/results/saves/turn3-state.sav`\n\nPlayer index 1 (`/Sim/Player[1]/Events`, file offset 120372):\n\n```\nEvNxID = 4\n EvTurn = 2\n EvEID 1 EvDsc \"Ships Constructed At Ke'Dolarra\"\n EvMsg \"1 ship built in system Ke'Dolarra\"\n EvImg \"EVENT_SHIPS_BUILT\" EvLoc 288 EvPos {-11.9286, 4.71900, 2.31785}\n EvAct 0 EvCID 0\n EvTurn = 3\n EvEID 2 (the same EVENT_SHIPS_BUILT record, next turn)\n EvEID 3 EvDsc \"Research Over Budget\"\n EvMsg \"Research for Waldo Units has gone overbudget.\"\n EvImg \"EVENT_RESEARCH_OVERBUDGET\" EvLoc 0\n EvPos {0x7f7fffff, 0x7f7fffff, 0x7f7fffff} EvAct 1 EvCID 0\n```\n\nPlayer index 0 has two `EVENT_NO_RESEARCH` records (turns 2 and 3, ids 1 and 2, `EvNxID` 3).\nPlayers 2 and 3 have `EvNxID = 0` and an empty list — note **`EvNxID` starts at 0**, and\n`PostEvent` lazily promotes 0 → 1 on the first post (0x008863e3).\n\n---\n\n## 2. The entry point\n\n```c\n// 0x008862b0\nint __thiscall EventStorage::PostEvent(\n EventStorage* this, // ecx\n std::string summary, // [ebp+0x08], BY VALUE, 0x1c bytes -> EvDsc\n std::string message, // [ebp+0x24], BY VALUE, 0x1c bytes -> EvMsg\n void* obj, // [ebp+0x40] may be NULL\n Vector3* pos, // [ebp+0x44] may be NULL\n int turn, // [ebp+0x48]\n const char* img, // [ebp+0x4c] may be NULL -> \"\"\n int act); // [ebp+0x50]\n// returns the event id; ret 0x4c\n```\n\n`ret 0x4c` = 76 = 2 × 0x1c (the two by-value `std::string`s) + 5 × 4. Both string arguments\nare built **in the caller's frame by `sub esp,0x1c`** and a copy-construct, which is the MSVC\nby-value-`std::string` idiom; `PostEvent` frees their buffers itself before returning\n(0x00886415–0x00886446), so the caller must not.\n\nBody, in order (all read from the instruction stream):\n\n1. `PlayerEvent ev;` — default ctor `0x0084ee30` on a `[ebp-0x84]` temporary.\n2. `ev.EvDsc = summary; ev.EvMsg = message;` (0x0088630d, 0x0088631a).\n3. `ev.EvLoc = obj ? obj->[+4] : 0` (0x00886322).\n4. `ev.EvImg = img ? img : \"\"` — `\"\"` is `0x009e100c`; length by inline `strlen` (0x00886330).\n5. `ev.EvAct = act`; **if `act == 0 && obj == NULL && pos == NULL` then `ev.EvAct = 2`**\n (0x00886353–0x0088636f). This default is easy to miss and changes the save bytes.\n6. Position: `obj` wins (`obj->[+0x18/+0x1c/+0x20]`), else `pos` (`pos->[0/4/8]`), else the\n ctor's `FLT_MAX` triple (0x0088637a–0x008863a7).\n7. `PruneOldTurns(turn)` — 0x00879eb0.\n8. `TurnEvents* bucket = GetOrCreateTurnBucket(turn)` — 0x00885380.\n9. `PlayerEvent* dup = FindDuplicate(bucket, &ev)` — 0x00825d40. **If non-NULL, return\n `dup->EvEID` and post nothing.**\n10. else `bucket->Events.push_back(ev)`; `if (EvNxID == 0) EvNxID = 1;`\n `id = EvNxID++; back().EvEID = id;` return `id`.\n\n### `EventStorage::FindDuplicate` — 0x00825d40, `__thiscall (TurnEvents*, PlayerEvent*)`, `ret 8`\n\nLinear scan of the bucket. Two events are the same when **all** of these match:\n`EvAct` (+0x6c), `EvLoc` (+0x40), the three `EvPos` floats (`fucompp`, so bitwise-unequal\nNaNs never match but the `FLT_MAX` sentinels always do), `EvMsg` (+0x24) and `EvImg` (+0x50).\n**`EvDsc` is NOT compared.** A NULL bucket returns 0 immediately.\n\nThis is why the two identical `EVENT_SHIPS_BUILT` records in `turn3-state.sav` survive as\nseparate events: they are in different turn buckets, and dedup is per-bucket.\n\n### `EventStorage::GetOrCreateTurnBucket` — 0x00885380, `__thiscall (int turn)`, `ret 4`\n\nScans `Events` for `EvTurn == turn`; **keeps scanning to the end and returns the *last*\nmatch** (0x008853d0–0x008853de has no early exit). If none, constructs a bucket\n(`0x00884cb0`, vtable `0x00a0f07c`), appends, and sets `_Mylast[-1].EvTurn = turn`\n(0x0088542d, `mov [eax-0x14], ecx`, i.e. `+4` off the new element at `_Mylast-0x18`).\n\n### `EventStorage::PruneOldTurns` — 0x00879eb0, `__thiscall (int turn)`\n\nCutoff is `turn - 0x32` (**50 turns**), constant, not from config: `0x00879ec3 add ebx,-0x32`.\n\nPrecisely as coded — and this is a quirk worth reproducing rather than \"fixing\": it walks the\n**leading** run of buckets with `EvTurn < cutoff`, leaves `edi` pointing at the **last** one\nof that run, and then shifts from `edi` down to `_Myfirst`. So it erases `n-1` buckets, not\n`n`: **one stale bucket always survives**, and a single leading stale bucket is never\nremoved at all (`0x00879ee2 cmp esi,edi; je` returns). It also stops at the first non-stale\nbucket, so a stale bucket after a fresh one is never reached.\n\n### Convenience wrapper\n\n`0x00886470` (`ret` and prototype not verified by this lane) posts via `PostEvent` twice at\n0x00886802 / 0x00886b22. **161 call sites in 113 functions** reference `PostEvent` directly —\nthis is the single event API for the whole simulation, not a research-specific helper.\n\n### Turn number\n\nEvery research-path site computes the turn as `*(int*)(*(char**)(player + 8) + 8)`.\n`ServerPlayer+8` is the `StrategyServer` *second* base; `0x0080e320` is\n`__thiscall void* ServerPlayer::GetServer()` = `[this+8] ? [this+8]-4 : 0`, so the field is\n`StrategyServer(primary base)+0x0c`. This matches the B4 finding that `StrategyServer` has\ntwo bases four bytes apart.\n\n**CORRECTION (lane EV 2026-09-08): that field is the FRAME (the turn counter), not\n`ModCount`.** The two are different words and the saves separate them cleanly:\n`turn2-state.sav` has `Summary/Turn = 2`, `Sim/Frame = 2` and `Sim/ModCount = 12`, and every\nevent the turn posted landed in bucket `EvTurn = 2`. If the argument were `ModCount` the\nbuckets would be 12 and 24. The value is the **post-increment** turn — a turn run from a save\nat turn *N* posts into bucket *N+1* — because the frame is bumped in `BeginProcessTurn`,\nbefore either turn driver runs.\n\n---\n\n## 3. Which events the research path posts\n\nOrder within `ServerPlayer::ProcessTurn` (0x00891340):\n\n| # | site | event | condition |\n|---|---|---|---|\n| 1 | `TechTree::ProcessResearch` 0x00587b97 | `EVENT_RESEARCH_OVERBUDGET` | per node, see below |\n| 2 | → `SetResearched` → `OnTechResearched` 0x008919b5 | `EVENT_RESEARCH_COMPLETE` / `_UNDERBUDGET` | see below |\n| 3 | → `OnTechResearched` 0x00892427 | `EVENT_TEMPERANCE` | temperance tech cured ≥1 addicted system |\n| 4 | `TechTree::ProcessResearch` 0x00587ff4 | `EVENT_TECHS_UNLOCKED` | tail loop, ≥1 newly available node |\n| 5 | `ProcessTurn` 0x0089168c | `EVENT_NO_RESEARCH` | no target, no affordable tech, tree not exhausted |\n\n`ProcessResearch`'s two posts bracket the per-node loop: OVERBUDGET fires **inside** the loop\n(so once per over-budget node), TECHS_UNLOCKED **once** after it.\n\n### 3.1 `EVENT_RESEARCH_OVERBUDGET` — the B3 defect, fully explained\n\nPosted at **0x00587b97**, in `TechTree::ProcessResearch` (0x005876c0).\n\nPer-node arithmetic recovered from 0x00587732–0x00587907 (naming `cost =\nTechTree::GetNodeCost(node)` = 0x0057da00, `pts = node->points` at `node+0x1c`):\n\n```\nminPts = max(cost * 50 / 100, 0) ; 0x51eb851f/sar 5 = /100\nmaxPts = max(minPts, cost * 150 / 100)\nwasDone = (pts >= cost) ; [ebp-0xcd], setge @0x005877e1\ngranted = min(requested, maxPts - pts)\n*overbudgetOut += requested - granted ; the out-param accumulates unspent points\npts += granted\nnowDone = (pts >= cost) ; [ebp-0xce], setge @0x00587828\n\nif (pts >= maxPts) chance = 1.0f, draw = 0.0f ; always completes\nelse if (granted == 0) chance = 0.0f, draw = 1.0f ; never completes, no draw\nelse chance = (float)(pts - minPts) / maxPts ; NOTE: / maxPts, not /(max-min)\n draw = rng.NextFloat()*(1.0-0.0) + 0.0 ; [0x009e1e68] == 0.0\n if (owner && owner->Species == 5) ; Zuul\n draw = max(draw, rng.NextFloat()*(1.0-0.0)+0.0)\n\nif (chance < draw) { ; roll FAILED -> tech not completed this turn\n if (!wasDone && nowDone && owner) {\n PostEvent(EVENT_RESEARCH_OVERBUDGET); node->flag(+0x2c) = 2;\n }\n} else { ; roll succeeded\n log(\"Research completed at %d of %d (%.1f%%). (Odds: %.2f, Roll: %.2f)\\n\", ...)\n if (pts/cost < 0.8) node->flag(+0x2c) = 0;\n SetResearched(node->def, 2); ; 0x00581e10 -> OnTechResearched\n}\n```\n\nSo **over budget means: the node has accumulated at least its full cost, but the completion\nroll failed, and this is the first turn that has been true.** `!wasDone` is what makes it\nfire exactly once per node.\n\nThe record it posts:\n\n| field | value | evidence |\n|---|---|---|\n| `EvDsc` | `\"Research Over Budget\"` | key `EVENTSUM_RESEARCH_OVERBUDGET`, slot `0x00ae48e0`, thunk key at `0x00a00cac` |\n| `EvMsg` | `\"Research for %s has gone overbudget.\"` % `node->def->name` | key `EVENTMSG_RESEARCH_OVERBUDGET`, slot `0x00ae48e8`, key at `0x00a00ccc` |\n| `EvImg` | `\"EVENT_RESEARCH_OVERBUDGET\"` | literal `0x00a0078c`, pushed at 0x00587b24 |\n| `EvLoc` | `0` | `obj = NULL` (0x00587b2c) |\n| `EvPos` | `{FLT_MAX, FLT_MAX, FLT_MAX}` | `pos = NULL` → ctor default |\n| `EvAct` | `1` | literal, 0x00587b22 |\n| `EvCID` | `0` | ctor |\n\nBoth strings go through `0x008c97f0` (`__cdecl` format-into-`std::string`, 8 stack args:\n`out, fmt, a1..a6`) with the tech name as the single substitution; the summary format\ncontains no `%s`, so it comes out literal. The tech name is `def+0x40` (a `std::string`;\n`_Myres` at `+0x54` selects heap vs. inline buffer, 0x00587a1d).\n\n**Save cross-check:** `turn3-state.sav`, player 1, turn-3 bucket, `EvEID 3` is exactly this\nrecord, with `EvMsg \"Research for Waldo Units has gone overbudget.\"` — the format string, the\n`%s` substitution, `EvAct 1`, `EvLoc 0` and the `FLT_MAX` position all match byte for byte.\n\n### 3.2 `EVENT_RESEARCH_COMPLETE` / `EVENT_RESEARCH_UNDERBUDGET`\n\nPosted at **0x008919b5** in `ServerPlayer::OnTechResearched` (0x00891790), guarded by\n`if (!silent)` (0x00891804 `cmp byte [ebp+0xc], 0; jne`).\n\n```\nratio = TechTree::GetProgressRatio(tree, def) ; 0x0057e950, float\nif (ratio >= 0.8f) img = \"EVENT_RESEARCH_COMPLETE\" (0x00a33368)\n sum = EVENTSUM_RESEARCH_COMPLETE (slot 0x00af09e8)\n msg = EVENTMSG_RESEARCH_COMPLETE (slot 0x00af09f0)\nelse img = \"EVENT_RESEARCH_UNDERBUDGET\" (0x00a33380)\n sum = EVENTSUM_RESEARCH_UNDERBUDGET(slot 0x00af09f8)\n msg = EVENTMSG_RESEARCH_UNDERBUDGET(slot 0x00af0a00)\nPostEvent(sum, snprintf(msg, 0x100, def->name), NULL, NULL, turn, img, 1)\n```\n\nThe 0.8 constant is the `double` at `0x009e20c8` = `0.800000011920929`, i.e. `(double)0.8f` —\nthe comparison is `fcomp` of the `float` ratio against that double. Text:\n\n* `EVENTSUM_RESEARCH_COMPLETE` = `\"Research Complete\"`,\n `EVENTMSG_RESEARCH_COMPLETE` = `\"Tech %s has been acquired\"`\n* `EVENTSUM_RESEARCH_UNDERBUDGET` = `\"Research Breakthrough!\"`,\n `EVENTMSG_RESEARCH_UNDERBUDGET` = `\"Your scientists made a breakthrough with %s. Research has completed ahead of schedule!\"`\n\n`EvAct = 1`, `obj = pos = NULL`, so `EvLoc = 0` and `EvPos = FLT_MAX³`. Message buffer is a\n0x100-byte stack buffer formatted with `0x008c8eb0` (`_snprintf`-shaped, 9 args), then\nassigned into a `std::string`, so **a message longer than 255 chars is truncated** — a real\nbehaviour to reproduce.\n\nNote the naming is counter-intuitive: `UNDERBUDGET` is the *cheap* completion (ratio < 0.8).\n\n### 3.3 `EVENT_TEMPERANCE`\n\nPosted at **0x00892427**, same function, after the per-species temperance sweep\n(0x00892280–0x008922b9: for each species with flag bit 5, cure every owned addicted system\nvia 0x00745e40 / 0x00743800). Guarded by `!silent` **and** by a local \"something was cured\"\nflag (`[ebp-0x189]`, set at 0x008922a6). Strings `EVENTSUM_ADDICTION_TEMPERENCE` /\n`EVENTMSG_ADDICTION_TEMPERENCE` (slots `0x00af0a88` / `0x00af0a90`, note the shipped\nmisspelling \"TEMPERENCE\").\n\n`EvImg = \"EVENT_TEMPERANCE\"` (0x00a33340), `obj = pos = NULL`, and **`EvAct = 0`** — which\nmeans rule 5 of `PostEvent` fires and the stored `EvAct` becomes **2**, not 0. Any\nreimplementation that stores the literal 0 will differ from the oracle here.\n\n### 3.4 `EVENT_TECHS_UNLOCKED`\n\nPosted at **0x00587ff4**, at the tail of `ProcessResearch` (loop at 0x00587cc3). Collects\nevery node `n` where `n != NULL`, `n->def != NULL`, `tree->nodes[n->def->index] != NULL`,\nthat node's **`state` (`+0x14`) `== 2` (available)**, and **`n->turnAvailable` (`+0x20`)\n`== currentTurn`** (0x00587cfc–0x00587d42). If the collected vector is non-empty it posts\nonce.\n\n*Correction to `strategic-turn-internals.md:233`*, which reads the condition as \"state==2 &&\nturnAvailable == currentTurn **&& parent researched**\". There is no parent test: the\n`mov ecx,[ecx]; mov eax,[eax+ecx*4]` pair at 0x00587d0d–0x00587d19 dereferences `n->def` and\nthen indexes `tree->nodes` by `def->[0]`, which is the tech's **own** index (the same\nindirection the entry loop uses at 0x00587738–0x00587740). It resolves back to `n` itself;\nthe two null checks around it are defensive. The state test is therefore on `n`, not on a\nparent.\n\n`EvDsc` = `EVENTSUM_UNLOCKEDTECHS` (slot `0x00ae48f0`) = `\"New Technologies Available\"`.\n`EvMsg` = `EVENTMSG_UNLOCKEDTECHS` (slot `0x00ae48f8`) =\n`\"The following technologies are now available for research:\"` followed by, per node, the\nseparator string at `0x009e4588` and the node's `def->name` (0x00587f46–0x00587f82).\n`EvImg` = literal `\"EVENT_TECHS_UNLOCKED\"` (`0x00a00774`, length pushed as 0x14).\n`EvAct = 1`, `obj = pos = NULL`.\n\n### 3.5 `EVENT_NO_RESEARCH`\n\nPosted at **0x0089168c** in `ServerPlayer::ProcessTurn`. Condition (0x0089162a–0x0089167e):\n\n```\nif (player->ResT (+0x294) == NULL)\n TechTree::CollectResearchedTechs(&out, turn, INT_MAX, sort=1) ; 0x00584e50\n if (out.empty() && TechTree::FindFirstAvailableTech() != NULL) ; 0x0057da90\n PostEvent(EVENTSUM_NO_RESEARCH, EVENTMSG_NO_RESEARCH, NULL, NULL, turn,\n \"EVENT_NO_RESEARCH\" (0x00a3332c), 1)\n```\n\nBoth strings are `\"No Research Project Assigned.\"` — matches `turn3-state.sav` player 0\nexactly (`EvAct 1`, `EvLoc 0`, `EvPos` FLT_MAX³).\n\n**CORRECTION (lane EV 2026-09-08) to this section as first written.** 0x00584e50 was named\nhere as a `ListAvailableTechs` and the middle test read as \"no affordable tech\". It is\n`TechTree::CollectResearchedTechs` (lane T read the whole body; the call site's argument order\nwas re-read here byte for byte from 0x00891600), and the test is about what was **researched**,\nnot about what is available:\n\n1. `ResT == NULL` — the player holds no research target;\n2. **no tech has `state == 4` (researched) with `turnResearched (+0x24) >= turn`**, i.e.\n nothing finished on this turn or later. The turn is passed as the collector's `minTurn`\n and the range runs to `INT_MAX`;\n3. at least one node is in `state == 2` (available) — that is the availability half, and it is\n what excludes the four monster factions, whose entire tree is state 4.\n\nTest 2 is not decoration and the corpus exercises it: in `zuul-turn23-fleet23.sav` the human\nposts `EVENT_RESEARCH_COMPLETE` on turn 22 and **no** no-research event that turn, then\n`EVENT_NO_RESEARCH` again on turn 23. `sots-engine`'s P11 implements all three tests; before\nthis lane it implemented tests 1 and 3 only, and over-fired.\n\nTest 1 is the one a save cannot answer. `ResTNm` on the wire is the target the file was\n**written** with; on the reference pair all four real players start the turn with none and\nthree of them acquire one *during* it, which is AI research selection. Across all eleven\ncorpus saves no AI player ever posts `EVENT_NO_RESEARCH` (~90 player-turns) while the human\nposts it on every turn it lacks a target — stated as a hypothesis, with the operator's\n`--ai-player` roster standing in for the missing input.\n\nAlso in this window (0x008915ec–0x00891624): `RollResearchEvent` (0x0088df20) is called when\n`ResT != NULL && ResErrRoll(+0x3b4) != 0 && (const at 0x00a2c788) < progressRatio`, then\n`ResErrRoll` is cleared — the same draw the B2/B3 lanes measured. `RollResearchAccident`\n(0x00889dc0) posts the `EVENT_LABACCIDENT_*` family; not traced here.\n\n---\n\n## 4. What is *not* verified\n\n* `0x00886470` — the wrapper that also calls `PostEvent`. Its prototype and its two call\n paths were not read; I only established that it exists and is not on the research path.\n* `TurnEvents`' vptr/vtable contents beyond slot 0 (the virtual dtor used by the pruner).\n* The `sasc` tag at `0x00a2bde0` — adjacent to the event tag block, owner unknown.\n* Whether `PostEvent`'s dedup can ever collapse two research events in practice. It cannot\n for OVERBUDGET vs COMPLETE (different `EvImg`), but two *different techs* going over budget\n in the same turn differ only in `EvMsg`, which **is** compared — so both are kept. Verified\n by reading the comparator, not by observing it.\n* `EventStorage::Write` (the save-side counterpart of 0x00825cc0) was not located; only the\n read/`0x8b9d50` direction and the two `TurnEvents` directions were disassembled. The field\n order is identical in both directions and is confirmed by the save, so this is a gap in\n coverage, not in confidence about the layout.\n* The 50-turn prune has never been observed running (our saves are at turn ≤ 3).\n\n---\n\n## 5. What a turn actually posts (lane EV 2026-09-08, measured over all 11 saves)\n\nRead out of the corpus with `verify/state-checksum/state_checksum.py`, not derived. Every\n`EvImg` value, bucket and id below is a file fact.\n\n**Only two players in the whole corpus ever hold an event.** `PlyrIdx 0` (the human) and\n`PlyrIdx 1` (the one AI empire that owns colonies). `PlyrIdx 2..3` are the dormant shadow\nempires — `Sav = 0`, no colonies — and although they *do* pick research targets every turn,\ntheir `EvNxID` is 0 on every save. `PlyrIdx 4..7` are the monster factions, whose whole tech\ntree is state 4 and whose `EvNxID` is likewise 0 throughout. So \"who posts\" is not a property\nof the event API; it is a property of who does anything.\n\n### The reference pair\n\n| pair | player | bucket | id | image | EvAct | EvLoc |\n|---|---|---|---|---|---|---|\n| turn1 -> turn2 | 0 | `EvTurn=2` | 1 | `EVENT_NO_RESEARCH` | 1 | 0 |\n| turn1 -> turn2 | 1 | `EvTurn=2` | 1 | `EVENT_SHIPS_BUILT` | 0 | 288 |\n| turn2 -> turn3 | 0 | `EvTurn=3` | 2 | `EVENT_NO_RESEARCH` | 1 | 0 |\n| turn2 -> turn3 | 1 | `EvTurn=3` | 2 | `EVENT_SHIPS_BUILT` | 0 | 288 |\n| turn2 -> turn3 | 1 | `EvTurn=3` | 3 | `EVENT_RESEARCH_OVERBUDGET` | 1 | 0 |\n\n**Order within a player is readable off the ids**: on turn 3 player 1's construction event is\nid 2 and its research event id 3, so **the build pass posts before the research pass**. Ids\nare per player (`EvNxID` is on the player's own storage), so no cross-player order is\nobservable from a save and none should be assumed.\n\n`EVENT_SHIPS_BUILT` carries `EvAct = 0` **as stored**, because it has a subject (`EvLoc` 288,\na real position) — the `act == 0 && !obj && !pos -> 2` rule does not fire. The only stored\n`EvAct = 2` in the corpus is `EVENT_LABACCIDENT_SMALL`.\n\n### Every image the corpus contains\n\n`EVENT_NO_RESEARCH`, `EVENT_SHIPS_BUILT`, `EVENT_RESEARCH_COMPLETE`, `EVENT_TECHS_UNLOCKED`,\n`EVENT_RESEARCH_OVERBUDGET`, `EVENT_FLEET_ARRIVED`, `EVENT_FLEET_EXPLORED`,\n`EVENT_FLEET_MULTIPOINT_NONODE`, `EVENT_LABACCIDENT_SMALL`, `EVENT_COLONY_NEWSETTLERS`,\n`EVENT_ENEMY_INCOMING_Human`. The last is worth noting: the **event type is the `EvImg`\nstring and it is composed at run time** — `_Human` is a species suffix, so the type space is\nnot a fixed enumeration and never was.\n\n### Text keys used, from `Locale/EN/Strings.csv`\n\n`EVENTSUM_SHIPS_BUILT` = `Ships Constructed At %s`; `EVENTMSG_SHIPS_BUILT_1SHIP` =\n`1 ship built in system %s`; `EVENTMSG_SHIPS_BUILT_NSHIPS` = `%s ships built in system %s`.\nSo the construction event picks between **two** message keys on the ship count, and the count\nis substituted as a `%s`. Both `EVENTSUM_NO_RESEARCH` and `EVENTMSG_NO_RESEARCH` are the same\nstring and take no parameter.\n\n### Wired into `sots-engine`\n\n`src/app/event_phase.{h,cpp}` bridges the save's event subtree to `game::events` and P11 posts\nthrough it. On the reference pair, with the data root and the AI roster supplied and\n`--commit-blocked=P11`: **4 leaves closed on turn1->turn2 and 3 on turn2->turn3, 0 regressed**,\nand the posted record agrees with the oracle on every one of its eight fields. Engine-side\nwrite-up: `sots-engine docs/EV-events.md`.","lineStart":1,"lineEnd":492,"totalLines":492,"truncated":false}},"title":"../../../tmp/opencode/sots-final-research-re/findings/subsystems/events.md","time":{"start":1789016917923,"end":1789016917940}},"metadata":{"openai":{"itemId":"fc_0a9b1191c74318a5016aa23b5599e887d1ae8eefdc2208a37d"}},"id":"prt_089b7c79f001XKGNrd110BsQIo","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b77c52001PoTmstaHMevnX1"}} +{"type":"tool_use","timestamp":1789016918003,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_mUcASvGblFMqDBupnGVhQqAN","state":{"status":"completed","input":{"filePath":"/tmp/opencode/sots-final-research-re/findings/subsystems/observedtech-append.md"},"output":"/tmp/opencode/sots-final-research-re/findings/subsystems/observedtech-append.md\nfile\n\n1: # `vector otch` — pinned, and the displacement scanner that pinned it\n2: \n3: Lane X. Static/host only; VM140 was held by lane F and the game was never run.\n4: \n5: Two things here: a general-purpose tool (`tools/x86disp.py`) for a class of cross-reference\n6: Ghidra cannot index, and the `ServerPlayer+0x274` answer it was built to get.\n7: \n8: ---\n9: \n10: ## 1. The gap the tool fills\n11: \n12: Ghidra indexes **immediate** operands. It does not index **ModRM displacements**. On a\n13: 41,411-function MSVC C++ binary `lea reg,[reg+disp]` is *the* idiom for taking the address of\n14: a member — it is how every `std::vector`, every `std::string`, every embedded sub-object gets\n15: passed to a method or a constructor. So `find-constant-uses 0x274` returned 13 unrelated hits\n16: and none of them was the vector, and lane P correctly concluded the search was a limitation\n17: rather than evidence of absence.\n18: \n19: Lane E only found `EventStorage` at `+0x29c` because a whole accessor function happened to\n20: exist (`lea eax,[ecx+0x29c]; ret`). We were blind to this whole reference class all campaign,\n21: with ~1,600 classes still to go.\n22: \n23: ## 2. The tool — `tools/x86disp.py`\n24: \n25: A real x86-32 **length decoder** (legacy prefixes, 1-/2-/3-byte opcodes, ModRM, SIB, disp8\n26: sign-extended, disp32, every immediate form), swept from Ghidra's function starts so every\n27: decode begins on a genuine instruction boundary. It indexes every memory operand that carries\n28: a displacement, then answers \"what code touches offset N off some object?\" with the containing\n29: function, instruction address, base register and decoded instruction.\n30: \n31: Correctness points that would otherwise produce confident garbage, all handled:\n32: \n33: * `mod=0,rm=5` and `mod=0,rm=4,sib.base=5` are **disp32 with no base** — an absolute global\n34: address, not a member offset. Excluded from member queries. (Without this, every\n35: `mov eax,[0x00a2bd88]` in the binary shows up as a \"displacement\".)\n36: * `mod=1` disp8 is **sign-extended**: `-0x08` must not be reported as `+0xf8`.\n37: * `mod=3` is a register operand with no displacement at all.\n38: * `0x67` address-size prefix means 16-bit ModRM, a different layout entirely — refused rather\n39: than mis-decoded.\n40: \n41: Commands: `build`, `query `, `cohort`, `func `, `dis `, `stats`, `brute`.\n42: \n43: **Decode quality:**\n44: \n45: ```\n46: functions swept : 41089\n47: instructions : 2174504\n48: disp sites : 612166\n49: desyncs : 70 (0.17% of functions)\n50: code coverage : 6142049/6142358 (100.0%)\n51: ```\n52: \n53: Zero unknown-opcode desyncs — the opcode tables cover everything this binary contains. All 70\n54: desyncs are truncations at a section/function boundary, not lost sync inside real code.\n55: \n56: > Gotcha worth carrying: the first build clipped each sweep at `fva + Ghidra's sizeInBytes`\n57: > and lost 11% of functions to mid-instruction truncation — Ghidra's `sizeInBytes` understates\n58: > real bodies often enough to matter (it was cutting valid `mov esp,ebp; pop ebp; ret`\n59: > epilogues in half). Sweeping to the **next function start** instead took coverage 89% → 100%.\n60: \n61: The tool works off a local cache (`dumps/`, gitignored: the exe, the function list, the index)\n62: so it never hammers the shared Ghidra box. `tools/cache_functions.py` pulls the function list\n63: once.\n64: \n65: ## 3. Validation — it rediscovers what we already knew\n66: \n67: Run before any new claim was made.\n68: \n69: **GT1 — `ServerPlayer::GetEventStorage`, the one accessor we already had:**\n70: \n71: ```\n72: $ uv run python3 tools/x86disp.py func 0x0080db00\n73: ServerPlayer_GetEventStorage @ 0x0080db00 size 7\n74: 0x0080db00 lea eax,[ecx+0x29c] ServerPlayer_GetEventStorage+0x0 (8d819c020000)\n75: ```\n76: \n77: **GT2 — lane E's two `OnTechResearched` sites, plus one it did not have:**\n78: \n79: ```\n80: $ uv run python3 tools/x86disp.py query 0x29c --lea\n81: ProcessTurn @0x00891340\n82: 0x00891713 lea ecx,[esi+0x29c] ProcessTurn+0x3d3 <-- NEW\n83: OnTechResearched @0x00891790\n84: 0x008919ab lea ecx,[esi+0x29c] OnTechResearched+0x21b <-- known\n85: 0x0089241d lea ecx,[esi+0x29c] OnTechResearched+0xc8d <-- known\n86: ```\n87: \n88: **GT3 — `EvNxID` at `ServerPlayer+0x2b0`:** 90 sites found; the `ServerPlayer` ones are present.\n89: This one is also the honest illustration of the precision problem — see §5.\n90: \n91: **GT4 — positive control for the cohort ranker.** Given the 50 `ServerPlayer` offsets already\n92: in `struct-recovery.md`, `FUN_0087fac0` scores **50 co-hits out of 50** — it is the\n93: `ServerPlayer` serializer, and nothing else in the binary comes close. A scanner that could\n94: not surface that function from a bare offset query would not be worth using.\n95: \n96: ## 4. The answer: `sizeof(ObservedTech)` and the append site\n97: \n98: ### `sizeof(Game::ObservedTech) = 0x2c` (44 bytes) — verified, three independent ways\n99: \n100: **(a)** `vector::operator=` at `0x00872380` divides the vector's byte span by a\n101: constant using MSVC's magic-number sequence:\n102: \n103: ```\n104: 0x00872398 mov ecx,[edi+0x4] ; src._Mylast\n105: 0x0087239b mov edi,[edi] ; src._Myfirst\n106: 0x0087239d sub ecx,edi ; byte span\n107: 0x0087239f mov eax,0x2e8ba2e9\n108: 0x008723a4 imul ecx\n109: 0x008723a6 sar edx,3\n110: ```\n111: \n112: `ceil(2^35 / 44) == 0x2e8ba2e9` **exactly**, and emulating the full sequence reproduces\n113: n = 0,1,2,3,10,71,1000 from spans of 0,44,88,132,440,3124,44000. Divisor = 44, unambiguously.\n114: \n115: **(b)** The same function then multiplies back by the literal stride:\n116: \n117: ```\n118: 0x0087243a imul ecx,ecx,0x2c\n119: 0x0087243d add ecx,[esi] ; this->_Myfirst + n*44\n120: 0x00872441 mov [esi+0x4],ecx ; this->_Mylast = ...\n121: ```\n122: \n123: Same literal at `0x00872468` and at `0x007b735b` inside `push_back`.\n124: \n125: **(c)** The linear search in the append function advances its iterator by `add edi,0x2c`\n126: (`0x007ba257`).\n127: \n128: This matches the on-disk lower bound *exactly* — 4 × `int` + one `0x1c` `std::string` = 44 —\n129: so there is no padding slack anywhere in the element.\n130: \n131: ### The append site\n132: \n133: ```\n134: FUN_007ba1a0 = RecordObservedTech (direct callee of ServerPlayer::OnTechResearched 0x00891790)\n135: \n136: 0x007ba221 mov edi,[esi+0x274] ; it = observer->otch._Myfirst\n137: 0x007ba227 cmp edi,[esi+0x278] ; ... != _Mylast ?\n138: 0x007ba22d je 0x007ba274 ; empty -> append\n139: loop: compare each element's name string (this = elem+0x0c, length = [elem+0x1c])\n140: 0x007ba257 add edi,0x2c ; ++it *** stride 44 ***\n141: 0x007ba25a cmp edi,[esi+0x278]\n142: 0x007ba260 jne loop\n143: 0x007ba274 lea ecx,[ebp-0x3c]\n144: 0x007ba277 call 0x008562a0 ; ObservedTech::ObservedTech() on the stack\n145: 0x007ba27e push eax\n146: 0x007ba27f lea ecx,[esi+0x274] ; this = &player->otch <<< THE APPEND\n147: 0x007ba288 call 0x007b7320 ; vector::push_back\n148: ```\n149: \n150: `push_back` (`0x007b7320`) grows via `0x007b5820` when `_Mylast == _Myend` — **that realloc is\n151: exactly why lane R's guard saw all three of `player+0x274/0x278/0x27c` move on a completion**,\n152: rather than only `_Mylast`.\n153: \n154: `RecordObservedTech` is called from `OnTechResearched` (`0x00891790`) and from `0x007be228`,\n155: `0x007be4e1`, `0x007be535`. It is a **de-duplicating** append: it appends only if no existing\n156: element already carries that tech name — worth knowing for the reimplementation, since a naive\n157: `push_back` would diverge on a re-observation.\n158: \n159: Neither `push_back` nor `operator=` is COMDAT-ambiguous: `0x007b7320` has exactly one caller\n160: (`RecordObservedTech`, `ecx = player+0x274`) and `0x00872380` has two, both passing\n161: `ServerPlayer+0x274`. `0x007b5820` **is** shared with `FUN_0086dec0` and may be a folded body,\n162: so it is labelled `vector_44B_grow`, not as ObservedTech-specific.\n163: \n164: ### Element layout — as far as the evidence actually goes\n165: \n166: The default ctor at `0x008562a0` writes vtable `0x00a2439c` at `+0x00`. RTTI:\n167: COL `0x00a81c78` → type descriptor `0x00aeede4` → **`.?AVObservedTech@Game@@`**. So\n168: `ObservedTech` is polymorphic and its first word is a vptr, not a data field — which the\n169: on-disk shape does not tell you.\n170: \n171: > **Superseded 2026-09-08 by lane S — see §9.** The table as first written called the\n172: > embedded string 0x18 bytes and left `+0x08`, `+0x24`, `+0x28` unaccounted. `+0x24` is not a\n173: > field: it is the string's own trailing allocator word. The corrected map is below; the\n174: > original reasoning is kept in §9 because the way it went wrong is the useful part.\n175: \n176: | offset | size | member | evidence |\n177: |---|---|---|---|\n178: | `+0x00` | 4 | vptr `0x00a2439c` | ctor writes it, RTTI-confirmed |\n179: | `+0x04` | 2 | `uint16 otnF` (turn first observed) | `mov word [eax-0x28],cx` at `0x007ba2b0` (`eax` = `_Mylast`, element = `_Mylast-0x2c`), source `[ebx+0xc]`; tag from `ObservedTech::Write` |\n180: | `+0x06` | 2 | `uint16 otnL` (turn last observed) | `mov word [eax-0x26],dx` at `0x007ba2c6`, **same source word** `[ebx+0xc]` — first sighting sets first == last |\n181: | `+0x08` | 1 | `bool odet` | ctor stores a **byte** (`mov [esi+0x8],bl`, `0x008562f4`); copy-ctor copies a byte; serialised with `WriteBool`/`ReadBool` |\n182: | `+0x0c..+0x27` | 0x1c | `std::string otch` (tech name) | object base `+0x0c`, MSVC `{_Bx[16] @0, _Mysize @0x10, _Myres @0x14, _Alval @0x18}`. Ctor writes `[+0x0c]=0`, `[+0x1c]=0`, `[+0x20]=0xf`; the search loop reads `[+0x1c]` as the length and calls compare with `this = +0x0c`; the post-append assign uses `lea ecx,[_Mylast-0x20]` = `+0x0c`. `+0x24` is `_Alval` — never read, never written, by anything |\n183: | `+0x28` | 4 | `int owith` | ctor zeroes it; `ObservedTech::Write` emits it last |\n184: \n185: `4 + 2 + 2 + 1(+3 pad) + 0x1c + 4 = 0x2c` exactly — sizeof is fully accounted for, with no\n186: padding slack and no unaccounted field.\n187: \n188: ### Where the mapping came from — the serializer\n189: \n190: `Game::ObservedTech`'s vftable `0x00a2439c` is the usual 3 slots\n191: `{ [0] 0x00793610 scalar deleting dtor, [1] 0x00817c40 Read, [2] 0x00817cf0 Write }`.\n192: `Write` enumerates the entire object, in order, and touches nothing else:\n193: \n194: ```\n195: 0x00817cff movzx ecx,word [edi+0x04] push 0xa2b38c \"otnF\" -> stream vft+0x24 (int)\n196: 0x00817d0f movzx ecx,word [edi+0x06] push 0xa2b384 \"otnL\" -> stream vft+0x24 (int)\n197: 0x00817d26 lea eax,[edi+0x08] push 0xa2b36c \"odet\" -> WriteBool 0x008b9c20\n198: 0x00817d37 lea ecx,[edi+0x0c] push 0xa2b3e8 \"otch\" -> WriteString 0x008b9d70\n199: 0x00817d46 mov eax,[edi+0x28] push 0xa2b364 \"owith\" -> stream vft+0x24 (int)\n200: ```\n201: \n202: `Read` (`0x00817c40`) is the exact mirror: `otnF`/`otnL` read as ints and stored back with\n203: 16-bit `mov word [ebx],ax`, `odet` through `ReadBool`, `otch` through `ReadString`, `owith`\n204: reached as `add edi,0x28`. That matches the on-disk order `save_reader.py` already had\n205: (`Otch = otnF otnL odet otch(string) owith`), which is a nice independent agreement between\n206: the disassembly and the save oracle.\n207: \n208: `Game::ObservedWeapon` (`Write` `0x00817bc0`, `Read` `0x00817b10`) is the same element shape\n209: with tag `owep` (`0x00a2b3f0`) in place of `otch` — a second instance of the identical 0x2c\n210: layout.\n211: \n212: Lane P's `observed_techs` region byte delta remains a valid live cross-check and should come\n213: back as exactly 44 per completion.\n214: \n215: ## 5. False-positive rate, honestly\n216: \n217: Two different error rates, and the interesting one is not the one you'd expect.\n218: \n219: **Decode-level error of the naive method is low.** A raw byte scan for `8D` + ModRM + the\n220: displacement — the thing you'd write without a decoder — is mostly *right*:\n221: \n222: | query | naive candidates | not actually an instruction | real sites the naive scan **missed** |\n223: |---|---|---|---|\n224: | `lea`, disp32 `0x274` | 19 | 0 (0.0%) | **80 of 99** |\n225: | 11 common opcodes, disp32 `0x274` | 89 | 1 (1.1%) | 11 of 99 |\n226: | `lea`, disp8 `0x14` | 828 | 1 (0.1%) | **13,784 of 14,611** |\n227: | 11 common opcodes, disp8 `0x14` | 10,326 | 59 (0.6%) | 4,344 of 14,611 |\n228: \n229: So the decoder's win is **recall, not decode precision**. A hand-written opcode set misses\n230: 80–94% of the real accesses, because a member is read, written, compared, and float-loaded far\n231: more often than its address is taken, and you cannot enumerate those opcodes by hand.\n232: \n233: **Class-level precision is the real problem, and it is poor.** The scanner knows the\n234: displacement; it cannot know what class the base register holds. `query 0x274` returns 99 sites\n235: in 45 functions and only about 6 of those functions are actually touching `ServerPlayer::otch`\n236: — roughly **13% precision by function**. The honest way to state the value is as search-space\n237: reduction: 41,411 functions → 45, about **900×**, down to a list a human reads in two minutes.\n238: \n239: **The cohort ranker helps, and has a trap.** Scoring functions by how many *already-known*\n240: offsets of the same class they touch pulls real class methods to the top (the serializer hits\n241: 50/50). But it would have **thrown away the correct answer**: `RecordObservedTech` touches only\n242: `0x274` and `0x278` and nothing else on `ServerPlayer`, so any `--min>=1` filter drops it. Use\n243: cohort as a ranker, never as a filter. This is now written into the tool's own docstring.\n244: \n245: What actually closed the case was the plain `query 0x274` list **intersected with one call-graph\n246: lookup** (`OnTechResearched`'s direct callees). Displacement scan for recall, call graph for\n247: disambiguation — neither alone was enough.\n248: \n249: ## 6. Previously anonymous offsets — attribution results\n250: \n251: The payoff was smaller than hoped, because most of the audit's anonymous offsets had already\n252: been named by other lanes since the audit was written.\n253: \n254: | offset | status before | after |\n255: |---|---|---|\n256: | `player+0x274/0x278/0x27c` | \"vector grew, append site unknown\" | **`RecordObservedTech+0xdf` (0x007ba27f)**, `sizeof` = 0x2c |\n257: | `player+0x2b0` | already named by lane E | unchanged (`EvNxID`) |\n258: | `TechTree+0x20` | already `TechTree_off_OrderCounter` | unchanged |\n259: | `ServerPlayer+0x308` | already `ServerPlayer_off_NodeBore` | unchanged |\n260: | `Budget+0x64` | harness-audit row 11: \"the original writes it\" | **not supported.** See below |\n261: \n262: **`Budget+0x64` (harness-audit row 11) — a correction.** `ServerPlayer::ComputeBudget`\n263: (`0x00863030`) writes its `Budget*` out-param through `esi`, and every such store lands in\n264: `+0x00..+0x54` (the 22-int block). The only two `+0x64` accesses in the whole function are\n265: **loads off a different base register** (`mov ecx,[eax+0x64]` at `0x0086328c`,\n266: `mov edx,[eax+0x64]` at `0x0086335d`). There is no store to `Budget+0x64` in `ComputeBudget`.\n267: \n268: Separately, `TechTree::ProcessResearch`'s `int* overbudget` fourth argument is **not**\n269: `Budget+0x64`: its only caller is `ProcessTurn` (`0x00891340`) and the call at `0x008914a5`\n270: passes `lea edx,[ebp-0x14]` — a stack local, consumed immediately after the call\n271: (`mov eax,[ebp-0x14]; cmp eax,0; jle`).\n272: \n273: This agrees with lane R, whose `budget_object` guard saw `Budget+0x64` change in **0 of 4284\n274: calls**. Row 11 should be reclassified from \"the original writes it and B1 never checked\" to\n275: \"nothing has been shown to write it\"; the remaining way to settle it is a write watchpoint on\n276: that word, not another static search.\n277: \n278: ## 7. Verdict on the technique\n279: \n280: Worth keeping, with its limits stated. It answered a question that had been parked, and the\n281: `0x29c` validation turned up a `ProcessTurn` `EventStorage` site nobody had. But it is a\n282: **recall** tool that produces a 20–100 line candidate list per offset, not an oracle: every\n283: result still needs a call-graph or decompiler check before it is a fact. For the ~1,600\n284: remaining classes the realistic workflow is `query ` → read the list → confirm with one\n285: cross-reference call.\n286: \n287: ## 8. Ghidra writeback\n288: \n289: Labels: `RecordObservedTech` `0x007ba1a0`, `vector_ObservedTech_push_back` `0x007b7320`,\n290: `ObservedTech_ctor` `0x008562a0`, `vector_ObservedTech_assign` `0x00872380`,\n291: `vector_44B_grow` `0x007b5820`, `vftable_ObservedTech` `0x00a2439c`. Plate comments carrying\n292: the stride evidence on the first four.\n293: \n294: `addresses.json`: `ObservedTech_sizeof`, `ObservedTech_vftable`, `ObservedTech_off_Name`,\n295: `RecordObservedTech`, `vector_ObservedTech_push_back`, `vector_ObservedTech_assign`,\n296: `ObservedTech_ctor`, `vector_44B_grow`; `ServerPlayer_off_ObservedTechs` updated from\n297: \"NOT PINNED\" to `verified`.\n298: \n299: **Lane S round (2026-09-08).** Labels: `ObservedTech_Write` `0x00817cf0`, `ObservedTech_Read`\n300: `0x00817c40`, `ObservedTech_scalar_deleting_dtor` `0x00793610`, `ObservedWeapon_Write`\n301: `0x00817bc0`, `ObservedWeapon_Read` `0x00817b10`, `vector_ObservedTech_uninit_copy` `0x0079a150`,\n302: `vector_string_find_by_name` `0x00699bd0`. Prototypes on the five class methods. Plate comments\n303: carrying the full member map on the two serializers, the ctor, the dtor and the copy helper, and\n304: the `sizeof(std::string) = 0x1c` fact on `Stream::WriteString` `0x008b9d70` and on the\n305: `vector` stride site `0x00699bd0` — the two places a future lane is most likely to look.\n306: `addresses.json` +10 entries (`std_string_sizeof`, `ObservedTech_Read/_Write/_dtor/_copy_ctor`,\n307: `ObservedTech_off_TurnFirst/_TurnLast/_Detected/_With`, `ObservedWeapon_Write`), 4 corrected.\n308: \n309: ---\n310: \n311: ## 9. `std::string` is 0x1c, not 0x18 — the correction, and why it mattered (lane S, 2026-09-08)\n312: \n313: §4 above originally reported the embedded string as **0x18 bytes**, against the campaign-wide\n314: `_Bx@0, _Mysize@0x10, _Myres@0x14, _Alval@0x18`, sizeof `0x1c`. Lane X flagged it as \"worth\n315: re-checking\" rather than asserting it, which was the right call: **`0x1c` is correct, and it is\n316: correct everywhere in this binary.** `ObservedTech+0x24` is the string's own trailing allocator\n317: word, not a data member.\n318: \n319: ### Why the 0x18 reading looked right\n320: \n321: Everything lane X observed was accurate. The string's *live* fields really do stop at `+0x14`\n322: (`_Bx@0`, `_Mysize@0x10`, `_Myres@0x14`), because `_Alval` is `std::allocator` — an empty\n323: class. It occupies a word of the object but is never loaded or stored, so it is invisible to\n324: any evidence based on **what the code touches**. Sizing a type from its accessed fields\n325: undercounts it by exactly the tail padding. The same trap is live for `std::vector` in this\n326: build, which is `{_Myfirst, _Mylast, _Myend, _Alval}` = `0x10` while only three words are ever\n327: read (`events.md` already records the `_Alval` word at `EventStorage+0x10` and `+0x14`).\n328: \n329: ### The three things that settle it inside `ObservedTech`\n330: \n331: Each is a *complete enumeration* of the object, which is the right instrument here — an\n332: enumeration can show a field's **absence**, a touch-scan cannot.\n333: \n334: 1. **`ObservedTech::Write` `0x00817cf0`** serialises `+0x04, +0x06, +0x08, +0x0c, +0x28`.\n335: No `+0x24`. (`Read` `0x00817c40` mirrors it.)\n336: 2. **`ObservedTech_ctor` `0x008562a0`** initialises `+0x00, +0x04, +0x08, +0x0c(string), +0x28`.\n337: No `+0x24` — while zeroing every other scalar in the object.\n338: 3. **The copy constructor**, inlined at `0x0079a184` inside the vector's uninitialised-copy\n339: helper `FUN_0079a150`, copies `+0x04, +0x06, +0x08`, the string at `+0x0c`, and `+0x28`.\n340: No `+0x24`.\n341: \n342: A 4-byte data member that the constructor, the copy constructor and the serializer all ignore\n343: is not a data member.\n344: \n345: ### Binary-wide check — `tools/strfootprint.py`\n346: \n347: One class is an anecdote, so the same question was put to the whole binary. Every serializer\n348: hands member pointers to the `Mars::Stream` primitive helpers with a fixed idiom\n349: (`lea r,[base+disp]; push r; push tag; push stream; call helper`), so the scanner recovers\n350: `(base, disp, tag)` for every string site and then asks: does the same function touch any other\n351: offset inside `(N, N+0x1c)` off the same base register?\n352: \n353: ```\n354: string helper call sites : 241\n355: resolved to a class member offset : 65\n356: stack temporaries (ebp/esp base) : 30\n357: offset not reached by a plain lea : 146\n358: \n359: members with a sibling inside (N, N+0x1c) : 0\n360: \n361: gap from a string member to the next member on the same base:\n362: +0x1c : 51\n363: +0x20 : 1\n364: ```\n365: \n366: **65 string members across every serializer in the exe, zero collisions, and 51 of the 52\n367: measurable gaps are exactly `0x1c`.** The single `+0x20` is `StrategyServer::KeyPath` at\n368: `+0x134`, whose *Read* side gives `+0x1c` to `+0x150` — the writer simply skips a member.\n369: There is no `0x18` instantiation, no empty-base-optimised variant, and no game-local string\n370: class. One layout, `0x1c`.\n371: \n372: Two exclusions matter or the scan reports noise, and both are why a naive version of this\n373: would have \"confirmed\" 0x18:\n374: \n375: * **`ebp`/`esp` bases are stack temporaries, not members.** A local string at `[ebp-0x2c]`\n376: shows accesses at `-0x1c` and `-0x18` — which read exactly like two sibling fields inside\n377: the span. All 30 such sites are excluded.\n378: * **`N+0x10` and `N+0x14` are the string's own `_Mysize`/`_Myres`**, touched inline whenever\n379: the compiler expands the `_Myres >= 16 ? _Ptr : _Buf` test at a call site.\n380: \n381: ### Independent corroboration outside the scan\n382: \n383: * `FUN_00699bd0` walks a `vector` doing the SSO test at `[esi+0x14]`/`[esi]` —\n384: element base *is* string base — and advances `add esi,0x1c` (`0x00699c29`). The stride of a\n385: vector of strings **is** `sizeof(std::string)`.\n386: * `EventStorage::PostEvent` `0x008862b0` takes two by-value `std::string`s at `[ebp+0x08]` and\n387: `[ebp+0x24]` (spacing `0x1c`) and `RET 0x4c` = `2*0x1c + 5*4`.\n388: * `MoraleEvent` is 0x50 bytes with its name string at `+0x34`: `0x34 + 0x1c = 0x50` exactly.\n389: \n390: ### Blast radius — what actually had to change\n391: \n392: Nothing in any recovered struct table. Every string-bearing layout in `struct-recovery.md`,\n393: `save-editor-structs.md`, `events.md` and `schema-gaps-resolved.md` already used `0x1c` spans\n394: and `0x1c` inter-field gaps, and the binary agrees with all of them. `ServerPlayer::pswd` at\n395: `0x2dc..0x2f7` — the row §4 asked to re-check — is **correct**: `Write` `0x008563e0` puts the\n396: next member exactly `0x1c` above it. The corrections were confined to three prose statements\n397: that had propagated the 0x18 number (`loader-prototypes.md` conventions line, the\n398: `GlobalConst_ParseString` prototype in `addresses.json`, and §4 here) plus one transposition in\n399: `struct-recovery.md` §0 that said `size@0x14, res@0x18` where the verified offsets are\n400: `0x10`/`0x14`.\n401: \n402: The lesson worth carrying, and the reason this was worth chasing rather than reconciling: **do\n403: not size a struct member from the offsets the code touches.** Trailing empty-allocator words in\n404: this build's STL are invisible to a touch-scan and cost exactly 4 bytes every time. Size types\n405: from an enumeration — a serializer, a constructor, a copy constructor, or a container stride.\n\n(End of file - total 405 lines)\n","metadata":{"preview":"# `vector otch` — pinned, and the displacement scanner that pinned it\n\nLane X. Static/host only; VM140 was held by lane F and the game was never run.\n\nTwo things here: a general-purpose tool (`tools/x86disp.py`) for a class of cross-reference\nGhidra cannot index, and the `ServerPlayer+0x274` answer it was built to get.\n\n---\n\n## 1. The gap the tool fills\n\nGhidra indexes **immediate** operands. It does not index **ModRM displacements**. On a\n41,411-function MSVC C++ binary `lea reg,[reg+disp]` is *the* idiom for taking the address of\na member — it is how every `std::vector`, every `std::string`, every embedded sub-object gets\npassed to a method or a constructor. So `find-constant-uses 0x274` returned 13 unrelated hits\nand none of them was the vector, and lane P correctly concluded the search was a limitation\nrather than evidence of absence.\n\nLane E only found `EventStorage` at `+0x29c` because a whole accessor function happened to\nexist (`lea eax,[ecx+0x29c]; ret`). We were blind to this whole reference class all campaign,","truncated":false,"loaded":[],"display":{"type":"file","path":"/tmp/opencode/sots-final-research-re/findings/subsystems/observedtech-append.md","text":"# `vector otch` — pinned, and the displacement scanner that pinned it\n\nLane X. Static/host only; VM140 was held by lane F and the game was never run.\n\nTwo things here: a general-purpose tool (`tools/x86disp.py`) for a class of cross-reference\nGhidra cannot index, and the `ServerPlayer+0x274` answer it was built to get.\n\n---\n\n## 1. The gap the tool fills\n\nGhidra indexes **immediate** operands. It does not index **ModRM displacements**. On a\n41,411-function MSVC C++ binary `lea reg,[reg+disp]` is *the* idiom for taking the address of\na member — it is how every `std::vector`, every `std::string`, every embedded sub-object gets\npassed to a method or a constructor. So `find-constant-uses 0x274` returned 13 unrelated hits\nand none of them was the vector, and lane P correctly concluded the search was a limitation\nrather than evidence of absence.\n\nLane E only found `EventStorage` at `+0x29c` because a whole accessor function happened to\nexist (`lea eax,[ecx+0x29c]; ret`). We were blind to this whole reference class all campaign,\nwith ~1,600 classes still to go.\n\n## 2. The tool — `tools/x86disp.py`\n\nA real x86-32 **length decoder** (legacy prefixes, 1-/2-/3-byte opcodes, ModRM, SIB, disp8\nsign-extended, disp32, every immediate form), swept from Ghidra's function starts so every\ndecode begins on a genuine instruction boundary. It indexes every memory operand that carries\na displacement, then answers \"what code touches offset N off some object?\" with the containing\nfunction, instruction address, base register and decoded instruction.\n\nCorrectness points that would otherwise produce confident garbage, all handled:\n\n* `mod=0,rm=5` and `mod=0,rm=4,sib.base=5` are **disp32 with no base** — an absolute global\n address, not a member offset. Excluded from member queries. (Without this, every\n `mov eax,[0x00a2bd88]` in the binary shows up as a \"displacement\".)\n* `mod=1` disp8 is **sign-extended**: `-0x08` must not be reported as `+0xf8`.\n* `mod=3` is a register operand with no displacement at all.\n* `0x67` address-size prefix means 16-bit ModRM, a different layout entirely — refused rather\n than mis-decoded.\n\nCommands: `build`, `query `, `cohort`, `func `, `dis `, `stats`, `brute`.\n\n**Decode quality:**\n\n```\nfunctions swept : 41089\ninstructions : 2174504\ndisp sites : 612166\ndesyncs : 70 (0.17% of functions)\ncode coverage : 6142049/6142358 (100.0%)\n```\n\nZero unknown-opcode desyncs — the opcode tables cover everything this binary contains. All 70\ndesyncs are truncations at a section/function boundary, not lost sync inside real code.\n\n> Gotcha worth carrying: the first build clipped each sweep at `fva + Ghidra's sizeInBytes`\n> and lost 11% of functions to mid-instruction truncation — Ghidra's `sizeInBytes` understates\n> real bodies often enough to matter (it was cutting valid `mov esp,ebp; pop ebp; ret`\n> epilogues in half). Sweeping to the **next function start** instead took coverage 89% → 100%.\n\nThe tool works off a local cache (`dumps/`, gitignored: the exe, the function list, the index)\nso it never hammers the shared Ghidra box. `tools/cache_functions.py` pulls the function list\nonce.\n\n## 3. Validation — it rediscovers what we already knew\n\nRun before any new claim was made.\n\n**GT1 — `ServerPlayer::GetEventStorage`, the one accessor we already had:**\n\n```\n$ uv run python3 tools/x86disp.py func 0x0080db00\nServerPlayer_GetEventStorage @ 0x0080db00 size 7\n 0x0080db00 lea eax,[ecx+0x29c] ServerPlayer_GetEventStorage+0x0 (8d819c020000)\n```\n\n**GT2 — lane E's two `OnTechResearched` sites, plus one it did not have:**\n\n```\n$ uv run python3 tools/x86disp.py query 0x29c --lea\n ProcessTurn @0x00891340\n 0x00891713 lea ecx,[esi+0x29c] ProcessTurn+0x3d3 <-- NEW\n OnTechResearched @0x00891790\n 0x008919ab lea ecx,[esi+0x29c] OnTechResearched+0x21b <-- known\n 0x0089241d lea ecx,[esi+0x29c] OnTechResearched+0xc8d <-- known\n```\n\n**GT3 — `EvNxID` at `ServerPlayer+0x2b0`:** 90 sites found; the `ServerPlayer` ones are present.\nThis one is also the honest illustration of the precision problem — see §5.\n\n**GT4 — positive control for the cohort ranker.** Given the 50 `ServerPlayer` offsets already\nin `struct-recovery.md`, `FUN_0087fac0` scores **50 co-hits out of 50** — it is the\n`ServerPlayer` serializer, and nothing else in the binary comes close. A scanner that could\nnot surface that function from a bare offset query would not be worth using.\n\n## 4. The answer: `sizeof(ObservedTech)` and the append site\n\n### `sizeof(Game::ObservedTech) = 0x2c` (44 bytes) — verified, three independent ways\n\n**(a)** `vector::operator=` at `0x00872380` divides the vector's byte span by a\nconstant using MSVC's magic-number sequence:\n\n```\n0x00872398 mov ecx,[edi+0x4] ; src._Mylast\n0x0087239b mov edi,[edi] ; src._Myfirst\n0x0087239d sub ecx,edi ; byte span\n0x0087239f mov eax,0x2e8ba2e9\n0x008723a4 imul ecx\n0x008723a6 sar edx,3\n```\n\n`ceil(2^35 / 44) == 0x2e8ba2e9` **exactly**, and emulating the full sequence reproduces\nn = 0,1,2,3,10,71,1000 from spans of 0,44,88,132,440,3124,44000. Divisor = 44, unambiguously.\n\n**(b)** The same function then multiplies back by the literal stride:\n\n```\n0x0087243a imul ecx,ecx,0x2c\n0x0087243d add ecx,[esi] ; this->_Myfirst + n*44\n0x00872441 mov [esi+0x4],ecx ; this->_Mylast = ...\n```\n\nSame literal at `0x00872468` and at `0x007b735b` inside `push_back`.\n\n**(c)** The linear search in the append function advances its iterator by `add edi,0x2c`\n(`0x007ba257`).\n\nThis matches the on-disk lower bound *exactly* — 4 × `int` + one `0x1c` `std::string` = 44 —\nso there is no padding slack anywhere in the element.\n\n### The append site\n\n```\nFUN_007ba1a0 = RecordObservedTech (direct callee of ServerPlayer::OnTechResearched 0x00891790)\n\n0x007ba221 mov edi,[esi+0x274] ; it = observer->otch._Myfirst\n0x007ba227 cmp edi,[esi+0x278] ; ... != _Mylast ?\n0x007ba22d je 0x007ba274 ; empty -> append\n loop: compare each element's name string (this = elem+0x0c, length = [elem+0x1c])\n0x007ba257 add edi,0x2c ; ++it *** stride 44 ***\n0x007ba25a cmp edi,[esi+0x278]\n0x007ba260 jne loop\n0x007ba274 lea ecx,[ebp-0x3c]\n0x007ba277 call 0x008562a0 ; ObservedTech::ObservedTech() on the stack\n0x007ba27e push eax\n0x007ba27f lea ecx,[esi+0x274] ; this = &player->otch <<< THE APPEND\n0x007ba288 call 0x007b7320 ; vector::push_back\n```\n\n`push_back` (`0x007b7320`) grows via `0x007b5820` when `_Mylast == _Myend` — **that realloc is\nexactly why lane R's guard saw all three of `player+0x274/0x278/0x27c` move on a completion**,\nrather than only `_Mylast`.\n\n`RecordObservedTech` is called from `OnTechResearched` (`0x00891790`) and from `0x007be228`,\n`0x007be4e1`, `0x007be535`. It is a **de-duplicating** append: it appends only if no existing\nelement already carries that tech name — worth knowing for the reimplementation, since a naive\n`push_back` would diverge on a re-observation.\n\nNeither `push_back` nor `operator=` is COMDAT-ambiguous: `0x007b7320` has exactly one caller\n(`RecordObservedTech`, `ecx = player+0x274`) and `0x00872380` has two, both passing\n`ServerPlayer+0x274`. `0x007b5820` **is** shared with `FUN_0086dec0` and may be a folded body,\nso it is labelled `vector_44B_grow`, not as ObservedTech-specific.\n\n### Element layout — as far as the evidence actually goes\n\nThe default ctor at `0x008562a0` writes vtable `0x00a2439c` at `+0x00`. RTTI:\nCOL `0x00a81c78` → type descriptor `0x00aeede4` → **`.?AVObservedTech@Game@@`**. So\n`ObservedTech` is polymorphic and its first word is a vptr, not a data field — which the\non-disk shape does not tell you.\n\n> **Superseded 2026-09-08 by lane S — see §9.** The table as first written called the\n> embedded string 0x18 bytes and left `+0x08`, `+0x24`, `+0x28` unaccounted. `+0x24` is not a\n> field: it is the string's own trailing allocator word. The corrected map is below; the\n> original reasoning is kept in §9 because the way it went wrong is the useful part.\n\n| offset | size | member | evidence |\n|---|---|---|---|\n| `+0x00` | 4 | vptr `0x00a2439c` | ctor writes it, RTTI-confirmed |\n| `+0x04` | 2 | `uint16 otnF` (turn first observed) | `mov word [eax-0x28],cx` at `0x007ba2b0` (`eax` = `_Mylast`, element = `_Mylast-0x2c`), source `[ebx+0xc]`; tag from `ObservedTech::Write` |\n| `+0x06` | 2 | `uint16 otnL` (turn last observed) | `mov word [eax-0x26],dx` at `0x007ba2c6`, **same source word** `[ebx+0xc]` — first sighting sets first == last |\n| `+0x08` | 1 | `bool odet` | ctor stores a **byte** (`mov [esi+0x8],bl`, `0x008562f4`); copy-ctor copies a byte; serialised with `WriteBool`/`ReadBool` |\n| `+0x0c..+0x27` | 0x1c | `std::string otch` (tech name) | object base `+0x0c`, MSVC `{_Bx[16] @0, _Mysize @0x10, _Myres @0x14, _Alval @0x18}`. Ctor writes `[+0x0c]=0`, `[+0x1c]=0`, `[+0x20]=0xf`; the search loop reads `[+0x1c]` as the length and calls compare with `this = +0x0c`; the post-append assign uses `lea ecx,[_Mylast-0x20]` = `+0x0c`. `+0x24` is `_Alval` — never read, never written, by anything |\n| `+0x28` | 4 | `int owith` | ctor zeroes it; `ObservedTech::Write` emits it last |\n\n`4 + 2 + 2 + 1(+3 pad) + 0x1c + 4 = 0x2c` exactly — sizeof is fully accounted for, with no\npadding slack and no unaccounted field.\n\n### Where the mapping came from — the serializer\n\n`Game::ObservedTech`'s vftable `0x00a2439c` is the usual 3 slots\n`{ [0] 0x00793610 scalar deleting dtor, [1] 0x00817c40 Read, [2] 0x00817cf0 Write }`.\n`Write` enumerates the entire object, in order, and touches nothing else:\n\n```\n0x00817cff movzx ecx,word [edi+0x04] push 0xa2b38c \"otnF\" -> stream vft+0x24 (int)\n0x00817d0f movzx ecx,word [edi+0x06] push 0xa2b384 \"otnL\" -> stream vft+0x24 (int)\n0x00817d26 lea eax,[edi+0x08] push 0xa2b36c \"odet\" -> WriteBool 0x008b9c20\n0x00817d37 lea ecx,[edi+0x0c] push 0xa2b3e8 \"otch\" -> WriteString 0x008b9d70\n0x00817d46 mov eax,[edi+0x28] push 0xa2b364 \"owith\" -> stream vft+0x24 (int)\n```\n\n`Read` (`0x00817c40`) is the exact mirror: `otnF`/`otnL` read as ints and stored back with\n16-bit `mov word [ebx],ax`, `odet` through `ReadBool`, `otch` through `ReadString`, `owith`\nreached as `add edi,0x28`. That matches the on-disk order `save_reader.py` already had\n(`Otch = otnF otnL odet otch(string) owith`), which is a nice independent agreement between\nthe disassembly and the save oracle.\n\n`Game::ObservedWeapon` (`Write` `0x00817bc0`, `Read` `0x00817b10`) is the same element shape\nwith tag `owep` (`0x00a2b3f0`) in place of `otch` — a second instance of the identical 0x2c\nlayout.\n\nLane P's `observed_techs` region byte delta remains a valid live cross-check and should come\nback as exactly 44 per completion.\n\n## 5. False-positive rate, honestly\n\nTwo different error rates, and the interesting one is not the one you'd expect.\n\n**Decode-level error of the naive method is low.** A raw byte scan for `8D` + ModRM + the\ndisplacement — the thing you'd write without a decoder — is mostly *right*:\n\n| query | naive candidates | not actually an instruction | real sites the naive scan **missed** |\n|---|---|---|---|\n| `lea`, disp32 `0x274` | 19 | 0 (0.0%) | **80 of 99** |\n| 11 common opcodes, disp32 `0x274` | 89 | 1 (1.1%) | 11 of 99 |\n| `lea`, disp8 `0x14` | 828 | 1 (0.1%) | **13,784 of 14,611** |\n| 11 common opcodes, disp8 `0x14` | 10,326 | 59 (0.6%) | 4,344 of 14,611 |\n\nSo the decoder's win is **recall, not decode precision**. A hand-written opcode set misses\n80–94% of the real accesses, because a member is read, written, compared, and float-loaded far\nmore often than its address is taken, and you cannot enumerate those opcodes by hand.\n\n**Class-level precision is the real problem, and it is poor.** The scanner knows the\ndisplacement; it cannot know what class the base register holds. `query 0x274` returns 99 sites\nin 45 functions and only about 6 of those functions are actually touching `ServerPlayer::otch`\n— roughly **13% precision by function**. The honest way to state the value is as search-space\nreduction: 41,411 functions → 45, about **900×**, down to a list a human reads in two minutes.\n\n**The cohort ranker helps, and has a trap.** Scoring functions by how many *already-known*\noffsets of the same class they touch pulls real class methods to the top (the serializer hits\n50/50). But it would have **thrown away the correct answer**: `RecordObservedTech` touches only\n`0x274` and `0x278` and nothing else on `ServerPlayer`, so any `--min>=1` filter drops it. Use\ncohort as a ranker, never as a filter. This is now written into the tool's own docstring.\n\nWhat actually closed the case was the plain `query 0x274` list **intersected with one call-graph\nlookup** (`OnTechResearched`'s direct callees). Displacement scan for recall, call graph for\ndisambiguation — neither alone was enough.\n\n## 6. Previously anonymous offsets — attribution results\n\nThe payoff was smaller than hoped, because most of the audit's anonymous offsets had already\nbeen named by other lanes since the audit was written.\n\n| offset | status before | after |\n|---|---|---|\n| `player+0x274/0x278/0x27c` | \"vector grew, append site unknown\" | **`RecordObservedTech+0xdf` (0x007ba27f)**, `sizeof` = 0x2c |\n| `player+0x2b0` | already named by lane E | unchanged (`EvNxID`) |\n| `TechTree+0x20` | already `TechTree_off_OrderCounter` | unchanged |\n| `ServerPlayer+0x308` | already `ServerPlayer_off_NodeBore` | unchanged |\n| `Budget+0x64` | harness-audit row 11: \"the original writes it\" | **not supported.** See below |\n\n**`Budget+0x64` (harness-audit row 11) — a correction.** `ServerPlayer::ComputeBudget`\n(`0x00863030`) writes its `Budget*` out-param through `esi`, and every such store lands in\n`+0x00..+0x54` (the 22-int block). The only two `+0x64` accesses in the whole function are\n**loads off a different base register** (`mov ecx,[eax+0x64]` at `0x0086328c`,\n`mov edx,[eax+0x64]` at `0x0086335d`). There is no store to `Budget+0x64` in `ComputeBudget`.\n\nSeparately, `TechTree::ProcessResearch`'s `int* overbudget` fourth argument is **not**\n`Budget+0x64`: its only caller is `ProcessTurn` (`0x00891340`) and the call at `0x008914a5`\npasses `lea edx,[ebp-0x14]` — a stack local, consumed immediately after the call\n(`mov eax,[ebp-0x14]; cmp eax,0; jle`).\n\nThis agrees with lane R, whose `budget_object` guard saw `Budget+0x64` change in **0 of 4284\ncalls**. Row 11 should be reclassified from \"the original writes it and B1 never checked\" to\n\"nothing has been shown to write it\"; the remaining way to settle it is a write watchpoint on\nthat word, not another static search.\n\n## 7. Verdict on the technique\n\nWorth keeping, with its limits stated. It answered a question that had been parked, and the\n`0x29c` validation turned up a `ProcessTurn` `EventStorage` site nobody had. But it is a\n**recall** tool that produces a 20–100 line candidate list per offset, not an oracle: every\nresult still needs a call-graph or decompiler check before it is a fact. For the ~1,600\nremaining classes the realistic workflow is `query ` → read the list → confirm with one\ncross-reference call.\n\n## 8. Ghidra writeback\n\nLabels: `RecordObservedTech` `0x007ba1a0`, `vector_ObservedTech_push_back` `0x007b7320`,\n`ObservedTech_ctor` `0x008562a0`, `vector_ObservedTech_assign` `0x00872380`,\n`vector_44B_grow` `0x007b5820`, `vftable_ObservedTech` `0x00a2439c`. Plate comments carrying\nthe stride evidence on the first four.\n\n`addresses.json`: `ObservedTech_sizeof`, `ObservedTech_vftable`, `ObservedTech_off_Name`,\n`RecordObservedTech`, `vector_ObservedTech_push_back`, `vector_ObservedTech_assign`,\n`ObservedTech_ctor`, `vector_44B_grow`; `ServerPlayer_off_ObservedTechs` updated from\n\"NOT PINNED\" to `verified`.\n\n**Lane S round (2026-09-08).** Labels: `ObservedTech_Write` `0x00817cf0`, `ObservedTech_Read`\n`0x00817c40`, `ObservedTech_scalar_deleting_dtor` `0x00793610`, `ObservedWeapon_Write`\n`0x00817bc0`, `ObservedWeapon_Read` `0x00817b10`, `vector_ObservedTech_uninit_copy` `0x0079a150`,\n`vector_string_find_by_name` `0x00699bd0`. Prototypes on the five class methods. Plate comments\ncarrying the full member map on the two serializers, the ctor, the dtor and the copy helper, and\nthe `sizeof(std::string) = 0x1c` fact on `Stream::WriteString` `0x008b9d70` and on the\n`vector` stride site `0x00699bd0` — the two places a future lane is most likely to look.\n`addresses.json` +10 entries (`std_string_sizeof`, `ObservedTech_Read/_Write/_dtor/_copy_ctor`,\n`ObservedTech_off_TurnFirst/_TurnLast/_Detected/_With`, `ObservedWeapon_Write`), 4 corrected.\n\n---\n\n## 9. `std::string` is 0x1c, not 0x18 — the correction, and why it mattered (lane S, 2026-09-08)\n\n§4 above originally reported the embedded string as **0x18 bytes**, against the campaign-wide\n`_Bx@0, _Mysize@0x10, _Myres@0x14, _Alval@0x18`, sizeof `0x1c`. Lane X flagged it as \"worth\nre-checking\" rather than asserting it, which was the right call: **`0x1c` is correct, and it is\ncorrect everywhere in this binary.** `ObservedTech+0x24` is the string's own trailing allocator\nword, not a data member.\n\n### Why the 0x18 reading looked right\n\nEverything lane X observed was accurate. The string's *live* fields really do stop at `+0x14`\n(`_Bx@0`, `_Mysize@0x10`, `_Myres@0x14`), because `_Alval` is `std::allocator` — an empty\nclass. It occupies a word of the object but is never loaded or stored, so it is invisible to\nany evidence based on **what the code touches**. Sizing a type from its accessed fields\nundercounts it by exactly the tail padding. The same trap is live for `std::vector` in this\nbuild, which is `{_Myfirst, _Mylast, _Myend, _Alval}` = `0x10` while only three words are ever\nread (`events.md` already records the `_Alval` word at `EventStorage+0x10` and `+0x14`).\n\n### The three things that settle it inside `ObservedTech`\n\nEach is a *complete enumeration* of the object, which is the right instrument here — an\nenumeration can show a field's **absence**, a touch-scan cannot.\n\n1. **`ObservedTech::Write` `0x00817cf0`** serialises `+0x04, +0x06, +0x08, +0x0c, +0x28`.\n No `+0x24`. (`Read` `0x00817c40` mirrors it.)\n2. **`ObservedTech_ctor` `0x008562a0`** initialises `+0x00, +0x04, +0x08, +0x0c(string), +0x28`.\n No `+0x24` — while zeroing every other scalar in the object.\n3. **The copy constructor**, inlined at `0x0079a184` inside the vector's uninitialised-copy\n helper `FUN_0079a150`, copies `+0x04, +0x06, +0x08`, the string at `+0x0c`, and `+0x28`.\n No `+0x24`.\n\nA 4-byte data member that the constructor, the copy constructor and the serializer all ignore\nis not a data member.\n\n### Binary-wide check — `tools/strfootprint.py`\n\nOne class is an anecdote, so the same question was put to the whole binary. Every serializer\nhands member pointers to the `Mars::Stream` primitive helpers with a fixed idiom\n(`lea r,[base+disp]; push r; push tag; push stream; call helper`), so the scanner recovers\n`(base, disp, tag)` for every string site and then asks: does the same function touch any other\noffset inside `(N, N+0x1c)` off the same base register?\n\n```\nstring helper call sites : 241\n resolved to a class member offset : 65\n stack temporaries (ebp/esp base) : 30\n offset not reached by a plain lea : 146\n\nmembers with a sibling inside (N, N+0x1c) : 0\n\ngap from a string member to the next member on the same base:\n +0x1c : 51\n +0x20 : 1\n```\n\n**65 string members across every serializer in the exe, zero collisions, and 51 of the 52\nmeasurable gaps are exactly `0x1c`.** The single `+0x20` is `StrategyServer::KeyPath` at\n`+0x134`, whose *Read* side gives `+0x1c` to `+0x150` — the writer simply skips a member.\nThere is no `0x18` instantiation, no empty-base-optimised variant, and no game-local string\nclass. One layout, `0x1c`.\n\nTwo exclusions matter or the scan reports noise, and both are why a naive version of this\nwould have \"confirmed\" 0x18:\n\n* **`ebp`/`esp` bases are stack temporaries, not members.** A local string at `[ebp-0x2c]`\n shows accesses at `-0x1c` and `-0x18` — which read exactly like two sibling fields inside\n the span. All 30 such sites are excluded.\n* **`N+0x10` and `N+0x14` are the string's own `_Mysize`/`_Myres`**, touched inline whenever\n the compiler expands the `_Myres >= 16 ? _Ptr : _Buf` test at a call site.\n\n### Independent corroboration outside the scan\n\n* `FUN_00699bd0` walks a `vector` doing the SSO test at `[esi+0x14]`/`[esi]` —\n element base *is* string base — and advances `add esi,0x1c` (`0x00699c29`). The stride of a\n vector of strings **is** `sizeof(std::string)`.\n* `EventStorage::PostEvent` `0x008862b0` takes two by-value `std::string`s at `[ebp+0x08]` and\n `[ebp+0x24]` (spacing `0x1c`) and `RET 0x4c` = `2*0x1c + 5*4`.\n* `MoraleEvent` is 0x50 bytes with its name string at `+0x34`: `0x34 + 0x1c = 0x50` exactly.\n\n### Blast radius — what actually had to change\n\nNothing in any recovered struct table. Every string-bearing layout in `struct-recovery.md`,\n`save-editor-structs.md`, `events.md` and `schema-gaps-resolved.md` already used `0x1c` spans\nand `0x1c` inter-field gaps, and the binary agrees with all of them. `ServerPlayer::pswd` at\n`0x2dc..0x2f7` — the row §4 asked to re-check — is **correct**: `Write` `0x008563e0` puts the\nnext member exactly `0x1c` above it. The corrections were confined to three prose statements\nthat had propagated the 0x18 number (`loader-prototypes.md` conventions line, the\n`GlobalConst_ParseString` prototype in `addresses.json`, and §4 here) plus one transposition in\n`struct-recovery.md` §0 that said `size@0x14, res@0x18` where the verified offsets are\n`0x10`/`0x14`.\n\nThe lesson worth carrying, and the reason this was worth chasing rather than reconciling: **do\nnot size a struct member from the offsets the code touches.** Trailing empty-allocator words in\nthis build's STL are invisible to a touch-scan and cost exactly 4 bytes every time. Size types\nfrom an enumeration — a serializer, a constructor, a copy constructor, or a container stride.","lineStart":1,"lineEnd":405,"totalLines":405,"truncated":false}},"title":"../../../tmp/opencode/sots-final-research-re/findings/subsystems/observedtech-append.md","time":{"start":1789016917928,"end":1789016917944}},"metadata":{"openai":{"itemId":"fc_0a9b1191c74318a5016aa23b5599f087d1a7184a47dd4e3b36"}},"id":"prt_089b7c7a4001vyCx4SHYYkDDaG","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b77c52001PoTmstaHMevnX1"}} +{"type":"tool_use","timestamp":1789016918004,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_BUpNQBnNcqHzPP0DI3laJ0sZ","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/research/research-completion-abi.md"},"output":"/home/alex/sots-re/campaign/research/research-completion-abi.md\nfile\n\n1: # Completion record ABI recovery\n2: \n3: Static handoff only. The provenance index is\n4: `verify/results/research-completion-abi/reva-2026-09-09-index.md`; the regenerated instruction\n5: capture and interpretation are respectively\n6: `verify/results/research-completion-abi/objdump-2026-09-09-ownership.txt` and\n7: `verify/results/research-completion-abi/recovered-static.md`. The complete dedup/helper repair is\n8: `verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt`; its first-window raw\n9: provenance is superseded by the paired captures and identity record in\n10: `verify/results/research-completion-abi/objdump-2026-09-10-boundary-repair.md` under Astra decision\n11: `d-d2a9b8be6399a6abaa0e05a5`. Input identity is `dumps/sots.exe`,\n12: SHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841` / MD5\n13: `9969481c39f4b33a8a21c48b62abee4c`.\n14: \n15: The ownership archive's terminal-byte provenance is likewise superseded by the complete package\n16: `verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/` under Astra decision\n17: `d-d4c494ba02ada278030ef473`. Its six narrow/wide pairs, raw section-byte checks and full ten-window\n18: audit establish the encoded return immediates while preserving the static-only limitation. The\n19: package found three additional truncated historical stops (ObservedTech append/reallocator and\n20: string allocation/replacement); their widened streams are now the byte authority. No archive\n21: production-history inference or live-safety claim is made.\n22: \n23: The TurnEvents correction's current-session boundary authority is\n24: `verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/`. It supersedes the stale-session\n25: attribution and truncated nested-copy stream invalidated by decisions\n26: `d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. The package binds the actual session\n27: and a fail-if-used output directory; captures complete helper authority through `0x0077992f`; and\n28: retains `0x00779a20` as an expected-failing boundary beside complete `0x00779a21`, `0x00779a23`, and\n29: `0x00779a28` controls plus raw bytes. It is analyst static evidence awaiting a fresh independent\n30: verifier, not restored acceptance.\n31: \n32: ## Implementable machine boundaries recovered\n33: \n34: * `0x008562a0`: ObservedTech default constructor, ECX receiver, EAX return, plain `ret`.\n35: * `0x007b7320`: ObservedTech vector append, ECX receiver plus one stack word, `ret 4`; stride `0x2c`.\n36: Its copy helper is `0x0079a150` (cdecl-style allocator/destination/source stack arguments), which copy-constructs the embedded string rather than copying a\n37: vector element header. Capacity growth is `0x007b5820` -> `0x007b34e0` -> `0x0057e590`.\n38: * `0x0057e590` calls `0x00924fb6` with `count * 0x2c`; reallocation destroys every old element via\n39: virtual slot 0 with zero and frees the array through `0x00924faa`. These are MSVCR100 scalar-new\n40: and scalar-delete import thunks, not clean-room allocator operations.\n41: * `0x0086c580`: PlayerEvent vector append, ECX receiver plus one stack word, `ret 4`; stride `0x74`.\n42: It grows via `0x00869500` and copy-constructs through `0x007693f0` (ECX destination, stack source,\n43: EAX destination return, ret 4), independently assigning all\n44: three strings. `0x0061ae90` releases each long string via `0x00924faa` when capacity is `>= 0x10`.\n45: * `0x004249a0` (reached by `0x00425430` assignment) allocates through `0x00924fb6` and releases a\n46: prior long destination buffer through `0x00924faa`. A temporary long string is therefore not\n47: transferable by raw header copy.\n48: * `0x00885380`: get-or-create TurnEvents bucket, ECX EventStorage receiver plus stack turn, EAX\n49: bucket return, `ret 4`. It returns the last existing matching turn. On absence it initializes the\n50: stack bucket's vptr and empty nested-vector header but **not** its `EvTurn`; `0x00884cb0` copies\n51: that incoming stack word and deep-copies the nested vector. After temporary nested-vector cleanup,\n52: get/create writes the requested turn into the stored last element and returns it. The transient\n53: word is not measured randomness or a zero default. Fresh correction capture:\n54: `verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/`, governed by\n55: `d-b51f3f76803e852ed250846a`.\n56: * `0x00884cb0`: outer TurnEvents vector append, ECX vector receiver plus stack source, `ret 4`,\n57: stride `0x18`. Full-capacity growth is `0x008841a0` -> `0x00883a60`; allocation is\n58: `0x006e8f50` -> `0x00924fb6` with `count * 0x18`. Existing buckets are copy-constructed by\n59: `0x0077fed0`, including an independently allocated/copied nested PlayerEvent vector via\n60: `0x00779850` -> `0x0078af40` (`count * 0x74`) -> `0x007725a0` -> `0x007693f0`.\n61: * TurnEvents virtual slot zero resolves from vtable `0x00a0f07c` to `0x0062e120`. It destroys the\n62: nested vector through `0x00629580`; that destroys every `0x74` PlayerEvent, frees the nested block,\n63: and zeros its three pointers. Static unwind edges clean partial PlayerEvent and TurnEvents ranges\n64: and free the new outer block, but no allocation failure was executed live.\n65: \n66: ## Ordering / visible effects\n67: \n68: RecordObservedTech's append predicate is name absence, not capacity. A matching existing record\n69: keeps first-turn/name and updates last-turn/with mask. `0x00825d40` scans a bucket's events in\n70: `0x74` steps, checking action, location, three floats, message and image before passing both\n71: description strings to `0x0046f8c0`. Fresh paired-boundary instructions establish that helper as\n72: caller-cleaned `bool string_not_equal(stored, candidate)`: it returns one for any byte/length\n73: difference and zero for equality, handling each operand's inline/heap representation at capacity\n74: `0x10`. FindDuplicate reaches the match return only on zero, so `EvDsc` equality is required and a\n75: description-only difference does not deduplicate. This statically contradicts the inherited\n76: description-omission claim; decision `d-2ff30c9f5355116bea822924` required the now-archived complete\n77: branch/helper repair. The later provenance correction does not itself prove these semantics: an\n78: independent verifier must reproduce the repaired package and predeclared falsifiers. The wrapper\n79: returns the first element equal in all fields and writes nothing.\n80: `0x00879eb0` prunes only a leading\n81: stale run (`EvTurn < turn-50`), deep-shifts from the run's last stale element, and therefore removes\n82: `n-1`: one stale bucket survives, a single stale bucket causes no write, and stale buckets after a\n83: fresh bucket are not inspected. The no-duplicate EventStorage path remains distinct from event-vector\n84: capacity: it is the path that appends a `0x74` PlayerEvent and changes IDs/vector contents. Caller\n85: text/position/action/defaulting and the exact PostEvent write order remain required inputs/effects.\n86: No RNG draw occurs in the recovered bucket, duplicate, prune, copy, allocation, or destruction\n87: boundaries.\n88: \n89: ## Original/runtime dependencies and limits\n90: \n91: Any original-assisted allocation, string assignment or deletion must retain allocator-family\n92: compatibility: the recovered calls target the original MSVCR100 import thunks. A standalone\n93: replacement needs its own coherent allocation/destruction boundary; calling these original helpers\n94: is an original dependency, not independent replacement. Calling `0x0046f8c0` likewise retains an\n95: original string-layout/comparison dependency, though its equality behavior is implementable without\n96: allocation in a standalone boundary. Required unavailable proof inputs are a safe\n97: long-string/full-capacity pre/post fixture (or equivalent archived trace), same-bucket\n98: equal/description-only-different event fixtures covering short and long strings, exact exceptional\n99: cleanup outcomes under a live throw, and independent reproduction of the named static windows and\n100: falsifiers. This handoff makes no live\n101: allocator-safety, runtime event-construction, or replacement-acceptance claim.\n\n(End of file - total 101 lines)\n","metadata":{"preview":"# Completion record ABI recovery\n\nStatic handoff only. The provenance index is\n`verify/results/research-completion-abi/reva-2026-09-09-index.md`; the regenerated instruction\ncapture and interpretation are respectively\n`verify/results/research-completion-abi/objdump-2026-09-09-ownership.txt` and\n`verify/results/research-completion-abi/recovered-static.md`. The complete dedup/helper repair is\n`verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt`; its first-window raw\nprovenance is superseded by the paired captures and identity record in\n`verify/results/research-completion-abi/objdump-2026-09-10-boundary-repair.md` under Astra decision\n`d-d2a9b8be6399a6abaa0e05a5`. Input identity is `dumps/sots.exe`,\nSHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841` / MD5\n`9969481c39f4b33a8a21c48b62abee4c`.\n\nThe ownership archive's terminal-byte provenance is likewise superseded by the complete package\n`verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/` under Astra decision\n`d-d4c494ba02ada278030ef473`. Its six narrow/wide pairs, raw section-byte checks and full ten-window\naudit establish the encoded return immediates while preserving the static-only limitation. The\npackage found three additional truncated historical stops (ObservedTech append/reallocator and\nstring allocation/replacement); their widened streams are now the byte authority. No archive","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/research/research-completion-abi.md","text":"# Completion record ABI recovery\n\nStatic handoff only. The provenance index is\n`verify/results/research-completion-abi/reva-2026-09-09-index.md`; the regenerated instruction\ncapture and interpretation are respectively\n`verify/results/research-completion-abi/objdump-2026-09-09-ownership.txt` and\n`verify/results/research-completion-abi/recovered-static.md`. The complete dedup/helper repair is\n`verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt`; its first-window raw\nprovenance is superseded by the paired captures and identity record in\n`verify/results/research-completion-abi/objdump-2026-09-10-boundary-repair.md` under Astra decision\n`d-d2a9b8be6399a6abaa0e05a5`. Input identity is `dumps/sots.exe`,\nSHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841` / MD5\n`9969481c39f4b33a8a21c48b62abee4c`.\n\nThe ownership archive's terminal-byte provenance is likewise superseded by the complete package\n`verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/` under Astra decision\n`d-d4c494ba02ada278030ef473`. Its six narrow/wide pairs, raw section-byte checks and full ten-window\naudit establish the encoded return immediates while preserving the static-only limitation. The\npackage found three additional truncated historical stops (ObservedTech append/reallocator and\nstring allocation/replacement); their widened streams are now the byte authority. No archive\nproduction-history inference or live-safety claim is made.\n\nThe TurnEvents correction's current-session boundary authority is\n`verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/`. It supersedes the stale-session\nattribution and truncated nested-copy stream invalidated by decisions\n`d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. The package binds the actual session\nand a fail-if-used output directory; captures complete helper authority through `0x0077992f`; and\nretains `0x00779a20` as an expected-failing boundary beside complete `0x00779a21`, `0x00779a23`, and\n`0x00779a28` controls plus raw bytes. It is analyst static evidence awaiting a fresh independent\nverifier, not restored acceptance.\n\n## Implementable machine boundaries recovered\n\n* `0x008562a0`: ObservedTech default constructor, ECX receiver, EAX return, plain `ret`.\n* `0x007b7320`: ObservedTech vector append, ECX receiver plus one stack word, `ret 4`; stride `0x2c`.\n Its copy helper is `0x0079a150` (cdecl-style allocator/destination/source stack arguments), which copy-constructs the embedded string rather than copying a\n vector element header. Capacity growth is `0x007b5820` -> `0x007b34e0` -> `0x0057e590`.\n* `0x0057e590` calls `0x00924fb6` with `count * 0x2c`; reallocation destroys every old element via\n virtual slot 0 with zero and frees the array through `0x00924faa`. These are MSVCR100 scalar-new\n and scalar-delete import thunks, not clean-room allocator operations.\n* `0x0086c580`: PlayerEvent vector append, ECX receiver plus one stack word, `ret 4`; stride `0x74`.\n It grows via `0x00869500` and copy-constructs through `0x007693f0` (ECX destination, stack source,\n EAX destination return, ret 4), independently assigning all\n three strings. `0x0061ae90` releases each long string via `0x00924faa` when capacity is `>= 0x10`.\n* `0x004249a0` (reached by `0x00425430` assignment) allocates through `0x00924fb6` and releases a\n prior long destination buffer through `0x00924faa`. A temporary long string is therefore not\n transferable by raw header copy.\n* `0x00885380`: get-or-create TurnEvents bucket, ECX EventStorage receiver plus stack turn, EAX\n bucket return, `ret 4`. It returns the last existing matching turn. On absence it initializes the\n stack bucket's vptr and empty nested-vector header but **not** its `EvTurn`; `0x00884cb0` copies\n that incoming stack word and deep-copies the nested vector. After temporary nested-vector cleanup,\n get/create writes the requested turn into the stored last element and returns it. The transient\n word is not measured randomness or a zero default. Fresh correction capture:\n `verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/`, governed by\n `d-b51f3f76803e852ed250846a`.\n* `0x00884cb0`: outer TurnEvents vector append, ECX vector receiver plus stack source, `ret 4`,\n stride `0x18`. Full-capacity growth is `0x008841a0` -> `0x00883a60`; allocation is\n `0x006e8f50` -> `0x00924fb6` with `count * 0x18`. Existing buckets are copy-constructed by\n `0x0077fed0`, including an independently allocated/copied nested PlayerEvent vector via\n `0x00779850` -> `0x0078af40` (`count * 0x74`) -> `0x007725a0` -> `0x007693f0`.\n* TurnEvents virtual slot zero resolves from vtable `0x00a0f07c` to `0x0062e120`. It destroys the\n nested vector through `0x00629580`; that destroys every `0x74` PlayerEvent, frees the nested block,\n and zeros its three pointers. Static unwind edges clean partial PlayerEvent and TurnEvents ranges\n and free the new outer block, but no allocation failure was executed live.\n\n## Ordering / visible effects\n\nRecordObservedTech's append predicate is name absence, not capacity. A matching existing record\nkeeps first-turn/name and updates last-turn/with mask. `0x00825d40` scans a bucket's events in\n`0x74` steps, checking action, location, three floats, message and image before passing both\ndescription strings to `0x0046f8c0`. Fresh paired-boundary instructions establish that helper as\ncaller-cleaned `bool string_not_equal(stored, candidate)`: it returns one for any byte/length\ndifference and zero for equality, handling each operand's inline/heap representation at capacity\n`0x10`. FindDuplicate reaches the match return only on zero, so `EvDsc` equality is required and a\ndescription-only difference does not deduplicate. This statically contradicts the inherited\ndescription-omission claim; decision `d-2ff30c9f5355116bea822924` required the now-archived complete\nbranch/helper repair. The later provenance correction does not itself prove these semantics: an\nindependent verifier must reproduce the repaired package and predeclared falsifiers. The wrapper\nreturns the first element equal in all fields and writes nothing.\n`0x00879eb0` prunes only a leading\nstale run (`EvTurn < turn-50`), deep-shifts from the run's last stale element, and therefore removes\n`n-1`: one stale bucket survives, a single stale bucket causes no write, and stale buckets after a\nfresh bucket are not inspected. The no-duplicate EventStorage path remains distinct from event-vector\ncapacity: it is the path that appends a `0x74` PlayerEvent and changes IDs/vector contents. Caller\ntext/position/action/defaulting and the exact PostEvent write order remain required inputs/effects.\nNo RNG draw occurs in the recovered bucket, duplicate, prune, copy, allocation, or destruction\nboundaries.\n\n## Original/runtime dependencies and limits\n\nAny original-assisted allocation, string assignment or deletion must retain allocator-family\ncompatibility: the recovered calls target the original MSVCR100 import thunks. A standalone\nreplacement needs its own coherent allocation/destruction boundary; calling these original helpers\nis an original dependency, not independent replacement. Calling `0x0046f8c0` likewise retains an\noriginal string-layout/comparison dependency, though its equality behavior is implementable without\nallocation in a standalone boundary. Required unavailable proof inputs are a safe\nlong-string/full-capacity pre/post fixture (or equivalent archived trace), same-bucket\nequal/description-only-different event fixtures covering short and long strings, exact exceptional\ncleanup outcomes under a live throw, and independent reproduction of the named static windows and\nfalsifiers. This handoff makes no live\nallocator-safety, runtime event-construction, or replacement-acceptance claim.","lineStart":1,"lineEnd":101,"totalLines":101,"truncated":false}},"title":"campaign/research/research-completion-abi.md","time":{"start":1789016917917,"end":1789016917980}},"metadata":{"openai":{"itemId":"fc_0a9b1191c74318a5016aa23b5599e087d1a8dabc04b8ba28ba"}},"id":"prt_089b7c799001E8PJ5lQb3DOVz6","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b77c52001PoTmstaHMevnX1"}} +{"type":"tool_use","timestamp":1789016918004,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_oAlEofZgGQcO7C54pu2SNZAg","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md\nfile\n\n1: # Fresh TurnEvents boundary capture\n2: \n3: Session `run-9daf5c3b75547271d5c3b4ed`; analyst static measurement only. This package implements\n4: decisions `d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. It does not execute the\n5: game, allocations, constructors, destructors, exception paths, event posting, or RNG.\n6: \n7: ## Provenance and positive execution\n8: \n9: `capture.py` requires the actual session and matching output directory and fails if the directory\n10: contains anything except the recipe. Before capture it positively rejected missing and stale session\n11: IDs, a stale output path, and a simulated reused location. The recipe is intentionally not reusable\n12: unchanged by a later campaign session.\n13: \n14: The manifest records 12 subprocess executions. Every command returned zero, emitted nonempty\n15: stdout, and emitted empty stderr. Before and after source bindings are identical: engine\n16: `ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd`, RE\n17: `6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8`. Fresh input identities are:\n18: \n19: * owner-supplied `dumps/sots.exe`: 7,898,624 bytes, SHA-256\n20: `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`;\n21: * `/usr/bin/objdump`: 373,888 bytes, GNU Binutils 2.38, SHA-256\n22: `1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd`.\n23: \n24: ## Measured observations\n25: \n26: 1. The known-bad stop `0x00779a20` returns zero but displays only byte `74` for the instruction at\n27: `0x00779a1f`. It is an explicit negative control, not a passing stream.\n28: 2. Stop `0x00779a21` displays the complete `74 10` conditional jump; stop `0x00779a23` additionally\n29: displays complete `8b cf`; stop `0x00779a28` additionally displays complete\n30: `e8 28 6a ff ff`. Raw section bytes over `0x00779a1f..0x00779a28` are\n31: `74 10 8b cf e8 28 6a ff ff`. The resolver's three boundary predictions therefore held.\n32: 3. The separately bounded `0x00779850..0x00779930` authority capture includes destination nested-\n33: vector pointer initialization, empty/nonempty branching, allocation/range-copy calls, normal\n34: `ret 4` at `0x00779912`, unwind cleanup call at `0x00779918`, deallocation call at\n35: `0x00779921`, and padding through `0x0077992f`. It excludes the later routine at `0x00779a10`.\n36: 4. Get/create `0x00885380..0x0088544a`, outer append `0x00884cb0..0x00884d8f`, and nested\n37: destruction `0x00629580..0x006295ca` end respectively in complete `ret 4`, `ret 4`, and `ret`\n38: instructions. Their wider controls preserve those rows and add padding or a subsequent prologue.\n39: \n40: ## Bounded static interpretation\n41: \n42: For valid input containers and normally returning callees, the instruction facts support this order:\n43: \n44: * get/create scans all existing `0x18` TurnEvents elements and retains the last matching `EvTurn`;\n45: this existing-match path returns without element construction;\n46: * a miss initializes a temporary vptr and three empty nested-vector pointers, but not temporary\n47: `EvTurn`; outer append copies source `+4`, then deep-copies the nested vector, then advances outer\n48: `_Mylast` by `0x18`;\n49: * nested copy first nulls all destination pointers. Empty source returns without allocation;\n50: nonempty source enters allocation and `0x74`-stride PlayerEvent range-copy construction;\n51: * get/create cleans the temporary nested vector before writing requested turn into the stored final\n52: element and returning that element;\n53: * nested destruction skips element/free work for null storage. Otherwise it invokes every\n54: PlayerEvent virtual destructor, frees the nested block via `0x00924faa`, and then zeros all three\n55: pointers.\n56: \n57: The uninitialized transient scalar is not a random draw and should not be reproduced as intentional\n58: undefined behavior. No event record, event ID, text, outer EventStorage next-ID, or RNG state is\n59: written by the bounded helper itself. Static decoding does not demonstrate live allocator-family\n60: safety, exception cleanup outcomes, or observable transient behavior.\n61: \n62: ## Original dependencies, missing runtime inputs, and verifier falsifiers\n63: \n64: Original-assisted use depends on the binary's coherent MSVCR100 family: allocation thunk\n65: `0x00924fb6`, deletion thunk `0x00924faa`, nested allocation chain\n66: `0x00779850 -> 0x0078af40`, PlayerEvent range/copy chain\n67: `0x007725a0 -> 0x007693f0`, and virtual PlayerEvent destruction. A standalone implementation must\n68: replace the entire allocation/copy/destruction family; mixing raw headers with original-owned\n69: storage is not independent replacement.\n70: \n71: Missing live inputs are pre/post spare- and full-capacity outer vectors, empty and nonempty nested\n72: vectors with owned short/long strings, distinct stack sentinels, forced allocation failure/throw,\n73: and observers capable of detecting the transient source word. No such fixture was available or run.\n74: \n75: An independent verifier should use its own real session and fail-if-exists directory, freshly hash\n76: source/tool/input, reproduce all authority windows, and hold out at least one complete terminal\n77: boundary. It should require the `0x00779a20` control to fail completeness despite exit zero, compare\n78: raw bytes against decoded lengths, and check distinct existing-last-match, miss/spare, miss/full,\n79: empty/nonempty nested, and unwind states. Archived event records remain a separate validation input;\n80: this package does not prove their field semantics or promote either contract criterion.\n\n(End of file - total 80 lines)\n","metadata":{"preview":"# Fresh TurnEvents boundary capture\n\nSession `run-9daf5c3b75547271d5c3b4ed`; analyst static measurement only. This package implements\ndecisions `d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. It does not execute the\ngame, allocations, constructors, destructors, exception paths, event posting, or RNG.\n\n## Provenance and positive execution\n\n`capture.py` requires the actual session and matching output directory and fails if the directory\ncontains anything except the recipe. Before capture it positively rejected missing and stale session\nIDs, a stale output path, and a simulated reused location. The recipe is intentionally not reusable\nunchanged by a later campaign session.\n\nThe manifest records 12 subprocess executions. Every command returned zero, emitted nonempty\nstdout, and emitted empty stderr. Before and after source bindings are identical: engine\n`ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd`, RE\n`6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8`. Fresh input identities are:\n\n* owner-supplied `dumps/sots.exe`: 7,898,624 bytes, SHA-256\n `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`;","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md","text":"# Fresh TurnEvents boundary capture\n\nSession `run-9daf5c3b75547271d5c3b4ed`; analyst static measurement only. This package implements\ndecisions `d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. It does not execute the\ngame, allocations, constructors, destructors, exception paths, event posting, or RNG.\n\n## Provenance and positive execution\n\n`capture.py` requires the actual session and matching output directory and fails if the directory\ncontains anything except the recipe. Before capture it positively rejected missing and stale session\nIDs, a stale output path, and a simulated reused location. The recipe is intentionally not reusable\nunchanged by a later campaign session.\n\nThe manifest records 12 subprocess executions. Every command returned zero, emitted nonempty\nstdout, and emitted empty stderr. Before and after source bindings are identical: engine\n`ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd`, RE\n`6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8`. Fresh input identities are:\n\n* owner-supplied `dumps/sots.exe`: 7,898,624 bytes, SHA-256\n `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`;\n* `/usr/bin/objdump`: 373,888 bytes, GNU Binutils 2.38, SHA-256\n `1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd`.\n\n## Measured observations\n\n1. The known-bad stop `0x00779a20` returns zero but displays only byte `74` for the instruction at\n `0x00779a1f`. It is an explicit negative control, not a passing stream.\n2. Stop `0x00779a21` displays the complete `74 10` conditional jump; stop `0x00779a23` additionally\n displays complete `8b cf`; stop `0x00779a28` additionally displays complete\n `e8 28 6a ff ff`. Raw section bytes over `0x00779a1f..0x00779a28` are\n `74 10 8b cf e8 28 6a ff ff`. The resolver's three boundary predictions therefore held.\n3. The separately bounded `0x00779850..0x00779930` authority capture includes destination nested-\n vector pointer initialization, empty/nonempty branching, allocation/range-copy calls, normal\n `ret 4` at `0x00779912`, unwind cleanup call at `0x00779918`, deallocation call at\n `0x00779921`, and padding through `0x0077992f`. It excludes the later routine at `0x00779a10`.\n4. Get/create `0x00885380..0x0088544a`, outer append `0x00884cb0..0x00884d8f`, and nested\n destruction `0x00629580..0x006295ca` end respectively in complete `ret 4`, `ret 4`, and `ret`\n instructions. Their wider controls preserve those rows and add padding or a subsequent prologue.\n\n## Bounded static interpretation\n\nFor valid input containers and normally returning callees, the instruction facts support this order:\n\n* get/create scans all existing `0x18` TurnEvents elements and retains the last matching `EvTurn`;\n this existing-match path returns without element construction;\n* a miss initializes a temporary vptr and three empty nested-vector pointers, but not temporary\n `EvTurn`; outer append copies source `+4`, then deep-copies the nested vector, then advances outer\n `_Mylast` by `0x18`;\n* nested copy first nulls all destination pointers. Empty source returns without allocation;\n nonempty source enters allocation and `0x74`-stride PlayerEvent range-copy construction;\n* get/create cleans the temporary nested vector before writing requested turn into the stored final\n element and returning that element;\n* nested destruction skips element/free work for null storage. Otherwise it invokes every\n PlayerEvent virtual destructor, frees the nested block via `0x00924faa`, and then zeros all three\n pointers.\n\nThe uninitialized transient scalar is not a random draw and should not be reproduced as intentional\nundefined behavior. No event record, event ID, text, outer EventStorage next-ID, or RNG state is\nwritten by the bounded helper itself. Static decoding does not demonstrate live allocator-family\nsafety, exception cleanup outcomes, or observable transient behavior.\n\n## Original dependencies, missing runtime inputs, and verifier falsifiers\n\nOriginal-assisted use depends on the binary's coherent MSVCR100 family: allocation thunk\n`0x00924fb6`, deletion thunk `0x00924faa`, nested allocation chain\n`0x00779850 -> 0x0078af40`, PlayerEvent range/copy chain\n`0x007725a0 -> 0x007693f0`, and virtual PlayerEvent destruction. A standalone implementation must\nreplace the entire allocation/copy/destruction family; mixing raw headers with original-owned\nstorage is not independent replacement.\n\nMissing live inputs are pre/post spare- and full-capacity outer vectors, empty and nonempty nested\nvectors with owned short/long strings, distinct stack sentinels, forced allocation failure/throw,\nand observers capable of detecting the transient source word. No such fixture was available or run.\n\nAn independent verifier should use its own real session and fail-if-exists directory, freshly hash\nsource/tool/input, reproduce all authority windows, and hold out at least one complete terminal\nboundary. It should require the `0x00779a20` control to fail completeness despite exit zero, compare\nraw bytes against decoded lengths, and check distinct existing-last-match, miss/spare, miss/full,\nempty/nonempty nested, and unwind states. Archived event records remain a separate validation input;\nthis package does not prove their field semantics or promote either contract criterion.","lineStart":1,"lineEnd":80,"totalLines":80,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md","time":{"start":1789016917905,"end":1789016917986}},"metadata":{"openai":{"itemId":"fc_0a9b1191c74318a5016aa23b5599cc87d1923af24ffe24b99a"}},"id":"prt_089b7c781001QwGS46Tfn0REc1","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b77c52001PoTmstaHMevnX1"}} +{"type":"tool_use","timestamp":1789016918004,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_TEIdplVCOc3Rq6zsxZkogHQw","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\nfile\n\n1: #!/usr/bin/env python3\n2: \"\"\"Fresh, session-bound static capture required by two 2026-09-10 Astra decisions.\"\"\"\n3: \n4: import argparse\n5: import hashlib\n6: import json\n7: import subprocess\n8: from datetime import datetime, timezone\n9: from pathlib import Path\n10: \n11: \n12: ROOT = Path(\"/home/alex/sots-re\")\n13: SESSION = \"run-9daf5c3b75547271d5c3b4ed\"\n14: STALE_SESSION = \"run-ee78b8773688ca09f8046e21\"\n15: REL_OUT = Path(\"verify/results/research-completion-abi\") / SESSION\n16: OUT = ROOT / REL_OUT\n17: BINARY = ROOT / \"dumps/sots.exe\"\n18: TOOL = Path(\"/usr/bin/objdump\")\n19: CAMPAIGN = ROOT / \"tools/campaign.py\"\n20: ENGINE_TREE = Path(\"/tmp/opencode/sots-final-research-engine\")\n21: RE_TREE = Path(\"/tmp/opencode/sots-final-research-re\")\n22: EXPECTED_BINARY = \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n23: EXPECTED_TOOL = \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\"\n24: \n25: # Exact historical windows remain controls. Each companion widened stop was already shown\n26: # to add rows without changing the exact rows, except nested-copy's known-bad historical stop.\n27: DISASSEMBLY = (\n28: (\"turn-get-create-exact\", 0x00885380, 0x0088544A, \"complete-control\"),\n29: (\"turn-get-create-wide\", 0x00885380, 0x0088544E, \"boundary-audit\"),\n30: (\"turn-append-exact\", 0x00884CB0, 0x00884D8F, \"complete-control\"),\n31: (\"turn-append-wide\", 0x00884CB0, 0x00884D93, \"boundary-audit\"),\n32: (\"nested-dtor-exact\", 0x00629580, 0x006295CA, \"complete-control\"),\n33: (\"nested-dtor-wide\", 0x00629580, 0x006295CE, \"boundary-audit\"),\n34: (\"nested-copy-authority\", 0x00779850, 0x00779930, \"bounded-authority\"),\n35: (\"nested-copy-stop-a20\", 0x00779850, 0x00779A20, \"expected-truncated-negative\"),\n36: (\"nested-copy-stop-a21\", 0x00779850, 0x00779A21, \"predicted-complete-je\"),\n37: (\"nested-copy-stop-a23\", 0x00779850, 0x00779A23, \"predicted-complete-mov\"),\n38: (\"nested-copy-stop-a28\", 0x00779850, 0x00779A28, \"complete-call-boundary-control\"),\n39: )\n40: \n41: RAW_BYTES = (\n42: (\"nested-copy-boundary-bytes\", 0x00779A1F, 0x00779A28),\n43: )\n44: \n45: \n46: def sha(data: bytes) -> str:\n47: return hashlib.sha256(data).hexdigest()\n48: \n49: \n50: def file_identity(path: Path) -> dict:\n51: data = path.read_bytes()\n52: return {\"path\": str(path), \"bytes\": len(data), \"sha256\": sha(data)}\n53: \n54: \n55: def validate_identity(session: str, output: Path, entries: list[str]) -> None:\n56: if not session:\n57: raise ValueError(\"missing session\")\n58: if session == STALE_SESSION or session != SESSION:\n59: raise ValueError(\"stale or unexpected session\")\n60: if output.resolve() != OUT.resolve() or output.name != session:\n61: raise ValueError(\"output location is not bound to session\")\n62: if sorted(entries) not in ([], [\"capture.py\"]):\n63: raise FileExistsError(\"output location was already used\")\n64: \n65: \n66: def source_binding() -> dict:\n67: argv = [\n68: \"python3\", str(CAMPAIGN), \"--state-root\", str(ROOT), \"source-binding\",\n69: \"research-completion-abi\", \"--engine-worktree\", str(ENGINE_TREE),\n70: \"--re-worktree\", str(RE_TREE),\n71: ]\n72: proc = subprocess.run(argv, cwd=ROOT, check=True, capture_output=True, text=True)\n73: return {\"argv\": argv, \"value\": json.loads(proc.stdout)}\n74: \n75: \n76: def run_capture(name: str, argv: list[str], classification: str) -> dict:\n77: proc = subprocess.run(argv, cwd=ROOT, check=False, capture_output=True)\n78: stdout_path = OUT / f\"{name}.stdout.txt\"\n79: stderr_path = OUT / f\"{name}.stderr.txt\"\n80: stdout_path.write_bytes(proc.stdout)\n81: stderr_path.write_bytes(proc.stderr)\n82: return {\n83: \"name\": name,\n84: \"classification\": classification,\n85: \"argv\": argv,\n86: \"cwd\": str(ROOT),\n87: \"returncode\": proc.returncode,\n88: \"stdout\": {\"path\": str(stdout_path.relative_to(ROOT)), \"bytes\": len(proc.stdout), \"sha256\": sha(proc.stdout)},\n89: \"stderr\": {\"path\": str(stderr_path.relative_to(ROOT)), \"bytes\": len(proc.stderr), \"sha256\": sha(proc.stderr)},\n90: }\n91: \n92: \n93: parser = argparse.ArgumentParser()\n94: parser.add_argument(\"--session\", required=True)\n95: parser.add_argument(\"--output\", required=True, type=Path)\n96: args = parser.parse_args()\n97: \n98: negative_preflight = []\n99: for name, candidate_session, candidate_output, entries in (\n100: (\"reject-missing-session\", \"\", OUT, [\"capture.py\"]),\n101: (\"reject-stale-session\", STALE_SESSION, OUT, [\"capture.py\"]),\n102: (\"reject-stale-output\", SESSION, ROOT / \"verify/results/research-completion-abi\" / STALE_SESSION, [\"capture.py\"]),\n103: (\"reject-reused-output\", SESSION, OUT, [\"capture.py\", \"prior-output.txt\"]),\n104: ):\n105: try:\n106: validate_identity(candidate_session, candidate_output, entries)\n107: except (ValueError, FileExistsError) as exc:\n108: negative_preflight.append({\"name\": name, \"status\": \"pass\", \"rejection\": str(exc)})\n109: else:\n110: raise SystemExit(f\"negative preflight unexpectedly accepted: {name}\")\n111: \n112: validate_identity(args.session, args.output, [p.name for p in OUT.iterdir()])\n113: before = source_binding()\n114: binary = file_identity(BINARY)\n115: tool = file_identity(TOOL)\n116: if binary[\"sha256\"] != EXPECTED_BINARY or tool[\"sha256\"] != EXPECTED_TOOL:\n117: raise SystemExit(\"binary/tool identity drift\")\n118: \n119: records = []\n120: for name, start, stop, classification in DISASSEMBLY:\n121: records.append(run_capture(name, [\n122: str(TOOL), \"-D\", \"-Mintel\", f\"--start-address=0x{start:08x}\",\n123: f\"--stop-address=0x{stop:08x}\", str(BINARY),\n124: ], classification))\n125: for name, start, stop in RAW_BYTES:\n126: records.append(run_capture(name, [\n127: str(TOOL), \"-s\", \"-j\", \".text\", f\"--start-address=0x{start:08x}\",\n128: f\"--stop-address=0x{stop:08x}\", str(BINARY),\n129: ], \"raw-byte-boundary-control\"))\n130: \n131: after = source_binding()\n132: checks = {\n133: \"explicit-session\": args.session == SESSION,\n134: \"session-output-match\": args.output.resolve() == OUT.resolve(),\n135: \"negative-preflight-all-rejected\": all(x[\"status\"] == \"pass\" for x in negative_preflight),\n136: \"binary-hash\": binary[\"sha256\"] == EXPECTED_BINARY,\n137: \"tool-hash\": tool[\"sha256\"] == EXPECTED_TOOL,\n138: \"source-stable\": before[\"value\"] == after[\"value\"],\n139: \"all-return-zero\": all(x[\"returncode\"] == 0 for x in records),\n140: \"all-stdout-nonempty\": all(x[\"stdout\"][\"bytes\"] > 0 for x in records),\n141: \"all-stderr-empty\": all(x[\"stderr\"][\"bytes\"] == 0 for x in records),\n142: }\n143: manifest = {\n144: \"schema\": \"sots-abi-static-capture/1\",\n145: \"session\": SESSION,\n146: \"actor\": \"research-abi-analyst\",\n147: \"role\": \"analyst\",\n148: \"model\": \"openai/gpt-5.6-sol\",\n149: \"timestamp\": datetime.now(timezone.utc).isoformat(),\n150: \"decisions\": [\"d-fd5aff1eaf78a8c15d96723c\", \"d-0bb927e63b915c87a58d4257\"],\n151: \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n152: \"negative_preflight\": negative_preflight,\n153: \"source_before\": before,\n154: \"source_after\": after,\n155: \"input\": binary,\n156: \"tool\": {**tool, \"version\": subprocess.run([str(TOOL), \"--version\"], check=True, capture_output=True, text=True).stdout.splitlines()[0]},\n157: \"commands\": records,\n158: \"checks\": [{\"name\": name, \"status\": \"pass\" if status else \"fail\"} for name, status in checks.items()],\n159: \"failed\": [name for name, status in checks.items() if not status],\n160: }\n161: (OUT / \"manifest.json\").write_text(json.dumps(manifest, indent=2) + \"\\n\")\n162: print(json.dumps({\"commands\": len(records), \"failed\": manifest[\"failed\"], \"manifest\": str((OUT / \"manifest.json\").relative_to(ROOT))}, indent=2))\n163: raise SystemExit(bool(manifest[\"failed\"]))\n\n(End of file - total 163 lines)\n","metadata":{"preview":"#!/usr/bin/env python3\n\"\"\"Fresh, session-bound static capture required by two 2026-09-10 Astra decisions.\"\"\"\n\nimport argparse\nimport hashlib\nimport json\nimport subprocess\nfrom datetime import datetime, timezone\nfrom pathlib import Path\n\n\nROOT = Path(\"/home/alex/sots-re\")\nSESSION = \"run-9daf5c3b75547271d5c3b4ed\"\nSTALE_SESSION = \"run-ee78b8773688ca09f8046e21\"\nREL_OUT = Path(\"verify/results/research-completion-abi\") / SESSION\nOUT = ROOT / REL_OUT\nBINARY = ROOT / \"dumps/sots.exe\"\nTOOL = Path(\"/usr/bin/objdump\")\nCAMPAIGN = ROOT / \"tools/campaign.py\"\nENGINE_TREE = Path(\"/tmp/opencode/sots-final-research-engine\")","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py","text":"#!/usr/bin/env python3\n\"\"\"Fresh, session-bound static capture required by two 2026-09-10 Astra decisions.\"\"\"\n\nimport argparse\nimport hashlib\nimport json\nimport subprocess\nfrom datetime import datetime, timezone\nfrom pathlib import Path\n\n\nROOT = Path(\"/home/alex/sots-re\")\nSESSION = \"run-9daf5c3b75547271d5c3b4ed\"\nSTALE_SESSION = \"run-ee78b8773688ca09f8046e21\"\nREL_OUT = Path(\"verify/results/research-completion-abi\") / SESSION\nOUT = ROOT / REL_OUT\nBINARY = ROOT / \"dumps/sots.exe\"\nTOOL = Path(\"/usr/bin/objdump\")\nCAMPAIGN = ROOT / \"tools/campaign.py\"\nENGINE_TREE = Path(\"/tmp/opencode/sots-final-research-engine\")\nRE_TREE = Path(\"/tmp/opencode/sots-final-research-re\")\nEXPECTED_BINARY = \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\nEXPECTED_TOOL = \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\"\n\n# Exact historical windows remain controls. Each companion widened stop was already shown\n# to add rows without changing the exact rows, except nested-copy's known-bad historical stop.\nDISASSEMBLY = (\n (\"turn-get-create-exact\", 0x00885380, 0x0088544A, \"complete-control\"),\n (\"turn-get-create-wide\", 0x00885380, 0x0088544E, \"boundary-audit\"),\n (\"turn-append-exact\", 0x00884CB0, 0x00884D8F, \"complete-control\"),\n (\"turn-append-wide\", 0x00884CB0, 0x00884D93, \"boundary-audit\"),\n (\"nested-dtor-exact\", 0x00629580, 0x006295CA, \"complete-control\"),\n (\"nested-dtor-wide\", 0x00629580, 0x006295CE, \"boundary-audit\"),\n (\"nested-copy-authority\", 0x00779850, 0x00779930, \"bounded-authority\"),\n (\"nested-copy-stop-a20\", 0x00779850, 0x00779A20, \"expected-truncated-negative\"),\n (\"nested-copy-stop-a21\", 0x00779850, 0x00779A21, \"predicted-complete-je\"),\n (\"nested-copy-stop-a23\", 0x00779850, 0x00779A23, \"predicted-complete-mov\"),\n (\"nested-copy-stop-a28\", 0x00779850, 0x00779A28, \"complete-call-boundary-control\"),\n)\n\nRAW_BYTES = (\n (\"nested-copy-boundary-bytes\", 0x00779A1F, 0x00779A28),\n)\n\n\ndef sha(data: bytes) -> str:\n return hashlib.sha256(data).hexdigest()\n\n\ndef file_identity(path: Path) -> dict:\n data = path.read_bytes()\n return {\"path\": str(path), \"bytes\": len(data), \"sha256\": sha(data)}\n\n\ndef validate_identity(session: str, output: Path, entries: list[str]) -> None:\n if not session:\n raise ValueError(\"missing session\")\n if session == STALE_SESSION or session != SESSION:\n raise ValueError(\"stale or unexpected session\")\n if output.resolve() != OUT.resolve() or output.name != session:\n raise ValueError(\"output location is not bound to session\")\n if sorted(entries) not in ([], [\"capture.py\"]):\n raise FileExistsError(\"output location was already used\")\n\n\ndef source_binding() -> dict:\n argv = [\n \"python3\", str(CAMPAIGN), \"--state-root\", str(ROOT), \"source-binding\",\n \"research-completion-abi\", \"--engine-worktree\", str(ENGINE_TREE),\n \"--re-worktree\", str(RE_TREE),\n ]\n proc = subprocess.run(argv, cwd=ROOT, check=True, capture_output=True, text=True)\n return {\"argv\": argv, \"value\": json.loads(proc.stdout)}\n\n\ndef run_capture(name: str, argv: list[str], classification: str) -> dict:\n proc = subprocess.run(argv, cwd=ROOT, check=False, capture_output=True)\n stdout_path = OUT / f\"{name}.stdout.txt\"\n stderr_path = OUT / f\"{name}.stderr.txt\"\n stdout_path.write_bytes(proc.stdout)\n stderr_path.write_bytes(proc.stderr)\n return {\n \"name\": name,\n \"classification\": classification,\n \"argv\": argv,\n \"cwd\": str(ROOT),\n \"returncode\": proc.returncode,\n \"stdout\": {\"path\": str(stdout_path.relative_to(ROOT)), \"bytes\": len(proc.stdout), \"sha256\": sha(proc.stdout)},\n \"stderr\": {\"path\": str(stderr_path.relative_to(ROOT)), \"bytes\": len(proc.stderr), \"sha256\": sha(proc.stderr)},\n }\n\n\nparser = argparse.ArgumentParser()\nparser.add_argument(\"--session\", required=True)\nparser.add_argument(\"--output\", required=True, type=Path)\nargs = parser.parse_args()\n\nnegative_preflight = []\nfor name, candidate_session, candidate_output, entries in (\n (\"reject-missing-session\", \"\", OUT, [\"capture.py\"]),\n (\"reject-stale-session\", STALE_SESSION, OUT, [\"capture.py\"]),\n (\"reject-stale-output\", SESSION, ROOT / \"verify/results/research-completion-abi\" / STALE_SESSION, [\"capture.py\"]),\n (\"reject-reused-output\", SESSION, OUT, [\"capture.py\", \"prior-output.txt\"]),\n):\n try:\n validate_identity(candidate_session, candidate_output, entries)\n except (ValueError, FileExistsError) as exc:\n negative_preflight.append({\"name\": name, \"status\": \"pass\", \"rejection\": str(exc)})\n else:\n raise SystemExit(f\"negative preflight unexpectedly accepted: {name}\")\n\nvalidate_identity(args.session, args.output, [p.name for p in OUT.iterdir()])\nbefore = source_binding()\nbinary = file_identity(BINARY)\ntool = file_identity(TOOL)\nif binary[\"sha256\"] != EXPECTED_BINARY or tool[\"sha256\"] != EXPECTED_TOOL:\n raise SystemExit(\"binary/tool identity drift\")\n\nrecords = []\nfor name, start, stop, classification in DISASSEMBLY:\n records.append(run_capture(name, [\n str(TOOL), \"-D\", \"-Mintel\", f\"--start-address=0x{start:08x}\",\n f\"--stop-address=0x{stop:08x}\", str(BINARY),\n ], classification))\nfor name, start, stop in RAW_BYTES:\n records.append(run_capture(name, [\n str(TOOL), \"-s\", \"-j\", \".text\", f\"--start-address=0x{start:08x}\",\n f\"--stop-address=0x{stop:08x}\", str(BINARY),\n ], \"raw-byte-boundary-control\"))\n\nafter = source_binding()\nchecks = {\n \"explicit-session\": args.session == SESSION,\n \"session-output-match\": args.output.resolve() == OUT.resolve(),\n \"negative-preflight-all-rejected\": all(x[\"status\"] == \"pass\" for x in negative_preflight),\n \"binary-hash\": binary[\"sha256\"] == EXPECTED_BINARY,\n \"tool-hash\": tool[\"sha256\"] == EXPECTED_TOOL,\n \"source-stable\": before[\"value\"] == after[\"value\"],\n \"all-return-zero\": all(x[\"returncode\"] == 0 for x in records),\n \"all-stdout-nonempty\": all(x[\"stdout\"][\"bytes\"] > 0 for x in records),\n \"all-stderr-empty\": all(x[\"stderr\"][\"bytes\"] == 0 for x in records),\n}\nmanifest = {\n \"schema\": \"sots-abi-static-capture/1\",\n \"session\": SESSION,\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": datetime.now(timezone.utc).isoformat(),\n \"decisions\": [\"d-fd5aff1eaf78a8c15d96723c\", \"d-0bb927e63b915c87a58d4257\"],\n \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n \"negative_preflight\": negative_preflight,\n \"source_before\": before,\n \"source_after\": after,\n \"input\": binary,\n \"tool\": {**tool, \"version\": subprocess.run([str(TOOL), \"--version\"], check=True, capture_output=True, text=True).stdout.splitlines()[0]},\n \"commands\": records,\n \"checks\": [{\"name\": name, \"status\": \"pass\" if status else \"fail\"} for name, status in checks.items()],\n \"failed\": [name for name, status in checks.items() if not status],\n}\n(OUT / \"manifest.json\").write_text(json.dumps(manifest, indent=2) + \"\\n\")\nprint(json.dumps({\"commands\": len(records), \"failed\": manifest[\"failed\"], \"manifest\": str((OUT / \"manifest.json\").relative_to(ROOT))}, indent=2))\nraise SystemExit(bool(manifest[\"failed\"]))","lineStart":1,"lineEnd":163,"totalLines":163,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py","time":{"start":1789016917911,"end":1789016917989}},"metadata":{"openai":{"itemId":"fc_0a9b1191c74318a5016aa23b5599d887d19e670ae82462615b"}},"id":"prt_089b7c793001oUv6GOnnSK81g6","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b77c52001PoTmstaHMevnX1"}} +{"type":"tool_use","timestamp":1789016918005,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_SU8QzbNPZMsnwT7SB3XhiB0w","state":{"status":"completed","input":{"filePath":"/tmp/opencode/sots-final-research-re/findings/subsystems/research-replace.md"},"output":"/tmp/opencode/sots-final-research-re/findings/subsystems/research-replace.md\nfile\n\n1: # Taking `TechTree::ProcessResearch` + the unlock cascade from `compare` to `replace` (lane CR)\n2: \n3: Historical experiment record. The displacement/board workflow referenced below is retired;\n4: current scope and acceptance criteria are in `campaign/pilots/research-replacement.md`.\n5: That pilot also records the independently observed installed-hook inventory and runtime FPU\n6: word corrections; the original prediction and raw observation history below is preserved.\n7: \n8: **Lane CR, 2026-09-09. Guest: VM145 (`sots-re-win10-145`, `re@192.168.10.145`) — held by this lane.**\n9: VM140 is untouched (it is the exclusive reference guest).\n10: \n11: The board's headline metric is `tools/displacement.py`: **3 replaced / 7 compared / 7 modelled /\n12: 3 mapped**. `TechTree::ProcessResearch + unlock cascade` is the best-evidenced `compared` row — 35\n13: calls, three workloads, 0 divergences, `tracecmp` exit 0, and an advance prediction that held on a\n14: *changed* workload. This lane asks the only question that moves the metric: **can our code run\n15: INSTEAD of the original's, live, with a byte-level oracle holding afterwards?**\n16: \n17: Everything above the `## 4.` heading was committed **before** the shim was built or staged\n18: (rule 2). Nothing above that line is edited afterwards; corrections are made below it and named as\n19: corrections (rule 11).\n20: \n21: ---\n22: \n23: ## 1. The state, and why this one\n24: \n25: ### 1.1 The candidate the brief names, and why it is not sufficient on its own\n26: \n27: `ref-turn2.sav` (`ab4ac2d7…`, = `verify/results/saves/turn2-state.sav`) is the campaign's oldest and\n28: most reproduced oracle: one End Turn by the **load** route, `(Autosave EndTurn)` `bb4fd9ac…` /\n29: `(Autosave)` `978041ac…`, **5 + 1 processes**, certified-pairs row 1.\n30: \n31: **It does not exercise a research completion.** This is not an inference from the exit code — it is\n32: read off lane U's own instruments, both of which are in this repo:\n33: \n34: * `verify/results/compare/unlock-b3-t1.md`: 3 calls, 3 compared, 0 diverged, and\n35: **`0 undeclared write(s) in 0 call(s)`**. Every completion in every measured run produces\n36: undeclared writes on the `player` and `tree_header` guards, because that is where\n37: `OnTechResearched`'s tech effects and the tree's order counter land. Zero undeclared writes is\n38: zero completions.\n39: * `verify/results/shim/unlock-shim.log`: the first three `research: cascade ok=1 …` lines of the\n40: five-turn continuation read `completions=0 unlocked=0 otch_appends=0`. Those three lines *are*\n41: the `ref-turn2` End Turn.\n42: \n43: Reading the trace rather than the verdict (rule 1) says what that turn *does* do: call 0 advances\n44: the generator by one word (`left` 432 → 431), pushes node 144's progress 2879 → 5768, sets its flag\n45: 1 → 2 (`OverBudgetNotified`) and posts one event (`next_id` 3 → 4). Calls 1 and 2 change **nothing\n46: at all**. So `ref-turn2` + one End Turn is a real workload for the *pass* and an empty one for the\n47: *completion path*. **A replace-mode oracle taken there would be exactly the green verdict on a hook\n48: that compared nothing that rule 1 exists to catch.**\n49: \n50: ### 1.2 The state this lane uses\n51: \n52: **`verify/results/saves/turn3-state.sav`** — 67,219 B, sha256\n53: `978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921`, `Summary.Turn = 3`,\n54: `Sim.ModCount = 24`. It is *the output of certified-pairs row 1*: the `(Autosave).sav` that\n55: `ref-turn2` + one End Turn produces. It is already on VM145 under that hash as `(Autosave).sav`.\n56: \n57: **Procedure: one End Turn. Route: LOAD.** Stated because the route is part of the pair\n58: (rule 26(c) fourth term; lane BS): the same turn reached by continuation and by load is two\n59: different, individually reproducible things, and this lane deliberately does **not** inherit the\n60: continuation's turn-4 numbers as an assumption — it predicts them and lets the load route falsify\n61: them (P1).\n62: \n63: Why this turn: in lane U's five-turn continuation the **fourth-turn** call is the completing one.\n64: The call that enters with `turn = 4` allocates 2,898 points to tech 144, completes it, and runs the\n65: cascade — `completions=1 unlocked=3 otch_appends=1` in the shim log, `next_id` 5 → 7 and\n66: `observed_techs` 440 → 484 bytes in the trace. `turn3-state.sav` is the state that turn starts from.\n67: \n68: ### 1.3 The exposure screen (rule 26(c)) — a screen, not a decision procedure\n69: \n70: Read from `turn3-state.sav` with `verify/save-reader/save_reader.py`. Eight players; per lane BP the\n71: engine builds AI clients for net ids **32, 496, 512** only, and the four factions at 528–576 carry\n72: their signature **inertly**.\n73: \n74: | player | species | `ResTNm` | `Status` | AI client | pick-turn signature? |\n75: |---|---|---|---|---|---|\n76: | 16 (human `re`) | 0 | `''` | 4 | **no** (local human) | **false positive** — no client |\n77: | 32 | 2 | `IND_Waldo` | 4 | yes | **no** — mid-research |\n78: | 496 | 0 | `DRV_PlsFiss` | 4 | yes | **no** — mid-research |\n79: | 512 | 2 | `BIO_GnMod` | 4 | yes | **no** — mid-research |\n80: | 528, 544, 560, 576 | 4 | `''` | 0 | **no** | **false positive** — no client, `Status 0` |\n81: \n82: **No player that actually runs enters this turn with an empty research target.** That is the best\n83: the screen can say. It cannot say the control will agree — rule 26(c)'s own retraction is explicit\n84: that `candidatesTried` is not readable from a save, that there is a combat term, and that the load\n85: route is a fourth term that is not a predicate on the save at all. **So the screen is why this turn\n86: is worth trying, and the two-process control in §4.1 is the only thing that decides it.**\n87: \n88: The lineage where exposure is saturated (`ad-…`/`ar-…`, every turn carrying a signature) is\n89: deliberately not used here.\n90: \n91: ### 1.4 What is being asked of `hooks=off`\n92: \n93: Three fresh-process runs are planned before any replace result is read:\n94: \n95: | run | config | what it establishes |\n96: |---|---|---|\n97: | **C1**, **C2** | `shim.cfg.croff` (`hooks=off`, the proxy loads and installs nothing) | the control agrees with itself across two fresh processes (rule 26) |\n98: | **N** | `shim.cfg.crcompare` (one detour, `compare`) | the instrument is behaviour-neutral on *this* save and route (rule 19), **and** it is where the completion count comes from the hook itself |\n99: \n100: Only then the replace runs. C1/C2 use the *same proxy DLL* as every measured run, so the only\n101: difference between control and measurement is the config (lane CB's shape).\n102: \n103: ---\n104: \n105: ## 2. The four bytes of every float literal on this path (rule 23)\n106: \n107: Two float literals are on the research pass's arithmetic path, and **both are widened `float`s**.\n108: Read here directly out of `dumps/sots.exe` (PE image base `0x00400000`, `.rdata` at `0x009dd000`\n109: file offset `0x5dbe00`), not taken from an earlier note:\n110: \n111: | VA | bytes (LE) | value as `double` | is it `(double)float`? | engine constant |\n112: |---|---|---|---|---|\n113: | `0x009e20c8` | `00 00 00 a0 99 99 e9 3f` | `0.80000001192092896` | **yes** (low 29 bits zero) | `kEarlyCompletionRatio = 0.800000011920929` |\n114: | `0x009e5060` | `00 00 00 a0 99 99 a9 3f` | `0.05000000074505806` | **yes** | `kDecayFraction = 0.05000000074505806` |\n115: \n116: Both source literals were re-parsed and re-packed: `0.800000011920929` → `000000a09999e93f` and\n117: `0.05000000074505806` → `000000a09999a93f`. **Bit-identical to the image.** So the two constants\n118: `sots-engine/src/game/sim/research.cpp` relies on are exactly the image's, not the exact decimals\n119: that bit the money chain twice.\n120: \n121: Two literals that are **not** on this path, and why:\n122: \n123: * the tech-cost multiplier (`1.0 − 0.25·n`, floor `0.25`) — `ours` never evaluates it. It calls the\n124: game's own read-only `TechTree::Cost` for every cost it needs, in both modes (`g_env.cost`). This\n125: is a genuine, declared dependency on the original: the effective cost is **not** displaced.\n126: * `ResearchSpendFloor` / `Ceiling` are integer `×50/100` and `×150/100` with a 32-bit wrapping\n127: multiply — no float involved.\n128: \n129: ---\n130: \n131: ## 3. Predictions, committed before the build\n132: \n133: Falsification symptoms are given for each. Predictions are made **per site** and not at a bracket\n134: total (rule 23's 2026-09-09 corollary).\n135: \n136: ### P0 — the control agrees with itself\n137: `turn3-state.sav`, one End Turn, load route, `hooks=off`, **two fresh processes** produce identical\n138: `(Autosave EndTurn).sav` and `(Autosave).sav`.\n139: *Falsified if:* the two processes differ. Then this workload is exposed, the screen in §1.3 was\n140: insufficient (which is what rule 26(c)'s retraction predicts is possible), and the honest move is to\n141: report that and pin the source of variation — **not** to pick the run that suits.\n142: \n143: ### P1 — the turn is not quiet, and the load route reproduces the continuation's turn-4 call\n144: Exactly **3** `ProcessResearch` calls, one per AI client, in the same owner order. Allocations:\n145: **A → {tech 144, 2898 points}**, **B → {tech 90, 0 points}**, **C → {tech 9, 0 points}**. Exactly\n146: **one completion** (tech 144) and the cascade unlocks exactly **three** nodes:\n147: \n148: | node | `state` | `cost_rp` | `turn_available` |\n149: |---|---|---|---|\n150: | 132 | 0 → 2 | `INT_MAX` → **10000** | −1 → **4** |\n151: | 136 | 0 → 2 | `INT_MAX` → **16000** | −1 → **4** |\n152: | 142 | 0 → 2 | `INT_MAX` → **8000** | −1 → **4** |\n153: \n154: *Falsified if:* a different allocation, a different completion count, or a different unlock set. That\n155: would be a **route** result — the load route not reproducing the continuation — and it is worth as\n156: much as the replace result. It is exactly what rule 26(c)'s fourth term says can happen.\n157: \n158: ### P2 — the arithmetic, hand-computed on the boundary\n159: For node 144: `cost = 5000`, `lo = ResearchSpendFloor = 2500`, `hi = ResearchSpendCeiling = 7500`.\n160: Entering progress **5768**, allocation **2898**:\n161: \n162: * `spent = min(2898, 7500 − 5768) = 1732` — the cap binds, so this call lands **exactly on the\n163: ceiling**, which is the boundary rule 23 says to test by hand rather than trust a compare on.\n164: * `progress 5768 → 7500`, `overbudget 0 → 1166`.\n165: * `progress (7500) < hi (7500)` is **false**, so the odds/roll branch is skipped: **zero RNG draws**.\n166: I predict `rng.left` is **unchanged at 413** across all three calls and the `mt` digest does not\n167: move on any of them.\n168: * `ratio = (float)(7500/5000) = 1.5`, and `1.5 < 0.800000011920929` is false → **not** completed\n169: early → `flag` **unchanged**.\n170: * `state 3 → 4`, `turn_researched −1 → 4`, `order −1 → 22`, and the tree's order counter\n171: `22 → 23`.\n172: \n173: *Falsified if:* any single one of these moves. A wrong `hi` shows up as a wrong `overbudget`; a\n174: wrong early-completion literal shows up as `flag` moving.\n175: \n176: ### P3 — the instrument is neutral, and the completion is counted by the instrument\n177: Run N (`crcompare`, one detour) produces autosaves **byte-identical to C1/C2**, and `tracecmp`\n178: reports **3 calls / 3 compared / 0 diverged / exit 0**. The hook's own per-call log line reads\n179: `completions=1 … unlocked=3 otch_appends=1` on the completing call and all-zero on the other two.\n180: Undeclared writes: **6 spans in 1 call** —\n181: `player +0x10c/3`, `player +0x110/3`, `player +0x114/3`, `player +0x124/3`, `player +0x294/4`\n182: (`ResT`, the research target being cleared) and `tree_header +0x20/1` (the order counter).\n183: \n184: *Falsified if:* the autosaves move (then rule 19 bites and nothing below is readable), or the\n185: undeclared-write set differs (then the workload or the model moved).\n186: \n187: ### P4 — replace with the cascade OFF (`crreplace0`, the shipped behaviour) diverges\n188: The autosave is **not** byte-identical. Predicted diverging leaves, by name:\n189: \n190: 1. `Player[32]` tech tree: node 144 `turn_researched` and `order` unstamped (−1/−1); nodes 132, 136\n191: and 142 unchanged at `state 0`, `cost_rp INT_MAX`, `turn_available −1`.\n192: 2. the tree's completion-order counter left at 22.\n193: 3. `Player[32]` events: `next_id` short by **2**, two event records absent.\n194: 4. `Player[32]` `otch`: one `ObservedTech` element absent (**44 bytes**).\n195: 5. `Player[32]` scalar fields at `+0x10c`, `+0x110`, `+0x114`, `+0x124` unchanged, and `ResTNm` still\n196: reading `IND_Waldo` because `ResT` was never cleared.\n197: \n198: What **will** be right even here: node 144's `state = 4`, `progress = 7500`, `flag`, the decay sweep\n199: over every other node, and the `overbudget` accumulator.\n200: \n201: ### P5 — replace with the cascade ON (`crreplace1`) diverges, by strictly less\n202: Same binary, one config line different (`research.replace_cascade=on`; see §3.1). Predicted:\n203: **strictly fewer diverging leaves than P4**, with items 1 and 2 of P4 **closed** — node 144 stamped\n204: `turn_researched 4` / `order 22`, nodes 132/136/142 at `state 2` with `cost_rp` 10000/16000/8000 and\n205: `turn_available 4`, counter at 23 — and items 3, 4 and 5 **still open**.\n206: \n207: ### P6 — the headline, stated in advance\n208: **`game/sim/research` does NOT move from `compared` to `replaced` this session, and the named cause\n209: is `ServerPlayer::OnTechResearched`, not the research model.** The research pass itself — the spend\n210: cap, the odds branch, the completion, the decay sweep, and (with the flag on) the whole\n211: `SetResearched` cascade — is displaceable and I expect it to reproduce the original's TechTree state\n212: exactly. What blocks the oracle is the *callback*: it posts events whose text comes from the game's\n213: string table, appends an `ObservedTech` element `ours` decides but does not construct, and writes\n214: ~90 `ServerPlayer` fields that are a different subsystem's milestone (B2) and a separate `compared`\n215: row on the board. A replace of the research pass is **gated on displacing `OnTechResearched`**, and\n216: that is a statement about a boundary, not about the research model.\n217: \n218: *Falsified if:* `crreplace1`'s autosave is byte-identical to the oracle. That would mean the\n219: callback's writes do not reach the save on this workload, P6 is wrong, and the row moves to\n220: `replaced` — which is the outcome I would rather have and do not expect.\n221: \n222: ### P7 — the numbers I expect to be able to quote honestly afterwards\n223: **1** distinct completion, **1** distinct tech (144), **3** unlocked nodes, **3** calls of which\n224: **2** allocate zero points and write nothing at all. That is thin, and it will be reported as\n225: thin (rule 15/23) whatever the verdict.\n226: \n227: ### 3.1 The one engine change this lane makes, and why it is not a thumb on the scale\n228: \n229: `sots-engine` worktree `wip/cr` (rule 21), branched from `main` at `e7e2bd6`.\n230: \n231: * **`research.replace_cascade=on|off`, default `off`.** With it off the binary behaves *exactly* as\n232: `main` does today, so P4 measures the shipped behaviour rather than a straw man. With it on, a\n233: **replace**-mode call also writes the four `TechNode` words `SetResearched` stamps and the tree's\n234: completion-order counter. It does **not** post events, does **not** move the `ObservedTech` vector\n235: and does **not** apply a single tech effect — those stay gated on compare mode and stay declared\n236: unmodelled. The flag exists so P4 and P5 differ by a **config line and not by a binary**, which is\n237: what makes the leaf difference between their autosaves attributable to the cascade.\n238: * **A per-call log line in every mode.** The old line was gated on the cascade having run, so a\n239: replace run with the cascade off had no counter at all and \"a completion happened\" could only be\n240: inferred from the save — the artefact under test. It now prints `steps`, `completions` (counted\n241: from the pass's own step results), `overbudget` and the cascade counters, in compare **and**\n242: replace. This is the instrument answering the brief's \"show it fired — a count, from the hook\n243: itself\".\n244: \n245: No new binary facts: `ghidra/addresses.d/cr.json` is **not** created, because this lane reads no new\n246: address. Every offset used already exists in the generated header. Host build: 253 targets, **59/59\n247: tests pass** (the denominator is the healthy 59, per rule 24's signature check); `clean_room_check`\n248: OK; `tools/check_shim_configs.py` OK with 27 registered hooks and all four CR configs\n249: (`croff`, `crcompare`, `crreplace0`, `crreplace1`) — the three `hooks=trace` ones marked\n250: `# exhaustive` and naming all 27.\n251: \n252: ---\n253: \n254: ## 4. Results\n255: \n256: *(added after the runs; nothing above this line is edited)*\n257: \n258: ### 4.0 The five runs, in order\n259: \n260: All five on **VM145**, held by this lane, each a **fresh process**, `SavedGames` reset to exactly\n261: `turn3-state.sav` before every launch, `C:\\SOTS\\shimdist-cr\\binkw32.dll`\n262: (25,274,723 B, sha256 `d2ad56b32c1b5f6b…`, `BUILD_ID cr-618ccb1-20260909T131556Z`, exports 66/66\n263: identical to the real `binkw32.dll`), one config per run and nothing else changed. Every screen —\n264: main menu, Load-Game chooser, the one-row file list, the **lobby**, the loaded map at \"Turn 3\", the\n265: post-turn map at \"Turn 4\" — was verified from a live `qm monitor` screendump before the next click.\n266: No run was driven by sleeping.\n267: \n268: | run | config | mode | `research.replace_cascade` | `(Autosave EndTurn).sav` | `(Autosave).sav` |\n269: |---|---|---|---|---|---|\n270: | **C1** | `croff` | `hooks=off` | – | 67,212 `e00eed0c…` | 67,811 `79df5047…` |\n271: | **C2** | `croff` | `hooks=off` | – | 67,212 **`e00eed0c…`** | 67,811 **`79df5047…`** |\n272: | **N** | `crcompare` | compare | off | 67,212 **`e00eed0c…`** | 67,811 **`79df5047…`** |\n273: | **R0** | `crreplace0` | **replace** | off | 67,212 `e00eed0c…` | 67,511 **`6b51db99…`** |\n274: | **R1** | `crreplace1` | **replace** | **on** | 67,212 `e00eed0c…` | 67,537 **`8a4309ee…`** |\n275: \n276: `(Autosave EndTurn).sav` is the *pre*-turn resave and is identical in all five runs, as it must be —\n277: nothing has run yet when it is written. The verdict is carried entirely by `(Autosave).sav`.\n278: \n279: ### 4.1 P0 held: the oracle\n280: \n281: **C1 and C2 agree byte-for-byte in two fresh processes.** The pair, in the standing\n282: `certified-pairs.md` format:\n283: \n284: | input | procedure | route | `(Autosave EndTurn)` | `(Autosave)` | processes | evidence |\n285: |---|---|---|---|---|---:|---|\n286: | `turn3-state.sav` `978041ac…` | one End Turn | **load** | `e00eed0c…` | `79df5047…` | **3** | lane CR ×2 `hooks=off`, ×1 compare-instrumented |\n287: \n288: **Masks that must be on the line.** Measured, not assumed —\n289: `state_checksum.py turn3-state.sav <(Autosave EndTurn)>` gives **exactly 5 leaves**:\n290: `/Summary/Checksum` and `Player.Status 4 → 0` on each of the four live players (16 `re`,\n291: 32 `Fane Lao`, 496 and 512 `Singularity`). **There is no `/CD[1]/NPrvVa` term on this state** —\n292: `CD[1]`'s diplomacy block is early-game and the leaf does not move — so the `--mask resave` rule\n293: holds here in the form the docs originally stated, and the lane BQ exception does not apply.\n294: \n295: **Exposure facts next to the hashes** (certified-pairs standing rule 4): §1.3's table — no player\n296: with an AI client enters the turn with `ResTNm == ''`; `NumDes` does not move; the two ships that\n297: complete join existing fleets; the four factions at 528–576 carry the empty-`ResTNm` signature\n298: inertly (`Status 0`, no client). The turn does create fleets (`Flt[50]`, `Flt[1808]`) and retire one\n299: (`Flt[1776]`) — that is a fleet-assignment shape, and it agreed anyway. **Which is the point of\n300: rule 26(c)'s retraction: the screen said \"likely fine\" and only the two-process control decided it.**\n301: \n302: ### 4.2 P3 held: the instrument is neutral, and it counts the completion itself\n303: \n304: Run **N** reproduced the control's two hashes exactly, so rule 19 is satisfied on *this* save and\n305: *this* route and everything below is read from runs that passed their own check.\n306: `tracecmp verify/traces/cr-N.jsonl.gz`: **3 calls, 3 compared, 0 diverged, exit 0**, coverage verdict\n307: `partial`, 8 unmodelled notes — and the undeclared-write set is **exactly the six spans predicted**:\n308: \n309: ```\n310: player+0x10c:3 player+0x110:3 player+0x114:3 player+0x124:3 player+0x294:4 tree_header+0x20:1\n311: ```\n312: \n313: The hook's own per-call line, which is the instrument saying a completion fired rather than the save\n314: being asked to imply it:\n315: \n316: ```\n317: research: mode=compare steps=1 completions=1 overbudget=1166 cascade_possible=1 ok=1\n318: cascade_completions=1 unlocked=3 otch_appends=1 roll_draws=0 failures=0 depth=0\n319: research: mode=compare steps=1 completions=0 … (×2, all zero)\n320: ```\n321: \n322: **A correction to the campaign's read of the detour count, and it goes the other way from the\n323: brief's warning.** My config names all **27** registered template hooks and\n324: `check_shim_configs.py` passes it as `# exhaustive` — and the shim still installed **six** detours,\n325: not one:\n326: \n327: | detour | source | named by a `hook.` key? |\n328: |---|---|---|\n329: | `Mars::Application::Initialize` | the M0 asm stub, installed unconditionally whenever `hooks != off` | **no** |\n330: | `Game::TechTree::ProcessResearch` | the one template hook | yes |\n331: | `StrategyClient::EndTurn`, `StrategyServer::BeginProcessTurn`, `StrategyServer::ProcessTurn`, `DemoApp::OnTick` | the **FPU-force module**, which installs four *sampling* detours by default (`fpu: module init … force=off value=0x0000 sample_ticks=on`, `sample_turn=on`) | **no** |\n332: \n333: `Shim::SelfTest::Fill` additionally emits one `trace` record at startup; it is an in-shim self-test,\n334: not a detour on the game. So **`# exhaustive` is exhaustive over the template-hook set only**, and\n335: `tools/check_shim_configs.py` cannot see the other five. It was the *neutrality check* (N identical\n336: to C1/C2), not the config check, that made this run safe — which is worth saying plainly, because a\n337: lane reading \"exhaustive, therefore one detour\" would be wrong by five.\n338: \n339: For the record, `fpu_cw = 0x027f` (53-bit, round-to-nearest) in every CR run.\n340: \n341: ### 4.3 P1 and P2 held exactly, on the LOAD route\n342: \n343: The load route reproduced the continuation's turn-4 call in every particular — allocations, the\n344: completion, the unlock set, the arithmetic. From `cr-N.jsonl.gz` (compare) and confirmed identically\n345: in `cr-R1.jsonl.gz` (replace):\n346: \n347: | call | owner | species | alloc | what moved |\n348: |---|---|---|---|---|\n349: | 1 | `Player[32 \"Fane Lao\"]` | 2 | `{144, 2898}` | the completion (below) |\n350: | 2 | `Player[496 \"Singularity\"]` | 0 | `{90, 0}` | **nothing at all** |\n351: | 3 | `Player[512 \"Singularity\"]` | 2 | `{9, 0}` | **nothing at all** |\n352: \n353: Call 1, node **144 `IND_Waldo`**: `state 3 → 4`, `progress 5768 → 7500`, `turn_researched −1 → 4`,\n354: `order −1 → 22`; `overbudget 0 → 1166`; three nodes unlocked —\n355: **132 `IND_OrbFound` @ 10000**, **136 `IND_RefCoat` @ 16000**, **142 `IND_TrkStl` @ 8000**, each\n356: `state 0 → 2`, `cost_rp INT_MAX → …`, `turn_available −1 → 4`; `events.next_id 5 → 7`;\n357: `observed_techs 440 → 484 bytes`.\n358: \n359: P2's hand arithmetic is confirmed to the unit: `cost 5000`, `lo 2500`, `hi 7500`,\n360: `spent = min(2898, 1732) = 1732`, `progress = 7500` **exactly on the ceiling**,\n361: `overbudget = 2898 − 1732 = 1166`; `progress < hi` false so **no draw**; `ratio = 1.5`, not below\n362: `0.800000011920929`, so **`flag` unchanged**. The `rng` region **did not move on any of the three\n363: calls** in any run.\n364: \n365: That last fact is a coverage hole, not a success — see §4.6.\n366: \n367: ### 4.4 P4 and P5 held: replace diverges, and the cascade closes exactly eleven leaves\n368: \n369: `state_checksum.py cr-oracle-autosave.sav `:\n370: \n371: | run | diverging leaves | file size |\n372: |---|---:|---|\n373: | **R0** — replace, cascade **off** (the shipped behaviour) | **27** | 67,511 B |\n374: | **R1** — replace, cascade **on** | **16** | 67,537 B |\n375: | (the turn itself, `turn3-state` → oracle, for scale) | 128 | – |\n376: \n377: **The eleven leaves the cascade closes — R0 has them, R1 does not.** All eleven are `TechTree`:\n378: \n379: ```\n380: Player[32]/TechTree/St[94] TResCost[94] TUnlck[94] (node 132 IND_OrbFound, 10000)\n381: Player[32]/TechTree/St[98] TResCost[98] TUnlck[98] (node 136 IND_RefCoat, 16000)\n382: Player[32]/TechTree/St[104] TResCost[104] TUnlck[104] (node 142 IND_TrkStl, 8000)\n383: Player[32]/TechTree/TAcq[106] TiAcq[106] (node 144, turn 4 / order 22)\n384: ```\n385: \n386: The tree is serialised as parallel arrays indexed by **tree slot**, not tech id — slots 94/98/104/106\n387: are tech ids 132/136/142/144 — and the pass's own two words, `St[106] 3 → 4` and\n388: `TResDone[106] 5768 → 7500`, are correct in **both** replace runs because\n389: `ProcessResearchTurn` writes them without the cascade. So of the **13 tech-tree leaves this turn\n390: moves, our code produced all 13 in live memory with the original's `ProcessResearch` never\n391: executing** — 2 from the pass, 11 from `SetResearched`.\n392: \n393: **One prediction I cannot test and must retract as written.** P4 item 2 said the completion-order\n394: counter would be \"left at 22\" in R0. `TechTree+0x20` **is not a save leaf** — the counter's value\n395: surfaces only through the per-node `TiAcq` stamp — so the oracle cannot see it either way. What is\n396: observable is the trace: R1's only guard hit is `tree_header+0x20:1` (ours writing 22 → 23, the same\n397: byte the original moves in compare mode) and R0 has **0 undeclared writes in 0 calls**. The counter\n398: matters for the *next* completion, not for this save.\n399: \n400: ### 4.5 P6 held: the residual is `ServerPlayer::OnTechResearched`, entirely\n401: \n402: R1's **16** leaves, every one of them named, with nothing left over:\n403: \n404: | leaf | what it is | modelled by `ours`? |\n405: |---|---|---|\n406: | `Player[32]/OutMod` `1.25 → 1.1` | a tech effect | no — B2's milestone |\n407: | `Player[32]/ConMod[0..2]` `0.9 → 1.0` (×3) | tech effects | no — B2's milestone |\n408: | `Player[32]/Events/EvNxID` `7 → 5` | the two events not posted | decision modelled, **write is compare-only** |\n409: | `…/Events/.[EvTurn=4]/Events/.[EvEID=5]`, `.[EvEID=6]` `only-in-A` | the two event records | text comes from the game's string table |\n410: | `…/Events/.[EvTurn=4]/Events/.[0]` `3 → 1` | that turn's event count | ditto |\n411: | `Player[32]/otch/.[11]` `only-in-A`, `otch/.[0]` `11 → 10` | the `ObservedTech` element | append **decided** (`otch_appends=1`), element not constructed |\n412: | `Player[32]/ResTNm` `'' → 'IND_Waldo'` | `ResT` never cleared | inside the callback |\n413: | `Player[32]/BnkPr`, `BnkEl` | bankruptcy projection | **downstream of `OutMod`** |\n414: | `Sys[288 \"Ke'Dolarra\"]/RepCur`, `RepMax` `421640 → 371040` | repair capacity | **downstream of `ConMod`** |\n415: | `/Summary/Checksum` | derived | derived |\n416: \n417: So the residual decomposes into **5 primary player fields** (`OutMod`, `ConMod[0..2]`, `ResTNm`),\n418: **1 `ObservedTech` element**, **2 event records + their id counter**, and **5 derived leaves** that\n419: follow from those. Every single one is written by `ServerPlayer::OnTechResearched`, none of them by\n420: `TechTree::ProcessResearch` or by `SetResearched`.\n421: \n422: That also closes the loop with §4.2's guard: the four `player` spans the compare reported as\n423: undeclared (`+0x10c`, `+0x110`, `+0x114`, `+0x124`, all three bytes wide — float writes whose top\n424: byte did not change) plus `+0x294` (`ResT`, four bytes) are **five** writes, and the save shows\n425: **five** primary player fields. The guard was reporting exactly what the oracle later billed us for.\n426: \n427: **The input class that breaks it is a completion, and only a completion.** Both replace runs are\n428: byte-perfect on the two null calls and on every other leaf of the 128 the turn moves. A replace run\n429: over a turn where research does not complete would be byte-identical — and would prove nothing\n430: (rule 1), which is why this lane refused to run it on `ref-turn2`.\n431: \n432: ### 4.6 Coverage, reported as loudly as the result (rules 15 and 23)\n433: \n434: * **1 completion. 1 distinct tech (144 `IND_Waldo`). 3 unlocked nodes. 3 calls.**\n435: * **2 of the 3 calls allocate zero points and write nothing at all**, in any mode. Their entire\n436: contribution to \"3 calls, 0 diverged\" is that two null calls stayed null.\n437: * **1 of 4 tech trees is exercised.** Player 16's tree is never processed (`ResTNm == ''`); players\n438: 496 and 512 are the null calls.\n439: * **The RNG region did not move on any call in any run.** The spend cap bound exactly, so the\n440: odds/roll branch was skipped, and `roll_pending_in` was false on the completing call, so\n441: `RollResearchEvent` drew nothing (`roll_draws=0`). **`region:rng` — the single strongest check in\n442: this hook's compare — compared \"unchanged against unchanged\" on this workload and established\n443: nothing.** The generator parity evidence for this module is entirely lane U's and lane V's,\n444: on other turns.\n445: * **Branches that did not execute here:** the Zuul double roll (species 2, not 5); the\n446: completed-early flag (`ratio 1.5`); the over-budget notification (`flag` already 2 from turn 3);\n447: `RollResearchEvent`'s draw and, behind it, the plague / AI-rebellion paths; `SetResearched`'s\n448: zero-cost recursion; the `def+0xb0` `NoAutoAvailable` skip; an empty prerequisite group; a\n449: re-observed tech (the dedup's negative case); and the decay sweep, which ran over every node and\n450: **changed nothing** because no other `Available` node had non-zero progress.\n451: * **The event model is count-only by construction** and stayed compare-only in replace mode by\n452: design; the two missing records are two of the sixteen residual leaves.\n453: * **`TechTree::Cost` is the original's.** `ours` calls the game's read-only `Cost` for every cost it\n454: needs, in both modes. The effective-cost formula is **not** displaced, and any claim about this\n455: module inherits that dependency.\n456: \n457: ### 4.7 Verdict\n458: \n459: **No. `game/sim/research` does not move from `compared` to `replaced`.**\n460: \n461: The bar is \"our code ran instead of the original's **and a byte-level oracle held afterwards**\". Our\n462: code did run instead — `mode=replace`, `completions=1`, `unlocked=3`, the original's\n463: `ProcessResearch` never executed, and the game finished the turn and wrote a save. The oracle did\n464: **not** hold: 16 leaves in the best configuration. There is no qualified reading that rescues it,\n465: because the failure is not a rounding residual — it is a set of writes nobody has implemented.\n466: \n467: What the lane did establish, and it is worth more than the rung would have been:\n468: \n469: 1. **The research pass and the entire `SetResearched` cascade are displaceable and were displaced.**\n470: All 13 tech-tree leaves the turn moves were produced by our code in live game memory, on a turn\n471: with a real completion and a real three-node unlock cascade — which is a strictly stronger\n472: statement than the 35 compared calls the board already carried, because in a compare the\n473: original's code still did the work.\n474: 2. **The blocking boundary is named and measured, not guessed:** `ServerPlayer::OnTechResearched`,\n475: 5 player fields + 1 `ObservedTech` element + 2 events, and 5 derived leaves behind them.\n476: `ProcessResearch` **cannot** reach `replaced` on any workload containing a completion until\n477: `OnTechResearched` is displaced — and that is B2's milestone and its own `compared` board row,\n478: not a defect in the research model.\n479: 3. **A new certified pair** on a turn that exercises the completion path, which the campaign did not\n480: have: `ref-turn2` + one End Turn is a *quiet* turn for research, and every oracle the module had\n481: been checked against was that one.\n482: \n483: The cheapest route to the rung, now that the boundary is priced: implement the ~90-field\n484: `ApplyTechEffect` write-back live (B2 already has `game/effects/tech_effects` host-tested), construct\n485: the `ObservedTech` element, and decide what to do about the two event records — whose *text* comes\n486: from the game's string table and therefore cannot be produced clean-room at all. **The event text is\n487: a hard stop for a byte-identical oracle on any completion turn**, and that should be settled as a\n488: policy question (call the game's `PostEvent`, and accept the `ComputeBudget`-shaped QUALIFIED\n489: caveat) before anyone spends another lane on it.\n490: \n491: ---\n492: \n493: ## 5. Proposed board rows\n494: \n495: **I have not edited `campaign/board.md`.** I *have* added the certified pair to\n496: `verify/results/saves/certified-pairs.md`, which the brief pointed at as the standing format and\n497: whose four standing rules for adding a row are all satisfied (two fresh `hooks=off` processes; the\n498: control run before anything was read from an instrumented run; not an extension of an existing pair\n499: but its own agreement; exposure facts recorded beside the hashes).\n500: \n501: ### 5.1 `tools/displacement.py` — the rung does NOT move\n502: \n503: The verdict is **no**, so `\"compared\"` stays. What I do propose is replacing the evidence and caveat\n504: strings, which currently understate what is known and do not name the gate:\n505: \n506: ```python\n507: (\"TechTree::ProcessResearch + unlock cascade\", \"compared\",\n508: \"35 calls across 3 workloads, 0 divergences, tracecmp exit 0; advance prediction held on a \"\n509: \"changed workload (unlock costs no earlier report contained); REPLACE ATTEMPTED live (lane \"\n510: \"CR): ours ran instead of the original on a real completion and produced all 13 tech-tree \"\n511: \"leaves the turn moves, but the save oracle missed by 16 leaves\",\n512: \"compare only. The replace attempt failed on ServerPlayer::OnTechResearched, not on the \"\n513: \"research model: 5 player tech-effect fields, 1 ObservedTech element and 2 event records, \"\n514: \"plus 5 derived leaves. Gated on B2. Thin: 1 completion, 1 tech, 2 of 3 calls allocate zero \"\n515: \"points, and the RNG region did not move at all on the replace workload\"),\n516: ```\n517: \n518: ### 5.2 Board rows to add\n519: \n520: | row | class | status | conf | cov | date | evidence |\n521: |---|---|---|---|---|---|---|\n522: | **`ProcessResearch` replace: our code ran instead of the original's, and the oracle missed by 16 leaves — all of them `OnTechResearched`'s** | phase2 | verified | high | 95% | 2026-09-09 | **Lane CR, VM145**, `findings/subsystems/research-replace.md`. Predictions committed before the build (`sots-re` 4b3cc82); engine `wip/cr` 618ccb1 adds `research.replace_cascade=on\\|off` (default off) so the shipped and extended behaviours differ by **a config line, not a binary**. New certified pair `turn3-state.sav` → one End Turn, **load** route, `e00eed0c…`/`79df5047…`, 2 `hooks=off` processes + 1 compare. Compare run **3/3/0 exit 0** and byte-identical to the control (rule 19 satisfied), undeclared writes exactly the 6 predicted spans. **Replace, cascade on: 16 diverging leaves; cascade off: 27.** The 11-leaf delta is the whole `SetResearched` cascade and it is **ours**; with the pass's own 2 words that is **13 of 13 tech-tree leaves the turn moves, produced live by our code**. The 16 residual leaves are `OutMod`, `ConMod[0..2]`, `ResTNm`, one `ObservedTech` element, two event records + `EvNxID`, and 5 derived. **Verdict: stays `compared`.** |\n523: | **`ref-turn2` + one End Turn does NOT exercise a research completion** | verify | verified | high | 100% | 2026-09-09 | Lane CR. The campaign's most-reproduced oracle is a **quiet turn for the completion path**: `unlock-b3-t1.md` reports `0 undeclared write(s) in 0 call(s)` and `unlock-shim.log`'s first three lines read `completions=0`. It *is* a real workload for the pass (one RNG word, `flag 1 → 2`, one over-budget event) — but a replace-mode oracle taken there would be rule 1's green verdict on a hook comparing nothing. The completing turn is the **next** one, from `turn3-state.sav`. |\n524: | **`# exhaustive` is exhaustive over the 27 template hooks only — six detours are installed, not one** | phase2 | verified | high | 100% | 2026-09-09 | Lane CR. A config naming all 27 registered hooks `off` except one, passing `tools/check_shim_configs.py`, still installs **6** detours: the M0 `Application::Initialize` asm stub (unconditional whenever `hooks != off`) and the **FPU-force module's four sampling detours** (`force=off value=0x0000 sample_ticks=on sample_turn=on`, on by default). `check_shim_configs.py` cannot see either group — no `hook.` key names them. What made lane CR's runs safe was the **neutrality check** (compare run byte-identical to two `hooks=off` controls), not the config check. A lane reading \"exhaustive, therefore one detour\" is wrong by five. |\n525: | **A replace of `ProcessResearch` is gated on `ServerPlayer::OnTechResearched`, and partly on a policy question** | phase2 | open | high | – | 2026-09-09 | Lane CR. To reach `replaced`, three things are needed: the ~90-field tech-effect write-back applied live (B2 has `game/effects/tech_effects` host-tested), the `ObservedTech` element constructed (`ours` already decides the append), and the two research event **records** written. The third is not an implementation gap: their `EvDsc`/`EvMsg` text comes from the game's string table, which the engine must not carry, so a byte-identical oracle on any completion turn requires calling the game's own `PostEvent` and accepting a `ComputeBudget`-shaped **QUALIFIED** `replaced`. Settle that before spending a lane. |\n526: \n527: ### 5.3 Artefacts\n528: \n529: | what | where |\n530: |---|---|\n531: | predictions commit (before the build) | `sots-re` `4b3cc82` |\n532: | engine change | `sots-engine` worktree `wip/cr`, `618ccb1` — `research.replace_cascade`, a mode-independent completion counter, four `shim.cfg.cr*` configs |\n533: | oracle + replace saves | `verify/results/saves/cr/cr-{oracle-endturn,oracle-autosave,replace0-autosave,replace1-autosave}.sav` |\n534: | traces | `verify/traces/cr-{N,R0,R1}.jsonl.gz` |\n535: | `tracecmp` reports | `verify/results/compare/cr-{compare,replace0,replace1}.{md,json}` |\n536: | shim logs (the per-call counters) | `verify/results/shim/cr/cr-{N,R0,R1}.log` |\n537: | certified pair | `verify/results/saves/certified-pairs.md`, row 4 |\n538: \n539: No `ghidra/addresses.d/cr.json`: this lane read no new address. No game data, save, disassembly or\n540: `FUN_xxxxxxxx` name reached `sots-engine`; `tools/clean_room_check.sh` OK.\n541: \n542: ### 5.4 VM145 released\n543: \n544: Held for this lane only; **VM140 untouched**. Restored and verified byte-for-byte to as-found:\n545: \n546: ```\n547: binkw32.dll 15,527,327 B 903527F4A698EEA9FBE25F3A6236657C7D8348F994EEF394696F187E5E554B97 (= shimdist-recap)\n548: shim.cfg 0AE410CC72FE155837D711C78543E14B1F5743310CD023298EB1E5BBD5457E71 (= shimdist-recap\\shim.cfg.recaptrace)\n549: SavedGames the same 9 files, every size and sha256 identical to the as-found survey\n550: game not running (as found)\n551: ```\n552: \n553: Left behind: `C:\\SOTS\\shimdist-cr\\`, `C:\\SOTS\\ui\\cr\\` (the input save, the four run outputs and the\n554: restore set) and `C:\\SOTS\\ui\\cr{deploy,click,grab,snap,restore,find}.ps1`. `click_helper.ps1` is\n555: unmodified. **One thing not restored:** my deploy helper *deletes* `C:\\SOTS\\shim.log` rather than\n556: rotating it to `.prev` the way lane BQ's does, so whatever log was there when I took the guest is\n557: gone. Logs are not simulation state and no measurement depends on it, but the next lane should\n558: rotate rather than delete.\n\n(End of file - total 558 lines)\n","metadata":{"preview":"# Taking `TechTree::ProcessResearch` + the unlock cascade from `compare` to `replace` (lane CR)\n\nHistorical experiment record. The displacement/board workflow referenced below is retired;\ncurrent scope and acceptance criteria are in `campaign/pilots/research-replacement.md`.\nThat pilot also records the independently observed installed-hook inventory and runtime FPU\nword corrections; the original prediction and raw observation history below is preserved.\n\n**Lane CR, 2026-09-09. Guest: VM145 (`sots-re-win10-145`, `re@192.168.10.145`) — held by this lane.**\nVM140 is untouched (it is the exclusive reference guest).\n\nThe board's headline metric is `tools/displacement.py`: **3 replaced / 7 compared / 7 modelled /\n3 mapped**. `TechTree::ProcessResearch + unlock cascade` is the best-evidenced `compared` row — 35\ncalls, three workloads, 0 divergences, `tracecmp` exit 0, and an advance prediction that held on a\n*changed* workload. This lane asks the only question that moves the metric: **can our code run\nINSTEAD of the original's, live, with a byte-level oracle holding afterwards?**\n\nEverything above the `## 4.` heading was committed **before** the shim was built or staged\n(rule 2). Nothing above that line is edited afterwards; corrections are made below it and named as\ncorrections (rule 11).\n","truncated":false,"loaded":[],"display":{"type":"file","path":"/tmp/opencode/sots-final-research-re/findings/subsystems/research-replace.md","text":"# Taking `TechTree::ProcessResearch` + the unlock cascade from `compare` to `replace` (lane CR)\n\nHistorical experiment record. The displacement/board workflow referenced below is retired;\ncurrent scope and acceptance criteria are in `campaign/pilots/research-replacement.md`.\nThat pilot also records the independently observed installed-hook inventory and runtime FPU\nword corrections; the original prediction and raw observation history below is preserved.\n\n**Lane CR, 2026-09-09. Guest: VM145 (`sots-re-win10-145`, `re@192.168.10.145`) — held by this lane.**\nVM140 is untouched (it is the exclusive reference guest).\n\nThe board's headline metric is `tools/displacement.py`: **3 replaced / 7 compared / 7 modelled /\n3 mapped**. `TechTree::ProcessResearch + unlock cascade` is the best-evidenced `compared` row — 35\ncalls, three workloads, 0 divergences, `tracecmp` exit 0, and an advance prediction that held on a\n*changed* workload. This lane asks the only question that moves the metric: **can our code run\nINSTEAD of the original's, live, with a byte-level oracle holding afterwards?**\n\nEverything above the `## 4.` heading was committed **before** the shim was built or staged\n(rule 2). Nothing above that line is edited afterwards; corrections are made below it and named as\ncorrections (rule 11).\n\n---\n\n## 1. The state, and why this one\n\n### 1.1 The candidate the brief names, and why it is not sufficient on its own\n\n`ref-turn2.sav` (`ab4ac2d7…`, = `verify/results/saves/turn2-state.sav`) is the campaign's oldest and\nmost reproduced oracle: one End Turn by the **load** route, `(Autosave EndTurn)` `bb4fd9ac…` /\n`(Autosave)` `978041ac…`, **5 + 1 processes**, certified-pairs row 1.\n\n**It does not exercise a research completion.** This is not an inference from the exit code — it is\nread off lane U's own instruments, both of which are in this repo:\n\n* `verify/results/compare/unlock-b3-t1.md`: 3 calls, 3 compared, 0 diverged, and\n **`0 undeclared write(s) in 0 call(s)`**. Every completion in every measured run produces\n undeclared writes on the `player` and `tree_header` guards, because that is where\n `OnTechResearched`'s tech effects and the tree's order counter land. Zero undeclared writes is\n zero completions.\n* `verify/results/shim/unlock-shim.log`: the first three `research: cascade ok=1 …` lines of the\n five-turn continuation read `completions=0 unlocked=0 otch_appends=0`. Those three lines *are*\n the `ref-turn2` End Turn.\n\nReading the trace rather than the verdict (rule 1) says what that turn *does* do: call 0 advances\nthe generator by one word (`left` 432 → 431), pushes node 144's progress 2879 → 5768, sets its flag\n1 → 2 (`OverBudgetNotified`) and posts one event (`next_id` 3 → 4). Calls 1 and 2 change **nothing\nat all**. So `ref-turn2` + one End Turn is a real workload for the *pass* and an empty one for the\n*completion path*. **A replace-mode oracle taken there would be exactly the green verdict on a hook\nthat compared nothing that rule 1 exists to catch.**\n\n### 1.2 The state this lane uses\n\n**`verify/results/saves/turn3-state.sav`** — 67,219 B, sha256\n`978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921`, `Summary.Turn = 3`,\n`Sim.ModCount = 24`. It is *the output of certified-pairs row 1*: the `(Autosave).sav` that\n`ref-turn2` + one End Turn produces. It is already on VM145 under that hash as `(Autosave).sav`.\n\n**Procedure: one End Turn. Route: LOAD.** Stated because the route is part of the pair\n(rule 26(c) fourth term; lane BS): the same turn reached by continuation and by load is two\ndifferent, individually reproducible things, and this lane deliberately does **not** inherit the\ncontinuation's turn-4 numbers as an assumption — it predicts them and lets the load route falsify\nthem (P1).\n\nWhy this turn: in lane U's five-turn continuation the **fourth-turn** call is the completing one.\nThe call that enters with `turn = 4` allocates 2,898 points to tech 144, completes it, and runs the\ncascade — `completions=1 unlocked=3 otch_appends=1` in the shim log, `next_id` 5 → 7 and\n`observed_techs` 440 → 484 bytes in the trace. `turn3-state.sav` is the state that turn starts from.\n\n### 1.3 The exposure screen (rule 26(c)) — a screen, not a decision procedure\n\nRead from `turn3-state.sav` with `verify/save-reader/save_reader.py`. Eight players; per lane BP the\nengine builds AI clients for net ids **32, 496, 512** only, and the four factions at 528–576 carry\ntheir signature **inertly**.\n\n| player | species | `ResTNm` | `Status` | AI client | pick-turn signature? |\n|---|---|---|---|---|---|\n| 16 (human `re`) | 0 | `''` | 4 | **no** (local human) | **false positive** — no client |\n| 32 | 2 | `IND_Waldo` | 4 | yes | **no** — mid-research |\n| 496 | 0 | `DRV_PlsFiss` | 4 | yes | **no** — mid-research |\n| 512 | 2 | `BIO_GnMod` | 4 | yes | **no** — mid-research |\n| 528, 544, 560, 576 | 4 | `''` | 0 | **no** | **false positive** — no client, `Status 0` |\n\n**No player that actually runs enters this turn with an empty research target.** That is the best\nthe screen can say. It cannot say the control will agree — rule 26(c)'s own retraction is explicit\nthat `candidatesTried` is not readable from a save, that there is a combat term, and that the load\nroute is a fourth term that is not a predicate on the save at all. **So the screen is why this turn\nis worth trying, and the two-process control in §4.1 is the only thing that decides it.**\n\nThe lineage where exposure is saturated (`ad-…`/`ar-…`, every turn carrying a signature) is\ndeliberately not used here.\n\n### 1.4 What is being asked of `hooks=off`\n\nThree fresh-process runs are planned before any replace result is read:\n\n| run | config | what it establishes |\n|---|---|---|\n| **C1**, **C2** | `shim.cfg.croff` (`hooks=off`, the proxy loads and installs nothing) | the control agrees with itself across two fresh processes (rule 26) |\n| **N** | `shim.cfg.crcompare` (one detour, `compare`) | the instrument is behaviour-neutral on *this* save and route (rule 19), **and** it is where the completion count comes from the hook itself |\n\nOnly then the replace runs. C1/C2 use the *same proxy DLL* as every measured run, so the only\ndifference between control and measurement is the config (lane CB's shape).\n\n---\n\n## 2. The four bytes of every float literal on this path (rule 23)\n\nTwo float literals are on the research pass's arithmetic path, and **both are widened `float`s**.\nRead here directly out of `dumps/sots.exe` (PE image base `0x00400000`, `.rdata` at `0x009dd000`\nfile offset `0x5dbe00`), not taken from an earlier note:\n\n| VA | bytes (LE) | value as `double` | is it `(double)float`? | engine constant |\n|---|---|---|---|---|\n| `0x009e20c8` | `00 00 00 a0 99 99 e9 3f` | `0.80000001192092896` | **yes** (low 29 bits zero) | `kEarlyCompletionRatio = 0.800000011920929` |\n| `0x009e5060` | `00 00 00 a0 99 99 a9 3f` | `0.05000000074505806` | **yes** | `kDecayFraction = 0.05000000074505806` |\n\nBoth source literals were re-parsed and re-packed: `0.800000011920929` → `000000a09999e93f` and\n`0.05000000074505806` → `000000a09999a93f`. **Bit-identical to the image.** So the two constants\n`sots-engine/src/game/sim/research.cpp` relies on are exactly the image's, not the exact decimals\nthat bit the money chain twice.\n\nTwo literals that are **not** on this path, and why:\n\n* the tech-cost multiplier (`1.0 − 0.25·n`, floor `0.25`) — `ours` never evaluates it. It calls the\n game's own read-only `TechTree::Cost` for every cost it needs, in both modes (`g_env.cost`). This\n is a genuine, declared dependency on the original: the effective cost is **not** displaced.\n* `ResearchSpendFloor` / `Ceiling` are integer `×50/100` and `×150/100` with a 32-bit wrapping\n multiply — no float involved.\n\n---\n\n## 3. Predictions, committed before the build\n\nFalsification symptoms are given for each. Predictions are made **per site** and not at a bracket\ntotal (rule 23's 2026-09-09 corollary).\n\n### P0 — the control agrees with itself\n`turn3-state.sav`, one End Turn, load route, `hooks=off`, **two fresh processes** produce identical\n`(Autosave EndTurn).sav` and `(Autosave).sav`.\n*Falsified if:* the two processes differ. Then this workload is exposed, the screen in §1.3 was\ninsufficient (which is what rule 26(c)'s retraction predicts is possible), and the honest move is to\nreport that and pin the source of variation — **not** to pick the run that suits.\n\n### P1 — the turn is not quiet, and the load route reproduces the continuation's turn-4 call\nExactly **3** `ProcessResearch` calls, one per AI client, in the same owner order. Allocations:\n**A → {tech 144, 2898 points}**, **B → {tech 90, 0 points}**, **C → {tech 9, 0 points}**. Exactly\n**one completion** (tech 144) and the cascade unlocks exactly **three** nodes:\n\n| node | `state` | `cost_rp` | `turn_available` |\n|---|---|---|---|\n| 132 | 0 → 2 | `INT_MAX` → **10000** | −1 → **4** |\n| 136 | 0 → 2 | `INT_MAX` → **16000** | −1 → **4** |\n| 142 | 0 → 2 | `INT_MAX` → **8000** | −1 → **4** |\n\n*Falsified if:* a different allocation, a different completion count, or a different unlock set. That\nwould be a **route** result — the load route not reproducing the continuation — and it is worth as\nmuch as the replace result. It is exactly what rule 26(c)'s fourth term says can happen.\n\n### P2 — the arithmetic, hand-computed on the boundary\nFor node 144: `cost = 5000`, `lo = ResearchSpendFloor = 2500`, `hi = ResearchSpendCeiling = 7500`.\nEntering progress **5768**, allocation **2898**:\n\n* `spent = min(2898, 7500 − 5768) = 1732` — the cap binds, so this call lands **exactly on the\n ceiling**, which is the boundary rule 23 says to test by hand rather than trust a compare on.\n* `progress 5768 → 7500`, `overbudget 0 → 1166`.\n* `progress (7500) < hi (7500)` is **false**, so the odds/roll branch is skipped: **zero RNG draws**.\n I predict `rng.left` is **unchanged at 413** across all three calls and the `mt` digest does not\n move on any of them.\n* `ratio = (float)(7500/5000) = 1.5`, and `1.5 < 0.800000011920929` is false → **not** completed\n early → `flag` **unchanged**.\n* `state 3 → 4`, `turn_researched −1 → 4`, `order −1 → 22`, and the tree's order counter\n `22 → 23`.\n\n*Falsified if:* any single one of these moves. A wrong `hi` shows up as a wrong `overbudget`; a\nwrong early-completion literal shows up as `flag` moving.\n\n### P3 — the instrument is neutral, and the completion is counted by the instrument\nRun N (`crcompare`, one detour) produces autosaves **byte-identical to C1/C2**, and `tracecmp`\nreports **3 calls / 3 compared / 0 diverged / exit 0**. The hook's own per-call log line reads\n`completions=1 … unlocked=3 otch_appends=1` on the completing call and all-zero on the other two.\nUndeclared writes: **6 spans in 1 call** —\n`player +0x10c/3`, `player +0x110/3`, `player +0x114/3`, `player +0x124/3`, `player +0x294/4`\n(`ResT`, the research target being cleared) and `tree_header +0x20/1` (the order counter).\n\n*Falsified if:* the autosaves move (then rule 19 bites and nothing below is readable), or the\nundeclared-write set differs (then the workload or the model moved).\n\n### P4 — replace with the cascade OFF (`crreplace0`, the shipped behaviour) diverges\nThe autosave is **not** byte-identical. Predicted diverging leaves, by name:\n\n1. `Player[32]` tech tree: node 144 `turn_researched` and `order` unstamped (−1/−1); nodes 132, 136\n and 142 unchanged at `state 0`, `cost_rp INT_MAX`, `turn_available −1`.\n2. the tree's completion-order counter left at 22.\n3. `Player[32]` events: `next_id` short by **2**, two event records absent.\n4. `Player[32]` `otch`: one `ObservedTech` element absent (**44 bytes**).\n5. `Player[32]` scalar fields at `+0x10c`, `+0x110`, `+0x114`, `+0x124` unchanged, and `ResTNm` still\n reading `IND_Waldo` because `ResT` was never cleared.\n\nWhat **will** be right even here: node 144's `state = 4`, `progress = 7500`, `flag`, the decay sweep\nover every other node, and the `overbudget` accumulator.\n\n### P5 — replace with the cascade ON (`crreplace1`) diverges, by strictly less\nSame binary, one config line different (`research.replace_cascade=on`; see §3.1). Predicted:\n**strictly fewer diverging leaves than P4**, with items 1 and 2 of P4 **closed** — node 144 stamped\n`turn_researched 4` / `order 22`, nodes 132/136/142 at `state 2` with `cost_rp` 10000/16000/8000 and\n`turn_available 4`, counter at 23 — and items 3, 4 and 5 **still open**.\n\n### P6 — the headline, stated in advance\n**`game/sim/research` does NOT move from `compared` to `replaced` this session, and the named cause\nis `ServerPlayer::OnTechResearched`, not the research model.** The research pass itself — the spend\ncap, the odds branch, the completion, the decay sweep, and (with the flag on) the whole\n`SetResearched` cascade — is displaceable and I expect it to reproduce the original's TechTree state\nexactly. What blocks the oracle is the *callback*: it posts events whose text comes from the game's\nstring table, appends an `ObservedTech` element `ours` decides but does not construct, and writes\n~90 `ServerPlayer` fields that are a different subsystem's milestone (B2) and a separate `compared`\nrow on the board. A replace of the research pass is **gated on displacing `OnTechResearched`**, and\nthat is a statement about a boundary, not about the research model.\n\n*Falsified if:* `crreplace1`'s autosave is byte-identical to the oracle. That would mean the\ncallback's writes do not reach the save on this workload, P6 is wrong, and the row moves to\n`replaced` — which is the outcome I would rather have and do not expect.\n\n### P7 — the numbers I expect to be able to quote honestly afterwards\n**1** distinct completion, **1** distinct tech (144), **3** unlocked nodes, **3** calls of which\n**2** allocate zero points and write nothing at all. That is thin, and it will be reported as\nthin (rule 15/23) whatever the verdict.\n\n### 3.1 The one engine change this lane makes, and why it is not a thumb on the scale\n\n`sots-engine` worktree `wip/cr` (rule 21), branched from `main` at `e7e2bd6`.\n\n* **`research.replace_cascade=on|off`, default `off`.** With it off the binary behaves *exactly* as\n `main` does today, so P4 measures the shipped behaviour rather than a straw man. With it on, a\n **replace**-mode call also writes the four `TechNode` words `SetResearched` stamps and the tree's\n completion-order counter. It does **not** post events, does **not** move the `ObservedTech` vector\n and does **not** apply a single tech effect — those stay gated on compare mode and stay declared\n unmodelled. The flag exists so P4 and P5 differ by a **config line and not by a binary**, which is\n what makes the leaf difference between their autosaves attributable to the cascade.\n* **A per-call log line in every mode.** The old line was gated on the cascade having run, so a\n replace run with the cascade off had no counter at all and \"a completion happened\" could only be\n inferred from the save — the artefact under test. It now prints `steps`, `completions` (counted\n from the pass's own step results), `overbudget` and the cascade counters, in compare **and**\n replace. This is the instrument answering the brief's \"show it fired — a count, from the hook\n itself\".\n\nNo new binary facts: `ghidra/addresses.d/cr.json` is **not** created, because this lane reads no new\naddress. Every offset used already exists in the generated header. Host build: 253 targets, **59/59\ntests pass** (the denominator is the healthy 59, per rule 24's signature check); `clean_room_check`\nOK; `tools/check_shim_configs.py` OK with 27 registered hooks and all four CR configs\n(`croff`, `crcompare`, `crreplace0`, `crreplace1`) — the three `hooks=trace` ones marked\n`# exhaustive` and naming all 27.\n\n---\n\n## 4. Results\n\n*(added after the runs; nothing above this line is edited)*\n\n### 4.0 The five runs, in order\n\nAll five on **VM145**, held by this lane, each a **fresh process**, `SavedGames` reset to exactly\n`turn3-state.sav` before every launch, `C:\\SOTS\\shimdist-cr\\binkw32.dll`\n(25,274,723 B, sha256 `d2ad56b32c1b5f6b…`, `BUILD_ID cr-618ccb1-20260909T131556Z`, exports 66/66\nidentical to the real `binkw32.dll`), one config per run and nothing else changed. Every screen —\nmain menu, Load-Game chooser, the one-row file list, the **lobby**, the loaded map at \"Turn 3\", the\npost-turn map at \"Turn 4\" — was verified from a live `qm monitor` screendump before the next click.\nNo run was driven by sleeping.\n\n| run | config | mode | `research.replace_cascade` | `(Autosave EndTurn).sav` | `(Autosave).sav` |\n|---|---|---|---|---|---|\n| **C1** | `croff` | `hooks=off` | – | 67,212 `e00eed0c…` | 67,811 `79df5047…` |\n| **C2** | `croff` | `hooks=off` | – | 67,212 **`e00eed0c…`** | 67,811 **`79df5047…`** |\n| **N** | `crcompare` | compare | off | 67,212 **`e00eed0c…`** | 67,811 **`79df5047…`** |\n| **R0** | `crreplace0` | **replace** | off | 67,212 `e00eed0c…` | 67,511 **`6b51db99…`** |\n| **R1** | `crreplace1` | **replace** | **on** | 67,212 `e00eed0c…` | 67,537 **`8a4309ee…`** |\n\n`(Autosave EndTurn).sav` is the *pre*-turn resave and is identical in all five runs, as it must be —\nnothing has run yet when it is written. The verdict is carried entirely by `(Autosave).sav`.\n\n### 4.1 P0 held: the oracle\n\n**C1 and C2 agree byte-for-byte in two fresh processes.** The pair, in the standing\n`certified-pairs.md` format:\n\n| input | procedure | route | `(Autosave EndTurn)` | `(Autosave)` | processes | evidence |\n|---|---|---|---|---|---:|---|\n| `turn3-state.sav` `978041ac…` | one End Turn | **load** | `e00eed0c…` | `79df5047…` | **3** | lane CR ×2 `hooks=off`, ×1 compare-instrumented |\n\n**Masks that must be on the line.** Measured, not assumed —\n`state_checksum.py turn3-state.sav <(Autosave EndTurn)>` gives **exactly 5 leaves**:\n`/Summary/Checksum` and `Player.Status 4 → 0` on each of the four live players (16 `re`,\n32 `Fane Lao`, 496 and 512 `Singularity`). **There is no `/CD[1]/NPrvVa` term on this state** —\n`CD[1]`'s diplomacy block is early-game and the leaf does not move — so the `--mask resave` rule\nholds here in the form the docs originally stated, and the lane BQ exception does not apply.\n\n**Exposure facts next to the hashes** (certified-pairs standing rule 4): §1.3's table — no player\nwith an AI client enters the turn with `ResTNm == ''`; `NumDes` does not move; the two ships that\ncomplete join existing fleets; the four factions at 528–576 carry the empty-`ResTNm` signature\ninertly (`Status 0`, no client). The turn does create fleets (`Flt[50]`, `Flt[1808]`) and retire one\n(`Flt[1776]`) — that is a fleet-assignment shape, and it agreed anyway. **Which is the point of\nrule 26(c)'s retraction: the screen said \"likely fine\" and only the two-process control decided it.**\n\n### 4.2 P3 held: the instrument is neutral, and it counts the completion itself\n\nRun **N** reproduced the control's two hashes exactly, so rule 19 is satisfied on *this* save and\n*this* route and everything below is read from runs that passed their own check.\n`tracecmp verify/traces/cr-N.jsonl.gz`: **3 calls, 3 compared, 0 diverged, exit 0**, coverage verdict\n`partial`, 8 unmodelled notes — and the undeclared-write set is **exactly the six spans predicted**:\n\n```\nplayer+0x10c:3 player+0x110:3 player+0x114:3 player+0x124:3 player+0x294:4 tree_header+0x20:1\n```\n\nThe hook's own per-call line, which is the instrument saying a completion fired rather than the save\nbeing asked to imply it:\n\n```\nresearch: mode=compare steps=1 completions=1 overbudget=1166 cascade_possible=1 ok=1\n cascade_completions=1 unlocked=3 otch_appends=1 roll_draws=0 failures=0 depth=0\nresearch: mode=compare steps=1 completions=0 … (×2, all zero)\n```\n\n**A correction to the campaign's read of the detour count, and it goes the other way from the\nbrief's warning.** My config names all **27** registered template hooks and\n`check_shim_configs.py` passes it as `# exhaustive` — and the shim still installed **six** detours,\nnot one:\n\n| detour | source | named by a `hook.` key? |\n|---|---|---|\n| `Mars::Application::Initialize` | the M0 asm stub, installed unconditionally whenever `hooks != off` | **no** |\n| `Game::TechTree::ProcessResearch` | the one template hook | yes |\n| `StrategyClient::EndTurn`, `StrategyServer::BeginProcessTurn`, `StrategyServer::ProcessTurn`, `DemoApp::OnTick` | the **FPU-force module**, which installs four *sampling* detours by default (`fpu: module init … force=off value=0x0000 sample_ticks=on`, `sample_turn=on`) | **no** |\n\n`Shim::SelfTest::Fill` additionally emits one `trace` record at startup; it is an in-shim self-test,\nnot a detour on the game. So **`# exhaustive` is exhaustive over the template-hook set only**, and\n`tools/check_shim_configs.py` cannot see the other five. It was the *neutrality check* (N identical\nto C1/C2), not the config check, that made this run safe — which is worth saying plainly, because a\nlane reading \"exhaustive, therefore one detour\" would be wrong by five.\n\nFor the record, `fpu_cw = 0x027f` (53-bit, round-to-nearest) in every CR run.\n\n### 4.3 P1 and P2 held exactly, on the LOAD route\n\nThe load route reproduced the continuation's turn-4 call in every particular — allocations, the\ncompletion, the unlock set, the arithmetic. From `cr-N.jsonl.gz` (compare) and confirmed identically\nin `cr-R1.jsonl.gz` (replace):\n\n| call | owner | species | alloc | what moved |\n|---|---|---|---|---|\n| 1 | `Player[32 \"Fane Lao\"]` | 2 | `{144, 2898}` | the completion (below) |\n| 2 | `Player[496 \"Singularity\"]` | 0 | `{90, 0}` | **nothing at all** |\n| 3 | `Player[512 \"Singularity\"]` | 2 | `{9, 0}` | **nothing at all** |\n\nCall 1, node **144 `IND_Waldo`**: `state 3 → 4`, `progress 5768 → 7500`, `turn_researched −1 → 4`,\n`order −1 → 22`; `overbudget 0 → 1166`; three nodes unlocked —\n**132 `IND_OrbFound` @ 10000**, **136 `IND_RefCoat` @ 16000**, **142 `IND_TrkStl` @ 8000**, each\n`state 0 → 2`, `cost_rp INT_MAX → …`, `turn_available −1 → 4`; `events.next_id 5 → 7`;\n`observed_techs 440 → 484 bytes`.\n\nP2's hand arithmetic is confirmed to the unit: `cost 5000`, `lo 2500`, `hi 7500`,\n`spent = min(2898, 1732) = 1732`, `progress = 7500` **exactly on the ceiling**,\n`overbudget = 2898 − 1732 = 1166`; `progress < hi` false so **no draw**; `ratio = 1.5`, not below\n`0.800000011920929`, so **`flag` unchanged**. The `rng` region **did not move on any of the three\ncalls** in any run.\n\nThat last fact is a coverage hole, not a success — see §4.6.\n\n### 4.4 P4 and P5 held: replace diverges, and the cascade closes exactly eleven leaves\n\n`state_checksum.py cr-oracle-autosave.sav `:\n\n| run | diverging leaves | file size |\n|---|---:|---|\n| **R0** — replace, cascade **off** (the shipped behaviour) | **27** | 67,511 B |\n| **R1** — replace, cascade **on** | **16** | 67,537 B |\n| (the turn itself, `turn3-state` → oracle, for scale) | 128 | – |\n\n**The eleven leaves the cascade closes — R0 has them, R1 does not.** All eleven are `TechTree`:\n\n```\nPlayer[32]/TechTree/St[94] TResCost[94] TUnlck[94] (node 132 IND_OrbFound, 10000)\nPlayer[32]/TechTree/St[98] TResCost[98] TUnlck[98] (node 136 IND_RefCoat, 16000)\nPlayer[32]/TechTree/St[104] TResCost[104] TUnlck[104] (node 142 IND_TrkStl, 8000)\nPlayer[32]/TechTree/TAcq[106] TiAcq[106] (node 144, turn 4 / order 22)\n```\n\nThe tree is serialised as parallel arrays indexed by **tree slot**, not tech id — slots 94/98/104/106\nare tech ids 132/136/142/144 — and the pass's own two words, `St[106] 3 → 4` and\n`TResDone[106] 5768 → 7500`, are correct in **both** replace runs because\n`ProcessResearchTurn` writes them without the cascade. So of the **13 tech-tree leaves this turn\nmoves, our code produced all 13 in live memory with the original's `ProcessResearch` never\nexecuting** — 2 from the pass, 11 from `SetResearched`.\n\n**One prediction I cannot test and must retract as written.** P4 item 2 said the completion-order\ncounter would be \"left at 22\" in R0. `TechTree+0x20` **is not a save leaf** — the counter's value\nsurfaces only through the per-node `TiAcq` stamp — so the oracle cannot see it either way. What is\nobservable is the trace: R1's only guard hit is `tree_header+0x20:1` (ours writing 22 → 23, the same\nbyte the original moves in compare mode) and R0 has **0 undeclared writes in 0 calls**. The counter\nmatters for the *next* completion, not for this save.\n\n### 4.5 P6 held: the residual is `ServerPlayer::OnTechResearched`, entirely\n\nR1's **16** leaves, every one of them named, with nothing left over:\n\n| leaf | what it is | modelled by `ours`? |\n|---|---|---|\n| `Player[32]/OutMod` `1.25 → 1.1` | a tech effect | no — B2's milestone |\n| `Player[32]/ConMod[0..2]` `0.9 → 1.0` (×3) | tech effects | no — B2's milestone |\n| `Player[32]/Events/EvNxID` `7 → 5` | the two events not posted | decision modelled, **write is compare-only** |\n| `…/Events/.[EvTurn=4]/Events/.[EvEID=5]`, `.[EvEID=6]` `only-in-A` | the two event records | text comes from the game's string table |\n| `…/Events/.[EvTurn=4]/Events/.[0]` `3 → 1` | that turn's event count | ditto |\n| `Player[32]/otch/.[11]` `only-in-A`, `otch/.[0]` `11 → 10` | the `ObservedTech` element | append **decided** (`otch_appends=1`), element not constructed |\n| `Player[32]/ResTNm` `'' → 'IND_Waldo'` | `ResT` never cleared | inside the callback |\n| `Player[32]/BnkPr`, `BnkEl` | bankruptcy projection | **downstream of `OutMod`** |\n| `Sys[288 \"Ke'Dolarra\"]/RepCur`, `RepMax` `421640 → 371040` | repair capacity | **downstream of `ConMod`** |\n| `/Summary/Checksum` | derived | derived |\n\nSo the residual decomposes into **5 primary player fields** (`OutMod`, `ConMod[0..2]`, `ResTNm`),\n**1 `ObservedTech` element**, **2 event records + their id counter**, and **5 derived leaves** that\nfollow from those. Every single one is written by `ServerPlayer::OnTechResearched`, none of them by\n`TechTree::ProcessResearch` or by `SetResearched`.\n\nThat also closes the loop with §4.2's guard: the four `player` spans the compare reported as\nundeclared (`+0x10c`, `+0x110`, `+0x114`, `+0x124`, all three bytes wide — float writes whose top\nbyte did not change) plus `+0x294` (`ResT`, four bytes) are **five** writes, and the save shows\n**five** primary player fields. The guard was reporting exactly what the oracle later billed us for.\n\n**The input class that breaks it is a completion, and only a completion.** Both replace runs are\nbyte-perfect on the two null calls and on every other leaf of the 128 the turn moves. A replace run\nover a turn where research does not complete would be byte-identical — and would prove nothing\n(rule 1), which is why this lane refused to run it on `ref-turn2`.\n\n### 4.6 Coverage, reported as loudly as the result (rules 15 and 23)\n\n* **1 completion. 1 distinct tech (144 `IND_Waldo`). 3 unlocked nodes. 3 calls.**\n* **2 of the 3 calls allocate zero points and write nothing at all**, in any mode. Their entire\n contribution to \"3 calls, 0 diverged\" is that two null calls stayed null.\n* **1 of 4 tech trees is exercised.** Player 16's tree is never processed (`ResTNm == ''`); players\n 496 and 512 are the null calls.\n* **The RNG region did not move on any call in any run.** The spend cap bound exactly, so the\n odds/roll branch was skipped, and `roll_pending_in` was false on the completing call, so\n `RollResearchEvent` drew nothing (`roll_draws=0`). **`region:rng` — the single strongest check in\n this hook's compare — compared \"unchanged against unchanged\" on this workload and established\n nothing.** The generator parity evidence for this module is entirely lane U's and lane V's,\n on other turns.\n* **Branches that did not execute here:** the Zuul double roll (species 2, not 5); the\n completed-early flag (`ratio 1.5`); the over-budget notification (`flag` already 2 from turn 3);\n `RollResearchEvent`'s draw and, behind it, the plague / AI-rebellion paths; `SetResearched`'s\n zero-cost recursion; the `def+0xb0` `NoAutoAvailable` skip; an empty prerequisite group; a\n re-observed tech (the dedup's negative case); and the decay sweep, which ran over every node and\n **changed nothing** because no other `Available` node had non-zero progress.\n* **The event model is count-only by construction** and stayed compare-only in replace mode by\n design; the two missing records are two of the sixteen residual leaves.\n* **`TechTree::Cost` is the original's.** `ours` calls the game's read-only `Cost` for every cost it\n needs, in both modes. The effective-cost formula is **not** displaced, and any claim about this\n module inherits that dependency.\n\n### 4.7 Verdict\n\n**No. `game/sim/research` does not move from `compared` to `replaced`.**\n\nThe bar is \"our code ran instead of the original's **and a byte-level oracle held afterwards**\". Our\ncode did run instead — `mode=replace`, `completions=1`, `unlocked=3`, the original's\n`ProcessResearch` never executed, and the game finished the turn and wrote a save. The oracle did\n**not** hold: 16 leaves in the best configuration. There is no qualified reading that rescues it,\nbecause the failure is not a rounding residual — it is a set of writes nobody has implemented.\n\nWhat the lane did establish, and it is worth more than the rung would have been:\n\n1. **The research pass and the entire `SetResearched` cascade are displaceable and were displaced.**\n All 13 tech-tree leaves the turn moves were produced by our code in live game memory, on a turn\n with a real completion and a real three-node unlock cascade — which is a strictly stronger\n statement than the 35 compared calls the board already carried, because in a compare the\n original's code still did the work.\n2. **The blocking boundary is named and measured, not guessed:** `ServerPlayer::OnTechResearched`,\n 5 player fields + 1 `ObservedTech` element + 2 events, and 5 derived leaves behind them.\n `ProcessResearch` **cannot** reach `replaced` on any workload containing a completion until\n `OnTechResearched` is displaced — and that is B2's milestone and its own `compared` board row,\n not a defect in the research model.\n3. **A new certified pair** on a turn that exercises the completion path, which the campaign did not\n have: `ref-turn2` + one End Turn is a *quiet* turn for research, and every oracle the module had\n been checked against was that one.\n\nThe cheapest route to the rung, now that the boundary is priced: implement the ~90-field\n`ApplyTechEffect` write-back live (B2 already has `game/effects/tech_effects` host-tested), construct\nthe `ObservedTech` element, and decide what to do about the two event records — whose *text* comes\nfrom the game's string table and therefore cannot be produced clean-room at all. **The event text is\na hard stop for a byte-identical oracle on any completion turn**, and that should be settled as a\npolicy question (call the game's `PostEvent`, and accept the `ComputeBudget`-shaped QUALIFIED\ncaveat) before anyone spends another lane on it.\n\n---\n\n## 5. Proposed board rows\n\n**I have not edited `campaign/board.md`.** I *have* added the certified pair to\n`verify/results/saves/certified-pairs.md`, which the brief pointed at as the standing format and\nwhose four standing rules for adding a row are all satisfied (two fresh `hooks=off` processes; the\ncontrol run before anything was read from an instrumented run; not an extension of an existing pair\nbut its own agreement; exposure facts recorded beside the hashes).\n\n### 5.1 `tools/displacement.py` — the rung does NOT move\n\nThe verdict is **no**, so `\"compared\"` stays. What I do propose is replacing the evidence and caveat\nstrings, which currently understate what is known and do not name the gate:\n\n```python\n (\"TechTree::ProcessResearch + unlock cascade\", \"compared\",\n \"35 calls across 3 workloads, 0 divergences, tracecmp exit 0; advance prediction held on a \"\n \"changed workload (unlock costs no earlier report contained); REPLACE ATTEMPTED live (lane \"\n \"CR): ours ran instead of the original on a real completion and produced all 13 tech-tree \"\n \"leaves the turn moves, but the save oracle missed by 16 leaves\",\n \"compare only. The replace attempt failed on ServerPlayer::OnTechResearched, not on the \"\n \"research model: 5 player tech-effect fields, 1 ObservedTech element and 2 event records, \"\n \"plus 5 derived leaves. Gated on B2. Thin: 1 completion, 1 tech, 2 of 3 calls allocate zero \"\n \"points, and the RNG region did not move at all on the replace workload\"),\n```\n\n### 5.2 Board rows to add\n\n| row | class | status | conf | cov | date | evidence |\n|---|---|---|---|---|---|---|\n| **`ProcessResearch` replace: our code ran instead of the original's, and the oracle missed by 16 leaves — all of them `OnTechResearched`'s** | phase2 | verified | high | 95% | 2026-09-09 | **Lane CR, VM145**, `findings/subsystems/research-replace.md`. Predictions committed before the build (`sots-re` 4b3cc82); engine `wip/cr` 618ccb1 adds `research.replace_cascade=on\\|off` (default off) so the shipped and extended behaviours differ by **a config line, not a binary**. New certified pair `turn3-state.sav` → one End Turn, **load** route, `e00eed0c…`/`79df5047…`, 2 `hooks=off` processes + 1 compare. Compare run **3/3/0 exit 0** and byte-identical to the control (rule 19 satisfied), undeclared writes exactly the 6 predicted spans. **Replace, cascade on: 16 diverging leaves; cascade off: 27.** The 11-leaf delta is the whole `SetResearched` cascade and it is **ours**; with the pass's own 2 words that is **13 of 13 tech-tree leaves the turn moves, produced live by our code**. The 16 residual leaves are `OutMod`, `ConMod[0..2]`, `ResTNm`, one `ObservedTech` element, two event records + `EvNxID`, and 5 derived. **Verdict: stays `compared`.** |\n| **`ref-turn2` + one End Turn does NOT exercise a research completion** | verify | verified | high | 100% | 2026-09-09 | Lane CR. The campaign's most-reproduced oracle is a **quiet turn for the completion path**: `unlock-b3-t1.md` reports `0 undeclared write(s) in 0 call(s)` and `unlock-shim.log`'s first three lines read `completions=0`. It *is* a real workload for the pass (one RNG word, `flag 1 → 2`, one over-budget event) — but a replace-mode oracle taken there would be rule 1's green verdict on a hook comparing nothing. The completing turn is the **next** one, from `turn3-state.sav`. |\n| **`# exhaustive` is exhaustive over the 27 template hooks only — six detours are installed, not one** | phase2 | verified | high | 100% | 2026-09-09 | Lane CR. A config naming all 27 registered hooks `off` except one, passing `tools/check_shim_configs.py`, still installs **6** detours: the M0 `Application::Initialize` asm stub (unconditional whenever `hooks != off`) and the **FPU-force module's four sampling detours** (`force=off value=0x0000 sample_ticks=on sample_turn=on`, on by default). `check_shim_configs.py` cannot see either group — no `hook.` key names them. What made lane CR's runs safe was the **neutrality check** (compare run byte-identical to two `hooks=off` controls), not the config check. A lane reading \"exhaustive, therefore one detour\" is wrong by five. |\n| **A replace of `ProcessResearch` is gated on `ServerPlayer::OnTechResearched`, and partly on a policy question** | phase2 | open | high | – | 2026-09-09 | Lane CR. To reach `replaced`, three things are needed: the ~90-field tech-effect write-back applied live (B2 has `game/effects/tech_effects` host-tested), the `ObservedTech` element constructed (`ours` already decides the append), and the two research event **records** written. The third is not an implementation gap: their `EvDsc`/`EvMsg` text comes from the game's string table, which the engine must not carry, so a byte-identical oracle on any completion turn requires calling the game's own `PostEvent` and accepting a `ComputeBudget`-shaped **QUALIFIED** `replaced`. Settle that before spending a lane. |\n\n### 5.3 Artefacts\n\n| what | where |\n|---|---|\n| predictions commit (before the build) | `sots-re` `4b3cc82` |\n| engine change | `sots-engine` worktree `wip/cr`, `618ccb1` — `research.replace_cascade`, a mode-independent completion counter, four `shim.cfg.cr*` configs |\n| oracle + replace saves | `verify/results/saves/cr/cr-{oracle-endturn,oracle-autosave,replace0-autosave,replace1-autosave}.sav` |\n| traces | `verify/traces/cr-{N,R0,R1}.jsonl.gz` |\n| `tracecmp` reports | `verify/results/compare/cr-{compare,replace0,replace1}.{md,json}` |\n| shim logs (the per-call counters) | `verify/results/shim/cr/cr-{N,R0,R1}.log` |\n| certified pair | `verify/results/saves/certified-pairs.md`, row 4 |\n\nNo `ghidra/addresses.d/cr.json`: this lane read no new address. No game data, save, disassembly or\n`FUN_xxxxxxxx` name reached `sots-engine`; `tools/clean_room_check.sh` OK.\n\n### 5.4 VM145 released\n\nHeld for this lane only; **VM140 untouched**. Restored and verified byte-for-byte to as-found:\n\n```\nbinkw32.dll 15,527,327 B 903527F4A698EEA9FBE25F3A6236657C7D8348F994EEF394696F187E5E554B97 (= shimdist-recap)\nshim.cfg 0AE410CC72FE155837D711C78543E14B1F5743310CD023298EB1E5BBD5457E71 (= shimdist-recap\\shim.cfg.recaptrace)\nSavedGames the same 9 files, every size and sha256 identical to the as-found survey\ngame not running (as found)\n```\n\nLeft behind: `C:\\SOTS\\shimdist-cr\\`, `C:\\SOTS\\ui\\cr\\` (the input save, the four run outputs and the\nrestore set) and `C:\\SOTS\\ui\\cr{deploy,click,grab,snap,restore,find}.ps1`. `click_helper.ps1` is\nunmodified. **One thing not restored:** my deploy helper *deletes* `C:\\SOTS\\shim.log` rather than\nrotating it to `.prev` the way lane BQ's does, so whatever log was there when I took the guest is\ngone. Logs are not simulation state and no measurement depends on it, but the next lane should\nrotate rather than delete.","lineStart":1,"lineEnd":558,"totalLines":558,"truncated":false}},"title":"../../../tmp/opencode/sots-final-research-re/findings/subsystems/research-replace.md","time":{"start":1789016917963,"end":1789016917992}},"metadata":{"openai":{"itemId":"fc_0a9b1191c74318a5016aa23b5599f887d197972644ea6485ce"}},"id":"prt_089b7c7bc001jRXCre2z8AQX2J","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b77c52001PoTmstaHMevnX1"}} +{"type":"tool_use","timestamp":1789016918006,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_bEYZBc1hUckuGtRwbVKNwXGP","state":{"status":"completed","input":{"filePath":"/tmp/opencode/sots-final-research-re/campaign/pilots/research-replacement.md"},"output":"/tmp/opencode/sots-final-research-re/campaign/pilots/research-replacement.md\nfile\n\n1: # Proposed pilot: completion-bearing research replacement\n2: \n3: Status: **proposed**. This is a contract design, not replacement acceptance. Owner/authority:\n4: openai/gpt-6-astra; subsequent implementation and independent verification use the campaign roles.\n5: The target is a bounded replacement of `Game::TechTree::ProcessResearch`, its `SetResearched`\n6: cascade and required completion callback writes on explicitly certified workloads. Broad research\n7: displacement remains unproved. No new live address, remote deployment or dependency policy is\n8: authorized by this document.\n9: \n10: ## 1. Evidence inspected independently (2026-09-09)\n11: \n12: Sources: `findings/subsystems/research-replace.md`; archived CR compare JSON, raw compressed\n13: traces, shim logs and saves; current engine research, tech-effect and event interfaces. Archived\n14: engine build is `cr-618ccb1-20260909T131556Z`, not the rollout's current source snapshot.\n15: \n16: Recomputed SHA-256:\n17: \n18: | RE-relative file | bytes | SHA-256 |\n19: |---|---:|---|\n20: | `verify/results/saves/turn3-state.sav` | 67219 | `978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921` |\n21: | `verify/results/saves/cr/cr-oracle-endturn.sav` | 67212 | `e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f` |\n22: | `verify/results/saves/cr/cr-oracle-autosave.sav` | 67811 | `79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420` |\n23: | `verify/results/saves/cr/cr-replace0-autosave.sav` | 67511 | `6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5` |\n24: | `verify/results/saves/cr/cr-replace1-autosave.sav` | 67537 | `8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235` |\n25: \n26: Local reproduction (diagnostic tool exit alone is not an equality verdict):\n27: \n28: ```sh\n29: python3 verify/state-checksum/state_checksum.py verify/results/saves/cr/cr-oracle-autosave.sav verify/results/saves/cr/cr-replace1-autosave.sav --limit 40\n30: ```\n31: \n32: This reports **16** exact-bit, unmasked leaf differences. Oracle -> R1: OutMod 1.25 -> 1.1;\n33: ConMod[0..2] 0.9 -> 1; ResTNm empty -> IND_Waldo; EvNxID 7 -> 5; events 5/6 absent and\n34: turn-bucket count 3 -> 1; observed-tech element 11 absent and count 11 -> 10; BnkPr/BnkEl,\n35: RepCur/RepMax and Summary.Checksum differ. These are five primary scalar fields, collection\n36: writes/counts and five derived leaves. They are not permission to patch five downstream values.\n37: \n38: `verify/results/compare/cr-compare.json:289-357` reports partial coverage: three comparisons,\n39: six undeclared spans in one call and eight unmodelled notes. In\n40: `verify/traces/cr-R1.jsonl.gz`, call 1 is replace, allocation tech 144 / 2898, input turn 4,\n41: order counter 22, observed count 10, roll_pending false, RNG left 413 and CW 4735 (`0x127f`).\n42: Its RNG digest/index/left are unchanged. Logs `verify/results/shim/cr/cr-R1.log:116-118`\n43: count one completion and three unlocks, then two zero-point calls. `otch_appends=1` counts a\n44: decision; it does **not** mean an element was constructed live.\n45: \n46: ### Corrections to inherited narrative\n47: \n48: 1. R1 log lines 75-94 show seven drawsite detours and twelve probes in addition to the six\n49: sites enumerated in CR findings. Instrumentation is broader than the template-hook config.\n50: Every fresh run needs a complete installed-site manifest, not an “exhaustive config” assertion.\n51: 2. R1 runtime CW is `0x127f`, including the research trace argument; initialization prints\n52: `0x027f`. Preserve the full measured word and precision/rounding separately.\n53: 3. Runtime string lookup is already an engine interface (`research_events.h:95-105`,\n54: `app/event_phase.cpp:10-14`). The absence of bundled game prose does not establish that\n55: original `PostEvent` is mandatory. Runtime asset loading is a concrete route to investigate.\n56: 4. `shim/hooks/tech_effects.cpp:354-365` already writes player state/design masks and delegates\n57: node-bore updates in replace mode. The research hook does not integrate that complete callback;\n58: calling the helper “host-tested” is not evidence its full live boundary is implemented.\n59: \n60: ## 2. Workloads and access paths\n61: \n62: ### W1 — primary positive workload, exact LOAD route\n63: \n64: On a future explicitly leased lab with operator-supplied executable/data paths: restore the\n65: hashed turn3 input as the only selected input save; start a fresh process; use Load Game, select\n66: the input, enter its lobby/map at Turn 3, then one End Turn to Turn 4. Verify UI/state transitions\n67: rather than sleep-and-assume. Preserve both output saves before any reset. Bind save selection,\n68: route, process identity, executable hash, assets, shim hash, config and instrumentation to evidence.\n69: \n70: Historical predictions to re-certify before measuring candidate results:\n71: - Exactly three research calls, owners 32/496/512 in order, allocations 144:2898, 90:0, 9:0.\n72: - One IND_Waldo completion: progress 5768 -> 7500, state 3 -> 4, turn_researched -1 -> 4,\n73: order -1 -> 22, counter 22 -> 23, refund 1166. Flag unchanged.\n74: - Nodes 132/136/142 unlock, costs 10000/16000/8000, available turn 4. Save tree slots are\n75: 94/98/104; tech 144 is slot 106. Never equate tech id with serialized slot.\n76: - One full ObservedTech record, two full events (completion followed by unlocked-techs),\n77: event next id 5 -> 7; primary effect fields reach oracle values; target clears.\n78: - Zero RNG words in this workload. This is a negative RNG control, not evidence for draws.\n79: \n80: ### W0 — regression control, insufficient for completion acceptance\n81: \n82: `verify/results/saves/turn2-state.sav`, one End Turn via LOAD, reaches the turn3 input above.\n83: This exercises the research pass/overbudget event and a RNG word, but zero completions. Re-certify\n84: its two-process oracle independently and pin its input hash before use. Do not substitute W0\n85: for W1, or use zero-allocation calls as the positive execution threshold.\n86: \n87: ### W2 — path to broader completion evidence (not yet certified)\n88: \n89: Select a different, archived completion-bearing input from the unlock continuations, or generate\n90: one under an approved lab contract; record the input hash and exact LOAD/continuation route before\n91: prediction. Require a different tech/effect family, a positive RNG draw and a second completion\n92: that observes the advanced order counter. The existing U/V evidence motivates selection but is\n93: not a ready executable workload contract. Separate controls are required for that exact route.\n94: Until W2 exists, any accepted pilot claim is restricted to W1 plus its declared regression checks.\n95: \n96: ## 3. Full write boundary and responsibilities\n97: \n98: | Boundary | Required state / behavior | Existing interface and current gap |\n99: |---|---|---|\n100: | Research pass | all node progress/state/flag writes; signed capped spend and refund accumulator; decay of other Available nodes; RNG state, left and next index | `sim::ProcessResearchTurn`, `ResearchCompletionHook`; current CR pass writes live |\n101: | Unlock cascade | node costRP, availability/researched turn, order; tree order counter; child/prerequisite availability; recursive zero-cost completions and ordering | `sim::TechGraph` / `SetResearched`; replace cascade opt-in exists, transcription failures can currently skip it |\n102: | Completion callback | target pointer/ResTNm; pending-roll flags; every applicable player economy float, masks, boolean/species flags, design-option masks; node-bore storage/lifetime | `ApplyTechCompletion`, `RunCompletionTail`, `tfx::ReadPlayerState`/`WritePlayerState`; integrate with research on pre-call inputs, avoid already-researched guard |\n103: | Observed technology | dedup/update semantics, entire 0x2c record (name, first/last turns, detected, with), vector content/count/capacity and allocator ownership | research hook currently alters scratch span only; full live construction and update semantics need evidence |\n104: | Events | complete turn buckets and ordered records: id, summary, message, location, position, image, action, chainId; next id; dedup and pruning; all owned allocations | `events::EventStorage`, `PostResearchPassEvents`; research hook is count-only/compare-only; runtime text and live ABI adapter missing |\n105: | Callback outcomes beyond player | owned-system AI flags/caps/addiction/plague; ships' plague state; recursive Zuul tech grants; pending research-event RNG and plague/rebellion consequences including allocations/cancel research | `TechApplyOutcome` reports work, does not execute it; broader closure remains incomplete |\n106: | Downstream observation | budget/bankruptcy/repair/checksum consequences of primary effects | let ordinary turn processing derive them; full oracle must expose them, never harvest original post-state or hardcode expected leaves |\n107: \n108: The W1 observed write set is a subset of this boundary. The complete callback has conditional\n109: system/ship/object writes absent on W1. A narrow pilot must preflight its supported class and\n110: fail closed before mutating on unsupported branches. Suppressed writes, unavailable graph/text,\n111: unknown pointers, unreadable names, failed allocation, or unmodelled fired rolls are blockers,\n112: not successful no-ops. General displacement requires separate evidence for all reachable effects.\n113: \n114: Events require exact formatting/dedup order, `FLT_MAX` no-position values, action conversion,\n115: the original prune-window behavior and preexisting event contents. `KeylessEventText` substitutes\n116: tokens for prose and must never be serialized as a passing oracle. Completion message length\n117: above 255 has an explicitly documented divergence/undefined-original boundary; exclude or resolve\n118: it explicitly. Seed comparisons from pre-call state, not the original callback's output.\n119: \n120: ## 4. Inputs and original dependencies\n121: \n122: Required immutable input manifest before ready:\n123: - Exact engine and RE baseline commits plus actual source-content hashes; paired worktrees;\n124: compiler/toolchain/build flags, host and shim binaries, generated-address provenance.\n125: - The hashed W1 input and oracle archive above, plus selected W0/W2 inputs as applicable.\n126: - Operator-owned game executable and proxy originals with hashes. The archived trace reports exe\n127: SHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`; remeasure it.\n128: - Explicit runtime data root, manifest of tech definitions/graph, tuning/constants/species inputs,\n129: localized string-table files and locale/encoding/load order. Existing parser data must come\n130: from user assets, not copies of game prose embedded in source. Missing table/key is not empty text\n131: for acceptance. Asset paths and hashes are not yet supplied for this pilot.\n132: - Full configs and actually installed interceptors (template hooks, init, FPU sampling, probes,\n133: drawsites), FPU CW per call, input route/process-reset record, output/log/trace file hashes.\n134: \n135: Original dependency ledger (each needs a lead decision and explicit qualification):\n136: 1. **Existing:** research calls original `TechTree::Cost` for effective cost and cascade cost\n137: lookup (`shim/hooks/research.cpp:568-573,916-919`). Formula and applicable bonus-tech discovery\n138: are not displaced by this pilot merely because a host formula exists.\n139: 2. **Existing separate B2 hook:** original has-researched lookup and node-bore updater\n140: (`tech_effects.cpp:325-328,358-365`). Node-bore updater allocates/frees state; it is not\n141: read-only despite the source comment's analogy. Reuse requires disclosure and effect accounting.\n142: 3. **Proposed, undecided:** original string lookup / allocator / event posting helpers versus a\n143: runtime-asset text adapter and compatible live allocation. No selected policy or guessed address.\n144: 4. **Outside replaced root:** original turn driver, budget allocator and remaining simulation,\n145: asset loading and save serializer still run in the shim experiment. Whole standalone turn\n146: equality is a different acceptance axis and cannot be inferred from this partial replacement.\n147: \n148: ## 5. Executable acceptance to provide before ready\n149: \n150: The contract must eventually name real, versioned commands and dependencies for this sequence;\n151: the following are precise requirements, not a presently implemented runner:\n152: \n153: 1. Fresh full gate on hashed source/inputs, expected test identities, positive corpus execution,\n154: asset-dependent tests and shim build. A host-only pass is insufficient. Bind full gate manifest\n155: and resulting binary to every experiment and reject source/input changes.\n156: 2. Two fresh-process C1/C2 controls with hooks off, same proxy, input, assets and exact W1 route;\n157: both output pairs equal byte-for-byte. Archive independent process logs; one saved oracle\n158: copy is not independent proof that two processes agreed.\n159: 3. Compare-neutral N with the candidate binary and complete instrumentation manifest; both\n160: output saves byte-equal controls; positive W1 counters and decoded state. Zero compared calls,\n161: partial required-region coverage or undeclared required writes cannot pass.\n162: 4. Replace R, same baseline and binary, bypass original ProcessResearch and required displaced\n163: callback implementation (count explicit original helper calls separately). Require exactly\n164: one W1 completion/three unlocks, real element/event writes, zero failures/unreadable inputs,\n165: and full declared state validation including nonserialized order counter and RNG state.\n166: 5. Require **post-turn** autosave byte equality, inflated equality and exact-bit unmasked state\n167: equality independently, with reader reconstruction coverage. Pre-turn EndTurn equality alone\n168: cannot satisfy acceptance. No masks for event text, callback fields or derived discrepancies.\n169: 6. Negative controls must fail: archived R0 (27 differences) and R1 (16); zero-completion W0\n170: cannot satisfy W1 threshold; omit callback/event/ObservedTech write or use wrong input hash;\n171: remove a trace/log/output; mark unknown RNG as zero. Checker rejects all.\n172: 7. Independently assigned verifier re-runs the checks and ties verdict to contract, source,\n173: binary, asset and evidence digests. Implementation worker cannot self-certify acceptance.\n174: Integration requires revalidation of integrated source; changed inputs invalidate evidence.\n175: \n176: W2 and branch-specific tests must be added before expanding the claim to RNG-consuming,\n177: Zuul/early-completion, nonzero-decay, zero-cost recursion, prerequisite/no-auto-available,\n178: re-observed/deduplicated, temperance, plague or rebellion cases. Their absence is visible coverage\n179: debt, not satisfied execution. Local simulation tests alone do not establish live allocator safety.\n180: \n181: ## 6. Current blockers / stop conditions\n182: \n183: - No executable pilot-specific acceptance runner or full input/asset manifest, and no certified W2.\n184: - Live research callback integration, complete ObservedTech/event construction, broader callback\n185: outcomes and unsupported-path preflight remain unimplemented/unverified.\n186: - Original Cost dependence and allocator/text/PostEvent policy require recorded Astra decisions.\n187: - Archived C1/C2 equality is documented but independent raw control-run bundles are not established\n188: by the single oracle pair inspected here. Fresh controls are mandatory.\n189: - Instrumentation and runtime FPU narrative need correction in acceptance inputs; archives are\n190: historical observations, not the current candidate's attestation.\n191: - Stop on control disagreement, silent fallback, missing data, branch outside approved class,\n192: unexpected writes/draws, stale evidence, source drift, or scope/architecture surprises; persist\n193: checkpoint and escalate to Astra before changing the contract.\n194: \n195: This proposal authorizes planning only. Keep lifecycle **proposed** until required dependencies,\n196: input manifests, bounded implementation scope and executable acceptance exist.\n\n(End of file - total 196 lines)\n","metadata":{"preview":"# Proposed pilot: completion-bearing research replacement\n\nStatus: **proposed**. This is a contract design, not replacement acceptance. Owner/authority:\nopenai/gpt-6-astra; subsequent implementation and independent verification use the campaign roles.\nThe target is a bounded replacement of `Game::TechTree::ProcessResearch`, its `SetResearched`\ncascade and required completion callback writes on explicitly certified workloads. Broad research\ndisplacement remains unproved. No new live address, remote deployment or dependency policy is\nauthorized by this document.\n\n## 1. Evidence inspected independently (2026-09-09)\n\nSources: `findings/subsystems/research-replace.md`; archived CR compare JSON, raw compressed\ntraces, shim logs and saves; current engine research, tech-effect and event interfaces. Archived\nengine build is `cr-618ccb1-20260909T131556Z`, not the rollout's current source snapshot.\n\nRecomputed SHA-256:\n\n| RE-relative file | bytes | SHA-256 |\n|---|---:|---|\n| `verify/results/saves/turn3-state.sav` | 67219 | `978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921` |","truncated":false,"loaded":[],"display":{"type":"file","path":"/tmp/opencode/sots-final-research-re/campaign/pilots/research-replacement.md","text":"# Proposed pilot: completion-bearing research replacement\n\nStatus: **proposed**. This is a contract design, not replacement acceptance. Owner/authority:\nopenai/gpt-6-astra; subsequent implementation and independent verification use the campaign roles.\nThe target is a bounded replacement of `Game::TechTree::ProcessResearch`, its `SetResearched`\ncascade and required completion callback writes on explicitly certified workloads. Broad research\ndisplacement remains unproved. No new live address, remote deployment or dependency policy is\nauthorized by this document.\n\n## 1. Evidence inspected independently (2026-09-09)\n\nSources: `findings/subsystems/research-replace.md`; archived CR compare JSON, raw compressed\ntraces, shim logs and saves; current engine research, tech-effect and event interfaces. Archived\nengine build is `cr-618ccb1-20260909T131556Z`, not the rollout's current source snapshot.\n\nRecomputed SHA-256:\n\n| RE-relative file | bytes | SHA-256 |\n|---|---:|---|\n| `verify/results/saves/turn3-state.sav` | 67219 | `978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921` |\n| `verify/results/saves/cr/cr-oracle-endturn.sav` | 67212 | `e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f` |\n| `verify/results/saves/cr/cr-oracle-autosave.sav` | 67811 | `79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420` |\n| `verify/results/saves/cr/cr-replace0-autosave.sav` | 67511 | `6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5` |\n| `verify/results/saves/cr/cr-replace1-autosave.sav` | 67537 | `8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235` |\n\nLocal reproduction (diagnostic tool exit alone is not an equality verdict):\n\n```sh\npython3 verify/state-checksum/state_checksum.py verify/results/saves/cr/cr-oracle-autosave.sav verify/results/saves/cr/cr-replace1-autosave.sav --limit 40\n```\n\nThis reports **16** exact-bit, unmasked leaf differences. Oracle -> R1: OutMod 1.25 -> 1.1;\nConMod[0..2] 0.9 -> 1; ResTNm empty -> IND_Waldo; EvNxID 7 -> 5; events 5/6 absent and\nturn-bucket count 3 -> 1; observed-tech element 11 absent and count 11 -> 10; BnkPr/BnkEl,\nRepCur/RepMax and Summary.Checksum differ. These are five primary scalar fields, collection\nwrites/counts and five derived leaves. They are not permission to patch five downstream values.\n\n`verify/results/compare/cr-compare.json:289-357` reports partial coverage: three comparisons,\nsix undeclared spans in one call and eight unmodelled notes. In\n`verify/traces/cr-R1.jsonl.gz`, call 1 is replace, allocation tech 144 / 2898, input turn 4,\norder counter 22, observed count 10, roll_pending false, RNG left 413 and CW 4735 (`0x127f`).\nIts RNG digest/index/left are unchanged. Logs `verify/results/shim/cr/cr-R1.log:116-118`\ncount one completion and three unlocks, then two zero-point calls. `otch_appends=1` counts a\ndecision; it does **not** mean an element was constructed live.\n\n### Corrections to inherited narrative\n\n1. R1 log lines 75-94 show seven drawsite detours and twelve probes in addition to the six\n sites enumerated in CR findings. Instrumentation is broader than the template-hook config.\n Every fresh run needs a complete installed-site manifest, not an “exhaustive config” assertion.\n2. R1 runtime CW is `0x127f`, including the research trace argument; initialization prints\n `0x027f`. Preserve the full measured word and precision/rounding separately.\n3. Runtime string lookup is already an engine interface (`research_events.h:95-105`,\n `app/event_phase.cpp:10-14`). The absence of bundled game prose does not establish that\n original `PostEvent` is mandatory. Runtime asset loading is a concrete route to investigate.\n4. `shim/hooks/tech_effects.cpp:354-365` already writes player state/design masks and delegates\n node-bore updates in replace mode. The research hook does not integrate that complete callback;\n calling the helper “host-tested” is not evidence its full live boundary is implemented.\n\n## 2. Workloads and access paths\n\n### W1 — primary positive workload, exact LOAD route\n\nOn a future explicitly leased lab with operator-supplied executable/data paths: restore the\nhashed turn3 input as the only selected input save; start a fresh process; use Load Game, select\nthe input, enter its lobby/map at Turn 3, then one End Turn to Turn 4. Verify UI/state transitions\nrather than sleep-and-assume. Preserve both output saves before any reset. Bind save selection,\nroute, process identity, executable hash, assets, shim hash, config and instrumentation to evidence.\n\nHistorical predictions to re-certify before measuring candidate results:\n- Exactly three research calls, owners 32/496/512 in order, allocations 144:2898, 90:0, 9:0.\n- One IND_Waldo completion: progress 5768 -> 7500, state 3 -> 4, turn_researched -1 -> 4,\n order -1 -> 22, counter 22 -> 23, refund 1166. Flag unchanged.\n- Nodes 132/136/142 unlock, costs 10000/16000/8000, available turn 4. Save tree slots are\n 94/98/104; tech 144 is slot 106. Never equate tech id with serialized slot.\n- One full ObservedTech record, two full events (completion followed by unlocked-techs),\n event next id 5 -> 7; primary effect fields reach oracle values; target clears.\n- Zero RNG words in this workload. This is a negative RNG control, not evidence for draws.\n\n### W0 — regression control, insufficient for completion acceptance\n\n`verify/results/saves/turn2-state.sav`, one End Turn via LOAD, reaches the turn3 input above.\nThis exercises the research pass/overbudget event and a RNG word, but zero completions. Re-certify\nits two-process oracle independently and pin its input hash before use. Do not substitute W0\nfor W1, or use zero-allocation calls as the positive execution threshold.\n\n### W2 — path to broader completion evidence (not yet certified)\n\nSelect a different, archived completion-bearing input from the unlock continuations, or generate\none under an approved lab contract; record the input hash and exact LOAD/continuation route before\nprediction. Require a different tech/effect family, a positive RNG draw and a second completion\nthat observes the advanced order counter. The existing U/V evidence motivates selection but is\nnot a ready executable workload contract. Separate controls are required for that exact route.\nUntil W2 exists, any accepted pilot claim is restricted to W1 plus its declared regression checks.\n\n## 3. Full write boundary and responsibilities\n\n| Boundary | Required state / behavior | Existing interface and current gap |\n|---|---|---|\n| Research pass | all node progress/state/flag writes; signed capped spend and refund accumulator; decay of other Available nodes; RNG state, left and next index | `sim::ProcessResearchTurn`, `ResearchCompletionHook`; current CR pass writes live |\n| Unlock cascade | node costRP, availability/researched turn, order; tree order counter; child/prerequisite availability; recursive zero-cost completions and ordering | `sim::TechGraph` / `SetResearched`; replace cascade opt-in exists, transcription failures can currently skip it |\n| Completion callback | target pointer/ResTNm; pending-roll flags; every applicable player economy float, masks, boolean/species flags, design-option masks; node-bore storage/lifetime | `ApplyTechCompletion`, `RunCompletionTail`, `tfx::ReadPlayerState`/`WritePlayerState`; integrate with research on pre-call inputs, avoid already-researched guard |\n| Observed technology | dedup/update semantics, entire 0x2c record (name, first/last turns, detected, with), vector content/count/capacity and allocator ownership | research hook currently alters scratch span only; full live construction and update semantics need evidence |\n| Events | complete turn buckets and ordered records: id, summary, message, location, position, image, action, chainId; next id; dedup and pruning; all owned allocations | `events::EventStorage`, `PostResearchPassEvents`; research hook is count-only/compare-only; runtime text and live ABI adapter missing |\n| Callback outcomes beyond player | owned-system AI flags/caps/addiction/plague; ships' plague state; recursive Zuul tech grants; pending research-event RNG and plague/rebellion consequences including allocations/cancel research | `TechApplyOutcome` reports work, does not execute it; broader closure remains incomplete |\n| Downstream observation | budget/bankruptcy/repair/checksum consequences of primary effects | let ordinary turn processing derive them; full oracle must expose them, never harvest original post-state or hardcode expected leaves |\n\nThe W1 observed write set is a subset of this boundary. The complete callback has conditional\nsystem/ship/object writes absent on W1. A narrow pilot must preflight its supported class and\nfail closed before mutating on unsupported branches. Suppressed writes, unavailable graph/text,\nunknown pointers, unreadable names, failed allocation, or unmodelled fired rolls are blockers,\nnot successful no-ops. General displacement requires separate evidence for all reachable effects.\n\nEvents require exact formatting/dedup order, `FLT_MAX` no-position values, action conversion,\nthe original prune-window behavior and preexisting event contents. `KeylessEventText` substitutes\ntokens for prose and must never be serialized as a passing oracle. Completion message length\nabove 255 has an explicitly documented divergence/undefined-original boundary; exclude or resolve\nit explicitly. Seed comparisons from pre-call state, not the original callback's output.\n\n## 4. Inputs and original dependencies\n\nRequired immutable input manifest before ready:\n- Exact engine and RE baseline commits plus actual source-content hashes; paired worktrees;\n compiler/toolchain/build flags, host and shim binaries, generated-address provenance.\n- The hashed W1 input and oracle archive above, plus selected W0/W2 inputs as applicable.\n- Operator-owned game executable and proxy originals with hashes. The archived trace reports exe\n SHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`; remeasure it.\n- Explicit runtime data root, manifest of tech definitions/graph, tuning/constants/species inputs,\n localized string-table files and locale/encoding/load order. Existing parser data must come\n from user assets, not copies of game prose embedded in source. Missing table/key is not empty text\n for acceptance. Asset paths and hashes are not yet supplied for this pilot.\n- Full configs and actually installed interceptors (template hooks, init, FPU sampling, probes,\n drawsites), FPU CW per call, input route/process-reset record, output/log/trace file hashes.\n\nOriginal dependency ledger (each needs a lead decision and explicit qualification):\n1. **Existing:** research calls original `TechTree::Cost` for effective cost and cascade cost\n lookup (`shim/hooks/research.cpp:568-573,916-919`). Formula and applicable bonus-tech discovery\n are not displaced by this pilot merely because a host formula exists.\n2. **Existing separate B2 hook:** original has-researched lookup and node-bore updater\n (`tech_effects.cpp:325-328,358-365`). Node-bore updater allocates/frees state; it is not\n read-only despite the source comment's analogy. Reuse requires disclosure and effect accounting.\n3. **Proposed, undecided:** original string lookup / allocator / event posting helpers versus a\n runtime-asset text adapter and compatible live allocation. No selected policy or guessed address.\n4. **Outside replaced root:** original turn driver, budget allocator and remaining simulation,\n asset loading and save serializer still run in the shim experiment. Whole standalone turn\n equality is a different acceptance axis and cannot be inferred from this partial replacement.\n\n## 5. Executable acceptance to provide before ready\n\nThe contract must eventually name real, versioned commands and dependencies for this sequence;\nthe following are precise requirements, not a presently implemented runner:\n\n1. Fresh full gate on hashed source/inputs, expected test identities, positive corpus execution,\n asset-dependent tests and shim build. A host-only pass is insufficient. Bind full gate manifest\n and resulting binary to every experiment and reject source/input changes.\n2. Two fresh-process C1/C2 controls with hooks off, same proxy, input, assets and exact W1 route;\n both output pairs equal byte-for-byte. Archive independent process logs; one saved oracle\n copy is not independent proof that two processes agreed.\n3. Compare-neutral N with the candidate binary and complete instrumentation manifest; both\n output saves byte-equal controls; positive W1 counters and decoded state. Zero compared calls,\n partial required-region coverage or undeclared required writes cannot pass.\n4. Replace R, same baseline and binary, bypass original ProcessResearch and required displaced\n callback implementation (count explicit original helper calls separately). Require exactly\n one W1 completion/three unlocks, real element/event writes, zero failures/unreadable inputs,\n and full declared state validation including nonserialized order counter and RNG state.\n5. Require **post-turn** autosave byte equality, inflated equality and exact-bit unmasked state\n equality independently, with reader reconstruction coverage. Pre-turn EndTurn equality alone\n cannot satisfy acceptance. No masks for event text, callback fields or derived discrepancies.\n6. Negative controls must fail: archived R0 (27 differences) and R1 (16); zero-completion W0\n cannot satisfy W1 threshold; omit callback/event/ObservedTech write or use wrong input hash;\n remove a trace/log/output; mark unknown RNG as zero. Checker rejects all.\n7. Independently assigned verifier re-runs the checks and ties verdict to contract, source,\n binary, asset and evidence digests. Implementation worker cannot self-certify acceptance.\n Integration requires revalidation of integrated source; changed inputs invalidate evidence.\n\nW2 and branch-specific tests must be added before expanding the claim to RNG-consuming,\nZuul/early-completion, nonzero-decay, zero-cost recursion, prerequisite/no-auto-available,\nre-observed/deduplicated, temperance, plague or rebellion cases. Their absence is visible coverage\ndebt, not satisfied execution. Local simulation tests alone do not establish live allocator safety.\n\n## 6. Current blockers / stop conditions\n\n- No executable pilot-specific acceptance runner or full input/asset manifest, and no certified W2.\n- Live research callback integration, complete ObservedTech/event construction, broader callback\n outcomes and unsupported-path preflight remain unimplemented/unverified.\n- Original Cost dependence and allocator/text/PostEvent policy require recorded Astra decisions.\n- Archived C1/C2 equality is documented but independent raw control-run bundles are not established\n by the single oracle pair inspected here. Fresh controls are mandatory.\n- Instrumentation and runtime FPU narrative need correction in acceptance inputs; archives are\n historical observations, not the current candidate's attestation.\n- Stop on control disagreement, silent fallback, missing data, branch outside approved class,\n unexpected writes/draws, stale evidence, source drift, or scope/architecture surprises; persist\n checkpoint and escalate to Astra before changing the contract.\n\nThis proposal authorizes planning only. Keep lifecycle **proposed** until required dependencies,\ninput manifests, bounded implementation scope and executable acceptance exist.","lineStart":1,"lineEnd":196,"totalLines":196,"truncated":false}},"title":"../../../tmp/opencode/sots-final-research-re/campaign/pilots/research-replacement.md","time":{"start":1789016917973,"end":1789016917996}},"metadata":{"openai":{"itemId":"fc_0a9b1191c74318a5016aa23b559a0087d1990b69e54c451506"}},"id":"prt_089b7c7d1001osCUY68bBPeZZ3","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b77c52001PoTmstaHMevnX1"}} +{"type":"step_finish","timestamp":1789016918055,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"id":"prt_089b7c823001Oh6n9y1kirR21f","reason":"tool-calls","snapshot":"cbd288036e1334dbf49a4da86968f26160c6e1f6","messageID":"msg_089b77c52001PoTmstaHMevnX1","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","type":"step-finish","tokens":{"total":15583,"input":9130,"output":356,"reasoning":81,"cache":{"write":0,"read":6016}},"cost":0}} +{"type":"step_start","timestamp":1789016921085,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"id":"prt_089b7d3f8001NV4h3H0o1Iwjnl","messageID":"msg_089b7c855001yaVntvyaa8qRw5","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","snapshot":"ed1cd3a1832320bb1dd31ae78fd63ec269383383","type":"step-start"}} +{"type":"tool_use","timestamp":1789016941880,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_kgL3xWCZ2RVq24qsQEDim5XP","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-410e48d5ae6cc4da0a6ae649.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-410e48d5ae6cc4da0a6ae649.json\nfile\n\n1: {\n2: \"actor\": \"controls-architect\",\n3: \"contract\": \"controls-bootstrap\",\n4: \"decision\": \"d-42c6d0b4ee5114e6f2e07c99\",\n5: \"id\": \"s-410e48d5ae6cc4da0a6ae649\",\n6: \"model\": \"openai/gpt-6-astra\",\n7: \"probe\": \"Introduce an immutable typed acceptance package binding candidate/integrated source manifests, built binary, inputs and per-criterion results; change source bytes at unchanged HEAD and require integration/acceptance rejection.\",\n8: \"role\": \"architecture-review\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Independent review R4: lifecycle source binding checks baseline path/commit and artifact hashes, but not the actual candidate/integrated source manifest. Implementation bytes can change at the same HEAD without invalidating the current evidence/verdict. This requires a cross-cutting evidence package/interface decision with publishing and gate owners.\",\n12: \"timestamp\": \"2026-09-09T21:34:52.829937+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"controls-architect\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-42c6d0b4ee5114e6f2e07c99\",\n \"id\": \"s-410e48d5ae6cc4da0a6ae649\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Introduce an immutable typed acceptance package binding candidate/integrated source manifests, built binary, inputs and per-criterion results; change source bytes at unchanged HEAD and require integration/acceptance rejection.\",\n \"role\": \"architecture-review\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent review R4: lifecycle source binding checks baseline path/commit and artifact hashes, but not the actual candidate/integrated source manifest. Implementation bytes can change at the same HEAD without invalidating the current evidence/verdict. This requires a cross-cutting evidence package/interface decision with publishing and gate owners.\",\n \"timestamp\": \"2026-09-09T21:34:52.829937+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-410e48d5ae6cc4da0a6ae649.json","text":"{\n \"actor\": \"controls-architect\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-42c6d0b4ee5114e6f2e07c99\",\n \"id\": \"s-410e48d5ae6cc4da0a6ae649\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Introduce an immutable typed acceptance package binding candidate/integrated source manifests, built binary, inputs and per-criterion results; change source bytes at unchanged HEAD and require integration/acceptance rejection.\",\n \"role\": \"architecture-review\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent review R4: lifecycle source binding checks baseline path/commit and artifact hashes, but not the actual candidate/integrated source manifest. Implementation bytes can change at the same HEAD without invalidating the current evidence/verdict. This requires a cross-cutting evidence package/interface decision with publishing and gate owners.\",\n \"timestamp\": \"2026-09-09T21:34:52.829937+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-410e48d5ae6cc4da0a6ae649.json","time":{"start":1789016941866,"end":1789016941878}},"metadata":{"openai":{"itemId":"fc_015e2a97944dcd9b016aa23b6d928c87d18ac74b48d012f5b0"}},"id":"prt_089b8250a001myPvO9TGlTnjN2","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7c855001yaVntvyaa8qRw5"}} +{"type":"tool_use","timestamp":1789016941970,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_BYQm8wyRfY6Plb9WGQ3WSPdk","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-4a7d66ebd7d8a8f3ec59f11d.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-4a7d66ebd7d8a8f3ec59f11d.json\nfile\n\n1: {\n2: \"actor\": \"controls-independent-verifier\",\n3: \"contract\": \"controls-bootstrap\",\n4: \"decision\": \"d-2570bf9c76ae66711bdac461\",\n5: \"id\": \"s-4a7d66ebd7d8a8f3ec59f11d\",\n6: \"model\": \"openai/gpt-5.6-terra\",\n7: \"probe\": \"Parse every nonblank JSONL line of campaign/runtime/runs/run-cb15199f9272fe496bd10a8a.jsonl; compare count, error events, stop events, sessions, source_before/source_after and run record fields. Determine whether the false 24-event assertion invalidates only narrative verifier artifacts or the integrated controls evidence/verdict package.\",\n8: \"role\": \"verifier\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Contradictory prior verification claim: verdict controls-bootstrap.json and checkpoint b467c2d772260f1f03637133 report 24 parsed events for run-cb15199f9272fe496bd10a8a, but independent JSONL parsing finds 67 valid events. The run record itself reports event_count 67. The zero-error, one-session, one-stop, return-0 and unchanged-source facts agree; the count claim is false. Existing source-bound evidence does not document this raw-run count, so its acceptance impact needs Astra resolution before a new verdict.\",\n12: \"timestamp\": \"2026-09-09T22:17:38.435822+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"controls-independent-verifier\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-2570bf9c76ae66711bdac461\",\n \"id\": \"s-4a7d66ebd7d8a8f3ec59f11d\",\n \"model\": \"openai/gpt-5.6-terra\",\n \"probe\": \"Parse every nonblank JSONL line of campaign/runtime/runs/run-cb15199f9272fe496bd10a8a.jsonl; compare count, error events, stop events, sessions, source_before/source_after and run record fields. Determine whether the false 24-event assertion invalidates only narrative verifier artifacts or the integrated controls evidence/verdict package.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Contradictory prior verification claim: verdict controls-bootstrap.json and checkpoint b467c2d772260f1f03637133 report 24 parsed events for run-cb15199f9272fe496bd10a8a, but independent JSONL parsing finds 67 valid events. The run record itself reports event_count 67. The zero-error, one-session, one-stop, return-0 and unchanged-source facts agree; the count claim is false. Existing source-bound evidence does not document this raw-run count, so its acceptance impact needs Astra resolution before a new verdict.\",\n \"timestamp\": \"2026-09-09T22:17:38.435822+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-4a7d66ebd7d8a8f3ec59f11d.json","text":"{\n \"actor\": \"controls-independent-verifier\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-2570bf9c76ae66711bdac461\",\n \"id\": \"s-4a7d66ebd7d8a8f3ec59f11d\",\n \"model\": \"openai/gpt-5.6-terra\",\n \"probe\": \"Parse every nonblank JSONL line of campaign/runtime/runs/run-cb15199f9272fe496bd10a8a.jsonl; compare count, error events, stop events, sessions, source_before/source_after and run record fields. Determine whether the false 24-event assertion invalidates only narrative verifier artifacts or the integrated controls evidence/verdict package.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Contradictory prior verification claim: verdict controls-bootstrap.json and checkpoint b467c2d772260f1f03637133 report 24 parsed events for run-cb15199f9272fe496bd10a8a, but independent JSONL parsing finds 67 valid events. The run record itself reports event_count 67. The zero-error, one-session, one-stop, return-0 and unchanged-source facts agree; the count claim is false. Existing source-bound evidence does not document this raw-run count, so its acceptance impact needs Astra resolution before a new verdict.\",\n \"timestamp\": \"2026-09-09T22:17:38.435822+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-4a7d66ebd7d8a8f3ec59f11d.json","time":{"start":1789016941956,"end":1789016941966}},"metadata":{"openai":{"itemId":"fc_015e2a97944dcd9b016aa23b6d929c87d18fc8a9d7456b30c6"}},"id":"prt_089b8254b001HjJZNpkcgoaoGP","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7c855001yaVntvyaa8qRw5"}} +{"type":"tool_use","timestamp":1789016941988,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_UAnG0JrBcimeMXdAWlCUz1z4","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-4f4fb5e8ee42ccff7e68efb5.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-4f4fb5e8ee42ccff7e68efb5.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-correction-verifier\",\n3: \"contract\": \"research-completion-abi\",\n4: \"decision\": \"d-fd5aff1eaf78a8c15d96723c\",\n5: \"id\": \"s-4f4fb5e8ee42ccff7e68efb5\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"probe\": \"Astra must inspect verifier manifest verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/manifest.json and the exact/wide nested-copy streams, confirm the 0x00779a1f terminal truncation under pinned GNU objdump 2.38 and binary hash, and prescribe a stop boundary after a complete instruction (including checking that any replacement boundary itself is not truncated). Then require fresh analyst capture/source-bound package and fresh independent reproduction before independent-cross-check can pass.\",\n8: \"role\": \"verifier\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Held-out +4 stop-boundary ablation falsified the predeclared no-truncation assumption for the corrected four-window package. All 8 objdump commands returned zero with nonempty stdout/empty stderr; all four exact captures byte-match the analyst archive; binary/tool/source identities pass; 44/45 checks pass. However nested-copy exact stop 0x00779a20 emits a truncated terminal row at 0x00779a1f as bytes 74, while widened stop 0x00779a24 emits the complete two-byte instruction 74 10 (je 0x00779a31), followed by a later call row also truncated at the widened boundary. Therefore the exact nested-copy capture is not a complete instruction stream and nested-copy-wide-row-prefix fails. Matching decoded ownership rows are measurements, not success. Pause affected independent acceptance; no live/lab/source mutation occurred.\",\n12: \"timestamp\": \"2026-09-10T04:45:32.413275+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-fd5aff1eaf78a8c15d96723c\",\n \"id\": \"s-4f4fb5e8ee42ccff7e68efb5\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra must inspect verifier manifest verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/manifest.json and the exact/wide nested-copy streams, confirm the 0x00779a1f terminal truncation under pinned GNU objdump 2.38 and binary hash, and prescribe a stop boundary after a complete instruction (including checking that any replacement boundary itself is not truncated). Then require fresh analyst capture/source-bound package and fresh independent reproduction before independent-cross-check can pass.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Held-out +4 stop-boundary ablation falsified the predeclared no-truncation assumption for the corrected four-window package. All 8 objdump commands returned zero with nonempty stdout/empty stderr; all four exact captures byte-match the analyst archive; binary/tool/source identities pass; 44/45 checks pass. However nested-copy exact stop 0x00779a20 emits a truncated terminal row at 0x00779a1f as bytes 74, while widened stop 0x00779a24 emits the complete two-byte instruction 74 10 (je 0x00779a31), followed by a later call row also truncated at the widened boundary. Therefore the exact nested-copy capture is not a complete instruction stream and nested-copy-wide-row-prefix fails. Matching decoded ownership rows are measurements, not success. Pause affected independent acceptance; no live/lab/source mutation occurred.\",\n \"timestamp\": \"2026-09-10T04:45:32.413275+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-4f4fb5e8ee42ccff7e68efb5.json","text":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-fd5aff1eaf78a8c15d96723c\",\n \"id\": \"s-4f4fb5e8ee42ccff7e68efb5\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra must inspect verifier manifest verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/manifest.json and the exact/wide nested-copy streams, confirm the 0x00779a1f terminal truncation under pinned GNU objdump 2.38 and binary hash, and prescribe a stop boundary after a complete instruction (including checking that any replacement boundary itself is not truncated). Then require fresh analyst capture/source-bound package and fresh independent reproduction before independent-cross-check can pass.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Held-out +4 stop-boundary ablation falsified the predeclared no-truncation assumption for the corrected four-window package. All 8 objdump commands returned zero with nonempty stdout/empty stderr; all four exact captures byte-match the analyst archive; binary/tool/source identities pass; 44/45 checks pass. However nested-copy exact stop 0x00779a20 emits a truncated terminal row at 0x00779a1f as bytes 74, while widened stop 0x00779a24 emits the complete two-byte instruction 74 10 (je 0x00779a31), followed by a later call row also truncated at the widened boundary. Therefore the exact nested-copy capture is not a complete instruction stream and nested-copy-wide-row-prefix fails. Matching decoded ownership rows are measurements, not success. Pause affected independent acceptance; no live/lab/source mutation occurred.\",\n \"timestamp\": \"2026-09-10T04:45:32.413275+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-4f4fb5e8ee42ccff7e68efb5.json","time":{"start":1789016941972,"end":1789016941986}},"metadata":{"openai":{"itemId":"fc_015e2a97944dcd9b016aa23b6d92a887d1aeb5e14ddbeba042"}},"id":"prt_089b82587001B5wKBD3kxzfK8s","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7c855001yaVntvyaa8qRw5"}} +{"type":"tool_use","timestamp":1789016941996,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_qfSMrXLcJW4MiZfEtVqBkOiV","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-4f71bf4a5df4e5fc992bb6b2.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-4f71bf4a5df4e5fc992bb6b2.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-independent\",\n3: \"contract\": \"research-completion-abi\",\n4: \"decision\": \"d-d4c494ba02ada278030ef473\",\n5: \"id\": \"s-4f71bf4a5df4e5fc992bb6b2\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"probe\": \"Astra should inspect session manifest verify/results/research-completion-abi-independent/run-eba7860308317f839eb35392/manifest.json and raw observed-alloc/player-append/player-copy streams, compare the three archive lines, then require fresh paired narrow and minimally widened raw stdout/stderr captures with pinned input/tool/source identities for every ownership window whose terminal instruction is truncated. Decide whether to supersede only provenance or additional completeness claims; do not infer archive production history. After repair, a fresh independent verifier must reproduce the full windows and resume ownership/NaN/static-state checks.\",\n8: \"role\": \"verifier\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Session run-eba7860308317f839eb35392 fresh independent reproduction finds the repaired dedup window is correct, but exposes the same unfiltered-stop-boundary provenance contradiction in the ownership archive. objdump-2026-09-09-ownership.txt declares exact stops 0x0057e5e4, 0x0086c62e and 0x007694c0 yet prints complete c2 04 00 terminal instructions beginning at 0x0057e5e3, 0x0086c62d and 0x007694bf. Fresh GNU objdump 2.38 against the hash-matched executable prints only c2 for each command because each stop is one byte after the instruction start. Thus those archived sections cannot be literal unfiltered output of their declared commands under the bound instrument. The affected ABI/provenance review is paused; matching decoded semantics are not converted into success.\",\n12: \"timestamp\": \"2026-09-10T00:44:38.527547+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-independent\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-d4c494ba02ada278030ef473\",\n \"id\": \"s-4f71bf4a5df4e5fc992bb6b2\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra should inspect session manifest verify/results/research-completion-abi-independent/run-eba7860308317f839eb35392/manifest.json and raw observed-alloc/player-append/player-copy streams, compare the three archive lines, then require fresh paired narrow and minimally widened raw stdout/stderr captures with pinned input/tool/source identities for every ownership window whose terminal instruction is truncated. Decide whether to supersede only provenance or additional completeness claims; do not infer archive production history. After repair, a fresh independent verifier must reproduce the full windows and resume ownership/NaN/static-state checks.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Session run-eba7860308317f839eb35392 fresh independent reproduction finds the repaired dedup window is correct, but exposes the same unfiltered-stop-boundary provenance contradiction in the ownership archive. objdump-2026-09-09-ownership.txt declares exact stops 0x0057e5e4, 0x0086c62e and 0x007694c0 yet prints complete c2 04 00 terminal instructions beginning at 0x0057e5e3, 0x0086c62d and 0x007694bf. Fresh GNU objdump 2.38 against the hash-matched executable prints only c2 for each command because each stop is one byte after the instruction start. Thus those archived sections cannot be literal unfiltered output of their declared commands under the bound instrument. The affected ABI/provenance review is paused; matching decoded semantics are not converted into success.\",\n \"timestamp\": \"2026-09-10T00:44:38.527547+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-4f71bf4a5df4e5fc992bb6b2.json","text":"{\n \"actor\": \"research-abi-independent\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-d4c494ba02ada278030ef473\",\n \"id\": \"s-4f71bf4a5df4e5fc992bb6b2\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra should inspect session manifest verify/results/research-completion-abi-independent/run-eba7860308317f839eb35392/manifest.json and raw observed-alloc/player-append/player-copy streams, compare the three archive lines, then require fresh paired narrow and minimally widened raw stdout/stderr captures with pinned input/tool/source identities for every ownership window whose terminal instruction is truncated. Decide whether to supersede only provenance or additional completeness claims; do not infer archive production history. After repair, a fresh independent verifier must reproduce the full windows and resume ownership/NaN/static-state checks.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Session run-eba7860308317f839eb35392 fresh independent reproduction finds the repaired dedup window is correct, but exposes the same unfiltered-stop-boundary provenance contradiction in the ownership archive. objdump-2026-09-09-ownership.txt declares exact stops 0x0057e5e4, 0x0086c62e and 0x007694c0 yet prints complete c2 04 00 terminal instructions beginning at 0x0057e5e3, 0x0086c62d and 0x007694bf. Fresh GNU objdump 2.38 against the hash-matched executable prints only c2 for each command because each stop is one byte after the instruction start. Thus those archived sections cannot be literal unfiltered output of their declared commands under the bound instrument. The affected ABI/provenance review is paused; matching decoded semantics are not converted into success.\",\n \"timestamp\": \"2026-09-10T00:44:38.527547+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-4f71bf4a5df4e5fc992bb6b2.json","time":{"start":1789016941990,"end":1789016941994}},"metadata":{"openai":{"itemId":"fc_015e2a97944dcd9b016aa23b6d92b087d19e28023315ce8122"}},"id":"prt_089b82596001ap1zIG48We5297","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7c855001yaVntvyaa8qRw5"}} +{"type":"tool_use","timestamp":1789016942102,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_KEvUm9Db9idlI1SuRwWMugp5","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json\nfile\n\n1: {\n2: \"actor\": \"live-record bridge architect\",\n3: \"contract\": \"research-live-record-bridge\",\n4: \"decision\": \"d-6f4134237e68860fb02e8684\",\n5: \"id\": \"s-5a78d3a0a10c1f8545df8eb1\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"probe\": \"Astra must inspect the complete 0x00885380..0x0088544a entry window and 0x00884cb0..0x00884d8f append window from verify/results/research-live-record-bridge/run-472955e277202c411388c66b, enumerate every write to [EBP-0x20] before the append call, and decide whether the transient EvTurn is indeterminate and whether final post-publication semantics remain usable. Revise/invalidate the accepted dependency interpretation and prescribe the exact generated-row wording before TurnEvents planning continues.\",\n8: \"role\": \"architecture-review\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Session run-472955e277202c411388c66b fresh pinned-binary capture contradicts the accepted dependency interpretation that EventStorage get/create initializes a miss-path temporary TurnEvents EvTurn to zero before append. In 0x00885380, local TurnEvents begins at [EBP-0x24]: 0x008853fc writes vptr, and 0x00885403/06/09 zero only nested-vector pointers at +0x08/+0x0c/+0x10. No instruction writes temporary EvTurn at [EBP-0x20] before 0x00885413 calls append. Append 0x00884d62 copies source+0x04 into destination+0x04, so the newly appended element transiently receives the uninitialized stack word; 0x0088542d overwrites the stored element EvTurn with the requested turn after temporary nested-vector destruction. SURVIVES: exact get/create ABI, full last-match scan, final returned bucket pointer, final requested-turn publication, deep nested-vector copy, and temporary nested-vector cleanup. QUALIFIED: miss-path append lifetime and unwind remain static-only. OVERTURNED: research-completion-abi/recovered-static.md statement that the temporary starts with turn zero and append deep-copies zero. No live behavior, VM, Ghidra or engine code ran. Pause affected TurnEvents architecture encoding and readiness.\",\n12: \"timestamp\": \"2026-09-10T04:14:21.422536+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"live-record bridge architect\",\n \"contract\": \"research-live-record-bridge\",\n \"decision\": \"d-6f4134237e68860fb02e8684\",\n \"id\": \"s-5a78d3a0a10c1f8545df8eb1\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra must inspect the complete 0x00885380..0x0088544a entry window and 0x00884cb0..0x00884d8f append window from verify/results/research-live-record-bridge/run-472955e277202c411388c66b, enumerate every write to [EBP-0x20] before the append call, and decide whether the transient EvTurn is indeterminate and whether final post-publication semantics remain usable. Revise/invalidate the accepted dependency interpretation and prescribe the exact generated-row wording before TurnEvents planning continues.\",\n \"role\": \"architecture-review\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Session run-472955e277202c411388c66b fresh pinned-binary capture contradicts the accepted dependency interpretation that EventStorage get/create initializes a miss-path temporary TurnEvents EvTurn to zero before append. In 0x00885380, local TurnEvents begins at [EBP-0x24]: 0x008853fc writes vptr, and 0x00885403/06/09 zero only nested-vector pointers at +0x08/+0x0c/+0x10. No instruction writes temporary EvTurn at [EBP-0x20] before 0x00885413 calls append. Append 0x00884d62 copies source+0x04 into destination+0x04, so the newly appended element transiently receives the uninitialized stack word; 0x0088542d overwrites the stored element EvTurn with the requested turn after temporary nested-vector destruction. SURVIVES: exact get/create ABI, full last-match scan, final returned bucket pointer, final requested-turn publication, deep nested-vector copy, and temporary nested-vector cleanup. QUALIFIED: miss-path append lifetime and unwind remain static-only. OVERTURNED: research-completion-abi/recovered-static.md statement that the temporary starts with turn zero and append deep-copies zero. No live behavior, VM, Ghidra or engine code ran. Pause affected TurnEvents architecture encoding and readiness.\",\n \"timestamp\": \"2026-09-10T04:14:21.422536+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json","text":"{\n \"actor\": \"live-record bridge architect\",\n \"contract\": \"research-live-record-bridge\",\n \"decision\": \"d-6f4134237e68860fb02e8684\",\n \"id\": \"s-5a78d3a0a10c1f8545df8eb1\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra must inspect the complete 0x00885380..0x0088544a entry window and 0x00884cb0..0x00884d8f append window from verify/results/research-live-record-bridge/run-472955e277202c411388c66b, enumerate every write to [EBP-0x20] before the append call, and decide whether the transient EvTurn is indeterminate and whether final post-publication semantics remain usable. Revise/invalidate the accepted dependency interpretation and prescribe the exact generated-row wording before TurnEvents planning continues.\",\n \"role\": \"architecture-review\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Session run-472955e277202c411388c66b fresh pinned-binary capture contradicts the accepted dependency interpretation that EventStorage get/create initializes a miss-path temporary TurnEvents EvTurn to zero before append. In 0x00885380, local TurnEvents begins at [EBP-0x24]: 0x008853fc writes vptr, and 0x00885403/06/09 zero only nested-vector pointers at +0x08/+0x0c/+0x10. No instruction writes temporary EvTurn at [EBP-0x20] before 0x00885413 calls append. Append 0x00884d62 copies source+0x04 into destination+0x04, so the newly appended element transiently receives the uninitialized stack word; 0x0088542d overwrites the stored element EvTurn with the requested turn after temporary nested-vector destruction. SURVIVES: exact get/create ABI, full last-match scan, final returned bucket pointer, final requested-turn publication, deep nested-vector copy, and temporary nested-vector cleanup. QUALIFIED: miss-path append lifetime and unwind remain static-only. OVERTURNED: research-completion-abi/recovered-static.md statement that the temporary starts with turn zero and append deep-copies zero. No live behavior, VM, Ghidra or engine code ran. Pause affected TurnEvents architecture encoding and readiness.\",\n \"timestamp\": \"2026-09-10T04:14:21.422536+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json","time":{"start":1789016942094,"end":1789016942100}},"metadata":{"openai":{"itemId":"fc_015e2a97944dcd9b016aa23b6d92b887d18ae08a871e65170f"}},"id":"prt_089b825b600183vpF0xwqDLS1N","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7c855001yaVntvyaa8qRw5"}} +{"type":"tool_use","timestamp":1789016942218,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_KWSCOfVW079ASzKcIIWzjKrG","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-5c58b6a921997731f5b5ae1f.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-5c58b6a921997731f5b5ae1f.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-independent\",\n3: \"contract\": \"research-completion-abi\",\n4: \"decision\": \"d-d2a9b8be6399a6abaa0e05a5\",\n5: \"id\": \"s-5c58b6a921997731f5b5ae1f\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"probe\": \"Astra should first rerun both objdump -D -Mintel --start-address=0x00825d40 --stop-address=0x00825e65 dumps/sots.exe and the minimally widened --stop-address=0x00825e67 command against SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, archive raw stdout bytes and objdump executable hash/version, and decide whether the existing capture was manually spliced or generated with a different effective boundary. Repair provenance before independent ABI interpretation resumes.\",\n8: \"role\": \"verifier\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Independent reproduction falsified the handoff claim that objdump-2026-09-09-dedup-helper.txt is unfiltered output from its exact first command. With the SHA256-matched executable and GNU objdump 2.38, the declared stop-address 0x00825e65 truncates the three-byte instruction beginning at 0x00825e64: current stdout is bytes c2 while the archive records c2 08 00. The other three declared windows reproduce exactly after only line-end whitespace normalization. This is a provenance/instrument-boundary contradiction; dedup interpretation is paused rather than converting the otherwise matching instructions into success.\",\n12: \"timestamp\": \"2026-09-10T00:19:20.577736+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-independent\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-d2a9b8be6399a6abaa0e05a5\",\n \"id\": \"s-5c58b6a921997731f5b5ae1f\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra should first rerun both objdump -D -Mintel --start-address=0x00825d40 --stop-address=0x00825e65 dumps/sots.exe and the minimally widened --stop-address=0x00825e67 command against SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, archive raw stdout bytes and objdump executable hash/version, and decide whether the existing capture was manually spliced or generated with a different effective boundary. Repair provenance before independent ABI interpretation resumes.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent reproduction falsified the handoff claim that objdump-2026-09-09-dedup-helper.txt is unfiltered output from its exact first command. With the SHA256-matched executable and GNU objdump 2.38, the declared stop-address 0x00825e65 truncates the three-byte instruction beginning at 0x00825e64: current stdout is bytes c2 while the archive records c2 08 00. The other three declared windows reproduce exactly after only line-end whitespace normalization. This is a provenance/instrument-boundary contradiction; dedup interpretation is paused rather than converting the otherwise matching instructions into success.\",\n \"timestamp\": \"2026-09-10T00:19:20.577736+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-5c58b6a921997731f5b5ae1f.json","text":"{\n \"actor\": \"research-abi-independent\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-d2a9b8be6399a6abaa0e05a5\",\n \"id\": \"s-5c58b6a921997731f5b5ae1f\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra should first rerun both objdump -D -Mintel --start-address=0x00825d40 --stop-address=0x00825e65 dumps/sots.exe and the minimally widened --stop-address=0x00825e67 command against SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, archive raw stdout bytes and objdump executable hash/version, and decide whether the existing capture was manually spliced or generated with a different effective boundary. Repair provenance before independent ABI interpretation resumes.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent reproduction falsified the handoff claim that objdump-2026-09-09-dedup-helper.txt is unfiltered output from its exact first command. With the SHA256-matched executable and GNU objdump 2.38, the declared stop-address 0x00825e65 truncates the three-byte instruction beginning at 0x00825e64: current stdout is bytes c2 while the archive records c2 08 00. The other three declared windows reproduce exactly after only line-end whitespace normalization. This is a provenance/instrument-boundary contradiction; dedup interpretation is paused rather than converting the otherwise matching instructions into success.\",\n \"timestamp\": \"2026-09-10T00:19:20.577736+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-5c58b6a921997731f5b5ae1f.json","time":{"start":1789016942205,"end":1789016942216}},"metadata":{"openai":{"itemId":"fc_015e2a97944dcd9b016aa23b6d92c087d1829ed10727ce6245"}},"id":"prt_089b8261d001xPsiBpji3WxGk9","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7c855001yaVntvyaa8qRw5"}} +{"type":"tool_use","timestamp":1789016942306,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_ClpqIejruM8brXSqAbuZ3V01","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json\nfile\n\n1: {\n2: \"actor\": \"rollout-lead\",\n3: \"contract\": \"controls-bootstrap\",\n4: \"decision\": \"d-6239404c8f40351310c8abf0\",\n5: \"id\": \"s-6d1fcc617a20ca2bcbffc0cc\",\n6: \"model\": \"openai/gpt-6-astra\",\n7: \"probe\": \"Allow verifier launch in verification and integration; reject owner overlap, source drift and open surprises in both.\",\n8: \"role\": \"lead\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Independent Astra R8: verifier launch permits verification only, but final integrated evidence requires a fresh verifier execution in integration.\",\n12: \"timestamp\": \"2026-09-09T22:09:56.316247+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"rollout-lead\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-6239404c8f40351310c8abf0\",\n \"id\": \"s-6d1fcc617a20ca2bcbffc0cc\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Allow verifier launch in verification and integration; reject owner overlap, source drift and open surprises in both.\",\n \"role\": \"lead\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent Astra R8: verifier launch permits verification only, but final integrated evidence requires a fresh verifier execution in integration.\",\n \"timestamp\": \"2026-09-09T22:09:56.316247+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json","text":"{\n \"actor\": \"rollout-lead\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-6239404c8f40351310c8abf0\",\n \"id\": \"s-6d1fcc617a20ca2bcbffc0cc\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Allow verifier launch in verification and integration; reject owner overlap, source drift and open surprises in both.\",\n \"role\": \"lead\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent Astra R8: verifier launch permits verification only, but final integrated evidence requires a fresh verifier execution in integration.\",\n \"timestamp\": \"2026-09-09T22:09:56.316247+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json","time":{"start":1789016942299,"end":1789016942304}},"metadata":{"openai":{"itemId":"fc_015e2a97944dcd9b016aa23b6d92cc87d1aeb1da4902baa7c1"}},"id":"prt_089b8268b001uQqJ8ZN7bx76lz","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7c855001yaVntvyaa8qRw5"}} +{"type":"tool_use","timestamp":1789016942380,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_hXcIOKLVBH5ZWv6mmH1j1Utu","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-8996365dab2cd6dc0e17bb9f.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-8996365dab2cd6dc0e17bb9f.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-analyst\",\n3: \"contract\": \"research-completion-abi\",\n4: \"decision\": \"d-2ff30c9f5355116bea822924\",\n5: \"id\": \"s-8996365dab2cd6dc0e17bb9f\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"probe\": \"First verify 0x0046f8c0 is std::string equality (or otherwise characterize it) from independent raw instructions/callers; then use or construct two same-bucket PlayerEvents identical in EvAct/EvLoc/EvPos/EvMsg/EvImg but differing only in EvDsc. If 0x00825d40 returns null they are distinct and EvDsc is compared; if it returns the existing element the inherited omission survives and the call has another meaning.\",\n8: \"role\": \"analyst\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Fresh raw GNU objdump capture contradicts the standing event dedup semantic claim in findings/subsystems/events.md:185 that EvDsc is not compared. At 0x00825e11 candidate+0x08 and 0x00825e15 stored+0x08 are passed to 0x0046f8c0; its boolean result at 0x00825e21 branches to match return only when true. This occurs after EvAct, EvLoc, EvPos, EvMsg and EvImg comparisons, so description appears to participate in equality. The affected dedup interpretation is paused; no implementation or acceptance claim may use either version pending Astra resolution.\",\n12: \"timestamp\": \"2026-09-09T23:47:56.138628+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-analyst\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-2ff30c9f5355116bea822924\",\n \"id\": \"s-8996365dab2cd6dc0e17bb9f\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"First verify 0x0046f8c0 is std::string equality (or otherwise characterize it) from independent raw instructions/callers; then use or construct two same-bucket PlayerEvents identical in EvAct/EvLoc/EvPos/EvMsg/EvImg but differing only in EvDsc. If 0x00825d40 returns null they are distinct and EvDsc is compared; if it returns the existing element the inherited omission survives and the call has another meaning.\",\n \"role\": \"analyst\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Fresh raw GNU objdump capture contradicts the standing event dedup semantic claim in findings/subsystems/events.md:185 that EvDsc is not compared. At 0x00825e11 candidate+0x08 and 0x00825e15 stored+0x08 are passed to 0x0046f8c0; its boolean result at 0x00825e21 branches to match return only when true. This occurs after EvAct, EvLoc, EvPos, EvMsg and EvImg comparisons, so description appears to participate in equality. The affected dedup interpretation is paused; no implementation or acceptance claim may use either version pending Astra resolution.\",\n \"timestamp\": \"2026-09-09T23:47:56.138628+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-8996365dab2cd6dc0e17bb9f.json","text":"{\n \"actor\": \"research-abi-analyst\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-2ff30c9f5355116bea822924\",\n \"id\": \"s-8996365dab2cd6dc0e17bb9f\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"First verify 0x0046f8c0 is std::string equality (or otherwise characterize it) from independent raw instructions/callers; then use or construct two same-bucket PlayerEvents identical in EvAct/EvLoc/EvPos/EvMsg/EvImg but differing only in EvDsc. If 0x00825d40 returns null they are distinct and EvDsc is compared; if it returns the existing element the inherited omission survives and the call has another meaning.\",\n \"role\": \"analyst\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Fresh raw GNU objdump capture contradicts the standing event dedup semantic claim in findings/subsystems/events.md:185 that EvDsc is not compared. At 0x00825e11 candidate+0x08 and 0x00825e15 stored+0x08 are passed to 0x0046f8c0; its boolean result at 0x00825e21 branches to match return only when true. This occurs after EvAct, EvLoc, EvPos, EvMsg and EvImg comparisons, so description appears to participate in equality. The affected dedup interpretation is paused; no implementation or acceptance claim may use either version pending Astra resolution.\",\n \"timestamp\": \"2026-09-09T23:47:56.138628+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-8996365dab2cd6dc0e17bb9f.json","time":{"start":1789016942368,"end":1789016942379}},"metadata":{"openai":{"itemId":"fc_015e2a97944dcd9b016aa23b6d92d487d1b851b10951cdac21"}},"id":"prt_089b826e9001KKwulszaeSYr1N","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7c855001yaVntvyaa8qRw5"}} +{"type":"tool_use","timestamp":1789016942489,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_wMSsZQgJEyWd5AvYUWsntfVZ","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-abd1c3613c9922cc94c608d5.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-abd1c3613c9922cc94c608d5.json\nfile\n\n1: {\n2: \"actor\": \"final-controls-verifier\",\n3: \"contract\": \"controls-bootstrap\",\n4: \"decision\": \"d-d2aeed91781c4da6057f00a7\",\n5: \"id\": \"s-abd1c3613c9922cc94c608d5\",\n6: \"model\": \"openai/gpt-5.6-terra\",\n7: \"probe\": \"From canonical RE, run source-binding once with no worktree arguments and once with the assigned paired paths; confirm the differing RE digest and absence of paired tools/campaign.py plus verify/campaign/test_controls.py. Astra must decide whether independent integrated reproduction may use only dirty canonical trees or provide source-identical linked worktrees and repeat/attest verification.\",\n8: \"role\": \"verifier\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Falsified paired-worktree reproducibility assumption. The assigned /tmp/opencode/sots-launch-re is clean at the pinned RE HEAD but lacks tools/campaign.py and verify/campaign/test_controls.py; its source binding is 67b7b60509fe43c8d23382003fed069fb32549094eea0c039b75475e32a7a9eb, not the evidence binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Engine paired binding likewise differs (949dfb46... versus ccd8e020...). Canonical integrated trees do rehash exactly to the claimed binding and declared binary/input/outcome hashes match, but the supplied isolated paired source cannot reproduce the package from handoff alone. This blocks the final independent integrated verdict under the required linked-worktree/reproduction guard.\",\n12: \"timestamp\": \"2026-09-09T22:25:50.265100+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"final-controls-verifier\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-d2aeed91781c4da6057f00a7\",\n \"id\": \"s-abd1c3613c9922cc94c608d5\",\n \"model\": \"openai/gpt-5.6-terra\",\n \"probe\": \"From canonical RE, run source-binding once with no worktree arguments and once with the assigned paired paths; confirm the differing RE digest and absence of paired tools/campaign.py plus verify/campaign/test_controls.py. Astra must decide whether independent integrated reproduction may use only dirty canonical trees or provide source-identical linked worktrees and repeat/attest verification.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Falsified paired-worktree reproducibility assumption. The assigned /tmp/opencode/sots-launch-re is clean at the pinned RE HEAD but lacks tools/campaign.py and verify/campaign/test_controls.py; its source binding is 67b7b60509fe43c8d23382003fed069fb32549094eea0c039b75475e32a7a9eb, not the evidence binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Engine paired binding likewise differs (949dfb46... versus ccd8e020...). Canonical integrated trees do rehash exactly to the claimed binding and declared binary/input/outcome hashes match, but the supplied isolated paired source cannot reproduce the package from handoff alone. This blocks the final independent integrated verdict under the required linked-worktree/reproduction guard.\",\n \"timestamp\": \"2026-09-09T22:25:50.265100+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-abd1c3613c9922cc94c608d5.json","text":"{\n \"actor\": \"final-controls-verifier\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-d2aeed91781c4da6057f00a7\",\n \"id\": \"s-abd1c3613c9922cc94c608d5\",\n \"model\": \"openai/gpt-5.6-terra\",\n \"probe\": \"From canonical RE, run source-binding once with no worktree arguments and once with the assigned paired paths; confirm the differing RE digest and absence of paired tools/campaign.py plus verify/campaign/test_controls.py. Astra must decide whether independent integrated reproduction may use only dirty canonical trees or provide source-identical linked worktrees and repeat/attest verification.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Falsified paired-worktree reproducibility assumption. The assigned /tmp/opencode/sots-launch-re is clean at the pinned RE HEAD but lacks tools/campaign.py and verify/campaign/test_controls.py; its source binding is 67b7b60509fe43c8d23382003fed069fb32549094eea0c039b75475e32a7a9eb, not the evidence binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Engine paired binding likewise differs (949dfb46... versus ccd8e020...). Canonical integrated trees do rehash exactly to the claimed binding and declared binary/input/outcome hashes match, but the supplied isolated paired source cannot reproduce the package from handoff alone. This blocks the final independent integrated verdict under the required linked-worktree/reproduction guard.\",\n \"timestamp\": \"2026-09-09T22:25:50.265100+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-abd1c3613c9922cc94c608d5.json","time":{"start":1789016942480,"end":1789016942486}},"metadata":{"openai":{"itemId":"fc_015e2a97944dcd9b016aa23b6d92dc87d1bac9b1fb2a1a9c16"}},"id":"prt_089b82730001sh08OQJ2OQiK7R","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7c855001yaVntvyaa8qRw5"}} +{"type":"tool_use","timestamp":1789016942530,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_Ah4aB2y6zIoCVbJJ1OhKvEip","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-c6786945b302de2a0b629960.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-c6786945b302de2a0b629960.json\nfile\n\n1: {\n2: \"actor\": \"live-record surprise resolver\",\n3: \"contract\": \"research-completion-abi\",\n4: \"decision\": \"d-b51f3f76803e852ed250846a\",\n5: \"id\": \"s-c6786945b302de2a0b629960\",\n6: \"model\": \"openai/gpt-6-astra\",\n7: \"probe\": \"Enumerate all stack writes from 0x885380 through 0x885413 and map append source+4 and final last-0x14 store; freshly rehash binary/tool and reproduce these complete windows under an authorized read-only analyst session before corrected evidence acceptance.\",\n8: \"role\": \"resolver\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Propagated affected acceptance from bridge surprise s-5a78d3a0a10c1f8545df8eb1, resolver session run-f63d1e050a7ee3fac7b44885. recovered-static.md lines 68-69 asserts temporary EvTurn zero and copy of zero. Hash-bound raw get/create and append captures run-472955e277202c411388c66b contradict that assertion: no write to EBP-0x20 before call; source+4 copied at 0x884d62/6c; stored requested turn written only at 0x88542d after temporary nested cleanup. This is static interpretation falsification, not observed runtime nondeterminism. Both integrated evidence records and independent verdict must lose current acceptance pending corrected source-bound reproduction; raw captures and archived saves are retained as historical measurements.\",\n12: \"timestamp\": \"2026-09-10T04:18:25.950030+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"live-record surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-b51f3f76803e852ed250846a\",\n \"id\": \"s-c6786945b302de2a0b629960\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Enumerate all stack writes from 0x885380 through 0x885413 and map append source+4 and final last-0x14 store; freshly rehash binary/tool and reproduce these complete windows under an authorized read-only analyst session before corrected evidence acceptance.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Propagated affected acceptance from bridge surprise s-5a78d3a0a10c1f8545df8eb1, resolver session run-f63d1e050a7ee3fac7b44885. recovered-static.md lines 68-69 asserts temporary EvTurn zero and copy of zero. Hash-bound raw get/create and append captures run-472955e277202c411388c66b contradict that assertion: no write to EBP-0x20 before call; source+4 copied at 0x884d62/6c; stored requested turn written only at 0x88542d after temporary nested cleanup. This is static interpretation falsification, not observed runtime nondeterminism. Both integrated evidence records and independent verdict must lose current acceptance pending corrected source-bound reproduction; raw captures and archived saves are retained as historical measurements.\",\n \"timestamp\": \"2026-09-10T04:18:25.950030+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-c6786945b302de2a0b629960.json","text":"{\n \"actor\": \"live-record surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-b51f3f76803e852ed250846a\",\n \"id\": \"s-c6786945b302de2a0b629960\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Enumerate all stack writes from 0x885380 through 0x885413 and map append source+4 and final last-0x14 store; freshly rehash binary/tool and reproduce these complete windows under an authorized read-only analyst session before corrected evidence acceptance.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Propagated affected acceptance from bridge surprise s-5a78d3a0a10c1f8545df8eb1, resolver session run-f63d1e050a7ee3fac7b44885. recovered-static.md lines 68-69 asserts temporary EvTurn zero and copy of zero. Hash-bound raw get/create and append captures run-472955e277202c411388c66b contradict that assertion: no write to EBP-0x20 before call; source+4 copied at 0x884d62/6c; stored requested turn written only at 0x88542d after temporary nested cleanup. This is static interpretation falsification, not observed runtime nondeterminism. Both integrated evidence records and independent verdict must lose current acceptance pending corrected source-bound reproduction; raw captures and archived saves are retained as historical measurements.\",\n \"timestamp\": \"2026-09-10T04:18:25.950030+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-c6786945b302de2a0b629960.json","time":{"start":1789016942515,"end":1789016942528}},"metadata":{"openai":{"itemId":"fc_015e2a97944dcd9b016aa23b6d92e487d186d6cc3d475af298"}},"id":"prt_089b82798001iVvmHAUJvp7HO9","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7c855001yaVntvyaa8qRw5"}} +{"type":"tool_use","timestamp":1789016942564,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_v1hR2oECM2mEQTIslhXLMDqX","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-d2c8ec81e980396f2306f8fe.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-d2c8ec81e980396f2306f8fe.json\nfile\n\n1: {\n2: \"actor\": \"live-record bridge architect\",\n3: \"contract\": \"research-live-record-bridge\",\n4: \"decision\": \"d-3205df5e8425dc9e1779e673\",\n5: \"id\": \"s-d2c8ec81e980396f2306f8fe\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"probe\": \"Astra must compare the stored file with fresh command stdout under the pinned binary/tool identity, decide whether a byte-exact replacement supersedes only capture provenance, and require a fresh hash-bound reserve manifest before the ObservedTech append/growth row is treated as reconciled.\",\n8: \"role\": \"architecture-review\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Fresh provenance check falsified the claim that verify/results/research-live-record-bridge/run-ebf85a84ad4247c38792a787/observed-reserve.stdout.txt is byte-exact raw stdout. The stored manually transcribed capture is 2464 bytes/SHA256 5d10954f54a2f8c731ee8d4760414851963ab8dc539ecb66383cf09e176b5c87; rerunning pinned GNU objdump 2.38 against the hash-matched executable with start 0x007b5820 and stop 0x007b5899 produces 2472 bytes/SHA256 2d011ed96329c4c4ff462cbfd65decac9dccf40558765244c769be1dedc92275. First difference is one alignment space at byte 477. SURVIVES: binary/tool/source identities, decoded instructions, append ABI branches, reserve capacity rule, and references to accepted append/reallocator captures. QUALIFIED: the new reserve interpretation is an observation awaiting a byte-exact immutable capture. OVERTURNED: the newly added file cannot be called raw/unfiltered or used as source-bound capture evidence. Affected ABI-row promotion is paused; contract remains proposed. No implementation or lab work occurred.\",\n12: \"timestamp\": \"2026-09-10T02:50:12.833918+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"live-record bridge architect\",\n \"contract\": \"research-live-record-bridge\",\n \"decision\": \"d-3205df5e8425dc9e1779e673\",\n \"id\": \"s-d2c8ec81e980396f2306f8fe\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra must compare the stored file with fresh command stdout under the pinned binary/tool identity, decide whether a byte-exact replacement supersedes only capture provenance, and require a fresh hash-bound reserve manifest before the ObservedTech append/growth row is treated as reconciled.\",\n \"role\": \"architecture-review\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Fresh provenance check falsified the claim that verify/results/research-live-record-bridge/run-ebf85a84ad4247c38792a787/observed-reserve.stdout.txt is byte-exact raw stdout. The stored manually transcribed capture is 2464 bytes/SHA256 5d10954f54a2f8c731ee8d4760414851963ab8dc539ecb66383cf09e176b5c87; rerunning pinned GNU objdump 2.38 against the hash-matched executable with start 0x007b5820 and stop 0x007b5899 produces 2472 bytes/SHA256 2d011ed96329c4c4ff462cbfd65decac9dccf40558765244c769be1dedc92275. First difference is one alignment space at byte 477. SURVIVES: binary/tool/source identities, decoded instructions, append ABI branches, reserve capacity rule, and references to accepted append/reallocator captures. QUALIFIED: the new reserve interpretation is an observation awaiting a byte-exact immutable capture. OVERTURNED: the newly added file cannot be called raw/unfiltered or used as source-bound capture evidence. Affected ABI-row promotion is paused; contract remains proposed. No implementation or lab work occurred.\",\n \"timestamp\": \"2026-09-10T02:50:12.833918+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-d2c8ec81e980396f2306f8fe.json","text":"{\n \"actor\": \"live-record bridge architect\",\n \"contract\": \"research-live-record-bridge\",\n \"decision\": \"d-3205df5e8425dc9e1779e673\",\n \"id\": \"s-d2c8ec81e980396f2306f8fe\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra must compare the stored file with fresh command stdout under the pinned binary/tool identity, decide whether a byte-exact replacement supersedes only capture provenance, and require a fresh hash-bound reserve manifest before the ObservedTech append/growth row is treated as reconciled.\",\n \"role\": \"architecture-review\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Fresh provenance check falsified the claim that verify/results/research-live-record-bridge/run-ebf85a84ad4247c38792a787/observed-reserve.stdout.txt is byte-exact raw stdout. The stored manually transcribed capture is 2464 bytes/SHA256 5d10954f54a2f8c731ee8d4760414851963ab8dc539ecb66383cf09e176b5c87; rerunning pinned GNU objdump 2.38 against the hash-matched executable with start 0x007b5820 and stop 0x007b5899 produces 2472 bytes/SHA256 2d011ed96329c4c4ff462cbfd65decac9dccf40558765244c769be1dedc92275. First difference is one alignment space at byte 477. SURVIVES: binary/tool/source identities, decoded instructions, append ABI branches, reserve capacity rule, and references to accepted append/reallocator captures. QUALIFIED: the new reserve interpretation is an observation awaiting a byte-exact immutable capture. OVERTURNED: the newly added file cannot be called raw/unfiltered or used as source-bound capture evidence. Affected ABI-row promotion is paused; contract remains proposed. No implementation or lab work occurred.\",\n \"timestamp\": \"2026-09-10T02:50:12.833918+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-d2c8ec81e980396f2306f8fe.json","time":{"start":1789016942555,"end":1789016942563}},"metadata":{"openai":{"itemId":"fc_015e2a97944dcd9b016aa23b6d92ec87d1beb0f7d060dcde20"}},"id":"prt_089b827bb0010j2XS68f1HbTTg","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7c855001yaVntvyaa8qRw5"}} +{"type":"tool_use","timestamp":1789016942646,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_DKph6njhFU2KuThaCbDG2ZME","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-d44b9f9e62272794d88bbed6.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-d44b9f9e62272794d88bbed6.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-correction-verifier\",\n3: \"contract\": \"research-completion-abi\",\n4: \"decision\": \"d-0bb927e63b915c87a58d4257\",\n5: \"id\": \"s-d44b9f9e62272794d88bbed6\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"probe\": \"Astra must decide the provenance repair together with s-4f4fb5e8ee42ccff7e68efb5: require a newly generated current-session capture harness or direct command manifest that takes session as an explicit immutable input, then rerun all exact and complete-boundary windows. Reject the stale-session manifest rather than attaching it to a current verdict.\",\n8: \"role\": \"verifier\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Independent capture harness provenance is stale across fresh quanta: reproduce_run_ee78b8773688ca09f8046e21.py was inherited from the prior checkpoint and hard-codes session run-ee78b8773688ca09f8046e21. Executing it during current session run-5bd0e537bb0c4c4f43987ac1 generated fresh timestamp/raw streams but a manifest claiming the old session. The raw subprocess outputs remain measurements, but the manifest is not valid current-session evidence and must not be self-certified or relabeled after the fact. The current-session report explicitly records this defect. Affected verification is already paused by boundary surprise s-4f4fb5e8ee42ccff7e68efb5.\",\n12: \"timestamp\": \"2026-09-10T04:46:35.617690+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-0bb927e63b915c87a58d4257\",\n \"id\": \"s-d44b9f9e62272794d88bbed6\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra must decide the provenance repair together with s-4f4fb5e8ee42ccff7e68efb5: require a newly generated current-session capture harness or direct command manifest that takes session as an explicit immutable input, then rerun all exact and complete-boundary windows. Reject the stale-session manifest rather than attaching it to a current verdict.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent capture harness provenance is stale across fresh quanta: reproduce_run_ee78b8773688ca09f8046e21.py was inherited from the prior checkpoint and hard-codes session run-ee78b8773688ca09f8046e21. Executing it during current session run-5bd0e537bb0c4c4f43987ac1 generated fresh timestamp/raw streams but a manifest claiming the old session. The raw subprocess outputs remain measurements, but the manifest is not valid current-session evidence and must not be self-certified or relabeled after the fact. The current-session report explicitly records this defect. Affected verification is already paused by boundary surprise s-4f4fb5e8ee42ccff7e68efb5.\",\n \"timestamp\": \"2026-09-10T04:46:35.617690+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-d44b9f9e62272794d88bbed6.json","text":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-0bb927e63b915c87a58d4257\",\n \"id\": \"s-d44b9f9e62272794d88bbed6\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra must decide the provenance repair together with s-4f4fb5e8ee42ccff7e68efb5: require a newly generated current-session capture harness or direct command manifest that takes session as an explicit immutable input, then rerun all exact and complete-boundary windows. Reject the stale-session manifest rather than attaching it to a current verdict.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent capture harness provenance is stale across fresh quanta: reproduce_run_ee78b8773688ca09f8046e21.py was inherited from the prior checkpoint and hard-codes session run-ee78b8773688ca09f8046e21. Executing it during current session run-5bd0e537bb0c4c4f43987ac1 generated fresh timestamp/raw streams but a manifest claiming the old session. The raw subprocess outputs remain measurements, but the manifest is not valid current-session evidence and must not be self-certified or relabeled after the fact. The current-session report explicitly records this defect. Affected verification is already paused by boundary surprise s-4f4fb5e8ee42ccff7e68efb5.\",\n \"timestamp\": \"2026-09-10T04:46:35.617690+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-d44b9f9e62272794d88bbed6.json","time":{"start":1789016942623,"end":1789016942643}},"metadata":{"openai":{"itemId":"fc_015e2a97944dcd9b016aa23b6d92f487d197a817265053f21f"}},"id":"prt_089b827dd001EI0kxBdbdTGrT2","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7c855001yaVntvyaa8qRw5"}} +{"type":"tool_use","timestamp":1789016942646,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_bspZFsF1BhcJa3auvrS1TIv2","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-f1c41532e618c77d41538902.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-f1c41532e618c77d41538902.json\nfile\n\n1: {\n2: \"actor\": \"controls-architect\",\n3: \"contract\": \"controls-bootstrap\",\n4: \"decision\": \"d-ab717735fc6c1661919f6894\",\n5: \"id\": \"s-f1c41532e618c77d41538902\",\n6: \"model\": \"openai/gpt-6-astra\",\n7: \"probe\": \"Separate recovery identity/basis/artifact validation from end-run freshness; test old valid recovery state, missing/mismatched state, fresh end-run checkpoint and a resolution-only Astra launch with affected workers still blocked.\",\n8: \"role\": \"architecture-review\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Independent review R6: current launch guard applies 15-minute end-run freshness to recovery, preventing next-day recovery from valid durable state; unconditional open-surprise rejection also prevents a resolver quantum. Assignment explicitly requested no-open-surprise launch guards, so the resolver exception requires lead clarification.\",\n12: \"timestamp\": \"2026-09-09T21:34:59.734916+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"controls-architect\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-ab717735fc6c1661919f6894\",\n \"id\": \"s-f1c41532e618c77d41538902\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Separate recovery identity/basis/artifact validation from end-run freshness; test old valid recovery state, missing/mismatched state, fresh end-run checkpoint and a resolution-only Astra launch with affected workers still blocked.\",\n \"role\": \"architecture-review\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent review R6: current launch guard applies 15-minute end-run freshness to recovery, preventing next-day recovery from valid durable state; unconditional open-surprise rejection also prevents a resolver quantum. Assignment explicitly requested no-open-surprise launch guards, so the resolver exception requires lead clarification.\",\n \"timestamp\": \"2026-09-09T21:34:59.734916+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-f1c41532e618c77d41538902.json","text":"{\n \"actor\": \"controls-architect\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-ab717735fc6c1661919f6894\",\n \"id\": \"s-f1c41532e618c77d41538902\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Separate recovery identity/basis/artifact validation from end-run freshness; test old valid recovery state, missing/mismatched state, fresh end-run checkpoint and a resolution-only Astra launch with affected workers still blocked.\",\n \"role\": \"architecture-review\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent review R6: current launch guard applies 15-minute end-run freshness to recovery, preventing next-day recovery from valid durable state; unconditional open-surprise rejection also prevents a resolver quantum. Assignment explicitly requested no-open-surprise launch guards, so the resolver exception requires lead clarification.\",\n \"timestamp\": \"2026-09-09T21:34:59.734916+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-f1c41532e618c77d41538902.json","time":{"start":1789016942629,"end":1789016942645}},"metadata":{"openai":{"itemId":"fc_015e2a97944dcd9b016aa23b6d92fc87d1a12b5575534d3913"}},"id":"prt_089b828220013NrhDVS36wO0Mm","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b7c855001yaVntvyaa8qRw5"}} +{"type":"step_finish","timestamp":1789016942803,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"id":"prt_089b828cf001szV3H6AajJ4hAm","reason":"tool-calls","snapshot":"82e0bd3a9ebd5ef9c485678240d7b46896a78fc3","messageID":"msg_089b7c855001yaVntvyaa8qRw5","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","type":"step-finish","tokens":{"total":62847,"input":47232,"output":595,"reasoning":44,"cache":{"write":0,"read":14976}},"cost":0}} +{"type":"step_start","timestamp":1789016945788,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"id":"prt_089b834730010D7Ybmnq5eDLGg","messageID":"msg_089b828fd00191G9mBBkAha1WB","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","snapshot":"b1ad78677eb999729cc145f1bb32f1ad6c4a9593","type":"step-start"}} +{"type":"tool_use","timestamp":1789016961962,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"bash","callID":"call_ahq5wtLPxKniCNI35pCq780U","state":{"status":"completed","input":{"command":"git rev-parse HEAD && git rev-parse --show-toplevel && git rev-parse --git-common-dir && git status --short","workdir":"/tmp/opencode/sots-final-research-engine"},"output":"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\n/tmp/opencode/sots-final-research-engine\n/home/alex/sots-engine/.git\n M CONTRIBUTING.md\n M README.md\n M docs/S-standalone.md\n M src/app/turn.cpp\n M src/game/sim/CMakeLists.txt\n M src/mars/rng/mt19937.cpp\n M src/mars/rng/mt19937.h\n M tests/app/CMakeLists.txt\n M tests/app/test_command_replay.cpp\n M tests/app/test_turn.cpp\n M tests/app/test_turn_record.cpp\n M tests/game_config/CMakeLists.txt\n M tests/game_data/CMakeLists.txt\n M tests/game_design/CMakeLists.txt\n M tests/game_design/test_census_saves.cpp\n M tests/game_sim/CMakeLists.txt\n M tests/mars_stream/CMakeLists.txt\n M tests/mars_stream/test_domains.cpp\n M tests/mars_stream/test_rng.cpp\n M tests/mars_stream/test_save.cpp\n M tests/mars_text/CMakeLists.txt\n M tests/mars_vfs/CMakeLists.txt\n M tools/clean_room_check.sh\n?? AGENTS.md\n?? CLAUDE.md\n?? docs/architecture.md\n?? opencode.json\n?? tools/clean_room_check.py\n","metadata":{"output":"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\n/tmp/opencode/sots-final-research-engine\n/home/alex/sots-engine/.git\n M CONTRIBUTING.md\n M README.md\n M docs/S-standalone.md\n M src/app/turn.cpp\n M src/game/sim/CMakeLists.txt\n M src/mars/rng/mt19937.cpp\n M src/mars/rng/mt19937.h\n M tests/app/CMakeLists.txt\n M tests/app/test_command_replay.cpp\n M tests/app/test_turn.cpp\n M tests/app/test_turn_record.cpp\n M tests/game_config/CMakeLists.txt\n M tests/game_data/CMakeLists.txt\n M tests/game_design/CMakeLists.txt\n M tests/game_design/test_census_saves.cpp\n M tests/game_sim/CMakeLists.txt\n M tests/mars_stream/CMakeLists.txt\n M tests/mars_stream/test_domains.cpp\n M tests/mars_stream/test_rng.cpp\n M tests/mars_stream/test_save.cpp\n M tests/mars_text/CMakeLists.txt\n M tests/mars_vfs/CMakeLists.txt\n M tools/clean_room_check.sh\n?? AGENTS.md\n?? CLAUDE.md\n?? docs/architecture.md\n?? opencode.json\n?? tools/clean_room_check.py\n","exit":0,"truncated":false},"title":"git rev-parse HEAD && git rev-parse --show-toplevel && git rev-parse --git-common-dir && git status --short","time":{"start":1789016961806,"end":1789016961940}},"metadata":{"openai":{"itemId":"fc_03a5cd026313c48b016aa23b81a8a887d19bbac9b7520c07ed"}},"id":"prt_089b872db001l9voTB3HzIkDAJ","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b828fd00191G9mBBkAha1WB"}} +{"type":"tool_use","timestamp":1789016961962,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"bash","callID":"call_rGtEOxnvYsNhcKWxzD4NOoZD","state":{"status":"completed","input":{"command":"git rev-parse HEAD && git rev-parse --show-toplevel && git rev-parse --git-common-dir && git status --short","workdir":"/tmp/opencode/sots-final-research-re"},"output":"3bfde5a70d874a723e797a695bbd847fd82c0aa7\n/tmp/opencode/sots-final-research-re\n/home/alex/sots-re/.git\n M README.md\n M campaign/DASHBOARD.md\n M campaign/backlog.md\n M campaign/board.md\n M campaign/open-questions.md\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? AGENTS.md\n?? CLAUDE.md\n?? campaign/README.md\n?? campaign/agents/\n?? campaign/contract.schema.json\n?? campaign/contracts/\n?? campaign/current.json\n?? campaign/models.json\n?? campaign/pilots/\n?? campaign/research/\n?? campaign/rollout/\n?? guides/multi-agent-workflow.md\n?? guides/windows-lab-housekeeping.md\n?? opencode.json\n?? tools/campaign.py\n?? tools/check_agent_config.py\n?? tools/evidence.py\n?? tools/gate.py\n?? tools/run_agent.py\n?? tools/select_evidence.py\n?? tools/windows-housekeeping/\n?? verify/campaign/\n?? verify/config/\n?? verify/publishing/\n?? verify/results/housekeeping/\n?? verify/tooling/\n","metadata":{"output":"3bfde5a70d874a723e797a695bbd847fd82c0aa7\n/tmp/opencode/sots-final-research-re\n/home/alex/sots-re/.git\n M README.md\n M campaign/DASHBOARD.md\n M campaign/backlog.md\n M campaign/board.md\n M campaign/open-questions.md\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? AGENTS.md\n?? CLAUDE.md\n?? campaign/README.md\n?? campaign/agents/\n?? campaign/contract.schema.json\n?? campaign/contracts/\n?? campaign/current.json\n?? campaign/models.json\n?? campaign/pilots/\n?? campaign/research/\n?? campaign/rollout/\n?? guides/multi-agent-workflow.md\n?? guides/windows-lab-housekeeping.md\n?? opencode.json\n?? tools/campaign.py\n?? tools/check_agent_config.py\n?? tools/evidence.py\n?? tools/gate.py\n?? tools/run_agent.py\n?? tools/select_evidence.py\n?? tools/windows-housekeeping/\n?? verify/campaign/\n?? verify/config/\n?? verify/publishing/\n?? verify/results/housekeeping/\n?? verify/tooling/\n","exit":0,"truncated":false},"title":"git rev-parse HEAD && git rev-parse --show-toplevel && git rev-parse --git-common-dir && git status --short","time":{"start":1789016961836,"end":1789016961944}},"metadata":{"openai":{"itemId":"fc_03a5cd026313c48b016aa23b81a8b887d1810d9eba9bf7d072"}},"id":"prt_089b87315001MBjJ1oSuZRRCa3","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b828fd00191G9mBBkAha1WB"}} +{"type":"tool_use","timestamp":1789016961985,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"bash","callID":"call_W90aSWe34tz93qEZSp6Pm2Ah","state":{"status":"completed","input":{"command":"git rev-parse HEAD && git rev-parse --show-toplevel && git rev-parse --git-common-dir && git status --short","workdir":"/home/alex/sots-re"},"output":"41a68401625c187ed681ad6d916e2161dfcfff5d\n/home/alex/sots-re\n.git\n M README.md\n M campaign/contracts/research-completion-abi.json\n M campaign/runtime/runs/active-research-completion-abi.json\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.json\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.jsonl\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.stderr.log\n?? campaign/runtime/transitions/research-completion-abi-6daec310044e13c8c635e05c.json\n?? campaign/runtime/transitions/research-completion-abi-7f8e2dc0b9b23e9aee13e698.json\n?? campaign/runtime/transitions/research-completion-abi-e24f6d6bf417ccc1ff38cbad.json\n","metadata":{"output":"41a68401625c187ed681ad6d916e2161dfcfff5d\n/home/alex/sots-re\n.git\n M README.md\n M campaign/contracts/research-completion-abi.json\n M campaign/runtime/runs/active-research-completion-abi.json\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.json\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.jsonl\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.stderr.log\n?? campaign/runtime/transitions/research-completion-abi-6daec310044e13c8c635e05c.json\n?? campaign/runtime/transitions/research-completion-abi-7f8e2dc0b9b23e9aee13e698.json\n?? campaign/runtime/transitions/research-completion-abi-e24f6d6bf417ccc1ff38cbad.json\n","exit":0,"truncated":false},"title":"git rev-parse HEAD && git rev-parse --show-toplevel && git rev-parse --git-common-dir && git status --short","time":{"start":1789016961887,"end":1789016961965}},"metadata":{"openai":{"itemId":"fc_03a5cd026313c48b016aa23b81a8c087d1a0e05bd319d7a717"}},"id":"prt_089b87358001J36L2SeOBbwi2G","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b828fd00191G9mBBkAha1WB"}} +{"type":"tool_use","timestamp":1789016961985,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"bash","callID":"call_NA255BbiVWX3fFQZ4Ukc48PD","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi","workdir":"/home/alex/sots-re"},"output":"[\n {\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"open_surprises\": [],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"verification\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n }\n]\n","metadata":{"output":"[\n {\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"open_surprises\": [],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"verification\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n }\n]\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi","time":{"start":1789016961896,"end":1789016961968}},"metadata":{"openai":{"itemId":"fc_03a5cd026313c48b016aa23b81a8c887d1a33ba693beec5136"}},"id":"prt_089b873640015kI0r3MJMzmCEu","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b828fd00191G9mBBkAha1WB"}} +{"type":"tool_use","timestamp":1789016961985,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"bash","callID":"call_VR9u0dFsxaXknb4nK4bnFMhh","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re validate","workdir":"/home/alex/sots-re"},"output":"[\n \"controls-bootstrap\",\n \"launcher-smoke\",\n \"research-completion-abi\",\n \"research-live-record-bridge\",\n \"research-replacement\"\n]\n","metadata":{"output":"[\n \"controls-bootstrap\",\n \"launcher-smoke\",\n \"research-completion-abi\",\n \"research-live-record-bridge\",\n \"research-replacement\"\n]\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re validate","time":{"start":1789016961909,"end":1789016961972}},"metadata":{"openai":{"itemId":"fc_03a5cd026313c48b016aa23b81a8d087d1a4cac5e70323b81d"}},"id":"prt_089b8736f001qyFkPUCvOayY0m","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b828fd00191G9mBBkAha1WB"}} +{"type":"tool_use","timestamp":1789016961985,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"glob","callID":"call_3jrA3C2BuUWjwzDBDLZXjsZn","state":{"status":"completed","input":{"path":"/home/alex/sots-re/verify/results/research-completion-abi","pattern":"run-9daf5c3b75547271d5c3b4ed/*"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stdout.txt","metadata":{"count":27,"truncated":false},"title":"verify/results/research-completion-abi","time":{"start":1789016961934,"end":1789016961974}},"metadata":{"openai":{"itemId":"fc_03a5cd026313c48b016aa23b81a8d487d1aacbbb6fc3e76950"}},"id":"prt_089b8738a001KnXx6PHjumHtev","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b828fd00191G9mBBkAha1WB"}} +{"type":"tool_use","timestamp":1789016961990,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"glob","callID":"call_hlHNQY7JSOyxbXqkZoPDvCD7","state":{"status":"completed","input":{"path":"/home/alex/sots-re/campaign/runtime/decisions","pattern":"*.json"},"output":"/home/alex/sots-re/campaign/runtime/decisions/d-d4c494ba02ada278030ef473.json\n/home/alex/sots-re/campaign/runtime/decisions/d-b51f3f76803e852ed250846a.json\n/home/alex/sots-re/campaign/runtime/decisions/d-d2aeed91781c4da6057f00a7.json\n/home/alex/sots-re/campaign/runtime/decisions/d-ab717735fc6c1661919f6894.json\n/home/alex/sots-re/campaign/runtime/decisions/d-6239404c8f40351310c8abf0.json\n/home/alex/sots-re/campaign/runtime/decisions/d-2570bf9c76ae66711bdac461.json\n/home/alex/sots-re/campaign/runtime/decisions/d-42c6d0b4ee5114e6f2e07c99.json\n/home/alex/sots-re/campaign/runtime/decisions/d-d2a9b8be6399a6abaa0e05a5.json\n/home/alex/sots-re/campaign/runtime/decisions/d-0bb927e63b915c87a58d4257.json\n/home/alex/sots-re/campaign/runtime/decisions/d-fd5aff1eaf78a8c15d96723c.json\n/home/alex/sots-re/campaign/runtime/decisions/d-3205df5e8425dc9e1779e673.json\n/home/alex/sots-re/campaign/runtime/decisions/d-2ff30c9f5355116bea822924.json\n/home/alex/sots-re/campaign/runtime/decisions/d-6f4134237e68860fb02e8684.json","metadata":{"count":13,"truncated":false},"title":"campaign/runtime/decisions","time":{"start":1789016961960,"end":1789016961989}},"metadata":{"openai":{"itemId":"fc_03a5cd026313c48b016aa23b81a8dc87d1b39fa2aa13cafd37"}},"id":"prt_089b873a400129ezjCrMDeMfqx","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b828fd00191G9mBBkAha1WB"}} +{"type":"step_finish","timestamp":1789016962084,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"id":"prt_089b87421001vqcXhiydNqY2bi","reason":"tool-calls","snapshot":"565748e42a99eb32566cc6ab1baf1ff03a1cc729","messageID":"msg_089b828fd00191G9mBBkAha1WB","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","type":"step-finish","tokens":{"total":69288,"input":6843,"output":351,"reasoning":14,"cache":{"write":0,"read":62080}},"cost":0}} +{"type":"step_start","timestamp":1789016965903,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"id":"prt_089b8830b001k1NNV02WriJ0FD","messageID":"msg_089b87459001llzEwo0AEWhtOU","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","snapshot":"7d93ce7a6e6cee45fbd05cc68ce9e175cd1f9304","type":"step-start"}} +{"type":"tool_use","timestamp":1789016982923,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_ZPcs1UQM71aS8O5SXRVMGrAd","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/decisions/d-fd5aff1eaf78a8c15d96723c.json"},"output":"/home/alex/sots-re/campaign/runtime/decisions/d-fd5aff1eaf78a8c15d96723c.json\nfile\n\n1: {\n2: \"actor\": \"research ABI surprise resolver\",\n3: \"contract\": \"research-completion-abi\",\n4: \"explanation\": \"Astra resolution-only decision; session run-daefd1b77558f324ae730b27. OBSERVATION/PROVENANCE: inspected analyst run-16f8e9b6376b278c4870be09/manifest.json and verifier run-ee78b8773688ca09f8046e21/manifest.json plus all four exact stdout streams and nested-copy-wide.stdout.txt under verify/results/research-completion-abi-correction-verifier/. Checkpoint 070383fd013a0e4b1a2ef5e0 rehashes verifier manifest 50aa35e22432b153d14dbd6a5cced3ce0ac8826c79b56f500a0ce96a32619393 and actual-session report c33ce30e6bb907aa4140b287afc9198bd503e9da179ff3adb8921ca3ba1b87fc. Exact nested-copy ends 0x779a1f with displayed byte 74; wide adds displacement 10 but ends 0x779a23 with only e8. Manifest records eight exit-zero, nonempty, empty-stderr objdump executions and four byte-exact analyst comparisons, but full harness exit is 1, not success. Documentary binary identity: 7898624 bytes SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841; GNU objdump 2.38, 373888 bytes SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd. These were not freshly rehashed/rerun by resolver. Direct HEAD/common-dir checks match contract baselines in assigned paired worktrees; both trees are dirty, not assumed clean or identified solely by HEAD. Launcher records source_before; historical content bindings engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 are documentary, not new measurements. INSTRUMENT: stop-address affects displayed instruction bytes despite a decoded target and return zero; +4 is not a completeness guarantee. No game/hook execution or runtime neutrality measurement occurred. This is capture-boundary interference, not a stale-build/game-mechanism diagnosis.\\nOVERTURNED: complete four-window stream/no-truncation and nested-copy exact-row-prefix claims at stops 0x779a20/0x779a24; full independent-cross-check success and any acceptance inferred fr... (line truncated to 2000 chars)\n5: \"id\": \"d-fd5aff1eaf78a8c15d96723c\",\n6: \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-070383fd013a0e4b1a2ef5e0.json\",\n7: \"invalidated_evidence\": [],\n8: \"model\": \"openai/gpt-6-astra\",\n9: \"probe\": \"Cheapest discriminator for an authorized analyst after both resolutions and normal lifecycle scheduling: fresh pinned objdump -D -Mintel from 0x00779850 at stops 0x00779a20 (known-bad negative control), 0x00779a21 and 0x00779a23. Archived wide rows predict 74 10 ends at 0x779a21 and 8b cf ends at 0x779a23; these replacement stops are predictions, not measured here. Check raw PE section bytes across 0x779a1f..0x779a28 and instruction lengths, require the two aligned captures to be complete and prefix-consistent, and reject old stop as truncated despite exit zero. For narrowly scoped nested-copy authority use separately captured 0x779850..0x779930, retaining return and cleanup through 0x779926 and padding, excluding later routines; verify that terminal boundary too. Recapture all four ownership windows and boundary controls with current-session immutable manifests, all streams/argv/cwd/return codes/hashes and source binding. Audit all terminal instructions, not just prefix equality. Then an independent verifier reproduces the fresh package and held-out complete-boundary control before independent-cross-check; integrated evidence and archived-record checking remain required. No VM needed, no runtime claim; stop and escalate any new mismatch.\",\n10: \"role\": \"resolver\",\n11: \"schema\": \"sots-decision/1\",\n12: \"surprise\": \"s-4f4fb5e8ee42ccff7e68efb5\",\n13: \"timestamp\": \"2026-09-10T04:50:36.267192+00:00\"\n14: }\n\n(End of file - total 14 lines)\n","metadata":{"preview":"{\n \"actor\": \"research ABI surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only decision; session run-daefd1b77558f324ae730b27. OBSERVATION/PROVENANCE: inspected analyst run-16f8e9b6376b278c4870be09/manifest.json and verifier run-ee78b8773688ca09f8046e21/manifest.json plus all four exact stdout streams and nested-copy-wide.stdout.txt under verify/results/research-completion-abi-correction-verifier/. Checkpoint 070383fd013a0e4b1a2ef5e0 rehashes verifier manifest 50aa35e22432b153d14dbd6a5cced3ce0ac8826c79b56f500a0ce96a32619393 and actual-session report c33ce30e6bb907aa4140b287afc9198bd503e9da179ff3adb8921ca3ba1b87fc. Exact nested-copy ends 0x779a1f with displayed byte 74; wide adds displacement 10 but ends 0x779a23 with only e8. Manifest records eight exit-zero, nonempty, empty-stderr objdump executions and four byte-exact analyst comparisons, but full harness exit is 1, not success. Documentary binary identity: 7898624 bytes SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841; GNU objdump 2.38, 373888 bytes SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd. These were not freshly rehashed/rerun by resolver. Direct HEAD/common-dir checks match contract baselines in assigned paired worktrees; both trees are dirty, not assumed clean or identified solely by HEAD. Launcher records source_before; historical content bindings engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 are documentary, not new measurements. INSTRUMENT: stop-address affects displayed instruction bytes despite a decoded target and return zero; +4 is not a completeness guarantee. No game/hook execution or runtime neutrality measurement occurred. This is capture-boundary interference, not a stale-build/game-mechanism diagnosis.\\nOVERTURNED: complete four-window stream/no-truncation and nested-copy exact-row-prefix claims at stops 0x779a20/0x779a24; full independent-cross-check success and any acceptance inferred fr... (line truncated to 2000 chars)\n \"id\": \"d-fd5aff1eaf78a8c15d96723c\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-070383fd013a0e4b1a2ef5e0.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest discriminator for an authorized analyst after both resolutions and normal lifecycle scheduling: fresh pinned objdump -D -Mintel from 0x00779850 at stops 0x00779a20 (known-bad negative control), 0x00779a21 and 0x00779a23. Archived wide rows predict 74 10 ends at 0x779a21 and 8b cf ends at 0x779a23; these replacement stops are predictions, not measured here. Check raw PE section bytes across 0x779a1f..0x779a28 and instruction lengths, require the two aligned captures to be complete and prefix-consistent, and reject old stop as truncated despite exit zero. For narrowly scoped nested-copy authority use separately captured 0x779850..0x779930, retaining return and cleanup through 0x779926 and padding, excluding later routines; verify that terminal boundary too. Recapture all four ownership windows and boundary controls with current-session immutable manifests, all streams/argv/cwd/return codes/hashes and source binding. Audit all terminal instructions, not just prefix equality. Then an independent verifier reproduces the fresh package and held-out complete-boundary control before independent-cross-check; integrated evidence and archived-record checking remain required. No VM needed, no runtime claim; stop and escalate any new mismatch.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-4f4fb5e8ee42ccff7e68efb5\",\n \"timestamp\": \"2026-09-10T04:50:36.267192+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/decisions/d-fd5aff1eaf78a8c15d96723c.json","text":"{\n \"actor\": \"research ABI surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only decision; session run-daefd1b77558f324ae730b27. OBSERVATION/PROVENANCE: inspected analyst run-16f8e9b6376b278c4870be09/manifest.json and verifier run-ee78b8773688ca09f8046e21/manifest.json plus all four exact stdout streams and nested-copy-wide.stdout.txt under verify/results/research-completion-abi-correction-verifier/. Checkpoint 070383fd013a0e4b1a2ef5e0 rehashes verifier manifest 50aa35e22432b153d14dbd6a5cced3ce0ac8826c79b56f500a0ce96a32619393 and actual-session report c33ce30e6bb907aa4140b287afc9198bd503e9da179ff3adb8921ca3ba1b87fc. Exact nested-copy ends 0x779a1f with displayed byte 74; wide adds displacement 10 but ends 0x779a23 with only e8. Manifest records eight exit-zero, nonempty, empty-stderr objdump executions and four byte-exact analyst comparisons, but full harness exit is 1, not success. Documentary binary identity: 7898624 bytes SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841; GNU objdump 2.38, 373888 bytes SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd. These were not freshly rehashed/rerun by resolver. Direct HEAD/common-dir checks match contract baselines in assigned paired worktrees; both trees are dirty, not assumed clean or identified solely by HEAD. Launcher records source_before; historical content bindings engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 are documentary, not new measurements. INSTRUMENT: stop-address affects displayed instruction bytes despite a decoded target and return zero; +4 is not a completeness guarantee. No game/hook execution or runtime neutrality measurement occurred. This is capture-boundary interference, not a stale-build/game-mechanism diagnosis.\\nOVERTURNED: complete four-window stream/no-truncation and nested-copy exact-row-prefix claims at stops 0x779a20/0x779a24; full independent-cross-check success and any acceptance inferred fr... (line truncated to 2000 chars)\n \"id\": \"d-fd5aff1eaf78a8c15d96723c\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-070383fd013a0e4b1a2ef5e0.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest discriminator for an authorized analyst after both resolutions and normal lifecycle scheduling: fresh pinned objdump -D -Mintel from 0x00779850 at stops 0x00779a20 (known-bad negative control), 0x00779a21 and 0x00779a23. Archived wide rows predict 74 10 ends at 0x779a21 and 8b cf ends at 0x779a23; these replacement stops are predictions, not measured here. Check raw PE section bytes across 0x779a1f..0x779a28 and instruction lengths, require the two aligned captures to be complete and prefix-consistent, and reject old stop as truncated despite exit zero. For narrowly scoped nested-copy authority use separately captured 0x779850..0x779930, retaining return and cleanup through 0x779926 and padding, excluding later routines; verify that terminal boundary too. Recapture all four ownership windows and boundary controls with current-session immutable manifests, all streams/argv/cwd/return codes/hashes and source binding. Audit all terminal instructions, not just prefix equality. Then an independent verifier reproduces the fresh package and held-out complete-boundary control before independent-cross-check; integrated evidence and archived-record checking remain required. No VM needed, no runtime claim; stop and escalate any new mismatch.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-4f4fb5e8ee42ccff7e68efb5\",\n \"timestamp\": \"2026-09-10T04:50:36.267192+00:00\"\n}","lineStart":1,"lineEnd":14,"totalLines":14,"truncated":false}},"title":"campaign/runtime/decisions/d-fd5aff1eaf78a8c15d96723c.json","time":{"start":1789016982892,"end":1789016982915}},"metadata":{"openai":{"itemId":"fc_05aa6b418632de96016aa23b96b2b887d19f256858571f9f73"}},"id":"prt_089b8c567001WZ2RP75w133agy","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b87459001llzEwo0AEWhtOU"}} +{"type":"tool_use","timestamp":1789016982923,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_ASeDFFg1x2XhkafGYXpUs7M0","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/decisions/d-0bb927e63b915c87a58d4257.json"},"output":"/home/alex/sots-re/campaign/runtime/decisions/d-0bb927e63b915c87a58d4257.json\nfile\n\n1: {\n2: \"actor\": \"research ABI surprise resolver\",\n3: \"contract\": \"research-completion-abi\",\n4: \"explanation\": \"Astra resolution-only decision, session run-daefd1b77558f324ae730b27; apply jointly with d-fd5aff1eaf78a8c15d96723c. OBSERVATION: inspected verify/results/research-completion-abi-correction-verifier/reproduce_run_ee78b8773688ca09f8046e21.py. Lines 7 and 72 hard-code prior output directory and session; lines 26/36/84 allow overwriting prior outputs. Actual-session report-run-5bd0e537bb0c4c4f43987ac1.md records current invocation and exit 1; generated run-ee78b8773688ca09f8046e21/manifest.json claims prior session with fresh timestamp. Current checkpoint 070383fd013a0e4b1a2ef5e0 rehashed that manifest/report to the inherited checkpoint hashes. Binary/tool/source and positive static execution qualifications are recorded in d-fd5aff1eaf78a8c15d96723c; no fresh binary execution or runtime neutrality measurement here. No basis to infer a different game build or game mechanism from stale provenance.\\nOVERTURNED in exact current-session domain: manifest is truthful evidence of run-5bd0e537bb0c4c4f43987ac1, inherited helper is safely reusable unchanged across fresh sessions, and fresh timestamp/identical stdout repairs stale session identity. QUALIFIED: raw outputs and report survive as archived static measurements with documented provenance defect, not independent current-session or integrated acceptance. SURVIVES: failed boundary challenge is a failure, eight positive objdump subprocess records support static capture rather than zero-execution, and unaffected decoded ownership rows retain only the partial static domain in companion decision. A later report cannot retroactively turn overwritten prior-session output into an immutable original-run bundle.\\nINVALIDATE current-session/full-compare acceptance use of the entire verifier run-ee78b8773688ca09f8046e21/manifest.json package, its hard-coded helper as a fresh-run recipe, and any checkpoint/verdict depending on that attribution. Preserve original files and failure report; no in-place relabeling, rehash... (line truncated to 2000 chars)\n5: \"id\": \"d-0bb927e63b915c87a58d4257\",\n6: \"invalidated_checkpoint\": null,\n7: \"invalidated_evidence\": [],\n8: \"model\": \"openai/gpt-6-astra\",\n9: \"probe\": \"Cheapest provenance discriminator before capture: supply the actual new campaign run session explicitly to a fresh minimal capture recipe/direct manifest; verify it equals the launch record and output directory and that the directory does not already exist. Predeclare negative checks rejecting missing session, stale prior-session ID and reused output location before running objdump. Archive the recipe and interpreter/tool/source/input identities before capture; run all four exact/repaired complete-boundary windows plus companion negative boundary control into the new directory and record actual commands, timestamps, return codes and stream hashes. Fail closed on identity drift and any required failure; expected bad-boundary control must remain explicitly classified negative, never counted as a passing full stream. Independent verifier must reproduce with its own real session and fresh directory, not execute the inherited hard-coded helper or relabel this manifest. No probe was executed by resolver.\",\n10: \"role\": \"resolver\",\n11: \"schema\": \"sots-decision/1\",\n12: \"surprise\": \"s-d44b9f9e62272794d88bbed6\",\n13: \"timestamp\": \"2026-09-10T04:51:08.364275+00:00\"\n14: }\n\n(End of file - total 14 lines)\n","metadata":{"preview":"{\n \"actor\": \"research ABI surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only decision, session run-daefd1b77558f324ae730b27; apply jointly with d-fd5aff1eaf78a8c15d96723c. OBSERVATION: inspected verify/results/research-completion-abi-correction-verifier/reproduce_run_ee78b8773688ca09f8046e21.py. Lines 7 and 72 hard-code prior output directory and session; lines 26/36/84 allow overwriting prior outputs. Actual-session report-run-5bd0e537bb0c4c4f43987ac1.md records current invocation and exit 1; generated run-ee78b8773688ca09f8046e21/manifest.json claims prior session with fresh timestamp. Current checkpoint 070383fd013a0e4b1a2ef5e0 rehashed that manifest/report to the inherited checkpoint hashes. Binary/tool/source and positive static execution qualifications are recorded in d-fd5aff1eaf78a8c15d96723c; no fresh binary execution or runtime neutrality measurement here. No basis to infer a different game build or game mechanism from stale provenance.\\nOVERTURNED in exact current-session domain: manifest is truthful evidence of run-5bd0e537bb0c4c4f43987ac1, inherited helper is safely reusable unchanged across fresh sessions, and fresh timestamp/identical stdout repairs stale session identity. QUALIFIED: raw outputs and report survive as archived static measurements with documented provenance defect, not independent current-session or integrated acceptance. SURVIVES: failed boundary challenge is a failure, eight positive objdump subprocess records support static capture rather than zero-execution, and unaffected decoded ownership rows retain only the partial static domain in companion decision. A later report cannot retroactively turn overwritten prior-session output into an immutable original-run bundle.\\nINVALIDATE current-session/full-compare acceptance use of the entire verifier run-ee78b8773688ca09f8046e21/manifest.json package, its hard-coded helper as a fresh-run recipe, and any checkpoint/verdict depending on that attribution. Preserve original files and failure report; no in-place relabeling, rehash... (line truncated to 2000 chars)\n \"id\": \"d-0bb927e63b915c87a58d4257\",\n \"invalidated_checkpoint\": null,\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest provenance discriminator before capture: supply the actual new campaign run session explicitly to a fresh minimal capture recipe/direct manifest; verify it equals the launch record and output directory and that the directory does not already exist. Predeclare negative checks rejecting missing session, stale prior-session ID and reused output location before running objdump. Archive the recipe and interpreter/tool/source/input identities before capture; run all four exact/repaired complete-boundary windows plus companion negative boundary control into the new directory and record actual commands, timestamps, return codes and stream hashes. Fail closed on identity drift and any required failure; expected bad-boundary control must remain explicitly classified negative, never counted as a passing full stream. Independent verifier must reproduce with its own real session and fresh directory, not execute the inherited hard-coded helper or relabel this manifest. No probe was executed by resolver.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-d44b9f9e62272794d88bbed6\",\n \"timestamp\": \"2026-09-10T04:51:08.364275+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/decisions/d-0bb927e63b915c87a58d4257.json","text":"{\n \"actor\": \"research ABI surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only decision, session run-daefd1b77558f324ae730b27; apply jointly with d-fd5aff1eaf78a8c15d96723c. OBSERVATION: inspected verify/results/research-completion-abi-correction-verifier/reproduce_run_ee78b8773688ca09f8046e21.py. Lines 7 and 72 hard-code prior output directory and session; lines 26/36/84 allow overwriting prior outputs. Actual-session report-run-5bd0e537bb0c4c4f43987ac1.md records current invocation and exit 1; generated run-ee78b8773688ca09f8046e21/manifest.json claims prior session with fresh timestamp. Current checkpoint 070383fd013a0e4b1a2ef5e0 rehashed that manifest/report to the inherited checkpoint hashes. Binary/tool/source and positive static execution qualifications are recorded in d-fd5aff1eaf78a8c15d96723c; no fresh binary execution or runtime neutrality measurement here. No basis to infer a different game build or game mechanism from stale provenance.\\nOVERTURNED in exact current-session domain: manifest is truthful evidence of run-5bd0e537bb0c4c4f43987ac1, inherited helper is safely reusable unchanged across fresh sessions, and fresh timestamp/identical stdout repairs stale session identity. QUALIFIED: raw outputs and report survive as archived static measurements with documented provenance defect, not independent current-session or integrated acceptance. SURVIVES: failed boundary challenge is a failure, eight positive objdump subprocess records support static capture rather than zero-execution, and unaffected decoded ownership rows retain only the partial static domain in companion decision. A later report cannot retroactively turn overwritten prior-session output into an immutable original-run bundle.\\nINVALIDATE current-session/full-compare acceptance use of the entire verifier run-ee78b8773688ca09f8046e21/manifest.json package, its hard-coded helper as a fresh-run recipe, and any checkpoint/verdict depending on that attribution. Preserve original files and failure report; no in-place relabeling, rehash... (line truncated to 2000 chars)\n \"id\": \"d-0bb927e63b915c87a58d4257\",\n \"invalidated_checkpoint\": null,\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest provenance discriminator before capture: supply the actual new campaign run session explicitly to a fresh minimal capture recipe/direct manifest; verify it equals the launch record and output directory and that the directory does not already exist. Predeclare negative checks rejecting missing session, stale prior-session ID and reused output location before running objdump. Archive the recipe and interpreter/tool/source/input identities before capture; run all four exact/repaired complete-boundary windows plus companion negative boundary control into the new directory and record actual commands, timestamps, return codes and stream hashes. Fail closed on identity drift and any required failure; expected bad-boundary control must remain explicitly classified negative, never counted as a passing full stream. Independent verifier must reproduce with its own real session and fresh directory, not execute the inherited hard-coded helper or relabel this manifest. No probe was executed by resolver.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-d44b9f9e62272794d88bbed6\",\n \"timestamp\": \"2026-09-10T04:51:08.364275+00:00\"\n}","lineStart":1,"lineEnd":14,"totalLines":14,"truncated":false}},"title":"campaign/runtime/decisions/d-0bb927e63b915c87a58d4257.json","time":{"start":1789016982898,"end":1789016982918}},"metadata":{"openai":{"itemId":"fc_05aa6b418632de96016aa23b96b2c887d1a541f7720bf7bfc9"}},"id":"prt_089b8c56d001YRlja9G1ddEfPX","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b87459001llzEwo0AEWhtOU"}} +{"type":"tool_use","timestamp":1789016982924,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_ANuywrP5baLCGnKa9GsA5wvU","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/decisions/d-b51f3f76803e852ed250846a.json"},"output":"/home/alex/sots-re/campaign/runtime/decisions/d-b51f3f76803e852ed250846a.json\nfile\n\n1: {\n2: \"actor\": \"live-record surprise resolver\",\n3: \"contract\": \"research-completion-abi\",\n4: \"explanation\": \"Astra resolution, session run-f63d1e050a7ee3fac7b44885. OBSERVATION/PROVENANCE: reviewed complete raw get/create and append windows in verify/results/research-live-record-bridge/run-472955e277202c411388c66b; checkpoint d08b4bbf364f3305ee2fef98 rehashed manifest ae16b4b500db5b84bea27c659e254842ab0c67c040ca782c016381384338773b and both stdout artifacts to their recorded hashes. Historical capture manifest binds sots.exe 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd with positive nonempty exit-zero static execution. Current binary/tool were not rehashed or rerun: resolver shell denies that operation. Worktree HEAD/common directories match baselines; dirty content is not inferred from HEAD. No game or hook ran; read-only disassembly introduces no runtime instrument effects. No stale-build or game-mechanism diagnosis is justified.\\nOVERTURNED, exact captured normal miss-path domain: temporary EvTurn is initialized to zero, and append necessarily copies zero (recovered-static.md lines 68-69). Complete entry has no call before append and no store to EBP-0x20: prologue writes SEH at -4/-8/-c, stack reservation does not initialize locals, saved registers/cookie are below -24; miss stores vptr at -24, nested pointers at -1c/-18/-14 and EH state at -4. ECX names receiver+4. Append external-source branch loads source+4 at 0x884d62 and stores destination+4 at 0x884d6c, then nested-copy, then advances last at 0x884d78. Temporary nested cleanup at 0x885422 precedes requested-turn store to last-0x14 at 0x88542d.\\nSURVIVES in those static windows for valid containers and normally returning helpers: ECX receiver/one stack argument/ret4/EAX bucket ABI; full last-match scan; vptr and empty nested-header initialization; scalar EvTurn copy distinct from nested deep-copy; cleanup of temporary nested vector; final new bucket turn equals requested turn and EAX=last-0x18. Existin... (line truncated to 2000 chars)\n5: \"id\": \"d-b51f3f76803e852ed250846a\",\n6: \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-d2e4078886c66df34ee00b24.json\",\n7: \"invalidated_evidence\": [\n8: {\n9: \"axis\": \"static-recovery\",\n10: \"binaries\": [\n11: {\n12: \"path\": \"dumps/sots.exe\",\n13: \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n14: }\n15: ],\n16: \"id\": \"research-completion-abi-static-run-79357a65226f61d6a86c042d\",\n17: \"inputs\": [\n18: {\n19: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/report.md\",\n20: \"sha256\": \"d5a28f01002f1711cf8575ffd817a8f0998b413c6280d656e6cdad5a90a04477\"\n21: }\n22: ],\n23: \"integrated\": true,\n24: \"outcomes\": [\n25: {\n26: \"artifact\": {\n27: \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/manifest.json\",\n28: \"sha256\": \"4fdf2cbf02f0f3dd53c4ccfd1787a2fb8012d0de76dad63e97c2b5cfbdc6c46c\"\n29: },\n30: \"criterion\": \"ownership-recovered\",\n31: \"status\": \"pass\"\n32: }\n33: ],\n34: \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/manifest.json\",\n35: \"sha256\": \"4fdf2cbf02f0f3dd53c4ccfd1787a2fb8012d0de76dad63e97c2b5cfbdc6c46c\",\n36: \"source\": {\n37: \"engine\": {\n38: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n39: \"path\": \"/home/alex/sots-engine\"\n40: },\n41: \"re\": {\n42: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n43: \"path\": \"/home/alex/sots-re\"\n44: }\n45: },\n46: \"source_binding\": {\n47: \"engine\": {\n48: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n49: \"path\": \"/home/alex/sots-engine\",\n50: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n51: },\n52: \"re\": {\n53: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n54: \"path\": \"/home/alex/sots-re\",\n55: \"sha256\": \"e74ef6cff202ee35a6fdc38d63842b4826a074e34502dfc2981a33ffea912bd4\"\n56: }\n57: }\n58: },\n59: {\n60: \"axis\": \"validation\",\n61: \"binaries\": [\n62: {\n63: \"path\": \"dumps/sots.exe\",\n64: \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n65: }\n66: ],\n67: \"id\": \"research-completion-abi-validation-run-735fcb8f4876c10285b03fad\",\n68: \"inputs\": [\n69: {\n70: \"path\": \"verify/results/saves/turn3-state.sav\",\n71: \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n72: },\n73: {\n74: \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/manifest.json\",\n75: \"sha256\": \"4fdf2cbf02f0f3dd53c4ccfd1787a2fb8012d0de76dad63e97c2b5cfbdc6c46c\"\n76: }\n77: ],\n78: \"integrated\": true,\n79: \"outcomes\": [\n80: {\n81: \"artifact\": {\n82: \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/independent-state.json\",\n83: \"sha256\": \"6463816f322803b2b7b479e1fc116c4ffa33fb2772a3005d492422a00acea433\"\n84: },\n85: \"criterion\": \"independent-cross-check\",\n86: \"status\": \"pass\"\n87: }\n88: ],\n89: \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/independent-state.json\",\n90: \"sha256\": \"6463816f322803b2b7b479e1fc116c4ffa33fb2772a3005d492422a00acea433\",\n91: \"source\": {\n92: \"engine\": {\n93: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n94: \"path\": \"/home/alex/sots-engine\"\n95: },\n96: \"re\": {\n97: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n98: \"path\": \"/home/alex/sots-re\"\n99: }\n100: },\n101: \"source_binding\": {\n102: \"engine\": {\n103: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n104: \"path\": \"/home/alex/sots-engine\",\n105: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n106: },\n107: \"re\": {\n108: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n109: \"path\": \"/home/alex/sots-re\",\n110: \"sha256\": \"e74ef6cff202ee35a6fdc38d63842b4826a074e34502dfc2981a33ffea912bd4\"\n111: }\n112: }\n113: }\n114: ],\n115: \"model\": \"openai/gpt-6-astra\",\n116: \"probe\": \"Cheapest discriminator is read-only complete-window def/use review, performed on hash-checked archived get/create and append text here; no pre-append EBP-0x20 store exists. Before corrected acceptance, authorized analyst freshly hashes binary/tool and repeats manifest argv for those two windows plus nested empty-copy/cleanup, explicitly checks prologue stack offsets and cleanup-before-final-store order; independent verifier reproduces the corrected integrated package. No VM is needed for this interpretation repair. If transient runtime equivalence is later required, separately approve a leased fixture with two deliberately distinct initialized stack sentinels and spare/full capacity, pre/post-store observations and neutral controls; it is not authorized or executed here.\",\n117: \"role\": \"resolver\",\n118: \"schema\": \"sots-decision/1\",\n119: \"surprise\": \"s-c6786945b302de2a0b629960\",\n120: \"timestamp\": \"2026-09-10T04:19:02.935461+00:00\"\n121: }\n\n(End of file - total 121 lines)\n","metadata":{"preview":"{\n \"actor\": \"live-record surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution, session run-f63d1e050a7ee3fac7b44885. OBSERVATION/PROVENANCE: reviewed complete raw get/create and append windows in verify/results/research-live-record-bridge/run-472955e277202c411388c66b; checkpoint d08b4bbf364f3305ee2fef98 rehashed manifest ae16b4b500db5b84bea27c659e254842ab0c67c040ca782c016381384338773b and both stdout artifacts to their recorded hashes. Historical capture manifest binds sots.exe 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd with positive nonempty exit-zero static execution. Current binary/tool were not rehashed or rerun: resolver shell denies that operation. Worktree HEAD/common directories match baselines; dirty content is not inferred from HEAD. No game or hook ran; read-only disassembly introduces no runtime instrument effects. No stale-build or game-mechanism diagnosis is justified.\\nOVERTURNED, exact captured normal miss-path domain: temporary EvTurn is initialized to zero, and append necessarily copies zero (recovered-static.md lines 68-69). Complete entry has no call before append and no store to EBP-0x20: prologue writes SEH at -4/-8/-c, stack reservation does not initialize locals, saved registers/cookie are below -24; miss stores vptr at -24, nested pointers at -1c/-18/-14 and EH state at -4. ECX names receiver+4. Append external-source branch loads source+4 at 0x884d62 and stores destination+4 at 0x884d6c, then nested-copy, then advances last at 0x884d78. Temporary nested cleanup at 0x885422 precedes requested-turn store to last-0x14 at 0x88542d.\\nSURVIVES in those static windows for valid containers and normally returning helpers: ECX receiver/one stack argument/ret4/EAX bucket ABI; full last-match scan; vptr and empty nested-header initialization; scalar EvTurn copy distinct from nested deep-copy; cleanup of temporary nested vector; final new bucket turn equals requested turn and EAX=last-0x18. Existin... (line truncated to 2000 chars)\n \"id\": \"d-b51f3f76803e852ed250846a\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-d2e4078886c66df34ee00b24.json\",\n \"invalidated_evidence\": [\n {\n \"axis\": \"static-recovery\",\n \"binaries\": [\n {\n \"path\": \"dumps/sots.exe\",\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n }\n ],\n \"id\": \"research-completion-abi-static-run-79357a65226f61d6a86c042d\",\n \"inputs\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/report.md\",\n \"sha256\": \"d5a28f01002f1711cf8575ffd817a8f0998b413c6280d656e6cdad5a90a04477\"","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/decisions/d-b51f3f76803e852ed250846a.json","text":"{\n \"actor\": \"live-record surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution, session run-f63d1e050a7ee3fac7b44885. OBSERVATION/PROVENANCE: reviewed complete raw get/create and append windows in verify/results/research-live-record-bridge/run-472955e277202c411388c66b; checkpoint d08b4bbf364f3305ee2fef98 rehashed manifest ae16b4b500db5b84bea27c659e254842ab0c67c040ca782c016381384338773b and both stdout artifacts to their recorded hashes. Historical capture manifest binds sots.exe 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd with positive nonempty exit-zero static execution. Current binary/tool were not rehashed or rerun: resolver shell denies that operation. Worktree HEAD/common directories match baselines; dirty content is not inferred from HEAD. No game or hook ran; read-only disassembly introduces no runtime instrument effects. No stale-build or game-mechanism diagnosis is justified.\\nOVERTURNED, exact captured normal miss-path domain: temporary EvTurn is initialized to zero, and append necessarily copies zero (recovered-static.md lines 68-69). Complete entry has no call before append and no store to EBP-0x20: prologue writes SEH at -4/-8/-c, stack reservation does not initialize locals, saved registers/cookie are below -24; miss stores vptr at -24, nested pointers at -1c/-18/-14 and EH state at -4. ECX names receiver+4. Append external-source branch loads source+4 at 0x884d62 and stores destination+4 at 0x884d6c, then nested-copy, then advances last at 0x884d78. Temporary nested cleanup at 0x885422 precedes requested-turn store to last-0x14 at 0x88542d.\\nSURVIVES in those static windows for valid containers and normally returning helpers: ECX receiver/one stack argument/ret4/EAX bucket ABI; full last-match scan; vptr and empty nested-header initialization; scalar EvTurn copy distinct from nested deep-copy; cleanup of temporary nested vector; final new bucket turn equals requested turn and EAX=last-0x18. Existin... (line truncated to 2000 chars)\n \"id\": \"d-b51f3f76803e852ed250846a\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-d2e4078886c66df34ee00b24.json\",\n \"invalidated_evidence\": [\n {\n \"axis\": \"static-recovery\",\n \"binaries\": [\n {\n \"path\": \"dumps/sots.exe\",\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n }\n ],\n \"id\": \"research-completion-abi-static-run-79357a65226f61d6a86c042d\",\n \"inputs\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/report.md\",\n \"sha256\": \"d5a28f01002f1711cf8575ffd817a8f0998b413c6280d656e6cdad5a90a04477\"\n }\n ],\n \"integrated\": true,\n \"outcomes\": [\n {\n \"artifact\": {\n \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/manifest.json\",\n \"sha256\": \"4fdf2cbf02f0f3dd53c4ccfd1787a2fb8012d0de76dad63e97c2b5cfbdc6c46c\"\n },\n \"criterion\": \"ownership-recovered\",\n \"status\": \"pass\"\n }\n ],\n \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/manifest.json\",\n \"sha256\": \"4fdf2cbf02f0f3dd53c4ccfd1787a2fb8012d0de76dad63e97c2b5cfbdc6c46c\",\n \"source\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"source_binding\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\",\n \"sha256\": \"e74ef6cff202ee35a6fdc38d63842b4826a074e34502dfc2981a33ffea912bd4\"\n }\n }\n },\n {\n \"axis\": \"validation\",\n \"binaries\": [\n {\n \"path\": \"dumps/sots.exe\",\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n }\n ],\n \"id\": \"research-completion-abi-validation-run-735fcb8f4876c10285b03fad\",\n \"inputs\": [\n {\n \"path\": \"verify/results/saves/turn3-state.sav\",\n \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/manifest.json\",\n \"sha256\": \"4fdf2cbf02f0f3dd53c4ccfd1787a2fb8012d0de76dad63e97c2b5cfbdc6c46c\"\n }\n ],\n \"integrated\": true,\n \"outcomes\": [\n {\n \"artifact\": {\n \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/independent-state.json\",\n \"sha256\": \"6463816f322803b2b7b479e1fc116c4ffa33fb2772a3005d492422a00acea433\"\n },\n \"criterion\": \"independent-cross-check\",\n \"status\": \"pass\"\n }\n ],\n \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/independent-state.json\",\n \"sha256\": \"6463816f322803b2b7b479e1fc116c4ffa33fb2772a3005d492422a00acea433\",\n \"source\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"source_binding\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\",\n \"sha256\": \"e74ef6cff202ee35a6fdc38d63842b4826a074e34502dfc2981a33ffea912bd4\"\n }\n }\n }\n ],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest discriminator is read-only complete-window def/use review, performed on hash-checked archived get/create and append text here; no pre-append EBP-0x20 store exists. Before corrected acceptance, authorized analyst freshly hashes binary/tool and repeats manifest argv for those two windows plus nested empty-copy/cleanup, explicitly checks prologue stack offsets and cleanup-before-final-store order; independent verifier reproduces the corrected integrated package. No VM is needed for this interpretation repair. If transient runtime equivalence is later required, separately approve a leased fixture with two deliberately distinct initialized stack sentinels and spare/full capacity, pre/post-store observations and neutral controls; it is not authorized or executed here.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-c6786945b302de2a0b629960\",\n \"timestamp\": \"2026-09-10T04:19:02.935461+00:00\"\n}","lineStart":1,"lineEnd":121,"totalLines":121,"truncated":false}},"title":"campaign/runtime/decisions/d-b51f3f76803e852ed250846a.json","time":{"start":1789016982903,"end":1789016982921}},"metadata":{"openai":{"itemId":"fc_05aa6b418632de96016aa23b96b2d087d19cab2f0f880570fa"}},"id":"prt_089b8c573001rBneaLXDAJ0fav","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b87459001llzEwo0AEWhtOU"}} +{"type":"tool_use","timestamp":1789016983061,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"glob","callID":"call_hPu3U11W1Zc2O2skoB0NwfL4","state":{"status":"completed","input":{"path":"/home/alex/sots-re/verify/results","pattern":"research-completion-abi*verifier*/**/*"},"output":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/reproduce_run_ee78b8773688ca09f8046e21.py\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-ee78b8773688ca09f8046e21.md\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/nested-copy-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/nested-dtor-exact.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/turn-append-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/nested-dtor-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/turn-append-exact.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/turn-get-create-exact.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/nested-dtor-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/manifest.json\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/turn-get-create-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/turn-get-create-exact.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/nested-dtor-exact.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/nested-copy-exact.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/turn-get-create-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/turn-append-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/nested-copy-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/turn-append-exact.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/nested-copy-exact.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/report-run-5bd0e537bb0c4c4f43987ac1.md","metadata":{"count":20,"truncated":false},"title":"verify/results","time":{"start":1789016983010,"end":1789016983032}},"metadata":{"openai":{"itemId":"fc_05aa6b418632de96016aa23b96b2f887d190c6dc4c0427ef1a"}},"id":"prt_089b8c5de001St5TLZo2JxRMvm","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b87459001llzEwo0AEWhtOU"}} +{"type":"tool_use","timestamp":1789016983061,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"glob","callID":"call_pNkD0ZAjs7904uJvNDz5ORcK","state":{"status":"completed","input":{"path":"/home/alex/sots-re/verify/results/research-completion-abi","pattern":"run-79357a65226f61d6a86c042d/*"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-audit.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-audit-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/report.md\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-terminal-bytes.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-copy-audit.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/import-thunks-audit.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-terminal-bytes.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/manifest.json\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-terminal-bytes.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-terminal-bytes.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-terminal-bytes.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-audit-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-narrow.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-terminal-bytes.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-terminal-bytes.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-narrow.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-ctor-audit.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/import-thunks-audit.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-audit.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-dtor-audit.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-audit.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-narrow.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-terminal-bytes.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-narrow.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-audit-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-ctor-audit.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-narrow.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-audit.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-terminal-bytes.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-audit-wide.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/comparison.json\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-terminal-bytes.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-audit.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-narrow.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-audit-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-terminal-bytes.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-wide.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-dtor-audit.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-terminal-bytes.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-audit.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-copy-audit.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-audit-wide.stderr.txt","metadata":{"count":47,"truncated":false},"title":"verify/results/research-completion-abi","time":{"start":1789016983016,"end":1789016983035}},"metadata":{"openai":{"itemId":"fc_05aa6b418632de96016aa23b96b30087d1ac0abfbdbc37622d"}},"id":"prt_089b8c5e40015l439czlZZcKh7","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b87459001llzEwo0AEWhtOU"}} +{"type":"tool_use","timestamp":1789016983061,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_5TEeFdV5pkDpEImDwfofTajj","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/decisions/d-d4c494ba02ada278030ef473.json"},"output":"/home/alex/sots-re/campaign/runtime/decisions/d-d4c494ba02ada278030ef473.json\nfile\n\n1: {\n2: \"actor\": \"research-problem-resolver\",\n3: \"contract\": \"research-completion-abi\",\n4: \"explanation\": \"Astra resolution, session run-7cc79c9a0461bcbeac0abf28. OBSERVATION/PROVENANCE: directly inspected objdump-2026-09-09-ownership.txt lines 8-11,102,118,138 and independent run-eba7860308317f839eb35392 observed-alloc/player-append/player-copy.stdout.txt: archive prints c2 04 00 at 0x57e5e3/0x86c62d/0x7694bf, independent exact-stop outputs print c2 only (while decoder still labels ret 4). Archive explicitly calls itself SELECTED windows, so whole-file unfiltered completeness was never warranted; selection alone cannot explain adding bytes beyond declared stops. Production history remains unknown. IDENTITY/EXECUTION: manifest and reproducer bind executable SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd (reported GNU 2.38); subprocess PIPE bytes are persisted without filtering, argv/cwd/return codes/nonempty stdout/empty stderr recorded. Hashes are historical measurements, not fresh binary rehashes by this resolver. Fresh paired git HEAD/common-dir checks match engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 at /home/alex/sots-engine/.git and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7 at /home/alex/sots-re/.git; dirty source manifests are in runner source_before. No candidate build or game process executed: no stale-build diagnosis and no runtime instrument-neutrality claim. Absolute versus relative input paths legitimately alter stdout headers. Stop-boundary-dependent byte display, including mnemonic decoding beyond printed bytes, prevents using ret text as a complete-byte observation. CLAIM DISPOSITIONS: (1) OVERTURNED: the three selected terminal byte rows being reproducible from the declared narrow commands under the bound instrument; invalidate their command-to-byte provenance. (2) QUALIFIED: ret-4 ABI for allocator 0x57e590, append 0x86c580 and copy 0x7693f0 remains a static hypothesis supported by decoded text, pending complete-byte recap... (line truncated to 2000 chars)\n5: \"id\": \"d-d4c494ba02ada278030ef473\",\n6: \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-0097da20f564f89191a49da6.json\",\n7: \"invalidated_evidence\": [],\n8: \"model\": \"openai/gpt-6-astra\",\n9: \"probe\": \"Cheapest discriminating experiment: authorized ABI analyst, fresh owned output directory, no lab access, checkpoint first. Pin and hash input, objdump/version and paired source binding before and after capture. Run /usr/bin/objdump -D -Mintel on the same executable for start/stop pairs 0x0057e590:(0x0057e5e4,0x0057e5e6), 0x0086c580:(0x0086c62e,0x0086c630), 0x007693f0:(0x007694c0,0x007694c2). Preserve literal stdout/stderr, exact argv/cwd, exit status and SHA256 for all six runs. Prediction: narrow prints c2 only, widened prints c2 04 00, all preceding instruction bytes agree after accounting only for documented header path differences. Also retain raw byte dumps spanning each terminal instruction to cross-check decoding. Any changed interior byte/input/tool identity or different terminal immediate stops repair and requires another surprise, not normalization. Audit remaining ownership terminal boundaries; recapture any truncated window with minimal full-instruction widening and retain all full streams. Then update owned provenance index/handoff to cite this decision and superseding artifacts without rewriting history. Fresh independent verifier must reproduce complete repaired windows and meaningful boundary challenge, finish ownership branch/archived-state checks, and explicitly retain live-safety limitations before either acceptance criterion can pass.\",\n10: \"role\": \"resolver\",\n11: \"schema\": \"sots-decision/1\",\n12: \"surprise\": \"s-4f71bf4a5df4e5fc992bb6b2\",\n13: \"timestamp\": \"2026-09-10T00:49:57.462505+00:00\"\n14: }\n\n(End of file - total 14 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution, session run-7cc79c9a0461bcbeac0abf28. OBSERVATION/PROVENANCE: directly inspected objdump-2026-09-09-ownership.txt lines 8-11,102,118,138 and independent run-eba7860308317f839eb35392 observed-alloc/player-append/player-copy.stdout.txt: archive prints c2 04 00 at 0x57e5e3/0x86c62d/0x7694bf, independent exact-stop outputs print c2 only (while decoder still labels ret 4). Archive explicitly calls itself SELECTED windows, so whole-file unfiltered completeness was never warranted; selection alone cannot explain adding bytes beyond declared stops. Production history remains unknown. IDENTITY/EXECUTION: manifest and reproducer bind executable SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd (reported GNU 2.38); subprocess PIPE bytes are persisted without filtering, argv/cwd/return codes/nonempty stdout/empty stderr recorded. Hashes are historical measurements, not fresh binary rehashes by this resolver. Fresh paired git HEAD/common-dir checks match engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 at /home/alex/sots-engine/.git and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7 at /home/alex/sots-re/.git; dirty source manifests are in runner source_before. No candidate build or game process executed: no stale-build diagnosis and no runtime instrument-neutrality claim. Absolute versus relative input paths legitimately alter stdout headers. Stop-boundary-dependent byte display, including mnemonic decoding beyond printed bytes, prevents using ret text as a complete-byte observation. CLAIM DISPOSITIONS: (1) OVERTURNED: the three selected terminal byte rows being reproducible from the declared narrow commands under the bound instrument; invalidate their command-to-byte provenance. (2) QUALIFIED: ret-4 ABI for allocator 0x57e590, append 0x86c580 and copy 0x7693f0 remains a static hypothesis supported by decoded text, pending complete-byte recap... (line truncated to 2000 chars)\n \"id\": \"d-d4c494ba02ada278030ef473\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-0097da20f564f89191a49da6.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest discriminating experiment: authorized ABI analyst, fresh owned output directory, no lab access, checkpoint first. Pin and hash input, objdump/version and paired source binding before and after capture. Run /usr/bin/objdump -D -Mintel on the same executable for start/stop pairs 0x0057e590:(0x0057e5e4,0x0057e5e6), 0x0086c580:(0x0086c62e,0x0086c630), 0x007693f0:(0x007694c0,0x007694c2). Preserve literal stdout/stderr, exact argv/cwd, exit status and SHA256 for all six runs. Prediction: narrow prints c2 only, widened prints c2 04 00, all preceding instruction bytes agree after accounting only for documented header path differences. Also retain raw byte dumps spanning each terminal instruction to cross-check decoding. Any changed interior byte/input/tool identity or different terminal immediate stops repair and requires another surprise, not normalization. Audit remaining ownership terminal boundaries; recapture any truncated window with minimal full-instruction widening and retain all full streams. Then update owned provenance index/handoff to cite this decision and superseding artifacts without rewriting history. Fresh independent verifier must reproduce complete repaired windows and meaningful boundary challenge, finish ownership branch/archived-state checks, and explicitly retain live-safety limitations before either acceptance criterion can pass.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-4f71bf4a5df4e5fc992bb6b2\",\n \"timestamp\": \"2026-09-10T00:49:57.462505+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/decisions/d-d4c494ba02ada278030ef473.json","text":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution, session run-7cc79c9a0461bcbeac0abf28. OBSERVATION/PROVENANCE: directly inspected objdump-2026-09-09-ownership.txt lines 8-11,102,118,138 and independent run-eba7860308317f839eb35392 observed-alloc/player-append/player-copy.stdout.txt: archive prints c2 04 00 at 0x57e5e3/0x86c62d/0x7694bf, independent exact-stop outputs print c2 only (while decoder still labels ret 4). Archive explicitly calls itself SELECTED windows, so whole-file unfiltered completeness was never warranted; selection alone cannot explain adding bytes beyond declared stops. Production history remains unknown. IDENTITY/EXECUTION: manifest and reproducer bind executable SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd (reported GNU 2.38); subprocess PIPE bytes are persisted without filtering, argv/cwd/return codes/nonempty stdout/empty stderr recorded. Hashes are historical measurements, not fresh binary rehashes by this resolver. Fresh paired git HEAD/common-dir checks match engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 at /home/alex/sots-engine/.git and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7 at /home/alex/sots-re/.git; dirty source manifests are in runner source_before. No candidate build or game process executed: no stale-build diagnosis and no runtime instrument-neutrality claim. Absolute versus relative input paths legitimately alter stdout headers. Stop-boundary-dependent byte display, including mnemonic decoding beyond printed bytes, prevents using ret text as a complete-byte observation. CLAIM DISPOSITIONS: (1) OVERTURNED: the three selected terminal byte rows being reproducible from the declared narrow commands under the bound instrument; invalidate their command-to-byte provenance. (2) QUALIFIED: ret-4 ABI for allocator 0x57e590, append 0x86c580 and copy 0x7693f0 remains a static hypothesis supported by decoded text, pending complete-byte recap... (line truncated to 2000 chars)\n \"id\": \"d-d4c494ba02ada278030ef473\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-0097da20f564f89191a49da6.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest discriminating experiment: authorized ABI analyst, fresh owned output directory, no lab access, checkpoint first. Pin and hash input, objdump/version and paired source binding before and after capture. Run /usr/bin/objdump -D -Mintel on the same executable for start/stop pairs 0x0057e590:(0x0057e5e4,0x0057e5e6), 0x0086c580:(0x0086c62e,0x0086c630), 0x007693f0:(0x007694c0,0x007694c2). Preserve literal stdout/stderr, exact argv/cwd, exit status and SHA256 for all six runs. Prediction: narrow prints c2 only, widened prints c2 04 00, all preceding instruction bytes agree after accounting only for documented header path differences. Also retain raw byte dumps spanning each terminal instruction to cross-check decoding. Any changed interior byte/input/tool identity or different terminal immediate stops repair and requires another surprise, not normalization. Audit remaining ownership terminal boundaries; recapture any truncated window with minimal full-instruction widening and retain all full streams. Then update owned provenance index/handoff to cite this decision and superseding artifacts without rewriting history. Fresh independent verifier must reproduce complete repaired windows and meaningful boundary challenge, finish ownership branch/archived-state checks, and explicitly retain live-safety limitations before either acceptance criterion can pass.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-4f71bf4a5df4e5fc992bb6b2\",\n \"timestamp\": \"2026-09-10T00:49:57.462505+00:00\"\n}","lineStart":1,"lineEnd":14,"totalLines":14,"truncated":false}},"title":"campaign/runtime/decisions/d-d4c494ba02ada278030ef473.json","time":{"start":1789016982991,"end":1789016983039}},"metadata":{"openai":{"itemId":"fc_05aa6b418632de96016aa23b96b2dc87d18b16cec197a0d5b9"}},"id":"prt_089b8c57c001gbd2xCVljO0lPB","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b87459001llzEwo0AEWhtOU"}} +{"type":"tool_use","timestamp":1789016983061,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"read","callID":"call_qnEUGxpylx7WlPHbFuAuyFOP","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/decisions/d-d2a9b8be6399a6abaa0e05a5.json"},"output":"/home/alex/sots-re/campaign/runtime/decisions/d-d2a9b8be6399a6abaa0e05a5.json\nfile\n\n1: {\n2: \"actor\": \"research-problem-resolver\",\n3: \"contract\": \"research-completion-abi\",\n4: \"explanation\": \"Resolution-only Astra decision; session run-1334385869fb7d5b940d5423. OBSERVATION/provenance: raw objdump-2026-09-09-dedup-helper.txt SHA256 3bc3c368f30f2ef2b0d291acad9c0f898b74f4436393d47bf8c942571793dd06 declares unfiltered stop 0x00825e65 but displays c2 08 00 at 0x00825e64. Independent result.md SHA256 257c48f099c3efd92debbbe66ce5bad8241d0d941ff0d6725b07926e71577b53 reports exact-command c2, 120 instructions, zero exit; other windows 26/51/51 instructions match after line-end whitespace normalization. Its fresh stdout is reported by hash, not available here as an independently inspected raw capture. Identity: directly checked paired HEADs engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7 and canonical common Git directories; dirty inventories observed, not edited. Historical content bindings are not freshly certified; resolver source-binding execution was denied. Original executable SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump 2.38 are verifier-reported; executable/tool hashes must be checked in repair. Positive execution is reported STATIC tool execution only, no live game workload. Archive inspection is game-neutral; no runtime hook-neutrality test exists. No evidence warrants a stale-build or game-mechanism diagnosis. CLAIM DISPOSITIONS: (1) OVERTURNED: this archive is exact unfiltered stdout of its declared first command under the verifier instrument; invalidate that provenance and completeness claim, not all matching instructions. (2) QUALIFIED: stop-boundary truncation is the cheapest explanation of the discrepancy; widened capture is untested here. Manual splicing versus another effective command/tool cannot be diagnosed from present evidence. (3) SURVIVES in inspected archive/reported matching-window static domain: description addresses are passed to 0x0046f8c0, caller cleans stack, zero selects match, helper/callees encode byte-and-length inequality an... (line truncated to 2000 chars)\n5: \"id\": \"d-d2a9b8be6399a6abaa0e05a5\",\n6: \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-1381c2e77b8c4a68c6809a23.json\",\n7: \"invalidated_evidence\": [],\n8: \"model\": \"openai/gpt-6-astra\",\n9: \"probe\": \"Cheapest discriminating experiment, NOT executed by this resolver: lead schedule ABI analyst in an authorized bounded worker session; verify paired source-content identities and hash dumps/sots.exe against 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841; pin objdump executable path/hash/version, cwd and argv; checkpoint before experiment. Execute objdump -D -Mintel --start-address=0x00825d40 --stop-address=0x00825e65 dumps/sots.exe and separately objdump -D -Mintel --start-address=0x00825d40 --stop-address=0x00825e67 dumps/sots.exe. Archive each unfiltered stdout/stderr byte stream separately with exit status, hashes and positive nonzero/address coverage. Predict narrow c2 versus wide c2 08 00 at 0x00825e64 with identical preceding instructions; compare existing archive, recording normalization only in a derivative comparison. Never silently edit old capture or infer its production history. If identity or preceding instructions differ, stop and escalate anew. If prediction holds, supersede provenance with fresh wide capture, update owned handoff/index with this decision link, then independent verifier reproduces all four complete windows and resumes its predeclared ABI/NaN challenge. Affected semantic promotion stays blocked until this repair and review; no live execution or acceptance is supplied by the decision.\",\n10: \"role\": \"resolver\",\n11: \"schema\": \"sots-decision/1\",\n12: \"surprise\": \"s-5c58b6a921997731f5b5ae1f\",\n13: \"timestamp\": \"2026-09-10T00:23:50.323919+00:00\"\n14: }\n\n(End of file - total 14 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Resolution-only Astra decision; session run-1334385869fb7d5b940d5423. OBSERVATION/provenance: raw objdump-2026-09-09-dedup-helper.txt SHA256 3bc3c368f30f2ef2b0d291acad9c0f898b74f4436393d47bf8c942571793dd06 declares unfiltered stop 0x00825e65 but displays c2 08 00 at 0x00825e64. Independent result.md SHA256 257c48f099c3efd92debbbe66ce5bad8241d0d941ff0d6725b07926e71577b53 reports exact-command c2, 120 instructions, zero exit; other windows 26/51/51 instructions match after line-end whitespace normalization. Its fresh stdout is reported by hash, not available here as an independently inspected raw capture. Identity: directly checked paired HEADs engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7 and canonical common Git directories; dirty inventories observed, not edited. Historical content bindings are not freshly certified; resolver source-binding execution was denied. Original executable SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump 2.38 are verifier-reported; executable/tool hashes must be checked in repair. Positive execution is reported STATIC tool execution only, no live game workload. Archive inspection is game-neutral; no runtime hook-neutrality test exists. No evidence warrants a stale-build or game-mechanism diagnosis. CLAIM DISPOSITIONS: (1) OVERTURNED: this archive is exact unfiltered stdout of its declared first command under the verifier instrument; invalidate that provenance and completeness claim, not all matching instructions. (2) QUALIFIED: stop-boundary truncation is the cheapest explanation of the discrepancy; widened capture is untested here. Manual splicing versus another effective command/tool cannot be diagnosed from present evidence. (3) SURVIVES in inspected archive/reported matching-window static domain: description addresses are passed to 0x0046f8c0, caller cleans stack, zero selects match, helper/callees encode byte-and-length inequality an... (line truncated to 2000 chars)\n \"id\": \"d-d2a9b8be6399a6abaa0e05a5\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-1381c2e77b8c4a68c6809a23.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest discriminating experiment, NOT executed by this resolver: lead schedule ABI analyst in an authorized bounded worker session; verify paired source-content identities and hash dumps/sots.exe against 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841; pin objdump executable path/hash/version, cwd and argv; checkpoint before experiment. Execute objdump -D -Mintel --start-address=0x00825d40 --stop-address=0x00825e65 dumps/sots.exe and separately objdump -D -Mintel --start-address=0x00825d40 --stop-address=0x00825e67 dumps/sots.exe. Archive each unfiltered stdout/stderr byte stream separately with exit status, hashes and positive nonzero/address coverage. Predict narrow c2 versus wide c2 08 00 at 0x00825e64 with identical preceding instructions; compare existing archive, recording normalization only in a derivative comparison. Never silently edit old capture or infer its production history. If identity or preceding instructions differ, stop and escalate anew. If prediction holds, supersede provenance with fresh wide capture, update owned handoff/index with this decision link, then independent verifier reproduces all four complete windows and resumes its predeclared ABI/NaN challenge. Affected semantic promotion stays blocked until this repair and review; no live execution or acceptance is supplied by the decision.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-5c58b6a921997731f5b5ae1f\",\n \"timestamp\": \"2026-09-10T00:23:50.323919+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/decisions/d-d2a9b8be6399a6abaa0e05a5.json","text":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Resolution-only Astra decision; session run-1334385869fb7d5b940d5423. OBSERVATION/provenance: raw objdump-2026-09-09-dedup-helper.txt SHA256 3bc3c368f30f2ef2b0d291acad9c0f898b74f4436393d47bf8c942571793dd06 declares unfiltered stop 0x00825e65 but displays c2 08 00 at 0x00825e64. Independent result.md SHA256 257c48f099c3efd92debbbe66ce5bad8241d0d941ff0d6725b07926e71577b53 reports exact-command c2, 120 instructions, zero exit; other windows 26/51/51 instructions match after line-end whitespace normalization. Its fresh stdout is reported by hash, not available here as an independently inspected raw capture. Identity: directly checked paired HEADs engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7 and canonical common Git directories; dirty inventories observed, not edited. Historical content bindings are not freshly certified; resolver source-binding execution was denied. Original executable SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump 2.38 are verifier-reported; executable/tool hashes must be checked in repair. Positive execution is reported STATIC tool execution only, no live game workload. Archive inspection is game-neutral; no runtime hook-neutrality test exists. No evidence warrants a stale-build or game-mechanism diagnosis. CLAIM DISPOSITIONS: (1) OVERTURNED: this archive is exact unfiltered stdout of its declared first command under the verifier instrument; invalidate that provenance and completeness claim, not all matching instructions. (2) QUALIFIED: stop-boundary truncation is the cheapest explanation of the discrepancy; widened capture is untested here. Manual splicing versus another effective command/tool cannot be diagnosed from present evidence. (3) SURVIVES in inspected archive/reported matching-window static domain: description addresses are passed to 0x0046f8c0, caller cleans stack, zero selects match, helper/callees encode byte-and-length inequality an... (line truncated to 2000 chars)\n \"id\": \"d-d2a9b8be6399a6abaa0e05a5\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-1381c2e77b8c4a68c6809a23.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest discriminating experiment, NOT executed by this resolver: lead schedule ABI analyst in an authorized bounded worker session; verify paired source-content identities and hash dumps/sots.exe against 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841; pin objdump executable path/hash/version, cwd and argv; checkpoint before experiment. Execute objdump -D -Mintel --start-address=0x00825d40 --stop-address=0x00825e65 dumps/sots.exe and separately objdump -D -Mintel --start-address=0x00825d40 --stop-address=0x00825e67 dumps/sots.exe. Archive each unfiltered stdout/stderr byte stream separately with exit status, hashes and positive nonzero/address coverage. Predict narrow c2 versus wide c2 08 00 at 0x00825e64 with identical preceding instructions; compare existing archive, recording normalization only in a derivative comparison. Never silently edit old capture or infer its production history. If identity or preceding instructions differ, stop and escalate anew. If prediction holds, supersede provenance with fresh wide capture, update owned handoff/index with this decision link, then independent verifier reproduces all four complete windows and resumes its predeclared ABI/NaN challenge. Affected semantic promotion stays blocked until this repair and review; no live execution or acceptance is supplied by the decision.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-5c58b6a921997731f5b5ae1f\",\n \"timestamp\": \"2026-09-10T00:23:50.323919+00:00\"\n}","lineStart":1,"lineEnd":14,"totalLines":14,"truncated":false}},"title":"campaign/runtime/decisions/d-d2a9b8be6399a6abaa0e05a5.json","time":{"start":1789016982997,"end":1789016983055}},"metadata":{"openai":{"itemId":"fc_05aa6b418632de96016aa23b96b2e487d19968d16014c58878"}},"id":"prt_089b8c5d1001J92n42GLKnIJJa","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b87459001llzEwo0AEWhtOU"}} +{"type":"tool_use","timestamp":1789016983073,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"glob","callID":"call_sdXBPcdfU3UeSUCICMowiw2e","state":{"status":"completed","input":{"path":"/home/alex/sots-re/verify/results/research-completion-abi","pattern":"run-16f8e9b6376b278c4870be09/*"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-dtor.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/manifest.json\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-get-create.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-copy.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-copy.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-append.stderr.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-dtor.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/report.md\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/capture.py\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-append.stdout.txt\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-get-create.stdout.txt","metadata":{"count":11,"truncated":false},"title":"verify/results/research-completion-abi","time":{"start":1789016983021,"end":1789016983063}},"metadata":{"openai":{"itemId":"fc_05aa6b418632de96016aa23b96b30c87d1bccb02f30fc365d5"}},"id":"prt_089b8c5ea0010OSD5d7FKWeRfZ","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b87459001llzEwo0AEWhtOU"}} +{"type":"tool_use","timestamp":1789016983180,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"type":"tool","tool":"bash","callID":"call_24upw4U2MRbsbd6CqXzo1hcx","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re","workdir":"/home/alex/sots-re"},"output":"{\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n}\n","metadata":{"output":"{\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n}\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re","time":{"start":1789016983002,"end":1789016983178}},"metadata":{"openai":{"itemId":"fc_05aa6b418632de96016aa23b96b2ec87d1b5575b4dffe8e1c3"}},"id":"prt_089b8c5d60012gumUaAYlwRQBy","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","messageID":"msg_089b87459001llzEwo0AEWhtOU"}} +{"type":"step_finish","timestamp":1789016983222,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"id":"prt_089b8c6b3001cHbyYmIdVYF0c1","reason":"tool-calls","snapshot":"4e667db3b539c8e68b91c223ed3bd211d337ca21","messageID":"msg_089b87459001llzEwo0AEWhtOU","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","type":"step-finish","tokens":{"total":73216,"input":3952,"output":442,"reasoning":86,"cache":{"write":0,"read":68736}},"cost":0}} +{"type":"step_start","timestamp":1789016985525,"sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","part":{"id":"prt_089b8cfb1001vn14mwttfwnZJy","messageID":"msg_089b8c6ea001rTNRnrLt1C2hzr","sessionID":"ses_f7648d4bcffeMQQzfamMDUe0AC","snapshot":"47edc60cb3eb2d487add49c921158fd7422568c9","type":"step-start"}} diff --git a/campaign/runtime/runs/run-81e5e65ab544c63ed8984365.stderr.log b/campaign/runtime/runs/run-81e5e65ab544c63ed8984365.stderr.log new file mode 100644 index 0000000..e69de29 diff --git a/campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json b/campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json new file mode 100644 index 0000000..e25e941 --- /dev/null +++ b/campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json @@ -0,0 +1,5218 @@ +{ + "actor": "research-abi-correction-verifier", + "checkpoint_session": "run-d6c4dc15e9f4d15155fee856", + "command": [ + "opencode", + "run", + "--format", + "json", + "--model", + "openai/gpt-5.6-sol", + "--agent", + "sots-verifier", + "Start a FRESH bounded campaign quantum (40 steps). No delegation.\nRole=verifier; requested model=openai/gpt-5.6-sol; actor=research-abi-correction-verifier; checkpoint session=run-d6c4dc15e9f4d15155fee856.\nCanonical state root: /home/alex/sots-re\nContract: /home/alex/sots-re/campaign/contracts/research-completion-abi.json\nLatest checkpoint: campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\nEngine worktree: /tmp/opencode/sots-final-research-engine\nRE worktree: /tmp/opencode/sots-final-research-re\nRead canonical campaign/README.md, contract, latest checkpoint and open surprises before work. Verify source/worktree/resource identities. Only edit owned scope. Missing state means blocked. Do not commit, stage, push or mutate lab resources without explicit authority and a lease. Checkpoint every 20 tool calls or 15 minutes, before experiments, compaction and stopping; persist under canonical campaign/ using tools/campaign.py with the session above, exact model, actor and role. Include observations versus decisions, source identities, artifact paths, tests, blockers and ONE exact next action. Fresh checkpoint at quantum end is mandatory. Record a surprise and pause affected work if assumptions are falsified. Workers cannot change architecture. Do not rely on chat resume or automatic compaction." + ], + "config": { + "canonical_files": { + "campaign/agents/analyst.md": "895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952", + "campaign/agents/implementer.md": "eb5581051a92b3d2b9ddd947812b1c02ff6a0b5e7619e7674adc26701e9a3d91", + "campaign/agents/lab.md": "48f1765ebdcb2015e631ad91428f65735ff899e119134b652f70788ff2eae5b8", + "campaign/agents/lead.md": "8fcfe52be845ed98a172afb47ea888b19bb7bffa80f7b50ace58d2bb66924220", + "campaign/agents/resolver.md": "742c36dc8567669d462566d6121eed42fcff5bff34e8eff466e92249f7ca195f", + "campaign/agents/verifier.md": "e467fc644e4e37d631a7a4e35038d9d3d0498491f1d7811d61d99271ff345c6b", + "campaign/models.json": "00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48", + "opencode.json": "027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99" + }, + "effective": { + "agent_sha256": "468c1dace9725c494d826ac41a8ebd79b50387eaabd92161005c125f21ee8016", + "sha256": "ef16bed80451572986c1eae10b1bce128fb23bdfbdb2c315bb83faf1c2385937" + }, + "expanded_prompt_sha256": "3ba305b39b9c1925acd4652dfda1792fe337ef9f7194b7da9a036e237571de9f", + "overlay": { + "agent": { + "sots-verifier": { + "model": "openai/gpt-5.6-sol", + "permission": { + "bash": "allow", + "edit": { + "*": "allow", + "*/sots-engine*/src/*": "deny", + "*AGENTS.md": "deny", + "*campaign/agents/*": "deny", + "*campaign/models.json": "deny", + "*docs/architecture.md": "deny", + "*guides/multi-agent-workflow.md": "deny", + "*opencode.json": "deny" + }, + "external_directory": { + "*": "deny", + "/home/alex/sots-re": "allow", + "/home/alex/sots-re/*": "allow", + "/tmp/opencode/sots-final-research-engine": "allow", + "/tmp/opencode/sots-final-research-engine/*": "allow", + "/tmp/opencode/sots-final-research-re": "allow", + "/tmp/opencode/sots-final-research-re/*": "allow" + }, + "glob": "allow", + "grep": "allow", + "list": "allow", + "question": "deny", + "read": "allow", + "task": "deny" + }, + "prompt": "You are the independent SOTS verifier, a separate execution from the implementation author.\nRead canonical RE AGENTS.md, campaign/README.md, the contract, raw evidence and checkpoint.\nChallenge the interpretation, boundary and instrument, not just the implementation syntax.\nBefore coding starts define falsifiers, required branch exposures and distinct states. Afterward\nreproduce from the handoff alone and challenge at least one assumption with a held-out workload,\nboundary, negative control or ablation. Check actual state/RNG independently of reported counters.\n\nReject missing/invalid inputs, zero execution, unexpected skips, truncated coverage, stale binary\nidentity and self-certified evidence. Separate original-assisted, partial compare, full compare,\nindependent replacement and integrated replay. Whole-state equality on one workload has that\nworkload's scope. Record failed predictions and residuals without converting them into success.\n\nOwn verification artifacts only; no edits to implementation to make tests pass, architecture\nchanges, delegates, shared status or unleased lab actions. Plan-changing surprises require Astra.\nCheckpoint every 20 calls/15min and before compaction, experiments, handoff/stop. Finish each\n40-step quantum with reproduction commands/results and exact next action in canonical RE.\n", + "steps": 40 + } + }, + "model": "openai/gpt-5.6-sol" + }, + "path": "/home/alex/sots-re/opencode.json", + "sha256": "027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99" + }, + "contract": "research-completion-abi", + "cwd": "/tmp/opencode/sots-final-research-re", + "id": "run-d6c4dc15e9f4d15155fee856", + "max_steps": 40, + "requested_model": "openai/gpt-5.6-sol", + "resolution_only": false, + "role": "verifier", + "schema": "sots-run/1", + "source_before": { + "engine": { + "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", + "files": { + ".gitignore": { + "mode": 420, + "sha256": "5103c9533f0d31fea29c0cc85d543692af84a697416dfa7557e31c9843210145" + }, + "AGENTS.md": { + "mode": 420, + "sha256": "7d1d4bc05c35e3354a77b3c8d5d2c04fb9d6658d09e87bc814a50bc3d2033fb7" + }, + "CLAUDE.md": { + "mode": 420, + "sha256": "15d60c3d592302a2854df8bf6d39c0a578c22b9273a633447e10b76fd76291f5" + }, + "CMakeLists.txt": { + "mode": 420, + "sha256": "6e9791511ea23bf8bf5f7f58617a7e77bbe5006829609e425e565c11c1e8d7ed" + }, + "CMakePresets.json": { + "mode": 420, + "sha256": "fcd1dfe3989ee4f56fa3e419059e1db5621922165edf05f13cfe8e5d786d8bb0" + }, + "CONTRIBUTING.md": { + "mode": 420, + "sha256": "26a381fe08feb51f861655f77de4e558f056d1dba79162a2e82513a92d0e6506" + }, + "LICENSE": { + "mode": 420, + "sha256": "eedebad43ea495111bf4451d78cb440309d90a733d6a36445699dde0629f1858" + }, + "README.md": { + "mode": 420, + "sha256": "66c2437fe4f074e6499de50b0d5f0d013bc290333f4d4bf554b541261885a0c1" + }, + "cmake/toolchain-mingw-i686.cmake": { + "mode": 420, + "sha256": "231c0b79868a77d54cc6619f0b4ea18454964a1a078806f44a6ffe3fb7741a9b" + }, + "docs/A2-alliance-and-modcount.md": { + "mode": 420, + "sha256": "0c0c45c31d5d64124f3b91a161f8a2f4732c8a5d7f6bc524baf4d59f8a191701" + }, + "docs/AC-predictions.md": { + "mode": 420, + "sha256": "ab9e41714abdbc32e620d8a2068be8ebd2fc8898ba149113c66ccda248b4bcda" + }, + "docs/B1.md": { + "mode": 420, + "sha256": "42b61bbfc135cdcd0f1a32f63164b88e67106400de7f08f543f118eccd814364" + }, + "docs/B2.md": { + "mode": 420, + "sha256": "87dfd333ee15681a3aa4de58cf1b14ff8240e75afabc05012e0f28531cb4b8b8" + }, + "docs/B3.md": { + "mode": 420, + "sha256": "fb65c41037b6cd6252c67e5244d492a3a17ea4ba2ddae821d49fe0a879528518" + }, + "docs/B4.md": { + "mode": 420, + "sha256": "22547b3d2960684e52a380fb07f43a75bf50aebf93cede689f297cf38f4a012d" + }, + "docs/B6-ship-construction.md": { + "mode": 420, + "sha256": "9c5c4fd2059af965e317c9db5b7fbfc440397ddfcdc5bf7860115f6a8a0532ab" + }, + "docs/CB-capture.md": { + "mode": 420, + "sha256": "ce45a9082588051eda7438016dc66eb28bb4afda98b82cdc20102c4ca53529f0" + }, + "docs/CB-predictions.md": { + "mode": 420, + "sha256": "ba51538b018cbb403978f97ad45d4743937d49ba55c8f15d7af8f8e4aa441f0f" + }, + "docs/E-events.md": { + "mode": 420, + "sha256": "de98795aadb1617eab91815ebc34818bef8b52c36ba18b4521170065bfd2d201" + }, + "docs/EV-events.md": { + "mode": 420, + "sha256": "e7d9536cd23f5d800dc97f68167bb738088a16136004419f28de92d7fe1bcfb9" + }, + "docs/G-wire-schema.md": { + "mode": 420, + "sha256": "19db69ae359ddbd2a0509d02f1c616f939e0428480a8bb33c81f69145323a591" + }, + "docs/G3-civilian-growth.md": { + "mode": 420, + "sha256": "38ea3a8ddc3fdca258294d949c4cd2af1a930cdd9ba612d5e8fb48bc446bdf30" + }, + "docs/H-probes.md": { + "mode": 420, + "sha256": "f23e4d4cbc8c9a3000a0a58ed994dddd95466cee1ec45e961685e86dde4dc54f" + }, + "docs/L1-predictions.md": { + "mode": 420, + "sha256": "af97dbc9f15b9c2e6f223c89bac17826056fa4f3bced3c01513c1ad4d9ac1754" + }, + "docs/L2-predictions.md": { + "mode": 420, + "sha256": "18213ce5f3375d478f266de85c38c2b04ca2ae8ab4a2023780dca161fa14f460" + }, + "docs/L3-predictions.md": { + "mode": 420, + "sha256": "d1c9c0006079f47ef0d3371f4a2c2df2fe4f08ebdad0f8a12d1b0de35b15ae7e" + }, + "docs/L4-ai-orders.md": { + "mode": 420, + "sha256": "b04127c5158a882f252b2b6e8afb2d131f0de623cc0c62c86c612af803d75835" + }, + "docs/L4-predictions.md": { + "mode": 420, + "sha256": "6a194ae336920f13d8e4a44549cbe26be959beef81cffed88ef03b3cec563e44" + }, + "docs/L5-live-verification.md": { + "mode": 420, + "sha256": "4c1abe57c516b36f383390164a362f53294feda222c623283f1e6091d8ef0ec4" + }, + "docs/M-movefleet.md": { + "mode": 420, + "sha256": "718338edb8cbe8a449793b22889776a1783d1d0ade553c03973ea45d426eb426" + }, + "docs/M0.md": { + "mode": 420, + "sha256": "e121c380612a42727e3a973d8cf50f884d660bb4b43bc494258dc1c6b6f26705" + }, + "docs/M1.md": { + "mode": 420, + "sha256": "e0a36cf109d096748e55522eb8d7a261764cbf5ab5daf9342ba903d0f2bc6704" + }, + "docs/M2.md": { + "mode": 420, + "sha256": "25f9cad74eeee40afc2117333232384e1cf387b2b9132856650234c5ba593c61" + }, + "docs/N-output-term.md": { + "mode": 420, + "sha256": "3b8317e22714ef66b35efceee6fa0f7057c37f7c6e34d93cc5047cd1dd07ecde" + }, + "docs/P-events-wiring.md": { + "mode": 420, + "sha256": "72ee81b71b4c08ae451721c785dc5e01ed4ca43ff0fd474befca09dcc41599ba" + }, + "docs/PAR-predictions.md": { + "mode": 420, + "sha256": "16e8fbbac5001db0b10d766858c0ae2ea9619f37043a0883ee46da80d4dd4846" + }, + "docs/PL-players-residual.md": { + "mode": 420, + "sha256": "9bc29bc030ee8b0e00e496b91fe8fefac15179ce9fd01c0a11a7b5b5335356dc" + }, + "docs/R-recapture.md": { + "mode": 420, + "sha256": "73c62ab20c5eca5e87e1d18aefa60a2a2acd75cbc7510d31b27a2cd4ebcec38f" + }, + "docs/RB-predictions.md": { + "mode": 420, + "sha256": "c1016781505c10aa304d4710c5389918b744ab20cbd8cb54dce462c3dc28e4e7" + }, + "docs/S-standalone.md": { + "mode": 420, + "sha256": "8979b0a9fef33a55ca15bf3ef78064e72df332033354329ff2471ad6648e4a8e" + }, + "docs/SD-predictions.md": { + "mode": 420, + "sha256": "a76a568ccac7409e3cb3acef724dbe6b618d4ec30259bce33594098daff8b6a0" + }, + "docs/SV-script-objects.md": { + "mode": 420, + "sha256": "80ebd120fa9cf5e68ac4d33117966805b917d24bc339f7d82be972a280449409" + }, + "docs/T-turn-driver.md": { + "mode": 420, + "sha256": "a4096b8223cea87ce77cc64014c489d4625ed36fd3aec1358565ca5cf91d4e1e" + }, + "docs/U-unlock.md": { + "mode": 420, + "sha256": "5cbe3d8fb4bd30d029cb2db006a4dd3c6819885f55f434afb4bc8ae79b526901" + }, + "docs/V-eventlive.md": { + "mode": 420, + "sha256": "ebd08c000f42211e87958278f03d6891475cd8557658e1a42105cf5ed45a1aa1" + }, + "docs/W2-predictions.md": { + "mode": 420, + "sha256": "9972e27467cf0fe23a358818caf7edb979de25697d3aa4b97a2135ca79fe34f5" + }, + "docs/W2-watchpoints.md": { + "mode": 420, + "sha256": "f8634c5f977b2ca9b2e07df105cba09adacaeb6fb4cf046e41e5e1e42b83b107" + }, + "docs/W3-predictions.md": { + "mode": 420, + "sha256": "211cedc2d924bcf47cbb73166b408e9a27d795863ffc90aa2adbb85beeadffcf" + }, + "docs/W3-watchpoints.md": { + "mode": 420, + "sha256": "568e818e66d95f9079a1270c4d9b900c7eecfd5b5a3b4ba5a4aa0c843666f061" + }, + "docs/Y-standalone-rng-and-tail.md": { + "mode": 420, + "sha256": "49d926cc505d6ba07753748366e42ec32493a15c76bfaa45b2f66f52adc57f2b" + }, + "docs/Z-tail-rng.md": { + "mode": 420, + "sha256": "3ed2b40f728bcedd663c305cce13481bad1429af03fd5215ee3189161cfbd7f1" + }, + "docs/architecture.md": { + "mode": 420, + "sha256": "ba4732eb8a4c7054df5136a72d1774e4f1e919a517a1c74e975903fdd254422f" + }, + "docs/game-data.md": { + "mode": 420, + "sha256": "2124ea3d117b4ee6f48660d9711c1b4ef844a4ba37af7cea3766914d77bd6b23" + }, + "docs/game-design.md": { + "mode": 420, + "sha256": "5b40349ad446596b534567a5683cf9ea99709d9eff231890e0f6256c755f0272" + }, + "docs/game-effects.md": { + "mode": 420, + "sha256": "e1e0abc162602daaac255fe44b11c511adf45d4ef5fa188268411829b0817e5d" + }, + "docs/game-sim.md": { + "mode": 420, + "sha256": "d1e14770d252fd2f320a7baa1ad54c90d955cfc840f477d1700cfbbadcec730e" + }, + "docs/harness-audit.md": { + "mode": 420, + "sha256": "931d92cc744ec6ca3d961fbe7fe96dcab28060446058eb78be9835ebbce73ed0" + }, + "docs/mars-parse.md": { + "mode": 420, + "sha256": "d9fa3029ade4f9401c59fb88f4520a1ef3af9a9c6f2bb5d1a0ebfa1d5061d6dd" + }, + "docs/mars-rng.md": { + "mode": 420, + "sha256": "f2a01b88f105d07d0d0d514430e76da7632e5c8e4e3bbd6c99a25f1dc5daa89c" + }, + "docs/mars-stream.md": { + "mode": 420, + "sha256": "61a16c9b7c143b4bc2edee473cf1f8bd06c1a5144c120bc563e5ec6d770dd0e7" + }, + "docs/mars-text.md": { + "mode": 420, + "sha256": "2b6c7d2eecbb684160e7565d1d7224eb0d2f7e9a41f4d807095a182ea605dcf1" + }, + "docs/mars-vfs.md": { + "mode": 420, + "sha256": "1508c2a070d56f4fdabac3c2ef1fd08d3f93d7a3045d59158340ee22a6ff1b62" + }, + "docs/shim-trace.md": { + "mode": 420, + "sha256": "8a059c1ba761b366449c2db8ef248656da917050ed28855c6d812ecf91672fa5" + }, + "include/generated/sots_addresses.h": { + "mode": 420, + "sha256": "fc34ac4ee8cc7fea91c447b5715841dc6d3afe36f9aff04e88b6c29b5b64f448" + }, + "include/generated/sots_stream_schema.h": { + "mode": 420, + "sha256": "13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c" + }, + "opencode.json": { + "mode": 420, + "sha256": "9af560c2a49945e964beb689649c13775e2aaaf691af270a565d6c6826f76c15" + }, + "src/app/CMakeLists.txt": { + "mode": 420, + "sha256": "142999eded2ff494745ce550af76a8f8caf0269ad22d6d5650e7a79c19d22717" + }, + "src/app/alliance.cpp": { + "mode": 420, + "sha256": "37d6e57f7ce82a69a595cf474e7be7a544efef210f960e9cdfeab6168826bac9" + }, + "src/app/alliance.h": { + "mode": 420, + "sha256": "08fa8dc96286c7cb15a90a987fa22b17e195522e642ab8303b659ca58739eafd" + }, + "src/app/command_replay.cpp": { + "mode": 420, + "sha256": "739059930cd3a5f1d988522ff50c60d8657664a66c9fe19b019833f417b55824" + }, + "src/app/command_replay.h": { + "mode": 420, + "sha256": "956429a742554cada2124de49c6955e27b0e5d68db87dcc95b22c75ec7bd93c2" + }, + "src/app/construction_phase.cpp": { + "mode": 420, + "sha256": "025cd0ea1a7badd567f7f1cd59330b1e01149b5c5094575fbd438683658bb0df" + }, + "src/app/construction_phase.h": { + "mode": 420, + "sha256": "a4d39994096683a1144eb20282b205cf71e2045873cc15b53bdac214ab1e9a5e" + }, + "src/app/event_phase.cpp": { + "mode": 420, + "sha256": "80717fa7c7f108004d5250f12b6c994752a1a55d7f32c7d3ebf29f2869118c90" + }, + "src/app/event_phase.h": { + "mode": 420, + "sha256": "54077268fe4705270dc06bdc46a6fd9384fb5e0d36da19e55ea149b478d8cf34" + }, + "src/app/growth_phase.cpp": { + "mode": 420, + "sha256": "5924d2641fc98d902b56a3e6417d7a57d70c1564718951b098e7d14376ebc4e3" + }, + "src/app/growth_phase.h": { + "mode": 420, + "sha256": "8222ef811abff161c8f891a331a52e527de54fbf468949d1e0e188adc473ae3b" + }, + "src/app/main.cpp": { + "mode": 420, + "sha256": "adfd7dd177439bfd57509532bcf0f37779281ae9309daa93efe1ada3ef3f57a7" + }, + "src/app/observed_phase.cpp": { + "mode": 420, + "sha256": "31fb99678d60de6901b4bb1b251abe2421453264653cf5f7bd297a376c2b23f3" + }, + "src/app/observed_phase.h": { + "mode": 420, + "sha256": "f88fc22a5cb21a43e196d7fae09446126635d3284e6b398bca234f265234b693" + }, + "src/app/phase_catalog.cpp": { + "mode": 420, + "sha256": "e3da16e6d499b7836953251d940ce171792ada208156ca583277298f305fc316" + }, + "src/app/phase_catalog.h": { + "mode": 420, + "sha256": "da6fff506002079d8277358d0095981dc260449dc19677a533ef25ab709aed87" + }, + "src/app/report.cpp": { + "mode": 420, + "sha256": "da3feb6043f6e68cb9ea763f7242ac153a5944c59f448284faf34c64ad6b9228" + }, + "src/app/report.h": { + "mode": 420, + "sha256": "0495d164458ddb7187ce3105f82cee06cf9cf6c5b73ed8cb6e434e1d2e0f8481" + }, + "src/app/script_phase.cpp": { + "mode": 420, + "sha256": "61eeeeb7eac3145cee938ccfc564b231b6968ce7926fb9599c136134f0d5ea91" + }, + "src/app/script_phase.h": { + "mode": 420, + "sha256": "e52006ff939fa945870fafdc2412ba67e3d5e1cc2aa51c0ca0a884ce630aa1b7" + }, + "src/app/trade_raid.cpp": { + "mode": 420, + "sha256": "07d6bb904e655bb644ff6df2e417adb448487bb67acb62240ec5ecc978eabebf" + }, + "src/app/trade_raid.h": { + "mode": 420, + "sha256": "10e0b1460eb7810f1fcd61e67d47333373f06bdacf5a11372958a84a91084e52" + }, + "src/app/treaty.cpp": { + "mode": 420, + "sha256": "317463fc0e2a6ca7eaa4e2f096c3821655a4623de4085af44d951ed500837575" + }, + "src/app/treaty.h": { + "mode": 420, + "sha256": "836395a85868cbd6b7fda8f1d304128fd7cc6952aff37003e8e119a5ce0251f9" + }, + "src/app/turn.cpp": { + "mode": 420, + "sha256": "a626ddf80a340de50b70f09bf91c0180d255c533e65edce1532d807fcf5109b4" + }, + "src/app/turn.h": { + "mode": 420, + "sha256": "85c87aab5c5b5ad5a6a34cc9db710b1cf77dec1a7145ba1e0b5e17fff9a6a237" + }, + "src/app/turn_record.cpp": { + "mode": 420, + "sha256": "e1eb0b253e964ab4f8be1333f81e193ac64109544da384cbdf21858cbf931e4d" + }, + "src/app/turn_record.h": { + "mode": 420, + "sha256": "78d8d2948bd04bff5e7d2c55955b726f1cd7552a765e608e390209e03856f76d" + }, + "src/app/visibility_phase.cpp": { + "mode": 420, + "sha256": "34d9df699af3e57823ec8457c442408da854028f9b95db5820171caad0823131" + }, + "src/app/visibility_phase.h": { + "mode": 420, + "sha256": "60db50f5b98c5edafc86a33f982a7773acc291c1a18f9cf23323e53ebadcde27" + }, + "src/game/ai/CMakeLists.txt": { + "mode": 420, + "sha256": "f51509a2699f02ecab9faa1f75feaa38c299e6bbbe08bfbe5e8e86722037f6eb" + }, + "src/game/ai/agent.cpp": { + "mode": 420, + "sha256": "e1bbddc3deb797d62ae9c2b24bc811ec9379699992dd838694bd5eadc73feef7" + }, + "src/game/ai/agent.h": { + "mode": 420, + "sha256": "48aa26f32d52a3f8f4e37ed5c6986b1e87a8fe1e780d5314514eb5c75b8bc244" + }, + "src/game/ai/apply_order.cpp": { + "mode": 420, + "sha256": "122ffea1090382fd01bc505fd30c59557dfec2c9846609d00da6e80109da2253" + }, + "src/game/ai/apply_order.h": { + "mode": 420, + "sha256": "a3b7a1ca26243ba0fdd801b78978175db6f76e297a72876fa0a35e12f38e09b3" + }, + "src/game/ai/command_capture.cpp": { + "mode": 420, + "sha256": "cb9a1d37af9f66e78d368e03aeabec01e4d48f76aaa30348a51f4c70a915e4ec" + }, + "src/game/ai/command_capture.h": { + "mode": 420, + "sha256": "921599e5b2aa8b773db00134618efde687c7d9ba739abd787ec7666f4cfeb78f" + }, + "src/game/ai/orders.cpp": { + "mode": 420, + "sha256": "1b775eb1a030bc6e81e5b7702cbf8ad56288860276e8a0475da66f7367542640" + }, + "src/game/ai/orders.h": { + "mode": 420, + "sha256": "c2a3b8fe1a7c46a1c1104bc87be8696d9f0782cc304d27cb96d0ec6b182f12ae" + }, + "src/game/ai/tasks.cpp": { + "mode": 420, + "sha256": "b05878ccd94c375aac8723c8ea9499f77b98fb94acc5a75a15fa1948dbe83c76" + }, + "src/game/ai/tasks.h": { + "mode": 420, + "sha256": "b1de4f89c1679ccfdeaa8b852cb2ce407b71dcd1bffacf97df389a69f6ae3a5d" + }, + "src/game/ai/turn_order.cpp": { + "mode": 420, + "sha256": "858b12c51c4509e16a22a6c080d1c6b47bd23d2b8a11f84a48d34f24c4635f22" + }, + "src/game/ai/turn_order.h": { + "mode": 420, + "sha256": "3e76710928fc2df52fd8312abfb8f23a2ce162f8e0856f46672a4f46b5b4384f" + }, + "src/game/combat/CMakeLists.txt": { + "mode": 420, + "sha256": "4b3a05c45360e312d6c1d96c1f05a60437d19d2046257835e0d6c70ecc4ce115" + }, + "src/game/combat/retreat.cpp": { + "mode": 420, + "sha256": "eede86a4d25289dfc9132d5776b11114a109179e5aa10f2b985035e5b22d7a1f" + }, + "src/game/combat/retreat.h": { + "mode": 420, + "sha256": "5fc3e002a5f1944f29c74f862ff942b894e40e88afafd52358373ada36644d7d" + }, + "src/game/config/CMakeLists.txt": { + "mode": 420, + "sha256": "c746021654505c92be333cefb9df994431679d40d8d654b937feb950684830f7" + }, + "src/game/config/config_loader.cpp": { + "mode": 420, + "sha256": "d903ba06747e5b7d66400d03ee1f0a9896bf4268bb200dec0b5c8599dbd3d3a1" + }, + "src/game/config/config_loader.h": { + "mode": 420, + "sha256": "fda71dee1a4e2b896760e9ac344768e176ea4f0a08609c7d651033a1ee698085" + }, + "src/game/config/manifest_loader.cpp": { + "mode": 420, + "sha256": "dbe33dc5ae03db18f3b2c01b48cc1fced10f2cca599270c0a028321a7d7dd7c6" + }, + "src/game/config/manifest_loader.h": { + "mode": 420, + "sha256": "68e508b9e6d1222d980b22ae826b127693fdf0821b6539ed9e62a8ec031aa5b5" + }, + "src/game/config/msvc_sort.h": { + "mode": 420, + "sha256": "17fcb13bb49a634c80be38299617c6c16fd8addedfa88c53d67242c90b811716" + }, + "src/game/data/CMakeLists.txt": { + "mode": 420, + "sha256": "677ba0dd0ebb8176f4e7c41d5550f2ccedd56d49e7e4acb1eb0a7970e9e98a51" + }, + "src/game/data/block.cpp": { + "mode": 420, + "sha256": "f61312708c715ce525ed1a01e71f1446d31fc96ca1cc51f5bd863cac51702200" + }, + "src/game/data/block.h": { + "mode": 420, + "sha256": "f14155dfca5fd270ad6b4d462458aa8cd5c5edf5e19da4df492ee2907e99eccc" + }, + "src/game/data/catalog.cpp": { + "mode": 420, + "sha256": "7799ad3b31d43236cacbc51c3ab086265927f98b1346005a8adfed2796178ebc" + }, + "src/game/data/catalog.h": { + "mode": 420, + "sha256": "80223146bcdbf4808776f974df7e5f46b120a021979a22f50b5ce2d74ec16d6e" + }, + "src/game/data/common.cpp": { + "mode": 420, + "sha256": "e58ba046844be11c61f7f7e501829b48b4f16e7c0ab78f10fcf9189c133cf040" + }, + "src/game/data/common.h": { + "mode": 420, + "sha256": "d1ac8375c1be133a98a383e01598f393f194e1bd9790d1c1230bc6121a45a187" + }, + "src/game/data/fields.h": { + "mode": 420, + "sha256": "4209df368ad776b3c24350246acf47ad874fcbbe292fb16f9ca7dacaef2f08fb" + }, + "src/game/data/shipsection.cpp": { + "mode": 420, + "sha256": "82d5ba9be2a446e50934b0b9a03b16839bd3acd1a967d9441180a1baaa271264" + }, + "src/game/data/shipsection.h": { + "mode": 420, + "sha256": "bcf100f83691226c4993dd7866b67a0b48d9b4bc6841463fbf07f0f26bf9dca0" + }, + "src/game/data/strings.cpp": { + "mode": 420, + "sha256": "6d983d3a4cb4284215301409587136fb765a5e6a4c9f4b988e01d710c0815f59" + }, + "src/game/data/strings.h": { + "mode": 420, + "sha256": "fb292bd472ed68eb4a5e93484f3f92d8a0ae8661e6a61ca4b417ab889c508055" + }, + "src/game/data/techtree.cpp": { + "mode": 420, + "sha256": "2ac6e39faeef808c97375f3b8a3ee219fcab8cc09921f0ed8d82eef7374eb9ea" + }, + "src/game/data/techtree.h": { + "mode": 420, + "sha256": "504946c255405ab28d20d0ed6c095b3b63f0e6865afe0e8bb0707e607c363007" + }, + "src/game/data/turrets.cpp": { + "mode": 420, + "sha256": "ce7db50ef10825e168fee2bf57c4b6038dd1a356be7ada9ed6a4f6a4f31b07a4" + }, + "src/game/data/turrets.h": { + "mode": 420, + "sha256": "f01603ad32b0ffdf891c88cc54c39a725c6a436f8dda79ac23e7505e59853c64" + }, + "src/game/data/weapon.cpp": { + "mode": 420, + "sha256": "accb5aab2081babb26443cd257f292909e19440c40346e098144148922f5d3f6" + }, + "src/game/data/weapon.h": { + "mode": 420, + "sha256": "63aeb670ae7b8a1fd6daa35ed60ebe41a87f62a6ec2a12f44b13f9052c55b009" + }, + "src/game/design/CMakeLists.txt": { + "mode": 420, + "sha256": "42692f7917d99fb5b9e392c2d0f1d908b2bc5c61fc2e5687fddbd665dafe0bef" + }, + "src/game/design/defaults.cpp": { + "mode": 420, + "sha256": "8efa0b79646525375739a1acfe77e75d5ae6b669d1ecaa01f49f3f5183caf528" + }, + "src/game/design/defaults.h": { + "mode": 420, + "sha256": "20af056628f362a4d5ad7ba6277135697718197ec6844ae0ae85bf06d4cd818b" + }, + "src/game/design/design.cpp": { + "mode": 420, + "sha256": "e166281c52a6d92fed8810b38bd736cbd2a324f15d290a39a539d01ff35ead20" + }, + "src/game/design/design.h": { + "mode": 420, + "sha256": "7e936c78ca10c3a49470da67f1659cf4ee323d14d50b5b2c1ada08edfa8f6997" + }, + "src/game/design/hull.cpp": { + "mode": 420, + "sha256": "554b0ef6955ac230c7eca29ea2d94d60b5fbc91f34d9ff457091577c8602268a" + }, + "src/game/design/hull.h": { + "mode": 420, + "sha256": "997018e59c9d78ee1da7e7cb9561b94b76befacbe348a4ce3301c5f22b582461" + }, + "src/game/design/rules.cpp": { + "mode": 420, + "sha256": "a623984f9ab40c354320051fec00bab2c7e3728c2c90082b3b8051294b906319" + }, + "src/game/design/rules.h": { + "mode": 420, + "sha256": "70a8a42fe82e9805cbb957717688ab9f9eb3438226f6e0d696ef5f7a51529229" + }, + "src/game/design/stats.cpp": { + "mode": 420, + "sha256": "c05f420a00026289be8693c0d80bbd2354ce354a91a78459cfc8e70467326c54" + }, + "src/game/design/stats.h": { + "mode": 420, + "sha256": "ba0a5d3bcc98f5c3e64579d42da70bfdf563773ce2fe1e6bfa2b36b14c453fe5" + }, + "src/game/effects/CMakeLists.txt": { + "mode": 420, + "sha256": "2e20f138f98bc69653c8360a26f99f3f43f35beedea5e90dfd7e9721e7550f89" + }, + "src/game/effects/tech_effects.cpp": { + "mode": 420, + "sha256": "40358c2af37543ca3ab09b4d0433cdb4b0d2d212b45f648739cc86e979501604" + }, + "src/game/effects/tech_effects.h": { + "mode": 420, + "sha256": "ef70addf2caf1e3abf36ac9d878a8db37d2adbac370957f5b6a0b5825564a0d6" + }, + "src/game/effects/tech_id.cpp": { + "mode": 420, + "sha256": "11cd652e81a52e86d72541a5c3de77bb50de3d31226272e0d1856e5a15b7f9a6" + }, + "src/game/effects/tech_id.h": { + "mode": 420, + "sha256": "f37752250c80c9c75ef8e144e4646dc1290a2cc8ce72d9a37949c6408996df86" + }, + "src/game/events/CMakeLists.txt": { + "mode": 420, + "sha256": "9b1f14a3801a991ba065e0e39ae2e3fa3966018e8a98fcceeddeaca3909328e2" + }, + "src/game/events/event_log.cpp": { + "mode": 420, + "sha256": "3b131879ec5e81cd1ba2bb0cbdfa6e05775ed77684f4ed7a8f5cfae87da1e7b1" + }, + "src/game/events/event_log.h": { + "mode": 420, + "sha256": "2ff415b1120ca3f28421006a566280fb977027cfa3f209bdba0986350376a953" + }, + "src/game/events/research_events.cpp": { + "mode": 420, + "sha256": "9520b20eba2a2b4bd5925f13b420d526fc610d06aae7ffad314e3002c4f5a253" + }, + "src/game/events/research_events.h": { + "mode": 420, + "sha256": "b87340c6b14e9de97e5bc0c5a4cbd74e54bab2831c60edf88c0e42ff5218ea22" + }, + "src/game/nav/CMakeLists.txt": { + "mode": 420, + "sha256": "79cc0ba25c6d49f7784663ace033d01ab3d85a5d8015fe2f466f8f1a3065983a" + }, + "src/game/nav/pathplan.cpp": { + "mode": 420, + "sha256": "04cfe8fca5be565f5443c8f1402eb0072221dbd63f70855e35b3eeea752f1775" + }, + "src/game/nav/pathplan.h": { + "mode": 420, + "sha256": "28b51f737b458679888e555d985b9e8d41adf8ba91fa0980b5e83668758c86e7" + }, + "src/game/sim/CMakeLists.txt": { + "mode": 420, + "sha256": "4b3085116f88c903a137abef6806891f7b7245dcb031153df7a5465dd2521116" + }, + "src/game/sim/colony.cpp": { + "mode": 420, + "sha256": "e0f0bf15d87b6ac2e92053cbfe0869c0dbf9465d90a9bae5456bb46883423b77" + }, + "src/game/sim/colony.h": { + "mode": 420, + "sha256": "357dce21440140a6cf836a3c12175ebb5bb6706c37d5ecd315a4ee4937725b47" + }, + "src/game/sim/construction.cpp": { + "mode": 420, + "sha256": "8cf4792f487162ca3599f16f0e92d73b4c9549046044548c5aecf202dd564130" + }, + "src/game/sim/construction.h": { + "mode": 420, + "sha256": "a7f201101ad704f1994f809259ad60f780760fa36174d99a1ccd9299447f5460" + }, + "src/game/sim/economy.cpp": { + "mode": 420, + "sha256": "1e0b17b589496a6139e8ca10fe20553050be7c965a02daf8b520dd5020412d89" + }, + "src/game/sim/economy.h": { + "mode": 420, + "sha256": "6f3e33e803bb49367d4cee3c8ef6186f04b79e7cf901047fc48d933108ab6d2a" + }, + "src/game/sim/movement.cpp": { + "mode": 420, + "sha256": "80c64b2148304b84683cf3860ced1354f5c29c923bbc50cc5001030dd85c2cd2" + }, + "src/game/sim/movement.h": { + "mode": 420, + "sha256": "9a6b2b4960428634d8004cd5694ed6a7a10ab28fd9c0e2a9824ede3e201e9441" + }, + "src/game/sim/numeric.h": { + "mode": 420, + "sha256": "88f715192ea322ace4eea13ab5ae55f7f41600262025208e468b5259220522c2" + }, + "src/game/sim/observed.cpp": { + "mode": 420, + "sha256": "43d29a9fe1195dcc0b7e6101ea05bfd076f03636f9f68de473539c83db0ddd22" + }, + "src/game/sim/observed.h": { + "mode": 420, + "sha256": "0224b5bf341f30ff0e98d910547261b6732bdc0c5339b520e26fc51939c1269f" + }, + "src/game/sim/player_turn.cpp": { + "mode": 420, + "sha256": "beb1b2ed434df3727e676ac56e751beff87fa98e4a42e4657cc54d41025773a2" + }, + "src/game/sim/player_turn.h": { + "mode": 420, + "sha256": "f24f8f5e161486575cd341c2f5bfed46fa6983263edcf2320e9c24860b4be51a" + }, + "src/game/sim/research.cpp": { + "mode": 420, + "sha256": "95f2d325544ee018ec8d0f945e91b4172f6ba406f95e19f86c4fb9aac6b22a89" + }, + "src/game/sim/research.h": { + "mode": 420, + "sha256": "e27a311e977afb2e01242938dc8d928e9a67d1f761965e191cf907e05c1c86e9" + }, + "src/game/sim/rng.h": { + "mode": 420, + "sha256": "f7e5bbced3dbd37deb49a00b52d05f7c751501d654dabd645ecff7447355929c" + }, + "src/game/sim/scriptobjects.cpp": { + "mode": 420, + "sha256": "a4f9a1b49e4ba22a88726efbbea2f355b40a3c006734d9150d509a344720a4d2" + }, + "src/game/sim/scriptobjects.h": { + "mode": 420, + "sha256": "210d0eb51780df70a9bca133664429589c03ea33e4524e2c182801d4b4a5c74b" + }, + "src/game/sim/species.h": { + "mode": 420, + "sha256": "83b44c0600b99c5acb72a3484bb0708cfba765cdf594aede596a3c47d5ee6298" + }, + "src/game/sim/techgraph.cpp": { + "mode": 420, + "sha256": "81f8f1120eb1fa4a77752bd2e0917df3dd76372461416526ae510bd697944ef8" + }, + "src/game/sim/techgraph.h": { + "mode": 420, + "sha256": "b2fc90666080a6b7f27dc9290eef17774d57742c2a1f9e1f77d94c7fa5689f6e" + }, + "src/game/sim/tuning.h": { + "mode": 420, + "sha256": "4acfad4098de951cc3a94ca25a2f200e96caba1836bf7441de5a2b458c022194" + }, + "src/game/sim/visibility.cpp": { + "mode": 420, + "sha256": "25f86a34f9a98d2439672283a446ba1804973dae3f6d9aa3692342b05f3a3ac0" + }, + "src/game/sim/visibility.h": { + "mode": 420, + "sha256": "783896489a2a9ec8bce617b141bfb631e8ef92f958be7b5c2ca64fd75774471f" + }, + "src/mars/parse/CMakeLists.txt": { + "mode": 420, + "sha256": "76c290b786a3e73387ec8c574fd5a0dbeb6e629adbe970426314f16497f59fa9" + }, + "src/mars/parse/blocks.cpp": { + "mode": 420, + "sha256": "e60baa8127b21cf6eb6c8e2aa02c6a72c6403dbc29e8480ff658bf184266675b" + }, + "src/mars/parse/blocks.h": { + "mode": 420, + "sha256": "1e8b76919a584d1d7fb01c5ff5e3a7173e8456eca892d61f0c6b7bb8f02f33b1" + }, + "src/mars/parse/effect.cpp": { + "mode": 420, + "sha256": "beb76a841a3d42dbc157413384ff1a0312a7068d6b22020eadcee2e1cbbc81f9" + }, + "src/mars/parse/effect.h": { + "mode": 420, + "sha256": "aaa5c83f2d8eef24667bf05d0f71b2a346f2fce09dc9a45d7a5197c894922e44" + }, + "src/mars/parse/result.h": { + "mode": 420, + "sha256": "58cff456e353550abcd0f52e031d9d70f2b7a975f4762cfccc64eb6bc748dbd9" + }, + "src/mars/parse/script.h": { + "mode": 420, + "sha256": "69a493268c47a08672694489a51c3ff0a7f9aa870e5ae5a93d47ba033cf21ad3" + }, + "src/mars/parse/value.cpp": { + "mode": 420, + "sha256": "712133e4d725649f5461e6a46bac6842b0751ac3fb7e1c468f826638ec58f623" + }, + "src/mars/parse/value.h": { + "mode": 420, + "sha256": "60d692648dab7e3e216c8d9e6ef212592ba1df1a98260b1b4599354742947b38" + }, + "src/mars/rng/CMakeLists.txt": { + "mode": 420, + "sha256": "dceb4bc0fb35c95a12ed9aa36380e79aa75641b15ecc06e4289d39824087e2dc" + }, + "src/mars/rng/mt19937.cpp": { + "mode": 420, + "sha256": "0c60775e9437b8eaad49f67a96001c81947c8d9e6d2472e28b2b490515bac95b" + }, + "src/mars/rng/mt19937.h": { + "mode": 420, + "sha256": "300836ab26fd1a4d913b395f08770bb2c248029ef1b80ecbf0c4d886adca2b8e" + }, + "src/mars/stream/CMakeLists.txt": { + "mode": 420, + "sha256": "95ffbb0c519e55b7423ab048a3019e295b7ef3a3e9506044ef2e68569df9601a" + }, + "src/mars/stream/archive.h": { + "mode": 420, + "sha256": "84d9ae2bb3d6f444b3933b3816cafd12caee8619d2219f19cd10d32cfad01d2e" + }, + "src/mars/stream/bytes.h": { + "mode": 420, + "sha256": "9f5869952c9d6b925db32995a417ba292a0c1a672fc3850400150afb8163b3f1" + }, + "src/mars/stream/dump.cpp": { + "mode": 420, + "sha256": "1b5bba86b2f85b1718276f8db557601320ab8a165d5fbfe93e51219cca5a1c16" + }, + "src/mars/stream/dump.h": { + "mode": 420, + "sha256": "a69af300ae7083fb0a5362edbe7eecd5273c8807884aff9fbedd7ae606c7fc4f" + }, + "src/mars/stream/gzip.cpp": { + "mode": 420, + "sha256": "20d71fd50bd637f78e7ebb5217bc6607ebc257535cc4720e640e4badb72f1644" + }, + "src/mars/stream/gzip.h": { + "mode": 420, + "sha256": "6bce52c615eb120999adb1a6f7f06baa813a033c28e02e6d79ce77f5b7a929c9" + }, + "src/mars/stream/node.h": { + "mode": 420, + "sha256": "eb43054c8592db107557979c7fc8612dc0646ba5d62f154b9b7f96a37ba2e860" + }, + "src/mars/stream/probe.h": { + "mode": 420, + "sha256": "6411d0976d1e785e8c32af6ecfe1a797c0a9aa02314e5e42fae3ed7b3449ae13" + }, + "src/mars/stream/reader.cpp": { + "mode": 420, + "sha256": "90f19cbcdb0fc50795895ea1eff09cd6c0ab3069095c49b276f3894e3d6bcbb3" + }, + "src/mars/stream/reader.h": { + "mode": 420, + "sha256": "900508d97be1cbe566d77f2c91755d3db387535cd9574e41704b6d940daa1ff4" + }, + "src/mars/stream/save.cpp": { + "mode": 420, + "sha256": "6db367b3ea570a4d0ee831160e3f44cef380f58de163b9d9205ca7449e51e049" + }, + "src/mars/stream/save.h": { + "mode": 420, + "sha256": "b3a411600d98b42e9014e1fc3cbc3eac5f32f4393e9f72036d3d840c802bb469" + }, + "src/mars/stream/savedump_main.cpp": { + "mode": 420, + "sha256": "8dc687f009d9f455e9bfa4019f03df72e058cebbb3e9ae5bcbb308285470208c" + }, + "src/mars/stream/schema.h": { + "mode": 420, + "sha256": "b1cd64bc43076a3e5893239bd2eb5c216e7293ee541322ef74fb106928183a05" + }, + "src/mars/stream/shapes.h": { + "mode": 420, + "sha256": "45ee379ff8100b6bc27427a2580d7aae19ff3d5d0aa27f682d156ae6a92d0a6d" + }, + "src/mars/stream/writer.cpp": { + "mode": 420, + "sha256": "54804b06266e34793f5294f9a96d2939d641915a0f60fc4e3b4170bfcea6e083" + }, + "src/mars/stream/writer.h": { + "mode": 420, + "sha256": "921cd44ea30e0b9944825b1d2caafc46edc8f2c23506c807050ed9208a397340" + }, + "src/mars/text/CMakeLists.txt": { + "mode": 420, + "sha256": "dccb93b37c21c9b3c3b35a50ca8de55c9f00df2a9e0a33b6c36d659a75455436" + }, + "src/mars/text/csv.cpp": { + "mode": 420, + "sha256": "b190e12b86a3f416a72c110caf9e0b2d98cdd33851d2fa48b55a8d7ea39279af" + }, + "src/mars/text/csv.h": { + "mode": 420, + "sha256": "3b7ec6d0884e95bfab869c253eddc30a802602bd1f230cc69461cb9cf3c17917" + }, + "src/mars/text/flat_kv.cpp": { + "mode": 420, + "sha256": "b98d3b7345489f0b149e56cd15436fd6199e4cf00d7ce3f8b8b31fcdecb90e47" + }, + "src/mars/text/flat_kv.h": { + "mode": 420, + "sha256": "d6765cd42cad46597b6e36e9d08baf6819f7796442293043d5ff686e2376d292" + }, + "src/mars/text/lines.h": { + "mode": 420, + "sha256": "b9a16ccf0dc7bbf36100e0b66c80bcb818590b161f820d3c67d55bccff1c2c65" + }, + "src/mars/text/manifest.cpp": { + "mode": 420, + "sha256": "4da1bb615902ec61883e561f5dd375d89442f7b9046fbc864f6308f27921087e" + }, + "src/mars/text/manifest.h": { + "mode": 420, + "sha256": "dd7351a7a6a144e97f3a3b6a25d22d1518a099e95deadb8965cedb201601e102" + }, + "src/mars/text/result.h": { + "mode": 420, + "sha256": "7f817033811dff6fcef1d5b76f88922cb0392afb4359549876cd017a14755606" + }, + "src/mars/text/value.cpp": { + "mode": 420, + "sha256": "94b433d78f3211e1a4dd9eb8a0a00b514cbeaf63a03e738146c56dbbfe221479" + }, + "src/mars/text/value.h": { + "mode": 420, + "sha256": "d3b5c70af2f339ad27b43c38353fc7a2da83388854b02000fa1b6d9a4e1dfc07" + }, + "src/mars/vfs/CMakeLists.txt": { + "mode": 420, + "sha256": "630d5d4707ef3c0f24a414815cc23158853fe9d5aef429d6619abc1c433b3786" + }, + "src/mars/vfs/path.cpp": { + "mode": 420, + "sha256": "e1f3bbab1f90b0132aec24d8c5997dafab69ec72f01f2dd2fa63c91f83ef7aeb" + }, + "src/mars/vfs/path.h": { + "mode": 420, + "sha256": "043091008f2cab7c88185de63e7aae63ad9b0e384109f5b6fd8c31666c4e2033" + }, + "src/mars/vfs/result.h": { + "mode": 420, + "sha256": "19115bf1c5b3bf01da078a49209230053043610b342b01cdaaed126e2d3ea748" + }, + "src/mars/vfs/vfs.cpp": { + "mode": 420, + "sha256": "ab8272cd14b4b55e7af13f5383d6106f0b1caabdde57e69c1d0fb5b434d31cba" + }, + "src/mars/vfs/vfs.h": { + "mode": 420, + "sha256": "2484231baa64ede6fc35eb0f49e1fd7a3373d5c559f016d5adfb9fc433619d90" + }, + "src/mars/vfs/zip_archive.cpp": { + "mode": 420, + "sha256": "d66e70300539bd42bcf193683df7c34d2b0b03146fd79f0a180385ead1559e87" + }, + "src/mars/vfs/zip_archive.h": { + "mode": 420, + "sha256": "0ffbd90f7919741e63e86e14d0f87d247bc2cd16d2db54771071553249ad935d" + }, + "src/shim/binkw32.def": { + "mode": 420, + "sha256": "fb500fd9f9ecbff44123b89fc24cec72e91fec4c4430ce12a69efc06b20de235" + }, + "src/shim/fpu_force.cpp": { + "mode": 420, + "sha256": "c4b4e41a7ef81139c652ba8164ed8bb0d809b42182f0d0f048b9a9e63bebe59d" + }, + "src/shim/fpu_force.h": { + "mode": 420, + "sha256": "75bac23bc45510961f6b10d21c47e72d8dc0d3971a3ab30b795cad1d25332c06" + }, + "src/shim/hooks/ai_orders.cpp": { + "mode": 420, + "sha256": "091ed885012fffa0e02b83c53e547483dfdeaf1094933726e0291fff0a99e434" + }, + "src/shim/hooks/ai_orders.h": { + "mode": 420, + "sha256": "6e775b3f946f2eaf10dc2e236a3f3c7b9311ed4e82cd4be1ca30e6c62d49d053" + }, + "src/shim/hooks/ai_rng.cpp": { + "mode": 420, + "sha256": "b8fec711cb620561c8f4854e72c3fb0d73013c9b1cd69fa63fc05dd3d2f60289" + }, + "src/shim/hooks/ai_rng.h": { + "mode": 420, + "sha256": "1306f4d3c8071121b06c75232efa5c50b155c1f8752fcae852ee8e5497ce7d08" + }, + "src/shim/hooks/ai_visit.cpp": { + "mode": 420, + "sha256": "cd69811074820810edb1ed3779ca08bd99fea620b162d80a0395d35e8db7fc31" + }, + "src/shim/hooks/ai_visit.h": { + "mode": 420, + "sha256": "8315b433319f680e80a154409124355ad24842e9a0cdef5c8aa6d12422971189" + }, + "src/shim/hooks/budget_inputs.cpp": { + "mode": 420, + "sha256": "fa50fb74a3874886cf8aeb4012b9fd9a5a43ce38ab3c543ee425002ca32fd46b" + }, + "src/shim/hooks/budget_inputs.h": { + "mode": 420, + "sha256": "56e2f95930ff420820a3464162fde74ac0a3ff2e1dc8b493729fed342e4a6548" + }, + "src/shim/hooks/colony_inputs.cpp": { + "mode": 420, + "sha256": "7aa9191ec6292d765fd06c99ff1f2ae2e09a65fb1f238dd2727f28bd465dd46e" + }, + "src/shim/hooks/colony_inputs.h": { + "mode": 420, + "sha256": "87ec765e14106631e3f6423450e6e01d5bb21060fa91f83c267db215ef4986d9" + }, + "src/shim/hooks/colony_turn.cpp": { + "mode": 420, + "sha256": "b82616c7b9b05e96e7f4c40d853c686884b517a5424413686d61799df9d45420" + }, + "src/shim/hooks/colony_turn.h": { + "mode": 420, + "sha256": "a9013cc2e92998ff56ac0c8cc36dc42033fbe3072ee88b86882a1dd4dd0357d6" + }, + "src/shim/hooks/compute_budget.cpp": { + "mode": 420, + "sha256": "76a24f0daf1f49cfabbed13753c65754e26bfcc4f672791b37e926f82b5c1906" + }, + "src/shim/hooks/compute_budget.h": { + "mode": 420, + "sha256": "f308717e44e12151cfb20a6a0cf11ff8e99ecc9c17ef04783198feed05a24caa" + }, + "src/shim/hooks/dictionaries.cpp": { + "mode": 420, + "sha256": "b60794256c07964eb89d5295ecb711b402112fe5f982a9215dc3a304d03a567b" + }, + "src/shim/hooks/dictionaries.h": { + "mode": 420, + "sha256": "ac68fd66eb343d40ee97d6bf29c8b54f5d469a9ef8862687ae15e6ad8bdafdc0" + }, + "src/shim/hooks/draw_sites.cpp": { + "mode": 420, + "sha256": "e7a1fa40262db2ed22b1dfa5ca1bd2588da07bfbab046f23afa8e86c03814d79" + }, + "src/shim/hooks/draw_sites.h": { + "mode": 420, + "sha256": "0021323e918d464223d03b969d0e6992a0efac23ba84a31af901cf2ac74e9b13" + }, + "src/shim/hooks/event_inputs.cpp": { + "mode": 420, + "sha256": "eeb9cc87ef5c39994b7f25d5ccfe220c4775b32a4b11471b0fc0fb81fca4362b" + }, + "src/shim/hooks/event_inputs.h": { + "mode": 420, + "sha256": "c0e74aed8756b3de8ebbe5ab3d70cfa6282403efefc2d795e8f0b1b4cd44d731" + }, + "src/shim/hooks/fleet_movement.cpp": { + "mode": 420, + "sha256": "f01ae7f64b1d545089b002b79c9986d2a39b97ad3995c88a8b71fa05eedb90f0" + }, + "src/shim/hooks/fleet_movement.h": { + "mode": 420, + "sha256": "dbbfe50afaedad63ec45881819aa5de3907cdb411ddf8d1d3e6a5f9a386dc8af" + }, + "src/shim/hooks/global_consts.cpp": { + "mode": 420, + "sha256": "87a51601e1a7d963bf841ca4e892aa79de789a050f5d783c7b5d8bbc2e96a9a1" + }, + "src/shim/hooks/global_consts.h": { + "mode": 420, + "sha256": "b6ac4265ec1f02f11c342536dbc9970c13761ea68aec0a5962d0f4cd6aa5d265" + }, + "src/shim/hooks/movement_inputs.cpp": { + "mode": 420, + "sha256": "0e23f86e4a8ed6c292aea8e45512931cdd06742f25c5e0d175bf0ed3b2217502" + }, + "src/shim/hooks/movement_inputs.h": { + "mode": 420, + "sha256": "32904786cbb122c3c8c36faf6bd9ea5ade4cd8395e74199ec08dbcdb8019b66a" + }, + "src/shim/hooks/player_turn.cpp": { + "mode": 420, + "sha256": "33bcadd7569ad13c69f5f160423c8d469bc67725ce7b944cf4b4346fb8cc7f23" + }, + "src/shim/hooks/player_turn.h": { + "mode": 420, + "sha256": "a766a0d93f3860da6f8d1e0dcf110d6754cd8dfe67d867093f32e3d24e8ff0e0" + }, + "src/shim/hooks/player_turn_inputs.cpp": { + "mode": 420, + "sha256": "993dce2ca771a36337c9561695995a0825746563d2e84b4458de650f3e456799" + }, + "src/shim/hooks/player_turn_inputs.h": { + "mode": 420, + "sha256": "ca0d7916ca17d993aaef19be48d03076220ae15cdcc622aef52a7c6b5957ca71" + }, + "src/shim/hooks/probe_entry.cpp": { + "mode": 420, + "sha256": "5faf9cf04a2cf849d2dd54ce4ad9b812120fb99741f11e9d52fed450badf0506" + }, + "src/shim/hooks/probe_entry.h": { + "mode": 420, + "sha256": "f04f445863a6164d03bc9f6edcaa2e2b0108163241510f4c1dfcb0da7667d89f" + }, + "src/shim/hooks/research.cpp": { + "mode": 420, + "sha256": "dacd16403f1dd5be2ef2cc42f16938977bdd0ee9283d0bca647a079ee3d28e83" + }, + "src/shim/hooks/research.h": { + "mode": 420, + "sha256": "a62c4847be81ed9d10c4f5b9a876bd79898040aa11aa8764149d82db4b010a84" + }, + "src/shim/hooks/rng_ledger.cpp": { + "mode": 420, + "sha256": "119d325fcda72268bdc87f7ca7af05d059d4521c4d7d40ad7426ce070865eabb" + }, + "src/shim/hooks/rng_ledger.h": { + "mode": 420, + "sha256": "0d1e9c79e7601da921253e860c55d9b69c21e03a1014c49f1dd85fd0e5f70f30" + }, + "src/shim/hooks/system_output.cpp": { + "mode": 420, + "sha256": "93bfb7e6ca381041d1e9830f82b8d774a63c12593fc426fd3e9198c9373be3b4" + }, + "src/shim/hooks/system_output.h": { + "mode": 420, + "sha256": "62a8424c70bb8e6c3d9603ce752f6b19a3920a4a78be75718869d7dac73f3738" + }, + "src/shim/hooks/tail_rng.cpp": { + "mode": 420, + "sha256": "9b2a3923d1d837399f3486650ef0e49b502837ff7df46a12df9a9e9b0d4d9d07" + }, + "src/shim/hooks/tail_rng.h": { + "mode": 420, + "sha256": "b9585605e71364872db25c608012e94db2148f22e2e6fd40d4b590a83f3be92b" + }, + "src/shim/hooks/tech_effect_fields.cpp": { + "mode": 420, + "sha256": "4c4d558aba3ac4e1b10e0944c867911e61daea0b4ade716760546846cebcb7b3" + }, + "src/shim/hooks/tech_effect_fields.h": { + "mode": 420, + "sha256": "22b2c050f73c9de011a42dc5a52d92a1bd3b24a59f3ba3b4332d832fb1853420" + }, + "src/shim/hooks/tech_effects.cpp": { + "mode": 420, + "sha256": "2a20f01a18ed30a466e2023ae023aeed8718c680cda927d2f3b463b6dbe35714" + }, + "src/shim/hooks/tech_effects.h": { + "mode": 420, + "sha256": "ffbc4e8262146cd7764f0b9758fff01ce5d359b25a0f5d8c931313f32d035320" + }, + "src/shim/hooks/watchpoints.cpp": { + "mode": 420, + "sha256": "15c94333f22bb592129efe3fb800ea89987045f9ebbc0e6791d4397961fd727d" + }, + "src/shim/hooks/watchpoints.h": { + "mode": 420, + "sha256": "639ae42b230fb31762f50cac0422dcd5b7fda7a1a02c7739a86d1cd6eda62277" + }, + "src/shim/main.cpp": { + "mode": 420, + "sha256": "eebdac7f8f69b8b95cd290c96d41c6f3f0ed5c45ccd5de54ffc790af47083b99" + }, + "src/shim/shim.cfg": { + "mode": 420, + "sha256": "44ca58394455549150c3461cc888128a968b4f062807e19ef25b8eebf0bfd523" + }, + "src/shim/shim.cfg.b4compare": { + "mode": 420, + "sha256": "68bed5883a75132eb5e885b4750d23c1d5734c843a32a56dc7f96d2b73fdf962" + }, + "src/shim/shim.cfg.b4scout": { + "mode": 420, + "sha256": "faac0765478d88b63f371fbc307512e71fe05f2e6f97272e6e0ceb267cc6d626" + }, + "src/shim/shim.cfg.b4trace": { + "mode": 420, + "sha256": "6a89cdd3cfdf53cfbaff29278fd5d0edf156ad8a525c61624b60ddb1eb0575a1" + }, + "src/shim/shim.cfg.bupin": { + "mode": 420, + "sha256": "39d52ef1ccb18d4dea261b87d3f363ba45079022d1b9bc3531c552ef6df80ec2" + }, + "src/shim/shim.cfg.cbcapture": { + "mode": 420, + "sha256": "0939b1ea144976ded2d45ad885fa0f1ffa3d77f16cba9b4d5a9cb87623500a62" + }, + "src/shim/shim.cfg.cboff": { + "mode": 420, + "sha256": "7d5d6e2ceb7f86fd17543c9212e8547be6009f725871aadbaf6057af1f4f5484" + }, + "src/shim/shim.cfg.cbpin": { + "mode": 420, + "sha256": "72a222c025796458dc1a538eed3ea55f053ee5e3c01e5b19b802922a058d4fbe" + }, + "src/shim/shim.cfg.cbtrap": { + "mode": 420, + "sha256": "938c0893b95b576b75927d75787999c22b3424d28c8936456ea3723f62775e51" + }, + "src/shim/shim.cfg.crcompare": { + "mode": 420, + "sha256": "129031ceb358fef9e0fcee2fb42a0f20fd76d9db78f061f956bf75ce2cc51dec" + }, + "src/shim/shim.cfg.croff": { + "mode": 420, + "sha256": "f99345e7db55e695ecabf7a00fc16ced9a42e8882abfeabc8281b9a4ef26d730" + }, + "src/shim/shim.cfg.crreplace0": { + "mode": 420, + "sha256": "60c13bd76e546b4521ab4e6a7836439078e2a176a11e471e03434623153cb7d9" + }, + "src/shim/shim.cfg.crreplace1": { + "mode": 420, + "sha256": "d27f43eb970d6a9c8a0c8d8f7071633a226c34b675a6581b331c6e1ba6f36c9b" + }, + "src/shim/shim.cfg.fpu007f": { + "mode": 420, + "sha256": "998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363" + }, + "src/shim/shim.cfg.fpu027f": { + "mode": 420, + "sha256": "f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd" + }, + "src/shim/shim.cfg.fpu127f": { + "mode": 420, + "sha256": "1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271" + }, + "src/shim/shim.cfg.fpu137f": { + "mode": 420, + "sha256": "8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9" + }, + "src/shim/shim.cfg.fpu1a7f": { + "mode": 420, + "sha256": "59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588" + }, + "src/shim/shim.cfg.fpuoff": { + "mode": 420, + "sha256": "ce637b3f0eca81c04490335cd9fe8a537cd09e5ef14cc5b3050f548ca4d54c65" + }, + "src/shim/shim.cfg.hoff": { + "mode": 420, + "sha256": "dc9b4619fe84921ea5896c2cd190afb5bd4ca89422fb86bfee8459665f92cd7a" + }, + "src/shim/shim.cfg.hp0": { + "mode": 420, + "sha256": "ede723fc540adb94bf16af0f3086c1935aac008acb6a8d550e2a4e97ff232c2c" + }, + "src/shim/shim.cfg.hp10": { + "mode": 420, + "sha256": "1c1f07dfdb7f99d63ed9a62aa9a447efda690623164beeaf434c588e02ef12cd" + }, + "src/shim/shim.cfg.hp11": { + "mode": 420, + "sha256": "36eae0d554a79b9536e3c57d2fef187ae81bd3266947c7f45035be554fb59404" + }, + "src/shim/shim.cfg.hp4": { + "mode": 420, + "sha256": "5bb0d636247c37def9b5cbf0cc9138b13590a50ae8212890fb7d31dfb9e837f4" + }, + "src/shim/shim.cfg.hp8": { + "mode": 420, + "sha256": "a8fe5f16a299b2b9eb81a811c7ec5a3b1baf635fa179a69f1e23243c7d1e2133" + }, + "src/shim/shim.cfg.hp9": { + "mode": 420, + "sha256": "765fdf337bb6942dbd1357166646dbf7fde3777678a606c4dbfd368078f09b5d" + }, + "src/shim/shim.cfg.hpall": { + "mode": 420, + "sha256": "630f99725ea6aa933984f4c545634d127787672de36f6756da2591e22a36f366" + }, + "src/shim/shim.cfg.hprobes": { + "mode": 420, + "sha256": "3bad5e3e7bf35a85acc7169d27531788e9659dbe0f8b1a0c719777fdb6beb5dc" + }, + "src/shim/shim.cfg.hprobes2": { + "mode": 420, + "sha256": "c335f1ec8aeff1165213cd40adcdcd59893c65edf95b1537fc4460e6060911c5" + }, + "src/shim/shim.cfg.l1control": { + "mode": 420, + "sha256": "c5dec81556268795b9a3df175bafde340a3fe76c7d6e05389e09e79d2b138b43" + }, + "src/shim/shim.cfg.l1hive": { + "mode": 420, + "sha256": "970ce465f2363f391a93086f1b596e904265510e02e7d2d38174cc6ea22d9b25" + }, + "src/shim/shim.cfg.l1off": { + "mode": 420, + "sha256": "a4197233c65acb876328666cf37754aea96f942b6ea08105bdfb61d6d5bcbd64" + }, + "src/shim/shim.cfg.l1seed": { + "mode": 420, + "sha256": "360af979eaa0c13eaa4db38ff13dcc64b3e2ab538300c26497921301fd3817b9" + }, + "src/shim/shim.cfg.l1snlv": { + "mode": 420, + "sha256": "3603508983a87906ecce02e4c2e9581cf2fa59390af25335f0b221765c57ef6d" + }, + "src/shim/shim.cfg.l3cont": { + "mode": 420, + "sha256": "629530a34412ebf85fc8ce8d2e5931684eea9891b6b619419e6f8db8c37f0976" + }, + "src/shim/shim.cfg.l3control": { + "mode": 420, + "sha256": "42b6ec7ebc9c83dae4a58884803f627d54956eb308611ce1e8d3691a12a74ccb" + }, + "src/shim/shim.cfg.l3probe": { + "mode": 420, + "sha256": "692dabb6f00343bfcc2f86d62ade827c295acc4630a18a1f2ddcebd53640978d" + }, + "src/shim/shim.cfg.l4control": { + "mode": 420, + "sha256": "ab13b7e3604ee98e9372e3405e0eacb6d5965e02d5317cfee0ea9b9afbd750e3" + }, + "src/shim/shim.cfg.l4dump": { + "mode": 420, + "sha256": "fb40d67d8d7dca4587a1dc13a95826ab68eb3fcf44feb6006388935f3ee346f2" + }, + "src/shim/shim.cfg.l4off": { + "mode": 420, + "sha256": "629a3e41d11daa53325f31aeb77d14d5abe67058e274d36ed8feb71e2e30dc13" + }, + "src/shim/shim.cfg.l4probes": { + "mode": 420, + "sha256": "a446ff3d6117d5352ad9b3c3c02f6d6300ce0b1089f055925afe19b77f0a20f3" + }, + "src/shim/shim.cfg.l4research": { + "mode": 420, + "sha256": "ad400f7082680db82c6fb0d39eed488710e6661f9e3215b9ea2eb0ba53444b9b" + }, + "src/shim/shim.cfg.l5budget": { + "mode": 420, + "sha256": "74df0fa1bd14fec6e8028ba05c516f3a370ba389386e5a8459d594c2c7ad83ae" + }, + "src/shim/shim.cfg.l5control": { + "mode": 420, + "sha256": "3557f716dde348a98fda65a5bad54911fe6d52f75c2cf6a82cc5d4fc47a6e968" + }, + "src/shim/shim.cfg.output": { + "mode": 420, + "sha256": "a811cffac230a1d6c0f9c5adacb1b691ae289ec08de0da3726309a4e1213acb0" + }, + "src/shim/shim.cfg.parbr": { + "mode": 420, + "sha256": "ea8230b596e7baae0c127f5700391ec2c96d546daba8c70ce8b2800c83b096dd" + }, + "src/shim/shim.cfg.parctl": { + "mode": 420, + "sha256": "2d1190d032bb705030746197020c715f4ab8af551f944e9ec0abe136912ea60d" + }, + "src/shim/shim.cfg.parorders": { + "mode": 420, + "sha256": "2107be5ec950e69d01c43ab30919fbfe652823878f150111b158927bc41de8d6" + }, + "src/shim/shim.cfg.parpin": { + "mode": 420, + "sha256": "893f1f81cdef0a964145ebb1c4b1e2725af8868b14fed412d40e3cce71f824f4" + }, + "src/shim/shim.cfg.recapb1": { + "mode": 420, + "sha256": "688840567305218dada122b29284f6af44c3c63ca173db87406de159bb547c8f" + }, + "src/shim/shim.cfg.recapb3": { + "mode": 420, + "sha256": "2120646255bd70adf29ed2880daa6b11d0867b9cfc9f1c9644d63b92c263b69b" + }, + "src/shim/shim.cfg.recapmisc": { + "mode": 420, + "sha256": "cb1f794c51b5d3d74eb91cc084c96a04444cd79f22fc694d821b51924544f595" + }, + "src/shim/shim.cfg.recaptrace": { + "mode": 420, + "sha256": "0ae410cc72fe155837d711c78543e14b1f5743310cd023298eb1e5bbd5457e71" + }, + "src/shim/shim.cfg.sdbr": { + "mode": 420, + "sha256": "7cb2bfd798ed1286628f3a879606eff076c4f6011d95e1223376eb4d0a392ca8" + }, + "src/shim/shim.cfg.sdoff": { + "mode": 420, + "sha256": "9195aeddeb2caa4e3db7dfd775c43e96eb99cfdc59a6a61e65d86fb325f0054a" + }, + "src/shim/shim.cfg.sdpin": { + "mode": 420, + "sha256": "61119f197b1dc8ddcad059d2d2c2753dae457b4bda4eb29e06c78282eeda6a0b" + }, + "src/shim/shim.cfg.sdpin2": { + "mode": 420, + "sha256": "d6d7f82b500df4f3ed120b4ff421178cf4373a145fa803e57d22a0654e4f0f63" + }, + "src/shim/shim.cfg.tturn": { + "mode": 420, + "sha256": "2ab2d64288043c3c55fde668facde9307c0739e0c801c900790e11db57c5759b" + }, + "src/shim/shim.cfg.tturncmp": { + "mode": 420, + "sha256": "114d325ae3ece29422069ee74c790603abb38c49162dd32520a3eecd18ab6061" + }, + "src/shim/shim.cfg.w2control": { + "mode": 420, + "sha256": "d042c0082a8eb4f55b8e21983df292f0950adc4ac5787d4a0b83088c10c5a3eb" + }, + "src/shim/shim.cfg.w2watch": { + "mode": 420, + "sha256": "ddb9c18a1c6b6c23758e51ca9ac18b4b95abe206b162497adc2978c0384d6ee5" + }, + "src/shim/shim.cfg.w3control": { + "mode": 420, + "sha256": "c6a3a5ea1e39a0714dffee0e44a0e8d91a2b450534d7e4377273a55b3e87de8c" + }, + "src/shim/shim.cfg.w3mod": { + "mode": 420, + "sha256": "7c7f82aaa8b5b007a740324373060ca2ba84edc765eb4e7ce55afcaba4e1c2e0" + }, + "src/shim/shim.cfg.w3tshn": { + "mode": 420, + "sha256": "51fa826d0b18d6f01987d6748e6610847ec3a761257ffc382a40d234670afec3" + }, + "src/shim/shim.cfg.zledger": { + "mode": 420, + "sha256": "31d0535aff9660eb1ad06f529c88a42aa71b83b36f8404b7541a29327c508a51" + }, + "src/shim/trace/emitter.cpp": { + "mode": 420, + "sha256": "4253cac49f0761e487fd555c3c01e02fa22e2010789ad3af37c62c8fd2e02030" + }, + "src/shim/trace/emitter.h": { + "mode": 420, + "sha256": "aa7804614b3d3a214d5c32c33ed245ae24276979080baa9d5481d6594ee3f79d" + }, + "src/shim/trace/hook.h": { + "mode": 420, + "sha256": "35be73ac1c9519664957ffea639d873e8a811b4620f0feecb21b54ea2776f800" + }, + "src/shim/trace/platform.h": { + "mode": 420, + "sha256": "f1b78d971798e45998b26c6b0e20db49fceb7d4c63f0c8c37452c6c2c6df9538" + }, + "src/shim/trace/selftest.cpp": { + "mode": 420, + "sha256": "31461ae6d329a8a3856589b245f3bcf8631f0db9a5e00530e4f94279950de354" + }, + "src/shim/trace/selftest.h": { + "mode": 420, + "sha256": "583d7a10ef04254c7a0fb7dd2a6071ad012a9a97dfae0896bbd598970b206475" + }, + "src/shim/trace/sha256.cpp": { + "mode": 420, + "sha256": "2faf44b5b273612c776204c1d83e0910d86394f4f6207129a01c81dedc170aa8" + }, + "src/shim/trace/sha256.h": { + "mode": 420, + "sha256": "31ce080acdc086ff7657d9093ac9bea438203eaa8e392ca38539152cdd15038f" + }, + "src/shim/trace/tracer.cpp": { + "mode": 420, + "sha256": "37d9490dbdedc399ecdb30f46eb27f31a4ff8c902eadb2eb48ecca7fb0e8fb88" + }, + "src/shim/trace/tracer.h": { + "mode": 420, + "sha256": "cbb80f167b8f98777f9fb58ce107226f42027ffdbd868a6808047c48caf10f76" + }, + "tests/addr_smoke.cpp": { + "mode": 420, + "sha256": "ace1ab9549bb6f3e0048d0e6e3ec6061035395581b2db46c0a5acb097c428890" + }, + "tests/app/CMakeLists.txt": { + "mode": 420, + "sha256": "dd18f8e25d2a9ce988dc226e03c7c6e02a275bbbea74f505d005e42ca5972037" + }, + "tests/app/test_alliance.cpp": { + "mode": 420, + "sha256": "671b2cb3295f360c61ee87005287999710d12e10e7e532331c1c946ab97f7c4d" + }, + "tests/app/test_catalog.cpp": { + "mode": 420, + "sha256": "c4cd9840c1f1b5d5a6829f7f1c5a0245b5e66135d3bed6410a2b6eca1a037225" + }, + "tests/app/test_command_replay.cpp": { + "mode": 420, + "sha256": "739ebeea5bed551f232774bc812bcb794cfa057015fd187529fa563b5d7ae5eb" + }, + "tests/app/test_event_phase.cpp": { + "mode": 420, + "sha256": "05498df256759fe5b8af80e9e56c2ca071eb26de0651f257798fe1641da627ca" + }, + "tests/app/test_trade_raid.cpp": { + "mode": 420, + "sha256": "2158008bc711b8062381f346fa347a430582d8d1943b0de5f40eb2a38e9a3f75" + }, + "tests/app/test_treaty.cpp": { + "mode": 420, + "sha256": "0f98150a3f9397fd12109eae7359ff7e04a4060e10e01ecf1693eb2a4606ead7" + }, + "tests/app/test_turn.cpp": { + "mode": 420, + "sha256": "6d45b1d2d065528f14ae83d95314f2b6559e53cc23f1b9e2531c7c09b4b97eab" + }, + "tests/app/test_turn_record.cpp": { + "mode": 420, + "sha256": "a845971b8d25d71c3b1138495354ad392e4fc298f87eb9b89d1567c01ab59cde" + }, + "tests/game_ai/CMakeLists.txt": { + "mode": 420, + "sha256": "a57a82d0c79ff933564e200a5b3137f120e70a19834264eeb2438c4cafd7ad3e" + }, + "tests/game_ai/test_agent.cpp": { + "mode": 420, + "sha256": "41cb3fbfc7e0b277771a2e8dd17601285a1e3a911543fc1335ce05a4e4b5f11c" + }, + "tests/game_ai/test_apply_order.cpp": { + "mode": 420, + "sha256": "8669c2e9a4c95b670a9c41262c68ce183d3cf3900bc262e0a2e33500bfffc594" + }, + "tests/game_ai/test_command_capture.cpp": { + "mode": 420, + "sha256": "8c2bae38754b347beeefe85d796c13bcf43cf5bc9bc99eb743626028b4dbd7ab" + }, + "tests/game_ai/test_live_blocks.cpp": { + "mode": 420, + "sha256": "44cb6bd8b34c13e329f9b1d50bb2a5c5513e52761537dccfb01afb7d48be7580" + }, + "tests/game_ai/test_orders.cpp": { + "mode": 420, + "sha256": "b13d1a3a628de411abb4faf024a1ce8d3e94518f12285bb3d7e7e86b012ad43f" + }, + "tests/game_ai/test_tasks.cpp": { + "mode": 420, + "sha256": "ffd8eed7fa76a24616d579a4e31031dadf43a0534e33743fb104dfca552367fc" + }, + "tests/game_ai/test_turn_order.cpp": { + "mode": 420, + "sha256": "382d6a30e9151c57849595cb134b8e2da25d2763738c9cbfa18d3cad51ecce97" + }, + "tests/game_combat/CMakeLists.txt": { + "mode": 420, + "sha256": "fd0c0dfb54033353b7014e3c764c916522cb529b6b3eae8a8d52afd044c13fe2" + }, + "tests/game_combat/test_retreat.cpp": { + "mode": 420, + "sha256": "3fb0be08d230bbd7c4ea4a59319de7ab252e5b7cbee924afd069847da8dcf73d" + }, + "tests/game_config/CMakeLists.txt": { + "mode": 420, + "sha256": "9874822d186e783f25b2dcd87495e7e380d873b8a0790c67fffb9430468094ed" + }, + "tests/game_config/manifest_tests.cpp": { + "mode": 420, + "sha256": "3bc62e7e49699254151a825421973d831b25bcf7a22028c789e3ca63b0d77319" + }, + "tests/game_config/replay_trace.cpp": { + "mode": 420, + "sha256": "83602ec974b8195c3616230ad44c2d4fd6032f8ef5f96e7aa76d49a0a04ac05e" + }, + "tests/game_config/unit_tests.cpp": { + "mode": 420, + "sha256": "45b07c7289abac61fccd0a6cd0ff87812542ec888eb6d295fb87c3f57755cc6a" + }, + "tests/game_data/CMakeLists.txt": { + "mode": 420, + "sha256": "cb8cffb7217e82077d3db749dcacf29c098549159cc0f312ef04bfccaa30155d" + }, + "tests/game_data/build_and_run.sh": { + "mode": 493, + "sha256": "69ea9cb94468c56c329fcc5b9350431067e97091ed47c08bb10b57b38412883a" + }, + "tests/game_data/dump_catalog.cpp": { + "mode": 420, + "sha256": "4588e699c69586dfb77f0d9289e375407d4f9cf019690e26bfc78f7182167c89" + }, + "tests/game_data/oracle/compare.py": { + "mode": 420, + "sha256": "2cfe1ac93790de3351256d284392372721f94de5375686e6301ef39b1943ad12" + }, + "tests/game_data/realdata_test.cpp": { + "mode": 420, + "sha256": "334a924bf81c6ce6192a6688435b374e115382358f7e4554aa164295bdd38321" + }, + "tests/game_data/test_catalog.cpp": { + "mode": 420, + "sha256": "9ea5c3fff2388c5d7fbf295123dfd7b702ef21f17fc7c45a970822814abfce2e" + }, + "tests/game_data/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/game_data/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/game_data/test_shipsection.cpp": { + "mode": 420, + "sha256": "b3519f0de60d061a6f1ab8ee81d470a28fc17cc81b113639ef2c1e139c249b4c" + }, + "tests/game_data/test_techtree.cpp": { + "mode": 420, + "sha256": "d05c889da9edb622bd2b66aa8e300d8162e0c8788950daa1086fc049b90dd4bc" + }, + "tests/game_data/test_turrets.cpp": { + "mode": 420, + "sha256": "66adff30b974e9bf2c96c1af024fb85677e1a8307c801933d23f3d2ec9d8222c" + }, + "tests/game_data/test_weapon.cpp": { + "mode": 420, + "sha256": "b16b0481c0a8697ff16e39c9feb3ad9d5406250b7dd1c828bf12f1bb40ed746b" + }, + "tests/game_design/CMakeLists.txt": { + "mode": 420, + "sha256": "a26524ff14878564870853bc067c379d2ebd26c14e45bcbb06593d300ee4b3ca" + }, + "tests/game_design/build_and_run.sh": { + "mode": 493, + "sha256": "b1aab4d13b09fb1ea4205978bd7d8b05af5a6422ebe4a34261c3247489b48bd7" + }, + "tests/game_design/dump_designs.cpp": { + "mode": 420, + "sha256": "b1b24c5cb534ad821a20325869713c04b742c541c448ade83543d75608f7eda2" + }, + "tests/game_design/json_min.h": { + "mode": 420, + "sha256": "9cfd3eabe9b36d6b2863872e08fe6ebaddf0749d1966dea693f8bbc0472780ac" + }, + "tests/game_design/mini_catalog.cpp": { + "mode": 420, + "sha256": "5817c0251883c999c6ebd54c77fdcf3981181b41fb5f7637d445824d60942810" + }, + "tests/game_design/mini_catalog.h": { + "mode": 420, + "sha256": "ecb7fd0dffa8709008bcdf9b9da3e70e68f735f9b5ecd0dcb4c871a35ae43b59" + }, + "tests/game_design/oracle/compare.py": { + "mode": 420, + "sha256": "2db14952f7fca9a587995e326651b0d549b39ceefd9c0ac59982cd35ae5d21e7" + }, + "tests/game_design/realdata_test.cpp": { + "mode": 420, + "sha256": "cea57cd53d881b3bf2557cc32ea402c4991aa6de5ff72340861f195a8e20c141" + }, + "tests/game_design/stock_designs.cpp": { + "mode": 420, + "sha256": "2ac1b8bcb0f61852f4bc0a8b7cda51167531ca2a05d1e485991a4758cf586d03" + }, + "tests/game_design/stock_designs.h": { + "mode": 420, + "sha256": "a49173bde083467f5650cfbfbaebba5f16208d660fe7f2f3da81c2caff07c807" + }, + "tests/game_design/test_banks.cpp": { + "mode": 420, + "sha256": "c1d34991c53523cb7610a569e861e8a312da1fe659de0522a3594fb14cad24a6" + }, + "tests/game_design/test_census_saves.cpp": { + "mode": 420, + "sha256": "814c17c7a14db7b123579b7636ee7f2b720fdf4a5cbbe90f676dc01709c45e3b" + }, + "tests/game_design/test_hull.cpp": { + "mode": 420, + "sha256": "cff70268d58ab95ed963d335904110ab55c79d6a0f660f613409cf6d5d63e2bd" + }, + "tests/game_design/test_json.cpp": { + "mode": 420, + "sha256": "e7fa196274a4591834a974f742ff59c7ed1fb15fb138091b48a071354d001c5d" + }, + "tests/game_design/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/game_design/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/game_design/test_stats.cpp": { + "mode": 420, + "sha256": "a3681df901095b848cc6b1ae63d04fd70eeeadd406e7d51f3c76671cbf523a7a" + }, + "tests/game_design/test_structure.cpp": { + "mode": 420, + "sha256": "d09f7707ee170f8a933c657628c1da4f61a29c7eb2dc687a96c3985bdac941aa" + }, + "tests/game_design/test_tech.cpp": { + "mode": 420, + "sha256": "689c081a324c7ece3f70d711f7ac67a5b93207f95e2800a3a708f2f8dbe31965" + }, + "tests/game_effects/CMakeLists.txt": { + "mode": 420, + "sha256": "c80413a7103ce0ed7944fb096ad22fc206a091645428a6015ec3d0e442414a0a" + }, + "tests/game_effects/build_and_run.sh": { + "mode": 493, + "sha256": "ab5085eeab0ec65d8f7ddd7d79357cd15183888b1b4e51cb563810d4e4c64506" + }, + "tests/game_effects/test_effects.cpp": { + "mode": 420, + "sha256": "b10d804b1ad4fb140e13cc1984c6372dbbfdd92560f37583f2411bbcb45c16d4" + }, + "tests/game_events/CMakeLists.txt": { + "mode": 420, + "sha256": "c962651d71ee7783d5565b418f653f2954e489cf698762c5686f5f2dbb4304db" + }, + "tests/game_events/build_and_run.sh": { + "mode": 493, + "sha256": "8b92d249138ee53f728583a0c68b153eaf4e2ad7f92d415d8b3a83df2fb3ec28" + }, + "tests/game_events/test_events.cpp": { + "mode": 420, + "sha256": "182941b9b809b20d24a2e29c5e4bbd626e6da8486e87dc38d1c6088161ec793b" + }, + "tests/game_nav/CMakeLists.txt": { + "mode": 420, + "sha256": "7ee85557a167281f4576252428b4e01795232f31dc1d93c23b284568074cec3b" + }, + "tests/game_nav/test_pathplan.cpp": { + "mode": 420, + "sha256": "6229cc2b1be1ffffb3fbb812c2ccc89dba7099d349be3a6f8f2c2e26aa1dd58d" + }, + "tests/game_sim/CMakeLists.txt": { + "mode": 420, + "sha256": "563547cdd93bce41ef29a73289e5104a5df61f71cc980e49ea37cdbe26743be7" + }, + "tests/game_sim/build_and_run.sh": { + "mode": 493, + "sha256": "a9c42a931242c7f266f512b4d4ad11f6f8ecf43a447a06a04f174301ee19328a" + }, + "tests/game_sim/check.h": { + "mode": 420, + "sha256": "faddddc37a528f0235f510b249cfc1776ce30aff709329954f09093b01231221" + }, + "tests/game_sim/mini_json.h": { + "mode": 420, + "sha256": "710218b637aaf1a5eb7c49eaa7d158bc3e495135ec14bf8b41384769d0227ba5" + }, + "tests/game_sim/smoke_real_save.cpp": { + "mode": 420, + "sha256": "2432e92ac18fadfb1152c54d9dec9a77b3dbf506ea122401cbbd48584b7c9190" + }, + "tests/game_sim/test_colony.cpp": { + "mode": 420, + "sha256": "45355673c46cbaef66b2c81d04a845cf65b6ddfd9819350c7338d9771fafb6fe" + }, + "tests/game_sim/test_construction.cpp": { + "mode": 420, + "sha256": "8df75076a3f460e949e34100d55acf60b054603da6d4aeda4f73297442c06e21" + }, + "tests/game_sim/test_economy.cpp": { + "mode": 420, + "sha256": "43fe658fd2347e3667a901afa642713d70c85ef0ec75094642da2d05b9ca471b" + }, + "tests/game_sim/test_movement.cpp": { + "mode": 420, + "sha256": "1927c371d52115458d88552014cef30bba60e9bef5eb3acfce11b2bc623e06a6" + }, + "tests/game_sim/test_observed.cpp": { + "mode": 420, + "sha256": "1f6ad16c1a2c80f0621573b5196989b0349e47351585d83835be5e27f6ef3fe4" + }, + "tests/game_sim/test_player_turn.cpp": { + "mode": 420, + "sha256": "13f76eaa6cad265deec25416acf0cae2028d6cd1c7b9585df6e9252ba3f0cbed" + }, + "tests/game_sim/test_research.cpp": { + "mode": 420, + "sha256": "3dc668eb889c41f58db6007a96f54fe2a6d56ee6501a298fba3afbbe9637baf6" + }, + "tests/game_sim/test_scriptobjects.cpp": { + "mode": 420, + "sha256": "dfe90a42bcd2844c2ea3666816f97c05237206bf44467ac29790c72b7b498582" + }, + "tests/game_sim/test_techgraph.cpp": { + "mode": 420, + "sha256": "0627ea1c8012b90b62285cae2f31599ba8a8cd47928452910ade91f93502d68e" + }, + "tests/game_sim/test_visibility.cpp": { + "mode": 420, + "sha256": "ad756975b6605a164f2f9106daf2511730642eff354a866bc764a93a4be1efe7" + }, + "tests/mars_parse/.gitignore": { + "mode": 420, + "sha256": "181314065df2f2fdaf920b1a8b5311daa216a2d6489a06ada5b49cc514d89417" + }, + "tests/mars_parse/CMakeLists.txt": { + "mode": 420, + "sha256": "898204fbc1cec44f697e2803c8bc4887857950ba2b1192dd153de74d26de0ea4" + }, + "tests/mars_parse/build_and_run.sh": { + "mode": 493, + "sha256": "550c6df5fffbd85cfffc3312a03a5fa9d59c1e0416e883ddc2576cdb73eac6de" + }, + "tests/mars_parse/canon.cpp": { + "mode": 420, + "sha256": "63e2bcfb2820e7533aa3a287bcec6c318f7238006dce61ad35381562b979cd47" + }, + "tests/mars_parse/canon.h": { + "mode": 420, + "sha256": "c9a78b866d62c4e58643de2c4149572380a1392b411049c8fe74e37475d21d9e" + }, + "tests/mars_parse/oracle/dump.py": { + "mode": 420, + "sha256": "16e98089d5b532e35d6b88b3d50b4bb07e879c18512cf8d06cc5fd2aa9da1117" + }, + "tests/mars_parse/oracle_check.cpp": { + "mode": 420, + "sha256": "5eb81a0c2db8f96c6f8e51246ea9991642e5571dd94dd2e410e2fad632d47adb" + }, + "tests/mars_parse/test_blocks.cpp": { + "mode": 420, + "sha256": "f376a57891a83768ecc8b73ef5eb2333291c280760f7581ead53f7c2a71a4df5" + }, + "tests/mars_parse/test_effect.cpp": { + "mode": 420, + "sha256": "8bb14e7c718e772bfb4a22a7370f41080c49beabfa597ddd603be257bc310011" + }, + "tests/mars_parse/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/mars_parse/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/mars_parse/test_value.cpp": { + "mode": 420, + "sha256": "a8dbe3326e5339cdad8fed7dd678df92e8a8b675d0b854f4cea6517bf557069d" + }, + "tests/mars_stream/CMakeLists.txt": { + "mode": 420, + "sha256": "31c69840e6e2e566d2e0bbaf49ab3dec712d27e505d0810ddf0496ce3ff321e0" + }, + "tests/mars_stream/build_and_run.sh": { + "mode": 493, + "sha256": "3737e42960b66e788a11cdd7fa9917fe255b6a4f60280e9f620593bf688aab41" + }, + "tests/mars_stream/oracle/compare.py": { + "mode": 493, + "sha256": "f39dd70e4bbf1952cf99e3437fd1ed6252249f3455a2d3c73311f98d8ff4370e" + }, + "tests/mars_stream/test_domains.cpp": { + "mode": 420, + "sha256": "08394777f7bc4186883cd02058f17fda8f47c3ee47049892bd8762c28b5aa959" + }, + "tests/mars_stream/test_rng.cpp": { + "mode": 420, + "sha256": "55f77273d8af5880f976a24fb00dcd8042b31a7a33f15c9f4b62fdb85bba9d0a" + }, + "tests/mars_stream/test_save.cpp": { + "mode": 420, + "sha256": "50250bb4b4f2da05f9453c541f080e018b68731f24cbf93278d50ca93ddd8d63" + }, + "tests/mars_stream/test_stream.cpp": { + "mode": 420, + "sha256": "d0da9ac2287910527bdac875ab39e0147a9be2f5535f04b55460438f31be2537" + }, + "tests/mars_stream/test_wire_schema.cpp": { + "mode": 420, + "sha256": "1cfd259f554be8218cb182dd1facc07f6cd3dea52f0daf7303393e78c7c2eb97" + }, + "tests/mars_text/.gitignore": { + "mode": 420, + "sha256": "181314065df2f2fdaf920b1a8b5311daa216a2d6489a06ada5b49cc514d89417" + }, + "tests/mars_text/CMakeLists.txt": { + "mode": 420, + "sha256": "20f8e0cfa044fb4e6b1caca0ec8d6536e012c1c4ea4454fe990923f40a201752" + }, + "tests/mars_text/build_and_run.sh": { + "mode": 493, + "sha256": "59ae392080c01be0c7f5530ecb9ae4fbdcc02366242b27527c14b8efd5076d0c" + }, + "tests/mars_text/dump_json.cpp": { + "mode": 420, + "sha256": "e246384902c3adf4fa8f2a54e38c4912f6b58f168ebc9b1e158a719e2a52b1bc" + }, + "tests/mars_text/oracle/compare.py": { + "mode": 493, + "sha256": "46a796196a413aa28a0069086e45c96399f21308153b578f063801eb997b54ef" + }, + "tests/mars_text/oracle/dump.py": { + "mode": 493, + "sha256": "53fde94f6676a5504a247cf209e2a42d67e108cc9ea0b02f289562799ee7d880" + }, + "tests/mars_text/realdata_test.cpp": { + "mode": 420, + "sha256": "a399ad5cf91cf35f78809f5b9b5cac8b2eff344dbfbab07b8b27bf66058e1e3b" + }, + "tests/mars_text/unit_tests.cpp": { + "mode": 420, + "sha256": "cd1e9e4f6e0e503d4d9b0902bd2936513293490cdc680f94639ce93661ca09d7" + }, + "tests/mars_vfs/CMakeLists.txt": { + "mode": 420, + "sha256": "282015598e03430be0f47b779ce7087662415b3a59de14814cb3ba35c17af363" + }, + "tests/mars_vfs/build_and_run.sh": { + "mode": 493, + "sha256": "b6a8e7b0706d7416f548f071e742e600cab226663f7d4ad42299dbb76f631701" + }, + "tests/mars_vfs/make_fixture.py": { + "mode": 493, + "sha256": "57586249e57550869dd5adfbc4fdab173a59d2aee630ba69c20d562018d249f1" + }, + "tests/mars_vfs/realdata_test.cpp": { + "mode": 420, + "sha256": "c95248ae53d32bd5d8cf963ca3a39ea82e5ef08b76de736104b6aa34ec88c789" + }, + "tests/mars_vfs/test_main.cpp": { + "mode": 420, + "sha256": "cdb7bdf9b9356eb0b7f6cb0fab081cda2161b34af14ecf60cc44970e79d517c2" + }, + "tests/mars_vfs/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/mars_vfs/unit_tests.cpp": { + "mode": 420, + "sha256": "de8da00718799886fbbc5820e0f7d0e468a31ab0608361fb509b0c12932c9caf" + }, + "tests/mars_vfs/vfs_cat.cpp": { + "mode": 420, + "sha256": "4a443e779de264f5c0c68a631b1a353b1310a4e838d342527befd8ad1e2a25bd" + }, + "tests/mars_vfs/zip_builder.h": { + "mode": 420, + "sha256": "a0f3688e5a90b7e209497d66d0dcd30a0e1ac59a56ffcbed31b2a50967c1da3a" + }, + "tests/shim_budget/CMakeLists.txt": { + "mode": 420, + "sha256": "88a0f43e433c3a6879a7f6cccf8c84ba4559009614a3fe5adf6c558ea7a47245" + }, + "tests/shim_budget/unit_tests.cpp": { + "mode": 420, + "sha256": "654e96d0880232d3090223a0d9f92f428aeffa528fbd5eca89d6bfe348aefce0" + }, + "tests/shim_colony/CMakeLists.txt": { + "mode": 420, + "sha256": "d7b2674971b0eda32b2edd62244c32af81cea9e6d984a24ca6648edbaea80e06" + }, + "tests/shim_colony/unit_tests.cpp": { + "mode": 420, + "sha256": "4cc41308c10fa1e6aa047fb6c26e4c655b727884bce87b5a9e8e2f76db665474" + }, + "tests/shim_events/CMakeLists.txt": { + "mode": 420, + "sha256": "2b43190a2ce88cf7227250aa5a3b48e3006d24f0d6f5e9a5e48507c2733e4c45" + }, + "tests/shim_events/unit_tests.cpp": { + "mode": 420, + "sha256": "0dc151a4aecb24217cc38cb818bbe760b3da2b08a23ad734b3fa8506d25fe2b4" + }, + "tests/shim_movement/CMakeLists.txt": { + "mode": 420, + "sha256": "46ffe5a9815b189283e4d5ef67a0dcd159f60da7f9ca4a3577669035fefdc1f8" + }, + "tests/shim_movement/unit_tests.cpp": { + "mode": 420, + "sha256": "ee6ee983aa72f078a7ae398ca5f828aba14370c898ae4e56063697d28919ad69" + }, + "tests/shim_player_turn/CMakeLists.txt": { + "mode": 420, + "sha256": "f6affa205f857d4a45f8be05ae0426b6f9a2e8e127f5aeadbac2ed8a4c4daddc" + }, + "tests/shim_player_turn/unit_tests.cpp": { + "mode": 420, + "sha256": "0a528cdf64904dfd22c94ea911a15213701e7912921f04c1909799e6e6240450" + }, + "tests/shim_rng_ledger/CMakeLists.txt": { + "mode": 420, + "sha256": "b6a349f2611ec1f1de2013145a97f3da59cefec81dbc4d2f3e58af507e598bb4" + }, + "tests/shim_rng_ledger/unit_tests.cpp": { + "mode": 420, + "sha256": "d38d80dd907a3468036dbca2b017718b199ab4a0078eb5e5b019b913a9ef8d8c" + }, + "tests/shim_techfx/CMakeLists.txt": { + "mode": 420, + "sha256": "5eaf9a76df6b10258a8c1d2658b03d97377d48a778a1628ca94c9bd69fa7ba8a" + }, + "tests/shim_techfx/unit_tests.cpp": { + "mode": 420, + "sha256": "99a71a6d0ca1f53fc8ff0bc21e79acd64ba2cd9c9f990641e5970c866794595b" + }, + "tests/shim_trace/CMakeLists.txt": { + "mode": 420, + "sha256": "91bc736e198c5cef86ad2ad69ca77d93ab770e5faecf9e6d915f9263b9ce491b" + }, + "tests/shim_trace/check.h": { + "mode": 420, + "sha256": "f4b72b971886c64383880ba26484f9c908d21f5902dff0de0b42f276b00d8366" + }, + "tests/shim_trace/harness.h": { + "mode": 420, + "sha256": "d7eae563723843c1389b108fe2efb2e31b6c264d23567a370a09fb9b1d513697" + }, + "tests/shim_trace/oracle_emit.py": { + "mode": 420, + "sha256": "29ed06c602e9f0d6430bb3c81192b1946213a3f44b91107f7036f35f17b69f42" + }, + "tests/shim_trace/test_coverage.cpp": { + "mode": 420, + "sha256": "8ed5b6d755fe7e2bc98d525e97bc7817a5efb7ed5f0196d49d1c783de3a91bea" + }, + "tests/shim_trace/test_diff.cpp": { + "mode": 420, + "sha256": "afd8e5124cf6e1ad9c4f3e4c2beeb65d00002cf1d4cbaa2e876fea0817a7a347" + }, + "tests/shim_trace/test_emitter.cpp": { + "mode": 420, + "sha256": "a9255bbc055df36a01931e8a61dd1dbf16085f7713db7e7386f66b69ddb10762" + }, + "tests/shim_trace/test_hook.cpp": { + "mode": 420, + "sha256": "4dd67374e260ba2722219c2e44e6be76e583d0ad65844f34859cff49b66a30cc" + }, + "tests/shim_trace/test_sha256.cpp": { + "mode": 420, + "sha256": "b55aa15dc806e3e4a87ddf50657fa4e0af6a4e4e2205c4bd63d1ae066fe57428" + }, + "third_party/minhook/LICENSE.txt": { + "mode": 420, + "sha256": "d5c2224982b0b95a16b098a561335fa93f3eaf4d0aa964b7843edb986df78dc8" + }, + "third_party/minhook/VENDOR.txt": { + "mode": 420, + "sha256": "c79054234a5340f6199f8d9f47d6b3d88e8abd2120586cd78f081cfb81a6fabd" + }, + "third_party/minhook/include/MinHook.h": { + "mode": 420, + "sha256": "e34bbf7b855c842694f6e3dd78e2d280e99ed9732501e3dc1532a8626a8db8e5" + }, + "third_party/minhook/src/buffer.c": { + "mode": 420, + "sha256": "75a789eb718bd5ed2de039ccd330736a31d0a2d14e43d8e15e6cd2332432482d" + }, + "third_party/minhook/src/buffer.h": { + "mode": 420, + "sha256": "9769702bd625249e59a19ede05c84365fcc7707e1fa0e5df08df42227cee13e3" + }, + "third_party/minhook/src/hde/hde32.c": { + "mode": 420, + "sha256": "0ddbc3ab3e0b37e61691131289a151e34f508233ccf3f701752777e5d3f62d68" + }, + "third_party/minhook/src/hde/hde32.h": { + "mode": 420, + "sha256": "5132de5be8ac7a9d054420f5caef0fb01437faa892f03b3cdc77f795973bf15a" + }, + "third_party/minhook/src/hde/hde64.c": { + "mode": 420, + "sha256": "9bf19dd706d4bc255ebd1709f98fb44899df7a1f2412820d77295136e0620f1d" + }, + "third_party/minhook/src/hde/hde64.h": { + "mode": 420, + "sha256": "e99aa4997bda14b534c614c3d8cb78a72c4aca91a1212c8b03ec605d1d75e36e" + }, + "third_party/minhook/src/hde/pstdint.h": { + "mode": 420, + "sha256": "604d1cdf45c5a95bc9cf1bbf39ca05ef83013541101d34971c5cd7577e3d5247" + }, + "third_party/minhook/src/hde/table32.h": { + "mode": 420, + "sha256": "43bf687a9fff071b5f46070db4d36c846f8e069cdc57485ee897c499aacdde23" + }, + "third_party/minhook/src/hde/table64.h": { + "mode": 420, + "sha256": "b774446d2f110ce954fb0a710f4693c5562ddbd8d56fe84106f2ee80db8b50a2" + }, + "third_party/minhook/src/hook.c": { + "mode": 420, + "sha256": "3060d3c42f03a2f11324cbee95d853071757ed0fe4b1bc9eb5f0d8fc9e346a37" + }, + "third_party/minhook/src/trampoline.c": { + "mode": 420, + "sha256": "d837f8555681c3762468d712c43f2064ed31dee610e0b02965fd8aa54b88172f" + }, + "third_party/minhook/src/trampoline.h": { + "mode": 420, + "sha256": "27426751dde36cdd8346469e61cdcca47950b1056a69f21cc63f4b41743faf6a" + }, + "third_party/miniz/ChangeLog.md": { + "mode": 420, + "sha256": "ff3b6040f7cbd8c9779a0690e906c66408f7efe3cf88a25019323f0189025ec3" + }, + "third_party/miniz/LICENSE": { + "mode": 420, + "sha256": "0115478d567121238cf6cc1c0c361926cf07a49d9e4c9e66da97fac6a01646b3" + }, + "third_party/miniz/miniz.c": { + "mode": 420, + "sha256": "e2c1aeb66eef9191d8c3feb164db2def2335a61d039bf04ed849f6b042433b30" + }, + "third_party/miniz/miniz.h": { + "mode": 420, + "sha256": "b53b62ed122e559b8f679e3cb787a0b0035fe87a58f909da0e44931678f4e85f" + }, + "third_party/miniz/readme.md": { + "mode": 420, + "sha256": "b4ea367be28a36e5386f65118b73962bc659a67936d248be68b7a7c03b8d359b" + }, + "tools/build-shim.sh": { + "mode": 493, + "sha256": "1da3fdcc019dc6495c870a42b93cee9f21ff7f9623f033c2f50d9db9fd6a33e0" + }, + "tools/check_shim_configs.py": { + "mode": 420, + "sha256": "ef5e8f100c06d8c485a165ab668206af3e9aed3e1f6aa6ffec2592419fc2332f" + }, + "tools/clean_room_check.py": { + "mode": 420, + "sha256": "e15bc3ebfd29c6e2d8edfc32cc812858869b49ffa1404cafce14c4c24e0f4e24" + }, + "tools/clean_room_check.sh": { + "mode": 420, + "sha256": "6646eb6010be756113f7af39b9cfcb06e8580893fbd100a41993f87757ccfd6a" + }, + "tools/deploy.ps1": { + "mode": 420, + "sha256": "fe01f46bedc91d7b42ff98cb0e69633845094cc2802108d23d48eb70f32e3f27" + }, + "tools/sync-build.sh": { + "mode": 493, + "sha256": "ce418ace6c5edae8609849233bb5dfd24657f55141c8ef8507659608f12aee2d" + }, + "tools/undeploy.ps1": { + "mode": 420, + "sha256": "5730b6f95f161ba5a727dc0a34f26da7f1f697711495d6a9de9c289ecd747af0" + } + }, + "manifest_sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd", + "path": "/tmp/opencode/sots-final-research-engine" + }, + "re": { + "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", + "files": { + ".gitignore": { + "mode": 420, + "sha256": "ba56b745b84c6d15b7288df65f319831fed3cbf8edd1ab3a6476418f48fd95f8" + }, + "AGENTS.md": { + "mode": 420, + "sha256": "e722b65480a9f72c2fde1c677c789d4f4b347ef9b450894e9f4295035373df7a" + }, + "CLAUDE.md": { + "mode": 420, + "sha256": "b3e3e5851645a05543e91f128eb6d349abdc6f22accfd997012526e4d35eaa8e" + }, + "README.md": { + "mode": 420, + "sha256": "e318014a84d03e53983cdb1e5b0310f372b959f659b91abc9214faf530544afc" + }, + "campaign/DASHBOARD.md": { + "mode": 420, + "sha256": "eb207987006a3a661bf05b24fc361e1dda74b7a7f42f4abf4a3788cb17a254e6" + }, + "campaign/README.md": { + "mode": 420, + "sha256": "dc702a81c2c664c07eb170f082deb65bc3ff24e2b80d892bb082c7c4feac64fd" + }, + "campaign/agents/analyst.md": { + "mode": 420, + "sha256": "895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952" + }, + "campaign/agents/implementer.md": { + "mode": 420, + "sha256": "eb5581051a92b3d2b9ddd947812b1c02ff6a0b5e7619e7674adc26701e9a3d91" + }, + "campaign/agents/lab.md": { + "mode": 420, + "sha256": "48f1765ebdcb2015e631ad91428f65735ff899e119134b652f70788ff2eae5b8" + }, + "campaign/agents/lead.md": { + "mode": 420, + "sha256": "7661bbfca972be50a52c735b7f15f5be740158542c3d0cdbdf9a6a2590c7f1ea" + }, + "campaign/agents/resolver.md": { + "mode": 420, + "sha256": "742c36dc8567669d462566d6121eed42fcff5bff34e8eff466e92249f7ca195f" + }, + "campaign/agents/verifier.md": { + "mode": 420, + "sha256": "e467fc644e4e37d631a7a4e35038d9d3d0498491f1d7811d61d99271ff345c6b" + }, + "campaign/backlog.md": { + "mode": 420, + "sha256": "a10edaae044e84ee4d26e7461b88e557112f572d60c57e0025171a53dd209a35" + }, + "campaign/board.md": { + "mode": 420, + "sha256": "040c12a20f5bf70b8e6a239efb205039d1ce00a805411ba194a12bde9f40c03e" + }, + "campaign/contract.schema.json": { + "mode": 420, + "sha256": "a2c76ec042ca097a57c3c05c1e519e392d498d387a31808c7d0f70482d43c201" + }, + "campaign/contracts/controls-bootstrap.json": { + "mode": 384, + "sha256": "2943d2281229c102dd612676428a9714510e540671c1e04dae3e6fa7ea1b56ab" + }, + "campaign/contracts/launcher-smoke.json": { + "mode": 384, + "sha256": "c0418dd22bafc321b2f800acaf574dca7956c37b239d789981b920d50ab36599" + }, + "campaign/contracts/research-completion-abi.json": { + "mode": 420, + "sha256": "a5cf5e4bbc5052aa13dc34b55ee65f2997f9342e0b01062e85ad2c16d99daf71" + }, + "campaign/contracts/research-replacement.json": { + "mode": 420, + "sha256": "1108d30bf7e28f30b2446014503fc3200a8b8198a8fab0b866b873a81bf7b8b9" + }, + "campaign/current.json": { + "mode": 384, + "sha256": "87661aaf5ddfbb872365dae8c531453a1e0cb7f91b3ada046be3e829d2555f77" + }, + "campaign/models.json": { + "mode": 420, + "sha256": "95f507237a8e4fcf14189da4aa102dfae1dbaa536d4d8db6bcbfc30162ac5443" + }, + "campaign/open-questions.md": { + "mode": 420, + "sha256": "efb1c736a07bff32e75e0eede20681c206e2c95f439dffe9824702cb864972e7" + }, + "campaign/pilots/research-replacement.md": { + "mode": 420, + "sha256": "3101b8959f28ba2c6ffbac02a82b5ae0e841e7d78bd1f40f05b9d1d2278490ad" + }, + "campaign/research/SESSION.md": { + "mode": 420, + "sha256": "258a2884486ee777fbd8ff180abf23a3a320b2981ee1e90b57d4e3efe18643f2" + }, + "campaign/rollout/RESULT.md": { + "mode": 420, + "sha256": "87aba912d66e2f7bd9779f86cbae3c78d64b1be2572db02ac39fc70c750cb79c" + }, + "campaign/rollout/architecture-decision.md": { + "mode": 420, + "sha256": "8c710f390671500386745d063d6cb6edb175e6e26572286334d2f14a36be6d41" + }, + "campaign/rollout/controls-followup.md": { + "mode": 420, + "sha256": "44d0c95978cbc0953d6b1feab4463b29fab68c9d8dad2eca5fd562bb5aee1578" + }, + "campaign/rollout/controls-worker-state.md": { + "mode": 420, + "sha256": "02ff66f3f0fa978819e5c100e24cfd3752b9041590e2aed36f6abd62ce790f4e" + }, + "campaign/rollout/controls-worker.md": { + "mode": 420, + "sha256": "d022483618d3c3412785ba40e71106976c9b1c9978c43e424e3023a67b8b3f0f" + }, + "campaign/rollout/controls_evidence.py": { + "mode": 420, + "sha256": "bfaf4e523b2ca39c0ecdab94adf0b2b19a3da68aab8a0fcba69a613aed46588a" + }, + "campaign/rollout/engine-followup.md": { + "mode": 420, + "sha256": "d3d289fb4e4cfb7cf1ab6c3de597f530eafd27d3b1aa2f3e8904d6da3a95ac44" + }, + "campaign/rollout/engine-worker-state.md": { + "mode": 420, + "sha256": "76601fa42c95bd7d78ce46f528a33ef0483e0b7f2e19a1cfe1cab8e560bed05c" + }, + "campaign/rollout/engine-worker.md": { + "mode": 420, + "sha256": "fd8bbe69947b69baa61449548d5746723c941ad8b663ec66d1b278234bebe5b2" + }, + "campaign/rollout/formal-verifier-state.md": { + "mode": 420, + "sha256": "2fbac02f5f22b45e94ee33f9f53779fa059c5e93282d3c2f5ad0af027029a1f4" + }, + "campaign/rollout/formal-verifier.md": { + "mode": 420, + "sha256": "f961ceaef0037001e6576d760e28e7aded0502f3d8311925e5ed1cc537c996dc" + }, + "campaign/rollout/gate-followup.md": { + "mode": 420, + "sha256": "677f17aef214e7a6c92958dd8ad98137b238cc7fe7c1da23bcf36d727f28f7c8" + }, + "campaign/rollout/gate-worker-state.md": { + "mode": 420, + "sha256": "96514befccc589487ac3b6ff9348106aca2e4e8e3aa348471943d589c74629e2" + }, + "campaign/rollout/gate-worker.md": { + "mode": 420, + "sha256": "55db7c5f637d849fb2f200ab12c35a794c86e377a5de3f562b1c32455583e65f" + }, + "campaign/rollout/housekeeping-completion.md": { + "mode": 420, + "sha256": "a25041ebaeb030f1cfc62564b5bc57a98818ea75e082f28036e9cc367096ccd1" + }, + "campaign/rollout/housekeeping-followup.md": { + "mode": 420, + "sha256": "5759aaf403c019173450822dc5e9d4aad711a7497eba906caea39bdb39bd3702" + }, + "campaign/rollout/housekeeping-worker-state.md": { + "mode": 420, + "sha256": "5ee9a48a691709af325994fd3d44a1ac6e40d05f26e09b03ae7efec2ecbe25cc" + }, + "campaign/rollout/housekeeping-worker.md": { + "mode": 420, + "sha256": "bab8219fadd0688e91d6211478a01403a36ae74fd2b6f7df0ad5c8745a542ca9" + }, + "campaign/rollout/independent-review.md": { + "mode": 420, + "sha256": "a7a8ebcce5202db0e67c8c65135df751e69ee6728c4c2ced92e1cc85b4279f22" + }, + "campaign/rollout/lead-state.md": { + "mode": 420, + "sha256": "3ded5b3f97d7882f72abef5ea268765a5db29c8b619486c153f5c92742040c01" + }, + "campaign/rollout/publishing-worker-state.md": { + "mode": 420, + "sha256": "641977e4d0ec400a3a6c38121ae5e7904aa1accc47179ee148ad7cb199029b0e" + }, + "campaign/rollout/publishing-worker.md": { + "mode": 420, + "sha256": "822812fbc803d443fb7e0855268c34224eda29f95e57274c217275b09ff4410f" + }, + "campaign/rollout/review-followup.md": { + "mode": 420, + "sha256": "853e3b5aab09cd77fd54cae6d8a61fb5ae092603ab2be8dee2db6d80492a6443" + }, + "campaign/rollout/review-worker-state.md": { + "mode": 420, + "sha256": "a704e6023eaf3424761bf431e49687ae1f1d687119fe00a466b9da2d9ef7bd42" + }, + "campaign/rollout/review-worker.md": { + "mode": 420, + "sha256": "0e348015440aabef95766010f14880619d34a472102698c9819dfbb029b8a6c8" + }, + "campaign/rollout/sync_verifier_snapshot.py": { + "mode": 420, + "sha256": "4133e536bfdb0e206ecdfc072062e7674b07b973c7f8b9d7f1a268520523d6eb" + }, + "findings/.keep.md": { + "mode": 420, + "sha256": "141ed928eaf10a2023dd2c0ff6ea68cf6ec423cfd28d5a359d9c5add730bf64c" + }, + "findings/00-strategy.md": { + "mode": 420, + "sha256": "3bc97827988c6eb4647713c5655271e156dfa466fad5685924010f3244fe6386" + }, + "findings/01-fingerprint.md": { + "mode": 420, + "sha256": "7cf0503c29f5beff852427c2c5bdf8e9d968386de777c47b6130771cac944cac" + }, + "findings/_template.md": { + "mode": 420, + "sha256": "b92d0ca7bfef4498a5f9e594453f15ab15e2c88c7582c4ed5df4c40e6871c3b1" + }, + "findings/control-flow/ai-visit-order-probe.md": { + "mode": 420, + "sha256": "e89f91a33139014ebdc22d79064ecfd06f9b4ffebb4bbc3da73734fc47534047" + }, + "findings/control-flow/alliance-mask-and-modcount.md": { + "mode": 420, + "sha256": "ec66c6b76d9e4c8bed385acf70e6a7d5da08e05eca72ac1e8e5cb307d87f2552" + }, + "findings/control-flow/combat-done-tail.md": { + "mode": 420, + "sha256": "799ace775f12ebe9a2737a711c8d0a6e617f0cefec70b93bf094e47cf81cc348" + }, + "findings/control-flow/combat-resolver.md": { + "mode": 420, + "sha256": "abf1a9329c1bd8a96c76481246a00b380e9a17fa8dc8900810218026e5fe1b9e" + }, + "findings/control-flow/combat-retreat-pipeline.md": { + "mode": 420, + "sha256": "6c40c8bdbdde672c9cd67248d740d88892ad2b93b30e27e9bebe0e96027cf136" + }, + "findings/control-flow/fleet-visit-order-mechanism.md": { + "mode": 420, + "sha256": "a2ea1a6ac9d383380e16910cff89dff0e9b23f1df66f47ef91dd266bd50b3a6d" + }, + "findings/control-flow/gate-indexed-rng-audit.md": { + "mode": 420, + "sha256": "5004b2480787eec7be66f40474648030fdaf7759087a4c4651091152d89351cd" + }, + "findings/control-flow/hive-creation-rng.md": { + "mode": 420, + "sha256": "5ff37d571c0380c798a137e0c6947a0c63109de489fd2100c99bfc6637fc272b" + }, + "findings/control-flow/indirect-edges.md": { + "mode": 420, + "sha256": "3dbf2acf7354f61de66348fe40965f3138dbc4bbff8cb0f06b2751e71ed06ee1" + }, + "findings/control-flow/inlined-draws.md": { + "mode": 420, + "sha256": "3b099718543d7fb112664699749602ff9d61de9aaebb561fc93f1f8b7a152134" + }, + "findings/control-flow/per-history-residue.md": { + "mode": 420, + "sha256": "739c7fc760583ca143036ce554e1eece640d1662fba4642e6f80fadd3dad13f9" + }, + "findings/control-flow/pinned-seed-rich-turn.md": { + "mode": 420, + "sha256": "7c62336767b7c69f513446543f37662ba2a0872e207b906279446bbe399d65b6" + }, + "findings/control-flow/raid-gate-multiplicity.md": { + "mode": 420, + "sha256": "6d7b7357be428ff79186478dc37063657ca4d8e2ad49fcdd92493753748a52f4" + }, + "findings/control-flow/raid-intercept-species-word.md": { + "mode": 420, + "sha256": "1da80eb14f0e3e5a0ce139f62976bb305e3e75a1e5e0631d8287f94eac093d8f" + }, + "findings/control-flow/raid-intercept-z-word.md": { + "mode": 420, + "sha256": "beb421953b70377c8c759f5cc936321faa6316be76d41020b41f26c99706acb3" + }, + "findings/control-flow/raid-target-pick-verdict.md": { + "mode": 420, + "sha256": "d0262a4187e35547b28d6be842e7c730aa3ee93565404b587a790706afabd694" + }, + "findings/control-flow/seed-exposure-forward-test.md": { + "mode": 420, + "sha256": "f108a07ce695b64c482af58db4caeb2607059a3357b62f04f7f36ce45c84ff4a" + }, + "findings/control-flow/standalone-generator-and-turn-record.md": { + "mode": 420, + "sha256": "e499f62534580f27c2a01395e08312ebc7df13bdd307342096f468212aec600b" + }, + "findings/control-flow/standalone-scaffold.md": { + "mode": 420, + "sha256": "0bf928260d5058815a2f09c4df8c08eb359430aeea941f872018de7cbca39105" + }, + "findings/control-flow/tail-probes.md": { + "mode": 420, + "sha256": "ae45e84a9c7f257170f7550301fc4e1a35d5210269bda8070469a5c921cce95e" + }, + "findings/control-flow/tail-rng-ledger.md": { + "mode": 420, + "sha256": "2db588423e7b7de7729e5319477c17fbcea5b7a9cb8ff00b01cfd72bfce25403" + }, + "findings/control-flow/trade-raid-rng-gate.md": { + "mode": 420, + "sha256": "85c7b27aa284988b07b5e67c8e48ef1725289f1a6956d88be2572577cc06e1bf" + }, + "findings/control-flow/turn-driver.md": { + "mode": 420, + "sha256": "3f4e92041a0842d211ea9ae1ae16a9fe400dacf9632209102a1f76acc6b30792" + }, + "findings/control-flow/turn-spine.md": { + "mode": 420, + "sha256": "e2a64f82e5dececb4ba56859d1e53a0f720e08472c79c39197beba7f6041811b" + }, + "findings/control-flow/w3-containers-status-handlers.md": { + "mode": 420, + "sha256": "fffbaa6e3701abbe57a54046416a102502afeaa29b14632f9506905c22bf3914" + }, + "findings/control-flow/watchpoints-modcount-status.md": { + "mode": 420, + "sha256": "0aec4c93ca7219e29827a5069a9829d5e58da2001e79a7316bce288d3e9a6c7d" + }, + "findings/objects/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "findings/objects/00-inventory.md": { + "mode": 420, + "sha256": "cada5fc81c42cb50878a26e43a58640153c600319e66d4c92a23d7c363ff5f14" + }, + "findings/objects/aiagent-block.md": { + "mode": 420, + "sha256": "55d646ab57e90477993d263399254a3b103024d89fff42491b7df5cf4ffc8037" + }, + "findings/objects/classes-game.txt": { + "mode": 420, + "sha256": "e0eceb77c56e05bc7863d3a07805d703fc0ecec489ef24fabe7c6161f2835199" + }, + "findings/objects/classes-mars.txt": { + "mode": 420, + "sha256": "b624f7bd82a5277462a39627140a85c7a7929fd292b62e45edb5c96fd53b6145" + }, + "findings/objects/ghidra-recon.md": { + "mode": 420, + "sha256": "ca4b043a73c1d5573aa0c83cd3942db731884910c90e7d8544c8a32c939e2fda" + }, + "findings/objects/rtti-raw.txt": { + "mode": 420, + "sha256": "39f6fdf8793f8202c19cfb87a75466b215254a13050ec37c0c496699298247ad" + }, + "findings/objects/save-editor-structs.md": { + "mode": 420, + "sha256": "835d4fbf154275542383ea499a527c044ec7d577486c2735b817bd32d6e0c853" + }, + "findings/objects/schema-gaps-resolved.md": { + "mode": 420, + "sha256": "9ddae36eb8e3ef909c4902d01200fc8a17335271e4e063939ae162a3eea5bb3a" + }, + "findings/objects/serializable-types.txt": { + "mode": 420, + "sha256": "59c2f3942f55eb3f6687758a4c447b1ed8902caa60b97d9619bb8228e27c6838" + }, + "findings/objects/serializer-struct-recovery.md": { + "mode": 420, + "sha256": "5b56d8e1a5047d602cea7a76227f30e17244057fe21fde3d4e2cc76e9f185416" + }, + "findings/objects/ship-design-catalogue.md": { + "mode": 420, + "sha256": "feded2191180e184d34d4992935dc117bff8d052e8a2c63ecc29fa7b2e6b561d" + }, + "findings/objects/struct-recovery.md": { + "mode": 420, + "sha256": "4e99ef972529101f5700b52845e263fb3789e0b82d8cdeca921f1595a24d92db" + }, + "findings/objects/svsctob-variants.md": { + "mode": 420, + "sha256": "89617cd2909f2242e9e1657fd4a8f5aafe5aa0c1e0e9bc8926fb67c1e830dd2d" + }, + "findings/objects/svsctob-writers.md": { + "mode": 420, + "sha256": "7a9b7f3bf4eae63cf522246227410b2e3ca789284b7c620f01550fadf479622c" + }, + "findings/objects/turncommands-block.md": { + "mode": 420, + "sha256": "8eca2b79838114e7ae46d34c6e75eaf3b04c0448d9896ed4219b118f09e83046" + }, + "findings/objects/wire-schema-channel.md": { + "mode": 420, + "sha256": "31f0fc4e1cc3c3e7ef938aa22ad65cfdec32be4f1ade476a7ebf32c3c6f07d6f" + }, + "findings/objects/wire-schema-closeout.md": { + "mode": 420, + "sha256": "bbae848b4f8d6d0f2a914268ac34e75b4cea483f52816916202f3bd3cd084255" + }, + "findings/objects/wire-schema-ratchet-debt.md": { + "mode": 420, + "sha256": "0d144181478a607f2474a7c8a1b71ca49c881ef6fd068b5e8859c3fa8129507a" + }, + "findings/resolutions/2026-09-08-ai-seed-per-process.md": { + "mode": 420, + "sha256": "0765bdaeade29122ab5e64493f3a7c339f1e4c4445192ed09ae3d229dd6ae943" + }, + "findings/resolutions/2026-09-09-fleet-id-order-residue.md": { + "mode": 420, + "sha256": "b3d63a11e8ebd55da4af15760d044607b6105216898a018f5ceebc94750817e8" + }, + "findings/resolutions/2026-09-09-seed-exposure-is-a-predicate.md": { + "mode": 420, + "sha256": "dd7ce18738a625b9008ef80783bd64fc3857852775ab3b784b9e5f4fd5ae7de1" + }, + "findings/resolutions/2026-09-09-tail-draws.md": { + "mode": 420, + "sha256": "ff86a332ea9f87bd6f42a0b64e837e6f6f5876423ae9403a903aa9bfe7c42678" + }, + "findings/subsystems/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "findings/subsystems/ai-client-seed-is-per-process.md": { + "mode": 420, + "sha256": "5e6de0418588ff28cee29cb9affd69c3183819318c314eeb0771bbe810e6b4ed" + }, + "findings/subsystems/ai-order-capture.md": { + "mode": 420, + "sha256": "6efebf9f00b375d2c7f29ddeb24ef7a04e3b02cac9027369b490157a196d08ce" + }, + "findings/subsystems/ai-order-emission.md": { + "mode": 420, + "sha256": "9e54a13a18387a4f93acc5c66dbf71d365c81f1a8e6d2aee31f7a89712894ace" + }, + "findings/subsystems/ai-stepping-and-passes.md": { + "mode": 420, + "sha256": "e7e2fc612457a4e77df362aea2928d20fa5a2456fe12a7fbafeaf3c9e01c1dc1" + }, + "findings/subsystems/ai-task-system.md": { + "mode": 420, + "sha256": "577f8fc41256ebdf9629f1e30df9aac7f51c1a84b55f60c2b59e4af4c55126b2" + }, + "findings/subsystems/ai-turn-logic.md": { + "mode": 420, + "sha256": "79e9b7c9592d583db7b9d9ce472804038a71febf7527bd69e31b3399caeb0770" + }, + "findings/subsystems/battle-load-profile.md": { + "mode": 420, + "sha256": "3cf8e28925ebbb162bca9c3be9e6b2599c82ab6aaf9a9d99ffd9c934bf773c77" + }, + "findings/subsystems/data-model.md": { + "mode": 420, + "sha256": "f01c9bfcf8ed9fbf9fdd30556308a1dbb1094896050cc8a5e4fbc1c6c61aff78" + }, + "findings/subsystems/data-parsers.md": { + "mode": 420, + "sha256": "6a428c14279ac2c589b4af932e762ef7e3ada1a878128527b8d88858c11fbc35" + }, + "findings/subsystems/determinism-oracle.md": { + "mode": 420, + "sha256": "4fe0abad0b1b825392cd47b792d06756742495f26ff40a6a433d8608b4680bcb" + }, + "findings/subsystems/eventlive-verification.md": { + "mode": 420, + "sha256": "8bfcc75e57ddf88ec8a4b8885f033be8ffd420965077ab284b1ebce535ecf1a0" + }, + "findings/subsystems/events.md": { + "mode": 420, + "sha256": "c5d6e168d6d48eabec0ae0a448f9c3ec8d0f751a67fc320bc1021ba10008a3bf" + }, + "findings/subsystems/formula-gaps.md": { + "mode": 420, + "sha256": "63ec96a27fac5381d33cdce3e549d230bd5b0230e4d8573f4f3d45bab7d47ffc" + }, + "findings/subsystems/fpu-precision-sensitivity.md": { + "mode": 420, + "sha256": "4cf84e2a1c3d0eaaf9b3a7f218ad663ffa6984389b2a25851249733ad708ff8f" + }, + "findings/subsystems/golden-trace-recapture.md": { + "mode": 420, + "sha256": "b244f939b87dd464d78d919675c0e6aa010b0ec7b4fc6e4178e26c2c8ebee738" + }, + "findings/subsystems/id-allocation.md": { + "mode": 420, + "sha256": "b04a14a5a7d4d1c6137c4f9072987eebc997421e550881dcc2c8e386187f5b90" + }, + "findings/subsystems/income-term.md": { + "mode": 420, + "sha256": "c40286635675a91ce779b887a0394e92f946844873a778015efb98c4a105b67e" + }, + "findings/subsystems/loader-prototypes.md": { + "mode": 420, + "sha256": "f1d09471d5e17c45413b86805f561329f5af24eadfb17c3c740686c39b167ed6" + }, + "findings/subsystems/money-chain-float-widths.md": { + "mode": 420, + "sha256": "99bded6f2d34a713bc175deb4ad5ab4559ce1cc90274b036c1818ad8257c2fef" + }, + "findings/subsystems/movefleet-position-rounding.md": { + "mode": 420, + "sha256": "12dbdc03658cb042b5927586769dc9c19fc2eb812f703e73bf26273f8b0d65a6" + }, + "findings/subsystems/multiplayer-combat.md": { + "mode": 420, + "sha256": "2f4957011b5c5875b8aa7f71531dd5dfe3fd8df4f2c67a7be2fb5999f090c02b" + }, + "findings/subsystems/multiplayer-gamespy.md": { + "mode": 420, + "sha256": "a878e97775d27e085e58b18eaf5a67aaa522456d1055ca142f0477e3d6152d47" + }, + "findings/subsystems/multiplayer-tier0-verified.md": { + "mode": 420, + "sha256": "942ce29cbe22d8f7de5af54f2017c0433c7b8e1a56c864868ec906ffcbb9059a" + }, + "findings/subsystems/nav-classifier-live.md": { + "mode": 420, + "sha256": "b8aacdea8072a99ba1192e235088b372180f094795baf164e8cb95bd2df9f3b0" + }, + "findings/subsystems/nvo-tshn-visible-owner.md": { + "mode": 420, + "sha256": "ef96bb61769c02affd7148cd95e70bf358cbe6263fbe9b47aba6cf4cfa8486ad" + }, + "findings/subsystems/observedtech-append.md": { + "mode": 420, + "sha256": "61efcf51bffe53b8a10a2cdb8123db3f8c55b6874db87418fc31737efedaa652" + }, + "findings/subsystems/output-term.md": { + "mode": 420, + "sha256": "9eb9ff58a1d4cf34d3138f5044788b6f87ff4c94fa871b2dedd6ff6667196533" + }, + "findings/subsystems/output-turn-path.md": { + "mode": 420, + "sha256": "4e199e5cc14802c1b14b37cff0c1359b43aca94dab833f9024c7825c4c512588" + }, + "findings/subsystems/path-solver.md": { + "mode": 420, + "sha256": "3e0e318d45e14f844831c4180e47011263f64067dacf3249742882186d65cf18" + }, + "findings/subsystems/players-residual.md": { + "mode": 420, + "sha256": "e2f56c7983856470d37cd0fba4834a0ccb34dcaddbaf9acaf5dcdc253c6b3507" + }, + "findings/subsystems/population-growth.md": { + "mode": 420, + "sha256": "c2ec2f062e1224045b761640549e7374336ac762bd61c686a0c1378ad829a993" + }, + "findings/subsystems/rcex-explained.md": { + "mode": 420, + "sha256": "df7c9de6f02c1bd38f69e3a5344ec663d97b1d6b738ff408dfdeb0e2f6175b32" + }, + "findings/subsystems/relabel-new-ids.md": { + "mode": 420, + "sha256": "562ffe347adc6432a7824bfa2b324b6b1812b4fcc18343f0732c0f3d9991be20" + }, + "findings/subsystems/research-replace.md": { + "mode": 420, + "sha256": "d0f692cf687a7fe6aab62fc5d7d076eb595e1c33fd84c6f1e437ed01025cab4b" + }, + "findings/subsystems/roll-parity.md": { + "mode": 420, + "sha256": "7d97d7e5eee7b9f135e32b6553bb94ca83fd05b1eca7d18c42e9d65cae4d95d1" + }, + "findings/subsystems/rung-b-rich-turn.md": { + "mode": 420, + "sha256": "44378c6a305a82b2d131270fa5d97fdcd8a7fd5c9760ecbad7715383eac2db68" + }, + "findings/subsystems/running-the-game.md": { + "mode": 420, + "sha256": "f6109f69c6b86e4cf01d0f2e1f8be9921ff632513bca5d9e44e7f6c34f1cd260" + }, + "findings/subsystems/setresearched-cascade.md": { + "mode": 420, + "sha256": "9c079de161a1d1387339b8e8081395c1356c1443a0c898942acfb6efb65a454f" + }, + "findings/subsystems/ship-construction.md": { + "mode": 420, + "sha256": "86f570b1872c8dfac3982d1d7335f4798ccbd1bfd73c91d481afba2734c41216" + }, + "findings/subsystems/ship-design-composer.md": { + "mode": 420, + "sha256": "639b276e9205aaf6c90d9c458a383cc073e89f401ef8f17f8ad5a8a0c5899fa8" + }, + "findings/subsystems/snlv-measured.md": { + "mode": 420, + "sha256": "785324d176be969e1809090acd6b7a48d27f4fa41472c0d9c6f568c0b3a1e539" + }, + "findings/subsystems/spy-detection-roll.md": { + "mode": 420, + "sha256": "214179f5091408ef01ce4b80565068cb9a0885d1c6a233cda476280b9bf29c0a" + }, + "findings/subsystems/spy-program-draws.md": { + "mode": 420, + "sha256": "0c61c2f9cc767ae679921bfc42ef9a207ec9a6e0dc88419a673a8e439f1abfc1" + }, + "findings/subsystems/strategic-turn-internals.md": { + "mode": 420, + "sha256": "3a5c17e025d4968db6030f8ef1daaa2b03ccd4def12d35cf3a0eabcb0b5cbb54" + }, + "findings/subsystems/strings-and-config.md": { + "mode": 420, + "sha256": "67aefda7792e329b7df3f6e8cf42c7bae7049867cdda0741e871b183bc528786" + }, + "findings/subsystems/system-visibility-prediction.md": { + "mode": 420, + "sha256": "b420526ca0410bd4578dd2ed29cd9a21ed3578d6345d9f853a883e0159c1f89c" + }, + "findings/subsystems/system-visibility-record.md": { + "mode": 420, + "sha256": "d2843e10c156a7c85d7dab40d00204475fc725dc9b93656f6cde941ceceb5f51" + }, + "findings/subsystems/t34-observed-designs.md": { + "mode": 420, + "sha256": "207641821a55f5671749b000d478afd9e427336e2d123a55ad2203f34dfaa796" + }, + "findings/subsystems/tech-effects.md": { + "mode": 420, + "sha256": "7423f1e2cb2a597738b244d58bdf467431ee5de725ac434b904676ddcbcfc609" + }, + "findings/subsystems/techid-name-map.md": { + "mode": 420, + "sha256": "cfd92a7885dad3775465fc0c5b40aeb1749499f90071b44855ab8e1746d5f752" + }, + "findings/subsystems/trade-and-spy-workload.md": { + "mode": 420, + "sha256": "147057456fa30b6218df19679abab1ac31b78276a4272d221b70776e154396ba" + }, + "findings/subsystems/treaty-turn-stamp.md": { + "mode": 420, + "sha256": "fa0a8588847cc2b9e92cddeca65fd00fe3d84a00a1034d9354053c7e6cd9ceb5" + }, + "findings/subsystems/turn-command-replay.md": { + "mode": 420, + "sha256": "b65fa3c3c01c67bc16ec488e4a44e6c748256e941c80987528b7602038a56e07" + }, + "findings/subsystems/turn1-to-turn2-nondeterminism.md": { + "mode": 420, + "sha256": "9ebe834fa0f7c1cf864032ec67da76730ed6c239d6bd3a717f147490116acc4d" + }, + "findings/subsystems/turncommands-capture.md": { + "mode": 420, + "sha256": "a57fd2a77784fef1b176749878b161c4f04ac77c1f4a061a6b713787d92fb9ef" + }, + "findings/subsystems/ui-screen-map.md": { + "mode": 420, + "sha256": "d266285e3ca99ba3b5ebbab47c78f3df247a8b539c0519c6fd27a999b9d6f84b" + }, + "findings/subsystems/unlock-cascade.md": { + "mode": 420, + "sha256": "38d29a9484aa3910f5a62b5dd08225ba590bf26901203c5aef1b0b466fbbc5fb" + }, + "findings/subsystems/value-domain-census.md": { + "mode": 420, + "sha256": "bc99139708aee5da4cafec585fc35ab3523b51571518038db19b5f1383c6a6c4" + }, + "findings/subsystems/writer-byte-exact.md": { + "mode": 420, + "sha256": "a0e91a90d2ae78328dbaef30b37d53037cab26489e4729413bcfebbafcab0978" + }, + "ghidra/addresses.d/README.md": { + "mode": 420, + "sha256": "cf2745d5d3e504725ae5a296dc20e3d63b8d32a903445aafe2af61828a6d59c5" + }, + "ghidra/addresses.d/ag.json": { + "mode": 420, + "sha256": "24d5b11779364cf198008b143c7a3a092117ec4a1530c489497dbc8acdf62d8e" + }, + "ghidra/addresses.d/ap.json": { + "mode": 420, + "sha256": "e37f478836eb297f9cc5186cd7df3f5942abc4b6396a4d2866e613841437f778" + }, + "ghidra/addresses.d/ar.json": { + "mode": 420, + "sha256": "8d8620be8dd807a610ff63c0d77cbf266f3d9ce272158991d1f55d9c9910c248" + }, + "ghidra/addresses.d/as.json": { + "mode": 420, + "sha256": "08a869ab9466d4b575363cfb6fc084ca72cdc05d509c5d87e658a9a9977a7ae9" + }, + "ghidra/addresses.d/az.json": { + "mode": 420, + "sha256": "60b9a169605ac171cffb848024141c9224f6897bf69b547b9a4f2b5ddfc8d835" + }, + "ghidra/addresses.d/bu.json": { + "mode": 420, + "sha256": "79037146ba621e43e561bcf0577afc25b2ffac4ced44c902d2ea8ed9171b1bb9" + }, + "ghidra/addresses.d/cz.json": { + "mode": 420, + "sha256": "35de20ff0e38d05b5c58c89690dfc81ce44eb280a2a594ae862e55d56edb5d3c" + }, + "ghidra/addresses.d/dn.json": { + "mode": 420, + "sha256": "c41f877a37bc864f8f315a47b720ac204c22c25de405f4de63b845180641eba0" + }, + "ghidra/addresses.d/dt.json": { + "mode": 420, + "sha256": "580762e01175fb7246d0f9214e4ed9ba16bebcdb82ad1525fd1f77c0910c660f" + }, + "ghidra/addresses.d/lane-a.json": { + "mode": 420, + "sha256": "fce5f06866bddc6bca095d53e376495103dfd8900ad7da0d0d6731f105915d71" + }, + "ghidra/addresses.d/lane-a2.json": { + "mode": 420, + "sha256": "1207088eb2ae041afc2618a627029e25f578ae9fe8db73bb9efb616f39c34bf0" + }, + "ghidra/addresses.d/lane-ac.json": { + "mode": 420, + "sha256": "02a1c2f01ca0d11a7c38d416d94fabaea64b5c5919f6ceaead83430fb398710e" + }, + "ghidra/addresses.d/lane-ai1.json": { + "mode": 420, + "sha256": "134a0cb87b95bf5f39ed015bcdf64c6e8da6b22e073d5b5487148cb5421addff" + }, + "ghidra/addresses.d/lane-ai2.json": { + "mode": 420, + "sha256": "e9d94ce026231d420538400fa9c73fa8a2fa882d16f542c6b8ce2c34014acda6" + }, + "ghidra/addresses.d/lane-ai3.json": { + "mode": 420, + "sha256": "89c29e1bbb1159b7b6fb4fc8c232902f8497efc82290aba6f50c9c9097feec6a" + }, + "ghidra/addresses.d/lane-ai4.json": { + "mode": 420, + "sha256": "78b7897d3d2678ddbff7cd982bfa7d93a0c26817846a148fd3f46790fef9d7fb" + }, + "ghidra/addresses.d/lane-b5.json": { + "mode": 420, + "sha256": "641c724d1fbf28f5469aac488401ea2f92bdd3b929fbf053ddeef0ba5b8de9da" + }, + "ghidra/addresses.d/lane-b6.json": { + "mode": 420, + "sha256": "b2b2833220e3a645efab2b767f1d93d1215a54d195e28e6743db8f1d89934697" + }, + "ghidra/addresses.d/lane-c3.json": { + "mode": 420, + "sha256": "b732932503c181c77bb14ba0136379c8fa3501d0c1471b02d9bca7d023bb5f5a" + }, + "ghidra/addresses.d/lane-d2.json": { + "mode": 420, + "sha256": "8b5df39fb5eea0cd40dffc20aaccabe169f5472171dfd242ca2e75dfc4ca608c" + }, + "ghidra/addresses.d/lane-e1.json": { + "mode": 420, + "sha256": "cb38b41b747bf74ee73fb7eaa301da4bb896d089fa1dea4197382e94940c7f69" + }, + "ghidra/addresses.d/lane-e3.json": { + "mode": 420, + "sha256": "a5fe9dbb37ee587bf36a311771bbc9d8dcaa4d4fcc0b420b8f45829929b0ff98" + }, + "ghidra/addresses.d/lane-ev.json": { + "mode": 420, + "sha256": "b243d31bcd69bfb1e5928ba8b70e958e559c88ee5190ca34e569f217a784798c" + }, + "ghidra/addresses.d/lane-g2.json": { + "mode": 420, + "sha256": "84401f05c5cf2ca0839e817877892e904b3fd2fd4175607abc34453acd8ce822" + }, + "ghidra/addresses.d/lane-g3.json": { + "mode": 420, + "sha256": "d176eb4a07bb6b98acea77e1a0a9904d317a594768ecf8719bbfacbdf6522729" + }, + "ghidra/addresses.d/lane-h.json": { + "mode": 420, + "sha256": "e8cffe89c7feb1d9fa1949f33aff01edc7b84b49ab752275662f6f613c16c0b6" + }, + "ghidra/addresses.d/lane-i.json": { + "mode": 420, + "sha256": "a4c482ff6fee78e96da3400b9ba7d76b58634a5933ff388db5993a1b105c8aca" + }, + "ghidra/addresses.d/lane-id.json": { + "mode": 420, + "sha256": "3f48c9b2e2c3a08e13a856bfb78d551af17f5a1a1079f03f8edbf4615f17ca7d" + }, + "ghidra/addresses.d/lane-j.json": { + "mode": 420, + "sha256": "4fd95b08fee60a2748995cb082fe50d61e7179ae90b106f230bfc5c55a35660d" + }, + "ghidra/addresses.d/lane-k.json": { + "mode": 420, + "sha256": "f6ead3ff256fd2e1408d52bfa28e308f106ad672b3fe1cce0d136faac351136e" + }, + "ghidra/addresses.d/lane-l1.json": { + "mode": 420, + "sha256": "ecbab4a1b602beefd6889effc4883b7f7de01afabb7c5c071bbc4e2237e9131b" + }, + "ghidra/addresses.d/lane-l3.json": { + "mode": 420, + "sha256": "eabb96253bee36c799f1eb89108e284162606cfdc5e9bd29dbf7b5f88ee88adf" + }, + "ghidra/addresses.d/lane-l4.json": { + "mode": 420, + "sha256": "5b2b54d2f3e123e352e9a2b0f1d80fc8afcdd0b97916a94ee5a62ddc03b0ae75" + }, + "ghidra/addresses.d/lane-l5.json": { + "mode": 420, + "sha256": "cedc4869149212d401c519c46fa3f02769f9c939fc560fe8d35cc4f898091482" + }, + "ghidra/addresses.d/lane-n.json": { + "mode": 420, + "sha256": "6987efa430f2da8987e42e61e53113f914cb00e3e52a7c679565e7faf5160c82" + }, + "ghidra/addresses.d/lane-o.json": { + "mode": 420, + "sha256": "7fcf357f25ccdf061b6bc688339e2006f830c551718b6419a0a9d0ac968bb555" + }, + "ghidra/addresses.d/lane-p2.json": { + "mode": 420, + "sha256": "7eaa63d64a0054ef88f323f58b31fca07bd2372dc21560b4bda64eb13d869792" + }, + "ghidra/addresses.d/lane-par.json": { + "mode": 420, + "sha256": "3836b786aec28feb028271d05f368d7c332b8930b51cfdceb36540133a3d3237" + }, + "ghidra/addresses.d/lane-pl.json": { + "mode": 420, + "sha256": "f29953d17effbb7d8256687833023d4656522e74c40bf1ea646d3b35da3635d7" + }, + "ghidra/addresses.d/lane-q.json": { + "mode": 420, + "sha256": "6f98496ffc288fb30c3a7347a7e5252b296f2345afd1bf678f98a2c934b8935a" + }, + "ghidra/addresses.d/lane-rb.json": { + "mode": 420, + "sha256": "bff95b9452e0efb63e74f741682c8d1843abfe3e722143cf01cf092aa894d75d" + }, + "ghidra/addresses.d/lane-sd.json": { + "mode": 420, + "sha256": "d3239b619cbef5cddc9c7bde6525301a99a6423f8a0e42c1ea53b9ae269c6da9" + }, + "ghidra/addresses.d/lane-sv.json": { + "mode": 420, + "sha256": "f574d8b4dc75da722870c74eb29cd56c75e04dd0ac384b4549fc95d425e3de3a" + }, + "ghidra/addresses.d/lane-t.json": { + "mode": 420, + "sha256": "70975f3c1dea55ceb11af12b9ba3a04e8f7bba2e25f1355ffcd3cd457c41545c" + }, + "ghidra/addresses.d/lane-t2.json": { + "mode": 420, + "sha256": "1e3c59089b769cc5f5d3cf16c33cb6db002966f5beb1a4fb9dd8e28fe54cd6a7" + }, + "ghidra/addresses.d/lane-u.json": { + "mode": 420, + "sha256": "bcccb6ec9257537eece135adbfd126904ca0becf14f9b5d17253adf5d8c9e8fe" + }, + "ghidra/addresses.d/lane-v2.json": { + "mode": 420, + "sha256": "6a4d4960ce99c05b928164159eaf4482bf763785a1f8c50efe133667886d9a54" + }, + "ghidra/addresses.d/lane-w.json": { + "mode": 420, + "sha256": "3971d65c772146534f5d8c350f2d203add70ac82801f57f3704c47cd59b51226" + }, + "ghidra/addresses.d/lane-w2.json": { + "mode": 420, + "sha256": "677648e94de8e1e0d538c9575c9be942d0b37c1a847effcb3c2312af5b6aa7d9" + }, + "ghidra/addresses.d/lane-w3.json": { + "mode": 420, + "sha256": "50ed8ed1b16288b00bac4df0886646dbf9d6d6392867029b4eac386806b41b51" + }, + "ghidra/addresses.d/lane-z.json": { + "mode": 420, + "sha256": "bc63a82f2d0cb7636e95f8a07f183f80817a4c65d2bb7263a047ec3c540512eb" + }, + "ghidra/addresses.json": { + "mode": 420, + "sha256": "865c02d88ac6ede656160a5ab20521ad8854efa381d5a943ab422216aca2c016" + }, + "ghidra/generated/sots_addresses.h": { + "mode": 420, + "sha256": "1cf6b4ab40d3cde306edee12ba4eb05292b98ddcf5c2b7c22c1c64b6075b1bdf" + }, + "ghidra/scripts/FixPlayer.java": { + "mode": 420, + "sha256": "9f9ea470af063339511b1f1c85d6dea2df0827c4fed5806c6f641b1aad3e5660" + }, + "ghidra/scripts/FixThis.java": { + "mode": 420, + "sha256": "aafeeb482f71d1bdcbc99a51fb3f21989a46fbb49b5a572f3d9e436c9b3b98b4" + }, + "ghidra/scripts/LoaderRecon.java": { + "mode": 420, + "sha256": "1275d460227e0098254885fe70666d618da7215bca99483a5475c1e701ab9b27" + }, + "ghidra/scripts/LoaderWriteBack.java": { + "mode": 420, + "sha256": "d1040cb9ee80f0fe4d2310d95b38d7d94b0972283f74ea6058de0bdb9e510e63" + }, + "ghidra/scripts/SpineRecon.java": { + "mode": 420, + "sha256": "bea798733cf60f9478373cc453692104058b643ba5b7fc68e76945ae6f496950" + }, + "ghidra/scripts/SpineRecon2.java": { + "mode": 420, + "sha256": "94f10ac953091d50187a46b74803abb4812b244356f9336fa8e133a8a6cba0c6" + }, + "ghidra/scripts/SpineRecon3.java": { + "mode": 420, + "sha256": "b2344ab3d7195cfb935505ba1949f3d4862f787ccb95b812cef3856f92c94ffc" + }, + "ghidra/scripts/SpineRecon4.java": { + "mode": 420, + "sha256": "1093ee635be94f0c0bb31b5bd79f030faa0d7cbab96a495426363172cbcd1d66" + }, + "ghidra/scripts/TechFx.java": { + "mode": 420, + "sha256": "bfa8e990d65ad7cb2b665ee284ec2d645395e0fb3794ea146b175e2937a159ad" + }, + "ghidra/scripts/TechFx2.java": { + "mode": 420, + "sha256": "ee7040ed3316f2e717bac207c3e8ba9bf5ecb560f9e2b38335582c4ca6bae5a8" + }, + "ghidra/scripts/TechFx3.java": { + "mode": 420, + "sha256": "b672751160abcfee37d16eb2f107a60420b7d6956c312fe93e9f62578c06b96a" + }, + "ghidra/scripts/TechFx4.java": { + "mode": 420, + "sha256": "ef912e86f802452f33c20a1adb87eeb96f0ec893e26ee4bbd02305ba0c5e46c7" + }, + "ghidra/scripts/WriteBack.java": { + "mode": 420, + "sha256": "e002a5b86bc58cf75ef8d08dbaeb84bdf3306c1e8d49e92c0382f8ed858c57ac" + }, + "ghidra/vtable-owners.json": { + "mode": 420, + "sha256": "8ee89f3b43f56283a6ffcc605394a1ab246f8071370a9db8f1e770942a5a82a3" + }, + "guides/lab-screen-wall.md": { + "mode": 420, + "sha256": "d398b47853013dbce63b4af2f2ec680c39775732b9fbba13f5fc42a46628550f" + }, + "guides/method-rules.md": { + "mode": 420, + "sha256": "a71a8415202fe97ccaee3805bf4035684776c37f5613dc39a1f260aa33f94b69" + }, + "guides/multi-agent-workflow.md": { + "mode": 420, + "sha256": "f5bf0c30c12a3a9e1725549fe000be0105d415ca25b120673a780901148f08da" + }, + "guides/re-windows-2000s-howto.md": { + "mode": 420, + "sha256": "3490650440d6e683cb029915b8c2cace914b1f52538c9db89175ad4547db2901" + }, + "guides/windows-lab-housekeeping.md": { + "mode": 420, + "sha256": "4a9e9d66dd76e6b5ee1951686186190c650a617fa812fa4bd236ef02b783939a" + }, + "notes/.keep.md": { + "mode": 420, + "sha256": "7878c159a1b9636974e9093902027a24bf7b3c7520f13a8d96f930bd10d22f1c" + }, + "objects/generated/sots_stream_schema.h": { + "mode": 420, + "sha256": "13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c" + }, + "objects/layouts.h": { + "mode": 420, + "sha256": "24586f7f1c25530691193a919c6335ab1784fa2815b222326409cfe9e2a42981" + }, + "objects/layouts.json": { + "mode": 420, + "sha256": "16bfffa5020d98c12af61c72a48da8f2c5e06d1060358802717e585a49b150b2" + }, + "objects/layouts.md": { + "mode": 420, + "sha256": "83bc29fcd379847f9ebd6732edf9748c1c878052e889615928659307f97a148c" + }, + "objects/streams.json": { + "mode": 420, + "sha256": "60993eda14d0b1056578718d43a3b6d89816e12c4f5a00674806aeef9e81baf7" + }, + "opencode.json": { + "mode": 420, + "sha256": "d24be7fcee57d5eb04c6b7189822a2ca055dd4a70daafbea67f09a120945d49f" + }, + "scripts/.keep.md": { + "mode": 420, + "sha256": "b0cdcee8cfdc1b15ee444520b6b01c747399deea6d92ff2576ca6eb57331bbac" + }, + "scripts/forgejo_campaign.py": null, + "scripts/lane_v2_writeback.py": { + "mode": 420, + "sha256": "69a66058adb04926eeb6f0e81fa8f0392ce06de2e8d8eb61ebcf503bab6311da" + }, + "tools/DASHBOARD_README.md": { + "mode": 420, + "sha256": "f401cc54f64a4862a938263f37eaab22e6475e063e59726e02dce201f657dcc4" + }, + "tools/aiorders_to_tcb.py": { + "mode": 420, + "sha256": "9762d1fd45f3ab7c045088e222c5386a2cc63a6b25e1c09a49cbbd71837bfe17" + }, + "tools/cache_functions.py": { + "mode": 420, + "sha256": "18c037e48ab035764b0c877123ea7c998ef74240c63090e4f58142f57835e0b1" + }, + "tools/campaign.py": { + "mode": 420, + "sha256": "c7b7c7a30d907bba8e59386dee8704d7f3f5e978fcf709b686e37996fa465c31" + }, + "tools/check_agent_config.py": { + "mode": 420, + "sha256": "93115532cb38105777a5c5c20a9f2a808043370e0d4f560a9c82fe8e800076ec" + }, + "tools/dashboard.py": { + "mode": 420, + "sha256": "c84aeeea6fb7d5e45ccec8882bacc59182149f108edd9eb1585eab9ede99911c" + }, + "tools/displacement.py": null, + "tools/evidence.py": { + "mode": 420, + "sha256": "0a7f8497ed287b4b64aa5ba0cb25735172408e38f3605b3ff90f009c7f02eb85" + }, + "tools/gate.py": { + "mode": 420, + "sha256": "4df5ee7022fb2601687f06eab788e2cea1e345e580c4e92c9d47be1787d37460" + }, + "tools/gate.sh": { + "mode": 493, + "sha256": "d7ba27b9b0c6a03df48e4edc71884ef9986743f8afa751dbfec116df5aeee18c" + }, + "tools/gen_addresses.py": { + "mode": 493, + "sha256": "5d995585d4192a19db7cc6d31ed811fa80264159fc114f03f58793f9b6c4908e" + }, + "tools/gen_stream_schema.py": { + "mode": 420, + "sha256": "a9c3e925bb3370371a2c8cde8d738c657fe1cbf68c39c6155562bbb20c551461" + }, + "tools/max_income_oracle.py": { + "mode": 420, + "sha256": "8d3ec6ba5c677486200eab7d1ca55e1350947829e603737307fa394ac8e40bcd" + }, + "tools/max_income_predict.py": { + "mode": 420, + "sha256": "85400c82b6cb7c6786b7fb6486bdc7bcb1140817f7a0ff0b4fa4f7dbeded8797" + }, + "tools/probe_report.py": { + "mode": 420, + "sha256": "f3ef378c10bae4a8bef754d853f0e86616bb95b5e051e04cac97d362587df1a7" + }, + "tools/reva_call.py": { + "mode": 493, + "sha256": "89477650d38985f84b61a664572de1cbde1268b879d3da5e874598942822998b" + }, + "tools/rng_ledger_report.py": { + "mode": 493, + "sha256": "b4f3f581eb6de50118fd531c848354816c20197711e668ce8b0cfcb4d0392cf3" + }, + "tools/rng_oracle_check.py": { + "mode": 420, + "sha256": "f27ca7f9aa03bc672f04067bc71e73ac83742997f12f5f55ce11151bdc39d98a" + }, + "tools/rng_site_report.py": { + "mode": 493, + "sha256": "fabd950c002265403f7b13a8868a158d867828c9930770ed096a2610b086ad35" + }, + "tools/rtti_map.py": { + "mode": 420, + "sha256": "9ac88a8aa566fe08336ba6e50905ec4253409e1317f491c415b1b9ebcc0713e4" + }, + "tools/run_agent.py": { + "mode": 420, + "sha256": "0f5ccb53dcde59b64fe999768737b6cbd2dabcc1272e5605c1f1ecd86e5d5d2b" + }, + "tools/select_evidence.py": { + "mode": 420, + "sha256": "a6e648a77bcf799cc774ff9d0de83011283049ed0f0c44f6e08857a8410e9463" + }, + "tools/serializers.py": { + "mode": 420, + "sha256": "938904eb7b4ae30a61dd966494b112c6d52399f9d4a4658add06b40a54d6cb73" + }, + "tools/serializers_ghidra.py": { + "mode": 420, + "sha256": "d27da0afc8d043d31335bbe274fc76245e50cf0f9091a968b124f31c3a17997c" + }, + "tools/serializers_golden.py": { + "mode": 420, + "sha256": "29d2509b54704b80eff46a59a320719edb17a7eb67fd8acb8ad5e3c427d8e825" + }, + "tools/standalone_report.py": { + "mode": 420, + "sha256": "43a61c4031306732554aca23cd95b57d35f2a870766c33ccf8e005f22436525c" + }, + "tools/streams.py": { + "mode": 420, + "sha256": "57ec4ec5ad222a74f4461d70277d258e51779ae53ff74fd0e07eb51d4bae0afd" + }, + "tools/strfootprint.py": { + "mode": 420, + "sha256": "3b0db212c0b091ae2f63b866ee331435d013c535f233ec34ae3dfb63ded852dc" + }, + "tools/tcb_from_json.py": { + "mode": 420, + "sha256": "8fe09cff16802fda34db24f6f888610baa258399ab39173586b91a7a162f231a" + }, + "tools/techid_table.py": { + "mode": 420, + "sha256": "2c644bdbd3774b70dfdae7e77ff7a3a8e8563b58be7098a2d55ee30dc8b8fd07" + }, + "tools/turncommands_capture.py": { + "mode": 420, + "sha256": "0214d5da6f5f86e188bb2f03db8d3439267baee3a883c7df754601c7c1a38536" + }, + "tools/vmshot.py": { + "mode": 493, + "sha256": "09228bf8bd61918c49afc2b6da931fc8a7833be126be5384b85194e0e86eea44" + }, + "tools/vmwatch-install.sh": { + "mode": 493, + "sha256": "3c004f532422bd589a7294dabdf54d5a726f598c69012eaea3d73a748ad0123a" + }, + "tools/vmwatch.py": { + "mode": 493, + "sha256": "650d8232e46239a55b96f26d581d7d9c5815415c9014fd2e5b846b68c1346b39" + }, + "tools/vtable_map.py": { + "mode": 420, + "sha256": "2e19223efb79421ab4b807e32f0854b2592d7d3a3a52c12e84e47460b960f740" + }, + "tools/windows-housekeeping/Invoke-Housekeeping.ps1": { + "mode": 420, + "sha256": "a97911a3cfbd47813282efa7f52b4de03d28912487fffe0e7e7aa1a250cac01a" + }, + "tools/x86disp.py": { + "mode": 420, + "sha256": "a05a42d63813d2025a4da65bdd684e82a89c95c52901a8f490391e31c49a122e" + }, + "verify/campaign/test_controls.py": { + "mode": 420, + "sha256": "108460f4e90c4cb7036642e85de581e31fd70c478533c32364691260461814fc" + }, + "verify/config/test_agent_config.py": { + "mode": 420, + "sha256": "e60ee546672da91de08ca8fdd5d563b5f1207d0a865adf935017e06bf437585b" + }, + "verify/config/test_source_check.py": { + "mode": 420, + "sha256": "c16731e31a54256dde4f88d33007759ff21ad8537ca6cd2be38b9e34c59525ad" + }, + "verify/design-rules/SHIP_DESIGN_RULES.md": { + "mode": 420, + "sha256": "4decf51bfa03e8ab2b58478198332e834233100126949b920349f210b54521c8" + }, + "verify/design-rules/data/HiverInvasion_FleetTemplates.csv": { + "mode": 420, + "sha256": "327e799be3c75361267725c157f78b425d3a1df6ed6595104b2ce9993e8ae3a7" + }, + "verify/design-rules/data/UpstartApes_GiftFleetTemplates.csv": { + "mode": 420, + "sha256": "89939d70eb6ed48ec776a4a6fc50ccb68fc6be7162706bab199484bf7cdd5e44" + }, + "verify/design-rules/data/_defaultweapons.txt": { + "mode": 420, + "sha256": "ef9e33aa32840f1878ece67f88556d81a4255f63f6e8aad4ac73e575ef2c7ec8" + }, + "verify/design-rules/data/_turrets.txt": { + "mode": 420, + "sha256": "35de6ad40895f76298eef7dc354c739a5a59747b689c2324cfa5040442eddc18" + }, + "verify/design-rules/design_rules.py": { + "mode": 420, + "sha256": "772f70c7d6be2d20d10cf4f5d412233b267440d63d431bf7b320c29f3f06e313" + }, + "verify/design-rules/stock_designs.json": { + "mode": 420, + "sha256": "b363023e02899bc03e4c8b8423b394ef8abb190b1bcf437aade19be463353f68" + }, + "verify/design-rules/stock_designs.py": { + "mode": 420, + "sha256": "fe020f6058ec25b6fc456146abb6594825ee2b98ba5c5c5eeaff969ce4596031" + }, + "verify/design-rules/test_design_rules.py": { + "mode": 420, + "sha256": "6f6764d21d7a3337ec8aba9651b19947239a7d06a6cdf7c6e9be5ddefcfdd186" + }, + "verify/fpu-cw/cw_census.py": { + "mode": 420, + "sha256": "07b7ac5ae60df487867b592e82e9f74201b695437fba248813bc07305a21c7cc" + }, + "verify/fpu-cw/trace_bitdiff.py": { + "mode": 420, + "sha256": "b25c93d70e67ed2fa81e5ea7184f8ffe0cbd2e7c043bc94f923c3db1cf101b59" + }, + "verify/harness/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/harness/cb/README.md": { + "mode": 420, + "sha256": "7a656251a600a9343ffa8afaa4f227e7cb8086be7d3c6879c0a403ab8acec71d" + }, + "verify/harness/cb/cbdo.sh": { + "mode": 493, + "sha256": "6f3d7fd35aeedb0841be9df0ba19136be2e7ccb5c44950d8aa821c61727232a6" + }, + "verify/harness/cb/cbfull.sh": { + "mode": 493, + "sha256": "609101217e9d35bf1caa5cb66f362e0796fcf6c1264bd92ff550d0ed12ca2521" + }, + "verify/harness/cb/cbload.sh": { + "mode": 493, + "sha256": "2e56bb64609434f6dfc6ebcf71a3c839ae59170db80c996ebee7c2219cb664ec" + }, + "verify/harness/cb/cbmenu.py": { + "mode": 420, + "sha256": "fb2e72a1a5390aa28dcae0fbc2d7b920b06bf3b1ea161bb757d4db3c8cd23af2" + }, + "verify/harness/cb/cbstep.sh": { + "mode": 493, + "sha256": "5896b21e8cf08b40e2a2958e44a51beb7e5b5a58cf35d405879a5df7cdd375b4" + }, + "verify/harness/compare/TRACE_FORMAT.md": { + "mode": 420, + "sha256": "cf6f61dc255e3aed0f293c141d9fd3b0d5e848e3abe4dcf50b4ca2d58e37c024" + }, + "verify/harness/compare/mkfixture.py": { + "mode": 420, + "sha256": "f081dd92b9e82e838f59ce8f9c79d5cdebb825255f13b6c49178516e7f3ef118" + }, + "verify/harness/compare/oracle_parsers.py": { + "mode": 420, + "sha256": "b1a745bfa63b447c87279afdb2885a0218f2a0dc2539f79414f8a2534e24c97b" + }, + "verify/harness/compare/test_tracecmp.py": { + "mode": 420, + "sha256": "f25eb9d5ea7215b8366c44924fb49a5f028a0188e709dadfd90cfbc30db0823e" + }, + "verify/harness/compare/tracecmp.py": { + "mode": 420, + "sha256": "d6ca461cabf15351e2040150144084b93d3caf22d879ee158ede04052ab03cbb" + }, + "verify/harness/l2-ui/README.md": { + "mode": 420, + "sha256": "48effd757522ee5ff70af6d77449dcfd805bb7744c9093d01c039b86e030d7f6" + }, + "verify/harness/l2-ui/launch-b.cmd": { + "mode": 420, + "sha256": "8f26c451a88765c49ecb3c8160ed4a3d06f1100a6d9323b305efc01f039dfada" + }, + "verify/harness/l2-ui/socks.ps1": { + "mode": 420, + "sha256": "401cce47d495507f60eeae45942c146586464959046ef9715cd69605753af027" + }, + "verify/harness/l2-ui/ui.ps1": { + "mode": 420, + "sha256": "355c8f222bf99f547d9d16a1665a072e6914917d48e4db22b8438d2d83708e97" + }, + "verify/harness/profiling/battle-run.sh": { + "mode": 493, + "sha256": "79f14ded5c3731efd655a6f9a4ac6795f3ace0a9b064c43ba4bf9a2cb988a7cf" + }, + "verify/harness/profiling/funcs.py": { + "mode": 420, + "sha256": "841a6f5e5dc1d845b7439c9ce9dc08e045864929b0f367908abea7ab54259207" + }, + "verify/harness/profiling/funcs.txt": { + "mode": 420, + "sha256": "d35b17dbb3970f5c24ae862748c5b91aee87491968719c34e48a8b88c0615835" + }, + "verify/harness/profiling/iat.py": { + "mode": 420, + "sha256": "82465ef8284739ab3d3c99acd0fa6cc5a4bb80c8680eb7a949218305fd10d3d3" + }, + "verify/harness/profiling/inspect.ps1": { + "mode": 420, + "sha256": "35bc7dd85108e3f4686975ef7f510b1cc9306b5839329f7fdd2a5ac27a140611" + }, + "verify/harness/profiling/names.txt": { + "mode": 420, + "sha256": "89d90f934e445447c68569448471a8917ee0bbfcb5fb96bba3e6566be9b0779c" + }, + "verify/harness/profiling/parse.py": { + "mode": 420, + "sha256": "680df36804e923d74da8e9fd8877b5ea66975c9ce8d239ad4507c829f881722a" + }, + "verify/harness/profiling/sampler.ps1": { + "mode": 420, + "sha256": "ef0edde8535ef07e508a732f8e11dc3d50fef966e5a9e4d8161085a83372993e" + }, + "verify/harness/profiling/shots.sh": { + "mode": 420, + "sha256": "87e554abf08068d6438417e266f1e7820e34a900a7d559fa0a7c4a2fa18002b3" + }, + "verify/harness/profiling/timerres.ps1": { + "mode": 420, + "sha256": "80362eb9ec8bd882abddf2507236e70db2dd21f64c9db07d217bdd49361ed89c" + }, + "verify/harness/profiling/turnloop.sh": { + "mode": 493, + "sha256": "8e28f076599a9eb53eace77ad77a10b0770f1ce617c7a76e6a2b9044ee0c8774" + }, + "verify/harness/profiling/turnwin.py": { + "mode": 420, + "sha256": "e2033a8e519a7c9f65f67b5592494a9843eb8bef41af6ab5652343aa86bd4c60" + }, + "verify/harness/profiling/ui.sh": { + "mode": 493, + "sha256": "e66774a4d070285e6c6a62472000222a691c7192096039e75fa726bab9f6afb7" + }, + "verify/harness/run-recipe/click_helper.ps1": { + "mode": 420, + "sha256": "150a1c17e12e8479244107cd01d95233c84d550e95a6f5e352fd529818a21d7d" + }, + "verify/harness/run-recipe/display.cfg": { + "mode": 420, + "sha256": "76b4876abd1cd163a5cc6b65a6106670476cde40c9b868a53a0dc45f517e132f" + }, + "verify/harness/run-recipe/dxvk_d3d9.log": { + "mode": 420, + "sha256": "f48ff2684a78cea563ab7f10e2f005638044352fe9cfc30dedf0f26ec7fecf23" + }, + "verify/harness/run-recipe/launch.cmd": { + "mode": 420, + "sha256": "90a6effe8ae835bf641cc775a17ad709198fdfeded4379f658255a82f594e5c2" + }, + "verify/harness/run-recipe/lvp_icd.x86.json": { + "mode": 420, + "sha256": "b89a08526e043a84c3a2550b5ea2fd7692f547ea295e8dd70e79c64fe81f6fbf" + }, + "verify/harness/run-recipe/run.txt": { + "mode": 420, + "sha256": "12c83295dae9db4a98142ef8fe7e45321c90960428df504ed3496e27838a0413" + }, + "verify/harness/run-recipe/session.log": { + "mode": 420, + "sha256": "e9ce9b496e9ee55bd64cc27afe594cee6136dfbc6cf9d9d44e9914b27e568a93" + }, + "verify/parsers/PARITY_NOTES.md": { + "mode": 420, + "sha256": "beecfe60358f5977529bd0784ffe18ca03c38d2dd36766f351c6a9addac83bda" + }, + "verify/parsers/effect_txt.py": { + "mode": 420, + "sha256": "7219045dfaf305dd64218ff8096e8cac69a53df1aabdf85f15e6c5e01c963e74" + }, + "verify/parsers/flat_kv.py": { + "mode": 420, + "sha256": "a26149cb21d152be5cbada3b764e042187daf2ec306b2dba1081737af6a7ae4f" + }, + "verify/parsers/manifest.py": { + "mode": 420, + "sha256": "62a08cfd82d5f701ae3b3f567bc8382cfd1b33b49bf6049ade47a932ef7109da" + }, + "verify/parsers/mars_data.py": { + "mode": 420, + "sha256": "90c7b8421044b1d7e262e6f20e5af391d97a712b12c2d3f0c3033567881d536f" + }, + "verify/parsers/verify.py": { + "mode": 420, + "sha256": "cc5d619bd6b3ca161b4bc8050c30e7d77f6bd3e964c971cc29e051efc1e25a33" + }, + "verify/publishing/test_dashboard.py": { + "mode": 420, + "sha256": "cc44e516da663f5d27bf817cbcbf24c052f2db52ee887d08d7c271caf8f6a000" + }, + "verify/results/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/results/compare/.keep.md": { + "mode": 420, + "sha256": "4581f3fde61549f4c621b2f114228a62d066a528a270a9b41703238ff841ac1d" + }, + "verify/results/compare/b2-techfx-compare.json": { + "mode": 420, + "sha256": "b0533322d44b1694f36baf86d6660481ac5b22ce9c1d6b6b9668ea064cc08f4b" + }, + "verify/results/compare/b2-techfx-golden.json": { + "mode": 420, + "sha256": "4298a8229b85a3329c78d3618d3eb19aff096cb2da66e9238fd843d639b17f11" + }, + "verify/results/compare/cr-compare.json": { + "mode": 420, + "sha256": "f20e9a7c71412688c02b607f08a5224367598eba552e35a50e9922ca8f12edab" + }, + "verify/results/compare/cr-compare.md": { + "mode": 420, + "sha256": "0eb905744120b1cf264ba6e57497db64fdc8e225a87ef7bb86cf3f026ffe4d0d" + }, + "verify/results/compare/cr-replace0.json": { + "mode": 420, + "sha256": "f1556c5d74c236c82617061b5ec60b1a7ce4652bce87b6595eb89406ad832240" + }, + "verify/results/compare/cr-replace0.md": { + "mode": 420, + "sha256": "6f571e46350a29b811bc12b48e12ed2d443acba5f5be6310e0531c3790425d48" + }, + "verify/results/compare/cr-replace1.json": { + "mode": 420, + "sha256": "d0c1d6bd4a1f8f5343b584662d8202184479b01a51480443a97242daf27fccc2" + }, + "verify/results/compare/cr-replace1.md": { + "mode": 420, + "sha256": "111b51290468d5482a1910194487d26dc1b3ec534d699aa07a564de66bbf9d98" + }, + "verify/results/compare/eventlive-b3-t1-5.json": { + "mode": 420, + "sha256": "4f305180bcbe93523f407d1f8406ac52b84d4a20e2d611940716618fd37edfde" + }, + "verify/results/compare/eventlive-b3-t1-5.md": { + "mode": 420, + "sha256": "ec71d98210218fd5b5da69f6b17cf6991128a58a0358a6504e6497dd39159764" + }, + "verify/results/compare/eventlive-b3-t1.json": { + "mode": 420, + "sha256": "84f66c1e6a23f737d1615e75fd22fba958bfd851067acb42503e32a2812dd1de" + }, + "verify/results/compare/eventlive-b3-t1.md": { + "mode": 420, + "sha256": "299b8dd3f2cf42cbc9e6254fac01ee3dcb6abb0758c8f298beb6cc6464db4cfb" + }, + "verify/results/compare/eventlive-b3-zuul.json": { + "mode": 420, + "sha256": "a1a92c06202c8168362c33442edeb7ea7f76f6e586e5deea1b86dff9dc8f3494" + }, + "verify/results/compare/eventlive-b3-zuul.md": { + "mode": 420, + "sha256": "544791f9cd8b77a2d865f2a918d97e74559529f29943171bd1e8e2d8a120dec5" + }, + "verify/results/compare/l5-budget-boundary.md": { + "mode": 420, + "sha256": "6877f9cfc602876b4c213106493853822471a5aaa3e4e8ebf8dffd31373d89d9" + }, + "verify/results/compare/mf-after.json": { + "mode": 420, + "sha256": "586a824a0d0af1de0808c33c1c392c4022128f9c1305dc32b6749e8fa493e8f4" + }, + "verify/results/compare/mf-after.md": { + "mode": 420, + "sha256": "659be3da71cabfd3c34eb818f1bac07f848c58a878fd62d81ac7b1daa5f3ce03" + }, + "verify/results/compare/mf-before.json": { + "mode": 420, + "sha256": "259272b45ca9c63894d8c91e399ff91d7258b7836f1a0d5c91dd3972586b2498" + }, + "verify/results/compare/mf-before.md": { + "mode": 420, + "sha256": "4572530a1c93865d27aba47c23c418773ad39a834c8be1c004f5cc2f16f927a0" + }, + "verify/results/compare/output-ref-turn2.md": { + "mode": 420, + "sha256": "43a569165f9239f13edc31c7a848a6b839829ae06dd6e3b85d289a1552eb8d34" + }, + "verify/results/compare/output-zuul-and-ref.md": { + "mode": 420, + "sha256": "9bc0937c0b3e1e3e5a6cd3768dbfeae56a897615396b00834bd083611f3ef431" + }, + "verify/results/compare/recap-b1-compare.json": { + "mode": 420, + "sha256": "8e86cdd32373e41ac1cdc130b18acc188b35d5ab7112e1fc655d134c44ad9712" + }, + "verify/results/compare/recap-b1-compare.md": { + "mode": 420, + "sha256": "496a3246eda3be76d9d0f08726369d40aa879cf60a510f16209ae77585582841" + }, + "verify/results/compare/recap-b3-compare-t1-5.json": { + "mode": 420, + "sha256": "80eeeeccf15f427b75b053d06f6b32b1692a2ed9ca6b9a51c244e4166a1b0e78" + }, + "verify/results/compare/recap-b3-compare-t1-5.md": { + "mode": 420, + "sha256": "5b6295bff72d599f142e75fa913ca2da590322a6fd1d104328847159fc5e7802" + }, + "verify/results/compare/recap-b3-compare-t1.json": { + "mode": 420, + "sha256": "10d0d5f8aff90f6cce3cd87e30c7f8ff896c5b369f4dc8288141451e25727cb9" + }, + "verify/results/compare/recap-b3-compare-t1.md": { + "mode": 420, + "sha256": "2b0eb8865bb07a2dd8fd038bc19e38a34fbf19b9d3f6fabae085c16a74fbcc6f" + }, + "verify/results/compare/recap-golden-trace.json": { + "mode": 420, + "sha256": "50bb7e34ab2359adc83cc0647fc995d207173fcf6134e413565af450958f652f" + }, + "verify/results/compare/recap-golden-trace.md": { + "mode": 420, + "sha256": "586fc86fe78659902a5d0859c0bce44623bfcda0f375bb57b293796862c48e17" + }, + "verify/results/compare/recap-misc-compare.json": { + "mode": 420, + "sha256": "c73f3f3593a0d715a675b29c7b4f49c02a97578ee9d867ce15d217c43da2e466" + }, + "verify/results/compare/recap-misc-compare.md": { + "mode": 420, + "sha256": "b435c92441742b2b1b0236bfacff10c17757696baf446c544c4759b7e31237ed" + }, + "verify/results/compare/unlock-b3-t1-5.json": { + "mode": 420, + "sha256": "a4dbfc89f6f3d154edbbc62842a4e8d8a3c69b9589eafc1bb496b26a3ecf6e3d" + }, + "verify/results/compare/unlock-b3-t1-5.md": { + "mode": 420, + "sha256": "832626087ddc2da9064a192a1acfb3869d4a52c6398a070cbd66eaa1bdbe2e2e" + }, + "verify/results/compare/unlock-b3-t1.json": { + "mode": 420, + "sha256": "6d8938b8eaeb2da1c7fdccb1fb68f8e3a2b5b7f492cc096326cf3aadb2ab8d55" + }, + "verify/results/compare/unlock-b3-t1.md": { + "mode": 420, + "sha256": "8911e671a143c25765cd7c0b67f1b9cb23f4040fe26aad40ce59b1db858afdcd" + }, + "verify/results/compare/unlock-b3-zuul.json": { + "mode": 420, + "sha256": "3099d248d58c4395e92d65ad18c28227695a7c7935193be6c2bcf752fa0e0f04" + }, + "verify/results/compare/unlock-b3-zuul.md": { + "mode": 420, + "sha256": "f53b165c8502ba9b2416935179fdea68153fb6ebd2458b4ec9b4ecf6c741c91f" + }, + "verify/results/data-catalogs/crosslink.json": { + "mode": 420, + "sha256": "2966ba9780910b596e350c4f81eef5d74c4d235dc3a8d5cf6ad5fd53a407254a" + }, + "verify/results/data-catalogs/schema_stats.json": { + "mode": 420, + "sha256": "6e3f669ae77cdfa2c5cd6bbd29f5cecccd452d9a7b2397c2c23db6c33fda0a2a" + }, + "verify/results/data-catalogs/shipsections.json": { + "mode": 420, + "sha256": "2e7057c608d0cea755bf9dbfa291864d33e3f09ad5deff7bb3a8045bde7a4ab5" + }, + "verify/results/data-catalogs/strings.json": { + "mode": 420, + "sha256": "c36c1b2b9a2eace438f93698df6388fa94aec30d372bcd0bee7e09bb33c54d7c" + }, + "verify/results/data-catalogs/tech_tree.dot": { + "mode": 420, + "sha256": "96ce0492a1284167d82af2c07a8f8a0b3bb9864bc137195560d909df6a913055" + }, + "verify/results/data-catalogs/tech_tree.json": { + "mode": 420, + "sha256": "18df799410c5f650e15808c1ef247b4768a3dfff93795a5ec7f56cd6c4afc597" + }, + "verify/results/data-catalogs/weapons.json": { + "mode": 420, + "sha256": "a446b445c21519fc7992c84155c9652239567030843c405b4219d1f65022db01" + }, + "verify/results/fpu-cw/README.md": { + "mode": 420, + "sha256": "3928fd0f6a03a8ff0b170a7ed23a059120b5014b13bf6870d4f187ff299d5975" + }, + "verify/results/fpu-cw/cw-census.txt": { + "mode": 420, + "sha256": "b7854dc5cd249a2490d04264d758f1894a9ddf4b95573650365d47587c7589d3" + }, + "verify/results/fpu-cw/run-007f-rep/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-007f-rep/(Autosave).sav": { + "mode": 420, + "sha256": "ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918" + }, + "verify/results/fpu-cw/run-007f-rep/shim.log": { + "mode": 420, + "sha256": "73b5b86da743a1cb37d4c0d97b29978923b55a7a47f80c7fa20ca47d424f6c02" + }, + "verify/results/fpu-cw/run-007f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-007f/(Autosave).sav": { + "mode": 420, + "sha256": "ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918" + }, + "verify/results/fpu-cw/run-007f/shim.cfg": { + "mode": 420, + "sha256": "998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363" + }, + "verify/results/fpu-cw/run-007f/shim.log": { + "mode": 420, + "sha256": "5721f47d7fd862156ce2cd1832cd1739636b5aee53c82323ef233ff6401775bb" + }, + "verify/results/fpu-cw/run-007f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "149c4fcf750fcf9e81dc86d8696271d9a14ca788891ac95cf96995e3737c68e4" + }, + "verify/results/fpu-cw/run-027f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-027f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-027f/shim.cfg": { + "mode": 420, + "sha256": "f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd" + }, + "verify/results/fpu-cw/run-027f/shim.log": { + "mode": 420, + "sha256": "4bd3f88bd27eb2e3ae1f42f4dc2ccf1cc5df1a2c1171d2eff8be86e7be684187" + }, + "verify/results/fpu-cw/run-027f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "b5d2611d0c08946c1e1eaa244a7e44782eac2592c392efb3d7147fbbd86816e7" + }, + "verify/results/fpu-cw/run-127f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-127f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-127f/shim.cfg": { + "mode": 420, + "sha256": "1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271" + }, + "verify/results/fpu-cw/run-127f/shim.log": { + "mode": 420, + "sha256": "03f1999dc8964912697782e856f89f190b6680d5732f2cd00b1569bff727a545" + }, + "verify/results/fpu-cw/run-127f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "fb1b9063cc53a6b39ea0a58e0545b9334fbd15d65dd839e72f2c4febbb1dd3f0" + }, + "verify/results/fpu-cw/run-137f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-137f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-137f/shim.cfg": { + "mode": 420, + "sha256": "8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9" + }, + "verify/results/fpu-cw/run-137f/shim.log": { + "mode": 420, + "sha256": "83aa72572412d5248179397895029367685fd590d795991ab91c98cf9828ae29" + }, + "verify/results/fpu-cw/run-137f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "aad1fb6abd86beafb9f44e2c6060157e22618811d105f2379252e19008839b66" + }, + "verify/results/fpu-cw/run-1a7f-rep/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-1a7f-rep/(Autosave).sav": { + "mode": 420, + "sha256": "e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7" + }, + "verify/results/fpu-cw/run-1a7f-rep/shim.log": { + "mode": 420, + "sha256": "38f2824fbe91bf2fa1ef55473a7468707248420805b6f6dc85245fd34fa94200" + }, + "verify/results/fpu-cw/run-1a7f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-1a7f/(Autosave).sav": { + "mode": 420, + "sha256": "e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7" + }, + "verify/results/fpu-cw/run-1a7f/shim.cfg": { + "mode": 420, + "sha256": "59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588" + }, + "verify/results/fpu-cw/run-1a7f/shim.log": { + "mode": 420, + "sha256": "a1bb0bd06dae6955ec09e7d0c6cd1e68e19aa2a114256cdeae1275def0a63091" + }, + "verify/results/fpu-cw/run-1a7f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "b9a7affb8235626fcfdd5afe143e4ec03be869b6b386bd9ac78389097df88cef" + }, + "verify/results/fpu-cw/run-off/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-off/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-off/shim.cfg": { + "mode": 420, + "sha256": "6a19c362121a3dba0aac857d6e998131e8b2478f19edcdcbd58006645d096c70" + }, + "verify/results/fpu-cw/run-off/shim.log": { + "mode": 420, + "sha256": "9e3cbd005f0b68037681939b289834c55629bac0e9cd35ac55e6d8ef5333a116" + }, + "verify/results/fpu-cw/run-off/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "ec2271c0d7e09fe51ead7f8d58859c692e8b302233191841d506ea14248caa8c" + }, + "verify/results/fpu-cw/state-checksum-diffs.txt": { + "mode": 420, + "sha256": "3417dfc1b75ad896ac6a5e974d51248eecca319565e2422e146897d19e121b68" + }, + "verify/results/fpu-cw/trace-bitdiff.txt": { + "mode": 420, + "sha256": "8f86707f26f30638097c85f0db6df219adbfebac4e9ec24f1feb8bfce112d4f2" + }, + "verify/results/housekeeping/vm140-result.json": { + "mode": 420, + "sha256": "2250b02342f5c02ba5464cb4656543c6366dec098fbc948006600896ac9254c0" + }, + "verify/results/housekeeping/vm141-result.json": { + "mode": 420, + "sha256": "03d92ffd2947b2f0c058e5c613e04567cffee45be456aece6d771b789f32fb93" + }, + "verify/results/housekeeping/vm144-result.json": { + "mode": 420, + "sha256": "ace15320f7e60995a68f2c9c03a5a44159ae2d64fa273d34d38e285d313a0393" + }, + "verify/results/housekeeping/vm145-result.json": { + "mode": 420, + "sha256": "768666178bf2910a2ff026351727b5cc96e48df70e1ba012031d34eafc95ad7a" + }, + "verify/results/housekeeping/vm146-result.json": { + "mode": 420, + "sha256": "eebb306a3ec8533abae6dfd59f127c48effe9f21107e0c5c09c751108e77bb97" + }, + "verify/results/multiplayer/l2-combat-hud-client.png": { + "mode": 420, + "sha256": "02c86592531ab2889a0eae04e44a644d33c754096fe60aca6640068a7a3f421f" + }, + "verify/results/multiplayer/l2-combat-hud-host.png": { + "mode": 420, + "sha256": "a56daf36fcc88627b29116ad9874c95a3c46960074ff9b823aa15c4ea2660dd7" + }, + "verify/results/multiplayer/l2-combat-loading.png": { + "mode": 420, + "sha256": "f94a718cee08e1b7d346490058f13a107d23aaa7c269fdd53b159a75d62fa558" + }, + "verify/results/multiplayer/l2-combat-round-draw.png": { + "mode": 420, + "sha256": "c1b8424540b702915302f9ff38eaf765e8e95fddc3c5c4d894438dcfcf8b6256" + }, + "verify/results/multiplayer/l2-combat.pcap": { + "mode": 420, + "sha256": "0f112ef96da6c465dbda51baf99eedd66967eed61c097f643bf6c66fc26af31b" + }, + "verify/results/multiplayer/l2-encounter-query-client.png": { + "mode": 420, + "sha256": "4c41b268ad256b0109483a2d9b5ba35de7b9cadb4eb32ef4a68f7867e6e747fd" + }, + "verify/results/multiplayer/l2-encounter-query-host.png": { + "mode": 420, + "sha256": "8c7b0c6d65ddde45eb3447f044589ffc36500b40c4d676af8321f800162f38a0" + }, + "verify/results/multiplayer/l2-fleet-built.png": { + "mode": 420, + "sha256": "6ac91fcf9b42caef50134de01804046d8e60d0fd3966592e9738ceff511949c2" + }, + "verify/results/multiplayer/l2-lobby-client-joined.png": { + "mode": 420, + "sha256": "4a8e698c9ea935449ff0421cd59acd517ebffa388a7572279b28be0369141ff6" + }, + "verify/results/multiplayer/l2-lobby-host-created.png": { + "mode": 420, + "sha256": "e6a7377cabafa973396cedafa5ad5b4863a42f9866709db88faf9572e0ed3c98" + }, + "verify/results/multiplayer/l2-move-warning-dialog.png": { + "mode": 420, + "sha256": "43c6219d74bc0cb28495f13784cdbd3a90c89746b108824c3a2138dbdadcb53e" + }, + "verify/results/multiplayer/l2-socks.log": { + "mode": 420, + "sha256": "109b630d6548d07404f9f905e6c527f10e25221698f1b66226f67f94c5f294b5" + }, + "verify/results/multiplayer/l2-turn13-client.png": { + "mode": 420, + "sha256": "d19f17c4219f21f6c9950440d528a1a91fe3907761df21fd0ba99321b8820baa" + }, + "verify/results/multiplayer/l2-turn13-host.png": { + "mode": 420, + "sha256": "811efcfb571d60435f772a3b619bb329717d1e162b88e440ec0d636b1c6042fc" + }, + "verify/results/multiplayer/w2-internet-browser-no-error.png": { + "mode": 420, + "sha256": "6409b977056c95b29928a0098f75fffd71c501128f9d9325c3000837131c8791" + }, + "verify/results/multiplayer/w2-join-manually-dialog.png": { + "mode": 420, + "sha256": "86904e94a5aec41c1e89271d2712558c3b5055bd2ae4fededfda103d1e22fb71" + }, + "verify/results/multiplayer/w2-lan-browse-listing.png": { + "mode": 420, + "sha256": "6f5d16fa719fb63dd627fba551221c7665b69002e83fe35b8d84912cd7d8ce83" + }, + "verify/results/multiplayer/w2-lobby-client.png": { + "mode": 420, + "sha256": "ede652b21e2a4ea07c8132e4080ba903d1052ebca336bb007e1e8efa62787f10" + }, + "verify/results/multiplayer/w2-mp-turn1.png": { + "mode": 420, + "sha256": "59f9a1f5d8c0fff45d3ae3406dfd9878a5915f18e999d909a5238a90a3b86ed6" + }, + "verify/results/multiplayer/w2-mp-turn2-client.png": { + "mode": 420, + "sha256": "d9da4c151cd8290f80b31eb5ed8a74a0a30a87d1f7a80a179fa082a9439e08e5" + }, + "verify/results/multiplayer/w2-mp-turn2-host.png": { + "mode": 420, + "sha256": "910efd36b4a7c1a85d8ad487660f856339af037b9b00fef0cafd5e77ebdc36e5" + }, + "verify/results/multiplayer/w2-tier0-filtered.pcap": { + "mode": 420, + "sha256": "e108778fd1afb7718c53a4164310b8523415ef073706d310583dab424e5921cc" + }, + "verify/results/saves/ac-turn20-raider.sav": { + "mode": 420, + "sha256": "ee787db8f63d8f564c597bd5a82709790a0fdf47827912037f96b736f2cbed34" + }, + "verify/results/saves/ac-turn22-raider.sav": { + "mode": 420, + "sha256": "0faeaa601e6a867876819e5646b85f8787851093b8e6bd6e3946eb867f2dcc74" + }, + "verify/results/saves/ad-oracle-A-post.sav": { + "mode": 420, + "sha256": "a634510e7208cceb10d8ce016ceb0153601f11d7291f08122bcdb6418e313331" + }, + "verify/results/saves/ad-oracle-B-post.sav": { + "mode": 420, + "sha256": "676b1778880b5d4784ba7f6ef48b1a8e56745adab70a815943b7744876686260" + }, + "verify/results/saves/ad-turn27-two-raiders.sav": { + "mode": 420, + "sha256": "1c8baa27680809d585ab1728391e82729642d32aaedffd5bf95b616f0a11a436" + }, + "verify/results/saves/ap-deploy-turn15.sav": { + "mode": 420, + "sha256": "844f2b746060dc2c4e2099cdc6ceffd5f55ef858c9e347df28c8aca3041f7165" + }, + "verify/results/saves/ap-oa-turn16.sav": { + "mode": 420, + "sha256": "e296394f578b3a5668e5934b9eec8d6c4638ca7411200078f97de1abd346f4c5" + }, + "verify/results/saves/ap-ob-turn16.sav": { + "mode": 420, + "sha256": "262f8bda97c9511d8d2b41e6a8a0582d6f5364c2b01b1caf99e639d0e4f53ebe" + }, + "verify/results/saves/ap-turn22-spydetected.sav": { + "mode": 420, + "sha256": "91381bd7e722ac3847795a402d78ebb31d74dbb5d2909f33d243aec3ef8abaf8" + }, + "verify/results/saves/ap-turn25-spydestroyed.sav": { + "mode": 420, + "sha256": "46380fcf4498d67507e4471eb9ee3762647c53ee5473be142fe5c34e37344bc3" + }, + "verify/results/saves/ar-oracle-A-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-oracle-A-pre.sav": { + "mode": 420, + "sha256": "15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca" + }, + "verify/results/saves/ar-oracle-B-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-r1-turn43-post.sav": { + "mode": 420, + "sha256": "37f4a54fd32303fdcc86522b07104fbf2fcb124eec9b1f7005b3446fefcc429f" + }, + "verify/results/saves/ar-r2-probes8-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-turn37-816raiders.sav": { + "mode": 420, + "sha256": "b6f4e05ff226eabd1695003b36293553642553cea96ef417364393e2332a7094" + }, + "verify/results/saves/as-turn14-predeploy.sav": { + "mode": 420, + "sha256": "53986f8511cbf9920f32e2ea406ccf531dd08903fa5d06024fcf03ea7627221d" + }, + "verify/results/saves/as-turn15-spydeployed.sav": { + "mode": 420, + "sha256": "854a10fa1ea602f0f7909f9bf9154942e56ea5fa1db4cce47d6d32bf53952e08" + }, + "verify/results/saves/az-turn11-16destroyers.sav": { + "mode": 420, + "sha256": "501583c7cf2ac81c9db3191203cd3dc5ba5b9e228b9b9ce3dbdcc3650d0070a9" + }, + "verify/results/saves/az-turn23-tarka-comraid.sav": { + "mode": 420, + "sha256": "3d5eb826c149d1fd0278c746f32e6148ca9883a1bc5b522c0d5e6e13fac9788a" + }, + "verify/results/saves/bp-pinA-turn28.sav": { + "mode": 420, + "sha256": "e913ff41188211c02d536da616337544e64133996cd7cc7a6521a8df1960226f" + }, + "verify/results/saves/bp-pinB-turn28.sav": { + "mode": 420, + "sha256": "724528ffde9a7514b69ab9e82ed3b8c8ade63d622c0720de30503a73a92df11e" + }, + "verify/results/saves/bp-turn28-pre.sav": { + "mode": 420, + "sha256": "16f63adbf383946db17c381998957172bca803406b7df78f3b03805fef0bbcb8" + }, + "verify/results/saves/bq/bq-1A-endturn.sav": { + "mode": 420, + "sha256": "1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39" + }, + "verify/results/saves/bq/bq-1A-post.sav": { + "mode": 420, + "sha256": "56980aa086e1a145b00f781b9d9cf618b152986f1c2267b9fd96cca0f1f604b9" + }, + "verify/results/saves/bq/bq-1B-endturn.sav": { + "mode": 420, + "sha256": "1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39" + }, + "verify/results/saves/bq/bq-1B-post.sav": { + "mode": 420, + "sha256": "b36ac0ec2986f3a814dd22ca312c895ba6ec8a0e55fca54d8a7fd08a2f96a2c4" + }, + "verify/results/saves/bq/bq-1bA-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bq/bq-1bA-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/bq/bq-1bB-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bq/bq-1bB-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/bq/bq-res-post.sav": { + "mode": 420, + "sha256": "28bbd9b5c377afcd8f075b535eb1036ee46acf71ab614e7091ccdbdfb3703db2" + }, + "verify/results/saves/bs/bs-C-endturn.sav": { + "mode": 420, + "sha256": "15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca" + }, + "verify/results/saves/bs/bs-C-f38-autosave.sav": { + "mode": 420, + "sha256": "0fe8f37479a702d2e4e7752e6cb160dc242f00a082dc4115b7d10c77b24989f0" + }, + "verify/results/saves/bs/bs-C-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/bs/bs-L-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bs/bs-L-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/cb-c3-turn1to2-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-c5a-turn1to2-pinned-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-c5b-turn1to2-pinned-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-turn2to3-autosave.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/saves/cb-turn2to3-endturn.sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/saves/certified-pairs.md": { + "mode": 420, + "sha256": "4e1cfb79cf5a51446b2eae21f91b565348ffa95a9ebac8f95e23019012aefb57" + }, + "verify/results/saves/cr/cr-oracle-autosave.sav": { + "mode": 420, + "sha256": "79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420" + }, + "verify/results/saves/cr/cr-oracle-endturn.sav": { + "mode": 420, + "sha256": "e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f" + }, + "verify/results/saves/cr/cr-replace0-autosave.sav": { + "mode": 420, + "sha256": "6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5" + }, + "verify/results/saves/cr/cr-replace1-autosave.sav": { + "mode": 420, + "sha256": "8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235" + }, + "verify/results/saves/determinism-hashes.txt": { + "mode": 420, + "sha256": "bfa0615c4b310ae21c09a7d373d5a9d8799f36a0460089e5950fa0edf9d614d2" + }, + "verify/results/saves/human-turn11-spytechs.sav": { + "mode": 420, + "sha256": "aa63dd3d5489884f70d9c35acfb06c23c84531f403798842e7b0cf8cde94d1d4" + }, + "verify/results/saves/human-turn15-spyprogram.sav": { + "mode": 420, + "sha256": "22306d26f8831b90a62c00a2ebad5a97e77017b62ee96a7439d4c2c76c455cca" + }, + "verify/results/saves/human-turn2-orders.sav": { + "mode": 420, + "sha256": "9a94dec562622310893d6f522a0fae06f1033470f4182098e808b175e7df7c8d" + }, + "verify/results/saves/human-turn3-noderoute.sav": { + "mode": 420, + "sha256": "6db0912a050a846c8f3a184811644c76df3fdb65e83dffbf70289e21cc098a90" + }, + "verify/results/saves/human-turn5-traderoutes.sav": { + "mode": 420, + "sha256": "3829e6c6d8f26cd1183a972bd66edadbd71364c11a224b0a6e40461011bcab29" + }, + "verify/results/saves/human-turn8-traderoutes.sav": { + "mode": 420, + "sha256": "afeb3b2d724e07cf59f15eb1bdb9fcf853391fc06fe21beb20c069ff75b2f836" + }, + "verify/results/saves/turn1-state.sav": { + "mode": 420, + "sha256": "a3f9dc4b49fc669c814b09b87a9c6795de21bac80a1c7bfe3901b8e239fa36cc" + }, + "verify/results/saves/turn2-state.sav": { + "mode": 420, + "sha256": "ab4ac2d7e2977260a4de916f65c7ecc6dd5b0094dac4bb51241317232ea17ab4" + }, + "verify/results/saves/turn2-strict-issues.txt": { + "mode": 420, + "sha256": "33a169a2de29ad502e9b7c0159cd543e0b4d71f2d9b3903f5be58c7846db2429" + }, + "verify/results/saves/turn3-state.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/saves/zuul-turn15-orders.sav": { + "mode": 420, + "sha256": "ef86a0d61de3533f023af5dc2b9a5720e4e0c5c97d900d88181603a13db7d045" + }, + "verify/results/saves/zuul-turn16-noderoute.sav": { + "mode": 420, + "sha256": "b6b5d283b62cc46bca914e86c34cf45e8960a653e818e59664087429bbb30103" + }, + "verify/results/saves/zuul-turn17-orders2.sav": { + "mode": 420, + "sha256": "1b863e684edecb4afe738ba30c8132065ebcf2d9977409325e714fe0173056e8" + }, + "verify/results/saves/zuul-turn17-rollpending.sav": { + "mode": 420, + "sha256": "aac5ba5b10ff1af6b0e38c565b2f0a60c16858ee4e89dd2a2f5b037eae95ee7d" + }, + "verify/results/saves/zuul-turn23-fleet23.sav": { + "mode": 420, + "sha256": "fd3748327d87b8c478f50fcd09d097eacff21e57d946ecb43b8119b4d0d78b1b" + }, + "verify/results/saves/zuul-turn5-species5.sav": { + "mode": 420, + "sha256": "48559ab5b719b332e47b4bf43af85a616bff1508125d62edb211b80637234af6" + }, + "verify/results/shim/ac/ac-probe-run-shim.log": { + "mode": 420, + "sha256": "b9b4a5f0e399e16b477cde0bd7e2c4ce378549eb5a467f7b8ae5eb64d75cb106" + }, + "verify/results/shim/ac/ac-probe-run-watch.txt": { + "mode": 420, + "sha256": "543d76d150aeb9318b9ae27acf638b8935eea30b1a2d47fb15354b584a458163" + }, + "verify/results/shim/ad/ad-r1-shim.log": { + "mode": 420, + "sha256": "fec98888b030ed42b84551aac1286c0baeaf15b8a545af068dc6605615e96df0" + }, + "verify/results/shim/aidesign/parse_aidesign.py": { + "mode": 420, + "sha256": "fbd4aeb71db548759bdb1ff65a5fdd0af6c192927e6ebe4b510f1083c3bdba13" + }, + "verify/results/shim/aidesign/sd-br-p1-hashes.txt": { + "mode": 420, + "sha256": "cd276116a51df01129f0e840d4c04f7964be34f75e51c384cd8df65969f458e6" + }, + "verify/results/shim/aidesign/sd-br-p1.txt": { + "mode": 420, + "sha256": "325cb9fcfa505ab2a93bbd00d60a7a4644b6b5970cb16a288cc7a43f2e825dd3" + }, + "verify/results/shim/aidesign/sd-pin-p1-hashes.txt": { + "mode": 420, + "sha256": "f0371c0a439d736ae7e67e71bd87d693481100d08243d16a1ac1f2ad0ab8bdce" + }, + "verify/results/shim/aidesign/sd-pin-p1.txt": { + "mode": 420, + "sha256": "45e693d279899e7a04cf59bda67190058896b56f3b0607d5aee21abb12f03071" + }, + "verify/results/shim/aidesign/sd-pin-p2-hashes.txt": { + "mode": 420, + "sha256": "e7d6dc12a940305087ee03dc7f8826f3c6343d24d8fea0f2aa78665d887138c9" + }, + "verify/results/shim/aidesign/sd-pin-p2.txt": { + "mode": 420, + "sha256": "b0206869206bc3a41bebb5175e31179f1a5d125a44b5ddfc10c67c4a0d13c22c" + }, + "verify/results/shim/aidesign/sd-t15-p1-hashes.txt": { + "mode": 420, + "sha256": "1ee71a623eb17e08c623ec8de3775218dc3a7c2de50d36a25dd2395382195962" + }, + "verify/results/shim/aidesign/sd-t15-p1.txt": { + "mode": 420, + "sha256": "df9f4906ee8bbb2efc9ba9a38c41607b89711d0bc9f705473d8448e9715d9280" + }, + "verify/results/shim/aiorders/cb-c1-turn2to3.txt": { + "mode": 420, + "sha256": "9d5014b346cb0fa9e2172f45db77c4437a03b069930eaaa80ea94e742891eb8f" + }, + "verify/results/shim/aiorders/cb-c3-turn1to2-run1.txt": { + "mode": 420, + "sha256": "fdaf27a32b93fdb3024f7a45f0d90b2cf833d3f592960027c3a6cf4ecbb8c616" + }, + "verify/results/shim/aiorders/cb-c5a-turn1to2-pinned.txt": { + "mode": 420, + "sha256": "d4daa0c2599c1b573ed59617243a392861dbc4e1fbeb707c7248708c015d998f" + }, + "verify/results/shim/aiorders/cb-c5b-turn1to2-pinned.txt": { + "mode": 420, + "sha256": "9682186176024242fddb901b10d9a5ad6beba91bd895c2001ca954fc293eab73" + }, + "verify/results/shim/aiorders/l4-research-run1.txt": { + "mode": 420, + "sha256": "5caf1fa25b7b8c2d6af213e59c6ec821be3c46cdd92a1024a6faf5d0a3b1d71c" + }, + "verify/results/shim/aiorders/l4-research-run2.txt": { + "mode": 420, + "sha256": "846ef2cfbc365e7ee2f481048978baf820d57026737261bfba3a328d59cdaad8" + }, + "verify/results/shim/aiorders/l4-turn1to2-aiorders.txt": { + "mode": 420, + "sha256": "c55d9b3c48cb552c02731003c26bb6dfcb8afb611c2a188d21fd4a39f550d269" + }, + "verify/results/shim/aiorders/l4-turn1to2-hooksoff-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/shim/aiorders/l4-turn1to2-instrumented-autosave.sav": { + "mode": 420, + "sha256": "e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d" + }, + "verify/results/shim/aiorders/l4-turn2to3-aiorders.txt": { + "mode": 420, + "sha256": "696c34996e4b5be0383794fae7ea114779f7fdd0a8cdceff5a00aeb07392933a" + }, + "verify/results/shim/airng/par-br-p1-hashes.txt": { + "mode": 420, + "sha256": "656b1d0c073d9988287e5b76543e42eb1c050d9ebc9872e2b7ec5208b7534b42" + }, + "verify/results/shim/airng/par-br-p1.txt": { + "mode": 420, + "sha256": "eadf1cfb7efd7b374472867ddf1cea5f60e30096090c950049f0c264b0299398" + }, + "verify/results/shim/airng/par-br-p2-hashes.txt": { + "mode": 420, + "sha256": "d97916075c7b4c10464962e9e38aed69288a4d68a16a369c1133df16fa134146" + }, + "verify/results/shim/airng/par-br-p2.txt": { + "mode": 420, + "sha256": "bda355cbbf07301cd6d3716eba32312261c402848c91780a97a6d5cce14c3d92" + }, + "verify/results/shim/airng/par-pin-a1-hashes.txt": { + "mode": 420, + "sha256": "5eb1b557826d45fe9d843b37a92aaef54cd1b8a60900f9c34b4fe25e4bd46a24" + }, + "verify/results/shim/airng/par-pin-a1.txt": { + "mode": 420, + "sha256": "17750bab77512434dcc9e66fc86cbfc34df497cadab5b732cf3b0ef3958e09a4" + }, + "verify/results/shim/airng/par-t1-br-p1-hashes.txt": { + "mode": 420, + "sha256": "7577c33ec33d9e94fb77225929c1f34a3dd94c18fe72a394017811b3b5d53467" + }, + "verify/results/shim/airng/par-t1-br-p1.txt": { + "mode": 420, + "sha256": "8bc9969e2da730d26cc5538b758858a00a4ba6ab2d398458ff4dece1edf8bf92" + }, + "verify/results/shim/airng/par-t1-br-p2-hashes.txt": { + "mode": 420, + "sha256": "7e60fc8615163e8ebccf22fc8910f2e7c4f72a9be7a74bc832bc2a0f64ade0da" + }, + "verify/results/shim/airng/par-t1-br-p2.txt": { + "mode": 420, + "sha256": "7e50a728eb5909bd602a9e6996b908b1b2665c8c983cc0258dad000c8bff8e35" + }, + "verify/results/shim/airng/par-t1-br-p3-hashes.txt": { + "mode": 420, + "sha256": "00ce6b3b4c9dbfd192d09b3b06d91b95576cee8a5a85fccdc36a85547fbdcbc4" + }, + "verify/results/shim/airng/par-t1-br-p3.txt": { + "mode": 420, + "sha256": "28cdf1f6b83c1764f1d1e51a67e3f873566b8503f8504ef52f5b5af24b21c0cb" + }, + "verify/results/shim/airng/parse_airng.py": { + "mode": 493, + "sha256": "3fafa7cf2363620d6a25248d085fbc4e3bd1fdbb9388a6795244834a9a2a2ed0" + }, + "verify/results/shim/ap/ap-probes8-d.shim.log": { + "mode": 420, + "sha256": "115545172568edc6a1d5bb3b559f968aa8a7aaa1f6aeba970daebce98fe56a0c" + }, + "verify/results/shim/ap/ap-probes8-w.shim.log": { + "mode": 420, + "sha256": "8af0897a884bb314958c5e6f2fccd88ff8b1890322dafd3bc904b3f983838620" + }, + "verify/results/shim/ar/ar-r1-ledger.txt": { + "mode": 420, + "sha256": "44bddfc0b9e94812a3a1cfd681a1350caedf2ed8e1174900c2f81c90dc95187e" + }, + "verify/results/shim/ar/ar-r1-probes.txt": { + "mode": 420, + "sha256": "c10251c9bcca5436dc42b2c0bd37b66c144aec4036f2069c2df9340fd764992c" + }, + "verify/results/shim/ar/ar-r1-shim.log": { + "mode": 420, + "sha256": "07003ee203d60a638cc8a1cb0a0f6b8042ba227705b4355f1254312c6dd54e28" + }, + "verify/results/shim/ar/ar-r1-sites.txt": { + "mode": 420, + "sha256": "d1923d549ef3567488d0382ae0ef75fa25c5b1b5812ee5349c5c47aea7a30514" + }, + "verify/results/shim/ar/ar-r2-shim.log": { + "mode": 420, + "sha256": "06dbf04cff5a56b0e55d8e73e5b1e3e9d9235f4afafc8139517b68d676781909" + }, + "verify/results/shim/as/as-probes8-run.shim.log": { + "mode": 420, + "sha256": "cd25c93d8b79e0f0df594fe681917fe880741a54a4188d4d72d2fbc6c42ba8d9" + }, + "verify/results/shim/bp/A-aiorders.txt": { + "mode": 420, + "sha256": "ee9f8bb1073e3bf02e115fdee014f79b11100a0e1e35e308c2bcd4b798302c34" + }, + "verify/results/shim/bp/A-shim.log": { + "mode": 420, + "sha256": "853eab98d09ff1e7a8e7da375a678561b02d6236adec627202ff3bb34d90e797" + }, + "verify/results/shim/bp/B-aiorders.txt": { + "mode": 420, + "sha256": "07daeacf33a16afbed64a8a01ffd26fa73c6d2acd0e6993dd9deb06a7fd93fc3" + }, + "verify/results/shim/bp/B-shim.log": { + "mode": 420, + "sha256": "cde2202333e81cc4eec2c47915181229a68a5fa99879968905a2809c4fe0a79a" + }, + "verify/results/shim/bp/L-aiorders.txt": { + "mode": 420, + "sha256": "28492b0f9be74f61db45eae49b44b41efbc1a3bf6f6d2c888e5cc40bfb7753bd" + }, + "verify/results/shim/bp/L-shim.log": { + "mode": 420, + "sha256": "550d8986a35b3f4742e7522df11bfbf2e832e417ad42cc1bff1a39dd4ee510fd" + }, + "verify/results/shim/bp/statecheck-AB.txt": { + "mode": 420, + "sha256": "dacb5cfa5541934f37b2b1c02b87e809c3f65ba8488aa88d925b295fade0083d" + }, + "verify/results/shim/bq/bq-res-aiorders.txt": { + "mode": 420, + "sha256": "991543eb53fbf1353fe99ed96d4ca358e05f6bac32f00bd1f6dc60fcc002c8b4" + }, + "verify/results/shim/bq/bq-res-shim.log": { + "mode": 420, + "sha256": "7855bd268f69443e7ddfda71873458144728630264703482901bf6d8ffbccd3a" + }, + "verify/results/shim/br/BR-aiorders.txt": { + "mode": 420, + "sha256": "d71e11e7c40aaa740adc55651af556afb9e92768336bc11747ad67151f33f4d1" + }, + "verify/results/shim/br/BR-airng.txt": { + "mode": 420, + "sha256": "04eaeaa688a448f64df00dedfd692b78bca0e3e1207a8292c2fafad507f919ea" + }, + "verify/results/shim/br/BR-shim.log": { + "mode": 420, + "sha256": "bc6ef7aa465c2b1a81d08555174e15fb1a97a207da9eefaa8a6155440869a13e" + }, + "verify/results/shim/br/BR2-deep-aiorders.txt": { + "mode": 420, + "sha256": "b9edb53f7d56c1bb26d3bb77349543dce9564930484bc832475a3a04e5f2ad15" + }, + "verify/results/shim/br/BR2-shim.log": { + "mode": 420, + "sha256": "0de7609693747fdf0abaebd60598af127c918f32561c993715aead91cd24b334" + }, + "verify/results/shim/br/aiorders-diff.txt": { + "mode": 420, + "sha256": "411ceb2bacd62185d25a3c58f199c0bdfcd2759705bef2b36536da3870f73a67" + }, + "verify/results/shim/br/cmp_aiorders.py": { + "mode": 420, + "sha256": "b6c192efb40866aa56f29d9ba2b89e17f18ae0579645db8f34a01010db09cc28" + }, + "verify/results/shim/br/shim.cfg.brdeep": { + "mode": 420, + "sha256": "b8017e344666df816f1191906cf8f54504d631bb7ce9d2f51f6f959e4934ff04" + }, + "verify/results/shim/br/shim.cfg.brprobe": { + "mode": 420, + "sha256": "4f090999dba63ef22ab4993bd6af557e9500819c84f27decc126771f48f98efb" + }, + "verify/results/shim/bs/C-aiorders.txt": { + "mode": 420, + "sha256": "5abc20b68edf6ff52301c01825040e1d6b41b582ba40403ed6c4edc42dcbe4e2" + }, + "verify/results/shim/bs/C-airng.txt": { + "mode": 420, + "sha256": "5a4a56506d1eeb82d3bf0fbba95842566911178a82f0aad9d700a9fe00f1b300" + }, + "verify/results/shim/bs/C-shim.log": { + "mode": 420, + "sha256": "8b8dad987589fd159e789806e89dbcf7a7b40b86446d55e1d0bf10ff25cb8f6f" + }, + "verify/results/shim/bs/L-aiorders.txt": { + "mode": 420, + "sha256": "a03e8c1587633ecbb683c376f30e35e126e98ff0e8204c4ee6b5e2b4fc254104" + }, + "verify/results/shim/bs/L-airng.txt": { + "mode": 420, + "sha256": "8d21083857facd3728446af612b3a97b47e5287a5fe0bdf01423812f8445dacd" + }, + "verify/results/shim/bs/L-shim.log": { + "mode": 420, + "sha256": "246af272e464c715c7abb00471b4ddc404b81143f4065006aa4daec4d82cadb9" + }, + "verify/results/shim/bs/shim.cfg.bsrun": { + "mode": 420, + "sha256": "570b15c208d31a367ec6c6886019693cb17b98d254cebead11ec6746ae5af256" + }, + "verify/results/shim/bu/BU1-aiorders.txt": { + "mode": 420, + "sha256": "944eeb701fcd22480513c34d93f8310541977e89a24ae237bd947aed44092529" + }, + "verify/results/shim/bu/BU1-aivisit.txt": { + "mode": 420, + "sha256": "721f038ef80be92325728fc30f095846b54ff1ac67a41537d4a4d1b97d5e9758" + }, + "verify/results/shim/bu/BU1-shim.log": { + "mode": 420, + "sha256": "28ca02f56823e577662744108965bc3ab1d7241143704ac8ceaacf2e9cd077f3" + }, + "verify/results/shim/bu/BU2-aiorders.txt": { + "mode": 420, + "sha256": "5c388039a3e832465f67b4ca88f3f67550d5189a3a68f33c508c4a467733c9ac" + }, + "verify/results/shim/bu/BU2-aivisit.txt": { + "mode": 420, + "sha256": "19963ed364f47fd965508d96fbf9d1f424938f711f2b1cdc83697f789189271a" + }, + "verify/results/shim/bu/BU2-shim.log": { + "mode": 420, + "sha256": "c0a8c467bc4b4134dc83ca5dedbbfed8dac887b432a56cd12f6e211c8d58daca" + }, + "verify/results/shim/bu/BU3-aiorders.txt": { + "mode": 420, + "sha256": "b6443b3f7db541149f54435f14ba830f54d2f950420f3f0694ff12a8b1eec143" + }, + "verify/results/shim/bu/BU3-aivisit.txt": { + "mode": 420, + "sha256": "fe67a4a1cc6a67e06b2eb5675b4b8543ab9f25ea39a18d7f4c83bce74482e0cc" + }, + "verify/results/shim/bu/BU3-shim.log": { + "mode": 420, + "sha256": "0a802ec556c87f44efaa06f211e75d9b89a66ac6db5a08e34d2a7eae992121ed" + }, + "verify/results/shim/bu/claim-order.txt": { + "mode": 420, + "sha256": "7135e3ed0204a4615e546bc882992073d4b48ee42ea341186c32b6b3dd3dfc47" + }, + "verify/results/shim/bu/claimcheck.py": { + "mode": 420, + "sha256": "85c5ec747f12cf37ec2dbc4021447909eeded68ecd1abb697a6fb60005a54aff" + }, + "verify/results/shim/bu/shim.cfg.bupin": { + "mode": 420, + "sha256": "6b37b047adc95f7c08b6767cdec5bd715a8851f14bff7f187772835d1cc032a7" + }, + "verify/results/shim/cr/cr-N.log": { + "mode": 420, + "sha256": "d5459e6dcf44fbe55d0f60f1ac40d68bed96319bb55986cc24a1b9ca0d8103e0" + }, + "verify/results/shim/cr/cr-R0.log": { + "mode": 420, + "sha256": "3b703881aa2b9a1c111201ff9543f2dcae0f948567ee877df275a1093bb567f7" + }, + "verify/results/shim/cr/cr-R1.log": { + "mode": 420, + "sha256": "8df6af84f74891ff9b0b02fa150641f5fadcd0419bc53c41cbe80bf14ec9c712" + }, + "verify/results/shim/eventlive/c6b-loaded.png": { + "mode": 420, + "sha256": "f442d4b211a47b331cef9a255e83732b80a1ede70ac200596c796ac0aa320017" + }, + "verify/results/shim/eventlive/c7b-turn3.png": { + "mode": 420, + "sha256": "3e070abfbdf4efd2662951049f8545f328aa172d64d00b9c5a1f4243426e803a" + }, + "verify/results/shim/eventlive/load-dialog-8files.png": { + "mode": 420, + "sha256": "e0fc5af16042a70b53bf7d44220db56c56a466c22c4abd641557e94b8e6c1693" + }, + "verify/results/shim/eventlive/shim-zuul.log": { + "mode": 420, + "sha256": "f9d184b33c46cab9d497f7a38056c099ce2ff9b5e8149f563a2353d91985fea1" + }, + "verify/results/shim/eventlive/shim.log": { + "mode": 420, + "sha256": "e65f2e3efa1ce8f70c483bb966448239923db2d3924c709a669bb1a890411b0c" + }, + "verify/results/shim/eventlive/t7-after.png": { + "mode": 420, + "sha256": "dc0a3e8f5a5c9032ead266d106fa69a57677711eb807d26376f29baa6ec0b934" + }, + "verify/results/shim/eventlive/zuul-turn1.png": { + "mode": 420, + "sha256": "f9af979ed08315c0a8d644af800318634b3641628f710f3f9b4d2c77d4f70fdc" + }, + "verify/results/shim/l1/README.md": { + "mode": 420, + "sha256": "f008081756d99825aa81d2802869476f8341f81aeb8c4dbbb77502cf76db5145" + }, + "verify/results/shim/l1/cdiff-frames-2-51.txt": { + "mode": 420, + "sha256": "57cb1911c5bfc7bdfacafc6bb1ad382fc05f46fb9cdcee4479d861af48e585c1" + }, + "verify/results/shim/l1/cdiff.py": { + "mode": 420, + "sha256": "2ace41ce6017cfac8758d8b9955f02de84738d90067a7dfadeb8bffffc842027" + }, + "verify/results/shim/l1/rep.py": { + "mode": 420, + "sha256": "1a7a3819da8e9aeaaf213a62b696388b0a9489924c964407536831b5f7dd9488" + }, + "verify/results/shim/l1/saves/l1-t1t2-post-hooksoff.sav": { + "mode": 420, + "sha256": "e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d" + }, + "verify/results/shim/l1/saves/l1-t1t2-post.sav": { + "mode": 420, + "sha256": "62061918176e344106e82357e58acc8adec488f6b2969831cb99a84cf25e31c5" + }, + "verify/results/shim/l1/saves/l1-t2t3-post.sav": { + "mode": 420, + "sha256": "2177c659d8dbc39cf7485abe367d42d55cc42cc9a61949d403dcbc79989ec32d" + }, + "verify/results/shim/l1/saves/l1-t2t3-pre.sav": { + "mode": 420, + "sha256": "641a33f06b2fe1c1caf0c4994442bf13a4b03f25a85b34a9875cd22b75715896" + }, + "verify/results/shim/l1/seed-two-processes.txt": { + "mode": 420, + "sha256": "d60412049ced59705284a46078f1906e1aad4140f90db2169e08aeb9530dd985" + }, + "verify/results/shim/l1/seedrep.py": { + "mode": 420, + "sha256": "a06de5d5ccc1e87808eb3877534076340ef5330bee9a86953b8f4dae0268e087" + }, + "verify/results/shim/l1/trace-et1.jsonl": { + "mode": 420, + "sha256": "f21a213bc56983bc94f24303b0837b160f93bfb7e3ca6abdbf2e18321f8dfa19" + }, + "verify/results/shim/l1/trace-et2.jsonl": { + "mode": 420, + "sha256": "6e44b0fc541c3082f91b115de67f5315f43b9db21f0696b856cfff2ead51323a" + }, + "verify/results/shim/l1/trace-oracle.jsonl": { + "mode": 420, + "sha256": "ad9ecbe79a71c84930302868850806798228fe0f2e625b442dd3ed579c05092c" + }, + "verify/results/shim/l1/trace-playforward-f51.jsonl": { + "mode": 420, + "sha256": "6ed0af385dfe7288ad2c994458c8f5d75fc8e29b603dd6607a3703591d25eeb4" + }, + "verify/results/shim/l1/trace-seed-proc1.jsonl": { + "mode": 420, + "sha256": "120074583eb02cd4c3a29aab5826f789d52a6146930b1763f9b0bb824e9a350a" + }, + "verify/results/shim/l1/trace-seed-proc2.jsonl": { + "mode": 420, + "sha256": "03dffeafeff0c33d926207f869741dc544141425c8f665bf58aad4fd363e2f95" + }, + "verify/results/shim/l1/watch-arm.txt": { + "mode": 420, + "sha256": "f8d5811c938d16d003a72a97f2b4b33112914a7ee378fa2b334282616592943e" + }, + "verify/results/shim/l1/watch-hits.txt": { + "mode": 420, + "sha256": "1bf62ac965036a189055cd59a92007c70a2a6aca307df54ce8ccb997048f43d5" + }, + "verify/results/shim/l3/l3-probe-run-shim.log": { + "mode": 420, + "sha256": "f5cd336971ae3d3eaff642e80d9defa20ec2e1ee11e212a082c24365b18d8684" + }, + "verify/results/shim/l3/l3-probe-run-watch.txt": { + "mode": 420, + "sha256": "8d969595789c690a688f7b8fac05288c614d5d9210388ca94315158948c85f24" + }, + "verify/results/shim/l3/l3-spy-run-shim.log": { + "mode": 420, + "sha256": "5abfd08445e9e8139945b095ddddfb56480062019ce6d40304a440c317f21fd1" + }, + "verify/results/shim/l3/l3-spy-run-watch.txt": { + "mode": 420, + "sha256": "c669ccf79202e7060c153151e4fe1be96acf4030cb64aa71bd6a5c212b550b47" + }, + "verify/results/shim/m0-main-menu.png": { + "mode": 420, + "sha256": "465207fda4722ca53585b71647a08b1149944036792a072e7c34e2c437a3e37c" + }, + "verify/results/shim/m0.log": { + "mode": 420, + "sha256": "581d63139503892b6aeeff71acb742143393e9f107aa1f3605d8c028c927cad1" + }, + "verify/results/shim/m1-shim.log": { + "mode": 420, + "sha256": "35401ea82b9a64dbfdb54c282c06c51d7b696afd4ea2794e16071e0fd5c7cbef" + }, + "verify/results/shim/m2-scout-shim.log": { + "mode": 420, + "sha256": "8c46117bdde6b6911a4d77b059b40803d4966652990c8fa3ed67773e5db0459f" + }, + "verify/results/shim/mf-after-shim.log": { + "mode": 420, + "sha256": "86601372b980828171e98fc71afe865f207b1745ef4dcdca646a618c91d17426" + }, + "verify/results/shim/mf-after-turn2.png": { + "mode": 420, + "sha256": "a1f83011ff96e990d7cc80f8306e8fe0c58b96f84eb73ccb6cb013019900133d" + }, + "verify/results/shim/mf-after-turn7.png": { + "mode": 420, + "sha256": "313f3863ab901320174c8ff7cf6f1f6b0d5b3d9d7a2f8999eae6413aedc46fc5" + }, + "verify/results/shim/mf-before-shim.log": { + "mode": 420, + "sha256": "8377a87c7ed05fd0cd7b61e3f1d5fc9c2b9fa294f812c67183d4ce31323a64b1" + }, + "verify/results/shim/mf-before-turn2.png": { + "mode": 420, + "sha256": "c9805791f402ec159fcc6acdd283120eae8536b230666d3049374525595b589f" + }, + "verify/results/shim/mf-before-turn7.png": { + "mode": 420, + "sha256": "3b880b8f96c4cc328aaff8e41068db29b295be8f000c432e321a51b6030b1272" + }, + "verify/results/shim/mf-human-home-no-ships.png": { + "mode": 420, + "sha256": "dfda3e9784eefdc7b75d04908e95c3a192eda7796685907c65bfde3068d6f2bb" + }, + "verify/results/shim/probes/human-t3-5-perturbed.txt": { + "mode": 420, + "sha256": "9b594ab18cdd9aec4fdf807b4d97576191bc6fd48a85cc872c222b515d0f7c01" + }, + "verify/results/shim/probes/human-t5.txt": { + "mode": 420, + "sha256": "0ddd9f0391a3a5d655f1809a9e79d537badd8071f8834e58bdbc7f95d9ff1320" + }, + "verify/results/shim/probes/oracle-restore/h-oracle-autosave.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/shim/probes/oracle-restore/h-oracle-endturn.sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/shim/probes/zuul-t24-25.txt": { + "mode": 420, + "sha256": "50567b7cb1f008d025baf6cb4b4ad7af7d767a2182afd082c3ac1b1a66c79541" + }, + "verify/results/shim/recap-b1-shim.log": { + "mode": 420, + "sha256": "601cd4cbbec3e8c1f7776eadc4203256ec4c5d1e3e180295369727e1da69ff37" + }, + "verify/results/shim/recap-b3-shim.log": { + "mode": 420, + "sha256": "7c5110a9d4431cc03729a7bddcb13ee69a6d428199051e175b0921391fc02a80" + }, + "verify/results/shim/recap-misc-shim.log": { + "mode": 420, + "sha256": "7cadf2eadb08979cda39fe7e3ed6cfa3f62bdbcd256fc7550b3e27c3f08c9b3e" + }, + "verify/results/shim/recap-misc-turn7.png": { + "mode": 420, + "sha256": "2c1451ded36ad79389f0eb3db098b4e0b0a6f12495d64c832f6e093374005c29" + }, + "verify/results/shim/recap-trace-shim.log": { + "mode": 420, + "sha256": "56da143a92b2edda727862a6fd4a056c716153e23cfddbde076e218ce4c4285f" + }, + "verify/results/shim/recap-turn2-loaded.png": { + "mode": 420, + "sha256": "62a42c44f99d8a53bca735d54a5adf48b89449bb859e859ec573cb40e1a7f2d0" + }, + "verify/results/shim/tailrng/save_rng_delta.py": { + "mode": 420, + "sha256": "a9a04b131427a43372d87688b8eaf230a82a79e2c3c241a90ff4eb31e039749e" + }, + "verify/results/shim/tailrng/z-t5-autosave.sav": { + "mode": 420, + "sha256": "b2124798470d85ea86b0e9e4abfd9e23f3be73caa1115dd7614021be76305939" + }, + "verify/results/shim/tailrng/z-t6-autosave.sav": { + "mode": 420, + "sha256": "2ce6aef9d49ea238455f3ac680556c6a251065af3e28b6540fe09597ae38571c" + }, + "verify/results/shim/tailrng/z-t6-endturn.sav": { + "mode": 420, + "sha256": "afb112896c0236fa715ab3c10139958294085bb2066e22a6d7b76deb0dfa46dc" + }, + "verify/results/shim/tailrng/z2-autosave.sav": { + "mode": 420, + "sha256": "b2124798470d85ea86b0e9e4abfd9e23f3be73caa1115dd7614021be76305939" + }, + "verify/results/shim/tailrng/z2-endturn.sav": { + "mode": 420, + "sha256": "8648957fecf5041233f9add4c8173f78981f026f133ecdbecdb89ddd10917048" + }, + "verify/results/shim/unlock-shim.log": { + "mode": 420, + "sha256": "20a6625b369acb773543e530f1bfdc8b7eaca5c6b58415cc5009bb9858e16f22" + }, + "verify/results/shim/watchpoints/w2-modcount-status-2turns.txt": { + "mode": 420, + "sha256": "335be910dc11a20c9fb80f3b0f37f04fd50a9d8074697bb5365c3fea02790b74" + }, + "verify/results/shim/watchpoints/w2-shim-log-excerpt.txt": { + "mode": 420, + "sha256": "9a344045270e3815004a3376eccfbd030372faba54374d9b6626fd80740b8b13" + }, + "verify/results/shim/watchpoints/w3-modcount-turn1.txt": { + "mode": 420, + "sha256": "328a2319e320f5382e82ad497b6b73245c397cf67515e8a27fa9712418af81ae" + }, + "verify/results/shim/watchpoints/w3-shim-log-excerpt-turn1.txt": { + "mode": 420, + "sha256": "a9b3c20f90a76ee624bde6ee4cae9d1ff1f2baa67aa770a0e70042cb44d11915" + }, + "verify/results/shim/watchpoints/w3-shim-log-excerpt.txt": { + "mode": 420, + "sha256": "af9fe2258fe4168f6066768809c509380183f61bc337331392c5202b900d906a" + }, + "verify/results/shim/watchpoints/w3-tshn-containers.txt": { + "mode": 420, + "sha256": "08eab48d1a202f975f1be87e2279379646142f8b22d9dafc56295399083ed0af" + }, + "verify/results/standalone/cv/cv-input-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "d29f3514e4209954d6c068f34285615aef5f4627ba4627ce97c0e65f93620159" + }, + "verify/results/standalone/cv/cv-leaf-worklist.txt": { + "mode": 420, + "sha256": "0f309711de89cc10cf940d0d4b051b5052ce49a3cc0f3f80c532b50256410778" + }, + "verify/results/standalone/cv/cv-noreplay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "3734f197cfefd017dbe562fd421d40859bfc2c37d9ac2cedf9c7ddd340a3a4a7" + }, + "verify/results/standalone/cv/cv-replay-run.log": { + "mode": 420, + "sha256": "7372c7da437ece21098cc6f66d0631e146d8aae14a9242bd2278a9922a7f7c02" + }, + "verify/results/standalone/cv/cv-replay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "1932158abec82f45b9b838f4cb79b1088190ca5281d388f57356af7776e96950" + }, + "verify/results/standalone/dt/dt-canonical-after.txt": { + "mode": 420, + "sha256": "f32fdcf7d6431293133e951045b42a55e8a27d75cd859ad08cd719e5fb696712" + }, + "verify/results/standalone/dt/dt-canonical-before.txt": { + "mode": 420, + "sha256": "b56160cfdcfa0fff25be2aa566959261e375004905814803e231889da665188f" + }, + "verify/results/standalone/dt/dt-observed-leaves-remaining.txt": { + "mode": 420, + "sha256": "e14bd20e60480f98a564e585c0d25d2e758f71016811b8981dbdacd9d51c0c82" + }, + "verify/results/standalone/dt/dt-replay-run.log": { + "mode": 420, + "sha256": "4b7907fc4e735b1c12e3cf64671079abaad757aabd752b134a9fb27d065656cd" + }, + "verify/results/standalone/dt/dt-replay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "8ddb84e7e6c2f663b1bc4b9611a56a46aac9d09863dcc5be765cb70dc9642c22" + }, + "verify/results/standalone/max-income-oracle.json": { + "mode": 420, + "sha256": "245796e0aea5f5c2238686cba10c651156117fb454805553b2508a8a8fe71a69" + }, + "verify/results/standalone/report.txt": { + "mode": 420, + "sha256": "b47e90432eaf38149f2ecb5316d1962813b6b1423848e36fcc9435ad1f5485df" + }, + "verify/results/standalone/rng-oracle.json": { + "mode": 420, + "sha256": "98a364c80f69d6a84b86c3f9ccc16176d9e769ff061569b0c0ddfced53f9146c" + }, + "verify/results/standalone/rng-oracle.txt": { + "mode": 420, + "sha256": "3496a217a7e4f80bb18c1b067eaedcafcf7bdc877460c6346606fd7f6a55b877" + }, + "verify/results/standalone/status.json": { + "mode": 420, + "sha256": "d38ca6222c83df3a5886e6b32a30772c7174cc0e584f4a3beabedc05770df9cd" + }, + "verify/results/standalone/t36-turnrecord.md": { + "mode": 420, + "sha256": "b017a93ad04af69ef469cd8ea536dff4cab17140d20b3665e7c89533ab5b8a84" + }, + "verify/results/state-checksum/ad-oracleA-vs-oracleB.txt": { + "mode": 420, + "sha256": "b6c440e20108ad2727a7d7aa32a4bd673ec03ca4372461797705d619de1ba48a" + }, + "verify/results/state-checksum/chain-turn1-3.json": { + "mode": 420, + "sha256": "33941d0dd77bfb79e4302f82a410f5f18fe3ae1ade684b5b59c6ed352789a696" + }, + "verify/results/state-checksum/chain.txt": { + "mode": 420, + "sha256": "ae1037dd8394b258ce91262877d348a0561c5f5056cfae74cc0d058e4166aa83" + }, + "verify/results/state-checksum/float-census.txt": { + "mode": 420, + "sha256": "c697c0f187ee8a8ebb157cbff8d7ae42c92f36a501b16acd9f9839a0ffc306a9" + }, + "verify/results/state-checksum/identical-roots.txt": { + "mode": 420, + "sha256": "1143fabfe96954440542adcd3830ad1d862be6c091f3c1b2e63e92a2751703e7" + }, + "verify/results/state-checksum/resave-localisation.txt": { + "mode": 420, + "sha256": "85f4e8fe3581ba5d0ae74974d757c4c2fddc008f3fbe6781891ae8ef65aa693e" + }, + "verify/results/state-checksum/roots.txt": { + "mode": 420, + "sha256": "6ea7ad668703baaff870720683bcc13beff557cebf8e7843526d6677e5b5ef68" + }, + "verify/results/state-checksum/turn2-to-turn3.txt": { + "mode": 420, + "sha256": "3649c86742460a54d89714df1917508f76952c44c07cb7fbc19010910c5df0f4" + }, + "verify/results/turncommands/br2-turn27-deep.tcb": { + "mode": 420, + "sha256": "329b9c3f1e9f85ddeeb71148bd5c0e38f7d26445ed349df60ffbfaf63db46102" + }, + "verify/results/turncommands/br2-turn27-shallow.tcb": { + "mode": 420, + "sha256": "d8346969421a92fa199d0b9faafa642dc2e71a527b08d27984fe73ee70ecbd6b" + }, + "verify/results/turncommands/cb-turn1to2-pinned-run2.json": { + "mode": 420, + "sha256": "01e572975339fbe8a242b2438719173bd5bb4f4916078e5887026408923eb356" + }, + "verify/results/turncommands/cb-turn1to2-pinned-run2.tcb": { + "mode": 420, + "sha256": "16e349db6c46e46520cd2e5f0a9fcf70b537dce878324dd873418ef6cebd8658" + }, + "verify/results/turncommands/cb-turn1to2-pinned.json": { + "mode": 420, + "sha256": "2d4f108b8ac6b1e582382ac25d53f354c293e7caf390b8462d15beaf8e43e01c" + }, + "verify/results/turncommands/cb-turn1to2-pinned.tcb": { + "mode": 420, + "sha256": "28ebfecc3495cc4f5b2892e420cb1b83f3cbdb6b7aabe107f4b1d18233a06094" + }, + "verify/results/turncommands/cb-turn1to2-run1.json": { + "mode": 420, + "sha256": "c9de70196af5453df15cfebcb92c973dfed9d54ffa0dc0a397839cf951ac9b58" + }, + "verify/results/turncommands/cb-turn1to2-run1.tcb": { + "mode": 420, + "sha256": "5cdcfb3ade6cdfb2c00c234f5535c791780230f520d27be14f617462347b4948" + }, + "verify/results/turncommands/cb-turn2to3.json": { + "mode": 420, + "sha256": "8a0d4fc9efae9dcb4eca0de41bf28444d79eb5a4fd4e426671a4d80ab5a46f44" + }, + "verify/results/turncommands/cb-turn2to3.tcb": { + "mode": 420, + "sha256": "420a5d03f2a4ecfa0789835cc46f98961d11bbd7c7fd5f59dc28301aa0b65b6b" + }, + "verify/results/turncommands/l4-turn1to2.tcb": { + "mode": 420, + "sha256": "1b9faa7f8aad9196e36cf1c450e340f37c502a69ccfcaaad7e289bd7b4727b12" + }, + "verify/results/turncommands/l4-turn2to3.tcb": { + "mode": 420, + "sha256": "b0443f176c3915389278de608a8e7c63fa48d4777b924c0e383c7279f2a297e0" + }, + "verify/save-reader/SAVE_FORMAT.md": { + "mode": 420, + "sha256": "5ac2556b6c063c9296ef29e8514cc312983d48a8e2c2832f504c970629990b33" + }, + "verify/save-reader/fixture_joint.sav": { + "mode": 420, + "sha256": "fbe41595e50bb580786f36b197d5b85f87820974c545107c864fa2f1862af3f1" + }, + "verify/save-reader/fixture_split.sav": { + "mode": 420, + "sha256": "3909f12d021bf840617dc8d599841b64d67be46e1c6882cba7728d312d310071" + }, + "verify/save-reader/save_reader.py": { + "mode": 420, + "sha256": "2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35" + }, + "verify/save-reader/save_writer_stub.py": { + "mode": 420, + "sha256": "8343ad15f742ee1b9cd62108efbc9c4b2718c3807442e3dfcfa9513ced7d3638" + }, + "verify/save-reader/test_save_reader.py": { + "mode": 420, + "sha256": "29f609d037eed99bb5444004facbff7b2c5c36fae568e815810585fdc3ddd393" + }, + "verify/state-checksum/STATE_CHECKSUM.md": { + "mode": 420, + "sha256": "5680299a4df27e30cdb545d9d2a640caf9299d61acb662b9512589e4390954e1" + }, + "verify/state-checksum/float_census.py": { + "mode": 420, + "sha256": "a568aad8b9f38aba2474f33941550bf948d050694a1d04dc5c85d15687223ae9" + }, + "verify/state-checksum/run_validation.sh": { + "mode": 493, + "sha256": "bf84b999d2b90368703e80235bac0258b70a1c37dd1902c9205a914a59cb1fc2" + }, + "verify/state-checksum/stability_check.py": { + "mode": 420, + "sha256": "8e640561b05decf590524fbe0dbf3b76a5e2f9c7fde93e005ca6e79464c305f1" + }, + "verify/state-checksum/state_checksum.py": { + "mode": 420, + "sha256": "ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8" + }, + "verify/state-checksum/test_state_checksum.py": { + "mode": 420, + "sha256": "d0ccf8e8390fd0a5d76a8695a490d85dc7e8e415a06ec50b592c57474cc9a73b" + }, + "verify/tooling/README.md": { + "mode": 420, + "sha256": "b05249530d65d43220c1e5c4666939c360d6139ed404a8881f6ad0a9c5c27af6" + }, + "verify/tooling/fixtures.py": { + "mode": 420, + "sha256": "56cccc88b9b9468e07c9ddff39d65813098053ec9e8f00432736906389f200a7" + }, + "verify/tooling/host-tests.json": { + "mode": 420, + "sha256": "90833c99e2749ff890b16b943f43f6ebfc1a1c611f2ed1e40555426fded45c97" + }, + "verify/tooling/test_tooling.py": { + "mode": 420, + "sha256": "bb8d15960dfda13f15cffc57f3b669003b127b4dedbf34100bb4a51c29dd3c6d" + }, + "verify/traces/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/traces/ac-probe-baseline-turn15.jsonl": { + "mode": 420, + "sha256": "a2f4e410f6a8d77f7680b4a69b5b2ac2f59fa80515b0cfe8209e7fec8e4a5b6b" + }, + "verify/traces/ac-probe-turn21-turn23.jsonl": { + "mode": 420, + "sha256": "2bb9317b82744c0da36ef6d9c1a78f31ebacea49b82a18005c0cc75bad62d345" + }, + "verify/traces/ad-r1-turn28-turn29.jsonl": { + "mode": 420, + "sha256": "cde7a1e010aa6195163f3b9320aa5c496fd8c271e9648c90c7319837dd967571" + }, + "verify/traces/ap-probes8-deploy-turn15.jsonl.gz": { + "mode": 420, + "sha256": "e257d5ea3fcb4be8da570d6a5589022e6ba412ff2712f4f06832812d8859e08a" + }, + "verify/traces/ap-probes8-turn16-turn26.jsonl.gz": { + "mode": 420, + "sha256": "df4fb35d9824799d8be79f3a9e976b55b7cd0fb5488b3e12711d04eb3c320f13" + }, + "verify/traces/ar-r1-turn38-turn43.jsonl": { + "mode": 420, + "sha256": "f8653cbd1956346816897b313031c5d70898144d1c84b1c849ac37bfe3bd993c" + }, + "verify/traces/ar-r2-control-turn38-turn39.jsonl": { + "mode": 420, + "sha256": "c1068652ddf54d2ff266c1dc1ef1e69ea663f5d2a83143408f77ec782b3dd988" + }, + "verify/traces/as-probes8-turn15-turn16.jsonl.gz": { + "mode": 420, + "sha256": "024bb0663b167eb364c8e138bae0bf10403860c195bd593cb56f60281060c4e8" + }, + "verify/traces/b2-final-menu.png": { + "mode": 420, + "sha256": "5a95fe260c9cb13dad5fc6f00460819107db93f4ac89f455077ad056600f83fd" + }, + "verify/traces/b2-shim.log": { + "mode": 420, + "sha256": "c31cf01af3659b7fdf008ff44f88f67ee4016dcfb30fc4a72b4d72ea0da8e404" + }, + "verify/traces/b2-techfx-compare.jsonl": { + "mode": 420, + "sha256": "f0202f45b276db6744c80768f12695153812bc882de688cf64705ed6a52f243c" + }, + "verify/traces/b2-techfx-golden.jsonl": { + "mode": 420, + "sha256": "43639e75bd9d510ed270c9cfcbb0c9665f5a6546f748ba81eba3f015e7ca233c" + }, + "verify/traces/cr-N.jsonl.gz": { + "mode": 420, + "sha256": "0071ae72a142533ffb91f9f04caa6704102c826761ff5ae24b57a1c3e9652e46" + }, + "verify/traces/cr-R0.jsonl.gz": { + "mode": 420, + "sha256": "6228c88cebb4dad2158e5586ecbcf71d1160116f2f4a2a8bc020658da8d7d706" + }, + "verify/traces/cr-R1.jsonl.gz": { + "mode": 420, + "sha256": "73f5f15b3343381cf3f973caaf74588fd3d0b6759de1ddcf9e12b9b3ebf29713" + }, + "verify/traces/eventlive-b3-t1-5.jsonl.gz": { + "mode": 420, + "sha256": "9cb344f1d8a3beb4bc1a2bf16baed6c38667443ead9f66fa0f53474a683d263c" + }, + "verify/traces/eventlive-b3-t1.jsonl": { + "mode": 420, + "sha256": "2d9962de9a7ea7fb28b33b72209706b4a27673096f71c8789f9f10ac465f387b" + }, + "verify/traces/eventlive-b3-zuul.jsonl.gz": { + "mode": 420, + "sha256": "0ee09bb884799e72c6a617ab02e741a7ba791ff458af439b9947a87b368a64de" + }, + "verify/traces/h-probes-human-perturbed-t3-5.jsonl.gz": { + "mode": 420, + "sha256": "2567f8ccb6276a4d647c4f4b88d14f7ae63aa4d1797f672a9bd9c7c86e4d7473" + }, + "verify/traces/h-probes-human-t5.jsonl.gz": { + "mode": 420, + "sha256": "92964779111573dc72e6a1845217cd7d709c9900594a106b3de7b59c2b7a88a7" + }, + "verify/traces/h-probes-zuul-t24-25.jsonl.gz": { + "mode": 420, + "sha256": "0966294af27b49159b1e72e683abc0b59fd52cc9bfd9f517130d30cedf7efa29" + }, + "verify/traces/l3-probe-turn8-turn15.jsonl": { + "mode": 420, + "sha256": "d1b5436f917bb4f6f74bd7b1967dbd0626db2c3a5cbc1d67684ef9f010826676" + }, + "verify/traces/m1-compare.jsonl": { + "mode": 420, + "sha256": "f0f6fd15bc73008e43e20d6ed4c4dd91fb2ec8b40935bfd3cc000d8a84ea6731" + }, + "verify/traces/m1-trace-golden.jsonl": { + "mode": 420, + "sha256": "4a4ddc031fb26a8f8b10dace297c73670f53dcbd250a9be94c0e31c9bb44dcc5" + }, + "verify/traces/mf-after-compare.jsonl": { + "mode": 420, + "sha256": "2a894892977176df1a9d6c8199b0f81b48c7bcac15d2c0e7786441fc6125226e" + }, + "verify/traces/mf-before-compare.jsonl": { + "mode": 420, + "sha256": "ee005097ebaac9f30c63f1e400fdf19a47e88010c71d215885234986d122410e" + }, + "verify/traces/output-ref-turn2.jsonl.gz": { + "mode": 420, + "sha256": "7af583350545501414eda38439f2d0fa39149342d9001d2926e2a4e4fdd5cdca" + }, + "verify/traces/output-zuul-and-ref.jsonl.gz": { + "mode": 420, + "sha256": "d581cb50f07766911fa59fa1df1524b33a9df6eec06226966efd5f54f09b6fb5" + }, + "verify/traces/recap-b1-compare.jsonl.gz": { + "mode": 420, + "sha256": "0ce1c92028a8cd10a38d7cca72f90c37ccbd844f24a1950bf0eb6e75739b44e2" + }, + "verify/traces/recap-b3-compare.jsonl": { + "mode": 420, + "sha256": "6ed3bcd99b4657d614bf63cc0fc2dfff650f4cb14e51086ea98c21bccbcf5fa8" + }, + "verify/traces/recap-golden-trace.jsonl.gz": { + "mode": 420, + "sha256": "d62431e9461ffb1b66adc16a39542b86fa8e0cf54a0ed446a8781c4d75a6c3bb" + }, + "verify/traces/recap-misc-compare.jsonl": { + "mode": 420, + "sha256": "d7c4446d45a9cab2af3da4a0d76f7a42c245da1f59db96fddf31d8b1f2c436ed" + }, + "verify/traces/tailrng-drawsites.jsonl.gz": { + "mode": 420, + "sha256": "5c1806e2b1452226674013119e3b220f3cf42be2ad8b0ed998050ad65d1f8415" + }, + "verify/traces/tailrng-refturn2.jsonl.gz": { + "mode": 420, + "sha256": "c33c6cafe015bda6acf5ca32b0c9595e1611f4ac82ecd3adaff8315c7bd3e560" + }, + "verify/traces/tailrng-zuul-long.jsonl.gz": { + "mode": 420, + "sha256": "213e7dd8a6809dd93190f41c87218e802f1fbe77d44d598f287c2a19544063af" + }, + "verify/traces/tailrng-zuul-noderoute.jsonl.gz": { + "mode": 420, + "sha256": "9476ee3b9b397ca9e20bc92eb887c109a075487cdd750746af051797e8838115" + }, + "verify/traces/unlock-b3-t1-5.jsonl.gz": { + "mode": 420, + "sha256": "f6e27a60bf6c74eb98d8bec50146fe1996642285ca008c6a70c3cb148c6ba54c" + }, + "verify/traces/unlock-b3-t1.jsonl.gz": { + "mode": 420, + "sha256": "bfa53bba3e59d17dd330e38ef52fd04fd92f05f3ad357fefd77388d083b49a05" + }, + "verify/traces/unlock-b3-zuul.jsonl.gz": { + "mode": 420, + "sha256": "d94c635105a75a68cb811a3881faf371678c075d240998f48fcf348b8459063f" + } + }, + "manifest_sha256": "b4db6808cc2b8aca33fa27eaab330d32811ce146d829a1bb9474a03f7ccdaeb4", + "path": "/tmp/opencode/sots-final-research-re" + } + }, + "ended_at": "2026-09-10T12:59:19+00:00", + "error": "host interrupted by Windows Update after durable checkpoint and surprise; no child process survived", + "started_at": "2026-09-10T05:23:06.116970+00:00", + "status": "incomplete", + "worktrees": { + "engine": "/tmp/opencode/sots-final-research-engine", + "re": "/tmp/opencode/sots-final-research-re" + } +} diff --git a/campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.jsonl b/campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.jsonl new file mode 100644 index 0000000..e940cea --- /dev/null +++ b/campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.jsonl @@ -0,0 +1,111 @@ +{"type":"step_start","timestamp":1789017790788,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c5193f001cpK4g38HNCsmHH","messageID":"msg_089c50d9b001A6ESNy6ChVIjct","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"5c926ad02e9d6d1b13ccbc413db01b942eec18f9","type":"step-start"}} +{"type":"tool_use","timestamp":1789017797673,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"todowrite","callID":"call_hyWDRcXgQjV4Z5eAQMDgsqcs","state":{"status":"completed","input":{"todos":[{"content":"Read canonical instructions, contract, checkpoint, and open surprises; verify identities and verifier-owned scope","status":"in_progress","priority":"high"},{"content":"Define verification falsifiers, branch exposures, and distinct states before experiments","status":"pending","priority":"high"},{"content":"Reproduce handoff and independently inspect state/RNG plus negative or held-out challenge","status":"pending","priority":"high"},{"content":"Write verifier-owned evidence and mandatory fresh canonical checkpoint","status":"pending","priority":"high"}]},"output":"[\n {\n \"content\": \"Read canonical instructions, contract, checkpoint, and open surprises; verify identities and verifier-owned scope\",\n \"status\": \"in_progress\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Define verification falsifiers, branch exposures, and distinct states before experiments\",\n \"status\": \"pending\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Reproduce handoff and independently inspect state/RNG plus negative or held-out challenge\",\n \"status\": \"pending\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Write verifier-owned evidence and mandatory fresh canonical checkpoint\",\n \"status\": \"pending\",\n \"priority\": \"high\"\n }\n]","metadata":{"todos":[{"content":"Read canonical instructions, contract, checkpoint, and open surprises; verify identities and verifier-owned scope","status":"in_progress","priority":"high"},{"content":"Define verification falsifiers, branch exposures, and distinct states before experiments","status":"pending","priority":"high"},{"content":"Reproduce handoff and independently inspect state/RNG plus negative or held-out challenge","status":"pending","priority":"high"},{"content":"Write verifier-owned evidence and mandatory fresh canonical checkpoint","status":"pending","priority":"high"}],"truncated":false},"title":"4 todos","time":{"start":1789017797667,"end":1789017797671}},"metadata":{"openai":{"itemId":"fc_05921f137ecee0c0016aa23ec1dc1087d182a682c3f05f67df"}},"id":"prt_089c5258f001dxqn131vnVsWOs","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c50d9b001A6ESNy6ChVIjct"}} +{"type":"step_finish","timestamp":1789017797749,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c53470001XgXHVXBB8N4NyE","reason":"tool-calls","snapshot":"efa57669f06680b6190701ef6ce40da252f54ca0","messageID":"msg_089c50d9b001A6ESNy6ChVIjct","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":6008,"input":5813,"output":123,"reasoning":72,"cache":{"write":0,"read":0}},"cost":0}} +{"type":"step_start","timestamp":1789017805374,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c5523a001X3Zl7nCXsXDYLU","messageID":"msg_089c5349b001CxSpZjTi1I9iht","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"f961b09fa920b63ba2b769c7c7af63889e9a1975","type":"step-start"}} +{"type":"tool_use","timestamp":1789017805658,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_apFNT4k2fIauQH26QOOQ2gbg","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/AGENTS.md"},"output":"/home/alex/sots-re/AGENTS.md\nfile\n\n1: # SOTS campaign instructions\n2: \n3: This repository is the state authority for the SOTS reconstruction and its Windows lab.\n4: Start with `campaign/README.md`, your contract, its latest checkpoint, and open surprises.\n5: Current policy: `guides/multi-agent-workflow.md`. Engine architecture: `sots-engine/docs/architecture.md`.\n6: Historical findings are evidence, not current execution instructions or accepted status.\n7: \n8: ## Authority and models\n9: \n10: - The normal lead/RE/implementation/verification/lab loop runs on **GPT-5.6 Sol\n11: (`openai/gpt-5.6-sol`)**. Reserve **GPT-6 Astra (`openai/gpt-6-astra`)** for resolving\n12: falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope.\n13: - `campaign/models.json` is the role/model registry. Launch with `tools/run_agent.py` and an\n14: explicit role, contract, state root, and paired worktrees. Never silently downgrade or fall back.\n15: - Ordinary implementation/test failures inside the contract may be fixed by its worker.\n16: Falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope\n17: require a recorded surprise and an Astra resolution before affected work continues.\n18: - No worker subdelegation. The lead assigns parallelism; max two implementation slices after\n19: the pilot. Independent workload preparation is scheduled against explicit resource leases.\n20: \n21: ## Durable state and context\n22: \n23: Checkpoint in the canonical RE state root every **20 tool calls or 15 minutes**, whichever is\n24: earlier, and before an experiment, compaction, handoff, or stop. Include model/session, exact\n25: source identities, evidence paths, decisions versus observations, tests, blockers, and ONE exact\n26: next action. Do not store state only in a chat summary or `/tmp`.\n27: The runner uses bounded 40-step quanta. After checkpointing, stop and restart from the repository;\n28: automatic compaction is a backstop, not proof that a checkpoint was written. On recovery read the\n29: contract/checkpoint, verify worktree and resource identities, then continue. Missing state means\n30: blocked, not permission to reconstruct progress from memory.\n31: \n32: ## Ownership\n33: \n34: Use distinct engine and RE worktrees per lane, baseline-pinned. Canonical runtime state is shared\n35: only through the campaign tools. One integrator writes current evidence pointers and projections.\n36: Never stage someone else's changes. No automatic commit, push, pull, or reset. Commands requiring\n37: these actions need explicit user authorization. Source edits use apply_patch.\n38: VM, shared build-host, and Ghidra mutation require leases. A stale lease is not automatically free.\n39: Record preconditions, side effects, cleanup and access verification for any lab operation.\n40: Rollout bootstrap file-ownership exception: `campaign/rollout/architecture-decision.md` only.\n41: \n42: ## Evidence\n43: \n44: No generic `verified` promotion. Separate understanding, implementation, original dependencies,\n45: and validation scope. A count is insufficient without distinct states, branch exposures, and\n46: positive execution evidence. Include all writes, container elements, allocations, IDs, events,\n47: RNG draws, and runtime-only inputs. Original-assisted execution is not independent replacement.\n48: Synthetic boundary tests and original-game differential tests are complementary. Missing required\n49: inputs, zero execution, incomplete coverage, unexpected skips, stale binaries or unbound source\n50: identity fail acceptance. One independent verifier must reproduce the package; integrated-tree\n51: evidence is required for acceptance. Reports are measurements until those gates pass.\n52: \n53: Never commit owner-supplied binaries/assets or secrets. Engine facts cross only documented\n54: generated channels. Never paste disassembly/decompiler output into the engine repository.\n\n(End of file - total 54 lines)\n","metadata":{"preview":"# SOTS campaign instructions\n\nThis repository is the state authority for the SOTS reconstruction and its Windows lab.\nStart with `campaign/README.md`, your contract, its latest checkpoint, and open surprises.\nCurrent policy: `guides/multi-agent-workflow.md`. Engine architecture: `sots-engine/docs/architecture.md`.\nHistorical findings are evidence, not current execution instructions or accepted status.\n\n## Authority and models\n\n- The normal lead/RE/implementation/verification/lab loop runs on **GPT-5.6 Sol\n (`openai/gpt-5.6-sol`)**. Reserve **GPT-6 Astra (`openai/gpt-6-astra`)** for resolving\n falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope.\n- `campaign/models.json` is the role/model registry. Launch with `tools/run_agent.py` and an\n explicit role, contract, state root, and paired worktrees. Never silently downgrade or fall back.\n- Ordinary implementation/test failures inside the contract may be fixed by its worker.\n Falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope\n require a recorded surprise and an Astra resolution before affected work continues.\n- No worker subdelegation. The lead assigns parallelism; max two implementation slices after\n the pilot. Independent workload preparation is scheduled against explicit resource leases.\n","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/AGENTS.md","text":"# SOTS campaign instructions\n\nThis repository is the state authority for the SOTS reconstruction and its Windows lab.\nStart with `campaign/README.md`, your contract, its latest checkpoint, and open surprises.\nCurrent policy: `guides/multi-agent-workflow.md`. Engine architecture: `sots-engine/docs/architecture.md`.\nHistorical findings are evidence, not current execution instructions or accepted status.\n\n## Authority and models\n\n- The normal lead/RE/implementation/verification/lab loop runs on **GPT-5.6 Sol\n (`openai/gpt-5.6-sol`)**. Reserve **GPT-6 Astra (`openai/gpt-6-astra`)** for resolving\n falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope.\n- `campaign/models.json` is the role/model registry. Launch with `tools/run_agent.py` and an\n explicit role, contract, state root, and paired worktrees. Never silently downgrade or fall back.\n- Ordinary implementation/test failures inside the contract may be fixed by its worker.\n Falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope\n require a recorded surprise and an Astra resolution before affected work continues.\n- No worker subdelegation. The lead assigns parallelism; max two implementation slices after\n the pilot. Independent workload preparation is scheduled against explicit resource leases.\n\n## Durable state and context\n\nCheckpoint in the canonical RE state root every **20 tool calls or 15 minutes**, whichever is\nearlier, and before an experiment, compaction, handoff, or stop. Include model/session, exact\nsource identities, evidence paths, decisions versus observations, tests, blockers, and ONE exact\nnext action. Do not store state only in a chat summary or `/tmp`.\nThe runner uses bounded 40-step quanta. After checkpointing, stop and restart from the repository;\nautomatic compaction is a backstop, not proof that a checkpoint was written. On recovery read the\ncontract/checkpoint, verify worktree and resource identities, then continue. Missing state means\nblocked, not permission to reconstruct progress from memory.\n\n## Ownership\n\nUse distinct engine and RE worktrees per lane, baseline-pinned. Canonical runtime state is shared\nonly through the campaign tools. One integrator writes current evidence pointers and projections.\nNever stage someone else's changes. No automatic commit, push, pull, or reset. Commands requiring\nthese actions need explicit user authorization. Source edits use apply_patch.\nVM, shared build-host, and Ghidra mutation require leases. A stale lease is not automatically free.\nRecord preconditions, side effects, cleanup and access verification for any lab operation.\nRollout bootstrap file-ownership exception: `campaign/rollout/architecture-decision.md` only.\n\n## Evidence\n\nNo generic `verified` promotion. Separate understanding, implementation, original dependencies,\nand validation scope. A count is insufficient without distinct states, branch exposures, and\npositive execution evidence. Include all writes, container elements, allocations, IDs, events,\nRNG draws, and runtime-only inputs. Original-assisted execution is not independent replacement.\nSynthetic boundary tests and original-game differential tests are complementary. Missing required\ninputs, zero execution, incomplete coverage, unexpected skips, stale binaries or unbound source\nidentity fail acceptance. One independent verifier must reproduce the package; integrated-tree\nevidence is required for acceptance. Reports are measurements until those gates pass.\n\nNever commit owner-supplied binaries/assets or secrets. Engine facts cross only documented\ngenerated channels. Never paste disassembly/decompiler output into the engine repository.","lineStart":1,"lineEnd":54,"totalLines":54,"truncated":false}},"title":"AGENTS.md","time":{"start":1789017805647,"end":1789017805655}},"metadata":{"openai":{"itemId":"fc_0fcee9cc2c8c9f87016aa23ecd1e9087d1bdd3ecf5c7869e4f"}},"id":"prt_089c5523c001PmUMr76vUgkntM","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5349b001CxSpZjTi1I9iht"}} +{"type":"tool_use","timestamp":1789017806056,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_l8iNofPvTxhI0CvR10UvzPKK","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/README.md"},"output":"/home/alex/sots-re/campaign/README.md\nfile\n\n1: # Canonical campaign controls\n2: \n3: `sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\n4: surprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\n5: projections. Historical evidence is not current acceptance. No automatic commits or lab operations.\n6: \n7: Framework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\n8: see [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\n9: Active work is reverse engineering. Change tooling only to unblock a named RE experiment.\n10: \n11: ## Contract format\n12: \n13: `contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\n14: The standard-library validator implements the schema's used subset. A populated example is\n15: [contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\n16: \n17: Required fields:\n18: \n19: | Field | Structure |\n20: |---|---|\n21: | `id`, `title`, `status` | Slug, short title, lifecycle state |\n22: | `owner` | `{ \"name\": \"worker-identity\", \"role\": \"implementer\" }` |\n23: | `baseline` | `{ \"engine\": {\"path\":\"/absolute/canonical/engine\",\"commit\":\"full-commit-id\"}, \"re\": {\"path\":\"/absolute/canonical/re\",\"commit\":\"full-commit-id\"} }` |\n24: | `scope`, `inputs`, `effects` | Arrays of explicit nonempty strings; include full write set and runtime inputs |\n25: | `original_dependencies` | String array, including original-assisted portions and unavailable inputs |\n26: | `dependencies` | Array of other contract IDs; all must be accepted before ready/implementing |\n27: | `acceptance` | Array of `{ \"id\": \"unique-criterion\", \"axis\": \"validation-scope\", \"criterion\": \"executable requirement\" }` |\n28: | `predictions`, `stop_conditions` | String arrays of predictions and conditions that halt work |\n29: | `checkpoint` | `null` or `campaign/runtime/checkpoints/.json` |\n30: \n31: Optional `evidence` is an array of\n32: `{id,axis,path,sha256,source,integrated,source_binding,binaries,inputs,outcomes}`.\n33: `path` is an existing canonical RE-relative artifact; `sha256` hashes its actual bytes; `source`\n34: equals the contract's complete baseline object. Store understanding,\n35: implementation, original dependencies, and validation scope as separate acceptance/evidence axes.\n36: There is no generic `verified` scalar. Baseline commit IDs describe starting repositories;\n37: dirty source identity is machine-bound by `source_binding`, never inferred from those commits.\n38: Criteria need distinct states, branch exposure, positive execution, complete writes/elements,\n39: allocations/IDs/events/RNG/runtime inputs, synthetic and original-game differentials as applicable.\n40: The CLI checks package identity and declared axes; the independent reviewer evaluates the actual\n41: criteria, gate outcomes, full manifests and integrated reproduction. A passing measurement alone\n42: does not establish acceptance.\n43: \n44: ### Source-bound evidence interface (R4)\n45: \n46: `source_binding` is `{engine:{path,commit,sha256},re:{path,commit,sha256}}`. Generate it with:\n47: \n48: ```sh\n49: python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-replacement --engine-worktree /absolute/candidate-engine --re-worktree /absolute/candidate-re\n50: ```\n51: \n52: Omit both worktree arguments to bind the canonical integrated trees. Paths must be Git worktree\n53: roots in the respective baseline repositories. `commit` is the actual current HEAD; `sha256`\n54: is the deterministic digest of the actual file manifest, including dirty/untracked nonignored\n55: files, deleted tracked paths (`null`), file bytes and Unix modes. Symlinks/submodules fail closed.\n56: The fixed manifest policy uses `git ls-files --cached --others --exclude-standard`; ignored\n57: untracked build/output files are not source. Python cache directories are excluded. In RE only,\n58: `verify/results/` and `campaign/` are excluded **except** `campaign/models.json`,\n59: `campaign/contract.schema.json`, and `campaign/agents/**`. These exclusions prevent mutable\n60: contracts/checkpoints/evidence/projections from hashing themselves. Relevant RE tools, tests,\n61: generated facts and guides remain bound. Any consumed item outside that source inventory must\n62: appear among immutable input/binary artifacts. The independent reviewer checks inventory adequacy.\n63: \n64: `binaries` and `inputs` are nonempty arrays of `{path,sha256}` artifact references; for tooling\n65: contracts, bind the executable scripts/interpreter identity package and fixture input package.\n66: `outcomes` exactly covers the acceptance criterion IDs for that evidence axis, with entries\n67: `{criterion,status,artifact:{path,sha256}}`; promotion requires `status: \"pass\"`. Outcome artifacts\n68: contain positive execution, branch/state exposures, reproduction recipe and required effect/input\n69: accounting. The CLI checks identities, hashes and declared outcomes, **not arbitrary criterion\n70: semantics**. The independent verifier must reproduce and challenge those claims.\n71: \n72: For example, an outcome for the bootstrap contract is:\n73: \n74: ```json\n75: {\"criterion\":\"controls-negative-paths\",\"status\":\"pass\",\"artifact\":{\"path\":\"verify/results/controls/result.json\",\"sha256\":\"\"}}\n76: ```\n77: \n78: Capture bindings when producing evidence; do not attach a fresh source hash to old measurements.\n79: Every evidence/verdict/promotion check rehashes referenced sources and artifacts. Same-HEAD byte\n80: changes reject old evidence and verdicts. Integrated records require canonical paths, lead in\n81: integration state, and one identical binding across **all** final integrated evidence. A lead's\n82: `integrated` boolean cannot substitute for this check. Verdicts bind the full evidence array and\n83: the source-binding array; old verdicts lacking these identities must be reproduced.\n84: \n85: This contract wrapper is separate from gate measurement schema **`sots-gate/1`**, whose `source`\n86: still has `engine`/`re`. Reference its immutable manifest/binary/input package; do not rename its\n87: fields to match contract `source`. Reporter output is measured evidence, with `--require-match`\n88: for required equality, and gains acceptance only through independent contract/integration gates.\n89: \n90: ## State and transactions\n91: \n92: Every command requires `--state-root /absolute/canonical/sots-re` (the repository, not `campaign/`).\n93: No sibling inference. Control records stay below canonical `campaign/runtime/`; contracts remain\n94: in `campaign/contracts/`. Immutable hashed artifacts may be referenced anywhere inside canonical\n95: RE, including existing `verify/` corpora, without copying them. Absolute/traversing artifact paths,\n96: outside symlinks, Git internals and named secret/private-key locations are rejected; aliases are\n97: checked after resolution too. Never reference secrets or commit owner-supplied binaries/assets.\n98: JSON writes are atomic and fsynced; a canonical `flock` serializes\n99: CLI mutations, WIP decisions, and resource acquisition. Do not hand-edit active state concurrently\n100: with commands. Interrupted multi-file operations retain blocking records and require inspection.\n101: \n102: Runtime APIs (JSON files; no server):\n103: \n104: - `runtime/checkpoints/*.json`: `sots-checkpoint/1`, contract, actor/role/model/session, timestamp,\n105: contract `basis` digest, bounded summary (6000 characters), up to 32 `{path,sha256}` artifacts,\n106: and one `next_action` (2000 characters). Include observations versus decisions, source identities,\n107: tests, blockers, resources/access/cleanup, exact next action in the summary/artifacts.\n108: Do not attach the checkpoint's own contract as an artifact: saving the pointer changes that\n109: file. Its task metadata is already covered by `basis`; the CLI rejects this self-reference.\n110: - `runtime/surprises/*.json`: `sots-surprise/1`, id, contract, `status: open|resolved`, summary,\n111: discriminating probe, actor/model/session provenance where applicable, optional decision ID.\n112: - `runtime/decisions/*.json`: `sots-decision/1`, Astra resolution, explanation/probe, invalidated\n113: evidence and checkpoint; prior verdict is marked invalidated. Resolution returns needs-revision\n114: only when all surprises are closed. Re-probe and rebuild evidence; resolution is not acceptance.\n115: - `runtime/verdicts/.json`: independent verifier actor/session/model, pass/fail,\n116: explanation, contract basis, complete evidence digest and source-bindings digest.\n117: - `runtime/transitions/*.json`: actor/model, previous/next lifecycle state, timestamp.\n118: - `runtime/leases/.json`: owner, random token, held/released, acquisition/release provenance.\n119: - `runtime/runs/run-*.json`, `.jsonl`, `.stderr.log`: requested model/config, command, worktree\n120: manifests before/after, expanded prompt hash, effective configuration hashes, canonical config\n121: file hashes, actual events/session/model when emitted, completion/checkpoint status. Effective\n122: provider config is hashed rather than persisted because it can contain credentials.\n123: `active-.json` reserves the contract. Interrupted running reservations never auto-expire.\n124: \n125: Lifecycle: `proposed -> ready -> implementing -> verification -> integration -> accepted`.\n126: Blocked and needs-revision edges support repairs; no skipping stages. Ready requires scope,\n127: inputs, acceptance, stop conditions, valid pinned baseline and accepted dependencies. Implementing\n128: is atomically capped at two concurrent contracts; lead schedules only one pilot before enabling\n129: two independent slices. Verification requires fresh checkpoint/artifacts after implementation start.\n130: Integration requires lead plus independent passing verifier bound to current source/evidence.\n131: Accepted requires every declared axis in integrated evidence, passing independent verdict over\n132: that final package, and no open surprises. Adding integrated evidence changes the evidence digest:\n133: the verifier must attest the integrated package again. Handoff/promotion/end checkpoints must be\n134: within 15 minutes; recovery start has no age limit.\n135: \n136: Role/model registry: lead/architecture-review/analyst/implementer/verifier/lab =\n137: `openai/gpt-5.6-sol`; resolver = `openai/gpt-6-astra`.\n138: CLI identity fields are **claims, not authenticated model authority**. The runner requests the\n139: registry model explicitly and records emitted provenance. Editable JSON, agent permissions and\n140: shell-accessible tooling are not a security boundary. No silent routing fallback.\n141: \n142: ## Commands\n143: \n144: Run from either repository using the canonical tool path when necessary. Examples:\n145: \n146: ```sh\n147: python3 tools/campaign.py --state-root /home/alex/sots-re validate\n148: python3 tools/campaign.py --state-root /home/alex/sots-re list\n149: python3 tools/campaign.py --state-root /home/alex/sots-re status research-replacement\n150: python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint controls-bootstrap --actor controls-architect --role architecture-review --model openai/gpt-6-astra --session rollout-controls --summary 'Source identities, observations, decisions, tests and blockers are in the attached checkpoint.' --artifact campaign/rollout/controls-worker-state.md --next-action 'Run the independent controls review.'\n151: python3 tools/campaign.py --state-root /home/alex/sots-re transition controls-bootstrap ready --actor controls-architect --role architecture-review --model openai/gpt-6-astra\n152: ```\n153: \n154: `surprise CONTRACT --summary TEXT --probe TEXT` blocks immediately. `resolve SURPRISE_ID\n155: --explanation TEXT --probe TEXT` requires claimed Astra lead/resolver. Both also require\n156: `--actor NAME --role ROLE --model MODEL`. `evidence CONTRACT --record campaign/path.json`\n157: uses the same identity flags; record format is the evidence object above. Integrated records\n158: require lead and integration state. `verdict CONTRACT --session SESSION --verdict pass|fail\n159: --explanation TEXT` requires verifier identity flags and independent actor/session.\n160: \n161: ```sh\n162: python3 tools/campaign.py --state-root /home/alex/sots-re lease acquire windows-vm --actor lab-one --role lab --model openai/gpt-5.5\n163: python3 tools/campaign.py --state-root /home/alex/sots-re lease show windows-vm\n164: python3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lab-one --role lab --model openai/gpt-5.5 --token TOKEN_FROM_ACQUIRE\n165: python3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lead --role lead --model openai/gpt-6-astra --lead-release --reason 'Confirmed prior operator stopped; access and cleanup checked.'\n166: ```\n167: \n168: No stale lease stealing. Explicit lead release requires an explanation and lab preconditions,\n169: side effects, cleanup, and access verification in the operator checkpoint. Treat lease tokens\n170: as local owner capabilities, not secrets to put in a board/dashboard.\n171: \n172: ## Fresh bounded launches\n173: \n174: Prepare **two actual linked worktrees**, each distinct from its canonical source repository,\n175: at the contract's full baseline commit. No auto commits/worktree creation. Launch uses explicit\n176: canonical `OPENCODE_CONFIG`, checks matching repo-local agent/model/40 steps, and sets the final\n177: environment overlay to bind requested role/model/steps. Other inherited config overrides are\n178: cleared. `opencode models` must list the exact requested model even for dry runs.\n179: \n180: ```sh\n181: python3 tools/run_agent.py --state-root /home/alex/sots-re --role implementer --actor worker-one --contract slice-one --engine-worktree /home/alex/worktrees/slice-one-engine --re-worktree /home/alex/worktrees/slice-one-re --cwd engine --dry-run\n182: ```\n183: \n184: Remove `--dry-run` to execute. Normal worker launch requires a valid durable checkpoint, matching\n185: owner/role/status, no open surprises, baseline HEADs and canonical Git common-directory identity.\n186: Recovery checks checkpoint identity/basis and artifact hashes regardless of age, rechecks any\n187: source-bound evidence, and validates paired Git worktree/baseline identity. Missing ordinary-worker\n188: state still blocks. Bootstrap lead/architecture-review can start without a checkpoint; they still\n189: need paired worktrees. Astra lead/resolver may launch a blocked contract with open surprises and\n190: without a worker checkpoint in **resolution-only** scope: read evidence and write decisions/state,\n191: no implementation. Its prompt and permission overlay carry that limit, and worktree source changes\n192: fail completion. Ordinary affected workers stay blocked. Other Astra architecture actors receive\n193: explicit architecture authority within their owned scope. Each run is a fresh\n194: `opencode run --format json --model ... --agent ...`; no resume/continue option is used. The prompt\n195: supplies the run ID to use as checkpoint `--session`; actual OpenCode session IDs are captured\n196: separately when emitted. On exit, a checkpoint after start matching actor/role/model/run ID is\n197: mandatory or the run is marked incomplete. Completion additionally requires a zero exit, no\n198: `type:error`, a successful `step_finish` with `part.reason: \"stop\"`, one nonempty actual session ID,\n199: and consistent explicitly emitted model IDs. Text/tool-call/length events alone cannot complete a\n200: run. Missing model emission is recorded `observed_model_status: \"unavailable\"`, never invented.\n201: \n202: The runner checks the exact Git baseline again under reservation lock, rejects intervening contract\n203: changes, and checks canonical model/prompt/config files and effective configuration for drift at\n204: completion. Expanded role prompt/model/steps are frozen in the last-layer environment overlay.\n205: `opencode debug config` runs in the actual launch cwd with the actual environment before execution\n206: and again at completion. Permissions explicitly allow read/search, ordinary worker shell commands,\n207: and external-directory access to the assigned paired trees plus canonical RE; role-specific edit\n208: denies survive. Task delegation and interactive questions are denied. No `--auto` is required.\n209: Noninteractive command/environment tests and a live loader check cover this overlay; an actual\n210: normal worker launch smoke is a separate lead integration check. Permissions and before/after\n211: checks are operational guards, not a sandbox or continuous filesystem audit.\n212: Compaction is a backstop; no token threshold or machine-enforced 20-tool-call claim.\n213: \n214: ## Local verification\n215: \n216: ```sh\n217: python3 -m unittest discover -s verify/campaign -p 'test_*.py' -v\n218: python3 tools/campaign.py --state-root /home/alex/sots-re validate\n219: ```\n220: \n221: Tests create commits only in disposable fixture repositories, linked worktrees and fake OpenCode processes; they do\n222: not launch agents or touch the lab. Historical rollout artifacts retain the scope and source identity\n223: of their runs; consult the accepted contract and current evidence, not an old handoff's status prose.\n\n(End of file - total 223 lines)\n","metadata":{"preview":"# Canonical campaign controls\n\n`sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\nsurprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\nprojections. Historical evidence is not current acceptance. No automatic commits or lab operations.\n\nFramework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\nsee [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\nActive work is reverse engineering. Change tooling only to unblock a named RE experiment.\n\n## Contract format\n\n`contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\nThe standard-library validator implements the schema's used subset. A populated example is\n[contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\n\nRequired fields:\n\n| Field | Structure |\n|---|---|","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/README.md","text":"# Canonical campaign controls\n\n`sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\nsurprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\nprojections. Historical evidence is not current acceptance. No automatic commits or lab operations.\n\nFramework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\nsee [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\nActive work is reverse engineering. Change tooling only to unblock a named RE experiment.\n\n## Contract format\n\n`contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\nThe standard-library validator implements the schema's used subset. A populated example is\n[contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\n\nRequired fields:\n\n| Field | Structure |\n|---|---|\n| `id`, `title`, `status` | Slug, short title, lifecycle state |\n| `owner` | `{ \"name\": \"worker-identity\", \"role\": \"implementer\" }` |\n| `baseline` | `{ \"engine\": {\"path\":\"/absolute/canonical/engine\",\"commit\":\"full-commit-id\"}, \"re\": {\"path\":\"/absolute/canonical/re\",\"commit\":\"full-commit-id\"} }` |\n| `scope`, `inputs`, `effects` | Arrays of explicit nonempty strings; include full write set and runtime inputs |\n| `original_dependencies` | String array, including original-assisted portions and unavailable inputs |\n| `dependencies` | Array of other contract IDs; all must be accepted before ready/implementing |\n| `acceptance` | Array of `{ \"id\": \"unique-criterion\", \"axis\": \"validation-scope\", \"criterion\": \"executable requirement\" }` |\n| `predictions`, `stop_conditions` | String arrays of predictions and conditions that halt work |\n| `checkpoint` | `null` or `campaign/runtime/checkpoints/.json` |\n\nOptional `evidence` is an array of\n`{id,axis,path,sha256,source,integrated,source_binding,binaries,inputs,outcomes}`.\n`path` is an existing canonical RE-relative artifact; `sha256` hashes its actual bytes; `source`\nequals the contract's complete baseline object. Store understanding,\nimplementation, original dependencies, and validation scope as separate acceptance/evidence axes.\nThere is no generic `verified` scalar. Baseline commit IDs describe starting repositories;\ndirty source identity is machine-bound by `source_binding`, never inferred from those commits.\nCriteria need distinct states, branch exposure, positive execution, complete writes/elements,\nallocations/IDs/events/RNG/runtime inputs, synthetic and original-game differentials as applicable.\nThe CLI checks package identity and declared axes; the independent reviewer evaluates the actual\ncriteria, gate outcomes, full manifests and integrated reproduction. A passing measurement alone\ndoes not establish acceptance.\n\n### Source-bound evidence interface (R4)\n\n`source_binding` is `{engine:{path,commit,sha256},re:{path,commit,sha256}}`. Generate it with:\n\n```sh\npython3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-replacement --engine-worktree /absolute/candidate-engine --re-worktree /absolute/candidate-re\n```\n\nOmit both worktree arguments to bind the canonical integrated trees. Paths must be Git worktree\nroots in the respective baseline repositories. `commit` is the actual current HEAD; `sha256`\nis the deterministic digest of the actual file manifest, including dirty/untracked nonignored\nfiles, deleted tracked paths (`null`), file bytes and Unix modes. Symlinks/submodules fail closed.\nThe fixed manifest policy uses `git ls-files --cached --others --exclude-standard`; ignored\nuntracked build/output files are not source. Python cache directories are excluded. In RE only,\n`verify/results/` and `campaign/` are excluded **except** `campaign/models.json`,\n`campaign/contract.schema.json`, and `campaign/agents/**`. These exclusions prevent mutable\ncontracts/checkpoints/evidence/projections from hashing themselves. Relevant RE tools, tests,\ngenerated facts and guides remain bound. Any consumed item outside that source inventory must\nappear among immutable input/binary artifacts. The independent reviewer checks inventory adequacy.\n\n`binaries` and `inputs` are nonempty arrays of `{path,sha256}` artifact references; for tooling\ncontracts, bind the executable scripts/interpreter identity package and fixture input package.\n`outcomes` exactly covers the acceptance criterion IDs for that evidence axis, with entries\n`{criterion,status,artifact:{path,sha256}}`; promotion requires `status: \"pass\"`. Outcome artifacts\ncontain positive execution, branch/state exposures, reproduction recipe and required effect/input\naccounting. The CLI checks identities, hashes and declared outcomes, **not arbitrary criterion\nsemantics**. The independent verifier must reproduce and challenge those claims.\n\nFor example, an outcome for the bootstrap contract is:\n\n```json\n{\"criterion\":\"controls-negative-paths\",\"status\":\"pass\",\"artifact\":{\"path\":\"verify/results/controls/result.json\",\"sha256\":\"\"}}\n```\n\nCapture bindings when producing evidence; do not attach a fresh source hash to old measurements.\nEvery evidence/verdict/promotion check rehashes referenced sources and artifacts. Same-HEAD byte\nchanges reject old evidence and verdicts. Integrated records require canonical paths, lead in\nintegration state, and one identical binding across **all** final integrated evidence. A lead's\n`integrated` boolean cannot substitute for this check. Verdicts bind the full evidence array and\nthe source-binding array; old verdicts lacking these identities must be reproduced.\n\nThis contract wrapper is separate from gate measurement schema **`sots-gate/1`**, whose `source`\nstill has `engine`/`re`. Reference its immutable manifest/binary/input package; do not rename its\nfields to match contract `source`. Reporter output is measured evidence, with `--require-match`\nfor required equality, and gains acceptance only through independent contract/integration gates.\n\n## State and transactions\n\nEvery command requires `--state-root /absolute/canonical/sots-re` (the repository, not `campaign/`).\nNo sibling inference. Control records stay below canonical `campaign/runtime/`; contracts remain\nin `campaign/contracts/`. Immutable hashed artifacts may be referenced anywhere inside canonical\nRE, including existing `verify/` corpora, without copying them. Absolute/traversing artifact paths,\noutside symlinks, Git internals and named secret/private-key locations are rejected; aliases are\nchecked after resolution too. Never reference secrets or commit owner-supplied binaries/assets.\nJSON writes are atomic and fsynced; a canonical `flock` serializes\nCLI mutations, WIP decisions, and resource acquisition. Do not hand-edit active state concurrently\nwith commands. Interrupted multi-file operations retain blocking records and require inspection.\n\nRuntime APIs (JSON files; no server):\n\n- `runtime/checkpoints/*.json`: `sots-checkpoint/1`, contract, actor/role/model/session, timestamp,\n contract `basis` digest, bounded summary (6000 characters), up to 32 `{path,sha256}` artifacts,\n and one `next_action` (2000 characters). Include observations versus decisions, source identities,\n tests, blockers, resources/access/cleanup, exact next action in the summary/artifacts.\n Do not attach the checkpoint's own contract as an artifact: saving the pointer changes that\n file. Its task metadata is already covered by `basis`; the CLI rejects this self-reference.\n- `runtime/surprises/*.json`: `sots-surprise/1`, id, contract, `status: open|resolved`, summary,\n discriminating probe, actor/model/session provenance where applicable, optional decision ID.\n- `runtime/decisions/*.json`: `sots-decision/1`, Astra resolution, explanation/probe, invalidated\n evidence and checkpoint; prior verdict is marked invalidated. Resolution returns needs-revision\n only when all surprises are closed. Re-probe and rebuild evidence; resolution is not acceptance.\n- `runtime/verdicts/.json`: independent verifier actor/session/model, pass/fail,\n explanation, contract basis, complete evidence digest and source-bindings digest.\n- `runtime/transitions/*.json`: actor/model, previous/next lifecycle state, timestamp.\n- `runtime/leases/.json`: owner, random token, held/released, acquisition/release provenance.\n- `runtime/runs/run-*.json`, `.jsonl`, `.stderr.log`: requested model/config, command, worktree\n manifests before/after, expanded prompt hash, effective configuration hashes, canonical config\n file hashes, actual events/session/model when emitted, completion/checkpoint status. Effective\n provider config is hashed rather than persisted because it can contain credentials.\n `active-.json` reserves the contract. Interrupted running reservations never auto-expire.\n\nLifecycle: `proposed -> ready -> implementing -> verification -> integration -> accepted`.\nBlocked and needs-revision edges support repairs; no skipping stages. Ready requires scope,\ninputs, acceptance, stop conditions, valid pinned baseline and accepted dependencies. Implementing\nis atomically capped at two concurrent contracts; lead schedules only one pilot before enabling\ntwo independent slices. Verification requires fresh checkpoint/artifacts after implementation start.\nIntegration requires lead plus independent passing verifier bound to current source/evidence.\nAccepted requires every declared axis in integrated evidence, passing independent verdict over\nthat final package, and no open surprises. Adding integrated evidence changes the evidence digest:\nthe verifier must attest the integrated package again. Handoff/promotion/end checkpoints must be\nwithin 15 minutes; recovery start has no age limit.\n\nRole/model registry: lead/architecture-review/analyst/implementer/verifier/lab =\n`openai/gpt-5.6-sol`; resolver = `openai/gpt-6-astra`.\nCLI identity fields are **claims, not authenticated model authority**. The runner requests the\nregistry model explicitly and records emitted provenance. Editable JSON, agent permissions and\nshell-accessible tooling are not a security boundary. No silent routing fallback.\n\n## Commands\n\nRun from either repository using the canonical tool path when necessary. Examples:\n\n```sh\npython3 tools/campaign.py --state-root /home/alex/sots-re validate\npython3 tools/campaign.py --state-root /home/alex/sots-re list\npython3 tools/campaign.py --state-root /home/alex/sots-re status research-replacement\npython3 tools/campaign.py --state-root /home/alex/sots-re checkpoint controls-bootstrap --actor controls-architect --role architecture-review --model openai/gpt-6-astra --session rollout-controls --summary 'Source identities, observations, decisions, tests and blockers are in the attached checkpoint.' --artifact campaign/rollout/controls-worker-state.md --next-action 'Run the independent controls review.'\npython3 tools/campaign.py --state-root /home/alex/sots-re transition controls-bootstrap ready --actor controls-architect --role architecture-review --model openai/gpt-6-astra\n```\n\n`surprise CONTRACT --summary TEXT --probe TEXT` blocks immediately. `resolve SURPRISE_ID\n--explanation TEXT --probe TEXT` requires claimed Astra lead/resolver. Both also require\n`--actor NAME --role ROLE --model MODEL`. `evidence CONTRACT --record campaign/path.json`\nuses the same identity flags; record format is the evidence object above. Integrated records\nrequire lead and integration state. `verdict CONTRACT --session SESSION --verdict pass|fail\n--explanation TEXT` requires verifier identity flags and independent actor/session.\n\n```sh\npython3 tools/campaign.py --state-root /home/alex/sots-re lease acquire windows-vm --actor lab-one --role lab --model openai/gpt-5.5\npython3 tools/campaign.py --state-root /home/alex/sots-re lease show windows-vm\npython3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lab-one --role lab --model openai/gpt-5.5 --token TOKEN_FROM_ACQUIRE\npython3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lead --role lead --model openai/gpt-6-astra --lead-release --reason 'Confirmed prior operator stopped; access and cleanup checked.'\n```\n\nNo stale lease stealing. Explicit lead release requires an explanation and lab preconditions,\nside effects, cleanup, and access verification in the operator checkpoint. Treat lease tokens\nas local owner capabilities, not secrets to put in a board/dashboard.\n\n## Fresh bounded launches\n\nPrepare **two actual linked worktrees**, each distinct from its canonical source repository,\nat the contract's full baseline commit. No auto commits/worktree creation. Launch uses explicit\ncanonical `OPENCODE_CONFIG`, checks matching repo-local agent/model/40 steps, and sets the final\nenvironment overlay to bind requested role/model/steps. Other inherited config overrides are\ncleared. `opencode models` must list the exact requested model even for dry runs.\n\n```sh\npython3 tools/run_agent.py --state-root /home/alex/sots-re --role implementer --actor worker-one --contract slice-one --engine-worktree /home/alex/worktrees/slice-one-engine --re-worktree /home/alex/worktrees/slice-one-re --cwd engine --dry-run\n```\n\nRemove `--dry-run` to execute. Normal worker launch requires a valid durable checkpoint, matching\nowner/role/status, no open surprises, baseline HEADs and canonical Git common-directory identity.\nRecovery checks checkpoint identity/basis and artifact hashes regardless of age, rechecks any\nsource-bound evidence, and validates paired Git worktree/baseline identity. Missing ordinary-worker\nstate still blocks. Bootstrap lead/architecture-review can start without a checkpoint; they still\nneed paired worktrees. Astra lead/resolver may launch a blocked contract with open surprises and\nwithout a worker checkpoint in **resolution-only** scope: read evidence and write decisions/state,\nno implementation. Its prompt and permission overlay carry that limit, and worktree source changes\nfail completion. Ordinary affected workers stay blocked. Other Astra architecture actors receive\nexplicit architecture authority within their owned scope. Each run is a fresh\n`opencode run --format json --model ... --agent ...`; no resume/continue option is used. The prompt\nsupplies the run ID to use as checkpoint `--session`; actual OpenCode session IDs are captured\nseparately when emitted. On exit, a checkpoint after start matching actor/role/model/run ID is\nmandatory or the run is marked incomplete. Completion additionally requires a zero exit, no\n`type:error`, a successful `step_finish` with `part.reason: \"stop\"`, one nonempty actual session ID,\nand consistent explicitly emitted model IDs. Text/tool-call/length events alone cannot complete a\nrun. Missing model emission is recorded `observed_model_status: \"unavailable\"`, never invented.\n\nThe runner checks the exact Git baseline again under reservation lock, rejects intervening contract\nchanges, and checks canonical model/prompt/config files and effective configuration for drift at\ncompletion. Expanded role prompt/model/steps are frozen in the last-layer environment overlay.\n`opencode debug config` runs in the actual launch cwd with the actual environment before execution\nand again at completion. Permissions explicitly allow read/search, ordinary worker shell commands,\nand external-directory access to the assigned paired trees plus canonical RE; role-specific edit\ndenies survive. Task delegation and interactive questions are denied. No `--auto` is required.\nNoninteractive command/environment tests and a live loader check cover this overlay; an actual\nnormal worker launch smoke is a separate lead integration check. Permissions and before/after\nchecks are operational guards, not a sandbox or continuous filesystem audit.\nCompaction is a backstop; no token threshold or machine-enforced 20-tool-call claim.\n\n## Local verification\n\n```sh\npython3 -m unittest discover -s verify/campaign -p 'test_*.py' -v\npython3 tools/campaign.py --state-root /home/alex/sots-re validate\n```\n\nTests create commits only in disposable fixture repositories, linked worktrees and fake OpenCode processes; they do\nnot launch agents or touch the lab. Historical rollout artifacts retain the scope and source identity\nof their runs; consult the accepted contract and current evidence, not an old handoff's status prose.","lineStart":1,"lineEnd":223,"totalLines":223,"truncated":false}},"title":"campaign/README.md","time":{"start":1789017806046,"end":1789017806053}},"metadata":{"openai":{"itemId":"fc_0fcee9cc2c8c9f87016aa23ecd1ea087d1a609ea80049e6a5d"}},"id":"prt_089c55412001LYSHfg1R9Jeolr","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5349b001CxSpZjTi1I9iht"}} +{"type":"tool_use","timestamp":1789017806300,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_bgPpwBpp22o6z2Cqo2Wiszyo","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/contracts/research-completion-abi.json"},"output":"/home/alex/sots-re/campaign/contracts/research-completion-abi.json\nfile\n\n1: {\n2: \"acceptance\": [\n3: {\n4: \"axis\": \"static-recovery\",\n5: \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n6: \"id\": \"ownership-recovered\"\n7: },\n8: {\n9: \"axis\": \"validation\",\n10: \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n11: \"id\": \"independent-cross-check\"\n12: }\n13: ],\n14: \"baseline\": {\n15: \"engine\": {\n16: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n17: \"path\": \"/home/alex/sots-engine\"\n18: },\n19: \"re\": {\n20: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n21: \"path\": \"/home/alex/sots-re\"\n22: }\n23: },\n24: \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\",\n25: \"dependencies\": [\n26: \"controls-bootstrap\"\n27: ],\n28: \"effects\": [\n29: \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n30: ],\n31: \"evidence\": [],\n32: \"id\": \"research-completion-abi\",\n33: \"inputs\": [\n34: \"Existing binary fingerprint/address contract and private RE findings\",\n35: \"Owner-supplied binary or live read-only ReVa endpoint\",\n36: \"Archived CR traces/saves for observed behavior\",\n37: \"Source-identical current engine/RE worktree snapshots\"\n38: ],\n39: \"original_dependencies\": [\n40: \"Original binary is the object of analysis, not a replacement dependency decision\"\n41: ],\n42: \"owner\": {\n43: \"name\": \"research-abi-analyst\",\n44: \"role\": \"analyst\"\n45: },\n46: \"predictions\": [\n47: \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n48: \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n49: ],\n50: \"scope\": [\n51: \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n52: \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n53: \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n54: \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n55: \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n56: ],\n57: \"status\": \"verification\",\n58: \"stop_conditions\": [\n59: \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n60: \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n61: \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n62: ],\n63: \"title\": \"RE: research completion record construction and allocator ABI\"\n64: }\n\n(End of file - total 64 lines)\n","metadata":{"preview":"{\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/contracts/research-completion-abi.json","text":"{\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"verification\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n}","lineStart":1,"lineEnd":64,"totalLines":64,"truncated":false}},"title":"campaign/contracts/research-completion-abi.json","time":{"start":1789017806288,"end":1789017806297}},"metadata":{"openai":{"itemId":"fc_0fcee9cc2c8c9f87016aa23ecd1ea887d1ab1478b4796f1ca4"}},"id":"prt_089c554f1001ARMNcZ35vREFMB","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5349b001CxSpZjTi1I9iht"}} +{"type":"tool_use","timestamp":1789017806357,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_eU8preqPnFPdjI6mWKVWwMtj","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json"},"output":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\nfile\n\n1: {\n2: \"actor\": \"campaign-lead\",\n3: \"artifacts\": [\n4: {\n5: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n6: \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n7: },\n8: {\n9: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md\",\n10: \"sha256\": \"6e74ff0197adc6c97f5924ad3f973d5e8922f1480268d1c96dac3dd89000e38f\"\n11: },\n12: {\n13: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\",\n14: \"sha256\": \"66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1\"\n15: }\n16: ],\n17: \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n18: \"contract\": \"research-completion-abi\",\n19: \"id\": \"63895701b38ae7ffac31aaed\",\n20: \"model\": \"openai/gpt-5.6-sol\",\n21: \"next_action\": \"Launch research-abi-correction-verifier in a fresh bounded verifier session to reproduce the package independently and execute its falsifiers.\",\n22: \"role\": \"lead\",\n23: \"schema\": \"sots-checkpoint/1\",\n24: \"session\": \"lead-verifier-handoff-41a6840\",\n25: \"summary\": \"Lead inspected analyst run run-9daf5c3b75547271d5c3b4ed and its current-session fail-if-exists capture. Twelve static captures succeeded; complete instruction boundaries and raw bytes correct the invalidated provenance without claiming runtime safety. Campaign validation and all 37 control tests pass. No lease or mutable lab resource is held.\",\n26: \"timestamp\": \"2026-09-10T05:07:46.089883+00:00\"\n27: }\n\n(End of file - total 27 lines)\n","metadata":{"preview":"{\n \"actor\": \"campaign-lead\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md\",\n \"sha256\": \"6e74ff0197adc6c97f5924ad3f973d5e8922f1480268d1c96dac3dd89000e38f\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\",\n \"sha256\": \"66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"63895701b38ae7ffac31aaed\",\n \"model\": \"openai/gpt-5.6-sol\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json","text":"{\n \"actor\": \"campaign-lead\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md\",\n \"sha256\": \"6e74ff0197adc6c97f5924ad3f973d5e8922f1480268d1c96dac3dd89000e38f\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\",\n \"sha256\": \"66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"63895701b38ae7ffac31aaed\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Launch research-abi-correction-verifier in a fresh bounded verifier session to reproduce the package independently and execute its falsifiers.\",\n \"role\": \"lead\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"lead-verifier-handoff-41a6840\",\n \"summary\": \"Lead inspected analyst run run-9daf5c3b75547271d5c3b4ed and its current-session fail-if-exists capture. Twelve static captures succeeded; complete instruction boundaries and raw bytes correct the invalidated provenance without claiming runtime safety. Campaign validation and all 37 control tests pass. No lease or mutable lab resource is held.\",\n \"timestamp\": \"2026-09-10T05:07:46.089883+00:00\"\n}","lineStart":1,"lineEnd":27,"totalLines":27,"truncated":false}},"title":"campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json","time":{"start":1789017806341,"end":1789017806355}},"metadata":{"openai":{"itemId":"fc_0fcee9cc2c8c9f87016aa23ecd1eb087d19048534bc1a2a049"}},"id":"prt_089c555d2001628QICBe2dArYj","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5349b001CxSpZjTi1I9iht"}} +{"type":"tool_use","timestamp":1789017806443,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"glob","callID":"call_o7uovDI0jp7tSZcJDQI41dqc","state":{"status":"completed","input":{"path":"/home/alex/sots-re/campaign","pattern":"**/*surprise*"},"output":"No files found","metadata":{"count":0,"truncated":false},"title":"campaign","time":{"start":1789017806399,"end":1789017806442}},"metadata":{"openai":{"itemId":"fc_0fcee9cc2c8c9f87016aa23ecd1eb887d1bf2764f6a4970351"}},"id":"prt_089c5560700104Q0E9WJKpv6IK","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5349b001CxSpZjTi1I9iht"}} +{"type":"step_finish","timestamp":1789017806604,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c55708001qSPyxZt81pcZNm","reason":"tool-calls","snapshot":"7ea0c45879383b8f4a3f93592a30c5766705faed","messageID":"msg_089c5349b001CxSpZjTi1I9iht","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":6349,"input":544,"output":173,"reasoning":0,"cache":{"write":0,"read":5632}},"cost":0}} +{"type":"step_start","timestamp":1789017808070,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c55cc2001zhNKkRzNyHPnaL","messageID":"msg_089c5573b001Xbxez2RRxUtL4U","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"e67d3a56e2918869581b0f0edcfdb4e235952498","type":"step-start"}} +{"type":"tool_use","timestamp":1789017823042,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_2WYsFtXOEJL8PzbDCIniNJZD","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises"},"output":"/home/alex/sots-re/campaign/runtime/surprises\ndirectory\n\ns-410e48d5ae6cc4da0a6ae649.json\ns-4a7d66ebd7d8a8f3ec59f11d.json\ns-4f4fb5e8ee42ccff7e68efb5.json\ns-4f71bf4a5df4e5fc992bb6b2.json\ns-5a78d3a0a10c1f8545df8eb1.json\ns-5c58b6a921997731f5b5ae1f.json\ns-6d1fcc617a20ca2bcbffc0cc.json\ns-8996365dab2cd6dc0e17bb9f.json\ns-abd1c3613c9922cc94c608d5.json\ns-c6786945b302de2a0b629960.json\ns-d2c8ec81e980396f2306f8fe.json\ns-d44b9f9e62272794d88bbed6.json\ns-f1c41532e618c77d41538902.json\n\n(13 entries)\n","metadata":{"preview":"s-410e48d5ae6cc4da0a6ae649.json\ns-4a7d66ebd7d8a8f3ec59f11d.json\ns-4f4fb5e8ee42ccff7e68efb5.json\ns-4f71bf4a5df4e5fc992bb6b2.json\ns-5a78d3a0a10c1f8545df8eb1.json\ns-5c58b6a921997731f5b5ae1f.json\ns-6d1fcc617a20ca2bcbffc0cc.json\ns-8996365dab2cd6dc0e17bb9f.json\ns-abd1c3613c9922cc94c608d5.json\ns-c6786945b302de2a0b629960.json\ns-d2c8ec81e980396f2306f8fe.json\ns-d44b9f9e62272794d88bbed6.json\ns-f1c41532e618c77d41538902.json","truncated":false,"loaded":[],"display":{"type":"directory","path":"/home/alex/sots-re/campaign/runtime/surprises","entries":["s-410e48d5ae6cc4da0a6ae649.json","s-4a7d66ebd7d8a8f3ec59f11d.json","s-4f4fb5e8ee42ccff7e68efb5.json","s-4f71bf4a5df4e5fc992bb6b2.json","s-5a78d3a0a10c1f8545df8eb1.json","s-5c58b6a921997731f5b5ae1f.json","s-6d1fcc617a20ca2bcbffc0cc.json","s-8996365dab2cd6dc0e17bb9f.json","s-abd1c3613c9922cc94c608d5.json","s-c6786945b302de2a0b629960.json","s-d2c8ec81e980396f2306f8fe.json","s-d44b9f9e62272794d88bbed6.json","s-f1c41532e618c77d41538902.json"],"offset":1,"totalEntries":13,"truncated":false}},"title":"campaign/runtime/surprises","time":{"start":1789017823035,"end":1789017823040}},"metadata":{"openai":{"itemId":"fc_04fa26c0a867aa2d016aa23edee84c87d1ac409b1546140d9f"}},"id":"prt_089c5972b001MTvGZV83wv3Yok","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5573b001Xbxez2RRxUtL4U"}} +{"type":"tool_use","timestamp":1789017823074,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_vgB5sgX62sxby28S2xwTiDW1","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/guides/multi-agent-workflow.md"},"output":"/home/alex/sots-re/guides/multi-agent-workflow.md\nfile\n\n1: # Multi-agent operating architecture\n2: \n3: ## Product and milestone\n4: \n5: Reconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\n6: milestone is standalone replay given a captured command stream and complete declared runtime\n7: inputs. The first workflow pilot is the complete research write set. A passing host build is a\n8: component baseline, not a playable engine or independent replacement.\n9: \n10: ## Source of truth\n11: \n12: `campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\n13: leases and surprises, and evidence packages identify inputs, source and executable artifacts.\n14: `campaign/current.json` selects published evidence by path and digest. Board/dashboard are\n15: generated projections, never alternate writable authorities. Exact tool CLI/schema is documented\n16: in `campaign/README.md`. Historical findings retain their original experiment scope; they are\n17: not promoted by copying an old status into a new contract.\n18: \n19: ## Model authority\n20: \n21: | Responsibility | Model |\n22: |---|---|\n23: | Normal planning, architecture and integration loop | GPT-5.6 Sol |\n24: | Bounded RE analysis, implementation and independent verification | GPT-5.6 Sol |\n25: | Routine lab/workload operations | GPT-5.6 Sol |\n26: | Problem and surprise resolution | GPT-6 Astra |\n27: | Context compaction | GPT-5.5 |\n28: \n29: Exact provider IDs are in `campaign/models.json`. The lead escalates to Astra when a falsified\n30: assumption, conflict, instrument effect, or scope change blocks the loop. No fallback is automatic. Model names in editable JSON are\n31: provenance, not authentication: launcher events and independent review support the record.\n32: Permissions reduce accidental role drift; unrestricted local shell access is not a sandbox.\n33: \n34: ## Behavioral slice\n35: \n36: The lead specifies a bounded input domain, full observable write set, dependencies, acceptance\n37: workloads and stop conditions. The analyst recovers behavior; the verifier specifies discriminating\n38: tests before implementation; the implementer changes engine/adapters; the lab operator captures\n39: controls; the verifier reproduces; the integrator tests the combined source snapshot.\n40: \n41: Include transitive effects: allocations, IDs, container ELEMENTS, event text/records, RNG and\n42: nonserialized state. An address/function name is not a sufficient replacement boundary. If a\n43: neighbor function supplies required effects, extend the approved contract or expose it as an\n44: original dependency. Do not call the original and label the result independent.\n45: \n46: Lifecycle is `proposed → ready → implementing → verification → integration → accepted`, with\n47: blocked/revision states. Lifecycle is distinct from evidence strength. Acceptance is scoped to\n48: the manifest's exact procedure and workloads, never universal correctness.\n49: \n50: ## Independence\n51: \n52: Verifier and implementer are different executions. Verification starts with the contract, raw\n53: evidence and reproduction recipe, not just the author's conclusion. Require one meaningful\n54: challenge: held-out state, boundary, negative control, ablation, or independent state accounting.\n55: Both synthetic tests and original-game experiments matter. Repeat-call volume cannot replace\n56: branch and distinct-state coverage. Null effects and zero executions must be distinguishable.\n57: \n58: ## Sessions and recovery\n59: \n60: At most two implementation slices after a single-slice pilot. No nested worker delegation.\n61: Paired worktrees isolate source changes; unique build directories isolate artifacts. Canonical\n62: RE runtime state remains explicit even when a worker runs in `/tmp` worktrees.\n63: \n64: Checkpoint every 20 calls or 15min; also before experiments, compaction, handoff and stopping.\n65: Record source identities, exact changed paths, commands/results, artifacts and hashes, open\n66: surprises, held leases, requested/observed model, session identity and exact next action. Avoid\n67: large prose histories: raw logs belong in evidence; the checkpoint is a bounded resumption record.\n68: \n69: The launcher caps a quantum at 40 agent steps. A new quantum starts fresh using contract and\n70: checkpoint. Auto-compaction with an ample reserved window and four retained turns is enabled.\n71: This is a best-effort context backstop; regular durable checkpoints and fresh quanta provide the\n72: actual recovery discipline. Never claim a model compacted merely because a setting exists.\n73: \n74: ## Surprises\n75: \n76: On a falsified prediction, contradictory claim, unexplained regression, instrument interference,\n77: or newly necessary dependency: record the observation and evidence; block affected work. Astra\n78: first checks the instrument and source identity, then marks claims surviving/qualified/overturned,\n79: chooses a discriminating experiment, and records the revised plan. Unaffected contracted work\n80: may continue. Updating a paragraph without invalidating affected acceptance is insufficient.\n81: \n82: ## Lab ownership\n83: \n84: Acquire a canonical resource lease before VM, build-host or Ghidra mutation. An expired timestamp\n85: does not authorize stealing a lease. The lead reconciles stale ownership with actual processes.\n86: Use one guest at a time for maintenance, capture before/after inventory, preserve access and\n87: runtime dependencies, and verify unattended console login plus authenticated administration.\n88: Reboots require a free guest and a recorded recovery path. Runtime/Ghidra changes are experiments\n89: with provenance, not undocumented preparatory steps.\n90: \n91: ## Gate and publication\n92: \n93: Run the local gate with explicit engine, corpus, new output directory and profile. It snapshots\n94: source, uses fresh builds, records manifests and runs the expected test inventory once. Host\n95: profile allows a named list of unavailable asset/trace tests and publishes them as limitations.\n96: Full acceptance requires the full profile and the slice-specific original oracle; no blanket\n97: waiver converts a host pass to fidelity. Standalone measurement may diverge; acceptance may not.\n98: \n99: The integrator alone selects current results after verifying their hashes and source binding.\n100: No percentages of LOC, mapped rows or closed leaves purport to measure engine completeness.\n101: Run failure and missing evidence are visible states. Old results remain historical, not current.\n\n(End of file - total 101 lines)\n","metadata":{"preview":"# Multi-agent operating architecture\n\n## Product and milestone\n\nReconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\nmilestone is standalone replay given a captured command stream and complete declared runtime\ninputs. The first workflow pilot is the complete research write set. A passing host build is a\ncomponent baseline, not a playable engine or independent replacement.\n\n## Source of truth\n\n`campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\nleases and surprises, and evidence packages identify inputs, source and executable artifacts.\n`campaign/current.json` selects published evidence by path and digest. Board/dashboard are\ngenerated projections, never alternate writable authorities. Exact tool CLI/schema is documented\nin `campaign/README.md`. Historical findings retain their original experiment scope; they are\nnot promoted by copying an old status into a new contract.\n\n## Model authority\n","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/guides/multi-agent-workflow.md","text":"# Multi-agent operating architecture\n\n## Product and milestone\n\nReconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\nmilestone is standalone replay given a captured command stream and complete declared runtime\ninputs. The first workflow pilot is the complete research write set. A passing host build is a\ncomponent baseline, not a playable engine or independent replacement.\n\n## Source of truth\n\n`campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\nleases and surprises, and evidence packages identify inputs, source and executable artifacts.\n`campaign/current.json` selects published evidence by path and digest. Board/dashboard are\ngenerated projections, never alternate writable authorities. Exact tool CLI/schema is documented\nin `campaign/README.md`. Historical findings retain their original experiment scope; they are\nnot promoted by copying an old status into a new contract.\n\n## Model authority\n\n| Responsibility | Model |\n|---|---|\n| Normal planning, architecture and integration loop | GPT-5.6 Sol |\n| Bounded RE analysis, implementation and independent verification | GPT-5.6 Sol |\n| Routine lab/workload operations | GPT-5.6 Sol |\n| Problem and surprise resolution | GPT-6 Astra |\n| Context compaction | GPT-5.5 |\n\nExact provider IDs are in `campaign/models.json`. The lead escalates to Astra when a falsified\nassumption, conflict, instrument effect, or scope change blocks the loop. No fallback is automatic. Model names in editable JSON are\nprovenance, not authentication: launcher events and independent review support the record.\nPermissions reduce accidental role drift; unrestricted local shell access is not a sandbox.\n\n## Behavioral slice\n\nThe lead specifies a bounded input domain, full observable write set, dependencies, acceptance\nworkloads and stop conditions. The analyst recovers behavior; the verifier specifies discriminating\ntests before implementation; the implementer changes engine/adapters; the lab operator captures\ncontrols; the verifier reproduces; the integrator tests the combined source snapshot.\n\nInclude transitive effects: allocations, IDs, container ELEMENTS, event text/records, RNG and\nnonserialized state. An address/function name is not a sufficient replacement boundary. If a\nneighbor function supplies required effects, extend the approved contract or expose it as an\noriginal dependency. Do not call the original and label the result independent.\n\nLifecycle is `proposed → ready → implementing → verification → integration → accepted`, with\nblocked/revision states. Lifecycle is distinct from evidence strength. Acceptance is scoped to\nthe manifest's exact procedure and workloads, never universal correctness.\n\n## Independence\n\nVerifier and implementer are different executions. Verification starts with the contract, raw\nevidence and reproduction recipe, not just the author's conclusion. Require one meaningful\nchallenge: held-out state, boundary, negative control, ablation, or independent state accounting.\nBoth synthetic tests and original-game experiments matter. Repeat-call volume cannot replace\nbranch and distinct-state coverage. Null effects and zero executions must be distinguishable.\n\n## Sessions and recovery\n\nAt most two implementation slices after a single-slice pilot. No nested worker delegation.\nPaired worktrees isolate source changes; unique build directories isolate artifacts. Canonical\nRE runtime state remains explicit even when a worker runs in `/tmp` worktrees.\n\nCheckpoint every 20 calls or 15min; also before experiments, compaction, handoff and stopping.\nRecord source identities, exact changed paths, commands/results, artifacts and hashes, open\nsurprises, held leases, requested/observed model, session identity and exact next action. Avoid\nlarge prose histories: raw logs belong in evidence; the checkpoint is a bounded resumption record.\n\nThe launcher caps a quantum at 40 agent steps. A new quantum starts fresh using contract and\ncheckpoint. Auto-compaction with an ample reserved window and four retained turns is enabled.\nThis is a best-effort context backstop; regular durable checkpoints and fresh quanta provide the\nactual recovery discipline. Never claim a model compacted merely because a setting exists.\n\n## Surprises\n\nOn a falsified prediction, contradictory claim, unexplained regression, instrument interference,\nor newly necessary dependency: record the observation and evidence; block affected work. Astra\nfirst checks the instrument and source identity, then marks claims surviving/qualified/overturned,\nchooses a discriminating experiment, and records the revised plan. Unaffected contracted work\nmay continue. Updating a paragraph without invalidating affected acceptance is insufficient.\n\n## Lab ownership\n\nAcquire a canonical resource lease before VM, build-host or Ghidra mutation. An expired timestamp\ndoes not authorize stealing a lease. The lead reconciles stale ownership with actual processes.\nUse one guest at a time for maintenance, capture before/after inventory, preserve access and\nruntime dependencies, and verify unattended console login plus authenticated administration.\nReboots require a free guest and a recorded recovery path. Runtime/Ghidra changes are experiments\nwith provenance, not undocumented preparatory steps.\n\n## Gate and publication\n\nRun the local gate with explicit engine, corpus, new output directory and profile. It snapshots\nsource, uses fresh builds, records manifests and runs the expected test inventory once. Host\nprofile allows a named list of unavailable asset/trace tests and publishes them as limitations.\nFull acceptance requires the full profile and the slice-specific original oracle; no blanket\nwaiver converts a host pass to fidelity. Standalone measurement may diverge; acceptance may not.\n\nThe integrator alone selects current results after verifying their hashes and source binding.\nNo percentages of LOC, mapped rows or closed leaves purport to measure engine completeness.\nRun failure and missing evidence are visible states. Old results remain historical, not current.","lineStart":1,"lineEnd":101,"totalLines":101,"truncated":false}},"title":"guides/multi-agent-workflow.md","time":{"start":1789017823064,"end":1789017823071}},"metadata":{"openai":{"itemId":"fc_04fa26c0a867aa2d016aa23edee85c87d182ece5e408febd89"}},"id":"prt_089c5973e001tBMZsXlqxQbytE","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5573b001Xbxez2RRxUtL4U"}} +{"type":"tool_use","timestamp":1789017823135,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_WkrCnEHWYZieyqkbehUfJMpS","state":{"status":"completed","input":{"filePath":"/tmp/opencode/sots-final-research-engine/docs/architecture.md"},"output":"/tmp/opencode/sots-final-research-engine/docs/architecture.md\nfile\n\n1: # Engine architecture and reconstruction contract\n2: \n3: ## Boundaries\n4: \n5: ```text\n6: owner assets / save / captured commands / explicit runtime inputs\n7: │\n8: mars I/O and game catalogs\n9: │\n10: game rules + typed simulation state/effects\n11: ┌──────┴──────┐\n12: app frontend shim adapters\n13: standalone turn original process\n14: └──────┬──────┘\n15: independent verification\n16: in sots-re\n17: ```\n18: \n19: - `mars/`: parsing, text, archives, serialization and RNG. No strategic decisions.\n20: - `game/`: catalogs and reusable rules/state transformations. No original-process pointers,\n21: Windows allocation assumptions, or direct UI/lab behavior.\n22: - `app/`: adapters from saved/explicit runtime inputs, command application, ordered phase\n23: orchestration and write-back. Reports distinguish evaluated/committed/blocked effects.\n24: - `shim/`: 32-bit live-process marshalling, ABI adapters and trace/compare/replace instrumentation.\n25: Original helper dependencies must be declared. Guards bound observed writes, not universal\n26: heap coverage. Comparing a copied original output is not an independent calculation.\n27: - `include/generated/`: generated facts/specification channels with RE provenance.\n28: - `tests/`: synthetic contract/boundary tests and external-data checks. A missing fixture is\n29: skipped explicitly; a configured but invalid fixture is a failure.\n30: \n31: ## Phase contract\n32: \n33: Every new or materially changed phase specifies:\n34: \n35: 1. Required inputs and their origin: serialized state, assets, captured commands, runtime-only\n36: state, or original helpers. Missing required inputs block commit; they are not implicit zero.\n37: 2. Ordered behavior, predicates, numeric precision and RNG word consumption.\n38: 3. Complete effects, including newly allocated objects, membership, IDs, event records and all\n39: container elements. A count/header change is not equivalent to producing the elements.\n40: 4. Supported domain and known unsupported cases, with executable preconditions where feasible.\n41: 5. Independent expected outputs and the workload/branch coverage needed to accept the claim.\n42: \n43: This is the contract for new work, not a claim that every existing partial phase already meets\n44: it. Existing approximations are tracked as dependencies in the RE campaign and retired by slice.\n45: \n46: ## State and time\n47: \n48: A save is not the entire runtime state. Replay must explicitly supply commands and any unsaved\n49: inputs needed by its scope. Generator state and ordering are part of the observable contract.\n50: Count actual generator words, including rejection draws and twists; administrative counters\n51: must not modify serialized RNG layout or values. Aggregate each leaf operation once; parent\n52: summary records must not double-count child effects.\n53: \n54: ## Verification and integration\n55: \n56: Use fresh source-bound builds. File bytes, inflated stream bytes, typed semantic state and\n57: gameplay behavior are different comparison surfaces and must be labelled separately. Roundtrip\n58: proves conservation on the sampled corpus, not correct interpretation of every possible field.\n59: Synthetic boundary tests complement real original-vs-new experiments. Accepted replacement\n60: requires positive execution evidence and no original execution performing the claimed work.\n61: \n62: Planning, model routing, checkpoints, resource leases, surprise resolution and result publication\n63: live only in `sots-re`. Architecture changes and plan-changing surprises require GPT-6 Astra.\n64: See that repository's `AGENTS.md`, `campaign/README.md`, and `guides/multi-agent-workflow.md`.\n\n(End of file - total 64 lines)\n","metadata":{"preview":"# Engine architecture and reconstruction contract\n\n## Boundaries\n\n```text\nowner assets / save / captured commands / explicit runtime inputs\n │\n mars I/O and game catalogs\n │\n game rules + typed simulation state/effects\n ┌──────┴──────┐\n app frontend shim adapters\n standalone turn original process\n └──────┬──────┘\n independent verification\n in sots-re\n```\n\n- `mars/`: parsing, text, archives, serialization and RNG. No strategic decisions.\n- `game/`: catalogs and reusable rules/state transformations. No original-process pointers,","truncated":false,"loaded":[],"display":{"type":"file","path":"/tmp/opencode/sots-final-research-engine/docs/architecture.md","text":"# Engine architecture and reconstruction contract\n\n## Boundaries\n\n```text\nowner assets / save / captured commands / explicit runtime inputs\n │\n mars I/O and game catalogs\n │\n game rules + typed simulation state/effects\n ┌──────┴──────┐\n app frontend shim adapters\n standalone turn original process\n └──────┬──────┘\n independent verification\n in sots-re\n```\n\n- `mars/`: parsing, text, archives, serialization and RNG. No strategic decisions.\n- `game/`: catalogs and reusable rules/state transformations. No original-process pointers,\n Windows allocation assumptions, or direct UI/lab behavior.\n- `app/`: adapters from saved/explicit runtime inputs, command application, ordered phase\n orchestration and write-back. Reports distinguish evaluated/committed/blocked effects.\n- `shim/`: 32-bit live-process marshalling, ABI adapters and trace/compare/replace instrumentation.\n Original helper dependencies must be declared. Guards bound observed writes, not universal\n heap coverage. Comparing a copied original output is not an independent calculation.\n- `include/generated/`: generated facts/specification channels with RE provenance.\n- `tests/`: synthetic contract/boundary tests and external-data checks. A missing fixture is\n skipped explicitly; a configured but invalid fixture is a failure.\n\n## Phase contract\n\nEvery new or materially changed phase specifies:\n\n1. Required inputs and their origin: serialized state, assets, captured commands, runtime-only\n state, or original helpers. Missing required inputs block commit; they are not implicit zero.\n2. Ordered behavior, predicates, numeric precision and RNG word consumption.\n3. Complete effects, including newly allocated objects, membership, IDs, event records and all\n container elements. A count/header change is not equivalent to producing the elements.\n4. Supported domain and known unsupported cases, with executable preconditions where feasible.\n5. Independent expected outputs and the workload/branch coverage needed to accept the claim.\n\nThis is the contract for new work, not a claim that every existing partial phase already meets\nit. Existing approximations are tracked as dependencies in the RE campaign and retired by slice.\n\n## State and time\n\nA save is not the entire runtime state. Replay must explicitly supply commands and any unsaved\ninputs needed by its scope. Generator state and ordering are part of the observable contract.\nCount actual generator words, including rejection draws and twists; administrative counters\nmust not modify serialized RNG layout or values. Aggregate each leaf operation once; parent\nsummary records must not double-count child effects.\n\n## Verification and integration\n\nUse fresh source-bound builds. File bytes, inflated stream bytes, typed semantic state and\ngameplay behavior are different comparison surfaces and must be labelled separately. Roundtrip\nproves conservation on the sampled corpus, not correct interpretation of every possible field.\nSynthetic boundary tests complement real original-vs-new experiments. Accepted replacement\nrequires positive execution evidence and no original execution performing the claimed work.\n\nPlanning, model routing, checkpoints, resource leases, surprise resolution and result publication\nlive only in `sots-re`. Architecture changes and plan-changing surprises require GPT-6 Astra.\nSee that repository's `AGENTS.md`, `campaign/README.md`, and `guides/multi-agent-workflow.md`.","lineStart":1,"lineEnd":64,"totalLines":64,"truncated":false}},"title":"../../../tmp/opencode/sots-final-research-engine/docs/architecture.md","time":{"start":1789017823096,"end":1789017823121}},"metadata":{"openai":{"itemId":"fc_04fa26c0a867aa2d016aa23edee86087d1a981551dcc1dbf47"}},"id":"prt_089c5975a001F7pMohG7L32aUj","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5573b001Xbxez2RRxUtL4U"}} +{"type":"tool_use","timestamp":1789017823136,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_FbDsceMR6vb2Eku9TjD0xwwa","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\nfile\n\n1: {\n2: \"schema\": \"sots-abi-static-capture/1\",\n3: \"session\": \"run-9daf5c3b75547271d5c3b4ed\",\n4: \"actor\": \"research-abi-analyst\",\n5: \"role\": \"analyst\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"timestamp\": \"2026-09-10T04:59:38.840348+00:00\",\n8: \"decisions\": [\n9: \"d-fd5aff1eaf78a8c15d96723c\",\n10: \"d-0bb927e63b915c87a58d4257\"\n11: ],\n12: \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n13: \"negative_preflight\": [\n14: {\n15: \"name\": \"reject-missing-session\",\n16: \"status\": \"pass\",\n17: \"rejection\": \"missing session\"\n18: },\n19: {\n20: \"name\": \"reject-stale-session\",\n21: \"status\": \"pass\",\n22: \"rejection\": \"stale or unexpected session\"\n23: },\n24: {\n25: \"name\": \"reject-stale-output\",\n26: \"status\": \"pass\",\n27: \"rejection\": \"output location is not bound to session\"\n28: },\n29: {\n30: \"name\": \"reject-reused-output\",\n31: \"status\": \"pass\",\n32: \"rejection\": \"output location was already used\"\n33: }\n34: ],\n35: \"source_before\": {\n36: \"argv\": [\n37: \"python3\",\n38: \"/home/alex/sots-re/tools/campaign.py\",\n39: \"--state-root\",\n40: \"/home/alex/sots-re\",\n41: \"source-binding\",\n42: \"research-completion-abi\",\n43: \"--engine-worktree\",\n44: \"/tmp/opencode/sots-final-research-engine\",\n45: \"--re-worktree\",\n46: \"/tmp/opencode/sots-final-research-re\"\n47: ],\n48: \"value\": {\n49: \"engine\": {\n50: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n51: \"path\": \"/tmp/opencode/sots-final-research-engine\",\n52: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n53: },\n54: \"re\": {\n55: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n56: \"path\": \"/tmp/opencode/sots-final-research-re\",\n57: \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n58: }\n59: }\n60: },\n61: \"source_after\": {\n62: \"argv\": [\n63: \"python3\",\n64: \"/home/alex/sots-re/tools/campaign.py\",\n65: \"--state-root\",\n66: \"/home/alex/sots-re\",\n67: \"source-binding\",\n68: \"research-completion-abi\",\n69: \"--engine-worktree\",\n70: \"/tmp/opencode/sots-final-research-engine\",\n71: \"--re-worktree\",\n72: \"/tmp/opencode/sots-final-research-re\"\n73: ],\n74: \"value\": {\n75: \"engine\": {\n76: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n77: \"path\": \"/tmp/opencode/sots-final-research-engine\",\n78: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n79: },\n80: \"re\": {\n81: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n82: \"path\": \"/tmp/opencode/sots-final-research-re\",\n83: \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n84: }\n85: }\n86: },\n87: \"input\": {\n88: \"path\": \"/home/alex/sots-re/dumps/sots.exe\",\n89: \"bytes\": 7898624,\n90: \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n91: },\n92: \"tool\": {\n93: \"path\": \"/usr/bin/objdump\",\n94: \"bytes\": 373888,\n95: \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n96: \"version\": \"GNU objdump (GNU Binutils for Ubuntu) 2.38\"\n97: },\n98: \"commands\": [\n99: {\n100: \"name\": \"turn-get-create-exact\",\n101: \"classification\": \"complete-control\",\n102: \"argv\": [\n103: \"/usr/bin/objdump\",\n104: \"-D\",\n105: \"-Mintel\",\n106: \"--start-address=0x00885380\",\n107: \"--stop-address=0x0088544a\",\n108: \"/home/alex/sots-re/dumps/sots.exe\"\n109: ],\n110: \"cwd\": \"/home/alex/sots-re\",\n111: \"returncode\": 0,\n112: \"stdout\": {\n113: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stdout.txt\",\n114: \"bytes\": 3974,\n115: \"sha256\": \"f6e72ba9b08fdf48d70f39379b2fb30a5adbe796072485f70c5795c10ab45ca3\"\n116: },\n117: \"stderr\": {\n118: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stderr.txt\",\n119: \"bytes\": 0,\n120: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n121: }\n122: },\n123: {\n124: \"name\": \"turn-get-create-wide\",\n125: \"classification\": \"boundary-audit\",\n126: \"argv\": [\n127: \"/usr/bin/objdump\",\n128: \"-D\",\n129: \"-Mintel\",\n130: \"--start-address=0x00885380\",\n131: \"--stop-address=0x0088544e\",\n132: \"/home/alex/sots-re/dumps/sots.exe\"\n133: ],\n134: \"cwd\": \"/home/alex/sots-re\",\n135: \"returncode\": 0,\n136: \"stdout\": {\n137: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stdout.txt\",\n138: \"bytes\": 4134,\n139: \"sha256\": \"9cb7d2ccfcc645b3b642e520ba51c85330c57d6d4395ed3fbd4a4a1950436e80\"\n140: },\n141: \"stderr\": {\n142: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stderr.txt\",\n143: \"bytes\": 0,\n144: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n145: }\n146: },\n147: {\n148: \"name\": \"turn-append-exact\",\n149: \"classification\": \"complete-control\",\n150: \"argv\": [\n151: \"/usr/bin/objdump\",\n152: \"-D\",\n153: \"-Mintel\",\n154: \"--start-address=0x00884cb0\",\n155: \"--stop-address=0x00884d8f\",\n156: \"/home/alex/sots-re/dumps/sots.exe\"\n157: ],\n158: \"cwd\": \"/home/alex/sots-re\",\n159: \"returncode\": 0,\n160: \"stdout\": {\n161: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stdout.txt\",\n162: \"bytes\": 4179,\n163: \"sha256\": \"57d6655feed0fc137bb2b7eee4bfcb09536b5a715603c917ee142770f1d52a15\"\n164: },\n165: \"stderr\": {\n166: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stderr.txt\",\n167: \"bytes\": 0,\n168: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n169: }\n170: },\n171: {\n172: \"name\": \"turn-append-wide\",\n173: \"classification\": \"boundary-audit\",\n174: \"argv\": [\n175: \"/usr/bin/objdump\",\n176: \"-D\",\n177: \"-Mintel\",\n178: \"--start-address=0x00884cb0\",\n179: \"--stop-address=0x00884d93\",\n180: \"/home/alex/sots-re/dumps/sots.exe\"\n181: ],\n182: \"cwd\": \"/home/alex/sots-re\",\n183: \"returncode\": 0,\n184: \"stdout\": {\n185: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stdout.txt\",\n186: \"bytes\": 4309,\n187: \"sha256\": \"957339f40b2af8947cb883cc1d3a9d1e151bf7663305415065472ef9171dc33d\"\n188: },\n189: \"stderr\": {\n190: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stderr.txt\",\n191: \"bytes\": 0,\n192: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n193: }\n194: },\n195: {\n196: \"name\": \"nested-dtor-exact\",\n197: \"classification\": \"complete-control\",\n198: \"argv\": [\n199: \"/usr/bin/objdump\",\n200: \"-D\",\n201: \"-Mintel\",\n202: \"--start-address=0x00629580\",\n203: \"--stop-address=0x006295ca\",\n204: \"/home/alex/sots-re/dumps/sots.exe\"\n205: ],\n206: \"cwd\": \"/home/alex/sots-re\",\n207: \"returncode\": 0,\n208: \"stdout\": {\n209: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stdout.txt\",\n210: \"bytes\": 1727,\n211: \"sha256\": \"3c38887e60d009ab904772b13be93ac1eedd9bee85024e37110160a625db3a83\"\n212: },\n213: \"stderr\": {\n214: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stderr.txt\",\n215: \"bytes\": 0,\n216: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n217: }\n218: },\n219: {\n220: \"name\": \"nested-dtor-wide\",\n221: \"classification\": \"boundary-audit\",\n222: \"argv\": [\n223: \"/usr/bin/objdump\",\n224: \"-D\",\n225: \"-Mintel\",\n226: \"--start-address=0x00629580\",\n227: \"--stop-address=0x006295ce\",\n228: \"/home/alex/sots-re/dumps/sots.exe\"\n229: ],\n230: \"cwd\": \"/home/alex/sots-re\",\n231: \"returncode\": 0,\n232: \"stdout\": {\n233: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stdout.txt\",\n234: \"bytes\": 1887,\n235: \"sha256\": \"0aba6fc800760e3a113c07238cfb6e721623eb0bb8a933a990d3e2e82823d00f\"\n236: },\n237: \"stderr\": {\n238: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stderr.txt\",\n239: \"bytes\": 0,\n240: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n241: }\n242: },\n243: {\n244: \"name\": \"nested-copy-authority\",\n245: \"classification\": \"bounded-authority\",\n246: \"argv\": [\n247: \"/usr/bin/objdump\",\n248: \"-D\",\n249: \"-Mintel\",\n250: \"--start-address=0x00779850\",\n251: \"--stop-address=0x00779930\",\n252: \"/home/alex/sots-re/dumps/sots.exe\"\n253: ],\n254: \"cwd\": \"/home/alex/sots-re\",\n255: \"returncode\": 0,\n256: \"stdout\": {\n257: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n258: \"bytes\": 4465,\n259: \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n260: },\n261: \"stderr\": {\n262: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stderr.txt\",\n263: \"bytes\": 0,\n264: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n265: }\n266: },\n267: {\n268: \"name\": \"nested-copy-stop-a20\",\n269: \"classification\": \"expected-truncated-negative\",\n270: \"argv\": [\n271: \"/usr/bin/objdump\",\n272: \"-D\",\n273: \"-Mintel\",\n274: \"--start-address=0x00779850\",\n275: \"--stop-address=0x00779a20\",\n276: \"/home/alex/sots-re/dumps/sots.exe\"\n277: ],\n278: \"cwd\": \"/home/alex/sots-re\",\n279: \"returncode\": 0,\n280: \"stdout\": {\n281: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\",\n282: \"bytes\": 8469,\n283: \"sha256\": \"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\"\n284: },\n285: \"stderr\": {\n286: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stderr.txt\",\n287: \"bytes\": 0,\n288: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n289: }\n290: },\n291: {\n292: \"name\": \"nested-copy-stop-a21\",\n293: \"classification\": \"predicted-complete-je\",\n294: \"argv\": [\n295: \"/usr/bin/objdump\",\n296: \"-D\",\n297: \"-Mintel\",\n298: \"--start-address=0x00779850\",\n299: \"--stop-address=0x00779a21\",\n300: \"/home/alex/sots-re/dumps/sots.exe\"\n301: ],\n302: \"cwd\": \"/home/alex/sots-re\",\n303: \"returncode\": 0,\n304: \"stdout\": {\n305: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stdout.txt\",\n306: \"bytes\": 8471,\n307: \"sha256\": \"b6d58767d00328c37139f439db480c9bb5ce6767dabf212f9e750a31fea0d3d7\"\n308: },\n309: \"stderr\": {\n310: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stderr.txt\",\n311: \"bytes\": 0,\n312: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n313: }\n314: },\n315: {\n316: \"name\": \"nested-copy-stop-a23\",\n317: \"classification\": \"predicted-complete-mov\",\n318: \"argv\": [\n319: \"/usr/bin/objdump\",\n320: \"-D\",\n321: \"-Mintel\",\n322: \"--start-address=0x00779850\",\n323: \"--stop-address=0x00779a23\",\n324: \"/home/alex/sots-re/dumps/sots.exe\"\n325: ],\n326: \"cwd\": \"/home/alex/sots-re\",\n327: \"returncode\": 0,\n328: \"stdout\": {\n329: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stdout.txt\",\n330: \"bytes\": 8518,\n331: \"sha256\": \"e8cc66eb74730fcf7853d66df8caa620ddb3fc8c75335f0573ac490037a7a88e\"\n332: },\n333: \"stderr\": {\n334: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stderr.txt\",\n335: \"bytes\": 0,\n336: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n337: }\n338: },\n339: {\n340: \"name\": \"nested-copy-stop-a28\",\n341: \"classification\": \"complete-call-boundary-control\",\n342: \"argv\": [\n343: \"/usr/bin/objdump\",\n344: \"-D\",\n345: \"-Mintel\",\n346: \"--start-address=0x00779850\",\n347: \"--stop-address=0x00779a28\",\n348: \"/home/alex/sots-re/dumps/sots.exe\"\n349: ],\n350: \"cwd\": \"/home/alex/sots-re\",\n351: \"returncode\": 0,\n352: \"stdout\": {\n353: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\",\n354: \"bytes\": 8566,\n355: \"sha256\": \"7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560\"\n356: },\n357: \"stderr\": {\n358: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stderr.txt\",\n359: \"bytes\": 0,\n360: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n361: }\n362: },\n363: {\n364: \"name\": \"nested-copy-boundary-bytes\",\n365: \"classification\": \"raw-byte-boundary-control\",\n366: \"argv\": [\n367: \"/usr/bin/objdump\",\n368: \"-s\",\n369: \"-j\",\n370: \".text\",\n371: \"--start-address=0x00779a1f\",\n372: \"--stop-address=0x00779a28\",\n373: \"/home/alex/sots-re/dumps/sots.exe\"\n374: ],\n375: \"cwd\": \"/home/alex/sots-re\",\n376: \"returncode\": 0,\n377: \"stdout\": {\n378: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\",\n379: \"bytes\": 151,\n380: \"sha256\": \"b2d9b57274be71fcdd853f04758bc65d701e7b4cc169d0d5ede24c8788ef82d5\"\n381: },\n382: \"stderr\": {\n383: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stderr.txt\",\n384: \"bytes\": 0,\n385: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n386: }\n387: }\n388: ],\n389: \"checks\": [\n390: {\n391: \"name\": \"explicit-session\",\n392: \"status\": \"pass\"\n393: },\n394: {\n395: \"name\": \"session-output-match\",\n396: \"status\": \"pass\"\n397: },\n398: {\n399: \"name\": \"negative-preflight-all-rejected\",\n400: \"status\": \"pass\"\n401: },\n402: {\n403: \"name\": \"binary-hash\",\n404: \"status\": \"pass\"\n405: },\n406: {\n407: \"name\": \"tool-hash\",\n408: \"status\": \"pass\"\n409: },\n410: {\n411: \"name\": \"source-stable\",\n412: \"status\": \"pass\"\n413: },\n414: {\n415: \"name\": \"all-return-zero\",\n416: \"status\": \"pass\"\n417: },\n418: {\n419: \"name\": \"all-stdout-nonempty\",\n420: \"status\": \"pass\"\n421: },\n422: {\n423: \"name\": \"all-stderr-empty\",\n424: \"status\": \"pass\"\n425: }\n426: ],\n427: \"failed\": []\n428: }\n\n(End of file - total 428 lines)\n","metadata":{"preview":"{\n \"schema\": \"sots-abi-static-capture/1\",\n \"session\": \"run-9daf5c3b75547271d5c3b4ed\",\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": \"2026-09-10T04:59:38.840348+00:00\",\n \"decisions\": [\n \"d-fd5aff1eaf78a8c15d96723c\",\n \"d-0bb927e63b915c87a58d4257\"\n ],\n \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n \"negative_preflight\": [\n {\n \"name\": \"reject-missing-session\",\n \"status\": \"pass\",\n \"rejection\": \"missing session\"\n },\n {\n \"name\": \"reject-stale-session\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json","text":"{\n \"schema\": \"sots-abi-static-capture/1\",\n \"session\": \"run-9daf5c3b75547271d5c3b4ed\",\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": \"2026-09-10T04:59:38.840348+00:00\",\n \"decisions\": [\n \"d-fd5aff1eaf78a8c15d96723c\",\n \"d-0bb927e63b915c87a58d4257\"\n ],\n \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n \"negative_preflight\": [\n {\n \"name\": \"reject-missing-session\",\n \"status\": \"pass\",\n \"rejection\": \"missing session\"\n },\n {\n \"name\": \"reject-stale-session\",\n \"status\": \"pass\",\n \"rejection\": \"stale or unexpected session\"\n },\n {\n \"name\": \"reject-stale-output\",\n \"status\": \"pass\",\n \"rejection\": \"output location is not bound to session\"\n },\n {\n \"name\": \"reject-reused-output\",\n \"status\": \"pass\",\n \"rejection\": \"output location was already used\"\n }\n ],\n \"source_before\": {\n \"argv\": [\n \"python3\",\n \"/home/alex/sots-re/tools/campaign.py\",\n \"--state-root\",\n \"/home/alex/sots-re\",\n \"source-binding\",\n \"research-completion-abi\",\n \"--engine-worktree\",\n \"/tmp/opencode/sots-final-research-engine\",\n \"--re-worktree\",\n \"/tmp/opencode/sots-final-research-re\"\n ],\n \"value\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n }\n },\n \"source_after\": {\n \"argv\": [\n \"python3\",\n \"/home/alex/sots-re/tools/campaign.py\",\n \"--state-root\",\n \"/home/alex/sots-re\",\n \"source-binding\",\n \"research-completion-abi\",\n \"--engine-worktree\",\n \"/tmp/opencode/sots-final-research-engine\",\n \"--re-worktree\",\n \"/tmp/opencode/sots-final-research-re\"\n ],\n \"value\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n }\n },\n \"input\": {\n \"path\": \"/home/alex/sots-re/dumps/sots.exe\",\n \"bytes\": 7898624,\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n },\n \"tool\": {\n \"path\": \"/usr/bin/objdump\",\n \"bytes\": 373888,\n \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n \"version\": \"GNU objdump (GNU Binutils for Ubuntu) 2.38\"\n },\n \"commands\": [\n {\n \"name\": \"turn-get-create-exact\",\n \"classification\": \"complete-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00885380\",\n \"--stop-address=0x0088544a\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stdout.txt\",\n \"bytes\": 3974,\n \"sha256\": \"f6e72ba9b08fdf48d70f39379b2fb30a5adbe796072485f70c5795c10ab45ca3\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"turn-get-create-wide\",\n \"classification\": \"boundary-audit\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00885380\",\n \"--stop-address=0x0088544e\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stdout.txt\",\n \"bytes\": 4134,\n \"sha256\": \"9cb7d2ccfcc645b3b642e520ba51c85330c57d6d4395ed3fbd4a4a1950436e80\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"turn-append-exact\",\n \"classification\": \"complete-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00884cb0\",\n \"--stop-address=0x00884d8f\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stdout.txt\",\n \"bytes\": 4179,\n \"sha256\": \"57d6655feed0fc137bb2b7eee4bfcb09536b5a715603c917ee142770f1d52a15\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"turn-append-wide\",\n \"classification\": \"boundary-audit\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00884cb0\",\n \"--stop-address=0x00884d93\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stdout.txt\",\n \"bytes\": 4309,\n \"sha256\": \"957339f40b2af8947cb883cc1d3a9d1e151bf7663305415065472ef9171dc33d\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-dtor-exact\",\n \"classification\": \"complete-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00629580\",\n \"--stop-address=0x006295ca\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stdout.txt\",\n \"bytes\": 1727,\n \"sha256\": \"3c38887e60d009ab904772b13be93ac1eedd9bee85024e37110160a625db3a83\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-dtor-wide\",\n \"classification\": \"boundary-audit\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00629580\",\n \"--stop-address=0x006295ce\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stdout.txt\",\n \"bytes\": 1887,\n \"sha256\": \"0aba6fc800760e3a113c07238cfb6e721623eb0bb8a933a990d3e2e82823d00f\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-authority\",\n \"classification\": \"bounded-authority\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779930\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n \"bytes\": 4465,\n \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a20\",\n \"classification\": \"expected-truncated-negative\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a20\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\",\n \"bytes\": 8469,\n \"sha256\": \"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a21\",\n \"classification\": \"predicted-complete-je\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a21\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stdout.txt\",\n \"bytes\": 8471,\n \"sha256\": \"b6d58767d00328c37139f439db480c9bb5ce6767dabf212f9e750a31fea0d3d7\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a23\",\n \"classification\": \"predicted-complete-mov\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a23\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stdout.txt\",\n \"bytes\": 8518,\n \"sha256\": \"e8cc66eb74730fcf7853d66df8caa620ddb3fc8c75335f0573ac490037a7a88e\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a28\",\n \"classification\": \"complete-call-boundary-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a28\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\",\n \"bytes\": 8566,\n \"sha256\": \"7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-boundary-bytes\",\n \"classification\": \"raw-byte-boundary-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-s\",\n \"-j\",\n \".text\",\n \"--start-address=0x00779a1f\",\n \"--stop-address=0x00779a28\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\",\n \"bytes\": 151,\n \"sha256\": \"b2d9b57274be71fcdd853f04758bc65d701e7b4cc169d0d5ede24c8788ef82d5\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n }\n ],\n \"checks\": [\n {\n \"name\": \"explicit-session\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"session-output-match\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"negative-preflight-all-rejected\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"binary-hash\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"tool-hash\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"source-stable\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all-return-zero\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all-stdout-nonempty\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all-stderr-empty\",\n \"status\": \"pass\"\n }\n ],\n \"failed\": []\n}","lineStart":1,"lineEnd":428,"totalLines":428,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json","time":{"start":1789017823102,"end":1789017823128}},"metadata":{"openai":{"itemId":"fc_04fa26c0a867aa2d016aa23edee86887d1b3d7ccbf4940a1e9"}},"id":"prt_089c5977a00128Lz5Z17YBB3e0","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5573b001Xbxez2RRxUtL4U"}} +{"type":"tool_use","timestamp":1789017823136,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_st9oh2oFJV9CqWouutGSiRcL","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md\nfile\n\n1: # Fresh TurnEvents boundary capture\n2: \n3: Session `run-9daf5c3b75547271d5c3b4ed`; analyst static measurement only. This package implements\n4: decisions `d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. It does not execute the\n5: game, allocations, constructors, destructors, exception paths, event posting, or RNG.\n6: \n7: ## Provenance and positive execution\n8: \n9: `capture.py` requires the actual session and matching output directory and fails if the directory\n10: contains anything except the recipe. Before capture it positively rejected missing and stale session\n11: IDs, a stale output path, and a simulated reused location. The recipe is intentionally not reusable\n12: unchanged by a later campaign session.\n13: \n14: The manifest records 12 subprocess executions. Every command returned zero, emitted nonempty\n15: stdout, and emitted empty stderr. Before and after source bindings are identical: engine\n16: `ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd`, RE\n17: `6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8`. Fresh input identities are:\n18: \n19: * owner-supplied `dumps/sots.exe`: 7,898,624 bytes, SHA-256\n20: `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`;\n21: * `/usr/bin/objdump`: 373,888 bytes, GNU Binutils 2.38, SHA-256\n22: `1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd`.\n23: \n24: ## Measured observations\n25: \n26: 1. The known-bad stop `0x00779a20` returns zero but displays only byte `74` for the instruction at\n27: `0x00779a1f`. It is an explicit negative control, not a passing stream.\n28: 2. Stop `0x00779a21` displays the complete `74 10` conditional jump; stop `0x00779a23` additionally\n29: displays complete `8b cf`; stop `0x00779a28` additionally displays complete\n30: `e8 28 6a ff ff`. Raw section bytes over `0x00779a1f..0x00779a28` are\n31: `74 10 8b cf e8 28 6a ff ff`. The resolver's three boundary predictions therefore held.\n32: 3. The separately bounded `0x00779850..0x00779930` authority capture includes destination nested-\n33: vector pointer initialization, empty/nonempty branching, allocation/range-copy calls, normal\n34: `ret 4` at `0x00779912`, unwind cleanup call at `0x00779918`, deallocation call at\n35: `0x00779921`, and padding through `0x0077992f`. It excludes the later routine at `0x00779a10`.\n36: 4. Get/create `0x00885380..0x0088544a`, outer append `0x00884cb0..0x00884d8f`, and nested\n37: destruction `0x00629580..0x006295ca` end respectively in complete `ret 4`, `ret 4`, and `ret`\n38: instructions. Their wider controls preserve those rows and add padding or a subsequent prologue.\n39: \n40: ## Bounded static interpretation\n41: \n42: For valid input containers and normally returning callees, the instruction facts support this order:\n43: \n44: * get/create scans all existing `0x18` TurnEvents elements and retains the last matching `EvTurn`;\n45: this existing-match path returns without element construction;\n46: * a miss initializes a temporary vptr and three empty nested-vector pointers, but not temporary\n47: `EvTurn`; outer append copies source `+4`, then deep-copies the nested vector, then advances outer\n48: `_Mylast` by `0x18`;\n49: * nested copy first nulls all destination pointers. Empty source returns without allocation;\n50: nonempty source enters allocation and `0x74`-stride PlayerEvent range-copy construction;\n51: * get/create cleans the temporary nested vector before writing requested turn into the stored final\n52: element and returning that element;\n53: * nested destruction skips element/free work for null storage. Otherwise it invokes every\n54: PlayerEvent virtual destructor, frees the nested block via `0x00924faa`, and then zeros all three\n55: pointers.\n56: \n57: The uninitialized transient scalar is not a random draw and should not be reproduced as intentional\n58: undefined behavior. No event record, event ID, text, outer EventStorage next-ID, or RNG state is\n59: written by the bounded helper itself. Static decoding does not demonstrate live allocator-family\n60: safety, exception cleanup outcomes, or observable transient behavior.\n61: \n62: ## Original dependencies, missing runtime inputs, and verifier falsifiers\n63: \n64: Original-assisted use depends on the binary's coherent MSVCR100 family: allocation thunk\n65: `0x00924fb6`, deletion thunk `0x00924faa`, nested allocation chain\n66: `0x00779850 -> 0x0078af40`, PlayerEvent range/copy chain\n67: `0x007725a0 -> 0x007693f0`, and virtual PlayerEvent destruction. A standalone implementation must\n68: replace the entire allocation/copy/destruction family; mixing raw headers with original-owned\n69: storage is not independent replacement.\n70: \n71: Missing live inputs are pre/post spare- and full-capacity outer vectors, empty and nonempty nested\n72: vectors with owned short/long strings, distinct stack sentinels, forced allocation failure/throw,\n73: and observers capable of detecting the transient source word. No such fixture was available or run.\n74: \n75: An independent verifier should use its own real session and fail-if-exists directory, freshly hash\n76: source/tool/input, reproduce all authority windows, and hold out at least one complete terminal\n77: boundary. It should require the `0x00779a20` control to fail completeness despite exit zero, compare\n78: raw bytes against decoded lengths, and check distinct existing-last-match, miss/spare, miss/full,\n79: empty/nonempty nested, and unwind states. Archived event records remain a separate validation input;\n80: this package does not prove their field semantics or promote either contract criterion.\n\n(End of file - total 80 lines)\n","metadata":{"preview":"# Fresh TurnEvents boundary capture\n\nSession `run-9daf5c3b75547271d5c3b4ed`; analyst static measurement only. This package implements\ndecisions `d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. It does not execute the\ngame, allocations, constructors, destructors, exception paths, event posting, or RNG.\n\n## Provenance and positive execution\n\n`capture.py` requires the actual session and matching output directory and fails if the directory\ncontains anything except the recipe. Before capture it positively rejected missing and stale session\nIDs, a stale output path, and a simulated reused location. The recipe is intentionally not reusable\nunchanged by a later campaign session.\n\nThe manifest records 12 subprocess executions. Every command returned zero, emitted nonempty\nstdout, and emitted empty stderr. Before and after source bindings are identical: engine\n`ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd`, RE\n`6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8`. Fresh input identities are:\n\n* owner-supplied `dumps/sots.exe`: 7,898,624 bytes, SHA-256\n `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`;","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md","text":"# Fresh TurnEvents boundary capture\n\nSession `run-9daf5c3b75547271d5c3b4ed`; analyst static measurement only. This package implements\ndecisions `d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. It does not execute the\ngame, allocations, constructors, destructors, exception paths, event posting, or RNG.\n\n## Provenance and positive execution\n\n`capture.py` requires the actual session and matching output directory and fails if the directory\ncontains anything except the recipe. Before capture it positively rejected missing and stale session\nIDs, a stale output path, and a simulated reused location. The recipe is intentionally not reusable\nunchanged by a later campaign session.\n\nThe manifest records 12 subprocess executions. Every command returned zero, emitted nonempty\nstdout, and emitted empty stderr. Before and after source bindings are identical: engine\n`ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd`, RE\n`6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8`. Fresh input identities are:\n\n* owner-supplied `dumps/sots.exe`: 7,898,624 bytes, SHA-256\n `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`;\n* `/usr/bin/objdump`: 373,888 bytes, GNU Binutils 2.38, SHA-256\n `1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd`.\n\n## Measured observations\n\n1. The known-bad stop `0x00779a20` returns zero but displays only byte `74` for the instruction at\n `0x00779a1f`. It is an explicit negative control, not a passing stream.\n2. Stop `0x00779a21` displays the complete `74 10` conditional jump; stop `0x00779a23` additionally\n displays complete `8b cf`; stop `0x00779a28` additionally displays complete\n `e8 28 6a ff ff`. Raw section bytes over `0x00779a1f..0x00779a28` are\n `74 10 8b cf e8 28 6a ff ff`. The resolver's three boundary predictions therefore held.\n3. The separately bounded `0x00779850..0x00779930` authority capture includes destination nested-\n vector pointer initialization, empty/nonempty branching, allocation/range-copy calls, normal\n `ret 4` at `0x00779912`, unwind cleanup call at `0x00779918`, deallocation call at\n `0x00779921`, and padding through `0x0077992f`. It excludes the later routine at `0x00779a10`.\n4. Get/create `0x00885380..0x0088544a`, outer append `0x00884cb0..0x00884d8f`, and nested\n destruction `0x00629580..0x006295ca` end respectively in complete `ret 4`, `ret 4`, and `ret`\n instructions. Their wider controls preserve those rows and add padding or a subsequent prologue.\n\n## Bounded static interpretation\n\nFor valid input containers and normally returning callees, the instruction facts support this order:\n\n* get/create scans all existing `0x18` TurnEvents elements and retains the last matching `EvTurn`;\n this existing-match path returns without element construction;\n* a miss initializes a temporary vptr and three empty nested-vector pointers, but not temporary\n `EvTurn`; outer append copies source `+4`, then deep-copies the nested vector, then advances outer\n `_Mylast` by `0x18`;\n* nested copy first nulls all destination pointers. Empty source returns without allocation;\n nonempty source enters allocation and `0x74`-stride PlayerEvent range-copy construction;\n* get/create cleans the temporary nested vector before writing requested turn into the stored final\n element and returning that element;\n* nested destruction skips element/free work for null storage. Otherwise it invokes every\n PlayerEvent virtual destructor, frees the nested block via `0x00924faa`, and then zeros all three\n pointers.\n\nThe uninitialized transient scalar is not a random draw and should not be reproduced as intentional\nundefined behavior. No event record, event ID, text, outer EventStorage next-ID, or RNG state is\nwritten by the bounded helper itself. Static decoding does not demonstrate live allocator-family\nsafety, exception cleanup outcomes, or observable transient behavior.\n\n## Original dependencies, missing runtime inputs, and verifier falsifiers\n\nOriginal-assisted use depends on the binary's coherent MSVCR100 family: allocation thunk\n`0x00924fb6`, deletion thunk `0x00924faa`, nested allocation chain\n`0x00779850 -> 0x0078af40`, PlayerEvent range/copy chain\n`0x007725a0 -> 0x007693f0`, and virtual PlayerEvent destruction. A standalone implementation must\nreplace the entire allocation/copy/destruction family; mixing raw headers with original-owned\nstorage is not independent replacement.\n\nMissing live inputs are pre/post spare- and full-capacity outer vectors, empty and nonempty nested\nvectors with owned short/long strings, distinct stack sentinels, forced allocation failure/throw,\nand observers capable of detecting the transient source word. No such fixture was available or run.\n\nAn independent verifier should use its own real session and fail-if-exists directory, freshly hash\nsource/tool/input, reproduce all authority windows, and hold out at least one complete terminal\nboundary. It should require the `0x00779a20` control to fail completeness despite exit zero, compare\nraw bytes against decoded lengths, and check distinct existing-last-match, miss/spare, miss/full,\nempty/nonempty nested, and unwind states. Archived event records remain a separate validation input;\nthis package does not prove their field semantics or promote either contract criterion.","lineStart":1,"lineEnd":80,"totalLines":80,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md","time":{"start":1789017823107,"end":1789017823130}},"metadata":{"openai":{"itemId":"fc_04fa26c0a867aa2d016aa23edee86c87d1be74b11553634b9c"}},"id":"prt_089c5977f001rv7a6HqC0MISS0","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5573b001Xbxez2RRxUtL4U"}} +{"type":"tool_use","timestamp":1789017823136,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_2fi6lZgRlTWzSMhXg8WxUgRS","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\nfile\n\n1: #!/usr/bin/env python3\n2: \"\"\"Fresh, session-bound static capture required by two 2026-09-10 Astra decisions.\"\"\"\n3: \n4: import argparse\n5: import hashlib\n6: import json\n7: import subprocess\n8: from datetime import datetime, timezone\n9: from pathlib import Path\n10: \n11: \n12: ROOT = Path(\"/home/alex/sots-re\")\n13: SESSION = \"run-9daf5c3b75547271d5c3b4ed\"\n14: STALE_SESSION = \"run-ee78b8773688ca09f8046e21\"\n15: REL_OUT = Path(\"verify/results/research-completion-abi\") / SESSION\n16: OUT = ROOT / REL_OUT\n17: BINARY = ROOT / \"dumps/sots.exe\"\n18: TOOL = Path(\"/usr/bin/objdump\")\n19: CAMPAIGN = ROOT / \"tools/campaign.py\"\n20: ENGINE_TREE = Path(\"/tmp/opencode/sots-final-research-engine\")\n21: RE_TREE = Path(\"/tmp/opencode/sots-final-research-re\")\n22: EXPECTED_BINARY = \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n23: EXPECTED_TOOL = \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\"\n24: \n25: # Exact historical windows remain controls. Each companion widened stop was already shown\n26: # to add rows without changing the exact rows, except nested-copy's known-bad historical stop.\n27: DISASSEMBLY = (\n28: (\"turn-get-create-exact\", 0x00885380, 0x0088544A, \"complete-control\"),\n29: (\"turn-get-create-wide\", 0x00885380, 0x0088544E, \"boundary-audit\"),\n30: (\"turn-append-exact\", 0x00884CB0, 0x00884D8F, \"complete-control\"),\n31: (\"turn-append-wide\", 0x00884CB0, 0x00884D93, \"boundary-audit\"),\n32: (\"nested-dtor-exact\", 0x00629580, 0x006295CA, \"complete-control\"),\n33: (\"nested-dtor-wide\", 0x00629580, 0x006295CE, \"boundary-audit\"),\n34: (\"nested-copy-authority\", 0x00779850, 0x00779930, \"bounded-authority\"),\n35: (\"nested-copy-stop-a20\", 0x00779850, 0x00779A20, \"expected-truncated-negative\"),\n36: (\"nested-copy-stop-a21\", 0x00779850, 0x00779A21, \"predicted-complete-je\"),\n37: (\"nested-copy-stop-a23\", 0x00779850, 0x00779A23, \"predicted-complete-mov\"),\n38: (\"nested-copy-stop-a28\", 0x00779850, 0x00779A28, \"complete-call-boundary-control\"),\n39: )\n40: \n41: RAW_BYTES = (\n42: (\"nested-copy-boundary-bytes\", 0x00779A1F, 0x00779A28),\n43: )\n44: \n45: \n46: def sha(data: bytes) -> str:\n47: return hashlib.sha256(data).hexdigest()\n48: \n49: \n50: def file_identity(path: Path) -> dict:\n51: data = path.read_bytes()\n52: return {\"path\": str(path), \"bytes\": len(data), \"sha256\": sha(data)}\n53: \n54: \n55: def validate_identity(session: str, output: Path, entries: list[str]) -> None:\n56: if not session:\n57: raise ValueError(\"missing session\")\n58: if session == STALE_SESSION or session != SESSION:\n59: raise ValueError(\"stale or unexpected session\")\n60: if output.resolve() != OUT.resolve() or output.name != session:\n61: raise ValueError(\"output location is not bound to session\")\n62: if sorted(entries) not in ([], [\"capture.py\"]):\n63: raise FileExistsError(\"output location was already used\")\n64: \n65: \n66: def source_binding() -> dict:\n67: argv = [\n68: \"python3\", str(CAMPAIGN), \"--state-root\", str(ROOT), \"source-binding\",\n69: \"research-completion-abi\", \"--engine-worktree\", str(ENGINE_TREE),\n70: \"--re-worktree\", str(RE_TREE),\n71: ]\n72: proc = subprocess.run(argv, cwd=ROOT, check=True, capture_output=True, text=True)\n73: return {\"argv\": argv, \"value\": json.loads(proc.stdout)}\n74: \n75: \n76: def run_capture(name: str, argv: list[str], classification: str) -> dict:\n77: proc = subprocess.run(argv, cwd=ROOT, check=False, capture_output=True)\n78: stdout_path = OUT / f\"{name}.stdout.txt\"\n79: stderr_path = OUT / f\"{name}.stderr.txt\"\n80: stdout_path.write_bytes(proc.stdout)\n81: stderr_path.write_bytes(proc.stderr)\n82: return {\n83: \"name\": name,\n84: \"classification\": classification,\n85: \"argv\": argv,\n86: \"cwd\": str(ROOT),\n87: \"returncode\": proc.returncode,\n88: \"stdout\": {\"path\": str(stdout_path.relative_to(ROOT)), \"bytes\": len(proc.stdout), \"sha256\": sha(proc.stdout)},\n89: \"stderr\": {\"path\": str(stderr_path.relative_to(ROOT)), \"bytes\": len(proc.stderr), \"sha256\": sha(proc.stderr)},\n90: }\n91: \n92: \n93: parser = argparse.ArgumentParser()\n94: parser.add_argument(\"--session\", required=True)\n95: parser.add_argument(\"--output\", required=True, type=Path)\n96: args = parser.parse_args()\n97: \n98: negative_preflight = []\n99: for name, candidate_session, candidate_output, entries in (\n100: (\"reject-missing-session\", \"\", OUT, [\"capture.py\"]),\n101: (\"reject-stale-session\", STALE_SESSION, OUT, [\"capture.py\"]),\n102: (\"reject-stale-output\", SESSION, ROOT / \"verify/results/research-completion-abi\" / STALE_SESSION, [\"capture.py\"]),\n103: (\"reject-reused-output\", SESSION, OUT, [\"capture.py\", \"prior-output.txt\"]),\n104: ):\n105: try:\n106: validate_identity(candidate_session, candidate_output, entries)\n107: except (ValueError, FileExistsError) as exc:\n108: negative_preflight.append({\"name\": name, \"status\": \"pass\", \"rejection\": str(exc)})\n109: else:\n110: raise SystemExit(f\"negative preflight unexpectedly accepted: {name}\")\n111: \n112: validate_identity(args.session, args.output, [p.name for p in OUT.iterdir()])\n113: before = source_binding()\n114: binary = file_identity(BINARY)\n115: tool = file_identity(TOOL)\n116: if binary[\"sha256\"] != EXPECTED_BINARY or tool[\"sha256\"] != EXPECTED_TOOL:\n117: raise SystemExit(\"binary/tool identity drift\")\n118: \n119: records = []\n120: for name, start, stop, classification in DISASSEMBLY:\n121: records.append(run_capture(name, [\n122: str(TOOL), \"-D\", \"-Mintel\", f\"--start-address=0x{start:08x}\",\n123: f\"--stop-address=0x{stop:08x}\", str(BINARY),\n124: ], classification))\n125: for name, start, stop in RAW_BYTES:\n126: records.append(run_capture(name, [\n127: str(TOOL), \"-s\", \"-j\", \".text\", f\"--start-address=0x{start:08x}\",\n128: f\"--stop-address=0x{stop:08x}\", str(BINARY),\n129: ], \"raw-byte-boundary-control\"))\n130: \n131: after = source_binding()\n132: checks = {\n133: \"explicit-session\": args.session == SESSION,\n134: \"session-output-match\": args.output.resolve() == OUT.resolve(),\n135: \"negative-preflight-all-rejected\": all(x[\"status\"] == \"pass\" for x in negative_preflight),\n136: \"binary-hash\": binary[\"sha256\"] == EXPECTED_BINARY,\n137: \"tool-hash\": tool[\"sha256\"] == EXPECTED_TOOL,\n138: \"source-stable\": before[\"value\"] == after[\"value\"],\n139: \"all-return-zero\": all(x[\"returncode\"] == 0 for x in records),\n140: \"all-stdout-nonempty\": all(x[\"stdout\"][\"bytes\"] > 0 for x in records),\n141: \"all-stderr-empty\": all(x[\"stderr\"][\"bytes\"] == 0 for x in records),\n142: }\n143: manifest = {\n144: \"schema\": \"sots-abi-static-capture/1\",\n145: \"session\": SESSION,\n146: \"actor\": \"research-abi-analyst\",\n147: \"role\": \"analyst\",\n148: \"model\": \"openai/gpt-5.6-sol\",\n149: \"timestamp\": datetime.now(timezone.utc).isoformat(),\n150: \"decisions\": [\"d-fd5aff1eaf78a8c15d96723c\", \"d-0bb927e63b915c87a58d4257\"],\n151: \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n152: \"negative_preflight\": negative_preflight,\n153: \"source_before\": before,\n154: \"source_after\": after,\n155: \"input\": binary,\n156: \"tool\": {**tool, \"version\": subprocess.run([str(TOOL), \"--version\"], check=True, capture_output=True, text=True).stdout.splitlines()[0]},\n157: \"commands\": records,\n158: \"checks\": [{\"name\": name, \"status\": \"pass\" if status else \"fail\"} for name, status in checks.items()],\n159: \"failed\": [name for name, status in checks.items() if not status],\n160: }\n161: (OUT / \"manifest.json\").write_text(json.dumps(manifest, indent=2) + \"\\n\")\n162: print(json.dumps({\"commands\": len(records), \"failed\": manifest[\"failed\"], \"manifest\": str((OUT / \"manifest.json\").relative_to(ROOT))}, indent=2))\n163: raise SystemExit(bool(manifest[\"failed\"]))\n\n(End of file - total 163 lines)\n","metadata":{"preview":"#!/usr/bin/env python3\n\"\"\"Fresh, session-bound static capture required by two 2026-09-10 Astra decisions.\"\"\"\n\nimport argparse\nimport hashlib\nimport json\nimport subprocess\nfrom datetime import datetime, timezone\nfrom pathlib import Path\n\n\nROOT = Path(\"/home/alex/sots-re\")\nSESSION = \"run-9daf5c3b75547271d5c3b4ed\"\nSTALE_SESSION = \"run-ee78b8773688ca09f8046e21\"\nREL_OUT = Path(\"verify/results/research-completion-abi\") / SESSION\nOUT = ROOT / REL_OUT\nBINARY = ROOT / \"dumps/sots.exe\"\nTOOL = Path(\"/usr/bin/objdump\")\nCAMPAIGN = ROOT / \"tools/campaign.py\"\nENGINE_TREE = Path(\"/tmp/opencode/sots-final-research-engine\")","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py","text":"#!/usr/bin/env python3\n\"\"\"Fresh, session-bound static capture required by two 2026-09-10 Astra decisions.\"\"\"\n\nimport argparse\nimport hashlib\nimport json\nimport subprocess\nfrom datetime import datetime, timezone\nfrom pathlib import Path\n\n\nROOT = Path(\"/home/alex/sots-re\")\nSESSION = \"run-9daf5c3b75547271d5c3b4ed\"\nSTALE_SESSION = \"run-ee78b8773688ca09f8046e21\"\nREL_OUT = Path(\"verify/results/research-completion-abi\") / SESSION\nOUT = ROOT / REL_OUT\nBINARY = ROOT / \"dumps/sots.exe\"\nTOOL = Path(\"/usr/bin/objdump\")\nCAMPAIGN = ROOT / \"tools/campaign.py\"\nENGINE_TREE = Path(\"/tmp/opencode/sots-final-research-engine\")\nRE_TREE = Path(\"/tmp/opencode/sots-final-research-re\")\nEXPECTED_BINARY = \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\nEXPECTED_TOOL = \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\"\n\n# Exact historical windows remain controls. Each companion widened stop was already shown\n# to add rows without changing the exact rows, except nested-copy's known-bad historical stop.\nDISASSEMBLY = (\n (\"turn-get-create-exact\", 0x00885380, 0x0088544A, \"complete-control\"),\n (\"turn-get-create-wide\", 0x00885380, 0x0088544E, \"boundary-audit\"),\n (\"turn-append-exact\", 0x00884CB0, 0x00884D8F, \"complete-control\"),\n (\"turn-append-wide\", 0x00884CB0, 0x00884D93, \"boundary-audit\"),\n (\"nested-dtor-exact\", 0x00629580, 0x006295CA, \"complete-control\"),\n (\"nested-dtor-wide\", 0x00629580, 0x006295CE, \"boundary-audit\"),\n (\"nested-copy-authority\", 0x00779850, 0x00779930, \"bounded-authority\"),\n (\"nested-copy-stop-a20\", 0x00779850, 0x00779A20, \"expected-truncated-negative\"),\n (\"nested-copy-stop-a21\", 0x00779850, 0x00779A21, \"predicted-complete-je\"),\n (\"nested-copy-stop-a23\", 0x00779850, 0x00779A23, \"predicted-complete-mov\"),\n (\"nested-copy-stop-a28\", 0x00779850, 0x00779A28, \"complete-call-boundary-control\"),\n)\n\nRAW_BYTES = (\n (\"nested-copy-boundary-bytes\", 0x00779A1F, 0x00779A28),\n)\n\n\ndef sha(data: bytes) -> str:\n return hashlib.sha256(data).hexdigest()\n\n\ndef file_identity(path: Path) -> dict:\n data = path.read_bytes()\n return {\"path\": str(path), \"bytes\": len(data), \"sha256\": sha(data)}\n\n\ndef validate_identity(session: str, output: Path, entries: list[str]) -> None:\n if not session:\n raise ValueError(\"missing session\")\n if session == STALE_SESSION or session != SESSION:\n raise ValueError(\"stale or unexpected session\")\n if output.resolve() != OUT.resolve() or output.name != session:\n raise ValueError(\"output location is not bound to session\")\n if sorted(entries) not in ([], [\"capture.py\"]):\n raise FileExistsError(\"output location was already used\")\n\n\ndef source_binding() -> dict:\n argv = [\n \"python3\", str(CAMPAIGN), \"--state-root\", str(ROOT), \"source-binding\",\n \"research-completion-abi\", \"--engine-worktree\", str(ENGINE_TREE),\n \"--re-worktree\", str(RE_TREE),\n ]\n proc = subprocess.run(argv, cwd=ROOT, check=True, capture_output=True, text=True)\n return {\"argv\": argv, \"value\": json.loads(proc.stdout)}\n\n\ndef run_capture(name: str, argv: list[str], classification: str) -> dict:\n proc = subprocess.run(argv, cwd=ROOT, check=False, capture_output=True)\n stdout_path = OUT / f\"{name}.stdout.txt\"\n stderr_path = OUT / f\"{name}.stderr.txt\"\n stdout_path.write_bytes(proc.stdout)\n stderr_path.write_bytes(proc.stderr)\n return {\n \"name\": name,\n \"classification\": classification,\n \"argv\": argv,\n \"cwd\": str(ROOT),\n \"returncode\": proc.returncode,\n \"stdout\": {\"path\": str(stdout_path.relative_to(ROOT)), \"bytes\": len(proc.stdout), \"sha256\": sha(proc.stdout)},\n \"stderr\": {\"path\": str(stderr_path.relative_to(ROOT)), \"bytes\": len(proc.stderr), \"sha256\": sha(proc.stderr)},\n }\n\n\nparser = argparse.ArgumentParser()\nparser.add_argument(\"--session\", required=True)\nparser.add_argument(\"--output\", required=True, type=Path)\nargs = parser.parse_args()\n\nnegative_preflight = []\nfor name, candidate_session, candidate_output, entries in (\n (\"reject-missing-session\", \"\", OUT, [\"capture.py\"]),\n (\"reject-stale-session\", STALE_SESSION, OUT, [\"capture.py\"]),\n (\"reject-stale-output\", SESSION, ROOT / \"verify/results/research-completion-abi\" / STALE_SESSION, [\"capture.py\"]),\n (\"reject-reused-output\", SESSION, OUT, [\"capture.py\", \"prior-output.txt\"]),\n):\n try:\n validate_identity(candidate_session, candidate_output, entries)\n except (ValueError, FileExistsError) as exc:\n negative_preflight.append({\"name\": name, \"status\": \"pass\", \"rejection\": str(exc)})\n else:\n raise SystemExit(f\"negative preflight unexpectedly accepted: {name}\")\n\nvalidate_identity(args.session, args.output, [p.name for p in OUT.iterdir()])\nbefore = source_binding()\nbinary = file_identity(BINARY)\ntool = file_identity(TOOL)\nif binary[\"sha256\"] != EXPECTED_BINARY or tool[\"sha256\"] != EXPECTED_TOOL:\n raise SystemExit(\"binary/tool identity drift\")\n\nrecords = []\nfor name, start, stop, classification in DISASSEMBLY:\n records.append(run_capture(name, [\n str(TOOL), \"-D\", \"-Mintel\", f\"--start-address=0x{start:08x}\",\n f\"--stop-address=0x{stop:08x}\", str(BINARY),\n ], classification))\nfor name, start, stop in RAW_BYTES:\n records.append(run_capture(name, [\n str(TOOL), \"-s\", \"-j\", \".text\", f\"--start-address=0x{start:08x}\",\n f\"--stop-address=0x{stop:08x}\", str(BINARY),\n ], \"raw-byte-boundary-control\"))\n\nafter = source_binding()\nchecks = {\n \"explicit-session\": args.session == SESSION,\n \"session-output-match\": args.output.resolve() == OUT.resolve(),\n \"negative-preflight-all-rejected\": all(x[\"status\"] == \"pass\" for x in negative_preflight),\n \"binary-hash\": binary[\"sha256\"] == EXPECTED_BINARY,\n \"tool-hash\": tool[\"sha256\"] == EXPECTED_TOOL,\n \"source-stable\": before[\"value\"] == after[\"value\"],\n \"all-return-zero\": all(x[\"returncode\"] == 0 for x in records),\n \"all-stdout-nonempty\": all(x[\"stdout\"][\"bytes\"] > 0 for x in records),\n \"all-stderr-empty\": all(x[\"stderr\"][\"bytes\"] == 0 for x in records),\n}\nmanifest = {\n \"schema\": \"sots-abi-static-capture/1\",\n \"session\": SESSION,\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": datetime.now(timezone.utc).isoformat(),\n \"decisions\": [\"d-fd5aff1eaf78a8c15d96723c\", \"d-0bb927e63b915c87a58d4257\"],\n \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n \"negative_preflight\": negative_preflight,\n \"source_before\": before,\n \"source_after\": after,\n \"input\": binary,\n \"tool\": {**tool, \"version\": subprocess.run([str(TOOL), \"--version\"], check=True, capture_output=True, text=True).stdout.splitlines()[0]},\n \"commands\": records,\n \"checks\": [{\"name\": name, \"status\": \"pass\" if status else \"fail\"} for name, status in checks.items()],\n \"failed\": [name for name, status in checks.items() if not status],\n}\n(OUT / \"manifest.json\").write_text(json.dumps(manifest, indent=2) + \"\\n\")\nprint(json.dumps({\"commands\": len(records), \"failed\": manifest[\"failed\"], \"manifest\": str((OUT / \"manifest.json\").relative_to(ROOT))}, indent=2))\nraise SystemExit(bool(manifest[\"failed\"]))","lineStart":1,"lineEnd":163,"totalLines":163,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py","time":{"start":1789017823112,"end":1789017823133}},"metadata":{"openai":{"itemId":"fc_04fa26c0a867aa2d016aa23edee87487d1a76ed439e4eec715"}},"id":"prt_089c59784001udssdDPBw11yXC","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5573b001Xbxez2RRxUtL4U"}} +{"type":"step_finish","timestamp":1789017823223,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c597f30012AkvPXdFVJXiM9","reason":"tool-calls","snapshot":"a5ad364a8344e1e1a439fab5c949e7384a55a131","messageID":"msg_089c5573b001Xbxez2RRxUtL4U","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":13231,"input":6907,"output":253,"reasoning":55,"cache":{"write":0,"read":6016}},"cost":0}} +{"type":"step_start","timestamp":1789017825240,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c59fcd0013fVVqso2lse4fg","messageID":"msg_089c59824001iqYo27DZMzxoOk","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"1116ed933051652f6090b2f0da7837febc8191c5","type":"step-start"}} +{"type":"tool_use","timestamp":1789017848658,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_ewShE8pzb2eVjDHYQZdrHtRe","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-410e48d5ae6cc4da0a6ae649.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-410e48d5ae6cc4da0a6ae649.json\nfile\n\n1: {\n2: \"actor\": \"controls-architect\",\n3: \"contract\": \"controls-bootstrap\",\n4: \"decision\": \"d-42c6d0b4ee5114e6f2e07c99\",\n5: \"id\": \"s-410e48d5ae6cc4da0a6ae649\",\n6: \"model\": \"openai/gpt-6-astra\",\n7: \"probe\": \"Introduce an immutable typed acceptance package binding candidate/integrated source manifests, built binary, inputs and per-criterion results; change source bytes at unchanged HEAD and require integration/acceptance rejection.\",\n8: \"role\": \"architecture-review\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Independent review R4: lifecycle source binding checks baseline path/commit and artifact hashes, but not the actual candidate/integrated source manifest. Implementation bytes can change at the same HEAD without invalidating the current evidence/verdict. This requires a cross-cutting evidence package/interface decision with publishing and gate owners.\",\n12: \"timestamp\": \"2026-09-09T21:34:52.829937+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"controls-architect\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-42c6d0b4ee5114e6f2e07c99\",\n \"id\": \"s-410e48d5ae6cc4da0a6ae649\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Introduce an immutable typed acceptance package binding candidate/integrated source manifests, built binary, inputs and per-criterion results; change source bytes at unchanged HEAD and require integration/acceptance rejection.\",\n \"role\": \"architecture-review\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent review R4: lifecycle source binding checks baseline path/commit and artifact hashes, but not the actual candidate/integrated source manifest. Implementation bytes can change at the same HEAD without invalidating the current evidence/verdict. This requires a cross-cutting evidence package/interface decision with publishing and gate owners.\",\n \"timestamp\": \"2026-09-09T21:34:52.829937+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-410e48d5ae6cc4da0a6ae649.json","text":"{\n \"actor\": \"controls-architect\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-42c6d0b4ee5114e6f2e07c99\",\n \"id\": \"s-410e48d5ae6cc4da0a6ae649\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Introduce an immutable typed acceptance package binding candidate/integrated source manifests, built binary, inputs and per-criterion results; change source bytes at unchanged HEAD and require integration/acceptance rejection.\",\n \"role\": \"architecture-review\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent review R4: lifecycle source binding checks baseline path/commit and artifact hashes, but not the actual candidate/integrated source manifest. Implementation bytes can change at the same HEAD without invalidating the current evidence/verdict. This requires a cross-cutting evidence package/interface decision with publishing and gate owners.\",\n \"timestamp\": \"2026-09-09T21:34:52.829937+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-410e48d5ae6cc4da0a6ae649.json","time":{"start":1789017848630,"end":1789017848649}},"metadata":{"openai":{"itemId":"fc_0dc5a1904accc5b3016aa23ef8799487d1a2925da38b93d1a0"}},"id":"prt_089c5fb280019R13vBlg5WXxNY","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c59824001iqYo27DZMzxoOk"}} +{"type":"tool_use","timestamp":1789017848675,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_sGY305uEiLkX9xd7rTrlUA2b","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-4a7d66ebd7d8a8f3ec59f11d.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-4a7d66ebd7d8a8f3ec59f11d.json\nfile\n\n1: {\n2: \"actor\": \"controls-independent-verifier\",\n3: \"contract\": \"controls-bootstrap\",\n4: \"decision\": \"d-2570bf9c76ae66711bdac461\",\n5: \"id\": \"s-4a7d66ebd7d8a8f3ec59f11d\",\n6: \"model\": \"openai/gpt-5.6-terra\",\n7: \"probe\": \"Parse every nonblank JSONL line of campaign/runtime/runs/run-cb15199f9272fe496bd10a8a.jsonl; compare count, error events, stop events, sessions, source_before/source_after and run record fields. Determine whether the false 24-event assertion invalidates only narrative verifier artifacts or the integrated controls evidence/verdict package.\",\n8: \"role\": \"verifier\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Contradictory prior verification claim: verdict controls-bootstrap.json and checkpoint b467c2d772260f1f03637133 report 24 parsed events for run-cb15199f9272fe496bd10a8a, but independent JSONL parsing finds 67 valid events. The run record itself reports event_count 67. The zero-error, one-session, one-stop, return-0 and unchanged-source facts agree; the count claim is false. Existing source-bound evidence does not document this raw-run count, so its acceptance impact needs Astra resolution before a new verdict.\",\n12: \"timestamp\": \"2026-09-09T22:17:38.435822+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"controls-independent-verifier\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-2570bf9c76ae66711bdac461\",\n \"id\": \"s-4a7d66ebd7d8a8f3ec59f11d\",\n \"model\": \"openai/gpt-5.6-terra\",\n \"probe\": \"Parse every nonblank JSONL line of campaign/runtime/runs/run-cb15199f9272fe496bd10a8a.jsonl; compare count, error events, stop events, sessions, source_before/source_after and run record fields. Determine whether the false 24-event assertion invalidates only narrative verifier artifacts or the integrated controls evidence/verdict package.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Contradictory prior verification claim: verdict controls-bootstrap.json and checkpoint b467c2d772260f1f03637133 report 24 parsed events for run-cb15199f9272fe496bd10a8a, but independent JSONL parsing finds 67 valid events. The run record itself reports event_count 67. The zero-error, one-session, one-stop, return-0 and unchanged-source facts agree; the count claim is false. Existing source-bound evidence does not document this raw-run count, so its acceptance impact needs Astra resolution before a new verdict.\",\n \"timestamp\": \"2026-09-09T22:17:38.435822+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-4a7d66ebd7d8a8f3ec59f11d.json","text":"{\n \"actor\": \"controls-independent-verifier\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-2570bf9c76ae66711bdac461\",\n \"id\": \"s-4a7d66ebd7d8a8f3ec59f11d\",\n \"model\": \"openai/gpt-5.6-terra\",\n \"probe\": \"Parse every nonblank JSONL line of campaign/runtime/runs/run-cb15199f9272fe496bd10a8a.jsonl; compare count, error events, stop events, sessions, source_before/source_after and run record fields. Determine whether the false 24-event assertion invalidates only narrative verifier artifacts or the integrated controls evidence/verdict package.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Contradictory prior verification claim: verdict controls-bootstrap.json and checkpoint b467c2d772260f1f03637133 report 24 parsed events for run-cb15199f9272fe496bd10a8a, but independent JSONL parsing finds 67 valid events. The run record itself reports event_count 67. The zero-error, one-session, one-stop, return-0 and unchanged-source facts agree; the count claim is false. Existing source-bound evidence does not document this raw-run count, so its acceptance impact needs Astra resolution before a new verdict.\",\n \"timestamp\": \"2026-09-09T22:17:38.435822+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-4a7d66ebd7d8a8f3ec59f11d.json","time":{"start":1789017848653,"end":1789017848673}},"metadata":{"openai":{"itemId":"fc_0dc5a1904accc5b3016aa23ef879a087d18550edbfff85872d"}},"id":"prt_089c5fb3a001NmOqeA0QmzdIq2","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c59824001iqYo27DZMzxoOk"}} +{"type":"tool_use","timestamp":1789017848684,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_9fu0kew4yYsW4bdQ3WR5z0yo","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-4f4fb5e8ee42ccff7e68efb5.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-4f4fb5e8ee42ccff7e68efb5.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-correction-verifier\",\n3: \"contract\": \"research-completion-abi\",\n4: \"decision\": \"d-fd5aff1eaf78a8c15d96723c\",\n5: \"id\": \"s-4f4fb5e8ee42ccff7e68efb5\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"probe\": \"Astra must inspect verifier manifest verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/manifest.json and the exact/wide nested-copy streams, confirm the 0x00779a1f terminal truncation under pinned GNU objdump 2.38 and binary hash, and prescribe a stop boundary after a complete instruction (including checking that any replacement boundary itself is not truncated). Then require fresh analyst capture/source-bound package and fresh independent reproduction before independent-cross-check can pass.\",\n8: \"role\": \"verifier\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Held-out +4 stop-boundary ablation falsified the predeclared no-truncation assumption for the corrected four-window package. All 8 objdump commands returned zero with nonempty stdout/empty stderr; all four exact captures byte-match the analyst archive; binary/tool/source identities pass; 44/45 checks pass. However nested-copy exact stop 0x00779a20 emits a truncated terminal row at 0x00779a1f as bytes 74, while widened stop 0x00779a24 emits the complete two-byte instruction 74 10 (je 0x00779a31), followed by a later call row also truncated at the widened boundary. Therefore the exact nested-copy capture is not a complete instruction stream and nested-copy-wide-row-prefix fails. Matching decoded ownership rows are measurements, not success. Pause affected independent acceptance; no live/lab/source mutation occurred.\",\n12: \"timestamp\": \"2026-09-10T04:45:32.413275+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-fd5aff1eaf78a8c15d96723c\",\n \"id\": \"s-4f4fb5e8ee42ccff7e68efb5\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra must inspect verifier manifest verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/manifest.json and the exact/wide nested-copy streams, confirm the 0x00779a1f terminal truncation under pinned GNU objdump 2.38 and binary hash, and prescribe a stop boundary after a complete instruction (including checking that any replacement boundary itself is not truncated). Then require fresh analyst capture/source-bound package and fresh independent reproduction before independent-cross-check can pass.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Held-out +4 stop-boundary ablation falsified the predeclared no-truncation assumption for the corrected four-window package. All 8 objdump commands returned zero with nonempty stdout/empty stderr; all four exact captures byte-match the analyst archive; binary/tool/source identities pass; 44/45 checks pass. However nested-copy exact stop 0x00779a20 emits a truncated terminal row at 0x00779a1f as bytes 74, while widened stop 0x00779a24 emits the complete two-byte instruction 74 10 (je 0x00779a31), followed by a later call row also truncated at the widened boundary. Therefore the exact nested-copy capture is not a complete instruction stream and nested-copy-wide-row-prefix fails. Matching decoded ownership rows are measurements, not success. Pause affected independent acceptance; no live/lab/source mutation occurred.\",\n \"timestamp\": \"2026-09-10T04:45:32.413275+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-4f4fb5e8ee42ccff7e68efb5.json","text":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-fd5aff1eaf78a8c15d96723c\",\n \"id\": \"s-4f4fb5e8ee42ccff7e68efb5\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra must inspect verifier manifest verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/manifest.json and the exact/wide nested-copy streams, confirm the 0x00779a1f terminal truncation under pinned GNU objdump 2.38 and binary hash, and prescribe a stop boundary after a complete instruction (including checking that any replacement boundary itself is not truncated). Then require fresh analyst capture/source-bound package and fresh independent reproduction before independent-cross-check can pass.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Held-out +4 stop-boundary ablation falsified the predeclared no-truncation assumption for the corrected four-window package. All 8 objdump commands returned zero with nonempty stdout/empty stderr; all four exact captures byte-match the analyst archive; binary/tool/source identities pass; 44/45 checks pass. However nested-copy exact stop 0x00779a20 emits a truncated terminal row at 0x00779a1f as bytes 74, while widened stop 0x00779a24 emits the complete two-byte instruction 74 10 (je 0x00779a31), followed by a later call row also truncated at the widened boundary. Therefore the exact nested-copy capture is not a complete instruction stream and nested-copy-wide-row-prefix fails. Matching decoded ownership rows are measurements, not success. Pause affected independent acceptance; no live/lab/source mutation occurred.\",\n \"timestamp\": \"2026-09-10T04:45:32.413275+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-4f4fb5e8ee42ccff7e68efb5.json","time":{"start":1789017848667,"end":1789017848683}},"metadata":{"openai":{"itemId":"fc_0dc5a1904accc5b3016aa23ef879a887d198221e3d218e9c2f"}},"id":"prt_089c5fb4f001WS6TIrMyZQU00M","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c59824001iqYo27DZMzxoOk"}} +{"type":"tool_use","timestamp":1789017848721,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_Nor0VoUNn4gnaAXTE2vjg1fj","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-4f71bf4a5df4e5fc992bb6b2.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-4f71bf4a5df4e5fc992bb6b2.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-independent\",\n3: \"contract\": \"research-completion-abi\",\n4: \"decision\": \"d-d4c494ba02ada278030ef473\",\n5: \"id\": \"s-4f71bf4a5df4e5fc992bb6b2\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"probe\": \"Astra should inspect session manifest verify/results/research-completion-abi-independent/run-eba7860308317f839eb35392/manifest.json and raw observed-alloc/player-append/player-copy streams, compare the three archive lines, then require fresh paired narrow and minimally widened raw stdout/stderr captures with pinned input/tool/source identities for every ownership window whose terminal instruction is truncated. Decide whether to supersede only provenance or additional completeness claims; do not infer archive production history. After repair, a fresh independent verifier must reproduce the full windows and resume ownership/NaN/static-state checks.\",\n8: \"role\": \"verifier\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Session run-eba7860308317f839eb35392 fresh independent reproduction finds the repaired dedup window is correct, but exposes the same unfiltered-stop-boundary provenance contradiction in the ownership archive. objdump-2026-09-09-ownership.txt declares exact stops 0x0057e5e4, 0x0086c62e and 0x007694c0 yet prints complete c2 04 00 terminal instructions beginning at 0x0057e5e3, 0x0086c62d and 0x007694bf. Fresh GNU objdump 2.38 against the hash-matched executable prints only c2 for each command because each stop is one byte after the instruction start. Thus those archived sections cannot be literal unfiltered output of their declared commands under the bound instrument. The affected ABI/provenance review is paused; matching decoded semantics are not converted into success.\",\n12: \"timestamp\": \"2026-09-10T00:44:38.527547+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-independent\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-d4c494ba02ada278030ef473\",\n \"id\": \"s-4f71bf4a5df4e5fc992bb6b2\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra should inspect session manifest verify/results/research-completion-abi-independent/run-eba7860308317f839eb35392/manifest.json and raw observed-alloc/player-append/player-copy streams, compare the three archive lines, then require fresh paired narrow and minimally widened raw stdout/stderr captures with pinned input/tool/source identities for every ownership window whose terminal instruction is truncated. Decide whether to supersede only provenance or additional completeness claims; do not infer archive production history. After repair, a fresh independent verifier must reproduce the full windows and resume ownership/NaN/static-state checks.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Session run-eba7860308317f839eb35392 fresh independent reproduction finds the repaired dedup window is correct, but exposes the same unfiltered-stop-boundary provenance contradiction in the ownership archive. objdump-2026-09-09-ownership.txt declares exact stops 0x0057e5e4, 0x0086c62e and 0x007694c0 yet prints complete c2 04 00 terminal instructions beginning at 0x0057e5e3, 0x0086c62d and 0x007694bf. Fresh GNU objdump 2.38 against the hash-matched executable prints only c2 for each command because each stop is one byte after the instruction start. Thus those archived sections cannot be literal unfiltered output of their declared commands under the bound instrument. The affected ABI/provenance review is paused; matching decoded semantics are not converted into success.\",\n \"timestamp\": \"2026-09-10T00:44:38.527547+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-4f71bf4a5df4e5fc992bb6b2.json","text":"{\n \"actor\": \"research-abi-independent\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-d4c494ba02ada278030ef473\",\n \"id\": \"s-4f71bf4a5df4e5fc992bb6b2\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra should inspect session manifest verify/results/research-completion-abi-independent/run-eba7860308317f839eb35392/manifest.json and raw observed-alloc/player-append/player-copy streams, compare the three archive lines, then require fresh paired narrow and minimally widened raw stdout/stderr captures with pinned input/tool/source identities for every ownership window whose terminal instruction is truncated. Decide whether to supersede only provenance or additional completeness claims; do not infer archive production history. After repair, a fresh independent verifier must reproduce the full windows and resume ownership/NaN/static-state checks.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Session run-eba7860308317f839eb35392 fresh independent reproduction finds the repaired dedup window is correct, but exposes the same unfiltered-stop-boundary provenance contradiction in the ownership archive. objdump-2026-09-09-ownership.txt declares exact stops 0x0057e5e4, 0x0086c62e and 0x007694c0 yet prints complete c2 04 00 terminal instructions beginning at 0x0057e5e3, 0x0086c62d and 0x007694bf. Fresh GNU objdump 2.38 against the hash-matched executable prints only c2 for each command because each stop is one byte after the instruction start. Thus those archived sections cannot be literal unfiltered output of their declared commands under the bound instrument. The affected ABI/provenance review is paused; matching decoded semantics are not converted into success.\",\n \"timestamp\": \"2026-09-10T00:44:38.527547+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-4f71bf4a5df4e5fc992bb6b2.json","time":{"start":1789017848706,"end":1789017848719}},"metadata":{"openai":{"itemId":"fc_0dc5a1904accc5b3016aa23ef879b087d19c8b7bd00570eaff"}},"id":"prt_089c5fb5f001kljg4V4Z8JXSiv","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c59824001iqYo27DZMzxoOk"}} +{"type":"tool_use","timestamp":1789017848732,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_9Xa49ewXXewfwhcahmCFKMLY","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json\nfile\n\n1: {\n2: \"actor\": \"live-record bridge architect\",\n3: \"contract\": \"research-live-record-bridge\",\n4: \"decision\": \"d-6f4134237e68860fb02e8684\",\n5: \"id\": \"s-5a78d3a0a10c1f8545df8eb1\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"probe\": \"Astra must inspect the complete 0x00885380..0x0088544a entry window and 0x00884cb0..0x00884d8f append window from verify/results/research-live-record-bridge/run-472955e277202c411388c66b, enumerate every write to [EBP-0x20] before the append call, and decide whether the transient EvTurn is indeterminate and whether final post-publication semantics remain usable. Revise/invalidate the accepted dependency interpretation and prescribe the exact generated-row wording before TurnEvents planning continues.\",\n8: \"role\": \"architecture-review\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Session run-472955e277202c411388c66b fresh pinned-binary capture contradicts the accepted dependency interpretation that EventStorage get/create initializes a miss-path temporary TurnEvents EvTurn to zero before append. In 0x00885380, local TurnEvents begins at [EBP-0x24]: 0x008853fc writes vptr, and 0x00885403/06/09 zero only nested-vector pointers at +0x08/+0x0c/+0x10. No instruction writes temporary EvTurn at [EBP-0x20] before 0x00885413 calls append. Append 0x00884d62 copies source+0x04 into destination+0x04, so the newly appended element transiently receives the uninitialized stack word; 0x0088542d overwrites the stored element EvTurn with the requested turn after temporary nested-vector destruction. SURVIVES: exact get/create ABI, full last-match scan, final returned bucket pointer, final requested-turn publication, deep nested-vector copy, and temporary nested-vector cleanup. QUALIFIED: miss-path append lifetime and unwind remain static-only. OVERTURNED: research-completion-abi/recovered-static.md statement that the temporary starts with turn zero and append deep-copies zero. No live behavior, VM, Ghidra or engine code ran. Pause affected TurnEvents architecture encoding and readiness.\",\n12: \"timestamp\": \"2026-09-10T04:14:21.422536+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"live-record bridge architect\",\n \"contract\": \"research-live-record-bridge\",\n \"decision\": \"d-6f4134237e68860fb02e8684\",\n \"id\": \"s-5a78d3a0a10c1f8545df8eb1\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra must inspect the complete 0x00885380..0x0088544a entry window and 0x00884cb0..0x00884d8f append window from verify/results/research-live-record-bridge/run-472955e277202c411388c66b, enumerate every write to [EBP-0x20] before the append call, and decide whether the transient EvTurn is indeterminate and whether final post-publication semantics remain usable. Revise/invalidate the accepted dependency interpretation and prescribe the exact generated-row wording before TurnEvents planning continues.\",\n \"role\": \"architecture-review\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Session run-472955e277202c411388c66b fresh pinned-binary capture contradicts the accepted dependency interpretation that EventStorage get/create initializes a miss-path temporary TurnEvents EvTurn to zero before append. In 0x00885380, local TurnEvents begins at [EBP-0x24]: 0x008853fc writes vptr, and 0x00885403/06/09 zero only nested-vector pointers at +0x08/+0x0c/+0x10. No instruction writes temporary EvTurn at [EBP-0x20] before 0x00885413 calls append. Append 0x00884d62 copies source+0x04 into destination+0x04, so the newly appended element transiently receives the uninitialized stack word; 0x0088542d overwrites the stored element EvTurn with the requested turn after temporary nested-vector destruction. SURVIVES: exact get/create ABI, full last-match scan, final returned bucket pointer, final requested-turn publication, deep nested-vector copy, and temporary nested-vector cleanup. QUALIFIED: miss-path append lifetime and unwind remain static-only. OVERTURNED: research-completion-abi/recovered-static.md statement that the temporary starts with turn zero and append deep-copies zero. No live behavior, VM, Ghidra or engine code ran. Pause affected TurnEvents architecture encoding and readiness.\",\n \"timestamp\": \"2026-09-10T04:14:21.422536+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json","text":"{\n \"actor\": \"live-record bridge architect\",\n \"contract\": \"research-live-record-bridge\",\n \"decision\": \"d-6f4134237e68860fb02e8684\",\n \"id\": \"s-5a78d3a0a10c1f8545df8eb1\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra must inspect the complete 0x00885380..0x0088544a entry window and 0x00884cb0..0x00884d8f append window from verify/results/research-live-record-bridge/run-472955e277202c411388c66b, enumerate every write to [EBP-0x20] before the append call, and decide whether the transient EvTurn is indeterminate and whether final post-publication semantics remain usable. Revise/invalidate the accepted dependency interpretation and prescribe the exact generated-row wording before TurnEvents planning continues.\",\n \"role\": \"architecture-review\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Session run-472955e277202c411388c66b fresh pinned-binary capture contradicts the accepted dependency interpretation that EventStorage get/create initializes a miss-path temporary TurnEvents EvTurn to zero before append. In 0x00885380, local TurnEvents begins at [EBP-0x24]: 0x008853fc writes vptr, and 0x00885403/06/09 zero only nested-vector pointers at +0x08/+0x0c/+0x10. No instruction writes temporary EvTurn at [EBP-0x20] before 0x00885413 calls append. Append 0x00884d62 copies source+0x04 into destination+0x04, so the newly appended element transiently receives the uninitialized stack word; 0x0088542d overwrites the stored element EvTurn with the requested turn after temporary nested-vector destruction. SURVIVES: exact get/create ABI, full last-match scan, final returned bucket pointer, final requested-turn publication, deep nested-vector copy, and temporary nested-vector cleanup. QUALIFIED: miss-path append lifetime and unwind remain static-only. OVERTURNED: research-completion-abi/recovered-static.md statement that the temporary starts with turn zero and append deep-copies zero. No live behavior, VM, Ghidra or engine code ran. Pause affected TurnEvents architecture encoding and readiness.\",\n \"timestamp\": \"2026-09-10T04:14:21.422536+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json","time":{"start":1789017848711,"end":1789017848731}},"metadata":{"openai":{"itemId":"fc_0dc5a1904accc5b3016aa23ef879b887d1a700f6e49193b47c"}},"id":"prt_089c5fb83001udvtDdykD13yuz","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c59824001iqYo27DZMzxoOk"}} +{"type":"tool_use","timestamp":1789017848824,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_IRODDDRtE2gTawUTu7JGUZLo","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-5c58b6a921997731f5b5ae1f.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-5c58b6a921997731f5b5ae1f.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-independent\",\n3: \"contract\": \"research-completion-abi\",\n4: \"decision\": \"d-d2a9b8be6399a6abaa0e05a5\",\n5: \"id\": \"s-5c58b6a921997731f5b5ae1f\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"probe\": \"Astra should first rerun both objdump -D -Mintel --start-address=0x00825d40 --stop-address=0x00825e65 dumps/sots.exe and the minimally widened --stop-address=0x00825e67 command against SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, archive raw stdout bytes and objdump executable hash/version, and decide whether the existing capture was manually spliced or generated with a different effective boundary. Repair provenance before independent ABI interpretation resumes.\",\n8: \"role\": \"verifier\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Independent reproduction falsified the handoff claim that objdump-2026-09-09-dedup-helper.txt is unfiltered output from its exact first command. With the SHA256-matched executable and GNU objdump 2.38, the declared stop-address 0x00825e65 truncates the three-byte instruction beginning at 0x00825e64: current stdout is bytes c2 while the archive records c2 08 00. The other three declared windows reproduce exactly after only line-end whitespace normalization. This is a provenance/instrument-boundary contradiction; dedup interpretation is paused rather than converting the otherwise matching instructions into success.\",\n12: \"timestamp\": \"2026-09-10T00:19:20.577736+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-independent\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-d2a9b8be6399a6abaa0e05a5\",\n \"id\": \"s-5c58b6a921997731f5b5ae1f\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra should first rerun both objdump -D -Mintel --start-address=0x00825d40 --stop-address=0x00825e65 dumps/sots.exe and the minimally widened --stop-address=0x00825e67 command against SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, archive raw stdout bytes and objdump executable hash/version, and decide whether the existing capture was manually spliced or generated with a different effective boundary. Repair provenance before independent ABI interpretation resumes.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent reproduction falsified the handoff claim that objdump-2026-09-09-dedup-helper.txt is unfiltered output from its exact first command. With the SHA256-matched executable and GNU objdump 2.38, the declared stop-address 0x00825e65 truncates the three-byte instruction beginning at 0x00825e64: current stdout is bytes c2 while the archive records c2 08 00. The other three declared windows reproduce exactly after only line-end whitespace normalization. This is a provenance/instrument-boundary contradiction; dedup interpretation is paused rather than converting the otherwise matching instructions into success.\",\n \"timestamp\": \"2026-09-10T00:19:20.577736+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-5c58b6a921997731f5b5ae1f.json","text":"{\n \"actor\": \"research-abi-independent\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-d2a9b8be6399a6abaa0e05a5\",\n \"id\": \"s-5c58b6a921997731f5b5ae1f\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra should first rerun both objdump -D -Mintel --start-address=0x00825d40 --stop-address=0x00825e65 dumps/sots.exe and the minimally widened --stop-address=0x00825e67 command against SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, archive raw stdout bytes and objdump executable hash/version, and decide whether the existing capture was manually spliced or generated with a different effective boundary. Repair provenance before independent ABI interpretation resumes.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent reproduction falsified the handoff claim that objdump-2026-09-09-dedup-helper.txt is unfiltered output from its exact first command. With the SHA256-matched executable and GNU objdump 2.38, the declared stop-address 0x00825e65 truncates the three-byte instruction beginning at 0x00825e64: current stdout is bytes c2 while the archive records c2 08 00. The other three declared windows reproduce exactly after only line-end whitespace normalization. This is a provenance/instrument-boundary contradiction; dedup interpretation is paused rather than converting the otherwise matching instructions into success.\",\n \"timestamp\": \"2026-09-10T00:19:20.577736+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-5c58b6a921997731f5b5ae1f.json","time":{"start":1789017848744,"end":1789017848803}},"metadata":{"openai":{"itemId":"fc_0dc5a1904accc5b3016aa23ef879c087d1a187b1170dcd5888"}},"id":"prt_089c5fb88001xejMsZ7XImyuDb","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c59824001iqYo27DZMzxoOk"}} +{"type":"tool_use","timestamp":1789017848824,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_o6710mtHFhr89aBtJMFPdkqD","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json\nfile\n\n1: {\n2: \"actor\": \"rollout-lead\",\n3: \"contract\": \"controls-bootstrap\",\n4: \"decision\": \"d-6239404c8f40351310c8abf0\",\n5: \"id\": \"s-6d1fcc617a20ca2bcbffc0cc\",\n6: \"model\": \"openai/gpt-6-astra\",\n7: \"probe\": \"Allow verifier launch in verification and integration; reject owner overlap, source drift and open surprises in both.\",\n8: \"role\": \"lead\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Independent Astra R8: verifier launch permits verification only, but final integrated evidence requires a fresh verifier execution in integration.\",\n12: \"timestamp\": \"2026-09-09T22:09:56.316247+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"rollout-lead\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-6239404c8f40351310c8abf0\",\n \"id\": \"s-6d1fcc617a20ca2bcbffc0cc\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Allow verifier launch in verification and integration; reject owner overlap, source drift and open surprises in both.\",\n \"role\": \"lead\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent Astra R8: verifier launch permits verification only, but final integrated evidence requires a fresh verifier execution in integration.\",\n \"timestamp\": \"2026-09-09T22:09:56.316247+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json","text":"{\n \"actor\": \"rollout-lead\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-6239404c8f40351310c8abf0\",\n \"id\": \"s-6d1fcc617a20ca2bcbffc0cc\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Allow verifier launch in verification and integration; reject owner overlap, source drift and open surprises in both.\",\n \"role\": \"lead\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent Astra R8: verifier launch permits verification only, but final integrated evidence requires a fresh verifier execution in integration.\",\n \"timestamp\": \"2026-09-09T22:09:56.316247+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json","time":{"start":1789017848749,"end":1789017848806}},"metadata":{"openai":{"itemId":"fc_0dc5a1904accc5b3016aa23ef879c487d194ff0fbb710be307"}},"id":"prt_089c5fbaa001d2I52nH8kBuHn8","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c59824001iqYo27DZMzxoOk"}} +{"type":"tool_use","timestamp":1789017848824,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_9VGg7IMwpVE1pXZAaMVHED4B","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-8996365dab2cd6dc0e17bb9f.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-8996365dab2cd6dc0e17bb9f.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-analyst\",\n3: \"contract\": \"research-completion-abi\",\n4: \"decision\": \"d-2ff30c9f5355116bea822924\",\n5: \"id\": \"s-8996365dab2cd6dc0e17bb9f\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"probe\": \"First verify 0x0046f8c0 is std::string equality (or otherwise characterize it) from independent raw instructions/callers; then use or construct two same-bucket PlayerEvents identical in EvAct/EvLoc/EvPos/EvMsg/EvImg but differing only in EvDsc. If 0x00825d40 returns null they are distinct and EvDsc is compared; if it returns the existing element the inherited omission survives and the call has another meaning.\",\n8: \"role\": \"analyst\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Fresh raw GNU objdump capture contradicts the standing event dedup semantic claim in findings/subsystems/events.md:185 that EvDsc is not compared. At 0x00825e11 candidate+0x08 and 0x00825e15 stored+0x08 are passed to 0x0046f8c0; its boolean result at 0x00825e21 branches to match return only when true. This occurs after EvAct, EvLoc, EvPos, EvMsg and EvImg comparisons, so description appears to participate in equality. The affected dedup interpretation is paused; no implementation or acceptance claim may use either version pending Astra resolution.\",\n12: \"timestamp\": \"2026-09-09T23:47:56.138628+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-analyst\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-2ff30c9f5355116bea822924\",\n \"id\": \"s-8996365dab2cd6dc0e17bb9f\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"First verify 0x0046f8c0 is std::string equality (or otherwise characterize it) from independent raw instructions/callers; then use or construct two same-bucket PlayerEvents identical in EvAct/EvLoc/EvPos/EvMsg/EvImg but differing only in EvDsc. If 0x00825d40 returns null they are distinct and EvDsc is compared; if it returns the existing element the inherited omission survives and the call has another meaning.\",\n \"role\": \"analyst\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Fresh raw GNU objdump capture contradicts the standing event dedup semantic claim in findings/subsystems/events.md:185 that EvDsc is not compared. At 0x00825e11 candidate+0x08 and 0x00825e15 stored+0x08 are passed to 0x0046f8c0; its boolean result at 0x00825e21 branches to match return only when true. This occurs after EvAct, EvLoc, EvPos, EvMsg and EvImg comparisons, so description appears to participate in equality. The affected dedup interpretation is paused; no implementation or acceptance claim may use either version pending Astra resolution.\",\n \"timestamp\": \"2026-09-09T23:47:56.138628+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-8996365dab2cd6dc0e17bb9f.json","text":"{\n \"actor\": \"research-abi-analyst\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-2ff30c9f5355116bea822924\",\n \"id\": \"s-8996365dab2cd6dc0e17bb9f\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"First verify 0x0046f8c0 is std::string equality (or otherwise characterize it) from independent raw instructions/callers; then use or construct two same-bucket PlayerEvents identical in EvAct/EvLoc/EvPos/EvMsg/EvImg but differing only in EvDsc. If 0x00825d40 returns null they are distinct and EvDsc is compared; if it returns the existing element the inherited omission survives and the call has another meaning.\",\n \"role\": \"analyst\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Fresh raw GNU objdump capture contradicts the standing event dedup semantic claim in findings/subsystems/events.md:185 that EvDsc is not compared. At 0x00825e11 candidate+0x08 and 0x00825e15 stored+0x08 are passed to 0x0046f8c0; its boolean result at 0x00825e21 branches to match return only when true. This occurs after EvAct, EvLoc, EvPos, EvMsg and EvImg comparisons, so description appears to participate in equality. The affected dedup interpretation is paused; no implementation or acceptance claim may use either version pending Astra resolution.\",\n \"timestamp\": \"2026-09-09T23:47:56.138628+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-8996365dab2cd6dc0e17bb9f.json","time":{"start":1789017848755,"end":1789017848808}},"metadata":{"openai":{"itemId":"fc_0dc5a1904accc5b3016aa23ef879cc87d18ee59e675561ec4d"}},"id":"prt_089c5fbaf001BkuJfFbvBXoveY","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c59824001iqYo27DZMzxoOk"}} +{"type":"tool_use","timestamp":1789017848824,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_P9Tmac4x5YoZTDdyUAQYa2I2","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-abd1c3613c9922cc94c608d5.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-abd1c3613c9922cc94c608d5.json\nfile\n\n1: {\n2: \"actor\": \"final-controls-verifier\",\n3: \"contract\": \"controls-bootstrap\",\n4: \"decision\": \"d-d2aeed91781c4da6057f00a7\",\n5: \"id\": \"s-abd1c3613c9922cc94c608d5\",\n6: \"model\": \"openai/gpt-5.6-terra\",\n7: \"probe\": \"From canonical RE, run source-binding once with no worktree arguments and once with the assigned paired paths; confirm the differing RE digest and absence of paired tools/campaign.py plus verify/campaign/test_controls.py. Astra must decide whether independent integrated reproduction may use only dirty canonical trees or provide source-identical linked worktrees and repeat/attest verification.\",\n8: \"role\": \"verifier\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Falsified paired-worktree reproducibility assumption. The assigned /tmp/opencode/sots-launch-re is clean at the pinned RE HEAD but lacks tools/campaign.py and verify/campaign/test_controls.py; its source binding is 67b7b60509fe43c8d23382003fed069fb32549094eea0c039b75475e32a7a9eb, not the evidence binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Engine paired binding likewise differs (949dfb46... versus ccd8e020...). Canonical integrated trees do rehash exactly to the claimed binding and declared binary/input/outcome hashes match, but the supplied isolated paired source cannot reproduce the package from handoff alone. This blocks the final independent integrated verdict under the required linked-worktree/reproduction guard.\",\n12: \"timestamp\": \"2026-09-09T22:25:50.265100+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"final-controls-verifier\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-d2aeed91781c4da6057f00a7\",\n \"id\": \"s-abd1c3613c9922cc94c608d5\",\n \"model\": \"openai/gpt-5.6-terra\",\n \"probe\": \"From canonical RE, run source-binding once with no worktree arguments and once with the assigned paired paths; confirm the differing RE digest and absence of paired tools/campaign.py plus verify/campaign/test_controls.py. Astra must decide whether independent integrated reproduction may use only dirty canonical trees or provide source-identical linked worktrees and repeat/attest verification.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Falsified paired-worktree reproducibility assumption. The assigned /tmp/opencode/sots-launch-re is clean at the pinned RE HEAD but lacks tools/campaign.py and verify/campaign/test_controls.py; its source binding is 67b7b60509fe43c8d23382003fed069fb32549094eea0c039b75475e32a7a9eb, not the evidence binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Engine paired binding likewise differs (949dfb46... versus ccd8e020...). Canonical integrated trees do rehash exactly to the claimed binding and declared binary/input/outcome hashes match, but the supplied isolated paired source cannot reproduce the package from handoff alone. This blocks the final independent integrated verdict under the required linked-worktree/reproduction guard.\",\n \"timestamp\": \"2026-09-09T22:25:50.265100+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-abd1c3613c9922cc94c608d5.json","text":"{\n \"actor\": \"final-controls-verifier\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-d2aeed91781c4da6057f00a7\",\n \"id\": \"s-abd1c3613c9922cc94c608d5\",\n \"model\": \"openai/gpt-5.6-terra\",\n \"probe\": \"From canonical RE, run source-binding once with no worktree arguments and once with the assigned paired paths; confirm the differing RE digest and absence of paired tools/campaign.py plus verify/campaign/test_controls.py. Astra must decide whether independent integrated reproduction may use only dirty canonical trees or provide source-identical linked worktrees and repeat/attest verification.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Falsified paired-worktree reproducibility assumption. The assigned /tmp/opencode/sots-launch-re is clean at the pinned RE HEAD but lacks tools/campaign.py and verify/campaign/test_controls.py; its source binding is 67b7b60509fe43c8d23382003fed069fb32549094eea0c039b75475e32a7a9eb, not the evidence binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Engine paired binding likewise differs (949dfb46... versus ccd8e020...). Canonical integrated trees do rehash exactly to the claimed binding and declared binary/input/outcome hashes match, but the supplied isolated paired source cannot reproduce the package from handoff alone. This blocks the final independent integrated verdict under the required linked-worktree/reproduction guard.\",\n \"timestamp\": \"2026-09-09T22:25:50.265100+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-abd1c3613c9922cc94c608d5.json","time":{"start":1789017848760,"end":1789017848810}},"metadata":{"openai":{"itemId":"fc_0dc5a1904accc5b3016aa23ef879d487d18599c8575c4b3cf0"}},"id":"prt_089c5fbb5001swzV6cQf6l7Jv7","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c59824001iqYo27DZMzxoOk"}} +{"type":"tool_use","timestamp":1789017848824,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_qV8Coq8GpRjQwQyhBF3WsjBv","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-c6786945b302de2a0b629960.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-c6786945b302de2a0b629960.json\nfile\n\n1: {\n2: \"actor\": \"live-record surprise resolver\",\n3: \"contract\": \"research-completion-abi\",\n4: \"decision\": \"d-b51f3f76803e852ed250846a\",\n5: \"id\": \"s-c6786945b302de2a0b629960\",\n6: \"model\": \"openai/gpt-6-astra\",\n7: \"probe\": \"Enumerate all stack writes from 0x885380 through 0x885413 and map append source+4 and final last-0x14 store; freshly rehash binary/tool and reproduce these complete windows under an authorized read-only analyst session before corrected evidence acceptance.\",\n8: \"role\": \"resolver\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Propagated affected acceptance from bridge surprise s-5a78d3a0a10c1f8545df8eb1, resolver session run-f63d1e050a7ee3fac7b44885. recovered-static.md lines 68-69 asserts temporary EvTurn zero and copy of zero. Hash-bound raw get/create and append captures run-472955e277202c411388c66b contradict that assertion: no write to EBP-0x20 before call; source+4 copied at 0x884d62/6c; stored requested turn written only at 0x88542d after temporary nested cleanup. This is static interpretation falsification, not observed runtime nondeterminism. Both integrated evidence records and independent verdict must lose current acceptance pending corrected source-bound reproduction; raw captures and archived saves are retained as historical measurements.\",\n12: \"timestamp\": \"2026-09-10T04:18:25.950030+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"live-record surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-b51f3f76803e852ed250846a\",\n \"id\": \"s-c6786945b302de2a0b629960\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Enumerate all stack writes from 0x885380 through 0x885413 and map append source+4 and final last-0x14 store; freshly rehash binary/tool and reproduce these complete windows under an authorized read-only analyst session before corrected evidence acceptance.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Propagated affected acceptance from bridge surprise s-5a78d3a0a10c1f8545df8eb1, resolver session run-f63d1e050a7ee3fac7b44885. recovered-static.md lines 68-69 asserts temporary EvTurn zero and copy of zero. Hash-bound raw get/create and append captures run-472955e277202c411388c66b contradict that assertion: no write to EBP-0x20 before call; source+4 copied at 0x884d62/6c; stored requested turn written only at 0x88542d after temporary nested cleanup. This is static interpretation falsification, not observed runtime nondeterminism. Both integrated evidence records and independent verdict must lose current acceptance pending corrected source-bound reproduction; raw captures and archived saves are retained as historical measurements.\",\n \"timestamp\": \"2026-09-10T04:18:25.950030+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-c6786945b302de2a0b629960.json","text":"{\n \"actor\": \"live-record surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-b51f3f76803e852ed250846a\",\n \"id\": \"s-c6786945b302de2a0b629960\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Enumerate all stack writes from 0x885380 through 0x885413 and map append source+4 and final last-0x14 store; freshly rehash binary/tool and reproduce these complete windows under an authorized read-only analyst session before corrected evidence acceptance.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Propagated affected acceptance from bridge surprise s-5a78d3a0a10c1f8545df8eb1, resolver session run-f63d1e050a7ee3fac7b44885. recovered-static.md lines 68-69 asserts temporary EvTurn zero and copy of zero. Hash-bound raw get/create and append captures run-472955e277202c411388c66b contradict that assertion: no write to EBP-0x20 before call; source+4 copied at 0x884d62/6c; stored requested turn written only at 0x88542d after temporary nested cleanup. This is static interpretation falsification, not observed runtime nondeterminism. Both integrated evidence records and independent verdict must lose current acceptance pending corrected source-bound reproduction; raw captures and archived saves are retained as historical measurements.\",\n \"timestamp\": \"2026-09-10T04:18:25.950030+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-c6786945b302de2a0b629960.json","time":{"start":1789017848766,"end":1789017848813}},"metadata":{"openai":{"itemId":"fc_0dc5a1904accc5b3016aa23ef879dc87d19c68b954bf1ee23c"}},"id":"prt_089c5fbba001VD3Y3tPXhLBgAl","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c59824001iqYo27DZMzxoOk"}} +{"type":"tool_use","timestamp":1789017848824,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_plmlgZ37UJthvy7x94Kbl8vL","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-d2c8ec81e980396f2306f8fe.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-d2c8ec81e980396f2306f8fe.json\nfile\n\n1: {\n2: \"actor\": \"live-record bridge architect\",\n3: \"contract\": \"research-live-record-bridge\",\n4: \"decision\": \"d-3205df5e8425dc9e1779e673\",\n5: \"id\": \"s-d2c8ec81e980396f2306f8fe\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"probe\": \"Astra must compare the stored file with fresh command stdout under the pinned binary/tool identity, decide whether a byte-exact replacement supersedes only capture provenance, and require a fresh hash-bound reserve manifest before the ObservedTech append/growth row is treated as reconciled.\",\n8: \"role\": \"architecture-review\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Fresh provenance check falsified the claim that verify/results/research-live-record-bridge/run-ebf85a84ad4247c38792a787/observed-reserve.stdout.txt is byte-exact raw stdout. The stored manually transcribed capture is 2464 bytes/SHA256 5d10954f54a2f8c731ee8d4760414851963ab8dc539ecb66383cf09e176b5c87; rerunning pinned GNU objdump 2.38 against the hash-matched executable with start 0x007b5820 and stop 0x007b5899 produces 2472 bytes/SHA256 2d011ed96329c4c4ff462cbfd65decac9dccf40558765244c769be1dedc92275. First difference is one alignment space at byte 477. SURVIVES: binary/tool/source identities, decoded instructions, append ABI branches, reserve capacity rule, and references to accepted append/reallocator captures. QUALIFIED: the new reserve interpretation is an observation awaiting a byte-exact immutable capture. OVERTURNED: the newly added file cannot be called raw/unfiltered or used as source-bound capture evidence. Affected ABI-row promotion is paused; contract remains proposed. No implementation or lab work occurred.\",\n12: \"timestamp\": \"2026-09-10T02:50:12.833918+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"live-record bridge architect\",\n \"contract\": \"research-live-record-bridge\",\n \"decision\": \"d-3205df5e8425dc9e1779e673\",\n \"id\": \"s-d2c8ec81e980396f2306f8fe\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra must compare the stored file with fresh command stdout under the pinned binary/tool identity, decide whether a byte-exact replacement supersedes only capture provenance, and require a fresh hash-bound reserve manifest before the ObservedTech append/growth row is treated as reconciled.\",\n \"role\": \"architecture-review\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Fresh provenance check falsified the claim that verify/results/research-live-record-bridge/run-ebf85a84ad4247c38792a787/observed-reserve.stdout.txt is byte-exact raw stdout. The stored manually transcribed capture is 2464 bytes/SHA256 5d10954f54a2f8c731ee8d4760414851963ab8dc539ecb66383cf09e176b5c87; rerunning pinned GNU objdump 2.38 against the hash-matched executable with start 0x007b5820 and stop 0x007b5899 produces 2472 bytes/SHA256 2d011ed96329c4c4ff462cbfd65decac9dccf40558765244c769be1dedc92275. First difference is one alignment space at byte 477. SURVIVES: binary/tool/source identities, decoded instructions, append ABI branches, reserve capacity rule, and references to accepted append/reallocator captures. QUALIFIED: the new reserve interpretation is an observation awaiting a byte-exact immutable capture. OVERTURNED: the newly added file cannot be called raw/unfiltered or used as source-bound capture evidence. Affected ABI-row promotion is paused; contract remains proposed. No implementation or lab work occurred.\",\n \"timestamp\": \"2026-09-10T02:50:12.833918+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-d2c8ec81e980396f2306f8fe.json","text":"{\n \"actor\": \"live-record bridge architect\",\n \"contract\": \"research-live-record-bridge\",\n \"decision\": \"d-3205df5e8425dc9e1779e673\",\n \"id\": \"s-d2c8ec81e980396f2306f8fe\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra must compare the stored file with fresh command stdout under the pinned binary/tool identity, decide whether a byte-exact replacement supersedes only capture provenance, and require a fresh hash-bound reserve manifest before the ObservedTech append/growth row is treated as reconciled.\",\n \"role\": \"architecture-review\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Fresh provenance check falsified the claim that verify/results/research-live-record-bridge/run-ebf85a84ad4247c38792a787/observed-reserve.stdout.txt is byte-exact raw stdout. The stored manually transcribed capture is 2464 bytes/SHA256 5d10954f54a2f8c731ee8d4760414851963ab8dc539ecb66383cf09e176b5c87; rerunning pinned GNU objdump 2.38 against the hash-matched executable with start 0x007b5820 and stop 0x007b5899 produces 2472 bytes/SHA256 2d011ed96329c4c4ff462cbfd65decac9dccf40558765244c769be1dedc92275. First difference is one alignment space at byte 477. SURVIVES: binary/tool/source identities, decoded instructions, append ABI branches, reserve capacity rule, and references to accepted append/reallocator captures. QUALIFIED: the new reserve interpretation is an observation awaiting a byte-exact immutable capture. OVERTURNED: the newly added file cannot be called raw/unfiltered or used as source-bound capture evidence. Affected ABI-row promotion is paused; contract remains proposed. No implementation or lab work occurred.\",\n \"timestamp\": \"2026-09-10T02:50:12.833918+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-d2c8ec81e980396f2306f8fe.json","time":{"start":1789017848771,"end":1789017848815}},"metadata":{"openai":{"itemId":"fc_0dc5a1904accc5b3016aa23ef879e487d19a39997116e8b0c9"}},"id":"prt_089c5fbc0001lZYelacS2yxavE","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c59824001iqYo27DZMzxoOk"}} +{"type":"tool_use","timestamp":1789017848824,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_v0m0wQGc8dPkgPlF5rC0DJSB","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-d44b9f9e62272794d88bbed6.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-d44b9f9e62272794d88bbed6.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-correction-verifier\",\n3: \"contract\": \"research-completion-abi\",\n4: \"decision\": \"d-0bb927e63b915c87a58d4257\",\n5: \"id\": \"s-d44b9f9e62272794d88bbed6\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"probe\": \"Astra must decide the provenance repair together with s-4f4fb5e8ee42ccff7e68efb5: require a newly generated current-session capture harness or direct command manifest that takes session as an explicit immutable input, then rerun all exact and complete-boundary windows. Reject the stale-session manifest rather than attaching it to a current verdict.\",\n8: \"role\": \"verifier\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Independent capture harness provenance is stale across fresh quanta: reproduce_run_ee78b8773688ca09f8046e21.py was inherited from the prior checkpoint and hard-codes session run-ee78b8773688ca09f8046e21. Executing it during current session run-5bd0e537bb0c4c4f43987ac1 generated fresh timestamp/raw streams but a manifest claiming the old session. The raw subprocess outputs remain measurements, but the manifest is not valid current-session evidence and must not be self-certified or relabeled after the fact. The current-session report explicitly records this defect. Affected verification is already paused by boundary surprise s-4f4fb5e8ee42ccff7e68efb5.\",\n12: \"timestamp\": \"2026-09-10T04:46:35.617690+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-0bb927e63b915c87a58d4257\",\n \"id\": \"s-d44b9f9e62272794d88bbed6\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra must decide the provenance repair together with s-4f4fb5e8ee42ccff7e68efb5: require a newly generated current-session capture harness or direct command manifest that takes session as an explicit immutable input, then rerun all exact and complete-boundary windows. Reject the stale-session manifest rather than attaching it to a current verdict.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent capture harness provenance is stale across fresh quanta: reproduce_run_ee78b8773688ca09f8046e21.py was inherited from the prior checkpoint and hard-codes session run-ee78b8773688ca09f8046e21. Executing it during current session run-5bd0e537bb0c4c4f43987ac1 generated fresh timestamp/raw streams but a manifest claiming the old session. The raw subprocess outputs remain measurements, but the manifest is not valid current-session evidence and must not be self-certified or relabeled after the fact. The current-session report explicitly records this defect. Affected verification is already paused by boundary surprise s-4f4fb5e8ee42ccff7e68efb5.\",\n \"timestamp\": \"2026-09-10T04:46:35.617690+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-d44b9f9e62272794d88bbed6.json","text":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"contract\": \"research-completion-abi\",\n \"decision\": \"d-0bb927e63b915c87a58d4257\",\n \"id\": \"s-d44b9f9e62272794d88bbed6\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra must decide the provenance repair together with s-4f4fb5e8ee42ccff7e68efb5: require a newly generated current-session capture harness or direct command manifest that takes session as an explicit immutable input, then rerun all exact and complete-boundary windows. Reject the stale-session manifest rather than attaching it to a current verdict.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent capture harness provenance is stale across fresh quanta: reproduce_run_ee78b8773688ca09f8046e21.py was inherited from the prior checkpoint and hard-codes session run-ee78b8773688ca09f8046e21. Executing it during current session run-5bd0e537bb0c4c4f43987ac1 generated fresh timestamp/raw streams but a manifest claiming the old session. The raw subprocess outputs remain measurements, but the manifest is not valid current-session evidence and must not be self-certified or relabeled after the fact. The current-session report explicitly records this defect. Affected verification is already paused by boundary surprise s-4f4fb5e8ee42ccff7e68efb5.\",\n \"timestamp\": \"2026-09-10T04:46:35.617690+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-d44b9f9e62272794d88bbed6.json","time":{"start":1789017848777,"end":1789017848818}},"metadata":{"openai":{"itemId":"fc_0dc5a1904accc5b3016aa23ef879ec87d19feb39b997907378"}},"id":"prt_089c5fbc5001LilqbWFtVdkofr","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c59824001iqYo27DZMzxoOk"}} +{"type":"tool_use","timestamp":1789017848824,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_ZTlrvMwYAHUn5xnXvZsdLJbn","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/surprises/s-f1c41532e618c77d41538902.json"},"output":"/home/alex/sots-re/campaign/runtime/surprises/s-f1c41532e618c77d41538902.json\nfile\n\n1: {\n2: \"actor\": \"controls-architect\",\n3: \"contract\": \"controls-bootstrap\",\n4: \"decision\": \"d-ab717735fc6c1661919f6894\",\n5: \"id\": \"s-f1c41532e618c77d41538902\",\n6: \"model\": \"openai/gpt-6-astra\",\n7: \"probe\": \"Separate recovery identity/basis/artifact validation from end-run freshness; test old valid recovery state, missing/mismatched state, fresh end-run checkpoint and a resolution-only Astra launch with affected workers still blocked.\",\n8: \"role\": \"architecture-review\",\n9: \"schema\": \"sots-surprise/1\",\n10: \"status\": \"resolved\",\n11: \"summary\": \"Independent review R6: current launch guard applies 15-minute end-run freshness to recovery, preventing next-day recovery from valid durable state; unconditional open-surprise rejection also prevents a resolver quantum. Assignment explicitly requested no-open-surprise launch guards, so the resolver exception requires lead clarification.\",\n12: \"timestamp\": \"2026-09-09T21:34:59.734916+00:00\"\n13: }\n\n(End of file - total 13 lines)\n","metadata":{"preview":"{\n \"actor\": \"controls-architect\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-ab717735fc6c1661919f6894\",\n \"id\": \"s-f1c41532e618c77d41538902\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Separate recovery identity/basis/artifact validation from end-run freshness; test old valid recovery state, missing/mismatched state, fresh end-run checkpoint and a resolution-only Astra launch with affected workers still blocked.\",\n \"role\": \"architecture-review\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent review R6: current launch guard applies 15-minute end-run freshness to recovery, preventing next-day recovery from valid durable state; unconditional open-surprise rejection also prevents a resolver quantum. Assignment explicitly requested no-open-surprise launch guards, so the resolver exception requires lead clarification.\",\n \"timestamp\": \"2026-09-09T21:34:59.734916+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/surprises/s-f1c41532e618c77d41538902.json","text":"{\n \"actor\": \"controls-architect\",\n \"contract\": \"controls-bootstrap\",\n \"decision\": \"d-ab717735fc6c1661919f6894\",\n \"id\": \"s-f1c41532e618c77d41538902\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Separate recovery identity/basis/artifact validation from end-run freshness; test old valid recovery state, missing/mismatched state, fresh end-run checkpoint and a resolution-only Astra launch with affected workers still blocked.\",\n \"role\": \"architecture-review\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"resolved\",\n \"summary\": \"Independent review R6: current launch guard applies 15-minute end-run freshness to recovery, preventing next-day recovery from valid durable state; unconditional open-surprise rejection also prevents a resolver quantum. Assignment explicitly requested no-open-surprise launch guards, so the resolver exception requires lead clarification.\",\n \"timestamp\": \"2026-09-09T21:34:59.734916+00:00\"\n}","lineStart":1,"lineEnd":13,"totalLines":13,"truncated":false}},"title":"campaign/runtime/surprises/s-f1c41532e618c77d41538902.json","time":{"start":1789017848782,"end":1789017848820}},"metadata":{"openai":{"itemId":"fc_0dc5a1904accc5b3016aa23ef879f487d1b11c024749ba97c1"}},"id":"prt_089c5fbca001oMPOHa83U5QiLa","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c59824001iqYo27DZMzxoOk"}} +{"type":"step_finish","timestamp":1789017848874,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c5fc25001k44HKCwl44TcJb","reason":"tool-calls","snapshot":"5eced6b897101f7e0ca152efecf28f3e8ad1e643","messageID":"msg_089c59824001iqYo27DZMzxoOk","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":26318,"input":12888,"output":595,"reasoning":35,"cache":{"write":0,"read":12800}},"cost":0}} +{"type":"step_start","timestamp":1789017850533,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c602a10013Wzuy5MZ3JEVHX","messageID":"msg_089c5fc590012gWptrcPjqA311","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"601eacebc19e7cba44121b7294eb230e812811a6","type":"step-start"}} +{"type":"tool_use","timestamp":1789017863508,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"glob","callID":"call_67oIpmdxGD3q7PmVpI84iSdW","state":{"status":"completed","input":{"path":"/home/alex/sots-re/campaign/runtime/decisions","pattern":"*.json"},"output":"/home/alex/sots-re/campaign/runtime/decisions/d-d4c494ba02ada278030ef473.json\n/home/alex/sots-re/campaign/runtime/decisions/d-d2aeed91781c4da6057f00a7.json\n/home/alex/sots-re/campaign/runtime/decisions/d-ab717735fc6c1661919f6894.json\n/home/alex/sots-re/campaign/runtime/decisions/d-6239404c8f40351310c8abf0.json\n/home/alex/sots-re/campaign/runtime/decisions/d-2570bf9c76ae66711bdac461.json\n/home/alex/sots-re/campaign/runtime/decisions/d-42c6d0b4ee5114e6f2e07c99.json\n/home/alex/sots-re/campaign/runtime/decisions/d-d2a9b8be6399a6abaa0e05a5.json\n/home/alex/sots-re/campaign/runtime/decisions/d-b51f3f76803e852ed250846a.json\n/home/alex/sots-re/campaign/runtime/decisions/d-6f4134237e68860fb02e8684.json\n/home/alex/sots-re/campaign/runtime/decisions/d-2ff30c9f5355116bea822924.json\n/home/alex/sots-re/campaign/runtime/decisions/d-0bb927e63b915c87a58d4257.json\n/home/alex/sots-re/campaign/runtime/decisions/d-fd5aff1eaf78a8c15d96723c.json\n/home/alex/sots-re/campaign/runtime/decisions/d-3205df5e8425dc9e1779e673.json","metadata":{"count":13,"truncated":false},"title":"campaign/runtime/decisions","time":{"start":1789017863484,"end":1789017863500}},"metadata":{"openai":{"itemId":"fc_038b7318c5e3845d016aa23f07516487d18c7edeb6ab6db029"}},"id":"prt_089c635080012RuXSmr2dhY9Cf","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5fc590012gWptrcPjqA311"}} +{"type":"tool_use","timestamp":1789017863522,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_KYB8WTH6o7gkM9vFdVUbBt8Q","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/research/research-completion-abi.md"},"output":"/home/alex/sots-re/campaign/research/research-completion-abi.md\nfile\n\n1: # Completion record ABI recovery\n2: \n3: Static handoff only. The provenance index is\n4: `verify/results/research-completion-abi/reva-2026-09-09-index.md`; the regenerated instruction\n5: capture and interpretation are respectively\n6: `verify/results/research-completion-abi/objdump-2026-09-09-ownership.txt` and\n7: `verify/results/research-completion-abi/recovered-static.md`. The complete dedup/helper repair is\n8: `verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt`; its first-window raw\n9: provenance is superseded by the paired captures and identity record in\n10: `verify/results/research-completion-abi/objdump-2026-09-10-boundary-repair.md` under Astra decision\n11: `d-d2a9b8be6399a6abaa0e05a5`. Input identity is `dumps/sots.exe`,\n12: SHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841` / MD5\n13: `9969481c39f4b33a8a21c48b62abee4c`.\n14: \n15: The ownership archive's terminal-byte provenance is likewise superseded by the complete package\n16: `verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/` under Astra decision\n17: `d-d4c494ba02ada278030ef473`. Its six narrow/wide pairs, raw section-byte checks and full ten-window\n18: audit establish the encoded return immediates while preserving the static-only limitation. The\n19: package found three additional truncated historical stops (ObservedTech append/reallocator and\n20: string allocation/replacement); their widened streams are now the byte authority. No archive\n21: production-history inference or live-safety claim is made.\n22: \n23: The TurnEvents correction's current-session boundary authority is\n24: `verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/`. It supersedes the stale-session\n25: attribution and truncated nested-copy stream invalidated by decisions\n26: `d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. The package binds the actual session\n27: and a fail-if-used output directory; captures complete helper authority through `0x0077992f`; and\n28: retains `0x00779a20` as an expected-failing boundary beside complete `0x00779a21`, `0x00779a23`, and\n29: `0x00779a28` controls plus raw bytes. It is analyst static evidence awaiting a fresh independent\n30: verifier, not restored acceptance.\n31: \n32: ## Implementable machine boundaries recovered\n33: \n34: * `0x008562a0`: ObservedTech default constructor, ECX receiver, EAX return, plain `ret`.\n35: * `0x007b7320`: ObservedTech vector append, ECX receiver plus one stack word, `ret 4`; stride `0x2c`.\n36: Its copy helper is `0x0079a150` (cdecl-style allocator/destination/source stack arguments), which copy-constructs the embedded string rather than copying a\n37: vector element header. Capacity growth is `0x007b5820` -> `0x007b34e0` -> `0x0057e590`.\n38: * `0x0057e590` calls `0x00924fb6` with `count * 0x2c`; reallocation destroys every old element via\n39: virtual slot 0 with zero and frees the array through `0x00924faa`. These are MSVCR100 scalar-new\n40: and scalar-delete import thunks, not clean-room allocator operations.\n41: * `0x0086c580`: PlayerEvent vector append, ECX receiver plus one stack word, `ret 4`; stride `0x74`.\n42: It grows via `0x00869500` and copy-constructs through `0x007693f0` (ECX destination, stack source,\n43: EAX destination return, ret 4), independently assigning all\n44: three strings. `0x0061ae90` releases each long string via `0x00924faa` when capacity is `>= 0x10`.\n45: * `0x004249a0` (reached by `0x00425430` assignment) allocates through `0x00924fb6` and releases a\n46: prior long destination buffer through `0x00924faa`. A temporary long string is therefore not\n47: transferable by raw header copy.\n48: * `0x00885380`: get-or-create TurnEvents bucket, ECX EventStorage receiver plus stack turn, EAX\n49: bucket return, `ret 4`. It returns the last existing matching turn. On absence it initializes the\n50: stack bucket's vptr and empty nested-vector header but **not** its `EvTurn`; `0x00884cb0` copies\n51: that incoming stack word and deep-copies the nested vector. After temporary nested-vector cleanup,\n52: get/create writes the requested turn into the stored last element and returns it. The transient\n53: word is not measured randomness or a zero default. Fresh correction capture:\n54: `verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/`, governed by\n55: `d-b51f3f76803e852ed250846a`.\n56: * `0x00884cb0`: outer TurnEvents vector append, ECX vector receiver plus stack source, `ret 4`,\n57: stride `0x18`. Full-capacity growth is `0x008841a0` -> `0x00883a60`; allocation is\n58: `0x006e8f50` -> `0x00924fb6` with `count * 0x18`. Existing buckets are copy-constructed by\n59: `0x0077fed0`, including an independently allocated/copied nested PlayerEvent vector via\n60: `0x00779850` -> `0x0078af40` (`count * 0x74`) -> `0x007725a0` -> `0x007693f0`.\n61: * TurnEvents virtual slot zero resolves from vtable `0x00a0f07c` to `0x0062e120`. It destroys the\n62: nested vector through `0x00629580`; that destroys every `0x74` PlayerEvent, frees the nested block,\n63: and zeros its three pointers. Static unwind edges clean partial PlayerEvent and TurnEvents ranges\n64: and free the new outer block, but no allocation failure was executed live.\n65: \n66: ## Ordering / visible effects\n67: \n68: RecordObservedTech's append predicate is name absence, not capacity. A matching existing record\n69: keeps first-turn/name and updates last-turn/with mask. `0x00825d40` scans a bucket's events in\n70: `0x74` steps, checking action, location, three floats, message and image before passing both\n71: description strings to `0x0046f8c0`. Fresh paired-boundary instructions establish that helper as\n72: caller-cleaned `bool string_not_equal(stored, candidate)`: it returns one for any byte/length\n73: difference and zero for equality, handling each operand's inline/heap representation at capacity\n74: `0x10`. FindDuplicate reaches the match return only on zero, so `EvDsc` equality is required and a\n75: description-only difference does not deduplicate. This statically contradicts the inherited\n76: description-omission claim; decision `d-2ff30c9f5355116bea822924` required the now-archived complete\n77: branch/helper repair. The later provenance correction does not itself prove these semantics: an\n78: independent verifier must reproduce the repaired package and predeclared falsifiers. The wrapper\n79: returns the first element equal in all fields and writes nothing.\n80: `0x00879eb0` prunes only a leading\n81: stale run (`EvTurn < turn-50`), deep-shifts from the run's last stale element, and therefore removes\n82: `n-1`: one stale bucket survives, a single stale bucket causes no write, and stale buckets after a\n83: fresh bucket are not inspected. The no-duplicate EventStorage path remains distinct from event-vector\n84: capacity: it is the path that appends a `0x74` PlayerEvent and changes IDs/vector contents. Caller\n85: text/position/action/defaulting and the exact PostEvent write order remain required inputs/effects.\n86: No RNG draw occurs in the recovered bucket, duplicate, prune, copy, allocation, or destruction\n87: boundaries.\n88: \n89: ## Original/runtime dependencies and limits\n90: \n91: Any original-assisted allocation, string assignment or deletion must retain allocator-family\n92: compatibility: the recovered calls target the original MSVCR100 import thunks. A standalone\n93: replacement needs its own coherent allocation/destruction boundary; calling these original helpers\n94: is an original dependency, not independent replacement. Calling `0x0046f8c0` likewise retains an\n95: original string-layout/comparison dependency, though its equality behavior is implementable without\n96: allocation in a standalone boundary. Required unavailable proof inputs are a safe\n97: long-string/full-capacity pre/post fixture (or equivalent archived trace), same-bucket\n98: equal/description-only-different event fixtures covering short and long strings, exact exceptional\n99: cleanup outcomes under a live throw, and independent reproduction of the named static windows and\n100: falsifiers. This handoff makes no live\n101: allocator-safety, runtime event-construction, or replacement-acceptance claim.\n\n(End of file - total 101 lines)\n","metadata":{"preview":"# Completion record ABI recovery\n\nStatic handoff only. The provenance index is\n`verify/results/research-completion-abi/reva-2026-09-09-index.md`; the regenerated instruction\ncapture and interpretation are respectively\n`verify/results/research-completion-abi/objdump-2026-09-09-ownership.txt` and\n`verify/results/research-completion-abi/recovered-static.md`. The complete dedup/helper repair is\n`verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt`; its first-window raw\nprovenance is superseded by the paired captures and identity record in\n`verify/results/research-completion-abi/objdump-2026-09-10-boundary-repair.md` under Astra decision\n`d-d2a9b8be6399a6abaa0e05a5`. Input identity is `dumps/sots.exe`,\nSHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841` / MD5\n`9969481c39f4b33a8a21c48b62abee4c`.\n\nThe ownership archive's terminal-byte provenance is likewise superseded by the complete package\n`verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/` under Astra decision\n`d-d4c494ba02ada278030ef473`. Its six narrow/wide pairs, raw section-byte checks and full ten-window\naudit establish the encoded return immediates while preserving the static-only limitation. The\npackage found three additional truncated historical stops (ObservedTech append/reallocator and\nstring allocation/replacement); their widened streams are now the byte authority. No archive","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/research/research-completion-abi.md","text":"# Completion record ABI recovery\n\nStatic handoff only. The provenance index is\n`verify/results/research-completion-abi/reva-2026-09-09-index.md`; the regenerated instruction\ncapture and interpretation are respectively\n`verify/results/research-completion-abi/objdump-2026-09-09-ownership.txt` and\n`verify/results/research-completion-abi/recovered-static.md`. The complete dedup/helper repair is\n`verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt`; its first-window raw\nprovenance is superseded by the paired captures and identity record in\n`verify/results/research-completion-abi/objdump-2026-09-10-boundary-repair.md` under Astra decision\n`d-d2a9b8be6399a6abaa0e05a5`. Input identity is `dumps/sots.exe`,\nSHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841` / MD5\n`9969481c39f4b33a8a21c48b62abee4c`.\n\nThe ownership archive's terminal-byte provenance is likewise superseded by the complete package\n`verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/` under Astra decision\n`d-d4c494ba02ada278030ef473`. Its six narrow/wide pairs, raw section-byte checks and full ten-window\naudit establish the encoded return immediates while preserving the static-only limitation. The\npackage found three additional truncated historical stops (ObservedTech append/reallocator and\nstring allocation/replacement); their widened streams are now the byte authority. No archive\nproduction-history inference or live-safety claim is made.\n\nThe TurnEvents correction's current-session boundary authority is\n`verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/`. It supersedes the stale-session\nattribution and truncated nested-copy stream invalidated by decisions\n`d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. The package binds the actual session\nand a fail-if-used output directory; captures complete helper authority through `0x0077992f`; and\nretains `0x00779a20` as an expected-failing boundary beside complete `0x00779a21`, `0x00779a23`, and\n`0x00779a28` controls plus raw bytes. It is analyst static evidence awaiting a fresh independent\nverifier, not restored acceptance.\n\n## Implementable machine boundaries recovered\n\n* `0x008562a0`: ObservedTech default constructor, ECX receiver, EAX return, plain `ret`.\n* `0x007b7320`: ObservedTech vector append, ECX receiver plus one stack word, `ret 4`; stride `0x2c`.\n Its copy helper is `0x0079a150` (cdecl-style allocator/destination/source stack arguments), which copy-constructs the embedded string rather than copying a\n vector element header. Capacity growth is `0x007b5820` -> `0x007b34e0` -> `0x0057e590`.\n* `0x0057e590` calls `0x00924fb6` with `count * 0x2c`; reallocation destroys every old element via\n virtual slot 0 with zero and frees the array through `0x00924faa`. These are MSVCR100 scalar-new\n and scalar-delete import thunks, not clean-room allocator operations.\n* `0x0086c580`: PlayerEvent vector append, ECX receiver plus one stack word, `ret 4`; stride `0x74`.\n It grows via `0x00869500` and copy-constructs through `0x007693f0` (ECX destination, stack source,\n EAX destination return, ret 4), independently assigning all\n three strings. `0x0061ae90` releases each long string via `0x00924faa` when capacity is `>= 0x10`.\n* `0x004249a0` (reached by `0x00425430` assignment) allocates through `0x00924fb6` and releases a\n prior long destination buffer through `0x00924faa`. A temporary long string is therefore not\n transferable by raw header copy.\n* `0x00885380`: get-or-create TurnEvents bucket, ECX EventStorage receiver plus stack turn, EAX\n bucket return, `ret 4`. It returns the last existing matching turn. On absence it initializes the\n stack bucket's vptr and empty nested-vector header but **not** its `EvTurn`; `0x00884cb0` copies\n that incoming stack word and deep-copies the nested vector. After temporary nested-vector cleanup,\n get/create writes the requested turn into the stored last element and returns it. The transient\n word is not measured randomness or a zero default. Fresh correction capture:\n `verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/`, governed by\n `d-b51f3f76803e852ed250846a`.\n* `0x00884cb0`: outer TurnEvents vector append, ECX vector receiver plus stack source, `ret 4`,\n stride `0x18`. Full-capacity growth is `0x008841a0` -> `0x00883a60`; allocation is\n `0x006e8f50` -> `0x00924fb6` with `count * 0x18`. Existing buckets are copy-constructed by\n `0x0077fed0`, including an independently allocated/copied nested PlayerEvent vector via\n `0x00779850` -> `0x0078af40` (`count * 0x74`) -> `0x007725a0` -> `0x007693f0`.\n* TurnEvents virtual slot zero resolves from vtable `0x00a0f07c` to `0x0062e120`. It destroys the\n nested vector through `0x00629580`; that destroys every `0x74` PlayerEvent, frees the nested block,\n and zeros its three pointers. Static unwind edges clean partial PlayerEvent and TurnEvents ranges\n and free the new outer block, but no allocation failure was executed live.\n\n## Ordering / visible effects\n\nRecordObservedTech's append predicate is name absence, not capacity. A matching existing record\nkeeps first-turn/name and updates last-turn/with mask. `0x00825d40` scans a bucket's events in\n`0x74` steps, checking action, location, three floats, message and image before passing both\ndescription strings to `0x0046f8c0`. Fresh paired-boundary instructions establish that helper as\ncaller-cleaned `bool string_not_equal(stored, candidate)`: it returns one for any byte/length\ndifference and zero for equality, handling each operand's inline/heap representation at capacity\n`0x10`. FindDuplicate reaches the match return only on zero, so `EvDsc` equality is required and a\ndescription-only difference does not deduplicate. This statically contradicts the inherited\ndescription-omission claim; decision `d-2ff30c9f5355116bea822924` required the now-archived complete\nbranch/helper repair. The later provenance correction does not itself prove these semantics: an\nindependent verifier must reproduce the repaired package and predeclared falsifiers. The wrapper\nreturns the first element equal in all fields and writes nothing.\n`0x00879eb0` prunes only a leading\nstale run (`EvTurn < turn-50`), deep-shifts from the run's last stale element, and therefore removes\n`n-1`: one stale bucket survives, a single stale bucket causes no write, and stale buckets after a\nfresh bucket are not inspected. The no-duplicate EventStorage path remains distinct from event-vector\ncapacity: it is the path that appends a `0x74` PlayerEvent and changes IDs/vector contents. Caller\ntext/position/action/defaulting and the exact PostEvent write order remain required inputs/effects.\nNo RNG draw occurs in the recovered bucket, duplicate, prune, copy, allocation, or destruction\nboundaries.\n\n## Original/runtime dependencies and limits\n\nAny original-assisted allocation, string assignment or deletion must retain allocator-family\ncompatibility: the recovered calls target the original MSVCR100 import thunks. A standalone\nreplacement needs its own coherent allocation/destruction boundary; calling these original helpers\nis an original dependency, not independent replacement. Calling `0x0046f8c0` likewise retains an\noriginal string-layout/comparison dependency, though its equality behavior is implementable without\nallocation in a standalone boundary. Required unavailable proof inputs are a safe\nlong-string/full-capacity pre/post fixture (or equivalent archived trace), same-bucket\nequal/description-only-different event fixtures covering short and long strings, exact exceptional\ncleanup outcomes under a live throw, and independent reproduction of the named static windows and\nfalsifiers. This handoff makes no live\nallocator-safety, runtime event-construction, or replacement-acceptance claim.","lineStart":1,"lineEnd":101,"totalLines":101,"truncated":false}},"title":"campaign/research/research-completion-abi.md","time":{"start":1789017863503,"end":1789017863517}},"metadata":{"openai":{"itemId":"fc_038b7318c5e3845d016aa23f07517887d186c47f5e3cdf4d7a"}},"id":"prt_089c6353f001De2R6HvhlFG0qz","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5fc590012gWptrcPjqA311"}} +{"type":"tool_use","timestamp":1789017863536,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_XhpYJwVdN1zJD8oi8WIJAHtI","state":{"status":"completed","input":{"filePath":"/tmp/opencode/sots-final-research-re/findings/subsystems/events.md"},"output":"/tmp/opencode/sots-final-research-re/findings/subsystems/events.md\nfile\n\n1: # Player event posting API (lane E, 2026-09-08)\n2: \n3: Target: recover the API the game uses to post player-visible turn events, so the\n4: reimplementation can post them and so the compare harness can *see* them.\n5: \n6: Motivation: `TechTree::ProcessResearch` (P2-B3) failed its replace-mode oracle by exactly\n7: one item across 40,300 — an unposted `EVENT_RESEARCH_OVERBUDGET`. `ServerPlayer::\n8: OnTechResearched` (P2-B2) has the same gap. Until events are modelled, both \"0 divergence\"\n9: verdicts bound the economy fields only.\n10: \n11: **Everything below with an address was read out of the instruction stream** (bytes fetched\n12: with `read-memory` over the ReVa HTTP shim, disassembled locally with capstone) unless the\n13: line says *inferred*. Layout claims are additionally confirmed against three real saves via\n14: `verify/save-reader/save_reader.py`.\n15: \n16: ---\n17: \n18: ## 1. The container\n19: \n20: `ServerPlayer::Events` is an **`EventStorage` embedded at `ServerPlayer+0x29c`**, size `0x1c`.\n21: \n22: Verified by `ServerPlayer::GetEventStorage` at **0x0080db00**, which is the whole function:\n23: \n24: ```\n25: 0080db00 8d819c020000 lea eax, [ecx + 0x29c]\n26: 0080db06 c3 ret\n27: ```\n28: \n29: `__thiscall EventStorage* ServerPlayer::GetEventStorage(ServerPlayer* this)` — no stack args,\n30: plain `ret`. Every research-path post site either calls it (`ProcessResearch`) or inlines the\n31: `lea ecx,[esi+0x29c]` (`OnTechResearched`, 0x008919ab / 0x0089241d).\n32: \n33: ### `EventStorage` (0x1c bytes) — already in the Ghidra project, now confirmed by code\n34: \n35: | off | type | name | evidence |\n36: |---|---|---|---|\n37: | 0x00 | `void*` | vptr | not touched by the post path |\n38: | 0x04 | `TurnEvents*` | `Events._Myfirst` | 0x008853aa `mov edx,[esi+8]; sub edx,[esi+4]` |\n39: | 0x08 | `TurnEvents*` | `Events._Mylast` | same |\n40: | 0x0c | `TurnEvents*` | `Events._Myend` | vector growth in 0x00885427+ |\n41: | 0x10 | `allocator` | `Events._Alval` | MSVC `_Vector_val` tail, 4 B |\n42: | 0x14 | `int` | **`EvNxID`** | 0x008863e3–0x008863f6 |\n43: | 0x18 | — | padding | struct size 0x1c |\n44: \n45: `EvNxID` lands at **`ServerPlayer+0x2b0`** — exactly the byte run the harness guard reported\n46: as `player+0x2b0:4`. That is now explained, not merely observed.\n47: \n48: The vector element stride is **0x18**: `0x008853b3 mov eax,0x2aaaaaab; imul edx; sar edx,2`\n49: = signed divide by 24.\n50: \n51: ### `TurnEvents` (0x18 bytes) — new\n52: \n53: | off | type | name | evidence |\n54: |---|---|---|---|\n55: | 0x00 | `void*` | vptr | virtual dtor called at 0x00879f21 (`mov edx,[edi]; mov eax,[edx]; push 0; call eax`) |\n56: | 0x04 | `int` | **`EvTurn`** | 0x008853d3 `cmp [edx+4], ebx` (ebx = the turn argument) |\n57: | 0x08 | `PlayerEvent*` | `Events._Myfirst` | `lea ecx,[esi+8]` handed to `vector::push_back` at 0x008863db |\n58: | 0x0c | `PlayerEvent*` | `Events._Mylast` | 0x008863f9 `mov eax,[esi+0xc]` |\n59: | 0x10 | `PlayerEvent*` | `Events._Myend` | |\n60: | 0x14 | `allocator` | `Events._Alval` | |\n61: \n62: ### `PlayerEvent` (0x74 = 116 bytes) — new\n63: \n64: Stride confirmed two independent ways: the duplicate scanner's divisor at 0x00825d5f\n65: (`mov eax,0x8d3dcb09; imul ecx; add edx,ecx; sar edx,6` = signed divide by 116) and the\n66: post function's `mov [eax-0x70], ecx` writing `id` at `element+4` off `_Mylast`.\n67: \n68: | off | type | on-disk tag | set by |\n69: |---|---|---|---|\n70: | 0x00 | `void*` | — | ctor: vftable `0x00a21958` |\n71: | 0x04 | `int` | `EvEID` | `PostEvent`: `EvNxID++` (or the duplicate's id) |\n72: | 0x08 | `std::string` (0x1c) | `EvDsc` | `PostEvent` arg 0 (summary / title) |\n73: | 0x24 | `std::string` (0x1c) | `EvMsg` | `PostEvent` arg 1 (body) |\n74: | 0x40 | `int` | `EvLoc` | `obj ? obj->[+4] : 0` |\n75: | 0x44 | `float[3]` | `EvPos` | `obj ? obj->[+0x18..0x20] : (pos ? *pos : ctor default)` |\n76: | 0x50 | `std::string` (0x1c) | `EvImg` | `PostEvent` arg `img` (`\"\"` if NULL) |\n77: | 0x6c | `int` | `EvAct` | `PostEvent` arg `act`; forced to **2** if `act==0 && !obj && !pos` |\n78: | 0x70 | `int` | `EvCID` | ctor 0; never written by `PostEvent` |\n79: \n80: **Correction to `formula-gaps.md`:** the default `EvPos` is **`FLT_MAX` (0x7f7fffff), not\n81: infinity**. `PlayerEvent::PlayerEvent` (0x0084ee30) copies the three floats from the global\n82: `Vector3` at `0x00af0dc8`, whose bytes are `FF FF 7F 7F` × 3. Confirmed in the save:\n83: `EvPos = 2139095039 (0x7f7fffff)` for `EVENT_RESEARCH_OVERBUDGET`. Writing `+inf`\n84: (0x7f800000) would produce a different save byte and a different oracle hash.\n85: \n86: Ctor also sets `EvEID=0`, `EvLoc=0`, `EvAct=0`, `EvCID=0` and the three strings to `\"\"`\n87: (`0x009e100c`).\n88: \n89: ### Serialization (matches the save exactly)\n90: \n91: `PlayerEvent::Serialize` = vftable slot 1 at **0x00825970**, `__thiscall`, `ret 4`. Tag\n92: pointers all come from the table at `0x00a2bd88` (stride 8): `EvEID EvNxID EvTurn Events\n93: EvPos EvLoc EvMsg EvImg EvDsc EvCID EvAct sasc`. Emission order read off the instruction\n94: stream: `EvEID, EvDsc, EvMsg, EvImg, EvLoc, EvPos, EvAct, EvCID`.\n95: \n96: `TurnEvents` write 0x00825bb0 / read 0x00825c40: `EvTurn` then the nested collection `Events`.\n97: `EventStorage` read 0x00825cc0: `EvNxID` then the nested collection `Events`.\n98: \n99: So on disk the shape is **nested, not flat**:\n100: \n101: ```\n102: Events (EventStorage)\n103: EvNxID : int\n104: Events : n × TurnEvents\n105: EvTurn : int\n106: Events : m × PlayerEvent\n107: EvEID EvDsc EvMsg EvImg EvLoc EvPos{x,y,z} EvAct EvCID\n108: ```\n109: \n110: `findings/objects/save-editor-structs.md:271` models this as\n111: `SimPlayerEventsSaveStruct events (Int32 evNxId; ComplexArray)` — a **flat**\n112: array of events. That is wrong (or at least the R1 C# editor's simplification): the\n113: `ComplexArray` elements are *turn groups*, each holding its own array. `save_reader.py`\n114: parses it correctly today because `Events` falls into the generic tree; nothing needs fixing\n115: in the reader, but the struct note should be corrected.\n116: \n117: ### Ground truth: `verify/results/saves/turn3-state.sav`\n118: \n119: Player index 1 (`/Sim/Player[1]/Events`, file offset 120372):\n120: \n121: ```\n122: EvNxID = 4\n123: EvTurn = 2\n124: EvEID 1 EvDsc \"Ships Constructed At Ke'Dolarra\"\n125: EvMsg \"1 ship built in system Ke'Dolarra\"\n126: EvImg \"EVENT_SHIPS_BUILT\" EvLoc 288 EvPos {-11.9286, 4.71900, 2.31785}\n127: EvAct 0 EvCID 0\n128: EvTurn = 3\n129: EvEID 2 (the same EVENT_SHIPS_BUILT record, next turn)\n130: EvEID 3 EvDsc \"Research Over Budget\"\n131: EvMsg \"Research for Waldo Units has gone overbudget.\"\n132: EvImg \"EVENT_RESEARCH_OVERBUDGET\" EvLoc 0\n133: EvPos {0x7f7fffff, 0x7f7fffff, 0x7f7fffff} EvAct 1 EvCID 0\n134: ```\n135: \n136: Player index 0 has two `EVENT_NO_RESEARCH` records (turns 2 and 3, ids 1 and 2, `EvNxID` 3).\n137: Players 2 and 3 have `EvNxID = 0` and an empty list — note **`EvNxID` starts at 0**, and\n138: `PostEvent` lazily promotes 0 → 1 on the first post (0x008863e3).\n139: \n140: ---\n141: \n142: ## 2. The entry point\n143: \n144: ```c\n145: // 0x008862b0\n146: int __thiscall EventStorage::PostEvent(\n147: EventStorage* this, // ecx\n148: std::string summary, // [ebp+0x08], BY VALUE, 0x1c bytes -> EvDsc\n149: std::string message, // [ebp+0x24], BY VALUE, 0x1c bytes -> EvMsg\n150: void* obj, // [ebp+0x40] may be NULL\n151: Vector3* pos, // [ebp+0x44] may be NULL\n152: int turn, // [ebp+0x48]\n153: const char* img, // [ebp+0x4c] may be NULL -> \"\"\n154: int act); // [ebp+0x50]\n155: // returns the event id; ret 0x4c\n156: ```\n157: \n158: `ret 0x4c` = 76 = 2 × 0x1c (the two by-value `std::string`s) + 5 × 4. Both string arguments\n159: are built **in the caller's frame by `sub esp,0x1c`** and a copy-construct, which is the MSVC\n160: by-value-`std::string` idiom; `PostEvent` frees their buffers itself before returning\n161: (0x00886415–0x00886446), so the caller must not.\n162: \n163: Body, in order (all read from the instruction stream):\n164: \n165: 1. `PlayerEvent ev;` — default ctor `0x0084ee30` on a `[ebp-0x84]` temporary.\n166: 2. `ev.EvDsc = summary; ev.EvMsg = message;` (0x0088630d, 0x0088631a).\n167: 3. `ev.EvLoc = obj ? obj->[+4] : 0` (0x00886322).\n168: 4. `ev.EvImg = img ? img : \"\"` — `\"\"` is `0x009e100c`; length by inline `strlen` (0x00886330).\n169: 5. `ev.EvAct = act`; **if `act == 0 && obj == NULL && pos == NULL` then `ev.EvAct = 2`**\n170: (0x00886353–0x0088636f). This default is easy to miss and changes the save bytes.\n171: 6. Position: `obj` wins (`obj->[+0x18/+0x1c/+0x20]`), else `pos` (`pos->[0/4/8]`), else the\n172: ctor's `FLT_MAX` triple (0x0088637a–0x008863a7).\n173: 7. `PruneOldTurns(turn)` — 0x00879eb0.\n174: 8. `TurnEvents* bucket = GetOrCreateTurnBucket(turn)` — 0x00885380.\n175: 9. `PlayerEvent* dup = FindDuplicate(bucket, &ev)` — 0x00825d40. **If non-NULL, return\n176: `dup->EvEID` and post nothing.**\n177: 10. else `bucket->Events.push_back(ev)`; `if (EvNxID == 0) EvNxID = 1;`\n178: `id = EvNxID++; back().EvEID = id;` return `id`.\n179: \n180: ### `EventStorage::FindDuplicate` — 0x00825d40, `__thiscall (TurnEvents*, PlayerEvent*)`, `ret 8`\n181: \n182: Linear scan of the bucket. Two events are the same when **all** of these match:\n183: `EvAct` (+0x6c), `EvLoc` (+0x40), the three `EvPos` floats (`fucompp`, so bitwise-unequal\n184: NaNs never match but the `FLT_MAX` sentinels always do), `EvMsg` (+0x24) and `EvImg` (+0x50).\n185: **`EvDsc` is NOT compared.** A NULL bucket returns 0 immediately.\n186: \n187: This is why the two identical `EVENT_SHIPS_BUILT` records in `turn3-state.sav` survive as\n188: separate events: they are in different turn buckets, and dedup is per-bucket.\n189: \n190: ### `EventStorage::GetOrCreateTurnBucket` — 0x00885380, `__thiscall (int turn)`, `ret 4`\n191: \n192: Scans `Events` for `EvTurn == turn`; **keeps scanning to the end and returns the *last*\n193: match** (0x008853d0–0x008853de has no early exit). If none, constructs a bucket\n194: (`0x00884cb0`, vtable `0x00a0f07c`), appends, and sets `_Mylast[-1].EvTurn = turn`\n195: (0x0088542d, `mov [eax-0x14], ecx`, i.e. `+4` off the new element at `_Mylast-0x18`).\n196: \n197: ### `EventStorage::PruneOldTurns` — 0x00879eb0, `__thiscall (int turn)`\n198: \n199: Cutoff is `turn - 0x32` (**50 turns**), constant, not from config: `0x00879ec3 add ebx,-0x32`.\n200: \n201: Precisely as coded — and this is a quirk worth reproducing rather than \"fixing\": it walks the\n202: **leading** run of buckets with `EvTurn < cutoff`, leaves `edi` pointing at the **last** one\n203: of that run, and then shifts from `edi` down to `_Myfirst`. So it erases `n-1` buckets, not\n204: `n`: **one stale bucket always survives**, and a single leading stale bucket is never\n205: removed at all (`0x00879ee2 cmp esi,edi; je` returns). It also stops at the first non-stale\n206: bucket, so a stale bucket after a fresh one is never reached.\n207: \n208: ### Convenience wrapper\n209: \n210: `0x00886470` (`ret` and prototype not verified by this lane) posts via `PostEvent` twice at\n211: 0x00886802 / 0x00886b22. **161 call sites in 113 functions** reference `PostEvent` directly —\n212: this is the single event API for the whole simulation, not a research-specific helper.\n213: \n214: ### Turn number\n215: \n216: Every research-path site computes the turn as `*(int*)(*(char**)(player + 8) + 8)`.\n217: `ServerPlayer+8` is the `StrategyServer` *second* base; `0x0080e320` is\n218: `__thiscall void* ServerPlayer::GetServer()` = `[this+8] ? [this+8]-4 : 0`, so the field is\n219: `StrategyServer(primary base)+0x0c`. This matches the B4 finding that `StrategyServer` has\n220: two bases four bytes apart.\n221: \n222: **CORRECTION (lane EV 2026-09-08): that field is the FRAME (the turn counter), not\n223: `ModCount`.** The two are different words and the saves separate them cleanly:\n224: `turn2-state.sav` has `Summary/Turn = 2`, `Sim/Frame = 2` and `Sim/ModCount = 12`, and every\n225: event the turn posted landed in bucket `EvTurn = 2`. If the argument were `ModCount` the\n226: buckets would be 12 and 24. The value is the **post-increment** turn — a turn run from a save\n227: at turn *N* posts into bucket *N+1* — because the frame is bumped in `BeginProcessTurn`,\n228: before either turn driver runs.\n229: \n230: ---\n231: \n232: ## 3. Which events the research path posts\n233: \n234: Order within `ServerPlayer::ProcessTurn` (0x00891340):\n235: \n236: | # | site | event | condition |\n237: |---|---|---|---|\n238: | 1 | `TechTree::ProcessResearch` 0x00587b97 | `EVENT_RESEARCH_OVERBUDGET` | per node, see below |\n239: | 2 | → `SetResearched` → `OnTechResearched` 0x008919b5 | `EVENT_RESEARCH_COMPLETE` / `_UNDERBUDGET` | see below |\n240: | 3 | → `OnTechResearched` 0x00892427 | `EVENT_TEMPERANCE` | temperance tech cured ≥1 addicted system |\n241: | 4 | `TechTree::ProcessResearch` 0x00587ff4 | `EVENT_TECHS_UNLOCKED` | tail loop, ≥1 newly available node |\n242: | 5 | `ProcessTurn` 0x0089168c | `EVENT_NO_RESEARCH` | no target, no affordable tech, tree not exhausted |\n243: \n244: `ProcessResearch`'s two posts bracket the per-node loop: OVERBUDGET fires **inside** the loop\n245: (so once per over-budget node), TECHS_UNLOCKED **once** after it.\n246: \n247: ### 3.1 `EVENT_RESEARCH_OVERBUDGET` — the B3 defect, fully explained\n248: \n249: Posted at **0x00587b97**, in `TechTree::ProcessResearch` (0x005876c0).\n250: \n251: Per-node arithmetic recovered from 0x00587732–0x00587907 (naming `cost =\n252: TechTree::GetNodeCost(node)` = 0x0057da00, `pts = node->points` at `node+0x1c`):\n253: \n254: ```\n255: minPts = max(cost * 50 / 100, 0) ; 0x51eb851f/sar 5 = /100\n256: maxPts = max(minPts, cost * 150 / 100)\n257: wasDone = (pts >= cost) ; [ebp-0xcd], setge @0x005877e1\n258: granted = min(requested, maxPts - pts)\n259: *overbudgetOut += requested - granted ; the out-param accumulates unspent points\n260: pts += granted\n261: nowDone = (pts >= cost) ; [ebp-0xce], setge @0x00587828\n262: \n263: if (pts >= maxPts) chance = 1.0f, draw = 0.0f ; always completes\n264: else if (granted == 0) chance = 0.0f, draw = 1.0f ; never completes, no draw\n265: else chance = (float)(pts - minPts) / maxPts ; NOTE: / maxPts, not /(max-min)\n266: draw = rng.NextFloat()*(1.0-0.0) + 0.0 ; [0x009e1e68] == 0.0\n267: if (owner && owner->Species == 5) ; Zuul\n268: draw = max(draw, rng.NextFloat()*(1.0-0.0)+0.0)\n269: \n270: if (chance < draw) { ; roll FAILED -> tech not completed this turn\n271: if (!wasDone && nowDone && owner) {\n272: PostEvent(EVENT_RESEARCH_OVERBUDGET); node->flag(+0x2c) = 2;\n273: }\n274: } else { ; roll succeeded\n275: log(\"Research completed at %d of %d (%.1f%%). (Odds: %.2f, Roll: %.2f)\\n\", ...)\n276: if (pts/cost < 0.8) node->flag(+0x2c) = 0;\n277: SetResearched(node->def, 2); ; 0x00581e10 -> OnTechResearched\n278: }\n279: ```\n280: \n281: So **over budget means: the node has accumulated at least its full cost, but the completion\n282: roll failed, and this is the first turn that has been true.** `!wasDone` is what makes it\n283: fire exactly once per node.\n284: \n285: The record it posts:\n286: \n287: | field | value | evidence |\n288: |---|---|---|\n289: | `EvDsc` | `\"Research Over Budget\"` | key `EVENTSUM_RESEARCH_OVERBUDGET`, slot `0x00ae48e0`, thunk key at `0x00a00cac` |\n290: | `EvMsg` | `\"Research for %s has gone overbudget.\"` % `node->def->name` | key `EVENTMSG_RESEARCH_OVERBUDGET`, slot `0x00ae48e8`, key at `0x00a00ccc` |\n291: | `EvImg` | `\"EVENT_RESEARCH_OVERBUDGET\"` | literal `0x00a0078c`, pushed at 0x00587b24 |\n292: | `EvLoc` | `0` | `obj = NULL` (0x00587b2c) |\n293: | `EvPos` | `{FLT_MAX, FLT_MAX, FLT_MAX}` | `pos = NULL` → ctor default |\n294: | `EvAct` | `1` | literal, 0x00587b22 |\n295: | `EvCID` | `0` | ctor |\n296: \n297: Both strings go through `0x008c97f0` (`__cdecl` format-into-`std::string`, 8 stack args:\n298: `out, fmt, a1..a6`) with the tech name as the single substitution; the summary format\n299: contains no `%s`, so it comes out literal. The tech name is `def+0x40` (a `std::string`;\n300: `_Myres` at `+0x54` selects heap vs. inline buffer, 0x00587a1d).\n301: \n302: **Save cross-check:** `turn3-state.sav`, player 1, turn-3 bucket, `EvEID 3` is exactly this\n303: record, with `EvMsg \"Research for Waldo Units has gone overbudget.\"` — the format string, the\n304: `%s` substitution, `EvAct 1`, `EvLoc 0` and the `FLT_MAX` position all match byte for byte.\n305: \n306: ### 3.2 `EVENT_RESEARCH_COMPLETE` / `EVENT_RESEARCH_UNDERBUDGET`\n307: \n308: Posted at **0x008919b5** in `ServerPlayer::OnTechResearched` (0x00891790), guarded by\n309: `if (!silent)` (0x00891804 `cmp byte [ebp+0xc], 0; jne`).\n310: \n311: ```\n312: ratio = TechTree::GetProgressRatio(tree, def) ; 0x0057e950, float\n313: if (ratio >= 0.8f) img = \"EVENT_RESEARCH_COMPLETE\" (0x00a33368)\n314: sum = EVENTSUM_RESEARCH_COMPLETE (slot 0x00af09e8)\n315: msg = EVENTMSG_RESEARCH_COMPLETE (slot 0x00af09f0)\n316: else img = \"EVENT_RESEARCH_UNDERBUDGET\" (0x00a33380)\n317: sum = EVENTSUM_RESEARCH_UNDERBUDGET(slot 0x00af09f8)\n318: msg = EVENTMSG_RESEARCH_UNDERBUDGET(slot 0x00af0a00)\n319: PostEvent(sum, snprintf(msg, 0x100, def->name), NULL, NULL, turn, img, 1)\n320: ```\n321: \n322: The 0.8 constant is the `double` at `0x009e20c8` = `0.800000011920929`, i.e. `(double)0.8f` —\n323: the comparison is `fcomp` of the `float` ratio against that double. Text:\n324: \n325: * `EVENTSUM_RESEARCH_COMPLETE` = `\"Research Complete\"`,\n326: `EVENTMSG_RESEARCH_COMPLETE` = `\"Tech %s has been acquired\"`\n327: * `EVENTSUM_RESEARCH_UNDERBUDGET` = `\"Research Breakthrough!\"`,\n328: `EVENTMSG_RESEARCH_UNDERBUDGET` = `\"Your scientists made a breakthrough with %s. Research has completed ahead of schedule!\"`\n329: \n330: `EvAct = 1`, `obj = pos = NULL`, so `EvLoc = 0` and `EvPos = FLT_MAX³`. Message buffer is a\n331: 0x100-byte stack buffer formatted with `0x008c8eb0` (`_snprintf`-shaped, 9 args), then\n332: assigned into a `std::string`, so **a message longer than 255 chars is truncated** — a real\n333: behaviour to reproduce.\n334: \n335: Note the naming is counter-intuitive: `UNDERBUDGET` is the *cheap* completion (ratio < 0.8).\n336: \n337: ### 3.3 `EVENT_TEMPERANCE`\n338: \n339: Posted at **0x00892427**, same function, after the per-species temperance sweep\n340: (0x00892280–0x008922b9: for each species with flag bit 5, cure every owned addicted system\n341: via 0x00745e40 / 0x00743800). Guarded by `!silent` **and** by a local \"something was cured\"\n342: flag (`[ebp-0x189]`, set at 0x008922a6). Strings `EVENTSUM_ADDICTION_TEMPERENCE` /\n343: `EVENTMSG_ADDICTION_TEMPERENCE` (slots `0x00af0a88` / `0x00af0a90`, note the shipped\n344: misspelling \"TEMPERENCE\").\n345: \n346: `EvImg = \"EVENT_TEMPERANCE\"` (0x00a33340), `obj = pos = NULL`, and **`EvAct = 0`** — which\n347: means rule 5 of `PostEvent` fires and the stored `EvAct` becomes **2**, not 0. Any\n348: reimplementation that stores the literal 0 will differ from the oracle here.\n349: \n350: ### 3.4 `EVENT_TECHS_UNLOCKED`\n351: \n352: Posted at **0x00587ff4**, at the tail of `ProcessResearch` (loop at 0x00587cc3). Collects\n353: every node `n` where `n != NULL`, `n->def != NULL`, `tree->nodes[n->def->index] != NULL`,\n354: that node's **`state` (`+0x14`) `== 2` (available)**, and **`n->turnAvailable` (`+0x20`)\n355: `== currentTurn`** (0x00587cfc–0x00587d42). If the collected vector is non-empty it posts\n356: once.\n357: \n358: *Correction to `strategic-turn-internals.md:233`*, which reads the condition as \"state==2 &&\n359: turnAvailable == currentTurn **&& parent researched**\". There is no parent test: the\n360: `mov ecx,[ecx]; mov eax,[eax+ecx*4]` pair at 0x00587d0d–0x00587d19 dereferences `n->def` and\n361: then indexes `tree->nodes` by `def->[0]`, which is the tech's **own** index (the same\n362: indirection the entry loop uses at 0x00587738–0x00587740). It resolves back to `n` itself;\n363: the two null checks around it are defensive. The state test is therefore on `n`, not on a\n364: parent.\n365: \n366: `EvDsc` = `EVENTSUM_UNLOCKEDTECHS` (slot `0x00ae48f0`) = `\"New Technologies Available\"`.\n367: `EvMsg` = `EVENTMSG_UNLOCKEDTECHS` (slot `0x00ae48f8`) =\n368: `\"The following technologies are now available for research:\"` followed by, per node, the\n369: separator string at `0x009e4588` and the node's `def->name` (0x00587f46–0x00587f82).\n370: `EvImg` = literal `\"EVENT_TECHS_UNLOCKED\"` (`0x00a00774`, length pushed as 0x14).\n371: `EvAct = 1`, `obj = pos = NULL`.\n372: \n373: ### 3.5 `EVENT_NO_RESEARCH`\n374: \n375: Posted at **0x0089168c** in `ServerPlayer::ProcessTurn`. Condition (0x0089162a–0x0089167e):\n376: \n377: ```\n378: if (player->ResT (+0x294) == NULL)\n379: TechTree::CollectResearchedTechs(&out, turn, INT_MAX, sort=1) ; 0x00584e50\n380: if (out.empty() && TechTree::FindFirstAvailableTech() != NULL) ; 0x0057da90\n381: PostEvent(EVENTSUM_NO_RESEARCH, EVENTMSG_NO_RESEARCH, NULL, NULL, turn,\n382: \"EVENT_NO_RESEARCH\" (0x00a3332c), 1)\n383: ```\n384: \n385: Both strings are `\"No Research Project Assigned.\"` — matches `turn3-state.sav` player 0\n386: exactly (`EvAct 1`, `EvLoc 0`, `EvPos` FLT_MAX³).\n387: \n388: **CORRECTION (lane EV 2026-09-08) to this section as first written.** 0x00584e50 was named\n389: here as a `ListAvailableTechs` and the middle test read as \"no affordable tech\". It is\n390: `TechTree::CollectResearchedTechs` (lane T read the whole body; the call site's argument order\n391: was re-read here byte for byte from 0x00891600), and the test is about what was **researched**,\n392: not about what is available:\n393: \n394: 1. `ResT == NULL` — the player holds no research target;\n395: 2. **no tech has `state == 4` (researched) with `turnResearched (+0x24) >= turn`**, i.e.\n396: nothing finished on this turn or later. The turn is passed as the collector's `minTurn`\n397: and the range runs to `INT_MAX`;\n398: 3. at least one node is in `state == 2` (available) — that is the availability half, and it is\n399: what excludes the four monster factions, whose entire tree is state 4.\n400: \n401: Test 2 is not decoration and the corpus exercises it: in `zuul-turn23-fleet23.sav` the human\n402: posts `EVENT_RESEARCH_COMPLETE` on turn 22 and **no** no-research event that turn, then\n403: `EVENT_NO_RESEARCH` again on turn 23. `sots-engine`'s P11 implements all three tests; before\n404: this lane it implemented tests 1 and 3 only, and over-fired.\n405: \n406: Test 1 is the one a save cannot answer. `ResTNm` on the wire is the target the file was\n407: **written** with; on the reference pair all four real players start the turn with none and\n408: three of them acquire one *during* it, which is AI research selection. Across all eleven\n409: corpus saves no AI player ever posts `EVENT_NO_RESEARCH` (~90 player-turns) while the human\n410: posts it on every turn it lacks a target — stated as a hypothesis, with the operator's\n411: `--ai-player` roster standing in for the missing input.\n412: \n413: Also in this window (0x008915ec–0x00891624): `RollResearchEvent` (0x0088df20) is called when\n414: `ResT != NULL && ResErrRoll(+0x3b4) != 0 && (const at 0x00a2c788) < progressRatio`, then\n415: `ResErrRoll` is cleared — the same draw the B2/B3 lanes measured. `RollResearchAccident`\n416: (0x00889dc0) posts the `EVENT_LABACCIDENT_*` family; not traced here.\n417: \n418: ---\n419: \n420: ## 4. What is *not* verified\n421: \n422: * `0x00886470` — the wrapper that also calls `PostEvent`. Its prototype and its two call\n423: paths were not read; I only established that it exists and is not on the research path.\n424: * `TurnEvents`' vptr/vtable contents beyond slot 0 (the virtual dtor used by the pruner).\n425: * The `sasc` tag at `0x00a2bde0` — adjacent to the event tag block, owner unknown.\n426: * Whether `PostEvent`'s dedup can ever collapse two research events in practice. It cannot\n427: for OVERBUDGET vs COMPLETE (different `EvImg`), but two *different techs* going over budget\n428: in the same turn differ only in `EvMsg`, which **is** compared — so both are kept. Verified\n429: by reading the comparator, not by observing it.\n430: * `EventStorage::Write` (the save-side counterpart of 0x00825cc0) was not located; only the\n431: read/`0x8b9d50` direction and the two `TurnEvents` directions were disassembled. The field\n432: order is identical in both directions and is confirmed by the save, so this is a gap in\n433: coverage, not in confidence about the layout.\n434: * The 50-turn prune has never been observed running (our saves are at turn ≤ 3).\n435: \n436: ---\n437: \n438: ## 5. What a turn actually posts (lane EV 2026-09-08, measured over all 11 saves)\n439: \n440: Read out of the corpus with `verify/state-checksum/state_checksum.py`, not derived. Every\n441: `EvImg` value, bucket and id below is a file fact.\n442: \n443: **Only two players in the whole corpus ever hold an event.** `PlyrIdx 0` (the human) and\n444: `PlyrIdx 1` (the one AI empire that owns colonies). `PlyrIdx 2..3` are the dormant shadow\n445: empires — `Sav = 0`, no colonies — and although they *do* pick research targets every turn,\n446: their `EvNxID` is 0 on every save. `PlyrIdx 4..7` are the monster factions, whose whole tech\n447: tree is state 4 and whose `EvNxID` is likewise 0 throughout. So \"who posts\" is not a property\n448: of the event API; it is a property of who does anything.\n449: \n450: ### The reference pair\n451: \n452: | pair | player | bucket | id | image | EvAct | EvLoc |\n453: |---|---|---|---|---|---|---|\n454: | turn1 -> turn2 | 0 | `EvTurn=2` | 1 | `EVENT_NO_RESEARCH` | 1 | 0 |\n455: | turn1 -> turn2 | 1 | `EvTurn=2` | 1 | `EVENT_SHIPS_BUILT` | 0 | 288 |\n456: | turn2 -> turn3 | 0 | `EvTurn=3` | 2 | `EVENT_NO_RESEARCH` | 1 | 0 |\n457: | turn2 -> turn3 | 1 | `EvTurn=3` | 2 | `EVENT_SHIPS_BUILT` | 0 | 288 |\n458: | turn2 -> turn3 | 1 | `EvTurn=3` | 3 | `EVENT_RESEARCH_OVERBUDGET` | 1 | 0 |\n459: \n460: **Order within a player is readable off the ids**: on turn 3 player 1's construction event is\n461: id 2 and its research event id 3, so **the build pass posts before the research pass**. Ids\n462: are per player (`EvNxID` is on the player's own storage), so no cross-player order is\n463: observable from a save and none should be assumed.\n464: \n465: `EVENT_SHIPS_BUILT` carries `EvAct = 0` **as stored**, because it has a subject (`EvLoc` 288,\n466: a real position) — the `act == 0 && !obj && !pos -> 2` rule does not fire. The only stored\n467: `EvAct = 2` in the corpus is `EVENT_LABACCIDENT_SMALL`.\n468: \n469: ### Every image the corpus contains\n470: \n471: `EVENT_NO_RESEARCH`, `EVENT_SHIPS_BUILT`, `EVENT_RESEARCH_COMPLETE`, `EVENT_TECHS_UNLOCKED`,\n472: `EVENT_RESEARCH_OVERBUDGET`, `EVENT_FLEET_ARRIVED`, `EVENT_FLEET_EXPLORED`,\n473: `EVENT_FLEET_MULTIPOINT_NONODE`, `EVENT_LABACCIDENT_SMALL`, `EVENT_COLONY_NEWSETTLERS`,\n474: `EVENT_ENEMY_INCOMING_Human`. The last is worth noting: the **event type is the `EvImg`\n475: string and it is composed at run time** — `_Human` is a species suffix, so the type space is\n476: not a fixed enumeration and never was.\n477: \n478: ### Text keys used, from `Locale/EN/Strings.csv`\n479: \n480: `EVENTSUM_SHIPS_BUILT` = `Ships Constructed At %s`; `EVENTMSG_SHIPS_BUILT_1SHIP` =\n481: `1 ship built in system %s`; `EVENTMSG_SHIPS_BUILT_NSHIPS` = `%s ships built in system %s`.\n482: So the construction event picks between **two** message keys on the ship count, and the count\n483: is substituted as a `%s`. Both `EVENTSUM_NO_RESEARCH` and `EVENTMSG_NO_RESEARCH` are the same\n484: string and take no parameter.\n485: \n486: ### Wired into `sots-engine`\n487: \n488: `src/app/event_phase.{h,cpp}` bridges the save's event subtree to `game::events` and P11 posts\n489: through it. On the reference pair, with the data root and the AI roster supplied and\n490: `--commit-blocked=P11`: **4 leaves closed on turn1->turn2 and 3 on turn2->turn3, 0 regressed**,\n491: and the posted record agrees with the oracle on every one of its eight fields. Engine-side\n492: write-up: `sots-engine docs/EV-events.md`.\n\n(End of file - total 492 lines)\n","metadata":{"preview":"# Player event posting API (lane E, 2026-09-08)\n\nTarget: recover the API the game uses to post player-visible turn events, so the\nreimplementation can post them and so the compare harness can *see* them.\n\nMotivation: `TechTree::ProcessResearch` (P2-B3) failed its replace-mode oracle by exactly\none item across 40,300 — an unposted `EVENT_RESEARCH_OVERBUDGET`. `ServerPlayer::\nOnTechResearched` (P2-B2) has the same gap. Until events are modelled, both \"0 divergence\"\nverdicts bound the economy fields only.\n\n**Everything below with an address was read out of the instruction stream** (bytes fetched\nwith `read-memory` over the ReVa HTTP shim, disassembled locally with capstone) unless the\nline says *inferred*. Layout claims are additionally confirmed against three real saves via\n`verify/save-reader/save_reader.py`.\n\n---\n\n## 1. The container\n\n`ServerPlayer::Events` is an **`EventStorage` embedded at `ServerPlayer+0x29c`**, size `0x1c`.","truncated":false,"loaded":[],"display":{"type":"file","path":"/tmp/opencode/sots-final-research-re/findings/subsystems/events.md","text":"# Player event posting API (lane E, 2026-09-08)\n\nTarget: recover the API the game uses to post player-visible turn events, so the\nreimplementation can post them and so the compare harness can *see* them.\n\nMotivation: `TechTree::ProcessResearch` (P2-B3) failed its replace-mode oracle by exactly\none item across 40,300 — an unposted `EVENT_RESEARCH_OVERBUDGET`. `ServerPlayer::\nOnTechResearched` (P2-B2) has the same gap. Until events are modelled, both \"0 divergence\"\nverdicts bound the economy fields only.\n\n**Everything below with an address was read out of the instruction stream** (bytes fetched\nwith `read-memory` over the ReVa HTTP shim, disassembled locally with capstone) unless the\nline says *inferred*. Layout claims are additionally confirmed against three real saves via\n`verify/save-reader/save_reader.py`.\n\n---\n\n## 1. The container\n\n`ServerPlayer::Events` is an **`EventStorage` embedded at `ServerPlayer+0x29c`**, size `0x1c`.\n\nVerified by `ServerPlayer::GetEventStorage` at **0x0080db00**, which is the whole function:\n\n```\n0080db00 8d819c020000 lea eax, [ecx + 0x29c]\n0080db06 c3 ret\n```\n\n`__thiscall EventStorage* ServerPlayer::GetEventStorage(ServerPlayer* this)` — no stack args,\nplain `ret`. Every research-path post site either calls it (`ProcessResearch`) or inlines the\n`lea ecx,[esi+0x29c]` (`OnTechResearched`, 0x008919ab / 0x0089241d).\n\n### `EventStorage` (0x1c bytes) — already in the Ghidra project, now confirmed by code\n\n| off | type | name | evidence |\n|---|---|---|---|\n| 0x00 | `void*` | vptr | not touched by the post path |\n| 0x04 | `TurnEvents*` | `Events._Myfirst` | 0x008853aa `mov edx,[esi+8]; sub edx,[esi+4]` |\n| 0x08 | `TurnEvents*` | `Events._Mylast` | same |\n| 0x0c | `TurnEvents*` | `Events._Myend` | vector growth in 0x00885427+ |\n| 0x10 | `allocator` | `Events._Alval` | MSVC `_Vector_val` tail, 4 B |\n| 0x14 | `int` | **`EvNxID`** | 0x008863e3–0x008863f6 |\n| 0x18 | — | padding | struct size 0x1c |\n\n`EvNxID` lands at **`ServerPlayer+0x2b0`** — exactly the byte run the harness guard reported\nas `player+0x2b0:4`. That is now explained, not merely observed.\n\nThe vector element stride is **0x18**: `0x008853b3 mov eax,0x2aaaaaab; imul edx; sar edx,2`\n= signed divide by 24.\n\n### `TurnEvents` (0x18 bytes) — new\n\n| off | type | name | evidence |\n|---|---|---|---|\n| 0x00 | `void*` | vptr | virtual dtor called at 0x00879f21 (`mov edx,[edi]; mov eax,[edx]; push 0; call eax`) |\n| 0x04 | `int` | **`EvTurn`** | 0x008853d3 `cmp [edx+4], ebx` (ebx = the turn argument) |\n| 0x08 | `PlayerEvent*` | `Events._Myfirst` | `lea ecx,[esi+8]` handed to `vector::push_back` at 0x008863db |\n| 0x0c | `PlayerEvent*` | `Events._Mylast` | 0x008863f9 `mov eax,[esi+0xc]` |\n| 0x10 | `PlayerEvent*` | `Events._Myend` | |\n| 0x14 | `allocator` | `Events._Alval` | |\n\n### `PlayerEvent` (0x74 = 116 bytes) — new\n\nStride confirmed two independent ways: the duplicate scanner's divisor at 0x00825d5f\n(`mov eax,0x8d3dcb09; imul ecx; add edx,ecx; sar edx,6` = signed divide by 116) and the\npost function's `mov [eax-0x70], ecx` writing `id` at `element+4` off `_Mylast`.\n\n| off | type | on-disk tag | set by |\n|---|---|---|---|\n| 0x00 | `void*` | — | ctor: vftable `0x00a21958` |\n| 0x04 | `int` | `EvEID` | `PostEvent`: `EvNxID++` (or the duplicate's id) |\n| 0x08 | `std::string` (0x1c) | `EvDsc` | `PostEvent` arg 0 (summary / title) |\n| 0x24 | `std::string` (0x1c) | `EvMsg` | `PostEvent` arg 1 (body) |\n| 0x40 | `int` | `EvLoc` | `obj ? obj->[+4] : 0` |\n| 0x44 | `float[3]` | `EvPos` | `obj ? obj->[+0x18..0x20] : (pos ? *pos : ctor default)` |\n| 0x50 | `std::string` (0x1c) | `EvImg` | `PostEvent` arg `img` (`\"\"` if NULL) |\n| 0x6c | `int` | `EvAct` | `PostEvent` arg `act`; forced to **2** if `act==0 && !obj && !pos` |\n| 0x70 | `int` | `EvCID` | ctor 0; never written by `PostEvent` |\n\n**Correction to `formula-gaps.md`:** the default `EvPos` is **`FLT_MAX` (0x7f7fffff), not\ninfinity**. `PlayerEvent::PlayerEvent` (0x0084ee30) copies the three floats from the global\n`Vector3` at `0x00af0dc8`, whose bytes are `FF FF 7F 7F` × 3. Confirmed in the save:\n`EvPos = 2139095039 (0x7f7fffff)` for `EVENT_RESEARCH_OVERBUDGET`. Writing `+inf`\n(0x7f800000) would produce a different save byte and a different oracle hash.\n\nCtor also sets `EvEID=0`, `EvLoc=0`, `EvAct=0`, `EvCID=0` and the three strings to `\"\"`\n(`0x009e100c`).\n\n### Serialization (matches the save exactly)\n\n`PlayerEvent::Serialize` = vftable slot 1 at **0x00825970**, `__thiscall`, `ret 4`. Tag\npointers all come from the table at `0x00a2bd88` (stride 8): `EvEID EvNxID EvTurn Events\nEvPos EvLoc EvMsg EvImg EvDsc EvCID EvAct sasc`. Emission order read off the instruction\nstream: `EvEID, EvDsc, EvMsg, EvImg, EvLoc, EvPos, EvAct, EvCID`.\n\n`TurnEvents` write 0x00825bb0 / read 0x00825c40: `EvTurn` then the nested collection `Events`.\n`EventStorage` read 0x00825cc0: `EvNxID` then the nested collection `Events`.\n\nSo on disk the shape is **nested, not flat**:\n\n```\nEvents (EventStorage)\n EvNxID : int\n Events : n × TurnEvents\n EvTurn : int\n Events : m × PlayerEvent\n EvEID EvDsc EvMsg EvImg EvLoc EvPos{x,y,z} EvAct EvCID\n```\n\n`findings/objects/save-editor-structs.md:271` models this as\n`SimPlayerEventsSaveStruct events (Int32 evNxId; ComplexArray)` — a **flat**\narray of events. That is wrong (or at least the R1 C# editor's simplification): the\n`ComplexArray` elements are *turn groups*, each holding its own array. `save_reader.py`\nparses it correctly today because `Events` falls into the generic tree; nothing needs fixing\nin the reader, but the struct note should be corrected.\n\n### Ground truth: `verify/results/saves/turn3-state.sav`\n\nPlayer index 1 (`/Sim/Player[1]/Events`, file offset 120372):\n\n```\nEvNxID = 4\n EvTurn = 2\n EvEID 1 EvDsc \"Ships Constructed At Ke'Dolarra\"\n EvMsg \"1 ship built in system Ke'Dolarra\"\n EvImg \"EVENT_SHIPS_BUILT\" EvLoc 288 EvPos {-11.9286, 4.71900, 2.31785}\n EvAct 0 EvCID 0\n EvTurn = 3\n EvEID 2 (the same EVENT_SHIPS_BUILT record, next turn)\n EvEID 3 EvDsc \"Research Over Budget\"\n EvMsg \"Research for Waldo Units has gone overbudget.\"\n EvImg \"EVENT_RESEARCH_OVERBUDGET\" EvLoc 0\n EvPos {0x7f7fffff, 0x7f7fffff, 0x7f7fffff} EvAct 1 EvCID 0\n```\n\nPlayer index 0 has two `EVENT_NO_RESEARCH` records (turns 2 and 3, ids 1 and 2, `EvNxID` 3).\nPlayers 2 and 3 have `EvNxID = 0` and an empty list — note **`EvNxID` starts at 0**, and\n`PostEvent` lazily promotes 0 → 1 on the first post (0x008863e3).\n\n---\n\n## 2. The entry point\n\n```c\n// 0x008862b0\nint __thiscall EventStorage::PostEvent(\n EventStorage* this, // ecx\n std::string summary, // [ebp+0x08], BY VALUE, 0x1c bytes -> EvDsc\n std::string message, // [ebp+0x24], BY VALUE, 0x1c bytes -> EvMsg\n void* obj, // [ebp+0x40] may be NULL\n Vector3* pos, // [ebp+0x44] may be NULL\n int turn, // [ebp+0x48]\n const char* img, // [ebp+0x4c] may be NULL -> \"\"\n int act); // [ebp+0x50]\n// returns the event id; ret 0x4c\n```\n\n`ret 0x4c` = 76 = 2 × 0x1c (the two by-value `std::string`s) + 5 × 4. Both string arguments\nare built **in the caller's frame by `sub esp,0x1c`** and a copy-construct, which is the MSVC\nby-value-`std::string` idiom; `PostEvent` frees their buffers itself before returning\n(0x00886415–0x00886446), so the caller must not.\n\nBody, in order (all read from the instruction stream):\n\n1. `PlayerEvent ev;` — default ctor `0x0084ee30` on a `[ebp-0x84]` temporary.\n2. `ev.EvDsc = summary; ev.EvMsg = message;` (0x0088630d, 0x0088631a).\n3. `ev.EvLoc = obj ? obj->[+4] : 0` (0x00886322).\n4. `ev.EvImg = img ? img : \"\"` — `\"\"` is `0x009e100c`; length by inline `strlen` (0x00886330).\n5. `ev.EvAct = act`; **if `act == 0 && obj == NULL && pos == NULL` then `ev.EvAct = 2`**\n (0x00886353–0x0088636f). This default is easy to miss and changes the save bytes.\n6. Position: `obj` wins (`obj->[+0x18/+0x1c/+0x20]`), else `pos` (`pos->[0/4/8]`), else the\n ctor's `FLT_MAX` triple (0x0088637a–0x008863a7).\n7. `PruneOldTurns(turn)` — 0x00879eb0.\n8. `TurnEvents* bucket = GetOrCreateTurnBucket(turn)` — 0x00885380.\n9. `PlayerEvent* dup = FindDuplicate(bucket, &ev)` — 0x00825d40. **If non-NULL, return\n `dup->EvEID` and post nothing.**\n10. else `bucket->Events.push_back(ev)`; `if (EvNxID == 0) EvNxID = 1;`\n `id = EvNxID++; back().EvEID = id;` return `id`.\n\n### `EventStorage::FindDuplicate` — 0x00825d40, `__thiscall (TurnEvents*, PlayerEvent*)`, `ret 8`\n\nLinear scan of the bucket. Two events are the same when **all** of these match:\n`EvAct` (+0x6c), `EvLoc` (+0x40), the three `EvPos` floats (`fucompp`, so bitwise-unequal\nNaNs never match but the `FLT_MAX` sentinels always do), `EvMsg` (+0x24) and `EvImg` (+0x50).\n**`EvDsc` is NOT compared.** A NULL bucket returns 0 immediately.\n\nThis is why the two identical `EVENT_SHIPS_BUILT` records in `turn3-state.sav` survive as\nseparate events: they are in different turn buckets, and dedup is per-bucket.\n\n### `EventStorage::GetOrCreateTurnBucket` — 0x00885380, `__thiscall (int turn)`, `ret 4`\n\nScans `Events` for `EvTurn == turn`; **keeps scanning to the end and returns the *last*\nmatch** (0x008853d0–0x008853de has no early exit). If none, constructs a bucket\n(`0x00884cb0`, vtable `0x00a0f07c`), appends, and sets `_Mylast[-1].EvTurn = turn`\n(0x0088542d, `mov [eax-0x14], ecx`, i.e. `+4` off the new element at `_Mylast-0x18`).\n\n### `EventStorage::PruneOldTurns` — 0x00879eb0, `__thiscall (int turn)`\n\nCutoff is `turn - 0x32` (**50 turns**), constant, not from config: `0x00879ec3 add ebx,-0x32`.\n\nPrecisely as coded — and this is a quirk worth reproducing rather than \"fixing\": it walks the\n**leading** run of buckets with `EvTurn < cutoff`, leaves `edi` pointing at the **last** one\nof that run, and then shifts from `edi` down to `_Myfirst`. So it erases `n-1` buckets, not\n`n`: **one stale bucket always survives**, and a single leading stale bucket is never\nremoved at all (`0x00879ee2 cmp esi,edi; je` returns). It also stops at the first non-stale\nbucket, so a stale bucket after a fresh one is never reached.\n\n### Convenience wrapper\n\n`0x00886470` (`ret` and prototype not verified by this lane) posts via `PostEvent` twice at\n0x00886802 / 0x00886b22. **161 call sites in 113 functions** reference `PostEvent` directly —\nthis is the single event API for the whole simulation, not a research-specific helper.\n\n### Turn number\n\nEvery research-path site computes the turn as `*(int*)(*(char**)(player + 8) + 8)`.\n`ServerPlayer+8` is the `StrategyServer` *second* base; `0x0080e320` is\n`__thiscall void* ServerPlayer::GetServer()` = `[this+8] ? [this+8]-4 : 0`, so the field is\n`StrategyServer(primary base)+0x0c`. This matches the B4 finding that `StrategyServer` has\ntwo bases four bytes apart.\n\n**CORRECTION (lane EV 2026-09-08): that field is the FRAME (the turn counter), not\n`ModCount`.** The two are different words and the saves separate them cleanly:\n`turn2-state.sav` has `Summary/Turn = 2`, `Sim/Frame = 2` and `Sim/ModCount = 12`, and every\nevent the turn posted landed in bucket `EvTurn = 2`. If the argument were `ModCount` the\nbuckets would be 12 and 24. The value is the **post-increment** turn — a turn run from a save\nat turn *N* posts into bucket *N+1* — because the frame is bumped in `BeginProcessTurn`,\nbefore either turn driver runs.\n\n---\n\n## 3. Which events the research path posts\n\nOrder within `ServerPlayer::ProcessTurn` (0x00891340):\n\n| # | site | event | condition |\n|---|---|---|---|\n| 1 | `TechTree::ProcessResearch` 0x00587b97 | `EVENT_RESEARCH_OVERBUDGET` | per node, see below |\n| 2 | → `SetResearched` → `OnTechResearched` 0x008919b5 | `EVENT_RESEARCH_COMPLETE` / `_UNDERBUDGET` | see below |\n| 3 | → `OnTechResearched` 0x00892427 | `EVENT_TEMPERANCE` | temperance tech cured ≥1 addicted system |\n| 4 | `TechTree::ProcessResearch` 0x00587ff4 | `EVENT_TECHS_UNLOCKED` | tail loop, ≥1 newly available node |\n| 5 | `ProcessTurn` 0x0089168c | `EVENT_NO_RESEARCH` | no target, no affordable tech, tree not exhausted |\n\n`ProcessResearch`'s two posts bracket the per-node loop: OVERBUDGET fires **inside** the loop\n(so once per over-budget node), TECHS_UNLOCKED **once** after it.\n\n### 3.1 `EVENT_RESEARCH_OVERBUDGET` — the B3 defect, fully explained\n\nPosted at **0x00587b97**, in `TechTree::ProcessResearch` (0x005876c0).\n\nPer-node arithmetic recovered from 0x00587732–0x00587907 (naming `cost =\nTechTree::GetNodeCost(node)` = 0x0057da00, `pts = node->points` at `node+0x1c`):\n\n```\nminPts = max(cost * 50 / 100, 0) ; 0x51eb851f/sar 5 = /100\nmaxPts = max(minPts, cost * 150 / 100)\nwasDone = (pts >= cost) ; [ebp-0xcd], setge @0x005877e1\ngranted = min(requested, maxPts - pts)\n*overbudgetOut += requested - granted ; the out-param accumulates unspent points\npts += granted\nnowDone = (pts >= cost) ; [ebp-0xce], setge @0x00587828\n\nif (pts >= maxPts) chance = 1.0f, draw = 0.0f ; always completes\nelse if (granted == 0) chance = 0.0f, draw = 1.0f ; never completes, no draw\nelse chance = (float)(pts - minPts) / maxPts ; NOTE: / maxPts, not /(max-min)\n draw = rng.NextFloat()*(1.0-0.0) + 0.0 ; [0x009e1e68] == 0.0\n if (owner && owner->Species == 5) ; Zuul\n draw = max(draw, rng.NextFloat()*(1.0-0.0)+0.0)\n\nif (chance < draw) { ; roll FAILED -> tech not completed this turn\n if (!wasDone && nowDone && owner) {\n PostEvent(EVENT_RESEARCH_OVERBUDGET); node->flag(+0x2c) = 2;\n }\n} else { ; roll succeeded\n log(\"Research completed at %d of %d (%.1f%%). (Odds: %.2f, Roll: %.2f)\\n\", ...)\n if (pts/cost < 0.8) node->flag(+0x2c) = 0;\n SetResearched(node->def, 2); ; 0x00581e10 -> OnTechResearched\n}\n```\n\nSo **over budget means: the node has accumulated at least its full cost, but the completion\nroll failed, and this is the first turn that has been true.** `!wasDone` is what makes it\nfire exactly once per node.\n\nThe record it posts:\n\n| field | value | evidence |\n|---|---|---|\n| `EvDsc` | `\"Research Over Budget\"` | key `EVENTSUM_RESEARCH_OVERBUDGET`, slot `0x00ae48e0`, thunk key at `0x00a00cac` |\n| `EvMsg` | `\"Research for %s has gone overbudget.\"` % `node->def->name` | key `EVENTMSG_RESEARCH_OVERBUDGET`, slot `0x00ae48e8`, key at `0x00a00ccc` |\n| `EvImg` | `\"EVENT_RESEARCH_OVERBUDGET\"` | literal `0x00a0078c`, pushed at 0x00587b24 |\n| `EvLoc` | `0` | `obj = NULL` (0x00587b2c) |\n| `EvPos` | `{FLT_MAX, FLT_MAX, FLT_MAX}` | `pos = NULL` → ctor default |\n| `EvAct` | `1` | literal, 0x00587b22 |\n| `EvCID` | `0` | ctor |\n\nBoth strings go through `0x008c97f0` (`__cdecl` format-into-`std::string`, 8 stack args:\n`out, fmt, a1..a6`) with the tech name as the single substitution; the summary format\ncontains no `%s`, so it comes out literal. The tech name is `def+0x40` (a `std::string`;\n`_Myres` at `+0x54` selects heap vs. inline buffer, 0x00587a1d).\n\n**Save cross-check:** `turn3-state.sav`, player 1, turn-3 bucket, `EvEID 3` is exactly this\nrecord, with `EvMsg \"Research for Waldo Units has gone overbudget.\"` — the format string, the\n`%s` substitution, `EvAct 1`, `EvLoc 0` and the `FLT_MAX` position all match byte for byte.\n\n### 3.2 `EVENT_RESEARCH_COMPLETE` / `EVENT_RESEARCH_UNDERBUDGET`\n\nPosted at **0x008919b5** in `ServerPlayer::OnTechResearched` (0x00891790), guarded by\n`if (!silent)` (0x00891804 `cmp byte [ebp+0xc], 0; jne`).\n\n```\nratio = TechTree::GetProgressRatio(tree, def) ; 0x0057e950, float\nif (ratio >= 0.8f) img = \"EVENT_RESEARCH_COMPLETE\" (0x00a33368)\n sum = EVENTSUM_RESEARCH_COMPLETE (slot 0x00af09e8)\n msg = EVENTMSG_RESEARCH_COMPLETE (slot 0x00af09f0)\nelse img = \"EVENT_RESEARCH_UNDERBUDGET\" (0x00a33380)\n sum = EVENTSUM_RESEARCH_UNDERBUDGET(slot 0x00af09f8)\n msg = EVENTMSG_RESEARCH_UNDERBUDGET(slot 0x00af0a00)\nPostEvent(sum, snprintf(msg, 0x100, def->name), NULL, NULL, turn, img, 1)\n```\n\nThe 0.8 constant is the `double` at `0x009e20c8` = `0.800000011920929`, i.e. `(double)0.8f` —\nthe comparison is `fcomp` of the `float` ratio against that double. Text:\n\n* `EVENTSUM_RESEARCH_COMPLETE` = `\"Research Complete\"`,\n `EVENTMSG_RESEARCH_COMPLETE` = `\"Tech %s has been acquired\"`\n* `EVENTSUM_RESEARCH_UNDERBUDGET` = `\"Research Breakthrough!\"`,\n `EVENTMSG_RESEARCH_UNDERBUDGET` = `\"Your scientists made a breakthrough with %s. Research has completed ahead of schedule!\"`\n\n`EvAct = 1`, `obj = pos = NULL`, so `EvLoc = 0` and `EvPos = FLT_MAX³`. Message buffer is a\n0x100-byte stack buffer formatted with `0x008c8eb0` (`_snprintf`-shaped, 9 args), then\nassigned into a `std::string`, so **a message longer than 255 chars is truncated** — a real\nbehaviour to reproduce.\n\nNote the naming is counter-intuitive: `UNDERBUDGET` is the *cheap* completion (ratio < 0.8).\n\n### 3.3 `EVENT_TEMPERANCE`\n\nPosted at **0x00892427**, same function, after the per-species temperance sweep\n(0x00892280–0x008922b9: for each species with flag bit 5, cure every owned addicted system\nvia 0x00745e40 / 0x00743800). Guarded by `!silent` **and** by a local \"something was cured\"\nflag (`[ebp-0x189]`, set at 0x008922a6). Strings `EVENTSUM_ADDICTION_TEMPERENCE` /\n`EVENTMSG_ADDICTION_TEMPERENCE` (slots `0x00af0a88` / `0x00af0a90`, note the shipped\nmisspelling \"TEMPERENCE\").\n\n`EvImg = \"EVENT_TEMPERANCE\"` (0x00a33340), `obj = pos = NULL`, and **`EvAct = 0`** — which\nmeans rule 5 of `PostEvent` fires and the stored `EvAct` becomes **2**, not 0. Any\nreimplementation that stores the literal 0 will differ from the oracle here.\n\n### 3.4 `EVENT_TECHS_UNLOCKED`\n\nPosted at **0x00587ff4**, at the tail of `ProcessResearch` (loop at 0x00587cc3). Collects\nevery node `n` where `n != NULL`, `n->def != NULL`, `tree->nodes[n->def->index] != NULL`,\nthat node's **`state` (`+0x14`) `== 2` (available)**, and **`n->turnAvailable` (`+0x20`)\n`== currentTurn`** (0x00587cfc–0x00587d42). If the collected vector is non-empty it posts\nonce.\n\n*Correction to `strategic-turn-internals.md:233`*, which reads the condition as \"state==2 &&\nturnAvailable == currentTurn **&& parent researched**\". There is no parent test: the\n`mov ecx,[ecx]; mov eax,[eax+ecx*4]` pair at 0x00587d0d–0x00587d19 dereferences `n->def` and\nthen indexes `tree->nodes` by `def->[0]`, which is the tech's **own** index (the same\nindirection the entry loop uses at 0x00587738–0x00587740). It resolves back to `n` itself;\nthe two null checks around it are defensive. The state test is therefore on `n`, not on a\nparent.\n\n`EvDsc` = `EVENTSUM_UNLOCKEDTECHS` (slot `0x00ae48f0`) = `\"New Technologies Available\"`.\n`EvMsg` = `EVENTMSG_UNLOCKEDTECHS` (slot `0x00ae48f8`) =\n`\"The following technologies are now available for research:\"` followed by, per node, the\nseparator string at `0x009e4588` and the node's `def->name` (0x00587f46–0x00587f82).\n`EvImg` = literal `\"EVENT_TECHS_UNLOCKED\"` (`0x00a00774`, length pushed as 0x14).\n`EvAct = 1`, `obj = pos = NULL`.\n\n### 3.5 `EVENT_NO_RESEARCH`\n\nPosted at **0x0089168c** in `ServerPlayer::ProcessTurn`. Condition (0x0089162a–0x0089167e):\n\n```\nif (player->ResT (+0x294) == NULL)\n TechTree::CollectResearchedTechs(&out, turn, INT_MAX, sort=1) ; 0x00584e50\n if (out.empty() && TechTree::FindFirstAvailableTech() != NULL) ; 0x0057da90\n PostEvent(EVENTSUM_NO_RESEARCH, EVENTMSG_NO_RESEARCH, NULL, NULL, turn,\n \"EVENT_NO_RESEARCH\" (0x00a3332c), 1)\n```\n\nBoth strings are `\"No Research Project Assigned.\"` — matches `turn3-state.sav` player 0\nexactly (`EvAct 1`, `EvLoc 0`, `EvPos` FLT_MAX³).\n\n**CORRECTION (lane EV 2026-09-08) to this section as first written.** 0x00584e50 was named\nhere as a `ListAvailableTechs` and the middle test read as \"no affordable tech\". It is\n`TechTree::CollectResearchedTechs` (lane T read the whole body; the call site's argument order\nwas re-read here byte for byte from 0x00891600), and the test is about what was **researched**,\nnot about what is available:\n\n1. `ResT == NULL` — the player holds no research target;\n2. **no tech has `state == 4` (researched) with `turnResearched (+0x24) >= turn`**, i.e.\n nothing finished on this turn or later. The turn is passed as the collector's `minTurn`\n and the range runs to `INT_MAX`;\n3. at least one node is in `state == 2` (available) — that is the availability half, and it is\n what excludes the four monster factions, whose entire tree is state 4.\n\nTest 2 is not decoration and the corpus exercises it: in `zuul-turn23-fleet23.sav` the human\nposts `EVENT_RESEARCH_COMPLETE` on turn 22 and **no** no-research event that turn, then\n`EVENT_NO_RESEARCH` again on turn 23. `sots-engine`'s P11 implements all three tests; before\nthis lane it implemented tests 1 and 3 only, and over-fired.\n\nTest 1 is the one a save cannot answer. `ResTNm` on the wire is the target the file was\n**written** with; on the reference pair all four real players start the turn with none and\nthree of them acquire one *during* it, which is AI research selection. Across all eleven\ncorpus saves no AI player ever posts `EVENT_NO_RESEARCH` (~90 player-turns) while the human\nposts it on every turn it lacks a target — stated as a hypothesis, with the operator's\n`--ai-player` roster standing in for the missing input.\n\nAlso in this window (0x008915ec–0x00891624): `RollResearchEvent` (0x0088df20) is called when\n`ResT != NULL && ResErrRoll(+0x3b4) != 0 && (const at 0x00a2c788) < progressRatio`, then\n`ResErrRoll` is cleared — the same draw the B2/B3 lanes measured. `RollResearchAccident`\n(0x00889dc0) posts the `EVENT_LABACCIDENT_*` family; not traced here.\n\n---\n\n## 4. What is *not* verified\n\n* `0x00886470` — the wrapper that also calls `PostEvent`. Its prototype and its two call\n paths were not read; I only established that it exists and is not on the research path.\n* `TurnEvents`' vptr/vtable contents beyond slot 0 (the virtual dtor used by the pruner).\n* The `sasc` tag at `0x00a2bde0` — adjacent to the event tag block, owner unknown.\n* Whether `PostEvent`'s dedup can ever collapse two research events in practice. It cannot\n for OVERBUDGET vs COMPLETE (different `EvImg`), but two *different techs* going over budget\n in the same turn differ only in `EvMsg`, which **is** compared — so both are kept. Verified\n by reading the comparator, not by observing it.\n* `EventStorage::Write` (the save-side counterpart of 0x00825cc0) was not located; only the\n read/`0x8b9d50` direction and the two `TurnEvents` directions were disassembled. The field\n order is identical in both directions and is confirmed by the save, so this is a gap in\n coverage, not in confidence about the layout.\n* The 50-turn prune has never been observed running (our saves are at turn ≤ 3).\n\n---\n\n## 5. What a turn actually posts (lane EV 2026-09-08, measured over all 11 saves)\n\nRead out of the corpus with `verify/state-checksum/state_checksum.py`, not derived. Every\n`EvImg` value, bucket and id below is a file fact.\n\n**Only two players in the whole corpus ever hold an event.** `PlyrIdx 0` (the human) and\n`PlyrIdx 1` (the one AI empire that owns colonies). `PlyrIdx 2..3` are the dormant shadow\nempires — `Sav = 0`, no colonies — and although they *do* pick research targets every turn,\ntheir `EvNxID` is 0 on every save. `PlyrIdx 4..7` are the monster factions, whose whole tech\ntree is state 4 and whose `EvNxID` is likewise 0 throughout. So \"who posts\" is not a property\nof the event API; it is a property of who does anything.\n\n### The reference pair\n\n| pair | player | bucket | id | image | EvAct | EvLoc |\n|---|---|---|---|---|---|---|\n| turn1 -> turn2 | 0 | `EvTurn=2` | 1 | `EVENT_NO_RESEARCH` | 1 | 0 |\n| turn1 -> turn2 | 1 | `EvTurn=2` | 1 | `EVENT_SHIPS_BUILT` | 0 | 288 |\n| turn2 -> turn3 | 0 | `EvTurn=3` | 2 | `EVENT_NO_RESEARCH` | 1 | 0 |\n| turn2 -> turn3 | 1 | `EvTurn=3` | 2 | `EVENT_SHIPS_BUILT` | 0 | 288 |\n| turn2 -> turn3 | 1 | `EvTurn=3` | 3 | `EVENT_RESEARCH_OVERBUDGET` | 1 | 0 |\n\n**Order within a player is readable off the ids**: on turn 3 player 1's construction event is\nid 2 and its research event id 3, so **the build pass posts before the research pass**. Ids\nare per player (`EvNxID` is on the player's own storage), so no cross-player order is\nobservable from a save and none should be assumed.\n\n`EVENT_SHIPS_BUILT` carries `EvAct = 0` **as stored**, because it has a subject (`EvLoc` 288,\na real position) — the `act == 0 && !obj && !pos -> 2` rule does not fire. The only stored\n`EvAct = 2` in the corpus is `EVENT_LABACCIDENT_SMALL`.\n\n### Every image the corpus contains\n\n`EVENT_NO_RESEARCH`, `EVENT_SHIPS_BUILT`, `EVENT_RESEARCH_COMPLETE`, `EVENT_TECHS_UNLOCKED`,\n`EVENT_RESEARCH_OVERBUDGET`, `EVENT_FLEET_ARRIVED`, `EVENT_FLEET_EXPLORED`,\n`EVENT_FLEET_MULTIPOINT_NONODE`, `EVENT_LABACCIDENT_SMALL`, `EVENT_COLONY_NEWSETTLERS`,\n`EVENT_ENEMY_INCOMING_Human`. The last is worth noting: the **event type is the `EvImg`\nstring and it is composed at run time** — `_Human` is a species suffix, so the type space is\nnot a fixed enumeration and never was.\n\n### Text keys used, from `Locale/EN/Strings.csv`\n\n`EVENTSUM_SHIPS_BUILT` = `Ships Constructed At %s`; `EVENTMSG_SHIPS_BUILT_1SHIP` =\n`1 ship built in system %s`; `EVENTMSG_SHIPS_BUILT_NSHIPS` = `%s ships built in system %s`.\nSo the construction event picks between **two** message keys on the ship count, and the count\nis substituted as a `%s`. Both `EVENTSUM_NO_RESEARCH` and `EVENTMSG_NO_RESEARCH` are the same\nstring and take no parameter.\n\n### Wired into `sots-engine`\n\n`src/app/event_phase.{h,cpp}` bridges the save's event subtree to `game::events` and P11 posts\nthrough it. On the reference pair, with the data root and the AI roster supplied and\n`--commit-blocked=P11`: **4 leaves closed on turn1->turn2 and 3 on turn2->turn3, 0 regressed**,\nand the posted record agrees with the oracle on every one of its eight fields. Engine-side\nwrite-up: `sots-engine docs/EV-events.md`.","lineStart":1,"lineEnd":492,"totalLines":492,"truncated":false}},"title":"../../../tmp/opencode/sots-final-research-re/findings/subsystems/events.md","time":{"start":1789017863520,"end":1789017863532}},"metadata":{"openai":{"itemId":"fc_038b7318c5e3845d016aa23f07518087d1b7388bf217dbe8ca"}},"id":"prt_089c63552001lKRuvGWE0ziVBl","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5fc590012gWptrcPjqA311"}} +{"type":"tool_use","timestamp":1789017863570,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_nHjsidfXAFcmChziLb3X8h8M","state":{"status":"completed","input":{"filePath":"/tmp/opencode/sots-final-research-re/findings/subsystems/observedtech-append.md"},"output":"/tmp/opencode/sots-final-research-re/findings/subsystems/observedtech-append.md\nfile\n\n1: # `vector otch` — pinned, and the displacement scanner that pinned it\n2: \n3: Lane X. Static/host only; VM140 was held by lane F and the game was never run.\n4: \n5: Two things here: a general-purpose tool (`tools/x86disp.py`) for a class of cross-reference\n6: Ghidra cannot index, and the `ServerPlayer+0x274` answer it was built to get.\n7: \n8: ---\n9: \n10: ## 1. The gap the tool fills\n11: \n12: Ghidra indexes **immediate** operands. It does not index **ModRM displacements**. On a\n13: 41,411-function MSVC C++ binary `lea reg,[reg+disp]` is *the* idiom for taking the address of\n14: a member — it is how every `std::vector`, every `std::string`, every embedded sub-object gets\n15: passed to a method or a constructor. So `find-constant-uses 0x274` returned 13 unrelated hits\n16: and none of them was the vector, and lane P correctly concluded the search was a limitation\n17: rather than evidence of absence.\n18: \n19: Lane E only found `EventStorage` at `+0x29c` because a whole accessor function happened to\n20: exist (`lea eax,[ecx+0x29c]; ret`). We were blind to this whole reference class all campaign,\n21: with ~1,600 classes still to go.\n22: \n23: ## 2. The tool — `tools/x86disp.py`\n24: \n25: A real x86-32 **length decoder** (legacy prefixes, 1-/2-/3-byte opcodes, ModRM, SIB, disp8\n26: sign-extended, disp32, every immediate form), swept from Ghidra's function starts so every\n27: decode begins on a genuine instruction boundary. It indexes every memory operand that carries\n28: a displacement, then answers \"what code touches offset N off some object?\" with the containing\n29: function, instruction address, base register and decoded instruction.\n30: \n31: Correctness points that would otherwise produce confident garbage, all handled:\n32: \n33: * `mod=0,rm=5` and `mod=0,rm=4,sib.base=5` are **disp32 with no base** — an absolute global\n34: address, not a member offset. Excluded from member queries. (Without this, every\n35: `mov eax,[0x00a2bd88]` in the binary shows up as a \"displacement\".)\n36: * `mod=1` disp8 is **sign-extended**: `-0x08` must not be reported as `+0xf8`.\n37: * `mod=3` is a register operand with no displacement at all.\n38: * `0x67` address-size prefix means 16-bit ModRM, a different layout entirely — refused rather\n39: than mis-decoded.\n40: \n41: Commands: `build`, `query `, `cohort`, `func `, `dis `, `stats`, `brute`.\n42: \n43: **Decode quality:**\n44: \n45: ```\n46: functions swept : 41089\n47: instructions : 2174504\n48: disp sites : 612166\n49: desyncs : 70 (0.17% of functions)\n50: code coverage : 6142049/6142358 (100.0%)\n51: ```\n52: \n53: Zero unknown-opcode desyncs — the opcode tables cover everything this binary contains. All 70\n54: desyncs are truncations at a section/function boundary, not lost sync inside real code.\n55: \n56: > Gotcha worth carrying: the first build clipped each sweep at `fva + Ghidra's sizeInBytes`\n57: > and lost 11% of functions to mid-instruction truncation — Ghidra's `sizeInBytes` understates\n58: > real bodies often enough to matter (it was cutting valid `mov esp,ebp; pop ebp; ret`\n59: > epilogues in half). Sweeping to the **next function start** instead took coverage 89% → 100%.\n60: \n61: The tool works off a local cache (`dumps/`, gitignored: the exe, the function list, the index)\n62: so it never hammers the shared Ghidra box. `tools/cache_functions.py` pulls the function list\n63: once.\n64: \n65: ## 3. Validation — it rediscovers what we already knew\n66: \n67: Run before any new claim was made.\n68: \n69: **GT1 — `ServerPlayer::GetEventStorage`, the one accessor we already had:**\n70: \n71: ```\n72: $ uv run python3 tools/x86disp.py func 0x0080db00\n73: ServerPlayer_GetEventStorage @ 0x0080db00 size 7\n74: 0x0080db00 lea eax,[ecx+0x29c] ServerPlayer_GetEventStorage+0x0 (8d819c020000)\n75: ```\n76: \n77: **GT2 — lane E's two `OnTechResearched` sites, plus one it did not have:**\n78: \n79: ```\n80: $ uv run python3 tools/x86disp.py query 0x29c --lea\n81: ProcessTurn @0x00891340\n82: 0x00891713 lea ecx,[esi+0x29c] ProcessTurn+0x3d3 <-- NEW\n83: OnTechResearched @0x00891790\n84: 0x008919ab lea ecx,[esi+0x29c] OnTechResearched+0x21b <-- known\n85: 0x0089241d lea ecx,[esi+0x29c] OnTechResearched+0xc8d <-- known\n86: ```\n87: \n88: **GT3 — `EvNxID` at `ServerPlayer+0x2b0`:** 90 sites found; the `ServerPlayer` ones are present.\n89: This one is also the honest illustration of the precision problem — see §5.\n90: \n91: **GT4 — positive control for the cohort ranker.** Given the 50 `ServerPlayer` offsets already\n92: in `struct-recovery.md`, `FUN_0087fac0` scores **50 co-hits out of 50** — it is the\n93: `ServerPlayer` serializer, and nothing else in the binary comes close. A scanner that could\n94: not surface that function from a bare offset query would not be worth using.\n95: \n96: ## 4. The answer: `sizeof(ObservedTech)` and the append site\n97: \n98: ### `sizeof(Game::ObservedTech) = 0x2c` (44 bytes) — verified, three independent ways\n99: \n100: **(a)** `vector::operator=` at `0x00872380` divides the vector's byte span by a\n101: constant using MSVC's magic-number sequence:\n102: \n103: ```\n104: 0x00872398 mov ecx,[edi+0x4] ; src._Mylast\n105: 0x0087239b mov edi,[edi] ; src._Myfirst\n106: 0x0087239d sub ecx,edi ; byte span\n107: 0x0087239f mov eax,0x2e8ba2e9\n108: 0x008723a4 imul ecx\n109: 0x008723a6 sar edx,3\n110: ```\n111: \n112: `ceil(2^35 / 44) == 0x2e8ba2e9` **exactly**, and emulating the full sequence reproduces\n113: n = 0,1,2,3,10,71,1000 from spans of 0,44,88,132,440,3124,44000. Divisor = 44, unambiguously.\n114: \n115: **(b)** The same function then multiplies back by the literal stride:\n116: \n117: ```\n118: 0x0087243a imul ecx,ecx,0x2c\n119: 0x0087243d add ecx,[esi] ; this->_Myfirst + n*44\n120: 0x00872441 mov [esi+0x4],ecx ; this->_Mylast = ...\n121: ```\n122: \n123: Same literal at `0x00872468` and at `0x007b735b` inside `push_back`.\n124: \n125: **(c)** The linear search in the append function advances its iterator by `add edi,0x2c`\n126: (`0x007ba257`).\n127: \n128: This matches the on-disk lower bound *exactly* — 4 × `int` + one `0x1c` `std::string` = 44 —\n129: so there is no padding slack anywhere in the element.\n130: \n131: ### The append site\n132: \n133: ```\n134: FUN_007ba1a0 = RecordObservedTech (direct callee of ServerPlayer::OnTechResearched 0x00891790)\n135: \n136: 0x007ba221 mov edi,[esi+0x274] ; it = observer->otch._Myfirst\n137: 0x007ba227 cmp edi,[esi+0x278] ; ... != _Mylast ?\n138: 0x007ba22d je 0x007ba274 ; empty -> append\n139: loop: compare each element's name string (this = elem+0x0c, length = [elem+0x1c])\n140: 0x007ba257 add edi,0x2c ; ++it *** stride 44 ***\n141: 0x007ba25a cmp edi,[esi+0x278]\n142: 0x007ba260 jne loop\n143: 0x007ba274 lea ecx,[ebp-0x3c]\n144: 0x007ba277 call 0x008562a0 ; ObservedTech::ObservedTech() on the stack\n145: 0x007ba27e push eax\n146: 0x007ba27f lea ecx,[esi+0x274] ; this = &player->otch <<< THE APPEND\n147: 0x007ba288 call 0x007b7320 ; vector::push_back\n148: ```\n149: \n150: `push_back` (`0x007b7320`) grows via `0x007b5820` when `_Mylast == _Myend` — **that realloc is\n151: exactly why lane R's guard saw all three of `player+0x274/0x278/0x27c` move on a completion**,\n152: rather than only `_Mylast`.\n153: \n154: `RecordObservedTech` is called from `OnTechResearched` (`0x00891790`) and from `0x007be228`,\n155: `0x007be4e1`, `0x007be535`. It is a **de-duplicating** append: it appends only if no existing\n156: element already carries that tech name — worth knowing for the reimplementation, since a naive\n157: `push_back` would diverge on a re-observation.\n158: \n159: Neither `push_back` nor `operator=` is COMDAT-ambiguous: `0x007b7320` has exactly one caller\n160: (`RecordObservedTech`, `ecx = player+0x274`) and `0x00872380` has two, both passing\n161: `ServerPlayer+0x274`. `0x007b5820` **is** shared with `FUN_0086dec0` and may be a folded body,\n162: so it is labelled `vector_44B_grow`, not as ObservedTech-specific.\n163: \n164: ### Element layout — as far as the evidence actually goes\n165: \n166: The default ctor at `0x008562a0` writes vtable `0x00a2439c` at `+0x00`. RTTI:\n167: COL `0x00a81c78` → type descriptor `0x00aeede4` → **`.?AVObservedTech@Game@@`**. So\n168: `ObservedTech` is polymorphic and its first word is a vptr, not a data field — which the\n169: on-disk shape does not tell you.\n170: \n171: > **Superseded 2026-09-08 by lane S — see §9.** The table as first written called the\n172: > embedded string 0x18 bytes and left `+0x08`, `+0x24`, `+0x28` unaccounted. `+0x24` is not a\n173: > field: it is the string's own trailing allocator word. The corrected map is below; the\n174: > original reasoning is kept in §9 because the way it went wrong is the useful part.\n175: \n176: | offset | size | member | evidence |\n177: |---|---|---|---|\n178: | `+0x00` | 4 | vptr `0x00a2439c` | ctor writes it, RTTI-confirmed |\n179: | `+0x04` | 2 | `uint16 otnF` (turn first observed) | `mov word [eax-0x28],cx` at `0x007ba2b0` (`eax` = `_Mylast`, element = `_Mylast-0x2c`), source `[ebx+0xc]`; tag from `ObservedTech::Write` |\n180: | `+0x06` | 2 | `uint16 otnL` (turn last observed) | `mov word [eax-0x26],dx` at `0x007ba2c6`, **same source word** `[ebx+0xc]` — first sighting sets first == last |\n181: | `+0x08` | 1 | `bool odet` | ctor stores a **byte** (`mov [esi+0x8],bl`, `0x008562f4`); copy-ctor copies a byte; serialised with `WriteBool`/`ReadBool` |\n182: | `+0x0c..+0x27` | 0x1c | `std::string otch` (tech name) | object base `+0x0c`, MSVC `{_Bx[16] @0, _Mysize @0x10, _Myres @0x14, _Alval @0x18}`. Ctor writes `[+0x0c]=0`, `[+0x1c]=0`, `[+0x20]=0xf`; the search loop reads `[+0x1c]` as the length and calls compare with `this = +0x0c`; the post-append assign uses `lea ecx,[_Mylast-0x20]` = `+0x0c`. `+0x24` is `_Alval` — never read, never written, by anything |\n183: | `+0x28` | 4 | `int owith` | ctor zeroes it; `ObservedTech::Write` emits it last |\n184: \n185: `4 + 2 + 2 + 1(+3 pad) + 0x1c + 4 = 0x2c` exactly — sizeof is fully accounted for, with no\n186: padding slack and no unaccounted field.\n187: \n188: ### Where the mapping came from — the serializer\n189: \n190: `Game::ObservedTech`'s vftable `0x00a2439c` is the usual 3 slots\n191: `{ [0] 0x00793610 scalar deleting dtor, [1] 0x00817c40 Read, [2] 0x00817cf0 Write }`.\n192: `Write` enumerates the entire object, in order, and touches nothing else:\n193: \n194: ```\n195: 0x00817cff movzx ecx,word [edi+0x04] push 0xa2b38c \"otnF\" -> stream vft+0x24 (int)\n196: 0x00817d0f movzx ecx,word [edi+0x06] push 0xa2b384 \"otnL\" -> stream vft+0x24 (int)\n197: 0x00817d26 lea eax,[edi+0x08] push 0xa2b36c \"odet\" -> WriteBool 0x008b9c20\n198: 0x00817d37 lea ecx,[edi+0x0c] push 0xa2b3e8 \"otch\" -> WriteString 0x008b9d70\n199: 0x00817d46 mov eax,[edi+0x28] push 0xa2b364 \"owith\" -> stream vft+0x24 (int)\n200: ```\n201: \n202: `Read` (`0x00817c40`) is the exact mirror: `otnF`/`otnL` read as ints and stored back with\n203: 16-bit `mov word [ebx],ax`, `odet` through `ReadBool`, `otch` through `ReadString`, `owith`\n204: reached as `add edi,0x28`. That matches the on-disk order `save_reader.py` already had\n205: (`Otch = otnF otnL odet otch(string) owith`), which is a nice independent agreement between\n206: the disassembly and the save oracle.\n207: \n208: `Game::ObservedWeapon` (`Write` `0x00817bc0`, `Read` `0x00817b10`) is the same element shape\n209: with tag `owep` (`0x00a2b3f0`) in place of `otch` — a second instance of the identical 0x2c\n210: layout.\n211: \n212: Lane P's `observed_techs` region byte delta remains a valid live cross-check and should come\n213: back as exactly 44 per completion.\n214: \n215: ## 5. False-positive rate, honestly\n216: \n217: Two different error rates, and the interesting one is not the one you'd expect.\n218: \n219: **Decode-level error of the naive method is low.** A raw byte scan for `8D` + ModRM + the\n220: displacement — the thing you'd write without a decoder — is mostly *right*:\n221: \n222: | query | naive candidates | not actually an instruction | real sites the naive scan **missed** |\n223: |---|---|---|---|\n224: | `lea`, disp32 `0x274` | 19 | 0 (0.0%) | **80 of 99** |\n225: | 11 common opcodes, disp32 `0x274` | 89 | 1 (1.1%) | 11 of 99 |\n226: | `lea`, disp8 `0x14` | 828 | 1 (0.1%) | **13,784 of 14,611** |\n227: | 11 common opcodes, disp8 `0x14` | 10,326 | 59 (0.6%) | 4,344 of 14,611 |\n228: \n229: So the decoder's win is **recall, not decode precision**. A hand-written opcode set misses\n230: 80–94% of the real accesses, because a member is read, written, compared, and float-loaded far\n231: more often than its address is taken, and you cannot enumerate those opcodes by hand.\n232: \n233: **Class-level precision is the real problem, and it is poor.** The scanner knows the\n234: displacement; it cannot know what class the base register holds. `query 0x274` returns 99 sites\n235: in 45 functions and only about 6 of those functions are actually touching `ServerPlayer::otch`\n236: — roughly **13% precision by function**. The honest way to state the value is as search-space\n237: reduction: 41,411 functions → 45, about **900×**, down to a list a human reads in two minutes.\n238: \n239: **The cohort ranker helps, and has a trap.** Scoring functions by how many *already-known*\n240: offsets of the same class they touch pulls real class methods to the top (the serializer hits\n241: 50/50). But it would have **thrown away the correct answer**: `RecordObservedTech` touches only\n242: `0x274` and `0x278` and nothing else on `ServerPlayer`, so any `--min>=1` filter drops it. Use\n243: cohort as a ranker, never as a filter. This is now written into the tool's own docstring.\n244: \n245: What actually closed the case was the plain `query 0x274` list **intersected with one call-graph\n246: lookup** (`OnTechResearched`'s direct callees). Displacement scan for recall, call graph for\n247: disambiguation — neither alone was enough.\n248: \n249: ## 6. Previously anonymous offsets — attribution results\n250: \n251: The payoff was smaller than hoped, because most of the audit's anonymous offsets had already\n252: been named by other lanes since the audit was written.\n253: \n254: | offset | status before | after |\n255: |---|---|---|\n256: | `player+0x274/0x278/0x27c` | \"vector grew, append site unknown\" | **`RecordObservedTech+0xdf` (0x007ba27f)**, `sizeof` = 0x2c |\n257: | `player+0x2b0` | already named by lane E | unchanged (`EvNxID`) |\n258: | `TechTree+0x20` | already `TechTree_off_OrderCounter` | unchanged |\n259: | `ServerPlayer+0x308` | already `ServerPlayer_off_NodeBore` | unchanged |\n260: | `Budget+0x64` | harness-audit row 11: \"the original writes it\" | **not supported.** See below |\n261: \n262: **`Budget+0x64` (harness-audit row 11) — a correction.** `ServerPlayer::ComputeBudget`\n263: (`0x00863030`) writes its `Budget*` out-param through `esi`, and every such store lands in\n264: `+0x00..+0x54` (the 22-int block). The only two `+0x64` accesses in the whole function are\n265: **loads off a different base register** (`mov ecx,[eax+0x64]` at `0x0086328c`,\n266: `mov edx,[eax+0x64]` at `0x0086335d`). There is no store to `Budget+0x64` in `ComputeBudget`.\n267: \n268: Separately, `TechTree::ProcessResearch`'s `int* overbudget` fourth argument is **not**\n269: `Budget+0x64`: its only caller is `ProcessTurn` (`0x00891340`) and the call at `0x008914a5`\n270: passes `lea edx,[ebp-0x14]` — a stack local, consumed immediately after the call\n271: (`mov eax,[ebp-0x14]; cmp eax,0; jle`).\n272: \n273: This agrees with lane R, whose `budget_object` guard saw `Budget+0x64` change in **0 of 4284\n274: calls**. Row 11 should be reclassified from \"the original writes it and B1 never checked\" to\n275: \"nothing has been shown to write it\"; the remaining way to settle it is a write watchpoint on\n276: that word, not another static search.\n277: \n278: ## 7. Verdict on the technique\n279: \n280: Worth keeping, with its limits stated. It answered a question that had been parked, and the\n281: `0x29c` validation turned up a `ProcessTurn` `EventStorage` site nobody had. But it is a\n282: **recall** tool that produces a 20–100 line candidate list per offset, not an oracle: every\n283: result still needs a call-graph or decompiler check before it is a fact. For the ~1,600\n284: remaining classes the realistic workflow is `query ` → read the list → confirm with one\n285: cross-reference call.\n286: \n287: ## 8. Ghidra writeback\n288: \n289: Labels: `RecordObservedTech` `0x007ba1a0`, `vector_ObservedTech_push_back` `0x007b7320`,\n290: `ObservedTech_ctor` `0x008562a0`, `vector_ObservedTech_assign` `0x00872380`,\n291: `vector_44B_grow` `0x007b5820`, `vftable_ObservedTech` `0x00a2439c`. Plate comments carrying\n292: the stride evidence on the first four.\n293: \n294: `addresses.json`: `ObservedTech_sizeof`, `ObservedTech_vftable`, `ObservedTech_off_Name`,\n295: `RecordObservedTech`, `vector_ObservedTech_push_back`, `vector_ObservedTech_assign`,\n296: `ObservedTech_ctor`, `vector_44B_grow`; `ServerPlayer_off_ObservedTechs` updated from\n297: \"NOT PINNED\" to `verified`.\n298: \n299: **Lane S round (2026-09-08).** Labels: `ObservedTech_Write` `0x00817cf0`, `ObservedTech_Read`\n300: `0x00817c40`, `ObservedTech_scalar_deleting_dtor` `0x00793610`, `ObservedWeapon_Write`\n301: `0x00817bc0`, `ObservedWeapon_Read` `0x00817b10`, `vector_ObservedTech_uninit_copy` `0x0079a150`,\n302: `vector_string_find_by_name` `0x00699bd0`. Prototypes on the five class methods. Plate comments\n303: carrying the full member map on the two serializers, the ctor, the dtor and the copy helper, and\n304: the `sizeof(std::string) = 0x1c` fact on `Stream::WriteString` `0x008b9d70` and on the\n305: `vector` stride site `0x00699bd0` — the two places a future lane is most likely to look.\n306: `addresses.json` +10 entries (`std_string_sizeof`, `ObservedTech_Read/_Write/_dtor/_copy_ctor`,\n307: `ObservedTech_off_TurnFirst/_TurnLast/_Detected/_With`, `ObservedWeapon_Write`), 4 corrected.\n308: \n309: ---\n310: \n311: ## 9. `std::string` is 0x1c, not 0x18 — the correction, and why it mattered (lane S, 2026-09-08)\n312: \n313: §4 above originally reported the embedded string as **0x18 bytes**, against the campaign-wide\n314: `_Bx@0, _Mysize@0x10, _Myres@0x14, _Alval@0x18`, sizeof `0x1c`. Lane X flagged it as \"worth\n315: re-checking\" rather than asserting it, which was the right call: **`0x1c` is correct, and it is\n316: correct everywhere in this binary.** `ObservedTech+0x24` is the string's own trailing allocator\n317: word, not a data member.\n318: \n319: ### Why the 0x18 reading looked right\n320: \n321: Everything lane X observed was accurate. The string's *live* fields really do stop at `+0x14`\n322: (`_Bx@0`, `_Mysize@0x10`, `_Myres@0x14`), because `_Alval` is `std::allocator` — an empty\n323: class. It occupies a word of the object but is never loaded or stored, so it is invisible to\n324: any evidence based on **what the code touches**. Sizing a type from its accessed fields\n325: undercounts it by exactly the tail padding. The same trap is live for `std::vector` in this\n326: build, which is `{_Myfirst, _Mylast, _Myend, _Alval}` = `0x10` while only three words are ever\n327: read (`events.md` already records the `_Alval` word at `EventStorage+0x10` and `+0x14`).\n328: \n329: ### The three things that settle it inside `ObservedTech`\n330: \n331: Each is a *complete enumeration* of the object, which is the right instrument here — an\n332: enumeration can show a field's **absence**, a touch-scan cannot.\n333: \n334: 1. **`ObservedTech::Write` `0x00817cf0`** serialises `+0x04, +0x06, +0x08, +0x0c, +0x28`.\n335: No `+0x24`. (`Read` `0x00817c40` mirrors it.)\n336: 2. **`ObservedTech_ctor` `0x008562a0`** initialises `+0x00, +0x04, +0x08, +0x0c(string), +0x28`.\n337: No `+0x24` — while zeroing every other scalar in the object.\n338: 3. **The copy constructor**, inlined at `0x0079a184` inside the vector's uninitialised-copy\n339: helper `FUN_0079a150`, copies `+0x04, +0x06, +0x08`, the string at `+0x0c`, and `+0x28`.\n340: No `+0x24`.\n341: \n342: A 4-byte data member that the constructor, the copy constructor and the serializer all ignore\n343: is not a data member.\n344: \n345: ### Binary-wide check — `tools/strfootprint.py`\n346: \n347: One class is an anecdote, so the same question was put to the whole binary. Every serializer\n348: hands member pointers to the `Mars::Stream` primitive helpers with a fixed idiom\n349: (`lea r,[base+disp]; push r; push tag; push stream; call helper`), so the scanner recovers\n350: `(base, disp, tag)` for every string site and then asks: does the same function touch any other\n351: offset inside `(N, N+0x1c)` off the same base register?\n352: \n353: ```\n354: string helper call sites : 241\n355: resolved to a class member offset : 65\n356: stack temporaries (ebp/esp base) : 30\n357: offset not reached by a plain lea : 146\n358: \n359: members with a sibling inside (N, N+0x1c) : 0\n360: \n361: gap from a string member to the next member on the same base:\n362: +0x1c : 51\n363: +0x20 : 1\n364: ```\n365: \n366: **65 string members across every serializer in the exe, zero collisions, and 51 of the 52\n367: measurable gaps are exactly `0x1c`.** The single `+0x20` is `StrategyServer::KeyPath` at\n368: `+0x134`, whose *Read* side gives `+0x1c` to `+0x150` — the writer simply skips a member.\n369: There is no `0x18` instantiation, no empty-base-optimised variant, and no game-local string\n370: class. One layout, `0x1c`.\n371: \n372: Two exclusions matter or the scan reports noise, and both are why a naive version of this\n373: would have \"confirmed\" 0x18:\n374: \n375: * **`ebp`/`esp` bases are stack temporaries, not members.** A local string at `[ebp-0x2c]`\n376: shows accesses at `-0x1c` and `-0x18` — which read exactly like two sibling fields inside\n377: the span. All 30 such sites are excluded.\n378: * **`N+0x10` and `N+0x14` are the string's own `_Mysize`/`_Myres`**, touched inline whenever\n379: the compiler expands the `_Myres >= 16 ? _Ptr : _Buf` test at a call site.\n380: \n381: ### Independent corroboration outside the scan\n382: \n383: * `FUN_00699bd0` walks a `vector` doing the SSO test at `[esi+0x14]`/`[esi]` —\n384: element base *is* string base — and advances `add esi,0x1c` (`0x00699c29`). The stride of a\n385: vector of strings **is** `sizeof(std::string)`.\n386: * `EventStorage::PostEvent` `0x008862b0` takes two by-value `std::string`s at `[ebp+0x08]` and\n387: `[ebp+0x24]` (spacing `0x1c`) and `RET 0x4c` = `2*0x1c + 5*4`.\n388: * `MoraleEvent` is 0x50 bytes with its name string at `+0x34`: `0x34 + 0x1c = 0x50` exactly.\n389: \n390: ### Blast radius — what actually had to change\n391: \n392: Nothing in any recovered struct table. Every string-bearing layout in `struct-recovery.md`,\n393: `save-editor-structs.md`, `events.md` and `schema-gaps-resolved.md` already used `0x1c` spans\n394: and `0x1c` inter-field gaps, and the binary agrees with all of them. `ServerPlayer::pswd` at\n395: `0x2dc..0x2f7` — the row §4 asked to re-check — is **correct**: `Write` `0x008563e0` puts the\n396: next member exactly `0x1c` above it. The corrections were confined to three prose statements\n397: that had propagated the 0x18 number (`loader-prototypes.md` conventions line, the\n398: `GlobalConst_ParseString` prototype in `addresses.json`, and §4 here) plus one transposition in\n399: `struct-recovery.md` §0 that said `size@0x14, res@0x18` where the verified offsets are\n400: `0x10`/`0x14`.\n401: \n402: The lesson worth carrying, and the reason this was worth chasing rather than reconciling: **do\n403: not size a struct member from the offsets the code touches.** Trailing empty-allocator words in\n404: this build's STL are invisible to a touch-scan and cost exactly 4 bytes every time. Size types\n405: from an enumeration — a serializer, a constructor, a copy constructor, or a container stride.\n\n(End of file - total 405 lines)\n","metadata":{"preview":"# `vector otch` — pinned, and the displacement scanner that pinned it\n\nLane X. Static/host only; VM140 was held by lane F and the game was never run.\n\nTwo things here: a general-purpose tool (`tools/x86disp.py`) for a class of cross-reference\nGhidra cannot index, and the `ServerPlayer+0x274` answer it was built to get.\n\n---\n\n## 1. The gap the tool fills\n\nGhidra indexes **immediate** operands. It does not index **ModRM displacements**. On a\n41,411-function MSVC C++ binary `lea reg,[reg+disp]` is *the* idiom for taking the address of\na member — it is how every `std::vector`, every `std::string`, every embedded sub-object gets\npassed to a method or a constructor. So `find-constant-uses 0x274` returned 13 unrelated hits\nand none of them was the vector, and lane P correctly concluded the search was a limitation\nrather than evidence of absence.\n\nLane E only found `EventStorage` at `+0x29c` because a whole accessor function happened to\nexist (`lea eax,[ecx+0x29c]; ret`). We were blind to this whole reference class all campaign,","truncated":false,"loaded":[],"display":{"type":"file","path":"/tmp/opencode/sots-final-research-re/findings/subsystems/observedtech-append.md","text":"# `vector otch` — pinned, and the displacement scanner that pinned it\n\nLane X. Static/host only; VM140 was held by lane F and the game was never run.\n\nTwo things here: a general-purpose tool (`tools/x86disp.py`) for a class of cross-reference\nGhidra cannot index, and the `ServerPlayer+0x274` answer it was built to get.\n\n---\n\n## 1. The gap the tool fills\n\nGhidra indexes **immediate** operands. It does not index **ModRM displacements**. On a\n41,411-function MSVC C++ binary `lea reg,[reg+disp]` is *the* idiom for taking the address of\na member — it is how every `std::vector`, every `std::string`, every embedded sub-object gets\npassed to a method or a constructor. So `find-constant-uses 0x274` returned 13 unrelated hits\nand none of them was the vector, and lane P correctly concluded the search was a limitation\nrather than evidence of absence.\n\nLane E only found `EventStorage` at `+0x29c` because a whole accessor function happened to\nexist (`lea eax,[ecx+0x29c]; ret`). We were blind to this whole reference class all campaign,\nwith ~1,600 classes still to go.\n\n## 2. The tool — `tools/x86disp.py`\n\nA real x86-32 **length decoder** (legacy prefixes, 1-/2-/3-byte opcodes, ModRM, SIB, disp8\nsign-extended, disp32, every immediate form), swept from Ghidra's function starts so every\ndecode begins on a genuine instruction boundary. It indexes every memory operand that carries\na displacement, then answers \"what code touches offset N off some object?\" with the containing\nfunction, instruction address, base register and decoded instruction.\n\nCorrectness points that would otherwise produce confident garbage, all handled:\n\n* `mod=0,rm=5` and `mod=0,rm=4,sib.base=5` are **disp32 with no base** — an absolute global\n address, not a member offset. Excluded from member queries. (Without this, every\n `mov eax,[0x00a2bd88]` in the binary shows up as a \"displacement\".)\n* `mod=1` disp8 is **sign-extended**: `-0x08` must not be reported as `+0xf8`.\n* `mod=3` is a register operand with no displacement at all.\n* `0x67` address-size prefix means 16-bit ModRM, a different layout entirely — refused rather\n than mis-decoded.\n\nCommands: `build`, `query `, `cohort`, `func `, `dis `, `stats`, `brute`.\n\n**Decode quality:**\n\n```\nfunctions swept : 41089\ninstructions : 2174504\ndisp sites : 612166\ndesyncs : 70 (0.17% of functions)\ncode coverage : 6142049/6142358 (100.0%)\n```\n\nZero unknown-opcode desyncs — the opcode tables cover everything this binary contains. All 70\ndesyncs are truncations at a section/function boundary, not lost sync inside real code.\n\n> Gotcha worth carrying: the first build clipped each sweep at `fva + Ghidra's sizeInBytes`\n> and lost 11% of functions to mid-instruction truncation — Ghidra's `sizeInBytes` understates\n> real bodies often enough to matter (it was cutting valid `mov esp,ebp; pop ebp; ret`\n> epilogues in half). Sweeping to the **next function start** instead took coverage 89% → 100%.\n\nThe tool works off a local cache (`dumps/`, gitignored: the exe, the function list, the index)\nso it never hammers the shared Ghidra box. `tools/cache_functions.py` pulls the function list\nonce.\n\n## 3. Validation — it rediscovers what we already knew\n\nRun before any new claim was made.\n\n**GT1 — `ServerPlayer::GetEventStorage`, the one accessor we already had:**\n\n```\n$ uv run python3 tools/x86disp.py func 0x0080db00\nServerPlayer_GetEventStorage @ 0x0080db00 size 7\n 0x0080db00 lea eax,[ecx+0x29c] ServerPlayer_GetEventStorage+0x0 (8d819c020000)\n```\n\n**GT2 — lane E's two `OnTechResearched` sites, plus one it did not have:**\n\n```\n$ uv run python3 tools/x86disp.py query 0x29c --lea\n ProcessTurn @0x00891340\n 0x00891713 lea ecx,[esi+0x29c] ProcessTurn+0x3d3 <-- NEW\n OnTechResearched @0x00891790\n 0x008919ab lea ecx,[esi+0x29c] OnTechResearched+0x21b <-- known\n 0x0089241d lea ecx,[esi+0x29c] OnTechResearched+0xc8d <-- known\n```\n\n**GT3 — `EvNxID` at `ServerPlayer+0x2b0`:** 90 sites found; the `ServerPlayer` ones are present.\nThis one is also the honest illustration of the precision problem — see §5.\n\n**GT4 — positive control for the cohort ranker.** Given the 50 `ServerPlayer` offsets already\nin `struct-recovery.md`, `FUN_0087fac0` scores **50 co-hits out of 50** — it is the\n`ServerPlayer` serializer, and nothing else in the binary comes close. A scanner that could\nnot surface that function from a bare offset query would not be worth using.\n\n## 4. The answer: `sizeof(ObservedTech)` and the append site\n\n### `sizeof(Game::ObservedTech) = 0x2c` (44 bytes) — verified, three independent ways\n\n**(a)** `vector::operator=` at `0x00872380` divides the vector's byte span by a\nconstant using MSVC's magic-number sequence:\n\n```\n0x00872398 mov ecx,[edi+0x4] ; src._Mylast\n0x0087239b mov edi,[edi] ; src._Myfirst\n0x0087239d sub ecx,edi ; byte span\n0x0087239f mov eax,0x2e8ba2e9\n0x008723a4 imul ecx\n0x008723a6 sar edx,3\n```\n\n`ceil(2^35 / 44) == 0x2e8ba2e9` **exactly**, and emulating the full sequence reproduces\nn = 0,1,2,3,10,71,1000 from spans of 0,44,88,132,440,3124,44000. Divisor = 44, unambiguously.\n\n**(b)** The same function then multiplies back by the literal stride:\n\n```\n0x0087243a imul ecx,ecx,0x2c\n0x0087243d add ecx,[esi] ; this->_Myfirst + n*44\n0x00872441 mov [esi+0x4],ecx ; this->_Mylast = ...\n```\n\nSame literal at `0x00872468` and at `0x007b735b` inside `push_back`.\n\n**(c)** The linear search in the append function advances its iterator by `add edi,0x2c`\n(`0x007ba257`).\n\nThis matches the on-disk lower bound *exactly* — 4 × `int` + one `0x1c` `std::string` = 44 —\nso there is no padding slack anywhere in the element.\n\n### The append site\n\n```\nFUN_007ba1a0 = RecordObservedTech (direct callee of ServerPlayer::OnTechResearched 0x00891790)\n\n0x007ba221 mov edi,[esi+0x274] ; it = observer->otch._Myfirst\n0x007ba227 cmp edi,[esi+0x278] ; ... != _Mylast ?\n0x007ba22d je 0x007ba274 ; empty -> append\n loop: compare each element's name string (this = elem+0x0c, length = [elem+0x1c])\n0x007ba257 add edi,0x2c ; ++it *** stride 44 ***\n0x007ba25a cmp edi,[esi+0x278]\n0x007ba260 jne loop\n0x007ba274 lea ecx,[ebp-0x3c]\n0x007ba277 call 0x008562a0 ; ObservedTech::ObservedTech() on the stack\n0x007ba27e push eax\n0x007ba27f lea ecx,[esi+0x274] ; this = &player->otch <<< THE APPEND\n0x007ba288 call 0x007b7320 ; vector::push_back\n```\n\n`push_back` (`0x007b7320`) grows via `0x007b5820` when `_Mylast == _Myend` — **that realloc is\nexactly why lane R's guard saw all three of `player+0x274/0x278/0x27c` move on a completion**,\nrather than only `_Mylast`.\n\n`RecordObservedTech` is called from `OnTechResearched` (`0x00891790`) and from `0x007be228`,\n`0x007be4e1`, `0x007be535`. It is a **de-duplicating** append: it appends only if no existing\nelement already carries that tech name — worth knowing for the reimplementation, since a naive\n`push_back` would diverge on a re-observation.\n\nNeither `push_back` nor `operator=` is COMDAT-ambiguous: `0x007b7320` has exactly one caller\n(`RecordObservedTech`, `ecx = player+0x274`) and `0x00872380` has two, both passing\n`ServerPlayer+0x274`. `0x007b5820` **is** shared with `FUN_0086dec0` and may be a folded body,\nso it is labelled `vector_44B_grow`, not as ObservedTech-specific.\n\n### Element layout — as far as the evidence actually goes\n\nThe default ctor at `0x008562a0` writes vtable `0x00a2439c` at `+0x00`. RTTI:\nCOL `0x00a81c78` → type descriptor `0x00aeede4` → **`.?AVObservedTech@Game@@`**. So\n`ObservedTech` is polymorphic and its first word is a vptr, not a data field — which the\non-disk shape does not tell you.\n\n> **Superseded 2026-09-08 by lane S — see §9.** The table as first written called the\n> embedded string 0x18 bytes and left `+0x08`, `+0x24`, `+0x28` unaccounted. `+0x24` is not a\n> field: it is the string's own trailing allocator word. The corrected map is below; the\n> original reasoning is kept in §9 because the way it went wrong is the useful part.\n\n| offset | size | member | evidence |\n|---|---|---|---|\n| `+0x00` | 4 | vptr `0x00a2439c` | ctor writes it, RTTI-confirmed |\n| `+0x04` | 2 | `uint16 otnF` (turn first observed) | `mov word [eax-0x28],cx` at `0x007ba2b0` (`eax` = `_Mylast`, element = `_Mylast-0x2c`), source `[ebx+0xc]`; tag from `ObservedTech::Write` |\n| `+0x06` | 2 | `uint16 otnL` (turn last observed) | `mov word [eax-0x26],dx` at `0x007ba2c6`, **same source word** `[ebx+0xc]` — first sighting sets first == last |\n| `+0x08` | 1 | `bool odet` | ctor stores a **byte** (`mov [esi+0x8],bl`, `0x008562f4`); copy-ctor copies a byte; serialised with `WriteBool`/`ReadBool` |\n| `+0x0c..+0x27` | 0x1c | `std::string otch` (tech name) | object base `+0x0c`, MSVC `{_Bx[16] @0, _Mysize @0x10, _Myres @0x14, _Alval @0x18}`. Ctor writes `[+0x0c]=0`, `[+0x1c]=0`, `[+0x20]=0xf`; the search loop reads `[+0x1c]` as the length and calls compare with `this = +0x0c`; the post-append assign uses `lea ecx,[_Mylast-0x20]` = `+0x0c`. `+0x24` is `_Alval` — never read, never written, by anything |\n| `+0x28` | 4 | `int owith` | ctor zeroes it; `ObservedTech::Write` emits it last |\n\n`4 + 2 + 2 + 1(+3 pad) + 0x1c + 4 = 0x2c` exactly — sizeof is fully accounted for, with no\npadding slack and no unaccounted field.\n\n### Where the mapping came from — the serializer\n\n`Game::ObservedTech`'s vftable `0x00a2439c` is the usual 3 slots\n`{ [0] 0x00793610 scalar deleting dtor, [1] 0x00817c40 Read, [2] 0x00817cf0 Write }`.\n`Write` enumerates the entire object, in order, and touches nothing else:\n\n```\n0x00817cff movzx ecx,word [edi+0x04] push 0xa2b38c \"otnF\" -> stream vft+0x24 (int)\n0x00817d0f movzx ecx,word [edi+0x06] push 0xa2b384 \"otnL\" -> stream vft+0x24 (int)\n0x00817d26 lea eax,[edi+0x08] push 0xa2b36c \"odet\" -> WriteBool 0x008b9c20\n0x00817d37 lea ecx,[edi+0x0c] push 0xa2b3e8 \"otch\" -> WriteString 0x008b9d70\n0x00817d46 mov eax,[edi+0x28] push 0xa2b364 \"owith\" -> stream vft+0x24 (int)\n```\n\n`Read` (`0x00817c40`) is the exact mirror: `otnF`/`otnL` read as ints and stored back with\n16-bit `mov word [ebx],ax`, `odet` through `ReadBool`, `otch` through `ReadString`, `owith`\nreached as `add edi,0x28`. That matches the on-disk order `save_reader.py` already had\n(`Otch = otnF otnL odet otch(string) owith`), which is a nice independent agreement between\nthe disassembly and the save oracle.\n\n`Game::ObservedWeapon` (`Write` `0x00817bc0`, `Read` `0x00817b10`) is the same element shape\nwith tag `owep` (`0x00a2b3f0`) in place of `otch` — a second instance of the identical 0x2c\nlayout.\n\nLane P's `observed_techs` region byte delta remains a valid live cross-check and should come\nback as exactly 44 per completion.\n\n## 5. False-positive rate, honestly\n\nTwo different error rates, and the interesting one is not the one you'd expect.\n\n**Decode-level error of the naive method is low.** A raw byte scan for `8D` + ModRM + the\ndisplacement — the thing you'd write without a decoder — is mostly *right*:\n\n| query | naive candidates | not actually an instruction | real sites the naive scan **missed** |\n|---|---|---|---|\n| `lea`, disp32 `0x274` | 19 | 0 (0.0%) | **80 of 99** |\n| 11 common opcodes, disp32 `0x274` | 89 | 1 (1.1%) | 11 of 99 |\n| `lea`, disp8 `0x14` | 828 | 1 (0.1%) | **13,784 of 14,611** |\n| 11 common opcodes, disp8 `0x14` | 10,326 | 59 (0.6%) | 4,344 of 14,611 |\n\nSo the decoder's win is **recall, not decode precision**. A hand-written opcode set misses\n80–94% of the real accesses, because a member is read, written, compared, and float-loaded far\nmore often than its address is taken, and you cannot enumerate those opcodes by hand.\n\n**Class-level precision is the real problem, and it is poor.** The scanner knows the\ndisplacement; it cannot know what class the base register holds. `query 0x274` returns 99 sites\nin 45 functions and only about 6 of those functions are actually touching `ServerPlayer::otch`\n— roughly **13% precision by function**. The honest way to state the value is as search-space\nreduction: 41,411 functions → 45, about **900×**, down to a list a human reads in two minutes.\n\n**The cohort ranker helps, and has a trap.** Scoring functions by how many *already-known*\noffsets of the same class they touch pulls real class methods to the top (the serializer hits\n50/50). But it would have **thrown away the correct answer**: `RecordObservedTech` touches only\n`0x274` and `0x278` and nothing else on `ServerPlayer`, so any `--min>=1` filter drops it. Use\ncohort as a ranker, never as a filter. This is now written into the tool's own docstring.\n\nWhat actually closed the case was the plain `query 0x274` list **intersected with one call-graph\nlookup** (`OnTechResearched`'s direct callees). Displacement scan for recall, call graph for\ndisambiguation — neither alone was enough.\n\n## 6. Previously anonymous offsets — attribution results\n\nThe payoff was smaller than hoped, because most of the audit's anonymous offsets had already\nbeen named by other lanes since the audit was written.\n\n| offset | status before | after |\n|---|---|---|\n| `player+0x274/0x278/0x27c` | \"vector grew, append site unknown\" | **`RecordObservedTech+0xdf` (0x007ba27f)**, `sizeof` = 0x2c |\n| `player+0x2b0` | already named by lane E | unchanged (`EvNxID`) |\n| `TechTree+0x20` | already `TechTree_off_OrderCounter` | unchanged |\n| `ServerPlayer+0x308` | already `ServerPlayer_off_NodeBore` | unchanged |\n| `Budget+0x64` | harness-audit row 11: \"the original writes it\" | **not supported.** See below |\n\n**`Budget+0x64` (harness-audit row 11) — a correction.** `ServerPlayer::ComputeBudget`\n(`0x00863030`) writes its `Budget*` out-param through `esi`, and every such store lands in\n`+0x00..+0x54` (the 22-int block). The only two `+0x64` accesses in the whole function are\n**loads off a different base register** (`mov ecx,[eax+0x64]` at `0x0086328c`,\n`mov edx,[eax+0x64]` at `0x0086335d`). There is no store to `Budget+0x64` in `ComputeBudget`.\n\nSeparately, `TechTree::ProcessResearch`'s `int* overbudget` fourth argument is **not**\n`Budget+0x64`: its only caller is `ProcessTurn` (`0x00891340`) and the call at `0x008914a5`\npasses `lea edx,[ebp-0x14]` — a stack local, consumed immediately after the call\n(`mov eax,[ebp-0x14]; cmp eax,0; jle`).\n\nThis agrees with lane R, whose `budget_object` guard saw `Budget+0x64` change in **0 of 4284\ncalls**. Row 11 should be reclassified from \"the original writes it and B1 never checked\" to\n\"nothing has been shown to write it\"; the remaining way to settle it is a write watchpoint on\nthat word, not another static search.\n\n## 7. Verdict on the technique\n\nWorth keeping, with its limits stated. It answered a question that had been parked, and the\n`0x29c` validation turned up a `ProcessTurn` `EventStorage` site nobody had. But it is a\n**recall** tool that produces a 20–100 line candidate list per offset, not an oracle: every\nresult still needs a call-graph or decompiler check before it is a fact. For the ~1,600\nremaining classes the realistic workflow is `query ` → read the list → confirm with one\ncross-reference call.\n\n## 8. Ghidra writeback\n\nLabels: `RecordObservedTech` `0x007ba1a0`, `vector_ObservedTech_push_back` `0x007b7320`,\n`ObservedTech_ctor` `0x008562a0`, `vector_ObservedTech_assign` `0x00872380`,\n`vector_44B_grow` `0x007b5820`, `vftable_ObservedTech` `0x00a2439c`. Plate comments carrying\nthe stride evidence on the first four.\n\n`addresses.json`: `ObservedTech_sizeof`, `ObservedTech_vftable`, `ObservedTech_off_Name`,\n`RecordObservedTech`, `vector_ObservedTech_push_back`, `vector_ObservedTech_assign`,\n`ObservedTech_ctor`, `vector_44B_grow`; `ServerPlayer_off_ObservedTechs` updated from\n\"NOT PINNED\" to `verified`.\n\n**Lane S round (2026-09-08).** Labels: `ObservedTech_Write` `0x00817cf0`, `ObservedTech_Read`\n`0x00817c40`, `ObservedTech_scalar_deleting_dtor` `0x00793610`, `ObservedWeapon_Write`\n`0x00817bc0`, `ObservedWeapon_Read` `0x00817b10`, `vector_ObservedTech_uninit_copy` `0x0079a150`,\n`vector_string_find_by_name` `0x00699bd0`. Prototypes on the five class methods. Plate comments\ncarrying the full member map on the two serializers, the ctor, the dtor and the copy helper, and\nthe `sizeof(std::string) = 0x1c` fact on `Stream::WriteString` `0x008b9d70` and on the\n`vector` stride site `0x00699bd0` — the two places a future lane is most likely to look.\n`addresses.json` +10 entries (`std_string_sizeof`, `ObservedTech_Read/_Write/_dtor/_copy_ctor`,\n`ObservedTech_off_TurnFirst/_TurnLast/_Detected/_With`, `ObservedWeapon_Write`), 4 corrected.\n\n---\n\n## 9. `std::string` is 0x1c, not 0x18 — the correction, and why it mattered (lane S, 2026-09-08)\n\n§4 above originally reported the embedded string as **0x18 bytes**, against the campaign-wide\n`_Bx@0, _Mysize@0x10, _Myres@0x14, _Alval@0x18`, sizeof `0x1c`. Lane X flagged it as \"worth\nre-checking\" rather than asserting it, which was the right call: **`0x1c` is correct, and it is\ncorrect everywhere in this binary.** `ObservedTech+0x24` is the string's own trailing allocator\nword, not a data member.\n\n### Why the 0x18 reading looked right\n\nEverything lane X observed was accurate. The string's *live* fields really do stop at `+0x14`\n(`_Bx@0`, `_Mysize@0x10`, `_Myres@0x14`), because `_Alval` is `std::allocator` — an empty\nclass. It occupies a word of the object but is never loaded or stored, so it is invisible to\nany evidence based on **what the code touches**. Sizing a type from its accessed fields\nundercounts it by exactly the tail padding. The same trap is live for `std::vector` in this\nbuild, which is `{_Myfirst, _Mylast, _Myend, _Alval}` = `0x10` while only three words are ever\nread (`events.md` already records the `_Alval` word at `EventStorage+0x10` and `+0x14`).\n\n### The three things that settle it inside `ObservedTech`\n\nEach is a *complete enumeration* of the object, which is the right instrument here — an\nenumeration can show a field's **absence**, a touch-scan cannot.\n\n1. **`ObservedTech::Write` `0x00817cf0`** serialises `+0x04, +0x06, +0x08, +0x0c, +0x28`.\n No `+0x24`. (`Read` `0x00817c40` mirrors it.)\n2. **`ObservedTech_ctor` `0x008562a0`** initialises `+0x00, +0x04, +0x08, +0x0c(string), +0x28`.\n No `+0x24` — while zeroing every other scalar in the object.\n3. **The copy constructor**, inlined at `0x0079a184` inside the vector's uninitialised-copy\n helper `FUN_0079a150`, copies `+0x04, +0x06, +0x08`, the string at `+0x0c`, and `+0x28`.\n No `+0x24`.\n\nA 4-byte data member that the constructor, the copy constructor and the serializer all ignore\nis not a data member.\n\n### Binary-wide check — `tools/strfootprint.py`\n\nOne class is an anecdote, so the same question was put to the whole binary. Every serializer\nhands member pointers to the `Mars::Stream` primitive helpers with a fixed idiom\n(`lea r,[base+disp]; push r; push tag; push stream; call helper`), so the scanner recovers\n`(base, disp, tag)` for every string site and then asks: does the same function touch any other\noffset inside `(N, N+0x1c)` off the same base register?\n\n```\nstring helper call sites : 241\n resolved to a class member offset : 65\n stack temporaries (ebp/esp base) : 30\n offset not reached by a plain lea : 146\n\nmembers with a sibling inside (N, N+0x1c) : 0\n\ngap from a string member to the next member on the same base:\n +0x1c : 51\n +0x20 : 1\n```\n\n**65 string members across every serializer in the exe, zero collisions, and 51 of the 52\nmeasurable gaps are exactly `0x1c`.** The single `+0x20` is `StrategyServer::KeyPath` at\n`+0x134`, whose *Read* side gives `+0x1c` to `+0x150` — the writer simply skips a member.\nThere is no `0x18` instantiation, no empty-base-optimised variant, and no game-local string\nclass. One layout, `0x1c`.\n\nTwo exclusions matter or the scan reports noise, and both are why a naive version of this\nwould have \"confirmed\" 0x18:\n\n* **`ebp`/`esp` bases are stack temporaries, not members.** A local string at `[ebp-0x2c]`\n shows accesses at `-0x1c` and `-0x18` — which read exactly like two sibling fields inside\n the span. All 30 such sites are excluded.\n* **`N+0x10` and `N+0x14` are the string's own `_Mysize`/`_Myres`**, touched inline whenever\n the compiler expands the `_Myres >= 16 ? _Ptr : _Buf` test at a call site.\n\n### Independent corroboration outside the scan\n\n* `FUN_00699bd0` walks a `vector` doing the SSO test at `[esi+0x14]`/`[esi]` —\n element base *is* string base — and advances `add esi,0x1c` (`0x00699c29`). The stride of a\n vector of strings **is** `sizeof(std::string)`.\n* `EventStorage::PostEvent` `0x008862b0` takes two by-value `std::string`s at `[ebp+0x08]` and\n `[ebp+0x24]` (spacing `0x1c`) and `RET 0x4c` = `2*0x1c + 5*4`.\n* `MoraleEvent` is 0x50 bytes with its name string at `+0x34`: `0x34 + 0x1c = 0x50` exactly.\n\n### Blast radius — what actually had to change\n\nNothing in any recovered struct table. Every string-bearing layout in `struct-recovery.md`,\n`save-editor-structs.md`, `events.md` and `schema-gaps-resolved.md` already used `0x1c` spans\nand `0x1c` inter-field gaps, and the binary agrees with all of them. `ServerPlayer::pswd` at\n`0x2dc..0x2f7` — the row §4 asked to re-check — is **correct**: `Write` `0x008563e0` puts the\nnext member exactly `0x1c` above it. The corrections were confined to three prose statements\nthat had propagated the 0x18 number (`loader-prototypes.md` conventions line, the\n`GlobalConst_ParseString` prototype in `addresses.json`, and §4 here) plus one transposition in\n`struct-recovery.md` §0 that said `size@0x14, res@0x18` where the verified offsets are\n`0x10`/`0x14`.\n\nThe lesson worth carrying, and the reason this was worth chasing rather than reconciling: **do\nnot size a struct member from the offsets the code touches.** Trailing empty-allocator words in\nthis build's STL are invisible to a touch-scan and cost exactly 4 bytes every time. Size types\nfrom an enumeration — a serializer, a constructor, a copy constructor, or a container stride.","lineStart":1,"lineEnd":405,"totalLines":405,"truncated":false}},"title":"../../../tmp/opencode/sots-final-research-re/findings/subsystems/observedtech-append.md","time":{"start":1789017863563,"end":1789017863568}},"metadata":{"openai":{"itemId":"fc_038b7318c5e3845d016aa23f07518887d18bb069f8e3c6275b"}},"id":"prt_089c6356a0016LUpeS7XeRtkvA","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5fc590012gWptrcPjqA311"}} +{"type":"tool_use","timestamp":1789017863746,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_8rtHuHyB6HmNs73b3T3ZZMe2","state":{"status":"completed","input":{"filePath":"/tmp/opencode/sots-final-research-re/findings/subsystems/research-replace.md"},"output":"/tmp/opencode/sots-final-research-re/findings/subsystems/research-replace.md\nfile\n\n1: # Taking `TechTree::ProcessResearch` + the unlock cascade from `compare` to `replace` (lane CR)\n2: \n3: Historical experiment record. The displacement/board workflow referenced below is retired;\n4: current scope and acceptance criteria are in `campaign/pilots/research-replacement.md`.\n5: That pilot also records the independently observed installed-hook inventory and runtime FPU\n6: word corrections; the original prediction and raw observation history below is preserved.\n7: \n8: **Lane CR, 2026-09-09. Guest: VM145 (`sots-re-win10-145`, `re@192.168.10.145`) — held by this lane.**\n9: VM140 is untouched (it is the exclusive reference guest).\n10: \n11: The board's headline metric is `tools/displacement.py`: **3 replaced / 7 compared / 7 modelled /\n12: 3 mapped**. `TechTree::ProcessResearch + unlock cascade` is the best-evidenced `compared` row — 35\n13: calls, three workloads, 0 divergences, `tracecmp` exit 0, and an advance prediction that held on a\n14: *changed* workload. This lane asks the only question that moves the metric: **can our code run\n15: INSTEAD of the original's, live, with a byte-level oracle holding afterwards?**\n16: \n17: Everything above the `## 4.` heading was committed **before** the shim was built or staged\n18: (rule 2). Nothing above that line is edited afterwards; corrections are made below it and named as\n19: corrections (rule 11).\n20: \n21: ---\n22: \n23: ## 1. The state, and why this one\n24: \n25: ### 1.1 The candidate the brief names, and why it is not sufficient on its own\n26: \n27: `ref-turn2.sav` (`ab4ac2d7…`, = `verify/results/saves/turn2-state.sav`) is the campaign's oldest and\n28: most reproduced oracle: one End Turn by the **load** route, `(Autosave EndTurn)` `bb4fd9ac…` /\n29: `(Autosave)` `978041ac…`, **5 + 1 processes**, certified-pairs row 1.\n30: \n31: **It does not exercise a research completion.** This is not an inference from the exit code — it is\n32: read off lane U's own instruments, both of which are in this repo:\n33: \n34: * `verify/results/compare/unlock-b3-t1.md`: 3 calls, 3 compared, 0 diverged, and\n35: **`0 undeclared write(s) in 0 call(s)`**. Every completion in every measured run produces\n36: undeclared writes on the `player` and `tree_header` guards, because that is where\n37: `OnTechResearched`'s tech effects and the tree's order counter land. Zero undeclared writes is\n38: zero completions.\n39: * `verify/results/shim/unlock-shim.log`: the first three `research: cascade ok=1 …` lines of the\n40: five-turn continuation read `completions=0 unlocked=0 otch_appends=0`. Those three lines *are*\n41: the `ref-turn2` End Turn.\n42: \n43: Reading the trace rather than the verdict (rule 1) says what that turn *does* do: call 0 advances\n44: the generator by one word (`left` 432 → 431), pushes node 144's progress 2879 → 5768, sets its flag\n45: 1 → 2 (`OverBudgetNotified`) and posts one event (`next_id` 3 → 4). Calls 1 and 2 change **nothing\n46: at all**. So `ref-turn2` + one End Turn is a real workload for the *pass* and an empty one for the\n47: *completion path*. **A replace-mode oracle taken there would be exactly the green verdict on a hook\n48: that compared nothing that rule 1 exists to catch.**\n49: \n50: ### 1.2 The state this lane uses\n51: \n52: **`verify/results/saves/turn3-state.sav`** — 67,219 B, sha256\n53: `978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921`, `Summary.Turn = 3`,\n54: `Sim.ModCount = 24`. It is *the output of certified-pairs row 1*: the `(Autosave).sav` that\n55: `ref-turn2` + one End Turn produces. It is already on VM145 under that hash as `(Autosave).sav`.\n56: \n57: **Procedure: one End Turn. Route: LOAD.** Stated because the route is part of the pair\n58: (rule 26(c) fourth term; lane BS): the same turn reached by continuation and by load is two\n59: different, individually reproducible things, and this lane deliberately does **not** inherit the\n60: continuation's turn-4 numbers as an assumption — it predicts them and lets the load route falsify\n61: them (P1).\n62: \n63: Why this turn: in lane U's five-turn continuation the **fourth-turn** call is the completing one.\n64: The call that enters with `turn = 4` allocates 2,898 points to tech 144, completes it, and runs the\n65: cascade — `completions=1 unlocked=3 otch_appends=1` in the shim log, `next_id` 5 → 7 and\n66: `observed_techs` 440 → 484 bytes in the trace. `turn3-state.sav` is the state that turn starts from.\n67: \n68: ### 1.3 The exposure screen (rule 26(c)) — a screen, not a decision procedure\n69: \n70: Read from `turn3-state.sav` with `verify/save-reader/save_reader.py`. Eight players; per lane BP the\n71: engine builds AI clients for net ids **32, 496, 512** only, and the four factions at 528–576 carry\n72: their signature **inertly**.\n73: \n74: | player | species | `ResTNm` | `Status` | AI client | pick-turn signature? |\n75: |---|---|---|---|---|---|\n76: | 16 (human `re`) | 0 | `''` | 4 | **no** (local human) | **false positive** — no client |\n77: | 32 | 2 | `IND_Waldo` | 4 | yes | **no** — mid-research |\n78: | 496 | 0 | `DRV_PlsFiss` | 4 | yes | **no** — mid-research |\n79: | 512 | 2 | `BIO_GnMod` | 4 | yes | **no** — mid-research |\n80: | 528, 544, 560, 576 | 4 | `''` | 0 | **no** | **false positive** — no client, `Status 0` |\n81: \n82: **No player that actually runs enters this turn with an empty research target.** That is the best\n83: the screen can say. It cannot say the control will agree — rule 26(c)'s own retraction is explicit\n84: that `candidatesTried` is not readable from a save, that there is a combat term, and that the load\n85: route is a fourth term that is not a predicate on the save at all. **So the screen is why this turn\n86: is worth trying, and the two-process control in §4.1 is the only thing that decides it.**\n87: \n88: The lineage where exposure is saturated (`ad-…`/`ar-…`, every turn carrying a signature) is\n89: deliberately not used here.\n90: \n91: ### 1.4 What is being asked of `hooks=off`\n92: \n93: Three fresh-process runs are planned before any replace result is read:\n94: \n95: | run | config | what it establishes |\n96: |---|---|---|\n97: | **C1**, **C2** | `shim.cfg.croff` (`hooks=off`, the proxy loads and installs nothing) | the control agrees with itself across two fresh processes (rule 26) |\n98: | **N** | `shim.cfg.crcompare` (one detour, `compare`) | the instrument is behaviour-neutral on *this* save and route (rule 19), **and** it is where the completion count comes from the hook itself |\n99: \n100: Only then the replace runs. C1/C2 use the *same proxy DLL* as every measured run, so the only\n101: difference between control and measurement is the config (lane CB's shape).\n102: \n103: ---\n104: \n105: ## 2. The four bytes of every float literal on this path (rule 23)\n106: \n107: Two float literals are on the research pass's arithmetic path, and **both are widened `float`s**.\n108: Read here directly out of `dumps/sots.exe` (PE image base `0x00400000`, `.rdata` at `0x009dd000`\n109: file offset `0x5dbe00`), not taken from an earlier note:\n110: \n111: | VA | bytes (LE) | value as `double` | is it `(double)float`? | engine constant |\n112: |---|---|---|---|---|\n113: | `0x009e20c8` | `00 00 00 a0 99 99 e9 3f` | `0.80000001192092896` | **yes** (low 29 bits zero) | `kEarlyCompletionRatio = 0.800000011920929` |\n114: | `0x009e5060` | `00 00 00 a0 99 99 a9 3f` | `0.05000000074505806` | **yes** | `kDecayFraction = 0.05000000074505806` |\n115: \n116: Both source literals were re-parsed and re-packed: `0.800000011920929` → `000000a09999e93f` and\n117: `0.05000000074505806` → `000000a09999a93f`. **Bit-identical to the image.** So the two constants\n118: `sots-engine/src/game/sim/research.cpp` relies on are exactly the image's, not the exact decimals\n119: that bit the money chain twice.\n120: \n121: Two literals that are **not** on this path, and why:\n122: \n123: * the tech-cost multiplier (`1.0 − 0.25·n`, floor `0.25`) — `ours` never evaluates it. It calls the\n124: game's own read-only `TechTree::Cost` for every cost it needs, in both modes (`g_env.cost`). This\n125: is a genuine, declared dependency on the original: the effective cost is **not** displaced.\n126: * `ResearchSpendFloor` / `Ceiling` are integer `×50/100` and `×150/100` with a 32-bit wrapping\n127: multiply — no float involved.\n128: \n129: ---\n130: \n131: ## 3. Predictions, committed before the build\n132: \n133: Falsification symptoms are given for each. Predictions are made **per site** and not at a bracket\n134: total (rule 23's 2026-09-09 corollary).\n135: \n136: ### P0 — the control agrees with itself\n137: `turn3-state.sav`, one End Turn, load route, `hooks=off`, **two fresh processes** produce identical\n138: `(Autosave EndTurn).sav` and `(Autosave).sav`.\n139: *Falsified if:* the two processes differ. Then this workload is exposed, the screen in §1.3 was\n140: insufficient (which is what rule 26(c)'s retraction predicts is possible), and the honest move is to\n141: report that and pin the source of variation — **not** to pick the run that suits.\n142: \n143: ### P1 — the turn is not quiet, and the load route reproduces the continuation's turn-4 call\n144: Exactly **3** `ProcessResearch` calls, one per AI client, in the same owner order. Allocations:\n145: **A → {tech 144, 2898 points}**, **B → {tech 90, 0 points}**, **C → {tech 9, 0 points}**. Exactly\n146: **one completion** (tech 144) and the cascade unlocks exactly **three** nodes:\n147: \n148: | node | `state` | `cost_rp` | `turn_available` |\n149: |---|---|---|---|\n150: | 132 | 0 → 2 | `INT_MAX` → **10000** | −1 → **4** |\n151: | 136 | 0 → 2 | `INT_MAX` → **16000** | −1 → **4** |\n152: | 142 | 0 → 2 | `INT_MAX` → **8000** | −1 → **4** |\n153: \n154: *Falsified if:* a different allocation, a different completion count, or a different unlock set. That\n155: would be a **route** result — the load route not reproducing the continuation — and it is worth as\n156: much as the replace result. It is exactly what rule 26(c)'s fourth term says can happen.\n157: \n158: ### P2 — the arithmetic, hand-computed on the boundary\n159: For node 144: `cost = 5000`, `lo = ResearchSpendFloor = 2500`, `hi = ResearchSpendCeiling = 7500`.\n160: Entering progress **5768**, allocation **2898**:\n161: \n162: * `spent = min(2898, 7500 − 5768) = 1732` — the cap binds, so this call lands **exactly on the\n163: ceiling**, which is the boundary rule 23 says to test by hand rather than trust a compare on.\n164: * `progress 5768 → 7500`, `overbudget 0 → 1166`.\n165: * `progress (7500) < hi (7500)` is **false**, so the odds/roll branch is skipped: **zero RNG draws**.\n166: I predict `rng.left` is **unchanged at 413** across all three calls and the `mt` digest does not\n167: move on any of them.\n168: * `ratio = (float)(7500/5000) = 1.5`, and `1.5 < 0.800000011920929` is false → **not** completed\n169: early → `flag` **unchanged**.\n170: * `state 3 → 4`, `turn_researched −1 → 4`, `order −1 → 22`, and the tree's order counter\n171: `22 → 23`.\n172: \n173: *Falsified if:* any single one of these moves. A wrong `hi` shows up as a wrong `overbudget`; a\n174: wrong early-completion literal shows up as `flag` moving.\n175: \n176: ### P3 — the instrument is neutral, and the completion is counted by the instrument\n177: Run N (`crcompare`, one detour) produces autosaves **byte-identical to C1/C2**, and `tracecmp`\n178: reports **3 calls / 3 compared / 0 diverged / exit 0**. The hook's own per-call log line reads\n179: `completions=1 … unlocked=3 otch_appends=1` on the completing call and all-zero on the other two.\n180: Undeclared writes: **6 spans in 1 call** —\n181: `player +0x10c/3`, `player +0x110/3`, `player +0x114/3`, `player +0x124/3`, `player +0x294/4`\n182: (`ResT`, the research target being cleared) and `tree_header +0x20/1` (the order counter).\n183: \n184: *Falsified if:* the autosaves move (then rule 19 bites and nothing below is readable), or the\n185: undeclared-write set differs (then the workload or the model moved).\n186: \n187: ### P4 — replace with the cascade OFF (`crreplace0`, the shipped behaviour) diverges\n188: The autosave is **not** byte-identical. Predicted diverging leaves, by name:\n189: \n190: 1. `Player[32]` tech tree: node 144 `turn_researched` and `order` unstamped (−1/−1); nodes 132, 136\n191: and 142 unchanged at `state 0`, `cost_rp INT_MAX`, `turn_available −1`.\n192: 2. the tree's completion-order counter left at 22.\n193: 3. `Player[32]` events: `next_id` short by **2**, two event records absent.\n194: 4. `Player[32]` `otch`: one `ObservedTech` element absent (**44 bytes**).\n195: 5. `Player[32]` scalar fields at `+0x10c`, `+0x110`, `+0x114`, `+0x124` unchanged, and `ResTNm` still\n196: reading `IND_Waldo` because `ResT` was never cleared.\n197: \n198: What **will** be right even here: node 144's `state = 4`, `progress = 7500`, `flag`, the decay sweep\n199: over every other node, and the `overbudget` accumulator.\n200: \n201: ### P5 — replace with the cascade ON (`crreplace1`) diverges, by strictly less\n202: Same binary, one config line different (`research.replace_cascade=on`; see §3.1). Predicted:\n203: **strictly fewer diverging leaves than P4**, with items 1 and 2 of P4 **closed** — node 144 stamped\n204: `turn_researched 4` / `order 22`, nodes 132/136/142 at `state 2` with `cost_rp` 10000/16000/8000 and\n205: `turn_available 4`, counter at 23 — and items 3, 4 and 5 **still open**.\n206: \n207: ### P6 — the headline, stated in advance\n208: **`game/sim/research` does NOT move from `compared` to `replaced` this session, and the named cause\n209: is `ServerPlayer::OnTechResearched`, not the research model.** The research pass itself — the spend\n210: cap, the odds branch, the completion, the decay sweep, and (with the flag on) the whole\n211: `SetResearched` cascade — is displaceable and I expect it to reproduce the original's TechTree state\n212: exactly. What blocks the oracle is the *callback*: it posts events whose text comes from the game's\n213: string table, appends an `ObservedTech` element `ours` decides but does not construct, and writes\n214: ~90 `ServerPlayer` fields that are a different subsystem's milestone (B2) and a separate `compared`\n215: row on the board. A replace of the research pass is **gated on displacing `OnTechResearched`**, and\n216: that is a statement about a boundary, not about the research model.\n217: \n218: *Falsified if:* `crreplace1`'s autosave is byte-identical to the oracle. That would mean the\n219: callback's writes do not reach the save on this workload, P6 is wrong, and the row moves to\n220: `replaced` — which is the outcome I would rather have and do not expect.\n221: \n222: ### P7 — the numbers I expect to be able to quote honestly afterwards\n223: **1** distinct completion, **1** distinct tech (144), **3** unlocked nodes, **3** calls of which\n224: **2** allocate zero points and write nothing at all. That is thin, and it will be reported as\n225: thin (rule 15/23) whatever the verdict.\n226: \n227: ### 3.1 The one engine change this lane makes, and why it is not a thumb on the scale\n228: \n229: `sots-engine` worktree `wip/cr` (rule 21), branched from `main` at `e7e2bd6`.\n230: \n231: * **`research.replace_cascade=on|off`, default `off`.** With it off the binary behaves *exactly* as\n232: `main` does today, so P4 measures the shipped behaviour rather than a straw man. With it on, a\n233: **replace**-mode call also writes the four `TechNode` words `SetResearched` stamps and the tree's\n234: completion-order counter. It does **not** post events, does **not** move the `ObservedTech` vector\n235: and does **not** apply a single tech effect — those stay gated on compare mode and stay declared\n236: unmodelled. The flag exists so P4 and P5 differ by a **config line and not by a binary**, which is\n237: what makes the leaf difference between their autosaves attributable to the cascade.\n238: * **A per-call log line in every mode.** The old line was gated on the cascade having run, so a\n239: replace run with the cascade off had no counter at all and \"a completion happened\" could only be\n240: inferred from the save — the artefact under test. It now prints `steps`, `completions` (counted\n241: from the pass's own step results), `overbudget` and the cascade counters, in compare **and**\n242: replace. This is the instrument answering the brief's \"show it fired — a count, from the hook\n243: itself\".\n244: \n245: No new binary facts: `ghidra/addresses.d/cr.json` is **not** created, because this lane reads no new\n246: address. Every offset used already exists in the generated header. Host build: 253 targets, **59/59\n247: tests pass** (the denominator is the healthy 59, per rule 24's signature check); `clean_room_check`\n248: OK; `tools/check_shim_configs.py` OK with 27 registered hooks and all four CR configs\n249: (`croff`, `crcompare`, `crreplace0`, `crreplace1`) — the three `hooks=trace` ones marked\n250: `# exhaustive` and naming all 27.\n251: \n252: ---\n253: \n254: ## 4. Results\n255: \n256: *(added after the runs; nothing above this line is edited)*\n257: \n258: ### 4.0 The five runs, in order\n259: \n260: All five on **VM145**, held by this lane, each a **fresh process**, `SavedGames` reset to exactly\n261: `turn3-state.sav` before every launch, `C:\\SOTS\\shimdist-cr\\binkw32.dll`\n262: (25,274,723 B, sha256 `d2ad56b32c1b5f6b…`, `BUILD_ID cr-618ccb1-20260909T131556Z`, exports 66/66\n263: identical to the real `binkw32.dll`), one config per run and nothing else changed. Every screen —\n264: main menu, Load-Game chooser, the one-row file list, the **lobby**, the loaded map at \"Turn 3\", the\n265: post-turn map at \"Turn 4\" — was verified from a live `qm monitor` screendump before the next click.\n266: No run was driven by sleeping.\n267: \n268: | run | config | mode | `research.replace_cascade` | `(Autosave EndTurn).sav` | `(Autosave).sav` |\n269: |---|---|---|---|---|---|\n270: | **C1** | `croff` | `hooks=off` | – | 67,212 `e00eed0c…` | 67,811 `79df5047…` |\n271: | **C2** | `croff` | `hooks=off` | – | 67,212 **`e00eed0c…`** | 67,811 **`79df5047…`** |\n272: | **N** | `crcompare` | compare | off | 67,212 **`e00eed0c…`** | 67,811 **`79df5047…`** |\n273: | **R0** | `crreplace0` | **replace** | off | 67,212 `e00eed0c…` | 67,511 **`6b51db99…`** |\n274: | **R1** | `crreplace1` | **replace** | **on** | 67,212 `e00eed0c…` | 67,537 **`8a4309ee…`** |\n275: \n276: `(Autosave EndTurn).sav` is the *pre*-turn resave and is identical in all five runs, as it must be —\n277: nothing has run yet when it is written. The verdict is carried entirely by `(Autosave).sav`.\n278: \n279: ### 4.1 P0 held: the oracle\n280: \n281: **C1 and C2 agree byte-for-byte in two fresh processes.** The pair, in the standing\n282: `certified-pairs.md` format:\n283: \n284: | input | procedure | route | `(Autosave EndTurn)` | `(Autosave)` | processes | evidence |\n285: |---|---|---|---|---|---:|---|\n286: | `turn3-state.sav` `978041ac…` | one End Turn | **load** | `e00eed0c…` | `79df5047…` | **3** | lane CR ×2 `hooks=off`, ×1 compare-instrumented |\n287: \n288: **Masks that must be on the line.** Measured, not assumed —\n289: `state_checksum.py turn3-state.sav <(Autosave EndTurn)>` gives **exactly 5 leaves**:\n290: `/Summary/Checksum` and `Player.Status 4 → 0` on each of the four live players (16 `re`,\n291: 32 `Fane Lao`, 496 and 512 `Singularity`). **There is no `/CD[1]/NPrvVa` term on this state** —\n292: `CD[1]`'s diplomacy block is early-game and the leaf does not move — so the `--mask resave` rule\n293: holds here in the form the docs originally stated, and the lane BQ exception does not apply.\n294: \n295: **Exposure facts next to the hashes** (certified-pairs standing rule 4): §1.3's table — no player\n296: with an AI client enters the turn with `ResTNm == ''`; `NumDes` does not move; the two ships that\n297: complete join existing fleets; the four factions at 528–576 carry the empty-`ResTNm` signature\n298: inertly (`Status 0`, no client). The turn does create fleets (`Flt[50]`, `Flt[1808]`) and retire one\n299: (`Flt[1776]`) — that is a fleet-assignment shape, and it agreed anyway. **Which is the point of\n300: rule 26(c)'s retraction: the screen said \"likely fine\" and only the two-process control decided it.**\n301: \n302: ### 4.2 P3 held: the instrument is neutral, and it counts the completion itself\n303: \n304: Run **N** reproduced the control's two hashes exactly, so rule 19 is satisfied on *this* save and\n305: *this* route and everything below is read from runs that passed their own check.\n306: `tracecmp verify/traces/cr-N.jsonl.gz`: **3 calls, 3 compared, 0 diverged, exit 0**, coverage verdict\n307: `partial`, 8 unmodelled notes — and the undeclared-write set is **exactly the six spans predicted**:\n308: \n309: ```\n310: player+0x10c:3 player+0x110:3 player+0x114:3 player+0x124:3 player+0x294:4 tree_header+0x20:1\n311: ```\n312: \n313: The hook's own per-call line, which is the instrument saying a completion fired rather than the save\n314: being asked to imply it:\n315: \n316: ```\n317: research: mode=compare steps=1 completions=1 overbudget=1166 cascade_possible=1 ok=1\n318: cascade_completions=1 unlocked=3 otch_appends=1 roll_draws=0 failures=0 depth=0\n319: research: mode=compare steps=1 completions=0 … (×2, all zero)\n320: ```\n321: \n322: **A correction to the campaign's read of the detour count, and it goes the other way from the\n323: brief's warning.** My config names all **27** registered template hooks and\n324: `check_shim_configs.py` passes it as `# exhaustive` — and the shim still installed **six** detours,\n325: not one:\n326: \n327: | detour | source | named by a `hook.` key? |\n328: |---|---|---|\n329: | `Mars::Application::Initialize` | the M0 asm stub, installed unconditionally whenever `hooks != off` | **no** |\n330: | `Game::TechTree::ProcessResearch` | the one template hook | yes |\n331: | `StrategyClient::EndTurn`, `StrategyServer::BeginProcessTurn`, `StrategyServer::ProcessTurn`, `DemoApp::OnTick` | the **FPU-force module**, which installs four *sampling* detours by default (`fpu: module init … force=off value=0x0000 sample_ticks=on`, `sample_turn=on`) | **no** |\n332: \n333: `Shim::SelfTest::Fill` additionally emits one `trace` record at startup; it is an in-shim self-test,\n334: not a detour on the game. So **`# exhaustive` is exhaustive over the template-hook set only**, and\n335: `tools/check_shim_configs.py` cannot see the other five. It was the *neutrality check* (N identical\n336: to C1/C2), not the config check, that made this run safe — which is worth saying plainly, because a\n337: lane reading \"exhaustive, therefore one detour\" would be wrong by five.\n338: \n339: For the record, `fpu_cw = 0x027f` (53-bit, round-to-nearest) in every CR run.\n340: \n341: ### 4.3 P1 and P2 held exactly, on the LOAD route\n342: \n343: The load route reproduced the continuation's turn-4 call in every particular — allocations, the\n344: completion, the unlock set, the arithmetic. From `cr-N.jsonl.gz` (compare) and confirmed identically\n345: in `cr-R1.jsonl.gz` (replace):\n346: \n347: | call | owner | species | alloc | what moved |\n348: |---|---|---|---|---|\n349: | 1 | `Player[32 \"Fane Lao\"]` | 2 | `{144, 2898}` | the completion (below) |\n350: | 2 | `Player[496 \"Singularity\"]` | 0 | `{90, 0}` | **nothing at all** |\n351: | 3 | `Player[512 \"Singularity\"]` | 2 | `{9, 0}` | **nothing at all** |\n352: \n353: Call 1, node **144 `IND_Waldo`**: `state 3 → 4`, `progress 5768 → 7500`, `turn_researched −1 → 4`,\n354: `order −1 → 22`; `overbudget 0 → 1166`; three nodes unlocked —\n355: **132 `IND_OrbFound` @ 10000**, **136 `IND_RefCoat` @ 16000**, **142 `IND_TrkStl` @ 8000**, each\n356: `state 0 → 2`, `cost_rp INT_MAX → …`, `turn_available −1 → 4`; `events.next_id 5 → 7`;\n357: `observed_techs 440 → 484 bytes`.\n358: \n359: P2's hand arithmetic is confirmed to the unit: `cost 5000`, `lo 2500`, `hi 7500`,\n360: `spent = min(2898, 1732) = 1732`, `progress = 7500` **exactly on the ceiling**,\n361: `overbudget = 2898 − 1732 = 1166`; `progress < hi` false so **no draw**; `ratio = 1.5`, not below\n362: `0.800000011920929`, so **`flag` unchanged**. The `rng` region **did not move on any of the three\n363: calls** in any run.\n364: \n365: That last fact is a coverage hole, not a success — see §4.6.\n366: \n367: ### 4.4 P4 and P5 held: replace diverges, and the cascade closes exactly eleven leaves\n368: \n369: `state_checksum.py cr-oracle-autosave.sav `:\n370: \n371: | run | diverging leaves | file size |\n372: |---|---:|---|\n373: | **R0** — replace, cascade **off** (the shipped behaviour) | **27** | 67,511 B |\n374: | **R1** — replace, cascade **on** | **16** | 67,537 B |\n375: | (the turn itself, `turn3-state` → oracle, for scale) | 128 | – |\n376: \n377: **The eleven leaves the cascade closes — R0 has them, R1 does not.** All eleven are `TechTree`:\n378: \n379: ```\n380: Player[32]/TechTree/St[94] TResCost[94] TUnlck[94] (node 132 IND_OrbFound, 10000)\n381: Player[32]/TechTree/St[98] TResCost[98] TUnlck[98] (node 136 IND_RefCoat, 16000)\n382: Player[32]/TechTree/St[104] TResCost[104] TUnlck[104] (node 142 IND_TrkStl, 8000)\n383: Player[32]/TechTree/TAcq[106] TiAcq[106] (node 144, turn 4 / order 22)\n384: ```\n385: \n386: The tree is serialised as parallel arrays indexed by **tree slot**, not tech id — slots 94/98/104/106\n387: are tech ids 132/136/142/144 — and the pass's own two words, `St[106] 3 → 4` and\n388: `TResDone[106] 5768 → 7500`, are correct in **both** replace runs because\n389: `ProcessResearchTurn` writes them without the cascade. So of the **13 tech-tree leaves this turn\n390: moves, our code produced all 13 in live memory with the original's `ProcessResearch` never\n391: executing** — 2 from the pass, 11 from `SetResearched`.\n392: \n393: **One prediction I cannot test and must retract as written.** P4 item 2 said the completion-order\n394: counter would be \"left at 22\" in R0. `TechTree+0x20` **is not a save leaf** — the counter's value\n395: surfaces only through the per-node `TiAcq` stamp — so the oracle cannot see it either way. What is\n396: observable is the trace: R1's only guard hit is `tree_header+0x20:1` (ours writing 22 → 23, the same\n397: byte the original moves in compare mode) and R0 has **0 undeclared writes in 0 calls**. The counter\n398: matters for the *next* completion, not for this save.\n399: \n400: ### 4.5 P6 held: the residual is `ServerPlayer::OnTechResearched`, entirely\n401: \n402: R1's **16** leaves, every one of them named, with nothing left over:\n403: \n404: | leaf | what it is | modelled by `ours`? |\n405: |---|---|---|\n406: | `Player[32]/OutMod` `1.25 → 1.1` | a tech effect | no — B2's milestone |\n407: | `Player[32]/ConMod[0..2]` `0.9 → 1.0` (×3) | tech effects | no — B2's milestone |\n408: | `Player[32]/Events/EvNxID` `7 → 5` | the two events not posted | decision modelled, **write is compare-only** |\n409: | `…/Events/.[EvTurn=4]/Events/.[EvEID=5]`, `.[EvEID=6]` `only-in-A` | the two event records | text comes from the game's string table |\n410: | `…/Events/.[EvTurn=4]/Events/.[0]` `3 → 1` | that turn's event count | ditto |\n411: | `Player[32]/otch/.[11]` `only-in-A`, `otch/.[0]` `11 → 10` | the `ObservedTech` element | append **decided** (`otch_appends=1`), element not constructed |\n412: | `Player[32]/ResTNm` `'' → 'IND_Waldo'` | `ResT` never cleared | inside the callback |\n413: | `Player[32]/BnkPr`, `BnkEl` | bankruptcy projection | **downstream of `OutMod`** |\n414: | `Sys[288 \"Ke'Dolarra\"]/RepCur`, `RepMax` `421640 → 371040` | repair capacity | **downstream of `ConMod`** |\n415: | `/Summary/Checksum` | derived | derived |\n416: \n417: So the residual decomposes into **5 primary player fields** (`OutMod`, `ConMod[0..2]`, `ResTNm`),\n418: **1 `ObservedTech` element**, **2 event records + their id counter**, and **5 derived leaves** that\n419: follow from those. Every single one is written by `ServerPlayer::OnTechResearched`, none of them by\n420: `TechTree::ProcessResearch` or by `SetResearched`.\n421: \n422: That also closes the loop with §4.2's guard: the four `player` spans the compare reported as\n423: undeclared (`+0x10c`, `+0x110`, `+0x114`, `+0x124`, all three bytes wide — float writes whose top\n424: byte did not change) plus `+0x294` (`ResT`, four bytes) are **five** writes, and the save shows\n425: **five** primary player fields. The guard was reporting exactly what the oracle later billed us for.\n426: \n427: **The input class that breaks it is a completion, and only a completion.** Both replace runs are\n428: byte-perfect on the two null calls and on every other leaf of the 128 the turn moves. A replace run\n429: over a turn where research does not complete would be byte-identical — and would prove nothing\n430: (rule 1), which is why this lane refused to run it on `ref-turn2`.\n431: \n432: ### 4.6 Coverage, reported as loudly as the result (rules 15 and 23)\n433: \n434: * **1 completion. 1 distinct tech (144 `IND_Waldo`). 3 unlocked nodes. 3 calls.**\n435: * **2 of the 3 calls allocate zero points and write nothing at all**, in any mode. Their entire\n436: contribution to \"3 calls, 0 diverged\" is that two null calls stayed null.\n437: * **1 of 4 tech trees is exercised.** Player 16's tree is never processed (`ResTNm == ''`); players\n438: 496 and 512 are the null calls.\n439: * **The RNG region did not move on any call in any run.** The spend cap bound exactly, so the\n440: odds/roll branch was skipped, and `roll_pending_in` was false on the completing call, so\n441: `RollResearchEvent` drew nothing (`roll_draws=0`). **`region:rng` — the single strongest check in\n442: this hook's compare — compared \"unchanged against unchanged\" on this workload and established\n443: nothing.** The generator parity evidence for this module is entirely lane U's and lane V's,\n444: on other turns.\n445: * **Branches that did not execute here:** the Zuul double roll (species 2, not 5); the\n446: completed-early flag (`ratio 1.5`); the over-budget notification (`flag` already 2 from turn 3);\n447: `RollResearchEvent`'s draw and, behind it, the plague / AI-rebellion paths; `SetResearched`'s\n448: zero-cost recursion; the `def+0xb0` `NoAutoAvailable` skip; an empty prerequisite group; a\n449: re-observed tech (the dedup's negative case); and the decay sweep, which ran over every node and\n450: **changed nothing** because no other `Available` node had non-zero progress.\n451: * **The event model is count-only by construction** and stayed compare-only in replace mode by\n452: design; the two missing records are two of the sixteen residual leaves.\n453: * **`TechTree::Cost` is the original's.** `ours` calls the game's read-only `Cost` for every cost it\n454: needs, in both modes. The effective-cost formula is **not** displaced, and any claim about this\n455: module inherits that dependency.\n456: \n457: ### 4.7 Verdict\n458: \n459: **No. `game/sim/research` does not move from `compared` to `replaced`.**\n460: \n461: The bar is \"our code ran instead of the original's **and a byte-level oracle held afterwards**\". Our\n462: code did run instead — `mode=replace`, `completions=1`, `unlocked=3`, the original's\n463: `ProcessResearch` never executed, and the game finished the turn and wrote a save. The oracle did\n464: **not** hold: 16 leaves in the best configuration. There is no qualified reading that rescues it,\n465: because the failure is not a rounding residual — it is a set of writes nobody has implemented.\n466: \n467: What the lane did establish, and it is worth more than the rung would have been:\n468: \n469: 1. **The research pass and the entire `SetResearched` cascade are displaceable and were displaced.**\n470: All 13 tech-tree leaves the turn moves were produced by our code in live game memory, on a turn\n471: with a real completion and a real three-node unlock cascade — which is a strictly stronger\n472: statement than the 35 compared calls the board already carried, because in a compare the\n473: original's code still did the work.\n474: 2. **The blocking boundary is named and measured, not guessed:** `ServerPlayer::OnTechResearched`,\n475: 5 player fields + 1 `ObservedTech` element + 2 events, and 5 derived leaves behind them.\n476: `ProcessResearch` **cannot** reach `replaced` on any workload containing a completion until\n477: `OnTechResearched` is displaced — and that is B2's milestone and its own `compared` board row,\n478: not a defect in the research model.\n479: 3. **A new certified pair** on a turn that exercises the completion path, which the campaign did not\n480: have: `ref-turn2` + one End Turn is a *quiet* turn for research, and every oracle the module had\n481: been checked against was that one.\n482: \n483: The cheapest route to the rung, now that the boundary is priced: implement the ~90-field\n484: `ApplyTechEffect` write-back live (B2 already has `game/effects/tech_effects` host-tested), construct\n485: the `ObservedTech` element, and decide what to do about the two event records — whose *text* comes\n486: from the game's string table and therefore cannot be produced clean-room at all. **The event text is\n487: a hard stop for a byte-identical oracle on any completion turn**, and that should be settled as a\n488: policy question (call the game's `PostEvent`, and accept the `ComputeBudget`-shaped QUALIFIED\n489: caveat) before anyone spends another lane on it.\n490: \n491: ---\n492: \n493: ## 5. Proposed board rows\n494: \n495: **I have not edited `campaign/board.md`.** I *have* added the certified pair to\n496: `verify/results/saves/certified-pairs.md`, which the brief pointed at as the standing format and\n497: whose four standing rules for adding a row are all satisfied (two fresh `hooks=off` processes; the\n498: control run before anything was read from an instrumented run; not an extension of an existing pair\n499: but its own agreement; exposure facts recorded beside the hashes).\n500: \n501: ### 5.1 `tools/displacement.py` — the rung does NOT move\n502: \n503: The verdict is **no**, so `\"compared\"` stays. What I do propose is replacing the evidence and caveat\n504: strings, which currently understate what is known and do not name the gate:\n505: \n506: ```python\n507: (\"TechTree::ProcessResearch + unlock cascade\", \"compared\",\n508: \"35 calls across 3 workloads, 0 divergences, tracecmp exit 0; advance prediction held on a \"\n509: \"changed workload (unlock costs no earlier report contained); REPLACE ATTEMPTED live (lane \"\n510: \"CR): ours ran instead of the original on a real completion and produced all 13 tech-tree \"\n511: \"leaves the turn moves, but the save oracle missed by 16 leaves\",\n512: \"compare only. The replace attempt failed on ServerPlayer::OnTechResearched, not on the \"\n513: \"research model: 5 player tech-effect fields, 1 ObservedTech element and 2 event records, \"\n514: \"plus 5 derived leaves. Gated on B2. Thin: 1 completion, 1 tech, 2 of 3 calls allocate zero \"\n515: \"points, and the RNG region did not move at all on the replace workload\"),\n516: ```\n517: \n518: ### 5.2 Board rows to add\n519: \n520: | row | class | status | conf | cov | date | evidence |\n521: |---|---|---|---|---|---|---|\n522: | **`ProcessResearch` replace: our code ran instead of the original's, and the oracle missed by 16 leaves — all of them `OnTechResearched`'s** | phase2 | verified | high | 95% | 2026-09-09 | **Lane CR, VM145**, `findings/subsystems/research-replace.md`. Predictions committed before the build (`sots-re` 4b3cc82); engine `wip/cr` 618ccb1 adds `research.replace_cascade=on\\|off` (default off) so the shipped and extended behaviours differ by **a config line, not a binary**. New certified pair `turn3-state.sav` → one End Turn, **load** route, `e00eed0c…`/`79df5047…`, 2 `hooks=off` processes + 1 compare. Compare run **3/3/0 exit 0** and byte-identical to the control (rule 19 satisfied), undeclared writes exactly the 6 predicted spans. **Replace, cascade on: 16 diverging leaves; cascade off: 27.** The 11-leaf delta is the whole `SetResearched` cascade and it is **ours**; with the pass's own 2 words that is **13 of 13 tech-tree leaves the turn moves, produced live by our code**. The 16 residual leaves are `OutMod`, `ConMod[0..2]`, `ResTNm`, one `ObservedTech` element, two event records + `EvNxID`, and 5 derived. **Verdict: stays `compared`.** |\n523: | **`ref-turn2` + one End Turn does NOT exercise a research completion** | verify | verified | high | 100% | 2026-09-09 | Lane CR. The campaign's most-reproduced oracle is a **quiet turn for the completion path**: `unlock-b3-t1.md` reports `0 undeclared write(s) in 0 call(s)` and `unlock-shim.log`'s first three lines read `completions=0`. It *is* a real workload for the pass (one RNG word, `flag 1 → 2`, one over-budget event) — but a replace-mode oracle taken there would be rule 1's green verdict on a hook comparing nothing. The completing turn is the **next** one, from `turn3-state.sav`. |\n524: | **`# exhaustive` is exhaustive over the 27 template hooks only — six detours are installed, not one** | phase2 | verified | high | 100% | 2026-09-09 | Lane CR. A config naming all 27 registered hooks `off` except one, passing `tools/check_shim_configs.py`, still installs **6** detours: the M0 `Application::Initialize` asm stub (unconditional whenever `hooks != off`) and the **FPU-force module's four sampling detours** (`force=off value=0x0000 sample_ticks=on sample_turn=on`, on by default). `check_shim_configs.py` cannot see either group — no `hook.` key names them. What made lane CR's runs safe was the **neutrality check** (compare run byte-identical to two `hooks=off` controls), not the config check. A lane reading \"exhaustive, therefore one detour\" is wrong by five. |\n525: | **A replace of `ProcessResearch` is gated on `ServerPlayer::OnTechResearched`, and partly on a policy question** | phase2 | open | high | – | 2026-09-09 | Lane CR. To reach `replaced`, three things are needed: the ~90-field tech-effect write-back applied live (B2 has `game/effects/tech_effects` host-tested), the `ObservedTech` element constructed (`ours` already decides the append), and the two research event **records** written. The third is not an implementation gap: their `EvDsc`/`EvMsg` text comes from the game's string table, which the engine must not carry, so a byte-identical oracle on any completion turn requires calling the game's own `PostEvent` and accepting a `ComputeBudget`-shaped **QUALIFIED** `replaced`. Settle that before spending a lane. |\n526: \n527: ### 5.3 Artefacts\n528: \n529: | what | where |\n530: |---|---|\n531: | predictions commit (before the build) | `sots-re` `4b3cc82` |\n532: | engine change | `sots-engine` worktree `wip/cr`, `618ccb1` — `research.replace_cascade`, a mode-independent completion counter, four `shim.cfg.cr*` configs |\n533: | oracle + replace saves | `verify/results/saves/cr/cr-{oracle-endturn,oracle-autosave,replace0-autosave,replace1-autosave}.sav` |\n534: | traces | `verify/traces/cr-{N,R0,R1}.jsonl.gz` |\n535: | `tracecmp` reports | `verify/results/compare/cr-{compare,replace0,replace1}.{md,json}` |\n536: | shim logs (the per-call counters) | `verify/results/shim/cr/cr-{N,R0,R1}.log` |\n537: | certified pair | `verify/results/saves/certified-pairs.md`, row 4 |\n538: \n539: No `ghidra/addresses.d/cr.json`: this lane read no new address. No game data, save, disassembly or\n540: `FUN_xxxxxxxx` name reached `sots-engine`; `tools/clean_room_check.sh` OK.\n541: \n542: ### 5.4 VM145 released\n543: \n544: Held for this lane only; **VM140 untouched**. Restored and verified byte-for-byte to as-found:\n545: \n546: ```\n547: binkw32.dll 15,527,327 B 903527F4A698EEA9FBE25F3A6236657C7D8348F994EEF394696F187E5E554B97 (= shimdist-recap)\n548: shim.cfg 0AE410CC72FE155837D711C78543E14B1F5743310CD023298EB1E5BBD5457E71 (= shimdist-recap\\shim.cfg.recaptrace)\n549: SavedGames the same 9 files, every size and sha256 identical to the as-found survey\n550: game not running (as found)\n551: ```\n552: \n553: Left behind: `C:\\SOTS\\shimdist-cr\\`, `C:\\SOTS\\ui\\cr\\` (the input save, the four run outputs and the\n554: restore set) and `C:\\SOTS\\ui\\cr{deploy,click,grab,snap,restore,find}.ps1`. `click_helper.ps1` is\n555: unmodified. **One thing not restored:** my deploy helper *deletes* `C:\\SOTS\\shim.log` rather than\n556: rotating it to `.prev` the way lane BQ's does, so whatever log was there when I took the guest is\n557: gone. Logs are not simulation state and no measurement depends on it, but the next lane should\n558: rotate rather than delete.\n\n(End of file - total 558 lines)\n","metadata":{"preview":"# Taking `TechTree::ProcessResearch` + the unlock cascade from `compare` to `replace` (lane CR)\n\nHistorical experiment record. The displacement/board workflow referenced below is retired;\ncurrent scope and acceptance criteria are in `campaign/pilots/research-replacement.md`.\nThat pilot also records the independently observed installed-hook inventory and runtime FPU\nword corrections; the original prediction and raw observation history below is preserved.\n\n**Lane CR, 2026-09-09. Guest: VM145 (`sots-re-win10-145`, `re@192.168.10.145`) — held by this lane.**\nVM140 is untouched (it is the exclusive reference guest).\n\nThe board's headline metric is `tools/displacement.py`: **3 replaced / 7 compared / 7 modelled /\n3 mapped**. `TechTree::ProcessResearch + unlock cascade` is the best-evidenced `compared` row — 35\ncalls, three workloads, 0 divergences, `tracecmp` exit 0, and an advance prediction that held on a\n*changed* workload. This lane asks the only question that moves the metric: **can our code run\nINSTEAD of the original's, live, with a byte-level oracle holding afterwards?**\n\nEverything above the `## 4.` heading was committed **before** the shim was built or staged\n(rule 2). Nothing above that line is edited afterwards; corrections are made below it and named as\ncorrections (rule 11).\n","truncated":false,"loaded":[],"display":{"type":"file","path":"/tmp/opencode/sots-final-research-re/findings/subsystems/research-replace.md","text":"# Taking `TechTree::ProcessResearch` + the unlock cascade from `compare` to `replace` (lane CR)\n\nHistorical experiment record. The displacement/board workflow referenced below is retired;\ncurrent scope and acceptance criteria are in `campaign/pilots/research-replacement.md`.\nThat pilot also records the independently observed installed-hook inventory and runtime FPU\nword corrections; the original prediction and raw observation history below is preserved.\n\n**Lane CR, 2026-09-09. Guest: VM145 (`sots-re-win10-145`, `re@192.168.10.145`) — held by this lane.**\nVM140 is untouched (it is the exclusive reference guest).\n\nThe board's headline metric is `tools/displacement.py`: **3 replaced / 7 compared / 7 modelled /\n3 mapped**. `TechTree::ProcessResearch + unlock cascade` is the best-evidenced `compared` row — 35\ncalls, three workloads, 0 divergences, `tracecmp` exit 0, and an advance prediction that held on a\n*changed* workload. This lane asks the only question that moves the metric: **can our code run\nINSTEAD of the original's, live, with a byte-level oracle holding afterwards?**\n\nEverything above the `## 4.` heading was committed **before** the shim was built or staged\n(rule 2). Nothing above that line is edited afterwards; corrections are made below it and named as\ncorrections (rule 11).\n\n---\n\n## 1. The state, and why this one\n\n### 1.1 The candidate the brief names, and why it is not sufficient on its own\n\n`ref-turn2.sav` (`ab4ac2d7…`, = `verify/results/saves/turn2-state.sav`) is the campaign's oldest and\nmost reproduced oracle: one End Turn by the **load** route, `(Autosave EndTurn)` `bb4fd9ac…` /\n`(Autosave)` `978041ac…`, **5 + 1 processes**, certified-pairs row 1.\n\n**It does not exercise a research completion.** This is not an inference from the exit code — it is\nread off lane U's own instruments, both of which are in this repo:\n\n* `verify/results/compare/unlock-b3-t1.md`: 3 calls, 3 compared, 0 diverged, and\n **`0 undeclared write(s) in 0 call(s)`**. Every completion in every measured run produces\n undeclared writes on the `player` and `tree_header` guards, because that is where\n `OnTechResearched`'s tech effects and the tree's order counter land. Zero undeclared writes is\n zero completions.\n* `verify/results/shim/unlock-shim.log`: the first three `research: cascade ok=1 …` lines of the\n five-turn continuation read `completions=0 unlocked=0 otch_appends=0`. Those three lines *are*\n the `ref-turn2` End Turn.\n\nReading the trace rather than the verdict (rule 1) says what that turn *does* do: call 0 advances\nthe generator by one word (`left` 432 → 431), pushes node 144's progress 2879 → 5768, sets its flag\n1 → 2 (`OverBudgetNotified`) and posts one event (`next_id` 3 → 4). Calls 1 and 2 change **nothing\nat all**. So `ref-turn2` + one End Turn is a real workload for the *pass* and an empty one for the\n*completion path*. **A replace-mode oracle taken there would be exactly the green verdict on a hook\nthat compared nothing that rule 1 exists to catch.**\n\n### 1.2 The state this lane uses\n\n**`verify/results/saves/turn3-state.sav`** — 67,219 B, sha256\n`978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921`, `Summary.Turn = 3`,\n`Sim.ModCount = 24`. It is *the output of certified-pairs row 1*: the `(Autosave).sav` that\n`ref-turn2` + one End Turn produces. It is already on VM145 under that hash as `(Autosave).sav`.\n\n**Procedure: one End Turn. Route: LOAD.** Stated because the route is part of the pair\n(rule 26(c) fourth term; lane BS): the same turn reached by continuation and by load is two\ndifferent, individually reproducible things, and this lane deliberately does **not** inherit the\ncontinuation's turn-4 numbers as an assumption — it predicts them and lets the load route falsify\nthem (P1).\n\nWhy this turn: in lane U's five-turn continuation the **fourth-turn** call is the completing one.\nThe call that enters with `turn = 4` allocates 2,898 points to tech 144, completes it, and runs the\ncascade — `completions=1 unlocked=3 otch_appends=1` in the shim log, `next_id` 5 → 7 and\n`observed_techs` 440 → 484 bytes in the trace. `turn3-state.sav` is the state that turn starts from.\n\n### 1.3 The exposure screen (rule 26(c)) — a screen, not a decision procedure\n\nRead from `turn3-state.sav` with `verify/save-reader/save_reader.py`. Eight players; per lane BP the\nengine builds AI clients for net ids **32, 496, 512** only, and the four factions at 528–576 carry\ntheir signature **inertly**.\n\n| player | species | `ResTNm` | `Status` | AI client | pick-turn signature? |\n|---|---|---|---|---|---|\n| 16 (human `re`) | 0 | `''` | 4 | **no** (local human) | **false positive** — no client |\n| 32 | 2 | `IND_Waldo` | 4 | yes | **no** — mid-research |\n| 496 | 0 | `DRV_PlsFiss` | 4 | yes | **no** — mid-research |\n| 512 | 2 | `BIO_GnMod` | 4 | yes | **no** — mid-research |\n| 528, 544, 560, 576 | 4 | `''` | 0 | **no** | **false positive** — no client, `Status 0` |\n\n**No player that actually runs enters this turn with an empty research target.** That is the best\nthe screen can say. It cannot say the control will agree — rule 26(c)'s own retraction is explicit\nthat `candidatesTried` is not readable from a save, that there is a combat term, and that the load\nroute is a fourth term that is not a predicate on the save at all. **So the screen is why this turn\nis worth trying, and the two-process control in §4.1 is the only thing that decides it.**\n\nThe lineage where exposure is saturated (`ad-…`/`ar-…`, every turn carrying a signature) is\ndeliberately not used here.\n\n### 1.4 What is being asked of `hooks=off`\n\nThree fresh-process runs are planned before any replace result is read:\n\n| run | config | what it establishes |\n|---|---|---|\n| **C1**, **C2** | `shim.cfg.croff` (`hooks=off`, the proxy loads and installs nothing) | the control agrees with itself across two fresh processes (rule 26) |\n| **N** | `shim.cfg.crcompare` (one detour, `compare`) | the instrument is behaviour-neutral on *this* save and route (rule 19), **and** it is where the completion count comes from the hook itself |\n\nOnly then the replace runs. C1/C2 use the *same proxy DLL* as every measured run, so the only\ndifference between control and measurement is the config (lane CB's shape).\n\n---\n\n## 2. The four bytes of every float literal on this path (rule 23)\n\nTwo float literals are on the research pass's arithmetic path, and **both are widened `float`s**.\nRead here directly out of `dumps/sots.exe` (PE image base `0x00400000`, `.rdata` at `0x009dd000`\nfile offset `0x5dbe00`), not taken from an earlier note:\n\n| VA | bytes (LE) | value as `double` | is it `(double)float`? | engine constant |\n|---|---|---|---|---|\n| `0x009e20c8` | `00 00 00 a0 99 99 e9 3f` | `0.80000001192092896` | **yes** (low 29 bits zero) | `kEarlyCompletionRatio = 0.800000011920929` |\n| `0x009e5060` | `00 00 00 a0 99 99 a9 3f` | `0.05000000074505806` | **yes** | `kDecayFraction = 0.05000000074505806` |\n\nBoth source literals were re-parsed and re-packed: `0.800000011920929` → `000000a09999e93f` and\n`0.05000000074505806` → `000000a09999a93f`. **Bit-identical to the image.** So the two constants\n`sots-engine/src/game/sim/research.cpp` relies on are exactly the image's, not the exact decimals\nthat bit the money chain twice.\n\nTwo literals that are **not** on this path, and why:\n\n* the tech-cost multiplier (`1.0 − 0.25·n`, floor `0.25`) — `ours` never evaluates it. It calls the\n game's own read-only `TechTree::Cost` for every cost it needs, in both modes (`g_env.cost`). This\n is a genuine, declared dependency on the original: the effective cost is **not** displaced.\n* `ResearchSpendFloor` / `Ceiling` are integer `×50/100` and `×150/100` with a 32-bit wrapping\n multiply — no float involved.\n\n---\n\n## 3. Predictions, committed before the build\n\nFalsification symptoms are given for each. Predictions are made **per site** and not at a bracket\ntotal (rule 23's 2026-09-09 corollary).\n\n### P0 — the control agrees with itself\n`turn3-state.sav`, one End Turn, load route, `hooks=off`, **two fresh processes** produce identical\n`(Autosave EndTurn).sav` and `(Autosave).sav`.\n*Falsified if:* the two processes differ. Then this workload is exposed, the screen in §1.3 was\ninsufficient (which is what rule 26(c)'s retraction predicts is possible), and the honest move is to\nreport that and pin the source of variation — **not** to pick the run that suits.\n\n### P1 — the turn is not quiet, and the load route reproduces the continuation's turn-4 call\nExactly **3** `ProcessResearch` calls, one per AI client, in the same owner order. Allocations:\n**A → {tech 144, 2898 points}**, **B → {tech 90, 0 points}**, **C → {tech 9, 0 points}**. Exactly\n**one completion** (tech 144) and the cascade unlocks exactly **three** nodes:\n\n| node | `state` | `cost_rp` | `turn_available` |\n|---|---|---|---|\n| 132 | 0 → 2 | `INT_MAX` → **10000** | −1 → **4** |\n| 136 | 0 → 2 | `INT_MAX` → **16000** | −1 → **4** |\n| 142 | 0 → 2 | `INT_MAX` → **8000** | −1 → **4** |\n\n*Falsified if:* a different allocation, a different completion count, or a different unlock set. That\nwould be a **route** result — the load route not reproducing the continuation — and it is worth as\nmuch as the replace result. It is exactly what rule 26(c)'s fourth term says can happen.\n\n### P2 — the arithmetic, hand-computed on the boundary\nFor node 144: `cost = 5000`, `lo = ResearchSpendFloor = 2500`, `hi = ResearchSpendCeiling = 7500`.\nEntering progress **5768**, allocation **2898**:\n\n* `spent = min(2898, 7500 − 5768) = 1732` — the cap binds, so this call lands **exactly on the\n ceiling**, which is the boundary rule 23 says to test by hand rather than trust a compare on.\n* `progress 5768 → 7500`, `overbudget 0 → 1166`.\n* `progress (7500) < hi (7500)` is **false**, so the odds/roll branch is skipped: **zero RNG draws**.\n I predict `rng.left` is **unchanged at 413** across all three calls and the `mt` digest does not\n move on any of them.\n* `ratio = (float)(7500/5000) = 1.5`, and `1.5 < 0.800000011920929` is false → **not** completed\n early → `flag` **unchanged**.\n* `state 3 → 4`, `turn_researched −1 → 4`, `order −1 → 22`, and the tree's order counter\n `22 → 23`.\n\n*Falsified if:* any single one of these moves. A wrong `hi` shows up as a wrong `overbudget`; a\nwrong early-completion literal shows up as `flag` moving.\n\n### P3 — the instrument is neutral, and the completion is counted by the instrument\nRun N (`crcompare`, one detour) produces autosaves **byte-identical to C1/C2**, and `tracecmp`\nreports **3 calls / 3 compared / 0 diverged / exit 0**. The hook's own per-call log line reads\n`completions=1 … unlocked=3 otch_appends=1` on the completing call and all-zero on the other two.\nUndeclared writes: **6 spans in 1 call** —\n`player +0x10c/3`, `player +0x110/3`, `player +0x114/3`, `player +0x124/3`, `player +0x294/4`\n(`ResT`, the research target being cleared) and `tree_header +0x20/1` (the order counter).\n\n*Falsified if:* the autosaves move (then rule 19 bites and nothing below is readable), or the\nundeclared-write set differs (then the workload or the model moved).\n\n### P4 — replace with the cascade OFF (`crreplace0`, the shipped behaviour) diverges\nThe autosave is **not** byte-identical. Predicted diverging leaves, by name:\n\n1. `Player[32]` tech tree: node 144 `turn_researched` and `order` unstamped (−1/−1); nodes 132, 136\n and 142 unchanged at `state 0`, `cost_rp INT_MAX`, `turn_available −1`.\n2. the tree's completion-order counter left at 22.\n3. `Player[32]` events: `next_id` short by **2**, two event records absent.\n4. `Player[32]` `otch`: one `ObservedTech` element absent (**44 bytes**).\n5. `Player[32]` scalar fields at `+0x10c`, `+0x110`, `+0x114`, `+0x124` unchanged, and `ResTNm` still\n reading `IND_Waldo` because `ResT` was never cleared.\n\nWhat **will** be right even here: node 144's `state = 4`, `progress = 7500`, `flag`, the decay sweep\nover every other node, and the `overbudget` accumulator.\n\n### P5 — replace with the cascade ON (`crreplace1`) diverges, by strictly less\nSame binary, one config line different (`research.replace_cascade=on`; see §3.1). Predicted:\n**strictly fewer diverging leaves than P4**, with items 1 and 2 of P4 **closed** — node 144 stamped\n`turn_researched 4` / `order 22`, nodes 132/136/142 at `state 2` with `cost_rp` 10000/16000/8000 and\n`turn_available 4`, counter at 23 — and items 3, 4 and 5 **still open**.\n\n### P6 — the headline, stated in advance\n**`game/sim/research` does NOT move from `compared` to `replaced` this session, and the named cause\nis `ServerPlayer::OnTechResearched`, not the research model.** The research pass itself — the spend\ncap, the odds branch, the completion, the decay sweep, and (with the flag on) the whole\n`SetResearched` cascade — is displaceable and I expect it to reproduce the original's TechTree state\nexactly. What blocks the oracle is the *callback*: it posts events whose text comes from the game's\nstring table, appends an `ObservedTech` element `ours` decides but does not construct, and writes\n~90 `ServerPlayer` fields that are a different subsystem's milestone (B2) and a separate `compared`\nrow on the board. A replace of the research pass is **gated on displacing `OnTechResearched`**, and\nthat is a statement about a boundary, not about the research model.\n\n*Falsified if:* `crreplace1`'s autosave is byte-identical to the oracle. That would mean the\ncallback's writes do not reach the save on this workload, P6 is wrong, and the row moves to\n`replaced` — which is the outcome I would rather have and do not expect.\n\n### P7 — the numbers I expect to be able to quote honestly afterwards\n**1** distinct completion, **1** distinct tech (144), **3** unlocked nodes, **3** calls of which\n**2** allocate zero points and write nothing at all. That is thin, and it will be reported as\nthin (rule 15/23) whatever the verdict.\n\n### 3.1 The one engine change this lane makes, and why it is not a thumb on the scale\n\n`sots-engine` worktree `wip/cr` (rule 21), branched from `main` at `e7e2bd6`.\n\n* **`research.replace_cascade=on|off`, default `off`.** With it off the binary behaves *exactly* as\n `main` does today, so P4 measures the shipped behaviour rather than a straw man. With it on, a\n **replace**-mode call also writes the four `TechNode` words `SetResearched` stamps and the tree's\n completion-order counter. It does **not** post events, does **not** move the `ObservedTech` vector\n and does **not** apply a single tech effect — those stay gated on compare mode and stay declared\n unmodelled. The flag exists so P4 and P5 differ by a **config line and not by a binary**, which is\n what makes the leaf difference between their autosaves attributable to the cascade.\n* **A per-call log line in every mode.** The old line was gated on the cascade having run, so a\n replace run with the cascade off had no counter at all and \"a completion happened\" could only be\n inferred from the save — the artefact under test. It now prints `steps`, `completions` (counted\n from the pass's own step results), `overbudget` and the cascade counters, in compare **and**\n replace. This is the instrument answering the brief's \"show it fired — a count, from the hook\n itself\".\n\nNo new binary facts: `ghidra/addresses.d/cr.json` is **not** created, because this lane reads no new\naddress. Every offset used already exists in the generated header. Host build: 253 targets, **59/59\ntests pass** (the denominator is the healthy 59, per rule 24's signature check); `clean_room_check`\nOK; `tools/check_shim_configs.py` OK with 27 registered hooks and all four CR configs\n(`croff`, `crcompare`, `crreplace0`, `crreplace1`) — the three `hooks=trace` ones marked\n`# exhaustive` and naming all 27.\n\n---\n\n## 4. Results\n\n*(added after the runs; nothing above this line is edited)*\n\n### 4.0 The five runs, in order\n\nAll five on **VM145**, held by this lane, each a **fresh process**, `SavedGames` reset to exactly\n`turn3-state.sav` before every launch, `C:\\SOTS\\shimdist-cr\\binkw32.dll`\n(25,274,723 B, sha256 `d2ad56b32c1b5f6b…`, `BUILD_ID cr-618ccb1-20260909T131556Z`, exports 66/66\nidentical to the real `binkw32.dll`), one config per run and nothing else changed. Every screen —\nmain menu, Load-Game chooser, the one-row file list, the **lobby**, the loaded map at \"Turn 3\", the\npost-turn map at \"Turn 4\" — was verified from a live `qm monitor` screendump before the next click.\nNo run was driven by sleeping.\n\n| run | config | mode | `research.replace_cascade` | `(Autosave EndTurn).sav` | `(Autosave).sav` |\n|---|---|---|---|---|---|\n| **C1** | `croff` | `hooks=off` | – | 67,212 `e00eed0c…` | 67,811 `79df5047…` |\n| **C2** | `croff` | `hooks=off` | – | 67,212 **`e00eed0c…`** | 67,811 **`79df5047…`** |\n| **N** | `crcompare` | compare | off | 67,212 **`e00eed0c…`** | 67,811 **`79df5047…`** |\n| **R0** | `crreplace0` | **replace** | off | 67,212 `e00eed0c…` | 67,511 **`6b51db99…`** |\n| **R1** | `crreplace1` | **replace** | **on** | 67,212 `e00eed0c…` | 67,537 **`8a4309ee…`** |\n\n`(Autosave EndTurn).sav` is the *pre*-turn resave and is identical in all five runs, as it must be —\nnothing has run yet when it is written. The verdict is carried entirely by `(Autosave).sav`.\n\n### 4.1 P0 held: the oracle\n\n**C1 and C2 agree byte-for-byte in two fresh processes.** The pair, in the standing\n`certified-pairs.md` format:\n\n| input | procedure | route | `(Autosave EndTurn)` | `(Autosave)` | processes | evidence |\n|---|---|---|---|---|---:|---|\n| `turn3-state.sav` `978041ac…` | one End Turn | **load** | `e00eed0c…` | `79df5047…` | **3** | lane CR ×2 `hooks=off`, ×1 compare-instrumented |\n\n**Masks that must be on the line.** Measured, not assumed —\n`state_checksum.py turn3-state.sav <(Autosave EndTurn)>` gives **exactly 5 leaves**:\n`/Summary/Checksum` and `Player.Status 4 → 0` on each of the four live players (16 `re`,\n32 `Fane Lao`, 496 and 512 `Singularity`). **There is no `/CD[1]/NPrvVa` term on this state** —\n`CD[1]`'s diplomacy block is early-game and the leaf does not move — so the `--mask resave` rule\nholds here in the form the docs originally stated, and the lane BQ exception does not apply.\n\n**Exposure facts next to the hashes** (certified-pairs standing rule 4): §1.3's table — no player\nwith an AI client enters the turn with `ResTNm == ''`; `NumDes` does not move; the two ships that\ncomplete join existing fleets; the four factions at 528–576 carry the empty-`ResTNm` signature\ninertly (`Status 0`, no client). The turn does create fleets (`Flt[50]`, `Flt[1808]`) and retire one\n(`Flt[1776]`) — that is a fleet-assignment shape, and it agreed anyway. **Which is the point of\nrule 26(c)'s retraction: the screen said \"likely fine\" and only the two-process control decided it.**\n\n### 4.2 P3 held: the instrument is neutral, and it counts the completion itself\n\nRun **N** reproduced the control's two hashes exactly, so rule 19 is satisfied on *this* save and\n*this* route and everything below is read from runs that passed their own check.\n`tracecmp verify/traces/cr-N.jsonl.gz`: **3 calls, 3 compared, 0 diverged, exit 0**, coverage verdict\n`partial`, 8 unmodelled notes — and the undeclared-write set is **exactly the six spans predicted**:\n\n```\nplayer+0x10c:3 player+0x110:3 player+0x114:3 player+0x124:3 player+0x294:4 tree_header+0x20:1\n```\n\nThe hook's own per-call line, which is the instrument saying a completion fired rather than the save\nbeing asked to imply it:\n\n```\nresearch: mode=compare steps=1 completions=1 overbudget=1166 cascade_possible=1 ok=1\n cascade_completions=1 unlocked=3 otch_appends=1 roll_draws=0 failures=0 depth=0\nresearch: mode=compare steps=1 completions=0 … (×2, all zero)\n```\n\n**A correction to the campaign's read of the detour count, and it goes the other way from the\nbrief's warning.** My config names all **27** registered template hooks and\n`check_shim_configs.py` passes it as `# exhaustive` — and the shim still installed **six** detours,\nnot one:\n\n| detour | source | named by a `hook.` key? |\n|---|---|---|\n| `Mars::Application::Initialize` | the M0 asm stub, installed unconditionally whenever `hooks != off` | **no** |\n| `Game::TechTree::ProcessResearch` | the one template hook | yes |\n| `StrategyClient::EndTurn`, `StrategyServer::BeginProcessTurn`, `StrategyServer::ProcessTurn`, `DemoApp::OnTick` | the **FPU-force module**, which installs four *sampling* detours by default (`fpu: module init … force=off value=0x0000 sample_ticks=on`, `sample_turn=on`) | **no** |\n\n`Shim::SelfTest::Fill` additionally emits one `trace` record at startup; it is an in-shim self-test,\nnot a detour on the game. So **`# exhaustive` is exhaustive over the template-hook set only**, and\n`tools/check_shim_configs.py` cannot see the other five. It was the *neutrality check* (N identical\nto C1/C2), not the config check, that made this run safe — which is worth saying plainly, because a\nlane reading \"exhaustive, therefore one detour\" would be wrong by five.\n\nFor the record, `fpu_cw = 0x027f` (53-bit, round-to-nearest) in every CR run.\n\n### 4.3 P1 and P2 held exactly, on the LOAD route\n\nThe load route reproduced the continuation's turn-4 call in every particular — allocations, the\ncompletion, the unlock set, the arithmetic. From `cr-N.jsonl.gz` (compare) and confirmed identically\nin `cr-R1.jsonl.gz` (replace):\n\n| call | owner | species | alloc | what moved |\n|---|---|---|---|---|\n| 1 | `Player[32 \"Fane Lao\"]` | 2 | `{144, 2898}` | the completion (below) |\n| 2 | `Player[496 \"Singularity\"]` | 0 | `{90, 0}` | **nothing at all** |\n| 3 | `Player[512 \"Singularity\"]` | 2 | `{9, 0}` | **nothing at all** |\n\nCall 1, node **144 `IND_Waldo`**: `state 3 → 4`, `progress 5768 → 7500`, `turn_researched −1 → 4`,\n`order −1 → 22`; `overbudget 0 → 1166`; three nodes unlocked —\n**132 `IND_OrbFound` @ 10000**, **136 `IND_RefCoat` @ 16000**, **142 `IND_TrkStl` @ 8000**, each\n`state 0 → 2`, `cost_rp INT_MAX → …`, `turn_available −1 → 4`; `events.next_id 5 → 7`;\n`observed_techs 440 → 484 bytes`.\n\nP2's hand arithmetic is confirmed to the unit: `cost 5000`, `lo 2500`, `hi 7500`,\n`spent = min(2898, 1732) = 1732`, `progress = 7500` **exactly on the ceiling**,\n`overbudget = 2898 − 1732 = 1166`; `progress < hi` false so **no draw**; `ratio = 1.5`, not below\n`0.800000011920929`, so **`flag` unchanged**. The `rng` region **did not move on any of the three\ncalls** in any run.\n\nThat last fact is a coverage hole, not a success — see §4.6.\n\n### 4.4 P4 and P5 held: replace diverges, and the cascade closes exactly eleven leaves\n\n`state_checksum.py cr-oracle-autosave.sav `:\n\n| run | diverging leaves | file size |\n|---|---:|---|\n| **R0** — replace, cascade **off** (the shipped behaviour) | **27** | 67,511 B |\n| **R1** — replace, cascade **on** | **16** | 67,537 B |\n| (the turn itself, `turn3-state` → oracle, for scale) | 128 | – |\n\n**The eleven leaves the cascade closes — R0 has them, R1 does not.** All eleven are `TechTree`:\n\n```\nPlayer[32]/TechTree/St[94] TResCost[94] TUnlck[94] (node 132 IND_OrbFound, 10000)\nPlayer[32]/TechTree/St[98] TResCost[98] TUnlck[98] (node 136 IND_RefCoat, 16000)\nPlayer[32]/TechTree/St[104] TResCost[104] TUnlck[104] (node 142 IND_TrkStl, 8000)\nPlayer[32]/TechTree/TAcq[106] TiAcq[106] (node 144, turn 4 / order 22)\n```\n\nThe tree is serialised as parallel arrays indexed by **tree slot**, not tech id — slots 94/98/104/106\nare tech ids 132/136/142/144 — and the pass's own two words, `St[106] 3 → 4` and\n`TResDone[106] 5768 → 7500`, are correct in **both** replace runs because\n`ProcessResearchTurn` writes them without the cascade. So of the **13 tech-tree leaves this turn\nmoves, our code produced all 13 in live memory with the original's `ProcessResearch` never\nexecuting** — 2 from the pass, 11 from `SetResearched`.\n\n**One prediction I cannot test and must retract as written.** P4 item 2 said the completion-order\ncounter would be \"left at 22\" in R0. `TechTree+0x20` **is not a save leaf** — the counter's value\nsurfaces only through the per-node `TiAcq` stamp — so the oracle cannot see it either way. What is\nobservable is the trace: R1's only guard hit is `tree_header+0x20:1` (ours writing 22 → 23, the same\nbyte the original moves in compare mode) and R0 has **0 undeclared writes in 0 calls**. The counter\nmatters for the *next* completion, not for this save.\n\n### 4.5 P6 held: the residual is `ServerPlayer::OnTechResearched`, entirely\n\nR1's **16** leaves, every one of them named, with nothing left over:\n\n| leaf | what it is | modelled by `ours`? |\n|---|---|---|\n| `Player[32]/OutMod` `1.25 → 1.1` | a tech effect | no — B2's milestone |\n| `Player[32]/ConMod[0..2]` `0.9 → 1.0` (×3) | tech effects | no — B2's milestone |\n| `Player[32]/Events/EvNxID` `7 → 5` | the two events not posted | decision modelled, **write is compare-only** |\n| `…/Events/.[EvTurn=4]/Events/.[EvEID=5]`, `.[EvEID=6]` `only-in-A` | the two event records | text comes from the game's string table |\n| `…/Events/.[EvTurn=4]/Events/.[0]` `3 → 1` | that turn's event count | ditto |\n| `Player[32]/otch/.[11]` `only-in-A`, `otch/.[0]` `11 → 10` | the `ObservedTech` element | append **decided** (`otch_appends=1`), element not constructed |\n| `Player[32]/ResTNm` `'' → 'IND_Waldo'` | `ResT` never cleared | inside the callback |\n| `Player[32]/BnkPr`, `BnkEl` | bankruptcy projection | **downstream of `OutMod`** |\n| `Sys[288 \"Ke'Dolarra\"]/RepCur`, `RepMax` `421640 → 371040` | repair capacity | **downstream of `ConMod`** |\n| `/Summary/Checksum` | derived | derived |\n\nSo the residual decomposes into **5 primary player fields** (`OutMod`, `ConMod[0..2]`, `ResTNm`),\n**1 `ObservedTech` element**, **2 event records + their id counter**, and **5 derived leaves** that\nfollow from those. Every single one is written by `ServerPlayer::OnTechResearched`, none of them by\n`TechTree::ProcessResearch` or by `SetResearched`.\n\nThat also closes the loop with §4.2's guard: the four `player` spans the compare reported as\nundeclared (`+0x10c`, `+0x110`, `+0x114`, `+0x124`, all three bytes wide — float writes whose top\nbyte did not change) plus `+0x294` (`ResT`, four bytes) are **five** writes, and the save shows\n**five** primary player fields. The guard was reporting exactly what the oracle later billed us for.\n\n**The input class that breaks it is a completion, and only a completion.** Both replace runs are\nbyte-perfect on the two null calls and on every other leaf of the 128 the turn moves. A replace run\nover a turn where research does not complete would be byte-identical — and would prove nothing\n(rule 1), which is why this lane refused to run it on `ref-turn2`.\n\n### 4.6 Coverage, reported as loudly as the result (rules 15 and 23)\n\n* **1 completion. 1 distinct tech (144 `IND_Waldo`). 3 unlocked nodes. 3 calls.**\n* **2 of the 3 calls allocate zero points and write nothing at all**, in any mode. Their entire\n contribution to \"3 calls, 0 diverged\" is that two null calls stayed null.\n* **1 of 4 tech trees is exercised.** Player 16's tree is never processed (`ResTNm == ''`); players\n 496 and 512 are the null calls.\n* **The RNG region did not move on any call in any run.** The spend cap bound exactly, so the\n odds/roll branch was skipped, and `roll_pending_in` was false on the completing call, so\n `RollResearchEvent` drew nothing (`roll_draws=0`). **`region:rng` — the single strongest check in\n this hook's compare — compared \"unchanged against unchanged\" on this workload and established\n nothing.** The generator parity evidence for this module is entirely lane U's and lane V's,\n on other turns.\n* **Branches that did not execute here:** the Zuul double roll (species 2, not 5); the\n completed-early flag (`ratio 1.5`); the over-budget notification (`flag` already 2 from turn 3);\n `RollResearchEvent`'s draw and, behind it, the plague / AI-rebellion paths; `SetResearched`'s\n zero-cost recursion; the `def+0xb0` `NoAutoAvailable` skip; an empty prerequisite group; a\n re-observed tech (the dedup's negative case); and the decay sweep, which ran over every node and\n **changed nothing** because no other `Available` node had non-zero progress.\n* **The event model is count-only by construction** and stayed compare-only in replace mode by\n design; the two missing records are two of the sixteen residual leaves.\n* **`TechTree::Cost` is the original's.** `ours` calls the game's read-only `Cost` for every cost it\n needs, in both modes. The effective-cost formula is **not** displaced, and any claim about this\n module inherits that dependency.\n\n### 4.7 Verdict\n\n**No. `game/sim/research` does not move from `compared` to `replaced`.**\n\nThe bar is \"our code ran instead of the original's **and a byte-level oracle held afterwards**\". Our\ncode did run instead — `mode=replace`, `completions=1`, `unlocked=3`, the original's\n`ProcessResearch` never executed, and the game finished the turn and wrote a save. The oracle did\n**not** hold: 16 leaves in the best configuration. There is no qualified reading that rescues it,\nbecause the failure is not a rounding residual — it is a set of writes nobody has implemented.\n\nWhat the lane did establish, and it is worth more than the rung would have been:\n\n1. **The research pass and the entire `SetResearched` cascade are displaceable and were displaced.**\n All 13 tech-tree leaves the turn moves were produced by our code in live game memory, on a turn\n with a real completion and a real three-node unlock cascade — which is a strictly stronger\n statement than the 35 compared calls the board already carried, because in a compare the\n original's code still did the work.\n2. **The blocking boundary is named and measured, not guessed:** `ServerPlayer::OnTechResearched`,\n 5 player fields + 1 `ObservedTech` element + 2 events, and 5 derived leaves behind them.\n `ProcessResearch` **cannot** reach `replaced` on any workload containing a completion until\n `OnTechResearched` is displaced — and that is B2's milestone and its own `compared` board row,\n not a defect in the research model.\n3. **A new certified pair** on a turn that exercises the completion path, which the campaign did not\n have: `ref-turn2` + one End Turn is a *quiet* turn for research, and every oracle the module had\n been checked against was that one.\n\nThe cheapest route to the rung, now that the boundary is priced: implement the ~90-field\n`ApplyTechEffect` write-back live (B2 already has `game/effects/tech_effects` host-tested), construct\nthe `ObservedTech` element, and decide what to do about the two event records — whose *text* comes\nfrom the game's string table and therefore cannot be produced clean-room at all. **The event text is\na hard stop for a byte-identical oracle on any completion turn**, and that should be settled as a\npolicy question (call the game's `PostEvent`, and accept the `ComputeBudget`-shaped QUALIFIED\ncaveat) before anyone spends another lane on it.\n\n---\n\n## 5. Proposed board rows\n\n**I have not edited `campaign/board.md`.** I *have* added the certified pair to\n`verify/results/saves/certified-pairs.md`, which the brief pointed at as the standing format and\nwhose four standing rules for adding a row are all satisfied (two fresh `hooks=off` processes; the\ncontrol run before anything was read from an instrumented run; not an extension of an existing pair\nbut its own agreement; exposure facts recorded beside the hashes).\n\n### 5.1 `tools/displacement.py` — the rung does NOT move\n\nThe verdict is **no**, so `\"compared\"` stays. What I do propose is replacing the evidence and caveat\nstrings, which currently understate what is known and do not name the gate:\n\n```python\n (\"TechTree::ProcessResearch + unlock cascade\", \"compared\",\n \"35 calls across 3 workloads, 0 divergences, tracecmp exit 0; advance prediction held on a \"\n \"changed workload (unlock costs no earlier report contained); REPLACE ATTEMPTED live (lane \"\n \"CR): ours ran instead of the original on a real completion and produced all 13 tech-tree \"\n \"leaves the turn moves, but the save oracle missed by 16 leaves\",\n \"compare only. The replace attempt failed on ServerPlayer::OnTechResearched, not on the \"\n \"research model: 5 player tech-effect fields, 1 ObservedTech element and 2 event records, \"\n \"plus 5 derived leaves. Gated on B2. Thin: 1 completion, 1 tech, 2 of 3 calls allocate zero \"\n \"points, and the RNG region did not move at all on the replace workload\"),\n```\n\n### 5.2 Board rows to add\n\n| row | class | status | conf | cov | date | evidence |\n|---|---|---|---|---|---|---|\n| **`ProcessResearch` replace: our code ran instead of the original's, and the oracle missed by 16 leaves — all of them `OnTechResearched`'s** | phase2 | verified | high | 95% | 2026-09-09 | **Lane CR, VM145**, `findings/subsystems/research-replace.md`. Predictions committed before the build (`sots-re` 4b3cc82); engine `wip/cr` 618ccb1 adds `research.replace_cascade=on\\|off` (default off) so the shipped and extended behaviours differ by **a config line, not a binary**. New certified pair `turn3-state.sav` → one End Turn, **load** route, `e00eed0c…`/`79df5047…`, 2 `hooks=off` processes + 1 compare. Compare run **3/3/0 exit 0** and byte-identical to the control (rule 19 satisfied), undeclared writes exactly the 6 predicted spans. **Replace, cascade on: 16 diverging leaves; cascade off: 27.** The 11-leaf delta is the whole `SetResearched` cascade and it is **ours**; with the pass's own 2 words that is **13 of 13 tech-tree leaves the turn moves, produced live by our code**. The 16 residual leaves are `OutMod`, `ConMod[0..2]`, `ResTNm`, one `ObservedTech` element, two event records + `EvNxID`, and 5 derived. **Verdict: stays `compared`.** |\n| **`ref-turn2` + one End Turn does NOT exercise a research completion** | verify | verified | high | 100% | 2026-09-09 | Lane CR. The campaign's most-reproduced oracle is a **quiet turn for the completion path**: `unlock-b3-t1.md` reports `0 undeclared write(s) in 0 call(s)` and `unlock-shim.log`'s first three lines read `completions=0`. It *is* a real workload for the pass (one RNG word, `flag 1 → 2`, one over-budget event) — but a replace-mode oracle taken there would be rule 1's green verdict on a hook comparing nothing. The completing turn is the **next** one, from `turn3-state.sav`. |\n| **`# exhaustive` is exhaustive over the 27 template hooks only — six detours are installed, not one** | phase2 | verified | high | 100% | 2026-09-09 | Lane CR. A config naming all 27 registered hooks `off` except one, passing `tools/check_shim_configs.py`, still installs **6** detours: the M0 `Application::Initialize` asm stub (unconditional whenever `hooks != off`) and the **FPU-force module's four sampling detours** (`force=off value=0x0000 sample_ticks=on sample_turn=on`, on by default). `check_shim_configs.py` cannot see either group — no `hook.` key names them. What made lane CR's runs safe was the **neutrality check** (compare run byte-identical to two `hooks=off` controls), not the config check. A lane reading \"exhaustive, therefore one detour\" is wrong by five. |\n| **A replace of `ProcessResearch` is gated on `ServerPlayer::OnTechResearched`, and partly on a policy question** | phase2 | open | high | – | 2026-09-09 | Lane CR. To reach `replaced`, three things are needed: the ~90-field tech-effect write-back applied live (B2 has `game/effects/tech_effects` host-tested), the `ObservedTech` element constructed (`ours` already decides the append), and the two research event **records** written. The third is not an implementation gap: their `EvDsc`/`EvMsg` text comes from the game's string table, which the engine must not carry, so a byte-identical oracle on any completion turn requires calling the game's own `PostEvent` and accepting a `ComputeBudget`-shaped **QUALIFIED** `replaced`. Settle that before spending a lane. |\n\n### 5.3 Artefacts\n\n| what | where |\n|---|---|\n| predictions commit (before the build) | `sots-re` `4b3cc82` |\n| engine change | `sots-engine` worktree `wip/cr`, `618ccb1` — `research.replace_cascade`, a mode-independent completion counter, four `shim.cfg.cr*` configs |\n| oracle + replace saves | `verify/results/saves/cr/cr-{oracle-endturn,oracle-autosave,replace0-autosave,replace1-autosave}.sav` |\n| traces | `verify/traces/cr-{N,R0,R1}.jsonl.gz` |\n| `tracecmp` reports | `verify/results/compare/cr-{compare,replace0,replace1}.{md,json}` |\n| shim logs (the per-call counters) | `verify/results/shim/cr/cr-{N,R0,R1}.log` |\n| certified pair | `verify/results/saves/certified-pairs.md`, row 4 |\n\nNo `ghidra/addresses.d/cr.json`: this lane read no new address. No game data, save, disassembly or\n`FUN_xxxxxxxx` name reached `sots-engine`; `tools/clean_room_check.sh` OK.\n\n### 5.4 VM145 released\n\nHeld for this lane only; **VM140 untouched**. Restored and verified byte-for-byte to as-found:\n\n```\nbinkw32.dll 15,527,327 B 903527F4A698EEA9FBE25F3A6236657C7D8348F994EEF394696F187E5E554B97 (= shimdist-recap)\nshim.cfg 0AE410CC72FE155837D711C78543E14B1F5743310CD023298EB1E5BBD5457E71 (= shimdist-recap\\shim.cfg.recaptrace)\nSavedGames the same 9 files, every size and sha256 identical to the as-found survey\ngame not running (as found)\n```\n\nLeft behind: `C:\\SOTS\\shimdist-cr\\`, `C:\\SOTS\\ui\\cr\\` (the input save, the four run outputs and the\nrestore set) and `C:\\SOTS\\ui\\cr{deploy,click,grab,snap,restore,find}.ps1`. `click_helper.ps1` is\nunmodified. **One thing not restored:** my deploy helper *deletes* `C:\\SOTS\\shim.log` rather than\nrotating it to `.prev` the way lane BQ's does, so whatever log was there when I took the guest is\ngone. Logs are not simulation state and no measurement depends on it, but the next lane should\nrotate rather than delete.","lineStart":1,"lineEnd":558,"totalLines":558,"truncated":false}},"title":"../../../tmp/opencode/sots-final-research-re/findings/subsystems/research-replace.md","time":{"start":1789017863734,"end":1789017863742}},"metadata":{"openai":{"itemId":"fc_038b7318c5e3845d016aa23f07519087d1b06808f361c2f634"}},"id":"prt_089c63593001pdXltIUYH78GvW","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5fc590012gWptrcPjqA311"}} +{"type":"tool_use","timestamp":1789017863891,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_i8UNfW0RNR7ddPF3aEl9lozv","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/pilots/research-replacement.md"},"output":"/home/alex/sots-re/campaign/pilots/research-replacement.md\nfile\n\n1: # Proposed pilot: completion-bearing research replacement\n2: \n3: Status: **proposed**. This is a contract design, not replacement acceptance. Current architecture\n4: owner is `Astra pilot architect` in the `architecture-review` role on `openai/gpt-5.6-sol`;\n5: subsequent implementation and independent verification use distinct campaign executions.\n6: The target is a bounded replacement of `Game::TechTree::ProcessResearch`, its `SetResearched`\n7: cascade and required completion callback writes on explicitly certified workloads. Broad research\n8: displacement remains unproved. No new live address, remote deployment or dependency policy is\n9: authorized by this document.\n10: \n11: ## 1. Evidence inspected independently (2026-09-09)\n12: \n13: Sources: `findings/subsystems/research-replace.md`; archived CR compare JSON, raw compressed\n14: traces, shim logs and saves; current engine research, tech-effect and event interfaces. Archived\n15: engine build is `cr-618ccb1-20260909T131556Z`, not the rollout's current source snapshot.\n16: \n17: Recomputed SHA-256:\n18: \n19: | RE-relative file | bytes | SHA-256 |\n20: |---|---:|---|\n21: | `verify/results/saves/turn3-state.sav` | 67219 | `978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921` |\n22: | `verify/results/saves/cr/cr-oracle-endturn.sav` | 67212 | `e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f` |\n23: | `verify/results/saves/cr/cr-oracle-autosave.sav` | 67811 | `79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420` |\n24: | `verify/results/saves/cr/cr-replace0-autosave.sav` | 67511 | `6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5` |\n25: | `verify/results/saves/cr/cr-replace1-autosave.sav` | 67537 | `8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235` |\n26: \n27: Local reproduction (diagnostic tool exit alone is not an equality verdict):\n28: \n29: ```sh\n30: python3 verify/state-checksum/state_checksum.py verify/results/saves/cr/cr-oracle-autosave.sav verify/results/saves/cr/cr-replace1-autosave.sav --limit 40\n31: ```\n32: \n33: This reports **16** exact-bit, unmasked leaf differences. Oracle -> R1: OutMod 1.25 -> 1.1;\n34: ConMod[0..2] 0.9 -> 1; ResTNm empty -> IND_Waldo; EvNxID 7 -> 5; events 5/6 absent and\n35: turn-bucket count 3 -> 1; observed-tech element 11 absent and count 11 -> 10; BnkPr/BnkEl,\n36: RepCur/RepMax and Summary.Checksum differ. These are five primary scalar fields, collection\n37: writes/counts and five derived leaves. They are not permission to patch five downstream values.\n38: \n39: `verify/results/compare/cr-compare.json:289-357` reports partial coverage: three comparisons,\n40: six undeclared spans in one call and eight unmodelled notes. In\n41: `verify/traces/cr-R1.jsonl.gz`, call 1 is replace, allocation tech 144 / 2898, input turn 4,\n42: order counter 22, observed count 10, roll_pending false, RNG left 413 and CW 4735 (`0x127f`).\n43: Its RNG digest/index/left are unchanged. Logs `verify/results/shim/cr/cr-R1.log:116-118`\n44: count one completion and three unlocks, then two zero-point calls. `otch_appends=1` counts a\n45: decision; it does **not** mean an element was constructed live.\n46: \n47: ### Corrections to inherited narrative\n48: \n49: 1. R1 log lines 75-94 show seven drawsite detours and twelve probes in addition to the six\n50: sites enumerated in CR findings. Instrumentation is broader than the template-hook config.\n51: Every fresh run needs a complete installed-site manifest, not an “exhaustive config” assertion.\n52: 2. R1 runtime CW is `0x127f`, including the research trace argument; initialization prints\n53: `0x027f`. Preserve the full measured word and precision/rounding separately.\n54: 3. Runtime string lookup is already an engine interface (`research_events.h:95-105`,\n55: `app/event_phase.cpp:10-14`). The absence of bundled game prose does not establish that\n56: original `PostEvent` is mandatory. Runtime asset loading is a concrete route to investigate.\n57: 4. `shim/hooks/tech_effects.cpp:354-365` already writes player state/design masks and delegates\n58: node-bore updates in replace mode. The research hook does not integrate that complete callback;\n59: calling the helper “host-tested” is not evidence its full live boundary is implemented.\n60: \n61: ## 2. Workloads and access paths\n62: \n63: ### W1 — primary positive workload, exact LOAD route\n64: \n65: On a future explicitly leased lab with operator-supplied executable/data paths: restore the\n66: hashed turn3 input as the only selected input save; start a fresh process; use Load Game, select\n67: the input, enter its lobby/map at Turn 3, then one End Turn to Turn 4. Verify UI/state transitions\n68: rather than sleep-and-assume. Preserve both output saves before any reset. Bind save selection,\n69: route, process identity, executable hash, assets, shim hash, config and instrumentation to evidence.\n70: \n71: Historical predictions to re-certify before measuring candidate results:\n72: - Exactly three research calls, owners 32/496/512 in order, allocations 144:2898, 90:0, 9:0.\n73: - One IND_Waldo completion: progress 5768 -> 7500, state 3 -> 4, turn_researched -1 -> 4,\n74: order -1 -> 22, counter 22 -> 23, refund 1166. Flag unchanged.\n75: - Nodes 132/136/142 unlock, costs 10000/16000/8000, available turn 4. Save tree slots are\n76: 94/98/104; tech 144 is slot 106. Never equate tech id with serialized slot.\n77: - One full ObservedTech record, two full events (completion followed by unlocked-techs),\n78: event next id 5 -> 7; primary effect fields reach oracle values; target clears.\n79: - Zero RNG words in this workload. This is a negative RNG control, not evidence for draws.\n80: \n81: ### W0 — regression control, insufficient for completion acceptance\n82: \n83: `verify/results/saves/turn2-state.sav`, one End Turn via LOAD, reaches the turn3 input above.\n84: This exercises the research pass/overbudget event and a RNG word, but zero completions. Re-certify\n85: its two-process oracle independently and pin its input hash before use. Do not substitute W0\n86: for W1, or use zero-allocation calls as the positive execution threshold.\n87: \n88: ### W2 — path to broader completion evidence (not yet certified)\n89: \n90: Select a different, archived completion-bearing input from the unlock continuations, or generate\n91: one under an approved lab contract; record the input hash and exact LOAD/continuation route before\n92: prediction. Require a different tech/effect family, a positive RNG draw and a second completion\n93: that observes the advanced order counter. The existing U/V evidence motivates selection but is\n94: not a ready executable workload contract. Separate controls are required for that exact route.\n95: Until W2 exists, any accepted pilot claim is restricted to W1 plus its declared regression checks.\n96: \n97: ## 3. Full write boundary and responsibilities\n98: \n99: | Boundary | Required state / behavior | Existing interface and current gap |\n100: |---|---|---|\n101: | Research pass | all node progress/state/flag writes; signed capped spend and refund accumulator; decay of other Available nodes; RNG state, left and next index | `sim::ProcessResearchTurn`, `ResearchCompletionHook`; current CR pass writes live |\n102: | Unlock cascade | node costRP, availability/researched turn, order; tree order counter; child/prerequisite availability; recursive zero-cost completions and ordering | `sim::TechGraph` / `SetResearched`; replace cascade opt-in exists, transcription failures can currently skip it |\n103: | Completion callback | target pointer/ResTNm; pending-roll flags; every applicable player economy float, masks, boolean/species flags, design-option masks; node-bore storage/lifetime | `ApplyTechCompletion`, `RunCompletionTail`, `tfx::ReadPlayerState`/`WritePlayerState`; integrate with research on pre-call inputs, avoid already-researched guard |\n104: | Observed technology | dedup/update semantics, entire 0x2c record (name, first/last turns, detected, with), vector content/count/capacity and allocator ownership | research hook currently alters scratch span only; full live construction and update semantics need evidence |\n105: | Events | complete turn buckets and ordered records: id, summary, message, location, position, image, action, chainId; next id; dedup and pruning; all owned allocations | `events::EventStorage`, `PostResearchPassEvents`; research hook is count-only/compare-only; runtime text and live ABI adapter missing |\n106: | Callback outcomes beyond player | owned-system AI flags/caps/addiction/plague; ships' plague state; recursive Zuul tech grants; pending research-event RNG and plague/rebellion consequences including allocations/cancel research | `TechApplyOutcome` reports work, does not execute it; broader closure remains incomplete |\n107: | Downstream observation | budget/bankruptcy/repair/checksum consequences of primary effects | let ordinary turn processing derive them; full oracle must expose them, never harvest original post-state or hardcode expected leaves |\n108: \n109: The W1 observed write set is a subset of this boundary. The complete callback has conditional\n110: system/ship/object writes absent on W1. A narrow pilot must preflight its supported class and\n111: fail closed before mutating on unsupported branches. Suppressed writes, unavailable graph/text,\n112: unknown pointers, unreadable names, failed allocation, or unmodelled fired rolls are blockers,\n113: not successful no-ops. General displacement requires separate evidence for all reachable effects.\n114: \n115: Events require exact formatting/dedup order, `FLT_MAX` no-position values, action conversion,\n116: the original prune-window behavior and preexisting event contents. `KeylessEventText` substitutes\n117: tokens for prose and must never be serialized as a passing oracle. Completion message length\n118: above 255 has an explicitly documented divergence/undefined-original boundary; exclude or resolve\n119: it explicitly. Seed comparisons from pre-call state, not the original callback's output.\n120: \n121: ## 4. Inputs and original dependencies\n122: \n123: Required immutable input manifest before ready:\n124: - Exact engine and RE baseline commits plus actual source-content hashes; paired worktrees;\n125: compiler/toolchain/build flags, host and shim binaries, generated-address provenance.\n126: - The hashed W1 input and oracle archive above, plus selected W0/W2 inputs as applicable.\n127: - Operator-owned game executable and proxy originals with hashes. The archived trace reports exe\n128: SHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`; remeasure it.\n129: - Explicit runtime data root, manifest of tech definitions/graph, tuning/constants/species inputs,\n130: localized string-table files and locale/encoding/load order. Existing parser data must come\n131: from user assets, not copies of game prose embedded in source. Missing table/key is not empty text\n132: for acceptance. Asset paths and hashes are not yet supplied for this pilot.\n133: - Full configs and actually installed interceptors (template hooks, init, FPU sampling, probes,\n134: drawsites), FPU CW per call, input route/process-reset record, output/log/trace file hashes.\n135: \n136: Original dependency ledger (each needs a lead decision and explicit qualification):\n137: 1. **Existing:** research calls original `TechTree::Cost` for effective cost and cascade cost\n138: lookup (`shim/hooks/research.cpp:568-573,916-919`). Formula and applicable bonus-tech discovery\n139: are not displaced by this pilot merely because a host formula exists.\n140: 2. **Existing separate B2 hook:** original has-researched lookup and node-bore updater\n141: (`tech_effects.cpp:325-328,358-365`). Node-bore updater allocates/frees state; it is not\n142: read-only despite the source comment's analogy. Reuse requires disclosure and effect accounting.\n143: 3. **Proposed, undecided:** original string lookup / allocator / event posting helpers versus a\n144: runtime-asset text adapter and compatible live allocation. No selected policy or guessed address.\n145: 4. **Outside replaced root:** original turn driver, budget allocator and remaining simulation,\n146: asset loading and save serializer still run in the shim experiment. Whole standalone turn\n147: equality is a different acceptance axis and cannot be inferred from this partial replacement.\n148: \n149: ## 5. Executable acceptance to provide before ready\n150: \n151: The contract must eventually name real, versioned commands and dependencies for this sequence;\n152: the following are precise requirements, not a presently implemented runner:\n153: \n154: 1. Fresh full gate on hashed source/inputs, expected test identities, positive corpus execution,\n155: asset-dependent tests and shim build. A host-only pass is insufficient. Bind full gate manifest\n156: and resulting binary to every experiment and reject source/input changes.\n157: 2. Two fresh-process C1/C2 controls with hooks off, same proxy, input, assets and exact W1 route;\n158: both output pairs equal byte-for-byte. Archive independent process logs; one saved oracle\n159: copy is not independent proof that two processes agreed.\n160: 3. Compare-neutral N with the candidate binary and complete instrumentation manifest; both\n161: output saves byte-equal controls; positive W1 counters and decoded state. Zero compared calls,\n162: partial required-region coverage or undeclared required writes cannot pass.\n163: 4. Replace R, same baseline and binary, bypass original ProcessResearch and required displaced\n164: callback implementation (count explicit original helper calls separately). Require exactly\n165: one W1 completion/three unlocks, real element/event writes, zero failures/unreadable inputs,\n166: and full declared state validation including nonserialized order counter and RNG state.\n167: 5. Require **post-turn** autosave byte equality, inflated equality and exact-bit unmasked state\n168: equality independently, with reader reconstruction coverage. Pre-turn EndTurn equality alone\n169: cannot satisfy acceptance. No masks for event text, callback fields or derived discrepancies.\n170: 6. Negative controls must fail: archived R0 (27 differences) and R1 (16); zero-completion W0\n171: cannot satisfy W1 threshold; omit callback/event/ObservedTech write or use wrong input hash;\n172: remove a trace/log/output; mark unknown RNG as zero. Checker rejects all.\n173: 7. Independently assigned verifier re-runs the checks and ties verdict to contract, source,\n174: binary, asset and evidence digests. Implementation worker cannot self-certify acceptance.\n175: Integration requires revalidation of integrated source; changed inputs invalidate evidence.\n176: \n177: W2 and branch-specific tests must be added before expanding the claim to RNG-consuming,\n178: Zuul/early-completion, nonzero-decay, zero-cost recursion, prerequisite/no-auto-available,\n179: re-observed/deduplicated, temperance, plague or rebellion cases. Their absence is visible coverage\n180: debt, not satisfied execution. Local simulation tests alone do not establish live allocator safety.\n181: \n182: ### 5.1 Acceptance interface fixed before implementation (2026-09-10)\n183: \n184: The accepted `research-completion-abi` contract closes the static record/container dependency only.\n185: It does not close live allocation safety or any replacement criterion. The pilot checker and run\n186: driver do not yet exist, so the commands below are required interfaces and remain blockers, not\n187: executable claims:\n188: \n189: ```sh\n190: python3 tools/research_replacement.py preflight --package MANIFEST.json --workload W1\n191: python3 tools/gate.py --engine ENGINE --corpus CORPUS --out NEW_GATE_DIR \\\n192: --profile full --data DATA --shim --sots-input SOTS_EXE=EXE --sots-input SOTS_PROXY=PROXY\n193: python3 tools/research_replacement.py certify-controls --package MANIFEST.json --workload W1 \\\n194: --c1 C1_DIR --c2 C2_DIR --compare N_DIR\n195: python3 tools/research_replacement.py check-replace --package MANIFEST.json --workload W1 \\\n196: --replace R_DIR --oracle C1_DIR\n197: python3 tools/research_replacement.py negative-controls --package MANIFEST.json \\\n198: --replace0 verify/results/saves/cr/cr-replace0-autosave.sav \\\n199: --replace1 verify/results/saves/cr/cr-replace1-autosave.sav --w0 W0_DIR\n200: ```\n201: \n202: `MANIFEST.json` must bind paired source manifests, the full-gate manifest and shim binary, owner\n203: executable/proxy, generated addresses, data root and every consumed tech/tuning/species/string file,\n204: locale/encoding/load order, exact configs and installed-site manifest, W1/W0 saves, process route,\n205: and output/log/trace hashes. Each command must fail on an absent or extra required artifact, hash or\n206: source drift, stale output directory, zero required execution, unexpected skip, unreadable input,\n207: unsupported branch, or unknown RNG. `check-replace` must separately report file bytes, inflated\n208: bytes, exact-bit typed state, reader coverage, nonserialized order counter, complete RNG state and\n209: actual words, callback/helper counters, allocations and complete event/ObservedTech elements.\n210: \n211: Before any implementation contract can become ready, an independent verifier must turn these\n212: interfaces into an executable falsifier plan covering archived R0 and R1, a wrong W1 hash, each\n213: missing callback/event/ObservedTech write, an omitted output/log/trace/site manifest, W0 presented\n214: as the positive, unknown RNG presented as zero, original displaced-root fallback, and same-HEAD\n215: source-byte drift. Verifier and implementer executions must be different sessions.\n216: \n217: ### 5.2 Bounded W1 architecture and dependency decisions\n218: \n219: The replacement is one ordered coordinator with a dry-run preflight, not three independently\n220: acceptable leaf patches. Preflight reads all three owner calls and computes the complete W1 plan on\n221: scratch state before the first live write. It must positively identify the exact owner/allocation\n222: sequence, one tech-144 `IND_Waldo` completion, the three unlocks, no pending research roll, no\n223: unmodelled conditional system/ship/Zuul/plague/temperance/rebellion effect, and an explicit outcome\n224: for every recursive-completion and decay branch. The eventual immutable W1 manifest must state the\n225: certified expected outcomes; any mismatch is unsupported and blocks before mutation. This is a W1\n226: classifier, not a general research implementation.\n227: \n228: The coordinator then preserves original order: research arithmetic; `SetResearched` node/order\n229: writes; full ObservedTech record operation; matched-target handling; full completion event; W1 player\n230: effects and common tail; unlocked-tech event; remaining pass writes. It must use pre-call state for\n231: all decisions. Allocation failure after mutation is an observed failed run and cannot pass; this\n232: plan does not claim transactional rollback that the original does not provide.\n233: \n234: Original-helper policy for this bounded pilot is explicit:\n235: \n236: 1. **Retain and count `TechTree::Cost`** for effective and cascade costs. Independent cost\n237: replacement is excluded from the claim.\n238: 2. **Retain and count `TechTree::HasResearched`** for the common callback tail and design masks.\n239: The replacement owns the resulting mask and field writes; the helper is lookup only.\n240: 3. **Retain and count `ServerPlayer::UpdateNodeBoreParams`** at its original common-tail position.\n241: It may allocate/free through the game's CRT even when W1 does not select a bore tech.\n242: Independent node-bore maintenance is excluded.\n243: 4. **Use the original MSVCR100 scalar new/delete family and accepted record/container ABI as a\n244: live memory bridge**, with every allocation/copy/destruction operation counted. This is\n245: original-runtime allocation assistance, not standalone allocator replacement.\n246: 5. **Do not call original `ProcessResearch`, `SetResearched`, `OnTechResearched`,\n247: `RecordObservedTech`, `EventStorage::PostEvent`, or original string lookup** in replace mode.\n248: Runtime owner assets must supply localized text to an engine-side lookup; replacement code owns\n249: record contents, event IDs/order/dedup/pruning and callback effects. Keyless text is forbidden.\n250: 6. The original turn driver, budget allocation, asset loading and save serializer remain outside\n251: the replaced root and must be disclosed separately from retained helpers.\n252: \n253: Static ABI acceptance unlocks exactly one preparatory dependency: a live record-bridge contract\n254: must exercise ObservedTech, TurnEvents and PlayerEvent operations with empty/spare/full capacity,\n255: short/long strings, repeated observed names, exact duplicate and description-only-different events,\n256: normal destruction and a recorded failure path, under a lease. It owns only the bridge and fixtures\n257: and may not wire research replacement. Only after independent acceptance of that bridge may one\n258: complete W1 coordinator implementation own `src/shim/hooks/research.{cpp,h}` plus narrowly named\n259: bridge/effect/event files and tests. No two workers may concurrently own those files or the same\n260: VM/build directory.\n261: \n262: ## 6. Current blockers / stop conditions\n263: \n264: - No executable pilot-specific acceptance runner or full input/asset manifest. W2 is not required\n265: for the W1-only pilot but remains required before any broader claim.\n266: - Live research callback integration, complete ObservedTech/event construction, broader callback\n267: outcomes and unsupported-path preflight remain unimplemented/unverified.\n268: - Static record/container ABI is accepted, but the live record bridge and its independent runtime\n269: safety evidence are missing. Retained Cost/HasResearched/node-bore/CRT helpers and forbidden\n270: displaced roots are fixed above; runtime asset paths and adapter execution remain unresolved.\n271: - Archived C1/C2 equality is documented but independent raw control-run bundles are not established\n272: by the single oracle pair inspected here. Fresh controls are mandatory.\n273: - Instrumentation and runtime FPU narrative need correction in acceptance inputs; archives are\n274: historical observations, not the current candidate's attestation.\n275: - Stop on control disagreement, silent fallback, missing data, branch outside approved class,\n276: unexpected writes/draws, stale evidence, source drift, or scope/architecture surprises; persist\n277: checkpoint and escalate to Astra before changing the contract.\n278: \n279: This proposal authorizes planning only. Keep lifecycle **proposed** until required dependencies,\n280: input manifests, bounded implementation scope and executable acceptance exist.\n\n(End of file - total 280 lines)\n","metadata":{"preview":"# Proposed pilot: completion-bearing research replacement\n\nStatus: **proposed**. This is a contract design, not replacement acceptance. Current architecture\nowner is `Astra pilot architect` in the `architecture-review` role on `openai/gpt-5.6-sol`;\nsubsequent implementation and independent verification use distinct campaign executions.\nThe target is a bounded replacement of `Game::TechTree::ProcessResearch`, its `SetResearched`\ncascade and required completion callback writes on explicitly certified workloads. Broad research\ndisplacement remains unproved. No new live address, remote deployment or dependency policy is\nauthorized by this document.\n\n## 1. Evidence inspected independently (2026-09-09)\n\nSources: `findings/subsystems/research-replace.md`; archived CR compare JSON, raw compressed\ntraces, shim logs and saves; current engine research, tech-effect and event interfaces. Archived\nengine build is `cr-618ccb1-20260909T131556Z`, not the rollout's current source snapshot.\n\nRecomputed SHA-256:\n\n| RE-relative file | bytes | SHA-256 |\n|---|---:|---|","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/pilots/research-replacement.md","text":"# Proposed pilot: completion-bearing research replacement\n\nStatus: **proposed**. This is a contract design, not replacement acceptance. Current architecture\nowner is `Astra pilot architect` in the `architecture-review` role on `openai/gpt-5.6-sol`;\nsubsequent implementation and independent verification use distinct campaign executions.\nThe target is a bounded replacement of `Game::TechTree::ProcessResearch`, its `SetResearched`\ncascade and required completion callback writes on explicitly certified workloads. Broad research\ndisplacement remains unproved. No new live address, remote deployment or dependency policy is\nauthorized by this document.\n\n## 1. Evidence inspected independently (2026-09-09)\n\nSources: `findings/subsystems/research-replace.md`; archived CR compare JSON, raw compressed\ntraces, shim logs and saves; current engine research, tech-effect and event interfaces. Archived\nengine build is `cr-618ccb1-20260909T131556Z`, not the rollout's current source snapshot.\n\nRecomputed SHA-256:\n\n| RE-relative file | bytes | SHA-256 |\n|---|---:|---|\n| `verify/results/saves/turn3-state.sav` | 67219 | `978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921` |\n| `verify/results/saves/cr/cr-oracle-endturn.sav` | 67212 | `e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f` |\n| `verify/results/saves/cr/cr-oracle-autosave.sav` | 67811 | `79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420` |\n| `verify/results/saves/cr/cr-replace0-autosave.sav` | 67511 | `6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5` |\n| `verify/results/saves/cr/cr-replace1-autosave.sav` | 67537 | `8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235` |\n\nLocal reproduction (diagnostic tool exit alone is not an equality verdict):\n\n```sh\npython3 verify/state-checksum/state_checksum.py verify/results/saves/cr/cr-oracle-autosave.sav verify/results/saves/cr/cr-replace1-autosave.sav --limit 40\n```\n\nThis reports **16** exact-bit, unmasked leaf differences. Oracle -> R1: OutMod 1.25 -> 1.1;\nConMod[0..2] 0.9 -> 1; ResTNm empty -> IND_Waldo; EvNxID 7 -> 5; events 5/6 absent and\nturn-bucket count 3 -> 1; observed-tech element 11 absent and count 11 -> 10; BnkPr/BnkEl,\nRepCur/RepMax and Summary.Checksum differ. These are five primary scalar fields, collection\nwrites/counts and five derived leaves. They are not permission to patch five downstream values.\n\n`verify/results/compare/cr-compare.json:289-357` reports partial coverage: three comparisons,\nsix undeclared spans in one call and eight unmodelled notes. In\n`verify/traces/cr-R1.jsonl.gz`, call 1 is replace, allocation tech 144 / 2898, input turn 4,\norder counter 22, observed count 10, roll_pending false, RNG left 413 and CW 4735 (`0x127f`).\nIts RNG digest/index/left are unchanged. Logs `verify/results/shim/cr/cr-R1.log:116-118`\ncount one completion and three unlocks, then two zero-point calls. `otch_appends=1` counts a\ndecision; it does **not** mean an element was constructed live.\n\n### Corrections to inherited narrative\n\n1. R1 log lines 75-94 show seven drawsite detours and twelve probes in addition to the six\n sites enumerated in CR findings. Instrumentation is broader than the template-hook config.\n Every fresh run needs a complete installed-site manifest, not an “exhaustive config” assertion.\n2. R1 runtime CW is `0x127f`, including the research trace argument; initialization prints\n `0x027f`. Preserve the full measured word and precision/rounding separately.\n3. Runtime string lookup is already an engine interface (`research_events.h:95-105`,\n `app/event_phase.cpp:10-14`). The absence of bundled game prose does not establish that\n original `PostEvent` is mandatory. Runtime asset loading is a concrete route to investigate.\n4. `shim/hooks/tech_effects.cpp:354-365` already writes player state/design masks and delegates\n node-bore updates in replace mode. The research hook does not integrate that complete callback;\n calling the helper “host-tested” is not evidence its full live boundary is implemented.\n\n## 2. Workloads and access paths\n\n### W1 — primary positive workload, exact LOAD route\n\nOn a future explicitly leased lab with operator-supplied executable/data paths: restore the\nhashed turn3 input as the only selected input save; start a fresh process; use Load Game, select\nthe input, enter its lobby/map at Turn 3, then one End Turn to Turn 4. Verify UI/state transitions\nrather than sleep-and-assume. Preserve both output saves before any reset. Bind save selection,\nroute, process identity, executable hash, assets, shim hash, config and instrumentation to evidence.\n\nHistorical predictions to re-certify before measuring candidate results:\n- Exactly three research calls, owners 32/496/512 in order, allocations 144:2898, 90:0, 9:0.\n- One IND_Waldo completion: progress 5768 -> 7500, state 3 -> 4, turn_researched -1 -> 4,\n order -1 -> 22, counter 22 -> 23, refund 1166. Flag unchanged.\n- Nodes 132/136/142 unlock, costs 10000/16000/8000, available turn 4. Save tree slots are\n 94/98/104; tech 144 is slot 106. Never equate tech id with serialized slot.\n- One full ObservedTech record, two full events (completion followed by unlocked-techs),\n event next id 5 -> 7; primary effect fields reach oracle values; target clears.\n- Zero RNG words in this workload. This is a negative RNG control, not evidence for draws.\n\n### W0 — regression control, insufficient for completion acceptance\n\n`verify/results/saves/turn2-state.sav`, one End Turn via LOAD, reaches the turn3 input above.\nThis exercises the research pass/overbudget event and a RNG word, but zero completions. Re-certify\nits two-process oracle independently and pin its input hash before use. Do not substitute W0\nfor W1, or use zero-allocation calls as the positive execution threshold.\n\n### W2 — path to broader completion evidence (not yet certified)\n\nSelect a different, archived completion-bearing input from the unlock continuations, or generate\none under an approved lab contract; record the input hash and exact LOAD/continuation route before\nprediction. Require a different tech/effect family, a positive RNG draw and a second completion\nthat observes the advanced order counter. The existing U/V evidence motivates selection but is\nnot a ready executable workload contract. Separate controls are required for that exact route.\nUntil W2 exists, any accepted pilot claim is restricted to W1 plus its declared regression checks.\n\n## 3. Full write boundary and responsibilities\n\n| Boundary | Required state / behavior | Existing interface and current gap |\n|---|---|---|\n| Research pass | all node progress/state/flag writes; signed capped spend and refund accumulator; decay of other Available nodes; RNG state, left and next index | `sim::ProcessResearchTurn`, `ResearchCompletionHook`; current CR pass writes live |\n| Unlock cascade | node costRP, availability/researched turn, order; tree order counter; child/prerequisite availability; recursive zero-cost completions and ordering | `sim::TechGraph` / `SetResearched`; replace cascade opt-in exists, transcription failures can currently skip it |\n| Completion callback | target pointer/ResTNm; pending-roll flags; every applicable player economy float, masks, boolean/species flags, design-option masks; node-bore storage/lifetime | `ApplyTechCompletion`, `RunCompletionTail`, `tfx::ReadPlayerState`/`WritePlayerState`; integrate with research on pre-call inputs, avoid already-researched guard |\n| Observed technology | dedup/update semantics, entire 0x2c record (name, first/last turns, detected, with), vector content/count/capacity and allocator ownership | research hook currently alters scratch span only; full live construction and update semantics need evidence |\n| Events | complete turn buckets and ordered records: id, summary, message, location, position, image, action, chainId; next id; dedup and pruning; all owned allocations | `events::EventStorage`, `PostResearchPassEvents`; research hook is count-only/compare-only; runtime text and live ABI adapter missing |\n| Callback outcomes beyond player | owned-system AI flags/caps/addiction/plague; ships' plague state; recursive Zuul tech grants; pending research-event RNG and plague/rebellion consequences including allocations/cancel research | `TechApplyOutcome` reports work, does not execute it; broader closure remains incomplete |\n| Downstream observation | budget/bankruptcy/repair/checksum consequences of primary effects | let ordinary turn processing derive them; full oracle must expose them, never harvest original post-state or hardcode expected leaves |\n\nThe W1 observed write set is a subset of this boundary. The complete callback has conditional\nsystem/ship/object writes absent on W1. A narrow pilot must preflight its supported class and\nfail closed before mutating on unsupported branches. Suppressed writes, unavailable graph/text,\nunknown pointers, unreadable names, failed allocation, or unmodelled fired rolls are blockers,\nnot successful no-ops. General displacement requires separate evidence for all reachable effects.\n\nEvents require exact formatting/dedup order, `FLT_MAX` no-position values, action conversion,\nthe original prune-window behavior and preexisting event contents. `KeylessEventText` substitutes\ntokens for prose and must never be serialized as a passing oracle. Completion message length\nabove 255 has an explicitly documented divergence/undefined-original boundary; exclude or resolve\nit explicitly. Seed comparisons from pre-call state, not the original callback's output.\n\n## 4. Inputs and original dependencies\n\nRequired immutable input manifest before ready:\n- Exact engine and RE baseline commits plus actual source-content hashes; paired worktrees;\n compiler/toolchain/build flags, host and shim binaries, generated-address provenance.\n- The hashed W1 input and oracle archive above, plus selected W0/W2 inputs as applicable.\n- Operator-owned game executable and proxy originals with hashes. The archived trace reports exe\n SHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`; remeasure it.\n- Explicit runtime data root, manifest of tech definitions/graph, tuning/constants/species inputs,\n localized string-table files and locale/encoding/load order. Existing parser data must come\n from user assets, not copies of game prose embedded in source. Missing table/key is not empty text\n for acceptance. Asset paths and hashes are not yet supplied for this pilot.\n- Full configs and actually installed interceptors (template hooks, init, FPU sampling, probes,\n drawsites), FPU CW per call, input route/process-reset record, output/log/trace file hashes.\n\nOriginal dependency ledger (each needs a lead decision and explicit qualification):\n1. **Existing:** research calls original `TechTree::Cost` for effective cost and cascade cost\n lookup (`shim/hooks/research.cpp:568-573,916-919`). Formula and applicable bonus-tech discovery\n are not displaced by this pilot merely because a host formula exists.\n2. **Existing separate B2 hook:** original has-researched lookup and node-bore updater\n (`tech_effects.cpp:325-328,358-365`). Node-bore updater allocates/frees state; it is not\n read-only despite the source comment's analogy. Reuse requires disclosure and effect accounting.\n3. **Proposed, undecided:** original string lookup / allocator / event posting helpers versus a\n runtime-asset text adapter and compatible live allocation. No selected policy or guessed address.\n4. **Outside replaced root:** original turn driver, budget allocator and remaining simulation,\n asset loading and save serializer still run in the shim experiment. Whole standalone turn\n equality is a different acceptance axis and cannot be inferred from this partial replacement.\n\n## 5. Executable acceptance to provide before ready\n\nThe contract must eventually name real, versioned commands and dependencies for this sequence;\nthe following are precise requirements, not a presently implemented runner:\n\n1. Fresh full gate on hashed source/inputs, expected test identities, positive corpus execution,\n asset-dependent tests and shim build. A host-only pass is insufficient. Bind full gate manifest\n and resulting binary to every experiment and reject source/input changes.\n2. Two fresh-process C1/C2 controls with hooks off, same proxy, input, assets and exact W1 route;\n both output pairs equal byte-for-byte. Archive independent process logs; one saved oracle\n copy is not independent proof that two processes agreed.\n3. Compare-neutral N with the candidate binary and complete instrumentation manifest; both\n output saves byte-equal controls; positive W1 counters and decoded state. Zero compared calls,\n partial required-region coverage or undeclared required writes cannot pass.\n4. Replace R, same baseline and binary, bypass original ProcessResearch and required displaced\n callback implementation (count explicit original helper calls separately). Require exactly\n one W1 completion/three unlocks, real element/event writes, zero failures/unreadable inputs,\n and full declared state validation including nonserialized order counter and RNG state.\n5. Require **post-turn** autosave byte equality, inflated equality and exact-bit unmasked state\n equality independently, with reader reconstruction coverage. Pre-turn EndTurn equality alone\n cannot satisfy acceptance. No masks for event text, callback fields or derived discrepancies.\n6. Negative controls must fail: archived R0 (27 differences) and R1 (16); zero-completion W0\n cannot satisfy W1 threshold; omit callback/event/ObservedTech write or use wrong input hash;\n remove a trace/log/output; mark unknown RNG as zero. Checker rejects all.\n7. Independently assigned verifier re-runs the checks and ties verdict to contract, source,\n binary, asset and evidence digests. Implementation worker cannot self-certify acceptance.\n Integration requires revalidation of integrated source; changed inputs invalidate evidence.\n\nW2 and branch-specific tests must be added before expanding the claim to RNG-consuming,\nZuul/early-completion, nonzero-decay, zero-cost recursion, prerequisite/no-auto-available,\nre-observed/deduplicated, temperance, plague or rebellion cases. Their absence is visible coverage\ndebt, not satisfied execution. Local simulation tests alone do not establish live allocator safety.\n\n### 5.1 Acceptance interface fixed before implementation (2026-09-10)\n\nThe accepted `research-completion-abi` contract closes the static record/container dependency only.\nIt does not close live allocation safety or any replacement criterion. The pilot checker and run\ndriver do not yet exist, so the commands below are required interfaces and remain blockers, not\nexecutable claims:\n\n```sh\npython3 tools/research_replacement.py preflight --package MANIFEST.json --workload W1\npython3 tools/gate.py --engine ENGINE --corpus CORPUS --out NEW_GATE_DIR \\\n --profile full --data DATA --shim --sots-input SOTS_EXE=EXE --sots-input SOTS_PROXY=PROXY\npython3 tools/research_replacement.py certify-controls --package MANIFEST.json --workload W1 \\\n --c1 C1_DIR --c2 C2_DIR --compare N_DIR\npython3 tools/research_replacement.py check-replace --package MANIFEST.json --workload W1 \\\n --replace R_DIR --oracle C1_DIR\npython3 tools/research_replacement.py negative-controls --package MANIFEST.json \\\n --replace0 verify/results/saves/cr/cr-replace0-autosave.sav \\\n --replace1 verify/results/saves/cr/cr-replace1-autosave.sav --w0 W0_DIR\n```\n\n`MANIFEST.json` must bind paired source manifests, the full-gate manifest and shim binary, owner\nexecutable/proxy, generated addresses, data root and every consumed tech/tuning/species/string file,\nlocale/encoding/load order, exact configs and installed-site manifest, W1/W0 saves, process route,\nand output/log/trace hashes. Each command must fail on an absent or extra required artifact, hash or\nsource drift, stale output directory, zero required execution, unexpected skip, unreadable input,\nunsupported branch, or unknown RNG. `check-replace` must separately report file bytes, inflated\nbytes, exact-bit typed state, reader coverage, nonserialized order counter, complete RNG state and\nactual words, callback/helper counters, allocations and complete event/ObservedTech elements.\n\nBefore any implementation contract can become ready, an independent verifier must turn these\ninterfaces into an executable falsifier plan covering archived R0 and R1, a wrong W1 hash, each\nmissing callback/event/ObservedTech write, an omitted output/log/trace/site manifest, W0 presented\nas the positive, unknown RNG presented as zero, original displaced-root fallback, and same-HEAD\nsource-byte drift. Verifier and implementer executions must be different sessions.\n\n### 5.2 Bounded W1 architecture and dependency decisions\n\nThe replacement is one ordered coordinator with a dry-run preflight, not three independently\nacceptable leaf patches. Preflight reads all three owner calls and computes the complete W1 plan on\nscratch state before the first live write. It must positively identify the exact owner/allocation\nsequence, one tech-144 `IND_Waldo` completion, the three unlocks, no pending research roll, no\nunmodelled conditional system/ship/Zuul/plague/temperance/rebellion effect, and an explicit outcome\nfor every recursive-completion and decay branch. The eventual immutable W1 manifest must state the\ncertified expected outcomes; any mismatch is unsupported and blocks before mutation. This is a W1\nclassifier, not a general research implementation.\n\nThe coordinator then preserves original order: research arithmetic; `SetResearched` node/order\nwrites; full ObservedTech record operation; matched-target handling; full completion event; W1 player\neffects and common tail; unlocked-tech event; remaining pass writes. It must use pre-call state for\nall decisions. Allocation failure after mutation is an observed failed run and cannot pass; this\nplan does not claim transactional rollback that the original does not provide.\n\nOriginal-helper policy for this bounded pilot is explicit:\n\n1. **Retain and count `TechTree::Cost`** for effective and cascade costs. Independent cost\n replacement is excluded from the claim.\n2. **Retain and count `TechTree::HasResearched`** for the common callback tail and design masks.\n The replacement owns the resulting mask and field writes; the helper is lookup only.\n3. **Retain and count `ServerPlayer::UpdateNodeBoreParams`** at its original common-tail position.\n It may allocate/free through the game's CRT even when W1 does not select a bore tech.\n Independent node-bore maintenance is excluded.\n4. **Use the original MSVCR100 scalar new/delete family and accepted record/container ABI as a\n live memory bridge**, with every allocation/copy/destruction operation counted. This is\n original-runtime allocation assistance, not standalone allocator replacement.\n5. **Do not call original `ProcessResearch`, `SetResearched`, `OnTechResearched`,\n `RecordObservedTech`, `EventStorage::PostEvent`, or original string lookup** in replace mode.\n Runtime owner assets must supply localized text to an engine-side lookup; replacement code owns\n record contents, event IDs/order/dedup/pruning and callback effects. Keyless text is forbidden.\n6. The original turn driver, budget allocation, asset loading and save serializer remain outside\n the replaced root and must be disclosed separately from retained helpers.\n\nStatic ABI acceptance unlocks exactly one preparatory dependency: a live record-bridge contract\nmust exercise ObservedTech, TurnEvents and PlayerEvent operations with empty/spare/full capacity,\nshort/long strings, repeated observed names, exact duplicate and description-only-different events,\nnormal destruction and a recorded failure path, under a lease. It owns only the bridge and fixtures\nand may not wire research replacement. Only after independent acceptance of that bridge may one\ncomplete W1 coordinator implementation own `src/shim/hooks/research.{cpp,h}` plus narrowly named\nbridge/effect/event files and tests. No two workers may concurrently own those files or the same\nVM/build directory.\n\n## 6. Current blockers / stop conditions\n\n- No executable pilot-specific acceptance runner or full input/asset manifest. W2 is not required\n for the W1-only pilot but remains required before any broader claim.\n- Live research callback integration, complete ObservedTech/event construction, broader callback\n outcomes and unsupported-path preflight remain unimplemented/unverified.\n- Static record/container ABI is accepted, but the live record bridge and its independent runtime\n safety evidence are missing. Retained Cost/HasResearched/node-bore/CRT helpers and forbidden\n displaced roots are fixed above; runtime asset paths and adapter execution remain unresolved.\n- Archived C1/C2 equality is documented but independent raw control-run bundles are not established\n by the single oracle pair inspected here. Fresh controls are mandatory.\n- Instrumentation and runtime FPU narrative need correction in acceptance inputs; archives are\n historical observations, not the current candidate's attestation.\n- Stop on control disagreement, silent fallback, missing data, branch outside approved class,\n unexpected writes/draws, stale evidence, source drift, or scope/architecture surprises; persist\n checkpoint and escalate to Astra before changing the contract.\n\nThis proposal authorizes planning only. Keep lifecycle **proposed** until required dependencies,\ninput manifests, bounded implementation scope and executable acceptance exist.","lineStart":1,"lineEnd":280,"totalLines":280,"truncated":false}},"title":"campaign/pilots/research-replacement.md","time":{"start":1789017863859,"end":1789017863871}},"metadata":{"openai":{"itemId":"fc_038b7318c5e3845d016aa23f07519487d1bfdca153327fe594"}},"id":"prt_089c63672001bQ0TVMPQp0kYqB","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5fc590012gWptrcPjqA311"}} +{"type":"tool_use","timestamp":1789017863938,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_uMZLFghC2ZwZtOmU81F7D0aX","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi"},"output":"/home/alex/sots-re/verify/results/research-completion-abi\ndirectory\n\nobjdump-2026-09-09-dedup-helper.txt\nobjdump-2026-09-09-ownership.txt\nobjdump-2026-09-09-turnevents.txt\nobjdump-2026-09-10-boundary-repair.md\nobjdump-2026-09-10-dedup-narrow.stderr.txt\nobjdump-2026-09-10-dedup-narrow.stdout.txt\nobjdump-2026-09-10-dedup-wide.stderr.txt\nobjdump-2026-09-10-dedup-wide.stdout.txt\nrecovered-static.md\nreva-2026-09-09-index.md\nrun-16f8e9b6376b278c4870be09/\nrun-79357a65226f61d6a86c042d/\nrun-9daf5c3b75547271d5c3b4ed/\n\n(13 entries)\n","metadata":{"preview":"objdump-2026-09-09-dedup-helper.txt\nobjdump-2026-09-09-ownership.txt\nobjdump-2026-09-09-turnevents.txt\nobjdump-2026-09-10-boundary-repair.md\nobjdump-2026-09-10-dedup-narrow.stderr.txt\nobjdump-2026-09-10-dedup-narrow.stdout.txt\nobjdump-2026-09-10-dedup-wide.stderr.txt\nobjdump-2026-09-10-dedup-wide.stdout.txt\nrecovered-static.md\nreva-2026-09-09-index.md\nrun-16f8e9b6376b278c4870be09/\nrun-79357a65226f61d6a86c042d/\nrun-9daf5c3b75547271d5c3b4ed/","truncated":false,"loaded":[],"display":{"type":"directory","path":"/home/alex/sots-re/verify/results/research-completion-abi","entries":["objdump-2026-09-09-dedup-helper.txt","objdump-2026-09-09-ownership.txt","objdump-2026-09-09-turnevents.txt","objdump-2026-09-10-boundary-repair.md","objdump-2026-09-10-dedup-narrow.stderr.txt","objdump-2026-09-10-dedup-narrow.stdout.txt","objdump-2026-09-10-dedup-wide.stderr.txt","objdump-2026-09-10-dedup-wide.stdout.txt","recovered-static.md","reva-2026-09-09-index.md","run-16f8e9b6376b278c4870be09/","run-79357a65226f61d6a86c042d/","run-9daf5c3b75547271d5c3b4ed/"],"offset":1,"totalEntries":13,"truncated":false}},"title":"verify/results/research-completion-abi","time":{"start":1789017863933,"end":1789017863937}},"metadata":{"openai":{"itemId":"fc_038b7318c5e3845d016aa23f07519c87d1b8291688d86cbbe0"}},"id":"prt_089c636ce001qRqJp9BG9xmNYi","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c5fc590012gWptrcPjqA311"}} +{"type":"step_finish","timestamp":1789017864067,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c6377f001wurVkuThFuTb6u","reason":"tool-calls","snapshot":"cbf640242cebfafb704a82b1b4aab6907b137d11","messageID":"msg_089c5fc590012gWptrcPjqA311","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":32658,"input":6794,"output":237,"reasoning":27,"cache":{"write":0,"read":25600}},"cost":0}} +{"type":"step_start","timestamp":1789017865916,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c63eb8001xk49iDKIbUen8d","messageID":"msg_089c637b9001OR4kyYxHimBDFJ","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"5d20573dfd82de654fb37ae67cc8a33809de6d20","type":"step-start"}} +{"type":"tool_use","timestamp":1789017878580,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_hTGAzkkaRepOD7JogIuphbMF","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/decisions/d-fd5aff1eaf78a8c15d96723c.json"},"output":"/home/alex/sots-re/campaign/runtime/decisions/d-fd5aff1eaf78a8c15d96723c.json\nfile\n\n1: {\n2: \"actor\": \"research ABI surprise resolver\",\n3: \"contract\": \"research-completion-abi\",\n4: \"explanation\": \"Astra resolution-only decision; session run-daefd1b77558f324ae730b27. OBSERVATION/PROVENANCE: inspected analyst run-16f8e9b6376b278c4870be09/manifest.json and verifier run-ee78b8773688ca09f8046e21/manifest.json plus all four exact stdout streams and nested-copy-wide.stdout.txt under verify/results/research-completion-abi-correction-verifier/. Checkpoint 070383fd013a0e4b1a2ef5e0 rehashes verifier manifest 50aa35e22432b153d14dbd6a5cced3ce0ac8826c79b56f500a0ce96a32619393 and actual-session report c33ce30e6bb907aa4140b287afc9198bd503e9da179ff3adb8921ca3ba1b87fc. Exact nested-copy ends 0x779a1f with displayed byte 74; wide adds displacement 10 but ends 0x779a23 with only e8. Manifest records eight exit-zero, nonempty, empty-stderr objdump executions and four byte-exact analyst comparisons, but full harness exit is 1, not success. Documentary binary identity: 7898624 bytes SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841; GNU objdump 2.38, 373888 bytes SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd. These were not freshly rehashed/rerun by resolver. Direct HEAD/common-dir checks match contract baselines in assigned paired worktrees; both trees are dirty, not assumed clean or identified solely by HEAD. Launcher records source_before; historical content bindings engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 are documentary, not new measurements. INSTRUMENT: stop-address affects displayed instruction bytes despite a decoded target and return zero; +4 is not a completeness guarantee. No game/hook execution or runtime neutrality measurement occurred. This is capture-boundary interference, not a stale-build/game-mechanism diagnosis.\\nOVERTURNED: complete four-window stream/no-truncation and nested-copy exact-row-prefix claims at stops 0x779a20/0x779a24; full independent-cross-check success and any acceptance inferred fr... (line truncated to 2000 chars)\n5: \"id\": \"d-fd5aff1eaf78a8c15d96723c\",\n6: \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-070383fd013a0e4b1a2ef5e0.json\",\n7: \"invalidated_evidence\": [],\n8: \"model\": \"openai/gpt-6-astra\",\n9: \"probe\": \"Cheapest discriminator for an authorized analyst after both resolutions and normal lifecycle scheduling: fresh pinned objdump -D -Mintel from 0x00779850 at stops 0x00779a20 (known-bad negative control), 0x00779a21 and 0x00779a23. Archived wide rows predict 74 10 ends at 0x779a21 and 8b cf ends at 0x779a23; these replacement stops are predictions, not measured here. Check raw PE section bytes across 0x779a1f..0x779a28 and instruction lengths, require the two aligned captures to be complete and prefix-consistent, and reject old stop as truncated despite exit zero. For narrowly scoped nested-copy authority use separately captured 0x779850..0x779930, retaining return and cleanup through 0x779926 and padding, excluding later routines; verify that terminal boundary too. Recapture all four ownership windows and boundary controls with current-session immutable manifests, all streams/argv/cwd/return codes/hashes and source binding. Audit all terminal instructions, not just prefix equality. Then an independent verifier reproduces the fresh package and held-out complete-boundary control before independent-cross-check; integrated evidence and archived-record checking remain required. No VM needed, no runtime claim; stop and escalate any new mismatch.\",\n10: \"role\": \"resolver\",\n11: \"schema\": \"sots-decision/1\",\n12: \"surprise\": \"s-4f4fb5e8ee42ccff7e68efb5\",\n13: \"timestamp\": \"2026-09-10T04:50:36.267192+00:00\"\n14: }\n\n(End of file - total 14 lines)\n","metadata":{"preview":"{\n \"actor\": \"research ABI surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only decision; session run-daefd1b77558f324ae730b27. OBSERVATION/PROVENANCE: inspected analyst run-16f8e9b6376b278c4870be09/manifest.json and verifier run-ee78b8773688ca09f8046e21/manifest.json plus all four exact stdout streams and nested-copy-wide.stdout.txt under verify/results/research-completion-abi-correction-verifier/. Checkpoint 070383fd013a0e4b1a2ef5e0 rehashes verifier manifest 50aa35e22432b153d14dbd6a5cced3ce0ac8826c79b56f500a0ce96a32619393 and actual-session report c33ce30e6bb907aa4140b287afc9198bd503e9da179ff3adb8921ca3ba1b87fc. Exact nested-copy ends 0x779a1f with displayed byte 74; wide adds displacement 10 but ends 0x779a23 with only e8. Manifest records eight exit-zero, nonempty, empty-stderr objdump executions and four byte-exact analyst comparisons, but full harness exit is 1, not success. Documentary binary identity: 7898624 bytes SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841; GNU objdump 2.38, 373888 bytes SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd. These were not freshly rehashed/rerun by resolver. Direct HEAD/common-dir checks match contract baselines in assigned paired worktrees; both trees are dirty, not assumed clean or identified solely by HEAD. Launcher records source_before; historical content bindings engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 are documentary, not new measurements. INSTRUMENT: stop-address affects displayed instruction bytes despite a decoded target and return zero; +4 is not a completeness guarantee. No game/hook execution or runtime neutrality measurement occurred. This is capture-boundary interference, not a stale-build/game-mechanism diagnosis.\\nOVERTURNED: complete four-window stream/no-truncation and nested-copy exact-row-prefix claims at stops 0x779a20/0x779a24; full independent-cross-check success and any acceptance inferred fr... (line truncated to 2000 chars)\n \"id\": \"d-fd5aff1eaf78a8c15d96723c\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-070383fd013a0e4b1a2ef5e0.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest discriminator for an authorized analyst after both resolutions and normal lifecycle scheduling: fresh pinned objdump -D -Mintel from 0x00779850 at stops 0x00779a20 (known-bad negative control), 0x00779a21 and 0x00779a23. Archived wide rows predict 74 10 ends at 0x779a21 and 8b cf ends at 0x779a23; these replacement stops are predictions, not measured here. Check raw PE section bytes across 0x779a1f..0x779a28 and instruction lengths, require the two aligned captures to be complete and prefix-consistent, and reject old stop as truncated despite exit zero. For narrowly scoped nested-copy authority use separately captured 0x779850..0x779930, retaining return and cleanup through 0x779926 and padding, excluding later routines; verify that terminal boundary too. Recapture all four ownership windows and boundary controls with current-session immutable manifests, all streams/argv/cwd/return codes/hashes and source binding. Audit all terminal instructions, not just prefix equality. Then an independent verifier reproduces the fresh package and held-out complete-boundary control before independent-cross-check; integrated evidence and archived-record checking remain required. No VM needed, no runtime claim; stop and escalate any new mismatch.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-4f4fb5e8ee42ccff7e68efb5\",\n \"timestamp\": \"2026-09-10T04:50:36.267192+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/decisions/d-fd5aff1eaf78a8c15d96723c.json","text":"{\n \"actor\": \"research ABI surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only decision; session run-daefd1b77558f324ae730b27. OBSERVATION/PROVENANCE: inspected analyst run-16f8e9b6376b278c4870be09/manifest.json and verifier run-ee78b8773688ca09f8046e21/manifest.json plus all four exact stdout streams and nested-copy-wide.stdout.txt under verify/results/research-completion-abi-correction-verifier/. Checkpoint 070383fd013a0e4b1a2ef5e0 rehashes verifier manifest 50aa35e22432b153d14dbd6a5cced3ce0ac8826c79b56f500a0ce96a32619393 and actual-session report c33ce30e6bb907aa4140b287afc9198bd503e9da179ff3adb8921ca3ba1b87fc. Exact nested-copy ends 0x779a1f with displayed byte 74; wide adds displacement 10 but ends 0x779a23 with only e8. Manifest records eight exit-zero, nonempty, empty-stderr objdump executions and four byte-exact analyst comparisons, but full harness exit is 1, not success. Documentary binary identity: 7898624 bytes SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841; GNU objdump 2.38, 373888 bytes SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd. These were not freshly rehashed/rerun by resolver. Direct HEAD/common-dir checks match contract baselines in assigned paired worktrees; both trees are dirty, not assumed clean or identified solely by HEAD. Launcher records source_before; historical content bindings engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 are documentary, not new measurements. INSTRUMENT: stop-address affects displayed instruction bytes despite a decoded target and return zero; +4 is not a completeness guarantee. No game/hook execution or runtime neutrality measurement occurred. This is capture-boundary interference, not a stale-build/game-mechanism diagnosis.\\nOVERTURNED: complete four-window stream/no-truncation and nested-copy exact-row-prefix claims at stops 0x779a20/0x779a24; full independent-cross-check success and any acceptance inferred fr... (line truncated to 2000 chars)\n \"id\": \"d-fd5aff1eaf78a8c15d96723c\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-070383fd013a0e4b1a2ef5e0.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest discriminator for an authorized analyst after both resolutions and normal lifecycle scheduling: fresh pinned objdump -D -Mintel from 0x00779850 at stops 0x00779a20 (known-bad negative control), 0x00779a21 and 0x00779a23. Archived wide rows predict 74 10 ends at 0x779a21 and 8b cf ends at 0x779a23; these replacement stops are predictions, not measured here. Check raw PE section bytes across 0x779a1f..0x779a28 and instruction lengths, require the two aligned captures to be complete and prefix-consistent, and reject old stop as truncated despite exit zero. For narrowly scoped nested-copy authority use separately captured 0x779850..0x779930, retaining return and cleanup through 0x779926 and padding, excluding later routines; verify that terminal boundary too. Recapture all four ownership windows and boundary controls with current-session immutable manifests, all streams/argv/cwd/return codes/hashes and source binding. Audit all terminal instructions, not just prefix equality. Then an independent verifier reproduces the fresh package and held-out complete-boundary control before independent-cross-check; integrated evidence and archived-record checking remain required. No VM needed, no runtime claim; stop and escalate any new mismatch.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-4f4fb5e8ee42ccff7e68efb5\",\n \"timestamp\": \"2026-09-10T04:50:36.267192+00:00\"\n}","lineStart":1,"lineEnd":14,"totalLines":14,"truncated":false}},"title":"campaign/runtime/decisions/d-fd5aff1eaf78a8c15d96723c.json","time":{"start":1789017878561,"end":1789017878574}},"metadata":{"openai":{"itemId":"fc_0362d91993ee76eb016aa23f16528c87d186cd4ff0a46dd0f6"}},"id":"prt_089c66fe6001VK7td5zWreojw0","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c637b9001OR4kyYxHimBDFJ"}} +{"type":"tool_use","timestamp":1789017878591,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_n95M4HetM0K4jKdIKZyGWP0U","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/decisions/d-0bb927e63b915c87a58d4257.json"},"output":"/home/alex/sots-re/campaign/runtime/decisions/d-0bb927e63b915c87a58d4257.json\nfile\n\n1: {\n2: \"actor\": \"research ABI surprise resolver\",\n3: \"contract\": \"research-completion-abi\",\n4: \"explanation\": \"Astra resolution-only decision, session run-daefd1b77558f324ae730b27; apply jointly with d-fd5aff1eaf78a8c15d96723c. OBSERVATION: inspected verify/results/research-completion-abi-correction-verifier/reproduce_run_ee78b8773688ca09f8046e21.py. Lines 7 and 72 hard-code prior output directory and session; lines 26/36/84 allow overwriting prior outputs. Actual-session report-run-5bd0e537bb0c4c4f43987ac1.md records current invocation and exit 1; generated run-ee78b8773688ca09f8046e21/manifest.json claims prior session with fresh timestamp. Current checkpoint 070383fd013a0e4b1a2ef5e0 rehashed that manifest/report to the inherited checkpoint hashes. Binary/tool/source and positive static execution qualifications are recorded in d-fd5aff1eaf78a8c15d96723c; no fresh binary execution or runtime neutrality measurement here. No basis to infer a different game build or game mechanism from stale provenance.\\nOVERTURNED in exact current-session domain: manifest is truthful evidence of run-5bd0e537bb0c4c4f43987ac1, inherited helper is safely reusable unchanged across fresh sessions, and fresh timestamp/identical stdout repairs stale session identity. QUALIFIED: raw outputs and report survive as archived static measurements with documented provenance defect, not independent current-session or integrated acceptance. SURVIVES: failed boundary challenge is a failure, eight positive objdump subprocess records support static capture rather than zero-execution, and unaffected decoded ownership rows retain only the partial static domain in companion decision. A later report cannot retroactively turn overwritten prior-session output into an immutable original-run bundle.\\nINVALIDATE current-session/full-compare acceptance use of the entire verifier run-ee78b8773688ca09f8046e21/manifest.json package, its hard-coded helper as a fresh-run recipe, and any checkpoint/verdict depending on that attribution. Preserve original files and failure report; no in-place relabeling, rehash... (line truncated to 2000 chars)\n5: \"id\": \"d-0bb927e63b915c87a58d4257\",\n6: \"invalidated_checkpoint\": null,\n7: \"invalidated_evidence\": [],\n8: \"model\": \"openai/gpt-6-astra\",\n9: \"probe\": \"Cheapest provenance discriminator before capture: supply the actual new campaign run session explicitly to a fresh minimal capture recipe/direct manifest; verify it equals the launch record and output directory and that the directory does not already exist. Predeclare negative checks rejecting missing session, stale prior-session ID and reused output location before running objdump. Archive the recipe and interpreter/tool/source/input identities before capture; run all four exact/repaired complete-boundary windows plus companion negative boundary control into the new directory and record actual commands, timestamps, return codes and stream hashes. Fail closed on identity drift and any required failure; expected bad-boundary control must remain explicitly classified negative, never counted as a passing full stream. Independent verifier must reproduce with its own real session and fresh directory, not execute the inherited hard-coded helper or relabel this manifest. No probe was executed by resolver.\",\n10: \"role\": \"resolver\",\n11: \"schema\": \"sots-decision/1\",\n12: \"surprise\": \"s-d44b9f9e62272794d88bbed6\",\n13: \"timestamp\": \"2026-09-10T04:51:08.364275+00:00\"\n14: }\n\n(End of file - total 14 lines)\n","metadata":{"preview":"{\n \"actor\": \"research ABI surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only decision, session run-daefd1b77558f324ae730b27; apply jointly with d-fd5aff1eaf78a8c15d96723c. OBSERVATION: inspected verify/results/research-completion-abi-correction-verifier/reproduce_run_ee78b8773688ca09f8046e21.py. Lines 7 and 72 hard-code prior output directory and session; lines 26/36/84 allow overwriting prior outputs. Actual-session report-run-5bd0e537bb0c4c4f43987ac1.md records current invocation and exit 1; generated run-ee78b8773688ca09f8046e21/manifest.json claims prior session with fresh timestamp. Current checkpoint 070383fd013a0e4b1a2ef5e0 rehashed that manifest/report to the inherited checkpoint hashes. Binary/tool/source and positive static execution qualifications are recorded in d-fd5aff1eaf78a8c15d96723c; no fresh binary execution or runtime neutrality measurement here. No basis to infer a different game build or game mechanism from stale provenance.\\nOVERTURNED in exact current-session domain: manifest is truthful evidence of run-5bd0e537bb0c4c4f43987ac1, inherited helper is safely reusable unchanged across fresh sessions, and fresh timestamp/identical stdout repairs stale session identity. QUALIFIED: raw outputs and report survive as archived static measurements with documented provenance defect, not independent current-session or integrated acceptance. SURVIVES: failed boundary challenge is a failure, eight positive objdump subprocess records support static capture rather than zero-execution, and unaffected decoded ownership rows retain only the partial static domain in companion decision. A later report cannot retroactively turn overwritten prior-session output into an immutable original-run bundle.\\nINVALIDATE current-session/full-compare acceptance use of the entire verifier run-ee78b8773688ca09f8046e21/manifest.json package, its hard-coded helper as a fresh-run recipe, and any checkpoint/verdict depending on that attribution. Preserve original files and failure report; no in-place relabeling, rehash... (line truncated to 2000 chars)\n \"id\": \"d-0bb927e63b915c87a58d4257\",\n \"invalidated_checkpoint\": null,\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest provenance discriminator before capture: supply the actual new campaign run session explicitly to a fresh minimal capture recipe/direct manifest; verify it equals the launch record and output directory and that the directory does not already exist. Predeclare negative checks rejecting missing session, stale prior-session ID and reused output location before running objdump. Archive the recipe and interpreter/tool/source/input identities before capture; run all four exact/repaired complete-boundary windows plus companion negative boundary control into the new directory and record actual commands, timestamps, return codes and stream hashes. Fail closed on identity drift and any required failure; expected bad-boundary control must remain explicitly classified negative, never counted as a passing full stream. Independent verifier must reproduce with its own real session and fresh directory, not execute the inherited hard-coded helper or relabel this manifest. No probe was executed by resolver.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-d44b9f9e62272794d88bbed6\",\n \"timestamp\": \"2026-09-10T04:51:08.364275+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/decisions/d-0bb927e63b915c87a58d4257.json","text":"{\n \"actor\": \"research ABI surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only decision, session run-daefd1b77558f324ae730b27; apply jointly with d-fd5aff1eaf78a8c15d96723c. OBSERVATION: inspected verify/results/research-completion-abi-correction-verifier/reproduce_run_ee78b8773688ca09f8046e21.py. Lines 7 and 72 hard-code prior output directory and session; lines 26/36/84 allow overwriting prior outputs. Actual-session report-run-5bd0e537bb0c4c4f43987ac1.md records current invocation and exit 1; generated run-ee78b8773688ca09f8046e21/manifest.json claims prior session with fresh timestamp. Current checkpoint 070383fd013a0e4b1a2ef5e0 rehashed that manifest/report to the inherited checkpoint hashes. Binary/tool/source and positive static execution qualifications are recorded in d-fd5aff1eaf78a8c15d96723c; no fresh binary execution or runtime neutrality measurement here. No basis to infer a different game build or game mechanism from stale provenance.\\nOVERTURNED in exact current-session domain: manifest is truthful evidence of run-5bd0e537bb0c4c4f43987ac1, inherited helper is safely reusable unchanged across fresh sessions, and fresh timestamp/identical stdout repairs stale session identity. QUALIFIED: raw outputs and report survive as archived static measurements with documented provenance defect, not independent current-session or integrated acceptance. SURVIVES: failed boundary challenge is a failure, eight positive objdump subprocess records support static capture rather than zero-execution, and unaffected decoded ownership rows retain only the partial static domain in companion decision. A later report cannot retroactively turn overwritten prior-session output into an immutable original-run bundle.\\nINVALIDATE current-session/full-compare acceptance use of the entire verifier run-ee78b8773688ca09f8046e21/manifest.json package, its hard-coded helper as a fresh-run recipe, and any checkpoint/verdict depending on that attribution. Preserve original files and failure report; no in-place relabeling, rehash... (line truncated to 2000 chars)\n \"id\": \"d-0bb927e63b915c87a58d4257\",\n \"invalidated_checkpoint\": null,\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest provenance discriminator before capture: supply the actual new campaign run session explicitly to a fresh minimal capture recipe/direct manifest; verify it equals the launch record and output directory and that the directory does not already exist. Predeclare negative checks rejecting missing session, stale prior-session ID and reused output location before running objdump. Archive the recipe and interpreter/tool/source/input identities before capture; run all four exact/repaired complete-boundary windows plus companion negative boundary control into the new directory and record actual commands, timestamps, return codes and stream hashes. Fail closed on identity drift and any required failure; expected bad-boundary control must remain explicitly classified negative, never counted as a passing full stream. Independent verifier must reproduce with its own real session and fresh directory, not execute the inherited hard-coded helper or relabel this manifest. No probe was executed by resolver.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-d44b9f9e62272794d88bbed6\",\n \"timestamp\": \"2026-09-10T04:51:08.364275+00:00\"\n}","lineStart":1,"lineEnd":14,"totalLines":14,"truncated":false}},"title":"campaign/runtime/decisions/d-0bb927e63b915c87a58d4257.json","time":{"start":1789017878578,"end":1789017878590}},"metadata":{"openai":{"itemId":"fc_0362d91993ee76eb016aa23f1652a487d1b030d5b8af4bfe52"}},"id":"prt_089c67023001NHz4YDUkDCaljy","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c637b9001OR4kyYxHimBDFJ"}} +{"type":"tool_use","timestamp":1789017878728,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_3AFoDgdNbdMjY1vFozE3u6yv","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/decisions/d-b51f3f76803e852ed250846a.json"},"output":"/home/alex/sots-re/campaign/runtime/decisions/d-b51f3f76803e852ed250846a.json\nfile\n\n1: {\n2: \"actor\": \"live-record surprise resolver\",\n3: \"contract\": \"research-completion-abi\",\n4: \"explanation\": \"Astra resolution, session run-f63d1e050a7ee3fac7b44885. OBSERVATION/PROVENANCE: reviewed complete raw get/create and append windows in verify/results/research-live-record-bridge/run-472955e277202c411388c66b; checkpoint d08b4bbf364f3305ee2fef98 rehashed manifest ae16b4b500db5b84bea27c659e254842ab0c67c040ca782c016381384338773b and both stdout artifacts to their recorded hashes. Historical capture manifest binds sots.exe 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd with positive nonempty exit-zero static execution. Current binary/tool were not rehashed or rerun: resolver shell denies that operation. Worktree HEAD/common directories match baselines; dirty content is not inferred from HEAD. No game or hook ran; read-only disassembly introduces no runtime instrument effects. No stale-build or game-mechanism diagnosis is justified.\\nOVERTURNED, exact captured normal miss-path domain: temporary EvTurn is initialized to zero, and append necessarily copies zero (recovered-static.md lines 68-69). Complete entry has no call before append and no store to EBP-0x20: prologue writes SEH at -4/-8/-c, stack reservation does not initialize locals, saved registers/cookie are below -24; miss stores vptr at -24, nested pointers at -1c/-18/-14 and EH state at -4. ECX names receiver+4. Append external-source branch loads source+4 at 0x884d62 and stores destination+4 at 0x884d6c, then nested-copy, then advances last at 0x884d78. Temporary nested cleanup at 0x885422 precedes requested-turn store to last-0x14 at 0x88542d.\\nSURVIVES in those static windows for valid containers and normally returning helpers: ECX receiver/one stack argument/ret4/EAX bucket ABI; full last-match scan; vptr and empty nested-header initialization; scalar EvTurn copy distinct from nested deep-copy; cleanup of temporary nested vector; final new bucket turn equals requested turn and EAX=last-0x18. Existin... (line truncated to 2000 chars)\n5: \"id\": \"d-b51f3f76803e852ed250846a\",\n6: \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-d2e4078886c66df34ee00b24.json\",\n7: \"invalidated_evidence\": [\n8: {\n9: \"axis\": \"static-recovery\",\n10: \"binaries\": [\n11: {\n12: \"path\": \"dumps/sots.exe\",\n13: \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n14: }\n15: ],\n16: \"id\": \"research-completion-abi-static-run-79357a65226f61d6a86c042d\",\n17: \"inputs\": [\n18: {\n19: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/report.md\",\n20: \"sha256\": \"d5a28f01002f1711cf8575ffd817a8f0998b413c6280d656e6cdad5a90a04477\"\n21: }\n22: ],\n23: \"integrated\": true,\n24: \"outcomes\": [\n25: {\n26: \"artifact\": {\n27: \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/manifest.json\",\n28: \"sha256\": \"4fdf2cbf02f0f3dd53c4ccfd1787a2fb8012d0de76dad63e97c2b5cfbdc6c46c\"\n29: },\n30: \"criterion\": \"ownership-recovered\",\n31: \"status\": \"pass\"\n32: }\n33: ],\n34: \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/manifest.json\",\n35: \"sha256\": \"4fdf2cbf02f0f3dd53c4ccfd1787a2fb8012d0de76dad63e97c2b5cfbdc6c46c\",\n36: \"source\": {\n37: \"engine\": {\n38: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n39: \"path\": \"/home/alex/sots-engine\"\n40: },\n41: \"re\": {\n42: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n43: \"path\": \"/home/alex/sots-re\"\n44: }\n45: },\n46: \"source_binding\": {\n47: \"engine\": {\n48: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n49: \"path\": \"/home/alex/sots-engine\",\n50: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n51: },\n52: \"re\": {\n53: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n54: \"path\": \"/home/alex/sots-re\",\n55: \"sha256\": \"e74ef6cff202ee35a6fdc38d63842b4826a074e34502dfc2981a33ffea912bd4\"\n56: }\n57: }\n58: },\n59: {\n60: \"axis\": \"validation\",\n61: \"binaries\": [\n62: {\n63: \"path\": \"dumps/sots.exe\",\n64: \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n65: }\n66: ],\n67: \"id\": \"research-completion-abi-validation-run-735fcb8f4876c10285b03fad\",\n68: \"inputs\": [\n69: {\n70: \"path\": \"verify/results/saves/turn3-state.sav\",\n71: \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n72: },\n73: {\n74: \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/manifest.json\",\n75: \"sha256\": \"4fdf2cbf02f0f3dd53c4ccfd1787a2fb8012d0de76dad63e97c2b5cfbdc6c46c\"\n76: }\n77: ],\n78: \"integrated\": true,\n79: \"outcomes\": [\n80: {\n81: \"artifact\": {\n82: \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/independent-state.json\",\n83: \"sha256\": \"6463816f322803b2b7b479e1fc116c4ffa33fb2772a3005d492422a00acea433\"\n84: },\n85: \"criterion\": \"independent-cross-check\",\n86: \"status\": \"pass\"\n87: }\n88: ],\n89: \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/independent-state.json\",\n90: \"sha256\": \"6463816f322803b2b7b479e1fc116c4ffa33fb2772a3005d492422a00acea433\",\n91: \"source\": {\n92: \"engine\": {\n93: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n94: \"path\": \"/home/alex/sots-engine\"\n95: },\n96: \"re\": {\n97: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n98: \"path\": \"/home/alex/sots-re\"\n99: }\n100: },\n101: \"source_binding\": {\n102: \"engine\": {\n103: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n104: \"path\": \"/home/alex/sots-engine\",\n105: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n106: },\n107: \"re\": {\n108: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n109: \"path\": \"/home/alex/sots-re\",\n110: \"sha256\": \"e74ef6cff202ee35a6fdc38d63842b4826a074e34502dfc2981a33ffea912bd4\"\n111: }\n112: }\n113: }\n114: ],\n115: \"model\": \"openai/gpt-6-astra\",\n116: \"probe\": \"Cheapest discriminator is read-only complete-window def/use review, performed on hash-checked archived get/create and append text here; no pre-append EBP-0x20 store exists. Before corrected acceptance, authorized analyst freshly hashes binary/tool and repeats manifest argv for those two windows plus nested empty-copy/cleanup, explicitly checks prologue stack offsets and cleanup-before-final-store order; independent verifier reproduces the corrected integrated package. No VM is needed for this interpretation repair. If transient runtime equivalence is later required, separately approve a leased fixture with two deliberately distinct initialized stack sentinels and spare/full capacity, pre/post-store observations and neutral controls; it is not authorized or executed here.\",\n117: \"role\": \"resolver\",\n118: \"schema\": \"sots-decision/1\",\n119: \"surprise\": \"s-c6786945b302de2a0b629960\",\n120: \"timestamp\": \"2026-09-10T04:19:02.935461+00:00\"\n121: }\n\n(End of file - total 121 lines)\n","metadata":{"preview":"{\n \"actor\": \"live-record surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution, session run-f63d1e050a7ee3fac7b44885. OBSERVATION/PROVENANCE: reviewed complete raw get/create and append windows in verify/results/research-live-record-bridge/run-472955e277202c411388c66b; checkpoint d08b4bbf364f3305ee2fef98 rehashed manifest ae16b4b500db5b84bea27c659e254842ab0c67c040ca782c016381384338773b and both stdout artifacts to their recorded hashes. Historical capture manifest binds sots.exe 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd with positive nonempty exit-zero static execution. Current binary/tool were not rehashed or rerun: resolver shell denies that operation. Worktree HEAD/common directories match baselines; dirty content is not inferred from HEAD. No game or hook ran; read-only disassembly introduces no runtime instrument effects. No stale-build or game-mechanism diagnosis is justified.\\nOVERTURNED, exact captured normal miss-path domain: temporary EvTurn is initialized to zero, and append necessarily copies zero (recovered-static.md lines 68-69). Complete entry has no call before append and no store to EBP-0x20: prologue writes SEH at -4/-8/-c, stack reservation does not initialize locals, saved registers/cookie are below -24; miss stores vptr at -24, nested pointers at -1c/-18/-14 and EH state at -4. ECX names receiver+4. Append external-source branch loads source+4 at 0x884d62 and stores destination+4 at 0x884d6c, then nested-copy, then advances last at 0x884d78. Temporary nested cleanup at 0x885422 precedes requested-turn store to last-0x14 at 0x88542d.\\nSURVIVES in those static windows for valid containers and normally returning helpers: ECX receiver/one stack argument/ret4/EAX bucket ABI; full last-match scan; vptr and empty nested-header initialization; scalar EvTurn copy distinct from nested deep-copy; cleanup of temporary nested vector; final new bucket turn equals requested turn and EAX=last-0x18. Existin... (line truncated to 2000 chars)\n \"id\": \"d-b51f3f76803e852ed250846a\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-d2e4078886c66df34ee00b24.json\",\n \"invalidated_evidence\": [\n {\n \"axis\": \"static-recovery\",\n \"binaries\": [\n {\n \"path\": \"dumps/sots.exe\",\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n }\n ],\n \"id\": \"research-completion-abi-static-run-79357a65226f61d6a86c042d\",\n \"inputs\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/report.md\",\n \"sha256\": \"d5a28f01002f1711cf8575ffd817a8f0998b413c6280d656e6cdad5a90a04477\"","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/decisions/d-b51f3f76803e852ed250846a.json","text":"{\n \"actor\": \"live-record surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution, session run-f63d1e050a7ee3fac7b44885. OBSERVATION/PROVENANCE: reviewed complete raw get/create and append windows in verify/results/research-live-record-bridge/run-472955e277202c411388c66b; checkpoint d08b4bbf364f3305ee2fef98 rehashed manifest ae16b4b500db5b84bea27c659e254842ab0c67c040ca782c016381384338773b and both stdout artifacts to their recorded hashes. Historical capture manifest binds sots.exe 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd with positive nonempty exit-zero static execution. Current binary/tool were not rehashed or rerun: resolver shell denies that operation. Worktree HEAD/common directories match baselines; dirty content is not inferred from HEAD. No game or hook ran; read-only disassembly introduces no runtime instrument effects. No stale-build or game-mechanism diagnosis is justified.\\nOVERTURNED, exact captured normal miss-path domain: temporary EvTurn is initialized to zero, and append necessarily copies zero (recovered-static.md lines 68-69). Complete entry has no call before append and no store to EBP-0x20: prologue writes SEH at -4/-8/-c, stack reservation does not initialize locals, saved registers/cookie are below -24; miss stores vptr at -24, nested pointers at -1c/-18/-14 and EH state at -4. ECX names receiver+4. Append external-source branch loads source+4 at 0x884d62 and stores destination+4 at 0x884d6c, then nested-copy, then advances last at 0x884d78. Temporary nested cleanup at 0x885422 precedes requested-turn store to last-0x14 at 0x88542d.\\nSURVIVES in those static windows for valid containers and normally returning helpers: ECX receiver/one stack argument/ret4/EAX bucket ABI; full last-match scan; vptr and empty nested-header initialization; scalar EvTurn copy distinct from nested deep-copy; cleanup of temporary nested vector; final new bucket turn equals requested turn and EAX=last-0x18. Existin... (line truncated to 2000 chars)\n \"id\": \"d-b51f3f76803e852ed250846a\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-d2e4078886c66df34ee00b24.json\",\n \"invalidated_evidence\": [\n {\n \"axis\": \"static-recovery\",\n \"binaries\": [\n {\n \"path\": \"dumps/sots.exe\",\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n }\n ],\n \"id\": \"research-completion-abi-static-run-79357a65226f61d6a86c042d\",\n \"inputs\": [\n {\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/report.md\",\n \"sha256\": \"d5a28f01002f1711cf8575ffd817a8f0998b413c6280d656e6cdad5a90a04477\"\n }\n ],\n \"integrated\": true,\n \"outcomes\": [\n {\n \"artifact\": {\n \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/manifest.json\",\n \"sha256\": \"4fdf2cbf02f0f3dd53c4ccfd1787a2fb8012d0de76dad63e97c2b5cfbdc6c46c\"\n },\n \"criterion\": \"ownership-recovered\",\n \"status\": \"pass\"\n }\n ],\n \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/manifest.json\",\n \"sha256\": \"4fdf2cbf02f0f3dd53c4ccfd1787a2fb8012d0de76dad63e97c2b5cfbdc6c46c\",\n \"source\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"source_binding\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\",\n \"sha256\": \"e74ef6cff202ee35a6fdc38d63842b4826a074e34502dfc2981a33ffea912bd4\"\n }\n }\n },\n {\n \"axis\": \"validation\",\n \"binaries\": [\n {\n \"path\": \"dumps/sots.exe\",\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n }\n ],\n \"id\": \"research-completion-abi-validation-run-735fcb8f4876c10285b03fad\",\n \"inputs\": [\n {\n \"path\": \"verify/results/saves/turn3-state.sav\",\n \"sha256\": \"978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/manifest.json\",\n \"sha256\": \"4fdf2cbf02f0f3dd53c4ccfd1787a2fb8012d0de76dad63e97c2b5cfbdc6c46c\"\n }\n ],\n \"integrated\": true,\n \"outcomes\": [\n {\n \"artifact\": {\n \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/independent-state.json\",\n \"sha256\": \"6463816f322803b2b7b479e1fc116c4ffa33fb2772a3005d492422a00acea433\"\n },\n \"criterion\": \"independent-cross-check\",\n \"status\": \"pass\"\n }\n ],\n \"path\": \"verify/results/research-completion-abi-independent/integration-lead-20260910/independent-state.json\",\n \"sha256\": \"6463816f322803b2b7b479e1fc116c4ffa33fb2772a3005d492422a00acea433\",\n \"source\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"source_binding\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\",\n \"sha256\": \"e74ef6cff202ee35a6fdc38d63842b4826a074e34502dfc2981a33ffea912bd4\"\n }\n }\n }\n ],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest discriminator is read-only complete-window def/use review, performed on hash-checked archived get/create and append text here; no pre-append EBP-0x20 store exists. Before corrected acceptance, authorized analyst freshly hashes binary/tool and repeats manifest argv for those two windows plus nested empty-copy/cleanup, explicitly checks prologue stack offsets and cleanup-before-final-store order; independent verifier reproduces the corrected integrated package. No VM is needed for this interpretation repair. If transient runtime equivalence is later required, separately approve a leased fixture with two deliberately distinct initialized stack sentinels and spare/full capacity, pre/post-store observations and neutral controls; it is not authorized or executed here.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-c6786945b302de2a0b629960\",\n \"timestamp\": \"2026-09-10T04:19:02.935461+00:00\"\n}","lineStart":1,"lineEnd":121,"totalLines":121,"truncated":false}},"title":"campaign/runtime/decisions/d-b51f3f76803e852ed250846a.json","time":{"start":1789017878711,"end":1789017878726}},"metadata":{"openai":{"itemId":"fc_0362d91993ee76eb016aa23f1652b087d18e19906f6d23e260"}},"id":"prt_089c6705b001SObSCpRGFKSmVC","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c637b9001OR4kyYxHimBDFJ"}} +{"type":"tool_use","timestamp":1789017879028,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_LarZeovIozETKiTUXrDhTuIW","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/manifest.json"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/manifest.json\nfile\n\n1: {\n2: \"schema\": \"sots-abi-static-capture/1\",\n3: \"session\": \"run-16f8e9b6376b278c4870be09\",\n4: \"actor\": \"research-abi-analyst\",\n5: \"role\": \"analyst\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"timestamp\": \"2026-09-10T04:25:48.076637+00:00\",\n8: \"scope\": \"Fresh read-only correction capture required by d-b51f3f76803e852ed250846a; no game execution or live allocator claim.\",\n9: \"source_binding\": {\n10: \"engine\": {\n11: \"path\": \"/tmp/opencode/sots-final-research-engine\",\n12: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n13: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n14: },\n15: \"re\": {\n16: \"path\": \"/tmp/opencode/sots-final-research-re\",\n17: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n18: \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n19: }\n20: },\n21: \"input\": {\n22: \"path\": \"dumps/sots.exe\",\n23: \"bytes\": 7898624,\n24: \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n25: },\n26: \"tool\": {\n27: \"path\": \"/usr/bin/objdump\",\n28: \"bytes\": 373888,\n29: \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n30: \"version\": \"GNU objdump (GNU Binutils for Ubuntu) 2.38\"\n31: },\n32: \"windows\": [\n33: {\n34: \"name\": \"turn-get-create\",\n35: \"argv\": [\n36: \"/usr/bin/objdump\",\n37: \"-D\",\n38: \"-Mintel\",\n39: \"--start-address=0x00885380\",\n40: \"--stop-address=0x0088544a\",\n41: \"/home/alex/sots-re/dumps/sots.exe\"\n42: ],\n43: \"cwd\": \"/home/alex/sots-re\",\n44: \"start\": \"0x00885380\",\n45: \"stop\": \"0x0088544a\",\n46: \"returncode\": 0,\n47: \"stdout\": {\n48: \"path\": \"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-get-create.stdout.txt\",\n49: \"bytes\": 3974,\n50: \"sha256\": \"f6e72ba9b08fdf48d70f39379b2fb30a5adbe796072485f70c5795c10ab45ca3\"\n51: },\n52: \"stderr\": {\n53: \"path\": \"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-get-create.stderr.txt\",\n54: \"bytes\": 0,\n55: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n56: }\n57: },\n58: {\n59: \"name\": \"turn-append\",\n60: \"argv\": [\n61: \"/usr/bin/objdump\",\n62: \"-D\",\n63: \"-Mintel\",\n64: \"--start-address=0x00884cb0\",\n65: \"--stop-address=0x00884d8f\",\n66: \"/home/alex/sots-re/dumps/sots.exe\"\n67: ],\n68: \"cwd\": \"/home/alex/sots-re\",\n69: \"start\": \"0x00884cb0\",\n70: \"stop\": \"0x00884d8f\",\n71: \"returncode\": 0,\n72: \"stdout\": {\n73: \"path\": \"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-append.stdout.txt\",\n74: \"bytes\": 4179,\n75: \"sha256\": \"57d6655feed0fc137bb2b7eee4bfcb09536b5a715603c917ee142770f1d52a15\"\n76: },\n77: \"stderr\": {\n78: \"path\": \"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-append.stderr.txt\",\n79: \"bytes\": 0,\n80: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n81: }\n82: },\n83: {\n84: \"name\": \"nested-copy\",\n85: \"argv\": [\n86: \"/usr/bin/objdump\",\n87: \"-D\",\n88: \"-Mintel\",\n89: \"--start-address=0x00779850\",\n90: \"--stop-address=0x00779a20\",\n91: \"/home/alex/sots-re/dumps/sots.exe\"\n92: ],\n93: \"cwd\": \"/home/alex/sots-re\",\n94: \"start\": \"0x00779850\",\n95: \"stop\": \"0x00779a20\",\n96: \"returncode\": 0,\n97: \"stdout\": {\n98: \"path\": \"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-copy.stdout.txt\",\n99: \"bytes\": 8469,\n100: \"sha256\": \"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\"\n101: },\n102: \"stderr\": {\n103: \"path\": \"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-copy.stderr.txt\",\n104: \"bytes\": 0,\n105: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n106: }\n107: },\n108: {\n109: \"name\": \"nested-dtor\",\n110: \"argv\": [\n111: \"/usr/bin/objdump\",\n112: \"-D\",\n113: \"-Mintel\",\n114: \"--start-address=0x00629580\",\n115: \"--stop-address=0x006295ca\",\n116: \"/home/alex/sots-re/dumps/sots.exe\"\n117: ],\n118: \"cwd\": \"/home/alex/sots-re\",\n119: \"start\": \"0x00629580\",\n120: \"stop\": \"0x006295ca\",\n121: \"returncode\": 0,\n122: \"stdout\": {\n123: \"path\": \"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-dtor.stdout.txt\",\n124: \"bytes\": 1727,\n125: \"sha256\": \"3c38887e60d009ab904772b13be93ac1eedd9bee85024e37110160a625db3a83\"\n126: },\n127: \"stderr\": {\n128: \"path\": \"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-dtor.stderr.txt\",\n129: \"bytes\": 0,\n130: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n131: }\n132: }\n133: ]\n134: }\n\n(End of file - total 134 lines)\n","metadata":{"preview":"{\n \"schema\": \"sots-abi-static-capture/1\",\n \"session\": \"run-16f8e9b6376b278c4870be09\",\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": \"2026-09-10T04:25:48.076637+00:00\",\n \"scope\": \"Fresh read-only correction capture required by d-b51f3f76803e852ed250846a; no game execution or live allocator claim.\",\n \"source_binding\": {\n \"engine\": {\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n },","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/manifest.json","text":"{\n \"schema\": \"sots-abi-static-capture/1\",\n \"session\": \"run-16f8e9b6376b278c4870be09\",\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": \"2026-09-10T04:25:48.076637+00:00\",\n \"scope\": \"Fresh read-only correction capture required by d-b51f3f76803e852ed250846a; no game execution or live allocator claim.\",\n \"source_binding\": {\n \"engine\": {\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n },\n \"input\": {\n \"path\": \"dumps/sots.exe\",\n \"bytes\": 7898624,\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n },\n \"tool\": {\n \"path\": \"/usr/bin/objdump\",\n \"bytes\": 373888,\n \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n \"version\": \"GNU objdump (GNU Binutils for Ubuntu) 2.38\"\n },\n \"windows\": [\n {\n \"name\": \"turn-get-create\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00885380\",\n \"--stop-address=0x0088544a\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"start\": \"0x00885380\",\n \"stop\": \"0x0088544a\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-get-create.stdout.txt\",\n \"bytes\": 3974,\n \"sha256\": \"f6e72ba9b08fdf48d70f39379b2fb30a5adbe796072485f70c5795c10ab45ca3\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-get-create.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"turn-append\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00884cb0\",\n \"--stop-address=0x00884d8f\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"start\": \"0x00884cb0\",\n \"stop\": \"0x00884d8f\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-append.stdout.txt\",\n \"bytes\": 4179,\n \"sha256\": \"57d6655feed0fc137bb2b7eee4bfcb09536b5a715603c917ee142770f1d52a15\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-append.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a20\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"start\": \"0x00779850\",\n \"stop\": \"0x00779a20\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-copy.stdout.txt\",\n \"bytes\": 8469,\n \"sha256\": \"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-copy.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-dtor\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00629580\",\n \"--stop-address=0x006295ca\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"start\": \"0x00629580\",\n \"stop\": \"0x006295ca\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-dtor.stdout.txt\",\n \"bytes\": 1727,\n \"sha256\": \"3c38887e60d009ab904772b13be93ac1eedd9bee85024e37110160a625db3a83\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-dtor.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n }\n ]\n}","lineStart":1,"lineEnd":134,"totalLines":134,"truncated":false}},"title":"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/manifest.json","time":{"start":1789017879016,"end":1789017879024}},"metadata":{"openai":{"itemId":"fc_0362d91993ee76eb016aa23f1652b887d19cf0b874cc1b585c"}},"id":"prt_089c670ca001hJ8Et1q3SEfUnA","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c637b9001OR4kyYxHimBDFJ"}} +{"type":"tool_use","timestamp":1789017879094,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_lajf8yTNMZexjJ3REndeDXA8","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/manifest.json"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/manifest.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-analyst\",\n3: \"comparison\": {\n4: \"bytes\": 3382,\n5: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/comparison.json\",\n6: \"sha256\": \"1b1ba9b7f274b0277ee079c85c17c454f03ccb555160aa2da61a78774a24bc38\"\n7: },\n8: \"input\": {\n9: \"bytes\": 7898624,\n10: \"md5\": \"9969481c39f4b33a8a21c48b62abee4c\",\n11: \"path\": \"dumps/sots.exe\",\n12: \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n13: },\n14: \"model\": \"openai/gpt-5.6-sol\",\n15: \"ownership_boundary_audit_runs\": [\n16: {\n17: \"argv\": [\n18: \"/usr/bin/objdump\",\n19: \"-D\",\n20: \"-Mintel\",\n21: \"--start-address=0x008562a0\",\n22: \"--stop-address=0x0085630d\",\n23: \"dumps/sots.exe\"\n24: ],\n25: \"cwd\": \"/home/alex/sots-re\",\n26: \"name\": \"observed-ctor-audit\",\n27: \"returncode\": 0,\n28: \"start\": \"0x008562a0\",\n29: \"stderr\": {\n30: \"bytes\": 0,\n31: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-ctor-audit.stderr.txt\",\n32: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n33: },\n34: \"stdout\": {\n35: \"bytes\": 2086,\n36: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-ctor-audit.stdout.txt\",\n37: \"sha256\": \"402267f37b84f516b329764296600a19921c9cbafabd696a3fb00ff1891601fd\"\n38: },\n39: \"stop\": \"0x0085630d\"\n40: },\n41: {\n42: \"argv\": [\n43: \"/usr/bin/objdump\",\n44: \"-D\",\n45: \"-Mintel\",\n46: \"--start-address=0x007b7320\",\n47: \"--stop-address=0x007b739f\",\n48: \"dumps/sots.exe\"\n49: ],\n50: \"cwd\": \"/home/alex/sots-re\",\n51: \"name\": \"observed-push-audit\",\n52: \"returncode\": 0,\n53: \"start\": \"0x007b7320\",\n54: \"stderr\": {\n55: \"bytes\": 0,\n56: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-audit.stderr.txt\",\n57: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n58: },\n59: \"stdout\": {\n60: \"bytes\": 2790,\n61: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-audit.stdout.txt\",\n62: \"sha256\": \"f2102e411e401151df5c8422d47999ebae42d8f562a31a12e654fe1323db50dc\"\n63: },\n64: \"stop\": \"0x007b739f\"\n65: },\n66: {\n67: \"argv\": [\n68: \"/usr/bin/objdump\",\n69: \"-D\",\n70: \"-Mintel\",\n71: \"--start-address=0x007b34e0\",\n72: \"--stop-address=0x007b35ef\",\n73: \"dumps/sots.exe\"\n74: ],\n75: \"cwd\": \"/home/alex/sots-re\",\n76: \"name\": \"observed-realloc-audit\",\n77: \"returncode\": 0,\n78: \"start\": \"0x007b34e0\",\n79: \"stderr\": {\n80: \"bytes\": 0,\n81: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-audit.stderr.txt\",\n82: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n83: },\n84: \"stdout\": {\n85: \"bytes\": 5161,\n86: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-audit.stdout.txt\",\n87: \"sha256\": \"b5dc8e0f794baeacf3ea4c1371ed5541c5e6732e7e813f0c717da36c6776ef18\"\n88: },\n89: \"stop\": \"0x007b35ef\"\n90: },\n91: {\n92: \"argv\": [\n93: \"/usr/bin/objdump\",\n94: \"-D\",\n95: \"-Mintel\",\n96: \"--start-address=0x0079a150\",\n97: \"--stop-address=0x0079a1d9\",\n98: \"dumps/sots.exe\"\n99: ],\n100: \"cwd\": \"/home/alex/sots-re\",\n101: \"name\": \"observed-copy-audit\",\n102: \"returncode\": 0,\n103: \"start\": \"0x0079a150\",\n104: \"stderr\": {\n105: \"bytes\": 0,\n106: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-copy-audit.stderr.txt\",\n107: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n108: },\n109: \"stdout\": {\n110: \"bytes\": 2633,\n111: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-copy-audit.stdout.txt\",\n112: \"sha256\": \"4e1f2f4360c81416513fb21f0bc6eb6295548a409a2f09c1bae1763e4e86a069\"\n113: },\n114: \"stop\": \"0x0079a1d9\"\n115: },\n116: {\n117: \"argv\": [\n118: \"/usr/bin/objdump\",\n119: \"-D\",\n120: \"-Mintel\",\n121: \"--start-address=0x0061ae90\",\n122: \"--stop-address=0x0061aefc\",\n123: \"dumps/sots.exe\"\n124: ],\n125: \"cwd\": \"/home/alex/sots-re\",\n126: \"name\": \"player-dtor-audit\",\n127: \"returncode\": 0,\n128: \"start\": \"0x0061ae90\",\n129: \"stderr\": {\n130: \"bytes\": 0,\n131: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-dtor-audit.stderr.txt\",\n132: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n133: },\n134: \"stdout\": {\n135: \"bytes\": 1985,\n136: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-dtor-audit.stdout.txt\",\n137: \"sha256\": \"db8d7b77b942234aec85ed9773b7fd8f363655c7e5aed5fc2cbecd0f5d1a133e\"\n138: },\n139: \"stop\": \"0x0061aefc\"\n140: },\n141: {\n142: \"argv\": [\n143: \"/usr/bin/objdump\",\n144: \"-D\",\n145: \"-Mintel\",\n146: \"--start-address=0x004249a0\",\n147: \"--stop-address=0x00424ada\",\n148: \"dumps/sots.exe\"\n149: ],\n150: \"cwd\": \"/home/alex/sots-re\",\n151: \"name\": \"string-alloc-audit\",\n152: \"returncode\": 0,\n153: \"start\": \"0x004249a0\",\n154: \"stderr\": {\n155: \"bytes\": 0,\n156: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-audit.stderr.txt\",\n157: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n158: },\n159: \"stdout\": {\n160: \"bytes\": 6019,\n161: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-audit.stdout.txt\",\n162: \"sha256\": \"5d87641526f283d3f9029d770d82bf3e2e1262abb5219d57b111b54dda5a522d\"\n163: },\n164: \"stop\": \"0x00424ada\"\n165: },\n166: {\n167: \"argv\": [\n168: \"/usr/bin/objdump\",\n169: \"-D\",\n170: \"-Mintel\",\n171: \"--start-address=0x00924faa\",\n172: \"--stop-address=0x00924fbc\",\n173: \"dumps/sots.exe\"\n174: ],\n175: \"cwd\": \"/home/alex/sots-re\",\n176: \"name\": \"import-thunks-audit\",\n177: \"returncode\": 0,\n178: \"start\": \"0x00924faa\",\n179: \"stderr\": {\n180: \"bytes\": 0,\n181: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/import-thunks-audit.stderr.txt\",\n182: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n183: },\n184: \"stdout\": {\n185: \"bytes\": 285,\n186: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/import-thunks-audit.stdout.txt\",\n187: \"sha256\": \"3b83cf62a3550c01c37db9329ef1d35f0fb5377fa77662b9e0ed83333f6f46ea\"\n188: },\n189: \"stop\": \"0x00924fbc\"\n190: }\n191: ],\n192: \"ownership_boundary_repairs\": [\n193: {\n194: \"argv\": [\n195: \"/usr/bin/objdump\",\n196: \"-D\",\n197: \"-Mintel\",\n198: \"--start-address=0x007b7320\",\n199: \"--stop-address=0x007b73a1\",\n200: \"dumps/sots.exe\"\n201: ],\n202: \"cwd\": \"/home/alex/sots-re\",\n203: \"name\": \"observed-push-audit-wide\",\n204: \"returncode\": 0,\n205: \"stderr\": {\n206: \"bytes\": 0,\n207: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-audit-wide.stderr.txt\",\n208: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n209: },\n210: \"stdout\": {\n211: \"bytes\": 2794,\n212: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-audit-wide.stdout.txt\",\n213: \"sha256\": \"510efc3587feec6b34d52effccfd9afac6cec4ab3358de54ba7ad9aecfa73c67\"\n214: }\n215: },\n216: {\n217: \"argv\": [\n218: \"/usr/bin/objdump\",\n219: \"-D\",\n220: \"-Mintel\",\n221: \"--start-address=0x007b34e0\",\n222: \"--stop-address=0x007b35f1\",\n223: \"dumps/sots.exe\"\n224: ],\n225: \"cwd\": \"/home/alex/sots-re\",\n226: \"name\": \"observed-realloc-audit-wide\",\n227: \"returncode\": 0,\n228: \"stderr\": {\n229: \"bytes\": 0,\n230: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-audit-wide.stderr.txt\",\n231: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n232: },\n233: \"stdout\": {\n234: \"bytes\": 5165,\n235: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-audit-wide.stdout.txt\",\n236: \"sha256\": \"82d8390d9a4a9ead4d2de8f60666121099adaf9ae94cca0b1f832582a67f8bb9\"\n237: }\n238: },\n239: {\n240: \"argv\": [\n241: \"/usr/bin/objdump\",\n242: \"-D\",\n243: \"-Mintel\",\n244: \"--start-address=0x004249a0\",\n245: \"--stop-address=0x00424adc\",\n246: \"dumps/sots.exe\"\n247: ],\n248: \"cwd\": \"/home/alex/sots-re\",\n249: \"name\": \"string-alloc-audit-wide\",\n250: \"returncode\": 0,\n251: \"stderr\": {\n252: \"bytes\": 0,\n253: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-audit-wide.stderr.txt\",\n254: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n255: },\n256: \"stdout\": {\n257: \"bytes\": 6023,\n258: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-audit-wide.stdout.txt\",\n259: \"sha256\": \"04b5e6356f779de7584af31f69abd689f33f97c5eae9c3707dcae7290284a041\"\n260: }\n261: },\n262: {\n263: \"argv\": [\n264: \"/usr/bin/objdump\",\n265: \"-s\",\n266: \"-j\",\n267: \".text\",\n268: \"--start-address=0x007b739e\",\n269: \"--stop-address=0x007b73a1\",\n270: \"dumps/sots.exe\"\n271: ],\n272: \"cwd\": \"/home/alex/sots-re\",\n273: \"name\": \"observed-push-terminal-bytes\",\n274: \"returncode\": 0,\n275: \"stderr\": {\n276: \"bytes\": 0,\n277: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-terminal-bytes.stderr.txt\",\n278: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n279: },\n280: \"stdout\": {\n281: \"bytes\": 132,\n282: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-terminal-bytes.stdout.txt\",\n283: \"sha256\": \"507b86fd55ece10fabc076ebaa2a5ea5f13c422b95e9dd1274662243dd727973\"\n284: }\n285: },\n286: {\n287: \"argv\": [\n288: \"/usr/bin/objdump\",\n289: \"-s\",\n290: \"-j\",\n291: \".text\",\n292: \"--start-address=0x007b35ee\",\n293: \"--stop-address=0x007b35f1\",\n294: \"dumps/sots.exe\"\n295: ],\n296: \"cwd\": \"/home/alex/sots-re\",\n297: \"name\": \"observed-realloc-terminal-bytes\",\n298: \"returncode\": 0,\n299: \"stderr\": {\n300: \"bytes\": 0,\n301: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-terminal-bytes.stderr.txt\",\n302: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n303: },\n304: \"stdout\": {\n305: \"bytes\": 132,\n306: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-terminal-bytes.stdout.txt\",\n307: \"sha256\": \"71ed773360e582529f6be04ac22d253aaa245589697c7275e64e86ce1fd30534\"\n308: }\n309: },\n310: {\n311: \"argv\": [\n312: \"/usr/bin/objdump\",\n313: \"-s\",\n314: \"-j\",\n315: \".text\",\n316: \"--start-address=0x00424ad9\",\n317: \"--stop-address=0x00424adc\",\n318: \"dumps/sots.exe\"\n319: ],\n320: \"cwd\": \"/home/alex/sots-re\",\n321: \"name\": \"string-alloc-terminal-bytes\",\n322: \"returncode\": 0,\n323: \"stderr\": {\n324: \"bytes\": 0,\n325: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-terminal-bytes.stderr.txt\",\n326: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n327: },\n328: \"stdout\": {\n329: \"bytes\": 132,\n330: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-terminal-bytes.stdout.txt\",\n331: \"sha256\": \"72388be2fbb122e3a589a34ef7daabaeb41b1e6840ea51eb6d54dcb4803b0792\"\n332: }\n333: }\n334: ],\n335: \"raw_byte_runs\": [\n336: {\n337: \"argv\": [\n338: \"/usr/bin/objdump\",\n339: \"-s\",\n340: \"-j\",\n341: \".text\",\n342: \"--start-address=0x0057e5e3\",\n343: \"--stop-address=0x0057e5e6\",\n344: \"dumps/sots.exe\"\n345: ],\n346: \"cwd\": \"/home/alex/sots-re\",\n347: \"name\": \"observed-alloc-terminal-bytes\",\n348: \"returncode\": 0,\n349: \"stderr\": {\n350: \"bytes\": 0,\n351: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-terminal-bytes.stderr.txt\",\n352: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n353: },\n354: \"stdout\": {\n355: \"bytes\": 132,\n356: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-terminal-bytes.stdout.txt\",\n357: \"sha256\": \"63b4ae60599f869a31e78126c8bcaeb14ce2355f6a8d66d898b7d97a50c52ad2\"\n358: }\n359: },\n360: {\n361: \"argv\": [\n362: \"/usr/bin/objdump\",\n363: \"-s\",\n364: \"-j\",\n365: \".text\",\n366: \"--start-address=0x0086c62d\",\n367: \"--stop-address=0x0086c630\",\n368: \"dumps/sots.exe\"\n369: ],\n370: \"cwd\": \"/home/alex/sots-re\",\n371: \"name\": \"player-append-terminal-bytes\",\n372: \"returncode\": 0,\n373: \"stderr\": {\n374: \"bytes\": 0,\n375: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-terminal-bytes.stderr.txt\",\n376: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n377: },\n378: \"stdout\": {\n379: \"bytes\": 132,\n380: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-terminal-bytes.stdout.txt\",\n381: \"sha256\": \"e18616c49cfedffc9e8e18b18fcd9616891093551e6e923483617161c1b54cc6\"\n382: }\n383: },\n384: {\n385: \"argv\": [\n386: \"/usr/bin/objdump\",\n387: \"-s\",\n388: \"-j\",\n389: \".text\",\n390: \"--start-address=0x007694bf\",\n391: \"--stop-address=0x007694c2\",\n392: \"dumps/sots.exe\"\n393: ],\n394: \"cwd\": \"/home/alex/sots-re\",\n395: \"name\": \"player-copy-terminal-bytes\",\n396: \"returncode\": 0,\n397: \"stderr\": {\n398: \"bytes\": 0,\n399: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-terminal-bytes.stderr.txt\",\n400: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n401: },\n402: \"stdout\": {\n403: \"bytes\": 132,\n404: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-terminal-bytes.stdout.txt\",\n405: \"sha256\": \"326d8f353cf3d8aa5e3af36ceffcba4866390b897446b2b2754a37539acfabb5\"\n406: }\n407: }\n408: ],\n409: \"role\": \"analyst\",\n410: \"runs\": [\n411: {\n412: \"argv\": [\n413: \"/usr/bin/objdump\",\n414: \"-D\",\n415: \"-Mintel\",\n416: \"--start-address=0x0057e590\",\n417: \"--stop-address=0x0057e5e4\",\n418: \"dumps/sots.exe\"\n419: ],\n420: \"cwd\": \"/home/alex/sots-re\",\n421: \"name\": \"observed-alloc-narrow\",\n422: \"returncode\": 0,\n423: \"stderr\": {\n424: \"bytes\": 0,\n425: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-narrow.stderr.txt\",\n426: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n427: },\n428: \"stdout\": {\n429: \"bytes\": 1492,\n430: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-narrow.stdout.txt\",\n431: \"sha256\": \"d3e98f7b6db58de24cbb1f1d4bb0c18eeb1342c7fb4c3317dc4a62338bd875d1\"\n432: }\n433: },\n434: {\n435: \"argv\": [\n436: \"/usr/bin/objdump\",\n437: \"-D\",\n438: \"-Mintel\",\n439: \"--start-address=0x0057e590\",\n440: \"--stop-address=0x0057e5e6\",\n441: \"dumps/sots.exe\"\n442: ],\n443: \"cwd\": \"/home/alex/sots-re\",\n444: \"name\": \"observed-alloc-wide\",\n445: \"returncode\": 0,\n446: \"stderr\": {\n447: \"bytes\": 0,\n448: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-wide.stderr.txt\",\n449: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n450: },\n451: \"stdout\": {\n452: \"bytes\": 1496,\n453: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-wide.stdout.txt\",\n454: \"sha256\": \"59a8f45ad330666a2209f23ce320c8dcbeea7571b40512d1ad5672e68d55e406\"\n455: }\n456: },\n457: {\n458: \"argv\": [\n459: \"/usr/bin/objdump\",\n460: \"-D\",\n461: \"-Mintel\",\n462: \"--start-address=0x0086c580\",\n463: \"--stop-address=0x0086c62e\",\n464: \"dumps/sots.exe\"\n465: ],\n466: \"cwd\": \"/home/alex/sots-re\",\n467: \"name\": \"player-append-narrow\",\n468: \"returncode\": 0,\n469: \"stderr\": {\n470: \"bytes\": 0,\n471: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-narrow.stderr.txt\",\n472: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n473: },\n474: \"stdout\": {\n475: \"bytes\": 3356,\n476: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-narrow.stdout.txt\",\n477: \"sha256\": \"dcdb9b3fa370966de82ebdeb896133d95988b11e8159686d85add65c6932affa\"\n478: }\n479: },\n480: {\n481: \"argv\": [\n482: \"/usr/bin/objdump\",\n483: \"-D\",\n484: \"-Mintel\",\n485: \"--start-address=0x0086c580\",\n486: \"--stop-address=0x0086c630\",\n487: \"dumps/sots.exe\"\n488: ],\n489: \"cwd\": \"/home/alex/sots-re\",\n490: \"name\": \"player-append-wide\",\n491: \"returncode\": 0,\n492: \"stderr\": {\n493: \"bytes\": 0,\n494: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-wide.stderr.txt\",\n495: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n496: },\n497: \"stdout\": {\n498: \"bytes\": 3360,\n499: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-wide.stdout.txt\",\n500: \"sha256\": \"02164c44a5398853d2ea8efba8dbcb65166fa50229b95facf6e6abaf197cc754\"\n501: }\n502: },\n503: {\n504: \"argv\": [\n505: \"/usr/bin/objdump\",\n506: \"-D\",\n507: \"-Mintel\",\n508: \"--start-address=0x007693f0\",\n509: \"--stop-address=0x007694c0\",\n510: \"dumps/sots.exe\"\n511: ],\n512: \"cwd\": \"/home/alex/sots-re\",\n513: \"name\": \"player-copy-narrow\",\n514: \"returncode\": 0,\n515: \"stderr\": {\n516: \"bytes\": 0,\n517: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-narrow.stderr.txt\",\n518: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n519: },\n520: \"stdout\": {\n521: \"bytes\": 4069,\n522: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-narrow.stdout.txt\",\n523: \"sha256\": \"a73bcdbf5fe92be984ecf2a1747dd9858592edfdb722687392de6abc576b0a93\"\n524: }\n525: },\n526: {\n527: \"argv\": [\n528: \"/usr/bin/objdump\",\n529: \"-D\",\n530: \"-Mintel\",\n531: \"--start-address=0x007693f0\",\n532: \"--stop-address=0x007694c2\",\n533: \"dumps/sots.exe\"\n534: ],\n535: \"cwd\": \"/home/alex/sots-re\",\n536: \"name\": \"player-copy-wide\",\n537: \"returncode\": 0,\n538: \"stderr\": {\n539: \"bytes\": 0,\n540: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-wide.stderr.txt\",\n541: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n542: },\n543: \"stdout\": {\n544: \"bytes\": 4073,\n545: \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-wide.stdout.txt\",\n546: \"sha256\": \"39de9e66a5944858572bf4bf2c3b3cc20ea42686e6657874c159fcf113ecf708\"\n547: }\n548: }\n549: ],\n550: \"schema\": \"sots-abi-static-capture/1\",\n551: \"session\": \"run-79357a65226f61d6a86c042d\",\n552: \"source_binding\": {\n553: \"engine\": {\n554: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n555: \"path\": \"/tmp/opencode/sots-final-research-engine\",\n556: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n557: },\n558: \"re\": {\n559: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n560: \"path\": \"/tmp/opencode/sots-final-research-re\",\n561: \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n562: }\n563: },\n564: \"timestamp\": \"2026-09-10T00:56:09.071212+00:00\",\n565: \"tool\": {\n566: \"path\": \"/usr/bin/objdump\",\n567: \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n568: \"version\": \"GNU objdump (GNU Binutils for Ubuntu) 2.38\"\n569: }\n570: }\n\n(End of file - total 570 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-analyst\",\n \"comparison\": {\n \"bytes\": 3382,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/comparison.json\",\n \"sha256\": \"1b1ba9b7f274b0277ee079c85c17c454f03ccb555160aa2da61a78774a24bc38\"\n },\n \"input\": {\n \"bytes\": 7898624,\n \"md5\": \"9969481c39f4b33a8a21c48b62abee4c\",\n \"path\": \"dumps/sots.exe\",\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n },\n \"model\": \"openai/gpt-5.6-sol\",\n \"ownership_boundary_audit_runs\": [\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/manifest.json","text":"{\n \"actor\": \"research-abi-analyst\",\n \"comparison\": {\n \"bytes\": 3382,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/comparison.json\",\n \"sha256\": \"1b1ba9b7f274b0277ee079c85c17c454f03ccb555160aa2da61a78774a24bc38\"\n },\n \"input\": {\n \"bytes\": 7898624,\n \"md5\": \"9969481c39f4b33a8a21c48b62abee4c\",\n \"path\": \"dumps/sots.exe\",\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n },\n \"model\": \"openai/gpt-5.6-sol\",\n \"ownership_boundary_audit_runs\": [\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x008562a0\",\n \"--stop-address=0x0085630d\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"observed-ctor-audit\",\n \"returncode\": 0,\n \"start\": \"0x008562a0\",\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-ctor-audit.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 2086,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-ctor-audit.stdout.txt\",\n \"sha256\": \"402267f37b84f516b329764296600a19921c9cbafabd696a3fb00ff1891601fd\"\n },\n \"stop\": \"0x0085630d\"\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x007b7320\",\n \"--stop-address=0x007b739f\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"observed-push-audit\",\n \"returncode\": 0,\n \"start\": \"0x007b7320\",\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-audit.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 2790,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-audit.stdout.txt\",\n \"sha256\": \"f2102e411e401151df5c8422d47999ebae42d8f562a31a12e654fe1323db50dc\"\n },\n \"stop\": \"0x007b739f\"\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x007b34e0\",\n \"--stop-address=0x007b35ef\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"observed-realloc-audit\",\n \"returncode\": 0,\n \"start\": \"0x007b34e0\",\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-audit.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 5161,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-audit.stdout.txt\",\n \"sha256\": \"b5dc8e0f794baeacf3ea4c1371ed5541c5e6732e7e813f0c717da36c6776ef18\"\n },\n \"stop\": \"0x007b35ef\"\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x0079a150\",\n \"--stop-address=0x0079a1d9\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"observed-copy-audit\",\n \"returncode\": 0,\n \"start\": \"0x0079a150\",\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-copy-audit.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 2633,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-copy-audit.stdout.txt\",\n \"sha256\": \"4e1f2f4360c81416513fb21f0bc6eb6295548a409a2f09c1bae1763e4e86a069\"\n },\n \"stop\": \"0x0079a1d9\"\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x0061ae90\",\n \"--stop-address=0x0061aefc\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"player-dtor-audit\",\n \"returncode\": 0,\n \"start\": \"0x0061ae90\",\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-dtor-audit.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 1985,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-dtor-audit.stdout.txt\",\n \"sha256\": \"db8d7b77b942234aec85ed9773b7fd8f363655c7e5aed5fc2cbecd0f5d1a133e\"\n },\n \"stop\": \"0x0061aefc\"\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x004249a0\",\n \"--stop-address=0x00424ada\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"string-alloc-audit\",\n \"returncode\": 0,\n \"start\": \"0x004249a0\",\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-audit.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 6019,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-audit.stdout.txt\",\n \"sha256\": \"5d87641526f283d3f9029d770d82bf3e2e1262abb5219d57b111b54dda5a522d\"\n },\n \"stop\": \"0x00424ada\"\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00924faa\",\n \"--stop-address=0x00924fbc\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"import-thunks-audit\",\n \"returncode\": 0,\n \"start\": \"0x00924faa\",\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/import-thunks-audit.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 285,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/import-thunks-audit.stdout.txt\",\n \"sha256\": \"3b83cf62a3550c01c37db9329ef1d35f0fb5377fa77662b9e0ed83333f6f46ea\"\n },\n \"stop\": \"0x00924fbc\"\n }\n ],\n \"ownership_boundary_repairs\": [\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x007b7320\",\n \"--stop-address=0x007b73a1\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"observed-push-audit-wide\",\n \"returncode\": 0,\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-audit-wide.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 2794,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-audit-wide.stdout.txt\",\n \"sha256\": \"510efc3587feec6b34d52effccfd9afac6cec4ab3358de54ba7ad9aecfa73c67\"\n }\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x007b34e0\",\n \"--stop-address=0x007b35f1\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"observed-realloc-audit-wide\",\n \"returncode\": 0,\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-audit-wide.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 5165,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-audit-wide.stdout.txt\",\n \"sha256\": \"82d8390d9a4a9ead4d2de8f60666121099adaf9ae94cca0b1f832582a67f8bb9\"\n }\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x004249a0\",\n \"--stop-address=0x00424adc\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"string-alloc-audit-wide\",\n \"returncode\": 0,\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-audit-wide.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 6023,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-audit-wide.stdout.txt\",\n \"sha256\": \"04b5e6356f779de7584af31f69abd689f33f97c5eae9c3707dcae7290284a041\"\n }\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-s\",\n \"-j\",\n \".text\",\n \"--start-address=0x007b739e\",\n \"--stop-address=0x007b73a1\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"observed-push-terminal-bytes\",\n \"returncode\": 0,\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-terminal-bytes.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 132,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-push-terminal-bytes.stdout.txt\",\n \"sha256\": \"507b86fd55ece10fabc076ebaa2a5ea5f13c422b95e9dd1274662243dd727973\"\n }\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-s\",\n \"-j\",\n \".text\",\n \"--start-address=0x007b35ee\",\n \"--stop-address=0x007b35f1\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"observed-realloc-terminal-bytes\",\n \"returncode\": 0,\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-terminal-bytes.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 132,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-realloc-terminal-bytes.stdout.txt\",\n \"sha256\": \"71ed773360e582529f6be04ac22d253aaa245589697c7275e64e86ce1fd30534\"\n }\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-s\",\n \"-j\",\n \".text\",\n \"--start-address=0x00424ad9\",\n \"--stop-address=0x00424adc\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"string-alloc-terminal-bytes\",\n \"returncode\": 0,\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-terminal-bytes.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 132,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/string-alloc-terminal-bytes.stdout.txt\",\n \"sha256\": \"72388be2fbb122e3a589a34ef7daabaeb41b1e6840ea51eb6d54dcb4803b0792\"\n }\n }\n ],\n \"raw_byte_runs\": [\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-s\",\n \"-j\",\n \".text\",\n \"--start-address=0x0057e5e3\",\n \"--stop-address=0x0057e5e6\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"observed-alloc-terminal-bytes\",\n \"returncode\": 0,\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-terminal-bytes.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 132,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-terminal-bytes.stdout.txt\",\n \"sha256\": \"63b4ae60599f869a31e78126c8bcaeb14ce2355f6a8d66d898b7d97a50c52ad2\"\n }\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-s\",\n \"-j\",\n \".text\",\n \"--start-address=0x0086c62d\",\n \"--stop-address=0x0086c630\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"player-append-terminal-bytes\",\n \"returncode\": 0,\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-terminal-bytes.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 132,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-terminal-bytes.stdout.txt\",\n \"sha256\": \"e18616c49cfedffc9e8e18b18fcd9616891093551e6e923483617161c1b54cc6\"\n }\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-s\",\n \"-j\",\n \".text\",\n \"--start-address=0x007694bf\",\n \"--stop-address=0x007694c2\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"player-copy-terminal-bytes\",\n \"returncode\": 0,\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-terminal-bytes.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 132,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-terminal-bytes.stdout.txt\",\n \"sha256\": \"326d8f353cf3d8aa5e3af36ceffcba4866390b897446b2b2754a37539acfabb5\"\n }\n }\n ],\n \"role\": \"analyst\",\n \"runs\": [\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x0057e590\",\n \"--stop-address=0x0057e5e4\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"observed-alloc-narrow\",\n \"returncode\": 0,\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-narrow.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 1492,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-narrow.stdout.txt\",\n \"sha256\": \"d3e98f7b6db58de24cbb1f1d4bb0c18eeb1342c7fb4c3317dc4a62338bd875d1\"\n }\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x0057e590\",\n \"--stop-address=0x0057e5e6\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"observed-alloc-wide\",\n \"returncode\": 0,\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-wide.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 1496,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/observed-alloc-wide.stdout.txt\",\n \"sha256\": \"59a8f45ad330666a2209f23ce320c8dcbeea7571b40512d1ad5672e68d55e406\"\n }\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x0086c580\",\n \"--stop-address=0x0086c62e\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"player-append-narrow\",\n \"returncode\": 0,\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-narrow.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 3356,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-narrow.stdout.txt\",\n \"sha256\": \"dcdb9b3fa370966de82ebdeb896133d95988b11e8159686d85add65c6932affa\"\n }\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x0086c580\",\n \"--stop-address=0x0086c630\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"player-append-wide\",\n \"returncode\": 0,\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-wide.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 3360,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-append-wide.stdout.txt\",\n \"sha256\": \"02164c44a5398853d2ea8efba8dbcb65166fa50229b95facf6e6abaf197cc754\"\n }\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x007693f0\",\n \"--stop-address=0x007694c0\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"player-copy-narrow\",\n \"returncode\": 0,\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-narrow.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 4069,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-narrow.stdout.txt\",\n \"sha256\": \"a73bcdbf5fe92be984ecf2a1747dd9858592edfdb722687392de6abc576b0a93\"\n }\n },\n {\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x007693f0\",\n \"--stop-address=0x007694c2\",\n \"dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"name\": \"player-copy-wide\",\n \"returncode\": 0,\n \"stderr\": {\n \"bytes\": 0,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-wide.stderr.txt\",\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n },\n \"stdout\": {\n \"bytes\": 4073,\n \"path\": \"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/player-copy-wide.stdout.txt\",\n \"sha256\": \"39de9e66a5944858572bf4bf2c3b3cc20ea42686e6657874c159fcf113ecf708\"\n }\n }\n ],\n \"schema\": \"sots-abi-static-capture/1\",\n \"session\": \"run-79357a65226f61d6a86c042d\",\n \"source_binding\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n },\n \"timestamp\": \"2026-09-10T00:56:09.071212+00:00\",\n \"tool\": {\n \"path\": \"/usr/bin/objdump\",\n \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n \"version\": \"GNU objdump (GNU Binutils for Ubuntu) 2.38\"\n }\n}","lineStart":1,"lineEnd":570,"totalLines":570,"truncated":false}},"title":"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/manifest.json","time":{"start":1789017879082,"end":1789017879092}},"metadata":{"openai":{"itemId":"fc_0362d91993ee76eb016aa23f1652c487d18ab907d1c8c07906"}},"id":"prt_089c671f20018G9SYK1haK9qo6","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c637b9001OR4kyYxHimBDFJ"}} +{"type":"tool_use","timestamp":1789017879143,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"grep","callID":"call_pbdjM6W7oyxNDgUD8j1nGNeg","state":{"status":"completed","input":{"path":"/home/alex/sots-re/verify/results/research-completion-abi","include":"*.md","pattern":"archived record|turn3-state|EvNxID|EvEID|FLT_MAX|NaN|RNG"},"output":"Found 8 matches\n/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md:\n Line 5: game, allocations, constructors, destructors, exception paths, event posting, or RNG.\n\n Line 58: undefined behavior. No event record, event ID, text, outer EventStorage next-ID, or RNG state is\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/report.md:\n Line 58: same-bucket equal versus description-only-different events. No RNG boundary is present in these\n\n Line 59: helpers and no RNG draw occurred because nothing was executed live.\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/objdump-2026-09-10-boundary-repair.md:\n Line 51: and NaN fixtures.\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/report.md:\n Line 54: No event ID, event record, RNG, or other game state is written by get/create itself in the captured\n\n\n/home/alex/sots-re/verify/results/research-completion-abi/recovered-static.md:\n Line 64: RNG draw.\n\n Line 113: event append, or RNG draw.\n","metadata":{"matches":8,"truncated":false},"title":"archived record|turn3-state|EvNxID|EvEID|FLT_MAX|NaN|RNG","time":{"start":1789017879126,"end":1789017879141}},"metadata":{"openai":{"itemId":"fc_0362d91993ee76eb016aa23f1652cc87d1816d5e9e0225ef97"}},"id":"prt_089c67231001hiMA2lAEv0gTcD","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c637b9001OR4kyYxHimBDFJ"}} +{"type":"step_finish","timestamp":1789017879251,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c672d0001aS2uR7Uuj4mqZY","reason":"tool-calls","snapshot":"053ee872151d2aacfab29de197a37d6ee02b96d6","messageID":"msg_089c637b9001OR4kyYxHimBDFJ","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":71632,"input":38987,"output":308,"reasoning":81,"cache":{"write":0,"read":32256}},"cost":0}} +{"type":"step_start","timestamp":1789017881493,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c67b81001ZEVR7Rl3sgrxZp","messageID":"msg_089c67306001lU9B4HMaOydva3","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"50f282849a58fe66e4b8b7fcec0b9c2add77b7d0","type":"step-start"}} +{"type":"tool_use","timestamp":1789017897372,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"bash","callID":"call_1F05gz2Thp1mAJ2LvvynVuEE","state":{"status":"completed","input":{"command":"git rev-parse HEAD && git rev-parse --show-toplevel && git rev-parse --git-common-dir && git status --short","workdir":"/tmp/opencode/sots-final-research-engine"},"output":"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\n/tmp/opencode/sots-final-research-engine\n/home/alex/sots-engine/.git\n M CONTRIBUTING.md\n M README.md\n M docs/S-standalone.md\n M src/app/turn.cpp\n M src/game/sim/CMakeLists.txt\n M src/mars/rng/mt19937.cpp\n M src/mars/rng/mt19937.h\n M tests/app/CMakeLists.txt\n M tests/app/test_command_replay.cpp\n M tests/app/test_turn.cpp\n M tests/app/test_turn_record.cpp\n M tests/game_config/CMakeLists.txt\n M tests/game_data/CMakeLists.txt\n M tests/game_design/CMakeLists.txt\n M tests/game_design/test_census_saves.cpp\n M tests/game_sim/CMakeLists.txt\n M tests/mars_stream/CMakeLists.txt\n M tests/mars_stream/test_domains.cpp\n M tests/mars_stream/test_rng.cpp\n M tests/mars_stream/test_save.cpp\n M tests/mars_text/CMakeLists.txt\n M tests/mars_vfs/CMakeLists.txt\n M tools/clean_room_check.sh\n?? AGENTS.md\n?? CLAUDE.md\n?? docs/architecture.md\n?? opencode.json\n?? tools/clean_room_check.py\n","metadata":{"output":"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\n/tmp/opencode/sots-final-research-engine\n/home/alex/sots-engine/.git\n M CONTRIBUTING.md\n M README.md\n M docs/S-standalone.md\n M src/app/turn.cpp\n M src/game/sim/CMakeLists.txt\n M src/mars/rng/mt19937.cpp\n M src/mars/rng/mt19937.h\n M tests/app/CMakeLists.txt\n M tests/app/test_command_replay.cpp\n M tests/app/test_turn.cpp\n M tests/app/test_turn_record.cpp\n M tests/game_config/CMakeLists.txt\n M tests/game_data/CMakeLists.txt\n M tests/game_design/CMakeLists.txt\n M tests/game_design/test_census_saves.cpp\n M tests/game_sim/CMakeLists.txt\n M tests/mars_stream/CMakeLists.txt\n M tests/mars_stream/test_domains.cpp\n M tests/mars_stream/test_rng.cpp\n M tests/mars_stream/test_save.cpp\n M tests/mars_text/CMakeLists.txt\n M tests/mars_vfs/CMakeLists.txt\n M tools/clean_room_check.sh\n?? AGENTS.md\n?? CLAUDE.md\n?? docs/architecture.md\n?? opencode.json\n?? tools/clean_room_check.py\n","exit":0,"truncated":false},"title":"git rev-parse HEAD && git rev-parse --show-toplevel && git rev-parse --git-common-dir && git status --short","time":{"start":1789017897271,"end":1789017897362}},"metadata":{"openai":{"itemId":"fc_0b7db8d98aada817016aa23f28dab887d1ab9a6ced7dc09964"}},"id":"prt_089c6b8b7001iXFL4JxoNdQgS5","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c67306001lU9B4HMaOydva3"}} +{"type":"tool_use","timestamp":1789017897378,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"bash","callID":"call_m0dgDaCRuZf8daAbWlNGBhve","state":{"status":"completed","input":{"command":"git rev-parse HEAD && git rev-parse --show-toplevel && git rev-parse --git-common-dir && git status --short","workdir":"/tmp/opencode/sots-final-research-re"},"output":"3bfde5a70d874a723e797a695bbd847fd82c0aa7\n/tmp/opencode/sots-final-research-re\n/home/alex/sots-re/.git\n M README.md\n M campaign/DASHBOARD.md\n M campaign/backlog.md\n M campaign/board.md\n M campaign/open-questions.md\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? AGENTS.md\n?? CLAUDE.md\n?? campaign/README.md\n?? campaign/agents/\n?? campaign/contract.schema.json\n?? campaign/contracts/\n?? campaign/current.json\n?? campaign/models.json\n?? campaign/pilots/\n?? campaign/research/\n?? campaign/rollout/\n?? guides/multi-agent-workflow.md\n?? guides/windows-lab-housekeeping.md\n?? opencode.json\n?? tools/campaign.py\n?? tools/check_agent_config.py\n?? tools/evidence.py\n?? tools/gate.py\n?? tools/run_agent.py\n?? tools/select_evidence.py\n?? tools/windows-housekeeping/\n?? verify/campaign/\n?? verify/config/\n?? verify/publishing/\n?? verify/results/housekeeping/\n?? verify/tooling/\n","metadata":{"output":"3bfde5a70d874a723e797a695bbd847fd82c0aa7\n/tmp/opencode/sots-final-research-re\n/home/alex/sots-re/.git\n M README.md\n M campaign/DASHBOARD.md\n M campaign/backlog.md\n M campaign/board.md\n M campaign/open-questions.md\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? AGENTS.md\n?? CLAUDE.md\n?? campaign/README.md\n?? campaign/agents/\n?? campaign/contract.schema.json\n?? campaign/contracts/\n?? campaign/current.json\n?? campaign/models.json\n?? campaign/pilots/\n?? campaign/research/\n?? campaign/rollout/\n?? guides/multi-agent-workflow.md\n?? guides/windows-lab-housekeeping.md\n?? opencode.json\n?? tools/campaign.py\n?? tools/check_agent_config.py\n?? tools/evidence.py\n?? tools/gate.py\n?? tools/run_agent.py\n?? tools/select_evidence.py\n?? tools/windows-housekeeping/\n?? verify/campaign/\n?? verify/config/\n?? verify/publishing/\n?? verify/results/housekeeping/\n?? verify/tooling/\n","exit":0,"truncated":false},"title":"git rev-parse HEAD && git rev-parse --show-toplevel && git rev-parse --git-common-dir && git status --short","time":{"start":1789017897350,"end":1789017897375}},"metadata":{"openai":{"itemId":"fc_0b7db8d98aada817016aa23f28dacc87d18517ac56bf304d48"}},"id":"prt_089c6b957001Qce0i9poyatzVG","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c67306001lU9B4HMaOydva3"}} +{"type":"tool_use","timestamp":1789017897416,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"bash","callID":"call_5w4fo62YDEUaB3E66XNXrd0U","state":{"status":"completed","input":{"command":"git rev-parse HEAD && git rev-parse --git-common-dir && git status --short","workdir":"/home/alex/sots-re"},"output":"41a68401625c187ed681ad6d916e2161dfcfff5d\n.git\n M README.md\n M campaign/contracts/research-completion-abi.json\n M campaign/runtime/runs/active-research-completion-abi.json\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.json\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.jsonl\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.stderr.log\n?? campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json\n?? campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.jsonl\n?? campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.stderr.log\n?? campaign/runtime/transitions/research-completion-abi-6daec310044e13c8c635e05c.json\n?? campaign/runtime/transitions/research-completion-abi-7f8e2dc0b9b23e9aee13e698.json\n?? campaign/runtime/transitions/research-completion-abi-e24f6d6bf417ccc1ff38cbad.json\n","metadata":{"output":"41a68401625c187ed681ad6d916e2161dfcfff5d\n.git\n M README.md\n M campaign/contracts/research-completion-abi.json\n M campaign/runtime/runs/active-research-completion-abi.json\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.json\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.jsonl\n?? campaign/runtime/runs/run-81e5e65ab544c63ed8984365.stderr.log\n?? campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.json\n?? campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.jsonl\n?? campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.stderr.log\n?? campaign/runtime/transitions/research-completion-abi-6daec310044e13c8c635e05c.json\n?? campaign/runtime/transitions/research-completion-abi-7f8e2dc0b9b23e9aee13e698.json\n?? campaign/runtime/transitions/research-completion-abi-e24f6d6bf417ccc1ff38cbad.json\n","exit":0,"truncated":false},"title":"git rev-parse HEAD && git rev-parse --git-common-dir && git status --short","time":{"start":1789017897396,"end":1789017897415}},"metadata":{"openai":{"itemId":"fc_0b7db8d98aada817016aa23f28dad887d1ab92b004b001efe9"}},"id":"prt_089c6b98b001rSjzPIwPdSunzW","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c67306001lU9B4HMaOydva3"}} +{"type":"tool_use","timestamp":1789017897520,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"bash","callID":"call_JGGEV5HhmUKvszKKFi0DKQAl","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re validate && python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi","workdir":"/home/alex/sots-re","timeout":120000},"output":"[\n \"controls-bootstrap\",\n \"launcher-smoke\",\n \"research-completion-abi\",\n \"research-live-record-bridge\",\n \"research-replacement\"\n]\n[\n {\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"open_surprises\": [],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"verification\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n }\n]\n","metadata":{"output":"[\n \"controls-bootstrap\",\n \"launcher-smoke\",\n \"research-completion-abi\",\n \"research-live-record-bridge\",\n \"research-replacement\"\n]\n[\n {\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-63895701b38ae7ffac31aaed.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"open_surprises\": [],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"verification\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n }\n]\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re validate && python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi","time":{"start":1789017897421,"end":1789017897517}},"metadata":{"openai":{"itemId":"fc_0b7db8d98aada817016aa23f28dae487d1b180c2ba9c1aedf8"}},"id":"prt_089c6b9b8001mJLmqJImhZmSmF","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c67306001lU9B4HMaOydva3"}} +{"type":"tool_use","timestamp":1789017897585,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"bash","callID":"call_ef1JADuE8XuHN5VUnSSU12sS","state":{"status":"completed","input":{"command":"sha256sum dumps/sots.exe /usr/bin/objdump verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py && stat -c '%n %s' dumps/sots.exe /usr/bin/objdump && /usr/bin/objdump --version","workdir":"/home/alex/sots-re"},"output":"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 dumps/sots.exe\n1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd /usr/bin/objdump\naaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4 verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\n6e74ff0197adc6c97f5924ad3f973d5e8922f1480268d1c96dac3dd89000e38f verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md\n66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1 verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\ndumps/sots.exe 7898624\n/usr/bin/objdump 24\nGNU objdump (GNU Binutils for Ubuntu) 2.38\nCopyright (C) 2022 Free Software Foundation, Inc.\nThis program is free software; you may redistribute it under the terms of\nthe GNU General Public License version 3 or (at your option) any later version.\nThis program has absolutely no warranty.\n","metadata":{"output":"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 dumps/sots.exe\n1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd /usr/bin/objdump\naaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4 verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\n6e74ff0197adc6c97f5924ad3f973d5e8922f1480268d1c96dac3dd89000e38f verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md\n66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1 verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\ndumps/sots.exe 7898624\n/usr/bin/objdump 24\nGNU objdump (GNU Binutils for Ubuntu) 2.38\nCopyright (C) 2022 Free Software Foundation, Inc.\nThis program is free software; you may redistribute it under the terms of\nthe GNU General Public License version 3 or (at your option) any later version.\nThis program has absolutely no warranty.\n","exit":0,"truncated":false},"title":"sha256sum dumps/sots.exe /usr/bin/objdump verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py && stat -c '%n %s' dumps/sots.exe /usr/bin/objdump && /usr/bin/objdump --version","time":{"start":1789017897539,"end":1789017897578}},"metadata":{"openai":{"itemId":"fc_0b7db8d98aada817016aa23f28daf887d1be4efecf77810f3a"}},"id":"prt_089c6ba22001p7xbaJ7e1w2PjX","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c67306001lU9B4HMaOydva3"}} +{"type":"tool_use","timestamp":1789017897663,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"bash","callID":"call_QWMGF47K5NT5GacRM1tWS11T","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re","workdir":"/home/alex/sots-re","timeout":120000},"output":"{\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n}\n","metadata":{"output":"{\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n}\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re","time":{"start":1789017897500,"end":1789017897660}},"metadata":{"openai":{"itemId":"fc_0b7db8d98aada817016aa23f28daec87d1aaf74a58e8b1b1dd"}},"id":"prt_089c6b9ed001XOBG6s7X0K7bOi","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c67306001lU9B4HMaOydva3"}} +{"type":"step_finish","timestamp":1789017897712,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c6baed001p4LiKQgdVACrdB","reason":"tool-calls","snapshot":"d4198e2633d7ad67f9754724bad6e541379a830e","messageID":"msg_089c67306001lU9B4HMaOydva3","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":87374,"input":15851,"output":475,"reasoning":8,"cache":{"write":0,"read":71040}},"cost":0}} +{"type":"step_start","timestamp":1789017899681,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c6c29e001tEJl2XB14xCwmU","messageID":"msg_089c6bb28001px3rL2leICZB5d","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"7eaf4d3183f463d66aab0aeeca14336782aabe6b","type":"step-start"}} +{"type":"tool_use","timestamp":1789017904350,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_qYYHhW7rqKRsnrPUDaMQQ7al","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier"},"output":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier\ndirectory\n\nreport-run-5bd0e537bb0c4c4f43987ac1.md\nreproduce_run_ee78b8773688ca09f8046e21.py\nrun-ee78b8773688ca09f8046e21/\nverification-plan-run-ee78b8773688ca09f8046e21.md\n\n(4 entries)\n","metadata":{"preview":"report-run-5bd0e537bb0c4c4f43987ac1.md\nreproduce_run_ee78b8773688ca09f8046e21.py\nrun-ee78b8773688ca09f8046e21/\nverification-plan-run-ee78b8773688ca09f8046e21.md","truncated":false,"loaded":[],"display":{"type":"directory","path":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier","entries":["report-run-5bd0e537bb0c4c4f43987ac1.md","reproduce_run_ee78b8773688ca09f8046e21.py","run-ee78b8773688ca09f8046e21/","verification-plan-run-ee78b8773688ca09f8046e21.md"],"offset":1,"totalEntries":4,"truncated":false}},"title":"verify/results/research-completion-abi-correction-verifier","time":{"start":1789017904345,"end":1789017904348}},"metadata":{"openai":{"itemId":"fc_0b57e32b27a95633016aa23f2f94f887d19861056923ca5b5a"}},"id":"prt_089c6d215001ZH2Ul36B0gHYzT","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c6bb28001px3rL2leICZB5d"}} +{"type":"step_finish","timestamp":1789017904516,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c6d581001fSV7TM74ev3Kyu","reason":"tool-calls","snapshot":"946f9f12336627d67abef4e1b76a78928a23ba22","messageID":"msg_089c6bb28001px3rL2leICZB5d","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":90059,"input":3132,"output":39,"reasoning":104,"cache":{"write":0,"read":86784}},"cost":0}} +{"type":"step_start","timestamp":1789017906406,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c6dcdd001b7Ki390tDLYCgq","messageID":"msg_089c6d5b9001U8hX8GbMG5MqfG","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"7359b595c860f3b58700d2a07dbd9561a4826708","type":"step-start"}} +{"type":"tool_use","timestamp":1789017947893,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"apply_patch","callID":"call_coxd642s2SQYDRbxGJcS4ttn","state":{"status":"completed","input":{"patchText":"*** Begin Patch\n*** Add File: /home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\n+# Verification plan — run-d6c4dc15e9f4d15155fee856\n+\n+Role `verifier`; actor `research-abi-correction-verifier`; requested model\n+`openai/gpt-5.6-sol`. This plan predates this session's disassembly and save-state experiments.\n+\n+## Scope separation\n+\n+The analyst package is a fresh **static capture**, not live allocator execution, original-assisted\n+execution, partial/full compare, independent replacement, or integrated replay. This verifier will\n+independently reproduce static instruction/byte facts and archived save values only. It will not\n+claim runtime allocator safety, event posting, replacement acceptance, or integrated-tree evidence.\n+\n+## Falsifiers\n+\n+1. Reject if contract/campaign validation fails, an open surprise exists, either paired worktree is\n+ not at its pinned baseline/common repository, source binding differs from the handoff, or binary\n+ or objdump identity differs. Dirty trees are acceptable only when their full source digests match.\n+2. Reject zero executions, nonzero command exits, empty required stdout, unexpected stderr/skips,\n+ missing streams, reused output, or a manifest/session mismatch.\n+3. Require stop `0x00779a20` to be incomplete despite exit zero: raw bytes must show `74 10` while\n+ decoded output at `0x00779a1f` shows only `74`. If counted as a complete stream, reject.\n+4. Require aligned stops `0x00779a21`, `0x00779a23`, and `0x00779a28` to add exactly complete\n+ `74 10`, `8b cf`, and `e8 28 6a ff ff` rows. Any truncated terminal row or non-prefix change in\n+ the shared decoded range rejects the boundary interpretation.\n+5. Independently hold out stop `0x00779913` for nested-copy authority. It must include complete\n+ `ret 4` at `0x00779912` without entering the later routine; compare it with raw terminal bytes.\n+ A bad terminal boundary or changed preceding rows falsifies the package's authority boundary.\n+6. Check key ABI claims directly: get/create and outer append end `ret 4`; nested destruction ends\n+ `ret`; nested copy has normal `ret 4`, unwind cleanup, and deallocation paths; get/create has no\n+ write to temporary `[ebp-0x20]` before append, copies source `+4`, cleans the temporary nested\n+ vector, then stores requested turn to the stored element. Contradictory def/use evidence pauses.\n+7. Independently parse the archived save, not narrative counters. Require the named player/event\n+ container elements, IDs, strings, exact `0x7f7fffff` position words, and empty player states to\n+ match. Missing parse coverage or unexpected skips reject archived-value validation.\n+8. Check actual RNG evidence independently: static helper captures execute no game and therefore\n+ expose no RNG state/draws. Any claim that unchanged/zero RNG was measured by these captures is a\n+ failure. Archived W1 unchanged RNG remains historical and outside this static reproduction.\n+\n+## Required branch exposures and distinct states\n+\n+Static instruction exposure required now: existing last-match return versus miss; spare-capacity\n+append versus full-capacity growth edges; empty versus nonempty nested copy; null versus nonnull\n+nested destruction; normal return versus unwind cleanup; short/long string branch instructions;\n+known-bad truncated versus aligned boundary. Instruction exposure is not runtime execution.\n+\n+Runtime states still unexercised and must remain explicit residuals: existing-last-match, miss with\n+spare/full outer capacity, empty/nonempty nested vectors owning short/long strings, deliberate\n+allocation failure/throw, duplicate/description-only-different events, and transient stack\n+sentinels. Archived save states are distinct from all of those and validate serialized values only.\n+\n+## Planned reproduction\n+\n+Create a fail-if-exists session directory owned by this verifier. Use an independent script, not the\n+analyst's hard-coded recipe, to bind source/input/tool identities, run the package windows and held-\n+out boundary, archive raw stdout/stderr, parse instruction rows and save values, and emit a manifest\n+whose failed predictions/residuals remain failures or limitations.\n*** End Patch"},"output":"Success. Updated the following files:\nA verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md","metadata":{"diff":"Index: /home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\n===================================================================\n--- /home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\n+++ /home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\n@@ -0,0 +1,56 @@\n+# Verification plan — run-d6c4dc15e9f4d15155fee856\n+\n+Role `verifier`; actor `research-abi-correction-verifier`; requested model\n+`openai/gpt-5.6-sol`. This plan predates this session's disassembly and save-state experiments.\n+\n+## Scope separation\n+\n+The analyst package is a fresh **static capture**, not live allocator execution, original-assisted\n+execution, partial/full compare, independent replacement, or integrated replay. This verifier will\n+independently reproduce static instruction/byte facts and archived save values only. It will not\n+claim runtime allocator safety, event posting, replacement acceptance, or integrated-tree evidence.\n+\n+## Falsifiers\n+\n+1. Reject if contract/campaign validation fails, an open surprise exists, either paired worktree is\n+ not at its pinned baseline/common repository, source binding differs from the handoff, or binary\n+ or objdump identity differs. Dirty trees are acceptable only when their full source digests match.\n+2. Reject zero executions, nonzero command exits, empty required stdout, unexpected stderr/skips,\n+ missing streams, reused output, or a manifest/session mismatch.\n+3. Require stop `0x00779a20` to be incomplete despite exit zero: raw bytes must show `74 10` while\n+ decoded output at `0x00779a1f` shows only `74`. If counted as a complete stream, reject.\n+4. Require aligned stops `0x00779a21`, `0x00779a23`, and `0x00779a28` to add exactly complete\n+ `74 10`, `8b cf`, and `e8 28 6a ff ff` rows. Any truncated terminal row or non-prefix change in\n+ the shared decoded range rejects the boundary interpretation.\n+5. Independently hold out stop `0x00779913` for nested-copy authority. It must include complete\n+ `ret 4` at `0x00779912` without entering the later routine; compare it with raw terminal bytes.\n+ A bad terminal boundary or changed preceding rows falsifies the package's authority boundary.\n+6. Check key ABI claims directly: get/create and outer append end `ret 4`; nested destruction ends\n+ `ret`; nested copy has normal `ret 4`, unwind cleanup, and deallocation paths; get/create has no\n+ write to temporary `[ebp-0x20]` before append, copies source `+4`, cleans the temporary nested\n+ vector, then stores requested turn to the stored element. Contradictory def/use evidence pauses.\n+7. Independently parse the archived save, not narrative counters. Require the named player/event\n+ container elements, IDs, strings, exact `0x7f7fffff` position words, and empty player states to\n+ match. Missing parse coverage or unexpected skips reject archived-value validation.\n+8. Check actual RNG evidence independently: static helper captures execute no game and therefore\n+ expose no RNG state/draws. Any claim that unchanged/zero RNG was measured by these captures is a\n+ failure. Archived W1 unchanged RNG remains historical and outside this static reproduction.\n+\n+## Required branch exposures and distinct states\n+\n+Static instruction exposure required now: existing last-match return versus miss; spare-capacity\n+append versus full-capacity growth edges; empty versus nonempty nested copy; null versus nonnull\n+nested destruction; normal return versus unwind cleanup; short/long string branch instructions;\n+known-bad truncated versus aligned boundary. Instruction exposure is not runtime execution.\n+\n+Runtime states still unexercised and must remain explicit residuals: existing-last-match, miss with\n+spare/full outer capacity, empty/nonempty nested vectors owning short/long strings, deliberate\n+allocation failure/throw, duplicate/description-only-different events, and transient stack\n+sentinels. Archived save states are distinct from all of those and validate serialized values only.\n+\n+## Planned reproduction\n+\n+Create a fail-if-exists session directory owned by this verifier. Use an independent script, not the\n+analyst's hard-coded recipe, to bind source/input/tool identities, run the package windows and held-\n+out boundary, archive raw stdout/stderr, parse instruction rows and save values, and emit a manifest\n+whose failed predictions/residuals remain failures or limitations.\n\n","files":[{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md","relativePath":"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md","type":"add","patch":"Index: /home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\n===================================================================\n--- /home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\n+++ /home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\n@@ -0,0 +1,56 @@\n+# Verification plan — run-d6c4dc15e9f4d15155fee856\n+\n+Role `verifier`; actor `research-abi-correction-verifier`; requested model\n+`openai/gpt-5.6-sol`. This plan predates this session's disassembly and save-state experiments.\n+\n+## Scope separation\n+\n+The analyst package is a fresh **static capture**, not live allocator execution, original-assisted\n+execution, partial/full compare, independent replacement, or integrated replay. This verifier will\n+independently reproduce static instruction/byte facts and archived save values only. It will not\n+claim runtime allocator safety, event posting, replacement acceptance, or integrated-tree evidence.\n+\n+## Falsifiers\n+\n+1. Reject if contract/campaign validation fails, an open surprise exists, either paired worktree is\n+ not at its pinned baseline/common repository, source binding differs from the handoff, or binary\n+ or objdump identity differs. Dirty trees are acceptable only when their full source digests match.\n+2. Reject zero executions, nonzero command exits, empty required stdout, unexpected stderr/skips,\n+ missing streams, reused output, or a manifest/session mismatch.\n+3. Require stop `0x00779a20` to be incomplete despite exit zero: raw bytes must show `74 10` while\n+ decoded output at `0x00779a1f` shows only `74`. If counted as a complete stream, reject.\n+4. Require aligned stops `0x00779a21`, `0x00779a23`, and `0x00779a28` to add exactly complete\n+ `74 10`, `8b cf`, and `e8 28 6a ff ff` rows. Any truncated terminal row or non-prefix change in\n+ the shared decoded range rejects the boundary interpretation.\n+5. Independently hold out stop `0x00779913` for nested-copy authority. It must include complete\n+ `ret 4` at `0x00779912` without entering the later routine; compare it with raw terminal bytes.\n+ A bad terminal boundary or changed preceding rows falsifies the package's authority boundary.\n+6. Check key ABI claims directly: get/create and outer append end `ret 4`; nested destruction ends\n+ `ret`; nested copy has normal `ret 4`, unwind cleanup, and deallocation paths; get/create has no\n+ write to temporary `[ebp-0x20]` before append, copies source `+4`, cleans the temporary nested\n+ vector, then stores requested turn to the stored element. Contradictory def/use evidence pauses.\n+7. Independently parse the archived save, not narrative counters. Require the named player/event\n+ container elements, IDs, strings, exact `0x7f7fffff` position words, and empty player states to\n+ match. Missing parse coverage or unexpected skips reject archived-value validation.\n+8. Check actual RNG evidence independently: static helper captures execute no game and therefore\n+ expose no RNG state/draws. Any claim that unchanged/zero RNG was measured by these captures is a\n+ failure. Archived W1 unchanged RNG remains historical and outside this static reproduction.\n+\n+## Required branch exposures and distinct states\n+\n+Static instruction exposure required now: existing last-match return versus miss; spare-capacity\n+append versus full-capacity growth edges; empty versus nonempty nested copy; null versus nonnull\n+nested destruction; normal return versus unwind cleanup; short/long string branch instructions;\n+known-bad truncated versus aligned boundary. Instruction exposure is not runtime execution.\n+\n+Runtime states still unexercised and must remain explicit residuals: existing-last-match, miss with\n+spare/full outer capacity, empty/nonempty nested vectors owning short/long strings, deliberate\n+allocation failure/throw, duplicate/description-only-different events, and transient stack\n+sentinels. Archived save states are distinct from all of those and validate serialized values only.\n+\n+## Planned reproduction\n+\n+Create a fail-if-exists session directory owned by this verifier. Use an independent script, not the\n+analyst's hard-coded recipe, to bind source/input/tool identities, run the package windows and held-\n+out boundary, archive raw stdout/stderr, parse instruction rows and save values, and emit a manifest\n+whose failed predictions/residuals remain failures or limitations.\n","additions":56,"deletions":0}],"diagnostics":{},"truncated":false},"title":"Success. Updated the following files:\nA verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md","time":{"start":1789017947883,"end":1789017947890}},"metadata":{"openai":{"itemId":"fc_097add926efa1265016aa23f3b1f8887d19aee8edbe5037884"}},"id":"prt_089c6ff27001mDaYWgSWgnCwoR","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c6d5b9001U8hX8GbMG5MqfG"}} +{"type":"step_finish","timestamp":1789017948096,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c77fbd001q2doG4FadmoQ4m","reason":"tool-calls","snapshot":"72f06003a04cfcb77569c861b0d60fdcdbdbabc9","messageID":"msg_089c6d5b9001U8hX8GbMG5MqfG","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":91478,"input":456,"output":1040,"reasoning":254,"cache":{"write":0,"read":89728}},"cost":0}} +{"type":"step_start","timestamp":1789017950862,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c78a8a0013fjel9WXr953yX","messageID":"msg_089c77ff9001Js2Rbd4SqW6T3A","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"ce7cc987432d1a36dc03d513bc54e2a8ba3abc8e","type":"step-start"}} +{"type":"tool_use","timestamp":1789017954377,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"bash","callID":"call_ji3Qk1NzeQXjz8KvHrYpMfkp","state":{"status":"completed","input":{"command":"sha256sum verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md","workdir":"/home/alex/sots-re"},"output":"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\n","metadata":{"output":"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\n","exit":0,"truncated":false},"title":"sha256sum verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md","time":{"start":1789017954360,"end":1789017954370}},"metadata":{"openai":{"itemId":"fc_03d4d86b685db88f016aa23f60a82c87d1b1609bfa0eb0dc45"}},"id":"prt_089c791d0001Reny1ClB4SsoJx","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c77ff9001Js2Rbd4SqW6T3A"}} +{"type":"step_finish","timestamp":1789017954531,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c798e0001TRxcGqbngvgrBF","reason":"tool-calls","snapshot":"9ecee524899302fd528d8932eb2be30a9d696806","messageID":"msg_089c77ff9001Js2Rbd4SqW6T3A","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":91636,"input":1545,"output":65,"reasoning":42,"cache":{"write":0,"read":89984}},"cost":0}} +{"type":"step_start","timestamp":1789017957702,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c7a534001BhuZCA4sSwkx8Q","messageID":"msg_089c79911001SkZhojSQLwtSXH","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"1faa93414fbf2ef60981055082a3bbc1ab25cee6","type":"step-start"}} +{"type":"tool_use","timestamp":1789017976294,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"bash","callID":"call_ik1gCJWVw5gstCSqA2XCu6Hc","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-abi-correction-verifier --role verifier --model openai/gpt-5.6-sol --session run-d6c4dc15e9f4d15155fee856 --summary 'OBSERVATIONS: canonical policy, contract, lead checkpoint, all 13 surprise records, relevant Astra decisions, handoff and raw manifests were read. Contract validates in verification with no open surprises. Assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7 match baselines and common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git. Paired source binding independently remeasured as engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8, matching analyst manifest despite dirty worktrees. Binary SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd/version 2.38 match. Handoff artifacts rehash exactly. No resource lease acquired or lab mutation performed. DECISIONS: verification remains static reproduction plus archived serialized-state checking only; no live allocator safety, original-assisted compare, replacement, or integrated replay claim. Pre-experiment falsifiers and required distinct states/branches are persisted in the attached verifier-owned plan. BLOCKERS/LIMITS: contract evidence array is empty; analyst package itself states runtime capacity/string/unwind states unavailable. Canonical integrated tree is dirty at HEAD 41a6840 but is not the assigned source binding.' --artifact verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md --next-action 'Create and run the independent fail-if-exists static/save reproduction for session run-d6c4dc15e9f4d15155fee856.'","workdir":"/home/alex/sots-re","timeout":120000},"output":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"4555678e34291015554e7e88\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Create and run the independent fail-if-exists static/save reproduction for session run-d6c4dc15e9f4d15155fee856.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-d6c4dc15e9f4d15155fee856\",\n \"summary\": \"OBSERVATIONS: canonical policy, contract, lead checkpoint, all 13 surprise records, relevant Astra decisions, handoff and raw manifests were read. Contract validates in verification with no open surprises. Assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7 match baselines and common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git. Paired source binding independently remeasured as engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8, matching analyst manifest despite dirty worktrees. Binary SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd/version 2.38 match. Handoff artifacts rehash exactly. No resource lease acquired or lab mutation performed. DECISIONS: verification remains static reproduction plus archived serialized-state checking only; no live allocator safety, original-assisted compare, replacement, or integrated replay claim. Pre-experiment falsifiers and required distinct states/branches are persisted in the attached verifier-owned plan. BLOCKERS/LIMITS: contract evidence array is empty; analyst package itself states runtime capacity/string/unwind states unavailable. Canonical integrated tree is dirty at HEAD 41a6840 but is not the assigned source binding.\",\n \"timestamp\": \"2026-09-10T05:26:16.270911+00:00\"\n}\n","metadata":{"output":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"4555678e34291015554e7e88\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Create and run the independent fail-if-exists static/save reproduction for session run-d6c4dc15e9f4d15155fee856.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-d6c4dc15e9f4d15155fee856\",\n \"summary\": \"OBSERVATIONS: canonical policy, contract, lead checkpoint, all 13 surprise records, relevant Astra decisions, handoff and raw manifests were read. Contract validates in verification with no open surprises. Assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7 match baselines and common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git. Paired source binding independently remeasured as engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8, matching analyst manifest despite dirty worktrees. Binary SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd/version 2.38 match. Handoff artifacts rehash exactly. No resource lease acquired or lab mutation performed. DECISIONS: verification remains static reproduction plus archived serialized-state checking only; no live allocator safety, original-assisted compare, replacement, or integrated replay claim. Pre-experiment falsifiers and required distinct states/branches are persisted in the attached verifier-owned plan. BLOCKERS/LIMITS: contract evidence array is empty; analyst package itself states runtime capacity/string/unwind states unavailable. Canonical integrated tree is dirty at HEAD 41a6840 but is not the assigned source binding.\",\n \"timestamp\": \"2026-09-10T05:26:16.270911+00:00\"\n}\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-abi-correction-verifier --role verifier --model openai/gpt-5.6-sol --session run-d6c4dc15e9f4d15155fee856 --summary 'OBSERVATIONS: canonical policy, contract, lead checkpoint, all 13 surprise records, relevant Astra decisions, handoff and raw manifests were read. Contract validates in verification with no open surprises. Assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7 match baselines and common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git. Paired source binding independently remeasured as engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8, matching analyst manifest despite dirty worktrees. Binary SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd/version 2.38 match. Handoff artifacts rehash exactly. No resource lease acquired or lab mutation performed. DECISIONS: verification remains static reproduction plus archived serialized-state checking only; no live allocator safety, original-assisted compare, replacement, or integrated replay claim. Pre-experiment falsifiers and required distinct states/branches are persisted in the attached verifier-owned plan. BLOCKERS/LIMITS: contract evidence array is empty; analyst package itself states runtime capacity/string/unwind states unavailable. Canonical integrated tree is dirty at HEAD 41a6840 but is not the assigned source binding.' --artifact verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md --next-action 'Create and run the independent fail-if-exists static/save reproduction for session run-d6c4dc15e9f4d15155fee856.'","time":{"start":1789017976222,"end":1789017976292}},"metadata":{"openai":{"itemId":"fc_07cd083d0acf340a016aa23f65774487d1b7bc444886b7b842"}},"id":"prt_089c7a536001kLtzkB87Uvk1yc","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c79911001SkZhojSQLwtSXH"}} +{"type":"step_finish","timestamp":1789017976370,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c7ee2e001jC5Z2MxJjh22Fj","reason":"tool-calls","snapshot":"1aef6b46c0422aa6c4edc53e70e05c381ade3e7a","messageID":"msg_089c79911001SkZhojSQLwtSXH","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":92309,"input":323,"output":594,"reasoning":0,"cache":{"write":0,"read":91392}},"cost":0}} +{"type":"step_start","timestamp":1789017978593,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c7f6de001t1BYd6C8zW0QWD","messageID":"msg_089c7ee64001bLVB7Xcu55tyH0","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"40675ad33dd368ec60e7020ca0020031d026f079","type":"step-start"}} +{"type":"tool_use","timestamp":1789017988120,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"grep","callID":"call_ufsVRCQ6MyxpxlfVR2OHVeL9","state":{"status":"completed","input":{"path":"/home/alex/sots-re/verify","include":"*.py","pattern":"EvNxID|EvEID|EvPos|turn3-state"},"output":"Found 13 matches\n/home/alex/sots-re/verify/save-reader/test_save_reader.py:\n Line 566: @unittest.skipUnless(os.path.exists(os.path.join(REAL, \"turn3-state.sav\")), \"real saves not present\")\n\n Line 579: res3 = sr.read_save(os.path.join(self.REAL, \"turn3-state.sav\"), padding=\"joint\", strict=True)\n\n Line 761: @unittest.skipUnless(os.path.exists(os.path.join(REAL, \"turn3-state.sav\")), \"real saves not present\")\n\n Line 763: res = sr.read_save(os.path.join(self.REAL, \"turn3-state.sav\"), padding=\"joint\", strict=True)\n\n Line 792: @unittest.skipUnless(os.path.exists(os.path.join(REAL, \"turn3-state.sav\")), \"real saves not present\")\n\n Line 799: for name in (\"turn1-state.sav\", \"turn2-state.sav\", \"turn3-state.sav\"):\n\n\n/home/alex/sots-re/verify/state-checksum/state_checksum.py:\n Line 178: ELEM_KEYS = (\"EvTurn\", \"EvEID\", \"ordID\", \"npid\", \"desID\", \"Wpt\", \"seno2\", \"ID\", \"set\")\n\n\n/home/alex/sots-re/verify/state-checksum/test_state_checksum.py:\n Line 309: \"\"\"events.md: the default EvPos is FLT_MAX (0x7f7fffff), not inf.\"\"\"\n\n\n/home/alex/sots-re/verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py:\n Line 13: SAVE = ROOT / \"verify/results/saves/turn3-state.sav\"\n\n Line 156: checksum = json.loads((OUT / \"turn3-state-checksum.json\").read_text())\n\n Line 157: evnx = [x[0][\"value\"] for x in (named(c, \"EvNxID\") for c in containers(save_json)) if x]\n\n Line 161: eid = named(c, \"EvEID\")\n\n Line 173: pos = [x[\"value\"] for x in ev[\"EvPos\"][\"_items\"]]\n","metadata":{"matches":13,"truncated":false},"title":"EvNxID|EvEID|EvPos|turn3-state","time":{"start":1789017988085,"end":1789017988106}},"metadata":{"openai":{"itemId":"fc_0750afdf6b0daabc016aa23f83ea6087d1ad9b5e11d028b29b"}},"id":"prt_089c81bf100126dnUi82fhf6Nw","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c7ee64001bLVB7Xcu55tyH0"}} +{"type":"tool_use","timestamp":1789017988120,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_kSEDUyIvxWIpq1MG26RDwplW","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi-independent/integration-lead-20260910/independent-state.json"},"output":"/home/alex/sots-re/verify/results/research-completion-abi-independent/integration-lead-20260910/independent-state.json\nfile\n\n1: {\n2: \"stats\": {\n3: \"items\": 37847,\n4: \"frames\": 2453,\n5: \"resyncs\": 0,\n6: \"hint_failures\": 0,\n7: \"guessed\": 20104,\n8: \"raw_bytes\": 2503,\n9: \"best_effort\": 0\n10: },\n11: \"evnxid_values\": [\n12: 3,\n13: 4,\n14: 0,\n15: 0,\n16: 0,\n17: 0,\n18: 0,\n19: 0\n20: ],\n21: \"turn3_bucket_counts\": [\n22: 1,\n23: 2\n24: ],\n25: \"event3\": {\n26: \"description\": \"Research Over Budget\",\n27: \"message\": \"Research for Waldo Units has gone overbudget.\",\n28: \"image\": \"EVENT_RESEARCH_OVERBUDGET\",\n29: \"location\": 0,\n30: \"action\": 1,\n31: \"chain\": 0,\n32: \"position_words\": [\n33: 2139095039,\n34: 2139095039,\n35: 2139095039\n36: ]\n37: },\n38: \"coverage\": {\n39: \"ok\": true,\n40: \"rebuiltBytes\": 609080,\n41: \"inflatedBytes\": 609080,\n42: \"firstDiff\": null\n43: },\n44: \"root\": \"e9c161e311f8ef8fad6f1aa1903dcf3f\",\n45: \"rng\": {\n46: \"path\": \"/Sim/RNG\",\n47: \"digest\": \"0978fdf34ff7962f76c2de810dc93e0a\",\n48: \"leaves\": 1,\n49: \"valueBytes\": 2503\n50: },\n51: \"pass\": true\n52: }\n\n(End of file - total 52 lines)\n","metadata":{"preview":"{\n \"stats\": {\n \"items\": 37847,\n \"frames\": 2453,\n \"resyncs\": 0,\n \"hint_failures\": 0,\n \"guessed\": 20104,\n \"raw_bytes\": 2503,\n \"best_effort\": 0\n },\n \"evnxid_values\": [\n 3,\n 4,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ],","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi-independent/integration-lead-20260910/independent-state.json","text":"{\n \"stats\": {\n \"items\": 37847,\n \"frames\": 2453,\n \"resyncs\": 0,\n \"hint_failures\": 0,\n \"guessed\": 20104,\n \"raw_bytes\": 2503,\n \"best_effort\": 0\n },\n \"evnxid_values\": [\n 3,\n 4,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ],\n \"turn3_bucket_counts\": [\n 1,\n 2\n ],\n \"event3\": {\n \"description\": \"Research Over Budget\",\n \"message\": \"Research for Waldo Units has gone overbudget.\",\n \"image\": \"EVENT_RESEARCH_OVERBUDGET\",\n \"location\": 0,\n \"action\": 1,\n \"chain\": 0,\n \"position_words\": [\n 2139095039,\n 2139095039,\n 2139095039\n ]\n },\n \"coverage\": {\n \"ok\": true,\n \"rebuiltBytes\": 609080,\n \"inflatedBytes\": 609080,\n \"firstDiff\": null\n },\n \"root\": \"e9c161e311f8ef8fad6f1aa1903dcf3f\",\n \"rng\": {\n \"path\": \"/Sim/RNG\",\n \"digest\": \"0978fdf34ff7962f76c2de810dc93e0a\",\n \"leaves\": 1,\n \"valueBytes\": 2503\n },\n \"pass\": true\n}","lineStart":1,"lineEnd":52,"totalLines":52,"truncated":false}},"title":"verify/results/research-completion-abi-independent/integration-lead-20260910/independent-state.json","time":{"start":1789017988079,"end":1789017988118}},"metadata":{"openai":{"itemId":"fc_0750afdf6b0daabc016aa23f83ea5487d1ad89827046ab14b8"}},"id":"prt_089c81bec001hUmnaWQ26sr8L1","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c7ee64001bLVB7Xcu55tyH0"}} +{"type":"tool_use","timestamp":1789017988126,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_mZBMGqe7Ka7n1raop5fwGYIO","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/save-reader/save_reader.py","offset":1,"limit":240},"output":"/home/alex/sots-re/verify/save-reader/save_reader.py\nfile\n\n1: #!/usr/bin/env python3\n2: \"\"\"save_reader.py -- reader for Sword of the Stars (2006, v1.8) .sav files.\n3: \n4: The game serializes its world through a self-describing \"Streamable\" stream:\n5: \n6: container whole file is a gzip stream (an already-inflated blob is\n7: accepted too, e.g. R1's *.sav.inflate.dat test artifacts)\n8: named value [int32 len][name bytes] [value] [NUL pad to 4]\n9: complex frame [int32 len][name bytes][NUL pad to 4] 0xBEEFBEEF\n10: ... child items ...\n11: 0x41104110 (= ~0xBEEFBEEF)\n12: arrays a named int32 count followed by count x element; the\n13: \"ComplexArray\" flavour wraps count+elements in a frame\n14: \n15: Everything is little-endian; text is windows-1252. Values carry NO type\n16: byte -- only their name -- so a reader either knows the type from a schema or\n17: has to guess it. This module does both:\n18: \n19: * Walker generic, resync-capable tokenizer. Walks the inflated bytes\n20: as a tree of Node(name, kind, value, offset). Uses the\n21: BEEFBEEF/41104110 frames as hard synchronisation points, a\n22: catalog of known (context, name) -> type hints, and a\n23: lookahead plausibility test for unknown names. Unknown or\n24: malformed regions become `raw` nodes; parsing continues at the\n25: next frame marker or plausible tag. Nothing in the schema is\n26: required for the walk to succeed.\n27: * Shapes the recovered struct field orders (Summary, CreateParams,\n28: Sim -> Player / Sys / Flt / Ship ..., CDT) applied on top of\n29: the generic tree to produce typed dicts. Fields marked A()\n30: carry binary-confirmed on-disk names (struct-recovery.md,\n31: schema-gaps-resolved.md) and are matched by name; fields marked\n32: R() are matched by position (NULL-named \".\" items, or names\n33: known only from the community editor).\n34: \n35: Padding convention: the NUL padding is computed over the whole item (\"joint\":\n36: [len][name][value][pad]) -- confirmed on the real saves. The alternative\n37: (\"split\": pad after the name and after the value) is kept for --padding auto,\n38: which walks the file both ways and keeps the cleaner parse.\n39: \n40: Two facts about string VALUES matter for the plausibility test: they may be\n41: empty (len 0 = four zero bytes, byte-identical to int 0) and they may hold any\n42: windows-1252 byte (system names use 0x92 = right single quote). Only TAG bytes\n43: are constrained to printable ASCII; a value never vetoes a layout. Items the\n44: game writes with a NULL name carry the tag \".\". See SAVE_FORMAT.md and\n45: findings/objects/schema-gaps-resolved.md.\n46: \n47: usage: save_reader.py SAVE [--dump] [--json] [--strict] [--padding MODE]\n48: [--out FILE] [--inflate FILE]\n49: \n50: Stdlib only.\n51: \"\"\"\n52: from __future__ import annotations\n53: \n54: import argparse\n55: import gzip\n56: import json\n57: import math\n58: import struct\n59: import sys\n60: import zlib\n61: from typing import Any, Callable, Optional\n62: \n63: __all__ = [\n64: \"BEGIN_MARK\", \"END_MARK\", \"SaveFormatError\", \"Issue\", \"Node\", \"Walker\",\n65: \"Shape\", \"Seq\", \"CArr\", \"NArr\", \"If\", \"Opt\", \"Until\", \"Repeat\", \"Rest\", \"A\", \"R\",\n66: \"ROOT\", \"apply_schema\", \"read_save\", \"read_bytes\", \"inflate\", \"dump_tree\",\n67: \"plain\", \"pad4\",\n68: ]\n69: \n70: BEGIN_MARK = 0xBEEFBEEF\n71: END_MARK = 0x41104110\n72: BEGIN_BYTES = struct.pack(\" classified as int, not float\n81: \n82: \n83: def pad4(n: int) -> int:\n84: return (n + 3) & ~3\n85: \n86: \n87: class SaveFormatError(ValueError):\n88: def __init__(self, msg: str, offset: Optional[int] = None):\n89: self.offset = offset\n90: if offset is not None:\n91: msg = f\"{msg} (at inflated offset 0x{offset:x})\"\n92: super().__init__(msg)\n93: \n94: \n95: class Issue:\n96: __slots__ = (\"level\", \"path\", \"offset\", \"msg\")\n97: \n98: def __init__(self, level: str, path: str, offset: int, msg: str):\n99: self.level, self.path, self.offset, self.msg = level, path, offset, msg\n100: \n101: def __repr__(self) -> str:\n102: return f\"[{self.level}] @0x{self.offset:x} {self.path}: {self.msg}\"\n103: \n104: def as_dict(self) -> dict:\n105: return {\"level\": self.level, \"path\": self.path, \"offset\": self.offset, \"msg\": self.msg}\n106: \n107: \n108: class Node:\n109: \"\"\"One item of the generic tree. kind is one of PRIMITIVES, 'complex' or 'raw'.\"\"\"\n110: __slots__ = (\"name\", \"kind\", \"value\", \"offset\", \"size\", \"children\", \"raw\", \"alt\", \"hinted\")\n111: \n112: def __init__(self, name, kind, value=None, offset=0, size=0, children=None,\n113: raw=b\"\", alt=None, hinted=False):\n114: self.name = name # str, \"\" for an empty tag, None for a tagless frame\n115: self.kind = kind\n116: self.value = value\n117: self.offset = offset # inflated offset of the item's tag (or frame marker)\n118: self.size = size # bytes consumed incl. tag, padding and frame markers\n119: self.children = children if children is not None else []\n120: self.raw = raw # value bytes (scalars / raw) for re-typing\n121: self.alt = alt # alternative reading of a 4-byte word\n122: self.hinted = hinted # type came from the catalog/schema, not a guess\n123: \n124: @property\n125: def is_complex(self) -> bool:\n126: return self.kind == \"complex\"\n127: \n128: def __repr__(self) -> str:\n129: return f\"Node({self.name!r}, {self.kind}, {self.value!r} @0x{self.offset:x})\"\n130: \n131: \n132: # --- container ---------------------------------------------------------------\n133: \n134: def inflate(data: bytes) -> bytes:\n135: \"\"\"gzip -> bytes. Data without the gzip magic is returned unchanged.\"\"\"\n136: if data[:2] == b\"\\x1f\\x8b\":\n137: try:\n138: return gzip.decompress(data)\n139: except (EOFError, OSError, zlib.error) as e:\n140: raise SaveFormatError(f\"gzip container is damaged: {e}\") from None\n141: return data\n142: \n143: \n144: # --- schema description objects ---------------------------------------------\n145: # Field types: a primitive name, \"vec3\" (frame of 3 floats, named or not),\n146: # \"any\" (keep generic), \"raw\", a Shape (framed struct), Seq (unframed group),\n147: # CArr (framed count+elements), NArr (unframed count+elements).\n148: \n149: class Field:\n150: __slots__ = (\"name\", \"type\", \"key\", \"auth\", \"flex\")\n151: \n152: def __init__(self, name, type_, key=None, auth=False, flex=False):\n153: self.name = name # expected on-disk tag (auth) or R1 name (not auth)\n154: self.type = type_\n155: self.key = key or name # key in the typed dict\n156: self.auth = auth\n157: self.flex = flex # Shape/CArr may also appear inline (unframed)\n158: \n159: def __repr__(self):\n160: return f\"{'A' if self.auth else 'R'}({self.name!r})\"\n161: \n162: \n163: def A(name, type_, key=None, flex=False) -> Field:\n164: \"\"\"Field whose on-disk name is binary-confirmed (struct-recovery.md).\"\"\"\n165: return Field(name, type_, key, auth=True, flex=flex)\n166: \n167: \n168: def R(name, type_, key=None, flex=False) -> Field:\n169: \"\"\"Field known only by the community editor's C# name (matched by position).\"\"\"\n170: return Field(name, type_, key, auth=False, flex=flex)\n171: \n172: \n173: class Seq:\n174: \"\"\"Unframed ordered group of fields (R1 'leaf' structs, array element bodies).\"\"\"\n175: __slots__ = (\"fields\",)\n176: \n177: def __init__(self, fields):\n178: self.fields = list(fields)\n179: \n180: \n181: class Shape:\n182: \"\"\"Framed struct: name tag + BEEFBEEF + fields + 41104110.\"\"\"\n183: __slots__ = (\"name\", \"fields\", \"_prefix\", \"_by_name\")\n184: \n185: def __init__(self, name, fields):\n186: self.name = name\n187: self.fields = list(fields)\n188: self._prefix = None\n189: self._by_name = None\n190: \n191: def prefix(self) -> list:\n192: \"\"\"Positional child hints up to the first variable-length construct.\"\"\"\n193: if self._prefix is None:\n194: self._prefix = _prefix_of(self.fields)\n195: return self._prefix\n196: \n197: def by_name(self) -> dict:\n198: if self._by_name is None:\n199: d = {}\n200: _collect_names(self.fields, d)\n201: self._by_name = d\n202: return self._by_name\n203: \n204: \n205: class CArr:\n206: __slots__ = (\"elem\",)\n207: \n208: def __init__(self, elem):\n209: self.elem = elem # primitive, Shape, Seq, or Field\n210: \n211: \n212: class NArr:\n213: __slots__ = (\"elem\",)\n214: \n215: def __init__(self, elem):\n216: self.elem = elem\n217: \n218: \n219: class If:\n220: \"\"\"Conditional group: parsed iff out[key] == equals (default True), or,\n221: with greater_than=N, iff out[key] is a number > N (e.g. PrMax > 0).\"\"\"\n222: __slots__ = (\"key\", \"inner\", \"equals\", \"greater_than\")\n223: \n224: def __init__(self, key, inner, equals=True, greater_than=None):\n225: self.key, self.inner, self.equals, self.greater_than = key, inner, equals, greater_than\n226: \n227: def holds(self, out: dict) -> bool:\n228: v = out.get(self.key)\n229: if self.greater_than is not None:\n230: return isinstance(v, (int, float)) and not isinstance(v, bool) and v > self.greater_than\n231: return v == self.equals\n232: \n233: \n234: class Opt:\n235: \"\"\"Optional named item: consumed only when the next tag matches.\"\"\"\n236: __slots__ = (\"field\",)\n237: \n238: def __init__(self, name, type_, key=None):\n239: self.field = Field(name, type_, key, auth=True)\n240: \n\n(Showing lines 1-240 of 1612. Use offset=241 to continue.)\n","metadata":{"preview":"#!/usr/bin/env python3\n\"\"\"save_reader.py -- reader for Sword of the Stars (2006, v1.8) .sav files.\n\nThe game serializes its world through a self-describing \"Streamable\" stream:\n\n container whole file is a gzip stream (an already-inflated blob is\n accepted too, e.g. R1's *.sav.inflate.dat test artifacts)\n named value [int32 len][name bytes] [value] [NUL pad to 4]\n complex frame [int32 len][name bytes][NUL pad to 4] 0xBEEFBEEF\n ... child items ...\n 0x41104110 (= ~0xBEEFBEEF)\n arrays a named int32 count followed by count x element; the\n \"ComplexArray\" flavour wraps count+elements in a frame\n\nEverything is little-endian; text is windows-1252. Values carry NO type\nbyte -- only their name -- so a reader either knows the type from a schema or\nhas to guess it. This module does both:\n\n * Walker generic, resync-capable tokenizer. Walks the inflated bytes\n as a tree of Node(name, kind, value, offset). Uses the","truncated":true,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/save-reader/save_reader.py","text":"#!/usr/bin/env python3\n\"\"\"save_reader.py -- reader for Sword of the Stars (2006, v1.8) .sav files.\n\nThe game serializes its world through a self-describing \"Streamable\" stream:\n\n container whole file is a gzip stream (an already-inflated blob is\n accepted too, e.g. R1's *.sav.inflate.dat test artifacts)\n named value [int32 len][name bytes] [value] [NUL pad to 4]\n complex frame [int32 len][name bytes][NUL pad to 4] 0xBEEFBEEF\n ... child items ...\n 0x41104110 (= ~0xBEEFBEEF)\n arrays a named int32 count followed by count x element; the\n \"ComplexArray\" flavour wraps count+elements in a frame\n\nEverything is little-endian; text is windows-1252. Values carry NO type\nbyte -- only their name -- so a reader either knows the type from a schema or\nhas to guess it. This module does both:\n\n * Walker generic, resync-capable tokenizer. Walks the inflated bytes\n as a tree of Node(name, kind, value, offset). Uses the\n BEEFBEEF/41104110 frames as hard synchronisation points, a\n catalog of known (context, name) -> type hints, and a\n lookahead plausibility test for unknown names. Unknown or\n malformed regions become `raw` nodes; parsing continues at the\n next frame marker or plausible tag. Nothing in the schema is\n required for the walk to succeed.\n * Shapes the recovered struct field orders (Summary, CreateParams,\n Sim -> Player / Sys / Flt / Ship ..., CDT) applied on top of\n the generic tree to produce typed dicts. Fields marked A()\n carry binary-confirmed on-disk names (struct-recovery.md,\n schema-gaps-resolved.md) and are matched by name; fields marked\n R() are matched by position (NULL-named \".\" items, or names\n known only from the community editor).\n\nPadding convention: the NUL padding is computed over the whole item (\"joint\":\n[len][name][value][pad]) -- confirmed on the real saves. The alternative\n(\"split\": pad after the name and after the value) is kept for --padding auto,\nwhich walks the file both ways and keeps the cleaner parse.\n\nTwo facts about string VALUES matter for the plausibility test: they may be\nempty (len 0 = four zero bytes, byte-identical to int 0) and they may hold any\nwindows-1252 byte (system names use 0x92 = right single quote). Only TAG bytes\nare constrained to printable ASCII; a value never vetoes a layout. Items the\ngame writes with a NULL name carry the tag \".\". See SAVE_FORMAT.md and\nfindings/objects/schema-gaps-resolved.md.\n\nusage: save_reader.py SAVE [--dump] [--json] [--strict] [--padding MODE]\n [--out FILE] [--inflate FILE]\n\nStdlib only.\n\"\"\"\nfrom __future__ import annotations\n\nimport argparse\nimport gzip\nimport json\nimport math\nimport struct\nimport sys\nimport zlib\nfrom typing import Any, Callable, Optional\n\n__all__ = [\n \"BEGIN_MARK\", \"END_MARK\", \"SaveFormatError\", \"Issue\", \"Node\", \"Walker\",\n \"Shape\", \"Seq\", \"CArr\", \"NArr\", \"If\", \"Opt\", \"Until\", \"Repeat\", \"Rest\", \"A\", \"R\",\n \"ROOT\", \"apply_schema\", \"read_save\", \"read_bytes\", \"inflate\", \"dump_tree\",\n \"plain\", \"pad4\",\n]\n\nBEGIN_MARK = 0xBEEFBEEF\nEND_MARK = 0x41104110\nBEGIN_BYTES = struct.pack(\" classified as int, not float\n\n\ndef pad4(n: int) -> int:\n return (n + 3) & ~3\n\n\nclass SaveFormatError(ValueError):\n def __init__(self, msg: str, offset: Optional[int] = None):\n self.offset = offset\n if offset is not None:\n msg = f\"{msg} (at inflated offset 0x{offset:x})\"\n super().__init__(msg)\n\n\nclass Issue:\n __slots__ = (\"level\", \"path\", \"offset\", \"msg\")\n\n def __init__(self, level: str, path: str, offset: int, msg: str):\n self.level, self.path, self.offset, self.msg = level, path, offset, msg\n\n def __repr__(self) -> str:\n return f\"[{self.level}] @0x{self.offset:x} {self.path}: {self.msg}\"\n\n def as_dict(self) -> dict:\n return {\"level\": self.level, \"path\": self.path, \"offset\": self.offset, \"msg\": self.msg}\n\n\nclass Node:\n \"\"\"One item of the generic tree. kind is one of PRIMITIVES, 'complex' or 'raw'.\"\"\"\n __slots__ = (\"name\", \"kind\", \"value\", \"offset\", \"size\", \"children\", \"raw\", \"alt\", \"hinted\")\n\n def __init__(self, name, kind, value=None, offset=0, size=0, children=None,\n raw=b\"\", alt=None, hinted=False):\n self.name = name # str, \"\" for an empty tag, None for a tagless frame\n self.kind = kind\n self.value = value\n self.offset = offset # inflated offset of the item's tag (or frame marker)\n self.size = size # bytes consumed incl. tag, padding and frame markers\n self.children = children if children is not None else []\n self.raw = raw # value bytes (scalars / raw) for re-typing\n self.alt = alt # alternative reading of a 4-byte word\n self.hinted = hinted # type came from the catalog/schema, not a guess\n\n @property\n def is_complex(self) -> bool:\n return self.kind == \"complex\"\n\n def __repr__(self) -> str:\n return f\"Node({self.name!r}, {self.kind}, {self.value!r} @0x{self.offset:x})\"\n\n\n# --- container ---------------------------------------------------------------\n\ndef inflate(data: bytes) -> bytes:\n \"\"\"gzip -> bytes. Data without the gzip magic is returned unchanged.\"\"\"\n if data[:2] == b\"\\x1f\\x8b\":\n try:\n return gzip.decompress(data)\n except (EOFError, OSError, zlib.error) as e:\n raise SaveFormatError(f\"gzip container is damaged: {e}\") from None\n return data\n\n\n# --- schema description objects ---------------------------------------------\n# Field types: a primitive name, \"vec3\" (frame of 3 floats, named or not),\n# \"any\" (keep generic), \"raw\", a Shape (framed struct), Seq (unframed group),\n# CArr (framed count+elements), NArr (unframed count+elements).\n\nclass Field:\n __slots__ = (\"name\", \"type\", \"key\", \"auth\", \"flex\")\n\n def __init__(self, name, type_, key=None, auth=False, flex=False):\n self.name = name # expected on-disk tag (auth) or R1 name (not auth)\n self.type = type_\n self.key = key or name # key in the typed dict\n self.auth = auth\n self.flex = flex # Shape/CArr may also appear inline (unframed)\n\n def __repr__(self):\n return f\"{'A' if self.auth else 'R'}({self.name!r})\"\n\n\ndef A(name, type_, key=None, flex=False) -> Field:\n \"\"\"Field whose on-disk name is binary-confirmed (struct-recovery.md).\"\"\"\n return Field(name, type_, key, auth=True, flex=flex)\n\n\ndef R(name, type_, key=None, flex=False) -> Field:\n \"\"\"Field known only by the community editor's C# name (matched by position).\"\"\"\n return Field(name, type_, key, auth=False, flex=flex)\n\n\nclass Seq:\n \"\"\"Unframed ordered group of fields (R1 'leaf' structs, array element bodies).\"\"\"\n __slots__ = (\"fields\",)\n\n def __init__(self, fields):\n self.fields = list(fields)\n\n\nclass Shape:\n \"\"\"Framed struct: name tag + BEEFBEEF + fields + 41104110.\"\"\"\n __slots__ = (\"name\", \"fields\", \"_prefix\", \"_by_name\")\n\n def __init__(self, name, fields):\n self.name = name\n self.fields = list(fields)\n self._prefix = None\n self._by_name = None\n\n def prefix(self) -> list:\n \"\"\"Positional child hints up to the first variable-length construct.\"\"\"\n if self._prefix is None:\n self._prefix = _prefix_of(self.fields)\n return self._prefix\n\n def by_name(self) -> dict:\n if self._by_name is None:\n d = {}\n _collect_names(self.fields, d)\n self._by_name = d\n return self._by_name\n\n\nclass CArr:\n __slots__ = (\"elem\",)\n\n def __init__(self, elem):\n self.elem = elem # primitive, Shape, Seq, or Field\n\n\nclass NArr:\n __slots__ = (\"elem\",)\n\n def __init__(self, elem):\n self.elem = elem\n\n\nclass If:\n \"\"\"Conditional group: parsed iff out[key] == equals (default True), or,\n with greater_than=N, iff out[key] is a number > N (e.g. PrMax > 0).\"\"\"\n __slots__ = (\"key\", \"inner\", \"equals\", \"greater_than\")\n\n def __init__(self, key, inner, equals=True, greater_than=None):\n self.key, self.inner, self.equals, self.greater_than = key, inner, equals, greater_than\n\n def holds(self, out: dict) -> bool:\n v = out.get(self.key)\n if self.greater_than is not None:\n return isinstance(v, (int, float)) and not isinstance(v, bool) and v > self.greater_than\n return v == self.equals\n\n\nclass Opt:\n \"\"\"Optional named item: consumed only when the next tag matches.\"\"\"\n __slots__ = (\"field\",)\n\n def __init__(self, name, type_, key=None):\n self.field = Field(name, type_, key, auth=True)\n","lineStart":1,"lineEnd":240,"totalLines":1612,"truncated":true}},"title":"verify/save-reader/save_reader.py","time":{"start":1789017988074,"end":1789017988122}},"metadata":{"openai":{"itemId":"fc_0750afdf6b0daabc016aa23f83ea4487d1b7c7dfcb12a95885"}},"id":"prt_089c81bc20016ZM9p84cjfU2hB","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c7ee64001bLVB7Xcu55tyH0"}} +{"type":"tool_use","timestamp":1789017988126,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_VhrjYziZmeoaPH95Ox2ARW52","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/report.md"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/report.md\nfile\n\n1: # Ownership-window provenance repair\n2: \n3: Static local capture only. This run implements the six-capture probe and remaining ownership-window\n4: boundary audit required by Astra decision `d-d4c494ba02ada278030ef473`. It does not execute the game,\n5: an allocator, a constructor, a copy, a destructor, or an exception path.\n6: \n7: ## Bound identities\n8: \n9: * Input: `dumps/sots.exe`, 7,898,624 bytes, SHA-256\n10: `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`, MD5\n11: `9969481c39f4b33a8a21c48b62abee4c`.\n12: * Tool: `/usr/bin/objdump`, SHA-256\n13: `1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd`, GNU Binutils 2.38.\n14: * CWD: `/home/alex/sots-re`; exact argv, return codes, stream paths/sizes/hashes and paired source\n15: binding are in `manifest.json`.\n16: * Source binding before and after capture: engine\n17: `ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd`, RE\n18: `6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8`.\n19: \n20: ## Measured observations\n21: \n22: All 22 objdump commands exited zero and every stderr stream is empty. For each paired row below,\n23: `comparison.json` reports that every line before the terminal line is identical.\n24: \n25: | function/window | historical stop | widened stop | narrow terminal bytes | widened/raw bytes |\n26: |---|---:|---:|---|---|\n27: | allocator `0x0057e590` | `0x0057e5e4` | `0x0057e5e6` | `c2` | `c2 04 00` |\n28: | PlayerEvent append `0x0086c580` | `0x0086c62e` | `0x0086c630` | `c2` | `c2 04 00` |\n29: | PlayerEvent copy `0x007693f0` | `0x007694c0` | `0x007694c2` | `c2` | `c2 04 00` |\n30: | ObservedTech append `0x007b7320` | `0x007b739f` | `0x007b73a1` | `c2` | `c2 04 00` |\n31: | ObservedTech reallocator `0x007b34e0` | `0x007b35ef` | `0x007b35f1` | `c2` | `c2 04 00` |\n32: | string allocator/replace `0x004249a0` | `0x00424ada` | `0x00424adc` | `c2` | `c2 08 00` |\n33: \n34: The audit also freshly retained complete historical-stop streams for the ObservedTech constructor\n35: (`c3`), ObservedTech copy helper (`c3`), PlayerEvent destructor (`c3`), and import-thunk window\n36: (complete six-byte jump at `0x00924fb6`). Thus six of ten audited ownership windows ended on a\n37: three-byte `ret imm16`; all six historical stops admitted only its first byte. The selected 2026-09-09\n38: archive happened to print complete terminal rows, but these fresh captures do not establish how that\n39: archive was produced.\n40: \n41: ## Bounded interpretation and unresolved inputs\n42: \n43: Complete image bytes establish encoded `ret 4` for the allocator, both append operations, the\n44: PlayerEvent copy operation and the ObservedTech reallocator, and `ret 8` for string allocation/\n45: replacement. This repairs command-to-byte provenance. It does not by itself prove receiver meaning,\n46: field semantics, live allocator-family compatibility, successful long-string/full-capacity behavior,\n47: or exceptional cleanup.\n48: \n49: The callable original-helper dependencies remain the original MSVCR100 allocation/deallocation\n50: thunks `0x00924fb6`/`0x00924faa`, string assignment/allocation boundary\n51: `0x00425430`/`0x004249a0`, ObservedTech copy helper `0x0079a150`, PlayerEvent copy helper\n52: `0x007693f0`, and the virtual element destructors reached during growth. A standalone implementation\n53: must supply one coherent allocation/copy/destruction family rather than mix raw headers with these\n54: original-owned allocations.\n55: \n56: Missing runtime inputs remain: safe short/long-string fixtures, spare/full-capacity vectors,\n57: pre/post element and pointer ownership observations, allocation-failure/throw outcomes, and\n58: same-bucket equal versus description-only-different events. No RNG boundary is present in these\n59: helpers and no RNG draw occurred because nothing was executed live.\n60: \n61: Independent verification must reproduce complete windows from the pinned input/tool, challenge at\n62: least one historical stop and one complete stop, and retain the distinct empty/full, short/long,\n63: duplicate/nonduplicate and unwind limitations. This analyst does not promote either acceptance\n64: criterion.\n\n(End of file - total 64 lines)\n","metadata":{"preview":"# Ownership-window provenance repair\n\nStatic local capture only. This run implements the six-capture probe and remaining ownership-window\nboundary audit required by Astra decision `d-d4c494ba02ada278030ef473`. It does not execute the game,\nan allocator, a constructor, a copy, a destructor, or an exception path.\n\n## Bound identities\n\n* Input: `dumps/sots.exe`, 7,898,624 bytes, SHA-256\n `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`, MD5\n `9969481c39f4b33a8a21c48b62abee4c`.\n* Tool: `/usr/bin/objdump`, SHA-256\n `1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd`, GNU Binutils 2.38.\n* CWD: `/home/alex/sots-re`; exact argv, return codes, stream paths/sizes/hashes and paired source\n binding are in `manifest.json`.\n* Source binding before and after capture: engine\n `ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd`, RE\n `6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8`.\n\n## Measured observations","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/report.md","text":"# Ownership-window provenance repair\n\nStatic local capture only. This run implements the six-capture probe and remaining ownership-window\nboundary audit required by Astra decision `d-d4c494ba02ada278030ef473`. It does not execute the game,\nan allocator, a constructor, a copy, a destructor, or an exception path.\n\n## Bound identities\n\n* Input: `dumps/sots.exe`, 7,898,624 bytes, SHA-256\n `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`, MD5\n `9969481c39f4b33a8a21c48b62abee4c`.\n* Tool: `/usr/bin/objdump`, SHA-256\n `1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd`, GNU Binutils 2.38.\n* CWD: `/home/alex/sots-re`; exact argv, return codes, stream paths/sizes/hashes and paired source\n binding are in `manifest.json`.\n* Source binding before and after capture: engine\n `ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd`, RE\n `6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8`.\n\n## Measured observations\n\nAll 22 objdump commands exited zero and every stderr stream is empty. For each paired row below,\n`comparison.json` reports that every line before the terminal line is identical.\n\n| function/window | historical stop | widened stop | narrow terminal bytes | widened/raw bytes |\n|---|---:|---:|---|---|\n| allocator `0x0057e590` | `0x0057e5e4` | `0x0057e5e6` | `c2` | `c2 04 00` |\n| PlayerEvent append `0x0086c580` | `0x0086c62e` | `0x0086c630` | `c2` | `c2 04 00` |\n| PlayerEvent copy `0x007693f0` | `0x007694c0` | `0x007694c2` | `c2` | `c2 04 00` |\n| ObservedTech append `0x007b7320` | `0x007b739f` | `0x007b73a1` | `c2` | `c2 04 00` |\n| ObservedTech reallocator `0x007b34e0` | `0x007b35ef` | `0x007b35f1` | `c2` | `c2 04 00` |\n| string allocator/replace `0x004249a0` | `0x00424ada` | `0x00424adc` | `c2` | `c2 08 00` |\n\nThe audit also freshly retained complete historical-stop streams for the ObservedTech constructor\n(`c3`), ObservedTech copy helper (`c3`), PlayerEvent destructor (`c3`), and import-thunk window\n(complete six-byte jump at `0x00924fb6`). Thus six of ten audited ownership windows ended on a\nthree-byte `ret imm16`; all six historical stops admitted only its first byte. The selected 2026-09-09\narchive happened to print complete terminal rows, but these fresh captures do not establish how that\narchive was produced.\n\n## Bounded interpretation and unresolved inputs\n\nComplete image bytes establish encoded `ret 4` for the allocator, both append operations, the\nPlayerEvent copy operation and the ObservedTech reallocator, and `ret 8` for string allocation/\nreplacement. This repairs command-to-byte provenance. It does not by itself prove receiver meaning,\nfield semantics, live allocator-family compatibility, successful long-string/full-capacity behavior,\nor exceptional cleanup.\n\nThe callable original-helper dependencies remain the original MSVCR100 allocation/deallocation\nthunks `0x00924fb6`/`0x00924faa`, string assignment/allocation boundary\n`0x00425430`/`0x004249a0`, ObservedTech copy helper `0x0079a150`, PlayerEvent copy helper\n`0x007693f0`, and the virtual element destructors reached during growth. A standalone implementation\nmust supply one coherent allocation/copy/destruction family rather than mix raw headers with these\noriginal-owned allocations.\n\nMissing runtime inputs remain: safe short/long-string fixtures, spare/full-capacity vectors,\npre/post element and pointer ownership observations, allocation-failure/throw outcomes, and\nsame-bucket equal versus description-only-different events. No RNG boundary is present in these\nhelpers and no RNG draw occurred because nothing was executed live.\n\nIndependent verification must reproduce complete windows from the pinned input/tool, challenge at\nleast one historical stop and one complete stop, and retain the distinct empty/full, short/long,\nduplicate/nonduplicate and unwind limitations. This analyst does not promote either acceptance\ncriterion.","lineStart":1,"lineEnd":64,"totalLines":64,"truncated":false}},"title":"verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/report.md","time":{"start":1789017988094,"end":1789017988125}},"metadata":{"openai":{"itemId":"fc_0750afdf6b0daabc016aa23f83ea6887d1bc3abfe964837ed0"}},"id":"prt_089c81bfa001YbU4W6NylSlb4n","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c7ee64001bLVB7Xcu55tyH0"}} +{"type":"step_finish","timestamp":1789017988288,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c81cbd001DWle1Zwy3OlTJ2","reason":"tool-calls","snapshot":"10eae3cb2b2f7575f0532d57a09693661d357ebf","messageID":"msg_089c7ee64001bLVB7Xcu55tyH0","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":93341,"input":1527,"output":191,"reasoning":103,"cache":{"write":0,"read":91520}},"cost":0}} +{"type":"step_start","timestamp":1789017990083,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c823ba001X35doAfrUXIahP","messageID":"msg_089c81cf6001cAetn907SNyPUZ","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"49d39a11570181dd74e41cedf108b0897f2971cd","type":"step-start"}} +{"type":"tool_use","timestamp":1789017996679,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_38jQqXOOFrEnEkLrKW9winFp","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py","offset":1,"limit":240},"output":"/home/alex/sots-re/verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py\nfile\n\n1: #!/usr/bin/env python3\n2: \"\"\"Fresh verifier-owned ABI/static-state reproduction; refuses overwrite.\"\"\"\n3: import hashlib\n4: import json\n5: import pathlib\n6: import struct\n7: import subprocess\n8: \n9: ROOT = pathlib.Path(\"/home/alex/sots-re\")\n10: SESSION = \"run-7d85d45cb2196e07025e5096\"\n11: OUT = ROOT / \"verify/results/research-completion-abi-independent\" / SESSION\n12: EXE = ROOT / \"dumps/sots.exe\"\n13: SAVE = ROOT / \"verify/results/saves/turn3-state.sav\"\n14: OBJDUMP = pathlib.Path(\"/usr/bin/objdump\")\n15: \n16: WINDOWS = [\n17: (\"observed-alloc-narrow\", 0x57E590, 0x57E5E4),\n18: (\"observed-alloc-wide\", 0x57E590, 0x57E5E6),\n19: (\"player-append-narrow\", 0x86C580, 0x86C62E),\n20: (\"player-append-wide\", 0x86C580, 0x86C630),\n21: (\"player-copy-narrow\", 0x7693F0, 0x7694C0),\n22: (\"player-copy-wide\", 0x7693F0, 0x7694C2),\n23: (\"observed-push-narrow\", 0x7B7320, 0x7B739F),\n24: (\"observed-push-wide\", 0x7B7320, 0x7B73A1),\n25: (\"observed-realloc-narrow\", 0x7B34E0, 0x7B35EF),\n26: (\"observed-realloc-wide\", 0x7B34E0, 0x7B35F1),\n27: (\"string-alloc-narrow\", 0x4249A0, 0x424ADA),\n28: (\"string-alloc-wide\", 0x4249A0, 0x424ADC),\n29: (\"observed-ctor-control\", 0x8562A0, 0x85630D),\n30: (\"observed-copy-control\", 0x79A150, 0x79A1D9),\n31: (\"player-dtor-control\", 0x61AE90, 0x61AEFC),\n32: (\"import-thunks-control\", 0x924FAA, 0x924FBC),\n33: (\"dedup-narrow\", 0x825D40, 0x825E65),\n34: (\"dedup-wide\", 0x825D40, 0x825E67),\n35: (\"string-not-equal\", 0x46F8C0, 0x46F8F0),\n36: (\"string-compare\", 0x4236A0, 0x42370D),\n37: (\"byte-compare\", 0x422720, 0x422796),\n38: (\"player-ctor\", 0x84EE30, 0x84EEF4),\n39: ]\n40: EXPECTED = {\n41: \"observed-alloc\": \"c2 04 00\", \"player-append\": \"c2 04 00\",\n42: \"player-copy\": \"c2 04 00\", \"observed-push\": \"c2 04 00\",\n43: \"observed-realloc\": \"c2 04 00\", \"string-alloc\": \"c2 08 00\",\n44: \"dedup\": \"c2 08 00\",\n45: }\n46: DIRECT = {\n47: \"observed-alloc\": (0x57E5E3, \"c20400\"),\n48: \"player-append\": (0x86C62D, \"c20400\"),\n49: \"player-copy\": (0x7694BF, \"c20400\"),\n50: \"observed-push\": (0x7B739E, \"c20400\"),\n51: \"observed-realloc\": (0x7B35EE, \"c20400\"),\n52: \"string-alloc\": (0x424AD9, \"c20800\"),\n53: \"dedup\": (0x825E64, \"c20800\"),\n54: \"plain-ret\": (0x85630C, \"c3\"),\n55: \"constructor-defaults\": (0xAF0DC8, \"ffff7f7fffff7f7fffff7f7f\"),\n56: }\n57: \n58: def sha(data):\n59: return hashlib.sha256(data).hexdigest()\n60: \n61: def rows(data):\n62: return [x.rstrip() for x in data.splitlines()\n63: if b\":\" in x and x.lstrip()[:1].isdigit()]\n64: \n65: def pe_reader(data):\n66: pe = struct.unpack_from(\" 0\n207: and x[\"stderr\"][\"bytes\"] == 0\n208: for x in records + tool_runs),\n209: \"all_boundary_predictions_hold\": all(x[\"pass\"] for x in comparisons),\n210: \"direct_pe_challenge_pass\": all(x[\"pass\"] for x in direct),\n211: \"independent_state_pass\": state[\"pass\"]}\n212: (OUT / \"manifest.json\").write_text(json.dumps(manifest, indent=2) + \"\\n\")\n213: if not all((manifest[\"all_processes_positive\"], manifest[\"all_boundary_predictions_hold\"],\n214: manifest[\"direct_pe_challenge_pass\"], manifest[\"independent_state_pass\"])):\n215: raise SystemExit(1)\n\n(End of file - total 215 lines)\n","metadata":{"preview":"#!/usr/bin/env python3\n\"\"\"Fresh verifier-owned ABI/static-state reproduction; refuses overwrite.\"\"\"\nimport hashlib\nimport json\nimport pathlib\nimport struct\nimport subprocess\n\nROOT = pathlib.Path(\"/home/alex/sots-re\")\nSESSION = \"run-7d85d45cb2196e07025e5096\"\nOUT = ROOT / \"verify/results/research-completion-abi-independent\" / SESSION\nEXE = ROOT / \"dumps/sots.exe\"\nSAVE = ROOT / \"verify/results/saves/turn3-state.sav\"\nOBJDUMP = pathlib.Path(\"/usr/bin/objdump\")\n\nWINDOWS = [\n (\"observed-alloc-narrow\", 0x57E590, 0x57E5E4),\n (\"observed-alloc-wide\", 0x57E590, 0x57E5E6),\n (\"player-append-narrow\", 0x86C580, 0x86C62E),\n (\"player-append-wide\", 0x86C580, 0x86C630),","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py","text":"#!/usr/bin/env python3\n\"\"\"Fresh verifier-owned ABI/static-state reproduction; refuses overwrite.\"\"\"\nimport hashlib\nimport json\nimport pathlib\nimport struct\nimport subprocess\n\nROOT = pathlib.Path(\"/home/alex/sots-re\")\nSESSION = \"run-7d85d45cb2196e07025e5096\"\nOUT = ROOT / \"verify/results/research-completion-abi-independent\" / SESSION\nEXE = ROOT / \"dumps/sots.exe\"\nSAVE = ROOT / \"verify/results/saves/turn3-state.sav\"\nOBJDUMP = pathlib.Path(\"/usr/bin/objdump\")\n\nWINDOWS = [\n (\"observed-alloc-narrow\", 0x57E590, 0x57E5E4),\n (\"observed-alloc-wide\", 0x57E590, 0x57E5E6),\n (\"player-append-narrow\", 0x86C580, 0x86C62E),\n (\"player-append-wide\", 0x86C580, 0x86C630),\n (\"player-copy-narrow\", 0x7693F0, 0x7694C0),\n (\"player-copy-wide\", 0x7693F0, 0x7694C2),\n (\"observed-push-narrow\", 0x7B7320, 0x7B739F),\n (\"observed-push-wide\", 0x7B7320, 0x7B73A1),\n (\"observed-realloc-narrow\", 0x7B34E0, 0x7B35EF),\n (\"observed-realloc-wide\", 0x7B34E0, 0x7B35F1),\n (\"string-alloc-narrow\", 0x4249A0, 0x424ADA),\n (\"string-alloc-wide\", 0x4249A0, 0x424ADC),\n (\"observed-ctor-control\", 0x8562A0, 0x85630D),\n (\"observed-copy-control\", 0x79A150, 0x79A1D9),\n (\"player-dtor-control\", 0x61AE90, 0x61AEFC),\n (\"import-thunks-control\", 0x924FAA, 0x924FBC),\n (\"dedup-narrow\", 0x825D40, 0x825E65),\n (\"dedup-wide\", 0x825D40, 0x825E67),\n (\"string-not-equal\", 0x46F8C0, 0x46F8F0),\n (\"string-compare\", 0x4236A0, 0x42370D),\n (\"byte-compare\", 0x422720, 0x422796),\n (\"player-ctor\", 0x84EE30, 0x84EEF4),\n]\nEXPECTED = {\n \"observed-alloc\": \"c2 04 00\", \"player-append\": \"c2 04 00\",\n \"player-copy\": \"c2 04 00\", \"observed-push\": \"c2 04 00\",\n \"observed-realloc\": \"c2 04 00\", \"string-alloc\": \"c2 08 00\",\n \"dedup\": \"c2 08 00\",\n}\nDIRECT = {\n \"observed-alloc\": (0x57E5E3, \"c20400\"),\n \"player-append\": (0x86C62D, \"c20400\"),\n \"player-copy\": (0x7694BF, \"c20400\"),\n \"observed-push\": (0x7B739E, \"c20400\"),\n \"observed-realloc\": (0x7B35EE, \"c20400\"),\n \"string-alloc\": (0x424AD9, \"c20800\"),\n \"dedup\": (0x825E64, \"c20800\"),\n \"plain-ret\": (0x85630C, \"c3\"),\n \"constructor-defaults\": (0xAF0DC8, \"ffff7f7fffff7f7fffff7f7f\"),\n}\n\ndef sha(data):\n return hashlib.sha256(data).hexdigest()\n\ndef rows(data):\n return [x.rstrip() for x in data.splitlines()\n if b\":\" in x and x.lstrip()[:1].isdigit()]\n\ndef pe_reader(data):\n pe = struct.unpack_from(\" 0\n and x[\"stderr\"][\"bytes\"] == 0\n for x in records + tool_runs),\n \"all_boundary_predictions_hold\": all(x[\"pass\"] for x in comparisons),\n \"direct_pe_challenge_pass\": all(x[\"pass\"] for x in direct),\n \"independent_state_pass\": state[\"pass\"]}\n(OUT / \"manifest.json\").write_text(json.dumps(manifest, indent=2) + \"\\n\")\nif not all((manifest[\"all_processes_positive\"], manifest[\"all_boundary_predictions_hold\"],\n manifest[\"direct_pe_challenge_pass\"], manifest[\"independent_state_pass\"])):\n raise SystemExit(1)","lineStart":1,"lineEnd":215,"totalLines":215,"truncated":false}},"title":"verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py","time":{"start":1789017996665,"end":1789017996676}},"metadata":{"openai":{"itemId":"fc_0a96419343049252016aa23f8c874087d19c6b89370cbe05f1"}},"id":"prt_089c83d66001zvvUF8BBg3p9YL","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c81cf6001cAetn907SNyPUZ"}} +{"type":"step_finish","timestamp":1789017996870,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c83e43001l38E2wFhja0XhG","reason":"tool-calls","snapshot":"c18c08c63f47cbd1d0a1c86708f0106eb11b849f","messageID":"msg_089c81cf6001cAetn907SNyPUZ","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":98826,"input":5816,"output":63,"reasoning":19,"cache":{"write":0,"read":92928}},"cost":0}} +{"type":"step_start","timestamp":1789017998942,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c8465b0013PtgnVHqPtF2o9","messageID":"msg_089c83e75001fXfrukfu7w2tMj","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"96a5d7ac28cccfb383248b699ddcdb190795430b","type":"step-start"}} +{"type":"tool_use","timestamp":1789018018536,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_zLSPm98SKPjTehfZ6ph37ZEN","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stdout.txt"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stdout.txt\nfile\n\n1: \n2: /home/alex/sots-re/dumps/sots.exe: file format pei-i386\n3: \n4: \n5: Disassembly of section .text:\n6: \n7: 00885380 <.text+0x484380>:\n8: 885380:\t55 \tpush ebp\n9: 885381:\t8b ec \tmov ebp,esp\n10: 885383:\t6a ff \tpush 0xffffffff\n11: 885385:\t68 30 af 99 00 \tpush 0x99af30\n12: 88538a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n13: 885390:\t50 \tpush eax\n14: 885391:\t83 ec 18 \tsub esp,0x18\n15: 885394:\t53 \tpush ebx\n16: 885395:\t56 \tpush esi\n17: 885396:\t57 \tpush edi\n18: 885397:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n19: 88539c:\t33 c5 \txor eax,ebp\n20: 88539e:\t50 \tpush eax\n21: 88539f:\t8d 45 f4 \tlea eax,[ebp-0xc]\n22: 8853a2:\t64 a3 00 00 00 00 \tmov fs:0x0,eax\n23: 8853a8:\t8b f1 \tmov esi,ecx\n24: 8853aa:\t8b 56 08 \tmov edx,DWORD PTR [esi+0x8]\n25: 8853ad:\t2b 56 04 \tsub edx,DWORD PTR [esi+0x4]\n26: 8853b0:\t8d 4e 04 \tlea ecx,[esi+0x4]\n27: 8853b3:\tb8 ab aa aa 2a \tmov eax,0x2aaaaaab\n28: 8853b8:\tf7 ea \timul edx\n29: 8853ba:\tc1 fa 02 \tsar edx,0x2\n30: 8853bd:\t8b c2 \tmov eax,edx\n31: 8853bf:\tc1 e8 1f \tshr eax,0x1f\n32: 8853c2:\t33 db \txor ebx,ebx\n33: 8853c4:\t03 c2 \tadd eax,edx\n34: 8853c6:\t33 ff \txor edi,edi\n35: 8853c8:\t3b c3 \tcmp eax,ebx\n36: 8853ca:\t7e 30 \tjle 0x8853fc\n37: 8853cc:\t8b 11 \tmov edx,DWORD PTR [ecx]\n38: 8853ce:\t8b ff \tmov edi,edi\n39: 8853d0:\t8b 5d 08 \tmov ebx,DWORD PTR [ebp+0x8]\n40: 8853d3:\t39 5a 04 \tcmp DWORD PTR [edx+0x4],ebx\n41: 8853d6:\t75 02 \tjne 0x8853da\n42: 8853d8:\t8b fa \tmov edi,edx\n43: 8853da:\t83 c2 18 \tadd edx,0x18\n44: 8853dd:\t48 \tdec eax\n45: 8853de:\t75 f0 \tjne 0x8853d0\n46: 8853e0:\t33 db \txor ebx,ebx\n47: 8853e2:\t3b fb \tcmp edi,ebx\n48: 8853e4:\t74 16 \tje 0x8853fc\n49: 8853e6:\t8b c7 \tmov eax,edi\n50: 8853e8:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n51: 8853eb:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n52: 8853f2:\t59 \tpop ecx\n53: 8853f3:\t5f \tpop edi\n54: 8853f4:\t5e \tpop esi\n55: 8853f5:\t5b \tpop ebx\n56: 8853f6:\t8b e5 \tmov esp,ebp\n57: 8853f8:\t5d \tpop ebp\n58: 8853f9:\tc2 04 00 \tret 0x4\n59: 8853fc:\tc7 45 dc 7c f0 a0 00 \tmov DWORD PTR [ebp-0x24],0xa0f07c\n60: 885403:\t89 5d e4 \tmov DWORD PTR [ebp-0x1c],ebx\n61: 885406:\t89 5d e8 \tmov DWORD PTR [ebp-0x18],ebx\n62: 885409:\t89 5d ec \tmov DWORD PTR [ebp-0x14],ebx\n63: 88540c:\t8d 45 dc \tlea eax,[ebp-0x24]\n64: 88540f:\t50 \tpush eax\n65: 885410:\t89 5d fc \tmov DWORD PTR [ebp-0x4],ebx\n66: 885413:\te8 98 f8 ff ff \tcall 0x884cb0\n67: 885418:\t8d 4d e4 \tlea ecx,[ebp-0x1c]\n68: 88541b:\tc7 45 fc 01 00 00 00 \tmov DWORD PTR [ebp-0x4],0x1\n69: 885422:\te8 59 41 da ff \tcall 0x629580\n70: 885427:\t8b 46 08 \tmov eax,DWORD PTR [esi+0x8]\n71: 88542a:\t8b 4d 08 \tmov ecx,DWORD PTR [ebp+0x8]\n72: 88542d:\t89 48 ec \tmov DWORD PTR [eax-0x14],ecx\n73: 885430:\t8b 46 08 \tmov eax,DWORD PTR [esi+0x8]\n74: 885433:\t83 e8 18 \tsub eax,0x18\n75: 885436:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n76: 885439:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n77: 885440:\t59 \tpop ecx\n78: 885441:\t5f \tpop edi\n79: 885442:\t5e \tpop esi\n80: 885443:\t5b \tpop ebx\n81: 885444:\t8b e5 \tmov esp,ebp\n82: 885446:\t5d \tpop ebp\n83: 885447:\tc2 04 00 \tret 0x4\n\n(End of file - total 83 lines)\n","metadata":{"preview":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00885380 <.text+0x484380>:\n 885380:\t55 \tpush ebp\n 885381:\t8b ec \tmov ebp,esp\n 885383:\t6a ff \tpush 0xffffffff\n 885385:\t68 30 af 99 00 \tpush 0x99af30\n 88538a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n 885390:\t50 \tpush eax\n 885391:\t83 ec 18 \tsub esp,0x18\n 885394:\t53 \tpush ebx\n 885395:\t56 \tpush esi\n 885396:\t57 \tpush edi\n 885397:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n 88539c:\t33 c5 \txor eax,ebp\n 88539e:\t50 \tpush eax","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stdout.txt","text":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00885380 <.text+0x484380>:\n 885380:\t55 \tpush ebp\n 885381:\t8b ec \tmov ebp,esp\n 885383:\t6a ff \tpush 0xffffffff\n 885385:\t68 30 af 99 00 \tpush 0x99af30\n 88538a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n 885390:\t50 \tpush eax\n 885391:\t83 ec 18 \tsub esp,0x18\n 885394:\t53 \tpush ebx\n 885395:\t56 \tpush esi\n 885396:\t57 \tpush edi\n 885397:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n 88539c:\t33 c5 \txor eax,ebp\n 88539e:\t50 \tpush eax\n 88539f:\t8d 45 f4 \tlea eax,[ebp-0xc]\n 8853a2:\t64 a3 00 00 00 00 \tmov fs:0x0,eax\n 8853a8:\t8b f1 \tmov esi,ecx\n 8853aa:\t8b 56 08 \tmov edx,DWORD PTR [esi+0x8]\n 8853ad:\t2b 56 04 \tsub edx,DWORD PTR [esi+0x4]\n 8853b0:\t8d 4e 04 \tlea ecx,[esi+0x4]\n 8853b3:\tb8 ab aa aa 2a \tmov eax,0x2aaaaaab\n 8853b8:\tf7 ea \timul edx\n 8853ba:\tc1 fa 02 \tsar edx,0x2\n 8853bd:\t8b c2 \tmov eax,edx\n 8853bf:\tc1 e8 1f \tshr eax,0x1f\n 8853c2:\t33 db \txor ebx,ebx\n 8853c4:\t03 c2 \tadd eax,edx\n 8853c6:\t33 ff \txor edi,edi\n 8853c8:\t3b c3 \tcmp eax,ebx\n 8853ca:\t7e 30 \tjle 0x8853fc\n 8853cc:\t8b 11 \tmov edx,DWORD PTR [ecx]\n 8853ce:\t8b ff \tmov edi,edi\n 8853d0:\t8b 5d 08 \tmov ebx,DWORD PTR [ebp+0x8]\n 8853d3:\t39 5a 04 \tcmp DWORD PTR [edx+0x4],ebx\n 8853d6:\t75 02 \tjne 0x8853da\n 8853d8:\t8b fa \tmov edi,edx\n 8853da:\t83 c2 18 \tadd edx,0x18\n 8853dd:\t48 \tdec eax\n 8853de:\t75 f0 \tjne 0x8853d0\n 8853e0:\t33 db \txor ebx,ebx\n 8853e2:\t3b fb \tcmp edi,ebx\n 8853e4:\t74 16 \tje 0x8853fc\n 8853e6:\t8b c7 \tmov eax,edi\n 8853e8:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 8853eb:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 8853f2:\t59 \tpop ecx\n 8853f3:\t5f \tpop edi\n 8853f4:\t5e \tpop esi\n 8853f5:\t5b \tpop ebx\n 8853f6:\t8b e5 \tmov esp,ebp\n 8853f8:\t5d \tpop ebp\n 8853f9:\tc2 04 00 \tret 0x4\n 8853fc:\tc7 45 dc 7c f0 a0 00 \tmov DWORD PTR [ebp-0x24],0xa0f07c\n 885403:\t89 5d e4 \tmov DWORD PTR [ebp-0x1c],ebx\n 885406:\t89 5d e8 \tmov DWORD PTR [ebp-0x18],ebx\n 885409:\t89 5d ec \tmov DWORD PTR [ebp-0x14],ebx\n 88540c:\t8d 45 dc \tlea eax,[ebp-0x24]\n 88540f:\t50 \tpush eax\n 885410:\t89 5d fc \tmov DWORD PTR [ebp-0x4],ebx\n 885413:\te8 98 f8 ff ff \tcall 0x884cb0\n 885418:\t8d 4d e4 \tlea ecx,[ebp-0x1c]\n 88541b:\tc7 45 fc 01 00 00 00 \tmov DWORD PTR [ebp-0x4],0x1\n 885422:\te8 59 41 da ff \tcall 0x629580\n 885427:\t8b 46 08 \tmov eax,DWORD PTR [esi+0x8]\n 88542a:\t8b 4d 08 \tmov ecx,DWORD PTR [ebp+0x8]\n 88542d:\t89 48 ec \tmov DWORD PTR [eax-0x14],ecx\n 885430:\t8b 46 08 \tmov eax,DWORD PTR [esi+0x8]\n 885433:\t83 e8 18 \tsub eax,0x18\n 885436:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 885439:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 885440:\t59 \tpop ecx\n 885441:\t5f \tpop edi\n 885442:\t5e \tpop esi\n 885443:\t5b \tpop ebx\n 885444:\t8b e5 \tmov esp,ebp\n 885446:\t5d \tpop ebp\n 885447:\tc2 04 00 \tret 0x4","lineStart":1,"lineEnd":83,"totalLines":83,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stdout.txt","time":{"start":1789018018520,"end":1789018018533}},"metadata":{"openai":{"itemId":"fc_0413bedd10453ec9016aa23fa25bec87d1bdde5438bc962923"}},"id":"prt_089c892c2001sHmIBNqLu2qN1j","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c83e75001fXfrukfu7w2tMj"}} +{"type":"tool_use","timestamp":1789018018556,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_w1UyELNvs3gCTCBjxKZ2pMUv","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stdout.txt"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stdout.txt\nfile\n\n1: \n2: /home/alex/sots-re/dumps/sots.exe: file format pei-i386\n3: \n4: \n5: Disassembly of section .text:\n6: \n7: 00884cb0 <.text+0x483cb0>:\n8: 884cb0:\t55 \tpush ebp\n9: 884cb1:\t8b ec \tmov ebp,esp\n10: 884cb3:\t6a ff \tpush 0xffffffff\n11: 884cb5:\t68 72 0b 98 00 \tpush 0x980b72\n12: 884cba:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n13: 884cc0:\t50 \tpush eax\n14: 884cc1:\t51 \tpush ecx\n15: 884cc2:\t56 \tpush esi\n16: 884cc3:\t57 \tpush edi\n17: 884cc4:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n18: 884cc9:\t33 c5 \txor eax,ebp\n19: 884ccb:\t50 \tpush eax\n20: 884ccc:\t8d 45 f4 \tlea eax,[ebp-0xc]\n21: 884ccf:\t64 a3 00 00 00 00 \tmov fs:0x0,eax\n22: 884cd5:\t8b f9 \tmov edi,ecx\n23: 884cd7:\t8b 4f 04 \tmov ecx,DWORD PTR [edi+0x4]\n24: 884cda:\t8b 75 08 \tmov esi,DWORD PTR [ebp+0x8]\n25: 884cdd:\t3b f1 \tcmp esi,ecx\n26: 884cdf:\t73 59 \tjae 0x884d3a\n27: 884ce1:\t8b 07 \tmov eax,DWORD PTR [edi]\n28: 884ce3:\t3b c6 \tcmp eax,esi\n29: 884ce5:\t77 53 \tja 0x884d3a\n30: 884ce7:\t2b f0 \tsub esi,eax\n31: 884ce9:\tb8 ab aa aa 2a \tmov eax,0x2aaaaaab\n32: 884cee:\tf7 ee \timul esi\n33: 884cf0:\tc1 fa 02 \tsar edx,0x2\n34: 884cf3:\t8b f2 \tmov esi,edx\n35: 884cf5:\tc1 ee 1f \tshr esi,0x1f\n36: 884cf8:\t03 f2 \tadd esi,edx\n37: 884cfa:\t3b 4f 08 \tcmp ecx,DWORD PTR [edi+0x8]\n38: 884cfd:\t75 09 \tjne 0x884d08\n39: 884cff:\t6a 01 \tpush 0x1\n40: 884d01:\t8b cf \tmov ecx,edi\n41: 884d03:\te8 98 f4 ff ff \tcall 0x8841a0\n42: 884d08:\t8b 0f \tmov ecx,DWORD PTR [edi]\n43: 884d0a:\t8d 04 76 \tlea eax,[esi+esi*2]\n44: 884d0d:\t8d 0c c1 \tlea ecx,[ecx+eax*8]\n45: 884d10:\t8b 47 04 \tmov eax,DWORD PTR [edi+0x4]\n46: 884d13:\t89 45 08 \tmov DWORD PTR [ebp+0x8],eax\n47: 884d16:\t89 45 f0 \tmov DWORD PTR [ebp-0x10],eax\n48: 884d19:\tc7 45 fc 00 00 00 00 \tmov DWORD PTR [ebp-0x4],0x0\n49: 884d20:\t85 c0 \ttest eax,eax\n50: 884d22:\t74 54 \tje 0x884d78\n51: 884d24:\tc7 00 7c f0 a0 00 \tmov DWORD PTR [eax],0xa0f07c\n52: 884d2a:\t8b 51 04 \tmov edx,DWORD PTR [ecx+0x4]\n53: 884d2d:\t83 c1 08 \tadd ecx,0x8\n54: 884d30:\tc6 45 fc 01 \tmov BYTE PTR [ebp-0x4],0x1\n55: 884d34:\t89 50 04 \tmov DWORD PTR [eax+0x4],edx\n56: 884d37:\t51 \tpush ecx\n57: 884d38:\teb 36 \tjmp 0x884d70\n58: 884d3a:\t3b 4f 08 \tcmp ecx,DWORD PTR [edi+0x8]\n59: 884d3d:\t75 09 \tjne 0x884d48\n60: 884d3f:\t6a 01 \tpush 0x1\n61: 884d41:\t8b cf \tmov ecx,edi\n62: 884d43:\te8 58 f4 ff ff \tcall 0x8841a0\n63: 884d48:\t8b 47 04 \tmov eax,DWORD PTR [edi+0x4]\n64: 884d4b:\t89 45 08 \tmov DWORD PTR [ebp+0x8],eax\n65: 884d4e:\t89 45 f0 \tmov DWORD PTR [ebp-0x10],eax\n66: 884d51:\tc7 45 fc 02 00 00 00 \tmov DWORD PTR [ebp-0x4],0x2\n67: 884d58:\t85 c0 \ttest eax,eax\n68: 884d5a:\t74 1c \tje 0x884d78\n69: 884d5c:\tc7 00 7c f0 a0 00 \tmov DWORD PTR [eax],0xa0f07c\n70: 884d62:\t8b 4e 04 \tmov ecx,DWORD PTR [esi+0x4]\n71: 884d65:\t83 c6 08 \tadd esi,0x8\n72: 884d68:\tc6 45 fc 03 \tmov BYTE PTR [ebp-0x4],0x3\n73: 884d6c:\t89 48 04 \tmov DWORD PTR [eax+0x4],ecx\n74: 884d6f:\t56 \tpush esi\n75: 884d70:\t8d 48 08 \tlea ecx,[eax+0x8]\n76: 884d73:\te8 d8 4a ef ff \tcall 0x779850\n77: 884d78:\t83 47 04 18 \tadd DWORD PTR [edi+0x4],0x18\n78: 884d7c:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n79: 884d7f:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n80: 884d86:\t59 \tpop ecx\n81: 884d87:\t5f \tpop edi\n82: 884d88:\t5e \tpop esi\n83: 884d89:\t8b e5 \tmov esp,ebp\n84: 884d8b:\t5d \tpop ebp\n85: 884d8c:\tc2 04 00 \tret 0x4\n\n(End of file - total 85 lines)\n","metadata":{"preview":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00884cb0 <.text+0x483cb0>:\n 884cb0:\t55 \tpush ebp\n 884cb1:\t8b ec \tmov ebp,esp\n 884cb3:\t6a ff \tpush 0xffffffff\n 884cb5:\t68 72 0b 98 00 \tpush 0x980b72\n 884cba:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n 884cc0:\t50 \tpush eax\n 884cc1:\t51 \tpush ecx\n 884cc2:\t56 \tpush esi\n 884cc3:\t57 \tpush edi\n 884cc4:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n 884cc9:\t33 c5 \txor eax,ebp\n 884ccb:\t50 \tpush eax\n 884ccc:\t8d 45 f4 \tlea eax,[ebp-0xc]","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stdout.txt","text":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00884cb0 <.text+0x483cb0>:\n 884cb0:\t55 \tpush ebp\n 884cb1:\t8b ec \tmov ebp,esp\n 884cb3:\t6a ff \tpush 0xffffffff\n 884cb5:\t68 72 0b 98 00 \tpush 0x980b72\n 884cba:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n 884cc0:\t50 \tpush eax\n 884cc1:\t51 \tpush ecx\n 884cc2:\t56 \tpush esi\n 884cc3:\t57 \tpush edi\n 884cc4:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n 884cc9:\t33 c5 \txor eax,ebp\n 884ccb:\t50 \tpush eax\n 884ccc:\t8d 45 f4 \tlea eax,[ebp-0xc]\n 884ccf:\t64 a3 00 00 00 00 \tmov fs:0x0,eax\n 884cd5:\t8b f9 \tmov edi,ecx\n 884cd7:\t8b 4f 04 \tmov ecx,DWORD PTR [edi+0x4]\n 884cda:\t8b 75 08 \tmov esi,DWORD PTR [ebp+0x8]\n 884cdd:\t3b f1 \tcmp esi,ecx\n 884cdf:\t73 59 \tjae 0x884d3a\n 884ce1:\t8b 07 \tmov eax,DWORD PTR [edi]\n 884ce3:\t3b c6 \tcmp eax,esi\n 884ce5:\t77 53 \tja 0x884d3a\n 884ce7:\t2b f0 \tsub esi,eax\n 884ce9:\tb8 ab aa aa 2a \tmov eax,0x2aaaaaab\n 884cee:\tf7 ee \timul esi\n 884cf0:\tc1 fa 02 \tsar edx,0x2\n 884cf3:\t8b f2 \tmov esi,edx\n 884cf5:\tc1 ee 1f \tshr esi,0x1f\n 884cf8:\t03 f2 \tadd esi,edx\n 884cfa:\t3b 4f 08 \tcmp ecx,DWORD PTR [edi+0x8]\n 884cfd:\t75 09 \tjne 0x884d08\n 884cff:\t6a 01 \tpush 0x1\n 884d01:\t8b cf \tmov ecx,edi\n 884d03:\te8 98 f4 ff ff \tcall 0x8841a0\n 884d08:\t8b 0f \tmov ecx,DWORD PTR [edi]\n 884d0a:\t8d 04 76 \tlea eax,[esi+esi*2]\n 884d0d:\t8d 0c c1 \tlea ecx,[ecx+eax*8]\n 884d10:\t8b 47 04 \tmov eax,DWORD PTR [edi+0x4]\n 884d13:\t89 45 08 \tmov DWORD PTR [ebp+0x8],eax\n 884d16:\t89 45 f0 \tmov DWORD PTR [ebp-0x10],eax\n 884d19:\tc7 45 fc 00 00 00 00 \tmov DWORD PTR [ebp-0x4],0x0\n 884d20:\t85 c0 \ttest eax,eax\n 884d22:\t74 54 \tje 0x884d78\n 884d24:\tc7 00 7c f0 a0 00 \tmov DWORD PTR [eax],0xa0f07c\n 884d2a:\t8b 51 04 \tmov edx,DWORD PTR [ecx+0x4]\n 884d2d:\t83 c1 08 \tadd ecx,0x8\n 884d30:\tc6 45 fc 01 \tmov BYTE PTR [ebp-0x4],0x1\n 884d34:\t89 50 04 \tmov DWORD PTR [eax+0x4],edx\n 884d37:\t51 \tpush ecx\n 884d38:\teb 36 \tjmp 0x884d70\n 884d3a:\t3b 4f 08 \tcmp ecx,DWORD PTR [edi+0x8]\n 884d3d:\t75 09 \tjne 0x884d48\n 884d3f:\t6a 01 \tpush 0x1\n 884d41:\t8b cf \tmov ecx,edi\n 884d43:\te8 58 f4 ff ff \tcall 0x8841a0\n 884d48:\t8b 47 04 \tmov eax,DWORD PTR [edi+0x4]\n 884d4b:\t89 45 08 \tmov DWORD PTR [ebp+0x8],eax\n 884d4e:\t89 45 f0 \tmov DWORD PTR [ebp-0x10],eax\n 884d51:\tc7 45 fc 02 00 00 00 \tmov DWORD PTR [ebp-0x4],0x2\n 884d58:\t85 c0 \ttest eax,eax\n 884d5a:\t74 1c \tje 0x884d78\n 884d5c:\tc7 00 7c f0 a0 00 \tmov DWORD PTR [eax],0xa0f07c\n 884d62:\t8b 4e 04 \tmov ecx,DWORD PTR [esi+0x4]\n 884d65:\t83 c6 08 \tadd esi,0x8\n 884d68:\tc6 45 fc 03 \tmov BYTE PTR [ebp-0x4],0x3\n 884d6c:\t89 48 04 \tmov DWORD PTR [eax+0x4],ecx\n 884d6f:\t56 \tpush esi\n 884d70:\t8d 48 08 \tlea ecx,[eax+0x8]\n 884d73:\te8 d8 4a ef ff \tcall 0x779850\n 884d78:\t83 47 04 18 \tadd DWORD PTR [edi+0x4],0x18\n 884d7c:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 884d7f:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 884d86:\t59 \tpop ecx\n 884d87:\t5f \tpop edi\n 884d88:\t5e \tpop esi\n 884d89:\t8b e5 \tmov esp,ebp\n 884d8b:\t5d \tpop ebp\n 884d8c:\tc2 04 00 \tret 0x4","lineStart":1,"lineEnd":85,"totalLines":85,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stdout.txt","time":{"start":1789018018541,"end":1789018018554}},"metadata":{"openai":{"itemId":"fc_0413bedd10453ec9016aa23fa25c0087d1b4bd25b10f7540bb"}},"id":"prt_089c892da001jIm23DbgpYSkhP","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c83e75001fXfrukfu7w2tMj"}} +{"type":"tool_use","timestamp":1789018018577,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_dXqv1nKcH03azX38fdKfnXxl","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stdout.txt"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stdout.txt\nfile\n\n1: \n2: /home/alex/sots-re/dumps/sots.exe: file format pei-i386\n3: \n4: \n5: Disassembly of section .text:\n6: \n7: 00629580 <.text+0x228580>:\n8: 629580:\t57 \tpush edi\n9: 629581:\t8b f9 \tmov edi,ecx\n10: 629583:\t83 3f 00 \tcmp DWORD PTR [edi],0x0\n11: 629586:\t74 36 \tje 0x6295be\n12: 629588:\t53 \tpush ebx\n13: 629589:\t56 \tpush esi\n14: 62958a:\tff 15 2c d1 9d 00 \tcall DWORD PTR ds:0x9dd12c\n15: 629590:\t8b 5f 04 \tmov ebx,DWORD PTR [edi+0x4]\n16: 629593:\t8b 37 \tmov esi,DWORD PTR [edi]\n17: 629595:\t3b f3 \tcmp esi,ebx\n18: 629597:\t74 18 \tje 0x6295b1\n19: 629599:\t8d a4 24 00 00 00 00 \tlea esp,[esp+0x0]\n20: 6295a0:\t8b 06 \tmov eax,DWORD PTR [esi]\n21: 6295a2:\t8b 10 \tmov edx,DWORD PTR [eax]\n22: 6295a4:\t6a 00 \tpush 0x0\n23: 6295a6:\t8b ce \tmov ecx,esi\n24: 6295a8:\tff d2 \tcall edx\n25: 6295aa:\t83 c6 74 \tadd esi,0x74\n26: 6295ad:\t3b f3 \tcmp esi,ebx\n27: 6295af:\t75 ef \tjne 0x6295a0\n28: 6295b1:\t8b 07 \tmov eax,DWORD PTR [edi]\n29: 6295b3:\t50 \tpush eax\n30: 6295b4:\te8 f1 b9 2f 00 \tcall 0x924faa\n31: 6295b9:\t83 c4 04 \tadd esp,0x4\n32: 6295bc:\t5e \tpop esi\n33: 6295bd:\t5b \tpop ebx\n34: 6295be:\t33 c0 \txor eax,eax\n35: 6295c0:\t89 07 \tmov DWORD PTR [edi],eax\n36: 6295c2:\t89 47 04 \tmov DWORD PTR [edi+0x4],eax\n37: 6295c5:\t89 47 08 \tmov DWORD PTR [edi+0x8],eax\n38: 6295c8:\t5f \tpop edi\n39: 6295c9:\tc3 \tret \n\n(End of file - total 39 lines)\n","metadata":{"preview":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00629580 <.text+0x228580>:\n 629580:\t57 \tpush edi\n 629581:\t8b f9 \tmov edi,ecx\n 629583:\t83 3f 00 \tcmp DWORD PTR [edi],0x0\n 629586:\t74 36 \tje 0x6295be\n 629588:\t53 \tpush ebx\n 629589:\t56 \tpush esi\n 62958a:\tff 15 2c d1 9d 00 \tcall DWORD PTR ds:0x9dd12c\n 629590:\t8b 5f 04 \tmov ebx,DWORD PTR [edi+0x4]\n 629593:\t8b 37 \tmov esi,DWORD PTR [edi]\n 629595:\t3b f3 \tcmp esi,ebx\n 629597:\t74 18 \tje 0x6295b1\n 629599:\t8d a4 24 00 00 00 00 \tlea esp,[esp+0x0]\n 6295a0:\t8b 06 \tmov eax,DWORD PTR [esi]","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stdout.txt","text":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00629580 <.text+0x228580>:\n 629580:\t57 \tpush edi\n 629581:\t8b f9 \tmov edi,ecx\n 629583:\t83 3f 00 \tcmp DWORD PTR [edi],0x0\n 629586:\t74 36 \tje 0x6295be\n 629588:\t53 \tpush ebx\n 629589:\t56 \tpush esi\n 62958a:\tff 15 2c d1 9d 00 \tcall DWORD PTR ds:0x9dd12c\n 629590:\t8b 5f 04 \tmov ebx,DWORD PTR [edi+0x4]\n 629593:\t8b 37 \tmov esi,DWORD PTR [edi]\n 629595:\t3b f3 \tcmp esi,ebx\n 629597:\t74 18 \tje 0x6295b1\n 629599:\t8d a4 24 00 00 00 00 \tlea esp,[esp+0x0]\n 6295a0:\t8b 06 \tmov eax,DWORD PTR [esi]\n 6295a2:\t8b 10 \tmov edx,DWORD PTR [eax]\n 6295a4:\t6a 00 \tpush 0x0\n 6295a6:\t8b ce \tmov ecx,esi\n 6295a8:\tff d2 \tcall edx\n 6295aa:\t83 c6 74 \tadd esi,0x74\n 6295ad:\t3b f3 \tcmp esi,ebx\n 6295af:\t75 ef \tjne 0x6295a0\n 6295b1:\t8b 07 \tmov eax,DWORD PTR [edi]\n 6295b3:\t50 \tpush eax\n 6295b4:\te8 f1 b9 2f 00 \tcall 0x924faa\n 6295b9:\t83 c4 04 \tadd esp,0x4\n 6295bc:\t5e \tpop esi\n 6295bd:\t5b \tpop ebx\n 6295be:\t33 c0 \txor eax,eax\n 6295c0:\t89 07 \tmov DWORD PTR [edi],eax\n 6295c2:\t89 47 04 \tmov DWORD PTR [edi+0x4],eax\n 6295c5:\t89 47 08 \tmov DWORD PTR [edi+0x8],eax\n 6295c8:\t5f \tpop edi\n 6295c9:\tc3 \tret ","lineStart":1,"lineEnd":39,"totalLines":39,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stdout.txt","time":{"start":1789018018568,"end":1789018018576}},"metadata":{"openai":{"itemId":"fc_0413bedd10453ec9016aa23fa25c0c87d1b3bb27d34e260f12"}},"id":"prt_089c892ee001Y9kjiBPb1373hw","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c83e75001fXfrukfu7w2tMj"}} +{"type":"tool_use","timestamp":1789018018593,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_AjFWLJmgBW3u1DWEz9Lodqum","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\nfile\n\n1: \n2: /home/alex/sots-re/dumps/sots.exe: file format pei-i386\n3: \n4: \n5: Disassembly of section .text:\n6: \n7: 00779850 <.text+0x378850>:\n8: 779850:\t55 \tpush ebp\n9: 779851:\t8b ec \tmov ebp,esp\n10: 779853:\t6a ff \tpush 0xffffffff\n11: 779855:\t68 10 7b 98 00 \tpush 0x987b10\n12: 77985a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n13: 779860:\t50 \tpush eax\n14: 779861:\t83 ec 08 \tsub esp,0x8\n15: 779864:\t53 \tpush ebx\n16: 779865:\t56 \tpush esi\n17: 779866:\t57 \tpush edi\n18: 779867:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n19: 77986c:\t33 c5 \txor eax,ebp\n20: 77986e:\t50 \tpush eax\n21: 77986f:\t8d 45 f4 \tlea eax,[ebp-0xc]\n22: 779872:\t64 a3 00 00 00 00 \tmov fs:0x0,eax\n23: 779878:\t89 65 f0 \tmov DWORD PTR [ebp-0x10],esp\n24: 77987b:\t8b f1 \tmov esi,ecx\n25: 77987d:\t89 75 ec \tmov DWORD PTR [ebp-0x14],esi\n26: 779880:\t8b 5d 08 \tmov ebx,DWORD PTR [ebp+0x8]\n27: 779883:\t33 c0 \txor eax,eax\n28: 779885:\t89 06 \tmov DWORD PTR [esi],eax\n29: 779887:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n30: 77988a:\t89 46 08 \tmov DWORD PTR [esi+0x8],eax\n31: 77988d:\t8b 4b 04 \tmov ecx,DWORD PTR [ebx+0x4]\n32: 779890:\t2b 0b \tsub ecx,DWORD PTR [ebx]\n33: 779892:\tb8 09 cb 3d 8d \tmov eax,0x8d3dcb09\n34: 779897:\tf7 e9 \timul ecx\n35: 779899:\t03 d1 \tadd edx,ecx\n36: 77989b:\tc1 fa 06 \tsar edx,0x6\n37: 77989e:\t8b fa \tmov edi,edx\n38: 7798a0:\tb8 00 00 00 00 \tmov eax,0x0\n39: 7798a5:\tc1 ef 1f \tshr edi,0x1f\n40: 7798a8:\t03 fa \tadd edi,edx\n41: 7798aa:\t89 06 \tmov DWORD PTR [esi],eax\n42: 7798ac:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n43: 7798af:\t89 46 08 \tmov DWORD PTR [esi+0x8],eax\n44: 7798b2:\t74 4b \tje 0x7798ff\n45: 7798b4:\t81 ff 2c f7 34 02 \tcmp edi,0x234f72c\n46: 7798ba:\t76 0b \tjbe 0x7798c7\n47: 7798bc:\t68 90 1f 9e 00 \tpush 0x9e1f90\n48: 7798c1:\tff 15 50 d1 9d 00 \tcall DWORD PTR ds:0x9dd150\n49: 7798c7:\t8d 4e 0c \tlea ecx,[esi+0xc]\n50: 7798ca:\t57 \tpush edi\n51: 7798cb:\te8 70 16 01 00 \tcall 0x78af40\n52: 7798d0:\t6b ff 74 \timul edi,edi,0x74\n53: 7798d3:\t8b 55 08 \tmov edx,DWORD PTR [ebp+0x8]\n54: 7798d6:\t52 \tpush edx\n55: 7798d7:\t8d 56 0c \tlea edx,[esi+0xc]\n56: 7798da:\t52 \tpush edx\n57: 7798db:\t03 f8 \tadd edi,eax\n58: 7798dd:\t89 06 \tmov DWORD PTR [esi],eax\n59: 7798df:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n60: 7798e2:\t89 7e 08 \tmov DWORD PTR [esi+0x8],edi\n61: 7798e5:\t8b 4b 04 \tmov ecx,DWORD PTR [ebx+0x4]\n62: 7798e8:\t8b 1b \tmov ebx,DWORD PTR [ebx]\n63: 7798ea:\t50 \tpush eax\n64: 7798eb:\t51 \tpush ecx\n65: 7798ec:\t53 \tpush ebx\n66: 7798ed:\tc7 45 fc 00 00 00 00 \tmov DWORD PTR [ebp-0x4],0x0\n67: 7798f4:\te8 a7 8c ff ff \tcall 0x7725a0\n68: 7798f9:\t83 c4 14 \tadd esp,0x14\n69: 7798fc:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n70: 7798ff:\t8b c6 \tmov eax,esi\n71: 779901:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n72: 779904:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n73: 77990b:\t59 \tpop ecx\n74: 77990c:\t5f \tpop edi\n75: 77990d:\t5e \tpop esi\n76: 77990e:\t5b \tpop ebx\n77: 77990f:\t8b e5 \tmov esp,ebp\n78: 779911:\t5d \tpop ebp\n79: 779912:\tc2 04 00 \tret 0x4\n80: 779915:\t8b 4d ec \tmov ecx,DWORD PTR [ebp-0x14]\n81: 779918:\te8 63 fc ea ff \tcall 0x629580\n82: 77991d:\t6a 00 \tpush 0x0\n83: 77991f:\t6a 00 \tpush 0x0\n84: 779921:\te8 96 b6 1a 00 \tcall 0x924fbc\n85: 779926:\tcc \tint3 \n86: 779927:\tcc \tint3 \n87: 779928:\tcc \tint3 \n88: 779929:\tcc \tint3 \n89: 77992a:\tcc \tint3 \n90: 77992b:\tcc \tint3 \n91: 77992c:\tcc \tint3 \n92: 77992d:\tcc \tint3 \n93: 77992e:\tcc \tint3 \n94: 77992f:\tcc \tint3 \n\n(End of file - total 94 lines)\n","metadata":{"preview":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00779850 <.text+0x378850>:\n 779850:\t55 \tpush ebp\n 779851:\t8b ec \tmov ebp,esp\n 779853:\t6a ff \tpush 0xffffffff\n 779855:\t68 10 7b 98 00 \tpush 0x987b10\n 77985a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n 779860:\t50 \tpush eax\n 779861:\t83 ec 08 \tsub esp,0x8\n 779864:\t53 \tpush ebx\n 779865:\t56 \tpush esi\n 779866:\t57 \tpush edi\n 779867:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n 77986c:\t33 c5 \txor eax,ebp\n 77986e:\t50 \tpush eax","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt","text":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00779850 <.text+0x378850>:\n 779850:\t55 \tpush ebp\n 779851:\t8b ec \tmov ebp,esp\n 779853:\t6a ff \tpush 0xffffffff\n 779855:\t68 10 7b 98 00 \tpush 0x987b10\n 77985a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n 779860:\t50 \tpush eax\n 779861:\t83 ec 08 \tsub esp,0x8\n 779864:\t53 \tpush ebx\n 779865:\t56 \tpush esi\n 779866:\t57 \tpush edi\n 779867:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n 77986c:\t33 c5 \txor eax,ebp\n 77986e:\t50 \tpush eax\n 77986f:\t8d 45 f4 \tlea eax,[ebp-0xc]\n 779872:\t64 a3 00 00 00 00 \tmov fs:0x0,eax\n 779878:\t89 65 f0 \tmov DWORD PTR [ebp-0x10],esp\n 77987b:\t8b f1 \tmov esi,ecx\n 77987d:\t89 75 ec \tmov DWORD PTR [ebp-0x14],esi\n 779880:\t8b 5d 08 \tmov ebx,DWORD PTR [ebp+0x8]\n 779883:\t33 c0 \txor eax,eax\n 779885:\t89 06 \tmov DWORD PTR [esi],eax\n 779887:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n 77988a:\t89 46 08 \tmov DWORD PTR [esi+0x8],eax\n 77988d:\t8b 4b 04 \tmov ecx,DWORD PTR [ebx+0x4]\n 779890:\t2b 0b \tsub ecx,DWORD PTR [ebx]\n 779892:\tb8 09 cb 3d 8d \tmov eax,0x8d3dcb09\n 779897:\tf7 e9 \timul ecx\n 779899:\t03 d1 \tadd edx,ecx\n 77989b:\tc1 fa 06 \tsar edx,0x6\n 77989e:\t8b fa \tmov edi,edx\n 7798a0:\tb8 00 00 00 00 \tmov eax,0x0\n 7798a5:\tc1 ef 1f \tshr edi,0x1f\n 7798a8:\t03 fa \tadd edi,edx\n 7798aa:\t89 06 \tmov DWORD PTR [esi],eax\n 7798ac:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n 7798af:\t89 46 08 \tmov DWORD PTR [esi+0x8],eax\n 7798b2:\t74 4b \tje 0x7798ff\n 7798b4:\t81 ff 2c f7 34 02 \tcmp edi,0x234f72c\n 7798ba:\t76 0b \tjbe 0x7798c7\n 7798bc:\t68 90 1f 9e 00 \tpush 0x9e1f90\n 7798c1:\tff 15 50 d1 9d 00 \tcall DWORD PTR ds:0x9dd150\n 7798c7:\t8d 4e 0c \tlea ecx,[esi+0xc]\n 7798ca:\t57 \tpush edi\n 7798cb:\te8 70 16 01 00 \tcall 0x78af40\n 7798d0:\t6b ff 74 \timul edi,edi,0x74\n 7798d3:\t8b 55 08 \tmov edx,DWORD PTR [ebp+0x8]\n 7798d6:\t52 \tpush edx\n 7798d7:\t8d 56 0c \tlea edx,[esi+0xc]\n 7798da:\t52 \tpush edx\n 7798db:\t03 f8 \tadd edi,eax\n 7798dd:\t89 06 \tmov DWORD PTR [esi],eax\n 7798df:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n 7798e2:\t89 7e 08 \tmov DWORD PTR [esi+0x8],edi\n 7798e5:\t8b 4b 04 \tmov ecx,DWORD PTR [ebx+0x4]\n 7798e8:\t8b 1b \tmov ebx,DWORD PTR [ebx]\n 7798ea:\t50 \tpush eax\n 7798eb:\t51 \tpush ecx\n 7798ec:\t53 \tpush ebx\n 7798ed:\tc7 45 fc 00 00 00 00 \tmov DWORD PTR [ebp-0x4],0x0\n 7798f4:\te8 a7 8c ff ff \tcall 0x7725a0\n 7798f9:\t83 c4 14 \tadd esp,0x14\n 7798fc:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n 7798ff:\t8b c6 \tmov eax,esi\n 779901:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 779904:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 77990b:\t59 \tpop ecx\n 77990c:\t5f \tpop edi\n 77990d:\t5e \tpop esi\n 77990e:\t5b \tpop ebx\n 77990f:\t8b e5 \tmov esp,ebp\n 779911:\t5d \tpop ebp\n 779912:\tc2 04 00 \tret 0x4\n 779915:\t8b 4d ec \tmov ecx,DWORD PTR [ebp-0x14]\n 779918:\te8 63 fc ea ff \tcall 0x629580\n 77991d:\t6a 00 \tpush 0x0\n 77991f:\t6a 00 \tpush 0x0\n 779921:\te8 96 b6 1a 00 \tcall 0x924fbc\n 779926:\tcc \tint3 \n 779927:\tcc \tint3 \n 779928:\tcc \tint3 \n 779929:\tcc \tint3 \n 77992a:\tcc \tint3 \n 77992b:\tcc \tint3 \n 77992c:\tcc \tint3 \n 77992d:\tcc \tint3 \n 77992e:\tcc \tint3 \n 77992f:\tcc \tint3 ","lineStart":1,"lineEnd":94,"totalLines":94,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt","time":{"start":1789018018585,"end":1789018018591}},"metadata":{"openai":{"itemId":"fc_0413bedd10453ec9016aa23fa25c1487d1b5d52c6757a8961c"}},"id":"prt_089c89309001yX2gXWdJ37r07v","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c83e75001fXfrukfu7w2tMj"}} +{"type":"tool_use","timestamp":1789018018610,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_PfGmxnNltuUaOWxDDgMyPZ13","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt","offset":140,"limit":30},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\nfile\n\n140: 7799c9:\t56 \tpush esi\n141: 7799ca:\t68 a0 8d 77 00 \tpush 0x778da0\n142: 7799cf:\t68 e0 ea 76 00 \tpush 0x76eae0\n143: 7799d4:\t6a 00 \tpush 0x0\n144: 7799d6:\t50 \tpush eax\n145: 7799d7:\t52 \tpush edx\n146: 7799d8:\te8 f3 d7 c9 ff \tcall 0x4171d0\n147: 7799dd:\t83 c4 1c \tadd esp,0x1c\n148: 7799e0:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n149: 7799e4:\t72 0c \tjb 0x7799f2\n150: 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n151: 7799e9:\t50 \tpush eax\n152: 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n153: 7799ef:\t83 c4 04 \tadd esp,0x4\n154: 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n155: 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n156: 7799fc:\t59 \tpop ecx\n157: 7799fd:\t5e \tpop esi\n158: 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n159: 779a01:\t33 cd \txor ecx,ebp\n160: 779a03:\te8 7a b3 1a 00 \tcall 0x924d82\n161: 779a08:\t8b e5 \tmov esp,ebp\n162: 779a0a:\t5d \tpop ebp\n163: 779a0b:\tc3 \tret \n164: 779a0c:\tcc \tint3 \n165: 779a0d:\tcc \tint3 \n166: 779a0e:\tcc \tint3 \n167: 779a0f:\tcc \tint3 \n168: 779a10:\t53 \tpush ebx\n169: 779a11:\t56 \tpush esi\n\n(Showing lines 140-169 of 175. Use offset=170 to continue.)\n","metadata":{"preview":" 7799c9:\t56 \tpush esi\n 7799ca:\t68 a0 8d 77 00 \tpush 0x778da0\n 7799cf:\t68 e0 ea 76 00 \tpush 0x76eae0\n 7799d4:\t6a 00 \tpush 0x0\n 7799d6:\t50 \tpush eax\n 7799d7:\t52 \tpush edx\n 7799d8:\te8 f3 d7 c9 ff \tcall 0x4171d0\n 7799dd:\t83 c4 1c \tadd esp,0x1c\n 7799e0:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n 7799e4:\t72 0c \tjb 0x7799f2\n 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n 7799e9:\t50 \tpush eax\n 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n 7799ef:\t83 c4 04 \tadd esp,0x4\n 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 7799fc:\t59 \tpop ecx\n 7799fd:\t5e \tpop esi\n 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n 779a01:\t33 cd \txor ecx,ebp","truncated":true,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt","text":" 7799c9:\t56 \tpush esi\n 7799ca:\t68 a0 8d 77 00 \tpush 0x778da0\n 7799cf:\t68 e0 ea 76 00 \tpush 0x76eae0\n 7799d4:\t6a 00 \tpush 0x0\n 7799d6:\t50 \tpush eax\n 7799d7:\t52 \tpush edx\n 7799d8:\te8 f3 d7 c9 ff \tcall 0x4171d0\n 7799dd:\t83 c4 1c \tadd esp,0x1c\n 7799e0:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n 7799e4:\t72 0c \tjb 0x7799f2\n 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n 7799e9:\t50 \tpush eax\n 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n 7799ef:\t83 c4 04 \tadd esp,0x4\n 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 7799fc:\t59 \tpop ecx\n 7799fd:\t5e \tpop esi\n 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n 779a01:\t33 cd \txor ecx,ebp\n 779a03:\te8 7a b3 1a 00 \tcall 0x924d82\n 779a08:\t8b e5 \tmov esp,ebp\n 779a0a:\t5d \tpop ebp\n 779a0b:\tc3 \tret \n 779a0c:\tcc \tint3 \n 779a0d:\tcc \tint3 \n 779a0e:\tcc \tint3 \n 779a0f:\tcc \tint3 \n 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi","lineStart":140,"lineEnd":169,"totalLines":175,"truncated":true}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt","time":{"start":1789018018601,"end":1789018018608}},"metadata":{"openai":{"itemId":"fc_0413bedd10453ec9016aa23fa25c2087d1a1d7c3fd0db162db"}},"id":"prt_089c8931a001TJKq6Ovrb9cXxz","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c83e75001fXfrukfu7w2tMj"}} +{"type":"tool_use","timestamp":1789018018635,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_T1TGxtsgfZSTv9dTho1Xb3Q9","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt","offset":140,"limit":30},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\nfile\n\n140: 7799c9:\t56 \tpush esi\n141: 7799ca:\t68 a0 8d 77 00 \tpush 0x778da0\n142: 7799cf:\t68 e0 ea 76 00 \tpush 0x76eae0\n143: 7799d4:\t6a 00 \tpush 0x0\n144: 7799d6:\t50 \tpush eax\n145: 7799d7:\t52 \tpush edx\n146: 7799d8:\te8 f3 d7 c9 ff \tcall 0x4171d0\n147: 7799dd:\t83 c4 1c \tadd esp,0x1c\n148: 7799e0:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n149: 7799e4:\t72 0c \tjb 0x7799f2\n150: 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n151: 7799e9:\t50 \tpush eax\n152: 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n153: 7799ef:\t83 c4 04 \tadd esp,0x4\n154: 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n155: 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n156: 7799fc:\t59 \tpop ecx\n157: 7799fd:\t5e \tpop esi\n158: 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n159: 779a01:\t33 cd \txor ecx,ebp\n160: 779a03:\te8 7a b3 1a 00 \tcall 0x924d82\n161: 779a08:\t8b e5 \tmov esp,ebp\n162: 779a0a:\t5d \tpop ebp\n163: 779a0b:\tc3 \tret \n164: 779a0c:\tcc \tint3 \n165: 779a0d:\tcc \tint3 \n166: 779a0e:\tcc \tint3 \n167: 779a0f:\tcc \tint3 \n168: 779a10:\t53 \tpush ebx\n169: 779a11:\t56 \tpush esi\n\n(Showing lines 140-169 of 177. Use offset=170 to continue.)\n","metadata":{"preview":" 7799c9:\t56 \tpush esi\n 7799ca:\t68 a0 8d 77 00 \tpush 0x778da0\n 7799cf:\t68 e0 ea 76 00 \tpush 0x76eae0\n 7799d4:\t6a 00 \tpush 0x0\n 7799d6:\t50 \tpush eax\n 7799d7:\t52 \tpush edx\n 7799d8:\te8 f3 d7 c9 ff \tcall 0x4171d0\n 7799dd:\t83 c4 1c \tadd esp,0x1c\n 7799e0:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n 7799e4:\t72 0c \tjb 0x7799f2\n 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n 7799e9:\t50 \tpush eax\n 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n 7799ef:\t83 c4 04 \tadd esp,0x4\n 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 7799fc:\t59 \tpop ecx\n 7799fd:\t5e \tpop esi\n 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n 779a01:\t33 cd \txor ecx,ebp","truncated":true,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt","text":" 7799c9:\t56 \tpush esi\n 7799ca:\t68 a0 8d 77 00 \tpush 0x778da0\n 7799cf:\t68 e0 ea 76 00 \tpush 0x76eae0\n 7799d4:\t6a 00 \tpush 0x0\n 7799d6:\t50 \tpush eax\n 7799d7:\t52 \tpush edx\n 7799d8:\te8 f3 d7 c9 ff \tcall 0x4171d0\n 7799dd:\t83 c4 1c \tadd esp,0x1c\n 7799e0:\t83 7d e8 10 \tcmp DWORD PTR [ebp-0x18],0x10\n 7799e4:\t72 0c \tjb 0x7799f2\n 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n 7799e9:\t50 \tpush eax\n 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n 7799ef:\t83 c4 04 \tadd esp,0x4\n 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 7799fc:\t59 \tpop ecx\n 7799fd:\t5e \tpop esi\n 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n 779a01:\t33 cd \txor ecx,ebp\n 779a03:\te8 7a b3 1a 00 \tcall 0x924d82\n 779a08:\t8b e5 \tmov esp,ebp\n 779a0a:\t5d \tpop ebp\n 779a0b:\tc3 \tret \n 779a0c:\tcc \tint3 \n 779a0d:\tcc \tint3 \n 779a0e:\tcc \tint3 \n 779a0f:\tcc \tint3 \n 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi","lineStart":140,"lineEnd":169,"totalLines":177,"truncated":true}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt","time":{"start":1789018018623,"end":1789018018634}},"metadata":{"openai":{"itemId":"fc_0413bedd10453ec9016aa23fa25c2887d1b37e667537253898"}},"id":"prt_089c8932b0010OocKd1IQ6673z","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c83e75001fXfrukfu7w2tMj"}} +{"type":"step_finish","timestamp":1789018018779,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c893d9001y2mHBy3jeuGa7r","reason":"tool-calls","snapshot":"64dc57dd5ad0e43bc6b788f4de98f3c111b84dab","messageID":"msg_089c83e75001fXfrukfu7w2tMj","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":102899,"input":3869,"output":367,"reasoning":103,"cache":{"write":0,"read":98560}},"cost":0}} +{"type":"step_start","timestamp":1789018020983,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c89c6e001aCZ33X6PwFnJkG","messageID":"msg_089c8940b0013JwOIAjMBqbGuC","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"820530d68834c7312150e41a0236370dbcc9cd69","type":"step-start"}} +{"type":"tool_use","timestamp":1789018030198,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_wUvmOgRIYsznpHceXE4tcOcP","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt","offset":168,"limit":15},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\nfile\n\n168: 779a10:\t53 \tpush ebx\n169: 779a11:\t56 \tpush esi\n170: 779a12:\t8b f1 \tmov esi,ecx\n171: 779a14:\t57 \tpush edi\n172: 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n173: 779a1b:\t33 db \txor ebx,ebx\n174: 779a1d:\t3b fb \tcmp edi,ebx\n175: 779a1f:\t74 \tje 0x779a31\n\n(End of file - total 175 lines)\n","metadata":{"preview":" 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi\n 779a12:\t8b f1 \tmov esi,ecx\n 779a14:\t57 \tpush edi\n 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n 779a1b:\t33 db \txor ebx,ebx\n 779a1d:\t3b fb \tcmp edi,ebx\n 779a1f:\t74 \tje 0x779a31","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt","text":" 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi\n 779a12:\t8b f1 \tmov esi,ecx\n 779a14:\t57 \tpush edi\n 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n 779a1b:\t33 db \txor ebx,ebx\n 779a1d:\t3b fb \tcmp edi,ebx\n 779a1f:\t74 \tje 0x779a31","lineStart":168,"lineEnd":175,"totalLines":175,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt","time":{"start":1789018030177,"end":1789018030196}},"metadata":{"openai":{"itemId":"fc_091390ecc70aebc5016aa23fae01bc87d1a99732686c5e16b2"}},"id":"prt_089c8c048001rb66TnplSntLdd","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c8940b0013JwOIAjMBqbGuC"}} +{"type":"tool_use","timestamp":1789018030216,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_PGAPHIVkmNRwtyQShsVtU3d4","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stdout.txt","offset":168,"limit":15},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stdout.txt\nfile\n\n168: 779a10:\t53 \tpush ebx\n169: 779a11:\t56 \tpush esi\n170: 779a12:\t8b f1 \tmov esi,ecx\n171: 779a14:\t57 \tpush edi\n172: 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n173: 779a1b:\t33 db \txor ebx,ebx\n174: 779a1d:\t3b fb \tcmp edi,ebx\n175: 779a1f:\t74 10 \tje 0x779a31\n\n(End of file - total 175 lines)\n","metadata":{"preview":" 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi\n 779a12:\t8b f1 \tmov esi,ecx\n 779a14:\t57 \tpush edi\n 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n 779a1b:\t33 db \txor ebx,ebx\n 779a1d:\t3b fb \tcmp edi,ebx\n 779a1f:\t74 10 \tje 0x779a31","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stdout.txt","text":" 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi\n 779a12:\t8b f1 \tmov esi,ecx\n 779a14:\t57 \tpush edi\n 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n 779a1b:\t33 db \txor ebx,ebx\n 779a1d:\t3b fb \tcmp edi,ebx\n 779a1f:\t74 10 \tje 0x779a31","lineStart":168,"lineEnd":175,"totalLines":175,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stdout.txt","time":{"start":1789018030188,"end":1789018030210}},"metadata":{"openai":{"itemId":"fc_091390ecc70aebc5016aa23fae01d487d180deb6ed1f8f6f01"}},"id":"prt_089c8c0690017PpneCAKYF0Kfp","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c8940b0013JwOIAjMBqbGuC"}} +{"type":"tool_use","timestamp":1789018030226,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_SNf7kKGgWUerQcRjKXaBRH4N","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stdout.txt","offset":168,"limit":15},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stdout.txt\nfile\n\n168: 779a10:\t53 \tpush ebx\n169: 779a11:\t56 \tpush esi\n170: 779a12:\t8b f1 \tmov esi,ecx\n171: 779a14:\t57 \tpush edi\n172: 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n173: 779a1b:\t33 db \txor ebx,ebx\n174: 779a1d:\t3b fb \tcmp edi,ebx\n175: 779a1f:\t74 10 \tje 0x779a31\n176: 779a21:\t8b cf \tmov ecx,edi\n\n(End of file - total 176 lines)\n","metadata":{"preview":" 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi\n 779a12:\t8b f1 \tmov esi,ecx\n 779a14:\t57 \tpush edi\n 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n 779a1b:\t33 db \txor ebx,ebx\n 779a1d:\t3b fb \tcmp edi,ebx\n 779a1f:\t74 10 \tje 0x779a31\n 779a21:\t8b cf \tmov ecx,edi","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stdout.txt","text":" 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi\n 779a12:\t8b f1 \tmov esi,ecx\n 779a14:\t57 \tpush edi\n 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n 779a1b:\t33 db \txor ebx,ebx\n 779a1d:\t3b fb \tcmp edi,ebx\n 779a1f:\t74 10 \tje 0x779a31\n 779a21:\t8b cf \tmov ecx,edi","lineStart":168,"lineEnd":176,"totalLines":176,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stdout.txt","time":{"start":1789018030205,"end":1789018030223}},"metadata":{"openai":{"itemId":"fc_091390ecc70aebc5016aa23fae01e087d1a3d595c3cf7be82c"}},"id":"prt_089c8c06d001oJ79IyJIz8K3pX","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c8940b0013JwOIAjMBqbGuC"}} +{"type":"tool_use","timestamp":1789018030226,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"read","callID":"call_8A0ViA71FAEZlr4kqTSMNsdN","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt","offset":168,"limit":15},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\nfile\n\n168: 779a10:\t53 \tpush ebx\n169: 779a11:\t56 \tpush esi\n170: 779a12:\t8b f1 \tmov esi,ecx\n171: 779a14:\t57 \tpush edi\n172: 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n173: 779a1b:\t33 db \txor ebx,ebx\n174: 779a1d:\t3b fb \tcmp edi,ebx\n175: 779a1f:\t74 10 \tje 0x779a31\n176: 779a21:\t8b cf \tmov ecx,edi\n177: 779a23:\te8 28 6a ff ff \tcall 0x770450\n\n(End of file - total 177 lines)\n","metadata":{"preview":" 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi\n 779a12:\t8b f1 \tmov esi,ecx\n 779a14:\t57 \tpush edi\n 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n 779a1b:\t33 db \txor ebx,ebx\n 779a1d:\t3b fb \tcmp edi,ebx\n 779a1f:\t74 10 \tje 0x779a31\n 779a21:\t8b cf \tmov ecx,edi\n 779a23:\te8 28 6a ff ff \tcall 0x770450","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt","text":" 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi\n 779a12:\t8b f1 \tmov esi,ecx\n 779a14:\t57 \tpush edi\n 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n 779a1b:\t33 db \txor ebx,ebx\n 779a1d:\t3b fb \tcmp edi,ebx\n 779a1f:\t74 10 \tje 0x779a31\n 779a21:\t8b cf \tmov ecx,edi\n 779a23:\te8 28 6a ff ff \tcall 0x770450","lineStart":168,"lineEnd":177,"totalLines":177,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt","time":{"start":1789018030209,"end":1789018030225}},"metadata":{"openai":{"itemId":"fc_091390ecc70aebc5016aa23fae01e887d1be87a6fc81b0a00f"}},"id":"prt_089c8c07f001Z3LTPGP6bSIdbg","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c8940b0013JwOIAjMBqbGuC"}} +{"type":"step_finish","timestamp":1789018030358,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c8c113001lAoWN0HKEYny1r","reason":"tool-calls","snapshot":"8e825ed26bd9906e7d96b139452fbd7d52dc06a3","messageID":"msg_089c8940b0013JwOIAjMBqbGuC","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":111668,"input":9113,"output":274,"reasoning":9,"cache":{"write":0,"read":102272}},"cost":0}} +{"type":"step_start","timestamp":1789018035556,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c8d55e001zAOoJc7bvG5Kk5","messageID":"msg_089c8c1500012fHjFPA1RNVJKR","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"8737d55b4cdeb3a576dc1fa9fc09ce5b527234af","type":"step-start"}} +{"type":"tool_use","timestamp":1789018049749,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"bash","callID":"call_FLqy6ERb06bxC9JOZz5hirDh","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re surprise --help","workdir":"/home/alex/sots-re"},"output":"usage: campaign.py surprise [-h] --actor ACTOR --role\n {lead,resolver,architecture-review,analyst,implementer,verifier,lab}\n --model MODEL --summary SUMMARY --probe PROBE\n contract\n\npositional arguments:\n contract\n\noptions:\n -h, --help show this help message and exit\n --actor ACTOR\n --role {lead,resolver,architecture-review,analyst,implementer,verifier,lab}\n --model MODEL\n --summary SUMMARY\n --probe PROBE\n","metadata":{"output":"usage: campaign.py surprise [-h] --actor ACTOR --role\n {lead,resolver,architecture-review,analyst,implementer,verifier,lab}\n --model MODEL --summary SUMMARY --probe PROBE\n contract\n\npositional arguments:\n contract\n\noptions:\n -h, --help show this help message and exit\n --actor ACTOR\n --role {lead,resolver,architecture-review,analyst,implementer,verifier,lab}\n --model MODEL\n --summary SUMMARY\n --probe PROBE\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re surprise --help","time":{"start":1789018049700,"end":1789018049748}},"metadata":{"openai":{"itemId":"fc_0607c453261f80a4016aa23fc0b61887d1b129318c984ef7af"}},"id":"prt_089c909040011WgkekTpbCkePZ","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c8c1500012fHjFPA1RNVJKR"}} +{"type":"step_finish","timestamp":1789018049888,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c90d5c0019x0o1wcagebFDs","reason":"tool-calls","snapshot":"ba7cdea01f23a4d292977fab08a3e2469a5b5566","messageID":"msg_089c8c1500012fHjFPA1RNVJKR","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":113160,"input":1490,"output":49,"reasoning":389,"cache":{"write":0,"read":111232}},"cost":0}} +{"type":"step_start","timestamp":1789018051835,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c914f200175NHH2bLXK9dnV","messageID":"msg_089c90d93001oitcfY4vebh4LE","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"2ee191adeabca127018130665df8c7e485a5af10","type":"step-start"}} +{"type":"tool_use","timestamp":1789018068314,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"bash","callID":"call_huQmwF4BKav5EV1DmxdAtIPU","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re surprise research-completion-abi --actor research-abi-correction-verifier --role verifier --model openai/gpt-5.6-sol --summary 'Predeclared held-out boundary assumption is falsified before execution. Verification plan run-d6c4dc15e9f4d15155fee856 requires stop 0x00779913 to include the complete ret 4 at 0x00779912. The already-read analyst authority stream shows that instruction bytes are c2 04 00, spanning 0x00779912..0x00779914, so objdump stop 0x00779913 can admit only the first byte c2 under the same stop-address behavior previously established. It cannot be a complete terminal boundary; minimum complete stop is 0x00779915. This is the verifier own failed prediction, not analyst success and not game/runtime behavior. No new disassembly/save experiment, game, allocator, RNG, VM, Ghidra, or source mutation was executed. Pause the affected reproduction plan rather than silently changing its held-out boundary.' --probe 'Astra should inspect verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 and analyst raw authority line 0x00779912 c2 04 00 in verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt. Decide whether to preserve 0x00779913 as an expected-truncated negative and add fresh held-out 0x00779915 as the complete control, then authorize a fresh session-bound verifier reproduction. Require both boundaries plus direct PE bytes; do not erase the failed prediction or treat it as acceptance.'","workdir":"/home/alex/sots-re","timeout":120000},"output":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"s-81ffc3041e1f07b87928e6f2\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra should inspect verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 and analyst raw authority line 0x00779912 c2 04 00 in verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt. Decide whether to preserve 0x00779913 as an expected-truncated negative and add fresh held-out 0x00779915 as the complete control, then authorize a fresh session-bound verifier reproduction. Require both boundaries plus direct PE bytes; do not erase the failed prediction or treat it as acceptance.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"open\",\n \"summary\": \"Predeclared held-out boundary assumption is falsified before execution. Verification plan run-d6c4dc15e9f4d15155fee856 requires stop 0x00779913 to include the complete ret 4 at 0x00779912. The already-read analyst authority stream shows that instruction bytes are c2 04 00, spanning 0x00779912..0x00779914, so objdump stop 0x00779913 can admit only the first byte c2 under the same stop-address behavior previously established. It cannot be a complete terminal boundary; minimum complete stop is 0x00779915. This is the verifier own failed prediction, not analyst success and not game/runtime behavior. No new disassembly/save experiment, game, allocator, RNG, VM, Ghidra, or source mutation was executed. Pause the affected reproduction plan rather than silently changing its held-out boundary.\",\n \"timestamp\": \"2026-09-10T05:27:48.289391+00:00\"\n}\n","metadata":{"output":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"s-81ffc3041e1f07b87928e6f2\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra should inspect verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 and analyst raw authority line 0x00779912 c2 04 00 in verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt. Decide whether to preserve 0x00779913 as an expected-truncated negative and add fresh held-out 0x00779915 as the complete control, then authorize a fresh session-bound verifier reproduction. Require both boundaries plus direct PE bytes; do not erase the failed prediction or treat it as acceptance.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"open\",\n \"summary\": \"Predeclared held-out boundary assumption is falsified before execution. Verification plan run-d6c4dc15e9f4d15155fee856 requires stop 0x00779913 to include the complete ret 4 at 0x00779912. The already-read analyst authority stream shows that instruction bytes are c2 04 00, spanning 0x00779912..0x00779914, so objdump stop 0x00779913 can admit only the first byte c2 under the same stop-address behavior previously established. It cannot be a complete terminal boundary; minimum complete stop is 0x00779915. This is the verifier own failed prediction, not analyst success and not game/runtime behavior. No new disassembly/save experiment, game, allocator, RNG, VM, Ghidra, or source mutation was executed. Pause the affected reproduction plan rather than silently changing its held-out boundary.\",\n \"timestamp\": \"2026-09-10T05:27:48.289391+00:00\"\n}\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re surprise research-completion-abi --actor research-abi-correction-verifier --role verifier --model openai/gpt-5.6-sol --summary 'Predeclared held-out boundary assumption is falsified before execution. Verification plan run-d6c4dc15e9f4d15155fee856 requires stop 0x00779913 to include the complete ret 4 at 0x00779912. The already-read analyst authority stream shows that instruction bytes are c2 04 00, spanning 0x00779912..0x00779914, so objdump stop 0x00779913 can admit only the first byte c2 under the same stop-address behavior previously established. It cannot be a complete terminal boundary; minimum complete stop is 0x00779915. This is the verifier own failed prediction, not analyst success and not game/runtime behavior. No new disassembly/save experiment, game, allocator, RNG, VM, Ghidra, or source mutation was executed. Pause the affected reproduction plan rather than silently changing its held-out boundary.' --probe 'Astra should inspect verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 and analyst raw authority line 0x00779912 c2 04 00 in verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt. Decide whether to preserve 0x00779913 as an expected-truncated negative and add fresh held-out 0x00779915 as the complete control, then authorize a fresh session-bound verifier reproduction. Require both boundaries plus direct PE bytes; do not erase the failed prediction or treat it as acceptance.'","time":{"start":1789018068247,"end":1789018068311}},"metadata":{"openai":{"itemId":"fc_0322e6da53138cf7016aa23fc6e91c87d1a7d854410ccdc954"}},"id":"prt_089c92135001Zi1ja42BfhMk4X","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c90d93001oitcfY4vebh4LE"}} +{"type":"step_finish","timestamp":1789018068358,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c95583001HJWxgufKk32JxX","reason":"tool-calls","snapshot":"5f443827ad048973a1e5bc842ac8d571e69eb8aa","messageID":"msg_089c90d93001oitcfY4vebh4LE","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":113795,"input":648,"output":426,"reasoning":81,"cache":{"write":0,"read":112640}},"cost":0}} +{"type":"step_start","timestamp":1789018070311,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089c95d23001eie5IeQokWHG0v","messageID":"msg_089c955bb001hmmnp4sAhKrSvv","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"86fedc42ad0e0d4a8dc3a4b4b54a4b31cb80380b","type":"step-start"}} +{"type":"tool_use","timestamp":1789018118071,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"apply_patch","callID":"call_dbIq8YoNbKltNHOtYlVc2hgo","state":{"status":"completed","input":{"patchText":"*** Begin Patch\n*** Add File: /home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md\n+# Verification report — run-d6c4dc15e9f4d15155fee856\n+\n+## Result\n+\n+**Paused / no verdict.** The verifier's own predeclared held-out boundary prediction was falsified\n+before the planned experiment. Open surprise: `s-81ffc3041e1f07b87928e6f2`. This failure is not\n+converted into analyst success, independent-cross-check acceptance, or a replacement claim.\n+\n+## Identity reproduction\n+\n+From the assigned worktrees:\n+\n+```sh\n+git rev-parse HEAD\n+git rev-parse --show-toplevel\n+git rev-parse --git-common-dir\n+git status --short\n+```\n+\n+Results: engine HEAD `7741d42fc5e4e761e6449bdaf0e4a61d00036a23`, root\n+`/tmp/opencode/sots-final-research-engine`, common directory `/home/alex/sots-engine/.git`; RE HEAD\n+`3bfde5a70d874a723e797a695bbd847fd82c0aa7`, root\n+`/tmp/opencode/sots-final-research-re`, common directory `/home/alex/sots-re/.git`. Both trees are\n+dirty as expected from the source-identical campaign snapshot; identity was not inferred from HEAD.\n+\n+```sh\n+python3 tools/campaign.py --state-root /home/alex/sots-re validate\n+python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi\n+python3 tools/campaign.py --state-root /home/alex/sots-re source-binding \\\n+ research-completion-abi \\\n+ --engine-worktree /tmp/opencode/sots-final-research-engine \\\n+ --re-worktree /tmp/opencode/sots-final-research-re\n+```\n+\n+Before the surprise, validation passed, status was `verification` with no open surprises, and the\n+binding matched the analyst package: engine\n+`ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd`, RE\n+`6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8`.\n+\n+```sh\n+sha256sum dumps/sots.exe /usr/bin/objdump \\\n+ verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json \\\n+ verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md \\\n+ verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\n+/usr/bin/objdump --version\n+```\n+\n+Results: executable `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`;\n+objdump target bytes `1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd`,\n+GNU Binutils 2.38; handoff artifacts respectively\n+`aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4`,\n+`6e74ff0197adc6c97f5924ad3f973d5e8922f1480268d1c96dac3dd89000e38f`, and\n+`66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1`.\n+`/usr/bin/objdump` is a symlink whose target bytes were hashed; the manifest's 373,888-byte size is\n+the dereferenced executable, while `stat` on the link itself reports 24 bytes.\n+\n+## Failed prediction and challenge\n+\n+The pre-experiment plan required held-out stop `0x00779913` to include a complete `ret 4` beginning\n+at `0x00779912`. Independent inspection of the raw authority stream shows bytes `c2 04 00`; the\n+instruction occupies addresses `0x00779912..0x00779914`. An exclusive stop of `0x00779913` can\n+therefore expose only `c2`, exactly the truncation class that invalidated earlier archives. The\n+earliest complete stop is `0x00779915`.\n+\n+This challenges the verifier instrument boundary, not game semantics. The planned objdump and save\n+subprocesses were **not run**, so there is no positive-execution claim, no archived-state/RNG result,\n+and no verifier manifest. Existing analyst captures remain measurements only. Actual runtime states\n+(existing/miss, spare/full, empty/nonempty, short/long, unwind) remain unexecuted; static branches do\n+not substitute for them. No original-assisted execution, partial/full compare, independent\n+replacement, or integrated replay occurred.\n+\n+## Side effects and exact next action\n+\n+Only verifier-owned plan/report files and canonical campaign surprise/checkpoint state were written.\n+No lease was acquired; no lab, VM, Ghidra, game, allocator, RNG, engine source, staging, commit, or\n+push operation occurred.\n+\n+**Exact next action:** Astra resolves `s-81ffc3041e1f07b87928e6f2` by deciding whether\n+`0x00779913` becomes an expected-truncated negative and `0x00779915` the fresh complete held-out\n+control; then a fresh verifier quantum executes the authorized session-bound reproduction.\n*** End Patch"},"output":"Success. Updated the following files:\nA verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md","metadata":{"diff":"Index: /home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md\n===================================================================\n--- /home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md\n+++ /home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md\n@@ -0,0 +1,80 @@\n+# Verification report — run-d6c4dc15e9f4d15155fee856\n+\n+## Result\n+\n+**Paused / no verdict.** The verifier's own predeclared held-out boundary prediction was falsified\n+before the planned experiment. Open surprise: `s-81ffc3041e1f07b87928e6f2`. This failure is not\n+converted into analyst success, independent-cross-check acceptance, or a replacement claim.\n+\n+## Identity reproduction\n+\n+From the assigned worktrees:\n+\n+```sh\n+git rev-parse HEAD\n+git rev-parse --show-toplevel\n+git rev-parse --git-common-dir\n+git status --short\n+```\n+\n+Results: engine HEAD `7741d42fc5e4e761e6449bdaf0e4a61d00036a23`, root\n+`/tmp/opencode/sots-final-research-engine`, common directory `/home/alex/sots-engine/.git`; RE HEAD\n+`3bfde5a70d874a723e797a695bbd847fd82c0aa7`, root\n+`/tmp/opencode/sots-final-research-re`, common directory `/home/alex/sots-re/.git`. Both trees are\n+dirty as expected from the source-identical campaign snapshot; identity was not inferred from HEAD.\n+\n+```sh\n+python3 tools/campaign.py --state-root /home/alex/sots-re validate\n+python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi\n+python3 tools/campaign.py --state-root /home/alex/sots-re source-binding \\\n+ research-completion-abi \\\n+ --engine-worktree /tmp/opencode/sots-final-research-engine \\\n+ --re-worktree /tmp/opencode/sots-final-research-re\n+```\n+\n+Before the surprise, validation passed, status was `verification` with no open surprises, and the\n+binding matched the analyst package: engine\n+`ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd`, RE\n+`6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8`.\n+\n+```sh\n+sha256sum dumps/sots.exe /usr/bin/objdump \\\n+ verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json \\\n+ verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md \\\n+ verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\n+/usr/bin/objdump --version\n+```\n+\n+Results: executable `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`;\n+objdump target bytes `1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd`,\n+GNU Binutils 2.38; handoff artifacts respectively\n+`aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4`,\n+`6e74ff0197adc6c97f5924ad3f973d5e8922f1480268d1c96dac3dd89000e38f`, and\n+`66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1`.\n+`/usr/bin/objdump` is a symlink whose target bytes were hashed; the manifest's 373,888-byte size is\n+the dereferenced executable, while `stat` on the link itself reports 24 bytes.\n+\n+## Failed prediction and challenge\n+\n+The pre-experiment plan required held-out stop `0x00779913` to include a complete `ret 4` beginning\n+at `0x00779912`. Independent inspection of the raw authority stream shows bytes `c2 04 00`; the\n+instruction occupies addresses `0x00779912..0x00779914`. An exclusive stop of `0x00779913` can\n+therefore expose only `c2`, exactly the truncation class that invalidated earlier archives. The\n+earliest complete stop is `0x00779915`.\n+\n+This challenges the verifier instrument boundary, not game semantics. The planned objdump and save\n+subprocesses were **not run**, so there is no positive-execution claim, no archived-state/RNG result,\n+and no verifier manifest. Existing analyst captures remain measurements only. Actual runtime states\n+(existing/miss, spare/full, empty/nonempty, short/long, unwind) remain unexecuted; static branches do\n+not substitute for them. No original-assisted execution, partial/full compare, independent\n+replacement, or integrated replay occurred.\n+\n+## Side effects and exact next action\n+\n+Only verifier-owned plan/report files and canonical campaign surprise/checkpoint state were written.\n+No lease was acquired; no lab, VM, Ghidra, game, allocator, RNG, engine source, staging, commit, or\n+push operation occurred.\n+\n+**Exact next action:** Astra resolves `s-81ffc3041e1f07b87928e6f2` by deciding whether\n+`0x00779913` becomes an expected-truncated negative and `0x00779915` the fresh complete held-out\n+control; then a fresh verifier quantum executes the authorized session-bound reproduction.\n\n","files":[{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md","relativePath":"verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md","type":"add","patch":"Index: /home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md\n===================================================================\n--- /home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md\n+++ /home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md\n@@ -0,0 +1,80 @@\n+# Verification report — run-d6c4dc15e9f4d15155fee856\n+\n+## Result\n+\n+**Paused / no verdict.** The verifier's own predeclared held-out boundary prediction was falsified\n+before the planned experiment. Open surprise: `s-81ffc3041e1f07b87928e6f2`. This failure is not\n+converted into analyst success, independent-cross-check acceptance, or a replacement claim.\n+\n+## Identity reproduction\n+\n+From the assigned worktrees:\n+\n+```sh\n+git rev-parse HEAD\n+git rev-parse --show-toplevel\n+git rev-parse --git-common-dir\n+git status --short\n+```\n+\n+Results: engine HEAD `7741d42fc5e4e761e6449bdaf0e4a61d00036a23`, root\n+`/tmp/opencode/sots-final-research-engine`, common directory `/home/alex/sots-engine/.git`; RE HEAD\n+`3bfde5a70d874a723e797a695bbd847fd82c0aa7`, root\n+`/tmp/opencode/sots-final-research-re`, common directory `/home/alex/sots-re/.git`. Both trees are\n+dirty as expected from the source-identical campaign snapshot; identity was not inferred from HEAD.\n+\n+```sh\n+python3 tools/campaign.py --state-root /home/alex/sots-re validate\n+python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi\n+python3 tools/campaign.py --state-root /home/alex/sots-re source-binding \\\n+ research-completion-abi \\\n+ --engine-worktree /tmp/opencode/sots-final-research-engine \\\n+ --re-worktree /tmp/opencode/sots-final-research-re\n+```\n+\n+Before the surprise, validation passed, status was `verification` with no open surprises, and the\n+binding matched the analyst package: engine\n+`ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd`, RE\n+`6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8`.\n+\n+```sh\n+sha256sum dumps/sots.exe /usr/bin/objdump \\\n+ verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json \\\n+ verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md \\\n+ verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py\n+/usr/bin/objdump --version\n+```\n+\n+Results: executable `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`;\n+objdump target bytes `1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd`,\n+GNU Binutils 2.38; handoff artifacts respectively\n+`aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4`,\n+`6e74ff0197adc6c97f5924ad3f973d5e8922f1480268d1c96dac3dd89000e38f`, and\n+`66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1`.\n+`/usr/bin/objdump` is a symlink whose target bytes were hashed; the manifest's 373,888-byte size is\n+the dereferenced executable, while `stat` on the link itself reports 24 bytes.\n+\n+## Failed prediction and challenge\n+\n+The pre-experiment plan required held-out stop `0x00779913` to include a complete `ret 4` beginning\n+at `0x00779912`. Independent inspection of the raw authority stream shows bytes `c2 04 00`; the\n+instruction occupies addresses `0x00779912..0x00779914`. An exclusive stop of `0x00779913` can\n+therefore expose only `c2`, exactly the truncation class that invalidated earlier archives. The\n+earliest complete stop is `0x00779915`.\n+\n+This challenges the verifier instrument boundary, not game semantics. The planned objdump and save\n+subprocesses were **not run**, so there is no positive-execution claim, no archived-state/RNG result,\n+and no verifier manifest. Existing analyst captures remain measurements only. Actual runtime states\n+(existing/miss, spare/full, empty/nonempty, short/long, unwind) remain unexecuted; static branches do\n+not substitute for them. No original-assisted execution, partial/full compare, independent\n+replacement, or integrated replay occurred.\n+\n+## Side effects and exact next action\n+\n+Only verifier-owned plan/report files and canonical campaign surprise/checkpoint state were written.\n+No lease was acquired; no lab, VM, Ghidra, game, allocator, RNG, engine source, staging, commit, or\n+push operation occurred.\n+\n+**Exact next action:** Astra resolves `s-81ffc3041e1f07b87928e6f2` by deciding whether\n+`0x00779913` becomes an expected-truncated negative and `0x00779915` the fresh complete held-out\n+control; then a fresh verifier quantum executes the authorized session-bound reproduction.\n","additions":80,"deletions":0}],"diagnostics":{},"truncated":false},"title":"Success. Updated the following files:\nA verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md","time":{"start":1789018118063,"end":1789018118068}},"metadata":{"openai":{"itemId":"fc_08069053d41165ec016aa23fd8c8a487d18301418c6d1854da"}},"id":"prt_089c9675a001Nezx4t1ewqOkX6","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089c955bb001hmmnp4sAhKrSvv"}} +{"type":"step_finish","timestamp":1789018118252,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089ca1868001U7KqQdO88fdVZo","reason":"tool-calls","snapshot":"76a13d5f1029d219e3d2f68dc91b9021a9e64a7d","messageID":"msg_089c955bb001hmmnp4sAhKrSvv","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":115761,"input":1120,"output":1430,"reasoning":59,"cache":{"write":0,"read":113152}},"cost":0}} +{"type":"step_start","timestamp":1789018120834,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089ca227a001cl3olDUmflea8W","messageID":"msg_089ca189d001TnRIp0q23nJPha","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"661825e512d35e356dc73a9eb7ca304ed33a7b2d","type":"step-start"}} +{"type":"tool_use","timestamp":1789018127135,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"todowrite","callID":"call_QrowAAzwC7rUeWpU9H6QGzRj","state":{"status":"completed","input":{"todos":[{"content":"Read canonical instructions, contract, checkpoint, and open surprises; verify identities and verifier-owned scope","status":"completed","priority":"high"},{"content":"Define verification falsifiers, branch exposures, and distinct states before experiments","status":"completed","priority":"high"},{"content":"Reproduce handoff and independently inspect state/RNG plus negative or held-out challenge","status":"cancelled","priority":"high"},{"content":"Write verifier-owned evidence and mandatory fresh canonical checkpoint","status":"in_progress","priority":"high"},{"content":"Await Astra resolution of open surprise s-81ffc3041e1f07b87928e6f2 before affected reproduction","status":"pending","priority":"high"}]},"output":"[\n {\n \"content\": \"Read canonical instructions, contract, checkpoint, and open surprises; verify identities and verifier-owned scope\",\n \"status\": \"completed\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Define verification falsifiers, branch exposures, and distinct states before experiments\",\n \"status\": \"completed\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Reproduce handoff and independently inspect state/RNG plus negative or held-out challenge\",\n \"status\": \"cancelled\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Write verifier-owned evidence and mandatory fresh canonical checkpoint\",\n \"status\": \"in_progress\",\n \"priority\": \"high\"\n },\n {\n \"content\": \"Await Astra resolution of open surprise s-81ffc3041e1f07b87928e6f2 before affected reproduction\",\n \"status\": \"pending\",\n \"priority\": \"high\"\n }\n]","metadata":{"todos":[{"content":"Read canonical instructions, contract, checkpoint, and open surprises; verify identities and verifier-owned scope","status":"completed","priority":"high"},{"content":"Define verification falsifiers, branch exposures, and distinct states before experiments","status":"completed","priority":"high"},{"content":"Reproduce handoff and independently inspect state/RNG plus negative or held-out challenge","status":"cancelled","priority":"high"},{"content":"Write verifier-owned evidence and mandatory fresh canonical checkpoint","status":"in_progress","priority":"high"},{"content":"Await Astra resolution of open surprise s-81ffc3041e1f07b87928e6f2 before affected reproduction","status":"pending","priority":"high"}],"truncated":false},"title":"3 todos","time":{"start":1789018127131,"end":1789018127134}},"metadata":{"openai":{"itemId":"fc_00cecdfa2fb1adc6016aa2400a86ac87d1b5d96dc2f302a792"}},"id":"prt_089ca2969001ZxI0llgzEqjoGU","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089ca189d001TnRIp0q23nJPha"}} +{"type":"step_finish","timestamp":1789018127307,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089ca3bc8001L5eVpXrP5ujO1c","reason":"tool-calls","snapshot":"7f43350155b64add46e87aa06cac64f3f460c54c","messageID":"msg_089ca189d001TnRIp0q23nJPha","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":116004,"input":1634,"output":161,"reasoning":33,"cache":{"write":0,"read":114176}},"cost":0}} +{"type":"step_start","timestamp":1789018129583,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089ca44ac001HPGqaXOFm6wtZ4","messageID":"msg_089ca3bfd001sFJEH8ZCqIfyXv","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"fbc643f434b8ea23e152428aa3ba2b953921ec98","type":"step-start"}} +{"type":"tool_use","timestamp":1789018139929,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"bash","callID":"call_cQefkDjnMWvDxO0V2ReGiKcG","state":{"status":"completed","input":{"command":"sha256sum verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md campaign/runtime/surprises/s-81ffc3041e1f07b87928e6f2.json","workdir":"/home/alex/sots-re"},"output":"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\n183a3d539bb563cc36bbf8697873f0e7779bcb31868fcdf214a0d7b83d52050c verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md\n332b700c09187442f639404a780abc3131be0cc03b0792e66b9d38ab0566dfce campaign/runtime/surprises/s-81ffc3041e1f07b87928e6f2.json\n","metadata":{"output":"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\n183a3d539bb563cc36bbf8697873f0e7779bcb31868fcdf214a0d7b83d52050c verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md\n332b700c09187442f639404a780abc3131be0cc03b0792e66b9d38ab0566dfce campaign/runtime/surprises/s-81ffc3041e1f07b87928e6f2.json\n","exit":0,"truncated":false},"title":"sha256sum verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md campaign/runtime/surprises/s-81ffc3041e1f07b87928e6f2.json","time":{"start":1789018139898,"end":1789018139921}},"metadata":{"openai":{"itemId":"fc_0b64a3326fc158ea016aa2401bb83c87d1b35c27c4ea3f1707"}},"id":"prt_089ca6ce3001sjPfOu5bNNBNz0","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089ca3bfd001sFJEH8ZCqIfyXv"}} +{"type":"tool_use","timestamp":1789018140004,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"bash","callID":"call_VwJbAPGsbnEy2s86fOC96xSe","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re validate && python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi","workdir":"/home/alex/sots-re","timeout":120000},"output":"[\n \"controls-bootstrap\",\n \"launcher-smoke\",\n \"research-completion-abi\",\n \"research-live-record-bridge\",\n \"research-replacement\"\n]\n[\n {\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"open_surprises\": [\n {\n \"actor\": \"research-abi-correction-verifier\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"s-81ffc3041e1f07b87928e6f2\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra should inspect verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 and analyst raw authority line 0x00779912 c2 04 00 in verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt. Decide whether to preserve 0x00779913 as an expected-truncated negative and add fresh held-out 0x00779915 as the complete control, then authorize a fresh session-bound verifier reproduction. Require both boundaries plus direct PE bytes; do not erase the failed prediction or treat it as acceptance.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"open\",\n \"summary\": \"Predeclared held-out boundary assumption is falsified before execution. Verification plan run-d6c4dc15e9f4d15155fee856 requires stop 0x00779913 to include the complete ret 4 at 0x00779912. The already-read analyst authority stream shows that instruction bytes are c2 04 00, spanning 0x00779912..0x00779914, so objdump stop 0x00779913 can admit only the first byte c2 under the same stop-address behavior previously established. It cannot be a complete terminal boundary; minimum complete stop is 0x00779915. This is the verifier own failed prediction, not analyst success and not game/runtime behavior. No new disassembly/save experiment, game, allocator, RNG, VM, Ghidra, or source mutation was executed. Pause the affected reproduction plan rather than silently changing its held-out boundary.\",\n \"timestamp\": \"2026-09-10T05:27:48.289391+00:00\"\n }\n ],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"blocked\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n }\n]\n","metadata":{"output":"[\n \"controls-bootstrap\",\n \"launcher-smoke\",\n \"research-completion-abi\",\n \"research-live-record-bridge\",\n \"research-replacement\"\n]\n[\n {\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"open_surprises\": [\n {\n \"actor\": \"research-abi-correction-verifier\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"s-81ffc3041e1f07b87928e6f2\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra should inspect verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 and analyst raw authority line 0x00779912 c2 04 00 in verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt. Decide whether to preserve 0x00779913 as an expected-truncated negative and add fresh held-out 0x00779915 as the complete control, then authorize a fresh session-bound verifier reproduction. Require both boundaries plus direct PE bytes; do not erase the failed prediction or treat it as acceptance.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"open\",\n \"summary\": \"Predeclared held-out boundary assumption is falsified before execution. Verification plan run-d6c4dc15e9f4d15155fee856 requires stop 0x00779913 to include the complete ret 4 at 0x00779912. The already-read analyst authority stream shows that instruction bytes are c2 04 00, spanning 0x00779912..0x00779914, so objdump stop 0x00779913 can admit only the first byte c2 under the same stop-address behavior previously established. It cannot be a complete terminal boundary; minimum complete stop is 0x00779915. This is the verifier own failed prediction, not analyst success and not game/runtime behavior. No new disassembly/save experiment, game, allocator, RNG, VM, Ghidra, or source mutation was executed. Pause the affected reproduction plan rather than silently changing its held-out boundary.\",\n \"timestamp\": \"2026-09-10T05:27:48.289391+00:00\"\n }\n ],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"blocked\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n }\n]\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re validate && python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi","time":{"start":1789018139906,"end":1789018140002}},"metadata":{"openai":{"itemId":"fc_0b64a3326fc158ea016aa2401bb85087d1b7d99446acae1f20"}},"id":"prt_089ca6cfe001Cz9IjyJkbWJbDw","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089ca3bfd001sFJEH8ZCqIfyXv"}} +{"type":"tool_use","timestamp":1789018140088,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"type":"tool","tool":"bash","callID":"call_INZe9ZsU7OBrEXn2811SbNIc","state":{"status":"completed","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re","workdir":"/home/alex/sots-re","timeout":120000},"output":"{\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n}\n","metadata":{"output":"{\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n}\n","exit":0,"truncated":false},"title":"python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re","time":{"start":1789018139925,"end":1789018140087}},"metadata":{"openai":{"itemId":"fc_0b64a3326fc158ea016aa2401bb85c87d19b8dac0a3ae07b22"}},"id":"prt_089ca6d120015uG0NqoGQ52MQB","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","messageID":"msg_089ca3bfd001sFJEH8ZCqIfyXv"}} +{"type":"step_finish","timestamp":1789018140152,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089ca6df5001UhbJhzmHCzDSCK","reason":"tool-calls","snapshot":"56933e70e84dff9d59a8b0a9b2130fd280971ac5","messageID":"msg_089ca3bfd001sFJEH8ZCqIfyXv","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","type":"step-finish","tokens":{"total":116543,"input":511,"output":283,"reasoning":37,"cache":{"write":0,"read":115712}},"cost":0}} +{"type":"step_start","timestamp":1789018143981,"sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","part":{"id":"prt_089ca7ce40018IQl7DnaSvArb1","messageID":"msg_089ca6e29001eMBIvVD4B3DzSA","sessionID":"ses_f763af421ffeNCdxQUOo2yo39m","snapshot":"19099a5ba08348fca0000c8577f3d41c09488943","type":"step-start"}} diff --git a/campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.stderr.log b/campaign/runtime/runs/run-d6c4dc15e9f4d15155fee856.stderr.log new file mode 100644 index 0000000..e69de29 diff --git a/campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json b/campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json new file mode 100644 index 0000000..dd9ca65 --- /dev/null +++ b/campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json @@ -0,0 +1,10049 @@ +{ + "actor": "research-problem-resolver", + "checkpoint": "campaign/runtime/checkpoints/research-completion-abi-3fc22ea3c402274179ce4d1f.json", + "checkpoint_session": "run-ec31ee938e1f509cd7130c03", + "command": [ + "opencode", + "run", + "--format", + "json", + "--model", + "openai/gpt-6-astra", + "--agent", + "sots-resolver", + "Start a FRESH bounded campaign quantum (40 steps). No delegation.\nRole=resolver; requested model=openai/gpt-6-astra; actor=research-problem-resolver; checkpoint session=run-ec31ee938e1f509cd7130c03.\nCanonical state root: /home/alex/sots-re\nContract: /home/alex/sots-re/campaign/contracts/research-completion-abi.json\nLatest checkpoint: campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json\nEngine worktree: /tmp/opencode/sots-final-research-engine\nRE worktree: /tmp/opencode/sots-final-research-re\nRead canonical campaign/README.md, contract, latest checkpoint and open surprises before work. Verify source/worktree/resource identities. Only edit owned scope. Missing state means blocked. Do not commit, stage, push or mutate lab resources without explicit authority and a lease. Checkpoint every 20 tool calls or 15 minutes, before experiments, compaction and stopping; persist under canonical campaign/ using tools/campaign.py with the session above, exact model, actor and role. Include observations versus decisions, source identities, artifact paths, tests, blockers and ONE exact next action. Fresh checkpoint at quantum end is mandatory. Record a surprise and pause affected work if assumptions are falsified. RESOLUTION-ONLY: read evidence, record decisions/checkpoints; no implementation or architecture source edits. Do not rely on chat resume or automatic compaction." + ], + "completed_sessions": [ + "ses_f74958b4dffe0qDVk3LfDAxiwG" + ], + "config": { + "canonical_files": { + "campaign/agents/analyst.md": "895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952", + "campaign/agents/implementer.md": "eb5581051a92b3d2b9ddd947812b1c02ff6a0b5e7619e7674adc26701e9a3d91", + "campaign/agents/lab.md": "48f1765ebdcb2015e631ad91428f65735ff899e119134b652f70788ff2eae5b8", + "campaign/agents/lead.md": "8fcfe52be845ed98a172afb47ea888b19bb7bffa80f7b50ace58d2bb66924220", + "campaign/agents/resolver.md": "742c36dc8567669d462566d6121eed42fcff5bff34e8eff466e92249f7ca195f", + "campaign/agents/verifier.md": "e467fc644e4e37d631a7a4e35038d9d3d0498491f1d7811d61d99271ff345c6b", + "campaign/models.json": "00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48", + "opencode.json": "027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99" + }, + "effective": { + "agent_sha256": "538b7262e3a21bba755e48cc1974eefb35bf710a5d23dde6d05fedb73250b7a0", + "sha256": "b991546a31472fa41788ec79102f8cf5165ebc45f43dbf2ccf848a13c01c727e" + }, + "expanded_prompt_sha256": "75226903f94e211868d70015e18e88cc3e3d338111743753bcd8a0f35e13e317", + "overlay": { + "agent": { + "sots-resolver": { + "model": "openai/gpt-6-astra", + "permission": { + "bash": { + "*": "deny", + "git -C * diff *": "allow", + "git -C * log *": "allow", + "git -C * rev-parse *": "allow", + "git -C * show *": "allow", + "git -C * status *": "allow", + "python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re checkpoint *": "allow", + "python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re resolve *": "allow", + "python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re status *": "allow", + "python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re surprise *": "allow", + "python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re validate *": "allow" + }, + "edit": { + "*": "deny", + "/home/alex/sots-re/campaign/contracts/*": "allow", + "/home/alex/sots-re/campaign/runtime/*": "allow" + }, + "external_directory": { + "*": "deny", + "/home/alex/sots-re": "allow", + "/home/alex/sots-re/*": "allow", + "/tmp/opencode/sots-final-research-engine": "allow", + "/tmp/opencode/sots-final-research-engine/*": "allow", + "/tmp/opencode/sots-final-research-re": "allow", + "/tmp/opencode/sots-final-research-re/*": "allow" + }, + "glob": "allow", + "grep": "allow", + "list": "allow", + "question": "deny", + "read": "allow", + "task": "deny" + }, + "prompt": "You are the SOTS resolver, running GPT-6 Astra. Read canonical RE AGENTS.md, campaign/README.md,\nthe surprise, affected contracts, checkpoints and raw evidence. First state the observation and\nits provenance. Check source/binary/input identity, positive execution and instrument neutrality\nbefore interpreting game behavior. Do not diagnose a stale build as a game mechanism.\n\nFor every affected claim record survives / qualified / overturned and exact domain. Name the\ncheapest discriminating experiment, revised scope/dependencies and affected evidence that must\nbe invalidated. Resolve through campaign controls with a durable Astra decision. Never silently\nwaive acceptance or treat untested inference as measurement. Leave blocked work blocked until\nthe decision supplies a valid next action. No autonomous lab mutation or nested delegation.\n\nCheckpoint every 20 calls/15min and before compaction, handoff or stop. Use short bounded sessions;\nthe repository carries decisions, not chat memory. Do not create another explanatory history in\nthe live board: link the actual decision and regenerate projections after integration.\n", + "steps": 40 + } + }, + "model": "openai/gpt-6-astra" + }, + "path": "/home/alex/sots-re/opencode.json", + "sha256": "027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99" + }, + "contract": "research-completion-abi", + "cwd": "/tmp/opencode/sots-final-research-re", + "ended_at": "2026-09-10T13:07:19.952643+00:00", + "error_events": 0, + "event_count": 63, + "id": "run-ec31ee938e1f509cd7130c03", + "log": "campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.jsonl", + "malformed_events": 0, + "max_steps": 40, + "observed_model_status": "unavailable", + "observed_models": [], + "observed_sessions": [ + "ses_f74958b4dffe0qDVk3LfDAxiwG" + ], + "requested_model": "openai/gpt-6-astra", + "resolution_only": true, + "returncode": 0, + "role": "resolver", + "schema": "sots-run/1", + "source_after": { + "engine": { + "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", + "files": { + ".gitignore": { + "mode": 420, + "sha256": "5103c9533f0d31fea29c0cc85d543692af84a697416dfa7557e31c9843210145" + }, + "AGENTS.md": { + "mode": 420, + "sha256": "7d1d4bc05c35e3354a77b3c8d5d2c04fb9d6658d09e87bc814a50bc3d2033fb7" + }, + "CLAUDE.md": { + "mode": 420, + "sha256": "15d60c3d592302a2854df8bf6d39c0a578c22b9273a633447e10b76fd76291f5" + }, + "CMakeLists.txt": { + "mode": 420, + "sha256": "6e9791511ea23bf8bf5f7f58617a7e77bbe5006829609e425e565c11c1e8d7ed" + }, + "CMakePresets.json": { + "mode": 420, + "sha256": "fcd1dfe3989ee4f56fa3e419059e1db5621922165edf05f13cfe8e5d786d8bb0" + }, + "CONTRIBUTING.md": { + "mode": 420, + "sha256": "26a381fe08feb51f861655f77de4e558f056d1dba79162a2e82513a92d0e6506" + }, + "LICENSE": { + "mode": 420, + "sha256": "eedebad43ea495111bf4451d78cb440309d90a733d6a36445699dde0629f1858" + }, + "README.md": { + "mode": 420, + "sha256": "66c2437fe4f074e6499de50b0d5f0d013bc290333f4d4bf554b541261885a0c1" + }, + "cmake/toolchain-mingw-i686.cmake": { + "mode": 420, + "sha256": "231c0b79868a77d54cc6619f0b4ea18454964a1a078806f44a6ffe3fb7741a9b" + }, + "docs/A2-alliance-and-modcount.md": { + "mode": 420, + "sha256": "0c0c45c31d5d64124f3b91a161f8a2f4732c8a5d7f6bc524baf4d59f8a191701" + }, + "docs/AC-predictions.md": { + "mode": 420, + "sha256": "ab9e41714abdbc32e620d8a2068be8ebd2fc8898ba149113c66ccda248b4bcda" + }, + "docs/B1.md": { + "mode": 420, + "sha256": "42b61bbfc135cdcd0f1a32f63164b88e67106400de7f08f543f118eccd814364" + }, + "docs/B2.md": { + "mode": 420, + "sha256": "87dfd333ee15681a3aa4de58cf1b14ff8240e75afabc05012e0f28531cb4b8b8" + }, + "docs/B3.md": { + "mode": 420, + "sha256": "fb65c41037b6cd6252c67e5244d492a3a17ea4ba2ddae821d49fe0a879528518" + }, + "docs/B4.md": { + "mode": 420, + "sha256": "22547b3d2960684e52a380fb07f43a75bf50aebf93cede689f297cf38f4a012d" + }, + "docs/B6-ship-construction.md": { + "mode": 420, + "sha256": "9c5c4fd2059af965e317c9db5b7fbfc440397ddfcdc5bf7860115f6a8a0532ab" + }, + "docs/CB-capture.md": { + "mode": 420, + "sha256": "ce45a9082588051eda7438016dc66eb28bb4afda98b82cdc20102c4ca53529f0" + }, + "docs/CB-predictions.md": { + "mode": 420, + "sha256": "ba51538b018cbb403978f97ad45d4743937d49ba55c8f15d7af8f8e4aa441f0f" + }, + "docs/E-events.md": { + "mode": 420, + "sha256": "de98795aadb1617eab91815ebc34818bef8b52c36ba18b4521170065bfd2d201" + }, + "docs/EV-events.md": { + "mode": 420, + "sha256": "e7d9536cd23f5d800dc97f68167bb738088a16136004419f28de92d7fe1bcfb9" + }, + "docs/G-wire-schema.md": { + "mode": 420, + "sha256": "19db69ae359ddbd2a0509d02f1c616f939e0428480a8bb33c81f69145323a591" + }, + "docs/G3-civilian-growth.md": { + "mode": 420, + "sha256": "38ea3a8ddc3fdca258294d949c4cd2af1a930cdd9ba612d5e8fb48bc446bdf30" + }, + "docs/H-probes.md": { + "mode": 420, + "sha256": "f23e4d4cbc8c9a3000a0a58ed994dddd95466cee1ec45e961685e86dde4dc54f" + }, + "docs/L1-predictions.md": { + "mode": 420, + "sha256": "af97dbc9f15b9c2e6f223c89bac17826056fa4f3bced3c01513c1ad4d9ac1754" + }, + "docs/L2-predictions.md": { + "mode": 420, + "sha256": "18213ce5f3375d478f266de85c38c2b04ca2ae8ab4a2023780dca161fa14f460" + }, + "docs/L3-predictions.md": { + "mode": 420, + "sha256": "d1c9c0006079f47ef0d3371f4a2c2df2fe4f08ebdad0f8a12d1b0de35b15ae7e" + }, + "docs/L4-ai-orders.md": { + "mode": 420, + "sha256": "b04127c5158a882f252b2b6e8afb2d131f0de623cc0c62c86c612af803d75835" + }, + "docs/L4-predictions.md": { + "mode": 420, + "sha256": "6a194ae336920f13d8e4a44549cbe26be959beef81cffed88ef03b3cec563e44" + }, + "docs/L5-live-verification.md": { + "mode": 420, + "sha256": "4c1abe57c516b36f383390164a362f53294feda222c623283f1e6091d8ef0ec4" + }, + "docs/M-movefleet.md": { + "mode": 420, + "sha256": "718338edb8cbe8a449793b22889776a1783d1d0ade553c03973ea45d426eb426" + }, + "docs/M0.md": { + "mode": 420, + "sha256": "e121c380612a42727e3a973d8cf50f884d660bb4b43bc494258dc1c6b6f26705" + }, + "docs/M1.md": { + "mode": 420, + "sha256": "e0a36cf109d096748e55522eb8d7a261764cbf5ab5daf9342ba903d0f2bc6704" + }, + "docs/M2.md": { + "mode": 420, + "sha256": "25f9cad74eeee40afc2117333232384e1cf387b2b9132856650234c5ba593c61" + }, + "docs/N-output-term.md": { + "mode": 420, + "sha256": "3b8317e22714ef66b35efceee6fa0f7057c37f7c6e34d93cc5047cd1dd07ecde" + }, + "docs/P-events-wiring.md": { + "mode": 420, + "sha256": "72ee81b71b4c08ae451721c785dc5e01ed4ca43ff0fd474befca09dcc41599ba" + }, + "docs/PAR-predictions.md": { + "mode": 420, + "sha256": "16e8fbbac5001db0b10d766858c0ae2ea9619f37043a0883ee46da80d4dd4846" + }, + "docs/PL-players-residual.md": { + "mode": 420, + "sha256": "9bc29bc030ee8b0e00e496b91fe8fefac15179ce9fd01c0a11a7b5b5335356dc" + }, + "docs/R-recapture.md": { + "mode": 420, + "sha256": "73c62ab20c5eca5e87e1d18aefa60a2a2acd75cbc7510d31b27a2cd4ebcec38f" + }, + "docs/RB-predictions.md": { + "mode": 420, + "sha256": "c1016781505c10aa304d4710c5389918b744ab20cbd8cb54dce462c3dc28e4e7" + }, + "docs/S-standalone.md": { + "mode": 420, + "sha256": "8979b0a9fef33a55ca15bf3ef78064e72df332033354329ff2471ad6648e4a8e" + }, + "docs/SD-predictions.md": { + "mode": 420, + "sha256": "a76a568ccac7409e3cb3acef724dbe6b618d4ec30259bce33594098daff8b6a0" + }, + "docs/SV-script-objects.md": { + "mode": 420, + "sha256": "80ebd120fa9cf5e68ac4d33117966805b917d24bc339f7d82be972a280449409" + }, + "docs/T-turn-driver.md": { + "mode": 420, + "sha256": "a4096b8223cea87ce77cc64014c489d4625ed36fd3aec1358565ca5cf91d4e1e" + }, + "docs/U-unlock.md": { + "mode": 420, + "sha256": "5cbe3d8fb4bd30d029cb2db006a4dd3c6819885f55f434afb4bc8ae79b526901" + }, + "docs/V-eventlive.md": { + "mode": 420, + "sha256": "ebd08c000f42211e87958278f03d6891475cd8557658e1a42105cf5ed45a1aa1" + }, + "docs/W2-predictions.md": { + "mode": 420, + "sha256": "9972e27467cf0fe23a358818caf7edb979de25697d3aa4b97a2135ca79fe34f5" + }, + "docs/W2-watchpoints.md": { + "mode": 420, + "sha256": "f8634c5f977b2ca9b2e07df105cba09adacaeb6fb4cf046e41e5e1e42b83b107" + }, + "docs/W3-predictions.md": { + "mode": 420, + "sha256": "211cedc2d924bcf47cbb73166b408e9a27d795863ffc90aa2adbb85beeadffcf" + }, + "docs/W3-watchpoints.md": { + "mode": 420, + "sha256": "568e818e66d95f9079a1270c4d9b900c7eecfd5b5a3b4ba5a4aa0c843666f061" + }, + "docs/Y-standalone-rng-and-tail.md": { + "mode": 420, + "sha256": "49d926cc505d6ba07753748366e42ec32493a15c76bfaa45b2f66f52adc57f2b" + }, + "docs/Z-tail-rng.md": { + "mode": 420, + "sha256": "3ed2b40f728bcedd663c305cce13481bad1429af03fd5215ee3189161cfbd7f1" + }, + "docs/architecture.md": { + "mode": 420, + "sha256": "ba4732eb8a4c7054df5136a72d1774e4f1e919a517a1c74e975903fdd254422f" + }, + "docs/game-data.md": { + "mode": 420, + "sha256": "2124ea3d117b4ee6f48660d9711c1b4ef844a4ba37af7cea3766914d77bd6b23" + }, + "docs/game-design.md": { + "mode": 420, + "sha256": "5b40349ad446596b534567a5683cf9ea99709d9eff231890e0f6256c755f0272" + }, + "docs/game-effects.md": { + "mode": 420, + "sha256": "e1e0abc162602daaac255fe44b11c511adf45d4ef5fa188268411829b0817e5d" + }, + "docs/game-sim.md": { + "mode": 420, + "sha256": "d1e14770d252fd2f320a7baa1ad54c90d955cfc840f477d1700cfbbadcec730e" + }, + "docs/harness-audit.md": { + "mode": 420, + "sha256": "931d92cc744ec6ca3d961fbe7fe96dcab28060446058eb78be9835ebbce73ed0" + }, + "docs/mars-parse.md": { + "mode": 420, + "sha256": "d9fa3029ade4f9401c59fb88f4520a1ef3af9a9c6f2bb5d1a0ebfa1d5061d6dd" + }, + "docs/mars-rng.md": { + "mode": 420, + "sha256": "f2a01b88f105d07d0d0d514430e76da7632e5c8e4e3bbd6c99a25f1dc5daa89c" + }, + "docs/mars-stream.md": { + "mode": 420, + "sha256": "61a16c9b7c143b4bc2edee473cf1f8bd06c1a5144c120bc563e5ec6d770dd0e7" + }, + "docs/mars-text.md": { + "mode": 420, + "sha256": "2b6c7d2eecbb684160e7565d1d7224eb0d2f7e9a41f4d807095a182ea605dcf1" + }, + "docs/mars-vfs.md": { + "mode": 420, + "sha256": "1508c2a070d56f4fdabac3c2ef1fd08d3f93d7a3045d59158340ee22a6ff1b62" + }, + "docs/shim-trace.md": { + "mode": 420, + "sha256": "8a059c1ba761b366449c2db8ef248656da917050ed28855c6d812ecf91672fa5" + }, + "include/generated/sots_addresses.h": { + "mode": 420, + "sha256": "fc34ac4ee8cc7fea91c447b5715841dc6d3afe36f9aff04e88b6c29b5b64f448" + }, + "include/generated/sots_stream_schema.h": { + "mode": 420, + "sha256": "13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c" + }, + "opencode.json": { + "mode": 420, + "sha256": "9af560c2a49945e964beb689649c13775e2aaaf691af270a565d6c6826f76c15" + }, + "src/app/CMakeLists.txt": { + "mode": 420, + "sha256": "142999eded2ff494745ce550af76a8f8caf0269ad22d6d5650e7a79c19d22717" + }, + "src/app/alliance.cpp": { + "mode": 420, + "sha256": "37d6e57f7ce82a69a595cf474e7be7a544efef210f960e9cdfeab6168826bac9" + }, + "src/app/alliance.h": { + "mode": 420, + "sha256": "08fa8dc96286c7cb15a90a987fa22b17e195522e642ab8303b659ca58739eafd" + }, + "src/app/command_replay.cpp": { + "mode": 420, + "sha256": "739059930cd3a5f1d988522ff50c60d8657664a66c9fe19b019833f417b55824" + }, + "src/app/command_replay.h": { + "mode": 420, + "sha256": "956429a742554cada2124de49c6955e27b0e5d68db87dcc95b22c75ec7bd93c2" + }, + "src/app/construction_phase.cpp": { + "mode": 420, + "sha256": "025cd0ea1a7badd567f7f1cd59330b1e01149b5c5094575fbd438683658bb0df" + }, + "src/app/construction_phase.h": { + "mode": 420, + "sha256": "a4d39994096683a1144eb20282b205cf71e2045873cc15b53bdac214ab1e9a5e" + }, + "src/app/event_phase.cpp": { + "mode": 420, + "sha256": "80717fa7c7f108004d5250f12b6c994752a1a55d7f32c7d3ebf29f2869118c90" + }, + "src/app/event_phase.h": { + "mode": 420, + "sha256": "54077268fe4705270dc06bdc46a6fd9384fb5e0d36da19e55ea149b478d8cf34" + }, + "src/app/growth_phase.cpp": { + "mode": 420, + "sha256": "5924d2641fc98d902b56a3e6417d7a57d70c1564718951b098e7d14376ebc4e3" + }, + "src/app/growth_phase.h": { + "mode": 420, + "sha256": "8222ef811abff161c8f891a331a52e527de54fbf468949d1e0e188adc473ae3b" + }, + "src/app/main.cpp": { + "mode": 420, + "sha256": "adfd7dd177439bfd57509532bcf0f37779281ae9309daa93efe1ada3ef3f57a7" + }, + "src/app/observed_phase.cpp": { + "mode": 420, + "sha256": "31fb99678d60de6901b4bb1b251abe2421453264653cf5f7bd297a376c2b23f3" + }, + "src/app/observed_phase.h": { + "mode": 420, + "sha256": "f88fc22a5cb21a43e196d7fae09446126635d3284e6b398bca234f265234b693" + }, + "src/app/phase_catalog.cpp": { + "mode": 420, + "sha256": "e3da16e6d499b7836953251d940ce171792ada208156ca583277298f305fc316" + }, + "src/app/phase_catalog.h": { + "mode": 420, + "sha256": "da6fff506002079d8277358d0095981dc260449dc19677a533ef25ab709aed87" + }, + "src/app/report.cpp": { + "mode": 420, + "sha256": "da3feb6043f6e68cb9ea763f7242ac153a5944c59f448284faf34c64ad6b9228" + }, + "src/app/report.h": { + "mode": 420, + "sha256": "0495d164458ddb7187ce3105f82cee06cf9cf6c5b73ed8cb6e434e1d2e0f8481" + }, + "src/app/script_phase.cpp": { + "mode": 420, + "sha256": "61eeeeb7eac3145cee938ccfc564b231b6968ce7926fb9599c136134f0d5ea91" + }, + "src/app/script_phase.h": { + "mode": 420, + "sha256": "e52006ff939fa945870fafdc2412ba67e3d5e1cc2aa51c0ca0a884ce630aa1b7" + }, + "src/app/trade_raid.cpp": { + "mode": 420, + "sha256": "07d6bb904e655bb644ff6df2e417adb448487bb67acb62240ec5ecc978eabebf" + }, + "src/app/trade_raid.h": { + "mode": 420, + "sha256": "10e0b1460eb7810f1fcd61e67d47333373f06bdacf5a11372958a84a91084e52" + }, + "src/app/treaty.cpp": { + "mode": 420, + "sha256": "317463fc0e2a6ca7eaa4e2f096c3821655a4623de4085af44d951ed500837575" + }, + "src/app/treaty.h": { + "mode": 420, + "sha256": "836395a85868cbd6b7fda8f1d304128fd7cc6952aff37003e8e119a5ce0251f9" + }, + "src/app/turn.cpp": { + "mode": 420, + "sha256": "a626ddf80a340de50b70f09bf91c0180d255c533e65edce1532d807fcf5109b4" + }, + "src/app/turn.h": { + "mode": 420, + "sha256": "85c87aab5c5b5ad5a6a34cc9db710b1cf77dec1a7145ba1e0b5e17fff9a6a237" + }, + "src/app/turn_record.cpp": { + "mode": 420, + "sha256": "e1eb0b253e964ab4f8be1333f81e193ac64109544da384cbdf21858cbf931e4d" + }, + "src/app/turn_record.h": { + "mode": 420, + "sha256": "78d8d2948bd04bff5e7d2c55955b726f1cd7552a765e608e390209e03856f76d" + }, + "src/app/visibility_phase.cpp": { + "mode": 420, + "sha256": "34d9df699af3e57823ec8457c442408da854028f9b95db5820171caad0823131" + }, + "src/app/visibility_phase.h": { + "mode": 420, + "sha256": "60db50f5b98c5edafc86a33f982a7773acc291c1a18f9cf23323e53ebadcde27" + }, + "src/game/ai/CMakeLists.txt": { + "mode": 420, + "sha256": "f51509a2699f02ecab9faa1f75feaa38c299e6bbbe08bfbe5e8e86722037f6eb" + }, + "src/game/ai/agent.cpp": { + "mode": 420, + "sha256": "e1bbddc3deb797d62ae9c2b24bc811ec9379699992dd838694bd5eadc73feef7" + }, + "src/game/ai/agent.h": { + "mode": 420, + "sha256": "48aa26f32d52a3f8f4e37ed5c6986b1e87a8fe1e780d5314514eb5c75b8bc244" + }, + "src/game/ai/apply_order.cpp": { + "mode": 420, + "sha256": "122ffea1090382fd01bc505fd30c59557dfec2c9846609d00da6e80109da2253" + }, + "src/game/ai/apply_order.h": { + "mode": 420, + "sha256": "a3b7a1ca26243ba0fdd801b78978175db6f76e297a72876fa0a35e12f38e09b3" + }, + "src/game/ai/command_capture.cpp": { + "mode": 420, + "sha256": "cb9a1d37af9f66e78d368e03aeabec01e4d48f76aaa30348a51f4c70a915e4ec" + }, + "src/game/ai/command_capture.h": { + "mode": 420, + "sha256": "921599e5b2aa8b773db00134618efde687c7d9ba739abd787ec7666f4cfeb78f" + }, + "src/game/ai/orders.cpp": { + "mode": 420, + "sha256": "1b775eb1a030bc6e81e5b7702cbf8ad56288860276e8a0475da66f7367542640" + }, + "src/game/ai/orders.h": { + "mode": 420, + "sha256": "c2a3b8fe1a7c46a1c1104bc87be8696d9f0782cc304d27cb96d0ec6b182f12ae" + }, + "src/game/ai/tasks.cpp": { + "mode": 420, + "sha256": "b05878ccd94c375aac8723c8ea9499f77b98fb94acc5a75a15fa1948dbe83c76" + }, + "src/game/ai/tasks.h": { + "mode": 420, + "sha256": "b1de4f89c1679ccfdeaa8b852cb2ce407b71dcd1bffacf97df389a69f6ae3a5d" + }, + "src/game/ai/turn_order.cpp": { + "mode": 420, + "sha256": "858b12c51c4509e16a22a6c080d1c6b47bd23d2b8a11f84a48d34f24c4635f22" + }, + "src/game/ai/turn_order.h": { + "mode": 420, + "sha256": "3e76710928fc2df52fd8312abfb8f23a2ce162f8e0856f46672a4f46b5b4384f" + }, + "src/game/combat/CMakeLists.txt": { + "mode": 420, + "sha256": "4b3a05c45360e312d6c1d96c1f05a60437d19d2046257835e0d6c70ecc4ce115" + }, + "src/game/combat/retreat.cpp": { + "mode": 420, + "sha256": "eede86a4d25289dfc9132d5776b11114a109179e5aa10f2b985035e5b22d7a1f" + }, + "src/game/combat/retreat.h": { + "mode": 420, + "sha256": "5fc3e002a5f1944f29c74f862ff942b894e40e88afafd52358373ada36644d7d" + }, + "src/game/config/CMakeLists.txt": { + "mode": 420, + "sha256": "c746021654505c92be333cefb9df994431679d40d8d654b937feb950684830f7" + }, + "src/game/config/config_loader.cpp": { + "mode": 420, + "sha256": "d903ba06747e5b7d66400d03ee1f0a9896bf4268bb200dec0b5c8599dbd3d3a1" + }, + "src/game/config/config_loader.h": { + "mode": 420, + "sha256": "fda71dee1a4e2b896760e9ac344768e176ea4f0a08609c7d651033a1ee698085" + }, + "src/game/config/manifest_loader.cpp": { + "mode": 420, + "sha256": "dbe33dc5ae03db18f3b2c01b48cc1fced10f2cca599270c0a028321a7d7dd7c6" + }, + "src/game/config/manifest_loader.h": { + "mode": 420, + "sha256": "68e508b9e6d1222d980b22ae826b127693fdf0821b6539ed9e62a8ec031aa5b5" + }, + "src/game/config/msvc_sort.h": { + "mode": 420, + "sha256": "17fcb13bb49a634c80be38299617c6c16fd8addedfa88c53d67242c90b811716" + }, + "src/game/data/CMakeLists.txt": { + "mode": 420, + "sha256": "677ba0dd0ebb8176f4e7c41d5550f2ccedd56d49e7e4acb1eb0a7970e9e98a51" + }, + "src/game/data/block.cpp": { + "mode": 420, + "sha256": "f61312708c715ce525ed1a01e71f1446d31fc96ca1cc51f5bd863cac51702200" + }, + "src/game/data/block.h": { + "mode": 420, + "sha256": "f14155dfca5fd270ad6b4d462458aa8cd5c5edf5e19da4df492ee2907e99eccc" + }, + "src/game/data/catalog.cpp": { + "mode": 420, + "sha256": "7799ad3b31d43236cacbc51c3ab086265927f98b1346005a8adfed2796178ebc" + }, + "src/game/data/catalog.h": { + "mode": 420, + "sha256": "80223146bcdbf4808776f974df7e5f46b120a021979a22f50b5ce2d74ec16d6e" + }, + "src/game/data/common.cpp": { + "mode": 420, + "sha256": "e58ba046844be11c61f7f7e501829b48b4f16e7c0ab78f10fcf9189c133cf040" + }, + "src/game/data/common.h": { + "mode": 420, + "sha256": "d1ac8375c1be133a98a383e01598f393f194e1bd9790d1c1230bc6121a45a187" + }, + "src/game/data/fields.h": { + "mode": 420, + "sha256": "4209df368ad776b3c24350246acf47ad874fcbbe292fb16f9ca7dacaef2f08fb" + }, + "src/game/data/shipsection.cpp": { + "mode": 420, + "sha256": "82d5ba9be2a446e50934b0b9a03b16839bd3acd1a967d9441180a1baaa271264" + }, + "src/game/data/shipsection.h": { + "mode": 420, + "sha256": "bcf100f83691226c4993dd7866b67a0b48d9b4bc6841463fbf07f0f26bf9dca0" + }, + "src/game/data/strings.cpp": { + "mode": 420, + "sha256": "6d983d3a4cb4284215301409587136fb765a5e6a4c9f4b988e01d710c0815f59" + }, + "src/game/data/strings.h": { + "mode": 420, + "sha256": "fb292bd472ed68eb4a5e93484f3f92d8a0ae8661e6a61ca4b417ab889c508055" + }, + "src/game/data/techtree.cpp": { + "mode": 420, + "sha256": "2ac6e39faeef808c97375f3b8a3ee219fcab8cc09921f0ed8d82eef7374eb9ea" + }, + "src/game/data/techtree.h": { + "mode": 420, + "sha256": "504946c255405ab28d20d0ed6c095b3b63f0e6865afe0e8bb0707e607c363007" + }, + "src/game/data/turrets.cpp": { + "mode": 420, + "sha256": "ce7db50ef10825e168fee2bf57c4b6038dd1a356be7ada9ed6a4f6a4f31b07a4" + }, + "src/game/data/turrets.h": { + "mode": 420, + "sha256": "f01603ad32b0ffdf891c88cc54c39a725c6a436f8dda79ac23e7505e59853c64" + }, + "src/game/data/weapon.cpp": { + "mode": 420, + "sha256": "accb5aab2081babb26443cd257f292909e19440c40346e098144148922f5d3f6" + }, + "src/game/data/weapon.h": { + "mode": 420, + "sha256": "63aeb670ae7b8a1fd6daa35ed60ebe41a87f62a6ec2a12f44b13f9052c55b009" + }, + "src/game/design/CMakeLists.txt": { + "mode": 420, + "sha256": "42692f7917d99fb5b9e392c2d0f1d908b2bc5c61fc2e5687fddbd665dafe0bef" + }, + "src/game/design/defaults.cpp": { + "mode": 420, + "sha256": "8efa0b79646525375739a1acfe77e75d5ae6b669d1ecaa01f49f3f5183caf528" + }, + "src/game/design/defaults.h": { + "mode": 420, + "sha256": "20af056628f362a4d5ad7ba6277135697718197ec6844ae0ae85bf06d4cd818b" + }, + "src/game/design/design.cpp": { + "mode": 420, + "sha256": "e166281c52a6d92fed8810b38bd736cbd2a324f15d290a39a539d01ff35ead20" + }, + "src/game/design/design.h": { + "mode": 420, + "sha256": "7e936c78ca10c3a49470da67f1659cf4ee323d14d50b5b2c1ada08edfa8f6997" + }, + "src/game/design/hull.cpp": { + "mode": 420, + "sha256": "554b0ef6955ac230c7eca29ea2d94d60b5fbc91f34d9ff457091577c8602268a" + }, + "src/game/design/hull.h": { + "mode": 420, + "sha256": "997018e59c9d78ee1da7e7cb9561b94b76befacbe348a4ce3301c5f22b582461" + }, + "src/game/design/rules.cpp": { + "mode": 420, + "sha256": "a623984f9ab40c354320051fec00bab2c7e3728c2c90082b3b8051294b906319" + }, + "src/game/design/rules.h": { + "mode": 420, + "sha256": "70a8a42fe82e9805cbb957717688ab9f9eb3438226f6e0d696ef5f7a51529229" + }, + "src/game/design/stats.cpp": { + "mode": 420, + "sha256": "c05f420a00026289be8693c0d80bbd2354ce354a91a78459cfc8e70467326c54" + }, + "src/game/design/stats.h": { + "mode": 420, + "sha256": "ba0a5d3bcc98f5c3e64579d42da70bfdf563773ce2fe1e6bfa2b36b14c453fe5" + }, + "src/game/effects/CMakeLists.txt": { + "mode": 420, + "sha256": "2e20f138f98bc69653c8360a26f99f3f43f35beedea5e90dfd7e9721e7550f89" + }, + "src/game/effects/tech_effects.cpp": { + "mode": 420, + "sha256": "40358c2af37543ca3ab09b4d0433cdb4b0d2d212b45f648739cc86e979501604" + }, + "src/game/effects/tech_effects.h": { + "mode": 420, + "sha256": "ef70addf2caf1e3abf36ac9d878a8db37d2adbac370957f5b6a0b5825564a0d6" + }, + "src/game/effects/tech_id.cpp": { + "mode": 420, + "sha256": "11cd652e81a52e86d72541a5c3de77bb50de3d31226272e0d1856e5a15b7f9a6" + }, + "src/game/effects/tech_id.h": { + "mode": 420, + "sha256": "f37752250c80c9c75ef8e144e4646dc1290a2cc8ce72d9a37949c6408996df86" + }, + "src/game/events/CMakeLists.txt": { + "mode": 420, + "sha256": "9b1f14a3801a991ba065e0e39ae2e3fa3966018e8a98fcceeddeaca3909328e2" + }, + "src/game/events/event_log.cpp": { + "mode": 420, + "sha256": "3b131879ec5e81cd1ba2bb0cbdfa6e05775ed77684f4ed7a8f5cfae87da1e7b1" + }, + "src/game/events/event_log.h": { + "mode": 420, + "sha256": "2ff415b1120ca3f28421006a566280fb977027cfa3f209bdba0986350376a953" + }, + "src/game/events/research_events.cpp": { + "mode": 420, + "sha256": "9520b20eba2a2b4bd5925f13b420d526fc610d06aae7ffad314e3002c4f5a253" + }, + "src/game/events/research_events.h": { + "mode": 420, + "sha256": "b87340c6b14e9de97e5bc0c5a4cbd74e54bab2831c60edf88c0e42ff5218ea22" + }, + "src/game/nav/CMakeLists.txt": { + "mode": 420, + "sha256": "79cc0ba25c6d49f7784663ace033d01ab3d85a5d8015fe2f466f8f1a3065983a" + }, + "src/game/nav/pathplan.cpp": { + "mode": 420, + "sha256": "04cfe8fca5be565f5443c8f1402eb0072221dbd63f70855e35b3eeea752f1775" + }, + "src/game/nav/pathplan.h": { + "mode": 420, + "sha256": "28b51f737b458679888e555d985b9e8d41adf8ba91fa0980b5e83668758c86e7" + }, + "src/game/sim/CMakeLists.txt": { + "mode": 420, + "sha256": "4b3085116f88c903a137abef6806891f7b7245dcb031153df7a5465dd2521116" + }, + "src/game/sim/colony.cpp": { + "mode": 420, + "sha256": "e0f0bf15d87b6ac2e92053cbfe0869c0dbf9465d90a9bae5456bb46883423b77" + }, + "src/game/sim/colony.h": { + "mode": 420, + "sha256": "357dce21440140a6cf836a3c12175ebb5bb6706c37d5ecd315a4ee4937725b47" + }, + "src/game/sim/construction.cpp": { + "mode": 420, + "sha256": "8cf4792f487162ca3599f16f0e92d73b4c9549046044548c5aecf202dd564130" + }, + "src/game/sim/construction.h": { + "mode": 420, + "sha256": "a7f201101ad704f1994f809259ad60f780760fa36174d99a1ccd9299447f5460" + }, + "src/game/sim/economy.cpp": { + "mode": 420, + "sha256": "1e0b17b589496a6139e8ca10fe20553050be7c965a02daf8b520dd5020412d89" + }, + "src/game/sim/economy.h": { + "mode": 420, + "sha256": "6f3e33e803bb49367d4cee3c8ef6186f04b79e7cf901047fc48d933108ab6d2a" + }, + "src/game/sim/movement.cpp": { + "mode": 420, + "sha256": "80c64b2148304b84683cf3860ced1354f5c29c923bbc50cc5001030dd85c2cd2" + }, + "src/game/sim/movement.h": { + "mode": 420, + "sha256": "9a6b2b4960428634d8004cd5694ed6a7a10ab28fd9c0e2a9824ede3e201e9441" + }, + "src/game/sim/numeric.h": { + "mode": 420, + "sha256": "88f715192ea322ace4eea13ab5ae55f7f41600262025208e468b5259220522c2" + }, + "src/game/sim/observed.cpp": { + "mode": 420, + "sha256": "43d29a9fe1195dcc0b7e6101ea05bfd076f03636f9f68de473539c83db0ddd22" + }, + "src/game/sim/observed.h": { + "mode": 420, + "sha256": "0224b5bf341f30ff0e98d910547261b6732bdc0c5339b520e26fc51939c1269f" + }, + "src/game/sim/player_turn.cpp": { + "mode": 420, + "sha256": "beb1b2ed434df3727e676ac56e751beff87fa98e4a42e4657cc54d41025773a2" + }, + "src/game/sim/player_turn.h": { + "mode": 420, + "sha256": "f24f8f5e161486575cd341c2f5bfed46fa6983263edcf2320e9c24860b4be51a" + }, + "src/game/sim/research.cpp": { + "mode": 420, + "sha256": "95f2d325544ee018ec8d0f945e91b4172f6ba406f95e19f86c4fb9aac6b22a89" + }, + "src/game/sim/research.h": { + "mode": 420, + "sha256": "e27a311e977afb2e01242938dc8d928e9a67d1f761965e191cf907e05c1c86e9" + }, + "src/game/sim/rng.h": { + "mode": 420, + "sha256": "f7e5bbced3dbd37deb49a00b52d05f7c751501d654dabd645ecff7447355929c" + }, + "src/game/sim/scriptobjects.cpp": { + "mode": 420, + "sha256": "a4f9a1b49e4ba22a88726efbbea2f355b40a3c006734d9150d509a344720a4d2" + }, + "src/game/sim/scriptobjects.h": { + "mode": 420, + "sha256": "210d0eb51780df70a9bca133664429589c03ea33e4524e2c182801d4b4a5c74b" + }, + "src/game/sim/species.h": { + "mode": 420, + "sha256": "83b44c0600b99c5acb72a3484bb0708cfba765cdf594aede596a3c47d5ee6298" + }, + "src/game/sim/techgraph.cpp": { + "mode": 420, + "sha256": "81f8f1120eb1fa4a77752bd2e0917df3dd76372461416526ae510bd697944ef8" + }, + "src/game/sim/techgraph.h": { + "mode": 420, + "sha256": "b2fc90666080a6b7f27dc9290eef17774d57742c2a1f9e1f77d94c7fa5689f6e" + }, + "src/game/sim/tuning.h": { + "mode": 420, + "sha256": "4acfad4098de951cc3a94ca25a2f200e96caba1836bf7441de5a2b458c022194" + }, + "src/game/sim/visibility.cpp": { + "mode": 420, + "sha256": "25f86a34f9a98d2439672283a446ba1804973dae3f6d9aa3692342b05f3a3ac0" + }, + "src/game/sim/visibility.h": { + "mode": 420, + "sha256": "783896489a2a9ec8bce617b141bfb631e8ef92f958be7b5c2ca64fd75774471f" + }, + "src/mars/parse/CMakeLists.txt": { + "mode": 420, + "sha256": "76c290b786a3e73387ec8c574fd5a0dbeb6e629adbe970426314f16497f59fa9" + }, + "src/mars/parse/blocks.cpp": { + "mode": 420, + "sha256": "e60baa8127b21cf6eb6c8e2aa02c6a72c6403dbc29e8480ff658bf184266675b" + }, + "src/mars/parse/blocks.h": { + "mode": 420, + "sha256": "1e8b76919a584d1d7fb01c5ff5e3a7173e8456eca892d61f0c6b7bb8f02f33b1" + }, + "src/mars/parse/effect.cpp": { + "mode": 420, + "sha256": "beb76a841a3d42dbc157413384ff1a0312a7068d6b22020eadcee2e1cbbc81f9" + }, + "src/mars/parse/effect.h": { + "mode": 420, + "sha256": "aaa5c83f2d8eef24667bf05d0f71b2a346f2fce09dc9a45d7a5197c894922e44" + }, + "src/mars/parse/result.h": { + "mode": 420, + "sha256": "58cff456e353550abcd0f52e031d9d70f2b7a975f4762cfccc64eb6bc748dbd9" + }, + "src/mars/parse/script.h": { + "mode": 420, + "sha256": "69a493268c47a08672694489a51c3ff0a7f9aa870e5ae5a93d47ba033cf21ad3" + }, + "src/mars/parse/value.cpp": { + "mode": 420, + "sha256": "712133e4d725649f5461e6a46bac6842b0751ac3fb7e1c468f826638ec58f623" + }, + "src/mars/parse/value.h": { + "mode": 420, + "sha256": "60d692648dab7e3e216c8d9e6ef212592ba1df1a98260b1b4599354742947b38" + }, + "src/mars/rng/CMakeLists.txt": { + "mode": 420, + "sha256": "dceb4bc0fb35c95a12ed9aa36380e79aa75641b15ecc06e4289d39824087e2dc" + }, + "src/mars/rng/mt19937.cpp": { + "mode": 420, + "sha256": "0c60775e9437b8eaad49f67a96001c81947c8d9e6d2472e28b2b490515bac95b" + }, + "src/mars/rng/mt19937.h": { + "mode": 420, + "sha256": "300836ab26fd1a4d913b395f08770bb2c248029ef1b80ecbf0c4d886adca2b8e" + }, + "src/mars/stream/CMakeLists.txt": { + "mode": 420, + "sha256": "95ffbb0c519e55b7423ab048a3019e295b7ef3a3e9506044ef2e68569df9601a" + }, + "src/mars/stream/archive.h": { + "mode": 420, + "sha256": "84d9ae2bb3d6f444b3933b3816cafd12caee8619d2219f19cd10d32cfad01d2e" + }, + "src/mars/stream/bytes.h": { + "mode": 420, + "sha256": "9f5869952c9d6b925db32995a417ba292a0c1a672fc3850400150afb8163b3f1" + }, + "src/mars/stream/dump.cpp": { + "mode": 420, + "sha256": "1b5bba86b2f85b1718276f8db557601320ab8a165d5fbfe93e51219cca5a1c16" + }, + "src/mars/stream/dump.h": { + "mode": 420, + "sha256": "a69af300ae7083fb0a5362edbe7eecd5273c8807884aff9fbedd7ae606c7fc4f" + }, + "src/mars/stream/gzip.cpp": { + "mode": 420, + "sha256": "20d71fd50bd637f78e7ebb5217bc6607ebc257535cc4720e640e4badb72f1644" + }, + "src/mars/stream/gzip.h": { + "mode": 420, + "sha256": "6bce52c615eb120999adb1a6f7f06baa813a033c28e02e6d79ce77f5b7a929c9" + }, + "src/mars/stream/node.h": { + "mode": 420, + "sha256": "eb43054c8592db107557979c7fc8612dc0646ba5d62f154b9b7f96a37ba2e860" + }, + "src/mars/stream/probe.h": { + "mode": 420, + "sha256": "6411d0976d1e785e8c32af6ecfe1a797c0a9aa02314e5e42fae3ed7b3449ae13" + }, + "src/mars/stream/reader.cpp": { + "mode": 420, + "sha256": "90f19cbcdb0fc50795895ea1eff09cd6c0ab3069095c49b276f3894e3d6bcbb3" + }, + "src/mars/stream/reader.h": { + "mode": 420, + "sha256": "900508d97be1cbe566d77f2c91755d3db387535cd9574e41704b6d940daa1ff4" + }, + "src/mars/stream/save.cpp": { + "mode": 420, + "sha256": "6db367b3ea570a4d0ee831160e3f44cef380f58de163b9d9205ca7449e51e049" + }, + "src/mars/stream/save.h": { + "mode": 420, + "sha256": "b3a411600d98b42e9014e1fc3cbc3eac5f32f4393e9f72036d3d840c802bb469" + }, + "src/mars/stream/savedump_main.cpp": { + "mode": 420, + "sha256": "8dc687f009d9f455e9bfa4019f03df72e058cebbb3e9ae5bcbb308285470208c" + }, + "src/mars/stream/schema.h": { + "mode": 420, + "sha256": "b1cd64bc43076a3e5893239bd2eb5c216e7293ee541322ef74fb106928183a05" + }, + "src/mars/stream/shapes.h": { + "mode": 420, + "sha256": "45ee379ff8100b6bc27427a2580d7aae19ff3d5d0aa27f682d156ae6a92d0a6d" + }, + "src/mars/stream/writer.cpp": { + "mode": 420, + "sha256": "54804b06266e34793f5294f9a96d2939d641915a0f60fc4e3b4170bfcea6e083" + }, + "src/mars/stream/writer.h": { + "mode": 420, + "sha256": "921cd44ea30e0b9944825b1d2caafc46edc8f2c23506c807050ed9208a397340" + }, + "src/mars/text/CMakeLists.txt": { + "mode": 420, + "sha256": "dccb93b37c21c9b3c3b35a50ca8de55c9f00df2a9e0a33b6c36d659a75455436" + }, + "src/mars/text/csv.cpp": { + "mode": 420, + "sha256": "b190e12b86a3f416a72c110caf9e0b2d98cdd33851d2fa48b55a8d7ea39279af" + }, + "src/mars/text/csv.h": { + "mode": 420, + "sha256": "3b7ec6d0884e95bfab869c253eddc30a802602bd1f230cc69461cb9cf3c17917" + }, + "src/mars/text/flat_kv.cpp": { + "mode": 420, + "sha256": "b98d3b7345489f0b149e56cd15436fd6199e4cf00d7ce3f8b8b31fcdecb90e47" + }, + "src/mars/text/flat_kv.h": { + "mode": 420, + "sha256": "d6765cd42cad46597b6e36e9d08baf6819f7796442293043d5ff686e2376d292" + }, + "src/mars/text/lines.h": { + "mode": 420, + "sha256": "b9a16ccf0dc7bbf36100e0b66c80bcb818590b161f820d3c67d55bccff1c2c65" + }, + "src/mars/text/manifest.cpp": { + "mode": 420, + "sha256": "4da1bb615902ec61883e561f5dd375d89442f7b9046fbc864f6308f27921087e" + }, + "src/mars/text/manifest.h": { + "mode": 420, + "sha256": "dd7351a7a6a144e97f3a3b6a25d22d1518a099e95deadb8965cedb201601e102" + }, + "src/mars/text/result.h": { + "mode": 420, + "sha256": "7f817033811dff6fcef1d5b76f88922cb0392afb4359549876cd017a14755606" + }, + "src/mars/text/value.cpp": { + "mode": 420, + "sha256": "94b433d78f3211e1a4dd9eb8a0a00b514cbeaf63a03e738146c56dbbfe221479" + }, + "src/mars/text/value.h": { + "mode": 420, + "sha256": "d3b5c70af2f339ad27b43c38353fc7a2da83388854b02000fa1b6d9a4e1dfc07" + }, + "src/mars/vfs/CMakeLists.txt": { + "mode": 420, + "sha256": "630d5d4707ef3c0f24a414815cc23158853fe9d5aef429d6619abc1c433b3786" + }, + "src/mars/vfs/path.cpp": { + "mode": 420, + "sha256": "e1f3bbab1f90b0132aec24d8c5997dafab69ec72f01f2dd2fa63c91f83ef7aeb" + }, + "src/mars/vfs/path.h": { + "mode": 420, + "sha256": "043091008f2cab7c88185de63e7aae63ad9b0e384109f5b6fd8c31666c4e2033" + }, + "src/mars/vfs/result.h": { + "mode": 420, + "sha256": "19115bf1c5b3bf01da078a49209230053043610b342b01cdaaed126e2d3ea748" + }, + "src/mars/vfs/vfs.cpp": { + "mode": 420, + "sha256": "ab8272cd14b4b55e7af13f5383d6106f0b1caabdde57e69c1d0fb5b434d31cba" + }, + "src/mars/vfs/vfs.h": { + "mode": 420, + "sha256": "2484231baa64ede6fc35eb0f49e1fd7a3373d5c559f016d5adfb9fc433619d90" + }, + "src/mars/vfs/zip_archive.cpp": { + "mode": 420, + "sha256": "d66e70300539bd42bcf193683df7c34d2b0b03146fd79f0a180385ead1559e87" + }, + "src/mars/vfs/zip_archive.h": { + "mode": 420, + "sha256": "0ffbd90f7919741e63e86e14d0f87d247bc2cd16d2db54771071553249ad935d" + }, + "src/shim/binkw32.def": { + "mode": 420, + "sha256": "fb500fd9f9ecbff44123b89fc24cec72e91fec4c4430ce12a69efc06b20de235" + }, + "src/shim/fpu_force.cpp": { + "mode": 420, + "sha256": "c4b4e41a7ef81139c652ba8164ed8bb0d809b42182f0d0f048b9a9e63bebe59d" + }, + "src/shim/fpu_force.h": { + "mode": 420, + "sha256": "75bac23bc45510961f6b10d21c47e72d8dc0d3971a3ab30b795cad1d25332c06" + }, + "src/shim/hooks/ai_orders.cpp": { + "mode": 420, + "sha256": "091ed885012fffa0e02b83c53e547483dfdeaf1094933726e0291fff0a99e434" + }, + "src/shim/hooks/ai_orders.h": { + "mode": 420, + "sha256": "6e775b3f946f2eaf10dc2e236a3f3c7b9311ed4e82cd4be1ca30e6c62d49d053" + }, + "src/shim/hooks/ai_rng.cpp": { + "mode": 420, + "sha256": "b8fec711cb620561c8f4854e72c3fb0d73013c9b1cd69fa63fc05dd3d2f60289" + }, + "src/shim/hooks/ai_rng.h": { + "mode": 420, + "sha256": "1306f4d3c8071121b06c75232efa5c50b155c1f8752fcae852ee8e5497ce7d08" + }, + "src/shim/hooks/ai_visit.cpp": { + "mode": 420, + "sha256": "cd69811074820810edb1ed3779ca08bd99fea620b162d80a0395d35e8db7fc31" + }, + "src/shim/hooks/ai_visit.h": { + "mode": 420, + "sha256": "8315b433319f680e80a154409124355ad24842e9a0cdef5c8aa6d12422971189" + }, + "src/shim/hooks/budget_inputs.cpp": { + "mode": 420, + "sha256": "fa50fb74a3874886cf8aeb4012b9fd9a5a43ce38ab3c543ee425002ca32fd46b" + }, + "src/shim/hooks/budget_inputs.h": { + "mode": 420, + "sha256": "56e2f95930ff420820a3464162fde74ac0a3ff2e1dc8b493729fed342e4a6548" + }, + "src/shim/hooks/colony_inputs.cpp": { + "mode": 420, + "sha256": "7aa9191ec6292d765fd06c99ff1f2ae2e09a65fb1f238dd2727f28bd465dd46e" + }, + "src/shim/hooks/colony_inputs.h": { + "mode": 420, + "sha256": "87ec765e14106631e3f6423450e6e01d5bb21060fa91f83c267db215ef4986d9" + }, + "src/shim/hooks/colony_turn.cpp": { + "mode": 420, + "sha256": "b82616c7b9b05e96e7f4c40d853c686884b517a5424413686d61799df9d45420" + }, + "src/shim/hooks/colony_turn.h": { + "mode": 420, + "sha256": "a9013cc2e92998ff56ac0c8cc36dc42033fbe3072ee88b86882a1dd4dd0357d6" + }, + "src/shim/hooks/compute_budget.cpp": { + "mode": 420, + "sha256": "76a24f0daf1f49cfabbed13753c65754e26bfcc4f672791b37e926f82b5c1906" + }, + "src/shim/hooks/compute_budget.h": { + "mode": 420, + "sha256": "f308717e44e12151cfb20a6a0cf11ff8e99ecc9c17ef04783198feed05a24caa" + }, + "src/shim/hooks/dictionaries.cpp": { + "mode": 420, + "sha256": "b60794256c07964eb89d5295ecb711b402112fe5f982a9215dc3a304d03a567b" + }, + "src/shim/hooks/dictionaries.h": { + "mode": 420, + "sha256": "ac68fd66eb343d40ee97d6bf29c8b54f5d469a9ef8862687ae15e6ad8bdafdc0" + }, + "src/shim/hooks/draw_sites.cpp": { + "mode": 420, + "sha256": "e7a1fa40262db2ed22b1dfa5ca1bd2588da07bfbab046f23afa8e86c03814d79" + }, + "src/shim/hooks/draw_sites.h": { + "mode": 420, + "sha256": "0021323e918d464223d03b969d0e6992a0efac23ba84a31af901cf2ac74e9b13" + }, + "src/shim/hooks/event_inputs.cpp": { + "mode": 420, + "sha256": "eeb9cc87ef5c39994b7f25d5ccfe220c4775b32a4b11471b0fc0fb81fca4362b" + }, + "src/shim/hooks/event_inputs.h": { + "mode": 420, + "sha256": "c0e74aed8756b3de8ebbe5ab3d70cfa6282403efefc2d795e8f0b1b4cd44d731" + }, + "src/shim/hooks/fleet_movement.cpp": { + "mode": 420, + "sha256": "f01ae7f64b1d545089b002b79c9986d2a39b97ad3995c88a8b71fa05eedb90f0" + }, + "src/shim/hooks/fleet_movement.h": { + "mode": 420, + "sha256": "dbbfe50afaedad63ec45881819aa5de3907cdb411ddf8d1d3e6a5f9a386dc8af" + }, + "src/shim/hooks/global_consts.cpp": { + "mode": 420, + "sha256": "87a51601e1a7d963bf841ca4e892aa79de789a050f5d783c7b5d8bbc2e96a9a1" + }, + "src/shim/hooks/global_consts.h": { + "mode": 420, + "sha256": "b6ac4265ec1f02f11c342536dbc9970c13761ea68aec0a5962d0f4cd6aa5d265" + }, + "src/shim/hooks/movement_inputs.cpp": { + "mode": 420, + "sha256": "0e23f86e4a8ed6c292aea8e45512931cdd06742f25c5e0d175bf0ed3b2217502" + }, + "src/shim/hooks/movement_inputs.h": { + "mode": 420, + "sha256": "32904786cbb122c3c8c36faf6bd9ea5ade4cd8395e74199ec08dbcdb8019b66a" + }, + "src/shim/hooks/player_turn.cpp": { + "mode": 420, + "sha256": "33bcadd7569ad13c69f5f160423c8d469bc67725ce7b944cf4b4346fb8cc7f23" + }, + "src/shim/hooks/player_turn.h": { + "mode": 420, + "sha256": "a766a0d93f3860da6f8d1e0dcf110d6754cd8dfe67d867093f32e3d24e8ff0e0" + }, + "src/shim/hooks/player_turn_inputs.cpp": { + "mode": 420, + "sha256": "993dce2ca771a36337c9561695995a0825746563d2e84b4458de650f3e456799" + }, + "src/shim/hooks/player_turn_inputs.h": { + "mode": 420, + "sha256": "ca0d7916ca17d993aaef19be48d03076220ae15cdcc622aef52a7c6b5957ca71" + }, + "src/shim/hooks/probe_entry.cpp": { + "mode": 420, + "sha256": "5faf9cf04a2cf849d2dd54ce4ad9b812120fb99741f11e9d52fed450badf0506" + }, + "src/shim/hooks/probe_entry.h": { + "mode": 420, + "sha256": "f04f445863a6164d03bc9f6edcaa2e2b0108163241510f4c1dfcb0da7667d89f" + }, + "src/shim/hooks/research.cpp": { + "mode": 420, + "sha256": "dacd16403f1dd5be2ef2cc42f16938977bdd0ee9283d0bca647a079ee3d28e83" + }, + "src/shim/hooks/research.h": { + "mode": 420, + "sha256": "a62c4847be81ed9d10c4f5b9a876bd79898040aa11aa8764149d82db4b010a84" + }, + "src/shim/hooks/rng_ledger.cpp": { + "mode": 420, + "sha256": "119d325fcda72268bdc87f7ca7af05d059d4521c4d7d40ad7426ce070865eabb" + }, + "src/shim/hooks/rng_ledger.h": { + "mode": 420, + "sha256": "0d1e9c79e7601da921253e860c55d9b69c21e03a1014c49f1dd85fd0e5f70f30" + }, + "src/shim/hooks/system_output.cpp": { + "mode": 420, + "sha256": "93bfb7e6ca381041d1e9830f82b8d774a63c12593fc426fd3e9198c9373be3b4" + }, + "src/shim/hooks/system_output.h": { + "mode": 420, + "sha256": "62a8424c70bb8e6c3d9603ce752f6b19a3920a4a78be75718869d7dac73f3738" + }, + "src/shim/hooks/tail_rng.cpp": { + "mode": 420, + "sha256": "9b2a3923d1d837399f3486650ef0e49b502837ff7df46a12df9a9e9b0d4d9d07" + }, + "src/shim/hooks/tail_rng.h": { + "mode": 420, + "sha256": "b9585605e71364872db25c608012e94db2148f22e2e6fd40d4b590a83f3be92b" + }, + "src/shim/hooks/tech_effect_fields.cpp": { + "mode": 420, + "sha256": "4c4d558aba3ac4e1b10e0944c867911e61daea0b4ade716760546846cebcb7b3" + }, + "src/shim/hooks/tech_effect_fields.h": { + "mode": 420, + "sha256": "22b2c050f73c9de011a42dc5a52d92a1bd3b24a59f3ba3b4332d832fb1853420" + }, + "src/shim/hooks/tech_effects.cpp": { + "mode": 420, + "sha256": "2a20f01a18ed30a466e2023ae023aeed8718c680cda927d2f3b463b6dbe35714" + }, + "src/shim/hooks/tech_effects.h": { + "mode": 420, + "sha256": "ffbc4e8262146cd7764f0b9758fff01ce5d359b25a0f5d8c931313f32d035320" + }, + "src/shim/hooks/watchpoints.cpp": { + "mode": 420, + "sha256": "15c94333f22bb592129efe3fb800ea89987045f9ebbc0e6791d4397961fd727d" + }, + "src/shim/hooks/watchpoints.h": { + "mode": 420, + "sha256": "639ae42b230fb31762f50cac0422dcd5b7fda7a1a02c7739a86d1cd6eda62277" + }, + "src/shim/main.cpp": { + "mode": 420, + "sha256": "eebdac7f8f69b8b95cd290c96d41c6f3f0ed5c45ccd5de54ffc790af47083b99" + }, + "src/shim/shim.cfg": { + "mode": 420, + "sha256": "44ca58394455549150c3461cc888128a968b4f062807e19ef25b8eebf0bfd523" + }, + "src/shim/shim.cfg.b4compare": { + "mode": 420, + "sha256": "68bed5883a75132eb5e885b4750d23c1d5734c843a32a56dc7f96d2b73fdf962" + }, + "src/shim/shim.cfg.b4scout": { + "mode": 420, + "sha256": "faac0765478d88b63f371fbc307512e71fe05f2e6f97272e6e0ceb267cc6d626" + }, + "src/shim/shim.cfg.b4trace": { + "mode": 420, + "sha256": "6a89cdd3cfdf53cfbaff29278fd5d0edf156ad8a525c61624b60ddb1eb0575a1" + }, + "src/shim/shim.cfg.bupin": { + "mode": 420, + "sha256": "39d52ef1ccb18d4dea261b87d3f363ba45079022d1b9bc3531c552ef6df80ec2" + }, + "src/shim/shim.cfg.cbcapture": { + "mode": 420, + "sha256": "0939b1ea144976ded2d45ad885fa0f1ffa3d77f16cba9b4d5a9cb87623500a62" + }, + "src/shim/shim.cfg.cboff": { + "mode": 420, + "sha256": "7d5d6e2ceb7f86fd17543c9212e8547be6009f725871aadbaf6057af1f4f5484" + }, + "src/shim/shim.cfg.cbpin": { + "mode": 420, + "sha256": "72a222c025796458dc1a538eed3ea55f053ee5e3c01e5b19b802922a058d4fbe" + }, + "src/shim/shim.cfg.cbtrap": { + "mode": 420, + "sha256": "938c0893b95b576b75927d75787999c22b3424d28c8936456ea3723f62775e51" + }, + "src/shim/shim.cfg.crcompare": { + "mode": 420, + "sha256": "129031ceb358fef9e0fcee2fb42a0f20fd76d9db78f061f956bf75ce2cc51dec" + }, + "src/shim/shim.cfg.croff": { + "mode": 420, + "sha256": "f99345e7db55e695ecabf7a00fc16ced9a42e8882abfeabc8281b9a4ef26d730" + }, + "src/shim/shim.cfg.crreplace0": { + "mode": 420, + "sha256": "60c13bd76e546b4521ab4e6a7836439078e2a176a11e471e03434623153cb7d9" + }, + "src/shim/shim.cfg.crreplace1": { + "mode": 420, + "sha256": "d27f43eb970d6a9c8a0c8d8f7071633a226c34b675a6581b331c6e1ba6f36c9b" + }, + "src/shim/shim.cfg.fpu007f": { + "mode": 420, + "sha256": "998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363" + }, + "src/shim/shim.cfg.fpu027f": { + "mode": 420, + "sha256": "f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd" + }, + "src/shim/shim.cfg.fpu127f": { + "mode": 420, + "sha256": "1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271" + }, + "src/shim/shim.cfg.fpu137f": { + "mode": 420, + "sha256": "8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9" + }, + "src/shim/shim.cfg.fpu1a7f": { + "mode": 420, + "sha256": "59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588" + }, + "src/shim/shim.cfg.fpuoff": { + "mode": 420, + "sha256": "ce637b3f0eca81c04490335cd9fe8a537cd09e5ef14cc5b3050f548ca4d54c65" + }, + "src/shim/shim.cfg.hoff": { + "mode": 420, + "sha256": "dc9b4619fe84921ea5896c2cd190afb5bd4ca89422fb86bfee8459665f92cd7a" + }, + "src/shim/shim.cfg.hp0": { + "mode": 420, + "sha256": "ede723fc540adb94bf16af0f3086c1935aac008acb6a8d550e2a4e97ff232c2c" + }, + "src/shim/shim.cfg.hp10": { + "mode": 420, + "sha256": "1c1f07dfdb7f99d63ed9a62aa9a447efda690623164beeaf434c588e02ef12cd" + }, + "src/shim/shim.cfg.hp11": { + "mode": 420, + "sha256": "36eae0d554a79b9536e3c57d2fef187ae81bd3266947c7f45035be554fb59404" + }, + "src/shim/shim.cfg.hp4": { + "mode": 420, + "sha256": "5bb0d636247c37def9b5cbf0cc9138b13590a50ae8212890fb7d31dfb9e837f4" + }, + "src/shim/shim.cfg.hp8": { + "mode": 420, + "sha256": "a8fe5f16a299b2b9eb81a811c7ec5a3b1baf635fa179a69f1e23243c7d1e2133" + }, + "src/shim/shim.cfg.hp9": { + "mode": 420, + "sha256": "765fdf337bb6942dbd1357166646dbf7fde3777678a606c4dbfd368078f09b5d" + }, + "src/shim/shim.cfg.hpall": { + "mode": 420, + "sha256": "630f99725ea6aa933984f4c545634d127787672de36f6756da2591e22a36f366" + }, + "src/shim/shim.cfg.hprobes": { + "mode": 420, + "sha256": "3bad5e3e7bf35a85acc7169d27531788e9659dbe0f8b1a0c719777fdb6beb5dc" + }, + "src/shim/shim.cfg.hprobes2": { + "mode": 420, + "sha256": "c335f1ec8aeff1165213cd40adcdcd59893c65edf95b1537fc4460e6060911c5" + }, + "src/shim/shim.cfg.l1control": { + "mode": 420, + "sha256": "c5dec81556268795b9a3df175bafde340a3fe76c7d6e05389e09e79d2b138b43" + }, + "src/shim/shim.cfg.l1hive": { + "mode": 420, + "sha256": "970ce465f2363f391a93086f1b596e904265510e02e7d2d38174cc6ea22d9b25" + }, + "src/shim/shim.cfg.l1off": { + "mode": 420, + "sha256": "a4197233c65acb876328666cf37754aea96f942b6ea08105bdfb61d6d5bcbd64" + }, + "src/shim/shim.cfg.l1seed": { + "mode": 420, + "sha256": "360af979eaa0c13eaa4db38ff13dcc64b3e2ab538300c26497921301fd3817b9" + }, + "src/shim/shim.cfg.l1snlv": { + "mode": 420, + "sha256": "3603508983a87906ecce02e4c2e9581cf2fa59390af25335f0b221765c57ef6d" + }, + "src/shim/shim.cfg.l3cont": { + "mode": 420, + "sha256": "629530a34412ebf85fc8ce8d2e5931684eea9891b6b619419e6f8db8c37f0976" + }, + "src/shim/shim.cfg.l3control": { + "mode": 420, + "sha256": "42b6ec7ebc9c83dae4a58884803f627d54956eb308611ce1e8d3691a12a74ccb" + }, + "src/shim/shim.cfg.l3probe": { + "mode": 420, + "sha256": "692dabb6f00343bfcc2f86d62ade827c295acc4630a18a1f2ddcebd53640978d" + }, + "src/shim/shim.cfg.l4control": { + "mode": 420, + "sha256": "ab13b7e3604ee98e9372e3405e0eacb6d5965e02d5317cfee0ea9b9afbd750e3" + }, + "src/shim/shim.cfg.l4dump": { + "mode": 420, + "sha256": "fb40d67d8d7dca4587a1dc13a95826ab68eb3fcf44feb6006388935f3ee346f2" + }, + "src/shim/shim.cfg.l4off": { + "mode": 420, + "sha256": "629a3e41d11daa53325f31aeb77d14d5abe67058e274d36ed8feb71e2e30dc13" + }, + "src/shim/shim.cfg.l4probes": { + "mode": 420, + "sha256": "a446ff3d6117d5352ad9b3c3c02f6d6300ce0b1089f055925afe19b77f0a20f3" + }, + "src/shim/shim.cfg.l4research": { + "mode": 420, + "sha256": "ad400f7082680db82c6fb0d39eed488710e6661f9e3215b9ea2eb0ba53444b9b" + }, + "src/shim/shim.cfg.l5budget": { + "mode": 420, + "sha256": "74df0fa1bd14fec6e8028ba05c516f3a370ba389386e5a8459d594c2c7ad83ae" + }, + "src/shim/shim.cfg.l5control": { + "mode": 420, + "sha256": "3557f716dde348a98fda65a5bad54911fe6d52f75c2cf6a82cc5d4fc47a6e968" + }, + "src/shim/shim.cfg.output": { + "mode": 420, + "sha256": "a811cffac230a1d6c0f9c5adacb1b691ae289ec08de0da3726309a4e1213acb0" + }, + "src/shim/shim.cfg.parbr": { + "mode": 420, + "sha256": "ea8230b596e7baae0c127f5700391ec2c96d546daba8c70ce8b2800c83b096dd" + }, + "src/shim/shim.cfg.parctl": { + "mode": 420, + "sha256": "2d1190d032bb705030746197020c715f4ab8af551f944e9ec0abe136912ea60d" + }, + "src/shim/shim.cfg.parorders": { + "mode": 420, + "sha256": "2107be5ec950e69d01c43ab30919fbfe652823878f150111b158927bc41de8d6" + }, + "src/shim/shim.cfg.parpin": { + "mode": 420, + "sha256": "893f1f81cdef0a964145ebb1c4b1e2725af8868b14fed412d40e3cce71f824f4" + }, + "src/shim/shim.cfg.recapb1": { + "mode": 420, + "sha256": "688840567305218dada122b29284f6af44c3c63ca173db87406de159bb547c8f" + }, + "src/shim/shim.cfg.recapb3": { + "mode": 420, + "sha256": "2120646255bd70adf29ed2880daa6b11d0867b9cfc9f1c9644d63b92c263b69b" + }, + "src/shim/shim.cfg.recapmisc": { + "mode": 420, + "sha256": "cb1f794c51b5d3d74eb91cc084c96a04444cd79f22fc694d821b51924544f595" + }, + "src/shim/shim.cfg.recaptrace": { + "mode": 420, + "sha256": "0ae410cc72fe155837d711c78543e14b1f5743310cd023298eb1e5bbd5457e71" + }, + "src/shim/shim.cfg.sdbr": { + "mode": 420, + "sha256": "7cb2bfd798ed1286628f3a879606eff076c4f6011d95e1223376eb4d0a392ca8" + }, + "src/shim/shim.cfg.sdoff": { + "mode": 420, + "sha256": "9195aeddeb2caa4e3db7dfd775c43e96eb99cfdc59a6a61e65d86fb325f0054a" + }, + "src/shim/shim.cfg.sdpin": { + "mode": 420, + "sha256": "61119f197b1dc8ddcad059d2d2c2753dae457b4bda4eb29e06c78282eeda6a0b" + }, + "src/shim/shim.cfg.sdpin2": { + "mode": 420, + "sha256": "d6d7f82b500df4f3ed120b4ff421178cf4373a145fa803e57d22a0654e4f0f63" + }, + "src/shim/shim.cfg.tturn": { + "mode": 420, + "sha256": "2ab2d64288043c3c55fde668facde9307c0739e0c801c900790e11db57c5759b" + }, + "src/shim/shim.cfg.tturncmp": { + "mode": 420, + "sha256": "114d325ae3ece29422069ee74c790603abb38c49162dd32520a3eecd18ab6061" + }, + "src/shim/shim.cfg.w2control": { + "mode": 420, + "sha256": "d042c0082a8eb4f55b8e21983df292f0950adc4ac5787d4a0b83088c10c5a3eb" + }, + "src/shim/shim.cfg.w2watch": { + "mode": 420, + "sha256": "ddb9c18a1c6b6c23758e51ca9ac18b4b95abe206b162497adc2978c0384d6ee5" + }, + "src/shim/shim.cfg.w3control": { + "mode": 420, + "sha256": "c6a3a5ea1e39a0714dffee0e44a0e8d91a2b450534d7e4377273a55b3e87de8c" + }, + "src/shim/shim.cfg.w3mod": { + "mode": 420, + "sha256": "7c7f82aaa8b5b007a740324373060ca2ba84edc765eb4e7ce55afcaba4e1c2e0" + }, + "src/shim/shim.cfg.w3tshn": { + "mode": 420, + "sha256": "51fa826d0b18d6f01987d6748e6610847ec3a761257ffc382a40d234670afec3" + }, + "src/shim/shim.cfg.zledger": { + "mode": 420, + "sha256": "31d0535aff9660eb1ad06f529c88a42aa71b83b36f8404b7541a29327c508a51" + }, + "src/shim/trace/emitter.cpp": { + "mode": 420, + "sha256": "4253cac49f0761e487fd555c3c01e02fa22e2010789ad3af37c62c8fd2e02030" + }, + "src/shim/trace/emitter.h": { + "mode": 420, + "sha256": "aa7804614b3d3a214d5c32c33ed245ae24276979080baa9d5481d6594ee3f79d" + }, + "src/shim/trace/hook.h": { + "mode": 420, + "sha256": "35be73ac1c9519664957ffea639d873e8a811b4620f0feecb21b54ea2776f800" + }, + "src/shim/trace/platform.h": { + "mode": 420, + "sha256": "f1b78d971798e45998b26c6b0e20db49fceb7d4c63f0c8c37452c6c2c6df9538" + }, + "src/shim/trace/selftest.cpp": { + "mode": 420, + "sha256": "31461ae6d329a8a3856589b245f3bcf8631f0db9a5e00530e4f94279950de354" + }, + "src/shim/trace/selftest.h": { + "mode": 420, + "sha256": "583d7a10ef04254c7a0fb7dd2a6071ad012a9a97dfae0896bbd598970b206475" + }, + "src/shim/trace/sha256.cpp": { + "mode": 420, + "sha256": "2faf44b5b273612c776204c1d83e0910d86394f4f6207129a01c81dedc170aa8" + }, + "src/shim/trace/sha256.h": { + "mode": 420, + "sha256": "31ce080acdc086ff7657d9093ac9bea438203eaa8e392ca38539152cdd15038f" + }, + "src/shim/trace/tracer.cpp": { + "mode": 420, + "sha256": "37d9490dbdedc399ecdb30f46eb27f31a4ff8c902eadb2eb48ecca7fb0e8fb88" + }, + "src/shim/trace/tracer.h": { + "mode": 420, + "sha256": "cbb80f167b8f98777f9fb58ce107226f42027ffdbd868a6808047c48caf10f76" + }, + "tests/addr_smoke.cpp": { + "mode": 420, + "sha256": "ace1ab9549bb6f3e0048d0e6e3ec6061035395581b2db46c0a5acb097c428890" + }, + "tests/app/CMakeLists.txt": { + "mode": 420, + "sha256": "dd18f8e25d2a9ce988dc226e03c7c6e02a275bbbea74f505d005e42ca5972037" + }, + "tests/app/test_alliance.cpp": { + "mode": 420, + "sha256": "671b2cb3295f360c61ee87005287999710d12e10e7e532331c1c946ab97f7c4d" + }, + "tests/app/test_catalog.cpp": { + "mode": 420, + "sha256": "c4cd9840c1f1b5d5a6829f7f1c5a0245b5e66135d3bed6410a2b6eca1a037225" + }, + "tests/app/test_command_replay.cpp": { + "mode": 420, + "sha256": "739ebeea5bed551f232774bc812bcb794cfa057015fd187529fa563b5d7ae5eb" + }, + "tests/app/test_event_phase.cpp": { + "mode": 420, + "sha256": "05498df256759fe5b8af80e9e56c2ca071eb26de0651f257798fe1641da627ca" + }, + "tests/app/test_trade_raid.cpp": { + "mode": 420, + "sha256": "2158008bc711b8062381f346fa347a430582d8d1943b0de5f40eb2a38e9a3f75" + }, + "tests/app/test_treaty.cpp": { + "mode": 420, + "sha256": "0f98150a3f9397fd12109eae7359ff7e04a4060e10e01ecf1693eb2a4606ead7" + }, + "tests/app/test_turn.cpp": { + "mode": 420, + "sha256": "6d45b1d2d065528f14ae83d95314f2b6559e53cc23f1b9e2531c7c09b4b97eab" + }, + "tests/app/test_turn_record.cpp": { + "mode": 420, + "sha256": "a845971b8d25d71c3b1138495354ad392e4fc298f87eb9b89d1567c01ab59cde" + }, + "tests/game_ai/CMakeLists.txt": { + "mode": 420, + "sha256": "a57a82d0c79ff933564e200a5b3137f120e70a19834264eeb2438c4cafd7ad3e" + }, + "tests/game_ai/test_agent.cpp": { + "mode": 420, + "sha256": "41cb3fbfc7e0b277771a2e8dd17601285a1e3a911543fc1335ce05a4e4b5f11c" + }, + "tests/game_ai/test_apply_order.cpp": { + "mode": 420, + "sha256": "8669c2e9a4c95b670a9c41262c68ce183d3cf3900bc262e0a2e33500bfffc594" + }, + "tests/game_ai/test_command_capture.cpp": { + "mode": 420, + "sha256": "8c2bae38754b347beeefe85d796c13bcf43cf5bc9bc99eb743626028b4dbd7ab" + }, + "tests/game_ai/test_live_blocks.cpp": { + "mode": 420, + "sha256": "44cb6bd8b34c13e329f9b1d50bb2a5c5513e52761537dccfb01afb7d48be7580" + }, + "tests/game_ai/test_orders.cpp": { + "mode": 420, + "sha256": "b13d1a3a628de411abb4faf024a1ce8d3e94518f12285bb3d7e7e86b012ad43f" + }, + "tests/game_ai/test_tasks.cpp": { + "mode": 420, + "sha256": "ffd8eed7fa76a24616d579a4e31031dadf43a0534e33743fb104dfca552367fc" + }, + "tests/game_ai/test_turn_order.cpp": { + "mode": 420, + "sha256": "382d6a30e9151c57849595cb134b8e2da25d2763738c9cbfa18d3cad51ecce97" + }, + "tests/game_combat/CMakeLists.txt": { + "mode": 420, + "sha256": "fd0c0dfb54033353b7014e3c764c916522cb529b6b3eae8a8d52afd044c13fe2" + }, + "tests/game_combat/test_retreat.cpp": { + "mode": 420, + "sha256": "3fb0be08d230bbd7c4ea4a59319de7ab252e5b7cbee924afd069847da8dcf73d" + }, + "tests/game_config/CMakeLists.txt": { + "mode": 420, + "sha256": "9874822d186e783f25b2dcd87495e7e380d873b8a0790c67fffb9430468094ed" + }, + "tests/game_config/manifest_tests.cpp": { + "mode": 420, + "sha256": "3bc62e7e49699254151a825421973d831b25bcf7a22028c789e3ca63b0d77319" + }, + "tests/game_config/replay_trace.cpp": { + "mode": 420, + "sha256": "83602ec974b8195c3616230ad44c2d4fd6032f8ef5f96e7aa76d49a0a04ac05e" + }, + "tests/game_config/unit_tests.cpp": { + "mode": 420, + "sha256": "45b07c7289abac61fccd0a6cd0ff87812542ec888eb6d295fb87c3f57755cc6a" + }, + "tests/game_data/CMakeLists.txt": { + "mode": 420, + "sha256": "cb8cffb7217e82077d3db749dcacf29c098549159cc0f312ef04bfccaa30155d" + }, + "tests/game_data/build_and_run.sh": { + "mode": 493, + "sha256": "69ea9cb94468c56c329fcc5b9350431067e97091ed47c08bb10b57b38412883a" + }, + "tests/game_data/dump_catalog.cpp": { + "mode": 420, + "sha256": "4588e699c69586dfb77f0d9289e375407d4f9cf019690e26bfc78f7182167c89" + }, + "tests/game_data/oracle/compare.py": { + "mode": 420, + "sha256": "2cfe1ac93790de3351256d284392372721f94de5375686e6301ef39b1943ad12" + }, + "tests/game_data/realdata_test.cpp": { + "mode": 420, + "sha256": "334a924bf81c6ce6192a6688435b374e115382358f7e4554aa164295bdd38321" + }, + "tests/game_data/test_catalog.cpp": { + "mode": 420, + "sha256": "9ea5c3fff2388c5d7fbf295123dfd7b702ef21f17fc7c45a970822814abfce2e" + }, + "tests/game_data/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/game_data/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/game_data/test_shipsection.cpp": { + "mode": 420, + "sha256": "b3519f0de60d061a6f1ab8ee81d470a28fc17cc81b113639ef2c1e139c249b4c" + }, + "tests/game_data/test_techtree.cpp": { + "mode": 420, + "sha256": "d05c889da9edb622bd2b66aa8e300d8162e0c8788950daa1086fc049b90dd4bc" + }, + "tests/game_data/test_turrets.cpp": { + "mode": 420, + "sha256": "66adff30b974e9bf2c96c1af024fb85677e1a8307c801933d23f3d2ec9d8222c" + }, + "tests/game_data/test_weapon.cpp": { + "mode": 420, + "sha256": "b16b0481c0a8697ff16e39c9feb3ad9d5406250b7dd1c828bf12f1bb40ed746b" + }, + "tests/game_design/CMakeLists.txt": { + "mode": 420, + "sha256": "a26524ff14878564870853bc067c379d2ebd26c14e45bcbb06593d300ee4b3ca" + }, + "tests/game_design/build_and_run.sh": { + "mode": 493, + "sha256": "b1aab4d13b09fb1ea4205978bd7d8b05af5a6422ebe4a34261c3247489b48bd7" + }, + "tests/game_design/dump_designs.cpp": { + "mode": 420, + "sha256": "b1b24c5cb534ad821a20325869713c04b742c541c448ade83543d75608f7eda2" + }, + "tests/game_design/json_min.h": { + "mode": 420, + "sha256": "9cfd3eabe9b36d6b2863872e08fe6ebaddf0749d1966dea693f8bbc0472780ac" + }, + "tests/game_design/mini_catalog.cpp": { + "mode": 420, + "sha256": "5817c0251883c999c6ebd54c77fdcf3981181b41fb5f7637d445824d60942810" + }, + "tests/game_design/mini_catalog.h": { + "mode": 420, + "sha256": "ecb7fd0dffa8709008bcdf9b9da3e70e68f735f9b5ecd0dcb4c871a35ae43b59" + }, + "tests/game_design/oracle/compare.py": { + "mode": 420, + "sha256": "2db14952f7fca9a587995e326651b0d549b39ceefd9c0ac59982cd35ae5d21e7" + }, + "tests/game_design/realdata_test.cpp": { + "mode": 420, + "sha256": "cea57cd53d881b3bf2557cc32ea402c4991aa6de5ff72340861f195a8e20c141" + }, + "tests/game_design/stock_designs.cpp": { + "mode": 420, + "sha256": "2ac1b8bcb0f61852f4bc0a8b7cda51167531ca2a05d1e485991a4758cf586d03" + }, + "tests/game_design/stock_designs.h": { + "mode": 420, + "sha256": "a49173bde083467f5650cfbfbaebba5f16208d660fe7f2f3da81c2caff07c807" + }, + "tests/game_design/test_banks.cpp": { + "mode": 420, + "sha256": "c1d34991c53523cb7610a569e861e8a312da1fe659de0522a3594fb14cad24a6" + }, + "tests/game_design/test_census_saves.cpp": { + "mode": 420, + "sha256": "814c17c7a14db7b123579b7636ee7f2b720fdf4a5cbbe90f676dc01709c45e3b" + }, + "tests/game_design/test_hull.cpp": { + "mode": 420, + "sha256": "cff70268d58ab95ed963d335904110ab55c79d6a0f660f613409cf6d5d63e2bd" + }, + "tests/game_design/test_json.cpp": { + "mode": 420, + "sha256": "e7fa196274a4591834a974f742ff59c7ed1fb15fb138091b48a071354d001c5d" + }, + "tests/game_design/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/game_design/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/game_design/test_stats.cpp": { + "mode": 420, + "sha256": "a3681df901095b848cc6b1ae63d04fd70eeeadd406e7d51f3c76671cbf523a7a" + }, + "tests/game_design/test_structure.cpp": { + "mode": 420, + "sha256": "d09f7707ee170f8a933c657628c1da4f61a29c7eb2dc687a96c3985bdac941aa" + }, + "tests/game_design/test_tech.cpp": { + "mode": 420, + "sha256": "689c081a324c7ece3f70d711f7ac67a5b93207f95e2800a3a708f2f8dbe31965" + }, + "tests/game_effects/CMakeLists.txt": { + "mode": 420, + "sha256": "c80413a7103ce0ed7944fb096ad22fc206a091645428a6015ec3d0e442414a0a" + }, + "tests/game_effects/build_and_run.sh": { + "mode": 493, + "sha256": "ab5085eeab0ec65d8f7ddd7d79357cd15183888b1b4e51cb563810d4e4c64506" + }, + "tests/game_effects/test_effects.cpp": { + "mode": 420, + "sha256": "b10d804b1ad4fb140e13cc1984c6372dbbfdd92560f37583f2411bbcb45c16d4" + }, + "tests/game_events/CMakeLists.txt": { + "mode": 420, + "sha256": "c962651d71ee7783d5565b418f653f2954e489cf698762c5686f5f2dbb4304db" + }, + "tests/game_events/build_and_run.sh": { + "mode": 493, + "sha256": "8b92d249138ee53f728583a0c68b153eaf4e2ad7f92d415d8b3a83df2fb3ec28" + }, + "tests/game_events/test_events.cpp": { + "mode": 420, + "sha256": "182941b9b809b20d24a2e29c5e4bbd626e6da8486e87dc38d1c6088161ec793b" + }, + "tests/game_nav/CMakeLists.txt": { + "mode": 420, + "sha256": "7ee85557a167281f4576252428b4e01795232f31dc1d93c23b284568074cec3b" + }, + "tests/game_nav/test_pathplan.cpp": { + "mode": 420, + "sha256": "6229cc2b1be1ffffb3fbb812c2ccc89dba7099d349be3a6f8f2c2e26aa1dd58d" + }, + "tests/game_sim/CMakeLists.txt": { + "mode": 420, + "sha256": "563547cdd93bce41ef29a73289e5104a5df61f71cc980e49ea37cdbe26743be7" + }, + "tests/game_sim/build_and_run.sh": { + "mode": 493, + "sha256": "a9c42a931242c7f266f512b4d4ad11f6f8ecf43a447a06a04f174301ee19328a" + }, + "tests/game_sim/check.h": { + "mode": 420, + "sha256": "faddddc37a528f0235f510b249cfc1776ce30aff709329954f09093b01231221" + }, + "tests/game_sim/mini_json.h": { + "mode": 420, + "sha256": "710218b637aaf1a5eb7c49eaa7d158bc3e495135ec14bf8b41384769d0227ba5" + }, + "tests/game_sim/smoke_real_save.cpp": { + "mode": 420, + "sha256": "2432e92ac18fadfb1152c54d9dec9a77b3dbf506ea122401cbbd48584b7c9190" + }, + "tests/game_sim/test_colony.cpp": { + "mode": 420, + "sha256": "45355673c46cbaef66b2c81d04a845cf65b6ddfd9819350c7338d9771fafb6fe" + }, + "tests/game_sim/test_construction.cpp": { + "mode": 420, + "sha256": "8df75076a3f460e949e34100d55acf60b054603da6d4aeda4f73297442c06e21" + }, + "tests/game_sim/test_economy.cpp": { + "mode": 420, + "sha256": "43fe658fd2347e3667a901afa642713d70c85ef0ec75094642da2d05b9ca471b" + }, + "tests/game_sim/test_movement.cpp": { + "mode": 420, + "sha256": "1927c371d52115458d88552014cef30bba60e9bef5eb3acfce11b2bc623e06a6" + }, + "tests/game_sim/test_observed.cpp": { + "mode": 420, + "sha256": "1f6ad16c1a2c80f0621573b5196989b0349e47351585d83835be5e27f6ef3fe4" + }, + "tests/game_sim/test_player_turn.cpp": { + "mode": 420, + "sha256": "13f76eaa6cad265deec25416acf0cae2028d6cd1c7b9585df6e9252ba3f0cbed" + }, + "tests/game_sim/test_research.cpp": { + "mode": 420, + "sha256": "3dc668eb889c41f58db6007a96f54fe2a6d56ee6501a298fba3afbbe9637baf6" + }, + "tests/game_sim/test_scriptobjects.cpp": { + "mode": 420, + "sha256": "dfe90a42bcd2844c2ea3666816f97c05237206bf44467ac29790c72b7b498582" + }, + "tests/game_sim/test_techgraph.cpp": { + "mode": 420, + "sha256": "0627ea1c8012b90b62285cae2f31599ba8a8cd47928452910ade91f93502d68e" + }, + "tests/game_sim/test_visibility.cpp": { + "mode": 420, + "sha256": "ad756975b6605a164f2f9106daf2511730642eff354a866bc764a93a4be1efe7" + }, + "tests/mars_parse/.gitignore": { + "mode": 420, + "sha256": "181314065df2f2fdaf920b1a8b5311daa216a2d6489a06ada5b49cc514d89417" + }, + "tests/mars_parse/CMakeLists.txt": { + "mode": 420, + "sha256": "898204fbc1cec44f697e2803c8bc4887857950ba2b1192dd153de74d26de0ea4" + }, + "tests/mars_parse/build_and_run.sh": { + "mode": 493, + "sha256": "550c6df5fffbd85cfffc3312a03a5fa9d59c1e0416e883ddc2576cdb73eac6de" + }, + "tests/mars_parse/canon.cpp": { + "mode": 420, + "sha256": "63e2bcfb2820e7533aa3a287bcec6c318f7238006dce61ad35381562b979cd47" + }, + "tests/mars_parse/canon.h": { + "mode": 420, + "sha256": "c9a78b866d62c4e58643de2c4149572380a1392b411049c8fe74e37475d21d9e" + }, + "tests/mars_parse/oracle/dump.py": { + "mode": 420, + "sha256": "16e98089d5b532e35d6b88b3d50b4bb07e879c18512cf8d06cc5fd2aa9da1117" + }, + "tests/mars_parse/oracle_check.cpp": { + "mode": 420, + "sha256": "5eb81a0c2db8f96c6f8e51246ea9991642e5571dd94dd2e410e2fad632d47adb" + }, + "tests/mars_parse/test_blocks.cpp": { + "mode": 420, + "sha256": "f376a57891a83768ecc8b73ef5eb2333291c280760f7581ead53f7c2a71a4df5" + }, + "tests/mars_parse/test_effect.cpp": { + "mode": 420, + "sha256": "8bb14e7c718e772bfb4a22a7370f41080c49beabfa597ddd603be257bc310011" + }, + "tests/mars_parse/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/mars_parse/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/mars_parse/test_value.cpp": { + "mode": 420, + "sha256": "a8dbe3326e5339cdad8fed7dd678df92e8a8b675d0b854f4cea6517bf557069d" + }, + "tests/mars_stream/CMakeLists.txt": { + "mode": 420, + "sha256": "31c69840e6e2e566d2e0bbaf49ab3dec712d27e505d0810ddf0496ce3ff321e0" + }, + "tests/mars_stream/build_and_run.sh": { + "mode": 493, + "sha256": "3737e42960b66e788a11cdd7fa9917fe255b6a4f60280e9f620593bf688aab41" + }, + "tests/mars_stream/oracle/compare.py": { + "mode": 493, + "sha256": "f39dd70e4bbf1952cf99e3437fd1ed6252249f3455a2d3c73311f98d8ff4370e" + }, + "tests/mars_stream/test_domains.cpp": { + "mode": 420, + "sha256": "08394777f7bc4186883cd02058f17fda8f47c3ee47049892bd8762c28b5aa959" + }, + "tests/mars_stream/test_rng.cpp": { + "mode": 420, + "sha256": "55f77273d8af5880f976a24fb00dcd8042b31a7a33f15c9f4b62fdb85bba9d0a" + }, + "tests/mars_stream/test_save.cpp": { + "mode": 420, + "sha256": "50250bb4b4f2da05f9453c541f080e018b68731f24cbf93278d50ca93ddd8d63" + }, + "tests/mars_stream/test_stream.cpp": { + "mode": 420, + "sha256": "d0da9ac2287910527bdac875ab39e0147a9be2f5535f04b55460438f31be2537" + }, + "tests/mars_stream/test_wire_schema.cpp": { + "mode": 420, + "sha256": "1cfd259f554be8218cb182dd1facc07f6cd3dea52f0daf7303393e78c7c2eb97" + }, + "tests/mars_text/.gitignore": { + "mode": 420, + "sha256": "181314065df2f2fdaf920b1a8b5311daa216a2d6489a06ada5b49cc514d89417" + }, + "tests/mars_text/CMakeLists.txt": { + "mode": 420, + "sha256": "20f8e0cfa044fb4e6b1caca0ec8d6536e012c1c4ea4454fe990923f40a201752" + }, + "tests/mars_text/build_and_run.sh": { + "mode": 493, + "sha256": "59ae392080c01be0c7f5530ecb9ae4fbdcc02366242b27527c14b8efd5076d0c" + }, + "tests/mars_text/dump_json.cpp": { + "mode": 420, + "sha256": "e246384902c3adf4fa8f2a54e38c4912f6b58f168ebc9b1e158a719e2a52b1bc" + }, + "tests/mars_text/oracle/compare.py": { + "mode": 493, + "sha256": "46a796196a413aa28a0069086e45c96399f21308153b578f063801eb997b54ef" + }, + "tests/mars_text/oracle/dump.py": { + "mode": 493, + "sha256": "53fde94f6676a5504a247cf209e2a42d67e108cc9ea0b02f289562799ee7d880" + }, + "tests/mars_text/realdata_test.cpp": { + "mode": 420, + "sha256": "a399ad5cf91cf35f78809f5b9b5cac8b2eff344dbfbab07b8b27bf66058e1e3b" + }, + "tests/mars_text/unit_tests.cpp": { + "mode": 420, + "sha256": "cd1e9e4f6e0e503d4d9b0902bd2936513293490cdc680f94639ce93661ca09d7" + }, + "tests/mars_vfs/CMakeLists.txt": { + "mode": 420, + "sha256": "282015598e03430be0f47b779ce7087662415b3a59de14814cb3ba35c17af363" + }, + "tests/mars_vfs/build_and_run.sh": { + "mode": 493, + "sha256": "b6a8e7b0706d7416f548f071e742e600cab226663f7d4ad42299dbb76f631701" + }, + "tests/mars_vfs/make_fixture.py": { + "mode": 493, + "sha256": "57586249e57550869dd5adfbc4fdab173a59d2aee630ba69c20d562018d249f1" + }, + "tests/mars_vfs/realdata_test.cpp": { + "mode": 420, + "sha256": "c95248ae53d32bd5d8cf963ca3a39ea82e5ef08b76de736104b6aa34ec88c789" + }, + "tests/mars_vfs/test_main.cpp": { + "mode": 420, + "sha256": "cdb7bdf9b9356eb0b7f6cb0fab081cda2161b34af14ecf60cc44970e79d517c2" + }, + "tests/mars_vfs/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/mars_vfs/unit_tests.cpp": { + "mode": 420, + "sha256": "de8da00718799886fbbc5820e0f7d0e468a31ab0608361fb509b0c12932c9caf" + }, + "tests/mars_vfs/vfs_cat.cpp": { + "mode": 420, + "sha256": "4a443e779de264f5c0c68a631b1a353b1310a4e838d342527befd8ad1e2a25bd" + }, + "tests/mars_vfs/zip_builder.h": { + "mode": 420, + "sha256": "a0f3688e5a90b7e209497d66d0dcd30a0e1ac59a56ffcbed31b2a50967c1da3a" + }, + "tests/shim_budget/CMakeLists.txt": { + "mode": 420, + "sha256": "88a0f43e433c3a6879a7f6cccf8c84ba4559009614a3fe5adf6c558ea7a47245" + }, + "tests/shim_budget/unit_tests.cpp": { + "mode": 420, + "sha256": "654e96d0880232d3090223a0d9f92f428aeffa528fbd5eca89d6bfe348aefce0" + }, + "tests/shim_colony/CMakeLists.txt": { + "mode": 420, + "sha256": "d7b2674971b0eda32b2edd62244c32af81cea9e6d984a24ca6648edbaea80e06" + }, + "tests/shim_colony/unit_tests.cpp": { + "mode": 420, + "sha256": "4cc41308c10fa1e6aa047fb6c26e4c655b727884bce87b5a9e8e2f76db665474" + }, + "tests/shim_events/CMakeLists.txt": { + "mode": 420, + "sha256": "2b43190a2ce88cf7227250aa5a3b48e3006d24f0d6f5e9a5e48507c2733e4c45" + }, + "tests/shim_events/unit_tests.cpp": { + "mode": 420, + "sha256": "0dc151a4aecb24217cc38cb818bbe760b3da2b08a23ad734b3fa8506d25fe2b4" + }, + "tests/shim_movement/CMakeLists.txt": { + "mode": 420, + "sha256": "46ffe5a9815b189283e4d5ef67a0dcd159f60da7f9ca4a3577669035fefdc1f8" + }, + "tests/shim_movement/unit_tests.cpp": { + "mode": 420, + "sha256": "ee6ee983aa72f078a7ae398ca5f828aba14370c898ae4e56063697d28919ad69" + }, + "tests/shim_player_turn/CMakeLists.txt": { + "mode": 420, + "sha256": "f6affa205f857d4a45f8be05ae0426b6f9a2e8e127f5aeadbac2ed8a4c4daddc" + }, + "tests/shim_player_turn/unit_tests.cpp": { + "mode": 420, + "sha256": "0a528cdf64904dfd22c94ea911a15213701e7912921f04c1909799e6e6240450" + }, + "tests/shim_rng_ledger/CMakeLists.txt": { + "mode": 420, + "sha256": "b6a349f2611ec1f1de2013145a97f3da59cefec81dbc4d2f3e58af507e598bb4" + }, + "tests/shim_rng_ledger/unit_tests.cpp": { + "mode": 420, + "sha256": "d38d80dd907a3468036dbca2b017718b199ab4a0078eb5e5b019b913a9ef8d8c" + }, + "tests/shim_techfx/CMakeLists.txt": { + "mode": 420, + "sha256": "5eaf9a76df6b10258a8c1d2658b03d97377d48a778a1628ca94c9bd69fa7ba8a" + }, + "tests/shim_techfx/unit_tests.cpp": { + "mode": 420, + "sha256": "99a71a6d0ca1f53fc8ff0bc21e79acd64ba2cd9c9f990641e5970c866794595b" + }, + "tests/shim_trace/CMakeLists.txt": { + "mode": 420, + "sha256": "91bc736e198c5cef86ad2ad69ca77d93ab770e5faecf9e6d915f9263b9ce491b" + }, + "tests/shim_trace/check.h": { + "mode": 420, + "sha256": "f4b72b971886c64383880ba26484f9c908d21f5902dff0de0b42f276b00d8366" + }, + "tests/shim_trace/harness.h": { + "mode": 420, + "sha256": "d7eae563723843c1389b108fe2efb2e31b6c264d23567a370a09fb9b1d513697" + }, + "tests/shim_trace/oracle_emit.py": { + "mode": 420, + "sha256": "29ed06c602e9f0d6430bb3c81192b1946213a3f44b91107f7036f35f17b69f42" + }, + "tests/shim_trace/test_coverage.cpp": { + "mode": 420, + "sha256": "8ed5b6d755fe7e2bc98d525e97bc7817a5efb7ed5f0196d49d1c783de3a91bea" + }, + "tests/shim_trace/test_diff.cpp": { + "mode": 420, + "sha256": "afd8e5124cf6e1ad9c4f3e4c2beeb65d00002cf1d4cbaa2e876fea0817a7a347" + }, + "tests/shim_trace/test_emitter.cpp": { + "mode": 420, + "sha256": "a9255bbc055df36a01931e8a61dd1dbf16085f7713db7e7386f66b69ddb10762" + }, + "tests/shim_trace/test_hook.cpp": { + "mode": 420, + "sha256": "4dd67374e260ba2722219c2e44e6be76e583d0ad65844f34859cff49b66a30cc" + }, + "tests/shim_trace/test_sha256.cpp": { + "mode": 420, + "sha256": "b55aa15dc806e3e4a87ddf50657fa4e0af6a4e4e2205c4bd63d1ae066fe57428" + }, + "third_party/minhook/LICENSE.txt": { + "mode": 420, + "sha256": "d5c2224982b0b95a16b098a561335fa93f3eaf4d0aa964b7843edb986df78dc8" + }, + "third_party/minhook/VENDOR.txt": { + "mode": 420, + "sha256": "c79054234a5340f6199f8d9f47d6b3d88e8abd2120586cd78f081cfb81a6fabd" + }, + "third_party/minhook/include/MinHook.h": { + "mode": 420, + "sha256": "e34bbf7b855c842694f6e3dd78e2d280e99ed9732501e3dc1532a8626a8db8e5" + }, + "third_party/minhook/src/buffer.c": { + "mode": 420, + "sha256": "75a789eb718bd5ed2de039ccd330736a31d0a2d14e43d8e15e6cd2332432482d" + }, + "third_party/minhook/src/buffer.h": { + "mode": 420, + "sha256": "9769702bd625249e59a19ede05c84365fcc7707e1fa0e5df08df42227cee13e3" + }, + "third_party/minhook/src/hde/hde32.c": { + "mode": 420, + "sha256": "0ddbc3ab3e0b37e61691131289a151e34f508233ccf3f701752777e5d3f62d68" + }, + "third_party/minhook/src/hde/hde32.h": { + "mode": 420, + "sha256": "5132de5be8ac7a9d054420f5caef0fb01437faa892f03b3cdc77f795973bf15a" + }, + "third_party/minhook/src/hde/hde64.c": { + "mode": 420, + "sha256": "9bf19dd706d4bc255ebd1709f98fb44899df7a1f2412820d77295136e0620f1d" + }, + "third_party/minhook/src/hde/hde64.h": { + "mode": 420, + "sha256": "e99aa4997bda14b534c614c3d8cb78a72c4aca91a1212c8b03ec605d1d75e36e" + }, + "third_party/minhook/src/hde/pstdint.h": { + "mode": 420, + "sha256": "604d1cdf45c5a95bc9cf1bbf39ca05ef83013541101d34971c5cd7577e3d5247" + }, + "third_party/minhook/src/hde/table32.h": { + "mode": 420, + "sha256": "43bf687a9fff071b5f46070db4d36c846f8e069cdc57485ee897c499aacdde23" + }, + "third_party/minhook/src/hde/table64.h": { + "mode": 420, + "sha256": "b774446d2f110ce954fb0a710f4693c5562ddbd8d56fe84106f2ee80db8b50a2" + }, + "third_party/minhook/src/hook.c": { + "mode": 420, + "sha256": "3060d3c42f03a2f11324cbee95d853071757ed0fe4b1bc9eb5f0d8fc9e346a37" + }, + "third_party/minhook/src/trampoline.c": { + "mode": 420, + "sha256": "d837f8555681c3762468d712c43f2064ed31dee610e0b02965fd8aa54b88172f" + }, + "third_party/minhook/src/trampoline.h": { + "mode": 420, + "sha256": "27426751dde36cdd8346469e61cdcca47950b1056a69f21cc63f4b41743faf6a" + }, + "third_party/miniz/ChangeLog.md": { + "mode": 420, + "sha256": "ff3b6040f7cbd8c9779a0690e906c66408f7efe3cf88a25019323f0189025ec3" + }, + "third_party/miniz/LICENSE": { + "mode": 420, + "sha256": "0115478d567121238cf6cc1c0c361926cf07a49d9e4c9e66da97fac6a01646b3" + }, + "third_party/miniz/miniz.c": { + "mode": 420, + "sha256": "e2c1aeb66eef9191d8c3feb164db2def2335a61d039bf04ed849f6b042433b30" + }, + "third_party/miniz/miniz.h": { + "mode": 420, + "sha256": "b53b62ed122e559b8f679e3cb787a0b0035fe87a58f909da0e44931678f4e85f" + }, + "third_party/miniz/readme.md": { + "mode": 420, + "sha256": "b4ea367be28a36e5386f65118b73962bc659a67936d248be68b7a7c03b8d359b" + }, + "tools/build-shim.sh": { + "mode": 493, + "sha256": "1da3fdcc019dc6495c870a42b93cee9f21ff7f9623f033c2f50d9db9fd6a33e0" + }, + "tools/check_shim_configs.py": { + "mode": 420, + "sha256": "ef5e8f100c06d8c485a165ab668206af3e9aed3e1f6aa6ffec2592419fc2332f" + }, + "tools/clean_room_check.py": { + "mode": 420, + "sha256": "e15bc3ebfd29c6e2d8edfc32cc812858869b49ffa1404cafce14c4c24e0f4e24" + }, + "tools/clean_room_check.sh": { + "mode": 420, + "sha256": "6646eb6010be756113f7af39b9cfcb06e8580893fbd100a41993f87757ccfd6a" + }, + "tools/deploy.ps1": { + "mode": 420, + "sha256": "fe01f46bedc91d7b42ff98cb0e69633845094cc2802108d23d48eb70f32e3f27" + }, + "tools/sync-build.sh": { + "mode": 493, + "sha256": "ce418ace6c5edae8609849233bb5dfd24657f55141c8ef8507659608f12aee2d" + }, + "tools/undeploy.ps1": { + "mode": 420, + "sha256": "5730b6f95f161ba5a727dc0a34f26da7f1f697711495d6a9de9c289ecd747af0" + } + }, + "manifest_sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd", + "path": "/tmp/opencode/sots-final-research-engine" + }, + "re": { + "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", + "files": { + ".gitignore": { + "mode": 420, + "sha256": "ba56b745b84c6d15b7288df65f319831fed3cbf8edd1ab3a6476418f48fd95f8" + }, + "AGENTS.md": { + "mode": 420, + "sha256": "ac21cfb98c6cc2f666c7237967ee71315b4787557e936072548e4e6934a8d9fd" + }, + "CLAUDE.md": { + "mode": 420, + "sha256": "65cc9d5f028959a7d9b53c4828778b27217eb04f37f55b08e6aa3e40afb60a4a" + }, + "README.md": { + "mode": 420, + "sha256": "e318014a84d03e53983cdb1e5b0310f372b959f659b91abc9214faf530544afc" + }, + "campaign/DASHBOARD.md": { + "mode": 420, + "sha256": "c5f72f13d38ad96b5a30131b09c20300743d0d1e15357fd249eac9793759026d" + }, + "campaign/agents/analyst.md": { + "mode": 420, + "sha256": "895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952" + }, + "campaign/agents/implementer.md": { + "mode": 420, + "sha256": "eb5581051a92b3d2b9ddd947812b1c02ff6a0b5e7619e7674adc26701e9a3d91" + }, + "campaign/agents/lab.md": { + "mode": 420, + "sha256": "48f1765ebdcb2015e631ad91428f65735ff899e119134b652f70788ff2eae5b8" + }, + "campaign/agents/lead.md": { + "mode": 420, + "sha256": "8fcfe52be845ed98a172afb47ea888b19bb7bffa80f7b50ace58d2bb66924220" + }, + "campaign/agents/resolver.md": { + "mode": 420, + "sha256": "742c36dc8567669d462566d6121eed42fcff5bff34e8eff466e92249f7ca195f" + }, + "campaign/agents/verifier.md": { + "mode": 420, + "sha256": "e467fc644e4e37d631a7a4e35038d9d3d0498491f1d7811d61d99271ff345c6b" + }, + "campaign/backlog.md": { + "mode": 420, + "sha256": "ee123405f92be97d36d86420707d3d60c67cb4ad50165491bc6e12b8dacf3b6f" + }, + "campaign/board.md": { + "mode": 420, + "sha256": "1c256d6e39063609ba89745d2931ad5005223da89ddbe9fda2d782b88d5acdd2" + }, + "campaign/contract.schema.json": { + "mode": 420, + "sha256": "a2c76ec042ca097a57c3c05c1e519e392d498d387a31808c7d0f70482d43c201" + }, + "campaign/models.json": { + "mode": 420, + "sha256": "00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48" + }, + "campaign/open-questions.md": { + "mode": 420, + "sha256": "bafe95db6591d87a2bd7c67831c34a993afbfd61e9f75357625763dec25fe134" + }, + "findings/.keep.md": { + "mode": 420, + "sha256": "141ed928eaf10a2023dd2c0ff6ea68cf6ec423cfd28d5a359d9c5add730bf64c" + }, + "findings/00-strategy.md": { + "mode": 420, + "sha256": "3bc97827988c6eb4647713c5655271e156dfa466fad5685924010f3244fe6386" + }, + "findings/01-fingerprint.md": { + "mode": 420, + "sha256": "7cf0503c29f5beff852427c2c5bdf8e9d968386de777c47b6130771cac944cac" + }, + "findings/_template.md": { + "mode": 420, + "sha256": "b92d0ca7bfef4498a5f9e594453f15ab15e2c88c7582c4ed5df4c40e6871c3b1" + }, + "findings/control-flow/ai-visit-order-probe.md": { + "mode": 420, + "sha256": "e89f91a33139014ebdc22d79064ecfd06f9b4ffebb4bbc3da73734fc47534047" + }, + "findings/control-flow/alliance-mask-and-modcount.md": { + "mode": 420, + "sha256": "ec66c6b76d9e4c8bed385acf70e6a7d5da08e05eca72ac1e8e5cb307d87f2552" + }, + "findings/control-flow/combat-done-tail.md": { + "mode": 420, + "sha256": "799ace775f12ebe9a2737a711c8d0a6e617f0cefec70b93bf094e47cf81cc348" + }, + "findings/control-flow/combat-resolver.md": { + "mode": 420, + "sha256": "abf1a9329c1bd8a96c76481246a00b380e9a17fa8dc8900810218026e5fe1b9e" + }, + "findings/control-flow/combat-retreat-pipeline.md": { + "mode": 420, + "sha256": "6c40c8bdbdde672c9cd67248d740d88892ad2b93b30e27e9bebe0e96027cf136" + }, + "findings/control-flow/fleet-visit-order-mechanism.md": { + "mode": 420, + "sha256": "a2ea1a6ac9d383380e16910cff89dff0e9b23f1df66f47ef91dd266bd50b3a6d" + }, + "findings/control-flow/gate-indexed-rng-audit.md": { + "mode": 420, + "sha256": "5004b2480787eec7be66f40474648030fdaf7759087a4c4651091152d89351cd" + }, + "findings/control-flow/hive-creation-rng.md": { + "mode": 420, + "sha256": "5ff37d571c0380c798a137e0c6947a0c63109de489fd2100c99bfc6637fc272b" + }, + "findings/control-flow/indirect-edges.md": { + "mode": 420, + "sha256": "3dbf2acf7354f61de66348fe40965f3138dbc4bbff8cb0f06b2751e71ed06ee1" + }, + "findings/control-flow/inlined-draws.md": { + "mode": 420, + "sha256": "3b099718543d7fb112664699749602ff9d61de9aaebb561fc93f1f8b7a152134" + }, + "findings/control-flow/per-history-residue.md": { + "mode": 420, + "sha256": "739c7fc760583ca143036ce554e1eece640d1662fba4642e6f80fadd3dad13f9" + }, + "findings/control-flow/pinned-seed-rich-turn.md": { + "mode": 420, + "sha256": "7c62336767b7c69f513446543f37662ba2a0872e207b906279446bbe399d65b6" + }, + "findings/control-flow/raid-gate-multiplicity.md": { + "mode": 420, + "sha256": "6d7b7357be428ff79186478dc37063657ca4d8e2ad49fcdd92493753748a52f4" + }, + "findings/control-flow/raid-intercept-species-word.md": { + "mode": 420, + "sha256": "1da80eb14f0e3e5a0ce139f62976bb305e3e75a1e5e0631d8287f94eac093d8f" + }, + "findings/control-flow/raid-intercept-z-word.md": { + "mode": 420, + "sha256": "beb421953b70377c8c759f5cc936321faa6316be76d41020b41f26c99706acb3" + }, + "findings/control-flow/raid-target-pick-verdict.md": { + "mode": 420, + "sha256": "d0262a4187e35547b28d6be842e7c730aa3ee93565404b587a790706afabd694" + }, + "findings/control-flow/seed-exposure-forward-test.md": { + "mode": 420, + "sha256": "f108a07ce695b64c482af58db4caeb2607059a3357b62f04f7f36ce45c84ff4a" + }, + "findings/control-flow/standalone-generator-and-turn-record.md": { + "mode": 420, + "sha256": "e499f62534580f27c2a01395e08312ebc7df13bdd307342096f468212aec600b" + }, + "findings/control-flow/standalone-scaffold.md": { + "mode": 420, + "sha256": "0bf928260d5058815a2f09c4df8c08eb359430aeea941f872018de7cbca39105" + }, + "findings/control-flow/tail-probes.md": { + "mode": 420, + "sha256": "ae45e84a9c7f257170f7550301fc4e1a35d5210269bda8070469a5c921cce95e" + }, + "findings/control-flow/tail-rng-ledger.md": { + "mode": 420, + "sha256": "2db588423e7b7de7729e5319477c17fbcea5b7a9cb8ff00b01cfd72bfce25403" + }, + "findings/control-flow/trade-raid-rng-gate.md": { + "mode": 420, + "sha256": "85c7b27aa284988b07b5e67c8e48ef1725289f1a6956d88be2572577cc06e1bf" + }, + "findings/control-flow/turn-driver.md": { + "mode": 420, + "sha256": "3f4e92041a0842d211ea9ae1ae16a9fe400dacf9632209102a1f76acc6b30792" + }, + "findings/control-flow/turn-spine.md": { + "mode": 420, + "sha256": "e2a64f82e5dececb4ba56859d1e53a0f720e08472c79c39197beba7f6041811b" + }, + "findings/control-flow/w3-containers-status-handlers.md": { + "mode": 420, + "sha256": "fffbaa6e3701abbe57a54046416a102502afeaa29b14632f9506905c22bf3914" + }, + "findings/control-flow/watchpoints-modcount-status.md": { + "mode": 420, + "sha256": "0aec4c93ca7219e29827a5069a9829d5e58da2001e79a7316bce288d3e9a6c7d" + }, + "findings/objects/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "findings/objects/00-inventory.md": { + "mode": 420, + "sha256": "cada5fc81c42cb50878a26e43a58640153c600319e66d4c92a23d7c363ff5f14" + }, + "findings/objects/aiagent-block.md": { + "mode": 420, + "sha256": "55d646ab57e90477993d263399254a3b103024d89fff42491b7df5cf4ffc8037" + }, + "findings/objects/classes-game.txt": { + "mode": 420, + "sha256": "e0eceb77c56e05bc7863d3a07805d703fc0ecec489ef24fabe7c6161f2835199" + }, + "findings/objects/classes-mars.txt": { + "mode": 420, + "sha256": "b624f7bd82a5277462a39627140a85c7a7929fd292b62e45edb5c96fd53b6145" + }, + "findings/objects/ghidra-recon.md": { + "mode": 420, + "sha256": "ca4b043a73c1d5573aa0c83cd3942db731884910c90e7d8544c8a32c939e2fda" + }, + "findings/objects/rtti-raw.txt": { + "mode": 420, + "sha256": "39f6fdf8793f8202c19cfb87a75466b215254a13050ec37c0c496699298247ad" + }, + "findings/objects/save-editor-structs.md": { + "mode": 420, + "sha256": "835d4fbf154275542383ea499a527c044ec7d577486c2735b817bd32d6e0c853" + }, + "findings/objects/schema-gaps-resolved.md": { + "mode": 420, + "sha256": "9ddae36eb8e3ef909c4902d01200fc8a17335271e4e063939ae162a3eea5bb3a" + }, + "findings/objects/serializable-types.txt": { + "mode": 420, + "sha256": "59c2f3942f55eb3f6687758a4c447b1ed8902caa60b97d9619bb8228e27c6838" + }, + "findings/objects/serializer-struct-recovery.md": { + "mode": 420, + "sha256": "5b56d8e1a5047d602cea7a76227f30e17244057fe21fde3d4e2cc76e9f185416" + }, + "findings/objects/ship-design-catalogue.md": { + "mode": 420, + "sha256": "feded2191180e184d34d4992935dc117bff8d052e8a2c63ecc29fa7b2e6b561d" + }, + "findings/objects/struct-recovery.md": { + "mode": 420, + "sha256": "4e99ef972529101f5700b52845e263fb3789e0b82d8cdeca921f1595a24d92db" + }, + "findings/objects/svsctob-variants.md": { + "mode": 420, + "sha256": "89617cd2909f2242e9e1657fd4a8f5aafe5aa0c1e0e9bc8926fb67c1e830dd2d" + }, + "findings/objects/svsctob-writers.md": { + "mode": 420, + "sha256": "7a9b7f3bf4eae63cf522246227410b2e3ca789284b7c620f01550fadf479622c" + }, + "findings/objects/turncommands-block.md": { + "mode": 420, + "sha256": "8eca2b79838114e7ae46d34c6e75eaf3b04c0448d9896ed4219b118f09e83046" + }, + "findings/objects/wire-schema-channel.md": { + "mode": 420, + "sha256": "31f0fc4e1cc3c3e7ef938aa22ad65cfdec32be4f1ade476a7ebf32c3c6f07d6f" + }, + "findings/objects/wire-schema-closeout.md": { + "mode": 420, + "sha256": "bbae848b4f8d6d0f2a914268ac34e75b4cea483f52816916202f3bd3cd084255" + }, + "findings/objects/wire-schema-ratchet-debt.md": { + "mode": 420, + "sha256": "0d144181478a607f2474a7c8a1b71ca49c881ef6fd068b5e8859c3fa8129507a" + }, + "findings/resolutions/2026-09-08-ai-seed-per-process.md": { + "mode": 420, + "sha256": "0765bdaeade29122ab5e64493f3a7c339f1e4c4445192ed09ae3d229dd6ae943" + }, + "findings/resolutions/2026-09-09-fleet-id-order-residue.md": { + "mode": 420, + "sha256": "b3d63a11e8ebd55da4af15760d044607b6105216898a018f5ceebc94750817e8" + }, + "findings/resolutions/2026-09-09-seed-exposure-is-a-predicate.md": { + "mode": 420, + "sha256": "dd7ce18738a625b9008ef80783bd64fc3857852775ab3b784b9e5f4fd5ae7de1" + }, + "findings/resolutions/2026-09-09-tail-draws.md": { + "mode": 420, + "sha256": "ff86a332ea9f87bd6f42a0b64e837e6f6f5876423ae9403a903aa9bfe7c42678" + }, + "findings/subsystems/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "findings/subsystems/ai-client-seed-is-per-process.md": { + "mode": 420, + "sha256": "5e6de0418588ff28cee29cb9affd69c3183819318c314eeb0771bbe810e6b4ed" + }, + "findings/subsystems/ai-order-capture.md": { + "mode": 420, + "sha256": "6efebf9f00b375d2c7f29ddeb24ef7a04e3b02cac9027369b490157a196d08ce" + }, + "findings/subsystems/ai-order-emission.md": { + "mode": 420, + "sha256": "9e54a13a18387a4f93acc5c66dbf71d365c81f1a8e6d2aee31f7a89712894ace" + }, + "findings/subsystems/ai-stepping-and-passes.md": { + "mode": 420, + "sha256": "e7e2fc612457a4e77df362aea2928d20fa5a2456fe12a7fbafeaf3c9e01c1dc1" + }, + "findings/subsystems/ai-task-system.md": { + "mode": 420, + "sha256": "577f8fc41256ebdf9629f1e30df9aac7f51c1a84b55f60c2b59e4af4c55126b2" + }, + "findings/subsystems/ai-turn-logic.md": { + "mode": 420, + "sha256": "79e9b7c9592d583db7b9d9ce472804038a71febf7527bd69e31b3399caeb0770" + }, + "findings/subsystems/battle-load-profile.md": { + "mode": 420, + "sha256": "3cf8e28925ebbb162bca9c3be9e6b2599c82ab6aaf9a9d99ffd9c934bf773c77" + }, + "findings/subsystems/data-model.md": { + "mode": 420, + "sha256": "f01c9bfcf8ed9fbf9fdd30556308a1dbb1094896050cc8a5e4fbc1c6c61aff78" + }, + "findings/subsystems/data-parsers.md": { + "mode": 420, + "sha256": "6a428c14279ac2c589b4af932e762ef7e3ada1a878128527b8d88858c11fbc35" + }, + "findings/subsystems/determinism-oracle.md": { + "mode": 420, + "sha256": "4fe0abad0b1b825392cd47b792d06756742495f26ff40a6a433d8608b4680bcb" + }, + "findings/subsystems/eventlive-verification.md": { + "mode": 420, + "sha256": "8bfcc75e57ddf88ec8a4b8885f033be8ffd420965077ab284b1ebce535ecf1a0" + }, + "findings/subsystems/events.md": { + "mode": 420, + "sha256": "c5d6e168d6d48eabec0ae0a448f9c3ec8d0f751a67fc320bc1021ba10008a3bf" + }, + "findings/subsystems/formula-gaps.md": { + "mode": 420, + "sha256": "63ec96a27fac5381d33cdce3e549d230bd5b0230e4d8573f4f3d45bab7d47ffc" + }, + "findings/subsystems/fpu-precision-sensitivity.md": { + "mode": 420, + "sha256": "4cf84e2a1c3d0eaaf9b3a7f218ad663ffa6984389b2a25851249733ad708ff8f" + }, + "findings/subsystems/golden-trace-recapture.md": { + "mode": 420, + "sha256": "b244f939b87dd464d78d919675c0e6aa010b0ec7b4fc6e4178e26c2c8ebee738" + }, + "findings/subsystems/id-allocation.md": { + "mode": 420, + "sha256": "b04a14a5a7d4d1c6137c4f9072987eebc997421e550881dcc2c8e386187f5b90" + }, + "findings/subsystems/income-term.md": { + "mode": 420, + "sha256": "c40286635675a91ce779b887a0394e92f946844873a778015efb98c4a105b67e" + }, + "findings/subsystems/loader-prototypes.md": { + "mode": 420, + "sha256": "f1d09471d5e17c45413b86805f561329f5af24eadfb17c3c740686c39b167ed6" + }, + "findings/subsystems/money-chain-float-widths.md": { + "mode": 420, + "sha256": "99bded6f2d34a713bc175deb4ad5ab4559ce1cc90274b036c1818ad8257c2fef" + }, + "findings/subsystems/movefleet-position-rounding.md": { + "mode": 420, + "sha256": "12dbdc03658cb042b5927586769dc9c19fc2eb812f703e73bf26273f8b0d65a6" + }, + "findings/subsystems/multiplayer-combat.md": { + "mode": 420, + "sha256": "2f4957011b5c5875b8aa7f71531dd5dfe3fd8df4f2c67a7be2fb5999f090c02b" + }, + "findings/subsystems/multiplayer-gamespy.md": { + "mode": 420, + "sha256": "a878e97775d27e085e58b18eaf5a67aaa522456d1055ca142f0477e3d6152d47" + }, + "findings/subsystems/multiplayer-tier0-verified.md": { + "mode": 420, + "sha256": "942ce29cbe22d8f7de5af54f2017c0433c7b8e1a56c864868ec906ffcbb9059a" + }, + "findings/subsystems/nav-classifier-live.md": { + "mode": 420, + "sha256": "b8aacdea8072a99ba1192e235088b372180f094795baf164e8cb95bd2df9f3b0" + }, + "findings/subsystems/nvo-tshn-visible-owner.md": { + "mode": 420, + "sha256": "ef96bb61769c02affd7148cd95e70bf358cbe6263fbe9b47aba6cf4cfa8486ad" + }, + "findings/subsystems/observedtech-append.md": { + "mode": 420, + "sha256": "61efcf51bffe53b8a10a2cdb8123db3f8c55b6874db87418fc31737efedaa652" + }, + "findings/subsystems/output-term.md": { + "mode": 420, + "sha256": "9eb9ff58a1d4cf34d3138f5044788b6f87ff4c94fa871b2dedd6ff6667196533" + }, + "findings/subsystems/output-turn-path.md": { + "mode": 420, + "sha256": "4e199e5cc14802c1b14b37cff0c1359b43aca94dab833f9024c7825c4c512588" + }, + "findings/subsystems/path-solver.md": { + "mode": 420, + "sha256": "3e0e318d45e14f844831c4180e47011263f64067dacf3249742882186d65cf18" + }, + "findings/subsystems/players-residual.md": { + "mode": 420, + "sha256": "e2f56c7983856470d37cd0fba4834a0ccb34dcaddbaf9acaf5dcdc253c6b3507" + }, + "findings/subsystems/population-growth.md": { + "mode": 420, + "sha256": "c2ec2f062e1224045b761640549e7374336ac762bd61c686a0c1378ad829a993" + }, + "findings/subsystems/rcex-explained.md": { + "mode": 420, + "sha256": "df7c9de6f02c1bd38f69e3a5344ec663d97b1d6b738ff408dfdeb0e2f6175b32" + }, + "findings/subsystems/relabel-new-ids.md": { + "mode": 420, + "sha256": "562ffe347adc6432a7824bfa2b324b6b1812b4fcc18343f0732c0f3d9991be20" + }, + "findings/subsystems/research-replace.md": { + "mode": 420, + "sha256": "d0f692cf687a7fe6aab62fc5d7d076eb595e1c33fd84c6f1e437ed01025cab4b" + }, + "findings/subsystems/roll-parity.md": { + "mode": 420, + "sha256": "7d97d7e5eee7b9f135e32b6553bb94ca83fd05b1eca7d18c42e9d65cae4d95d1" + }, + "findings/subsystems/rung-b-rich-turn.md": { + "mode": 420, + "sha256": "44378c6a305a82b2d131270fa5d97fdcd8a7fd5c9760ecbad7715383eac2db68" + }, + "findings/subsystems/running-the-game.md": { + "mode": 420, + "sha256": "f6109f69c6b86e4cf01d0f2e1f8be9921ff632513bca5d9e44e7f6c34f1cd260" + }, + "findings/subsystems/setresearched-cascade.md": { + "mode": 420, + "sha256": "9c079de161a1d1387339b8e8081395c1356c1443a0c898942acfb6efb65a454f" + }, + "findings/subsystems/ship-construction.md": { + "mode": 420, + "sha256": "86f570b1872c8dfac3982d1d7335f4798ccbd1bfd73c91d481afba2734c41216" + }, + "findings/subsystems/ship-design-composer.md": { + "mode": 420, + "sha256": "639b276e9205aaf6c90d9c458a383cc073e89f401ef8f17f8ad5a8a0c5899fa8" + }, + "findings/subsystems/snlv-measured.md": { + "mode": 420, + "sha256": "785324d176be969e1809090acd6b7a48d27f4fa41472c0d9c6f568c0b3a1e539" + }, + "findings/subsystems/spy-detection-roll.md": { + "mode": 420, + "sha256": "214179f5091408ef01ce4b80565068cb9a0885d1c6a233cda476280b9bf29c0a" + }, + "findings/subsystems/spy-program-draws.md": { + "mode": 420, + "sha256": "0c61c2f9cc767ae679921bfc42ef9a207ec9a6e0dc88419a673a8e439f1abfc1" + }, + "findings/subsystems/strategic-turn-internals.md": { + "mode": 420, + "sha256": "3a5c17e025d4968db6030f8ef1daaa2b03ccd4def12d35cf3a0eabcb0b5cbb54" + }, + "findings/subsystems/strings-and-config.md": { + "mode": 420, + "sha256": "67aefda7792e329b7df3f6e8cf42c7bae7049867cdda0741e871b183bc528786" + }, + "findings/subsystems/system-visibility-prediction.md": { + "mode": 420, + "sha256": "b420526ca0410bd4578dd2ed29cd9a21ed3578d6345d9f853a883e0159c1f89c" + }, + "findings/subsystems/system-visibility-record.md": { + "mode": 420, + "sha256": "d2843e10c156a7c85d7dab40d00204475fc725dc9b93656f6cde941ceceb5f51" + }, + "findings/subsystems/t34-observed-designs.md": { + "mode": 420, + "sha256": "207641821a55f5671749b000d478afd9e427336e2d123a55ad2203f34dfaa796" + }, + "findings/subsystems/tech-effects.md": { + "mode": 420, + "sha256": "7423f1e2cb2a597738b244d58bdf467431ee5de725ac434b904676ddcbcfc609" + }, + "findings/subsystems/techid-name-map.md": { + "mode": 420, + "sha256": "cfd92a7885dad3775465fc0c5b40aeb1749499f90071b44855ab8e1746d5f752" + }, + "findings/subsystems/trade-and-spy-workload.md": { + "mode": 420, + "sha256": "147057456fa30b6218df19679abab1ac31b78276a4272d221b70776e154396ba" + }, + "findings/subsystems/treaty-turn-stamp.md": { + "mode": 420, + "sha256": "fa0a8588847cc2b9e92cddeca65fd00fe3d84a00a1034d9354053c7e6cd9ceb5" + }, + "findings/subsystems/turn-command-replay.md": { + "mode": 420, + "sha256": "b65fa3c3c01c67bc16ec488e4a44e6c748256e941c80987528b7602038a56e07" + }, + "findings/subsystems/turn1-to-turn2-nondeterminism.md": { + "mode": 420, + "sha256": "9ebe834fa0f7c1cf864032ec67da76730ed6c239d6bd3a717f147490116acc4d" + }, + "findings/subsystems/turncommands-capture.md": { + "mode": 420, + "sha256": "a57fd2a77784fef1b176749878b161c4f04ac77c1f4a061a6b713787d92fb9ef" + }, + "findings/subsystems/ui-screen-map.md": { + "mode": 420, + "sha256": "d266285e3ca99ba3b5ebbab47c78f3df247a8b539c0519c6fd27a999b9d6f84b" + }, + "findings/subsystems/unlock-cascade.md": { + "mode": 420, + "sha256": "38d29a9484aa3910f5a62b5dd08225ba590bf26901203c5aef1b0b466fbbc5fb" + }, + "findings/subsystems/value-domain-census.md": { + "mode": 420, + "sha256": "bc99139708aee5da4cafec585fc35ab3523b51571518038db19b5f1383c6a6c4" + }, + "findings/subsystems/writer-byte-exact.md": { + "mode": 420, + "sha256": "a0e91a90d2ae78328dbaef30b37d53037cab26489e4729413bcfebbafcab0978" + }, + "ghidra/addresses.d/README.md": { + "mode": 420, + "sha256": "cf2745d5d3e504725ae5a296dc20e3d63b8d32a903445aafe2af61828a6d59c5" + }, + "ghidra/addresses.d/ag.json": { + "mode": 420, + "sha256": "24d5b11779364cf198008b143c7a3a092117ec4a1530c489497dbc8acdf62d8e" + }, + "ghidra/addresses.d/ap.json": { + "mode": 420, + "sha256": "e37f478836eb297f9cc5186cd7df3f5942abc4b6396a4d2866e613841437f778" + }, + "ghidra/addresses.d/ar.json": { + "mode": 420, + "sha256": "8d8620be8dd807a610ff63c0d77cbf266f3d9ce272158991d1f55d9c9910c248" + }, + "ghidra/addresses.d/as.json": { + "mode": 420, + "sha256": "08a869ab9466d4b575363cfb6fc084ca72cdc05d509c5d87e658a9a9977a7ae9" + }, + "ghidra/addresses.d/az.json": { + "mode": 420, + "sha256": "60b9a169605ac171cffb848024141c9224f6897bf69b547b9a4f2b5ddfc8d835" + }, + "ghidra/addresses.d/bu.json": { + "mode": 420, + "sha256": "79037146ba621e43e561bcf0577afc25b2ffac4ced44c902d2ea8ed9171b1bb9" + }, + "ghidra/addresses.d/cz.json": { + "mode": 420, + "sha256": "35de20ff0e38d05b5c58c89690dfc81ce44eb280a2a594ae862e55d56edb5d3c" + }, + "ghidra/addresses.d/dn.json": { + "mode": 420, + "sha256": "c41f877a37bc864f8f315a47b720ac204c22c25de405f4de63b845180641eba0" + }, + "ghidra/addresses.d/dt.json": { + "mode": 420, + "sha256": "580762e01175fb7246d0f9214e4ed9ba16bebcdb82ad1525fd1f77c0910c660f" + }, + "ghidra/addresses.d/lane-a.json": { + "mode": 420, + "sha256": "fce5f06866bddc6bca095d53e376495103dfd8900ad7da0d0d6731f105915d71" + }, + "ghidra/addresses.d/lane-a2.json": { + "mode": 420, + "sha256": "1207088eb2ae041afc2618a627029e25f578ae9fe8db73bb9efb616f39c34bf0" + }, + "ghidra/addresses.d/lane-ac.json": { + "mode": 420, + "sha256": "02a1c2f01ca0d11a7c38d416d94fabaea64b5c5919f6ceaead83430fb398710e" + }, + "ghidra/addresses.d/lane-ai1.json": { + "mode": 420, + "sha256": "134a0cb87b95bf5f39ed015bcdf64c6e8da6b22e073d5b5487148cb5421addff" + }, + "ghidra/addresses.d/lane-ai2.json": { + "mode": 420, + "sha256": "e9d94ce026231d420538400fa9c73fa8a2fa882d16f542c6b8ce2c34014acda6" + }, + "ghidra/addresses.d/lane-ai3.json": { + "mode": 420, + "sha256": "89c29e1bbb1159b7b6fb4fc8c232902f8497efc82290aba6f50c9c9097feec6a" + }, + "ghidra/addresses.d/lane-ai4.json": { + "mode": 420, + "sha256": "78b7897d3d2678ddbff7cd982bfa7d93a0c26817846a148fd3f46790fef9d7fb" + }, + "ghidra/addresses.d/lane-b5.json": { + "mode": 420, + "sha256": "641c724d1fbf28f5469aac488401ea2f92bdd3b929fbf053ddeef0ba5b8de9da" + }, + "ghidra/addresses.d/lane-b6.json": { + "mode": 420, + "sha256": "b2b2833220e3a645efab2b767f1d93d1215a54d195e28e6743db8f1d89934697" + }, + "ghidra/addresses.d/lane-c3.json": { + "mode": 420, + "sha256": "b732932503c181c77bb14ba0136379c8fa3501d0c1471b02d9bca7d023bb5f5a" + }, + "ghidra/addresses.d/lane-d2.json": { + "mode": 420, + "sha256": "8b5df39fb5eea0cd40dffc20aaccabe169f5472171dfd242ca2e75dfc4ca608c" + }, + "ghidra/addresses.d/lane-e1.json": { + "mode": 420, + "sha256": "cb38b41b747bf74ee73fb7eaa301da4bb896d089fa1dea4197382e94940c7f69" + }, + "ghidra/addresses.d/lane-e3.json": { + "mode": 420, + "sha256": "a5fe9dbb37ee587bf36a311771bbc9d8dcaa4d4fcc0b420b8f45829929b0ff98" + }, + "ghidra/addresses.d/lane-ev.json": { + "mode": 420, + "sha256": "b243d31bcd69bfb1e5928ba8b70e958e559c88ee5190ca34e569f217a784798c" + }, + "ghidra/addresses.d/lane-g2.json": { + "mode": 420, + "sha256": "84401f05c5cf2ca0839e817877892e904b3fd2fd4175607abc34453acd8ce822" + }, + "ghidra/addresses.d/lane-g3.json": { + "mode": 420, + "sha256": "d176eb4a07bb6b98acea77e1a0a9904d317a594768ecf8719bbfacbdf6522729" + }, + "ghidra/addresses.d/lane-h.json": { + "mode": 420, + "sha256": "e8cffe89c7feb1d9fa1949f33aff01edc7b84b49ab752275662f6f613c16c0b6" + }, + "ghidra/addresses.d/lane-i.json": { + "mode": 420, + "sha256": "a4c482ff6fee78e96da3400b9ba7d76b58634a5933ff388db5993a1b105c8aca" + }, + "ghidra/addresses.d/lane-id.json": { + "mode": 420, + "sha256": "3f48c9b2e2c3a08e13a856bfb78d551af17f5a1a1079f03f8edbf4615f17ca7d" + }, + "ghidra/addresses.d/lane-j.json": { + "mode": 420, + "sha256": "4fd95b08fee60a2748995cb082fe50d61e7179ae90b106f230bfc5c55a35660d" + }, + "ghidra/addresses.d/lane-k.json": { + "mode": 420, + "sha256": "f6ead3ff256fd2e1408d52bfa28e308f106ad672b3fe1cce0d136faac351136e" + }, + "ghidra/addresses.d/lane-l1.json": { + "mode": 420, + "sha256": "ecbab4a1b602beefd6889effc4883b7f7de01afabb7c5c071bbc4e2237e9131b" + }, + "ghidra/addresses.d/lane-l3.json": { + "mode": 420, + "sha256": "eabb96253bee36c799f1eb89108e284162606cfdc5e9bd29dbf7b5f88ee88adf" + }, + "ghidra/addresses.d/lane-l4.json": { + "mode": 420, + "sha256": "5b2b54d2f3e123e352e9a2b0f1d80fc8afcdd0b97916a94ee5a62ddc03b0ae75" + }, + "ghidra/addresses.d/lane-l5.json": { + "mode": 420, + "sha256": "cedc4869149212d401c519c46fa3f02769f9c939fc560fe8d35cc4f898091482" + }, + "ghidra/addresses.d/lane-n.json": { + "mode": 420, + "sha256": "6987efa430f2da8987e42e61e53113f914cb00e3e52a7c679565e7faf5160c82" + }, + "ghidra/addresses.d/lane-o.json": { + "mode": 420, + "sha256": "7fcf357f25ccdf061b6bc688339e2006f830c551718b6419a0a9d0ac968bb555" + }, + "ghidra/addresses.d/lane-p2.json": { + "mode": 420, + "sha256": "7eaa63d64a0054ef88f323f58b31fca07bd2372dc21560b4bda64eb13d869792" + }, + "ghidra/addresses.d/lane-par.json": { + "mode": 420, + "sha256": "3836b786aec28feb028271d05f368d7c332b8930b51cfdceb36540133a3d3237" + }, + "ghidra/addresses.d/lane-pl.json": { + "mode": 420, + "sha256": "f29953d17effbb7d8256687833023d4656522e74c40bf1ea646d3b35da3635d7" + }, + "ghidra/addresses.d/lane-q.json": { + "mode": 420, + "sha256": "6f98496ffc288fb30c3a7347a7e5252b296f2345afd1bf678f98a2c934b8935a" + }, + "ghidra/addresses.d/lane-rb.json": { + "mode": 420, + "sha256": "bff95b9452e0efb63e74f741682c8d1843abfe3e722143cf01cf092aa894d75d" + }, + "ghidra/addresses.d/lane-sd.json": { + "mode": 420, + "sha256": "d3239b619cbef5cddc9c7bde6525301a99a6423f8a0e42c1ea53b9ae269c6da9" + }, + "ghidra/addresses.d/lane-sv.json": { + "mode": 420, + "sha256": "f574d8b4dc75da722870c74eb29cd56c75e04dd0ac384b4549fc95d425e3de3a" + }, + "ghidra/addresses.d/lane-t.json": { + "mode": 420, + "sha256": "70975f3c1dea55ceb11af12b9ba3a04e8f7bba2e25f1355ffcd3cd457c41545c" + }, + "ghidra/addresses.d/lane-t2.json": { + "mode": 420, + "sha256": "1e3c59089b769cc5f5d3cf16c33cb6db002966f5beb1a4fb9dd8e28fe54cd6a7" + }, + "ghidra/addresses.d/lane-u.json": { + "mode": 420, + "sha256": "bcccb6ec9257537eece135adbfd126904ca0becf14f9b5d17253adf5d8c9e8fe" + }, + "ghidra/addresses.d/lane-v2.json": { + "mode": 420, + "sha256": "6a4d4960ce99c05b928164159eaf4482bf763785a1f8c50efe133667886d9a54" + }, + "ghidra/addresses.d/lane-w.json": { + "mode": 420, + "sha256": "3971d65c772146534f5d8c350f2d203add70ac82801f57f3704c47cd59b51226" + }, + "ghidra/addresses.d/lane-w2.json": { + "mode": 420, + "sha256": "677648e94de8e1e0d538c9575c9be942d0b37c1a847effcb3c2312af5b6aa7d9" + }, + "ghidra/addresses.d/lane-w3.json": { + "mode": 420, + "sha256": "50ed8ed1b16288b00bac4df0886646dbf9d6d6392867029b4eac386806b41b51" + }, + "ghidra/addresses.d/lane-z.json": { + "mode": 420, + "sha256": "bc63a82f2d0cb7636e95f8a07f183f80817a4c65d2bb7263a047ec3c540512eb" + }, + "ghidra/addresses.json": { + "mode": 420, + "sha256": "865c02d88ac6ede656160a5ab20521ad8854efa381d5a943ab422216aca2c016" + }, + "ghidra/generated/sots_addresses.h": { + "mode": 420, + "sha256": "1cf6b4ab40d3cde306edee12ba4eb05292b98ddcf5c2b7c22c1c64b6075b1bdf" + }, + "ghidra/scripts/FixPlayer.java": { + "mode": 420, + "sha256": "9f9ea470af063339511b1f1c85d6dea2df0827c4fed5806c6f641b1aad3e5660" + }, + "ghidra/scripts/FixThis.java": { + "mode": 420, + "sha256": "aafeeb482f71d1bdcbc99a51fb3f21989a46fbb49b5a572f3d9e436c9b3b98b4" + }, + "ghidra/scripts/LoaderRecon.java": { + "mode": 420, + "sha256": "1275d460227e0098254885fe70666d618da7215bca99483a5475c1e701ab9b27" + }, + "ghidra/scripts/LoaderWriteBack.java": { + "mode": 420, + "sha256": "d1040cb9ee80f0fe4d2310d95b38d7d94b0972283f74ea6058de0bdb9e510e63" + }, + "ghidra/scripts/SpineRecon.java": { + "mode": 420, + "sha256": "bea798733cf60f9478373cc453692104058b643ba5b7fc68e76945ae6f496950" + }, + "ghidra/scripts/SpineRecon2.java": { + "mode": 420, + "sha256": "94f10ac953091d50187a46b74803abb4812b244356f9336fa8e133a8a6cba0c6" + }, + "ghidra/scripts/SpineRecon3.java": { + "mode": 420, + "sha256": "b2344ab3d7195cfb935505ba1949f3d4862f787ccb95b812cef3856f92c94ffc" + }, + "ghidra/scripts/SpineRecon4.java": { + "mode": 420, + "sha256": "1093ee635be94f0c0bb31b5bd79f030faa0d7cbab96a495426363172cbcd1d66" + }, + "ghidra/scripts/TechFx.java": { + "mode": 420, + "sha256": "bfa8e990d65ad7cb2b665ee284ec2d645395e0fb3794ea146b175e2937a159ad" + }, + "ghidra/scripts/TechFx2.java": { + "mode": 420, + "sha256": "ee7040ed3316f2e717bac207c3e8ba9bf5ecb560f9e2b38335582c4ca6bae5a8" + }, + "ghidra/scripts/TechFx3.java": { + "mode": 420, + "sha256": "b672751160abcfee37d16eb2f107a60420b7d6956c312fe93e9f62578c06b96a" + }, + "ghidra/scripts/TechFx4.java": { + "mode": 420, + "sha256": "ef912e86f802452f33c20a1adb87eeb96f0ec893e26ee4bbd02305ba0c5e46c7" + }, + "ghidra/scripts/WriteBack.java": { + "mode": 420, + "sha256": "e002a5b86bc58cf75ef8d08dbaeb84bdf3306c1e8d49e92c0382f8ed858c57ac" + }, + "ghidra/vtable-owners.json": { + "mode": 420, + "sha256": "8ee89f3b43f56283a6ffcc605394a1ab246f8071370a9db8f1e770942a5a82a3" + }, + "guides/lab-screen-wall.md": { + "mode": 420, + "sha256": "d398b47853013dbce63b4af2f2ec680c39775732b9fbba13f5fc42a46628550f" + }, + "guides/method-rules.md": { + "mode": 420, + "sha256": "a71a8415202fe97ccaee3805bf4035684776c37f5613dc39a1f260aa33f94b69" + }, + "guides/multi-agent-workflow.md": { + "mode": 420, + "sha256": "116ccaa9be9523852d02ee7c78c7f1d587c1ed6270789afca42e687ea826af5b" + }, + "guides/re-windows-2000s-howto.md": { + "mode": 420, + "sha256": "3490650440d6e683cb029915b8c2cace914b1f52538c9db89175ad4547db2901" + }, + "guides/windows-lab-housekeeping.md": { + "mode": 420, + "sha256": "4a9e9d66dd76e6b5ee1951686186190c650a617fa812fa4bd236ef02b783939a" + }, + "notes/.keep.md": { + "mode": 420, + "sha256": "7878c159a1b9636974e9093902027a24bf7b3c7520f13a8d96f930bd10d22f1c" + }, + "objects/generated/sots_stream_schema.h": { + "mode": 420, + "sha256": "13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c" + }, + "objects/layouts.h": { + "mode": 420, + "sha256": "24586f7f1c25530691193a919c6335ab1784fa2815b222326409cfe9e2a42981" + }, + "objects/layouts.json": { + "mode": 420, + "sha256": "16bfffa5020d98c12af61c72a48da8f2c5e06d1060358802717e585a49b150b2" + }, + "objects/layouts.md": { + "mode": 420, + "sha256": "83bc29fcd379847f9ebd6732edf9748c1c878052e889615928659307f97a148c" + }, + "objects/streams.json": { + "mode": 420, + "sha256": "60993eda14d0b1056578718d43a3b6d89816e12c4f5a00674806aeef9e81baf7" + }, + "opencode.json": { + "mode": 420, + "sha256": "027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99" + }, + "scripts/.keep.md": { + "mode": 420, + "sha256": "b0cdcee8cfdc1b15ee444520b6b01c747399deea6d92ff2576ca6eb57331bbac" + }, + "scripts/forgejo_campaign.py": null, + "scripts/lane_v2_writeback.py": { + "mode": 420, + "sha256": "69a66058adb04926eeb6f0e81fa8f0392ce06de2e8d8eb61ebcf503bab6311da" + }, + "tools/DASHBOARD_README.md": { + "mode": 420, + "sha256": "f401cc54f64a4862a938263f37eaab22e6475e063e59726e02dce201f657dcc4" + }, + "tools/aiorders_to_tcb.py": { + "mode": 420, + "sha256": "9762d1fd45f3ab7c045088e222c5386a2cc63a6b25e1c09a49cbbd71837bfe17" + }, + "tools/cache_functions.py": { + "mode": 420, + "sha256": "18c037e48ab035764b0c877123ea7c998ef74240c63090e4f58142f57835e0b1" + }, + "tools/campaign.py": { + "mode": 420, + "sha256": "a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123" + }, + "tools/check_agent_config.py": { + "mode": 420, + "sha256": "8cb42d8de9cc441b547a00aecc7bfbc3619667121b30e150fec9e6c94683beb0" + }, + "tools/dashboard.py": { + "mode": 420, + "sha256": "c84aeeea6fb7d5e45ccec8882bacc59182149f108edd9eb1585eab9ede99911c" + }, + "tools/displacement.py": null, + "tools/evidence.py": { + "mode": 420, + "sha256": "0a7f8497ed287b4b64aa5ba0cb25735172408e38f3605b3ff90f009c7f02eb85" + }, + "tools/gate.py": { + "mode": 420, + "sha256": "4df5ee7022fb2601687f06eab788e2cea1e345e580c4e92c9d47be1787d37460" + }, + "tools/gate.sh": { + "mode": 493, + "sha256": "d7ba27b9b0c6a03df48e4edc71884ef9986743f8afa751dbfec116df5aeee18c" + }, + "tools/gen_addresses.py": { + "mode": 493, + "sha256": "5d995585d4192a19db7cc6d31ed811fa80264159fc114f03f58793f9b6c4908e" + }, + "tools/gen_stream_schema.py": { + "mode": 420, + "sha256": "a9c3e925bb3370371a2c8cde8d738c657fe1cbf68c39c6155562bbb20c551461" + }, + "tools/max_income_oracle.py": { + "mode": 420, + "sha256": "8d3ec6ba5c677486200eab7d1ca55e1350947829e603737307fa394ac8e40bcd" + }, + "tools/max_income_predict.py": { + "mode": 420, + "sha256": "85400c82b6cb7c6786b7fb6486bdc7bcb1140817f7a0ff0b4fa4f7dbeded8797" + }, + "tools/probe_report.py": { + "mode": 420, + "sha256": "f3ef378c10bae4a8bef754d853f0e86616bb95b5e051e04cac97d362587df1a7" + }, + "tools/reva_call.py": { + "mode": 493, + "sha256": "89477650d38985f84b61a664572de1cbde1268b879d3da5e874598942822998b" + }, + "tools/rng_ledger_report.py": { + "mode": 493, + "sha256": "b4f3f581eb6de50118fd531c848354816c20197711e668ce8b0cfcb4d0392cf3" + }, + "tools/rng_oracle_check.py": { + "mode": 420, + "sha256": "f27ca7f9aa03bc672f04067bc71e73ac83742997f12f5f55ce11151bdc39d98a" + }, + "tools/rng_site_report.py": { + "mode": 493, + "sha256": "fabd950c002265403f7b13a8868a158d867828c9930770ed096a2610b086ad35" + }, + "tools/rtti_map.py": { + "mode": 420, + "sha256": "9ac88a8aa566fe08336ba6e50905ec4253409e1317f491c415b1b9ebcc0713e4" + }, + "tools/run_agent.py": { + "mode": 420, + "sha256": "818097896b2e29dbdd2f53d37261236af302178ecd0ee083a3184a7bc33ff152" + }, + "tools/select_evidence.py": { + "mode": 420, + "sha256": "a6e648a77bcf799cc774ff9d0de83011283049ed0f0c44f6e08857a8410e9463" + }, + "tools/serializers.py": { + "mode": 420, + "sha256": "938904eb7b4ae30a61dd966494b112c6d52399f9d4a4658add06b40a54d6cb73" + }, + "tools/serializers_ghidra.py": { + "mode": 420, + "sha256": "d27da0afc8d043d31335bbe274fc76245e50cf0f9091a968b124f31c3a17997c" + }, + "tools/serializers_golden.py": { + "mode": 420, + "sha256": "29d2509b54704b80eff46a59a320719edb17a7eb67fd8acb8ad5e3c427d8e825" + }, + "tools/standalone_report.py": { + "mode": 420, + "sha256": "43a61c4031306732554aca23cd95b57d35f2a870766c33ccf8e005f22436525c" + }, + "tools/streams.py": { + "mode": 420, + "sha256": "57ec4ec5ad222a74f4461d70277d258e51779ae53ff74fd0e07eb51d4bae0afd" + }, + "tools/strfootprint.py": { + "mode": 420, + "sha256": "3b0db212c0b091ae2f63b866ee331435d013c535f233ec34ae3dfb63ded852dc" + }, + "tools/tcb_from_json.py": { + "mode": 420, + "sha256": "8fe09cff16802fda34db24f6f888610baa258399ab39173586b91a7a162f231a" + }, + "tools/techid_table.py": { + "mode": 420, + "sha256": "2c644bdbd3774b70dfdae7e77ff7a3a8e8563b58be7098a2d55ee30dc8b8fd07" + }, + "tools/turncommands_capture.py": { + "mode": 420, + "sha256": "0214d5da6f5f86e188bb2f03db8d3439267baee3a883c7df754601c7c1a38536" + }, + "tools/vmshot.py": { + "mode": 493, + "sha256": "09228bf8bd61918c49afc2b6da931fc8a7833be126be5384b85194e0e86eea44" + }, + "tools/vmwatch-install.sh": { + "mode": 493, + "sha256": "3c004f532422bd589a7294dabdf54d5a726f598c69012eaea3d73a748ad0123a" + }, + "tools/vmwatch.py": { + "mode": 493, + "sha256": "650d8232e46239a55b96f26d581d7d9c5815415c9014fd2e5b846b68c1346b39" + }, + "tools/vtable_map.py": { + "mode": 420, + "sha256": "2e19223efb79421ab4b807e32f0854b2592d7d3a3a52c12e84e47460b960f740" + }, + "tools/windows-housekeeping/Invoke-Housekeeping.ps1": { + "mode": 420, + "sha256": "a97911a3cfbd47813282efa7f52b4de03d28912487fffe0e7e7aa1a250cac01a" + }, + "tools/x86disp.py": { + "mode": 420, + "sha256": "a05a42d63813d2025a4da65bdd684e82a89c95c52901a8f490391e31c49a122e" + }, + "verify/config/test_agent_config.py": { + "mode": 420, + "sha256": "8a7a406f062c3387ec5b99b35f3befb64f676efef174047060c967074545e3e3" + }, + "verify/config/test_source_check.py": { + "mode": 420, + "sha256": "c16731e31a54256dde4f88d33007759ff21ad8537ca6cd2be38b9e34c59525ad" + }, + "verify/design-rules/SHIP_DESIGN_RULES.md": { + "mode": 420, + "sha256": "4decf51bfa03e8ab2b58478198332e834233100126949b920349f210b54521c8" + }, + "verify/design-rules/data/HiverInvasion_FleetTemplates.csv": { + "mode": 420, + "sha256": "327e799be3c75361267725c157f78b425d3a1df6ed6595104b2ce9993e8ae3a7" + }, + "verify/design-rules/data/UpstartApes_GiftFleetTemplates.csv": { + "mode": 420, + "sha256": "89939d70eb6ed48ec776a4a6fc50ccb68fc6be7162706bab199484bf7cdd5e44" + }, + "verify/design-rules/data/_defaultweapons.txt": { + "mode": 420, + "sha256": "ef9e33aa32840f1878ece67f88556d81a4255f63f6e8aad4ac73e575ef2c7ec8" + }, + "verify/design-rules/data/_turrets.txt": { + "mode": 420, + "sha256": "35de6ad40895f76298eef7dc354c739a5a59747b689c2324cfa5040442eddc18" + }, + "verify/design-rules/design_rules.py": { + "mode": 420, + "sha256": "772f70c7d6be2d20d10cf4f5d412233b267440d63d431bf7b320c29f3f06e313" + }, + "verify/design-rules/stock_designs.json": { + "mode": 420, + "sha256": "b363023e02899bc03e4c8b8423b394ef8abb190b1bcf437aade19be463353f68" + }, + "verify/design-rules/stock_designs.py": { + "mode": 420, + "sha256": "fe020f6058ec25b6fc456146abb6594825ee2b98ba5c5c5eeaff969ce4596031" + }, + "verify/design-rules/test_design_rules.py": { + "mode": 420, + "sha256": "6f6764d21d7a3337ec8aba9651b19947239a7d06a6cdf7c6e9be5ddefcfdd186" + }, + "verify/fpu-cw/cw_census.py": { + "mode": 420, + "sha256": "07b7ac5ae60df487867b592e82e9f74201b695437fba248813bc07305a21c7cc" + }, + "verify/fpu-cw/trace_bitdiff.py": { + "mode": 420, + "sha256": "b25c93d70e67ed2fa81e5ea7184f8ffe0cbd2e7c043bc94f923c3db1cf101b59" + }, + "verify/harness/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/harness/cb/README.md": { + "mode": 420, + "sha256": "7a656251a600a9343ffa8afaa4f227e7cb8086be7d3c6879c0a403ab8acec71d" + }, + "verify/harness/cb/cbdo.sh": { + "mode": 493, + "sha256": "6f3d7fd35aeedb0841be9df0ba19136be2e7ccb5c44950d8aa821c61727232a6" + }, + "verify/harness/cb/cbfull.sh": { + "mode": 493, + "sha256": "609101217e9d35bf1caa5cb66f362e0796fcf6c1264bd92ff550d0ed12ca2521" + }, + "verify/harness/cb/cbload.sh": { + "mode": 493, + "sha256": "2e56bb64609434f6dfc6ebcf71a3c839ae59170db80c996ebee7c2219cb664ec" + }, + "verify/harness/cb/cbmenu.py": { + "mode": 420, + "sha256": "fb2e72a1a5390aa28dcae0fbc2d7b920b06bf3b1ea161bb757d4db3c8cd23af2" + }, + "verify/harness/cb/cbstep.sh": { + "mode": 493, + "sha256": "5896b21e8cf08b40e2a2958e44a51beb7e5b5a58cf35d405879a5df7cdd375b4" + }, + "verify/harness/compare/TRACE_FORMAT.md": { + "mode": 420, + "sha256": "cf6f61dc255e3aed0f293c141d9fd3b0d5e848e3abe4dcf50b4ca2d58e37c024" + }, + "verify/harness/compare/mkfixture.py": { + "mode": 420, + "sha256": "f081dd92b9e82e838f59ce8f9c79d5cdebb825255f13b6c49178516e7f3ef118" + }, + "verify/harness/compare/oracle_parsers.py": { + "mode": 420, + "sha256": "b1a745bfa63b447c87279afdb2885a0218f2a0dc2539f79414f8a2534e24c97b" + }, + "verify/harness/compare/test_tracecmp.py": { + "mode": 420, + "sha256": "f25eb9d5ea7215b8366c44924fb49a5f028a0188e709dadfd90cfbc30db0823e" + }, + "verify/harness/compare/tracecmp.py": { + "mode": 420, + "sha256": "d6ca461cabf15351e2040150144084b93d3caf22d879ee158ede04052ab03cbb" + }, + "verify/harness/l2-ui/README.md": { + "mode": 420, + "sha256": "48effd757522ee5ff70af6d77449dcfd805bb7744c9093d01c039b86e030d7f6" + }, + "verify/harness/l2-ui/launch-b.cmd": { + "mode": 420, + "sha256": "8f26c451a88765c49ecb3c8160ed4a3d06f1100a6d9323b305efc01f039dfada" + }, + "verify/harness/l2-ui/socks.ps1": { + "mode": 420, + "sha256": "401cce47d495507f60eeae45942c146586464959046ef9715cd69605753af027" + }, + "verify/harness/l2-ui/ui.ps1": { + "mode": 420, + "sha256": "355c8f222bf99f547d9d16a1665a072e6914917d48e4db22b8438d2d83708e97" + }, + "verify/harness/profiling/battle-run.sh": { + "mode": 493, + "sha256": "79f14ded5c3731efd655a6f9a4ac6795f3ace0a9b064c43ba4bf9a2cb988a7cf" + }, + "verify/harness/profiling/funcs.py": { + "mode": 420, + "sha256": "841a6f5e5dc1d845b7439c9ce9dc08e045864929b0f367908abea7ab54259207" + }, + "verify/harness/profiling/funcs.txt": { + "mode": 420, + "sha256": "d35b17dbb3970f5c24ae862748c5b91aee87491968719c34e48a8b88c0615835" + }, + "verify/harness/profiling/iat.py": { + "mode": 420, + "sha256": "82465ef8284739ab3d3c99acd0fa6cc5a4bb80c8680eb7a949218305fd10d3d3" + }, + "verify/harness/profiling/inspect.ps1": { + "mode": 420, + "sha256": "35bc7dd85108e3f4686975ef7f510b1cc9306b5839329f7fdd2a5ac27a140611" + }, + "verify/harness/profiling/names.txt": { + "mode": 420, + "sha256": "89d90f934e445447c68569448471a8917ee0bbfcb5fb96bba3e6566be9b0779c" + }, + "verify/harness/profiling/parse.py": { + "mode": 420, + "sha256": "680df36804e923d74da8e9fd8877b5ea66975c9ce8d239ad4507c829f881722a" + }, + "verify/harness/profiling/sampler.ps1": { + "mode": 420, + "sha256": "ef0edde8535ef07e508a732f8e11dc3d50fef966e5a9e4d8161085a83372993e" + }, + "verify/harness/profiling/shots.sh": { + "mode": 420, + "sha256": "87e554abf08068d6438417e266f1e7820e34a900a7d559fa0a7c4a2fa18002b3" + }, + "verify/harness/profiling/timerres.ps1": { + "mode": 420, + "sha256": "80362eb9ec8bd882abddf2507236e70db2dd21f64c9db07d217bdd49361ed89c" + }, + "verify/harness/profiling/turnloop.sh": { + "mode": 493, + "sha256": "8e28f076599a9eb53eace77ad77a10b0770f1ce617c7a76e6a2b9044ee0c8774" + }, + "verify/harness/profiling/turnwin.py": { + "mode": 420, + "sha256": "e2033a8e519a7c9f65f67b5592494a9843eb8bef41af6ab5652343aa86bd4c60" + }, + "verify/harness/profiling/ui.sh": { + "mode": 493, + "sha256": "e66774a4d070285e6c6a62472000222a691c7192096039e75fa726bab9f6afb7" + }, + "verify/harness/run-recipe/click_helper.ps1": { + "mode": 420, + "sha256": "150a1c17e12e8479244107cd01d95233c84d550e95a6f5e352fd529818a21d7d" + }, + "verify/harness/run-recipe/display.cfg": { + "mode": 420, + "sha256": "76b4876abd1cd163a5cc6b65a6106670476cde40c9b868a53a0dc45f517e132f" + }, + "verify/harness/run-recipe/dxvk_d3d9.log": { + "mode": 420, + "sha256": "f48ff2684a78cea563ab7f10e2f005638044352fe9cfc30dedf0f26ec7fecf23" + }, + "verify/harness/run-recipe/launch.cmd": { + "mode": 420, + "sha256": "90a6effe8ae835bf641cc775a17ad709198fdfeded4379f658255a82f594e5c2" + }, + "verify/harness/run-recipe/lvp_icd.x86.json": { + "mode": 420, + "sha256": "b89a08526e043a84c3a2550b5ea2fd7692f547ea295e8dd70e79c64fe81f6fbf" + }, + "verify/harness/run-recipe/run.txt": { + "mode": 420, + "sha256": "12c83295dae9db4a98142ef8fe7e45321c90960428df504ed3496e27838a0413" + }, + "verify/harness/run-recipe/session.log": { + "mode": 420, + "sha256": "e9ce9b496e9ee55bd64cc27afe594cee6136dfbc6cf9d9d44e9914b27e568a93" + }, + "verify/parsers/PARITY_NOTES.md": { + "mode": 420, + "sha256": "beecfe60358f5977529bd0784ffe18ca03c38d2dd36766f351c6a9addac83bda" + }, + "verify/parsers/effect_txt.py": { + "mode": 420, + "sha256": "7219045dfaf305dd64218ff8096e8cac69a53df1aabdf85f15e6c5e01c963e74" + }, + "verify/parsers/flat_kv.py": { + "mode": 420, + "sha256": "a26149cb21d152be5cbada3b764e042187daf2ec306b2dba1081737af6a7ae4f" + }, + "verify/parsers/manifest.py": { + "mode": 420, + "sha256": "62a08cfd82d5f701ae3b3f567bc8382cfd1b33b49bf6049ade47a932ef7109da" + }, + "verify/parsers/mars_data.py": { + "mode": 420, + "sha256": "90c7b8421044b1d7e262e6f20e5af391d97a712b12c2d3f0c3033567881d536f" + }, + "verify/parsers/verify.py": { + "mode": 420, + "sha256": "cc5d619bd6b3ca161b4bc8050c30e7d77f6bd3e964c971cc29e051efc1e25a33" + }, + "verify/publishing/test_dashboard.py": { + "mode": 420, + "sha256": "cc44e516da663f5d27bf817cbcbf24c052f2db52ee887d08d7c271caf8f6a000" + }, + "verify/results/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/results/compare/.keep.md": { + "mode": 420, + "sha256": "4581f3fde61549f4c621b2f114228a62d066a528a270a9b41703238ff841ac1d" + }, + "verify/results/compare/b2-techfx-compare.json": { + "mode": 420, + "sha256": "b0533322d44b1694f36baf86d6660481ac5b22ce9c1d6b6b9668ea064cc08f4b" + }, + "verify/results/compare/b2-techfx-golden.json": { + "mode": 420, + "sha256": "4298a8229b85a3329c78d3618d3eb19aff096cb2da66e9238fd843d639b17f11" + }, + "verify/results/compare/cr-compare.json": { + "mode": 420, + "sha256": "f20e9a7c71412688c02b607f08a5224367598eba552e35a50e9922ca8f12edab" + }, + "verify/results/compare/cr-compare.md": { + "mode": 420, + "sha256": "0eb905744120b1cf264ba6e57497db64fdc8e225a87ef7bb86cf3f026ffe4d0d" + }, + "verify/results/compare/cr-replace0.json": { + "mode": 420, + "sha256": "f1556c5d74c236c82617061b5ec60b1a7ce4652bce87b6595eb89406ad832240" + }, + "verify/results/compare/cr-replace0.md": { + "mode": 420, + "sha256": "6f571e46350a29b811bc12b48e12ed2d443acba5f5be6310e0531c3790425d48" + }, + "verify/results/compare/cr-replace1.json": { + "mode": 420, + "sha256": "d0c1d6bd4a1f8f5343b584662d8202184479b01a51480443a97242daf27fccc2" + }, + "verify/results/compare/cr-replace1.md": { + "mode": 420, + "sha256": "111b51290468d5482a1910194487d26dc1b3ec534d699aa07a564de66bbf9d98" + }, + "verify/results/compare/eventlive-b3-t1-5.json": { + "mode": 420, + "sha256": "4f305180bcbe93523f407d1f8406ac52b84d4a20e2d611940716618fd37edfde" + }, + "verify/results/compare/eventlive-b3-t1-5.md": { + "mode": 420, + "sha256": "ec71d98210218fd5b5da69f6b17cf6991128a58a0358a6504e6497dd39159764" + }, + "verify/results/compare/eventlive-b3-t1.json": { + "mode": 420, + "sha256": "84f66c1e6a23f737d1615e75fd22fba958bfd851067acb42503e32a2812dd1de" + }, + "verify/results/compare/eventlive-b3-t1.md": { + "mode": 420, + "sha256": "299b8dd3f2cf42cbc9e6254fac01ee3dcb6abb0758c8f298beb6cc6464db4cfb" + }, + "verify/results/compare/eventlive-b3-zuul.json": { + "mode": 420, + "sha256": "a1a92c06202c8168362c33442edeb7ea7f76f6e586e5deea1b86dff9dc8f3494" + }, + "verify/results/compare/eventlive-b3-zuul.md": { + "mode": 420, + "sha256": "544791f9cd8b77a2d865f2a918d97e74559529f29943171bd1e8e2d8a120dec5" + }, + "verify/results/compare/l5-budget-boundary.md": { + "mode": 420, + "sha256": "6877f9cfc602876b4c213106493853822471a5aaa3e4e8ebf8dffd31373d89d9" + }, + "verify/results/compare/mf-after.json": { + "mode": 420, + "sha256": "586a824a0d0af1de0808c33c1c392c4022128f9c1305dc32b6749e8fa493e8f4" + }, + "verify/results/compare/mf-after.md": { + "mode": 420, + "sha256": "659be3da71cabfd3c34eb818f1bac07f848c58a878fd62d81ac7b1daa5f3ce03" + }, + "verify/results/compare/mf-before.json": { + "mode": 420, + "sha256": "259272b45ca9c63894d8c91e399ff91d7258b7836f1a0d5c91dd3972586b2498" + }, + "verify/results/compare/mf-before.md": { + "mode": 420, + "sha256": "4572530a1c93865d27aba47c23c418773ad39a834c8be1c004f5cc2f16f927a0" + }, + "verify/results/compare/output-ref-turn2.md": { + "mode": 420, + "sha256": "43a569165f9239f13edc31c7a848a6b839829ae06dd6e3b85d289a1552eb8d34" + }, + "verify/results/compare/output-zuul-and-ref.md": { + "mode": 420, + "sha256": "9bc0937c0b3e1e3e5a6cd3768dbfeae56a897615396b00834bd083611f3ef431" + }, + "verify/results/compare/recap-b1-compare.json": { + "mode": 420, + "sha256": "8e86cdd32373e41ac1cdc130b18acc188b35d5ab7112e1fc655d134c44ad9712" + }, + "verify/results/compare/recap-b1-compare.md": { + "mode": 420, + "sha256": "496a3246eda3be76d9d0f08726369d40aa879cf60a510f16209ae77585582841" + }, + "verify/results/compare/recap-b3-compare-t1-5.json": { + "mode": 420, + "sha256": "80eeeeccf15f427b75b053d06f6b32b1692a2ed9ca6b9a51c244e4166a1b0e78" + }, + "verify/results/compare/recap-b3-compare-t1-5.md": { + "mode": 420, + "sha256": "5b6295bff72d599f142e75fa913ca2da590322a6fd1d104328847159fc5e7802" + }, + "verify/results/compare/recap-b3-compare-t1.json": { + "mode": 420, + "sha256": "10d0d5f8aff90f6cce3cd87e30c7f8ff896c5b369f4dc8288141451e25727cb9" + }, + "verify/results/compare/recap-b3-compare-t1.md": { + "mode": 420, + "sha256": "2b0eb8865bb07a2dd8fd038bc19e38a34fbf19b9d3f6fabae085c16a74fbcc6f" + }, + "verify/results/compare/recap-golden-trace.json": { + "mode": 420, + "sha256": "50bb7e34ab2359adc83cc0647fc995d207173fcf6134e413565af450958f652f" + }, + "verify/results/compare/recap-golden-trace.md": { + "mode": 420, + "sha256": "586fc86fe78659902a5d0859c0bce44623bfcda0f375bb57b293796862c48e17" + }, + "verify/results/compare/recap-misc-compare.json": { + "mode": 420, + "sha256": "c73f3f3593a0d715a675b29c7b4f49c02a97578ee9d867ce15d217c43da2e466" + }, + "verify/results/compare/recap-misc-compare.md": { + "mode": 420, + "sha256": "b435c92441742b2b1b0236bfacff10c17757696baf446c544c4759b7e31237ed" + }, + "verify/results/compare/unlock-b3-t1-5.json": { + "mode": 420, + "sha256": "a4dbfc89f6f3d154edbbc62842a4e8d8a3c69b9589eafc1bb496b26a3ecf6e3d" + }, + "verify/results/compare/unlock-b3-t1-5.md": { + "mode": 420, + "sha256": "832626087ddc2da9064a192a1acfb3869d4a52c6398a070cbd66eaa1bdbe2e2e" + }, + "verify/results/compare/unlock-b3-t1.json": { + "mode": 420, + "sha256": "6d8938b8eaeb2da1c7fdccb1fb68f8e3a2b5b7f492cc096326cf3aadb2ab8d55" + }, + "verify/results/compare/unlock-b3-t1.md": { + "mode": 420, + "sha256": "8911e671a143c25765cd7c0b67f1b9cb23f4040fe26aad40ce59b1db858afdcd" + }, + "verify/results/compare/unlock-b3-zuul.json": { + "mode": 420, + "sha256": "3099d248d58c4395e92d65ad18c28227695a7c7935193be6c2bcf752fa0e0f04" + }, + "verify/results/compare/unlock-b3-zuul.md": { + "mode": 420, + "sha256": "f53b165c8502ba9b2416935179fdea68153fb6ebd2458b4ec9b4ecf6c741c91f" + }, + "verify/results/data-catalogs/crosslink.json": { + "mode": 420, + "sha256": "2966ba9780910b596e350c4f81eef5d74c4d235dc3a8d5cf6ad5fd53a407254a" + }, + "verify/results/data-catalogs/schema_stats.json": { + "mode": 420, + "sha256": "6e3f669ae77cdfa2c5cd6bbd29f5cecccd452d9a7b2397c2c23db6c33fda0a2a" + }, + "verify/results/data-catalogs/shipsections.json": { + "mode": 420, + "sha256": "2e7057c608d0cea755bf9dbfa291864d33e3f09ad5deff7bb3a8045bde7a4ab5" + }, + "verify/results/data-catalogs/strings.json": { + "mode": 420, + "sha256": "c36c1b2b9a2eace438f93698df6388fa94aec30d372bcd0bee7e09bb33c54d7c" + }, + "verify/results/data-catalogs/tech_tree.dot": { + "mode": 420, + "sha256": "96ce0492a1284167d82af2c07a8f8a0b3bb9864bc137195560d909df6a913055" + }, + "verify/results/data-catalogs/tech_tree.json": { + "mode": 420, + "sha256": "18df799410c5f650e15808c1ef247b4768a3dfff93795a5ec7f56cd6c4afc597" + }, + "verify/results/data-catalogs/weapons.json": { + "mode": 420, + "sha256": "a446b445c21519fc7992c84155c9652239567030843c405b4219d1f65022db01" + }, + "verify/results/fpu-cw/README.md": { + "mode": 420, + "sha256": "3928fd0f6a03a8ff0b170a7ed23a059120b5014b13bf6870d4f187ff299d5975" + }, + "verify/results/fpu-cw/cw-census.txt": { + "mode": 420, + "sha256": "b7854dc5cd249a2490d04264d758f1894a9ddf4b95573650365d47587c7589d3" + }, + "verify/results/fpu-cw/run-007f-rep/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-007f-rep/(Autosave).sav": { + "mode": 420, + "sha256": "ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918" + }, + "verify/results/fpu-cw/run-007f-rep/shim.log": { + "mode": 420, + "sha256": "73b5b86da743a1cb37d4c0d97b29978923b55a7a47f80c7fa20ca47d424f6c02" + }, + "verify/results/fpu-cw/run-007f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-007f/(Autosave).sav": { + "mode": 420, + "sha256": "ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918" + }, + "verify/results/fpu-cw/run-007f/shim.cfg": { + "mode": 420, + "sha256": "998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363" + }, + "verify/results/fpu-cw/run-007f/shim.log": { + "mode": 420, + "sha256": "5721f47d7fd862156ce2cd1832cd1739636b5aee53c82323ef233ff6401775bb" + }, + "verify/results/fpu-cw/run-007f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "149c4fcf750fcf9e81dc86d8696271d9a14ca788891ac95cf96995e3737c68e4" + }, + "verify/results/fpu-cw/run-027f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-027f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-027f/shim.cfg": { + "mode": 420, + "sha256": "f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd" + }, + "verify/results/fpu-cw/run-027f/shim.log": { + "mode": 420, + "sha256": "4bd3f88bd27eb2e3ae1f42f4dc2ccf1cc5df1a2c1171d2eff8be86e7be684187" + }, + "verify/results/fpu-cw/run-027f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "b5d2611d0c08946c1e1eaa244a7e44782eac2592c392efb3d7147fbbd86816e7" + }, + "verify/results/fpu-cw/run-127f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-127f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-127f/shim.cfg": { + "mode": 420, + "sha256": "1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271" + }, + "verify/results/fpu-cw/run-127f/shim.log": { + "mode": 420, + "sha256": "03f1999dc8964912697782e856f89f190b6680d5732f2cd00b1569bff727a545" + }, + "verify/results/fpu-cw/run-127f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "fb1b9063cc53a6b39ea0a58e0545b9334fbd15d65dd839e72f2c4febbb1dd3f0" + }, + "verify/results/fpu-cw/run-137f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-137f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-137f/shim.cfg": { + "mode": 420, + "sha256": "8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9" + }, + "verify/results/fpu-cw/run-137f/shim.log": { + "mode": 420, + "sha256": "83aa72572412d5248179397895029367685fd590d795991ab91c98cf9828ae29" + }, + "verify/results/fpu-cw/run-137f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "aad1fb6abd86beafb9f44e2c6060157e22618811d105f2379252e19008839b66" + }, + "verify/results/fpu-cw/run-1a7f-rep/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-1a7f-rep/(Autosave).sav": { + "mode": 420, + "sha256": "e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7" + }, + "verify/results/fpu-cw/run-1a7f-rep/shim.log": { + "mode": 420, + "sha256": "38f2824fbe91bf2fa1ef55473a7468707248420805b6f6dc85245fd34fa94200" + }, + "verify/results/fpu-cw/run-1a7f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-1a7f/(Autosave).sav": { + "mode": 420, + "sha256": "e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7" + }, + "verify/results/fpu-cw/run-1a7f/shim.cfg": { + "mode": 420, + "sha256": "59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588" + }, + "verify/results/fpu-cw/run-1a7f/shim.log": { + "mode": 420, + "sha256": "a1bb0bd06dae6955ec09e7d0c6cd1e68e19aa2a114256cdeae1275def0a63091" + }, + "verify/results/fpu-cw/run-1a7f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "b9a7affb8235626fcfdd5afe143e4ec03be869b6b386bd9ac78389097df88cef" + }, + "verify/results/fpu-cw/run-off/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-off/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-off/shim.cfg": { + "mode": 420, + "sha256": "6a19c362121a3dba0aac857d6e998131e8b2478f19edcdcbd58006645d096c70" + }, + "verify/results/fpu-cw/run-off/shim.log": { + "mode": 420, + "sha256": "9e3cbd005f0b68037681939b289834c55629bac0e9cd35ac55e6d8ef5333a116" + }, + "verify/results/fpu-cw/run-off/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "ec2271c0d7e09fe51ead7f8d58859c692e8b302233191841d506ea14248caa8c" + }, + "verify/results/fpu-cw/state-checksum-diffs.txt": { + "mode": 420, + "sha256": "3417dfc1b75ad896ac6a5e974d51248eecca319565e2422e146897d19e121b68" + }, + "verify/results/fpu-cw/trace-bitdiff.txt": { + "mode": 420, + "sha256": "8f86707f26f30638097c85f0db6df219adbfebac4e9ec24f1feb8bfce112d4f2" + }, + "verify/results/multiplayer/l2-combat-hud-client.png": { + "mode": 420, + "sha256": "02c86592531ab2889a0eae04e44a644d33c754096fe60aca6640068a7a3f421f" + }, + "verify/results/multiplayer/l2-combat-hud-host.png": { + "mode": 420, + "sha256": "a56daf36fcc88627b29116ad9874c95a3c46960074ff9b823aa15c4ea2660dd7" + }, + "verify/results/multiplayer/l2-combat-loading.png": { + "mode": 420, + "sha256": "f94a718cee08e1b7d346490058f13a107d23aaa7c269fdd53b159a75d62fa558" + }, + "verify/results/multiplayer/l2-combat-round-draw.png": { + "mode": 420, + "sha256": "c1b8424540b702915302f9ff38eaf765e8e95fddc3c5c4d894438dcfcf8b6256" + }, + "verify/results/multiplayer/l2-combat.pcap": { + "mode": 420, + "sha256": "0f112ef96da6c465dbda51baf99eedd66967eed61c097f643bf6c66fc26af31b" + }, + "verify/results/multiplayer/l2-encounter-query-client.png": { + "mode": 420, + "sha256": "4c41b268ad256b0109483a2d9b5ba35de7b9cadb4eb32ef4a68f7867e6e747fd" + }, + "verify/results/multiplayer/l2-encounter-query-host.png": { + "mode": 420, + "sha256": "8c7b0c6d65ddde45eb3447f044589ffc36500b40c4d676af8321f800162f38a0" + }, + "verify/results/multiplayer/l2-fleet-built.png": { + "mode": 420, + "sha256": "6ac91fcf9b42caef50134de01804046d8e60d0fd3966592e9738ceff511949c2" + }, + "verify/results/multiplayer/l2-lobby-client-joined.png": { + "mode": 420, + "sha256": "4a8e698c9ea935449ff0421cd59acd517ebffa388a7572279b28be0369141ff6" + }, + "verify/results/multiplayer/l2-lobby-host-created.png": { + "mode": 420, + "sha256": "e6a7377cabafa973396cedafa5ad5b4863a42f9866709db88faf9572e0ed3c98" + }, + "verify/results/multiplayer/l2-move-warning-dialog.png": { + "mode": 420, + "sha256": "43c6219d74bc0cb28495f13784cdbd3a90c89746b108824c3a2138dbdadcb53e" + }, + "verify/results/multiplayer/l2-socks.log": { + "mode": 420, + "sha256": "109b630d6548d07404f9f905e6c527f10e25221698f1b66226f67f94c5f294b5" + }, + "verify/results/multiplayer/l2-turn13-client.png": { + "mode": 420, + "sha256": "d19f17c4219f21f6c9950440d528a1a91fe3907761df21fd0ba99321b8820baa" + }, + "verify/results/multiplayer/l2-turn13-host.png": { + "mode": 420, + "sha256": "811efcfb571d60435f772a3b619bb329717d1e162b88e440ec0d636b1c6042fc" + }, + "verify/results/multiplayer/w2-internet-browser-no-error.png": { + "mode": 420, + "sha256": "6409b977056c95b29928a0098f75fffd71c501128f9d9325c3000837131c8791" + }, + "verify/results/multiplayer/w2-join-manually-dialog.png": { + "mode": 420, + "sha256": "86904e94a5aec41c1e89271d2712558c3b5055bd2ae4fededfda103d1e22fb71" + }, + "verify/results/multiplayer/w2-lan-browse-listing.png": { + "mode": 420, + "sha256": "6f5d16fa719fb63dd627fba551221c7665b69002e83fe35b8d84912cd7d8ce83" + }, + "verify/results/multiplayer/w2-lobby-client.png": { + "mode": 420, + "sha256": "ede652b21e2a4ea07c8132e4080ba903d1052ebca336bb007e1e8efa62787f10" + }, + "verify/results/multiplayer/w2-mp-turn1.png": { + "mode": 420, + "sha256": "59f9a1f5d8c0fff45d3ae3406dfd9878a5915f18e999d909a5238a90a3b86ed6" + }, + "verify/results/multiplayer/w2-mp-turn2-client.png": { + "mode": 420, + "sha256": "d9da4c151cd8290f80b31eb5ed8a74a0a30a87d1f7a80a179fa082a9439e08e5" + }, + "verify/results/multiplayer/w2-mp-turn2-host.png": { + "mode": 420, + "sha256": "910efd36b4a7c1a85d8ad487660f856339af037b9b00fef0cafd5e77ebdc36e5" + }, + "verify/results/multiplayer/w2-tier0-filtered.pcap": { + "mode": 420, + "sha256": "e108778fd1afb7718c53a4164310b8523415ef073706d310583dab424e5921cc" + }, + "verify/results/saves/ac-turn20-raider.sav": { + "mode": 420, + "sha256": "ee787db8f63d8f564c597bd5a82709790a0fdf47827912037f96b736f2cbed34" + }, + "verify/results/saves/ac-turn22-raider.sav": { + "mode": 420, + "sha256": "0faeaa601e6a867876819e5646b85f8787851093b8e6bd6e3946eb867f2dcc74" + }, + "verify/results/saves/ad-oracle-A-post.sav": { + "mode": 420, + "sha256": "a634510e7208cceb10d8ce016ceb0153601f11d7291f08122bcdb6418e313331" + }, + "verify/results/saves/ad-oracle-B-post.sav": { + "mode": 420, + "sha256": "676b1778880b5d4784ba7f6ef48b1a8e56745adab70a815943b7744876686260" + }, + "verify/results/saves/ad-turn27-two-raiders.sav": { + "mode": 420, + "sha256": "1c8baa27680809d585ab1728391e82729642d32aaedffd5bf95b616f0a11a436" + }, + "verify/results/saves/ap-deploy-turn15.sav": { + "mode": 420, + "sha256": "844f2b746060dc2c4e2099cdc6ceffd5f55ef858c9e347df28c8aca3041f7165" + }, + "verify/results/saves/ap-oa-turn16.sav": { + "mode": 420, + "sha256": "e296394f578b3a5668e5934b9eec8d6c4638ca7411200078f97de1abd346f4c5" + }, + "verify/results/saves/ap-ob-turn16.sav": { + "mode": 420, + "sha256": "262f8bda97c9511d8d2b41e6a8a0582d6f5364c2b01b1caf99e639d0e4f53ebe" + }, + "verify/results/saves/ap-turn22-spydetected.sav": { + "mode": 420, + "sha256": "91381bd7e722ac3847795a402d78ebb31d74dbb5d2909f33d243aec3ef8abaf8" + }, + "verify/results/saves/ap-turn25-spydestroyed.sav": { + "mode": 420, + "sha256": "46380fcf4498d67507e4471eb9ee3762647c53ee5473be142fe5c34e37344bc3" + }, + "verify/results/saves/ar-oracle-A-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-oracle-A-pre.sav": { + "mode": 420, + "sha256": "15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca" + }, + "verify/results/saves/ar-oracle-B-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-r1-turn43-post.sav": { + "mode": 420, + "sha256": "37f4a54fd32303fdcc86522b07104fbf2fcb124eec9b1f7005b3446fefcc429f" + }, + "verify/results/saves/ar-r2-probes8-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-turn37-816raiders.sav": { + "mode": 420, + "sha256": "b6f4e05ff226eabd1695003b36293553642553cea96ef417364393e2332a7094" + }, + "verify/results/saves/as-turn14-predeploy.sav": { + "mode": 420, + "sha256": "53986f8511cbf9920f32e2ea406ccf531dd08903fa5d06024fcf03ea7627221d" + }, + "verify/results/saves/as-turn15-spydeployed.sav": { + "mode": 420, + "sha256": "854a10fa1ea602f0f7909f9bf9154942e56ea5fa1db4cce47d6d32bf53952e08" + }, + "verify/results/saves/az-turn11-16destroyers.sav": { + "mode": 420, + "sha256": "501583c7cf2ac81c9db3191203cd3dc5ba5b9e228b9b9ce3dbdcc3650d0070a9" + }, + "verify/results/saves/az-turn23-tarka-comraid.sav": { + "mode": 420, + "sha256": "3d5eb826c149d1fd0278c746f32e6148ca9883a1bc5b522c0d5e6e13fac9788a" + }, + "verify/results/saves/bp-pinA-turn28.sav": { + "mode": 420, + "sha256": "e913ff41188211c02d536da616337544e64133996cd7cc7a6521a8df1960226f" + }, + "verify/results/saves/bp-pinB-turn28.sav": { + "mode": 420, + "sha256": "724528ffde9a7514b69ab9e82ed3b8c8ade63d622c0720de30503a73a92df11e" + }, + "verify/results/saves/bp-turn28-pre.sav": { + "mode": 420, + "sha256": "16f63adbf383946db17c381998957172bca803406b7df78f3b03805fef0bbcb8" + }, + "verify/results/saves/bq/bq-1A-endturn.sav": { + "mode": 420, + "sha256": "1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39" + }, + "verify/results/saves/bq/bq-1A-post.sav": { + "mode": 420, + "sha256": "56980aa086e1a145b00f781b9d9cf618b152986f1c2267b9fd96cca0f1f604b9" + }, + "verify/results/saves/bq/bq-1B-endturn.sav": { + "mode": 420, + "sha256": "1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39" + }, + "verify/results/saves/bq/bq-1B-post.sav": { + "mode": 420, + "sha256": "b36ac0ec2986f3a814dd22ca312c895ba6ec8a0e55fca54d8a7fd08a2f96a2c4" + }, + "verify/results/saves/bq/bq-1bA-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bq/bq-1bA-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/bq/bq-1bB-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bq/bq-1bB-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/bq/bq-res-post.sav": { + "mode": 420, + "sha256": "28bbd9b5c377afcd8f075b535eb1036ee46acf71ab614e7091ccdbdfb3703db2" + }, + "verify/results/saves/bs/bs-C-endturn.sav": { + "mode": 420, + "sha256": "15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca" + }, + "verify/results/saves/bs/bs-C-f38-autosave.sav": { + "mode": 420, + "sha256": "0fe8f37479a702d2e4e7752e6cb160dc242f00a082dc4115b7d10c77b24989f0" + }, + "verify/results/saves/bs/bs-C-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/bs/bs-L-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bs/bs-L-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/cb-c3-turn1to2-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-c5a-turn1to2-pinned-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-c5b-turn1to2-pinned-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-turn2to3-autosave.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/saves/cb-turn2to3-endturn.sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/saves/certified-pairs.md": { + "mode": 420, + "sha256": "4e1cfb79cf5a51446b2eae21f91b565348ffa95a9ebac8f95e23019012aefb57" + }, + "verify/results/saves/cr/cr-oracle-autosave.sav": { + "mode": 420, + "sha256": "79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420" + }, + "verify/results/saves/cr/cr-oracle-endturn.sav": { + "mode": 420, + "sha256": "e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f" + }, + "verify/results/saves/cr/cr-replace0-autosave.sav": { + "mode": 420, + "sha256": "6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5" + }, + "verify/results/saves/cr/cr-replace1-autosave.sav": { + "mode": 420, + "sha256": "8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235" + }, + "verify/results/saves/determinism-hashes.txt": { + "mode": 420, + "sha256": "bfa0615c4b310ae21c09a7d373d5a9d8799f36a0460089e5950fa0edf9d614d2" + }, + "verify/results/saves/human-turn11-spytechs.sav": { + "mode": 420, + "sha256": "aa63dd3d5489884f70d9c35acfb06c23c84531f403798842e7b0cf8cde94d1d4" + }, + "verify/results/saves/human-turn15-spyprogram.sav": { + "mode": 420, + "sha256": "22306d26f8831b90a62c00a2ebad5a97e77017b62ee96a7439d4c2c76c455cca" + }, + "verify/results/saves/human-turn2-orders.sav": { + "mode": 420, + "sha256": "9a94dec562622310893d6f522a0fae06f1033470f4182098e808b175e7df7c8d" + }, + "verify/results/saves/human-turn3-noderoute.sav": { + "mode": 420, + "sha256": "6db0912a050a846c8f3a184811644c76df3fdb65e83dffbf70289e21cc098a90" + }, + "verify/results/saves/human-turn5-traderoutes.sav": { + "mode": 420, + "sha256": "3829e6c6d8f26cd1183a972bd66edadbd71364c11a224b0a6e40461011bcab29" + }, + "verify/results/saves/human-turn8-traderoutes.sav": { + "mode": 420, + "sha256": "afeb3b2d724e07cf59f15eb1bdb9fcf853391fc06fe21beb20c069ff75b2f836" + }, + "verify/results/saves/turn1-state.sav": { + "mode": 420, + "sha256": "a3f9dc4b49fc669c814b09b87a9c6795de21bac80a1c7bfe3901b8e239fa36cc" + }, + "verify/results/saves/turn2-state.sav": { + "mode": 420, + "sha256": "ab4ac2d7e2977260a4de916f65c7ecc6dd5b0094dac4bb51241317232ea17ab4" + }, + "verify/results/saves/turn2-strict-issues.txt": { + "mode": 420, + "sha256": "33a169a2de29ad502e9b7c0159cd543e0b4d71f2d9b3903f5be58c7846db2429" + }, + "verify/results/saves/turn3-state.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/saves/zuul-turn15-orders.sav": { + "mode": 420, + "sha256": "ef86a0d61de3533f023af5dc2b9a5720e4e0c5c97d900d88181603a13db7d045" + }, + "verify/results/saves/zuul-turn16-noderoute.sav": { + "mode": 420, + "sha256": "b6b5d283b62cc46bca914e86c34cf45e8960a653e818e59664087429bbb30103" + }, + "verify/results/saves/zuul-turn17-orders2.sav": { + "mode": 420, + "sha256": "1b863e684edecb4afe738ba30c8132065ebcf2d9977409325e714fe0173056e8" + }, + "verify/results/saves/zuul-turn17-rollpending.sav": { + "mode": 420, + "sha256": "aac5ba5b10ff1af6b0e38c565b2f0a60c16858ee4e89dd2a2f5b037eae95ee7d" + }, + "verify/results/saves/zuul-turn23-fleet23.sav": { + "mode": 420, + "sha256": "fd3748327d87b8c478f50fcd09d097eacff21e57d946ecb43b8119b4d0d78b1b" + }, + "verify/results/saves/zuul-turn5-species5.sav": { + "mode": 420, + "sha256": "48559ab5b719b332e47b4bf43af85a616bff1508125d62edb211b80637234af6" + }, + "verify/results/shim/ac/ac-probe-run-shim.log": { + "mode": 420, + "sha256": "b9b4a5f0e399e16b477cde0bd7e2c4ce378549eb5a467f7b8ae5eb64d75cb106" + }, + "verify/results/shim/ac/ac-probe-run-watch.txt": { + "mode": 420, + "sha256": "543d76d150aeb9318b9ae27acf638b8935eea30b1a2d47fb15354b584a458163" + }, + "verify/results/shim/ad/ad-r1-shim.log": { + "mode": 420, + "sha256": "fec98888b030ed42b84551aac1286c0baeaf15b8a545af068dc6605615e96df0" + }, + "verify/results/shim/aidesign/parse_aidesign.py": { + "mode": 420, + "sha256": "fbd4aeb71db548759bdb1ff65a5fdd0af6c192927e6ebe4b510f1083c3bdba13" + }, + "verify/results/shim/aidesign/sd-br-p1-hashes.txt": { + "mode": 420, + "sha256": "cd276116a51df01129f0e840d4c04f7964be34f75e51c384cd8df65969f458e6" + }, + "verify/results/shim/aidesign/sd-br-p1.txt": { + "mode": 420, + "sha256": "325cb9fcfa505ab2a93bbd00d60a7a4644b6b5970cb16a288cc7a43f2e825dd3" + }, + "verify/results/shim/aidesign/sd-pin-p1-hashes.txt": { + "mode": 420, + "sha256": "f0371c0a439d736ae7e67e71bd87d693481100d08243d16a1ac1f2ad0ab8bdce" + }, + "verify/results/shim/aidesign/sd-pin-p1.txt": { + "mode": 420, + "sha256": "45e693d279899e7a04cf59bda67190058896b56f3b0607d5aee21abb12f03071" + }, + "verify/results/shim/aidesign/sd-pin-p2-hashes.txt": { + "mode": 420, + "sha256": "e7d6dc12a940305087ee03dc7f8826f3c6343d24d8fea0f2aa78665d887138c9" + }, + "verify/results/shim/aidesign/sd-pin-p2.txt": { + "mode": 420, + "sha256": "b0206869206bc3a41bebb5175e31179f1a5d125a44b5ddfc10c67c4a0d13c22c" + }, + "verify/results/shim/aidesign/sd-t15-p1-hashes.txt": { + "mode": 420, + "sha256": "1ee71a623eb17e08c623ec8de3775218dc3a7c2de50d36a25dd2395382195962" + }, + "verify/results/shim/aidesign/sd-t15-p1.txt": { + "mode": 420, + "sha256": "df9f4906ee8bbb2efc9ba9a38c41607b89711d0bc9f705473d8448e9715d9280" + }, + "verify/results/shim/aiorders/cb-c1-turn2to3.txt": { + "mode": 420, + "sha256": "9d5014b346cb0fa9e2172f45db77c4437a03b069930eaaa80ea94e742891eb8f" + }, + "verify/results/shim/aiorders/cb-c3-turn1to2-run1.txt": { + "mode": 420, + "sha256": "fdaf27a32b93fdb3024f7a45f0d90b2cf833d3f592960027c3a6cf4ecbb8c616" + }, + "verify/results/shim/aiorders/cb-c5a-turn1to2-pinned.txt": { + "mode": 420, + "sha256": "d4daa0c2599c1b573ed59617243a392861dbc4e1fbeb707c7248708c015d998f" + }, + "verify/results/shim/aiorders/cb-c5b-turn1to2-pinned.txt": { + "mode": 420, + "sha256": "9682186176024242fddb901b10d9a5ad6beba91bd895c2001ca954fc293eab73" + }, + "verify/results/shim/aiorders/l4-research-run1.txt": { + "mode": 420, + "sha256": "5caf1fa25b7b8c2d6af213e59c6ec821be3c46cdd92a1024a6faf5d0a3b1d71c" + }, + "verify/results/shim/aiorders/l4-research-run2.txt": { + "mode": 420, + "sha256": "846ef2cfbc365e7ee2f481048978baf820d57026737261bfba3a328d59cdaad8" + }, + "verify/results/shim/aiorders/l4-turn1to2-aiorders.txt": { + "mode": 420, + "sha256": "c55d9b3c48cb552c02731003c26bb6dfcb8afb611c2a188d21fd4a39f550d269" + }, + "verify/results/shim/aiorders/l4-turn1to2-hooksoff-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/shim/aiorders/l4-turn1to2-instrumented-autosave.sav": { + "mode": 420, + "sha256": "e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d" + }, + "verify/results/shim/aiorders/l4-turn2to3-aiorders.txt": { + "mode": 420, + "sha256": "696c34996e4b5be0383794fae7ea114779f7fdd0a8cdceff5a00aeb07392933a" + }, + "verify/results/shim/airng/par-br-p1-hashes.txt": { + "mode": 420, + "sha256": "656b1d0c073d9988287e5b76543e42eb1c050d9ebc9872e2b7ec5208b7534b42" + }, + "verify/results/shim/airng/par-br-p1.txt": { + "mode": 420, + "sha256": "eadf1cfb7efd7b374472867ddf1cea5f60e30096090c950049f0c264b0299398" + }, + "verify/results/shim/airng/par-br-p2-hashes.txt": { + "mode": 420, + "sha256": "d97916075c7b4c10464962e9e38aed69288a4d68a16a369c1133df16fa134146" + }, + "verify/results/shim/airng/par-br-p2.txt": { + "mode": 420, + "sha256": "bda355cbbf07301cd6d3716eba32312261c402848c91780a97a6d5cce14c3d92" + }, + "verify/results/shim/airng/par-pin-a1-hashes.txt": { + "mode": 420, + "sha256": "5eb1b557826d45fe9d843b37a92aaef54cd1b8a60900f9c34b4fe25e4bd46a24" + }, + "verify/results/shim/airng/par-pin-a1.txt": { + "mode": 420, + "sha256": "17750bab77512434dcc9e66fc86cbfc34df497cadab5b732cf3b0ef3958e09a4" + }, + "verify/results/shim/airng/par-t1-br-p1-hashes.txt": { + "mode": 420, + "sha256": "7577c33ec33d9e94fb77225929c1f34a3dd94c18fe72a394017811b3b5d53467" + }, + "verify/results/shim/airng/par-t1-br-p1.txt": { + "mode": 420, + "sha256": "8bc9969e2da730d26cc5538b758858a00a4ba6ab2d398458ff4dece1edf8bf92" + }, + "verify/results/shim/airng/par-t1-br-p2-hashes.txt": { + "mode": 420, + "sha256": "7e60fc8615163e8ebccf22fc8910f2e7c4f72a9be7a74bc832bc2a0f64ade0da" + }, + "verify/results/shim/airng/par-t1-br-p2.txt": { + "mode": 420, + "sha256": "7e50a728eb5909bd602a9e6996b908b1b2665c8c983cc0258dad000c8bff8e35" + }, + "verify/results/shim/airng/par-t1-br-p3-hashes.txt": { + "mode": 420, + "sha256": "00ce6b3b4c9dbfd192d09b3b06d91b95576cee8a5a85fccdc36a85547fbdcbc4" + }, + "verify/results/shim/airng/par-t1-br-p3.txt": { + "mode": 420, + "sha256": "28cdf1f6b83c1764f1d1e51a67e3f873566b8503f8504ef52f5b5af24b21c0cb" + }, + "verify/results/shim/airng/parse_airng.py": { + "mode": 493, + "sha256": "3fafa7cf2363620d6a25248d085fbc4e3bd1fdbb9388a6795244834a9a2a2ed0" + }, + "verify/results/shim/ap/ap-probes8-d.shim.log": { + "mode": 420, + "sha256": "115545172568edc6a1d5bb3b559f968aa8a7aaa1f6aeba970daebce98fe56a0c" + }, + "verify/results/shim/ap/ap-probes8-w.shim.log": { + "mode": 420, + "sha256": "8af0897a884bb314958c5e6f2fccd88ff8b1890322dafd3bc904b3f983838620" + }, + "verify/results/shim/ar/ar-r1-ledger.txt": { + "mode": 420, + "sha256": "44bddfc0b9e94812a3a1cfd681a1350caedf2ed8e1174900c2f81c90dc95187e" + }, + "verify/results/shim/ar/ar-r1-probes.txt": { + "mode": 420, + "sha256": "c10251c9bcca5436dc42b2c0bd37b66c144aec4036f2069c2df9340fd764992c" + }, + "verify/results/shim/ar/ar-r1-shim.log": { + "mode": 420, + "sha256": "07003ee203d60a638cc8a1cb0a0f6b8042ba227705b4355f1254312c6dd54e28" + }, + "verify/results/shim/ar/ar-r1-sites.txt": { + "mode": 420, + "sha256": "d1923d549ef3567488d0382ae0ef75fa25c5b1b5812ee5349c5c47aea7a30514" + }, + "verify/results/shim/ar/ar-r2-shim.log": { + "mode": 420, + "sha256": "06dbf04cff5a56b0e55d8e73e5b1e3e9d9235f4afafc8139517b68d676781909" + }, + "verify/results/shim/as/as-probes8-run.shim.log": { + "mode": 420, + "sha256": "cd25c93d8b79e0f0df594fe681917fe880741a54a4188d4d72d2fbc6c42ba8d9" + }, + "verify/results/shim/bp/A-aiorders.txt": { + "mode": 420, + "sha256": "ee9f8bb1073e3bf02e115fdee014f79b11100a0e1e35e308c2bcd4b798302c34" + }, + "verify/results/shim/bp/A-shim.log": { + "mode": 420, + "sha256": "853eab98d09ff1e7a8e7da375a678561b02d6236adec627202ff3bb34d90e797" + }, + "verify/results/shim/bp/B-aiorders.txt": { + "mode": 420, + "sha256": "07daeacf33a16afbed64a8a01ffd26fa73c6d2acd0e6993dd9deb06a7fd93fc3" + }, + "verify/results/shim/bp/B-shim.log": { + "mode": 420, + "sha256": "cde2202333e81cc4eec2c47915181229a68a5fa99879968905a2809c4fe0a79a" + }, + "verify/results/shim/bp/L-aiorders.txt": { + "mode": 420, + "sha256": "28492b0f9be74f61db45eae49b44b41efbc1a3bf6f6d2c888e5cc40bfb7753bd" + }, + "verify/results/shim/bp/L-shim.log": { + "mode": 420, + "sha256": "550d8986a35b3f4742e7522df11bfbf2e832e417ad42cc1bff1a39dd4ee510fd" + }, + "verify/results/shim/bp/statecheck-AB.txt": { + "mode": 420, + "sha256": "dacb5cfa5541934f37b2b1c02b87e809c3f65ba8488aa88d925b295fade0083d" + }, + "verify/results/shim/bq/bq-res-aiorders.txt": { + "mode": 420, + "sha256": "991543eb53fbf1353fe99ed96d4ca358e05f6bac32f00bd1f6dc60fcc002c8b4" + }, + "verify/results/shim/bq/bq-res-shim.log": { + "mode": 420, + "sha256": "7855bd268f69443e7ddfda71873458144728630264703482901bf6d8ffbccd3a" + }, + "verify/results/shim/br/BR-aiorders.txt": { + "mode": 420, + "sha256": "d71e11e7c40aaa740adc55651af556afb9e92768336bc11747ad67151f33f4d1" + }, + "verify/results/shim/br/BR-airng.txt": { + "mode": 420, + "sha256": "04eaeaa688a448f64df00dedfd692b78bca0e3e1207a8292c2fafad507f919ea" + }, + "verify/results/shim/br/BR-shim.log": { + "mode": 420, + "sha256": "bc6ef7aa465c2b1a81d08555174e15fb1a97a207da9eefaa8a6155440869a13e" + }, + "verify/results/shim/br/BR2-deep-aiorders.txt": { + "mode": 420, + "sha256": "b9edb53f7d56c1bb26d3bb77349543dce9564930484bc832475a3a04e5f2ad15" + }, + "verify/results/shim/br/BR2-shim.log": { + "mode": 420, + "sha256": "0de7609693747fdf0abaebd60598af127c918f32561c993715aead91cd24b334" + }, + "verify/results/shim/br/aiorders-diff.txt": { + "mode": 420, + "sha256": "411ceb2bacd62185d25a3c58f199c0bdfcd2759705bef2b36536da3870f73a67" + }, + "verify/results/shim/br/cmp_aiorders.py": { + "mode": 420, + "sha256": "b6c192efb40866aa56f29d9ba2b89e17f18ae0579645db8f34a01010db09cc28" + }, + "verify/results/shim/br/shim.cfg.brdeep": { + "mode": 420, + "sha256": "b8017e344666df816f1191906cf8f54504d631bb7ce9d2f51f6f959e4934ff04" + }, + "verify/results/shim/br/shim.cfg.brprobe": { + "mode": 420, + "sha256": "4f090999dba63ef22ab4993bd6af557e9500819c84f27decc126771f48f98efb" + }, + "verify/results/shim/bs/C-aiorders.txt": { + "mode": 420, + "sha256": "5abc20b68edf6ff52301c01825040e1d6b41b582ba40403ed6c4edc42dcbe4e2" + }, + "verify/results/shim/bs/C-airng.txt": { + "mode": 420, + "sha256": "5a4a56506d1eeb82d3bf0fbba95842566911178a82f0aad9d700a9fe00f1b300" + }, + "verify/results/shim/bs/C-shim.log": { + "mode": 420, + "sha256": "8b8dad987589fd159e789806e89dbcf7a7b40b86446d55e1d0bf10ff25cb8f6f" + }, + "verify/results/shim/bs/L-aiorders.txt": { + "mode": 420, + "sha256": "a03e8c1587633ecbb683c376f30e35e126e98ff0e8204c4ee6b5e2b4fc254104" + }, + "verify/results/shim/bs/L-airng.txt": { + "mode": 420, + "sha256": "8d21083857facd3728446af612b3a97b47e5287a5fe0bdf01423812f8445dacd" + }, + "verify/results/shim/bs/L-shim.log": { + "mode": 420, + "sha256": "246af272e464c715c7abb00471b4ddc404b81143f4065006aa4daec4d82cadb9" + }, + "verify/results/shim/bs/shim.cfg.bsrun": { + "mode": 420, + "sha256": "570b15c208d31a367ec6c6886019693cb17b98d254cebead11ec6746ae5af256" + }, + "verify/results/shim/bu/BU1-aiorders.txt": { + "mode": 420, + "sha256": "944eeb701fcd22480513c34d93f8310541977e89a24ae237bd947aed44092529" + }, + "verify/results/shim/bu/BU1-aivisit.txt": { + "mode": 420, + "sha256": "721f038ef80be92325728fc30f095846b54ff1ac67a41537d4a4d1b97d5e9758" + }, + "verify/results/shim/bu/BU1-shim.log": { + "mode": 420, + "sha256": "28ca02f56823e577662744108965bc3ab1d7241143704ac8ceaacf2e9cd077f3" + }, + "verify/results/shim/bu/BU2-aiorders.txt": { + "mode": 420, + "sha256": "5c388039a3e832465f67b4ca88f3f67550d5189a3a68f33c508c4a467733c9ac" + }, + "verify/results/shim/bu/BU2-aivisit.txt": { + "mode": 420, + "sha256": "19963ed364f47fd965508d96fbf9d1f424938f711f2b1cdc83697f789189271a" + }, + "verify/results/shim/bu/BU2-shim.log": { + "mode": 420, + "sha256": "c0a8c467bc4b4134dc83ca5dedbbfed8dac887b432a56cd12f6e211c8d58daca" + }, + "verify/results/shim/bu/BU3-aiorders.txt": { + "mode": 420, + "sha256": "b6443b3f7db541149f54435f14ba830f54d2f950420f3f0694ff12a8b1eec143" + }, + "verify/results/shim/bu/BU3-aivisit.txt": { + "mode": 420, + "sha256": "fe67a4a1cc6a67e06b2eb5675b4b8543ab9f25ea39a18d7f4c83bce74482e0cc" + }, + "verify/results/shim/bu/BU3-shim.log": { + "mode": 420, + "sha256": "0a802ec556c87f44efaa06f211e75d9b89a66ac6db5a08e34d2a7eae992121ed" + }, + "verify/results/shim/bu/claim-order.txt": { + "mode": 420, + "sha256": "7135e3ed0204a4615e546bc882992073d4b48ee42ea341186c32b6b3dd3dfc47" + }, + "verify/results/shim/bu/claimcheck.py": { + "mode": 420, + "sha256": "85c5ec747f12cf37ec2dbc4021447909eeded68ecd1abb697a6fb60005a54aff" + }, + "verify/results/shim/bu/shim.cfg.bupin": { + "mode": 420, + "sha256": "6b37b047adc95f7c08b6767cdec5bd715a8851f14bff7f187772835d1cc032a7" + }, + "verify/results/shim/cr/cr-N.log": { + "mode": 420, + "sha256": "d5459e6dcf44fbe55d0f60f1ac40d68bed96319bb55986cc24a1b9ca0d8103e0" + }, + "verify/results/shim/cr/cr-R0.log": { + "mode": 420, + "sha256": "3b703881aa2b9a1c111201ff9543f2dcae0f948567ee877df275a1093bb567f7" + }, + "verify/results/shim/cr/cr-R1.log": { + "mode": 420, + "sha256": "8df6af84f74891ff9b0b02fa150641f5fadcd0419bc53c41cbe80bf14ec9c712" + }, + "verify/results/shim/eventlive/c6b-loaded.png": { + "mode": 420, + "sha256": "f442d4b211a47b331cef9a255e83732b80a1ede70ac200596c796ac0aa320017" + }, + "verify/results/shim/eventlive/c7b-turn3.png": { + "mode": 420, + "sha256": "3e070abfbdf4efd2662951049f8545f328aa172d64d00b9c5a1f4243426e803a" + }, + "verify/results/shim/eventlive/load-dialog-8files.png": { + "mode": 420, + "sha256": "e0fc5af16042a70b53bf7d44220db56c56a466c22c4abd641557e94b8e6c1693" + }, + "verify/results/shim/eventlive/shim-zuul.log": { + "mode": 420, + "sha256": "f9d184b33c46cab9d497f7a38056c099ce2ff9b5e8149f563a2353d91985fea1" + }, + "verify/results/shim/eventlive/shim.log": { + "mode": 420, + "sha256": "e65f2e3efa1ce8f70c483bb966448239923db2d3924c709a669bb1a890411b0c" + }, + "verify/results/shim/eventlive/t7-after.png": { + "mode": 420, + "sha256": "dc0a3e8f5a5c9032ead266d106fa69a57677711eb807d26376f29baa6ec0b934" + }, + "verify/results/shim/eventlive/zuul-turn1.png": { + "mode": 420, + "sha256": "f9af979ed08315c0a8d644af800318634b3641628f710f3f9b4d2c77d4f70fdc" + }, + "verify/results/shim/l1/README.md": { + "mode": 420, + "sha256": "f008081756d99825aa81d2802869476f8341f81aeb8c4dbbb77502cf76db5145" + }, + "verify/results/shim/l1/cdiff-frames-2-51.txt": { + "mode": 420, + "sha256": "57cb1911c5bfc7bdfacafc6bb1ad382fc05f46fb9cdcee4479d861af48e585c1" + }, + "verify/results/shim/l1/cdiff.py": { + "mode": 420, + "sha256": "2ace41ce6017cfac8758d8b9955f02de84738d90067a7dfadeb8bffffc842027" + }, + "verify/results/shim/l1/rep.py": { + "mode": 420, + "sha256": "1a7a3819da8e9aeaaf213a62b696388b0a9489924c964407536831b5f7dd9488" + }, + "verify/results/shim/l1/saves/l1-t1t2-post-hooksoff.sav": { + "mode": 420, + "sha256": "e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d" + }, + "verify/results/shim/l1/saves/l1-t1t2-post.sav": { + "mode": 420, + "sha256": "62061918176e344106e82357e58acc8adec488f6b2969831cb99a84cf25e31c5" + }, + "verify/results/shim/l1/saves/l1-t2t3-post.sav": { + "mode": 420, + "sha256": "2177c659d8dbc39cf7485abe367d42d55cc42cc9a61949d403dcbc79989ec32d" + }, + "verify/results/shim/l1/saves/l1-t2t3-pre.sav": { + "mode": 420, + "sha256": "641a33f06b2fe1c1caf0c4994442bf13a4b03f25a85b34a9875cd22b75715896" + }, + "verify/results/shim/l1/seed-two-processes.txt": { + "mode": 420, + "sha256": "d60412049ced59705284a46078f1906e1aad4140f90db2169e08aeb9530dd985" + }, + "verify/results/shim/l1/seedrep.py": { + "mode": 420, + "sha256": "a06de5d5ccc1e87808eb3877534076340ef5330bee9a86953b8f4dae0268e087" + }, + "verify/results/shim/l1/trace-et1.jsonl": { + "mode": 420, + "sha256": "f21a213bc56983bc94f24303b0837b160f93bfb7e3ca6abdbf2e18321f8dfa19" + }, + "verify/results/shim/l1/trace-et2.jsonl": { + "mode": 420, + "sha256": "6e44b0fc541c3082f91b115de67f5315f43b9db21f0696b856cfff2ead51323a" + }, + "verify/results/shim/l1/trace-oracle.jsonl": { + "mode": 420, + "sha256": "ad9ecbe79a71c84930302868850806798228fe0f2e625b442dd3ed579c05092c" + }, + "verify/results/shim/l1/trace-playforward-f51.jsonl": { + "mode": 420, + "sha256": "6ed0af385dfe7288ad2c994458c8f5d75fc8e29b603dd6607a3703591d25eeb4" + }, + "verify/results/shim/l1/trace-seed-proc1.jsonl": { + "mode": 420, + "sha256": "120074583eb02cd4c3a29aab5826f789d52a6146930b1763f9b0bb824e9a350a" + }, + "verify/results/shim/l1/trace-seed-proc2.jsonl": { + "mode": 420, + "sha256": "03dffeafeff0c33d926207f869741dc544141425c8f665bf58aad4fd363e2f95" + }, + "verify/results/shim/l1/watch-arm.txt": { + "mode": 420, + "sha256": "f8d5811c938d16d003a72a97f2b4b33112914a7ee378fa2b334282616592943e" + }, + "verify/results/shim/l1/watch-hits.txt": { + "mode": 420, + "sha256": "1bf62ac965036a189055cd59a92007c70a2a6aca307df54ce8ccb997048f43d5" + }, + "verify/results/shim/l3/l3-probe-run-shim.log": { + "mode": 420, + "sha256": "f5cd336971ae3d3eaff642e80d9defa20ec2e1ee11e212a082c24365b18d8684" + }, + "verify/results/shim/l3/l3-probe-run-watch.txt": { + "mode": 420, + "sha256": "8d969595789c690a688f7b8fac05288c614d5d9210388ca94315158948c85f24" + }, + "verify/results/shim/l3/l3-spy-run-shim.log": { + "mode": 420, + "sha256": "5abfd08445e9e8139945b095ddddfb56480062019ce6d40304a440c317f21fd1" + }, + "verify/results/shim/l3/l3-spy-run-watch.txt": { + "mode": 420, + "sha256": "c669ccf79202e7060c153151e4fe1be96acf4030cb64aa71bd6a5c212b550b47" + }, + "verify/results/shim/m0-main-menu.png": { + "mode": 420, + "sha256": "465207fda4722ca53585b71647a08b1149944036792a072e7c34e2c437a3e37c" + }, + "verify/results/shim/m0.log": { + "mode": 420, + "sha256": "581d63139503892b6aeeff71acb742143393e9f107aa1f3605d8c028c927cad1" + }, + "verify/results/shim/m1-shim.log": { + "mode": 420, + "sha256": "35401ea82b9a64dbfdb54c282c06c51d7b696afd4ea2794e16071e0fd5c7cbef" + }, + "verify/results/shim/m2-scout-shim.log": { + "mode": 420, + "sha256": "8c46117bdde6b6911a4d77b059b40803d4966652990c8fa3ed67773e5db0459f" + }, + "verify/results/shim/mf-after-shim.log": { + "mode": 420, + "sha256": "86601372b980828171e98fc71afe865f207b1745ef4dcdca646a618c91d17426" + }, + "verify/results/shim/mf-after-turn2.png": { + "mode": 420, + "sha256": "a1f83011ff96e990d7cc80f8306e8fe0c58b96f84eb73ccb6cb013019900133d" + }, + "verify/results/shim/mf-after-turn7.png": { + "mode": 420, + "sha256": "313f3863ab901320174c8ff7cf6f1f6b0d5b3d9d7a2f8999eae6413aedc46fc5" + }, + "verify/results/shim/mf-before-shim.log": { + "mode": 420, + "sha256": "8377a87c7ed05fd0cd7b61e3f1d5fc9c2b9fa294f812c67183d4ce31323a64b1" + }, + "verify/results/shim/mf-before-turn2.png": { + "mode": 420, + "sha256": "c9805791f402ec159fcc6acdd283120eae8536b230666d3049374525595b589f" + }, + "verify/results/shim/mf-before-turn7.png": { + "mode": 420, + "sha256": "3b880b8f96c4cc328aaff8e41068db29b295be8f000c432e321a51b6030b1272" + }, + "verify/results/shim/mf-human-home-no-ships.png": { + "mode": 420, + "sha256": "dfda3e9784eefdc7b75d04908e95c3a192eda7796685907c65bfde3068d6f2bb" + }, + "verify/results/shim/probes/human-t3-5-perturbed.txt": { + "mode": 420, + "sha256": "9b594ab18cdd9aec4fdf807b4d97576191bc6fd48a85cc872c222b515d0f7c01" + }, + "verify/results/shim/probes/human-t5.txt": { + "mode": 420, + "sha256": "0ddd9f0391a3a5d655f1809a9e79d537badd8071f8834e58bdbc7f95d9ff1320" + }, + "verify/results/shim/probes/oracle-restore/h-oracle-autosave.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/shim/probes/oracle-restore/h-oracle-endturn.sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/shim/probes/zuul-t24-25.txt": { + "mode": 420, + "sha256": "50567b7cb1f008d025baf6cb4b4ad7af7d767a2182afd082c3ac1b1a66c79541" + }, + "verify/results/shim/recap-b1-shim.log": { + "mode": 420, + "sha256": "601cd4cbbec3e8c1f7776eadc4203256ec4c5d1e3e180295369727e1da69ff37" + }, + "verify/results/shim/recap-b3-shim.log": { + "mode": 420, + "sha256": "7c5110a9d4431cc03729a7bddcb13ee69a6d428199051e175b0921391fc02a80" + }, + "verify/results/shim/recap-misc-shim.log": { + "mode": 420, + "sha256": "7cadf2eadb08979cda39fe7e3ed6cfa3f62bdbcd256fc7550b3e27c3f08c9b3e" + }, + "verify/results/shim/recap-misc-turn7.png": { + "mode": 420, + "sha256": "2c1451ded36ad79389f0eb3db098b4e0b0a6f12495d64c832f6e093374005c29" + }, + "verify/results/shim/recap-trace-shim.log": { + "mode": 420, + "sha256": "56da143a92b2edda727862a6fd4a056c716153e23cfddbde076e218ce4c4285f" + }, + "verify/results/shim/recap-turn2-loaded.png": { + "mode": 420, + "sha256": "62a42c44f99d8a53bca735d54a5adf48b89449bb859e859ec573cb40e1a7f2d0" + }, + "verify/results/shim/tailrng/save_rng_delta.py": { + "mode": 420, + "sha256": "a9a04b131427a43372d87688b8eaf230a82a79e2c3c241a90ff4eb31e039749e" + }, + "verify/results/shim/tailrng/z-t5-autosave.sav": { + "mode": 420, + "sha256": "b2124798470d85ea86b0e9e4abfd9e23f3be73caa1115dd7614021be76305939" + }, + "verify/results/shim/tailrng/z-t6-autosave.sav": { + "mode": 420, + "sha256": "2ce6aef9d49ea238455f3ac680556c6a251065af3e28b6540fe09597ae38571c" + }, + "verify/results/shim/tailrng/z-t6-endturn.sav": { + "mode": 420, + "sha256": "afb112896c0236fa715ab3c10139958294085bb2066e22a6d7b76deb0dfa46dc" + }, + "verify/results/shim/tailrng/z2-autosave.sav": { + "mode": 420, + "sha256": "b2124798470d85ea86b0e9e4abfd9e23f3be73caa1115dd7614021be76305939" + }, + "verify/results/shim/tailrng/z2-endturn.sav": { + "mode": 420, + "sha256": "8648957fecf5041233f9add4c8173f78981f026f133ecdbecdb89ddd10917048" + }, + "verify/results/shim/unlock-shim.log": { + "mode": 420, + "sha256": "20a6625b369acb773543e530f1bfdc8b7eaca5c6b58415cc5009bb9858e16f22" + }, + "verify/results/shim/watchpoints/w2-modcount-status-2turns.txt": { + "mode": 420, + "sha256": "335be910dc11a20c9fb80f3b0f37f04fd50a9d8074697bb5365c3fea02790b74" + }, + "verify/results/shim/watchpoints/w2-shim-log-excerpt.txt": { + "mode": 420, + "sha256": "9a344045270e3815004a3376eccfbd030372faba54374d9b6626fd80740b8b13" + }, + "verify/results/shim/watchpoints/w3-modcount-turn1.txt": { + "mode": 420, + "sha256": "328a2319e320f5382e82ad497b6b73245c397cf67515e8a27fa9712418af81ae" + }, + "verify/results/shim/watchpoints/w3-shim-log-excerpt-turn1.txt": { + "mode": 420, + "sha256": "a9b3c20f90a76ee624bde6ee4cae9d1ff1f2baa67aa770a0e70042cb44d11915" + }, + "verify/results/shim/watchpoints/w3-shim-log-excerpt.txt": { + "mode": 420, + "sha256": "af9fe2258fe4168f6066768809c509380183f61bc337331392c5202b900d906a" + }, + "verify/results/shim/watchpoints/w3-tshn-containers.txt": { + "mode": 420, + "sha256": "08eab48d1a202f975f1be87e2279379646142f8b22d9dafc56295399083ed0af" + }, + "verify/results/standalone/cv/cv-input-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "d29f3514e4209954d6c068f34285615aef5f4627ba4627ce97c0e65f93620159" + }, + "verify/results/standalone/cv/cv-leaf-worklist.txt": { + "mode": 420, + "sha256": "0f309711de89cc10cf940d0d4b051b5052ce49a3cc0f3f80c532b50256410778" + }, + "verify/results/standalone/cv/cv-noreplay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "3734f197cfefd017dbe562fd421d40859bfc2c37d9ac2cedf9c7ddd340a3a4a7" + }, + "verify/results/standalone/cv/cv-replay-run.log": { + "mode": 420, + "sha256": "7372c7da437ece21098cc6f66d0631e146d8aae14a9242bd2278a9922a7f7c02" + }, + "verify/results/standalone/cv/cv-replay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "1932158abec82f45b9b838f4cb79b1088190ca5281d388f57356af7776e96950" + }, + "verify/results/standalone/dt/dt-canonical-after.txt": { + "mode": 420, + "sha256": "f32fdcf7d6431293133e951045b42a55e8a27d75cd859ad08cd719e5fb696712" + }, + "verify/results/standalone/dt/dt-canonical-before.txt": { + "mode": 420, + "sha256": "b56160cfdcfa0fff25be2aa566959261e375004905814803e231889da665188f" + }, + "verify/results/standalone/dt/dt-observed-leaves-remaining.txt": { + "mode": 420, + "sha256": "e14bd20e60480f98a564e585c0d25d2e758f71016811b8981dbdacd9d51c0c82" + }, + "verify/results/standalone/dt/dt-replay-run.log": { + "mode": 420, + "sha256": "4b7907fc4e735b1c12e3cf64671079abaad757aabd752b134a9fb27d065656cd" + }, + "verify/results/standalone/dt/dt-replay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "8ddb84e7e6c2f663b1bc4b9611a56a46aac9d09863dcc5be765cb70dc9642c22" + }, + "verify/results/standalone/max-income-oracle.json": { + "mode": 420, + "sha256": "245796e0aea5f5c2238686cba10c651156117fb454805553b2508a8a8fe71a69" + }, + "verify/results/standalone/report.txt": { + "mode": 420, + "sha256": "b47e90432eaf38149f2ecb5316d1962813b6b1423848e36fcc9435ad1f5485df" + }, + "verify/results/standalone/rng-oracle.json": { + "mode": 420, + "sha256": "98a364c80f69d6a84b86c3f9ccc16176d9e769ff061569b0c0ddfced53f9146c" + }, + "verify/results/standalone/rng-oracle.txt": { + "mode": 420, + "sha256": "3496a217a7e4f80bb18c1b067eaedcafcf7bdc877460c6346606fd7f6a55b877" + }, + "verify/results/standalone/status.json": { + "mode": 420, + "sha256": "d38ca6222c83df3a5886e6b32a30772c7174cc0e584f4a3beabedc05770df9cd" + }, + "verify/results/standalone/t36-turnrecord.md": { + "mode": 420, + "sha256": "b017a93ad04af69ef469cd8ea536dff4cab17140d20b3665e7c89533ab5b8a84" + }, + "verify/results/state-checksum/ad-oracleA-vs-oracleB.txt": { + "mode": 420, + "sha256": "b6c440e20108ad2727a7d7aa32a4bd673ec03ca4372461797705d619de1ba48a" + }, + "verify/results/state-checksum/chain-turn1-3.json": { + "mode": 420, + "sha256": "33941d0dd77bfb79e4302f82a410f5f18fe3ae1ade684b5b59c6ed352789a696" + }, + "verify/results/state-checksum/chain.txt": { + "mode": 420, + "sha256": "ae1037dd8394b258ce91262877d348a0561c5f5056cfae74cc0d058e4166aa83" + }, + "verify/results/state-checksum/float-census.txt": { + "mode": 420, + "sha256": "c697c0f187ee8a8ebb157cbff8d7ae42c92f36a501b16acd9f9839a0ffc306a9" + }, + "verify/results/state-checksum/identical-roots.txt": { + "mode": 420, + "sha256": "1143fabfe96954440542adcd3830ad1d862be6c091f3c1b2e63e92a2751703e7" + }, + "verify/results/state-checksum/resave-localisation.txt": { + "mode": 420, + "sha256": "85f4e8fe3581ba5d0ae74974d757c4c2fddc008f3fbe6781891ae8ef65aa693e" + }, + "verify/results/state-checksum/roots.txt": { + "mode": 420, + "sha256": "6ea7ad668703baaff870720683bcc13beff557cebf8e7843526d6677e5b5ef68" + }, + "verify/results/state-checksum/turn2-to-turn3.txt": { + "mode": 420, + "sha256": "3649c86742460a54d89714df1917508f76952c44c07cb7fbc19010910c5df0f4" + }, + "verify/results/turncommands/br2-turn27-deep.tcb": { + "mode": 420, + "sha256": "329b9c3f1e9f85ddeeb71148bd5c0e38f7d26445ed349df60ffbfaf63db46102" + }, + "verify/results/turncommands/br2-turn27-shallow.tcb": { + "mode": 420, + "sha256": "d8346969421a92fa199d0b9faafa642dc2e71a527b08d27984fe73ee70ecbd6b" + }, + "verify/results/turncommands/cb-turn1to2-pinned-run2.json": { + "mode": 420, + "sha256": "01e572975339fbe8a242b2438719173bd5bb4f4916078e5887026408923eb356" + }, + "verify/results/turncommands/cb-turn1to2-pinned-run2.tcb": { + "mode": 420, + "sha256": "16e349db6c46e46520cd2e5f0a9fcf70b537dce878324dd873418ef6cebd8658" + }, + "verify/results/turncommands/cb-turn1to2-pinned.json": { + "mode": 420, + "sha256": "2d4f108b8ac6b1e582382ac25d53f354c293e7caf390b8462d15beaf8e43e01c" + }, + "verify/results/turncommands/cb-turn1to2-pinned.tcb": { + "mode": 420, + "sha256": "28ebfecc3495cc4f5b2892e420cb1b83f3cbdb6b7aabe107f4b1d18233a06094" + }, + "verify/results/turncommands/cb-turn1to2-run1.json": { + "mode": 420, + "sha256": "c9de70196af5453df15cfebcb92c973dfed9d54ffa0dc0a397839cf951ac9b58" + }, + "verify/results/turncommands/cb-turn1to2-run1.tcb": { + "mode": 420, + "sha256": "5cdcfb3ade6cdfb2c00c234f5535c791780230f520d27be14f617462347b4948" + }, + "verify/results/turncommands/cb-turn2to3.json": { + "mode": 420, + "sha256": "8a0d4fc9efae9dcb4eca0de41bf28444d79eb5a4fd4e426671a4d80ab5a46f44" + }, + "verify/results/turncommands/cb-turn2to3.tcb": { + "mode": 420, + "sha256": "420a5d03f2a4ecfa0789835cc46f98961d11bbd7c7fd5f59dc28301aa0b65b6b" + }, + "verify/results/turncommands/l4-turn1to2.tcb": { + "mode": 420, + "sha256": "1b9faa7f8aad9196e36cf1c450e340f37c502a69ccfcaaad7e289bd7b4727b12" + }, + "verify/results/turncommands/l4-turn2to3.tcb": { + "mode": 420, + "sha256": "b0443f176c3915389278de608a8e7c63fa48d4777b924c0e383c7279f2a297e0" + }, + "verify/save-reader/SAVE_FORMAT.md": { + "mode": 420, + "sha256": "5ac2556b6c063c9296ef29e8514cc312983d48a8e2c2832f504c970629990b33" + }, + "verify/save-reader/fixture_joint.sav": { + "mode": 420, + "sha256": "fbe41595e50bb580786f36b197d5b85f87820974c545107c864fa2f1862af3f1" + }, + "verify/save-reader/fixture_split.sav": { + "mode": 420, + "sha256": "3909f12d021bf840617dc8d599841b64d67be46e1c6882cba7728d312d310071" + }, + "verify/save-reader/save_reader.py": { + "mode": 420, + "sha256": "2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35" + }, + "verify/save-reader/save_writer_stub.py": { + "mode": 420, + "sha256": "8343ad15f742ee1b9cd62108efbc9c4b2718c3807442e3dfcfa9513ced7d3638" + }, + "verify/save-reader/test_save_reader.py": { + "mode": 420, + "sha256": "29f609d037eed99bb5444004facbff7b2c5c36fae568e815810585fdc3ddd393" + }, + "verify/state-checksum/STATE_CHECKSUM.md": { + "mode": 420, + "sha256": "5680299a4df27e30cdb545d9d2a640caf9299d61acb662b9512589e4390954e1" + }, + "verify/state-checksum/float_census.py": { + "mode": 420, + "sha256": "a568aad8b9f38aba2474f33941550bf948d050694a1d04dc5c85d15687223ae9" + }, + "verify/state-checksum/run_validation.sh": { + "mode": 493, + "sha256": "bf84b999d2b90368703e80235bac0258b70a1c37dd1902c9205a914a59cb1fc2" + }, + "verify/state-checksum/stability_check.py": { + "mode": 420, + "sha256": "8e640561b05decf590524fbe0dbf3b76a5e2f9c7fde93e005ca6e79464c305f1" + }, + "verify/state-checksum/state_checksum.py": { + "mode": 420, + "sha256": "ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8" + }, + "verify/state-checksum/test_state_checksum.py": { + "mode": 420, + "sha256": "d0ccf8e8390fd0a5d76a8695a490d85dc7e8e415a06ec50b592c57474cc9a73b" + }, + "verify/tooling/README.md": { + "mode": 420, + "sha256": "b05249530d65d43220c1e5c4666939c360d6139ed404a8881f6ad0a9c5c27af6" + }, + "verify/tooling/fixtures.py": { + "mode": 420, + "sha256": "56cccc88b9b9468e07c9ddff39d65813098053ec9e8f00432736906389f200a7" + }, + "verify/tooling/host-tests.json": { + "mode": 420, + "sha256": "90833c99e2749ff890b16b943f43f6ebfc1a1c611f2ed1e40555426fded45c97" + }, + "verify/tooling/test_tooling.py": { + "mode": 420, + "sha256": "bb8d15960dfda13f15cffc57f3b669003b127b4dedbf34100bb4a51c29dd3c6d" + }, + "verify/traces/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/traces/ac-probe-baseline-turn15.jsonl": { + "mode": 420, + "sha256": "a2f4e410f6a8d77f7680b4a69b5b2ac2f59fa80515b0cfe8209e7fec8e4a5b6b" + }, + "verify/traces/ac-probe-turn21-turn23.jsonl": { + "mode": 420, + "sha256": "2bb9317b82744c0da36ef6d9c1a78f31ebacea49b82a18005c0cc75bad62d345" + }, + "verify/traces/ad-r1-turn28-turn29.jsonl": { + "mode": 420, + "sha256": "cde7a1e010aa6195163f3b9320aa5c496fd8c271e9648c90c7319837dd967571" + }, + "verify/traces/ap-probes8-deploy-turn15.jsonl.gz": { + "mode": 420, + "sha256": "e257d5ea3fcb4be8da570d6a5589022e6ba412ff2712f4f06832812d8859e08a" + }, + "verify/traces/ap-probes8-turn16-turn26.jsonl.gz": { + "mode": 420, + "sha256": "df4fb35d9824799d8be79f3a9e976b55b7cd0fb5488b3e12711d04eb3c320f13" + }, + "verify/traces/ar-r1-turn38-turn43.jsonl": { + "mode": 420, + "sha256": "f8653cbd1956346816897b313031c5d70898144d1c84b1c849ac37bfe3bd993c" + }, + "verify/traces/ar-r2-control-turn38-turn39.jsonl": { + "mode": 420, + "sha256": "c1068652ddf54d2ff266c1dc1ef1e69ea663f5d2a83143408f77ec782b3dd988" + }, + "verify/traces/as-probes8-turn15-turn16.jsonl.gz": { + "mode": 420, + "sha256": "024bb0663b167eb364c8e138bae0bf10403860c195bd593cb56f60281060c4e8" + }, + "verify/traces/b2-final-menu.png": { + "mode": 420, + "sha256": "5a95fe260c9cb13dad5fc6f00460819107db93f4ac89f455077ad056600f83fd" + }, + "verify/traces/b2-shim.log": { + "mode": 420, + "sha256": "c31cf01af3659b7fdf008ff44f88f67ee4016dcfb30fc4a72b4d72ea0da8e404" + }, + "verify/traces/b2-techfx-compare.jsonl": { + "mode": 420, + "sha256": "f0202f45b276db6744c80768f12695153812bc882de688cf64705ed6a52f243c" + }, + "verify/traces/b2-techfx-golden.jsonl": { + "mode": 420, + "sha256": "43639e75bd9d510ed270c9cfcbb0c9665f5a6546f748ba81eba3f015e7ca233c" + }, + "verify/traces/cr-N.jsonl.gz": { + "mode": 420, + "sha256": "0071ae72a142533ffb91f9f04caa6704102c826761ff5ae24b57a1c3e9652e46" + }, + "verify/traces/cr-R0.jsonl.gz": { + "mode": 420, + "sha256": "6228c88cebb4dad2158e5586ecbcf71d1160116f2f4a2a8bc020658da8d7d706" + }, + "verify/traces/cr-R1.jsonl.gz": { + "mode": 420, + "sha256": "73f5f15b3343381cf3f973caaf74588fd3d0b6759de1ddcf9e12b9b3ebf29713" + }, + "verify/traces/eventlive-b3-t1-5.jsonl.gz": { + "mode": 420, + "sha256": "9cb344f1d8a3beb4bc1a2bf16baed6c38667443ead9f66fa0f53474a683d263c" + }, + "verify/traces/eventlive-b3-t1.jsonl": { + "mode": 420, + "sha256": "2d9962de9a7ea7fb28b33b72209706b4a27673096f71c8789f9f10ac465f387b" + }, + "verify/traces/eventlive-b3-zuul.jsonl.gz": { + "mode": 420, + "sha256": "0ee09bb884799e72c6a617ab02e741a7ba791ff458af439b9947a87b368a64de" + }, + "verify/traces/h-probes-human-perturbed-t3-5.jsonl.gz": { + "mode": 420, + "sha256": "2567f8ccb6276a4d647c4f4b88d14f7ae63aa4d1797f672a9bd9c7c86e4d7473" + }, + "verify/traces/h-probes-human-t5.jsonl.gz": { + "mode": 420, + "sha256": "92964779111573dc72e6a1845217cd7d709c9900594a106b3de7b59c2b7a88a7" + }, + "verify/traces/h-probes-zuul-t24-25.jsonl.gz": { + "mode": 420, + "sha256": "0966294af27b49159b1e72e683abc0b59fd52cc9bfd9f517130d30cedf7efa29" + }, + "verify/traces/l3-probe-turn8-turn15.jsonl": { + "mode": 420, + "sha256": "d1b5436f917bb4f6f74bd7b1967dbd0626db2c3a5cbc1d67684ef9f010826676" + }, + "verify/traces/m1-compare.jsonl": { + "mode": 420, + "sha256": "f0f6fd15bc73008e43e20d6ed4c4dd91fb2ec8b40935bfd3cc000d8a84ea6731" + }, + "verify/traces/m1-trace-golden.jsonl": { + "mode": 420, + "sha256": "4a4ddc031fb26a8f8b10dace297c73670f53dcbd250a9be94c0e31c9bb44dcc5" + }, + "verify/traces/mf-after-compare.jsonl": { + "mode": 420, + "sha256": "2a894892977176df1a9d6c8199b0f81b48c7bcac15d2c0e7786441fc6125226e" + }, + "verify/traces/mf-before-compare.jsonl": { + "mode": 420, + "sha256": "ee005097ebaac9f30c63f1e400fdf19a47e88010c71d215885234986d122410e" + }, + "verify/traces/output-ref-turn2.jsonl.gz": { + "mode": 420, + "sha256": "7af583350545501414eda38439f2d0fa39149342d9001d2926e2a4e4fdd5cdca" + }, + "verify/traces/output-zuul-and-ref.jsonl.gz": { + "mode": 420, + "sha256": "d581cb50f07766911fa59fa1df1524b33a9df6eec06226966efd5f54f09b6fb5" + }, + "verify/traces/recap-b1-compare.jsonl.gz": { + "mode": 420, + "sha256": "0ce1c92028a8cd10a38d7cca72f90c37ccbd844f24a1950bf0eb6e75739b44e2" + }, + "verify/traces/recap-b3-compare.jsonl": { + "mode": 420, + "sha256": "6ed3bcd99b4657d614bf63cc0fc2dfff650f4cb14e51086ea98c21bccbcf5fa8" + }, + "verify/traces/recap-golden-trace.jsonl.gz": { + "mode": 420, + "sha256": "d62431e9461ffb1b66adc16a39542b86fa8e0cf54a0ed446a8781c4d75a6c3bb" + }, + "verify/traces/recap-misc-compare.jsonl": { + "mode": 420, + "sha256": "d7c4446d45a9cab2af3da4a0d76f7a42c245da1f59db96fddf31d8b1f2c436ed" + }, + "verify/traces/tailrng-drawsites.jsonl.gz": { + "mode": 420, + "sha256": "5c1806e2b1452226674013119e3b220f3cf42be2ad8b0ed998050ad65d1f8415" + }, + "verify/traces/tailrng-refturn2.jsonl.gz": { + "mode": 420, + "sha256": "c33c6cafe015bda6acf5ca32b0c9595e1611f4ac82ecd3adaff8315c7bd3e560" + }, + "verify/traces/tailrng-zuul-long.jsonl.gz": { + "mode": 420, + "sha256": "213e7dd8a6809dd93190f41c87218e802f1fbe77d44d598f287c2a19544063af" + }, + "verify/traces/tailrng-zuul-noderoute.jsonl.gz": { + "mode": 420, + "sha256": "9476ee3b9b397ca9e20bc92eb887c109a075487cdd750746af051797e8838115" + }, + "verify/traces/unlock-b3-t1-5.jsonl.gz": { + "mode": 420, + "sha256": "f6e27a60bf6c74eb98d8bec50146fe1996642285ca008c6a70c3cb148c6ba54c" + }, + "verify/traces/unlock-b3-t1.jsonl.gz": { + "mode": 420, + "sha256": "bfa53bba3e59d17dd330e38ef52fd04fd92f05f3ad357fefd77388d083b49a05" + }, + "verify/traces/unlock-b3-zuul.jsonl.gz": { + "mode": 420, + "sha256": "d94c635105a75a68cb811a3881faf371678c075d240998f48fcf348b8459063f" + } + }, + "manifest_sha256": "e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9", + "path": "/tmp/opencode/sots-final-research-re" + } + }, + "source_before": { + "engine": { + "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", + "files": { + ".gitignore": { + "mode": 420, + "sha256": "5103c9533f0d31fea29c0cc85d543692af84a697416dfa7557e31c9843210145" + }, + "AGENTS.md": { + "mode": 420, + "sha256": "7d1d4bc05c35e3354a77b3c8d5d2c04fb9d6658d09e87bc814a50bc3d2033fb7" + }, + "CLAUDE.md": { + "mode": 420, + "sha256": "15d60c3d592302a2854df8bf6d39c0a578c22b9273a633447e10b76fd76291f5" + }, + "CMakeLists.txt": { + "mode": 420, + "sha256": "6e9791511ea23bf8bf5f7f58617a7e77bbe5006829609e425e565c11c1e8d7ed" + }, + "CMakePresets.json": { + "mode": 420, + "sha256": "fcd1dfe3989ee4f56fa3e419059e1db5621922165edf05f13cfe8e5d786d8bb0" + }, + "CONTRIBUTING.md": { + "mode": 420, + "sha256": "26a381fe08feb51f861655f77de4e558f056d1dba79162a2e82513a92d0e6506" + }, + "LICENSE": { + "mode": 420, + "sha256": "eedebad43ea495111bf4451d78cb440309d90a733d6a36445699dde0629f1858" + }, + "README.md": { + "mode": 420, + "sha256": "66c2437fe4f074e6499de50b0d5f0d013bc290333f4d4bf554b541261885a0c1" + }, + "cmake/toolchain-mingw-i686.cmake": { + "mode": 420, + "sha256": "231c0b79868a77d54cc6619f0b4ea18454964a1a078806f44a6ffe3fb7741a9b" + }, + "docs/A2-alliance-and-modcount.md": { + "mode": 420, + "sha256": "0c0c45c31d5d64124f3b91a161f8a2f4732c8a5d7f6bc524baf4d59f8a191701" + }, + "docs/AC-predictions.md": { + "mode": 420, + "sha256": "ab9e41714abdbc32e620d8a2068be8ebd2fc8898ba149113c66ccda248b4bcda" + }, + "docs/B1.md": { + "mode": 420, + "sha256": "42b61bbfc135cdcd0f1a32f63164b88e67106400de7f08f543f118eccd814364" + }, + "docs/B2.md": { + "mode": 420, + "sha256": "87dfd333ee15681a3aa4de58cf1b14ff8240e75afabc05012e0f28531cb4b8b8" + }, + "docs/B3.md": { + "mode": 420, + "sha256": "fb65c41037b6cd6252c67e5244d492a3a17ea4ba2ddae821d49fe0a879528518" + }, + "docs/B4.md": { + "mode": 420, + "sha256": "22547b3d2960684e52a380fb07f43a75bf50aebf93cede689f297cf38f4a012d" + }, + "docs/B6-ship-construction.md": { + "mode": 420, + "sha256": "9c5c4fd2059af965e317c9db5b7fbfc440397ddfcdc5bf7860115f6a8a0532ab" + }, + "docs/CB-capture.md": { + "mode": 420, + "sha256": "ce45a9082588051eda7438016dc66eb28bb4afda98b82cdc20102c4ca53529f0" + }, + "docs/CB-predictions.md": { + "mode": 420, + "sha256": "ba51538b018cbb403978f97ad45d4743937d49ba55c8f15d7af8f8e4aa441f0f" + }, + "docs/E-events.md": { + "mode": 420, + "sha256": "de98795aadb1617eab91815ebc34818bef8b52c36ba18b4521170065bfd2d201" + }, + "docs/EV-events.md": { + "mode": 420, + "sha256": "e7d9536cd23f5d800dc97f68167bb738088a16136004419f28de92d7fe1bcfb9" + }, + "docs/G-wire-schema.md": { + "mode": 420, + "sha256": "19db69ae359ddbd2a0509d02f1c616f939e0428480a8bb33c81f69145323a591" + }, + "docs/G3-civilian-growth.md": { + "mode": 420, + "sha256": "38ea3a8ddc3fdca258294d949c4cd2af1a930cdd9ba612d5e8fb48bc446bdf30" + }, + "docs/H-probes.md": { + "mode": 420, + "sha256": "f23e4d4cbc8c9a3000a0a58ed994dddd95466cee1ec45e961685e86dde4dc54f" + }, + "docs/L1-predictions.md": { + "mode": 420, + "sha256": "af97dbc9f15b9c2e6f223c89bac17826056fa4f3bced3c01513c1ad4d9ac1754" + }, + "docs/L2-predictions.md": { + "mode": 420, + "sha256": "18213ce5f3375d478f266de85c38c2b04ca2ae8ab4a2023780dca161fa14f460" + }, + "docs/L3-predictions.md": { + "mode": 420, + "sha256": "d1c9c0006079f47ef0d3371f4a2c2df2fe4f08ebdad0f8a12d1b0de35b15ae7e" + }, + "docs/L4-ai-orders.md": { + "mode": 420, + "sha256": "b04127c5158a882f252b2b6e8afb2d131f0de623cc0c62c86c612af803d75835" + }, + "docs/L4-predictions.md": { + "mode": 420, + "sha256": "6a194ae336920f13d8e4a44549cbe26be959beef81cffed88ef03b3cec563e44" + }, + "docs/L5-live-verification.md": { + "mode": 420, + "sha256": "4c1abe57c516b36f383390164a362f53294feda222c623283f1e6091d8ef0ec4" + }, + "docs/M-movefleet.md": { + "mode": 420, + "sha256": "718338edb8cbe8a449793b22889776a1783d1d0ade553c03973ea45d426eb426" + }, + "docs/M0.md": { + "mode": 420, + "sha256": "e121c380612a42727e3a973d8cf50f884d660bb4b43bc494258dc1c6b6f26705" + }, + "docs/M1.md": { + "mode": 420, + "sha256": "e0a36cf109d096748e55522eb8d7a261764cbf5ab5daf9342ba903d0f2bc6704" + }, + "docs/M2.md": { + "mode": 420, + "sha256": "25f9cad74eeee40afc2117333232384e1cf387b2b9132856650234c5ba593c61" + }, + "docs/N-output-term.md": { + "mode": 420, + "sha256": "3b8317e22714ef66b35efceee6fa0f7057c37f7c6e34d93cc5047cd1dd07ecde" + }, + "docs/P-events-wiring.md": { + "mode": 420, + "sha256": "72ee81b71b4c08ae451721c785dc5e01ed4ca43ff0fd474befca09dcc41599ba" + }, + "docs/PAR-predictions.md": { + "mode": 420, + "sha256": "16e8fbbac5001db0b10d766858c0ae2ea9619f37043a0883ee46da80d4dd4846" + }, + "docs/PL-players-residual.md": { + "mode": 420, + "sha256": "9bc29bc030ee8b0e00e496b91fe8fefac15179ce9fd01c0a11a7b5b5335356dc" + }, + "docs/R-recapture.md": { + "mode": 420, + "sha256": "73c62ab20c5eca5e87e1d18aefa60a2a2acd75cbc7510d31b27a2cd4ebcec38f" + }, + "docs/RB-predictions.md": { + "mode": 420, + "sha256": "c1016781505c10aa304d4710c5389918b744ab20cbd8cb54dce462c3dc28e4e7" + }, + "docs/S-standalone.md": { + "mode": 420, + "sha256": "8979b0a9fef33a55ca15bf3ef78064e72df332033354329ff2471ad6648e4a8e" + }, + "docs/SD-predictions.md": { + "mode": 420, + "sha256": "a76a568ccac7409e3cb3acef724dbe6b618d4ec30259bce33594098daff8b6a0" + }, + "docs/SV-script-objects.md": { + "mode": 420, + "sha256": "80ebd120fa9cf5e68ac4d33117966805b917d24bc339f7d82be972a280449409" + }, + "docs/T-turn-driver.md": { + "mode": 420, + "sha256": "a4096b8223cea87ce77cc64014c489d4625ed36fd3aec1358565ca5cf91d4e1e" + }, + "docs/U-unlock.md": { + "mode": 420, + "sha256": "5cbe3d8fb4bd30d029cb2db006a4dd3c6819885f55f434afb4bc8ae79b526901" + }, + "docs/V-eventlive.md": { + "mode": 420, + "sha256": "ebd08c000f42211e87958278f03d6891475cd8557658e1a42105cf5ed45a1aa1" + }, + "docs/W2-predictions.md": { + "mode": 420, + "sha256": "9972e27467cf0fe23a358818caf7edb979de25697d3aa4b97a2135ca79fe34f5" + }, + "docs/W2-watchpoints.md": { + "mode": 420, + "sha256": "f8634c5f977b2ca9b2e07df105cba09adacaeb6fb4cf046e41e5e1e42b83b107" + }, + "docs/W3-predictions.md": { + "mode": 420, + "sha256": "211cedc2d924bcf47cbb73166b408e9a27d795863ffc90aa2adbb85beeadffcf" + }, + "docs/W3-watchpoints.md": { + "mode": 420, + "sha256": "568e818e66d95f9079a1270c4d9b900c7eecfd5b5a3b4ba5a4aa0c843666f061" + }, + "docs/Y-standalone-rng-and-tail.md": { + "mode": 420, + "sha256": "49d926cc505d6ba07753748366e42ec32493a15c76bfaa45b2f66f52adc57f2b" + }, + "docs/Z-tail-rng.md": { + "mode": 420, + "sha256": "3ed2b40f728bcedd663c305cce13481bad1429af03fd5215ee3189161cfbd7f1" + }, + "docs/architecture.md": { + "mode": 420, + "sha256": "ba4732eb8a4c7054df5136a72d1774e4f1e919a517a1c74e975903fdd254422f" + }, + "docs/game-data.md": { + "mode": 420, + "sha256": "2124ea3d117b4ee6f48660d9711c1b4ef844a4ba37af7cea3766914d77bd6b23" + }, + "docs/game-design.md": { + "mode": 420, + "sha256": "5b40349ad446596b534567a5683cf9ea99709d9eff231890e0f6256c755f0272" + }, + "docs/game-effects.md": { + "mode": 420, + "sha256": "e1e0abc162602daaac255fe44b11c511adf45d4ef5fa188268411829b0817e5d" + }, + "docs/game-sim.md": { + "mode": 420, + "sha256": "d1e14770d252fd2f320a7baa1ad54c90d955cfc840f477d1700cfbbadcec730e" + }, + "docs/harness-audit.md": { + "mode": 420, + "sha256": "931d92cc744ec6ca3d961fbe7fe96dcab28060446058eb78be9835ebbce73ed0" + }, + "docs/mars-parse.md": { + "mode": 420, + "sha256": "d9fa3029ade4f9401c59fb88f4520a1ef3af9a9c6f2bb5d1a0ebfa1d5061d6dd" + }, + "docs/mars-rng.md": { + "mode": 420, + "sha256": "f2a01b88f105d07d0d0d514430e76da7632e5c8e4e3bbd6c99a25f1dc5daa89c" + }, + "docs/mars-stream.md": { + "mode": 420, + "sha256": "61a16c9b7c143b4bc2edee473cf1f8bd06c1a5144c120bc563e5ec6d770dd0e7" + }, + "docs/mars-text.md": { + "mode": 420, + "sha256": "2b6c7d2eecbb684160e7565d1d7224eb0d2f7e9a41f4d807095a182ea605dcf1" + }, + "docs/mars-vfs.md": { + "mode": 420, + "sha256": "1508c2a070d56f4fdabac3c2ef1fd08d3f93d7a3045d59158340ee22a6ff1b62" + }, + "docs/shim-trace.md": { + "mode": 420, + "sha256": "8a059c1ba761b366449c2db8ef248656da917050ed28855c6d812ecf91672fa5" + }, + "include/generated/sots_addresses.h": { + "mode": 420, + "sha256": "fc34ac4ee8cc7fea91c447b5715841dc6d3afe36f9aff04e88b6c29b5b64f448" + }, + "include/generated/sots_stream_schema.h": { + "mode": 420, + "sha256": "13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c" + }, + "opencode.json": { + "mode": 420, + "sha256": "9af560c2a49945e964beb689649c13775e2aaaf691af270a565d6c6826f76c15" + }, + "src/app/CMakeLists.txt": { + "mode": 420, + "sha256": "142999eded2ff494745ce550af76a8f8caf0269ad22d6d5650e7a79c19d22717" + }, + "src/app/alliance.cpp": { + "mode": 420, + "sha256": "37d6e57f7ce82a69a595cf474e7be7a544efef210f960e9cdfeab6168826bac9" + }, + "src/app/alliance.h": { + "mode": 420, + "sha256": "08fa8dc96286c7cb15a90a987fa22b17e195522e642ab8303b659ca58739eafd" + }, + "src/app/command_replay.cpp": { + "mode": 420, + "sha256": "739059930cd3a5f1d988522ff50c60d8657664a66c9fe19b019833f417b55824" + }, + "src/app/command_replay.h": { + "mode": 420, + "sha256": "956429a742554cada2124de49c6955e27b0e5d68db87dcc95b22c75ec7bd93c2" + }, + "src/app/construction_phase.cpp": { + "mode": 420, + "sha256": "025cd0ea1a7badd567f7f1cd59330b1e01149b5c5094575fbd438683658bb0df" + }, + "src/app/construction_phase.h": { + "mode": 420, + "sha256": "a4d39994096683a1144eb20282b205cf71e2045873cc15b53bdac214ab1e9a5e" + }, + "src/app/event_phase.cpp": { + "mode": 420, + "sha256": "80717fa7c7f108004d5250f12b6c994752a1a55d7f32c7d3ebf29f2869118c90" + }, + "src/app/event_phase.h": { + "mode": 420, + "sha256": "54077268fe4705270dc06bdc46a6fd9384fb5e0d36da19e55ea149b478d8cf34" + }, + "src/app/growth_phase.cpp": { + "mode": 420, + "sha256": "5924d2641fc98d902b56a3e6417d7a57d70c1564718951b098e7d14376ebc4e3" + }, + "src/app/growth_phase.h": { + "mode": 420, + "sha256": "8222ef811abff161c8f891a331a52e527de54fbf468949d1e0e188adc473ae3b" + }, + "src/app/main.cpp": { + "mode": 420, + "sha256": "adfd7dd177439bfd57509532bcf0f37779281ae9309daa93efe1ada3ef3f57a7" + }, + "src/app/observed_phase.cpp": { + "mode": 420, + "sha256": "31fb99678d60de6901b4bb1b251abe2421453264653cf5f7bd297a376c2b23f3" + }, + "src/app/observed_phase.h": { + "mode": 420, + "sha256": "f88fc22a5cb21a43e196d7fae09446126635d3284e6b398bca234f265234b693" + }, + "src/app/phase_catalog.cpp": { + "mode": 420, + "sha256": "e3da16e6d499b7836953251d940ce171792ada208156ca583277298f305fc316" + }, + "src/app/phase_catalog.h": { + "mode": 420, + "sha256": "da6fff506002079d8277358d0095981dc260449dc19677a533ef25ab709aed87" + }, + "src/app/report.cpp": { + "mode": 420, + "sha256": "da3feb6043f6e68cb9ea763f7242ac153a5944c59f448284faf34c64ad6b9228" + }, + "src/app/report.h": { + "mode": 420, + "sha256": "0495d164458ddb7187ce3105f82cee06cf9cf6c5b73ed8cb6e434e1d2e0f8481" + }, + "src/app/script_phase.cpp": { + "mode": 420, + "sha256": "61eeeeb7eac3145cee938ccfc564b231b6968ce7926fb9599c136134f0d5ea91" + }, + "src/app/script_phase.h": { + "mode": 420, + "sha256": "e52006ff939fa945870fafdc2412ba67e3d5e1cc2aa51c0ca0a884ce630aa1b7" + }, + "src/app/trade_raid.cpp": { + "mode": 420, + "sha256": "07d6bb904e655bb644ff6df2e417adb448487bb67acb62240ec5ecc978eabebf" + }, + "src/app/trade_raid.h": { + "mode": 420, + "sha256": "10e0b1460eb7810f1fcd61e67d47333373f06bdacf5a11372958a84a91084e52" + }, + "src/app/treaty.cpp": { + "mode": 420, + "sha256": "317463fc0e2a6ca7eaa4e2f096c3821655a4623de4085af44d951ed500837575" + }, + "src/app/treaty.h": { + "mode": 420, + "sha256": "836395a85868cbd6b7fda8f1d304128fd7cc6952aff37003e8e119a5ce0251f9" + }, + "src/app/turn.cpp": { + "mode": 420, + "sha256": "a626ddf80a340de50b70f09bf91c0180d255c533e65edce1532d807fcf5109b4" + }, + "src/app/turn.h": { + "mode": 420, + "sha256": "85c87aab5c5b5ad5a6a34cc9db710b1cf77dec1a7145ba1e0b5e17fff9a6a237" + }, + "src/app/turn_record.cpp": { + "mode": 420, + "sha256": "e1eb0b253e964ab4f8be1333f81e193ac64109544da384cbdf21858cbf931e4d" + }, + "src/app/turn_record.h": { + "mode": 420, + "sha256": "78d8d2948bd04bff5e7d2c55955b726f1cd7552a765e608e390209e03856f76d" + }, + "src/app/visibility_phase.cpp": { + "mode": 420, + "sha256": "34d9df699af3e57823ec8457c442408da854028f9b95db5820171caad0823131" + }, + "src/app/visibility_phase.h": { + "mode": 420, + "sha256": "60db50f5b98c5edafc86a33f982a7773acc291c1a18f9cf23323e53ebadcde27" + }, + "src/game/ai/CMakeLists.txt": { + "mode": 420, + "sha256": "f51509a2699f02ecab9faa1f75feaa38c299e6bbbe08bfbe5e8e86722037f6eb" + }, + "src/game/ai/agent.cpp": { + "mode": 420, + "sha256": "e1bbddc3deb797d62ae9c2b24bc811ec9379699992dd838694bd5eadc73feef7" + }, + "src/game/ai/agent.h": { + "mode": 420, + "sha256": "48aa26f32d52a3f8f4e37ed5c6986b1e87a8fe1e780d5314514eb5c75b8bc244" + }, + "src/game/ai/apply_order.cpp": { + "mode": 420, + "sha256": "122ffea1090382fd01bc505fd30c59557dfec2c9846609d00da6e80109da2253" + }, + "src/game/ai/apply_order.h": { + "mode": 420, + "sha256": "a3b7a1ca26243ba0fdd801b78978175db6f76e297a72876fa0a35e12f38e09b3" + }, + "src/game/ai/command_capture.cpp": { + "mode": 420, + "sha256": "cb9a1d37af9f66e78d368e03aeabec01e4d48f76aaa30348a51f4c70a915e4ec" + }, + "src/game/ai/command_capture.h": { + "mode": 420, + "sha256": "921599e5b2aa8b773db00134618efde687c7d9ba739abd787ec7666f4cfeb78f" + }, + "src/game/ai/orders.cpp": { + "mode": 420, + "sha256": "1b775eb1a030bc6e81e5b7702cbf8ad56288860276e8a0475da66f7367542640" + }, + "src/game/ai/orders.h": { + "mode": 420, + "sha256": "c2a3b8fe1a7c46a1c1104bc87be8696d9f0782cc304d27cb96d0ec6b182f12ae" + }, + "src/game/ai/tasks.cpp": { + "mode": 420, + "sha256": "b05878ccd94c375aac8723c8ea9499f77b98fb94acc5a75a15fa1948dbe83c76" + }, + "src/game/ai/tasks.h": { + "mode": 420, + "sha256": "b1de4f89c1679ccfdeaa8b852cb2ce407b71dcd1bffacf97df389a69f6ae3a5d" + }, + "src/game/ai/turn_order.cpp": { + "mode": 420, + "sha256": "858b12c51c4509e16a22a6c080d1c6b47bd23d2b8a11f84a48d34f24c4635f22" + }, + "src/game/ai/turn_order.h": { + "mode": 420, + "sha256": "3e76710928fc2df52fd8312abfb8f23a2ce162f8e0856f46672a4f46b5b4384f" + }, + "src/game/combat/CMakeLists.txt": { + "mode": 420, + "sha256": "4b3a05c45360e312d6c1d96c1f05a60437d19d2046257835e0d6c70ecc4ce115" + }, + "src/game/combat/retreat.cpp": { + "mode": 420, + "sha256": "eede86a4d25289dfc9132d5776b11114a109179e5aa10f2b985035e5b22d7a1f" + }, + "src/game/combat/retreat.h": { + "mode": 420, + "sha256": "5fc3e002a5f1944f29c74f862ff942b894e40e88afafd52358373ada36644d7d" + }, + "src/game/config/CMakeLists.txt": { + "mode": 420, + "sha256": "c746021654505c92be333cefb9df994431679d40d8d654b937feb950684830f7" + }, + "src/game/config/config_loader.cpp": { + "mode": 420, + "sha256": "d903ba06747e5b7d66400d03ee1f0a9896bf4268bb200dec0b5c8599dbd3d3a1" + }, + "src/game/config/config_loader.h": { + "mode": 420, + "sha256": "fda71dee1a4e2b896760e9ac344768e176ea4f0a08609c7d651033a1ee698085" + }, + "src/game/config/manifest_loader.cpp": { + "mode": 420, + "sha256": "dbe33dc5ae03db18f3b2c01b48cc1fced10f2cca599270c0a028321a7d7dd7c6" + }, + "src/game/config/manifest_loader.h": { + "mode": 420, + "sha256": "68e508b9e6d1222d980b22ae826b127693fdf0821b6539ed9e62a8ec031aa5b5" + }, + "src/game/config/msvc_sort.h": { + "mode": 420, + "sha256": "17fcb13bb49a634c80be38299617c6c16fd8addedfa88c53d67242c90b811716" + }, + "src/game/data/CMakeLists.txt": { + "mode": 420, + "sha256": "677ba0dd0ebb8176f4e7c41d5550f2ccedd56d49e7e4acb1eb0a7970e9e98a51" + }, + "src/game/data/block.cpp": { + "mode": 420, + "sha256": "f61312708c715ce525ed1a01e71f1446d31fc96ca1cc51f5bd863cac51702200" + }, + "src/game/data/block.h": { + "mode": 420, + "sha256": "f14155dfca5fd270ad6b4d462458aa8cd5c5edf5e19da4df492ee2907e99eccc" + }, + "src/game/data/catalog.cpp": { + "mode": 420, + "sha256": "7799ad3b31d43236cacbc51c3ab086265927f98b1346005a8adfed2796178ebc" + }, + "src/game/data/catalog.h": { + "mode": 420, + "sha256": "80223146bcdbf4808776f974df7e5f46b120a021979a22f50b5ce2d74ec16d6e" + }, + "src/game/data/common.cpp": { + "mode": 420, + "sha256": "e58ba046844be11c61f7f7e501829b48b4f16e7c0ab78f10fcf9189c133cf040" + }, + "src/game/data/common.h": { + "mode": 420, + "sha256": "d1ac8375c1be133a98a383e01598f393f194e1bd9790d1c1230bc6121a45a187" + }, + "src/game/data/fields.h": { + "mode": 420, + "sha256": "4209df368ad776b3c24350246acf47ad874fcbbe292fb16f9ca7dacaef2f08fb" + }, + "src/game/data/shipsection.cpp": { + "mode": 420, + "sha256": "82d5ba9be2a446e50934b0b9a03b16839bd3acd1a967d9441180a1baaa271264" + }, + "src/game/data/shipsection.h": { + "mode": 420, + "sha256": "bcf100f83691226c4993dd7866b67a0b48d9b4bc6841463fbf07f0f26bf9dca0" + }, + "src/game/data/strings.cpp": { + "mode": 420, + "sha256": "6d983d3a4cb4284215301409587136fb765a5e6a4c9f4b988e01d710c0815f59" + }, + "src/game/data/strings.h": { + "mode": 420, + "sha256": "fb292bd472ed68eb4a5e93484f3f92d8a0ae8661e6a61ca4b417ab889c508055" + }, + "src/game/data/techtree.cpp": { + "mode": 420, + "sha256": "2ac6e39faeef808c97375f3b8a3ee219fcab8cc09921f0ed8d82eef7374eb9ea" + }, + "src/game/data/techtree.h": { + "mode": 420, + "sha256": "504946c255405ab28d20d0ed6c095b3b63f0e6865afe0e8bb0707e607c363007" + }, + "src/game/data/turrets.cpp": { + "mode": 420, + "sha256": "ce7db50ef10825e168fee2bf57c4b6038dd1a356be7ada9ed6a4f6a4f31b07a4" + }, + "src/game/data/turrets.h": { + "mode": 420, + "sha256": "f01603ad32b0ffdf891c88cc54c39a725c6a436f8dda79ac23e7505e59853c64" + }, + "src/game/data/weapon.cpp": { + "mode": 420, + "sha256": "accb5aab2081babb26443cd257f292909e19440c40346e098144148922f5d3f6" + }, + "src/game/data/weapon.h": { + "mode": 420, + "sha256": "63aeb670ae7b8a1fd6daa35ed60ebe41a87f62a6ec2a12f44b13f9052c55b009" + }, + "src/game/design/CMakeLists.txt": { + "mode": 420, + "sha256": "42692f7917d99fb5b9e392c2d0f1d908b2bc5c61fc2e5687fddbd665dafe0bef" + }, + "src/game/design/defaults.cpp": { + "mode": 420, + "sha256": "8efa0b79646525375739a1acfe77e75d5ae6b669d1ecaa01f49f3f5183caf528" + }, + "src/game/design/defaults.h": { + "mode": 420, + "sha256": "20af056628f362a4d5ad7ba6277135697718197ec6844ae0ae85bf06d4cd818b" + }, + "src/game/design/design.cpp": { + "mode": 420, + "sha256": "e166281c52a6d92fed8810b38bd736cbd2a324f15d290a39a539d01ff35ead20" + }, + "src/game/design/design.h": { + "mode": 420, + "sha256": "7e936c78ca10c3a49470da67f1659cf4ee323d14d50b5b2c1ada08edfa8f6997" + }, + "src/game/design/hull.cpp": { + "mode": 420, + "sha256": "554b0ef6955ac230c7eca29ea2d94d60b5fbc91f34d9ff457091577c8602268a" + }, + "src/game/design/hull.h": { + "mode": 420, + "sha256": "997018e59c9d78ee1da7e7cb9561b94b76befacbe348a4ce3301c5f22b582461" + }, + "src/game/design/rules.cpp": { + "mode": 420, + "sha256": "a623984f9ab40c354320051fec00bab2c7e3728c2c90082b3b8051294b906319" + }, + "src/game/design/rules.h": { + "mode": 420, + "sha256": "70a8a42fe82e9805cbb957717688ab9f9eb3438226f6e0d696ef5f7a51529229" + }, + "src/game/design/stats.cpp": { + "mode": 420, + "sha256": "c05f420a00026289be8693c0d80bbd2354ce354a91a78459cfc8e70467326c54" + }, + "src/game/design/stats.h": { + "mode": 420, + "sha256": "ba0a5d3bcc98f5c3e64579d42da70bfdf563773ce2fe1e6bfa2b36b14c453fe5" + }, + "src/game/effects/CMakeLists.txt": { + "mode": 420, + "sha256": "2e20f138f98bc69653c8360a26f99f3f43f35beedea5e90dfd7e9721e7550f89" + }, + "src/game/effects/tech_effects.cpp": { + "mode": 420, + "sha256": "40358c2af37543ca3ab09b4d0433cdb4b0d2d212b45f648739cc86e979501604" + }, + "src/game/effects/tech_effects.h": { + "mode": 420, + "sha256": "ef70addf2caf1e3abf36ac9d878a8db37d2adbac370957f5b6a0b5825564a0d6" + }, + "src/game/effects/tech_id.cpp": { + "mode": 420, + "sha256": "11cd652e81a52e86d72541a5c3de77bb50de3d31226272e0d1856e5a15b7f9a6" + }, + "src/game/effects/tech_id.h": { + "mode": 420, + "sha256": "f37752250c80c9c75ef8e144e4646dc1290a2cc8ce72d9a37949c6408996df86" + }, + "src/game/events/CMakeLists.txt": { + "mode": 420, + "sha256": "9b1f14a3801a991ba065e0e39ae2e3fa3966018e8a98fcceeddeaca3909328e2" + }, + "src/game/events/event_log.cpp": { + "mode": 420, + "sha256": "3b131879ec5e81cd1ba2bb0cbdfa6e05775ed77684f4ed7a8f5cfae87da1e7b1" + }, + "src/game/events/event_log.h": { + "mode": 420, + "sha256": "2ff415b1120ca3f28421006a566280fb977027cfa3f209bdba0986350376a953" + }, + "src/game/events/research_events.cpp": { + "mode": 420, + "sha256": "9520b20eba2a2b4bd5925f13b420d526fc610d06aae7ffad314e3002c4f5a253" + }, + "src/game/events/research_events.h": { + "mode": 420, + "sha256": "b87340c6b14e9de97e5bc0c5a4cbd74e54bab2831c60edf88c0e42ff5218ea22" + }, + "src/game/nav/CMakeLists.txt": { + "mode": 420, + "sha256": "79cc0ba25c6d49f7784663ace033d01ab3d85a5d8015fe2f466f8f1a3065983a" + }, + "src/game/nav/pathplan.cpp": { + "mode": 420, + "sha256": "04cfe8fca5be565f5443c8f1402eb0072221dbd63f70855e35b3eeea752f1775" + }, + "src/game/nav/pathplan.h": { + "mode": 420, + "sha256": "28b51f737b458679888e555d985b9e8d41adf8ba91fa0980b5e83668758c86e7" + }, + "src/game/sim/CMakeLists.txt": { + "mode": 420, + "sha256": "4b3085116f88c903a137abef6806891f7b7245dcb031153df7a5465dd2521116" + }, + "src/game/sim/colony.cpp": { + "mode": 420, + "sha256": "e0f0bf15d87b6ac2e92053cbfe0869c0dbf9465d90a9bae5456bb46883423b77" + }, + "src/game/sim/colony.h": { + "mode": 420, + "sha256": "357dce21440140a6cf836a3c12175ebb5bb6706c37d5ecd315a4ee4937725b47" + }, + "src/game/sim/construction.cpp": { + "mode": 420, + "sha256": "8cf4792f487162ca3599f16f0e92d73b4c9549046044548c5aecf202dd564130" + }, + "src/game/sim/construction.h": { + "mode": 420, + "sha256": "a7f201101ad704f1994f809259ad60f780760fa36174d99a1ccd9299447f5460" + }, + "src/game/sim/economy.cpp": { + "mode": 420, + "sha256": "1e0b17b589496a6139e8ca10fe20553050be7c965a02daf8b520dd5020412d89" + }, + "src/game/sim/economy.h": { + "mode": 420, + "sha256": "6f3e33e803bb49367d4cee3c8ef6186f04b79e7cf901047fc48d933108ab6d2a" + }, + "src/game/sim/movement.cpp": { + "mode": 420, + "sha256": "80c64b2148304b84683cf3860ced1354f5c29c923bbc50cc5001030dd85c2cd2" + }, + "src/game/sim/movement.h": { + "mode": 420, + "sha256": "9a6b2b4960428634d8004cd5694ed6a7a10ab28fd9c0e2a9824ede3e201e9441" + }, + "src/game/sim/numeric.h": { + "mode": 420, + "sha256": "88f715192ea322ace4eea13ab5ae55f7f41600262025208e468b5259220522c2" + }, + "src/game/sim/observed.cpp": { + "mode": 420, + "sha256": "43d29a9fe1195dcc0b7e6101ea05bfd076f03636f9f68de473539c83db0ddd22" + }, + "src/game/sim/observed.h": { + "mode": 420, + "sha256": "0224b5bf341f30ff0e98d910547261b6732bdc0c5339b520e26fc51939c1269f" + }, + "src/game/sim/player_turn.cpp": { + "mode": 420, + "sha256": "beb1b2ed434df3727e676ac56e751beff87fa98e4a42e4657cc54d41025773a2" + }, + "src/game/sim/player_turn.h": { + "mode": 420, + "sha256": "f24f8f5e161486575cd341c2f5bfed46fa6983263edcf2320e9c24860b4be51a" + }, + "src/game/sim/research.cpp": { + "mode": 420, + "sha256": "95f2d325544ee018ec8d0f945e91b4172f6ba406f95e19f86c4fb9aac6b22a89" + }, + "src/game/sim/research.h": { + "mode": 420, + "sha256": "e27a311e977afb2e01242938dc8d928e9a67d1f761965e191cf907e05c1c86e9" + }, + "src/game/sim/rng.h": { + "mode": 420, + "sha256": "f7e5bbced3dbd37deb49a00b52d05f7c751501d654dabd645ecff7447355929c" + }, + "src/game/sim/scriptobjects.cpp": { + "mode": 420, + "sha256": "a4f9a1b49e4ba22a88726efbbea2f355b40a3c006734d9150d509a344720a4d2" + }, + "src/game/sim/scriptobjects.h": { + "mode": 420, + "sha256": "210d0eb51780df70a9bca133664429589c03ea33e4524e2c182801d4b4a5c74b" + }, + "src/game/sim/species.h": { + "mode": 420, + "sha256": "83b44c0600b99c5acb72a3484bb0708cfba765cdf594aede596a3c47d5ee6298" + }, + "src/game/sim/techgraph.cpp": { + "mode": 420, + "sha256": "81f8f1120eb1fa4a77752bd2e0917df3dd76372461416526ae510bd697944ef8" + }, + "src/game/sim/techgraph.h": { + "mode": 420, + "sha256": "b2fc90666080a6b7f27dc9290eef17774d57742c2a1f9e1f77d94c7fa5689f6e" + }, + "src/game/sim/tuning.h": { + "mode": 420, + "sha256": "4acfad4098de951cc3a94ca25a2f200e96caba1836bf7441de5a2b458c022194" + }, + "src/game/sim/visibility.cpp": { + "mode": 420, + "sha256": "25f86a34f9a98d2439672283a446ba1804973dae3f6d9aa3692342b05f3a3ac0" + }, + "src/game/sim/visibility.h": { + "mode": 420, + "sha256": "783896489a2a9ec8bce617b141bfb631e8ef92f958be7b5c2ca64fd75774471f" + }, + "src/mars/parse/CMakeLists.txt": { + "mode": 420, + "sha256": "76c290b786a3e73387ec8c574fd5a0dbeb6e629adbe970426314f16497f59fa9" + }, + "src/mars/parse/blocks.cpp": { + "mode": 420, + "sha256": "e60baa8127b21cf6eb6c8e2aa02c6a72c6403dbc29e8480ff658bf184266675b" + }, + "src/mars/parse/blocks.h": { + "mode": 420, + "sha256": "1e8b76919a584d1d7fb01c5ff5e3a7173e8456eca892d61f0c6b7bb8f02f33b1" + }, + "src/mars/parse/effect.cpp": { + "mode": 420, + "sha256": "beb76a841a3d42dbc157413384ff1a0312a7068d6b22020eadcee2e1cbbc81f9" + }, + "src/mars/parse/effect.h": { + "mode": 420, + "sha256": "aaa5c83f2d8eef24667bf05d0f71b2a346f2fce09dc9a45d7a5197c894922e44" + }, + "src/mars/parse/result.h": { + "mode": 420, + "sha256": "58cff456e353550abcd0f52e031d9d70f2b7a975f4762cfccc64eb6bc748dbd9" + }, + "src/mars/parse/script.h": { + "mode": 420, + "sha256": "69a493268c47a08672694489a51c3ff0a7f9aa870e5ae5a93d47ba033cf21ad3" + }, + "src/mars/parse/value.cpp": { + "mode": 420, + "sha256": "712133e4d725649f5461e6a46bac6842b0751ac3fb7e1c468f826638ec58f623" + }, + "src/mars/parse/value.h": { + "mode": 420, + "sha256": "60d692648dab7e3e216c8d9e6ef212592ba1df1a98260b1b4599354742947b38" + }, + "src/mars/rng/CMakeLists.txt": { + "mode": 420, + "sha256": "dceb4bc0fb35c95a12ed9aa36380e79aa75641b15ecc06e4289d39824087e2dc" + }, + "src/mars/rng/mt19937.cpp": { + "mode": 420, + "sha256": "0c60775e9437b8eaad49f67a96001c81947c8d9e6d2472e28b2b490515bac95b" + }, + "src/mars/rng/mt19937.h": { + "mode": 420, + "sha256": "300836ab26fd1a4d913b395f08770bb2c248029ef1b80ecbf0c4d886adca2b8e" + }, + "src/mars/stream/CMakeLists.txt": { + "mode": 420, + "sha256": "95ffbb0c519e55b7423ab048a3019e295b7ef3a3e9506044ef2e68569df9601a" + }, + "src/mars/stream/archive.h": { + "mode": 420, + "sha256": "84d9ae2bb3d6f444b3933b3816cafd12caee8619d2219f19cd10d32cfad01d2e" + }, + "src/mars/stream/bytes.h": { + "mode": 420, + "sha256": "9f5869952c9d6b925db32995a417ba292a0c1a672fc3850400150afb8163b3f1" + }, + "src/mars/stream/dump.cpp": { + "mode": 420, + "sha256": "1b5bba86b2f85b1718276f8db557601320ab8a165d5fbfe93e51219cca5a1c16" + }, + "src/mars/stream/dump.h": { + "mode": 420, + "sha256": "a69af300ae7083fb0a5362edbe7eecd5273c8807884aff9fbedd7ae606c7fc4f" + }, + "src/mars/stream/gzip.cpp": { + "mode": 420, + "sha256": "20d71fd50bd637f78e7ebb5217bc6607ebc257535cc4720e640e4badb72f1644" + }, + "src/mars/stream/gzip.h": { + "mode": 420, + "sha256": "6bce52c615eb120999adb1a6f7f06baa813a033c28e02e6d79ce77f5b7a929c9" + }, + "src/mars/stream/node.h": { + "mode": 420, + "sha256": "eb43054c8592db107557979c7fc8612dc0646ba5d62f154b9b7f96a37ba2e860" + }, + "src/mars/stream/probe.h": { + "mode": 420, + "sha256": "6411d0976d1e785e8c32af6ecfe1a797c0a9aa02314e5e42fae3ed7b3449ae13" + }, + "src/mars/stream/reader.cpp": { + "mode": 420, + "sha256": "90f19cbcdb0fc50795895ea1eff09cd6c0ab3069095c49b276f3894e3d6bcbb3" + }, + "src/mars/stream/reader.h": { + "mode": 420, + "sha256": "900508d97be1cbe566d77f2c91755d3db387535cd9574e41704b6d940daa1ff4" + }, + "src/mars/stream/save.cpp": { + "mode": 420, + "sha256": "6db367b3ea570a4d0ee831160e3f44cef380f58de163b9d9205ca7449e51e049" + }, + "src/mars/stream/save.h": { + "mode": 420, + "sha256": "b3a411600d98b42e9014e1fc3cbc3eac5f32f4393e9f72036d3d840c802bb469" + }, + "src/mars/stream/savedump_main.cpp": { + "mode": 420, + "sha256": "8dc687f009d9f455e9bfa4019f03df72e058cebbb3e9ae5bcbb308285470208c" + }, + "src/mars/stream/schema.h": { + "mode": 420, + "sha256": "b1cd64bc43076a3e5893239bd2eb5c216e7293ee541322ef74fb106928183a05" + }, + "src/mars/stream/shapes.h": { + "mode": 420, + "sha256": "45ee379ff8100b6bc27427a2580d7aae19ff3d5d0aa27f682d156ae6a92d0a6d" + }, + "src/mars/stream/writer.cpp": { + "mode": 420, + "sha256": "54804b06266e34793f5294f9a96d2939d641915a0f60fc4e3b4170bfcea6e083" + }, + "src/mars/stream/writer.h": { + "mode": 420, + "sha256": "921cd44ea30e0b9944825b1d2caafc46edc8f2c23506c807050ed9208a397340" + }, + "src/mars/text/CMakeLists.txt": { + "mode": 420, + "sha256": "dccb93b37c21c9b3c3b35a50ca8de55c9f00df2a9e0a33b6c36d659a75455436" + }, + "src/mars/text/csv.cpp": { + "mode": 420, + "sha256": "b190e12b86a3f416a72c110caf9e0b2d98cdd33851d2fa48b55a8d7ea39279af" + }, + "src/mars/text/csv.h": { + "mode": 420, + "sha256": "3b7ec6d0884e95bfab869c253eddc30a802602bd1f230cc69461cb9cf3c17917" + }, + "src/mars/text/flat_kv.cpp": { + "mode": 420, + "sha256": "b98d3b7345489f0b149e56cd15436fd6199e4cf00d7ce3f8b8b31fcdecb90e47" + }, + "src/mars/text/flat_kv.h": { + "mode": 420, + "sha256": "d6765cd42cad46597b6e36e9d08baf6819f7796442293043d5ff686e2376d292" + }, + "src/mars/text/lines.h": { + "mode": 420, + "sha256": "b9a16ccf0dc7bbf36100e0b66c80bcb818590b161f820d3c67d55bccff1c2c65" + }, + "src/mars/text/manifest.cpp": { + "mode": 420, + "sha256": "4da1bb615902ec61883e561f5dd375d89442f7b9046fbc864f6308f27921087e" + }, + "src/mars/text/manifest.h": { + "mode": 420, + "sha256": "dd7351a7a6a144e97f3a3b6a25d22d1518a099e95deadb8965cedb201601e102" + }, + "src/mars/text/result.h": { + "mode": 420, + "sha256": "7f817033811dff6fcef1d5b76f88922cb0392afb4359549876cd017a14755606" + }, + "src/mars/text/value.cpp": { + "mode": 420, + "sha256": "94b433d78f3211e1a4dd9eb8a0a00b514cbeaf63a03e738146c56dbbfe221479" + }, + "src/mars/text/value.h": { + "mode": 420, + "sha256": "d3b5c70af2f339ad27b43c38353fc7a2da83388854b02000fa1b6d9a4e1dfc07" + }, + "src/mars/vfs/CMakeLists.txt": { + "mode": 420, + "sha256": "630d5d4707ef3c0f24a414815cc23158853fe9d5aef429d6619abc1c433b3786" + }, + "src/mars/vfs/path.cpp": { + "mode": 420, + "sha256": "e1f3bbab1f90b0132aec24d8c5997dafab69ec72f01f2dd2fa63c91f83ef7aeb" + }, + "src/mars/vfs/path.h": { + "mode": 420, + "sha256": "043091008f2cab7c88185de63e7aae63ad9b0e384109f5b6fd8c31666c4e2033" + }, + "src/mars/vfs/result.h": { + "mode": 420, + "sha256": "19115bf1c5b3bf01da078a49209230053043610b342b01cdaaed126e2d3ea748" + }, + "src/mars/vfs/vfs.cpp": { + "mode": 420, + "sha256": "ab8272cd14b4b55e7af13f5383d6106f0b1caabdde57e69c1d0fb5b434d31cba" + }, + "src/mars/vfs/vfs.h": { + "mode": 420, + "sha256": "2484231baa64ede6fc35eb0f49e1fd7a3373d5c559f016d5adfb9fc433619d90" + }, + "src/mars/vfs/zip_archive.cpp": { + "mode": 420, + "sha256": "d66e70300539bd42bcf193683df7c34d2b0b03146fd79f0a180385ead1559e87" + }, + "src/mars/vfs/zip_archive.h": { + "mode": 420, + "sha256": "0ffbd90f7919741e63e86e14d0f87d247bc2cd16d2db54771071553249ad935d" + }, + "src/shim/binkw32.def": { + "mode": 420, + "sha256": "fb500fd9f9ecbff44123b89fc24cec72e91fec4c4430ce12a69efc06b20de235" + }, + "src/shim/fpu_force.cpp": { + "mode": 420, + "sha256": "c4b4e41a7ef81139c652ba8164ed8bb0d809b42182f0d0f048b9a9e63bebe59d" + }, + "src/shim/fpu_force.h": { + "mode": 420, + "sha256": "75bac23bc45510961f6b10d21c47e72d8dc0d3971a3ab30b795cad1d25332c06" + }, + "src/shim/hooks/ai_orders.cpp": { + "mode": 420, + "sha256": "091ed885012fffa0e02b83c53e547483dfdeaf1094933726e0291fff0a99e434" + }, + "src/shim/hooks/ai_orders.h": { + "mode": 420, + "sha256": "6e775b3f946f2eaf10dc2e236a3f3c7b9311ed4e82cd4be1ca30e6c62d49d053" + }, + "src/shim/hooks/ai_rng.cpp": { + "mode": 420, + "sha256": "b8fec711cb620561c8f4854e72c3fb0d73013c9b1cd69fa63fc05dd3d2f60289" + }, + "src/shim/hooks/ai_rng.h": { + "mode": 420, + "sha256": "1306f4d3c8071121b06c75232efa5c50b155c1f8752fcae852ee8e5497ce7d08" + }, + "src/shim/hooks/ai_visit.cpp": { + "mode": 420, + "sha256": "cd69811074820810edb1ed3779ca08bd99fea620b162d80a0395d35e8db7fc31" + }, + "src/shim/hooks/ai_visit.h": { + "mode": 420, + "sha256": "8315b433319f680e80a154409124355ad24842e9a0cdef5c8aa6d12422971189" + }, + "src/shim/hooks/budget_inputs.cpp": { + "mode": 420, + "sha256": "fa50fb74a3874886cf8aeb4012b9fd9a5a43ce38ab3c543ee425002ca32fd46b" + }, + "src/shim/hooks/budget_inputs.h": { + "mode": 420, + "sha256": "56e2f95930ff420820a3464162fde74ac0a3ff2e1dc8b493729fed342e4a6548" + }, + "src/shim/hooks/colony_inputs.cpp": { + "mode": 420, + "sha256": "7aa9191ec6292d765fd06c99ff1f2ae2e09a65fb1f238dd2727f28bd465dd46e" + }, + "src/shim/hooks/colony_inputs.h": { + "mode": 420, + "sha256": "87ec765e14106631e3f6423450e6e01d5bb21060fa91f83c267db215ef4986d9" + }, + "src/shim/hooks/colony_turn.cpp": { + "mode": 420, + "sha256": "b82616c7b9b05e96e7f4c40d853c686884b517a5424413686d61799df9d45420" + }, + "src/shim/hooks/colony_turn.h": { + "mode": 420, + "sha256": "a9013cc2e92998ff56ac0c8cc36dc42033fbe3072ee88b86882a1dd4dd0357d6" + }, + "src/shim/hooks/compute_budget.cpp": { + "mode": 420, + "sha256": "76a24f0daf1f49cfabbed13753c65754e26bfcc4f672791b37e926f82b5c1906" + }, + "src/shim/hooks/compute_budget.h": { + "mode": 420, + "sha256": "f308717e44e12151cfb20a6a0cf11ff8e99ecc9c17ef04783198feed05a24caa" + }, + "src/shim/hooks/dictionaries.cpp": { + "mode": 420, + "sha256": "b60794256c07964eb89d5295ecb711b402112fe5f982a9215dc3a304d03a567b" + }, + "src/shim/hooks/dictionaries.h": { + "mode": 420, + "sha256": "ac68fd66eb343d40ee97d6bf29c8b54f5d469a9ef8862687ae15e6ad8bdafdc0" + }, + "src/shim/hooks/draw_sites.cpp": { + "mode": 420, + "sha256": "e7a1fa40262db2ed22b1dfa5ca1bd2588da07bfbab046f23afa8e86c03814d79" + }, + "src/shim/hooks/draw_sites.h": { + "mode": 420, + "sha256": "0021323e918d464223d03b969d0e6992a0efac23ba84a31af901cf2ac74e9b13" + }, + "src/shim/hooks/event_inputs.cpp": { + "mode": 420, + "sha256": "eeb9cc87ef5c39994b7f25d5ccfe220c4775b32a4b11471b0fc0fb81fca4362b" + }, + "src/shim/hooks/event_inputs.h": { + "mode": 420, + "sha256": "c0e74aed8756b3de8ebbe5ab3d70cfa6282403efefc2d795e8f0b1b4cd44d731" + }, + "src/shim/hooks/fleet_movement.cpp": { + "mode": 420, + "sha256": "f01ae7f64b1d545089b002b79c9986d2a39b97ad3995c88a8b71fa05eedb90f0" + }, + "src/shim/hooks/fleet_movement.h": { + "mode": 420, + "sha256": "dbbfe50afaedad63ec45881819aa5de3907cdb411ddf8d1d3e6a5f9a386dc8af" + }, + "src/shim/hooks/global_consts.cpp": { + "mode": 420, + "sha256": "87a51601e1a7d963bf841ca4e892aa79de789a050f5d783c7b5d8bbc2e96a9a1" + }, + "src/shim/hooks/global_consts.h": { + "mode": 420, + "sha256": "b6ac4265ec1f02f11c342536dbc9970c13761ea68aec0a5962d0f4cd6aa5d265" + }, + "src/shim/hooks/movement_inputs.cpp": { + "mode": 420, + "sha256": "0e23f86e4a8ed6c292aea8e45512931cdd06742f25c5e0d175bf0ed3b2217502" + }, + "src/shim/hooks/movement_inputs.h": { + "mode": 420, + "sha256": "32904786cbb122c3c8c36faf6bd9ea5ade4cd8395e74199ec08dbcdb8019b66a" + }, + "src/shim/hooks/player_turn.cpp": { + "mode": 420, + "sha256": "33bcadd7569ad13c69f5f160423c8d469bc67725ce7b944cf4b4346fb8cc7f23" + }, + "src/shim/hooks/player_turn.h": { + "mode": 420, + "sha256": "a766a0d93f3860da6f8d1e0dcf110d6754cd8dfe67d867093f32e3d24e8ff0e0" + }, + "src/shim/hooks/player_turn_inputs.cpp": { + "mode": 420, + "sha256": "993dce2ca771a36337c9561695995a0825746563d2e84b4458de650f3e456799" + }, + "src/shim/hooks/player_turn_inputs.h": { + "mode": 420, + "sha256": "ca0d7916ca17d993aaef19be48d03076220ae15cdcc622aef52a7c6b5957ca71" + }, + "src/shim/hooks/probe_entry.cpp": { + "mode": 420, + "sha256": "5faf9cf04a2cf849d2dd54ce4ad9b812120fb99741f11e9d52fed450badf0506" + }, + "src/shim/hooks/probe_entry.h": { + "mode": 420, + "sha256": "f04f445863a6164d03bc9f6edcaa2e2b0108163241510f4c1dfcb0da7667d89f" + }, + "src/shim/hooks/research.cpp": { + "mode": 420, + "sha256": "dacd16403f1dd5be2ef2cc42f16938977bdd0ee9283d0bca647a079ee3d28e83" + }, + "src/shim/hooks/research.h": { + "mode": 420, + "sha256": "a62c4847be81ed9d10c4f5b9a876bd79898040aa11aa8764149d82db4b010a84" + }, + "src/shim/hooks/rng_ledger.cpp": { + "mode": 420, + "sha256": "119d325fcda72268bdc87f7ca7af05d059d4521c4d7d40ad7426ce070865eabb" + }, + "src/shim/hooks/rng_ledger.h": { + "mode": 420, + "sha256": "0d1e9c79e7601da921253e860c55d9b69c21e03a1014c49f1dd85fd0e5f70f30" + }, + "src/shim/hooks/system_output.cpp": { + "mode": 420, + "sha256": "93bfb7e6ca381041d1e9830f82b8d774a63c12593fc426fd3e9198c9373be3b4" + }, + "src/shim/hooks/system_output.h": { + "mode": 420, + "sha256": "62a8424c70bb8e6c3d9603ce752f6b19a3920a4a78be75718869d7dac73f3738" + }, + "src/shim/hooks/tail_rng.cpp": { + "mode": 420, + "sha256": "9b2a3923d1d837399f3486650ef0e49b502837ff7df46a12df9a9e9b0d4d9d07" + }, + "src/shim/hooks/tail_rng.h": { + "mode": 420, + "sha256": "b9585605e71364872db25c608012e94db2148f22e2e6fd40d4b590a83f3be92b" + }, + "src/shim/hooks/tech_effect_fields.cpp": { + "mode": 420, + "sha256": "4c4d558aba3ac4e1b10e0944c867911e61daea0b4ade716760546846cebcb7b3" + }, + "src/shim/hooks/tech_effect_fields.h": { + "mode": 420, + "sha256": "22b2c050f73c9de011a42dc5a52d92a1bd3b24a59f3ba3b4332d832fb1853420" + }, + "src/shim/hooks/tech_effects.cpp": { + "mode": 420, + "sha256": "2a20f01a18ed30a466e2023ae023aeed8718c680cda927d2f3b463b6dbe35714" + }, + "src/shim/hooks/tech_effects.h": { + "mode": 420, + "sha256": "ffbc4e8262146cd7764f0b9758fff01ce5d359b25a0f5d8c931313f32d035320" + }, + "src/shim/hooks/watchpoints.cpp": { + "mode": 420, + "sha256": "15c94333f22bb592129efe3fb800ea89987045f9ebbc0e6791d4397961fd727d" + }, + "src/shim/hooks/watchpoints.h": { + "mode": 420, + "sha256": "639ae42b230fb31762f50cac0422dcd5b7fda7a1a02c7739a86d1cd6eda62277" + }, + "src/shim/main.cpp": { + "mode": 420, + "sha256": "eebdac7f8f69b8b95cd290c96d41c6f3f0ed5c45ccd5de54ffc790af47083b99" + }, + "src/shim/shim.cfg": { + "mode": 420, + "sha256": "44ca58394455549150c3461cc888128a968b4f062807e19ef25b8eebf0bfd523" + }, + "src/shim/shim.cfg.b4compare": { + "mode": 420, + "sha256": "68bed5883a75132eb5e885b4750d23c1d5734c843a32a56dc7f96d2b73fdf962" + }, + "src/shim/shim.cfg.b4scout": { + "mode": 420, + "sha256": "faac0765478d88b63f371fbc307512e71fe05f2e6f97272e6e0ceb267cc6d626" + }, + "src/shim/shim.cfg.b4trace": { + "mode": 420, + "sha256": "6a89cdd3cfdf53cfbaff29278fd5d0edf156ad8a525c61624b60ddb1eb0575a1" + }, + "src/shim/shim.cfg.bupin": { + "mode": 420, + "sha256": "39d52ef1ccb18d4dea261b87d3f363ba45079022d1b9bc3531c552ef6df80ec2" + }, + "src/shim/shim.cfg.cbcapture": { + "mode": 420, + "sha256": "0939b1ea144976ded2d45ad885fa0f1ffa3d77f16cba9b4d5a9cb87623500a62" + }, + "src/shim/shim.cfg.cboff": { + "mode": 420, + "sha256": "7d5d6e2ceb7f86fd17543c9212e8547be6009f725871aadbaf6057af1f4f5484" + }, + "src/shim/shim.cfg.cbpin": { + "mode": 420, + "sha256": "72a222c025796458dc1a538eed3ea55f053ee5e3c01e5b19b802922a058d4fbe" + }, + "src/shim/shim.cfg.cbtrap": { + "mode": 420, + "sha256": "938c0893b95b576b75927d75787999c22b3424d28c8936456ea3723f62775e51" + }, + "src/shim/shim.cfg.crcompare": { + "mode": 420, + "sha256": "129031ceb358fef9e0fcee2fb42a0f20fd76d9db78f061f956bf75ce2cc51dec" + }, + "src/shim/shim.cfg.croff": { + "mode": 420, + "sha256": "f99345e7db55e695ecabf7a00fc16ced9a42e8882abfeabc8281b9a4ef26d730" + }, + "src/shim/shim.cfg.crreplace0": { + "mode": 420, + "sha256": "60c13bd76e546b4521ab4e6a7836439078e2a176a11e471e03434623153cb7d9" + }, + "src/shim/shim.cfg.crreplace1": { + "mode": 420, + "sha256": "d27f43eb970d6a9c8a0c8d8f7071633a226c34b675a6581b331c6e1ba6f36c9b" + }, + "src/shim/shim.cfg.fpu007f": { + "mode": 420, + "sha256": "998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363" + }, + "src/shim/shim.cfg.fpu027f": { + "mode": 420, + "sha256": "f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd" + }, + "src/shim/shim.cfg.fpu127f": { + "mode": 420, + "sha256": "1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271" + }, + "src/shim/shim.cfg.fpu137f": { + "mode": 420, + "sha256": "8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9" + }, + "src/shim/shim.cfg.fpu1a7f": { + "mode": 420, + "sha256": "59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588" + }, + "src/shim/shim.cfg.fpuoff": { + "mode": 420, + "sha256": "ce637b3f0eca81c04490335cd9fe8a537cd09e5ef14cc5b3050f548ca4d54c65" + }, + "src/shim/shim.cfg.hoff": { + "mode": 420, + "sha256": "dc9b4619fe84921ea5896c2cd190afb5bd4ca89422fb86bfee8459665f92cd7a" + }, + "src/shim/shim.cfg.hp0": { + "mode": 420, + "sha256": "ede723fc540adb94bf16af0f3086c1935aac008acb6a8d550e2a4e97ff232c2c" + }, + "src/shim/shim.cfg.hp10": { + "mode": 420, + "sha256": "1c1f07dfdb7f99d63ed9a62aa9a447efda690623164beeaf434c588e02ef12cd" + }, + "src/shim/shim.cfg.hp11": { + "mode": 420, + "sha256": "36eae0d554a79b9536e3c57d2fef187ae81bd3266947c7f45035be554fb59404" + }, + "src/shim/shim.cfg.hp4": { + "mode": 420, + "sha256": "5bb0d636247c37def9b5cbf0cc9138b13590a50ae8212890fb7d31dfb9e837f4" + }, + "src/shim/shim.cfg.hp8": { + "mode": 420, + "sha256": "a8fe5f16a299b2b9eb81a811c7ec5a3b1baf635fa179a69f1e23243c7d1e2133" + }, + "src/shim/shim.cfg.hp9": { + "mode": 420, + "sha256": "765fdf337bb6942dbd1357166646dbf7fde3777678a606c4dbfd368078f09b5d" + }, + "src/shim/shim.cfg.hpall": { + "mode": 420, + "sha256": "630f99725ea6aa933984f4c545634d127787672de36f6756da2591e22a36f366" + }, + "src/shim/shim.cfg.hprobes": { + "mode": 420, + "sha256": "3bad5e3e7bf35a85acc7169d27531788e9659dbe0f8b1a0c719777fdb6beb5dc" + }, + "src/shim/shim.cfg.hprobes2": { + "mode": 420, + "sha256": "c335f1ec8aeff1165213cd40adcdcd59893c65edf95b1537fc4460e6060911c5" + }, + "src/shim/shim.cfg.l1control": { + "mode": 420, + "sha256": "c5dec81556268795b9a3df175bafde340a3fe76c7d6e05389e09e79d2b138b43" + }, + "src/shim/shim.cfg.l1hive": { + "mode": 420, + "sha256": "970ce465f2363f391a93086f1b596e904265510e02e7d2d38174cc6ea22d9b25" + }, + "src/shim/shim.cfg.l1off": { + "mode": 420, + "sha256": "a4197233c65acb876328666cf37754aea96f942b6ea08105bdfb61d6d5bcbd64" + }, + "src/shim/shim.cfg.l1seed": { + "mode": 420, + "sha256": "360af979eaa0c13eaa4db38ff13dcc64b3e2ab538300c26497921301fd3817b9" + }, + "src/shim/shim.cfg.l1snlv": { + "mode": 420, + "sha256": "3603508983a87906ecce02e4c2e9581cf2fa59390af25335f0b221765c57ef6d" + }, + "src/shim/shim.cfg.l3cont": { + "mode": 420, + "sha256": "629530a34412ebf85fc8ce8d2e5931684eea9891b6b619419e6f8db8c37f0976" + }, + "src/shim/shim.cfg.l3control": { + "mode": 420, + "sha256": "42b6ec7ebc9c83dae4a58884803f627d54956eb308611ce1e8d3691a12a74ccb" + }, + "src/shim/shim.cfg.l3probe": { + "mode": 420, + "sha256": "692dabb6f00343bfcc2f86d62ade827c295acc4630a18a1f2ddcebd53640978d" + }, + "src/shim/shim.cfg.l4control": { + "mode": 420, + "sha256": "ab13b7e3604ee98e9372e3405e0eacb6d5965e02d5317cfee0ea9b9afbd750e3" + }, + "src/shim/shim.cfg.l4dump": { + "mode": 420, + "sha256": "fb40d67d8d7dca4587a1dc13a95826ab68eb3fcf44feb6006388935f3ee346f2" + }, + "src/shim/shim.cfg.l4off": { + "mode": 420, + "sha256": "629a3e41d11daa53325f31aeb77d14d5abe67058e274d36ed8feb71e2e30dc13" + }, + "src/shim/shim.cfg.l4probes": { + "mode": 420, + "sha256": "a446ff3d6117d5352ad9b3c3c02f6d6300ce0b1089f055925afe19b77f0a20f3" + }, + "src/shim/shim.cfg.l4research": { + "mode": 420, + "sha256": "ad400f7082680db82c6fb0d39eed488710e6661f9e3215b9ea2eb0ba53444b9b" + }, + "src/shim/shim.cfg.l5budget": { + "mode": 420, + "sha256": "74df0fa1bd14fec6e8028ba05c516f3a370ba389386e5a8459d594c2c7ad83ae" + }, + "src/shim/shim.cfg.l5control": { + "mode": 420, + "sha256": "3557f716dde348a98fda65a5bad54911fe6d52f75c2cf6a82cc5d4fc47a6e968" + }, + "src/shim/shim.cfg.output": { + "mode": 420, + "sha256": "a811cffac230a1d6c0f9c5adacb1b691ae289ec08de0da3726309a4e1213acb0" + }, + "src/shim/shim.cfg.parbr": { + "mode": 420, + "sha256": "ea8230b596e7baae0c127f5700391ec2c96d546daba8c70ce8b2800c83b096dd" + }, + "src/shim/shim.cfg.parctl": { + "mode": 420, + "sha256": "2d1190d032bb705030746197020c715f4ab8af551f944e9ec0abe136912ea60d" + }, + "src/shim/shim.cfg.parorders": { + "mode": 420, + "sha256": "2107be5ec950e69d01c43ab30919fbfe652823878f150111b158927bc41de8d6" + }, + "src/shim/shim.cfg.parpin": { + "mode": 420, + "sha256": "893f1f81cdef0a964145ebb1c4b1e2725af8868b14fed412d40e3cce71f824f4" + }, + "src/shim/shim.cfg.recapb1": { + "mode": 420, + "sha256": "688840567305218dada122b29284f6af44c3c63ca173db87406de159bb547c8f" + }, + "src/shim/shim.cfg.recapb3": { + "mode": 420, + "sha256": "2120646255bd70adf29ed2880daa6b11d0867b9cfc9f1c9644d63b92c263b69b" + }, + "src/shim/shim.cfg.recapmisc": { + "mode": 420, + "sha256": "cb1f794c51b5d3d74eb91cc084c96a04444cd79f22fc694d821b51924544f595" + }, + "src/shim/shim.cfg.recaptrace": { + "mode": 420, + "sha256": "0ae410cc72fe155837d711c78543e14b1f5743310cd023298eb1e5bbd5457e71" + }, + "src/shim/shim.cfg.sdbr": { + "mode": 420, + "sha256": "7cb2bfd798ed1286628f3a879606eff076c4f6011d95e1223376eb4d0a392ca8" + }, + "src/shim/shim.cfg.sdoff": { + "mode": 420, + "sha256": "9195aeddeb2caa4e3db7dfd775c43e96eb99cfdc59a6a61e65d86fb325f0054a" + }, + "src/shim/shim.cfg.sdpin": { + "mode": 420, + "sha256": "61119f197b1dc8ddcad059d2d2c2753dae457b4bda4eb29e06c78282eeda6a0b" + }, + "src/shim/shim.cfg.sdpin2": { + "mode": 420, + "sha256": "d6d7f82b500df4f3ed120b4ff421178cf4373a145fa803e57d22a0654e4f0f63" + }, + "src/shim/shim.cfg.tturn": { + "mode": 420, + "sha256": "2ab2d64288043c3c55fde668facde9307c0739e0c801c900790e11db57c5759b" + }, + "src/shim/shim.cfg.tturncmp": { + "mode": 420, + "sha256": "114d325ae3ece29422069ee74c790603abb38c49162dd32520a3eecd18ab6061" + }, + "src/shim/shim.cfg.w2control": { + "mode": 420, + "sha256": "d042c0082a8eb4f55b8e21983df292f0950adc4ac5787d4a0b83088c10c5a3eb" + }, + "src/shim/shim.cfg.w2watch": { + "mode": 420, + "sha256": "ddb9c18a1c6b6c23758e51ca9ac18b4b95abe206b162497adc2978c0384d6ee5" + }, + "src/shim/shim.cfg.w3control": { + "mode": 420, + "sha256": "c6a3a5ea1e39a0714dffee0e44a0e8d91a2b450534d7e4377273a55b3e87de8c" + }, + "src/shim/shim.cfg.w3mod": { + "mode": 420, + "sha256": "7c7f82aaa8b5b007a740324373060ca2ba84edc765eb4e7ce55afcaba4e1c2e0" + }, + "src/shim/shim.cfg.w3tshn": { + "mode": 420, + "sha256": "51fa826d0b18d6f01987d6748e6610847ec3a761257ffc382a40d234670afec3" + }, + "src/shim/shim.cfg.zledger": { + "mode": 420, + "sha256": "31d0535aff9660eb1ad06f529c88a42aa71b83b36f8404b7541a29327c508a51" + }, + "src/shim/trace/emitter.cpp": { + "mode": 420, + "sha256": "4253cac49f0761e487fd555c3c01e02fa22e2010789ad3af37c62c8fd2e02030" + }, + "src/shim/trace/emitter.h": { + "mode": 420, + "sha256": "aa7804614b3d3a214d5c32c33ed245ae24276979080baa9d5481d6594ee3f79d" + }, + "src/shim/trace/hook.h": { + "mode": 420, + "sha256": "35be73ac1c9519664957ffea639d873e8a811b4620f0feecb21b54ea2776f800" + }, + "src/shim/trace/platform.h": { + "mode": 420, + "sha256": "f1b78d971798e45998b26c6b0e20db49fceb7d4c63f0c8c37452c6c2c6df9538" + }, + "src/shim/trace/selftest.cpp": { + "mode": 420, + "sha256": "31461ae6d329a8a3856589b245f3bcf8631f0db9a5e00530e4f94279950de354" + }, + "src/shim/trace/selftest.h": { + "mode": 420, + "sha256": "583d7a10ef04254c7a0fb7dd2a6071ad012a9a97dfae0896bbd598970b206475" + }, + "src/shim/trace/sha256.cpp": { + "mode": 420, + "sha256": "2faf44b5b273612c776204c1d83e0910d86394f4f6207129a01c81dedc170aa8" + }, + "src/shim/trace/sha256.h": { + "mode": 420, + "sha256": "31ce080acdc086ff7657d9093ac9bea438203eaa8e392ca38539152cdd15038f" + }, + "src/shim/trace/tracer.cpp": { + "mode": 420, + "sha256": "37d9490dbdedc399ecdb30f46eb27f31a4ff8c902eadb2eb48ecca7fb0e8fb88" + }, + "src/shim/trace/tracer.h": { + "mode": 420, + "sha256": "cbb80f167b8f98777f9fb58ce107226f42027ffdbd868a6808047c48caf10f76" + }, + "tests/addr_smoke.cpp": { + "mode": 420, + "sha256": "ace1ab9549bb6f3e0048d0e6e3ec6061035395581b2db46c0a5acb097c428890" + }, + "tests/app/CMakeLists.txt": { + "mode": 420, + "sha256": "dd18f8e25d2a9ce988dc226e03c7c6e02a275bbbea74f505d005e42ca5972037" + }, + "tests/app/test_alliance.cpp": { + "mode": 420, + "sha256": "671b2cb3295f360c61ee87005287999710d12e10e7e532331c1c946ab97f7c4d" + }, + "tests/app/test_catalog.cpp": { + "mode": 420, + "sha256": "c4cd9840c1f1b5d5a6829f7f1c5a0245b5e66135d3bed6410a2b6eca1a037225" + }, + "tests/app/test_command_replay.cpp": { + "mode": 420, + "sha256": "739ebeea5bed551f232774bc812bcb794cfa057015fd187529fa563b5d7ae5eb" + }, + "tests/app/test_event_phase.cpp": { + "mode": 420, + "sha256": "05498df256759fe5b8af80e9e56c2ca071eb26de0651f257798fe1641da627ca" + }, + "tests/app/test_trade_raid.cpp": { + "mode": 420, + "sha256": "2158008bc711b8062381f346fa347a430582d8d1943b0de5f40eb2a38e9a3f75" + }, + "tests/app/test_treaty.cpp": { + "mode": 420, + "sha256": "0f98150a3f9397fd12109eae7359ff7e04a4060e10e01ecf1693eb2a4606ead7" + }, + "tests/app/test_turn.cpp": { + "mode": 420, + "sha256": "6d45b1d2d065528f14ae83d95314f2b6559e53cc23f1b9e2531c7c09b4b97eab" + }, + "tests/app/test_turn_record.cpp": { + "mode": 420, + "sha256": "a845971b8d25d71c3b1138495354ad392e4fc298f87eb9b89d1567c01ab59cde" + }, + "tests/game_ai/CMakeLists.txt": { + "mode": 420, + "sha256": "a57a82d0c79ff933564e200a5b3137f120e70a19834264eeb2438c4cafd7ad3e" + }, + "tests/game_ai/test_agent.cpp": { + "mode": 420, + "sha256": "41cb3fbfc7e0b277771a2e8dd17601285a1e3a911543fc1335ce05a4e4b5f11c" + }, + "tests/game_ai/test_apply_order.cpp": { + "mode": 420, + "sha256": "8669c2e9a4c95b670a9c41262c68ce183d3cf3900bc262e0a2e33500bfffc594" + }, + "tests/game_ai/test_command_capture.cpp": { + "mode": 420, + "sha256": "8c2bae38754b347beeefe85d796c13bcf43cf5bc9bc99eb743626028b4dbd7ab" + }, + "tests/game_ai/test_live_blocks.cpp": { + "mode": 420, + "sha256": "44cb6bd8b34c13e329f9b1d50bb2a5c5513e52761537dccfb01afb7d48be7580" + }, + "tests/game_ai/test_orders.cpp": { + "mode": 420, + "sha256": "b13d1a3a628de411abb4faf024a1ce8d3e94518f12285bb3d7e7e86b012ad43f" + }, + "tests/game_ai/test_tasks.cpp": { + "mode": 420, + "sha256": "ffd8eed7fa76a24616d579a4e31031dadf43a0534e33743fb104dfca552367fc" + }, + "tests/game_ai/test_turn_order.cpp": { + "mode": 420, + "sha256": "382d6a30e9151c57849595cb134b8e2da25d2763738c9cbfa18d3cad51ecce97" + }, + "tests/game_combat/CMakeLists.txt": { + "mode": 420, + "sha256": "fd0c0dfb54033353b7014e3c764c916522cb529b6b3eae8a8d52afd044c13fe2" + }, + "tests/game_combat/test_retreat.cpp": { + "mode": 420, + "sha256": "3fb0be08d230bbd7c4ea4a59319de7ab252e5b7cbee924afd069847da8dcf73d" + }, + "tests/game_config/CMakeLists.txt": { + "mode": 420, + "sha256": "9874822d186e783f25b2dcd87495e7e380d873b8a0790c67fffb9430468094ed" + }, + "tests/game_config/manifest_tests.cpp": { + "mode": 420, + "sha256": "3bc62e7e49699254151a825421973d831b25bcf7a22028c789e3ca63b0d77319" + }, + "tests/game_config/replay_trace.cpp": { + "mode": 420, + "sha256": "83602ec974b8195c3616230ad44c2d4fd6032f8ef5f96e7aa76d49a0a04ac05e" + }, + "tests/game_config/unit_tests.cpp": { + "mode": 420, + "sha256": "45b07c7289abac61fccd0a6cd0ff87812542ec888eb6d295fb87c3f57755cc6a" + }, + "tests/game_data/CMakeLists.txt": { + "mode": 420, + "sha256": "cb8cffb7217e82077d3db749dcacf29c098549159cc0f312ef04bfccaa30155d" + }, + "tests/game_data/build_and_run.sh": { + "mode": 493, + "sha256": "69ea9cb94468c56c329fcc5b9350431067e97091ed47c08bb10b57b38412883a" + }, + "tests/game_data/dump_catalog.cpp": { + "mode": 420, + "sha256": "4588e699c69586dfb77f0d9289e375407d4f9cf019690e26bfc78f7182167c89" + }, + "tests/game_data/oracle/compare.py": { + "mode": 420, + "sha256": "2cfe1ac93790de3351256d284392372721f94de5375686e6301ef39b1943ad12" + }, + "tests/game_data/realdata_test.cpp": { + "mode": 420, + "sha256": "334a924bf81c6ce6192a6688435b374e115382358f7e4554aa164295bdd38321" + }, + "tests/game_data/test_catalog.cpp": { + "mode": 420, + "sha256": "9ea5c3fff2388c5d7fbf295123dfd7b702ef21f17fc7c45a970822814abfce2e" + }, + "tests/game_data/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/game_data/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/game_data/test_shipsection.cpp": { + "mode": 420, + "sha256": "b3519f0de60d061a6f1ab8ee81d470a28fc17cc81b113639ef2c1e139c249b4c" + }, + "tests/game_data/test_techtree.cpp": { + "mode": 420, + "sha256": "d05c889da9edb622bd2b66aa8e300d8162e0c8788950daa1086fc049b90dd4bc" + }, + "tests/game_data/test_turrets.cpp": { + "mode": 420, + "sha256": "66adff30b974e9bf2c96c1af024fb85677e1a8307c801933d23f3d2ec9d8222c" + }, + "tests/game_data/test_weapon.cpp": { + "mode": 420, + "sha256": "b16b0481c0a8697ff16e39c9feb3ad9d5406250b7dd1c828bf12f1bb40ed746b" + }, + "tests/game_design/CMakeLists.txt": { + "mode": 420, + "sha256": "a26524ff14878564870853bc067c379d2ebd26c14e45bcbb06593d300ee4b3ca" + }, + "tests/game_design/build_and_run.sh": { + "mode": 493, + "sha256": "b1aab4d13b09fb1ea4205978bd7d8b05af5a6422ebe4a34261c3247489b48bd7" + }, + "tests/game_design/dump_designs.cpp": { + "mode": 420, + "sha256": "b1b24c5cb534ad821a20325869713c04b742c541c448ade83543d75608f7eda2" + }, + "tests/game_design/json_min.h": { + "mode": 420, + "sha256": "9cfd3eabe9b36d6b2863872e08fe6ebaddf0749d1966dea693f8bbc0472780ac" + }, + "tests/game_design/mini_catalog.cpp": { + "mode": 420, + "sha256": "5817c0251883c999c6ebd54c77fdcf3981181b41fb5f7637d445824d60942810" + }, + "tests/game_design/mini_catalog.h": { + "mode": 420, + "sha256": "ecb7fd0dffa8709008bcdf9b9da3e70e68f735f9b5ecd0dcb4c871a35ae43b59" + }, + "tests/game_design/oracle/compare.py": { + "mode": 420, + "sha256": "2db14952f7fca9a587995e326651b0d549b39ceefd9c0ac59982cd35ae5d21e7" + }, + "tests/game_design/realdata_test.cpp": { + "mode": 420, + "sha256": "cea57cd53d881b3bf2557cc32ea402c4991aa6de5ff72340861f195a8e20c141" + }, + "tests/game_design/stock_designs.cpp": { + "mode": 420, + "sha256": "2ac1b8bcb0f61852f4bc0a8b7cda51167531ca2a05d1e485991a4758cf586d03" + }, + "tests/game_design/stock_designs.h": { + "mode": 420, + "sha256": "a49173bde083467f5650cfbfbaebba5f16208d660fe7f2f3da81c2caff07c807" + }, + "tests/game_design/test_banks.cpp": { + "mode": 420, + "sha256": "c1d34991c53523cb7610a569e861e8a312da1fe659de0522a3594fb14cad24a6" + }, + "tests/game_design/test_census_saves.cpp": { + "mode": 420, + "sha256": "814c17c7a14db7b123579b7636ee7f2b720fdf4a5cbbe90f676dc01709c45e3b" + }, + "tests/game_design/test_hull.cpp": { + "mode": 420, + "sha256": "cff70268d58ab95ed963d335904110ab55c79d6a0f660f613409cf6d5d63e2bd" + }, + "tests/game_design/test_json.cpp": { + "mode": 420, + "sha256": "e7fa196274a4591834a974f742ff59c7ed1fb15fb138091b48a071354d001c5d" + }, + "tests/game_design/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/game_design/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/game_design/test_stats.cpp": { + "mode": 420, + "sha256": "a3681df901095b848cc6b1ae63d04fd70eeeadd406e7d51f3c76671cbf523a7a" + }, + "tests/game_design/test_structure.cpp": { + "mode": 420, + "sha256": "d09f7707ee170f8a933c657628c1da4f61a29c7eb2dc687a96c3985bdac941aa" + }, + "tests/game_design/test_tech.cpp": { + "mode": 420, + "sha256": "689c081a324c7ece3f70d711f7ac67a5b93207f95e2800a3a708f2f8dbe31965" + }, + "tests/game_effects/CMakeLists.txt": { + "mode": 420, + "sha256": "c80413a7103ce0ed7944fb096ad22fc206a091645428a6015ec3d0e442414a0a" + }, + "tests/game_effects/build_and_run.sh": { + "mode": 493, + "sha256": "ab5085eeab0ec65d8f7ddd7d79357cd15183888b1b4e51cb563810d4e4c64506" + }, + "tests/game_effects/test_effects.cpp": { + "mode": 420, + "sha256": "b10d804b1ad4fb140e13cc1984c6372dbbfdd92560f37583f2411bbcb45c16d4" + }, + "tests/game_events/CMakeLists.txt": { + "mode": 420, + "sha256": "c962651d71ee7783d5565b418f653f2954e489cf698762c5686f5f2dbb4304db" + }, + "tests/game_events/build_and_run.sh": { + "mode": 493, + "sha256": "8b92d249138ee53f728583a0c68b153eaf4e2ad7f92d415d8b3a83df2fb3ec28" + }, + "tests/game_events/test_events.cpp": { + "mode": 420, + "sha256": "182941b9b809b20d24a2e29c5e4bbd626e6da8486e87dc38d1c6088161ec793b" + }, + "tests/game_nav/CMakeLists.txt": { + "mode": 420, + "sha256": "7ee85557a167281f4576252428b4e01795232f31dc1d93c23b284568074cec3b" + }, + "tests/game_nav/test_pathplan.cpp": { + "mode": 420, + "sha256": "6229cc2b1be1ffffb3fbb812c2ccc89dba7099d349be3a6f8f2c2e26aa1dd58d" + }, + "tests/game_sim/CMakeLists.txt": { + "mode": 420, + "sha256": "563547cdd93bce41ef29a73289e5104a5df61f71cc980e49ea37cdbe26743be7" + }, + "tests/game_sim/build_and_run.sh": { + "mode": 493, + "sha256": "a9c42a931242c7f266f512b4d4ad11f6f8ecf43a447a06a04f174301ee19328a" + }, + "tests/game_sim/check.h": { + "mode": 420, + "sha256": "faddddc37a528f0235f510b249cfc1776ce30aff709329954f09093b01231221" + }, + "tests/game_sim/mini_json.h": { + "mode": 420, + "sha256": "710218b637aaf1a5eb7c49eaa7d158bc3e495135ec14bf8b41384769d0227ba5" + }, + "tests/game_sim/smoke_real_save.cpp": { + "mode": 420, + "sha256": "2432e92ac18fadfb1152c54d9dec9a77b3dbf506ea122401cbbd48584b7c9190" + }, + "tests/game_sim/test_colony.cpp": { + "mode": 420, + "sha256": "45355673c46cbaef66b2c81d04a845cf65b6ddfd9819350c7338d9771fafb6fe" + }, + "tests/game_sim/test_construction.cpp": { + "mode": 420, + "sha256": "8df75076a3f460e949e34100d55acf60b054603da6d4aeda4f73297442c06e21" + }, + "tests/game_sim/test_economy.cpp": { + "mode": 420, + "sha256": "43fe658fd2347e3667a901afa642713d70c85ef0ec75094642da2d05b9ca471b" + }, + "tests/game_sim/test_movement.cpp": { + "mode": 420, + "sha256": "1927c371d52115458d88552014cef30bba60e9bef5eb3acfce11b2bc623e06a6" + }, + "tests/game_sim/test_observed.cpp": { + "mode": 420, + "sha256": "1f6ad16c1a2c80f0621573b5196989b0349e47351585d83835be5e27f6ef3fe4" + }, + "tests/game_sim/test_player_turn.cpp": { + "mode": 420, + "sha256": "13f76eaa6cad265deec25416acf0cae2028d6cd1c7b9585df6e9252ba3f0cbed" + }, + "tests/game_sim/test_research.cpp": { + "mode": 420, + "sha256": "3dc668eb889c41f58db6007a96f54fe2a6d56ee6501a298fba3afbbe9637baf6" + }, + "tests/game_sim/test_scriptobjects.cpp": { + "mode": 420, + "sha256": "dfe90a42bcd2844c2ea3666816f97c05237206bf44467ac29790c72b7b498582" + }, + "tests/game_sim/test_techgraph.cpp": { + "mode": 420, + "sha256": "0627ea1c8012b90b62285cae2f31599ba8a8cd47928452910ade91f93502d68e" + }, + "tests/game_sim/test_visibility.cpp": { + "mode": 420, + "sha256": "ad756975b6605a164f2f9106daf2511730642eff354a866bc764a93a4be1efe7" + }, + "tests/mars_parse/.gitignore": { + "mode": 420, + "sha256": "181314065df2f2fdaf920b1a8b5311daa216a2d6489a06ada5b49cc514d89417" + }, + "tests/mars_parse/CMakeLists.txt": { + "mode": 420, + "sha256": "898204fbc1cec44f697e2803c8bc4887857950ba2b1192dd153de74d26de0ea4" + }, + "tests/mars_parse/build_and_run.sh": { + "mode": 493, + "sha256": "550c6df5fffbd85cfffc3312a03a5fa9d59c1e0416e883ddc2576cdb73eac6de" + }, + "tests/mars_parse/canon.cpp": { + "mode": 420, + "sha256": "63e2bcfb2820e7533aa3a287bcec6c318f7238006dce61ad35381562b979cd47" + }, + "tests/mars_parse/canon.h": { + "mode": 420, + "sha256": "c9a78b866d62c4e58643de2c4149572380a1392b411049c8fe74e37475d21d9e" + }, + "tests/mars_parse/oracle/dump.py": { + "mode": 420, + "sha256": "16e98089d5b532e35d6b88b3d50b4bb07e879c18512cf8d06cc5fd2aa9da1117" + }, + "tests/mars_parse/oracle_check.cpp": { + "mode": 420, + "sha256": "5eb81a0c2db8f96c6f8e51246ea9991642e5571dd94dd2e410e2fad632d47adb" + }, + "tests/mars_parse/test_blocks.cpp": { + "mode": 420, + "sha256": "f376a57891a83768ecc8b73ef5eb2333291c280760f7581ead53f7c2a71a4df5" + }, + "tests/mars_parse/test_effect.cpp": { + "mode": 420, + "sha256": "8bb14e7c718e772bfb4a22a7370f41080c49beabfa597ddd603be257bc310011" + }, + "tests/mars_parse/test_main.cpp": { + "mode": 420, + "sha256": "e808f3e2054894da5481d549d93cc837daff61c7b049691f6e2ee453cec53389" + }, + "tests/mars_parse/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/mars_parse/test_value.cpp": { + "mode": 420, + "sha256": "a8dbe3326e5339cdad8fed7dd678df92e8a8b675d0b854f4cea6517bf557069d" + }, + "tests/mars_stream/CMakeLists.txt": { + "mode": 420, + "sha256": "31c69840e6e2e566d2e0bbaf49ab3dec712d27e505d0810ddf0496ce3ff321e0" + }, + "tests/mars_stream/build_and_run.sh": { + "mode": 493, + "sha256": "3737e42960b66e788a11cdd7fa9917fe255b6a4f60280e9f620593bf688aab41" + }, + "tests/mars_stream/oracle/compare.py": { + "mode": 493, + "sha256": "f39dd70e4bbf1952cf99e3437fd1ed6252249f3455a2d3c73311f98d8ff4370e" + }, + "tests/mars_stream/test_domains.cpp": { + "mode": 420, + "sha256": "08394777f7bc4186883cd02058f17fda8f47c3ee47049892bd8762c28b5aa959" + }, + "tests/mars_stream/test_rng.cpp": { + "mode": 420, + "sha256": "55f77273d8af5880f976a24fb00dcd8042b31a7a33f15c9f4b62fdb85bba9d0a" + }, + "tests/mars_stream/test_save.cpp": { + "mode": 420, + "sha256": "50250bb4b4f2da05f9453c541f080e018b68731f24cbf93278d50ca93ddd8d63" + }, + "tests/mars_stream/test_stream.cpp": { + "mode": 420, + "sha256": "d0da9ac2287910527bdac875ab39e0147a9be2f5535f04b55460438f31be2537" + }, + "tests/mars_stream/test_wire_schema.cpp": { + "mode": 420, + "sha256": "1cfd259f554be8218cb182dd1facc07f6cd3dea52f0daf7303393e78c7c2eb97" + }, + "tests/mars_text/.gitignore": { + "mode": 420, + "sha256": "181314065df2f2fdaf920b1a8b5311daa216a2d6489a06ada5b49cc514d89417" + }, + "tests/mars_text/CMakeLists.txt": { + "mode": 420, + "sha256": "20f8e0cfa044fb4e6b1caca0ec8d6536e012c1c4ea4454fe990923f40a201752" + }, + "tests/mars_text/build_and_run.sh": { + "mode": 493, + "sha256": "59ae392080c01be0c7f5530ecb9ae4fbdcc02366242b27527c14b8efd5076d0c" + }, + "tests/mars_text/dump_json.cpp": { + "mode": 420, + "sha256": "e246384902c3adf4fa8f2a54e38c4912f6b58f168ebc9b1e158a719e2a52b1bc" + }, + "tests/mars_text/oracle/compare.py": { + "mode": 493, + "sha256": "46a796196a413aa28a0069086e45c96399f21308153b578f063801eb997b54ef" + }, + "tests/mars_text/oracle/dump.py": { + "mode": 493, + "sha256": "53fde94f6676a5504a247cf209e2a42d67e108cc9ea0b02f289562799ee7d880" + }, + "tests/mars_text/realdata_test.cpp": { + "mode": 420, + "sha256": "a399ad5cf91cf35f78809f5b9b5cac8b2eff344dbfbab07b8b27bf66058e1e3b" + }, + "tests/mars_text/unit_tests.cpp": { + "mode": 420, + "sha256": "cd1e9e4f6e0e503d4d9b0902bd2936513293490cdc680f94639ce93661ca09d7" + }, + "tests/mars_vfs/CMakeLists.txt": { + "mode": 420, + "sha256": "282015598e03430be0f47b779ce7087662415b3a59de14814cb3ba35c17af363" + }, + "tests/mars_vfs/build_and_run.sh": { + "mode": 493, + "sha256": "b6a8e7b0706d7416f548f071e742e600cab226663f7d4ad42299dbb76f631701" + }, + "tests/mars_vfs/make_fixture.py": { + "mode": 493, + "sha256": "57586249e57550869dd5adfbc4fdab173a59d2aee630ba69c20d562018d249f1" + }, + "tests/mars_vfs/realdata_test.cpp": { + "mode": 420, + "sha256": "c95248ae53d32bd5d8cf963ca3a39ea82e5ef08b76de736104b6aa34ec88c789" + }, + "tests/mars_vfs/test_main.cpp": { + "mode": 420, + "sha256": "cdb7bdf9b9356eb0b7f6cb0fab081cda2161b34af14ecf60cc44970e79d517c2" + }, + "tests/mars_vfs/test_main.h": { + "mode": 420, + "sha256": "fd63ecf0b56330ee41184fb166498887a8e0af48c7ca60a33ad3270aa5af51fc" + }, + "tests/mars_vfs/unit_tests.cpp": { + "mode": 420, + "sha256": "de8da00718799886fbbc5820e0f7d0e468a31ab0608361fb509b0c12932c9caf" + }, + "tests/mars_vfs/vfs_cat.cpp": { + "mode": 420, + "sha256": "4a443e779de264f5c0c68a631b1a353b1310a4e838d342527befd8ad1e2a25bd" + }, + "tests/mars_vfs/zip_builder.h": { + "mode": 420, + "sha256": "a0f3688e5a90b7e209497d66d0dcd30a0e1ac59a56ffcbed31b2a50967c1da3a" + }, + "tests/shim_budget/CMakeLists.txt": { + "mode": 420, + "sha256": "88a0f43e433c3a6879a7f6cccf8c84ba4559009614a3fe5adf6c558ea7a47245" + }, + "tests/shim_budget/unit_tests.cpp": { + "mode": 420, + "sha256": "654e96d0880232d3090223a0d9f92f428aeffa528fbd5eca89d6bfe348aefce0" + }, + "tests/shim_colony/CMakeLists.txt": { + "mode": 420, + "sha256": "d7b2674971b0eda32b2edd62244c32af81cea9e6d984a24ca6648edbaea80e06" + }, + "tests/shim_colony/unit_tests.cpp": { + "mode": 420, + "sha256": "4cc41308c10fa1e6aa047fb6c26e4c655b727884bce87b5a9e8e2f76db665474" + }, + "tests/shim_events/CMakeLists.txt": { + "mode": 420, + "sha256": "2b43190a2ce88cf7227250aa5a3b48e3006d24f0d6f5e9a5e48507c2733e4c45" + }, + "tests/shim_events/unit_tests.cpp": { + "mode": 420, + "sha256": "0dc151a4aecb24217cc38cb818bbe760b3da2b08a23ad734b3fa8506d25fe2b4" + }, + "tests/shim_movement/CMakeLists.txt": { + "mode": 420, + "sha256": "46ffe5a9815b189283e4d5ef67a0dcd159f60da7f9ca4a3577669035fefdc1f8" + }, + "tests/shim_movement/unit_tests.cpp": { + "mode": 420, + "sha256": "ee6ee983aa72f078a7ae398ca5f828aba14370c898ae4e56063697d28919ad69" + }, + "tests/shim_player_turn/CMakeLists.txt": { + "mode": 420, + "sha256": "f6affa205f857d4a45f8be05ae0426b6f9a2e8e127f5aeadbac2ed8a4c4daddc" + }, + "tests/shim_player_turn/unit_tests.cpp": { + "mode": 420, + "sha256": "0a528cdf64904dfd22c94ea911a15213701e7912921f04c1909799e6e6240450" + }, + "tests/shim_rng_ledger/CMakeLists.txt": { + "mode": 420, + "sha256": "b6a349f2611ec1f1de2013145a97f3da59cefec81dbc4d2f3e58af507e598bb4" + }, + "tests/shim_rng_ledger/unit_tests.cpp": { + "mode": 420, + "sha256": "d38d80dd907a3468036dbca2b017718b199ab4a0078eb5e5b019b913a9ef8d8c" + }, + "tests/shim_techfx/CMakeLists.txt": { + "mode": 420, + "sha256": "5eaf9a76df6b10258a8c1d2658b03d97377d48a778a1628ca94c9bd69fa7ba8a" + }, + "tests/shim_techfx/unit_tests.cpp": { + "mode": 420, + "sha256": "99a71a6d0ca1f53fc8ff0bc21e79acd64ba2cd9c9f990641e5970c866794595b" + }, + "tests/shim_trace/CMakeLists.txt": { + "mode": 420, + "sha256": "91bc736e198c5cef86ad2ad69ca77d93ab770e5faecf9e6d915f9263b9ce491b" + }, + "tests/shim_trace/check.h": { + "mode": 420, + "sha256": "f4b72b971886c64383880ba26484f9c908d21f5902dff0de0b42f276b00d8366" + }, + "tests/shim_trace/harness.h": { + "mode": 420, + "sha256": "d7eae563723843c1389b108fe2efb2e31b6c264d23567a370a09fb9b1d513697" + }, + "tests/shim_trace/oracle_emit.py": { + "mode": 420, + "sha256": "29ed06c602e9f0d6430bb3c81192b1946213a3f44b91107f7036f35f17b69f42" + }, + "tests/shim_trace/test_coverage.cpp": { + "mode": 420, + "sha256": "8ed5b6d755fe7e2bc98d525e97bc7817a5efb7ed5f0196d49d1c783de3a91bea" + }, + "tests/shim_trace/test_diff.cpp": { + "mode": 420, + "sha256": "afd8e5124cf6e1ad9c4f3e4c2beeb65d00002cf1d4cbaa2e876fea0817a7a347" + }, + "tests/shim_trace/test_emitter.cpp": { + "mode": 420, + "sha256": "a9255bbc055df36a01931e8a61dd1dbf16085f7713db7e7386f66b69ddb10762" + }, + "tests/shim_trace/test_hook.cpp": { + "mode": 420, + "sha256": "4dd67374e260ba2722219c2e44e6be76e583d0ad65844f34859cff49b66a30cc" + }, + "tests/shim_trace/test_sha256.cpp": { + "mode": 420, + "sha256": "b55aa15dc806e3e4a87ddf50657fa4e0af6a4e4e2205c4bd63d1ae066fe57428" + }, + "third_party/minhook/LICENSE.txt": { + "mode": 420, + "sha256": "d5c2224982b0b95a16b098a561335fa93f3eaf4d0aa964b7843edb986df78dc8" + }, + "third_party/minhook/VENDOR.txt": { + "mode": 420, + "sha256": "c79054234a5340f6199f8d9f47d6b3d88e8abd2120586cd78f081cfb81a6fabd" + }, + "third_party/minhook/include/MinHook.h": { + "mode": 420, + "sha256": "e34bbf7b855c842694f6e3dd78e2d280e99ed9732501e3dc1532a8626a8db8e5" + }, + "third_party/minhook/src/buffer.c": { + "mode": 420, + "sha256": "75a789eb718bd5ed2de039ccd330736a31d0a2d14e43d8e15e6cd2332432482d" + }, + "third_party/minhook/src/buffer.h": { + "mode": 420, + "sha256": "9769702bd625249e59a19ede05c84365fcc7707e1fa0e5df08df42227cee13e3" + }, + "third_party/minhook/src/hde/hde32.c": { + "mode": 420, + "sha256": "0ddbc3ab3e0b37e61691131289a151e34f508233ccf3f701752777e5d3f62d68" + }, + "third_party/minhook/src/hde/hde32.h": { + "mode": 420, + "sha256": "5132de5be8ac7a9d054420f5caef0fb01437faa892f03b3cdc77f795973bf15a" + }, + "third_party/minhook/src/hde/hde64.c": { + "mode": 420, + "sha256": "9bf19dd706d4bc255ebd1709f98fb44899df7a1f2412820d77295136e0620f1d" + }, + "third_party/minhook/src/hde/hde64.h": { + "mode": 420, + "sha256": "e99aa4997bda14b534c614c3d8cb78a72c4aca91a1212c8b03ec605d1d75e36e" + }, + "third_party/minhook/src/hde/pstdint.h": { + "mode": 420, + "sha256": "604d1cdf45c5a95bc9cf1bbf39ca05ef83013541101d34971c5cd7577e3d5247" + }, + "third_party/minhook/src/hde/table32.h": { + "mode": 420, + "sha256": "43bf687a9fff071b5f46070db4d36c846f8e069cdc57485ee897c499aacdde23" + }, + "third_party/minhook/src/hde/table64.h": { + "mode": 420, + "sha256": "b774446d2f110ce954fb0a710f4693c5562ddbd8d56fe84106f2ee80db8b50a2" + }, + "third_party/minhook/src/hook.c": { + "mode": 420, + "sha256": "3060d3c42f03a2f11324cbee95d853071757ed0fe4b1bc9eb5f0d8fc9e346a37" + }, + "third_party/minhook/src/trampoline.c": { + "mode": 420, + "sha256": "d837f8555681c3762468d712c43f2064ed31dee610e0b02965fd8aa54b88172f" + }, + "third_party/minhook/src/trampoline.h": { + "mode": 420, + "sha256": "27426751dde36cdd8346469e61cdcca47950b1056a69f21cc63f4b41743faf6a" + }, + "third_party/miniz/ChangeLog.md": { + "mode": 420, + "sha256": "ff3b6040f7cbd8c9779a0690e906c66408f7efe3cf88a25019323f0189025ec3" + }, + "third_party/miniz/LICENSE": { + "mode": 420, + "sha256": "0115478d567121238cf6cc1c0c361926cf07a49d9e4c9e66da97fac6a01646b3" + }, + "third_party/miniz/miniz.c": { + "mode": 420, + "sha256": "e2c1aeb66eef9191d8c3feb164db2def2335a61d039bf04ed849f6b042433b30" + }, + "third_party/miniz/miniz.h": { + "mode": 420, + "sha256": "b53b62ed122e559b8f679e3cb787a0b0035fe87a58f909da0e44931678f4e85f" + }, + "third_party/miniz/readme.md": { + "mode": 420, + "sha256": "b4ea367be28a36e5386f65118b73962bc659a67936d248be68b7a7c03b8d359b" + }, + "tools/build-shim.sh": { + "mode": 493, + "sha256": "1da3fdcc019dc6495c870a42b93cee9f21ff7f9623f033c2f50d9db9fd6a33e0" + }, + "tools/check_shim_configs.py": { + "mode": 420, + "sha256": "ef5e8f100c06d8c485a165ab668206af3e9aed3e1f6aa6ffec2592419fc2332f" + }, + "tools/clean_room_check.py": { + "mode": 420, + "sha256": "e15bc3ebfd29c6e2d8edfc32cc812858869b49ffa1404cafce14c4c24e0f4e24" + }, + "tools/clean_room_check.sh": { + "mode": 420, + "sha256": "6646eb6010be756113f7af39b9cfcb06e8580893fbd100a41993f87757ccfd6a" + }, + "tools/deploy.ps1": { + "mode": 420, + "sha256": "fe01f46bedc91d7b42ff98cb0e69633845094cc2802108d23d48eb70f32e3f27" + }, + "tools/sync-build.sh": { + "mode": 493, + "sha256": "ce418ace6c5edae8609849233bb5dfd24657f55141c8ef8507659608f12aee2d" + }, + "tools/undeploy.ps1": { + "mode": 420, + "sha256": "5730b6f95f161ba5a727dc0a34f26da7f1f697711495d6a9de9c289ecd747af0" + } + }, + "manifest_sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd", + "path": "/tmp/opencode/sots-final-research-engine" + }, + "re": { + "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", + "files": { + ".gitignore": { + "mode": 420, + "sha256": "ba56b745b84c6d15b7288df65f319831fed3cbf8edd1ab3a6476418f48fd95f8" + }, + "AGENTS.md": { + "mode": 420, + "sha256": "ac21cfb98c6cc2f666c7237967ee71315b4787557e936072548e4e6934a8d9fd" + }, + "CLAUDE.md": { + "mode": 420, + "sha256": "65cc9d5f028959a7d9b53c4828778b27217eb04f37f55b08e6aa3e40afb60a4a" + }, + "README.md": { + "mode": 420, + "sha256": "e318014a84d03e53983cdb1e5b0310f372b959f659b91abc9214faf530544afc" + }, + "campaign/DASHBOARD.md": { + "mode": 420, + "sha256": "c5f72f13d38ad96b5a30131b09c20300743d0d1e15357fd249eac9793759026d" + }, + "campaign/agents/analyst.md": { + "mode": 420, + "sha256": "895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952" + }, + "campaign/agents/implementer.md": { + "mode": 420, + "sha256": "eb5581051a92b3d2b9ddd947812b1c02ff6a0b5e7619e7674adc26701e9a3d91" + }, + "campaign/agents/lab.md": { + "mode": 420, + "sha256": "48f1765ebdcb2015e631ad91428f65735ff899e119134b652f70788ff2eae5b8" + }, + "campaign/agents/lead.md": { + "mode": 420, + "sha256": "8fcfe52be845ed98a172afb47ea888b19bb7bffa80f7b50ace58d2bb66924220" + }, + "campaign/agents/resolver.md": { + "mode": 420, + "sha256": "742c36dc8567669d462566d6121eed42fcff5bff34e8eff466e92249f7ca195f" + }, + "campaign/agents/verifier.md": { + "mode": 420, + "sha256": "e467fc644e4e37d631a7a4e35038d9d3d0498491f1d7811d61d99271ff345c6b" + }, + "campaign/backlog.md": { + "mode": 420, + "sha256": "ee123405f92be97d36d86420707d3d60c67cb4ad50165491bc6e12b8dacf3b6f" + }, + "campaign/board.md": { + "mode": 420, + "sha256": "1c256d6e39063609ba89745d2931ad5005223da89ddbe9fda2d782b88d5acdd2" + }, + "campaign/contract.schema.json": { + "mode": 420, + "sha256": "a2c76ec042ca097a57c3c05c1e519e392d498d387a31808c7d0f70482d43c201" + }, + "campaign/models.json": { + "mode": 420, + "sha256": "00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48" + }, + "campaign/open-questions.md": { + "mode": 420, + "sha256": "bafe95db6591d87a2bd7c67831c34a993afbfd61e9f75357625763dec25fe134" + }, + "findings/.keep.md": { + "mode": 420, + "sha256": "141ed928eaf10a2023dd2c0ff6ea68cf6ec423cfd28d5a359d9c5add730bf64c" + }, + "findings/00-strategy.md": { + "mode": 420, + "sha256": "3bc97827988c6eb4647713c5655271e156dfa466fad5685924010f3244fe6386" + }, + "findings/01-fingerprint.md": { + "mode": 420, + "sha256": "7cf0503c29f5beff852427c2c5bdf8e9d968386de777c47b6130771cac944cac" + }, + "findings/_template.md": { + "mode": 420, + "sha256": "b92d0ca7bfef4498a5f9e594453f15ab15e2c88c7582c4ed5df4c40e6871c3b1" + }, + "findings/control-flow/ai-visit-order-probe.md": { + "mode": 420, + "sha256": "e89f91a33139014ebdc22d79064ecfd06f9b4ffebb4bbc3da73734fc47534047" + }, + "findings/control-flow/alliance-mask-and-modcount.md": { + "mode": 420, + "sha256": "ec66c6b76d9e4c8bed385acf70e6a7d5da08e05eca72ac1e8e5cb307d87f2552" + }, + "findings/control-flow/combat-done-tail.md": { + "mode": 420, + "sha256": "799ace775f12ebe9a2737a711c8d0a6e617f0cefec70b93bf094e47cf81cc348" + }, + "findings/control-flow/combat-resolver.md": { + "mode": 420, + "sha256": "abf1a9329c1bd8a96c76481246a00b380e9a17fa8dc8900810218026e5fe1b9e" + }, + "findings/control-flow/combat-retreat-pipeline.md": { + "mode": 420, + "sha256": "6c40c8bdbdde672c9cd67248d740d88892ad2b93b30e27e9bebe0e96027cf136" + }, + "findings/control-flow/fleet-visit-order-mechanism.md": { + "mode": 420, + "sha256": "a2ea1a6ac9d383380e16910cff89dff0e9b23f1df66f47ef91dd266bd50b3a6d" + }, + "findings/control-flow/gate-indexed-rng-audit.md": { + "mode": 420, + "sha256": "5004b2480787eec7be66f40474648030fdaf7759087a4c4651091152d89351cd" + }, + "findings/control-flow/hive-creation-rng.md": { + "mode": 420, + "sha256": "5ff37d571c0380c798a137e0c6947a0c63109de489fd2100c99bfc6637fc272b" + }, + "findings/control-flow/indirect-edges.md": { + "mode": 420, + "sha256": "3dbf2acf7354f61de66348fe40965f3138dbc4bbff8cb0f06b2751e71ed06ee1" + }, + "findings/control-flow/inlined-draws.md": { + "mode": 420, + "sha256": "3b099718543d7fb112664699749602ff9d61de9aaebb561fc93f1f8b7a152134" + }, + "findings/control-flow/per-history-residue.md": { + "mode": 420, + "sha256": "739c7fc760583ca143036ce554e1eece640d1662fba4642e6f80fadd3dad13f9" + }, + "findings/control-flow/pinned-seed-rich-turn.md": { + "mode": 420, + "sha256": "7c62336767b7c69f513446543f37662ba2a0872e207b906279446bbe399d65b6" + }, + "findings/control-flow/raid-gate-multiplicity.md": { + "mode": 420, + "sha256": "6d7b7357be428ff79186478dc37063657ca4d8e2ad49fcdd92493753748a52f4" + }, + "findings/control-flow/raid-intercept-species-word.md": { + "mode": 420, + "sha256": "1da80eb14f0e3e5a0ce139f62976bb305e3e75a1e5e0631d8287f94eac093d8f" + }, + "findings/control-flow/raid-intercept-z-word.md": { + "mode": 420, + "sha256": "beb421953b70377c8c759f5cc936321faa6316be76d41020b41f26c99706acb3" + }, + "findings/control-flow/raid-target-pick-verdict.md": { + "mode": 420, + "sha256": "d0262a4187e35547b28d6be842e7c730aa3ee93565404b587a790706afabd694" + }, + "findings/control-flow/seed-exposure-forward-test.md": { + "mode": 420, + "sha256": "f108a07ce695b64c482af58db4caeb2607059a3357b62f04f7f36ce45c84ff4a" + }, + "findings/control-flow/standalone-generator-and-turn-record.md": { + "mode": 420, + "sha256": "e499f62534580f27c2a01395e08312ebc7df13bdd307342096f468212aec600b" + }, + "findings/control-flow/standalone-scaffold.md": { + "mode": 420, + "sha256": "0bf928260d5058815a2f09c4df8c08eb359430aeea941f872018de7cbca39105" + }, + "findings/control-flow/tail-probes.md": { + "mode": 420, + "sha256": "ae45e84a9c7f257170f7550301fc4e1a35d5210269bda8070469a5c921cce95e" + }, + "findings/control-flow/tail-rng-ledger.md": { + "mode": 420, + "sha256": "2db588423e7b7de7729e5319477c17fbcea5b7a9cb8ff00b01cfd72bfce25403" + }, + "findings/control-flow/trade-raid-rng-gate.md": { + "mode": 420, + "sha256": "85c7b27aa284988b07b5e67c8e48ef1725289f1a6956d88be2572577cc06e1bf" + }, + "findings/control-flow/turn-driver.md": { + "mode": 420, + "sha256": "3f4e92041a0842d211ea9ae1ae16a9fe400dacf9632209102a1f76acc6b30792" + }, + "findings/control-flow/turn-spine.md": { + "mode": 420, + "sha256": "e2a64f82e5dececb4ba56859d1e53a0f720e08472c79c39197beba7f6041811b" + }, + "findings/control-flow/w3-containers-status-handlers.md": { + "mode": 420, + "sha256": "fffbaa6e3701abbe57a54046416a102502afeaa29b14632f9506905c22bf3914" + }, + "findings/control-flow/watchpoints-modcount-status.md": { + "mode": 420, + "sha256": "0aec4c93ca7219e29827a5069a9829d5e58da2001e79a7316bce288d3e9a6c7d" + }, + "findings/objects/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "findings/objects/00-inventory.md": { + "mode": 420, + "sha256": "cada5fc81c42cb50878a26e43a58640153c600319e66d4c92a23d7c363ff5f14" + }, + "findings/objects/aiagent-block.md": { + "mode": 420, + "sha256": "55d646ab57e90477993d263399254a3b103024d89fff42491b7df5cf4ffc8037" + }, + "findings/objects/classes-game.txt": { + "mode": 420, + "sha256": "e0eceb77c56e05bc7863d3a07805d703fc0ecec489ef24fabe7c6161f2835199" + }, + "findings/objects/classes-mars.txt": { + "mode": 420, + "sha256": "b624f7bd82a5277462a39627140a85c7a7929fd292b62e45edb5c96fd53b6145" + }, + "findings/objects/ghidra-recon.md": { + "mode": 420, + "sha256": "ca4b043a73c1d5573aa0c83cd3942db731884910c90e7d8544c8a32c939e2fda" + }, + "findings/objects/rtti-raw.txt": { + "mode": 420, + "sha256": "39f6fdf8793f8202c19cfb87a75466b215254a13050ec37c0c496699298247ad" + }, + "findings/objects/save-editor-structs.md": { + "mode": 420, + "sha256": "835d4fbf154275542383ea499a527c044ec7d577486c2735b817bd32d6e0c853" + }, + "findings/objects/schema-gaps-resolved.md": { + "mode": 420, + "sha256": "9ddae36eb8e3ef909c4902d01200fc8a17335271e4e063939ae162a3eea5bb3a" + }, + "findings/objects/serializable-types.txt": { + "mode": 420, + "sha256": "59c2f3942f55eb3f6687758a4c447b1ed8902caa60b97d9619bb8228e27c6838" + }, + "findings/objects/serializer-struct-recovery.md": { + "mode": 420, + "sha256": "5b56d8e1a5047d602cea7a76227f30e17244057fe21fde3d4e2cc76e9f185416" + }, + "findings/objects/ship-design-catalogue.md": { + "mode": 420, + "sha256": "feded2191180e184d34d4992935dc117bff8d052e8a2c63ecc29fa7b2e6b561d" + }, + "findings/objects/struct-recovery.md": { + "mode": 420, + "sha256": "4e99ef972529101f5700b52845e263fb3789e0b82d8cdeca921f1595a24d92db" + }, + "findings/objects/svsctob-variants.md": { + "mode": 420, + "sha256": "89617cd2909f2242e9e1657fd4a8f5aafe5aa0c1e0e9bc8926fb67c1e830dd2d" + }, + "findings/objects/svsctob-writers.md": { + "mode": 420, + "sha256": "7a9b7f3bf4eae63cf522246227410b2e3ca789284b7c620f01550fadf479622c" + }, + "findings/objects/turncommands-block.md": { + "mode": 420, + "sha256": "8eca2b79838114e7ae46d34c6e75eaf3b04c0448d9896ed4219b118f09e83046" + }, + "findings/objects/wire-schema-channel.md": { + "mode": 420, + "sha256": "31f0fc4e1cc3c3e7ef938aa22ad65cfdec32be4f1ade476a7ebf32c3c6f07d6f" + }, + "findings/objects/wire-schema-closeout.md": { + "mode": 420, + "sha256": "bbae848b4f8d6d0f2a914268ac34e75b4cea483f52816916202f3bd3cd084255" + }, + "findings/objects/wire-schema-ratchet-debt.md": { + "mode": 420, + "sha256": "0d144181478a607f2474a7c8a1b71ca49c881ef6fd068b5e8859c3fa8129507a" + }, + "findings/resolutions/2026-09-08-ai-seed-per-process.md": { + "mode": 420, + "sha256": "0765bdaeade29122ab5e64493f3a7c339f1e4c4445192ed09ae3d229dd6ae943" + }, + "findings/resolutions/2026-09-09-fleet-id-order-residue.md": { + "mode": 420, + "sha256": "b3d63a11e8ebd55da4af15760d044607b6105216898a018f5ceebc94750817e8" + }, + "findings/resolutions/2026-09-09-seed-exposure-is-a-predicate.md": { + "mode": 420, + "sha256": "dd7ce18738a625b9008ef80783bd64fc3857852775ab3b784b9e5f4fd5ae7de1" + }, + "findings/resolutions/2026-09-09-tail-draws.md": { + "mode": 420, + "sha256": "ff86a332ea9f87bd6f42a0b64e837e6f6f5876423ae9403a903aa9bfe7c42678" + }, + "findings/subsystems/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "findings/subsystems/ai-client-seed-is-per-process.md": { + "mode": 420, + "sha256": "5e6de0418588ff28cee29cb9affd69c3183819318c314eeb0771bbe810e6b4ed" + }, + "findings/subsystems/ai-order-capture.md": { + "mode": 420, + "sha256": "6efebf9f00b375d2c7f29ddeb24ef7a04e3b02cac9027369b490157a196d08ce" + }, + "findings/subsystems/ai-order-emission.md": { + "mode": 420, + "sha256": "9e54a13a18387a4f93acc5c66dbf71d365c81f1a8e6d2aee31f7a89712894ace" + }, + "findings/subsystems/ai-stepping-and-passes.md": { + "mode": 420, + "sha256": "e7e2fc612457a4e77df362aea2928d20fa5a2456fe12a7fbafeaf3c9e01c1dc1" + }, + "findings/subsystems/ai-task-system.md": { + "mode": 420, + "sha256": "577f8fc41256ebdf9629f1e30df9aac7f51c1a84b55f60c2b59e4af4c55126b2" + }, + "findings/subsystems/ai-turn-logic.md": { + "mode": 420, + "sha256": "79e9b7c9592d583db7b9d9ce472804038a71febf7527bd69e31b3399caeb0770" + }, + "findings/subsystems/battle-load-profile.md": { + "mode": 420, + "sha256": "3cf8e28925ebbb162bca9c3be9e6b2599c82ab6aaf9a9d99ffd9c934bf773c77" + }, + "findings/subsystems/data-model.md": { + "mode": 420, + "sha256": "f01c9bfcf8ed9fbf9fdd30556308a1dbb1094896050cc8a5e4fbc1c6c61aff78" + }, + "findings/subsystems/data-parsers.md": { + "mode": 420, + "sha256": "6a428c14279ac2c589b4af932e762ef7e3ada1a878128527b8d88858c11fbc35" + }, + "findings/subsystems/determinism-oracle.md": { + "mode": 420, + "sha256": "4fe0abad0b1b825392cd47b792d06756742495f26ff40a6a433d8608b4680bcb" + }, + "findings/subsystems/eventlive-verification.md": { + "mode": 420, + "sha256": "8bfcc75e57ddf88ec8a4b8885f033be8ffd420965077ab284b1ebce535ecf1a0" + }, + "findings/subsystems/events.md": { + "mode": 420, + "sha256": "c5d6e168d6d48eabec0ae0a448f9c3ec8d0f751a67fc320bc1021ba10008a3bf" + }, + "findings/subsystems/formula-gaps.md": { + "mode": 420, + "sha256": "63ec96a27fac5381d33cdce3e549d230bd5b0230e4d8573f4f3d45bab7d47ffc" + }, + "findings/subsystems/fpu-precision-sensitivity.md": { + "mode": 420, + "sha256": "4cf84e2a1c3d0eaaf9b3a7f218ad663ffa6984389b2a25851249733ad708ff8f" + }, + "findings/subsystems/golden-trace-recapture.md": { + "mode": 420, + "sha256": "b244f939b87dd464d78d919675c0e6aa010b0ec7b4fc6e4178e26c2c8ebee738" + }, + "findings/subsystems/id-allocation.md": { + "mode": 420, + "sha256": "b04a14a5a7d4d1c6137c4f9072987eebc997421e550881dcc2c8e386187f5b90" + }, + "findings/subsystems/income-term.md": { + "mode": 420, + "sha256": "c40286635675a91ce779b887a0394e92f946844873a778015efb98c4a105b67e" + }, + "findings/subsystems/loader-prototypes.md": { + "mode": 420, + "sha256": "f1d09471d5e17c45413b86805f561329f5af24eadfb17c3c740686c39b167ed6" + }, + "findings/subsystems/money-chain-float-widths.md": { + "mode": 420, + "sha256": "99bded6f2d34a713bc175deb4ad5ab4559ce1cc90274b036c1818ad8257c2fef" + }, + "findings/subsystems/movefleet-position-rounding.md": { + "mode": 420, + "sha256": "12dbdc03658cb042b5927586769dc9c19fc2eb812f703e73bf26273f8b0d65a6" + }, + "findings/subsystems/multiplayer-combat.md": { + "mode": 420, + "sha256": "2f4957011b5c5875b8aa7f71531dd5dfe3fd8df4f2c67a7be2fb5999f090c02b" + }, + "findings/subsystems/multiplayer-gamespy.md": { + "mode": 420, + "sha256": "a878e97775d27e085e58b18eaf5a67aaa522456d1055ca142f0477e3d6152d47" + }, + "findings/subsystems/multiplayer-tier0-verified.md": { + "mode": 420, + "sha256": "942ce29cbe22d8f7de5af54f2017c0433c7b8e1a56c864868ec906ffcbb9059a" + }, + "findings/subsystems/nav-classifier-live.md": { + "mode": 420, + "sha256": "b8aacdea8072a99ba1192e235088b372180f094795baf164e8cb95bd2df9f3b0" + }, + "findings/subsystems/nvo-tshn-visible-owner.md": { + "mode": 420, + "sha256": "ef96bb61769c02affd7148cd95e70bf358cbe6263fbe9b47aba6cf4cfa8486ad" + }, + "findings/subsystems/observedtech-append.md": { + "mode": 420, + "sha256": "61efcf51bffe53b8a10a2cdb8123db3f8c55b6874db87418fc31737efedaa652" + }, + "findings/subsystems/output-term.md": { + "mode": 420, + "sha256": "9eb9ff58a1d4cf34d3138f5044788b6f87ff4c94fa871b2dedd6ff6667196533" + }, + "findings/subsystems/output-turn-path.md": { + "mode": 420, + "sha256": "4e199e5cc14802c1b14b37cff0c1359b43aca94dab833f9024c7825c4c512588" + }, + "findings/subsystems/path-solver.md": { + "mode": 420, + "sha256": "3e0e318d45e14f844831c4180e47011263f64067dacf3249742882186d65cf18" + }, + "findings/subsystems/players-residual.md": { + "mode": 420, + "sha256": "e2f56c7983856470d37cd0fba4834a0ccb34dcaddbaf9acaf5dcdc253c6b3507" + }, + "findings/subsystems/population-growth.md": { + "mode": 420, + "sha256": "c2ec2f062e1224045b761640549e7374336ac762bd61c686a0c1378ad829a993" + }, + "findings/subsystems/rcex-explained.md": { + "mode": 420, + "sha256": "df7c9de6f02c1bd38f69e3a5344ec663d97b1d6b738ff408dfdeb0e2f6175b32" + }, + "findings/subsystems/relabel-new-ids.md": { + "mode": 420, + "sha256": "562ffe347adc6432a7824bfa2b324b6b1812b4fcc18343f0732c0f3d9991be20" + }, + "findings/subsystems/research-replace.md": { + "mode": 420, + "sha256": "d0f692cf687a7fe6aab62fc5d7d076eb595e1c33fd84c6f1e437ed01025cab4b" + }, + "findings/subsystems/roll-parity.md": { + "mode": 420, + "sha256": "7d97d7e5eee7b9f135e32b6553bb94ca83fd05b1eca7d18c42e9d65cae4d95d1" + }, + "findings/subsystems/rung-b-rich-turn.md": { + "mode": 420, + "sha256": "44378c6a305a82b2d131270fa5d97fdcd8a7fd5c9760ecbad7715383eac2db68" + }, + "findings/subsystems/running-the-game.md": { + "mode": 420, + "sha256": "f6109f69c6b86e4cf01d0f2e1f8be9921ff632513bca5d9e44e7f6c34f1cd260" + }, + "findings/subsystems/setresearched-cascade.md": { + "mode": 420, + "sha256": "9c079de161a1d1387339b8e8081395c1356c1443a0c898942acfb6efb65a454f" + }, + "findings/subsystems/ship-construction.md": { + "mode": 420, + "sha256": "86f570b1872c8dfac3982d1d7335f4798ccbd1bfd73c91d481afba2734c41216" + }, + "findings/subsystems/ship-design-composer.md": { + "mode": 420, + "sha256": "639b276e9205aaf6c90d9c458a383cc073e89f401ef8f17f8ad5a8a0c5899fa8" + }, + "findings/subsystems/snlv-measured.md": { + "mode": 420, + "sha256": "785324d176be969e1809090acd6b7a48d27f4fa41472c0d9c6f568c0b3a1e539" + }, + "findings/subsystems/spy-detection-roll.md": { + "mode": 420, + "sha256": "214179f5091408ef01ce4b80565068cb9a0885d1c6a233cda476280b9bf29c0a" + }, + "findings/subsystems/spy-program-draws.md": { + "mode": 420, + "sha256": "0c61c2f9cc767ae679921bfc42ef9a207ec9a6e0dc88419a673a8e439f1abfc1" + }, + "findings/subsystems/strategic-turn-internals.md": { + "mode": 420, + "sha256": "3a5c17e025d4968db6030f8ef1daaa2b03ccd4def12d35cf3a0eabcb0b5cbb54" + }, + "findings/subsystems/strings-and-config.md": { + "mode": 420, + "sha256": "67aefda7792e329b7df3f6e8cf42c7bae7049867cdda0741e871b183bc528786" + }, + "findings/subsystems/system-visibility-prediction.md": { + "mode": 420, + "sha256": "b420526ca0410bd4578dd2ed29cd9a21ed3578d6345d9f853a883e0159c1f89c" + }, + "findings/subsystems/system-visibility-record.md": { + "mode": 420, + "sha256": "d2843e10c156a7c85d7dab40d00204475fc725dc9b93656f6cde941ceceb5f51" + }, + "findings/subsystems/t34-observed-designs.md": { + "mode": 420, + "sha256": "207641821a55f5671749b000d478afd9e427336e2d123a55ad2203f34dfaa796" + }, + "findings/subsystems/tech-effects.md": { + "mode": 420, + "sha256": "7423f1e2cb2a597738b244d58bdf467431ee5de725ac434b904676ddcbcfc609" + }, + "findings/subsystems/techid-name-map.md": { + "mode": 420, + "sha256": "cfd92a7885dad3775465fc0c5b40aeb1749499f90071b44855ab8e1746d5f752" + }, + "findings/subsystems/trade-and-spy-workload.md": { + "mode": 420, + "sha256": "147057456fa30b6218df19679abab1ac31b78276a4272d221b70776e154396ba" + }, + "findings/subsystems/treaty-turn-stamp.md": { + "mode": 420, + "sha256": "fa0a8588847cc2b9e92cddeca65fd00fe3d84a00a1034d9354053c7e6cd9ceb5" + }, + "findings/subsystems/turn-command-replay.md": { + "mode": 420, + "sha256": "b65fa3c3c01c67bc16ec488e4a44e6c748256e941c80987528b7602038a56e07" + }, + "findings/subsystems/turn1-to-turn2-nondeterminism.md": { + "mode": 420, + "sha256": "9ebe834fa0f7c1cf864032ec67da76730ed6c239d6bd3a717f147490116acc4d" + }, + "findings/subsystems/turncommands-capture.md": { + "mode": 420, + "sha256": "a57fd2a77784fef1b176749878b161c4f04ac77c1f4a061a6b713787d92fb9ef" + }, + "findings/subsystems/ui-screen-map.md": { + "mode": 420, + "sha256": "d266285e3ca99ba3b5ebbab47c78f3df247a8b539c0519c6fd27a999b9d6f84b" + }, + "findings/subsystems/unlock-cascade.md": { + "mode": 420, + "sha256": "38d29a9484aa3910f5a62b5dd08225ba590bf26901203c5aef1b0b466fbbc5fb" + }, + "findings/subsystems/value-domain-census.md": { + "mode": 420, + "sha256": "bc99139708aee5da4cafec585fc35ab3523b51571518038db19b5f1383c6a6c4" + }, + "findings/subsystems/writer-byte-exact.md": { + "mode": 420, + "sha256": "a0e91a90d2ae78328dbaef30b37d53037cab26489e4729413bcfebbafcab0978" + }, + "ghidra/addresses.d/README.md": { + "mode": 420, + "sha256": "cf2745d5d3e504725ae5a296dc20e3d63b8d32a903445aafe2af61828a6d59c5" + }, + "ghidra/addresses.d/ag.json": { + "mode": 420, + "sha256": "24d5b11779364cf198008b143c7a3a092117ec4a1530c489497dbc8acdf62d8e" + }, + "ghidra/addresses.d/ap.json": { + "mode": 420, + "sha256": "e37f478836eb297f9cc5186cd7df3f5942abc4b6396a4d2866e613841437f778" + }, + "ghidra/addresses.d/ar.json": { + "mode": 420, + "sha256": "8d8620be8dd807a610ff63c0d77cbf266f3d9ce272158991d1f55d9c9910c248" + }, + "ghidra/addresses.d/as.json": { + "mode": 420, + "sha256": "08a869ab9466d4b575363cfb6fc084ca72cdc05d509c5d87e658a9a9977a7ae9" + }, + "ghidra/addresses.d/az.json": { + "mode": 420, + "sha256": "60b9a169605ac171cffb848024141c9224f6897bf69b547b9a4f2b5ddfc8d835" + }, + "ghidra/addresses.d/bu.json": { + "mode": 420, + "sha256": "79037146ba621e43e561bcf0577afc25b2ffac4ced44c902d2ea8ed9171b1bb9" + }, + "ghidra/addresses.d/cz.json": { + "mode": 420, + "sha256": "35de20ff0e38d05b5c58c89690dfc81ce44eb280a2a594ae862e55d56edb5d3c" + }, + "ghidra/addresses.d/dn.json": { + "mode": 420, + "sha256": "c41f877a37bc864f8f315a47b720ac204c22c25de405f4de63b845180641eba0" + }, + "ghidra/addresses.d/dt.json": { + "mode": 420, + "sha256": "580762e01175fb7246d0f9214e4ed9ba16bebcdb82ad1525fd1f77c0910c660f" + }, + "ghidra/addresses.d/lane-a.json": { + "mode": 420, + "sha256": "fce5f06866bddc6bca095d53e376495103dfd8900ad7da0d0d6731f105915d71" + }, + "ghidra/addresses.d/lane-a2.json": { + "mode": 420, + "sha256": "1207088eb2ae041afc2618a627029e25f578ae9fe8db73bb9efb616f39c34bf0" + }, + "ghidra/addresses.d/lane-ac.json": { + "mode": 420, + "sha256": "02a1c2f01ca0d11a7c38d416d94fabaea64b5c5919f6ceaead83430fb398710e" + }, + "ghidra/addresses.d/lane-ai1.json": { + "mode": 420, + "sha256": "134a0cb87b95bf5f39ed015bcdf64c6e8da6b22e073d5b5487148cb5421addff" + }, + "ghidra/addresses.d/lane-ai2.json": { + "mode": 420, + "sha256": "e9d94ce026231d420538400fa9c73fa8a2fa882d16f542c6b8ce2c34014acda6" + }, + "ghidra/addresses.d/lane-ai3.json": { + "mode": 420, + "sha256": "89c29e1bbb1159b7b6fb4fc8c232902f8497efc82290aba6f50c9c9097feec6a" + }, + "ghidra/addresses.d/lane-ai4.json": { + "mode": 420, + "sha256": "78b7897d3d2678ddbff7cd982bfa7d93a0c26817846a148fd3f46790fef9d7fb" + }, + "ghidra/addresses.d/lane-b5.json": { + "mode": 420, + "sha256": "641c724d1fbf28f5469aac488401ea2f92bdd3b929fbf053ddeef0ba5b8de9da" + }, + "ghidra/addresses.d/lane-b6.json": { + "mode": 420, + "sha256": "b2b2833220e3a645efab2b767f1d93d1215a54d195e28e6743db8f1d89934697" + }, + "ghidra/addresses.d/lane-c3.json": { + "mode": 420, + "sha256": "b732932503c181c77bb14ba0136379c8fa3501d0c1471b02d9bca7d023bb5f5a" + }, + "ghidra/addresses.d/lane-d2.json": { + "mode": 420, + "sha256": "8b5df39fb5eea0cd40dffc20aaccabe169f5472171dfd242ca2e75dfc4ca608c" + }, + "ghidra/addresses.d/lane-e1.json": { + "mode": 420, + "sha256": "cb38b41b747bf74ee73fb7eaa301da4bb896d089fa1dea4197382e94940c7f69" + }, + "ghidra/addresses.d/lane-e3.json": { + "mode": 420, + "sha256": "a5fe9dbb37ee587bf36a311771bbc9d8dcaa4d4fcc0b420b8f45829929b0ff98" + }, + "ghidra/addresses.d/lane-ev.json": { + "mode": 420, + "sha256": "b243d31bcd69bfb1e5928ba8b70e958e559c88ee5190ca34e569f217a784798c" + }, + "ghidra/addresses.d/lane-g2.json": { + "mode": 420, + "sha256": "84401f05c5cf2ca0839e817877892e904b3fd2fd4175607abc34453acd8ce822" + }, + "ghidra/addresses.d/lane-g3.json": { + "mode": 420, + "sha256": "d176eb4a07bb6b98acea77e1a0a9904d317a594768ecf8719bbfacbdf6522729" + }, + "ghidra/addresses.d/lane-h.json": { + "mode": 420, + "sha256": "e8cffe89c7feb1d9fa1949f33aff01edc7b84b49ab752275662f6f613c16c0b6" + }, + "ghidra/addresses.d/lane-i.json": { + "mode": 420, + "sha256": "a4c482ff6fee78e96da3400b9ba7d76b58634a5933ff388db5993a1b105c8aca" + }, + "ghidra/addresses.d/lane-id.json": { + "mode": 420, + "sha256": "3f48c9b2e2c3a08e13a856bfb78d551af17f5a1a1079f03f8edbf4615f17ca7d" + }, + "ghidra/addresses.d/lane-j.json": { + "mode": 420, + "sha256": "4fd95b08fee60a2748995cb082fe50d61e7179ae90b106f230bfc5c55a35660d" + }, + "ghidra/addresses.d/lane-k.json": { + "mode": 420, + "sha256": "f6ead3ff256fd2e1408d52bfa28e308f106ad672b3fe1cce0d136faac351136e" + }, + "ghidra/addresses.d/lane-l1.json": { + "mode": 420, + "sha256": "ecbab4a1b602beefd6889effc4883b7f7de01afabb7c5c071bbc4e2237e9131b" + }, + "ghidra/addresses.d/lane-l3.json": { + "mode": 420, + "sha256": "eabb96253bee36c799f1eb89108e284162606cfdc5e9bd29dbf7b5f88ee88adf" + }, + "ghidra/addresses.d/lane-l4.json": { + "mode": 420, + "sha256": "5b2b54d2f3e123e352e9a2b0f1d80fc8afcdd0b97916a94ee5a62ddc03b0ae75" + }, + "ghidra/addresses.d/lane-l5.json": { + "mode": 420, + "sha256": "cedc4869149212d401c519c46fa3f02769f9c939fc560fe8d35cc4f898091482" + }, + "ghidra/addresses.d/lane-n.json": { + "mode": 420, + "sha256": "6987efa430f2da8987e42e61e53113f914cb00e3e52a7c679565e7faf5160c82" + }, + "ghidra/addresses.d/lane-o.json": { + "mode": 420, + "sha256": "7fcf357f25ccdf061b6bc688339e2006f830c551718b6419a0a9d0ac968bb555" + }, + "ghidra/addresses.d/lane-p2.json": { + "mode": 420, + "sha256": "7eaa63d64a0054ef88f323f58b31fca07bd2372dc21560b4bda64eb13d869792" + }, + "ghidra/addresses.d/lane-par.json": { + "mode": 420, + "sha256": "3836b786aec28feb028271d05f368d7c332b8930b51cfdceb36540133a3d3237" + }, + "ghidra/addresses.d/lane-pl.json": { + "mode": 420, + "sha256": "f29953d17effbb7d8256687833023d4656522e74c40bf1ea646d3b35da3635d7" + }, + "ghidra/addresses.d/lane-q.json": { + "mode": 420, + "sha256": "6f98496ffc288fb30c3a7347a7e5252b296f2345afd1bf678f98a2c934b8935a" + }, + "ghidra/addresses.d/lane-rb.json": { + "mode": 420, + "sha256": "bff95b9452e0efb63e74f741682c8d1843abfe3e722143cf01cf092aa894d75d" + }, + "ghidra/addresses.d/lane-sd.json": { + "mode": 420, + "sha256": "d3239b619cbef5cddc9c7bde6525301a99a6423f8a0e42c1ea53b9ae269c6da9" + }, + "ghidra/addresses.d/lane-sv.json": { + "mode": 420, + "sha256": "f574d8b4dc75da722870c74eb29cd56c75e04dd0ac384b4549fc95d425e3de3a" + }, + "ghidra/addresses.d/lane-t.json": { + "mode": 420, + "sha256": "70975f3c1dea55ceb11af12b9ba3a04e8f7bba2e25f1355ffcd3cd457c41545c" + }, + "ghidra/addresses.d/lane-t2.json": { + "mode": 420, + "sha256": "1e3c59089b769cc5f5d3cf16c33cb6db002966f5beb1a4fb9dd8e28fe54cd6a7" + }, + "ghidra/addresses.d/lane-u.json": { + "mode": 420, + "sha256": "bcccb6ec9257537eece135adbfd126904ca0becf14f9b5d17253adf5d8c9e8fe" + }, + "ghidra/addresses.d/lane-v2.json": { + "mode": 420, + "sha256": "6a4d4960ce99c05b928164159eaf4482bf763785a1f8c50efe133667886d9a54" + }, + "ghidra/addresses.d/lane-w.json": { + "mode": 420, + "sha256": "3971d65c772146534f5d8c350f2d203add70ac82801f57f3704c47cd59b51226" + }, + "ghidra/addresses.d/lane-w2.json": { + "mode": 420, + "sha256": "677648e94de8e1e0d538c9575c9be942d0b37c1a847effcb3c2312af5b6aa7d9" + }, + "ghidra/addresses.d/lane-w3.json": { + "mode": 420, + "sha256": "50ed8ed1b16288b00bac4df0886646dbf9d6d6392867029b4eac386806b41b51" + }, + "ghidra/addresses.d/lane-z.json": { + "mode": 420, + "sha256": "bc63a82f2d0cb7636e95f8a07f183f80817a4c65d2bb7263a047ec3c540512eb" + }, + "ghidra/addresses.json": { + "mode": 420, + "sha256": "865c02d88ac6ede656160a5ab20521ad8854efa381d5a943ab422216aca2c016" + }, + "ghidra/generated/sots_addresses.h": { + "mode": 420, + "sha256": "1cf6b4ab40d3cde306edee12ba4eb05292b98ddcf5c2b7c22c1c64b6075b1bdf" + }, + "ghidra/scripts/FixPlayer.java": { + "mode": 420, + "sha256": "9f9ea470af063339511b1f1c85d6dea2df0827c4fed5806c6f641b1aad3e5660" + }, + "ghidra/scripts/FixThis.java": { + "mode": 420, + "sha256": "aafeeb482f71d1bdcbc99a51fb3f21989a46fbb49b5a572f3d9e436c9b3b98b4" + }, + "ghidra/scripts/LoaderRecon.java": { + "mode": 420, + "sha256": "1275d460227e0098254885fe70666d618da7215bca99483a5475c1e701ab9b27" + }, + "ghidra/scripts/LoaderWriteBack.java": { + "mode": 420, + "sha256": "d1040cb9ee80f0fe4d2310d95b38d7d94b0972283f74ea6058de0bdb9e510e63" + }, + "ghidra/scripts/SpineRecon.java": { + "mode": 420, + "sha256": "bea798733cf60f9478373cc453692104058b643ba5b7fc68e76945ae6f496950" + }, + "ghidra/scripts/SpineRecon2.java": { + "mode": 420, + "sha256": "94f10ac953091d50187a46b74803abb4812b244356f9336fa8e133a8a6cba0c6" + }, + "ghidra/scripts/SpineRecon3.java": { + "mode": 420, + "sha256": "b2344ab3d7195cfb935505ba1949f3d4862f787ccb95b812cef3856f92c94ffc" + }, + "ghidra/scripts/SpineRecon4.java": { + "mode": 420, + "sha256": "1093ee635be94f0c0bb31b5bd79f030faa0d7cbab96a495426363172cbcd1d66" + }, + "ghidra/scripts/TechFx.java": { + "mode": 420, + "sha256": "bfa8e990d65ad7cb2b665ee284ec2d645395e0fb3794ea146b175e2937a159ad" + }, + "ghidra/scripts/TechFx2.java": { + "mode": 420, + "sha256": "ee7040ed3316f2e717bac207c3e8ba9bf5ecb560f9e2b38335582c4ca6bae5a8" + }, + "ghidra/scripts/TechFx3.java": { + "mode": 420, + "sha256": "b672751160abcfee37d16eb2f107a60420b7d6956c312fe93e9f62578c06b96a" + }, + "ghidra/scripts/TechFx4.java": { + "mode": 420, + "sha256": "ef912e86f802452f33c20a1adb87eeb96f0ec893e26ee4bbd02305ba0c5e46c7" + }, + "ghidra/scripts/WriteBack.java": { + "mode": 420, + "sha256": "e002a5b86bc58cf75ef8d08dbaeb84bdf3306c1e8d49e92c0382f8ed858c57ac" + }, + "ghidra/vtable-owners.json": { + "mode": 420, + "sha256": "8ee89f3b43f56283a6ffcc605394a1ab246f8071370a9db8f1e770942a5a82a3" + }, + "guides/lab-screen-wall.md": { + "mode": 420, + "sha256": "d398b47853013dbce63b4af2f2ec680c39775732b9fbba13f5fc42a46628550f" + }, + "guides/method-rules.md": { + "mode": 420, + "sha256": "a71a8415202fe97ccaee3805bf4035684776c37f5613dc39a1f260aa33f94b69" + }, + "guides/multi-agent-workflow.md": { + "mode": 420, + "sha256": "116ccaa9be9523852d02ee7c78c7f1d587c1ed6270789afca42e687ea826af5b" + }, + "guides/re-windows-2000s-howto.md": { + "mode": 420, + "sha256": "3490650440d6e683cb029915b8c2cace914b1f52538c9db89175ad4547db2901" + }, + "guides/windows-lab-housekeeping.md": { + "mode": 420, + "sha256": "4a9e9d66dd76e6b5ee1951686186190c650a617fa812fa4bd236ef02b783939a" + }, + "notes/.keep.md": { + "mode": 420, + "sha256": "7878c159a1b9636974e9093902027a24bf7b3c7520f13a8d96f930bd10d22f1c" + }, + "objects/generated/sots_stream_schema.h": { + "mode": 420, + "sha256": "13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c" + }, + "objects/layouts.h": { + "mode": 420, + "sha256": "24586f7f1c25530691193a919c6335ab1784fa2815b222326409cfe9e2a42981" + }, + "objects/layouts.json": { + "mode": 420, + "sha256": "16bfffa5020d98c12af61c72a48da8f2c5e06d1060358802717e585a49b150b2" + }, + "objects/layouts.md": { + "mode": 420, + "sha256": "83bc29fcd379847f9ebd6732edf9748c1c878052e889615928659307f97a148c" + }, + "objects/streams.json": { + "mode": 420, + "sha256": "60993eda14d0b1056578718d43a3b6d89816e12c4f5a00674806aeef9e81baf7" + }, + "opencode.json": { + "mode": 420, + "sha256": "027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99" + }, + "scripts/.keep.md": { + "mode": 420, + "sha256": "b0cdcee8cfdc1b15ee444520b6b01c747399deea6d92ff2576ca6eb57331bbac" + }, + "scripts/forgejo_campaign.py": null, + "scripts/lane_v2_writeback.py": { + "mode": 420, + "sha256": "69a66058adb04926eeb6f0e81fa8f0392ce06de2e8d8eb61ebcf503bab6311da" + }, + "tools/DASHBOARD_README.md": { + "mode": 420, + "sha256": "f401cc54f64a4862a938263f37eaab22e6475e063e59726e02dce201f657dcc4" + }, + "tools/aiorders_to_tcb.py": { + "mode": 420, + "sha256": "9762d1fd45f3ab7c045088e222c5386a2cc63a6b25e1c09a49cbbd71837bfe17" + }, + "tools/cache_functions.py": { + "mode": 420, + "sha256": "18c037e48ab035764b0c877123ea7c998ef74240c63090e4f58142f57835e0b1" + }, + "tools/campaign.py": { + "mode": 420, + "sha256": "a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123" + }, + "tools/check_agent_config.py": { + "mode": 420, + "sha256": "8cb42d8de9cc441b547a00aecc7bfbc3619667121b30e150fec9e6c94683beb0" + }, + "tools/dashboard.py": { + "mode": 420, + "sha256": "c84aeeea6fb7d5e45ccec8882bacc59182149f108edd9eb1585eab9ede99911c" + }, + "tools/displacement.py": null, + "tools/evidence.py": { + "mode": 420, + "sha256": "0a7f8497ed287b4b64aa5ba0cb25735172408e38f3605b3ff90f009c7f02eb85" + }, + "tools/gate.py": { + "mode": 420, + "sha256": "4df5ee7022fb2601687f06eab788e2cea1e345e580c4e92c9d47be1787d37460" + }, + "tools/gate.sh": { + "mode": 493, + "sha256": "d7ba27b9b0c6a03df48e4edc71884ef9986743f8afa751dbfec116df5aeee18c" + }, + "tools/gen_addresses.py": { + "mode": 493, + "sha256": "5d995585d4192a19db7cc6d31ed811fa80264159fc114f03f58793f9b6c4908e" + }, + "tools/gen_stream_schema.py": { + "mode": 420, + "sha256": "a9c3e925bb3370371a2c8cde8d738c657fe1cbf68c39c6155562bbb20c551461" + }, + "tools/max_income_oracle.py": { + "mode": 420, + "sha256": "8d3ec6ba5c677486200eab7d1ca55e1350947829e603737307fa394ac8e40bcd" + }, + "tools/max_income_predict.py": { + "mode": 420, + "sha256": "85400c82b6cb7c6786b7fb6486bdc7bcb1140817f7a0ff0b4fa4f7dbeded8797" + }, + "tools/probe_report.py": { + "mode": 420, + "sha256": "f3ef378c10bae4a8bef754d853f0e86616bb95b5e051e04cac97d362587df1a7" + }, + "tools/reva_call.py": { + "mode": 493, + "sha256": "89477650d38985f84b61a664572de1cbde1268b879d3da5e874598942822998b" + }, + "tools/rng_ledger_report.py": { + "mode": 493, + "sha256": "b4f3f581eb6de50118fd531c848354816c20197711e668ce8b0cfcb4d0392cf3" + }, + "tools/rng_oracle_check.py": { + "mode": 420, + "sha256": "f27ca7f9aa03bc672f04067bc71e73ac83742997f12f5f55ce11151bdc39d98a" + }, + "tools/rng_site_report.py": { + "mode": 493, + "sha256": "fabd950c002265403f7b13a8868a158d867828c9930770ed096a2610b086ad35" + }, + "tools/rtti_map.py": { + "mode": 420, + "sha256": "9ac88a8aa566fe08336ba6e50905ec4253409e1317f491c415b1b9ebcc0713e4" + }, + "tools/run_agent.py": { + "mode": 420, + "sha256": "818097896b2e29dbdd2f53d37261236af302178ecd0ee083a3184a7bc33ff152" + }, + "tools/select_evidence.py": { + "mode": 420, + "sha256": "a6e648a77bcf799cc774ff9d0de83011283049ed0f0c44f6e08857a8410e9463" + }, + "tools/serializers.py": { + "mode": 420, + "sha256": "938904eb7b4ae30a61dd966494b112c6d52399f9d4a4658add06b40a54d6cb73" + }, + "tools/serializers_ghidra.py": { + "mode": 420, + "sha256": "d27da0afc8d043d31335bbe274fc76245e50cf0f9091a968b124f31c3a17997c" + }, + "tools/serializers_golden.py": { + "mode": 420, + "sha256": "29d2509b54704b80eff46a59a320719edb17a7eb67fd8acb8ad5e3c427d8e825" + }, + "tools/standalone_report.py": { + "mode": 420, + "sha256": "43a61c4031306732554aca23cd95b57d35f2a870766c33ccf8e005f22436525c" + }, + "tools/streams.py": { + "mode": 420, + "sha256": "57ec4ec5ad222a74f4461d70277d258e51779ae53ff74fd0e07eb51d4bae0afd" + }, + "tools/strfootprint.py": { + "mode": 420, + "sha256": "3b0db212c0b091ae2f63b866ee331435d013c535f233ec34ae3dfb63ded852dc" + }, + "tools/tcb_from_json.py": { + "mode": 420, + "sha256": "8fe09cff16802fda34db24f6f888610baa258399ab39173586b91a7a162f231a" + }, + "tools/techid_table.py": { + "mode": 420, + "sha256": "2c644bdbd3774b70dfdae7e77ff7a3a8e8563b58be7098a2d55ee30dc8b8fd07" + }, + "tools/turncommands_capture.py": { + "mode": 420, + "sha256": "0214d5da6f5f86e188bb2f03db8d3439267baee3a883c7df754601c7c1a38536" + }, + "tools/vmshot.py": { + "mode": 493, + "sha256": "09228bf8bd61918c49afc2b6da931fc8a7833be126be5384b85194e0e86eea44" + }, + "tools/vmwatch-install.sh": { + "mode": 493, + "sha256": "3c004f532422bd589a7294dabdf54d5a726f598c69012eaea3d73a748ad0123a" + }, + "tools/vmwatch.py": { + "mode": 493, + "sha256": "650d8232e46239a55b96f26d581d7d9c5815415c9014fd2e5b846b68c1346b39" + }, + "tools/vtable_map.py": { + "mode": 420, + "sha256": "2e19223efb79421ab4b807e32f0854b2592d7d3a3a52c12e84e47460b960f740" + }, + "tools/windows-housekeeping/Invoke-Housekeeping.ps1": { + "mode": 420, + "sha256": "a97911a3cfbd47813282efa7f52b4de03d28912487fffe0e7e7aa1a250cac01a" + }, + "tools/x86disp.py": { + "mode": 420, + "sha256": "a05a42d63813d2025a4da65bdd684e82a89c95c52901a8f490391e31c49a122e" + }, + "verify/config/test_agent_config.py": { + "mode": 420, + "sha256": "8a7a406f062c3387ec5b99b35f3befb64f676efef174047060c967074545e3e3" + }, + "verify/config/test_source_check.py": { + "mode": 420, + "sha256": "c16731e31a54256dde4f88d33007759ff21ad8537ca6cd2be38b9e34c59525ad" + }, + "verify/design-rules/SHIP_DESIGN_RULES.md": { + "mode": 420, + "sha256": "4decf51bfa03e8ab2b58478198332e834233100126949b920349f210b54521c8" + }, + "verify/design-rules/data/HiverInvasion_FleetTemplates.csv": { + "mode": 420, + "sha256": "327e799be3c75361267725c157f78b425d3a1df6ed6595104b2ce9993e8ae3a7" + }, + "verify/design-rules/data/UpstartApes_GiftFleetTemplates.csv": { + "mode": 420, + "sha256": "89939d70eb6ed48ec776a4a6fc50ccb68fc6be7162706bab199484bf7cdd5e44" + }, + "verify/design-rules/data/_defaultweapons.txt": { + "mode": 420, + "sha256": "ef9e33aa32840f1878ece67f88556d81a4255f63f6e8aad4ac73e575ef2c7ec8" + }, + "verify/design-rules/data/_turrets.txt": { + "mode": 420, + "sha256": "35de6ad40895f76298eef7dc354c739a5a59747b689c2324cfa5040442eddc18" + }, + "verify/design-rules/design_rules.py": { + "mode": 420, + "sha256": "772f70c7d6be2d20d10cf4f5d412233b267440d63d431bf7b320c29f3f06e313" + }, + "verify/design-rules/stock_designs.json": { + "mode": 420, + "sha256": "b363023e02899bc03e4c8b8423b394ef8abb190b1bcf437aade19be463353f68" + }, + "verify/design-rules/stock_designs.py": { + "mode": 420, + "sha256": "fe020f6058ec25b6fc456146abb6594825ee2b98ba5c5c5eeaff969ce4596031" + }, + "verify/design-rules/test_design_rules.py": { + "mode": 420, + "sha256": "6f6764d21d7a3337ec8aba9651b19947239a7d06a6cdf7c6e9be5ddefcfdd186" + }, + "verify/fpu-cw/cw_census.py": { + "mode": 420, + "sha256": "07b7ac5ae60df487867b592e82e9f74201b695437fba248813bc07305a21c7cc" + }, + "verify/fpu-cw/trace_bitdiff.py": { + "mode": 420, + "sha256": "b25c93d70e67ed2fa81e5ea7184f8ffe0cbd2e7c043bc94f923c3db1cf101b59" + }, + "verify/harness/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/harness/cb/README.md": { + "mode": 420, + "sha256": "7a656251a600a9343ffa8afaa4f227e7cb8086be7d3c6879c0a403ab8acec71d" + }, + "verify/harness/cb/cbdo.sh": { + "mode": 493, + "sha256": "6f3d7fd35aeedb0841be9df0ba19136be2e7ccb5c44950d8aa821c61727232a6" + }, + "verify/harness/cb/cbfull.sh": { + "mode": 493, + "sha256": "609101217e9d35bf1caa5cb66f362e0796fcf6c1264bd92ff550d0ed12ca2521" + }, + "verify/harness/cb/cbload.sh": { + "mode": 493, + "sha256": "2e56bb64609434f6dfc6ebcf71a3c839ae59170db80c996ebee7c2219cb664ec" + }, + "verify/harness/cb/cbmenu.py": { + "mode": 420, + "sha256": "fb2e72a1a5390aa28dcae0fbc2d7b920b06bf3b1ea161bb757d4db3c8cd23af2" + }, + "verify/harness/cb/cbstep.sh": { + "mode": 493, + "sha256": "5896b21e8cf08b40e2a2958e44a51beb7e5b5a58cf35d405879a5df7cdd375b4" + }, + "verify/harness/compare/TRACE_FORMAT.md": { + "mode": 420, + "sha256": "cf6f61dc255e3aed0f293c141d9fd3b0d5e848e3abe4dcf50b4ca2d58e37c024" + }, + "verify/harness/compare/mkfixture.py": { + "mode": 420, + "sha256": "f081dd92b9e82e838f59ce8f9c79d5cdebb825255f13b6c49178516e7f3ef118" + }, + "verify/harness/compare/oracle_parsers.py": { + "mode": 420, + "sha256": "b1a745bfa63b447c87279afdb2885a0218f2a0dc2539f79414f8a2534e24c97b" + }, + "verify/harness/compare/test_tracecmp.py": { + "mode": 420, + "sha256": "f25eb9d5ea7215b8366c44924fb49a5f028a0188e709dadfd90cfbc30db0823e" + }, + "verify/harness/compare/tracecmp.py": { + "mode": 420, + "sha256": "d6ca461cabf15351e2040150144084b93d3caf22d879ee158ede04052ab03cbb" + }, + "verify/harness/l2-ui/README.md": { + "mode": 420, + "sha256": "48effd757522ee5ff70af6d77449dcfd805bb7744c9093d01c039b86e030d7f6" + }, + "verify/harness/l2-ui/launch-b.cmd": { + "mode": 420, + "sha256": "8f26c451a88765c49ecb3c8160ed4a3d06f1100a6d9323b305efc01f039dfada" + }, + "verify/harness/l2-ui/socks.ps1": { + "mode": 420, + "sha256": "401cce47d495507f60eeae45942c146586464959046ef9715cd69605753af027" + }, + "verify/harness/l2-ui/ui.ps1": { + "mode": 420, + "sha256": "355c8f222bf99f547d9d16a1665a072e6914917d48e4db22b8438d2d83708e97" + }, + "verify/harness/profiling/battle-run.sh": { + "mode": 493, + "sha256": "79f14ded5c3731efd655a6f9a4ac6795f3ace0a9b064c43ba4bf9a2cb988a7cf" + }, + "verify/harness/profiling/funcs.py": { + "mode": 420, + "sha256": "841a6f5e5dc1d845b7439c9ce9dc08e045864929b0f367908abea7ab54259207" + }, + "verify/harness/profiling/funcs.txt": { + "mode": 420, + "sha256": "d35b17dbb3970f5c24ae862748c5b91aee87491968719c34e48a8b88c0615835" + }, + "verify/harness/profiling/iat.py": { + "mode": 420, + "sha256": "82465ef8284739ab3d3c99acd0fa6cc5a4bb80c8680eb7a949218305fd10d3d3" + }, + "verify/harness/profiling/inspect.ps1": { + "mode": 420, + "sha256": "35bc7dd85108e3f4686975ef7f510b1cc9306b5839329f7fdd2a5ac27a140611" + }, + "verify/harness/profiling/names.txt": { + "mode": 420, + "sha256": "89d90f934e445447c68569448471a8917ee0bbfcb5fb96bba3e6566be9b0779c" + }, + "verify/harness/profiling/parse.py": { + "mode": 420, + "sha256": "680df36804e923d74da8e9fd8877b5ea66975c9ce8d239ad4507c829f881722a" + }, + "verify/harness/profiling/sampler.ps1": { + "mode": 420, + "sha256": "ef0edde8535ef07e508a732f8e11dc3d50fef966e5a9e4d8161085a83372993e" + }, + "verify/harness/profiling/shots.sh": { + "mode": 420, + "sha256": "87e554abf08068d6438417e266f1e7820e34a900a7d559fa0a7c4a2fa18002b3" + }, + "verify/harness/profiling/timerres.ps1": { + "mode": 420, + "sha256": "80362eb9ec8bd882abddf2507236e70db2dd21f64c9db07d217bdd49361ed89c" + }, + "verify/harness/profiling/turnloop.sh": { + "mode": 493, + "sha256": "8e28f076599a9eb53eace77ad77a10b0770f1ce617c7a76e6a2b9044ee0c8774" + }, + "verify/harness/profiling/turnwin.py": { + "mode": 420, + "sha256": "e2033a8e519a7c9f65f67b5592494a9843eb8bef41af6ab5652343aa86bd4c60" + }, + "verify/harness/profiling/ui.sh": { + "mode": 493, + "sha256": "e66774a4d070285e6c6a62472000222a691c7192096039e75fa726bab9f6afb7" + }, + "verify/harness/run-recipe/click_helper.ps1": { + "mode": 420, + "sha256": "150a1c17e12e8479244107cd01d95233c84d550e95a6f5e352fd529818a21d7d" + }, + "verify/harness/run-recipe/display.cfg": { + "mode": 420, + "sha256": "76b4876abd1cd163a5cc6b65a6106670476cde40c9b868a53a0dc45f517e132f" + }, + "verify/harness/run-recipe/dxvk_d3d9.log": { + "mode": 420, + "sha256": "f48ff2684a78cea563ab7f10e2f005638044352fe9cfc30dedf0f26ec7fecf23" + }, + "verify/harness/run-recipe/launch.cmd": { + "mode": 420, + "sha256": "90a6effe8ae835bf641cc775a17ad709198fdfeded4379f658255a82f594e5c2" + }, + "verify/harness/run-recipe/lvp_icd.x86.json": { + "mode": 420, + "sha256": "b89a08526e043a84c3a2550b5ea2fd7692f547ea295e8dd70e79c64fe81f6fbf" + }, + "verify/harness/run-recipe/run.txt": { + "mode": 420, + "sha256": "12c83295dae9db4a98142ef8fe7e45321c90960428df504ed3496e27838a0413" + }, + "verify/harness/run-recipe/session.log": { + "mode": 420, + "sha256": "e9ce9b496e9ee55bd64cc27afe594cee6136dfbc6cf9d9d44e9914b27e568a93" + }, + "verify/parsers/PARITY_NOTES.md": { + "mode": 420, + "sha256": "beecfe60358f5977529bd0784ffe18ca03c38d2dd36766f351c6a9addac83bda" + }, + "verify/parsers/effect_txt.py": { + "mode": 420, + "sha256": "7219045dfaf305dd64218ff8096e8cac69a53df1aabdf85f15e6c5e01c963e74" + }, + "verify/parsers/flat_kv.py": { + "mode": 420, + "sha256": "a26149cb21d152be5cbada3b764e042187daf2ec306b2dba1081737af6a7ae4f" + }, + "verify/parsers/manifest.py": { + "mode": 420, + "sha256": "62a08cfd82d5f701ae3b3f567bc8382cfd1b33b49bf6049ade47a932ef7109da" + }, + "verify/parsers/mars_data.py": { + "mode": 420, + "sha256": "90c7b8421044b1d7e262e6f20e5af391d97a712b12c2d3f0c3033567881d536f" + }, + "verify/parsers/verify.py": { + "mode": 420, + "sha256": "cc5d619bd6b3ca161b4bc8050c30e7d77f6bd3e964c971cc29e051efc1e25a33" + }, + "verify/publishing/test_dashboard.py": { + "mode": 420, + "sha256": "cc44e516da663f5d27bf817cbcbf24c052f2db52ee887d08d7c271caf8f6a000" + }, + "verify/results/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/results/compare/.keep.md": { + "mode": 420, + "sha256": "4581f3fde61549f4c621b2f114228a62d066a528a270a9b41703238ff841ac1d" + }, + "verify/results/compare/b2-techfx-compare.json": { + "mode": 420, + "sha256": "b0533322d44b1694f36baf86d6660481ac5b22ce9c1d6b6b9668ea064cc08f4b" + }, + "verify/results/compare/b2-techfx-golden.json": { + "mode": 420, + "sha256": "4298a8229b85a3329c78d3618d3eb19aff096cb2da66e9238fd843d639b17f11" + }, + "verify/results/compare/cr-compare.json": { + "mode": 420, + "sha256": "f20e9a7c71412688c02b607f08a5224367598eba552e35a50e9922ca8f12edab" + }, + "verify/results/compare/cr-compare.md": { + "mode": 420, + "sha256": "0eb905744120b1cf264ba6e57497db64fdc8e225a87ef7bb86cf3f026ffe4d0d" + }, + "verify/results/compare/cr-replace0.json": { + "mode": 420, + "sha256": "f1556c5d74c236c82617061b5ec60b1a7ce4652bce87b6595eb89406ad832240" + }, + "verify/results/compare/cr-replace0.md": { + "mode": 420, + "sha256": "6f571e46350a29b811bc12b48e12ed2d443acba5f5be6310e0531c3790425d48" + }, + "verify/results/compare/cr-replace1.json": { + "mode": 420, + "sha256": "d0c1d6bd4a1f8f5343b584662d8202184479b01a51480443a97242daf27fccc2" + }, + "verify/results/compare/cr-replace1.md": { + "mode": 420, + "sha256": "111b51290468d5482a1910194487d26dc1b3ec534d699aa07a564de66bbf9d98" + }, + "verify/results/compare/eventlive-b3-t1-5.json": { + "mode": 420, + "sha256": "4f305180bcbe93523f407d1f8406ac52b84d4a20e2d611940716618fd37edfde" + }, + "verify/results/compare/eventlive-b3-t1-5.md": { + "mode": 420, + "sha256": "ec71d98210218fd5b5da69f6b17cf6991128a58a0358a6504e6497dd39159764" + }, + "verify/results/compare/eventlive-b3-t1.json": { + "mode": 420, + "sha256": "84f66c1e6a23f737d1615e75fd22fba958bfd851067acb42503e32a2812dd1de" + }, + "verify/results/compare/eventlive-b3-t1.md": { + "mode": 420, + "sha256": "299b8dd3f2cf42cbc9e6254fac01ee3dcb6abb0758c8f298beb6cc6464db4cfb" + }, + "verify/results/compare/eventlive-b3-zuul.json": { + "mode": 420, + "sha256": "a1a92c06202c8168362c33442edeb7ea7f76f6e586e5deea1b86dff9dc8f3494" + }, + "verify/results/compare/eventlive-b3-zuul.md": { + "mode": 420, + "sha256": "544791f9cd8b77a2d865f2a918d97e74559529f29943171bd1e8e2d8a120dec5" + }, + "verify/results/compare/l5-budget-boundary.md": { + "mode": 420, + "sha256": "6877f9cfc602876b4c213106493853822471a5aaa3e4e8ebf8dffd31373d89d9" + }, + "verify/results/compare/mf-after.json": { + "mode": 420, + "sha256": "586a824a0d0af1de0808c33c1c392c4022128f9c1305dc32b6749e8fa493e8f4" + }, + "verify/results/compare/mf-after.md": { + "mode": 420, + "sha256": "659be3da71cabfd3c34eb818f1bac07f848c58a878fd62d81ac7b1daa5f3ce03" + }, + "verify/results/compare/mf-before.json": { + "mode": 420, + "sha256": "259272b45ca9c63894d8c91e399ff91d7258b7836f1a0d5c91dd3972586b2498" + }, + "verify/results/compare/mf-before.md": { + "mode": 420, + "sha256": "4572530a1c93865d27aba47c23c418773ad39a834c8be1c004f5cc2f16f927a0" + }, + "verify/results/compare/output-ref-turn2.md": { + "mode": 420, + "sha256": "43a569165f9239f13edc31c7a848a6b839829ae06dd6e3b85d289a1552eb8d34" + }, + "verify/results/compare/output-zuul-and-ref.md": { + "mode": 420, + "sha256": "9bc0937c0b3e1e3e5a6cd3768dbfeae56a897615396b00834bd083611f3ef431" + }, + "verify/results/compare/recap-b1-compare.json": { + "mode": 420, + "sha256": "8e86cdd32373e41ac1cdc130b18acc188b35d5ab7112e1fc655d134c44ad9712" + }, + "verify/results/compare/recap-b1-compare.md": { + "mode": 420, + "sha256": "496a3246eda3be76d9d0f08726369d40aa879cf60a510f16209ae77585582841" + }, + "verify/results/compare/recap-b3-compare-t1-5.json": { + "mode": 420, + "sha256": "80eeeeccf15f427b75b053d06f6b32b1692a2ed9ca6b9a51c244e4166a1b0e78" + }, + "verify/results/compare/recap-b3-compare-t1-5.md": { + "mode": 420, + "sha256": "5b6295bff72d599f142e75fa913ca2da590322a6fd1d104328847159fc5e7802" + }, + "verify/results/compare/recap-b3-compare-t1.json": { + "mode": 420, + "sha256": "10d0d5f8aff90f6cce3cd87e30c7f8ff896c5b369f4dc8288141451e25727cb9" + }, + "verify/results/compare/recap-b3-compare-t1.md": { + "mode": 420, + "sha256": "2b0eb8865bb07a2dd8fd038bc19e38a34fbf19b9d3f6fabae085c16a74fbcc6f" + }, + "verify/results/compare/recap-golden-trace.json": { + "mode": 420, + "sha256": "50bb7e34ab2359adc83cc0647fc995d207173fcf6134e413565af450958f652f" + }, + "verify/results/compare/recap-golden-trace.md": { + "mode": 420, + "sha256": "586fc86fe78659902a5d0859c0bce44623bfcda0f375bb57b293796862c48e17" + }, + "verify/results/compare/recap-misc-compare.json": { + "mode": 420, + "sha256": "c73f3f3593a0d715a675b29c7b4f49c02a97578ee9d867ce15d217c43da2e466" + }, + "verify/results/compare/recap-misc-compare.md": { + "mode": 420, + "sha256": "b435c92441742b2b1b0236bfacff10c17757696baf446c544c4759b7e31237ed" + }, + "verify/results/compare/unlock-b3-t1-5.json": { + "mode": 420, + "sha256": "a4dbfc89f6f3d154edbbc62842a4e8d8a3c69b9589eafc1bb496b26a3ecf6e3d" + }, + "verify/results/compare/unlock-b3-t1-5.md": { + "mode": 420, + "sha256": "832626087ddc2da9064a192a1acfb3869d4a52c6398a070cbd66eaa1bdbe2e2e" + }, + "verify/results/compare/unlock-b3-t1.json": { + "mode": 420, + "sha256": "6d8938b8eaeb2da1c7fdccb1fb68f8e3a2b5b7f492cc096326cf3aadb2ab8d55" + }, + "verify/results/compare/unlock-b3-t1.md": { + "mode": 420, + "sha256": "8911e671a143c25765cd7c0b67f1b9cb23f4040fe26aad40ce59b1db858afdcd" + }, + "verify/results/compare/unlock-b3-zuul.json": { + "mode": 420, + "sha256": "3099d248d58c4395e92d65ad18c28227695a7c7935193be6c2bcf752fa0e0f04" + }, + "verify/results/compare/unlock-b3-zuul.md": { + "mode": 420, + "sha256": "f53b165c8502ba9b2416935179fdea68153fb6ebd2458b4ec9b4ecf6c741c91f" + }, + "verify/results/data-catalogs/crosslink.json": { + "mode": 420, + "sha256": "2966ba9780910b596e350c4f81eef5d74c4d235dc3a8d5cf6ad5fd53a407254a" + }, + "verify/results/data-catalogs/schema_stats.json": { + "mode": 420, + "sha256": "6e3f669ae77cdfa2c5cd6bbd29f5cecccd452d9a7b2397c2c23db6c33fda0a2a" + }, + "verify/results/data-catalogs/shipsections.json": { + "mode": 420, + "sha256": "2e7057c608d0cea755bf9dbfa291864d33e3f09ad5deff7bb3a8045bde7a4ab5" + }, + "verify/results/data-catalogs/strings.json": { + "mode": 420, + "sha256": "c36c1b2b9a2eace438f93698df6388fa94aec30d372bcd0bee7e09bb33c54d7c" + }, + "verify/results/data-catalogs/tech_tree.dot": { + "mode": 420, + "sha256": "96ce0492a1284167d82af2c07a8f8a0b3bb9864bc137195560d909df6a913055" + }, + "verify/results/data-catalogs/tech_tree.json": { + "mode": 420, + "sha256": "18df799410c5f650e15808c1ef247b4768a3dfff93795a5ec7f56cd6c4afc597" + }, + "verify/results/data-catalogs/weapons.json": { + "mode": 420, + "sha256": "a446b445c21519fc7992c84155c9652239567030843c405b4219d1f65022db01" + }, + "verify/results/fpu-cw/README.md": { + "mode": 420, + "sha256": "3928fd0f6a03a8ff0b170a7ed23a059120b5014b13bf6870d4f187ff299d5975" + }, + "verify/results/fpu-cw/cw-census.txt": { + "mode": 420, + "sha256": "b7854dc5cd249a2490d04264d758f1894a9ddf4b95573650365d47587c7589d3" + }, + "verify/results/fpu-cw/run-007f-rep/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-007f-rep/(Autosave).sav": { + "mode": 420, + "sha256": "ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918" + }, + "verify/results/fpu-cw/run-007f-rep/shim.log": { + "mode": 420, + "sha256": "73b5b86da743a1cb37d4c0d97b29978923b55a7a47f80c7fa20ca47d424f6c02" + }, + "verify/results/fpu-cw/run-007f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-007f/(Autosave).sav": { + "mode": 420, + "sha256": "ba2435beb17265af3abddb58cd26e926d42b39b358ef6d0c76f9897386174918" + }, + "verify/results/fpu-cw/run-007f/shim.cfg": { + "mode": 420, + "sha256": "998decddb80cf23d63c42d2d6c1d1aa85072258ca0870168ee772708ebfb6363" + }, + "verify/results/fpu-cw/run-007f/shim.log": { + "mode": 420, + "sha256": "5721f47d7fd862156ce2cd1832cd1739636b5aee53c82323ef233ff6401775bb" + }, + "verify/results/fpu-cw/run-007f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "149c4fcf750fcf9e81dc86d8696271d9a14ca788891ac95cf96995e3737c68e4" + }, + "verify/results/fpu-cw/run-027f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-027f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-027f/shim.cfg": { + "mode": 420, + "sha256": "f4f9585a8f6317807bcab498ebed5de5d42400124a82ea958558f1455176cebd" + }, + "verify/results/fpu-cw/run-027f/shim.log": { + "mode": 420, + "sha256": "4bd3f88bd27eb2e3ae1f42f4dc2ccf1cc5df1a2c1171d2eff8be86e7be684187" + }, + "verify/results/fpu-cw/run-027f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "b5d2611d0c08946c1e1eaa244a7e44782eac2592c392efb3d7147fbbd86816e7" + }, + "verify/results/fpu-cw/run-127f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-127f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-127f/shim.cfg": { + "mode": 420, + "sha256": "1f50a475f0d347b5b5a7c2341eac4ea22092818e18bc7ea049154d309949e271" + }, + "verify/results/fpu-cw/run-127f/shim.log": { + "mode": 420, + "sha256": "03f1999dc8964912697782e856f89f190b6680d5732f2cd00b1569bff727a545" + }, + "verify/results/fpu-cw/run-127f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "fb1b9063cc53a6b39ea0a58e0545b9334fbd15d65dd839e72f2c4febbb1dd3f0" + }, + "verify/results/fpu-cw/run-137f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-137f/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-137f/shim.cfg": { + "mode": 420, + "sha256": "8658d901e0688d87d2f2359fe725082b9956291988cdc0b82b155dde55fef5e9" + }, + "verify/results/fpu-cw/run-137f/shim.log": { + "mode": 420, + "sha256": "83aa72572412d5248179397895029367685fd590d795991ab91c98cf9828ae29" + }, + "verify/results/fpu-cw/run-137f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "aad1fb6abd86beafb9f44e2c6060157e22618811d105f2379252e19008839b66" + }, + "verify/results/fpu-cw/run-1a7f-rep/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-1a7f-rep/(Autosave).sav": { + "mode": 420, + "sha256": "e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7" + }, + "verify/results/fpu-cw/run-1a7f-rep/shim.log": { + "mode": 420, + "sha256": "38f2824fbe91bf2fa1ef55473a7468707248420805b6f6dc85245fd34fa94200" + }, + "verify/results/fpu-cw/run-1a7f/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-1a7f/(Autosave).sav": { + "mode": 420, + "sha256": "e48e25fa8425a8a1d174efe3e8a553153447f11f8f91c5fda25bd7db3a26cca7" + }, + "verify/results/fpu-cw/run-1a7f/shim.cfg": { + "mode": 420, + "sha256": "59ff1f48a10c378d0ea92d8a156b135a106017a5b6c47b65de304fde3187c588" + }, + "verify/results/fpu-cw/run-1a7f/shim.log": { + "mode": 420, + "sha256": "a1bb0bd06dae6955ec09e7d0c6cd1e68e19aa2a114256cdeae1275def0a63091" + }, + "verify/results/fpu-cw/run-1a7f/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "b9a7affb8235626fcfdd5afe143e4ec03be869b6b386bd9ac78389097df88cef" + }, + "verify/results/fpu-cw/run-off/(Autosave EndTurn).sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/fpu-cw/run-off/(Autosave).sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/fpu-cw/run-off/shim.cfg": { + "mode": 420, + "sha256": "6a19c362121a3dba0aac857d6e998131e8b2478f19edcdcbd58006645d096c70" + }, + "verify/results/fpu-cw/run-off/shim.log": { + "mode": 420, + "sha256": "9e3cbd005f0b68037681939b289834c55629bac0e9cd35ac55e6d8ef5333a116" + }, + "verify/results/fpu-cw/run-off/shim.trace.jsonl.gz": { + "mode": 420, + "sha256": "ec2271c0d7e09fe51ead7f8d58859c692e8b302233191841d506ea14248caa8c" + }, + "verify/results/fpu-cw/state-checksum-diffs.txt": { + "mode": 420, + "sha256": "3417dfc1b75ad896ac6a5e974d51248eecca319565e2422e146897d19e121b68" + }, + "verify/results/fpu-cw/trace-bitdiff.txt": { + "mode": 420, + "sha256": "8f86707f26f30638097c85f0db6df219adbfebac4e9ec24f1feb8bfce112d4f2" + }, + "verify/results/multiplayer/l2-combat-hud-client.png": { + "mode": 420, + "sha256": "02c86592531ab2889a0eae04e44a644d33c754096fe60aca6640068a7a3f421f" + }, + "verify/results/multiplayer/l2-combat-hud-host.png": { + "mode": 420, + "sha256": "a56daf36fcc88627b29116ad9874c95a3c46960074ff9b823aa15c4ea2660dd7" + }, + "verify/results/multiplayer/l2-combat-loading.png": { + "mode": 420, + "sha256": "f94a718cee08e1b7d346490058f13a107d23aaa7c269fdd53b159a75d62fa558" + }, + "verify/results/multiplayer/l2-combat-round-draw.png": { + "mode": 420, + "sha256": "c1b8424540b702915302f9ff38eaf765e8e95fddc3c5c4d894438dcfcf8b6256" + }, + "verify/results/multiplayer/l2-combat.pcap": { + "mode": 420, + "sha256": "0f112ef96da6c465dbda51baf99eedd66967eed61c097f643bf6c66fc26af31b" + }, + "verify/results/multiplayer/l2-encounter-query-client.png": { + "mode": 420, + "sha256": "4c41b268ad256b0109483a2d9b5ba35de7b9cadb4eb32ef4a68f7867e6e747fd" + }, + "verify/results/multiplayer/l2-encounter-query-host.png": { + "mode": 420, + "sha256": "8c7b0c6d65ddde45eb3447f044589ffc36500b40c4d676af8321f800162f38a0" + }, + "verify/results/multiplayer/l2-fleet-built.png": { + "mode": 420, + "sha256": "6ac91fcf9b42caef50134de01804046d8e60d0fd3966592e9738ceff511949c2" + }, + "verify/results/multiplayer/l2-lobby-client-joined.png": { + "mode": 420, + "sha256": "4a8e698c9ea935449ff0421cd59acd517ebffa388a7572279b28be0369141ff6" + }, + "verify/results/multiplayer/l2-lobby-host-created.png": { + "mode": 420, + "sha256": "e6a7377cabafa973396cedafa5ad5b4863a42f9866709db88faf9572e0ed3c98" + }, + "verify/results/multiplayer/l2-move-warning-dialog.png": { + "mode": 420, + "sha256": "43c6219d74bc0cb28495f13784cdbd3a90c89746b108824c3a2138dbdadcb53e" + }, + "verify/results/multiplayer/l2-socks.log": { + "mode": 420, + "sha256": "109b630d6548d07404f9f905e6c527f10e25221698f1b66226f67f94c5f294b5" + }, + "verify/results/multiplayer/l2-turn13-client.png": { + "mode": 420, + "sha256": "d19f17c4219f21f6c9950440d528a1a91fe3907761df21fd0ba99321b8820baa" + }, + "verify/results/multiplayer/l2-turn13-host.png": { + "mode": 420, + "sha256": "811efcfb571d60435f772a3b619bb329717d1e162b88e440ec0d636b1c6042fc" + }, + "verify/results/multiplayer/w2-internet-browser-no-error.png": { + "mode": 420, + "sha256": "6409b977056c95b29928a0098f75fffd71c501128f9d9325c3000837131c8791" + }, + "verify/results/multiplayer/w2-join-manually-dialog.png": { + "mode": 420, + "sha256": "86904e94a5aec41c1e89271d2712558c3b5055bd2ae4fededfda103d1e22fb71" + }, + "verify/results/multiplayer/w2-lan-browse-listing.png": { + "mode": 420, + "sha256": "6f5d16fa719fb63dd627fba551221c7665b69002e83fe35b8d84912cd7d8ce83" + }, + "verify/results/multiplayer/w2-lobby-client.png": { + "mode": 420, + "sha256": "ede652b21e2a4ea07c8132e4080ba903d1052ebca336bb007e1e8efa62787f10" + }, + "verify/results/multiplayer/w2-mp-turn1.png": { + "mode": 420, + "sha256": "59f9a1f5d8c0fff45d3ae3406dfd9878a5915f18e999d909a5238a90a3b86ed6" + }, + "verify/results/multiplayer/w2-mp-turn2-client.png": { + "mode": 420, + "sha256": "d9da4c151cd8290f80b31eb5ed8a74a0a30a87d1f7a80a179fa082a9439e08e5" + }, + "verify/results/multiplayer/w2-mp-turn2-host.png": { + "mode": 420, + "sha256": "910efd36b4a7c1a85d8ad487660f856339af037b9b00fef0cafd5e77ebdc36e5" + }, + "verify/results/multiplayer/w2-tier0-filtered.pcap": { + "mode": 420, + "sha256": "e108778fd1afb7718c53a4164310b8523415ef073706d310583dab424e5921cc" + }, + "verify/results/saves/ac-turn20-raider.sav": { + "mode": 420, + "sha256": "ee787db8f63d8f564c597bd5a82709790a0fdf47827912037f96b736f2cbed34" + }, + "verify/results/saves/ac-turn22-raider.sav": { + "mode": 420, + "sha256": "0faeaa601e6a867876819e5646b85f8787851093b8e6bd6e3946eb867f2dcc74" + }, + "verify/results/saves/ad-oracle-A-post.sav": { + "mode": 420, + "sha256": "a634510e7208cceb10d8ce016ceb0153601f11d7291f08122bcdb6418e313331" + }, + "verify/results/saves/ad-oracle-B-post.sav": { + "mode": 420, + "sha256": "676b1778880b5d4784ba7f6ef48b1a8e56745adab70a815943b7744876686260" + }, + "verify/results/saves/ad-turn27-two-raiders.sav": { + "mode": 420, + "sha256": "1c8baa27680809d585ab1728391e82729642d32aaedffd5bf95b616f0a11a436" + }, + "verify/results/saves/ap-deploy-turn15.sav": { + "mode": 420, + "sha256": "844f2b746060dc2c4e2099cdc6ceffd5f55ef858c9e347df28c8aca3041f7165" + }, + "verify/results/saves/ap-oa-turn16.sav": { + "mode": 420, + "sha256": "e296394f578b3a5668e5934b9eec8d6c4638ca7411200078f97de1abd346f4c5" + }, + "verify/results/saves/ap-ob-turn16.sav": { + "mode": 420, + "sha256": "262f8bda97c9511d8d2b41e6a8a0582d6f5364c2b01b1caf99e639d0e4f53ebe" + }, + "verify/results/saves/ap-turn22-spydetected.sav": { + "mode": 420, + "sha256": "91381bd7e722ac3847795a402d78ebb31d74dbb5d2909f33d243aec3ef8abaf8" + }, + "verify/results/saves/ap-turn25-spydestroyed.sav": { + "mode": 420, + "sha256": "46380fcf4498d67507e4471eb9ee3762647c53ee5473be142fe5c34e37344bc3" + }, + "verify/results/saves/ar-oracle-A-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-oracle-A-pre.sav": { + "mode": 420, + "sha256": "15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca" + }, + "verify/results/saves/ar-oracle-B-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-r1-turn43-post.sav": { + "mode": 420, + "sha256": "37f4a54fd32303fdcc86522b07104fbf2fcb124eec9b1f7005b3446fefcc429f" + }, + "verify/results/saves/ar-r2-probes8-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/ar-turn37-816raiders.sav": { + "mode": 420, + "sha256": "b6f4e05ff226eabd1695003b36293553642553cea96ef417364393e2332a7094" + }, + "verify/results/saves/as-turn14-predeploy.sav": { + "mode": 420, + "sha256": "53986f8511cbf9920f32e2ea406ccf531dd08903fa5d06024fcf03ea7627221d" + }, + "verify/results/saves/as-turn15-spydeployed.sav": { + "mode": 420, + "sha256": "854a10fa1ea602f0f7909f9bf9154942e56ea5fa1db4cce47d6d32bf53952e08" + }, + "verify/results/saves/az-turn11-16destroyers.sav": { + "mode": 420, + "sha256": "501583c7cf2ac81c9db3191203cd3dc5ba5b9e228b9b9ce3dbdcc3650d0070a9" + }, + "verify/results/saves/az-turn23-tarka-comraid.sav": { + "mode": 420, + "sha256": "3d5eb826c149d1fd0278c746f32e6148ca9883a1bc5b522c0d5e6e13fac9788a" + }, + "verify/results/saves/bp-pinA-turn28.sav": { + "mode": 420, + "sha256": "e913ff41188211c02d536da616337544e64133996cd7cc7a6521a8df1960226f" + }, + "verify/results/saves/bp-pinB-turn28.sav": { + "mode": 420, + "sha256": "724528ffde9a7514b69ab9e82ed3b8c8ade63d622c0720de30503a73a92df11e" + }, + "verify/results/saves/bp-turn28-pre.sav": { + "mode": 420, + "sha256": "16f63adbf383946db17c381998957172bca803406b7df78f3b03805fef0bbcb8" + }, + "verify/results/saves/bq/bq-1A-endturn.sav": { + "mode": 420, + "sha256": "1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39" + }, + "verify/results/saves/bq/bq-1A-post.sav": { + "mode": 420, + "sha256": "56980aa086e1a145b00f781b9d9cf618b152986f1c2267b9fd96cca0f1f604b9" + }, + "verify/results/saves/bq/bq-1B-endturn.sav": { + "mode": 420, + "sha256": "1a9d937b8bd9c4bb33dd235d4d6ad6e3b38d9f842fc740839e42e06f52356d39" + }, + "verify/results/saves/bq/bq-1B-post.sav": { + "mode": 420, + "sha256": "b36ac0ec2986f3a814dd22ca312c895ba6ec8a0e55fca54d8a7fd08a2f96a2c4" + }, + "verify/results/saves/bq/bq-1bA-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bq/bq-1bA-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/bq/bq-1bB-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bq/bq-1bB-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/bq/bq-res-post.sav": { + "mode": 420, + "sha256": "28bbd9b5c377afcd8f075b535eb1036ee46acf71ab614e7091ccdbdfb3703db2" + }, + "verify/results/saves/bs/bs-C-endturn.sav": { + "mode": 420, + "sha256": "15b99255e1f03dab3e35ab8c1ac64f221cb5aa9321f113c7a6e3d1263c3f34ca" + }, + "verify/results/saves/bs/bs-C-f38-autosave.sav": { + "mode": 420, + "sha256": "0fe8f37479a702d2e4e7752e6cb160dc242f00a082dc4115b7d10c77b24989f0" + }, + "verify/results/saves/bs/bs-C-post.sav": { + "mode": 420, + "sha256": "7a8b3d5eb3a60ebac9f40646d3e4b15768a24a0af047a439ce090c7cf38e8b38" + }, + "verify/results/saves/bs/bs-L-endturn.sav": { + "mode": 420, + "sha256": "33e3009254f5acd17417053d88372f3d6851e0206932db0f9201cbce6c0f5b21" + }, + "verify/results/saves/bs/bs-L-post.sav": { + "mode": 420, + "sha256": "4c356f5916f0e6e4b0ba5f147e31177ae946abd6be2d124559e44c8a13b8ed10" + }, + "verify/results/saves/cb-c3-turn1to2-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-c5a-turn1to2-pinned-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-c5b-turn1to2-pinned-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/saves/cb-turn2to3-autosave.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/saves/cb-turn2to3-endturn.sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/saves/certified-pairs.md": { + "mode": 420, + "sha256": "4e1cfb79cf5a51446b2eae21f91b565348ffa95a9ebac8f95e23019012aefb57" + }, + "verify/results/saves/cr/cr-oracle-autosave.sav": { + "mode": 420, + "sha256": "79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420" + }, + "verify/results/saves/cr/cr-oracle-endturn.sav": { + "mode": 420, + "sha256": "e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f" + }, + "verify/results/saves/cr/cr-replace0-autosave.sav": { + "mode": 420, + "sha256": "6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5" + }, + "verify/results/saves/cr/cr-replace1-autosave.sav": { + "mode": 420, + "sha256": "8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235" + }, + "verify/results/saves/determinism-hashes.txt": { + "mode": 420, + "sha256": "bfa0615c4b310ae21c09a7d373d5a9d8799f36a0460089e5950fa0edf9d614d2" + }, + "verify/results/saves/human-turn11-spytechs.sav": { + "mode": 420, + "sha256": "aa63dd3d5489884f70d9c35acfb06c23c84531f403798842e7b0cf8cde94d1d4" + }, + "verify/results/saves/human-turn15-spyprogram.sav": { + "mode": 420, + "sha256": "22306d26f8831b90a62c00a2ebad5a97e77017b62ee96a7439d4c2c76c455cca" + }, + "verify/results/saves/human-turn2-orders.sav": { + "mode": 420, + "sha256": "9a94dec562622310893d6f522a0fae06f1033470f4182098e808b175e7df7c8d" + }, + "verify/results/saves/human-turn3-noderoute.sav": { + "mode": 420, + "sha256": "6db0912a050a846c8f3a184811644c76df3fdb65e83dffbf70289e21cc098a90" + }, + "verify/results/saves/human-turn5-traderoutes.sav": { + "mode": 420, + "sha256": "3829e6c6d8f26cd1183a972bd66edadbd71364c11a224b0a6e40461011bcab29" + }, + "verify/results/saves/human-turn8-traderoutes.sav": { + "mode": 420, + "sha256": "afeb3b2d724e07cf59f15eb1bdb9fcf853391fc06fe21beb20c069ff75b2f836" + }, + "verify/results/saves/turn1-state.sav": { + "mode": 420, + "sha256": "a3f9dc4b49fc669c814b09b87a9c6795de21bac80a1c7bfe3901b8e239fa36cc" + }, + "verify/results/saves/turn2-state.sav": { + "mode": 420, + "sha256": "ab4ac2d7e2977260a4de916f65c7ecc6dd5b0094dac4bb51241317232ea17ab4" + }, + "verify/results/saves/turn2-strict-issues.txt": { + "mode": 420, + "sha256": "33a169a2de29ad502e9b7c0159cd543e0b4d71f2d9b3903f5be58c7846db2429" + }, + "verify/results/saves/turn3-state.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/saves/zuul-turn15-orders.sav": { + "mode": 420, + "sha256": "ef86a0d61de3533f023af5dc2b9a5720e4e0c5c97d900d88181603a13db7d045" + }, + "verify/results/saves/zuul-turn16-noderoute.sav": { + "mode": 420, + "sha256": "b6b5d283b62cc46bca914e86c34cf45e8960a653e818e59664087429bbb30103" + }, + "verify/results/saves/zuul-turn17-orders2.sav": { + "mode": 420, + "sha256": "1b863e684edecb4afe738ba30c8132065ebcf2d9977409325e714fe0173056e8" + }, + "verify/results/saves/zuul-turn17-rollpending.sav": { + "mode": 420, + "sha256": "aac5ba5b10ff1af6b0e38c565b2f0a60c16858ee4e89dd2a2f5b037eae95ee7d" + }, + "verify/results/saves/zuul-turn23-fleet23.sav": { + "mode": 420, + "sha256": "fd3748327d87b8c478f50fcd09d097eacff21e57d946ecb43b8119b4d0d78b1b" + }, + "verify/results/saves/zuul-turn5-species5.sav": { + "mode": 420, + "sha256": "48559ab5b719b332e47b4bf43af85a616bff1508125d62edb211b80637234af6" + }, + "verify/results/shim/ac/ac-probe-run-shim.log": { + "mode": 420, + "sha256": "b9b4a5f0e399e16b477cde0bd7e2c4ce378549eb5a467f7b8ae5eb64d75cb106" + }, + "verify/results/shim/ac/ac-probe-run-watch.txt": { + "mode": 420, + "sha256": "543d76d150aeb9318b9ae27acf638b8935eea30b1a2d47fb15354b584a458163" + }, + "verify/results/shim/ad/ad-r1-shim.log": { + "mode": 420, + "sha256": "fec98888b030ed42b84551aac1286c0baeaf15b8a545af068dc6605615e96df0" + }, + "verify/results/shim/aidesign/parse_aidesign.py": { + "mode": 420, + "sha256": "fbd4aeb71db548759bdb1ff65a5fdd0af6c192927e6ebe4b510f1083c3bdba13" + }, + "verify/results/shim/aidesign/sd-br-p1-hashes.txt": { + "mode": 420, + "sha256": "cd276116a51df01129f0e840d4c04f7964be34f75e51c384cd8df65969f458e6" + }, + "verify/results/shim/aidesign/sd-br-p1.txt": { + "mode": 420, + "sha256": "325cb9fcfa505ab2a93bbd00d60a7a4644b6b5970cb16a288cc7a43f2e825dd3" + }, + "verify/results/shim/aidesign/sd-pin-p1-hashes.txt": { + "mode": 420, + "sha256": "f0371c0a439d736ae7e67e71bd87d693481100d08243d16a1ac1f2ad0ab8bdce" + }, + "verify/results/shim/aidesign/sd-pin-p1.txt": { + "mode": 420, + "sha256": "45e693d279899e7a04cf59bda67190058896b56f3b0607d5aee21abb12f03071" + }, + "verify/results/shim/aidesign/sd-pin-p2-hashes.txt": { + "mode": 420, + "sha256": "e7d6dc12a940305087ee03dc7f8826f3c6343d24d8fea0f2aa78665d887138c9" + }, + "verify/results/shim/aidesign/sd-pin-p2.txt": { + "mode": 420, + "sha256": "b0206869206bc3a41bebb5175e31179f1a5d125a44b5ddfc10c67c4a0d13c22c" + }, + "verify/results/shim/aidesign/sd-t15-p1-hashes.txt": { + "mode": 420, + "sha256": "1ee71a623eb17e08c623ec8de3775218dc3a7c2de50d36a25dd2395382195962" + }, + "verify/results/shim/aidesign/sd-t15-p1.txt": { + "mode": 420, + "sha256": "df9f4906ee8bbb2efc9ba9a38c41607b89711d0bc9f705473d8448e9715d9280" + }, + "verify/results/shim/aiorders/cb-c1-turn2to3.txt": { + "mode": 420, + "sha256": "9d5014b346cb0fa9e2172f45db77c4437a03b069930eaaa80ea94e742891eb8f" + }, + "verify/results/shim/aiorders/cb-c3-turn1to2-run1.txt": { + "mode": 420, + "sha256": "fdaf27a32b93fdb3024f7a45f0d90b2cf833d3f592960027c3a6cf4ecbb8c616" + }, + "verify/results/shim/aiorders/cb-c5a-turn1to2-pinned.txt": { + "mode": 420, + "sha256": "d4daa0c2599c1b573ed59617243a392861dbc4e1fbeb707c7248708c015d998f" + }, + "verify/results/shim/aiorders/cb-c5b-turn1to2-pinned.txt": { + "mode": 420, + "sha256": "9682186176024242fddb901b10d9a5ad6beba91bd895c2001ca954fc293eab73" + }, + "verify/results/shim/aiorders/l4-research-run1.txt": { + "mode": 420, + "sha256": "5caf1fa25b7b8c2d6af213e59c6ec821be3c46cdd92a1024a6faf5d0a3b1d71c" + }, + "verify/results/shim/aiorders/l4-research-run2.txt": { + "mode": 420, + "sha256": "846ef2cfbc365e7ee2f481048978baf820d57026737261bfba3a328d59cdaad8" + }, + "verify/results/shim/aiorders/l4-turn1to2-aiorders.txt": { + "mode": 420, + "sha256": "c55d9b3c48cb552c02731003c26bb6dfcb8afb611c2a188d21fd4a39f550d269" + }, + "verify/results/shim/aiorders/l4-turn1to2-hooksoff-autosave.sav": { + "mode": 420, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8" + }, + "verify/results/shim/aiorders/l4-turn1to2-instrumented-autosave.sav": { + "mode": 420, + "sha256": "e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d" + }, + "verify/results/shim/aiorders/l4-turn2to3-aiorders.txt": { + "mode": 420, + "sha256": "696c34996e4b5be0383794fae7ea114779f7fdd0a8cdceff5a00aeb07392933a" + }, + "verify/results/shim/airng/par-br-p1-hashes.txt": { + "mode": 420, + "sha256": "656b1d0c073d9988287e5b76543e42eb1c050d9ebc9872e2b7ec5208b7534b42" + }, + "verify/results/shim/airng/par-br-p1.txt": { + "mode": 420, + "sha256": "eadf1cfb7efd7b374472867ddf1cea5f60e30096090c950049f0c264b0299398" + }, + "verify/results/shim/airng/par-br-p2-hashes.txt": { + "mode": 420, + "sha256": "d97916075c7b4c10464962e9e38aed69288a4d68a16a369c1133df16fa134146" + }, + "verify/results/shim/airng/par-br-p2.txt": { + "mode": 420, + "sha256": "bda355cbbf07301cd6d3716eba32312261c402848c91780a97a6d5cce14c3d92" + }, + "verify/results/shim/airng/par-pin-a1-hashes.txt": { + "mode": 420, + "sha256": "5eb1b557826d45fe9d843b37a92aaef54cd1b8a60900f9c34b4fe25e4bd46a24" + }, + "verify/results/shim/airng/par-pin-a1.txt": { + "mode": 420, + "sha256": "17750bab77512434dcc9e66fc86cbfc34df497cadab5b732cf3b0ef3958e09a4" + }, + "verify/results/shim/airng/par-t1-br-p1-hashes.txt": { + "mode": 420, + "sha256": "7577c33ec33d9e94fb77225929c1f34a3dd94c18fe72a394017811b3b5d53467" + }, + "verify/results/shim/airng/par-t1-br-p1.txt": { + "mode": 420, + "sha256": "8bc9969e2da730d26cc5538b758858a00a4ba6ab2d398458ff4dece1edf8bf92" + }, + "verify/results/shim/airng/par-t1-br-p2-hashes.txt": { + "mode": 420, + "sha256": "7e60fc8615163e8ebccf22fc8910f2e7c4f72a9be7a74bc832bc2a0f64ade0da" + }, + "verify/results/shim/airng/par-t1-br-p2.txt": { + "mode": 420, + "sha256": "7e50a728eb5909bd602a9e6996b908b1b2665c8c983cc0258dad000c8bff8e35" + }, + "verify/results/shim/airng/par-t1-br-p3-hashes.txt": { + "mode": 420, + "sha256": "00ce6b3b4c9dbfd192d09b3b06d91b95576cee8a5a85fccdc36a85547fbdcbc4" + }, + "verify/results/shim/airng/par-t1-br-p3.txt": { + "mode": 420, + "sha256": "28cdf1f6b83c1764f1d1e51a67e3f873566b8503f8504ef52f5b5af24b21c0cb" + }, + "verify/results/shim/airng/parse_airng.py": { + "mode": 493, + "sha256": "3fafa7cf2363620d6a25248d085fbc4e3bd1fdbb9388a6795244834a9a2a2ed0" + }, + "verify/results/shim/ap/ap-probes8-d.shim.log": { + "mode": 420, + "sha256": "115545172568edc6a1d5bb3b559f968aa8a7aaa1f6aeba970daebce98fe56a0c" + }, + "verify/results/shim/ap/ap-probes8-w.shim.log": { + "mode": 420, + "sha256": "8af0897a884bb314958c5e6f2fccd88ff8b1890322dafd3bc904b3f983838620" + }, + "verify/results/shim/ar/ar-r1-ledger.txt": { + "mode": 420, + "sha256": "44bddfc0b9e94812a3a1cfd681a1350caedf2ed8e1174900c2f81c90dc95187e" + }, + "verify/results/shim/ar/ar-r1-probes.txt": { + "mode": 420, + "sha256": "c10251c9bcca5436dc42b2c0bd37b66c144aec4036f2069c2df9340fd764992c" + }, + "verify/results/shim/ar/ar-r1-shim.log": { + "mode": 420, + "sha256": "07003ee203d60a638cc8a1cb0a0f6b8042ba227705b4355f1254312c6dd54e28" + }, + "verify/results/shim/ar/ar-r1-sites.txt": { + "mode": 420, + "sha256": "d1923d549ef3567488d0382ae0ef75fa25c5b1b5812ee5349c5c47aea7a30514" + }, + "verify/results/shim/ar/ar-r2-shim.log": { + "mode": 420, + "sha256": "06dbf04cff5a56b0e55d8e73e5b1e3e9d9235f4afafc8139517b68d676781909" + }, + "verify/results/shim/as/as-probes8-run.shim.log": { + "mode": 420, + "sha256": "cd25c93d8b79e0f0df594fe681917fe880741a54a4188d4d72d2fbc6c42ba8d9" + }, + "verify/results/shim/bp/A-aiorders.txt": { + "mode": 420, + "sha256": "ee9f8bb1073e3bf02e115fdee014f79b11100a0e1e35e308c2bcd4b798302c34" + }, + "verify/results/shim/bp/A-shim.log": { + "mode": 420, + "sha256": "853eab98d09ff1e7a8e7da375a678561b02d6236adec627202ff3bb34d90e797" + }, + "verify/results/shim/bp/B-aiorders.txt": { + "mode": 420, + "sha256": "07daeacf33a16afbed64a8a01ffd26fa73c6d2acd0e6993dd9deb06a7fd93fc3" + }, + "verify/results/shim/bp/B-shim.log": { + "mode": 420, + "sha256": "cde2202333e81cc4eec2c47915181229a68a5fa99879968905a2809c4fe0a79a" + }, + "verify/results/shim/bp/L-aiorders.txt": { + "mode": 420, + "sha256": "28492b0f9be74f61db45eae49b44b41efbc1a3bf6f6d2c888e5cc40bfb7753bd" + }, + "verify/results/shim/bp/L-shim.log": { + "mode": 420, + "sha256": "550d8986a35b3f4742e7522df11bfbf2e832e417ad42cc1bff1a39dd4ee510fd" + }, + "verify/results/shim/bp/statecheck-AB.txt": { + "mode": 420, + "sha256": "dacb5cfa5541934f37b2b1c02b87e809c3f65ba8488aa88d925b295fade0083d" + }, + "verify/results/shim/bq/bq-res-aiorders.txt": { + "mode": 420, + "sha256": "991543eb53fbf1353fe99ed96d4ca358e05f6bac32f00bd1f6dc60fcc002c8b4" + }, + "verify/results/shim/bq/bq-res-shim.log": { + "mode": 420, + "sha256": "7855bd268f69443e7ddfda71873458144728630264703482901bf6d8ffbccd3a" + }, + "verify/results/shim/br/BR-aiorders.txt": { + "mode": 420, + "sha256": "d71e11e7c40aaa740adc55651af556afb9e92768336bc11747ad67151f33f4d1" + }, + "verify/results/shim/br/BR-airng.txt": { + "mode": 420, + "sha256": "04eaeaa688a448f64df00dedfd692b78bca0e3e1207a8292c2fafad507f919ea" + }, + "verify/results/shim/br/BR-shim.log": { + "mode": 420, + "sha256": "bc6ef7aa465c2b1a81d08555174e15fb1a97a207da9eefaa8a6155440869a13e" + }, + "verify/results/shim/br/BR2-deep-aiorders.txt": { + "mode": 420, + "sha256": "b9edb53f7d56c1bb26d3bb77349543dce9564930484bc832475a3a04e5f2ad15" + }, + "verify/results/shim/br/BR2-shim.log": { + "mode": 420, + "sha256": "0de7609693747fdf0abaebd60598af127c918f32561c993715aead91cd24b334" + }, + "verify/results/shim/br/aiorders-diff.txt": { + "mode": 420, + "sha256": "411ceb2bacd62185d25a3c58f199c0bdfcd2759705bef2b36536da3870f73a67" + }, + "verify/results/shim/br/cmp_aiorders.py": { + "mode": 420, + "sha256": "b6c192efb40866aa56f29d9ba2b89e17f18ae0579645db8f34a01010db09cc28" + }, + "verify/results/shim/br/shim.cfg.brdeep": { + "mode": 420, + "sha256": "b8017e344666df816f1191906cf8f54504d631bb7ce9d2f51f6f959e4934ff04" + }, + "verify/results/shim/br/shim.cfg.brprobe": { + "mode": 420, + "sha256": "4f090999dba63ef22ab4993bd6af557e9500819c84f27decc126771f48f98efb" + }, + "verify/results/shim/bs/C-aiorders.txt": { + "mode": 420, + "sha256": "5abc20b68edf6ff52301c01825040e1d6b41b582ba40403ed6c4edc42dcbe4e2" + }, + "verify/results/shim/bs/C-airng.txt": { + "mode": 420, + "sha256": "5a4a56506d1eeb82d3bf0fbba95842566911178a82f0aad9d700a9fe00f1b300" + }, + "verify/results/shim/bs/C-shim.log": { + "mode": 420, + "sha256": "8b8dad987589fd159e789806e89dbcf7a7b40b86446d55e1d0bf10ff25cb8f6f" + }, + "verify/results/shim/bs/L-aiorders.txt": { + "mode": 420, + "sha256": "a03e8c1587633ecbb683c376f30e35e126e98ff0e8204c4ee6b5e2b4fc254104" + }, + "verify/results/shim/bs/L-airng.txt": { + "mode": 420, + "sha256": "8d21083857facd3728446af612b3a97b47e5287a5fe0bdf01423812f8445dacd" + }, + "verify/results/shim/bs/L-shim.log": { + "mode": 420, + "sha256": "246af272e464c715c7abb00471b4ddc404b81143f4065006aa4daec4d82cadb9" + }, + "verify/results/shim/bs/shim.cfg.bsrun": { + "mode": 420, + "sha256": "570b15c208d31a367ec6c6886019693cb17b98d254cebead11ec6746ae5af256" + }, + "verify/results/shim/bu/BU1-aiorders.txt": { + "mode": 420, + "sha256": "944eeb701fcd22480513c34d93f8310541977e89a24ae237bd947aed44092529" + }, + "verify/results/shim/bu/BU1-aivisit.txt": { + "mode": 420, + "sha256": "721f038ef80be92325728fc30f095846b54ff1ac67a41537d4a4d1b97d5e9758" + }, + "verify/results/shim/bu/BU1-shim.log": { + "mode": 420, + "sha256": "28ca02f56823e577662744108965bc3ab1d7241143704ac8ceaacf2e9cd077f3" + }, + "verify/results/shim/bu/BU2-aiorders.txt": { + "mode": 420, + "sha256": "5c388039a3e832465f67b4ca88f3f67550d5189a3a68f33c508c4a467733c9ac" + }, + "verify/results/shim/bu/BU2-aivisit.txt": { + "mode": 420, + "sha256": "19963ed364f47fd965508d96fbf9d1f424938f711f2b1cdc83697f789189271a" + }, + "verify/results/shim/bu/BU2-shim.log": { + "mode": 420, + "sha256": "c0a8c467bc4b4134dc83ca5dedbbfed8dac887b432a56cd12f6e211c8d58daca" + }, + "verify/results/shim/bu/BU3-aiorders.txt": { + "mode": 420, + "sha256": "b6443b3f7db541149f54435f14ba830f54d2f950420f3f0694ff12a8b1eec143" + }, + "verify/results/shim/bu/BU3-aivisit.txt": { + "mode": 420, + "sha256": "fe67a4a1cc6a67e06b2eb5675b4b8543ab9f25ea39a18d7f4c83bce74482e0cc" + }, + "verify/results/shim/bu/BU3-shim.log": { + "mode": 420, + "sha256": "0a802ec556c87f44efaa06f211e75d9b89a66ac6db5a08e34d2a7eae992121ed" + }, + "verify/results/shim/bu/claim-order.txt": { + "mode": 420, + "sha256": "7135e3ed0204a4615e546bc882992073d4b48ee42ea341186c32b6b3dd3dfc47" + }, + "verify/results/shim/bu/claimcheck.py": { + "mode": 420, + "sha256": "85c5ec747f12cf37ec2dbc4021447909eeded68ecd1abb697a6fb60005a54aff" + }, + "verify/results/shim/bu/shim.cfg.bupin": { + "mode": 420, + "sha256": "6b37b047adc95f7c08b6767cdec5bd715a8851f14bff7f187772835d1cc032a7" + }, + "verify/results/shim/cr/cr-N.log": { + "mode": 420, + "sha256": "d5459e6dcf44fbe55d0f60f1ac40d68bed96319bb55986cc24a1b9ca0d8103e0" + }, + "verify/results/shim/cr/cr-R0.log": { + "mode": 420, + "sha256": "3b703881aa2b9a1c111201ff9543f2dcae0f948567ee877df275a1093bb567f7" + }, + "verify/results/shim/cr/cr-R1.log": { + "mode": 420, + "sha256": "8df6af84f74891ff9b0b02fa150641f5fadcd0419bc53c41cbe80bf14ec9c712" + }, + "verify/results/shim/eventlive/c6b-loaded.png": { + "mode": 420, + "sha256": "f442d4b211a47b331cef9a255e83732b80a1ede70ac200596c796ac0aa320017" + }, + "verify/results/shim/eventlive/c7b-turn3.png": { + "mode": 420, + "sha256": "3e070abfbdf4efd2662951049f8545f328aa172d64d00b9c5a1f4243426e803a" + }, + "verify/results/shim/eventlive/load-dialog-8files.png": { + "mode": 420, + "sha256": "e0fc5af16042a70b53bf7d44220db56c56a466c22c4abd641557e94b8e6c1693" + }, + "verify/results/shim/eventlive/shim-zuul.log": { + "mode": 420, + "sha256": "f9d184b33c46cab9d497f7a38056c099ce2ff9b5e8149f563a2353d91985fea1" + }, + "verify/results/shim/eventlive/shim.log": { + "mode": 420, + "sha256": "e65f2e3efa1ce8f70c483bb966448239923db2d3924c709a669bb1a890411b0c" + }, + "verify/results/shim/eventlive/t7-after.png": { + "mode": 420, + "sha256": "dc0a3e8f5a5c9032ead266d106fa69a57677711eb807d26376f29baa6ec0b934" + }, + "verify/results/shim/eventlive/zuul-turn1.png": { + "mode": 420, + "sha256": "f9af979ed08315c0a8d644af800318634b3641628f710f3f9b4d2c77d4f70fdc" + }, + "verify/results/shim/l1/README.md": { + "mode": 420, + "sha256": "f008081756d99825aa81d2802869476f8341f81aeb8c4dbbb77502cf76db5145" + }, + "verify/results/shim/l1/cdiff-frames-2-51.txt": { + "mode": 420, + "sha256": "57cb1911c5bfc7bdfacafc6bb1ad382fc05f46fb9cdcee4479d861af48e585c1" + }, + "verify/results/shim/l1/cdiff.py": { + "mode": 420, + "sha256": "2ace41ce6017cfac8758d8b9955f02de84738d90067a7dfadeb8bffffc842027" + }, + "verify/results/shim/l1/rep.py": { + "mode": 420, + "sha256": "1a7a3819da8e9aeaaf213a62b696388b0a9489924c964407536831b5f7dd9488" + }, + "verify/results/shim/l1/saves/l1-t1t2-post-hooksoff.sav": { + "mode": 420, + "sha256": "e43ec1d2b443c1017d06b21eb8c76b927613ed49aa78bca46a595a9acb368d1d" + }, + "verify/results/shim/l1/saves/l1-t1t2-post.sav": { + "mode": 420, + "sha256": "62061918176e344106e82357e58acc8adec488f6b2969831cb99a84cf25e31c5" + }, + "verify/results/shim/l1/saves/l1-t2t3-post.sav": { + "mode": 420, + "sha256": "2177c659d8dbc39cf7485abe367d42d55cc42cc9a61949d403dcbc79989ec32d" + }, + "verify/results/shim/l1/saves/l1-t2t3-pre.sav": { + "mode": 420, + "sha256": "641a33f06b2fe1c1caf0c4994442bf13a4b03f25a85b34a9875cd22b75715896" + }, + "verify/results/shim/l1/seed-two-processes.txt": { + "mode": 420, + "sha256": "d60412049ced59705284a46078f1906e1aad4140f90db2169e08aeb9530dd985" + }, + "verify/results/shim/l1/seedrep.py": { + "mode": 420, + "sha256": "a06de5d5ccc1e87808eb3877534076340ef5330bee9a86953b8f4dae0268e087" + }, + "verify/results/shim/l1/trace-et1.jsonl": { + "mode": 420, + "sha256": "f21a213bc56983bc94f24303b0837b160f93bfb7e3ca6abdbf2e18321f8dfa19" + }, + "verify/results/shim/l1/trace-et2.jsonl": { + "mode": 420, + "sha256": "6e44b0fc541c3082f91b115de67f5315f43b9db21f0696b856cfff2ead51323a" + }, + "verify/results/shim/l1/trace-oracle.jsonl": { + "mode": 420, + "sha256": "ad9ecbe79a71c84930302868850806798228fe0f2e625b442dd3ed579c05092c" + }, + "verify/results/shim/l1/trace-playforward-f51.jsonl": { + "mode": 420, + "sha256": "6ed0af385dfe7288ad2c994458c8f5d75fc8e29b603dd6607a3703591d25eeb4" + }, + "verify/results/shim/l1/trace-seed-proc1.jsonl": { + "mode": 420, + "sha256": "120074583eb02cd4c3a29aab5826f789d52a6146930b1763f9b0bb824e9a350a" + }, + "verify/results/shim/l1/trace-seed-proc2.jsonl": { + "mode": 420, + "sha256": "03dffeafeff0c33d926207f869741dc544141425c8f665bf58aad4fd363e2f95" + }, + "verify/results/shim/l1/watch-arm.txt": { + "mode": 420, + "sha256": "f8d5811c938d16d003a72a97f2b4b33112914a7ee378fa2b334282616592943e" + }, + "verify/results/shim/l1/watch-hits.txt": { + "mode": 420, + "sha256": "1bf62ac965036a189055cd59a92007c70a2a6aca307df54ce8ccb997048f43d5" + }, + "verify/results/shim/l3/l3-probe-run-shim.log": { + "mode": 420, + "sha256": "f5cd336971ae3d3eaff642e80d9defa20ec2e1ee11e212a082c24365b18d8684" + }, + "verify/results/shim/l3/l3-probe-run-watch.txt": { + "mode": 420, + "sha256": "8d969595789c690a688f7b8fac05288c614d5d9210388ca94315158948c85f24" + }, + "verify/results/shim/l3/l3-spy-run-shim.log": { + "mode": 420, + "sha256": "5abfd08445e9e8139945b095ddddfb56480062019ce6d40304a440c317f21fd1" + }, + "verify/results/shim/l3/l3-spy-run-watch.txt": { + "mode": 420, + "sha256": "c669ccf79202e7060c153151e4fe1be96acf4030cb64aa71bd6a5c212b550b47" + }, + "verify/results/shim/m0-main-menu.png": { + "mode": 420, + "sha256": "465207fda4722ca53585b71647a08b1149944036792a072e7c34e2c437a3e37c" + }, + "verify/results/shim/m0.log": { + "mode": 420, + "sha256": "581d63139503892b6aeeff71acb742143393e9f107aa1f3605d8c028c927cad1" + }, + "verify/results/shim/m1-shim.log": { + "mode": 420, + "sha256": "35401ea82b9a64dbfdb54c282c06c51d7b696afd4ea2794e16071e0fd5c7cbef" + }, + "verify/results/shim/m2-scout-shim.log": { + "mode": 420, + "sha256": "8c46117bdde6b6911a4d77b059b40803d4966652990c8fa3ed67773e5db0459f" + }, + "verify/results/shim/mf-after-shim.log": { + "mode": 420, + "sha256": "86601372b980828171e98fc71afe865f207b1745ef4dcdca646a618c91d17426" + }, + "verify/results/shim/mf-after-turn2.png": { + "mode": 420, + "sha256": "a1f83011ff96e990d7cc80f8306e8fe0c58b96f84eb73ccb6cb013019900133d" + }, + "verify/results/shim/mf-after-turn7.png": { + "mode": 420, + "sha256": "313f3863ab901320174c8ff7cf6f1f6b0d5b3d9d7a2f8999eae6413aedc46fc5" + }, + "verify/results/shim/mf-before-shim.log": { + "mode": 420, + "sha256": "8377a87c7ed05fd0cd7b61e3f1d5fc9c2b9fa294f812c67183d4ce31323a64b1" + }, + "verify/results/shim/mf-before-turn2.png": { + "mode": 420, + "sha256": "c9805791f402ec159fcc6acdd283120eae8536b230666d3049374525595b589f" + }, + "verify/results/shim/mf-before-turn7.png": { + "mode": 420, + "sha256": "3b880b8f96c4cc328aaff8e41068db29b295be8f000c432e321a51b6030b1272" + }, + "verify/results/shim/mf-human-home-no-ships.png": { + "mode": 420, + "sha256": "dfda3e9784eefdc7b75d04908e95c3a192eda7796685907c65bfde3068d6f2bb" + }, + "verify/results/shim/probes/human-t3-5-perturbed.txt": { + "mode": 420, + "sha256": "9b594ab18cdd9aec4fdf807b4d97576191bc6fd48a85cc872c222b515d0f7c01" + }, + "verify/results/shim/probes/human-t5.txt": { + "mode": 420, + "sha256": "0ddd9f0391a3a5d655f1809a9e79d537badd8071f8834e58bdbc7f95d9ff1320" + }, + "verify/results/shim/probes/oracle-restore/h-oracle-autosave.sav": { + "mode": 420, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "verify/results/shim/probes/oracle-restore/h-oracle-endturn.sav": { + "mode": 420, + "sha256": "bb4fd9ac89f41e3bc0db2af08b18ce83417521ac4bcee695fc9fa6ce16e30948" + }, + "verify/results/shim/probes/zuul-t24-25.txt": { + "mode": 420, + "sha256": "50567b7cb1f008d025baf6cb4b4ad7af7d767a2182afd082c3ac1b1a66c79541" + }, + "verify/results/shim/recap-b1-shim.log": { + "mode": 420, + "sha256": "601cd4cbbec3e8c1f7776eadc4203256ec4c5d1e3e180295369727e1da69ff37" + }, + "verify/results/shim/recap-b3-shim.log": { + "mode": 420, + "sha256": "7c5110a9d4431cc03729a7bddcb13ee69a6d428199051e175b0921391fc02a80" + }, + "verify/results/shim/recap-misc-shim.log": { + "mode": 420, + "sha256": "7cadf2eadb08979cda39fe7e3ed6cfa3f62bdbcd256fc7550b3e27c3f08c9b3e" + }, + "verify/results/shim/recap-misc-turn7.png": { + "mode": 420, + "sha256": "2c1451ded36ad79389f0eb3db098b4e0b0a6f12495d64c832f6e093374005c29" + }, + "verify/results/shim/recap-trace-shim.log": { + "mode": 420, + "sha256": "56da143a92b2edda727862a6fd4a056c716153e23cfddbde076e218ce4c4285f" + }, + "verify/results/shim/recap-turn2-loaded.png": { + "mode": 420, + "sha256": "62a42c44f99d8a53bca735d54a5adf48b89449bb859e859ec573cb40e1a7f2d0" + }, + "verify/results/shim/tailrng/save_rng_delta.py": { + "mode": 420, + "sha256": "a9a04b131427a43372d87688b8eaf230a82a79e2c3c241a90ff4eb31e039749e" + }, + "verify/results/shim/tailrng/z-t5-autosave.sav": { + "mode": 420, + "sha256": "b2124798470d85ea86b0e9e4abfd9e23f3be73caa1115dd7614021be76305939" + }, + "verify/results/shim/tailrng/z-t6-autosave.sav": { + "mode": 420, + "sha256": "2ce6aef9d49ea238455f3ac680556c6a251065af3e28b6540fe09597ae38571c" + }, + "verify/results/shim/tailrng/z-t6-endturn.sav": { + "mode": 420, + "sha256": "afb112896c0236fa715ab3c10139958294085bb2066e22a6d7b76deb0dfa46dc" + }, + "verify/results/shim/tailrng/z2-autosave.sav": { + "mode": 420, + "sha256": "b2124798470d85ea86b0e9e4abfd9e23f3be73caa1115dd7614021be76305939" + }, + "verify/results/shim/tailrng/z2-endturn.sav": { + "mode": 420, + "sha256": "8648957fecf5041233f9add4c8173f78981f026f133ecdbecdb89ddd10917048" + }, + "verify/results/shim/unlock-shim.log": { + "mode": 420, + "sha256": "20a6625b369acb773543e530f1bfdc8b7eaca5c6b58415cc5009bb9858e16f22" + }, + "verify/results/shim/watchpoints/w2-modcount-status-2turns.txt": { + "mode": 420, + "sha256": "335be910dc11a20c9fb80f3b0f37f04fd50a9d8074697bb5365c3fea02790b74" + }, + "verify/results/shim/watchpoints/w2-shim-log-excerpt.txt": { + "mode": 420, + "sha256": "9a344045270e3815004a3376eccfbd030372faba54374d9b6626fd80740b8b13" + }, + "verify/results/shim/watchpoints/w3-modcount-turn1.txt": { + "mode": 420, + "sha256": "328a2319e320f5382e82ad497b6b73245c397cf67515e8a27fa9712418af81ae" + }, + "verify/results/shim/watchpoints/w3-shim-log-excerpt-turn1.txt": { + "mode": 420, + "sha256": "a9b3c20f90a76ee624bde6ee4cae9d1ff1f2baa67aa770a0e70042cb44d11915" + }, + "verify/results/shim/watchpoints/w3-shim-log-excerpt.txt": { + "mode": 420, + "sha256": "af9fe2258fe4168f6066768809c509380183f61bc337331392c5202b900d906a" + }, + "verify/results/shim/watchpoints/w3-tshn-containers.txt": { + "mode": 420, + "sha256": "08eab48d1a202f975f1be87e2279379646142f8b22d9dafc56295399083ed0af" + }, + "verify/results/standalone/cv/cv-input-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "d29f3514e4209954d6c068f34285615aef5f4627ba4627ce97c0e65f93620159" + }, + "verify/results/standalone/cv/cv-leaf-worklist.txt": { + "mode": 420, + "sha256": "0f309711de89cc10cf940d0d4b051b5052ce49a3cc0f3f80c532b50256410778" + }, + "verify/results/standalone/cv/cv-noreplay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "3734f197cfefd017dbe562fd421d40859bfc2c37d9ac2cedf9c7ddd340a3a4a7" + }, + "verify/results/standalone/cv/cv-replay-run.log": { + "mode": 420, + "sha256": "7372c7da437ece21098cc6f66d0631e146d8aae14a9242bd2278a9922a7f7c02" + }, + "verify/results/standalone/cv/cv-replay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "1932158abec82f45b9b838f4cb79b1088190ca5281d388f57356af7776e96950" + }, + "verify/results/standalone/dt/dt-canonical-after.txt": { + "mode": 420, + "sha256": "f32fdcf7d6431293133e951045b42a55e8a27d75cd859ad08cd719e5fb696712" + }, + "verify/results/standalone/dt/dt-canonical-before.txt": { + "mode": 420, + "sha256": "b56160cfdcfa0fff25be2aa566959261e375004905814803e231889da665188f" + }, + "verify/results/standalone/dt/dt-observed-leaves-remaining.txt": { + "mode": 420, + "sha256": "e14bd20e60480f98a564e585c0d25d2e758f71016811b8981dbdacd9d51c0c82" + }, + "verify/results/standalone/dt/dt-replay-run.log": { + "mode": 420, + "sha256": "4b7907fc4e735b1c12e3cf64671079abaad757aabd752b134a9fb27d065656cd" + }, + "verify/results/standalone/dt/dt-replay-vs-bp-pinB.txt": { + "mode": 420, + "sha256": "8ddb84e7e6c2f663b1bc4b9611a56a46aac9d09863dcc5be765cb70dc9642c22" + }, + "verify/results/standalone/max-income-oracle.json": { + "mode": 420, + "sha256": "245796e0aea5f5c2238686cba10c651156117fb454805553b2508a8a8fe71a69" + }, + "verify/results/standalone/report.txt": { + "mode": 420, + "sha256": "b47e90432eaf38149f2ecb5316d1962813b6b1423848e36fcc9435ad1f5485df" + }, + "verify/results/standalone/rng-oracle.json": { + "mode": 420, + "sha256": "98a364c80f69d6a84b86c3f9ccc16176d9e769ff061569b0c0ddfced53f9146c" + }, + "verify/results/standalone/rng-oracle.txt": { + "mode": 420, + "sha256": "3496a217a7e4f80bb18c1b067eaedcafcf7bdc877460c6346606fd7f6a55b877" + }, + "verify/results/standalone/status.json": { + "mode": 420, + "sha256": "d38ca6222c83df3a5886e6b32a30772c7174cc0e584f4a3beabedc05770df9cd" + }, + "verify/results/standalone/t36-turnrecord.md": { + "mode": 420, + "sha256": "b017a93ad04af69ef469cd8ea536dff4cab17140d20b3665e7c89533ab5b8a84" + }, + "verify/results/state-checksum/ad-oracleA-vs-oracleB.txt": { + "mode": 420, + "sha256": "b6c440e20108ad2727a7d7aa32a4bd673ec03ca4372461797705d619de1ba48a" + }, + "verify/results/state-checksum/chain-turn1-3.json": { + "mode": 420, + "sha256": "33941d0dd77bfb79e4302f82a410f5f18fe3ae1ade684b5b59c6ed352789a696" + }, + "verify/results/state-checksum/chain.txt": { + "mode": 420, + "sha256": "ae1037dd8394b258ce91262877d348a0561c5f5056cfae74cc0d058e4166aa83" + }, + "verify/results/state-checksum/float-census.txt": { + "mode": 420, + "sha256": "c697c0f187ee8a8ebb157cbff8d7ae42c92f36a501b16acd9f9839a0ffc306a9" + }, + "verify/results/state-checksum/identical-roots.txt": { + "mode": 420, + "sha256": "1143fabfe96954440542adcd3830ad1d862be6c091f3c1b2e63e92a2751703e7" + }, + "verify/results/state-checksum/resave-localisation.txt": { + "mode": 420, + "sha256": "85f4e8fe3581ba5d0ae74974d757c4c2fddc008f3fbe6781891ae8ef65aa693e" + }, + "verify/results/state-checksum/roots.txt": { + "mode": 420, + "sha256": "6ea7ad668703baaff870720683bcc13beff557cebf8e7843526d6677e5b5ef68" + }, + "verify/results/state-checksum/turn2-to-turn3.txt": { + "mode": 420, + "sha256": "3649c86742460a54d89714df1917508f76952c44c07cb7fbc19010910c5df0f4" + }, + "verify/results/turncommands/br2-turn27-deep.tcb": { + "mode": 420, + "sha256": "329b9c3f1e9f85ddeeb71148bd5c0e38f7d26445ed349df60ffbfaf63db46102" + }, + "verify/results/turncommands/br2-turn27-shallow.tcb": { + "mode": 420, + "sha256": "d8346969421a92fa199d0b9faafa642dc2e71a527b08d27984fe73ee70ecbd6b" + }, + "verify/results/turncommands/cb-turn1to2-pinned-run2.json": { + "mode": 420, + "sha256": "01e572975339fbe8a242b2438719173bd5bb4f4916078e5887026408923eb356" + }, + "verify/results/turncommands/cb-turn1to2-pinned-run2.tcb": { + "mode": 420, + "sha256": "16e349db6c46e46520cd2e5f0a9fcf70b537dce878324dd873418ef6cebd8658" + }, + "verify/results/turncommands/cb-turn1to2-pinned.json": { + "mode": 420, + "sha256": "2d4f108b8ac6b1e582382ac25d53f354c293e7caf390b8462d15beaf8e43e01c" + }, + "verify/results/turncommands/cb-turn1to2-pinned.tcb": { + "mode": 420, + "sha256": "28ebfecc3495cc4f5b2892e420cb1b83f3cbdb6b7aabe107f4b1d18233a06094" + }, + "verify/results/turncommands/cb-turn1to2-run1.json": { + "mode": 420, + "sha256": "c9de70196af5453df15cfebcb92c973dfed9d54ffa0dc0a397839cf951ac9b58" + }, + "verify/results/turncommands/cb-turn1to2-run1.tcb": { + "mode": 420, + "sha256": "5cdcfb3ade6cdfb2c00c234f5535c791780230f520d27be14f617462347b4948" + }, + "verify/results/turncommands/cb-turn2to3.json": { + "mode": 420, + "sha256": "8a0d4fc9efae9dcb4eca0de41bf28444d79eb5a4fd4e426671a4d80ab5a46f44" + }, + "verify/results/turncommands/cb-turn2to3.tcb": { + "mode": 420, + "sha256": "420a5d03f2a4ecfa0789835cc46f98961d11bbd7c7fd5f59dc28301aa0b65b6b" + }, + "verify/results/turncommands/l4-turn1to2.tcb": { + "mode": 420, + "sha256": "1b9faa7f8aad9196e36cf1c450e340f37c502a69ccfcaaad7e289bd7b4727b12" + }, + "verify/results/turncommands/l4-turn2to3.tcb": { + "mode": 420, + "sha256": "b0443f176c3915389278de608a8e7c63fa48d4777b924c0e383c7279f2a297e0" + }, + "verify/save-reader/SAVE_FORMAT.md": { + "mode": 420, + "sha256": "5ac2556b6c063c9296ef29e8514cc312983d48a8e2c2832f504c970629990b33" + }, + "verify/save-reader/fixture_joint.sav": { + "mode": 420, + "sha256": "fbe41595e50bb580786f36b197d5b85f87820974c545107c864fa2f1862af3f1" + }, + "verify/save-reader/fixture_split.sav": { + "mode": 420, + "sha256": "3909f12d021bf840617dc8d599841b64d67be46e1c6882cba7728d312d310071" + }, + "verify/save-reader/save_reader.py": { + "mode": 420, + "sha256": "2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35" + }, + "verify/save-reader/save_writer_stub.py": { + "mode": 420, + "sha256": "8343ad15f742ee1b9cd62108efbc9c4b2718c3807442e3dfcfa9513ced7d3638" + }, + "verify/save-reader/test_save_reader.py": { + "mode": 420, + "sha256": "29f609d037eed99bb5444004facbff7b2c5c36fae568e815810585fdc3ddd393" + }, + "verify/state-checksum/STATE_CHECKSUM.md": { + "mode": 420, + "sha256": "5680299a4df27e30cdb545d9d2a640caf9299d61acb662b9512589e4390954e1" + }, + "verify/state-checksum/float_census.py": { + "mode": 420, + "sha256": "a568aad8b9f38aba2474f33941550bf948d050694a1d04dc5c85d15687223ae9" + }, + "verify/state-checksum/run_validation.sh": { + "mode": 493, + "sha256": "bf84b999d2b90368703e80235bac0258b70a1c37dd1902c9205a914a59cb1fc2" + }, + "verify/state-checksum/stability_check.py": { + "mode": 420, + "sha256": "8e640561b05decf590524fbe0dbf3b76a5e2f9c7fde93e005ca6e79464c305f1" + }, + "verify/state-checksum/state_checksum.py": { + "mode": 420, + "sha256": "ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8" + }, + "verify/state-checksum/test_state_checksum.py": { + "mode": 420, + "sha256": "d0ccf8e8390fd0a5d76a8695a490d85dc7e8e415a06ec50b592c57474cc9a73b" + }, + "verify/tooling/README.md": { + "mode": 420, + "sha256": "b05249530d65d43220c1e5c4666939c360d6139ed404a8881f6ad0a9c5c27af6" + }, + "verify/tooling/fixtures.py": { + "mode": 420, + "sha256": "56cccc88b9b9468e07c9ddff39d65813098053ec9e8f00432736906389f200a7" + }, + "verify/tooling/host-tests.json": { + "mode": 420, + "sha256": "90833c99e2749ff890b16b943f43f6ebfc1a1c611f2ed1e40555426fded45c97" + }, + "verify/tooling/test_tooling.py": { + "mode": 420, + "sha256": "bb8d15960dfda13f15cffc57f3b669003b127b4dedbf34100bb4a51c29dd3c6d" + }, + "verify/traces/.keep.md": { + "mode": 420, + "sha256": "b9ed9ae581d08f2411346c518e16cd894f159dbe569e3c778b31d9e9a3677786" + }, + "verify/traces/ac-probe-baseline-turn15.jsonl": { + "mode": 420, + "sha256": "a2f4e410f6a8d77f7680b4a69b5b2ac2f59fa80515b0cfe8209e7fec8e4a5b6b" + }, + "verify/traces/ac-probe-turn21-turn23.jsonl": { + "mode": 420, + "sha256": "2bb9317b82744c0da36ef6d9c1a78f31ebacea49b82a18005c0cc75bad62d345" + }, + "verify/traces/ad-r1-turn28-turn29.jsonl": { + "mode": 420, + "sha256": "cde7a1e010aa6195163f3b9320aa5c496fd8c271e9648c90c7319837dd967571" + }, + "verify/traces/ap-probes8-deploy-turn15.jsonl.gz": { + "mode": 420, + "sha256": "e257d5ea3fcb4be8da570d6a5589022e6ba412ff2712f4f06832812d8859e08a" + }, + "verify/traces/ap-probes8-turn16-turn26.jsonl.gz": { + "mode": 420, + "sha256": "df4fb35d9824799d8be79f3a9e976b55b7cd0fb5488b3e12711d04eb3c320f13" + }, + "verify/traces/ar-r1-turn38-turn43.jsonl": { + "mode": 420, + "sha256": "f8653cbd1956346816897b313031c5d70898144d1c84b1c849ac37bfe3bd993c" + }, + "verify/traces/ar-r2-control-turn38-turn39.jsonl": { + "mode": 420, + "sha256": "c1068652ddf54d2ff266c1dc1ef1e69ea663f5d2a83143408f77ec782b3dd988" + }, + "verify/traces/as-probes8-turn15-turn16.jsonl.gz": { + "mode": 420, + "sha256": "024bb0663b167eb364c8e138bae0bf10403860c195bd593cb56f60281060c4e8" + }, + "verify/traces/b2-final-menu.png": { + "mode": 420, + "sha256": "5a95fe260c9cb13dad5fc6f00460819107db93f4ac89f455077ad056600f83fd" + }, + "verify/traces/b2-shim.log": { + "mode": 420, + "sha256": "c31cf01af3659b7fdf008ff44f88f67ee4016dcfb30fc4a72b4d72ea0da8e404" + }, + "verify/traces/b2-techfx-compare.jsonl": { + "mode": 420, + "sha256": "f0202f45b276db6744c80768f12695153812bc882de688cf64705ed6a52f243c" + }, + "verify/traces/b2-techfx-golden.jsonl": { + "mode": 420, + "sha256": "43639e75bd9d510ed270c9cfcbb0c9665f5a6546f748ba81eba3f015e7ca233c" + }, + "verify/traces/cr-N.jsonl.gz": { + "mode": 420, + "sha256": "0071ae72a142533ffb91f9f04caa6704102c826761ff5ae24b57a1c3e9652e46" + }, + "verify/traces/cr-R0.jsonl.gz": { + "mode": 420, + "sha256": "6228c88cebb4dad2158e5586ecbcf71d1160116f2f4a2a8bc020658da8d7d706" + }, + "verify/traces/cr-R1.jsonl.gz": { + "mode": 420, + "sha256": "73f5f15b3343381cf3f973caaf74588fd3d0b6759de1ddcf9e12b9b3ebf29713" + }, + "verify/traces/eventlive-b3-t1-5.jsonl.gz": { + "mode": 420, + "sha256": "9cb344f1d8a3beb4bc1a2bf16baed6c38667443ead9f66fa0f53474a683d263c" + }, + "verify/traces/eventlive-b3-t1.jsonl": { + "mode": 420, + "sha256": "2d9962de9a7ea7fb28b33b72209706b4a27673096f71c8789f9f10ac465f387b" + }, + "verify/traces/eventlive-b3-zuul.jsonl.gz": { + "mode": 420, + "sha256": "0ee09bb884799e72c6a617ab02e741a7ba791ff458af439b9947a87b368a64de" + }, + "verify/traces/h-probes-human-perturbed-t3-5.jsonl.gz": { + "mode": 420, + "sha256": "2567f8ccb6276a4d647c4f4b88d14f7ae63aa4d1797f672a9bd9c7c86e4d7473" + }, + "verify/traces/h-probes-human-t5.jsonl.gz": { + "mode": 420, + "sha256": "92964779111573dc72e6a1845217cd7d709c9900594a106b3de7b59c2b7a88a7" + }, + "verify/traces/h-probes-zuul-t24-25.jsonl.gz": { + "mode": 420, + "sha256": "0966294af27b49159b1e72e683abc0b59fd52cc9bfd9f517130d30cedf7efa29" + }, + "verify/traces/l3-probe-turn8-turn15.jsonl": { + "mode": 420, + "sha256": "d1b5436f917bb4f6f74bd7b1967dbd0626db2c3a5cbc1d67684ef9f010826676" + }, + "verify/traces/m1-compare.jsonl": { + "mode": 420, + "sha256": "f0f6fd15bc73008e43e20d6ed4c4dd91fb2ec8b40935bfd3cc000d8a84ea6731" + }, + "verify/traces/m1-trace-golden.jsonl": { + "mode": 420, + "sha256": "4a4ddc031fb26a8f8b10dace297c73670f53dcbd250a9be94c0e31c9bb44dcc5" + }, + "verify/traces/mf-after-compare.jsonl": { + "mode": 420, + "sha256": "2a894892977176df1a9d6c8199b0f81b48c7bcac15d2c0e7786441fc6125226e" + }, + "verify/traces/mf-before-compare.jsonl": { + "mode": 420, + "sha256": "ee005097ebaac9f30c63f1e400fdf19a47e88010c71d215885234986d122410e" + }, + "verify/traces/output-ref-turn2.jsonl.gz": { + "mode": 420, + "sha256": "7af583350545501414eda38439f2d0fa39149342d9001d2926e2a4e4fdd5cdca" + }, + "verify/traces/output-zuul-and-ref.jsonl.gz": { + "mode": 420, + "sha256": "d581cb50f07766911fa59fa1df1524b33a9df6eec06226966efd5f54f09b6fb5" + }, + "verify/traces/recap-b1-compare.jsonl.gz": { + "mode": 420, + "sha256": "0ce1c92028a8cd10a38d7cca72f90c37ccbd844f24a1950bf0eb6e75739b44e2" + }, + "verify/traces/recap-b3-compare.jsonl": { + "mode": 420, + "sha256": "6ed3bcd99b4657d614bf63cc0fc2dfff650f4cb14e51086ea98c21bccbcf5fa8" + }, + "verify/traces/recap-golden-trace.jsonl.gz": { + "mode": 420, + "sha256": "d62431e9461ffb1b66adc16a39542b86fa8e0cf54a0ed446a8781c4d75a6c3bb" + }, + "verify/traces/recap-misc-compare.jsonl": { + "mode": 420, + "sha256": "d7c4446d45a9cab2af3da4a0d76f7a42c245da1f59db96fddf31d8b1f2c436ed" + }, + "verify/traces/tailrng-drawsites.jsonl.gz": { + "mode": 420, + "sha256": "5c1806e2b1452226674013119e3b220f3cf42be2ad8b0ed998050ad65d1f8415" + }, + "verify/traces/tailrng-refturn2.jsonl.gz": { + "mode": 420, + "sha256": "c33c6cafe015bda6acf5ca32b0c9595e1611f4ac82ecd3adaff8315c7bd3e560" + }, + "verify/traces/tailrng-zuul-long.jsonl.gz": { + "mode": 420, + "sha256": "213e7dd8a6809dd93190f41c87218e802f1fbe77d44d598f287c2a19544063af" + }, + "verify/traces/tailrng-zuul-noderoute.jsonl.gz": { + "mode": 420, + "sha256": "9476ee3b9b397ca9e20bc92eb887c109a075487cdd750746af051797e8838115" + }, + "verify/traces/unlock-b3-t1-5.jsonl.gz": { + "mode": 420, + "sha256": "f6e27a60bf6c74eb98d8bec50146fe1996642285ca008c6a70c3cb148c6ba54c" + }, + "verify/traces/unlock-b3-t1.jsonl.gz": { + "mode": 420, + "sha256": "bfa53bba3e59d17dd330e38ef52fd04fd92f05f3ad357fefd77388d083b49a05" + }, + "verify/traces/unlock-b3-zuul.jsonl.gz": { + "mode": 420, + "sha256": "d94c635105a75a68cb811a3881faf371678c075d240998f48fcf348b8459063f" + } + }, + "manifest_sha256": "e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9", + "path": "/tmp/opencode/sots-final-research-re" + } + }, + "started_at": "2026-09-10T13:03:23.590632+00:00", + "status": "complete", + "stderr": "campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.stderr.log", + "worktrees": { + "engine": "/tmp/opencode/sots-final-research-engine", + "re": "/tmp/opencode/sots-final-research-re" + } +} diff --git a/campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.jsonl b/campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.jsonl new file mode 100644 index 0000000..60adf50 --- /dev/null +++ b/campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.jsonl @@ -0,0 +1,63 @@ +{"type":"step_start","timestamp":1789045413042,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6a94ad0019b1SESHI6Zny6U","messageID":"msg_08b6a76ab001kCGYW6HTDH0UyD","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","snapshot":"4cf99ba53284425918de125f1a6b4291a9b7d69e","type":"step-start"}} +{"type":"tool_use","timestamp":1789045413144,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_OpFaski2o6688NE6B1Lz8FON","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/README.md"},"output":"/home/alex/sots-re/campaign/README.md\nfile\n\n1: # Canonical campaign controls\n2: \n3: `sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\n4: surprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\n5: projections. Historical evidence is not current acceptance. No automatic commits or lab operations.\n6: \n7: Framework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\n8: see [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\n9: Active work is reverse engineering. Change tooling only to unblock a named RE experiment.\n10: \n11: ## Contract format\n12: \n13: `contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\n14: The standard-library validator implements the schema's used subset. A populated example is\n15: [contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\n16: \n17: Required fields:\n18: \n19: | Field | Structure |\n20: |---|---|\n21: | `id`, `title`, `status` | Slug, short title, lifecycle state |\n22: | `owner` | `{ \"name\": \"worker-identity\", \"role\": \"implementer\" }` |\n23: | `baseline` | `{ \"engine\": {\"path\":\"/absolute/canonical/engine\",\"commit\":\"full-commit-id\"}, \"re\": {\"path\":\"/absolute/canonical/re\",\"commit\":\"full-commit-id\"} }` |\n24: | `scope`, `inputs`, `effects` | Arrays of explicit nonempty strings; include full write set and runtime inputs |\n25: | `original_dependencies` | String array, including original-assisted portions and unavailable inputs |\n26: | `dependencies` | Array of other contract IDs; all must be accepted before ready/implementing |\n27: | `acceptance` | Array of `{ \"id\": \"unique-criterion\", \"axis\": \"validation-scope\", \"criterion\": \"executable requirement\" }` |\n28: | `predictions`, `stop_conditions` | String arrays of predictions and conditions that halt work |\n29: | `checkpoint` | `null` or `campaign/runtime/checkpoints/.json` |\n30: \n31: Optional `evidence` is an array of\n32: `{id,axis,path,sha256,source,integrated,source_binding,binaries,inputs,outcomes}`.\n33: `path` is an existing canonical RE-relative artifact; `sha256` hashes its actual bytes; `source`\n34: equals the contract's complete baseline object. Store understanding,\n35: implementation, original dependencies, and validation scope as separate acceptance/evidence axes.\n36: There is no generic `verified` scalar. Baseline commit IDs describe starting repositories;\n37: dirty source identity is machine-bound by `source_binding`, never inferred from those commits.\n38: Criteria need distinct states, branch exposure, positive execution, complete writes/elements,\n39: allocations/IDs/events/RNG/runtime inputs, synthetic and original-game differentials as applicable.\n40: The CLI checks package identity and declared axes; the independent reviewer evaluates the actual\n41: criteria, gate outcomes, full manifests and integrated reproduction. A passing measurement alone\n42: does not establish acceptance.\n43: \n44: ### Source-bound evidence interface (R4)\n45: \n46: `source_binding` is `{engine:{path,commit,sha256},re:{path,commit,sha256}}`. Generate it with:\n47: \n48: ```sh\n49: python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-replacement --engine-worktree /absolute/candidate-engine --re-worktree /absolute/candidate-re\n50: ```\n51: \n52: Omit both worktree arguments to bind the canonical integrated trees. Paths must be Git worktree\n53: roots in the respective baseline repositories. `commit` is the actual current HEAD; `sha256`\n54: is the deterministic digest of the actual file manifest, including dirty/untracked nonignored\n55: files, deleted tracked paths (`null`), file bytes and Unix modes. Symlinks/submodules fail closed.\n56: The fixed manifest policy uses `git ls-files --cached --others --exclude-standard`; ignored\n57: untracked build/output files are not source. Python cache directories are excluded. In RE only,\n58: `verify/results/` and `campaign/` are excluded **except** `campaign/models.json`,\n59: `campaign/contract.schema.json`, and `campaign/agents/**`. These exclusions prevent mutable\n60: contracts/checkpoints/evidence/projections from hashing themselves. Relevant RE tools, tests,\n61: generated facts and guides remain bound. Any consumed item outside that source inventory must\n62: appear among immutable input/binary artifacts. The independent reviewer checks inventory adequacy.\n63: \n64: `binaries` and `inputs` are nonempty arrays of `{path,sha256}` artifact references; for tooling\n65: contracts, bind the executable scripts/interpreter identity package and fixture input package.\n66: `outcomes` exactly covers the acceptance criterion IDs for that evidence axis, with entries\n67: `{criterion,status,artifact:{path,sha256}}`; promotion requires `status: \"pass\"`. Outcome artifacts\n68: contain positive execution, branch/state exposures, reproduction recipe and required effect/input\n69: accounting. The CLI checks identities, hashes and declared outcomes, **not arbitrary criterion\n70: semantics**. The independent verifier must reproduce and challenge those claims.\n71: \n72: For example, an outcome for the bootstrap contract is:\n73: \n74: ```json\n75: {\"criterion\":\"controls-negative-paths\",\"status\":\"pass\",\"artifact\":{\"path\":\"verify/results/controls/result.json\",\"sha256\":\"\"}}\n76: ```\n77: \n78: Capture bindings when producing evidence; do not attach a fresh source hash to old measurements.\n79: Every evidence/verdict/promotion check rehashes referenced sources and artifacts. Same-HEAD byte\n80: changes reject old evidence and verdicts. Integrated records require canonical paths, lead in\n81: integration state, and one identical binding across **all** final integrated evidence. A lead's\n82: `integrated` boolean cannot substitute for this check. Verdicts bind the full evidence array and\n83: the source-binding array; old verdicts lacking these identities must be reproduced.\n84: \n85: This contract wrapper is separate from gate measurement schema **`sots-gate/1`**, whose `source`\n86: still has `engine`/`re`. Reference its immutable manifest/binary/input package; do not rename its\n87: fields to match contract `source`. Reporter output is measured evidence, with `--require-match`\n88: for required equality, and gains acceptance only through independent contract/integration gates.\n89: \n90: ## State and transactions\n91: \n92: Every command requires `--state-root /absolute/canonical/sots-re` (the repository, not `campaign/`).\n93: No sibling inference. Control records stay below canonical `campaign/runtime/`; contracts remain\n94: in `campaign/contracts/`. Immutable hashed artifacts may be referenced anywhere inside canonical\n95: RE, including existing `verify/` corpora, without copying them. Absolute/traversing artifact paths,\n96: outside symlinks, Git internals and named secret/private-key locations are rejected; aliases are\n97: checked after resolution too. Never reference secrets or commit owner-supplied binaries/assets.\n98: JSON writes are atomic and fsynced; a canonical `flock` serializes\n99: CLI mutations, WIP decisions, and resource acquisition. Do not hand-edit active state concurrently\n100: with commands. Interrupted multi-file operations retain blocking records and require inspection.\n101: \n102: Runtime APIs (JSON files; no server):\n103: \n104: - `runtime/checkpoints/*.json`: `sots-checkpoint/1`, contract, actor/role/model/session, timestamp,\n105: contract `basis` digest, bounded summary (6000 characters), up to 32 `{path,sha256}` artifacts,\n106: and one `next_action` (2000 characters). Include observations versus decisions, source identities,\n107: tests, blockers, resources/access/cleanup, exact next action in the summary/artifacts.\n108: Do not attach the checkpoint's own contract as an artifact: saving the pointer changes that\n109: file. Its task metadata is already covered by `basis`; the CLI rejects this self-reference.\n110: - `runtime/surprises/*.json`: `sots-surprise/1`, id, contract, `status: open|resolved`, summary,\n111: discriminating probe, actor/model/session provenance where applicable, optional decision ID.\n112: - `runtime/decisions/*.json`: `sots-decision/1`, Astra resolution, explanation/probe, invalidated\n113: evidence and checkpoint; prior verdict is marked invalidated. Resolution returns needs-revision\n114: only when all surprises are closed. Re-probe and rebuild evidence; resolution is not acceptance.\n115: - `runtime/verdicts/.json`: independent verifier actor/session/model, pass/fail,\n116: explanation, contract basis, complete evidence digest and source-bindings digest.\n117: - `runtime/transitions/*.json`: actor/model, previous/next lifecycle state, timestamp.\n118: - `runtime/leases/.json`: owner, random token, held/released, acquisition/release provenance.\n119: - `runtime/runs/run-*.json`, `.jsonl`, `.stderr.log`: requested model/config, command, worktree\n120: manifests before/after, expanded prompt hash, effective configuration hashes, canonical config\n121: file hashes, actual events/session/model when emitted, completion/checkpoint status. Effective\n122: provider config is hashed rather than persisted because it can contain credentials.\n123: `active-.json` reserves the contract. Interrupted running reservations never auto-expire.\n124: \n125: Lifecycle: `proposed -> ready -> implementing -> verification -> integration -> accepted`.\n126: Blocked and needs-revision edges support repairs; no skipping stages. Ready requires scope,\n127: inputs, acceptance, stop conditions, valid pinned baseline and accepted dependencies. Implementing\n128: is atomically capped at two concurrent contracts; lead schedules only one pilot before enabling\n129: two independent slices. Verification requires fresh checkpoint/artifacts after implementation start.\n130: Integration requires lead plus independent passing verifier bound to current source/evidence.\n131: Accepted requires every declared axis in integrated evidence, passing independent verdict over\n132: that final package, and no open surprises. Adding integrated evidence changes the evidence digest:\n133: the verifier must attest the integrated package again. Handoff/promotion/end checkpoints must be\n134: within 15 minutes; recovery start has no age limit.\n135: \n136: Role/model registry: lead/architecture-review/analyst/implementer/verifier/lab =\n137: `openai/gpt-5.6-sol`; resolver = `openai/gpt-6-astra`.\n138: CLI identity fields are **claims, not authenticated model authority**. The runner requests the\n139: registry model explicitly and records emitted provenance. Editable JSON, agent permissions and\n140: shell-accessible tooling are not a security boundary. No silent routing fallback.\n141: \n142: ## Commands\n143: \n144: Run from either repository using the canonical tool path when necessary. Examples:\n145: \n146: ```sh\n147: python3 tools/campaign.py --state-root /home/alex/sots-re validate\n148: python3 tools/campaign.py --state-root /home/alex/sots-re list\n149: python3 tools/campaign.py --state-root /home/alex/sots-re status research-replacement\n150: python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint controls-bootstrap --actor controls-architect --role architecture-review --model openai/gpt-6-astra --session rollout-controls --summary 'Source identities, observations, decisions, tests and blockers are in the attached checkpoint.' --artifact campaign/rollout/controls-worker-state.md --next-action 'Run the independent controls review.'\n151: python3 tools/campaign.py --state-root /home/alex/sots-re transition controls-bootstrap ready --actor controls-architect --role architecture-review --model openai/gpt-6-astra\n152: ```\n153: \n154: `surprise CONTRACT --summary TEXT --probe TEXT` blocks immediately. `resolve SURPRISE_ID\n155: --explanation TEXT --probe TEXT` requires claimed Astra lead/resolver. Both also require\n156: `--actor NAME --role ROLE --model MODEL`. `evidence CONTRACT --record campaign/path.json`\n157: uses the same identity flags; record format is the evidence object above. Integrated records\n158: require lead and integration state. `verdict CONTRACT --session SESSION --verdict pass|fail\n159: --explanation TEXT` requires verifier identity flags and independent actor/session.\n160: \n161: ```sh\n162: python3 tools/campaign.py --state-root /home/alex/sots-re lease acquire windows-vm --actor lab-one --role lab --model openai/gpt-5.5\n163: python3 tools/campaign.py --state-root /home/alex/sots-re lease show windows-vm\n164: python3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lab-one --role lab --model openai/gpt-5.5 --token TOKEN_FROM_ACQUIRE\n165: python3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lead --role lead --model openai/gpt-6-astra --lead-release --reason 'Confirmed prior operator stopped; access and cleanup checked.'\n166: ```\n167: \n168: No stale lease stealing. Explicit lead release requires an explanation and lab preconditions,\n169: side effects, cleanup, and access verification in the operator checkpoint. Treat lease tokens\n170: as local owner capabilities, not secrets to put in a board/dashboard.\n171: \n172: ## Fresh bounded launches\n173: \n174: Prepare **two actual linked worktrees**, each distinct from its canonical source repository,\n175: at the contract's full baseline commit. No auto commits/worktree creation. Launch uses explicit\n176: canonical `OPENCODE_CONFIG`, checks matching repo-local agent/model/40 steps, and sets the final\n177: environment overlay to bind requested role/model/steps. Other inherited config overrides are\n178: cleared. `opencode models` must list the exact requested model even for dry runs.\n179: \n180: ```sh\n181: python3 tools/run_agent.py --state-root /home/alex/sots-re --role implementer --actor worker-one --contract slice-one --engine-worktree /home/alex/worktrees/slice-one-engine --re-worktree /home/alex/worktrees/slice-one-re --cwd engine --dry-run\n182: ```\n183: \n184: Remove `--dry-run` to execute. Normal worker launch requires a valid durable checkpoint, matching\n185: owner/role/status, no open surprises, baseline HEADs and canonical Git common-directory identity.\n186: Recovery checks checkpoint identity/basis and artifact hashes regardless of age, rechecks any\n187: source-bound evidence, and validates paired Git worktree/baseline identity. Missing ordinary-worker\n188: state still blocks. Bootstrap lead/architecture-review can start without a checkpoint; they still\n189: need paired worktrees. Astra lead/resolver may launch a blocked contract with open surprises and\n190: without a worker checkpoint in **resolution-only** scope: read evidence and write decisions/state,\n191: no implementation. Its prompt and permission overlay carry that limit, and worktree source changes\n192: fail completion. Ordinary affected workers stay blocked. Other Astra architecture actors receive\n193: explicit architecture authority within their owned scope. Each run is a fresh\n194: `opencode run --format json --model ... --agent ...`; no resume/continue option is used. The prompt\n195: supplies the run ID to use as checkpoint `--session`; actual OpenCode session IDs are captured\n196: separately when emitted. On exit, a checkpoint after start matching actor/role/model/run ID is\n197: mandatory or the run is marked incomplete. Completion additionally requires a zero exit, no\n198: `type:error`, a successful `step_finish` with `part.reason: \"stop\"`, one nonempty actual session ID,\n199: and consistent explicitly emitted model IDs. Text/tool-call/length events alone cannot complete a\n200: run. Missing model emission is recorded `observed_model_status: \"unavailable\"`, never invented.\n201: \n202: The runner checks the exact Git baseline again under reservation lock, rejects intervening contract\n203: changes, and checks canonical model/prompt/config files and effective configuration for drift at\n204: completion. Expanded role prompt/model/steps are frozen in the last-layer environment overlay.\n205: `opencode debug config` runs in the actual launch cwd with the actual environment before execution\n206: and again at completion. Permissions explicitly allow read/search, ordinary worker shell commands,\n207: and external-directory access to the assigned paired trees plus canonical RE; role-specific edit\n208: denies survive. Task delegation and interactive questions are denied. No `--auto` is required.\n209: Noninteractive command/environment tests and a live loader check cover this overlay; an actual\n210: normal worker launch smoke is a separate lead integration check. Permissions and before/after\n211: checks are operational guards, not a sandbox or continuous filesystem audit.\n212: Compaction is a backstop; no token threshold or machine-enforced 20-tool-call claim.\n213: \n214: ## Local verification\n215: \n216: ```sh\n217: python3 -m unittest discover -s verify/campaign -p 'test_*.py' -v\n218: python3 tools/campaign.py --state-root /home/alex/sots-re validate\n219: ```\n220: \n221: Tests create commits only in disposable fixture repositories, linked worktrees and fake OpenCode processes; they do\n222: not launch agents or touch the lab. Historical rollout artifacts retain the scope and source identity\n223: of their runs; consult the accepted contract and current evidence, not an old handoff's status prose.\n\n(End of file - total 223 lines)\n","metadata":{"preview":"# Canonical campaign controls\n\n`sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\nsurprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\nprojections. Historical evidence is not current acceptance. No automatic commits or lab operations.\n\nFramework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\nsee [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\nActive work is reverse engineering. Change tooling only to unblock a named RE experiment.\n\n## Contract format\n\n`contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\nThe standard-library validator implements the schema's used subset. A populated example is\n[contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\n\nRequired fields:\n\n| Field | Structure |\n|---|---|","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/README.md","text":"# Canonical campaign controls\n\n`sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\nsurprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\nprojections. Historical evidence is not current acceptance. No automatic commits or lab operations.\n\nFramework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\nsee [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\nActive work is reverse engineering. Change tooling only to unblock a named RE experiment.\n\n## Contract format\n\n`contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\nThe standard-library validator implements the schema's used subset. A populated example is\n[contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\n\nRequired fields:\n\n| Field | Structure |\n|---|---|\n| `id`, `title`, `status` | Slug, short title, lifecycle state |\n| `owner` | `{ \"name\": \"worker-identity\", \"role\": \"implementer\" }` |\n| `baseline` | `{ \"engine\": {\"path\":\"/absolute/canonical/engine\",\"commit\":\"full-commit-id\"}, \"re\": {\"path\":\"/absolute/canonical/re\",\"commit\":\"full-commit-id\"} }` |\n| `scope`, `inputs`, `effects` | Arrays of explicit nonempty strings; include full write set and runtime inputs |\n| `original_dependencies` | String array, including original-assisted portions and unavailable inputs |\n| `dependencies` | Array of other contract IDs; all must be accepted before ready/implementing |\n| `acceptance` | Array of `{ \"id\": \"unique-criterion\", \"axis\": \"validation-scope\", \"criterion\": \"executable requirement\" }` |\n| `predictions`, `stop_conditions` | String arrays of predictions and conditions that halt work |\n| `checkpoint` | `null` or `campaign/runtime/checkpoints/.json` |\n\nOptional `evidence` is an array of\n`{id,axis,path,sha256,source,integrated,source_binding,binaries,inputs,outcomes}`.\n`path` is an existing canonical RE-relative artifact; `sha256` hashes its actual bytes; `source`\nequals the contract's complete baseline object. Store understanding,\nimplementation, original dependencies, and validation scope as separate acceptance/evidence axes.\nThere is no generic `verified` scalar. Baseline commit IDs describe starting repositories;\ndirty source identity is machine-bound by `source_binding`, never inferred from those commits.\nCriteria need distinct states, branch exposure, positive execution, complete writes/elements,\nallocations/IDs/events/RNG/runtime inputs, synthetic and original-game differentials as applicable.\nThe CLI checks package identity and declared axes; the independent reviewer evaluates the actual\ncriteria, gate outcomes, full manifests and integrated reproduction. A passing measurement alone\ndoes not establish acceptance.\n\n### Source-bound evidence interface (R4)\n\n`source_binding` is `{engine:{path,commit,sha256},re:{path,commit,sha256}}`. Generate it with:\n\n```sh\npython3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-replacement --engine-worktree /absolute/candidate-engine --re-worktree /absolute/candidate-re\n```\n\nOmit both worktree arguments to bind the canonical integrated trees. Paths must be Git worktree\nroots in the respective baseline repositories. `commit` is the actual current HEAD; `sha256`\nis the deterministic digest of the actual file manifest, including dirty/untracked nonignored\nfiles, deleted tracked paths (`null`), file bytes and Unix modes. Symlinks/submodules fail closed.\nThe fixed manifest policy uses `git ls-files --cached --others --exclude-standard`; ignored\nuntracked build/output files are not source. Python cache directories are excluded. In RE only,\n`verify/results/` and `campaign/` are excluded **except** `campaign/models.json`,\n`campaign/contract.schema.json`, and `campaign/agents/**`. These exclusions prevent mutable\ncontracts/checkpoints/evidence/projections from hashing themselves. Relevant RE tools, tests,\ngenerated facts and guides remain bound. Any consumed item outside that source inventory must\nappear among immutable input/binary artifacts. The independent reviewer checks inventory adequacy.\n\n`binaries` and `inputs` are nonempty arrays of `{path,sha256}` artifact references; for tooling\ncontracts, bind the executable scripts/interpreter identity package and fixture input package.\n`outcomes` exactly covers the acceptance criterion IDs for that evidence axis, with entries\n`{criterion,status,artifact:{path,sha256}}`; promotion requires `status: \"pass\"`. Outcome artifacts\ncontain positive execution, branch/state exposures, reproduction recipe and required effect/input\naccounting. The CLI checks identities, hashes and declared outcomes, **not arbitrary criterion\nsemantics**. The independent verifier must reproduce and challenge those claims.\n\nFor example, an outcome for the bootstrap contract is:\n\n```json\n{\"criterion\":\"controls-negative-paths\",\"status\":\"pass\",\"artifact\":{\"path\":\"verify/results/controls/result.json\",\"sha256\":\"\"}}\n```\n\nCapture bindings when producing evidence; do not attach a fresh source hash to old measurements.\nEvery evidence/verdict/promotion check rehashes referenced sources and artifacts. Same-HEAD byte\nchanges reject old evidence and verdicts. Integrated records require canonical paths, lead in\nintegration state, and one identical binding across **all** final integrated evidence. A lead's\n`integrated` boolean cannot substitute for this check. Verdicts bind the full evidence array and\nthe source-binding array; old verdicts lacking these identities must be reproduced.\n\nThis contract wrapper is separate from gate measurement schema **`sots-gate/1`**, whose `source`\nstill has `engine`/`re`. Reference its immutable manifest/binary/input package; do not rename its\nfields to match contract `source`. Reporter output is measured evidence, with `--require-match`\nfor required equality, and gains acceptance only through independent contract/integration gates.\n\n## State and transactions\n\nEvery command requires `--state-root /absolute/canonical/sots-re` (the repository, not `campaign/`).\nNo sibling inference. Control records stay below canonical `campaign/runtime/`; contracts remain\nin `campaign/contracts/`. Immutable hashed artifacts may be referenced anywhere inside canonical\nRE, including existing `verify/` corpora, without copying them. Absolute/traversing artifact paths,\noutside symlinks, Git internals and named secret/private-key locations are rejected; aliases are\nchecked after resolution too. Never reference secrets or commit owner-supplied binaries/assets.\nJSON writes are atomic and fsynced; a canonical `flock` serializes\nCLI mutations, WIP decisions, and resource acquisition. Do not hand-edit active state concurrently\nwith commands. Interrupted multi-file operations retain blocking records and require inspection.\n\nRuntime APIs (JSON files; no server):\n\n- `runtime/checkpoints/*.json`: `sots-checkpoint/1`, contract, actor/role/model/session, timestamp,\n contract `basis` digest, bounded summary (6000 characters), up to 32 `{path,sha256}` artifacts,\n and one `next_action` (2000 characters). Include observations versus decisions, source identities,\n tests, blockers, resources/access/cleanup, exact next action in the summary/artifacts.\n Do not attach the checkpoint's own contract as an artifact: saving the pointer changes that\n file. Its task metadata is already covered by `basis`; the CLI rejects this self-reference.\n- `runtime/surprises/*.json`: `sots-surprise/1`, id, contract, `status: open|resolved`, summary,\n discriminating probe, actor/model/session provenance where applicable, optional decision ID.\n- `runtime/decisions/*.json`: `sots-decision/1`, Astra resolution, explanation/probe, invalidated\n evidence and checkpoint; prior verdict is marked invalidated. Resolution returns needs-revision\n only when all surprises are closed. Re-probe and rebuild evidence; resolution is not acceptance.\n- `runtime/verdicts/.json`: independent verifier actor/session/model, pass/fail,\n explanation, contract basis, complete evidence digest and source-bindings digest.\n- `runtime/transitions/*.json`: actor/model, previous/next lifecycle state, timestamp.\n- `runtime/leases/.json`: owner, random token, held/released, acquisition/release provenance.\n- `runtime/runs/run-*.json`, `.jsonl`, `.stderr.log`: requested model/config, command, worktree\n manifests before/after, expanded prompt hash, effective configuration hashes, canonical config\n file hashes, actual events/session/model when emitted, completion/checkpoint status. Effective\n provider config is hashed rather than persisted because it can contain credentials.\n `active-.json` reserves the contract. Interrupted running reservations never auto-expire.\n\nLifecycle: `proposed -> ready -> implementing -> verification -> integration -> accepted`.\nBlocked and needs-revision edges support repairs; no skipping stages. Ready requires scope,\ninputs, acceptance, stop conditions, valid pinned baseline and accepted dependencies. Implementing\nis atomically capped at two concurrent contracts; lead schedules only one pilot before enabling\ntwo independent slices. Verification requires fresh checkpoint/artifacts after implementation start.\nIntegration requires lead plus independent passing verifier bound to current source/evidence.\nAccepted requires every declared axis in integrated evidence, passing independent verdict over\nthat final package, and no open surprises. Adding integrated evidence changes the evidence digest:\nthe verifier must attest the integrated package again. Handoff/promotion/end checkpoints must be\nwithin 15 minutes; recovery start has no age limit.\n\nRole/model registry: lead/architecture-review/analyst/implementer/verifier/lab =\n`openai/gpt-5.6-sol`; resolver = `openai/gpt-6-astra`.\nCLI identity fields are **claims, not authenticated model authority**. The runner requests the\nregistry model explicitly and records emitted provenance. Editable JSON, agent permissions and\nshell-accessible tooling are not a security boundary. No silent routing fallback.\n\n## Commands\n\nRun from either repository using the canonical tool path when necessary. Examples:\n\n```sh\npython3 tools/campaign.py --state-root /home/alex/sots-re validate\npython3 tools/campaign.py --state-root /home/alex/sots-re list\npython3 tools/campaign.py --state-root /home/alex/sots-re status research-replacement\npython3 tools/campaign.py --state-root /home/alex/sots-re checkpoint controls-bootstrap --actor controls-architect --role architecture-review --model openai/gpt-6-astra --session rollout-controls --summary 'Source identities, observations, decisions, tests and blockers are in the attached checkpoint.' --artifact campaign/rollout/controls-worker-state.md --next-action 'Run the independent controls review.'\npython3 tools/campaign.py --state-root /home/alex/sots-re transition controls-bootstrap ready --actor controls-architect --role architecture-review --model openai/gpt-6-astra\n```\n\n`surprise CONTRACT --summary TEXT --probe TEXT` blocks immediately. `resolve SURPRISE_ID\n--explanation TEXT --probe TEXT` requires claimed Astra lead/resolver. Both also require\n`--actor NAME --role ROLE --model MODEL`. `evidence CONTRACT --record campaign/path.json`\nuses the same identity flags; record format is the evidence object above. Integrated records\nrequire lead and integration state. `verdict CONTRACT --session SESSION --verdict pass|fail\n--explanation TEXT` requires verifier identity flags and independent actor/session.\n\n```sh\npython3 tools/campaign.py --state-root /home/alex/sots-re lease acquire windows-vm --actor lab-one --role lab --model openai/gpt-5.5\npython3 tools/campaign.py --state-root /home/alex/sots-re lease show windows-vm\npython3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lab-one --role lab --model openai/gpt-5.5 --token TOKEN_FROM_ACQUIRE\npython3 tools/campaign.py --state-root /home/alex/sots-re lease release windows-vm --actor lead --role lead --model openai/gpt-6-astra --lead-release --reason 'Confirmed prior operator stopped; access and cleanup checked.'\n```\n\nNo stale lease stealing. Explicit lead release requires an explanation and lab preconditions,\nside effects, cleanup, and access verification in the operator checkpoint. Treat lease tokens\nas local owner capabilities, not secrets to put in a board/dashboard.\n\n## Fresh bounded launches\n\nPrepare **two actual linked worktrees**, each distinct from its canonical source repository,\nat the contract's full baseline commit. No auto commits/worktree creation. Launch uses explicit\ncanonical `OPENCODE_CONFIG`, checks matching repo-local agent/model/40 steps, and sets the final\nenvironment overlay to bind requested role/model/steps. Other inherited config overrides are\ncleared. `opencode models` must list the exact requested model even for dry runs.\n\n```sh\npython3 tools/run_agent.py --state-root /home/alex/sots-re --role implementer --actor worker-one --contract slice-one --engine-worktree /home/alex/worktrees/slice-one-engine --re-worktree /home/alex/worktrees/slice-one-re --cwd engine --dry-run\n```\n\nRemove `--dry-run` to execute. Normal worker launch requires a valid durable checkpoint, matching\nowner/role/status, no open surprises, baseline HEADs and canonical Git common-directory identity.\nRecovery checks checkpoint identity/basis and artifact hashes regardless of age, rechecks any\nsource-bound evidence, and validates paired Git worktree/baseline identity. Missing ordinary-worker\nstate still blocks. Bootstrap lead/architecture-review can start without a checkpoint; they still\nneed paired worktrees. Astra lead/resolver may launch a blocked contract with open surprises and\nwithout a worker checkpoint in **resolution-only** scope: read evidence and write decisions/state,\nno implementation. Its prompt and permission overlay carry that limit, and worktree source changes\nfail completion. Ordinary affected workers stay blocked. Other Astra architecture actors receive\nexplicit architecture authority within their owned scope. Each run is a fresh\n`opencode run --format json --model ... --agent ...`; no resume/continue option is used. The prompt\nsupplies the run ID to use as checkpoint `--session`; actual OpenCode session IDs are captured\nseparately when emitted. On exit, a checkpoint after start matching actor/role/model/run ID is\nmandatory or the run is marked incomplete. Completion additionally requires a zero exit, no\n`type:error`, a successful `step_finish` with `part.reason: \"stop\"`, one nonempty actual session ID,\nand consistent explicitly emitted model IDs. Text/tool-call/length events alone cannot complete a\nrun. Missing model emission is recorded `observed_model_status: \"unavailable\"`, never invented.\n\nThe runner checks the exact Git baseline again under reservation lock, rejects intervening contract\nchanges, and checks canonical model/prompt/config files and effective configuration for drift at\ncompletion. Expanded role prompt/model/steps are frozen in the last-layer environment overlay.\n`opencode debug config` runs in the actual launch cwd with the actual environment before execution\nand again at completion. Permissions explicitly allow read/search, ordinary worker shell commands,\nand external-directory access to the assigned paired trees plus canonical RE; role-specific edit\ndenies survive. Task delegation and interactive questions are denied. No `--auto` is required.\nNoninteractive command/environment tests and a live loader check cover this overlay; an actual\nnormal worker launch smoke is a separate lead integration check. Permissions and before/after\nchecks are operational guards, not a sandbox or continuous filesystem audit.\nCompaction is a backstop; no token threshold or machine-enforced 20-tool-call claim.\n\n## Local verification\n\n```sh\npython3 -m unittest discover -s verify/campaign -p 'test_*.py' -v\npython3 tools/campaign.py --state-root /home/alex/sots-re validate\n```\n\nTests create commits only in disposable fixture repositories, linked worktrees and fake OpenCode processes; they do\nnot launch agents or touch the lab. Historical rollout artifacts retain the scope and source identity\nof their runs; consult the accepted contract and current evidence, not an old handoff's status prose.","lineStart":1,"lineEnd":223,"totalLines":223,"truncated":false}},"title":"campaign/README.md","time":{"start":1789045413089,"end":1789045413118}},"metadata":{"openai":{"itemId":"fc_02ff056ddc4c144f016aa2aaa4c1f087d198a8880542edf447"}},"id":"prt_08b6a94b0001rPMwXoUGeit1Xx","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6a76ab001kCGYW6HTDH0UyD"}} +{"type":"tool_use","timestamp":1789045413144,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_TIf9poPfaeCuCXy8i5qmwn77","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/contracts/research-completion-abi.json"},"output":"/home/alex/sots-re/campaign/contracts/research-completion-abi.json\nfile\n\n1: {\n2: \"acceptance\": [\n3: {\n4: \"axis\": \"static-recovery\",\n5: \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n6: \"id\": \"ownership-recovered\"\n7: },\n8: {\n9: \"axis\": \"validation\",\n10: \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n11: \"id\": \"independent-cross-check\"\n12: }\n13: ],\n14: \"baseline\": {\n15: \"engine\": {\n16: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n17: \"path\": \"/home/alex/sots-engine\"\n18: },\n19: \"re\": {\n20: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n21: \"path\": \"/home/alex/sots-re\"\n22: }\n23: },\n24: \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json\",\n25: \"dependencies\": [\n26: \"controls-bootstrap\"\n27: ],\n28: \"effects\": [\n29: \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n30: ],\n31: \"evidence\": [],\n32: \"id\": \"research-completion-abi\",\n33: \"inputs\": [\n34: \"Existing binary fingerprint/address contract and private RE findings\",\n35: \"Owner-supplied binary or live read-only ReVa endpoint\",\n36: \"Archived CR traces/saves for observed behavior\",\n37: \"Source-identical current engine/RE worktree snapshots\"\n38: ],\n39: \"original_dependencies\": [\n40: \"Original binary is the object of analysis, not a replacement dependency decision\"\n41: ],\n42: \"owner\": {\n43: \"name\": \"research-abi-analyst\",\n44: \"role\": \"analyst\"\n45: },\n46: \"predictions\": [\n47: \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n48: \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n49: ],\n50: \"scope\": [\n51: \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n52: \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n53: \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n54: \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n55: \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n56: ],\n57: \"status\": \"blocked\",\n58: \"stop_conditions\": [\n59: \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n60: \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n61: \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n62: ],\n63: \"title\": \"RE: research completion record construction and allocator ABI\"\n64: }\n\n(End of file - total 64 lines)\n","metadata":{"preview":"{\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/contracts/research-completion-abi.json","text":"{\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"blocked\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n}","lineStart":1,"lineEnd":64,"totalLines":64,"truncated":false}},"title":"campaign/contracts/research-completion-abi.json","time":{"start":1789045413096,"end":1789045413135}},"metadata":{"openai":{"itemId":"fc_02ff056ddc4c144f016aa2aaa4c20487d1a521c9fd993cf33f"}},"id":"prt_08b6a94e40014B3aWwfnG5MiNf","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6a76ab001kCGYW6HTDH0UyD"}} +{"type":"tool_use","timestamp":1789045413144,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_UAGfs4ZqkUt4gLYDBLaltbKr","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/AGENTS.md"},"output":"/home/alex/sots-re/AGENTS.md\nfile\n\n1: # SOTS campaign instructions\n2: \n3: This repository is the state authority for the SOTS reconstruction and its Windows lab.\n4: Start with `campaign/README.md`, your contract, its latest checkpoint, and open surprises.\n5: Current policy: `guides/multi-agent-workflow.md`. Engine architecture: `sots-engine/docs/architecture.md`.\n6: Historical findings are evidence, not current execution instructions or accepted status.\n7: \n8: ## Authority and models\n9: \n10: - The normal lead/RE/implementation/verification/lab loop runs on **GPT-5.6 Sol\n11: (`openai/gpt-5.6-sol`)**. Reserve **GPT-6 Astra (`openai/gpt-6-astra`)** for resolving\n12: falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope.\n13: - `campaign/models.json` is the role/model registry. Launch with `tools/run_agent.py` and an\n14: explicit role, contract, state root, and paired worktrees. Never silently downgrade or fall back.\n15: - Ordinary implementation/test failures inside the contract may be fixed by its worker.\n16: Falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope\n17: require a recorded surprise and an Astra resolution before affected work continues.\n18: - No worker subdelegation. The lead assigns parallelism; max two implementation slices after\n19: the pilot. Independent workload preparation is scheduled against explicit resource leases.\n20: \n21: ## Durable state and context\n22: \n23: Checkpoint in the canonical RE state root every **20 tool calls or 15 minutes**, whichever is\n24: earlier, and before an experiment, compaction, handoff, or stop. Include model/session, exact\n25: source identities, evidence paths, decisions versus observations, tests, blockers, and ONE exact\n26: next action. Do not store state only in a chat summary or `/tmp`.\n27: The runner uses bounded 40-step quanta. After checkpointing, stop and restart from the repository;\n28: automatic compaction is a backstop, not proof that a checkpoint was written. On recovery read the\n29: contract/checkpoint, verify worktree and resource identities, then continue. Missing state means\n30: blocked, not permission to reconstruct progress from memory.\n31: \n32: ## Ownership\n33: \n34: Use distinct engine and RE worktrees per lane, baseline-pinned. Canonical runtime state is shared\n35: only through the campaign tools. One integrator writes current evidence pointers and projections.\n36: Never stage someone else's changes. No automatic commit, push, pull, or reset. Commands requiring\n37: these actions need explicit user authorization. Source edits use apply_patch.\n38: VM, shared build-host, and Ghidra mutation require leases. A stale lease is not automatically free.\n39: Record preconditions, side effects, cleanup and access verification for any lab operation.\n40: Rollout bootstrap file-ownership exception: `campaign/rollout/architecture-decision.md` only.\n41: \n42: ## Evidence\n43: \n44: No generic `verified` promotion. Separate understanding, implementation, original dependencies,\n45: and validation scope. A count is insufficient without distinct states, branch exposures, and\n46: positive execution evidence. Include all writes, container elements, allocations, IDs, events,\n47: RNG draws, and runtime-only inputs. Original-assisted execution is not independent replacement.\n48: Synthetic boundary tests and original-game differential tests are complementary. Missing required\n49: inputs, zero execution, incomplete coverage, unexpected skips, stale binaries or unbound source\n50: identity fail acceptance. One independent verifier must reproduce the package; integrated-tree\n51: evidence is required for acceptance. Reports are measurements until those gates pass.\n52: \n53: Never commit owner-supplied binaries/assets or secrets. Engine facts cross only documented\n54: generated channels. Never paste disassembly/decompiler output into the engine repository.\n\n(End of file - total 54 lines)\n","metadata":{"preview":"# SOTS campaign instructions\n\nThis repository is the state authority for the SOTS reconstruction and its Windows lab.\nStart with `campaign/README.md`, your contract, its latest checkpoint, and open surprises.\nCurrent policy: `guides/multi-agent-workflow.md`. Engine architecture: `sots-engine/docs/architecture.md`.\nHistorical findings are evidence, not current execution instructions or accepted status.\n\n## Authority and models\n\n- The normal lead/RE/implementation/verification/lab loop runs on **GPT-5.6 Sol\n (`openai/gpt-5.6-sol`)**. Reserve **GPT-6 Astra (`openai/gpt-6-astra`)** for resolving\n falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope.\n- `campaign/models.json` is the role/model registry. Launch with `tools/run_agent.py` and an\n explicit role, contract, state root, and paired worktrees. Never silently downgrade or fall back.\n- Ordinary implementation/test failures inside the contract may be fixed by its worker.\n Falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope\n require a recorded surprise and an Astra resolution before affected work continues.\n- No worker subdelegation. The lead assigns parallelism; max two implementation slices after\n the pilot. Independent workload preparation is scheduled against explicit resource leases.\n","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/AGENTS.md","text":"# SOTS campaign instructions\n\nThis repository is the state authority for the SOTS reconstruction and its Windows lab.\nStart with `campaign/README.md`, your contract, its latest checkpoint, and open surprises.\nCurrent policy: `guides/multi-agent-workflow.md`. Engine architecture: `sots-engine/docs/architecture.md`.\nHistorical findings are evidence, not current execution instructions or accepted status.\n\n## Authority and models\n\n- The normal lead/RE/implementation/verification/lab loop runs on **GPT-5.6 Sol\n (`openai/gpt-5.6-sol`)**. Reserve **GPT-6 Astra (`openai/gpt-6-astra`)** for resolving\n falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope.\n- `campaign/models.json` is the role/model registry. Launch with `tools/run_agent.py` and an\n explicit role, contract, state root, and paired worktrees. Never silently downgrade or fall back.\n- Ordinary implementation/test failures inside the contract may be fixed by its worker.\n Falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope\n require a recorded surprise and an Astra resolution before affected work continues.\n- No worker subdelegation. The lead assigns parallelism; max two implementation slices after\n the pilot. Independent workload preparation is scheduled against explicit resource leases.\n\n## Durable state and context\n\nCheckpoint in the canonical RE state root every **20 tool calls or 15 minutes**, whichever is\nearlier, and before an experiment, compaction, handoff, or stop. Include model/session, exact\nsource identities, evidence paths, decisions versus observations, tests, blockers, and ONE exact\nnext action. Do not store state only in a chat summary or `/tmp`.\nThe runner uses bounded 40-step quanta. After checkpointing, stop and restart from the repository;\nautomatic compaction is a backstop, not proof that a checkpoint was written. On recovery read the\ncontract/checkpoint, verify worktree and resource identities, then continue. Missing state means\nblocked, not permission to reconstruct progress from memory.\n\n## Ownership\n\nUse distinct engine and RE worktrees per lane, baseline-pinned. Canonical runtime state is shared\nonly through the campaign tools. One integrator writes current evidence pointers and projections.\nNever stage someone else's changes. No automatic commit, push, pull, or reset. Commands requiring\nthese actions need explicit user authorization. Source edits use apply_patch.\nVM, shared build-host, and Ghidra mutation require leases. A stale lease is not automatically free.\nRecord preconditions, side effects, cleanup and access verification for any lab operation.\nRollout bootstrap file-ownership exception: `campaign/rollout/architecture-decision.md` only.\n\n## Evidence\n\nNo generic `verified` promotion. Separate understanding, implementation, original dependencies,\nand validation scope. A count is insufficient without distinct states, branch exposures, and\npositive execution evidence. Include all writes, container elements, allocations, IDs, events,\nRNG draws, and runtime-only inputs. Original-assisted execution is not independent replacement.\nSynthetic boundary tests and original-game differential tests are complementary. Missing required\ninputs, zero execution, incomplete coverage, unexpected skips, stale binaries or unbound source\nidentity fail acceptance. One independent verifier must reproduce the package; integrated-tree\nevidence is required for acceptance. Reports are measurements until those gates pass.\n\nNever commit owner-supplied binaries/assets or secrets. Engine facts cross only documented\ngenerated channels. Never paste disassembly/decompiler output into the engine repository.","lineStart":1,"lineEnd":54,"totalLines":54,"truncated":false}},"title":"AGENTS.md","time":{"start":1789045413130,"end":1789045413140}},"metadata":{"openai":{"itemId":"fc_02ff056ddc4c144f016aa2aaa4c21887d1a061a5e2433d600d"}},"id":"prt_08b6a9505001fxmyYM4zcWKKQb","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6a76ab001kCGYW6HTDH0UyD"}} +{"type":"tool_use","timestamp":1789045413157,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_2DKLOq1xyifRJ6o8ddvzeZit","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json"},"output":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json\nfile\n\n1: {\n2: \"actor\": \"research-abi-correction-verifier\",\n3: \"artifacts\": [\n4: {\n5: \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n6: \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n7: }\n8: ],\n9: \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n10: \"contract\": \"research-completion-abi\",\n11: \"id\": \"4555678e34291015554e7e88\",\n12: \"model\": \"openai/gpt-5.6-sol\",\n13: \"next_action\": \"Create and run the independent fail-if-exists static/save reproduction for session run-d6c4dc15e9f4d15155fee856.\",\n14: \"role\": \"verifier\",\n15: \"schema\": \"sots-checkpoint/1\",\n16: \"session\": \"run-d6c4dc15e9f4d15155fee856\",\n17: \"summary\": \"OBSERVATIONS: canonical policy, contract, lead checkpoint, all 13 surprise records, relevant Astra decisions, handoff and raw manifests were read. Contract validates in verification with no open surprises. Assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7 match baselines and common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git. Paired source binding independently remeasured as engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8, matching analyst manifest despite dirty worktrees. Binary SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd/version 2.38 match. Handoff artifacts rehash exactly. No resource lease acquired or lab mutation performed. DECISIONS: verification remains static reproduction plus archived serialized-state checking only; no live allocator safety, original-assisted compare, replacement, or integrated replay claim. Pre-experiment falsifiers and required distinct states/branches are persisted in the attached verifier-owned plan. BLOCKERS/LIMITS: contract evidence array is empty; analyst package itself states runtime capacity/string/unwind states unavailable. Canonical integrated tree is dirty at HEAD 41a6840 but is not the assigned source binding.\",\n18: \"timestamp\": \"2026-09-10T05:26:16.270911+00:00\"\n19: }\n\n(End of file - total 19 lines)\n","metadata":{"preview":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"4555678e34291015554e7e88\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Create and run the independent fail-if-exists static/save reproduction for session run-d6c4dc15e9f4d15155fee856.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-d6c4dc15e9f4d15155fee856\",\n \"summary\": \"OBSERVATIONS: canonical policy, contract, lead checkpoint, all 13 surprise records, relevant Astra decisions, handoff and raw manifests were read. Contract validates in verification with no open surprises. Assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7 match baselines and common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git. Paired source binding independently remeasured as engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8, matching analyst manifest despite dirty worktrees. Binary SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd/version 2.38 match. Handoff artifacts rehash exactly. No resource lease acquired or lab mutation performed. DECISIONS: verification remains static reproduction plus archived serialized-state checking only; no live allocator safety, original-assisted compare, replacement, or integrated replay claim. Pre-experiment falsifiers and required distinct states/branches are persisted in the attached verifier-owned plan. BLOCKERS/LIMITS: contract evidence array is empty; analyst package itself states runtime capacity/string/unwind states unavailable. Canonical integrated tree is dirty at HEAD 41a6840 but is not the assigned source binding.\",\n \"timestamp\": \"2026-09-10T05:26:16.270911+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json","text":"{\n \"actor\": \"research-abi-correction-verifier\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"4555678e34291015554e7e88\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"next_action\": \"Create and run the independent fail-if-exists static/save reproduction for session run-d6c4dc15e9f4d15155fee856.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-d6c4dc15e9f4d15155fee856\",\n \"summary\": \"OBSERVATIONS: canonical policy, contract, lead checkpoint, all 13 surprise records, relevant Astra decisions, handoff and raw manifests were read. Contract validates in verification with no open surprises. Assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7 match baselines and common dirs /home/alex/sots-engine/.git and /home/alex/sots-re/.git. Paired source binding independently remeasured as engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8, matching analyst manifest despite dirty worktrees. Binary SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and objdump SHA256 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd/version 2.38 match. Handoff artifacts rehash exactly. No resource lease acquired or lab mutation performed. DECISIONS: verification remains static reproduction plus archived serialized-state checking only; no live allocator safety, original-assisted compare, replacement, or integrated replay claim. Pre-experiment falsifiers and required distinct states/branches are persisted in the attached verifier-owned plan. BLOCKERS/LIMITS: contract evidence array is empty; analyst package itself states runtime capacity/string/unwind states unavailable. Canonical integrated tree is dirty at HEAD 41a6840 but is not the assigned source binding.\",\n \"timestamp\": \"2026-09-10T05:26:16.270911+00:00\"\n}","lineStart":1,"lineEnd":19,"totalLines":19,"truncated":false}},"title":"campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json","time":{"start":1789045413123,"end":1789045413154}},"metadata":{"openai":{"itemId":"fc_02ff056ddc4c144f016aa2aaa4c20c87d1b92233c91cc1bb90"}},"id":"prt_08b6a94ea001Ep9PIuIrIMQBBx","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6a76ab001kCGYW6HTDH0UyD"}} +{"type":"step_finish","timestamp":1789045413230,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6a9569001CUWV0fWvstvA2c","reason":"tool-calls","snapshot":"3bb44184be3da3098c1dd3c22be4c395274327ec","messageID":"msg_08b6a76ab001kCGYW6HTDH0UyD","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","type":"step-finish","tokens":{"total":5933,"input":5789,"output":144,"reasoning":0,"cache":{"write":0,"read":0}},"cost":0}} +{"type":"step_start","timestamp":1789045416105,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6aa0a20012IhGNWJ9EJ6bcd","messageID":"msg_08b6a959d001BsKjt8z6D8hG22","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","snapshot":"e86829874f1ba4a1d0ebec27676da8a7b0f643a4","type":"step-start"}} +{"type":"tool_use","timestamp":1789045417744,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"bash","callID":"call_azxGxbrjFYOpiGMGhnPe1Uqd","state":{"status":"error","input":{"command":"python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi && python3 tools/campaign.py --state-root /home/alex/sots-re --help"},"error":"The user has specified a rule which prevents you from using this specific tool call. Here are some of the relevant rules [{\"permission\":\"*\",\"action\":\"allow\",\"pattern\":\"*\"},{\"permission\":\"bash\",\"pattern\":\"*\",\"action\":\"deny\"},{\"permission\":\"bash\",\"pattern\":\"git -C * status *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"git -C * diff *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"git -C * log *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"git -C * rev-parse *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"git -C * show *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re checkpoint *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re resolve *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re surprise *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re status *\",\"action\":\"allow\"},{\"permission\":\"bash\",\"pattern\":\"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re validate *\",\"action\":\"allow\"}]","time":{"start":1789045417698,"end":1789045417741}},"metadata":{"openai":{"itemId":"fc_012ad9e720bcfa25016aa2aaa7f53087d1b3769e2ebb52ed0d"}},"id":"prt_08b6aa0a5001nr0E3qYWrVzMnt","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6a959d001BsKjt8z6D8hG22"}} +{"type":"step_finish","timestamp":1789045417785,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6aa735001zdkZWlGrT3d9Td","reason":"tool-calls","snapshot":"96b74de641330e8a74c97eb8b393e1efdb0df1b1","messageID":"msg_08b6a959d001BsKjt8z6D8hG22","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","type":"step-finish","tokens":{"total":12742,"input":7052,"output":58,"reasoning":0,"cache":{"write":0,"read":5632}},"cost":0}} +{"type":"step_start","timestamp":1789045425974,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6ac730001U7TqgR1WyI6gVm","messageID":"msg_08b6aa75d001SCNmdAtm9QKJrp","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","snapshot":"302a283720f6110cfb1bdd51f60eab427094475f","type":"step-start"}} +{"type":"tool_use","timestamp":1789045426495,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"bash","callID":"call_DgaCuhE71LbvCMBsziVXMX3s","state":{"status":"completed","input":{"command":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi"},"output":"[\n {\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"open_surprises\": [\n {\n \"actor\": \"research-abi-correction-verifier\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"s-81ffc3041e1f07b87928e6f2\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra should inspect verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 and analyst raw authority line 0x00779912 c2 04 00 in verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt. Decide whether to preserve 0x00779913 as an expected-truncated negative and add fresh held-out 0x00779915 as the complete control, then authorize a fresh session-bound verifier reproduction. Require both boundaries plus direct PE bytes; do not erase the failed prediction or treat it as acceptance.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"open\",\n \"summary\": \"Predeclared held-out boundary assumption is falsified before execution. Verification plan run-d6c4dc15e9f4d15155fee856 requires stop 0x00779913 to include the complete ret 4 at 0x00779912. The already-read analyst authority stream shows that instruction bytes are c2 04 00, spanning 0x00779912..0x00779914, so objdump stop 0x00779913 can admit only the first byte c2 under the same stop-address behavior previously established. It cannot be a complete terminal boundary; minimum complete stop is 0x00779915. This is the verifier own failed prediction, not analyst success and not game/runtime behavior. No new disassembly/save experiment, game, allocator, RNG, VM, Ghidra, or source mutation was executed. Pause the affected reproduction plan rather than silently changing its held-out boundary.\",\n \"timestamp\": \"2026-09-10T05:27:48.289391+00:00\"\n }\n ],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"blocked\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n }\n]\n","metadata":{"output":"[\n {\n \"acceptance\": [\n {\n \"axis\": \"static-recovery\",\n \"criterion\": \"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\",\n \"id\": \"ownership-recovered\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\",\n \"id\": \"independent-cross-check\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json\",\n \"dependencies\": [\n \"controls-bootstrap\"\n ],\n \"effects\": [\n \"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\"\n ],\n \"evidence\": [],\n \"id\": \"research-completion-abi\",\n \"inputs\": [\n \"Existing binary fingerprint/address contract and private RE findings\",\n \"Owner-supplied binary or live read-only ReVa endpoint\",\n \"Archived CR traces/saves for observed behavior\",\n \"Source-identical current engine/RE worktree snapshots\"\n ],\n \"open_surprises\": [\n {\n \"actor\": \"research-abi-correction-verifier\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"s-81ffc3041e1f07b87928e6f2\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"probe\": \"Astra should inspect verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 and analyst raw authority line 0x00779912 c2 04 00 in verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt. Decide whether to preserve 0x00779913 as an expected-truncated negative and add fresh held-out 0x00779915 as the complete control, then authorize a fresh session-bound verifier reproduction. Require both boundaries plus direct PE bytes; do not erase the failed prediction or treat it as acceptance.\",\n \"role\": \"verifier\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"open\",\n \"summary\": \"Predeclared held-out boundary assumption is falsified before execution. Verification plan run-d6c4dc15e9f4d15155fee856 requires stop 0x00779913 to include the complete ret 4 at 0x00779912. The already-read analyst authority stream shows that instruction bytes are c2 04 00, spanning 0x00779912..0x00779914, so objdump stop 0x00779913 can admit only the first byte c2 under the same stop-address behavior previously established. It cannot be a complete terminal boundary; minimum complete stop is 0x00779915. This is the verifier own failed prediction, not analyst success and not game/runtime behavior. No new disassembly/save experiment, game, allocator, RNG, VM, Ghidra, or source mutation was executed. Pause the affected reproduction plan rather than silently changing its held-out boundary.\",\n \"timestamp\": \"2026-09-10T05:27:48.289391+00:00\"\n }\n ],\n \"original_dependencies\": [\n \"Original binary is the object of analysis, not a replacement dependency decision\"\n ],\n \"owner\": {\n \"name\": \"research-abi-analyst\",\n \"role\": \"analyst\"\n },\n \"predictions\": [\n \"Count-only scratch updates conceal concrete element construction and original allocator ownership requirements\",\n \"The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient\"\n ],\n \"scope\": [\n \"Reverse engineering only. Own canonical campaign/research/research-completion-abi.md and verify/results/research-completion-abi/ captures. Use assigned source-identical paired worktrees for source inspection; canonical RE for unique evidence/checkpoint outputs.\",\n \"Recover actual constructors/copy/destructors/vector-growth/allocation/free conventions used by RecordObservedTech and EventStorage/TurnEvents/PlayerEvent. Resolve implementable ABI operations, not another general framework.\",\n \"Use existing ReVa read-only tools through canonical tools/reva_call.py or the owner-supplied local binary. No Ghidra renames/type writes, VM mutation, new engine code, framework code, agents or delegation. Do not commit/stage/push.\",\n \"Start with findings/subsystems/{events,observedtech-append,research-replace}.md and campaign/pilots/research-replacement.md; cross-check binary bytes/decompilation rather than merely repeat notes. Anchors: RecordObservedTech 0x007ba1a0, EventStorage::PostEvent 0x008862b0, PlayerEvent constructor 0x0084ee30. Addresses are hypotheses to validate against fingerprint and actual tools.\",\n \"Produce recovered signatures, ownership/lifetime rules, short/long string and empty/full-capacity container paths, and exact unresolved dependencies with minimum next probe. Store raw tool outputs and a hash/provenance index in your owned RE results directory. Keep code-derived material out of engine repo.\"\n ],\n \"status\": \"blocked\",\n \"stop_conditions\": [\n \"Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra\",\n \"Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps\",\n \"Do not expand into framework development or mark pilot replacement ready/accepted\"\n ],\n \"title\": \"RE: research completion record construction and allocator ABI\"\n }\n]\n","exit":0,"truncated":false},"title":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi","time":{"start":1789045426439,"end":1789045426493}},"metadata":{"openai":{"itemId":"fc_006541d300a27302016aa2aab1995887d196fe76c0c5f7985e"}},"id":"prt_08b6ac733001KOMcZWIiaedcP7","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6aa75d001SCNmdAtm9QKJrp"}} +{"type":"tool_use","timestamp":1789045426715,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"grep","callID":"call_im8pFCO3kGiUcNKjDgcYeSC8","state":{"status":"completed","input":{"pattern":"\"status\": \"open\"","path":"/home/alex/sots-re/campaign/runtime/surprises"},"output":"Found 1 matches\n/home/alex/sots-re/campaign/runtime/surprises/s-81ffc3041e1f07b87928e6f2.json:\n Line 9: \"status\": \"open\",\n","metadata":{"matches":1,"truncated":false},"title":"\"status\": \"open\"","time":{"start":1789045426662,"end":1789045426714}},"metadata":{"openai":{"itemId":"fc_006541d300a27302016aa2aab1996c87d19859f49df06f50a3"}},"id":"prt_08b6ac947001ElfatKhrl6vxL0","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6aa75d001SCNmdAtm9QKJrp"}} +{"type":"tool_use","timestamp":1789045426875,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_E22UMDOBfRatV89DOoDCCztU","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/guides/multi-agent-workflow.md"},"output":"/home/alex/sots-re/guides/multi-agent-workflow.md\nfile\n\n1: # Multi-agent operating architecture\n2: \n3: ## Product and milestone\n4: \n5: Reconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\n6: milestone is standalone replay given a captured command stream and complete declared runtime\n7: inputs. The first workflow pilot is the complete research write set. A passing host build is a\n8: component baseline, not a playable engine or independent replacement.\n9: \n10: ## Source of truth\n11: \n12: `campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\n13: leases and surprises, and evidence packages identify inputs, source and executable artifacts.\n14: `campaign/current.json` selects published evidence by path and digest. Board/dashboard are\n15: generated projections, never alternate writable authorities. Exact tool CLI/schema is documented\n16: in `campaign/README.md`. Historical findings retain their original experiment scope; they are\n17: not promoted by copying an old status into a new contract.\n18: \n19: ## Model authority\n20: \n21: | Responsibility | Model |\n22: |---|---|\n23: | Normal planning, architecture and integration loop | GPT-5.6 Sol |\n24: | Bounded RE analysis, implementation and independent verification | GPT-5.6 Sol |\n25: | Routine lab/workload operations | GPT-5.6 Sol |\n26: | Problem and surprise resolution | GPT-6 Astra |\n27: | Context compaction | GPT-5.5 |\n28: \n29: Exact provider IDs are in `campaign/models.json`. The lead escalates to Astra when a falsified\n30: assumption, conflict, instrument effect, or scope change blocks the loop. No fallback is automatic. Model names in editable JSON are\n31: provenance, not authentication: launcher events and independent review support the record.\n32: Permissions reduce accidental role drift; unrestricted local shell access is not a sandbox.\n33: \n34: ## Behavioral slice\n35: \n36: The lead specifies a bounded input domain, full observable write set, dependencies, acceptance\n37: workloads and stop conditions. The analyst recovers behavior; the verifier specifies discriminating\n38: tests before implementation; the implementer changes engine/adapters; the lab operator captures\n39: controls; the verifier reproduces; the integrator tests the combined source snapshot.\n40: \n41: Include transitive effects: allocations, IDs, container ELEMENTS, event text/records, RNG and\n42: nonserialized state. An address/function name is not a sufficient replacement boundary. If a\n43: neighbor function supplies required effects, extend the approved contract or expose it as an\n44: original dependency. Do not call the original and label the result independent.\n45: \n46: Lifecycle is `proposed → ready → implementing → verification → integration → accepted`, with\n47: blocked/revision states. Lifecycle is distinct from evidence strength. Acceptance is scoped to\n48: the manifest's exact procedure and workloads, never universal correctness.\n49: \n50: ## Independence\n51: \n52: Verifier and implementer are different executions. Verification starts with the contract, raw\n53: evidence and reproduction recipe, not just the author's conclusion. Require one meaningful\n54: challenge: held-out state, boundary, negative control, ablation, or independent state accounting.\n55: Both synthetic tests and original-game experiments matter. Repeat-call volume cannot replace\n56: branch and distinct-state coverage. Null effects and zero executions must be distinguishable.\n57: \n58: ## Sessions and recovery\n59: \n60: At most two implementation slices after a single-slice pilot. No nested worker delegation.\n61: Paired worktrees isolate source changes; unique build directories isolate artifacts. Canonical\n62: RE runtime state remains explicit even when a worker runs in `/tmp` worktrees.\n63: \n64: Checkpoint every 20 calls or 15min; also before experiments, compaction, handoff and stopping.\n65: Record source identities, exact changed paths, commands/results, artifacts and hashes, open\n66: surprises, held leases, requested/observed model, session identity and exact next action. Avoid\n67: large prose histories: raw logs belong in evidence; the checkpoint is a bounded resumption record.\n68: \n69: The launcher caps a quantum at 40 agent steps. A new quantum starts fresh using contract and\n70: checkpoint. Auto-compaction with an ample reserved window and four retained turns is enabled.\n71: This is a best-effort context backstop; regular durable checkpoints and fresh quanta provide the\n72: actual recovery discipline. Never claim a model compacted merely because a setting exists.\n73: \n74: ## Surprises\n75: \n76: On a falsified prediction, contradictory claim, unexplained regression, instrument interference,\n77: or newly necessary dependency: record the observation and evidence; block affected work. Astra\n78: first checks the instrument and source identity, then marks claims surviving/qualified/overturned,\n79: chooses a discriminating experiment, and records the revised plan. Unaffected contracted work\n80: may continue. Updating a paragraph without invalidating affected acceptance is insufficient.\n81: \n82: ## Lab ownership\n83: \n84: Acquire a canonical resource lease before VM, build-host or Ghidra mutation. An expired timestamp\n85: does not authorize stealing a lease. The lead reconciles stale ownership with actual processes.\n86: Use one guest at a time for maintenance, capture before/after inventory, preserve access and\n87: runtime dependencies, and verify unattended console login plus authenticated administration.\n88: Reboots require a free guest and a recorded recovery path. Runtime/Ghidra changes are experiments\n89: with provenance, not undocumented preparatory steps.\n90: \n91: ## Gate and publication\n92: \n93: Run the local gate with explicit engine, corpus, new output directory and profile. It snapshots\n94: source, uses fresh builds, records manifests and runs the expected test inventory once. Host\n95: profile allows a named list of unavailable asset/trace tests and publishes them as limitations.\n96: Full acceptance requires the full profile and the slice-specific original oracle; no blanket\n97: waiver converts a host pass to fidelity. Standalone measurement may diverge; acceptance may not.\n98: \n99: The integrator alone selects current results after verifying their hashes and source binding.\n100: No percentages of LOC, mapped rows or closed leaves purport to measure engine completeness.\n101: Run failure and missing evidence are visible states. Old results remain historical, not current.\n\n(End of file - total 101 lines)\n","metadata":{"preview":"# Multi-agent operating architecture\n\n## Product and milestone\n\nReconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\nmilestone is standalone replay given a captured command stream and complete declared runtime\ninputs. The first workflow pilot is the complete research write set. A passing host build is a\ncomponent baseline, not a playable engine or independent replacement.\n\n## Source of truth\n\n`campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\nleases and surprises, and evidence packages identify inputs, source and executable artifacts.\n`campaign/current.json` selects published evidence by path and digest. Board/dashboard are\ngenerated projections, never alternate writable authorities. Exact tool CLI/schema is documented\nin `campaign/README.md`. Historical findings retain their original experiment scope; they are\nnot promoted by copying an old status into a new contract.\n\n## Model authority\n","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/guides/multi-agent-workflow.md","text":"# Multi-agent operating architecture\n\n## Product and milestone\n\nReconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\nmilestone is standalone replay given a captured command stream and complete declared runtime\ninputs. The first workflow pilot is the complete research write set. A passing host build is a\ncomponent baseline, not a playable engine or independent replacement.\n\n## Source of truth\n\n`campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\nleases and surprises, and evidence packages identify inputs, source and executable artifacts.\n`campaign/current.json` selects published evidence by path and digest. Board/dashboard are\ngenerated projections, never alternate writable authorities. Exact tool CLI/schema is documented\nin `campaign/README.md`. Historical findings retain their original experiment scope; they are\nnot promoted by copying an old status into a new contract.\n\n## Model authority\n\n| Responsibility | Model |\n|---|---|\n| Normal planning, architecture and integration loop | GPT-5.6 Sol |\n| Bounded RE analysis, implementation and independent verification | GPT-5.6 Sol |\n| Routine lab/workload operations | GPT-5.6 Sol |\n| Problem and surprise resolution | GPT-6 Astra |\n| Context compaction | GPT-5.5 |\n\nExact provider IDs are in `campaign/models.json`. The lead escalates to Astra when a falsified\nassumption, conflict, instrument effect, or scope change blocks the loop. No fallback is automatic. Model names in editable JSON are\nprovenance, not authentication: launcher events and independent review support the record.\nPermissions reduce accidental role drift; unrestricted local shell access is not a sandbox.\n\n## Behavioral slice\n\nThe lead specifies a bounded input domain, full observable write set, dependencies, acceptance\nworkloads and stop conditions. The analyst recovers behavior; the verifier specifies discriminating\ntests before implementation; the implementer changes engine/adapters; the lab operator captures\ncontrols; the verifier reproduces; the integrator tests the combined source snapshot.\n\nInclude transitive effects: allocations, IDs, container ELEMENTS, event text/records, RNG and\nnonserialized state. An address/function name is not a sufficient replacement boundary. If a\nneighbor function supplies required effects, extend the approved contract or expose it as an\noriginal dependency. Do not call the original and label the result independent.\n\nLifecycle is `proposed → ready → implementing → verification → integration → accepted`, with\nblocked/revision states. Lifecycle is distinct from evidence strength. Acceptance is scoped to\nthe manifest's exact procedure and workloads, never universal correctness.\n\n## Independence\n\nVerifier and implementer are different executions. Verification starts with the contract, raw\nevidence and reproduction recipe, not just the author's conclusion. Require one meaningful\nchallenge: held-out state, boundary, negative control, ablation, or independent state accounting.\nBoth synthetic tests and original-game experiments matter. Repeat-call volume cannot replace\nbranch and distinct-state coverage. Null effects and zero executions must be distinguishable.\n\n## Sessions and recovery\n\nAt most two implementation slices after a single-slice pilot. No nested worker delegation.\nPaired worktrees isolate source changes; unique build directories isolate artifacts. Canonical\nRE runtime state remains explicit even when a worker runs in `/tmp` worktrees.\n\nCheckpoint every 20 calls or 15min; also before experiments, compaction, handoff and stopping.\nRecord source identities, exact changed paths, commands/results, artifacts and hashes, open\nsurprises, held leases, requested/observed model, session identity and exact next action. Avoid\nlarge prose histories: raw logs belong in evidence; the checkpoint is a bounded resumption record.\n\nThe launcher caps a quantum at 40 agent steps. A new quantum starts fresh using contract and\ncheckpoint. Auto-compaction with an ample reserved window and four retained turns is enabled.\nThis is a best-effort context backstop; regular durable checkpoints and fresh quanta provide the\nactual recovery discipline. Never claim a model compacted merely because a setting exists.\n\n## Surprises\n\nOn a falsified prediction, contradictory claim, unexplained regression, instrument interference,\nor newly necessary dependency: record the observation and evidence; block affected work. Astra\nfirst checks the instrument and source identity, then marks claims surviving/qualified/overturned,\nchooses a discriminating experiment, and records the revised plan. Unaffected contracted work\nmay continue. Updating a paragraph without invalidating affected acceptance is insufficient.\n\n## Lab ownership\n\nAcquire a canonical resource lease before VM, build-host or Ghidra mutation. An expired timestamp\ndoes not authorize stealing a lease. The lead reconciles stale ownership with actual processes.\nUse one guest at a time for maintenance, capture before/after inventory, preserve access and\nruntime dependencies, and verify unattended console login plus authenticated administration.\nReboots require a free guest and a recorded recovery path. Runtime/Ghidra changes are experiments\nwith provenance, not undocumented preparatory steps.\n\n## Gate and publication\n\nRun the local gate with explicit engine, corpus, new output directory and profile. It snapshots\nsource, uses fresh builds, records manifests and runs the expected test inventory once. Host\nprofile allows a named list of unavailable asset/trace tests and publishes them as limitations.\nFull acceptance requires the full profile and the slice-specific original oracle; no blanket\nwaiver converts a host pass to fidelity. Standalone measurement may diverge; acceptance may not.\n\nThe integrator alone selects current results after verifying their hashes and source binding.\nNo percentages of LOC, mapped rows or closed leaves purport to measure engine completeness.\nRun failure and missing evidence are visible states. Old results remain historical, not current.","lineStart":1,"lineEnd":101,"totalLines":101,"truncated":false}},"title":"guides/multi-agent-workflow.md","time":{"start":1789045426865,"end":1789045426872}},"metadata":{"openai":{"itemId":"fc_006541d300a27302016aa2aab1997887d1bb06ad7535e70f8c"}},"id":"prt_08b6aca79001X421RPgfnsJmUM","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6aa75d001SCNmdAtm9QKJrp"}} +{"type":"tool_use","timestamp":1789045427291,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_0XfFcCHaUNnnrDDsGC0FK5yX","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/leases"},"output":"/home/alex/sots-re/campaign/runtime/leases\ndirectory\n\nspicy-autounattend-credential.json\nvm140.json\nvm141.json\nvm144.json\nvm145.json\nvm146.json\n\n(6 entries)\n","metadata":{"preview":"spicy-autounattend-credential.json\nvm140.json\nvm141.json\nvm144.json\nvm145.json\nvm146.json","truncated":false,"loaded":[],"display":{"type":"directory","path":"/home/alex/sots-re/campaign/runtime/leases","entries":["spicy-autounattend-credential.json","vm140.json","vm141.json","vm144.json","vm145.json","vm146.json"],"offset":1,"totalEntries":6,"truncated":false}},"title":"campaign/runtime/leases","time":{"start":1789045427285,"end":1789045427289}},"metadata":{"openai":{"itemId":"fc_006541d300a27302016aa2aab1998087d1ab09a880b66a9ce9"}},"id":"prt_08b6acb28001LPPWUuP25ACtOs","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6aa75d001SCNmdAtm9QKJrp"}} +{"type":"step_finish","timestamp":1789045427469,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6acd0a001t3253ZRcpt4MGd","reason":"tool-calls","snapshot":"998787d6704bc440d28b5148fe0db5ab0cd1e440","messageID":"msg_08b6aa75d001SCNmdAtm9QKJrp","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","type":"step-finish","tokens":{"total":13220,"input":525,"output":151,"reasoning":0,"cache":{"write":0,"read":12544}},"cost":0}} +{"type":"step_start","timestamp":1789045431349,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6adc31001K4Bztz4jTzPmFb","messageID":"msg_08b6acd34001p91k7dEz6QjAjq","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","snapshot":"cc99475ecc55d286b61a97e9266163f8d866e32b","type":"step-start"}} +{"type":"text","timestamp":1789045442799,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6adc33001rXMDxRH7s78eCZ","messageID":"msg_08b6acd34001p91k7dEz6QjAjq","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","type":"text","text":"Observation: the verifier’s predeclared stop address `0x00779913` cannot contain the full three-byte `ret 4` recorded at `0x00779912` (`c2 04 00`). Provenance: open surprise `s-81ffc3041e1f07b87928e6f2`, citing the verifier plan and analyst raw disassembly. This is a failed verification-boundary prediction, not measured game behavior; the surprise states that the new reproduction never executed. I will inspect those artifacts and identities before recording a scoped resolution.\n\n","time":{"start":1789045431347,"end":1789045442797},"metadata":{"openai":{"itemId":"msg_0a3a09eb5e6556ad016aa2aab7366487d194bbeaeedbe37c78","phase":"commentary"}}}} +{"type":"tool_use","timestamp":1789045443848,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_F5nE2FQKqeDz3BQ5Iek1AUWc","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md"},"output":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\nfile\n\n1: # Verification plan — run-d6c4dc15e9f4d15155fee856\n2: \n3: Role `verifier`; actor `research-abi-correction-verifier`; requested model\n4: `openai/gpt-5.6-sol`. This plan predates this session's disassembly and save-state experiments.\n5: \n6: ## Scope separation\n7: \n8: The analyst package is a fresh **static capture**, not live allocator execution, original-assisted\n9: execution, partial/full compare, independent replacement, or integrated replay. This verifier will\n10: independently reproduce static instruction/byte facts and archived save values only. It will not\n11: claim runtime allocator safety, event posting, replacement acceptance, or integrated-tree evidence.\n12: \n13: ## Falsifiers\n14: \n15: 1. Reject if contract/campaign validation fails, an open surprise exists, either paired worktree is\n16: not at its pinned baseline/common repository, source binding differs from the handoff, or binary\n17: or objdump identity differs. Dirty trees are acceptable only when their full source digests match.\n18: 2. Reject zero executions, nonzero command exits, empty required stdout, unexpected stderr/skips,\n19: missing streams, reused output, or a manifest/session mismatch.\n20: 3. Require stop `0x00779a20` to be incomplete despite exit zero: raw bytes must show `74 10` while\n21: decoded output at `0x00779a1f` shows only `74`. If counted as a complete stream, reject.\n22: 4. Require aligned stops `0x00779a21`, `0x00779a23`, and `0x00779a28` to add exactly complete\n23: `74 10`, `8b cf`, and `e8 28 6a ff ff` rows. Any truncated terminal row or non-prefix change in\n24: the shared decoded range rejects the boundary interpretation.\n25: 5. Independently hold out stop `0x00779913` for nested-copy authority. It must include complete\n26: `ret 4` at `0x00779912` without entering the later routine; compare it with raw terminal bytes.\n27: A bad terminal boundary or changed preceding rows falsifies the package's authority boundary.\n28: 6. Check key ABI claims directly: get/create and outer append end `ret 4`; nested destruction ends\n29: `ret`; nested copy has normal `ret 4`, unwind cleanup, and deallocation paths; get/create has no\n30: write to temporary `[ebp-0x20]` before append, copies source `+4`, cleans the temporary nested\n31: vector, then stores requested turn to the stored element. Contradictory def/use evidence pauses.\n32: 7. Independently parse the archived save, not narrative counters. Require the named player/event\n33: container elements, IDs, strings, exact `0x7f7fffff` position words, and empty player states to\n34: match. Missing parse coverage or unexpected skips reject archived-value validation.\n35: 8. Check actual RNG evidence independently: static helper captures execute no game and therefore\n36: expose no RNG state/draws. Any claim that unchanged/zero RNG was measured by these captures is a\n37: failure. Archived W1 unchanged RNG remains historical and outside this static reproduction.\n38: \n39: ## Required branch exposures and distinct states\n40: \n41: Static instruction exposure required now: existing last-match return versus miss; spare-capacity\n42: append versus full-capacity growth edges; empty versus nonempty nested copy; null versus nonnull\n43: nested destruction; normal return versus unwind cleanup; short/long string branch instructions;\n44: known-bad truncated versus aligned boundary. Instruction exposure is not runtime execution.\n45: \n46: Runtime states still unexercised and must remain explicit residuals: existing-last-match, miss with\n47: spare/full outer capacity, empty/nonempty nested vectors owning short/long strings, deliberate\n48: allocation failure/throw, duplicate/description-only-different events, and transient stack\n49: sentinels. Archived save states are distinct from all of those and validate serialized values only.\n50: \n51: ## Planned reproduction\n52: \n53: Create a fail-if-exists session directory owned by this verifier. Use an independent script, not the\n54: analyst's hard-coded recipe, to bind source/input/tool identities, run the package windows and held-\n55: out boundary, archive raw stdout/stderr, parse instruction rows and save values, and emit a manifest\n56: whose failed predictions/residuals remain failures or limitations.\n\n(End of file - total 56 lines)\n","metadata":{"preview":"# Verification plan — run-d6c4dc15e9f4d15155fee856\n\nRole `verifier`; actor `research-abi-correction-verifier`; requested model\n`openai/gpt-5.6-sol`. This plan predates this session's disassembly and save-state experiments.\n\n## Scope separation\n\nThe analyst package is a fresh **static capture**, not live allocator execution, original-assisted\nexecution, partial/full compare, independent replacement, or integrated replay. This verifier will\nindependently reproduce static instruction/byte facts and archived save values only. It will not\nclaim runtime allocator safety, event posting, replacement acceptance, or integrated-tree evidence.\n\n## Falsifiers\n\n1. Reject if contract/campaign validation fails, an open surprise exists, either paired worktree is\n not at its pinned baseline/common repository, source binding differs from the handoff, or binary\n or objdump identity differs. Dirty trees are acceptable only when their full source digests match.\n2. Reject zero executions, nonzero command exits, empty required stdout, unexpected stderr/skips,\n missing streams, reused output, or a manifest/session mismatch.\n3. Require stop `0x00779a20` to be incomplete despite exit zero: raw bytes must show `74 10` while","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md","text":"# Verification plan — run-d6c4dc15e9f4d15155fee856\n\nRole `verifier`; actor `research-abi-correction-verifier`; requested model\n`openai/gpt-5.6-sol`. This plan predates this session's disassembly and save-state experiments.\n\n## Scope separation\n\nThe analyst package is a fresh **static capture**, not live allocator execution, original-assisted\nexecution, partial/full compare, independent replacement, or integrated replay. This verifier will\nindependently reproduce static instruction/byte facts and archived save values only. It will not\nclaim runtime allocator safety, event posting, replacement acceptance, or integrated-tree evidence.\n\n## Falsifiers\n\n1. Reject if contract/campaign validation fails, an open surprise exists, either paired worktree is\n not at its pinned baseline/common repository, source binding differs from the handoff, or binary\n or objdump identity differs. Dirty trees are acceptable only when their full source digests match.\n2. Reject zero executions, nonzero command exits, empty required stdout, unexpected stderr/skips,\n missing streams, reused output, or a manifest/session mismatch.\n3. Require stop `0x00779a20` to be incomplete despite exit zero: raw bytes must show `74 10` while\n decoded output at `0x00779a1f` shows only `74`. If counted as a complete stream, reject.\n4. Require aligned stops `0x00779a21`, `0x00779a23`, and `0x00779a28` to add exactly complete\n `74 10`, `8b cf`, and `e8 28 6a ff ff` rows. Any truncated terminal row or non-prefix change in\n the shared decoded range rejects the boundary interpretation.\n5. Independently hold out stop `0x00779913` for nested-copy authority. It must include complete\n `ret 4` at `0x00779912` without entering the later routine; compare it with raw terminal bytes.\n A bad terminal boundary or changed preceding rows falsifies the package's authority boundary.\n6. Check key ABI claims directly: get/create and outer append end `ret 4`; nested destruction ends\n `ret`; nested copy has normal `ret 4`, unwind cleanup, and deallocation paths; get/create has no\n write to temporary `[ebp-0x20]` before append, copies source `+4`, cleans the temporary nested\n vector, then stores requested turn to the stored element. Contradictory def/use evidence pauses.\n7. Independently parse the archived save, not narrative counters. Require the named player/event\n container elements, IDs, strings, exact `0x7f7fffff` position words, and empty player states to\n match. Missing parse coverage or unexpected skips reject archived-value validation.\n8. Check actual RNG evidence independently: static helper captures execute no game and therefore\n expose no RNG state/draws. Any claim that unchanged/zero RNG was measured by these captures is a\n failure. Archived W1 unchanged RNG remains historical and outside this static reproduction.\n\n## Required branch exposures and distinct states\n\nStatic instruction exposure required now: existing last-match return versus miss; spare-capacity\nappend versus full-capacity growth edges; empty versus nonempty nested copy; null versus nonnull\nnested destruction; normal return versus unwind cleanup; short/long string branch instructions;\nknown-bad truncated versus aligned boundary. Instruction exposure is not runtime execution.\n\nRuntime states still unexercised and must remain explicit residuals: existing-last-match, miss with\nspare/full outer capacity, empty/nonempty nested vectors owning short/long strings, deliberate\nallocation failure/throw, duplicate/description-only-different events, and transient stack\nsentinels. Archived save states are distinct from all of those and validate serialized values only.\n\n## Planned reproduction\n\nCreate a fail-if-exists session directory owned by this verifier. Use an independent script, not the\nanalyst's hard-coded recipe, to bind source/input/tool identities, run the package windows and held-\nout boundary, archive raw stdout/stderr, parse instruction rows and save values, and emit a manifest\nwhose failed predictions/residuals remain failures or limitations.","lineStart":1,"lineEnd":56,"totalLines":56,"truncated":false}},"title":"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md","time":{"start":1789045443834,"end":1789045443845}},"metadata":{"openai":{"itemId":"fc_0a3a09eb5e6556ad016aa2aac1e06487d18548d6775a54d003"}},"id":"prt_08b6b0ab5001p5FxGDWX6Msldo","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6acd34001p91k7dEz6QjAjq"}} +{"type":"tool_use","timestamp":1789045444037,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_wogXdJzFQaHwfBsmo3UBqb17","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\nfile\n\n1: \n2: /home/alex/sots-re/dumps/sots.exe: file format pei-i386\n3: \n4: \n5: Disassembly of section .text:\n6: \n7: 00779850 <.text+0x378850>:\n8: 779850:\t55 \tpush ebp\n9: 779851:\t8b ec \tmov ebp,esp\n10: 779853:\t6a ff \tpush 0xffffffff\n11: 779855:\t68 10 7b 98 00 \tpush 0x987b10\n12: 77985a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n13: 779860:\t50 \tpush eax\n14: 779861:\t83 ec 08 \tsub esp,0x8\n15: 779864:\t53 \tpush ebx\n16: 779865:\t56 \tpush esi\n17: 779866:\t57 \tpush edi\n18: 779867:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n19: 77986c:\t33 c5 \txor eax,ebp\n20: 77986e:\t50 \tpush eax\n21: 77986f:\t8d 45 f4 \tlea eax,[ebp-0xc]\n22: 779872:\t64 a3 00 00 00 00 \tmov fs:0x0,eax\n23: 779878:\t89 65 f0 \tmov DWORD PTR [ebp-0x10],esp\n24: 77987b:\t8b f1 \tmov esi,ecx\n25: 77987d:\t89 75 ec \tmov DWORD PTR [ebp-0x14],esi\n26: 779880:\t8b 5d 08 \tmov ebx,DWORD PTR [ebp+0x8]\n27: 779883:\t33 c0 \txor eax,eax\n28: 779885:\t89 06 \tmov DWORD PTR [esi],eax\n29: 779887:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n30: 77988a:\t89 46 08 \tmov DWORD PTR [esi+0x8],eax\n31: 77988d:\t8b 4b 04 \tmov ecx,DWORD PTR [ebx+0x4]\n32: 779890:\t2b 0b \tsub ecx,DWORD PTR [ebx]\n33: 779892:\tb8 09 cb 3d 8d \tmov eax,0x8d3dcb09\n34: 779897:\tf7 e9 \timul ecx\n35: 779899:\t03 d1 \tadd edx,ecx\n36: 77989b:\tc1 fa 06 \tsar edx,0x6\n37: 77989e:\t8b fa \tmov edi,edx\n38: 7798a0:\tb8 00 00 00 00 \tmov eax,0x0\n39: 7798a5:\tc1 ef 1f \tshr edi,0x1f\n40: 7798a8:\t03 fa \tadd edi,edx\n41: 7798aa:\t89 06 \tmov DWORD PTR [esi],eax\n42: 7798ac:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n43: 7798af:\t89 46 08 \tmov DWORD PTR [esi+0x8],eax\n44: 7798b2:\t74 4b \tje 0x7798ff\n45: 7798b4:\t81 ff 2c f7 34 02 \tcmp edi,0x234f72c\n46: 7798ba:\t76 0b \tjbe 0x7798c7\n47: 7798bc:\t68 90 1f 9e 00 \tpush 0x9e1f90\n48: 7798c1:\tff 15 50 d1 9d 00 \tcall DWORD PTR ds:0x9dd150\n49: 7798c7:\t8d 4e 0c \tlea ecx,[esi+0xc]\n50: 7798ca:\t57 \tpush edi\n51: 7798cb:\te8 70 16 01 00 \tcall 0x78af40\n52: 7798d0:\t6b ff 74 \timul edi,edi,0x74\n53: 7798d3:\t8b 55 08 \tmov edx,DWORD PTR [ebp+0x8]\n54: 7798d6:\t52 \tpush edx\n55: 7798d7:\t8d 56 0c \tlea edx,[esi+0xc]\n56: 7798da:\t52 \tpush edx\n57: 7798db:\t03 f8 \tadd edi,eax\n58: 7798dd:\t89 06 \tmov DWORD PTR [esi],eax\n59: 7798df:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n60: 7798e2:\t89 7e 08 \tmov DWORD PTR [esi+0x8],edi\n61: 7798e5:\t8b 4b 04 \tmov ecx,DWORD PTR [ebx+0x4]\n62: 7798e8:\t8b 1b \tmov ebx,DWORD PTR [ebx]\n63: 7798ea:\t50 \tpush eax\n64: 7798eb:\t51 \tpush ecx\n65: 7798ec:\t53 \tpush ebx\n66: 7798ed:\tc7 45 fc 00 00 00 00 \tmov DWORD PTR [ebp-0x4],0x0\n67: 7798f4:\te8 a7 8c ff ff \tcall 0x7725a0\n68: 7798f9:\t83 c4 14 \tadd esp,0x14\n69: 7798fc:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n70: 7798ff:\t8b c6 \tmov eax,esi\n71: 779901:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n72: 779904:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n73: 77990b:\t59 \tpop ecx\n74: 77990c:\t5f \tpop edi\n75: 77990d:\t5e \tpop esi\n76: 77990e:\t5b \tpop ebx\n77: 77990f:\t8b e5 \tmov esp,ebp\n78: 779911:\t5d \tpop ebp\n79: 779912:\tc2 04 00 \tret 0x4\n80: 779915:\t8b 4d ec \tmov ecx,DWORD PTR [ebp-0x14]\n81: 779918:\te8 63 fc ea ff \tcall 0x629580\n82: 77991d:\t6a 00 \tpush 0x0\n83: 77991f:\t6a 00 \tpush 0x0\n84: 779921:\te8 96 b6 1a 00 \tcall 0x924fbc\n85: 779926:\tcc \tint3 \n86: 779927:\tcc \tint3 \n87: 779928:\tcc \tint3 \n88: 779929:\tcc \tint3 \n89: 77992a:\tcc \tint3 \n90: 77992b:\tcc \tint3 \n91: 77992c:\tcc \tint3 \n92: 77992d:\tcc \tint3 \n93: 77992e:\tcc \tint3 \n94: 77992f:\tcc \tint3 \n\n(End of file - total 94 lines)\n","metadata":{"preview":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00779850 <.text+0x378850>:\n 779850:\t55 \tpush ebp\n 779851:\t8b ec \tmov ebp,esp\n 779853:\t6a ff \tpush 0xffffffff\n 779855:\t68 10 7b 98 00 \tpush 0x987b10\n 77985a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n 779860:\t50 \tpush eax\n 779861:\t83 ec 08 \tsub esp,0x8\n 779864:\t53 \tpush ebx\n 779865:\t56 \tpush esi\n 779866:\t57 \tpush edi\n 779867:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n 77986c:\t33 c5 \txor eax,ebp\n 77986e:\t50 \tpush eax","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt","text":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\n\nDisassembly of section .text:\n\n00779850 <.text+0x378850>:\n 779850:\t55 \tpush ebp\n 779851:\t8b ec \tmov ebp,esp\n 779853:\t6a ff \tpush 0xffffffff\n 779855:\t68 10 7b 98 00 \tpush 0x987b10\n 77985a:\t64 a1 00 00 00 00 \tmov eax,fs:0x0\n 779860:\t50 \tpush eax\n 779861:\t83 ec 08 \tsub esp,0x8\n 779864:\t53 \tpush ebx\n 779865:\t56 \tpush esi\n 779866:\t57 \tpush edi\n 779867:\ta1 78 8b af 00 \tmov eax,ds:0xaf8b78\n 77986c:\t33 c5 \txor eax,ebp\n 77986e:\t50 \tpush eax\n 77986f:\t8d 45 f4 \tlea eax,[ebp-0xc]\n 779872:\t64 a3 00 00 00 00 \tmov fs:0x0,eax\n 779878:\t89 65 f0 \tmov DWORD PTR [ebp-0x10],esp\n 77987b:\t8b f1 \tmov esi,ecx\n 77987d:\t89 75 ec \tmov DWORD PTR [ebp-0x14],esi\n 779880:\t8b 5d 08 \tmov ebx,DWORD PTR [ebp+0x8]\n 779883:\t33 c0 \txor eax,eax\n 779885:\t89 06 \tmov DWORD PTR [esi],eax\n 779887:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n 77988a:\t89 46 08 \tmov DWORD PTR [esi+0x8],eax\n 77988d:\t8b 4b 04 \tmov ecx,DWORD PTR [ebx+0x4]\n 779890:\t2b 0b \tsub ecx,DWORD PTR [ebx]\n 779892:\tb8 09 cb 3d 8d \tmov eax,0x8d3dcb09\n 779897:\tf7 e9 \timul ecx\n 779899:\t03 d1 \tadd edx,ecx\n 77989b:\tc1 fa 06 \tsar edx,0x6\n 77989e:\t8b fa \tmov edi,edx\n 7798a0:\tb8 00 00 00 00 \tmov eax,0x0\n 7798a5:\tc1 ef 1f \tshr edi,0x1f\n 7798a8:\t03 fa \tadd edi,edx\n 7798aa:\t89 06 \tmov DWORD PTR [esi],eax\n 7798ac:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n 7798af:\t89 46 08 \tmov DWORD PTR [esi+0x8],eax\n 7798b2:\t74 4b \tje 0x7798ff\n 7798b4:\t81 ff 2c f7 34 02 \tcmp edi,0x234f72c\n 7798ba:\t76 0b \tjbe 0x7798c7\n 7798bc:\t68 90 1f 9e 00 \tpush 0x9e1f90\n 7798c1:\tff 15 50 d1 9d 00 \tcall DWORD PTR ds:0x9dd150\n 7798c7:\t8d 4e 0c \tlea ecx,[esi+0xc]\n 7798ca:\t57 \tpush edi\n 7798cb:\te8 70 16 01 00 \tcall 0x78af40\n 7798d0:\t6b ff 74 \timul edi,edi,0x74\n 7798d3:\t8b 55 08 \tmov edx,DWORD PTR [ebp+0x8]\n 7798d6:\t52 \tpush edx\n 7798d7:\t8d 56 0c \tlea edx,[esi+0xc]\n 7798da:\t52 \tpush edx\n 7798db:\t03 f8 \tadd edi,eax\n 7798dd:\t89 06 \tmov DWORD PTR [esi],eax\n 7798df:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n 7798e2:\t89 7e 08 \tmov DWORD PTR [esi+0x8],edi\n 7798e5:\t8b 4b 04 \tmov ecx,DWORD PTR [ebx+0x4]\n 7798e8:\t8b 1b \tmov ebx,DWORD PTR [ebx]\n 7798ea:\t50 \tpush eax\n 7798eb:\t51 \tpush ecx\n 7798ec:\t53 \tpush ebx\n 7798ed:\tc7 45 fc 00 00 00 00 \tmov DWORD PTR [ebp-0x4],0x0\n 7798f4:\te8 a7 8c ff ff \tcall 0x7725a0\n 7798f9:\t83 c4 14 \tadd esp,0x14\n 7798fc:\t89 46 04 \tmov DWORD PTR [esi+0x4],eax\n 7798ff:\t8b c6 \tmov eax,esi\n 779901:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 779904:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 77990b:\t59 \tpop ecx\n 77990c:\t5f \tpop edi\n 77990d:\t5e \tpop esi\n 77990e:\t5b \tpop ebx\n 77990f:\t8b e5 \tmov esp,ebp\n 779911:\t5d \tpop ebp\n 779912:\tc2 04 00 \tret 0x4\n 779915:\t8b 4d ec \tmov ecx,DWORD PTR [ebp-0x14]\n 779918:\te8 63 fc ea ff \tcall 0x629580\n 77991d:\t6a 00 \tpush 0x0\n 77991f:\t6a 00 \tpush 0x0\n 779921:\te8 96 b6 1a 00 \tcall 0x924fbc\n 779926:\tcc \tint3 \n 779927:\tcc \tint3 \n 779928:\tcc \tint3 \n 779929:\tcc \tint3 \n 77992a:\tcc \tint3 \n 77992b:\tcc \tint3 \n 77992c:\tcc \tint3 \n 77992d:\tcc \tint3 \n 77992e:\tcc \tint3 \n 77992f:\tcc \tint3 ","lineStart":1,"lineEnd":94,"totalLines":94,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt","time":{"start":1789045444020,"end":1789045444035}},"metadata":{"openai":{"itemId":"fc_0a3a09eb5e6556ad016aa2aac1e16887d1bed07a1498fa0caf"}},"id":"prt_08b6b0d22001rqDmfCv5VAsYu2","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6acd34001p91k7dEz6QjAjq"}} +{"type":"tool_use","timestamp":1789045444347,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_y1Hjnlh1OLfBL3DDI3UrBMeP","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/research/research-completion-abi.md"},"output":"/home/alex/sots-re/campaign/research/research-completion-abi.md\nfile\n\n1: # Completion record ABI recovery\n2: \n3: Static handoff only. The provenance index is\n4: `verify/results/research-completion-abi/reva-2026-09-09-index.md`; the regenerated instruction\n5: capture and interpretation are respectively\n6: `verify/results/research-completion-abi/objdump-2026-09-09-ownership.txt` and\n7: `verify/results/research-completion-abi/recovered-static.md`. The complete dedup/helper repair is\n8: `verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt`; its first-window raw\n9: provenance is superseded by the paired captures and identity record in\n10: `verify/results/research-completion-abi/objdump-2026-09-10-boundary-repair.md` under Astra decision\n11: `d-d2a9b8be6399a6abaa0e05a5`. Input identity is `dumps/sots.exe`,\n12: SHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841` / MD5\n13: `9969481c39f4b33a8a21c48b62abee4c`.\n14: \n15: The ownership archive's terminal-byte provenance is likewise superseded by the complete package\n16: `verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/` under Astra decision\n17: `d-d4c494ba02ada278030ef473`. Its six narrow/wide pairs, raw section-byte checks and full ten-window\n18: audit establish the encoded return immediates while preserving the static-only limitation. The\n19: package found three additional truncated historical stops (ObservedTech append/reallocator and\n20: string allocation/replacement); their widened streams are now the byte authority. No archive\n21: production-history inference or live-safety claim is made.\n22: \n23: The TurnEvents correction's current-session boundary authority is\n24: `verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/`. It supersedes the stale-session\n25: attribution and truncated nested-copy stream invalidated by decisions\n26: `d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. The package binds the actual session\n27: and a fail-if-used output directory; captures complete helper authority through `0x0077992f`; and\n28: retains `0x00779a20` as an expected-failing boundary beside complete `0x00779a21`, `0x00779a23`, and\n29: `0x00779a28` controls plus raw bytes. It is analyst static evidence awaiting a fresh independent\n30: verifier, not restored acceptance.\n31: \n32: ## Implementable machine boundaries recovered\n33: \n34: * `0x008562a0`: ObservedTech default constructor, ECX receiver, EAX return, plain `ret`.\n35: * `0x007b7320`: ObservedTech vector append, ECX receiver plus one stack word, `ret 4`; stride `0x2c`.\n36: Its copy helper is `0x0079a150` (cdecl-style allocator/destination/source stack arguments), which copy-constructs the embedded string rather than copying a\n37: vector element header. Capacity growth is `0x007b5820` -> `0x007b34e0` -> `0x0057e590`.\n38: * `0x0057e590` calls `0x00924fb6` with `count * 0x2c`; reallocation destroys every old element via\n39: virtual slot 0 with zero and frees the array through `0x00924faa`. These are MSVCR100 scalar-new\n40: and scalar-delete import thunks, not clean-room allocator operations.\n41: * `0x0086c580`: PlayerEvent vector append, ECX receiver plus one stack word, `ret 4`; stride `0x74`.\n42: It grows via `0x00869500` and copy-constructs through `0x007693f0` (ECX destination, stack source,\n43: EAX destination return, ret 4), independently assigning all\n44: three strings. `0x0061ae90` releases each long string via `0x00924faa` when capacity is `>= 0x10`.\n45: * `0x004249a0` (reached by `0x00425430` assignment) allocates through `0x00924fb6` and releases a\n46: prior long destination buffer through `0x00924faa`. A temporary long string is therefore not\n47: transferable by raw header copy.\n48: * `0x00885380`: get-or-create TurnEvents bucket, ECX EventStorage receiver plus stack turn, EAX\n49: bucket return, `ret 4`. It returns the last existing matching turn. On absence it initializes the\n50: stack bucket's vptr and empty nested-vector header but **not** its `EvTurn`; `0x00884cb0` copies\n51: that incoming stack word and deep-copies the nested vector. After temporary nested-vector cleanup,\n52: get/create writes the requested turn into the stored last element and returns it. The transient\n53: word is not measured randomness or a zero default. Fresh correction capture:\n54: `verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/`, governed by\n55: `d-b51f3f76803e852ed250846a`.\n56: * `0x00884cb0`: outer TurnEvents vector append, ECX vector receiver plus stack source, `ret 4`,\n57: stride `0x18`. Full-capacity growth is `0x008841a0` -> `0x00883a60`; allocation is\n58: `0x006e8f50` -> `0x00924fb6` with `count * 0x18`. Existing buckets are copy-constructed by\n59: `0x0077fed0`, including an independently allocated/copied nested PlayerEvent vector via\n60: `0x00779850` -> `0x0078af40` (`count * 0x74`) -> `0x007725a0` -> `0x007693f0`.\n61: * TurnEvents virtual slot zero resolves from vtable `0x00a0f07c` to `0x0062e120`. It destroys the\n62: nested vector through `0x00629580`; that destroys every `0x74` PlayerEvent, frees the nested block,\n63: and zeros its three pointers. Static unwind edges clean partial PlayerEvent and TurnEvents ranges\n64: and free the new outer block, but no allocation failure was executed live.\n65: \n66: ## Ordering / visible effects\n67: \n68: RecordObservedTech's append predicate is name absence, not capacity. A matching existing record\n69: keeps first-turn/name and updates last-turn/with mask. `0x00825d40` scans a bucket's events in\n70: `0x74` steps, checking action, location, three floats, message and image before passing both\n71: description strings to `0x0046f8c0`. Fresh paired-boundary instructions establish that helper as\n72: caller-cleaned `bool string_not_equal(stored, candidate)`: it returns one for any byte/length\n73: difference and zero for equality, handling each operand's inline/heap representation at capacity\n74: `0x10`. FindDuplicate reaches the match return only on zero, so `EvDsc` equality is required and a\n75: description-only difference does not deduplicate. This statically contradicts the inherited\n76: description-omission claim; decision `d-2ff30c9f5355116bea822924` required the now-archived complete\n77: branch/helper repair. The later provenance correction does not itself prove these semantics: an\n78: independent verifier must reproduce the repaired package and predeclared falsifiers. The wrapper\n79: returns the first element equal in all fields and writes nothing.\n80: `0x00879eb0` prunes only a leading\n81: stale run (`EvTurn < turn-50`), deep-shifts from the run's last stale element, and therefore removes\n82: `n-1`: one stale bucket survives, a single stale bucket causes no write, and stale buckets after a\n83: fresh bucket are not inspected. The no-duplicate EventStorage path remains distinct from event-vector\n84: capacity: it is the path that appends a `0x74` PlayerEvent and changes IDs/vector contents. Caller\n85: text/position/action/defaulting and the exact PostEvent write order remain required inputs/effects.\n86: No RNG draw occurs in the recovered bucket, duplicate, prune, copy, allocation, or destruction\n87: boundaries.\n88: \n89: ## Original/runtime dependencies and limits\n90: \n91: Any original-assisted allocation, string assignment or deletion must retain allocator-family\n92: compatibility: the recovered calls target the original MSVCR100 import thunks. A standalone\n93: replacement needs its own coherent allocation/destruction boundary; calling these original helpers\n94: is an original dependency, not independent replacement. Calling `0x0046f8c0` likewise retains an\n95: original string-layout/comparison dependency, though its equality behavior is implementable without\n96: allocation in a standalone boundary. Required unavailable proof inputs are a safe\n97: long-string/full-capacity pre/post fixture (or equivalent archived trace), same-bucket\n98: equal/description-only-different event fixtures covering short and long strings, exact exceptional\n99: cleanup outcomes under a live throw, and independent reproduction of the named static windows and\n100: falsifiers. This handoff makes no live\n101: allocator-safety, runtime event-construction, or replacement-acceptance claim.\n\n(End of file - total 101 lines)\n","metadata":{"preview":"# Completion record ABI recovery\n\nStatic handoff only. The provenance index is\n`verify/results/research-completion-abi/reva-2026-09-09-index.md`; the regenerated instruction\ncapture and interpretation are respectively\n`verify/results/research-completion-abi/objdump-2026-09-09-ownership.txt` and\n`verify/results/research-completion-abi/recovered-static.md`. The complete dedup/helper repair is\n`verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt`; its first-window raw\nprovenance is superseded by the paired captures and identity record in\n`verify/results/research-completion-abi/objdump-2026-09-10-boundary-repair.md` under Astra decision\n`d-d2a9b8be6399a6abaa0e05a5`. Input identity is `dumps/sots.exe`,\nSHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841` / MD5\n`9969481c39f4b33a8a21c48b62abee4c`.\n\nThe ownership archive's terminal-byte provenance is likewise superseded by the complete package\n`verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/` under Astra decision\n`d-d4c494ba02ada278030ef473`. Its six narrow/wide pairs, raw section-byte checks and full ten-window\naudit establish the encoded return immediates while preserving the static-only limitation. The\npackage found three additional truncated historical stops (ObservedTech append/reallocator and\nstring allocation/replacement); their widened streams are now the byte authority. No archive","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/research/research-completion-abi.md","text":"# Completion record ABI recovery\n\nStatic handoff only. The provenance index is\n`verify/results/research-completion-abi/reva-2026-09-09-index.md`; the regenerated instruction\ncapture and interpretation are respectively\n`verify/results/research-completion-abi/objdump-2026-09-09-ownership.txt` and\n`verify/results/research-completion-abi/recovered-static.md`. The complete dedup/helper repair is\n`verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt`; its first-window raw\nprovenance is superseded by the paired captures and identity record in\n`verify/results/research-completion-abi/objdump-2026-09-10-boundary-repair.md` under Astra decision\n`d-d2a9b8be6399a6abaa0e05a5`. Input identity is `dumps/sots.exe`,\nSHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841` / MD5\n`9969481c39f4b33a8a21c48b62abee4c`.\n\nThe ownership archive's terminal-byte provenance is likewise superseded by the complete package\n`verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/` under Astra decision\n`d-d4c494ba02ada278030ef473`. Its six narrow/wide pairs, raw section-byte checks and full ten-window\naudit establish the encoded return immediates while preserving the static-only limitation. The\npackage found three additional truncated historical stops (ObservedTech append/reallocator and\nstring allocation/replacement); their widened streams are now the byte authority. No archive\nproduction-history inference or live-safety claim is made.\n\nThe TurnEvents correction's current-session boundary authority is\n`verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/`. It supersedes the stale-session\nattribution and truncated nested-copy stream invalidated by decisions\n`d-fd5aff1eaf78a8c15d96723c` and `d-0bb927e63b915c87a58d4257`. The package binds the actual session\nand a fail-if-used output directory; captures complete helper authority through `0x0077992f`; and\nretains `0x00779a20` as an expected-failing boundary beside complete `0x00779a21`, `0x00779a23`, and\n`0x00779a28` controls plus raw bytes. It is analyst static evidence awaiting a fresh independent\nverifier, not restored acceptance.\n\n## Implementable machine boundaries recovered\n\n* `0x008562a0`: ObservedTech default constructor, ECX receiver, EAX return, plain `ret`.\n* `0x007b7320`: ObservedTech vector append, ECX receiver plus one stack word, `ret 4`; stride `0x2c`.\n Its copy helper is `0x0079a150` (cdecl-style allocator/destination/source stack arguments), which copy-constructs the embedded string rather than copying a\n vector element header. Capacity growth is `0x007b5820` -> `0x007b34e0` -> `0x0057e590`.\n* `0x0057e590` calls `0x00924fb6` with `count * 0x2c`; reallocation destroys every old element via\n virtual slot 0 with zero and frees the array through `0x00924faa`. These are MSVCR100 scalar-new\n and scalar-delete import thunks, not clean-room allocator operations.\n* `0x0086c580`: PlayerEvent vector append, ECX receiver plus one stack word, `ret 4`; stride `0x74`.\n It grows via `0x00869500` and copy-constructs through `0x007693f0` (ECX destination, stack source,\n EAX destination return, ret 4), independently assigning all\n three strings. `0x0061ae90` releases each long string via `0x00924faa` when capacity is `>= 0x10`.\n* `0x004249a0` (reached by `0x00425430` assignment) allocates through `0x00924fb6` and releases a\n prior long destination buffer through `0x00924faa`. A temporary long string is therefore not\n transferable by raw header copy.\n* `0x00885380`: get-or-create TurnEvents bucket, ECX EventStorage receiver plus stack turn, EAX\n bucket return, `ret 4`. It returns the last existing matching turn. On absence it initializes the\n stack bucket's vptr and empty nested-vector header but **not** its `EvTurn`; `0x00884cb0` copies\n that incoming stack word and deep-copies the nested vector. After temporary nested-vector cleanup,\n get/create writes the requested turn into the stored last element and returns it. The transient\n word is not measured randomness or a zero default. Fresh correction capture:\n `verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/`, governed by\n `d-b51f3f76803e852ed250846a`.\n* `0x00884cb0`: outer TurnEvents vector append, ECX vector receiver plus stack source, `ret 4`,\n stride `0x18`. Full-capacity growth is `0x008841a0` -> `0x00883a60`; allocation is\n `0x006e8f50` -> `0x00924fb6` with `count * 0x18`. Existing buckets are copy-constructed by\n `0x0077fed0`, including an independently allocated/copied nested PlayerEvent vector via\n `0x00779850` -> `0x0078af40` (`count * 0x74`) -> `0x007725a0` -> `0x007693f0`.\n* TurnEvents virtual slot zero resolves from vtable `0x00a0f07c` to `0x0062e120`. It destroys the\n nested vector through `0x00629580`; that destroys every `0x74` PlayerEvent, frees the nested block,\n and zeros its three pointers. Static unwind edges clean partial PlayerEvent and TurnEvents ranges\n and free the new outer block, but no allocation failure was executed live.\n\n## Ordering / visible effects\n\nRecordObservedTech's append predicate is name absence, not capacity. A matching existing record\nkeeps first-turn/name and updates last-turn/with mask. `0x00825d40` scans a bucket's events in\n`0x74` steps, checking action, location, three floats, message and image before passing both\ndescription strings to `0x0046f8c0`. Fresh paired-boundary instructions establish that helper as\ncaller-cleaned `bool string_not_equal(stored, candidate)`: it returns one for any byte/length\ndifference and zero for equality, handling each operand's inline/heap representation at capacity\n`0x10`. FindDuplicate reaches the match return only on zero, so `EvDsc` equality is required and a\ndescription-only difference does not deduplicate. This statically contradicts the inherited\ndescription-omission claim; decision `d-2ff30c9f5355116bea822924` required the now-archived complete\nbranch/helper repair. The later provenance correction does not itself prove these semantics: an\nindependent verifier must reproduce the repaired package and predeclared falsifiers. The wrapper\nreturns the first element equal in all fields and writes nothing.\n`0x00879eb0` prunes only a leading\nstale run (`EvTurn < turn-50`), deep-shifts from the run's last stale element, and therefore removes\n`n-1`: one stale bucket survives, a single stale bucket causes no write, and stale buckets after a\nfresh bucket are not inspected. The no-duplicate EventStorage path remains distinct from event-vector\ncapacity: it is the path that appends a `0x74` PlayerEvent and changes IDs/vector contents. Caller\ntext/position/action/defaulting and the exact PostEvent write order remain required inputs/effects.\nNo RNG draw occurs in the recovered bucket, duplicate, prune, copy, allocation, or destruction\nboundaries.\n\n## Original/runtime dependencies and limits\n\nAny original-assisted allocation, string assignment or deletion must retain allocator-family\ncompatibility: the recovered calls target the original MSVCR100 import thunks. A standalone\nreplacement needs its own coherent allocation/destruction boundary; calling these original helpers\nis an original dependency, not independent replacement. Calling `0x0046f8c0` likewise retains an\noriginal string-layout/comparison dependency, though its equality behavior is implementable without\nallocation in a standalone boundary. Required unavailable proof inputs are a safe\nlong-string/full-capacity pre/post fixture (or equivalent archived trace), same-bucket\nequal/description-only-different event fixtures covering short and long strings, exact exceptional\ncleanup outcomes under a live throw, and independent reproduction of the named static windows and\nfalsifiers. This handoff makes no live\nallocator-safety, runtime event-construction, or replacement-acceptance claim.","lineStart":1,"lineEnd":101,"totalLines":101,"truncated":false}},"title":"campaign/research/research-completion-abi.md","time":{"start":1789045444339,"end":1789045444345}},"metadata":{"openai":{"itemId":"fc_0a3a09eb5e6556ad016aa2aac1e17887d18b658ea52dbec410"}},"id":"prt_08b6b0ddf001yLKKcuWs4xRkn5","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6acd34001p91k7dEz6QjAjq"}} +{"type":"tool_use","timestamp":1789045444510,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"bash","callID":"call_QxahiZdAlqCBsoBYFcnMkpmG","state":{"status":"completed","input":{"command":"git -C /tmp/opencode/sots-final-research-engine rev-parse HEAD --git-common-dir --show-toplevel"},"output":"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\n/home/alex/sots-engine/.git\n/tmp/opencode/sots-final-research-engine\n","metadata":{"output":"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\n/home/alex/sots-engine/.git\n/tmp/opencode/sots-final-research-engine\n","exit":0,"truncated":false},"title":"git -C /tmp/opencode/sots-final-research-engine rev-parse HEAD --git-common-dir --show-toplevel","time":{"start":1789045444478,"end":1789045444506}},"metadata":{"openai":{"itemId":"fc_0a3a09eb5e6556ad016aa2aac1e18487d195d2640246fb9892"}},"id":"prt_08b6b0f48001GPZbiFy9Rh91Dt","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6acd34001p91k7dEz6QjAjq"}} +{"type":"tool_use","timestamp":1789045444510,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"bash","callID":"call_v6OrGGU3UqCpYHvlvRsDPykG","state":{"status":"completed","input":{"command":"git -C /tmp/opencode/sots-final-research-re rev-parse HEAD --git-common-dir --show-toplevel"},"output":"3bfde5a70d874a723e797a695bbd847fd82c0aa7\n/home/alex/sots-re/.git\n/tmp/opencode/sots-final-research-re\n","metadata":{"output":"3bfde5a70d874a723e797a695bbd847fd82c0aa7\n/home/alex/sots-re/.git\n/tmp/opencode/sots-final-research-re\n","exit":0,"truncated":false},"title":"git -C /tmp/opencode/sots-final-research-re rev-parse HEAD --git-common-dir --show-toplevel","time":{"start":1789045444492,"end":1789045444509}},"metadata":{"openai":{"itemId":"fc_0a3a09eb5e6556ad016aa2aac1e19087d1aaa145244999d31d"}},"id":"prt_08b6b0f86001YgUcHSl7c4KNZE","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6acd34001p91k7dEz6QjAjq"}} +{"type":"step_finish","timestamp":1789045444611,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6b1000001wsqU3uG8LDrc6J","reason":"tool-calls","snapshot":"89e3f792c36b10c3286033641770d79c2502dbd5","messageID":"msg_08b6acd34001p91k7dEz6QjAjq","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","type":"step-finish","tokens":{"total":16518,"input":3233,"output":357,"reasoning":0,"cache":{"write":0,"read":12928}},"cost":0}} +{"type":"step_start","timestamp":1789045456249,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6b3d73001aoRJ6ISk69v6pg","messageID":"msg_08b6b1024001qJOG7Bhhq23GxV","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","snapshot":"7946280dc8dfa6f0351b55dd1ce00a56e0869d8d","type":"step-start"}} +{"type":"tool_use","timestamp":1789045456380,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_gn9lAuVKEgg8CzC65odisbQ9","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed\ndirectory\n\ncapture.py\nmanifest.json\nnested-copy-authority.stderr.txt\nnested-copy-authority.stdout.txt\nnested-copy-boundary-bytes.stderr.txt\nnested-copy-boundary-bytes.stdout.txt\nnested-copy-stop-a20.stderr.txt\nnested-copy-stop-a20.stdout.txt\nnested-copy-stop-a21.stderr.txt\nnested-copy-stop-a21.stdout.txt\nnested-copy-stop-a23.stderr.txt\nnested-copy-stop-a23.stdout.txt\nnested-copy-stop-a28.stderr.txt\nnested-copy-stop-a28.stdout.txt\nnested-dtor-exact.stderr.txt\nnested-dtor-exact.stdout.txt\nnested-dtor-wide.stderr.txt\nnested-dtor-wide.stdout.txt\nreport.md\nturn-append-exact.stderr.txt\nturn-append-exact.stdout.txt\nturn-append-wide.stderr.txt\nturn-append-wide.stdout.txt\nturn-get-create-exact.stderr.txt\nturn-get-create-exact.stdout.txt\nturn-get-create-wide.stderr.txt\nturn-get-create-wide.stdout.txt\n\n(27 entries)\n","metadata":{"preview":"capture.py\nmanifest.json\nnested-copy-authority.stderr.txt\nnested-copy-authority.stdout.txt\nnested-copy-boundary-bytes.stderr.txt\nnested-copy-boundary-bytes.stdout.txt\nnested-copy-stop-a20.stderr.txt\nnested-copy-stop-a20.stdout.txt\nnested-copy-stop-a21.stderr.txt\nnested-copy-stop-a21.stdout.txt\nnested-copy-stop-a23.stderr.txt\nnested-copy-stop-a23.stdout.txt\nnested-copy-stop-a28.stderr.txt\nnested-copy-stop-a28.stdout.txt\nnested-dtor-exact.stderr.txt\nnested-dtor-exact.stdout.txt\nnested-dtor-wide.stderr.txt\nnested-dtor-wide.stdout.txt\nreport.md\nturn-append-exact.stderr.txt","truncated":false,"loaded":[],"display":{"type":"directory","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed","entries":["capture.py","manifest.json","nested-copy-authority.stderr.txt","nested-copy-authority.stdout.txt","nested-copy-boundary-bytes.stderr.txt","nested-copy-boundary-bytes.stdout.txt","nested-copy-stop-a20.stderr.txt","nested-copy-stop-a20.stdout.txt","nested-copy-stop-a21.stderr.txt","nested-copy-stop-a21.stdout.txt","nested-copy-stop-a23.stderr.txt","nested-copy-stop-a23.stdout.txt","nested-copy-stop-a28.stderr.txt","nested-copy-stop-a28.stdout.txt","nested-dtor-exact.stderr.txt","nested-dtor-exact.stdout.txt","nested-dtor-wide.stderr.txt","nested-dtor-wide.stdout.txt","report.md","turn-append-exact.stderr.txt","turn-append-exact.stdout.txt","turn-append-wide.stderr.txt","turn-append-wide.stdout.txt","turn-get-create-exact.stderr.txt","turn-get-create-exact.stdout.txt","turn-get-create-wide.stderr.txt","turn-get-create-wide.stdout.txt"],"offset":1,"totalEntries":27,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed","time":{"start":1789045456342,"end":1789045456370}},"metadata":{"openai":{"itemId":"fc_02f01f68ef887b7d016aa2aacffe4c87d18a7dae9e89ae3b47"}},"id":"prt_08b6b3d770013OfhKmAVWPzSPg","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6b1024001qJOG7Bhhq23GxV"}} +{"type":"tool_use","timestamp":1789045456393,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"grep","callID":"call_hDQqOFKuVzkyzfQUhl2l4eRM","state":{"status":"completed","input":{"pattern":"def .*resolve|invalidated|add_parser\\(\"resolve|--explanation|--probe","path":"/home/alex/sots-re/tools/campaign.py"},"output":"Found 9 matches\n/home/alex/sots-re/tools/check_agent_config.py:\n Line 15: def check(root: Path, resolved: bool = False) -> list[str]:\n\n\n/home/alex/sots-re/tools/campaign.py:\n Line 499: def resolve(self, sid, actor, role, model, explanation, probe):\n\n Line 511: \"invalidated_evidence\": c.get(\"evidence\", []), \"invalidated_checkpoint\": c[\"checkpoint\"]}\n\n Line 520: verdict[\"verdict\"] = \"invalidated\"\n\n Line 577: s = identified(\"surprise\"); s.add_argument(\"contract\"); s.add_argument(\"--summary\", required=True); s.add_argument(\"--probe\", required=True)\n\n Line 578: s = identified(\"resolve\"); s.add_argument(\"surprise\"); s.add_argument(\"--explanation\", required=True); s.add_argument(\"--probe\", required=True)\n\n Line 581: s.add_argument(\"--verdict\", required=True, choices=[\"pass\", \"fail\"]); s.add_argument(\"--explanation\", required=True)\n\n\n/home/alex/sots-re/tools/vtable_map.py:\n Line 679: def resolve_site(code, fva, ins, kinds, wr, tgts, n, k, carrier=()):\n\n Line 930: def resolve_all(d, vfts):\n","metadata":{"matches":9,"truncated":false},"title":"def .*resolve|invalidated|add_parser\\(\"resolve|--explanation|--probe","time":{"start":1789045456354,"end":1789045456391}},"metadata":{"openai":{"itemId":"fc_02f01f68ef887b7d016aa2aacffe7487d195d8f7cdc8f0e4fa"}},"id":"prt_08b6b3dde0015cU16roCuZdmYO","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6b1024001qJOG7Bhhq23GxV"}} +{"type":"tool_use","timestamp":1789045456411,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"bash","callID":"call_RIp3X3YarcPLbONqb4UknZt0","state":{"status":"completed","input":{"command":"git -C /tmp/opencode/sots-final-research-engine status --short"},"output":" M CONTRIBUTING.md\n M README.md\n M docs/S-standalone.md\n M src/app/turn.cpp\n M src/game/sim/CMakeLists.txt\n M src/mars/rng/mt19937.cpp\n M src/mars/rng/mt19937.h\n M tests/app/CMakeLists.txt\n M tests/app/test_command_replay.cpp\n M tests/app/test_turn.cpp\n M tests/app/test_turn_record.cpp\n M tests/game_config/CMakeLists.txt\n M tests/game_data/CMakeLists.txt\n M tests/game_design/CMakeLists.txt\n M tests/game_design/test_census_saves.cpp\n M tests/game_sim/CMakeLists.txt\n M tests/mars_stream/CMakeLists.txt\n M tests/mars_stream/test_domains.cpp\n M tests/mars_stream/test_rng.cpp\n M tests/mars_stream/test_save.cpp\n M tests/mars_text/CMakeLists.txt\n M tests/mars_vfs/CMakeLists.txt\n M tools/clean_room_check.sh\n?? AGENTS.md\n?? CLAUDE.md\n?? docs/architecture.md\n?? opencode.json\n?? tools/clean_room_check.py\n","metadata":{"output":" M CONTRIBUTING.md\n M README.md\n M docs/S-standalone.md\n M src/app/turn.cpp\n M src/game/sim/CMakeLists.txt\n M src/mars/rng/mt19937.cpp\n M src/mars/rng/mt19937.h\n M tests/app/CMakeLists.txt\n M tests/app/test_command_replay.cpp\n M tests/app/test_turn.cpp\n M tests/app/test_turn_record.cpp\n M tests/game_config/CMakeLists.txt\n M tests/game_data/CMakeLists.txt\n M tests/game_design/CMakeLists.txt\n M tests/game_design/test_census_saves.cpp\n M tests/game_sim/CMakeLists.txt\n M tests/mars_stream/CMakeLists.txt\n M tests/mars_stream/test_domains.cpp\n M tests/mars_stream/test_rng.cpp\n M tests/mars_stream/test_save.cpp\n M tests/mars_text/CMakeLists.txt\n M tests/mars_vfs/CMakeLists.txt\n M tools/clean_room_check.sh\n?? AGENTS.md\n?? CLAUDE.md\n?? docs/architecture.md\n?? opencode.json\n?? tools/clean_room_check.py\n","exit":0,"truncated":false},"title":"git -C /tmp/opencode/sots-final-research-engine status --short","time":{"start":1789045456374,"end":1789045456405}},"metadata":{"openai":{"itemId":"fc_02f01f68ef887b7d016aa2aacffe8887d1ba95e8bf7ce7789d"}},"id":"prt_08b6b3ded001FpQDKeekshoS93","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6b1024001qJOG7Bhhq23GxV"}} +{"type":"tool_use","timestamp":1789045456411,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_XlkGb3wpz3iGFh98ywdybqlz","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json"},"output":"/home/alex/sots-re/campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json\nfile\n\n1: {\n2: \"actor\": \"research-problem-resolver\",\n3: \"checkpoint_session\": \"run-ec31ee938e1f509cd7130c03\",\n4: \"command\": [\n5: \"opencode\",\n6: \"run\",\n7: \"--format\",\n8: \"json\",\n9: \"--model\",\n10: \"openai/gpt-6-astra\",\n11: \"--agent\",\n12: \"sots-resolver\",\n13: \"Start a FRESH bounded campaign quantum (40 steps). No delegation.\\nRole=resolver; requested model=openai/gpt-6-astra; actor=research-problem-resolver; checkpoint session=run-ec31ee938e1f509cd7130c03.\\nCanonical state root: /home/alex/sots-re\\nContract: /home/alex/sots-re/campaign/contracts/research-completion-abi.json\\nLatest checkpoint: campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json\\nEngine worktree: /tmp/opencode/sots-final-research-engine\\nRE worktree: /tmp/opencode/sots-final-research-re\\nRead canonical campaign/README.md, contract, latest checkpoint and open surprises before work. Verify source/worktree/resource identities. Only edit owned scope. Missing state means blocked. Do not commit, stage, push or mutate lab resources without explicit authority and a lease. Checkpoint every 20 tool calls or 15 minutes, before experiments, compaction and stopping; persist under canonical campaign/ using tools/campaign.py with the session above, exact model, actor and role. Include observations versus decisions, source identities, artifact paths, tests, blockers and ONE exact next action. Fresh checkpoint at quantum end is mandatory. Record a surprise and pause affected work if assumptions are falsified. RESOLUTION-ONLY: read evidence, record decisions/checkpoints; no implementation or architecture source edits. Do not rely on chat resume or automatic compaction.\"\n14: ],\n15: \"config\": {\n16: \"canonical_files\": {\n17: \"campaign/agents/analyst.md\": \"895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952\",\n18: \"campaign/agents/implementer.md\": \"eb5581051a92b3d2b9ddd947812b1c02ff6a0b5e7619e7674adc26701e9a3d91\",\n19: \"campaign/agents/lab.md\": \"48f1765ebdcb2015e631ad91428f65735ff899e119134b652f70788ff2eae5b8\",\n20: \"campaign/agents/lead.md\": \"8fcfe52be845ed98a172afb47ea888b19bb7bffa80f7b50ace58d2bb66924220\",\n21: \"campaign/agents/resolver.md\": \"742c36dc8567669d462566d6121eed42fcff5bff34e8eff466e92249f7ca195f\",\n22: \"campaign/agents/verifier.md\": \"e467fc644e4e37d631a7a4e35038d9d3d0498491f1d7811d61d99271ff345c6b\",\n23: \"campaign/models.json\": \"00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48\",\n24: \"opencode.json\": \"027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99\"\n25: },\n26: \"effective\": {\n27: \"agent_sha256\": \"538b7262e3a21bba755e48cc1974eefb35bf710a5d23dde6d05fedb73250b7a0\",\n28: \"sha256\": \"b991546a31472fa41788ec79102f8cf5165ebc45f43dbf2ccf848a13c01c727e\"\n29: },\n30: \"expanded_prompt_sha256\": \"75226903f94e211868d70015e18e88cc3e3d338111743753bcd8a0f35e13e317\",\n31: \"overlay\": {\n32: \"agent\": {\n33: \"sots-resolver\": {\n34: \"model\": \"openai/gpt-6-astra\",\n35: \"permission\": {\n36: \"bash\": {\n37: \"*\": \"deny\",\n38: \"git -C * diff *\": \"allow\",\n39: \"git -C * log *\": \"allow\",\n40: \"git -C * rev-parse *\": \"allow\",\n41: \"git -C * show *\": \"allow\",\n42: \"git -C * status *\": \"allow\",\n43: \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re checkpoint *\": \"allow\",\n44: \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re resolve *\": \"allow\",\n45: \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re status *\": \"allow\",\n46: \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re surprise *\": \"allow\",\n47: \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re validate *\": \"allow\"\n48: },\n49: \"edit\": {\n50: \"*\": \"deny\",\n51: \"/home/alex/sots-re/campaign/contracts/*\": \"allow\",\n52: \"/home/alex/sots-re/campaign/runtime/*\": \"allow\"\n53: },\n54: \"external_directory\": {\n55: \"*\": \"deny\",\n56: \"/home/alex/sots-re\": \"allow\",\n57: \"/home/alex/sots-re/*\": \"allow\",\n58: \"/tmp/opencode/sots-final-research-engine\": \"allow\",\n59: \"/tmp/opencode/sots-final-research-engine/*\": \"allow\",\n60: \"/tmp/opencode/sots-final-research-re\": \"allow\",\n61: \"/tmp/opencode/sots-final-research-re/*\": \"allow\"\n62: },\n63: \"glob\": \"allow\",\n64: \"grep\": \"allow\",\n65: \"list\": \"allow\",\n66: \"question\": \"deny\",\n67: \"read\": \"allow\",\n68: \"task\": \"deny\"\n69: },\n70: \"prompt\": \"You are the SOTS resolver, running GPT-6 Astra. Read canonical RE AGENTS.md, campaign/README.md,\\nthe surprise, affected contracts, checkpoints and raw evidence. First state the observation and\\nits provenance. Check source/binary/input identity, positive execution and instrument neutrality\\nbefore interpreting game behavior. Do not diagnose a stale build as a game mechanism.\\n\\nFor every affected claim record survives / qualified / overturned and exact domain. Name the\\ncheapest discriminating experiment, revised scope/dependencies and affected evidence that must\\nbe invalidated. Resolve through campaign controls with a durable Astra decision. Never silently\\nwaive acceptance or treat untested inference as measurement. Leave blocked work blocked until\\nthe decision supplies a valid next action. No autonomous lab mutation or nested delegation.\\n\\nCheckpoint every 20 calls/15min and before compaction, handoff or stop. Use short bounded sessions;\\nthe repository carries decisions, not chat memory. Do not create another explanatory history in\\nthe live board: link the actual decision and regenerate projections after integration.\\n\",\n71: \"steps\": 40\n72: }\n73: },\n74: \"model\": \"openai/gpt-6-astra\"\n75: },\n76: \"path\": \"/home/alex/sots-re/opencode.json\",\n77: \"sha256\": \"027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99\"\n78: },\n79: \"contract\": \"research-completion-abi\",\n80: \"cwd\": \"/tmp/opencode/sots-final-research-re\",\n81: \"id\": \"run-ec31ee938e1f509cd7130c03\",\n82: \"max_steps\": 40,\n83: \"requested_model\": \"openai/gpt-6-astra\",\n84: \"resolution_only\": true,\n85: \"role\": \"resolver\",\n86: \"schema\": \"sots-run/1\",\n87: \"source_before\": {\n88: \"engine\": {\n89: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n90: \"files\": {\n91: \".gitignore\": {\n92: \"mode\": 420,\n93: \"sha256\": \"5103c9533f0d31fea29c0cc85d543692af84a697416dfa7557e31c9843210145\"\n94: },\n95: \"AGENTS.md\": {\n96: \"mode\": 420,\n97: \"sha256\": \"7d1d4bc05c35e3354a77b3c8d5d2c04fb9d6658d09e87bc814a50bc3d2033fb7\"\n98: },\n99: \"CLAUDE.md\": {\n100: \"mode\": 420,\n101: \"sha256\": \"15d60c3d592302a2854df8bf6d39c0a578c22b9273a633447e10b76fd76291f5\"\n102: },\n103: \"CMakeLists.txt\": {\n104: \"mode\": 420,\n105: \"sha256\": \"6e9791511ea23bf8bf5f7f58617a7e77bbe5006829609e425e565c11c1e8d7ed\"\n106: },\n107: \"CMakePresets.json\": {\n108: \"mode\": 420,\n109: \"sha256\": \"fcd1dfe3989ee4f56fa3e419059e1db5621922165edf05f13cfe8e5d786d8bb0\"\n110: },\n111: \"CONTRIBUTING.md\": {\n112: \"mode\": 420,\n113: \"sha256\": \"26a381fe08feb51f861655f77de4e558f056d1dba79162a2e82513a92d0e6506\"\n114: },\n115: \"LICENSE\": {\n116: \"mode\": 420,\n117: \"sha256\": \"eedebad43ea495111bf4451d78cb440309d90a733d6a36445699dde0629f1858\"\n118: },\n119: \"README.md\": {\n120: \"mode\": 420,\n121: \"sha256\": \"66c2437fe4f074e6499de50b0d5f0d013bc290333f4d4bf554b541261885a0c1\"\n122: },\n123: \"cmake/toolchain-mingw-i686.cmake\": {\n124: \"mode\": 420,\n125: \"sha256\": \"231c0b79868a77d54cc6619f0b4ea18454964a1a078806f44a6ffe3fb7741a9b\"\n126: },\n127: \"docs/A2-alliance-and-modcount.md\": {\n128: \"mode\": 420,\n129: \"sha256\": \"0c0c45c31d5d64124f3b91a161f8a2f4732c8a5d7f6bc524baf4d59f8a191701\"\n130: },\n131: \"docs/AC-predictions.md\": {\n132: \"mode\": 420,\n133: \"sha256\": \"ab9e41714abdbc32e620d8a2068be8ebd2fc8898ba149113c66ccda248b4bcda\"\n134: },\n135: \"docs/B1.md\": {\n136: \"mode\": 420,\n137: \"sha256\": \"42b61bbfc135cdcd0f1a32f63164b88e67106400de7f08f543f118eccd814364\"\n138: },\n139: \"docs/B2.md\": {\n140: \"mode\": 420,\n141: \"sha256\": \"87dfd333ee15681a3aa4de58cf1b14ff8240e75afabc05012e0f28531cb4b8b8\"\n142: },\n143: \"docs/B3.md\": {\n144: \"mode\": 420,\n145: \"sha256\": \"fb65c41037b6cd6252c67e5244d492a3a17ea4ba2ddae821d49fe0a879528518\"\n146: },\n147: \"docs/B4.md\": {\n148: \"mode\": 420,\n149: \"sha256\": \"22547b3d2960684e52a380fb07f43a75bf50aebf93cede689f297cf38f4a012d\"\n150: },\n151: \"docs/B6-ship-construction.md\": {\n152: \"mode\": 420,\n153: \"sha256\": \"9c5c4fd2059af965e317c9db5b7fbfc440397ddfcdc5bf7860115f6a8a0532ab\"\n154: },\n155: \"docs/CB-capture.md\": {\n156: \"mode\": 420,\n157: \"sha256\": \"ce45a9082588051eda7438016dc66eb28bb4afda98b82cdc20102c4ca53529f0\"\n158: },\n159: \"docs/CB-predictions.md\": {\n160: \"mode\": 420,\n161: \"sha256\": \"ba51538b018cbb403978f97ad45d4743937d49ba55c8f15d7af8f8e4aa441f0f\"\n162: },\n163: \"docs/E-events.md\": {\n164: \"mode\": 420,\n165: \"sha256\": \"de98795aadb1617eab91815ebc34818bef8b52c36ba18b4521170065bfd2d201\"\n166: },\n167: \"docs/EV-events.md\": {\n168: \"mode\": 420,\n169: \"sha256\": \"e7d9536cd23f5d800dc97f68167bb738088a16136004419f28de92d7fe1bcfb9\"\n170: },\n171: \"docs/G-wire-schema.md\": {\n172: \"mode\": 420,\n173: \"sha256\": \"19db69ae359ddbd2a0509d02f1c616f939e0428480a8bb33c81f69145323a591\"\n174: },\n175: \"docs/G3-civilian-growth.md\": {\n176: \"mode\": 420,\n177: \"sha256\": \"38ea3a8ddc3fdca258294d949c4cd2af1a930cdd9ba612d5e8fb48bc446bdf30\"\n178: },\n179: \"docs/H-probes.md\": {\n180: \"mode\": 420,\n181: \"sha256\": \"f23e4d4cbc8c9a3000a0a58ed994dddd95466cee1ec45e961685e86dde4dc54f\"\n182: },\n183: \"docs/L1-predictions.md\": {\n184: \"mode\": 420,\n185: \"sha256\": \"af97dbc9f15b9c2e6f223c89bac17826056fa4f3bced3c01513c1ad4d9ac1754\"\n186: },\n187: \"docs/L2-predictions.md\": {\n188: \"mode\": 420,\n189: \"sha256\": \"18213ce5f3375d478f266de85c38c2b04ca2ae8ab4a2023780dca161fa14f460\"\n190: },\n191: \"docs/L3-predictions.md\": {\n192: \"mode\": 420,\n193: \"sha256\": \"d1c9c0006079f47ef0d3371f4a2c2df2fe4f08ebdad0f8a12d1b0de35b15ae7e\"\n194: },\n195: \"docs/L4-ai-orders.md\": {\n196: \"mode\": 420,\n197: \"sha256\": \"b04127c5158a882f252b2b6e8afb2d131f0de623cc0c62c86c612af803d75835\"\n198: },\n199: \"docs/L4-predictions.md\": {\n200: \"mode\": 420,\n201: \"sha256\": \"6a194ae336920f13d8e4a44549cbe26be959beef81cffed88ef03b3cec563e44\"\n202: },\n203: \"docs/L5-live-verification.md\": {\n204: \"mode\": 420,\n205: \"sha256\": \"4c1abe57c516b36f383390164a362f53294feda222c623283f1e6091d8ef0ec4\"\n206: },\n207: \"docs/M-movefleet.md\": {\n208: \"mode\": 420,\n209: \"sha256\": \"718338edb8cbe8a449793b22889776a1783d1d0ade553c03973ea45d426eb426\"\n210: },\n211: \"docs/M0.md\": {\n212: \"mode\": 420,\n213: \"sha256\": \"e121c380612a42727e3a973d8cf50f884d660bb4b43bc494258dc1c6b6f26705\"\n214: },\n215: \"docs/M1.md\": {\n216: \"mode\": 420,\n217: \"sha256\": \"e0a36cf109d096748e55522eb8d7a261764cbf5ab5daf9342ba903d0f2bc6704\"\n218: },\n219: \"docs/M2.md\": {\n220: \"mode\": 420,\n221: \"sha256\": \"25f9cad74eeee40afc2117333232384e1cf387b2b9132856650234c5ba593c61\"\n222: },\n223: \"docs/N-output-term.md\": {\n224: \"mode\": 420,\n225: \"sha256\": \"3b8317e22714ef66b35efceee6fa0f7057c37f7c6e34d93cc5047cd1dd07ecde\"\n226: },\n227: \"docs/P-events-wiring.md\": {\n228: \"mode\": 420,\n229: \"sha256\": \"72ee81b71b4c08ae451721c785dc5e01ed4ca43ff0fd474befca09dcc41599ba\"\n230: },\n231: \"docs/PAR-predictions.md\": {\n232: \"mode\": 420,\n233: \"sha256\": \"16e8fbbac5001db0b10d766858c0ae2ea9619f37043a0883ee46da80d4dd4846\"\n234: },\n235: \"docs/PL-players-residual.md\": {\n236: \"mode\": 420,\n237: \"sha256\": \"9bc29bc030ee8b0e00e496b91fe8fefac15179ce9fd01c0a11a7b5b5335356dc\"\n238: },\n239: \"docs/R-recapture.md\": {\n240: \"mode\": 420,\n241: \"sha256\": \"73c62ab20c5eca5e87e1d18aefa60a2a2acd75cbc7510d31b27a2cd4ebcec38f\"\n242: },\n243: \"docs/RB-predictions.md\": {\n244: \"mode\": 420,\n245: \"sha256\": \"c1016781505c10aa304d4710c5389918b744ab20cbd8cb54dce462c3dc28e4e7\"\n246: },\n247: \"docs/S-standalone.md\": {\n248: \"mode\": 420,\n249: \"sha256\": \"8979b0a9fef33a55ca15bf3ef78064e72df332033354329ff2471ad6648e4a8e\"\n250: },\n251: \"docs/SD-predictions.md\": {\n252: \"mode\": 420,\n253: \"sha256\": \"a76a568ccac7409e3cb3acef724dbe6b618d4ec30259bce33594098daff8b6a0\"\n254: },\n255: \"docs/SV-script-objects.md\": {\n256: \"mode\": 420,\n257: \"sha256\": \"80ebd120fa9cf5e68ac4d33117966805b917d24bc339f7d82be972a280449409\"\n258: },\n259: \"docs/T-turn-driver.md\": {\n260: \"mode\": 420,\n261: \"sha256\": \"a4096b8223cea87ce77cc64014c489d4625ed36fd3aec1358565ca5cf91d4e1e\"\n262: },\n263: \"docs/U-unlock.md\": {\n264: \"mode\": 420,\n265: \"sha256\": \"5cbe3d8fb4bd30d029cb2db006a4dd3c6819885f55f434afb4bc8ae79b526901\"\n266: },\n267: \"docs/V-eventlive.md\": {\n268: \"mode\": 420,\n269: \"sha256\": \"ebd08c000f42211e87958278f03d6891475cd8557658e1a42105cf5ed45a1aa1\"\n270: },\n271: \"docs/W2-predictions.md\": {\n272: \"mode\": 420,\n273: \"sha256\": \"9972e27467cf0fe23a358818caf7edb979de25697d3aa4b97a2135ca79fe34f5\"\n274: },\n275: \"docs/W2-watchpoints.md\": {\n276: \"mode\": 420,\n277: \"sha256\": \"f8634c5f977b2ca9b2e07df105cba09adacaeb6fb4cf046e41e5e1e42b83b107\"\n278: },\n279: \"docs/W3-predictions.md\": {\n280: \"mode\": 420,\n281: \"sha256\": \"211cedc2d924bcf47cbb73166b408e9a27d795863ffc90aa2adbb85beeadffcf\"\n282: },\n283: \"docs/W3-watchpoints.md\": {\n284: \"mode\": 420,\n285: \"sha256\": \"568e818e66d95f9079a1270c4d9b900c7eecfd5b5a3b4ba5a4aa0c843666f061\"\n286: },\n287: \"docs/Y-standalone-rng-and-tail.md\": {\n288: \"mode\": 420,\n289: \"sha256\": \"49d926cc505d6ba07753748366e42ec32493a15c76bfaa45b2f66f52adc57f2b\"\n290: },\n291: \"docs/Z-tail-rng.md\": {\n292: \"mode\": 420,\n293: \"sha256\": \"3ed2b40f728bcedd663c305cce13481bad1429af03fd5215ee3189161cfbd7f1\"\n294: },\n295: \"docs/architecture.md\": {\n296: \"mode\": 420,\n297: \"sha256\": \"ba4732eb8a4c7054df5136a72d1774e4f1e919a517a1c74e975903fdd254422f\"\n298: },\n299: \"docs/game-data.md\": {\n300: \"mode\": 420,\n301: \"sha256\": \"2124ea3d117b4ee6f48660d9711c1b4ef844a4ba37af7cea3766914d77bd6b23\"\n302: },\n303: \"docs/game-design.md\": {\n304: \"mode\": 420,\n305: \"sha256\": \"5b40349ad446596b534567a5683cf9ea99709d9eff231890e0f6256c755f0272\"\n306: },\n307: \"docs/game-effects.md\": {\n308: \"mode\": 420,\n309: \"sha256\": \"e1e0abc162602daaac255fe44b11c511adf45d4ef5fa188268411829b0817e5d\"\n310: },\n311: \"docs/game-sim.md\": {\n312: \"mode\": 420,\n313: \"sha256\": \"d1e14770d252fd2f320a7baa1ad54c90d955cfc840f477d1700cfbbadcec730e\"\n314: },\n315: \"docs/harness-audit.md\": {\n316: \"mode\": 420,\n317: \"sha256\": \"931d92cc744ec6ca3d961fbe7fe96dcab28060446058eb78be9835ebbce73ed0\"\n318: },\n319: \"docs/mars-parse.md\": {\n320: \"mode\": 420,\n321: \"sha256\": \"d9fa3029ade4f9401c59fb88f4520a1ef3af9a9c6f2bb5d1a0ebfa1d5061d6dd\"\n322: },\n323: \"docs/mars-rng.md\": {\n324: \"mode\": 420,\n325: \"sha256\": \"f2a01b88f105d07d0d0d514430e76da7632e5c8e4e3bbd6c99a25f1dc5daa89c\"\n326: },\n327: \"docs/mars-stream.md\": {\n328: \"mode\": 420,\n329: \"sha256\": \"61a16c9b7c143b4bc2edee473cf1f8bd06c1a5144c120bc563e5ec6d770dd0e7\"\n330: },\n331: \"docs/mars-text.md\": {\n332: \"mode\": 420,\n333: \"sha256\": \"2b6c7d2eecbb684160e7565d1d7224eb0d2f7e9a41f4d807095a182ea605dcf1\"\n334: },\n335: \"docs/mars-vfs.md\": {\n336: \"mode\": 420,\n337: \"sha256\": \"1508c2a070d56f4fdabac3c2ef1fd08d3f93d7a3045d59158340ee22a6ff1b62\"\n338: },\n339: \"docs/shim-trace.md\": {\n340: \"mode\": 420,\n341: \"sha256\": \"8a059c1ba761b366449c2db8ef248656da917050ed28855c6d812ecf91672fa5\"\n342: },\n343: \"include/generated/sots_addresses.h\": {\n344: \"mode\": 420,\n345: \"sha256\": \"fc34ac4ee8cc7fea91c447b5715841dc6d3afe36f9aff04e88b6c29b5b64f448\"\n346: },\n347: \"include/generated/sots_stream_schema.h\": {\n348: \"mode\": 420,\n349: \"sha256\": \"13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c\"\n350: },\n351: \"opencode.json\": {\n352: \"mode\": 420,\n353: \"sha256\": \"9af560c2a49945e964beb689649c13775e2aaaf691af270a565d6c6826f76c15\"\n354: },\n355: \"src/app/CMakeLists.txt\": {\n356: \"mode\": 420,\n357: \"sha256\": \"142999eded2ff494745ce550af76a8f8caf0269ad22d6d5650e7a79c19d22717\"\n358: },\n359: \"src/app/alliance.cpp\": {\n360: \"mode\": 420,\n361: \"sha256\": \"37d6e57f7ce82a69a595cf474e7be7a544efef210f960e9cdfeab6168826bac9\"\n362: },\n363: \"src/app/alliance.h\": {\n364: \"mode\": 420,\n365: \"sha256\": \"08fa8dc96286c7cb15a90a987fa22b17e195522e642ab8303b659ca58739eafd\"\n366: },\n367: \"src/app/command_replay.cpp\": {\n368: \"mode\": 420,\n369: \"sha256\": \"739059930cd3a5f1d988522ff50c60d8657664a66c9fe19b019833f417b55824\"\n370: },\n371: \"src/app/command_replay.h\": {\n372: \"mode\": 420,\n373: \"sha256\": \"956429a742554cada2124de49c6955e27b0e5d68db87dcc95b22c75ec7bd93c2\"\n374: },\n375: \"src/app/construction_phase.cpp\": {\n376: \"mode\": 420,\n377: \"sha256\": \"025cd0ea1a7badd567f7f1cd59330b1e01149b5c5094575fbd438683658bb0df\"\n378: },\n379: \"src/app/construction_phase.h\": {\n380: \"mode\": 420,\n381: \"sha256\": \"a4d39994096683a1144eb20282b205cf71e2045873cc15b53bdac214ab1e9a5e\"\n382: },\n383: \"src/app/event_phase.cpp\": {\n384: \"mode\": 420,\n385: \"sha256\": \"80717fa7c7f108004d5250f12b6c994752a1a55d7f32c7d3ebf29f2869118c90\"\n386: },\n387: \"src/app/event_phase.h\": {\n388: \"mode\": 420,\n389: \"sha256\": \"54077268fe4705270dc06bdc46a6fd9384fb5e0d36da19e55ea149b478d8cf34\"\n390: },\n391: \"src/app/growth_phase.cpp\": {\n392: \"mode\": 420,\n393: \"sha256\": \"5924d2641fc98d902b56a3e6417d7a57d70c1564718951b098e7d14376ebc4e3\"\n394: },\n395: \"src/app/growth_phase.h\": {\n396: \"mode\": 420,\n397: \"sha256\": \"8222ef811abff161c8f891a331a52e527de54fbf468949d1e0e188adc473ae3b\"\n398: },\n399: \"src/app/main.cpp\": {\n400: \"mode\": 420,\n401: \"sha256\": \"adfd7dd177439bfd57509532bcf0f37779281ae9309daa93efe1ada3ef3f57a7\"\n402: },\n403: \"src/app/observed_phase.cpp\": {\n404: \"mode\": 420,\n405: \"sha256\": \"31fb99678d60de6901b4bb1b251abe2421453264653cf5f7bd297a376c2b23f3\"\n406: },\n407: \"src/app/observed_phase.h\": {\n408: \"mode\": 420,\n409: \"sha256\": \"f88fc22a5cb21a43e196d7fae09446126635d3284e6b398bca234f265234b693\"\n410: },\n411: \"src/app/phase_catalog.cpp\": {\n412: \"mode\": 420,\n413: \"sha256\": \"e3da16e6d499b7836953251d940ce171792ada208156ca583277298f305fc316\"\n414: },\n415: \"src/app/phase_catalog.h\": {\n416: \"mode\": 420,\n417: \"sha256\": \"da6fff506002079d8277358d0095981dc260449dc19677a533ef25ab709aed87\"\n418: },\n419: \"src/app/report.cpp\": {\n420: \"mode\": 420,\n421: \"sha256\": \"da3feb6043f6e68cb9ea763f7242ac153a5944c59f448284faf34c64ad6b9228\"\n422: },\n423: \"src/app/report.h\": {\n424: \"mode\": 420,\n425: \"sha256\": \"0495d164458ddb7187ce3105f82cee06cf9cf6c5b73ed8cb6e434e1d2e0f8481\"\n426: },\n427: \"src/app/script_phase.cpp\": {\n428: \"mode\": 420,\n429: \"sha256\": \"61eeeeb7eac3145cee938ccfc564b231b6968ce7926fb9599c136134f0d5ea91\"\n430: },\n431: \"src/app/script_phase.h\": {\n432: \"mode\": 420,\n433: \"sha256\": \"e52006ff939fa945870fafdc2412ba67e3d5e1cc2aa51c0ca0a884ce630aa1b7\"\n434: },\n435: \"src/app/trade_raid.cpp\": {\n436: \"mode\": 420,\n437: \"sha256\": \"07d6bb904e655bb644ff6df2e417adb448487bb67acb62240ec5ecc978eabebf\"\n438: },\n439: \"src/app/trade_raid.h\": {\n440: \"mode\": 420,\n441: \"sha256\": \"10e0b1460eb7810f1fcd61e67d47333373f06bdacf5a11372958a84a91084e52\"\n442: },\n443: \"src/app/treaty.cpp\": {\n444: \"mode\": 420,\n445: \"sha256\": \"317463fc0e2a6ca7eaa4e2f096c3821655a4623de4085af44d951ed500837575\"\n446: },\n447: \"src/app/treaty.h\": {\n448: \"mode\": 420,\n449: \"sha256\": \"836395a85868cbd6b7fda8f1d304128fd7cc6952aff37003e8e119a5ce0251f9\"\n450: },\n451: \"src/app/turn.cpp\": {\n452: \"mode\": 420,\n453: \"sha256\": \"a626ddf80a340de50b70f09bf91c0180d255c533e65edce1532d807fcf5109b4\"\n454: },\n455: \"src/app/turn.h\": {\n456: \"mode\": 420,\n457: \"sha256\": \"85c87aab5c5b5ad5a6a34cc9db710b1cf77dec1a7145ba1e0b5e17fff9a6a237\"\n458: },\n459: \"src/app/turn_record.cpp\": {\n460: \"mode\": 420,\n461: \"sha256\": \"e1eb0b253e964ab4f8be1333f81e193ac64109544da384cbdf21858cbf931e4d\"\n462: },\n463: \"src/app/turn_record.h\": {\n464: \"mode\": 420,\n465: \"sha256\": \"78d8d2948bd04bff5e7d2c55955b726f1cd7552a765e608e390209e03856f76d\"\n466: },\n467: \"src/app/visibility_phase.cpp\": {\n468: \"mode\": 420,\n469: \"sha256\": \"34d9df699af3e57823ec8457c442408da854028f9b95db5820171caad0823131\"\n470: },\n471: \"src/app/visibility_phase.h\": {\n472: \"mode\": 420,\n473: \"sha256\": \"60db50f5b98c5edafc86a33f982a7773acc291c1a18f9cf23323e53ebadcde27\"\n474: },\n475: \"src/game/ai/CMakeLists.txt\": {\n476: \"mode\": 420,\n477: \"sha256\": \"f51509a2699f02ecab9faa1f75feaa38c299e6bbbe08bfbe5e8e86722037f6eb\"\n478: },\n479: \"src/game/ai/agent.cpp\": {\n480: \"mode\": 420,\n481: \"sha256\": \"e1bbddc3deb797d62ae9c2b24bc811ec9379699992dd838694bd5eadc73feef7\"\n482: },\n483: \"src/game/ai/agent.h\": {\n484: \"mode\": 420,\n485: \"sha256\": \"48aa26f32d52a3f8f4e37ed5c6986b1e87a8fe1e780d5314514eb5c75b8bc244\"\n486: },\n487: \"src/game/ai/apply_order.cpp\": {\n488: \"mode\": 420,\n489: \"sha256\": \"122ffea1090382fd01bc505fd30c59557dfec2c9846609d00da6e80109da2253\"\n490: },\n491: \"src/game/ai/apply_order.h\": {\n492: \"mode\": 420,\n493: \"sha256\": \"a3b7a1ca26243ba0fdd801b78978175db6f76e297a72876fa0a35e12f38e09b3\"\n494: },\n495: \"src/game/ai/command_capture.cpp\": {\n496: \"mode\": 420,\n497: \"sha256\": \"cb9a1d37af9f66e78d368e03aeabec01e4d48f76aaa30348a51f4c70a915e4ec\"\n498: },\n499: \"src/game/ai/command_capture.h\": {\n500: \"mode\": 420,\n501: \"sha256\": \"921599e5b2aa8b773db00134618efde687c7d9ba739abd787ec7666f4cfeb78f\"\n502: },\n503: \"src/game/ai/orders.cpp\": {\n504: \"mode\": 420,\n505: \"sha256\": \"1b775eb1a030bc6e81e5b7702cbf8ad56288860276e8a0475da66f7367542640\"\n506: },\n507: \"src/game/ai/orders.h\": {\n508: \"mode\": 420,\n509: \"sha256\": \"c2a3b8fe1a7c46a1c1104bc87be8696d9f0782cc304d27cb96d0ec6b182f12ae\"\n510: },\n511: \"src/game/ai/tasks.cpp\": {\n512: \"mode\": 420,\n513: \"sha256\": \"b05878ccd94c375aac8723c8ea9499f77b98fb94acc5a75a15fa1948dbe83c76\"\n514: },\n515: \"src/game/ai/tasks.h\": {\n516: \"mode\": 420,\n517: \"sha256\": \"b1de4f89c1679ccfdeaa8b852cb2ce407b71dcd1bffacf97df389a69f6ae3a5d\"\n518: },\n519: \"src/game/ai/turn_order.cpp\": {\n520: \"mode\": 420,\n521: \"sha256\": \"858b12c51c4509e16a22a6c080d1c6b47bd23d2b8a11f84a48d34f24c4635f22\"\n522: },\n523: \"src/game/ai/turn_order.h\": {\n524: \"mode\": 420,\n525: \"sha256\": \"3e76710928fc2df52fd8312abfb8f23a2ce162f8e0856f46672a4f46b5b4384f\"\n526: },\n527: \"src/game/combat/CMakeLists.txt\": {\n528: \"mode\": 420,\n529: \"sha256\": \"4b3a05c45360e312d6c1d96c1f05a60437d19d2046257835e0d6c70ecc4ce115\"\n530: },\n531: \"src/game/combat/retreat.cpp\": {\n532: \"mode\": 420,\n533: \"sha256\": \"eede86a4d25289dfc9132d5776b11114a109179e5aa10f2b985035e5b22d7a1f\"\n534: },\n535: \"src/game/combat/retreat.h\": {\n536: \"mode\": 420,\n537: \"sha256\": \"5fc3e002a5f1944f29c74f862ff942b894e40e88afafd52358373ada36644d7d\"\n538: },\n539: \"src/game/config/CMakeLists.txt\": {\n540: \"mode\": 420,\n541: \"sha256\": \"c746021654505c92be333cefb9df994431679d40d8d654b937feb950684830f7\"\n542: },\n543: \"src/game/config/config_loader.cpp\": {\n544: \"mode\": 420,\n545: \"sha256\": \"d903ba06747e5b7d66400d03ee1f0a9896bf4268bb200dec0b5c8599dbd3d3a1\"\n546: },\n547: \"src/game/config/config_loader.h\": {\n548: \"mode\": 420,\n549: \"sha256\": \"fda71dee1a4e2b896760e9ac344768e176ea4f0a08609c7d651033a1ee698085\"\n550: },\n551: \"src/game/config/manifest_loader.cpp\": {\n552: \"mode\": 420,\n553: \"sha256\": \"dbe33dc5ae03db18f3b2c01b48cc1fced10f2cca599270c0a028321a7d7dd7c6\"\n554: },\n555: \"src/game/config/manifest_loader.h\": {\n556: \"mode\": 420,\n557: \"sha256\": \"68e508b9e6d1222d980b22ae826b127693fdf0821b6539ed9e62a8ec031aa5b5\"\n558: },\n559: \"src/game/config/msvc_sort.h\": {\n560: \"mode\": 420,\n561: \"sha256\": \"17fcb13bb49a634c80be38299617c6c16fd8addedfa88c53d67242c90b811716\"\n562: },\n563: \"src/game/data/CMakeLists.txt\": {\n564: \"mode\": 420,\n565: \"sha256\": \"677ba0dd0ebb8176f4e7c41d5550f2ccedd56d49e7e4acb1eb0a7970e9e98a51\"\n566: },\n567: \"src/game/data/block.cpp\": {\n568: \"mode\": 420,\n569: \"sha256\": \"f61312708c715ce525ed1a01e71f1446d31fc96ca1cc51f5bd863cac51702200\"\n570: },\n571: \"src/game/data/block.h\": {\n572: \"mode\": 420,\n573: \"sha256\": \"f14155dfca5fd270ad6b4d462458aa8cd5c5edf5e19da4df492ee2907e99eccc\"\n574: },\n575: \"src/game/data/catalog.cpp\": {\n576: \"mode\": 420,\n577: \"sha256\": \"7799ad3b31d43236cacbc51c3ab086265927f98b1346005a8adfed2796178ebc\"\n578: },\n579: \"src/game/data/catalog.h\": {\n580: \"mode\": 420,\n581: \"sha256\": \"80223146bcdbf4808776f974df7e5f46b120a021979a22f50b5ce2d74ec16d6e\"\n582: },\n583: \"src/game/data/common.cpp\": {\n584: \"mode\": 420,\n585: \"sha256\": \"e58ba046844be11c61f7f7e501829b48b4f16e7c0ab78f10fcf9189c133cf040\"\n586: },\n587: \"src/game/data/common.h\": {\n588: \"mode\": 420,\n589: \"sha256\": \"d1ac8375c1be133a98a383e01598f393f194e1bd9790d1c1230bc6121a45a187\"\n590: },\n591: \"src/game/data/fields.h\": {\n592: \"mode\": 420,\n593: \"sha256\": \"4209df368ad776b3c24350246acf47ad874fcbbe292fb16f9ca7dacaef2f08fb\"\n594: },\n595: \"src/game/data/shipsection.cpp\": {\n596: \"mode\": 420,\n597: \"sha256\": \"82d5ba9be2a446e50934b0b9a03b16839bd3acd1a967d9441180a1baaa271264\"\n598: },\n599: \"src/game/data/shipsection.h\": {\n600: \"mode\": 420,\n601: \"sha256\": \"bcf100f83691226c4993dd7866b67a0b48d9b4bc6841463fbf07f0f26bf9dca0\"\n602: },\n603: \"src/game/data/strings.cpp\": {\n604: \"mode\": 420,\n605: \"sha256\": \"6d983d3a4cb4284215301409587136fb765a5e6a4c9f4b988e01d710c0815f59\"\n606: },\n607: \"src/game/data/strings.h\": {\n608: \"mode\": 420,\n609: \"sha256\": \"fb292bd472ed68eb4a5e93484f3f92d8a0ae8661e6a61ca4b417ab889c508055\"\n610: },\n611: \"src/game/data/techtree.cpp\": {\n612: \"mode\": 420,\n613: \"sha256\": \"2ac6e39faeef808c97375f3b8a3ee219fcab8cc09921f0ed8d82eef7374eb9ea\"\n614: },\n615: \"src/game/data/techtree.h\": {\n616: \"mode\": 420,\n617: \"sha256\": \"504946c255405ab28d20d0ed6c095b3b63f0e6865afe0e8bb0707e607c363007\"\n618: },\n619: \"src/game/data/turrets.cpp\": {\n620: \"mode\": 420,\n621: \"sha256\": \"ce7db50ef10825e168fee2bf57c4b6038dd1a356be7ada9ed6a4f6a4f31b07a4\"\n622: },\n623: \"src/game/data/turrets.h\": {\n624: \"mode\": 420,\n625: \"sha256\": \"f01603ad32b0ffdf891c88cc54c39a725c6a436f8dda79ac23e7505e59853c64\"\n626: },\n627: \"src/game/data/weapon.cpp\": {\n628: \"mode\": 420,\n629: \"sha256\": \"accb5aab2081babb26443cd257f292909e19440c40346e098144148922f5d3f6\"\n630: },\n631: \"src/game/data/weapon.h\": {\n632: \"mode\": 420,\n633: \"sha256\": \"63aeb670ae7b8a1fd6daa35ed60ebe41a87f62a6ec2a12f44b13f9052c55b009\"\n634: },\n635: \"src/game/design/CMakeLists.txt\": {\n636: \"mode\": 420,\n637: \"sha256\": \"42692f7917d99fb5b9e392c2d0f1d908b2bc5c61fc2e5687fddbd665dafe0bef\"\n638: },\n639: \"src/game/design/defaults.cpp\": {\n640: \"mode\": 420,\n641: \"sha256\": \"8efa0b79646525375739a1acfe77e75d5ae6b669d1ecaa01f49f3f5183caf528\"\n642: },\n643: \"src/game/design/defaults.h\": {\n644: \"mode\": 420,\n645: \"sha256\": \"20af056628f362a4d5ad7ba6277135697718197ec6844ae0ae85bf06d4cd818b\"\n646: },\n647: \"src/game/design/design.cpp\": {\n648: \"mode\": 420,\n649: \"sha256\": \"e166281c52a6d92fed8810b38bd736cbd2a324f15d290a39a539d01ff35ead20\"\n650: },\n651: \"src/game/design/design.h\": {\n652: \"mode\": 420,\n653: \"sha256\": \"7e936c78ca10c3a49470da67f1659cf4ee323d14d50b5b2c1ada08edfa8f6997\"\n654: },\n655: \"src/game/design/hull.cpp\": {\n656: \"mode\": 420,\n657: \"sha256\": \"554b0ef6955ac230c7eca29ea2d94d60b5fbc91f34d9ff457091577c8602268a\"\n658: },\n659: \"src/game/design/hull.h\": {\n660: \"mode\": 420,\n661: \"sha256\": \"997018e59c9d78ee1da7e7cb9561b94b76befacbe348a4ce3301c5f22b582461\"\n662: },\n663: \"src/game/design/rules.cpp\": {\n664: \"mode\": 420,\n665: \"sha256\": \"a623984f9ab40c354320051fec00bab2c7e3728c2c90082b3b8051294b906319\"\n666: },\n667: \"src/game/design/rules.h\": {\n668: \"mode\": 420,\n669: \"sha256\": \"70a8a42fe82e9805cbb957717688ab9f9eb3438226f6e0d696ef5f7a51529229\"\n670: },\n671: \"src/game/design/stats.cpp\": {\n672: \"mode\": 420,\n673: \"sha256\": \"c05f420a00026289be8693c0d80bbd2354ce354a91a78459cfc8e70467326c54\"\n674: },\n675: \"src/game/design/stats.h\": {\n676: \"mode\": 420,\n677: \"sha256\": \"ba0a5d3bcc98f5c3e64579d42da70bfdf563773ce2fe1e6bfa2b36b14c453fe5\"\n678: },\n679: \"src/game/effects/CMakeLists.txt\": {\n680: \"mode\": 420,\n681: \"sha256\": \"2e20f138f98bc69653c8360a26f99f3f43f35beedea5e90dfd7e9721e7550f89\"\n682: },\n683: \"src/game/effects/tech_effects.cpp\": {\n684: \"mode\": 420,\n685: \"sha256\": \"40358c2af37543ca3ab09b4d0433cdb4b0d2d212b45f648739cc86e979501604\"\n686: },\n687: \"src/game/effects/tech_effects.h\": {\n688: \"mode\": 420,\n689: \"sha256\": \"ef70addf2caf1e3abf36ac9d878a8db37d2adbac370957f5b6a0b5825564a0d6\"\n690: },\n691: \"src/game/effects/tech_id.cpp\": {\n692: \"mode\": 420,\n693: \"sha256\": \"11cd652e81a52e86d72541a5c3de77bb50de3d31226272e0d1856e5a15b7f9a6\"\n694: },\n695: \"src/game/effects/tech_id.h\": {\n696: \"mode\": 420,\n697: \"sha256\": \"f37752250c80c9c75ef8e144e4646dc1290a2cc8ce72d9a37949c6408996df86\"\n698: },\n699: \"src/game/events/CMakeLists.txt\": {\n700: \"mode\": 420,\n701: \"sha256\": \"9b1f14a3801a991ba065e0e39ae2e3fa3966018e8a98fcceeddeaca3909328e2\"\n702: },\n703: \"src/game/events/event_log.cpp\": {\n704: \"mode\": 420,\n705: \"sha256\": \"3b131879ec5e81cd1ba2bb0cbdfa6e05775ed77684f4ed7a8f5cfae87da1e7b1\"\n706: },\n707: \"src/game/events/event_log.h\": {\n708: \"mode\": 420,\n709: \"sha256\": \"2ff415b1120ca3f28421006a566280fb977027cfa3f209bdba0986350376a953\"\n710: },\n711: \"src/game/events/research_events.cpp\": {\n712: \"mode\": 420,\n713: \"sha256\": \"9520b20eba2a2b4bd5925f13b420d526fc610d06aae7ffad314e3002c4f5a253\"\n714: },\n715: \"src/game/events/research_events.h\": {\n716: \"mode\": 420,\n717: \"sha256\": \"b87340c6b14e9de97e5bc0c5a4cbd74e54bab2831c60edf88c0e42ff5218ea22\"\n718: },\n719: \"src/game/nav/CMakeLists.txt\": {\n720: \"mode\": 420,\n721: \"sha256\": \"79cc0ba25c6d49f7784663ace033d01ab3d85a5d8015fe2f466f8f1a3065983a\"\n722: },\n723: \"src/game/nav/pathplan.cpp\": {\n724: \"mode\": 420,\n725: \"sha256\": \"04cfe8fca5be565f5443c8f1402eb0072221dbd63f70855e35b3eeea752f1775\"\n726: },\n727: \"src/game/nav/pathplan.h\": {\n728: \"mode\": 420,\n729: \"sha256\": \"28b51f737b458679888e555d985b9e8d41adf8ba91fa0980b5e83668758c86e7\"\n730: },\n731: \"src/game/sim/CMakeLists.txt\": {\n732: \"mode\": 420,\n733: \"sha256\": \"4b3085116f88c903a137abef6806891f7b7245dcb031153df7a5465dd2521116\"\n734: },\n735: \"src/game/sim/colony.cpp\": {\n736: \"mode\": 420,\n737: \"sha256\": \"e0f0bf15d87b6ac2e92053cbfe0869c0dbf9465d90a9bae5456bb46883423b77\"\n738: },\n739: \"src/game/sim/colony.h\": {\n740: \"mode\": 420,\n741: \"sha256\": \"357dce21440140a6cf836a3c12175ebb5bb6706c37d5ecd315a4ee4937725b47\"\n742: },\n743: \"src/game/sim/construction.cpp\": {\n744: \"mode\": 420,\n745: \"sha256\": \"8cf4792f487162ca3599f16f0e92d73b4c9549046044548c5aecf202dd564130\"\n746: },\n747: \"src/game/sim/construction.h\": {\n748: \"mode\": 420,\n749: \"sha256\": \"a7f201101ad704f1994f809259ad60f780760fa36174d99a1ccd9299447f5460\"\n750: },\n751: \"src/game/sim/economy.cpp\": {\n752: \"mode\": 420,\n753: \"sha256\": \"1e0b17b589496a6139e8ca10fe20553050be7c965a02daf8b520dd5020412d89\"\n754: },\n755: \"src/game/sim/economy.h\": {\n756: \"mode\": 420,\n757: \"sha256\": \"6f3e33e803bb49367d4cee3c8ef6186f04b79e7cf901047fc48d933108ab6d2a\"\n758: },\n759: \"src/game/sim/movement.cpp\": {\n760: \"mode\": 420,\n761: \"sha256\": \"80c64b2148304b84683cf3860ced1354f5c29c923bbc50cc5001030dd85c2cd2\"\n762: },\n763: \"src/game/sim/movement.h\": {\n764: \"mode\": 420,\n765: \"sha256\": \"9a6b2b4960428634d8004cd5694ed6a7a10ab28fd9c0e2a9824ede3e201e9441\"\n766: },\n767: \"src/game/sim/numeric.h\": {\n768: \"mode\": 420,\n769: \"sha256\": \"88f715192ea322ace4eea13ab5ae55f7f41600262025208e468b5259220522c2\"\n770: },\n771: \"src/game/sim/observed.cpp\": {\n772: \"mode\": 420,\n773: \"sha256\": \"43d29a9fe1195dcc0b7e6101ea05bfd076f03636f9f68de473539c83db0ddd22\"\n774: },\n775: \"src/game/sim/observed.h\": {\n776: \"mode\": 420,\n777: \"sha256\": \"0224b5bf341f30ff0e98d910547261b6732bdc0c5339b520e26fc51939c1269f\"\n778: },\n779: \"src/game/sim/player_turn.cpp\": {\n780: \"mode\": 420,\n781: \"sha256\": \"beb1b2ed434df3727e676ac56e751beff87fa98e4a42e4657cc54d41025773a2\"\n782: },\n783: \"src/game/sim/player_turn.h\": {\n784: \"mode\": 420,\n785: \"sha256\": \"f24f8f5e161486575cd341c2f5bfed46fa6983263edcf2320e9c24860b4be51a\"\n786: },\n787: \"src/game/sim/research.cpp\": {\n788: \"mode\": 420,\n789: \"sha256\": \"95f2d325544ee018ec8d0f945e91b4172f6ba406f95e19f86c4fb9aac6b22a89\"\n790: },\n791: \"src/game/sim/research.h\": {\n792: \"mode\": 420,\n793: \"sha256\": \"e27a311e977afb2e01242938dc8d928e9a67d1f761965e191cf907e05c1c86e9\"\n794: },\n795: \"src/game/sim/rng.h\": {\n796: \"mode\": 420,\n797: \"sha256\": \"f7e5bbced3dbd37deb49a00b52d05f7c751501d654dabd645ecff7447355929c\"\n798: },\n799: \"src/game/sim/scriptobjects.cpp\": {\n800: \"mode\": 420,\n801: \"sha256\": \"a4f9a1b49e4ba22a88726efbbea2f355b40a3c006734d9150d509a344720a4d2\"\n802: },\n803: \"src/game/sim/scriptobjects.h\": {\n804: \"mode\": 420,\n805: \"sha256\": \"210d0eb51780df70a9bca133664429589c03ea33e4524e2c182801d4b4a5c74b\"\n806: },\n807: \"src/game/sim/species.h\": {\n808: \"mode\": 420,\n809: \"sha256\": \"83b44c0600b99c5acb72a3484bb0708cfba765cdf594aede596a3c47d5ee6298\"\n810: },\n811: \"src/game/sim/techgraph.cpp\": {\n812: \"mode\": 420,\n813: \"sha256\": \"81f8f1120eb1fa4a77752bd2e0917df3dd76372461416526ae510bd697944ef8\"\n814: },\n815: \"src/game/sim/techgraph.h\": {\n816: \"mode\": 420,\n817: \"sha256\": \"b2fc90666080a6b7f27dc9290eef17774d57742c2a1f9e1f77d94c7fa5689f6e\"\n818: },\n819: \"src/game/sim/tuning.h\": {\n820: \"mode\": 420,\n821: \"sha256\": \"4acfad4098de951cc3a94ca25a2f200e96caba1836bf7441de5a2b458c022194\"\n822: },\n823: \"src/game/sim/visibility.cpp\": {\n824: \"mode\": 420,\n825: \"sha256\": \"25f86a34f9a98d2439672283a446ba1804973dae3f6d9aa3692342b05f3a3ac0\"\n826: },\n827: \"src/game/sim/visibility.h\": {\n828: \"mode\": 420,\n829: \"sha256\": \"783896489a2a9ec8bce617b141bfb631e8ef92f958be7b5c2ca64fd75774471f\"\n830: },\n831: \"src/mars/parse/CMakeLists.txt\": {\n832: \"mode\": 420,\n833: \"sha256\": \"76c290b786a3e73387ec8c574fd5a0dbeb6e629adbe970426314f16497f59fa9\"\n834: },\n835: \"src/mars/parse/blocks.cpp\": {\n836: \"mode\": 420,\n837: \"sha256\": \"e60baa8127b21cf6eb6c8e2aa02c6a72c6403dbc29e8480ff658bf184266675b\"\n838: },\n839: \"src/mars/parse/blocks.h\": {\n840: \"mode\": 420,\n841: \"sha256\": \"1e8b76919a584d1d7fb01c5ff5e3a7173e8456eca892d61f0c6b7bb8f02f33b1\"\n842: },\n843: \"src/mars/parse/effect.cpp\": {\n844: \"mode\": 420,\n845: \"sha256\": \"beb76a841a3d42dbc157413384ff1a0312a7068d6b22020eadcee2e1cbbc81f9\"\n846: },\n847: \"src/mars/parse/effect.h\": {\n848: \"mode\": 420,\n849: \"sha256\": \"aaa5c83f2d8eef24667bf05d0f71b2a346f2fce09dc9a45d7a5197c894922e44\"\n850: },\n851: \"src/mars/parse/result.h\": {\n852: \"mode\": 420,\n853: \"sha256\": \"58cff456e353550abcd0f52e031d9d70f2b7a975f4762cfccc64eb6bc748dbd9\"\n854: },\n855: \"src/mars/parse/script.h\": {\n856: \"mode\": 420,\n857: \"sha256\": \"69a493268c47a08672694489a51c3ff0a7f9aa870e5ae5a93d47ba033cf21ad3\"\n858: },\n859: \"src/mars/parse/value.cpp\": {\n860: \"mode\": 420,\n861: \"sha256\": \"712133e4d725649f5461e6a46bac6842b0751ac3fb7e1c468f826638ec58f623\"\n862: },\n863: \"src/mars/parse/value.h\": {\n864: \"mode\": 420,\n865: \"sha256\": \"60d692648dab7e3e216c8d9e6ef212592ba1df1a98260b1b4599354742947b38\"\n866: },\n867: \"src/mars/rng/CMakeLists.txt\": {\n868: \"mode\": 420,\n869: \"sha256\": \"dceb4bc0fb35c95a12ed9aa36380e79aa75641b15ecc06e4289d39824087e2dc\"\n870: },\n871: \"src/mars/rng/mt19937.cpp\": {\n872: \"mode\": 420,\n873: \"sha256\": \"0c60775e9437b8eaad49f67a96001c81947c8d9e6d2472e28b2b490515bac95b\"\n874: },\n875: \"src/mars/rng/mt19937.h\": {\n876: \"mode\": 420,\n877: \"sha256\": \"300836ab26fd1a4d913b395f08770bb2c248029ef1b80ecbf0c4d886adca2b8e\"\n878: },\n879: \"src/mars/stream/CMakeLists.txt\": {\n880: \"mode\": 420,\n881: \"sha256\": \"95ffbb0c519e55b7423ab048a3019e295b7ef3a3e9506044ef2e68569df9601a\"\n882: },\n883: \"src/mars/stream/archive.h\": {\n884: \"mode\": 420,\n885: \"sha256\": \"84d9ae2bb3d6f444b3933b3816cafd12caee8619d2219f19cd10d32cfad01d2e\"\n886: },\n887: \"src/mars/stream/bytes.h\": {\n888: \"mode\": 420,\n889: \"sha256\": \"9f5869952c9d6b925db32995a417ba292a0c1a672fc3850400150afb8163b3f1\"\n890: },\n891: \"src/mars/stream/dump.cpp\": {\n892: \"mode\": 420,\n893: \"sha256\": \"1b5bba86b2f85b1718276f8db557601320ab8a165d5fbfe93e51219cca5a1c16\"\n894: },\n895: \"src/mars/stream/dump.h\": {\n896: \"mode\": 420,\n897: \"sha256\": \"a69af300ae7083fb0a5362edbe7eecd5273c8807884aff9fbedd7ae606c7fc4f\"\n898: },\n899: \"src/mars/stream/gzip.cpp\": {\n900: \"mode\": 420,\n901: \"sha256\": \"20d71fd50bd637f78e7ebb5217bc6607ebc257535cc4720e640e4badb72f1644\"\n902: },\n903: \"src/mars/stream/gzip.h\": {\n904: \"mode\": 420,\n905: \"sha256\": \"6bce52c615eb120999adb1a6f7f06baa813a033c28e02e6d79ce77f5b7a929c9\"\n906: },\n907: \"src/mars/stream/node.h\": {\n908: \"mode\": 420,\n909: \"sha256\": \"eb43054c8592db107557979c7fc8612dc0646ba5d62f154b9b7f96a37ba2e860\"\n910: },\n911: \"src/mars/stream/probe.h\": {\n912: \"mode\": 420,\n913: \"sha256\": \"6411d0976d1e785e8c32af6ecfe1a797c0a9aa02314e5e42fae3ed7b3449ae13\"\n914: },\n915: \"src/mars/stream/reader.cpp\": {\n916: \"mode\": 420,\n917: \"sha256\": \"90f19cbcdb0fc50795895ea1eff09cd6c0ab3069095c49b276f3894e3d6bcbb3\"\n918: },\n919: \"src/mars/stream/reader.h\": {\n920: \"mode\": 420,\n921: \"sha256\": \"900508d97be1cbe566d77f2c91755d3db387535cd9574e41704b6d940daa1ff4\"\n922: },\n923: \"src/mars/stream/save.cpp\": {\n924: \"mode\": 420,\n925: \"sha256\": \"6db367b3ea570a4d0ee831160e3f44cef380f58de163b9d9205ca7449e51e049\"\n926: },\n927: \"src/mars/stream/save.h\": {\n928: \"mode\": 420,\n929: \"sha256\": \"b3a411600d98b42e9014e1fc3cbc3eac5f32f4393e9f72036d3d840c802bb469\"\n930: },\n931: \"src/mars/stream/savedump_main.cpp\": {\n932: \"mode\": 420,\n933: \"sha256\": \"8dc687f009d9f455e9bfa4019f03df72e058cebbb3e9ae5bcbb308285470208c\"\n934: },\n935: \"src/mars/stream/schema.h\": {\n936: \"mode\": 420,\n937: \"sha256\": \"b1cd64bc43076a3e5893239bd2eb5c216e7293ee541322ef74fb106928183a05\"\n938: },\n939: \"src/mars/stream/shapes.h\": {\n940: \"mode\": 420,\n941: \"sha256\": \"45ee379ff8100b6bc27427a2580d7aae19ff3d5d0aa27f682d156ae6a92d0a6d\"\n942: },\n943: \"src/mars/stream/writer.cpp\": {\n944: \"mode\": 420,\n945: \"sha256\": \"54804b06266e34793f5294f9a96d2939d641915a0f60fc4e3b4170bfcea6e083\"\n946: },\n947: \"src/mars/stream/writer.h\": {\n948: \"mode\": 420,\n949: \"sha256\": \"921cd44ea30e0b9944825b1d2caafc46edc8f2c23506c807050ed9208a397340\"\n950: },\n951: \"src/mars/text/CMakeLists.txt\": {\n952: \"mode\": 420,\n953: \"sha256\": \"dccb93b37c21c9b3c3b35a50ca8de55c9f00df2a9e0a33b6c36d659a75455436\"\n954: },\n955: \"src/mars/text/csv.cpp\": {\n956: \"mode\": 420,\n957: \"sha256\": \"b190e12b86a3f416a72c110caf9e0b2d98cdd33851d2fa48b55a8d7ea39279af\"\n958: },\n959: \"src/mars/text/csv.h\": {\n960: \"mode\": 420,\n961: \"sha256\": \"3b7ec6d0884e95bfab869c253eddc30a802602bd1f230cc69461cb9cf3c17917\"\n962: },\n963: \"src/mars/text/flat_kv.cpp\": {\n964: \"mode\": 420,\n965: \"sha256\": \"b98d3b7345489f0b149e56cd15436fd6199e4cf00d7ce3f8b8b31fcdecb90e47\"\n966: },\n967: \"src/mars/text/flat_kv.h\": {\n968: \"mode\": 420,\n969: \"sha256\": \"d6765cd42cad46597b6e36e9d08baf6819f7796442293043d5ff686e2376d292\"\n970: },\n971: \"src/mars/text/lines.h\": {\n972: \"mode\": 420,\n973: \"sha256\": \"b9a16ccf0dc7bbf36100e0b66c80bcb818590b161f820d3c67d55bccff1c2c65\"\n974: },\n975: \"src/mars/text/manifest.cpp\": {\n976: \"mode\": 420,\n977: \"sha256\": \"4da1bb615902ec61883e561f5dd375d89442f7b9046fbc864f6308f27921087e\"\n978: },\n979: \"src/mars/text/manifest.h\": {\n980: \"mode\": 420,\n981: \"sha256\": \"dd7351a7a6a144e97f3a3b6a25d22d1518a099e95deadb8965cedb201601e102\"\n982: },\n983: \"src/mars/text/result.h\": {\n984: \"mode\": 420,\n985: \"sha256\": \"7f817033811dff6fcef1d5b76f88922cb0392afb4359549876cd017a14755606\"\n986: },\n987: \"src/mars/text/value.cpp\": {\n988: \"mode\": 420,\n989: \"sha256\": \"94b433d78f3211e1a4dd9eb8a0a00b514cbeaf63a03e738146c56dbbfe221479\"\n990: },\n991: \"src/mars/text/value.h\": {\n992: \"mode\": 420,\n993: \"sha256\": \"d3b5c70af2f339ad27b43c38353fc7a2da83388854b02000fa1b6d9a4e1dfc07\"\n994: },\n995: \"src/mars/vfs/CMakeLists.txt\": {\n996: \"mode\": 420,\n997: \"sha256\": \"630d5d4707ef3c0f24a414815cc23158853fe9d5aef429d6619abc1c433b3786\"\n998: },\n999: \"src/mars/vfs/path.cpp\": {\n1000: \"mode\": 420,\n1001: \"sha256\": \"e1f3bbab1f90b0132aec24d8c5997dafab69ec72f01f2dd2fa63c91f83ef7aeb\"\n1002: },\n1003: \"src/mars/vfs/path.h\": {\n1004: \"mode\": 420,\n1005: \"sha256\": \"043091008f2cab7c88185de63e7aae63ad9b0e384109f5b6fd8c31666c4e2033\"\n1006: },\n1007: \"src/mars/vfs/result.h\": {\n1008: \"mode\": 420,\n1009: \"sha256\": \"19115bf1c5b3bf01da078a49209230053043610b342b01cdaaed126e2d3ea748\"\n1010: },\n1011: \"src/mars/vfs/vfs.cpp\": {\n1012: \"mode\": 420,\n1013: \"sha256\": \"ab8272cd14b4b55e7af13f5383d6106f0b1caabdde57e69c1d0fb5b434d31cba\"\n1014: },\n1015: \"src/mars/vfs/vfs.h\": {\n1016: \"mode\": 420,\n1017: \"sha256\": \"2484231baa64ede6fc35eb0f49e1fd7a3373d5c559f016d5adfb9fc433619d90\"\n1018: },\n1019: \"src/mars/vfs/zip_archive.cpp\": {\n1020: \"mode\": 420,\n1021: \"sha256\": \"d66e70300539bd42bcf193683df7c34d2b0b03146fd79f0a180385ead1559e87\"\n1022: },\n1023: \"src/mars/vfs/zip_archive.h\": {\n1024: \"mode\": 420,\n1025: \"sha256\": \"0ffbd90f7919741e63e86e14d0f87d247bc2cd16d2db54771071553249ad935d\"\n1026: },\n1027: \"src/shim/binkw32.def\": {\n1028: \"mode\": 420,\n1029: \"sha256\": \"fb500fd9f9ecbff44123b89fc24cec72e91fec4c4430ce12a69efc06b20de235\"\n1030: },\n1031: \"src/shim/fpu_force.cpp\": {\n1032: \"mode\": 420,\n1033: \"sha256\": \"c4b4e41a7ef81139c652ba8164ed8bb0d809b42182f0d0f048b9a9e63bebe59d\"\n1034: },\n1035: \"src/shim/fpu_force.h\": {\n1036: \"mode\": 420,\n1037: \"sha256\": \"75bac23bc45510961f6b10d21c47e72d8dc0d3971a3ab30b795cad1d25332c06\"\n1038: },\n1039: \"src/shim/hooks/ai_orders.cpp\": {\n1040: \"mode\": 420,\n1041: \"sha256\": \"091ed885012fffa0e02b83c53e547483dfdeaf1094933726e0291fff0a99e434\"\n1042: },\n1043: \"src/shim/hooks/ai_orders.h\": {\n1044: \"mode\": 420,\n1045: \"sha256\": \"6e775b3f946f2eaf10dc2e236a3f3c7b9311ed4e82cd4be1ca30e6c62d49d053\"\n1046: },\n1047: \"src/shim/hooks/ai_rng.cpp\": {\n1048: \"mode\": 420,\n1049: \"sha256\": \"b8fec711cb620561c8f4854e72c3fb0d73013c9b1cd69fa63fc05dd3d2f60289\"\n1050: },\n1051: \"src/shim/hooks/ai_rng.h\": {\n1052: \"mode\": 420,\n1053: \"sha256\": \"1306f4d3c8071121b06c75232efa5c50b155c1f8752fcae852ee8e5497ce7d08\"\n1054: },\n1055: \"src/shim/hooks/ai_visit.cpp\": {\n1056: \"mode\": 420,\n1057: \"sha256\": \"cd69811074820810edb1ed3779ca08bd99fea620b162d80a0395d35e8db7fc31\"\n1058: },\n1059: \"src/shim/hooks/ai_visit.h\": {\n1060: \"mode\": 420,\n1061: \"sha256\": \"8315b433319f680e80a154409124355ad24842e9a0cdef5c8aa6d12422971189\"\n1062: },\n1063: \"src/shim/hooks/budget_inputs.cpp\": {\n1064: \"mode\": 420,\n1065: \"sha256\": \"fa50fb74a3874886cf8aeb4012b9fd9a5a43ce38ab3c543ee425002ca32fd46b\"\n1066: },\n1067: \"src/shim/hooks/budget_inputs.h\": {\n1068: \"mode\": 420,\n1069: \"sha256\": \"56e2f95930ff420820a3464162fde74ac0a3ff2e1dc8b493729fed342e4a6548\"\n1070: },\n1071: \"src/shim/hooks/colony_inputs.cpp\": {\n1072: \"mode\": 420,\n1073: \"sha256\": \"7aa9191ec6292d765fd06c99ff1f2ae2e09a65fb1f238dd2727f28bd465dd46e\"\n1074: },\n1075: \"src/shim/hooks/colony_inputs.h\": {\n1076: \"mode\": 420,\n1077: \"sha256\": \"87ec765e14106631e3f6423450e6e01d5bb21060fa91f83c267db215ef4986d9\"\n1078: },\n1079: \"src/shim/hooks/colony_turn.cpp\": {\n1080: \"mode\": 420,\n1081: \"sha256\": \"b82616c7b9b05e96e7f4c40d853c686884b517a5424413686d61799df9d45420\"\n1082: },\n1083: \"src/shim/hooks/colony_turn.h\": {\n1084: \"mode\": 420,\n1085: \"sha256\": \"a9013cc2e92998ff56ac0c8cc36dc42033fbe3072ee88b86882a1dd4dd0357d6\"\n1086: },\n1087: \"src/shim/hooks/compute_budget.cpp\": {\n1088: \"mode\": 420,\n1089: \"sha256\": \"76a24f0daf1f49cfabbed13753c65754e26bfcc4f672791b37e926f82b5c1906\"\n1090: },\n1091: \"src/shim/hooks/compute_budget.h\": {\n1092: \"mode\": 420,\n1093: \"sha256\": \"f308717e44e12151cfb20a6a0cf11ff8e99ecc9c17ef04783198feed05a24caa\"\n1094: },\n1095: \"src/shim/hooks/dictionaries.cpp\": {\n1096: \"mode\": 420,\n1097: \"sha256\": \"b60794256c07964eb89d5295ecb711b402112fe5f982a9215dc3a304d03a567b\"\n1098: },\n1099: \"src/shim/hooks/dictionaries.h\": {\n1100: \"mode\": 420,\n1101: \"sha256\": \"ac68fd66eb343d40ee97d6bf29c8b54f5d469a9ef8862687ae15e6ad8bdafdc0\"\n1102: },\n1103: \"src/shim/hooks/draw_sites.cpp\": {\n1104: \"mode\": 420,\n1105: \"sha256\": \"e7a1fa40262db2ed22b1dfa5ca1bd2588da07bfbab046f23afa8e86c03814d79\"\n1106: },\n1107: \"src/shim/hooks/draw_sites.h\": {\n1108: \"mode\": 420,\n1109: \"sha256\": \"0021323e918d464223d03b969d0e6992a0efac23ba84a31af901cf2ac74e9b13\"\n1110: },\n1111: \"src/shim/hooks/event_inputs.cpp\": {\n1112: \"mode\": 420,\n1113: \"sha256\": \"eeb9cc87ef5c39994b7f25d5ccfe220c4775b32a4b11471b0fc0fb81fca4362b\"\n1114: },\n1115: \"src/shim/hooks/event_inputs.h\": {\n1116: \"mode\": 420,\n1117: \"sha256\": \"c0e74aed8756b3de8ebbe5ab3d70cfa6282403efefc2d795e8f0b1b4cd44d731\"\n1118: },\n1119: \"src/shim/hooks/fleet_movement.cpp\": {\n1120: \"mode\": 420,\n1121: \"sha256\": \"f01ae7f64b1d545089b002b79c9986d2a39b97ad3995c88a8b71fa05eedb90f0\"\n1122: },\n1123: \"src/shim/hooks/fleet_movement.h\": {\n1124: \"mode\": 420,\n1125: \"sha256\": \"dbbfe50afaedad63ec45881819aa5de3907cdb411ddf8d1d3e6a5f9a386dc8af\"\n1126: },\n1127: \"src/shim/hooks/global_consts.cpp\": {\n1128: \"mode\": 420,\n1129: \"sha256\": \"87a51601e1a7d963bf841ca4e892aa79de789a050f5d783c7b5d8bbc2e96a9a1\"\n1130: },\n1131: \"src/shim/hooks/global_consts.h\": {\n1132: \"mode\": 420,\n1133: \"sha256\": \"b6ac4265ec1f02f11c342536dbc9970c13761ea68aec0a5962d0f4cd6aa5d265\"\n1134: },\n1135: \"src/shim/hooks/movement_inputs.cpp\": {\n1136: \"mode\": 420,\n1137: \"sha256\": \"0e23f86e4a8ed6c292aea8e45512931cdd06742f25c5e0d175bf0ed3b2217502\"\n1138: },\n1139: \"src/shim/hooks/movement_inputs.h\": {\n1140: \"mode\": 420,\n1141: \"sha256\": \"32904786cbb122c3c8c36faf6bd9ea5ade4cd8395e74199ec08dbcdb8019b66a\"\n1142: },\n1143: \"src/shim/hooks/player_turn.cpp\": {\n1144: \"mode\": 420,\n1145: \"sha256\": \"33bcadd7569ad13c69f5f160423c8d469bc67725ce7b944cf4b4346fb8cc7f23\"\n1146: },\n1147: \"src/shim/hooks/player_turn.h\": {\n1148: \"mode\": 420,\n1149: \"sha256\": \"a766a0d93f3860da6f8d1e0dcf110d6754cd8dfe67d867093f32e3d24e8ff0e0\"\n1150: },\n1151: \"src/shim/hooks/player_turn_inputs.cpp\": {\n1152: \"mode\": 420,\n1153: \"sha256\": \"993dce2ca771a36337c9561695995a0825746563d2e84b4458de650f3e456799\"\n1154: },\n1155: \"src/shim/hooks/player_turn_inputs.h\": {\n1156: \"mode\": 420,\n1157: \"sha256\": \"ca0d7916ca17d993aaef19be48d03076220ae15cdcc622aef52a7c6b5957ca71\"\n1158: },\n1159: \"src/shim/hooks/probe_entry.cpp\": {\n1160: \"mode\": 420,\n1161: \"sha256\": \"5faf9cf04a2cf849d2dd54ce4ad9b812120fb99741f11e9d52fed450badf0506\"\n1162: },\n1163: \"src/shim/hooks/probe_entry.h\": {\n1164: \"mode\": 420,\n1165: \"sha256\": \"f04f445863a6164d03bc9f6edcaa2e2b0108163241510f4c1dfcb0da7667d89f\"\n1166: },\n1167: \"src/shim/hooks/research.cpp\": {\n1168: \"mode\": 420,\n1169: \"sha256\": \"dacd16403f1dd5be2ef2cc42f16938977bdd0ee9283d0bca647a079ee3d28e83\"\n1170: },\n1171: \"src/shim/hooks/research.h\": {\n1172: \"mode\": 420,\n1173: \"sha256\": \"a62c4847be81ed9d10c4f5b9a876bd79898040aa11aa8764149d82db4b010a84\"\n1174: },\n1175: \"src/shim/hooks/rng_ledger.cpp\": {\n1176: \"mode\": 420,\n1177: \"sha256\": \"119d325fcda72268bdc87f7ca7af05d059d4521c4d7d40ad7426ce070865eabb\"\n1178: },\n1179: \"src/shim/hooks/rng_ledger.h\": {\n1180: \"mode\": 420,\n1181: \"sha256\": \"0d1e9c79e7601da921253e860c55d9b69c21e03a1014c49f1dd85fd0e5f70f30\"\n1182: },\n1183: \"src/shim/hooks/system_output.cpp\": {\n1184: \"mode\": 420,\n1185: \"sha256\": \"93bfb7e6ca381041d1e9830f82b8d774a63c12593fc426fd3e9198c9373be3b4\"\n1186: },\n1187: \"src/shim/hooks/system_output.h\": {\n1188: \"mode\": 420,\n1189: \"sha256\": \"62a8424c70bb8e6c3d9603ce752f6b19a3920a4a78be75718869d7dac73f3738\"\n1190: },\n1191: \"src/shim/hooks/tail_rng.cpp\": {\n1192: \"mode\": 420,\n1193: \"sha256\": \"9b2a3923d1d837399f3486650ef0e49b502837ff7df46a12df9a9e9b0d4d9d07\"\n1194: },\n1195: \"src/shim/hooks/tail_rng.h\": {\n1196: \"mode\": 420,\n1197: \"sha256\": \"b9585605e71364872db25c608012e94db2148f22e2e6fd40d4b590a83f3be92b\"\n1198: },\n1199: \"src/shim/hooks/tech_effect_fields.cpp\": {\n1200: \"mode\": 420,\n1201: \"sha256\": \"4c4d558aba3ac4e1b10e0944c867911e61daea0b4ade716760546846cebcb7b3\"\n1202: },\n1203: \"src/shim/hooks/tech_effect_fields.h\": {\n1204: \"mode\": 420,\n1205: \"sha256\": \"22b2c050f73c9de011a42dc5a52d92a1bd3b24a59f3ba3b4332d832fb1853420\"\n1206: },\n1207: \"src/shim/hooks/tech_effects.cpp\": {\n1208: \"mode\": 420,\n1209: \"sha256\": \"2a20f01a18ed30a466e2023ae023aeed8718c680cda927d2f3b463b6dbe35714\"\n1210: },\n1211: \"src/shim/hooks/tech_effects.h\": {\n1212: \"mode\": 420,\n1213: \"sha256\": \"ffbc4e8262146cd7764f0b9758fff01ce5d359b25a0f5d8c931313f32d035320\"\n1214: },\n1215: \"src/shim/hooks/watchpoints.cpp\": {\n1216: \"mode\": 420,\n\n(Output capped at 50 KB. Showing lines 1-1216. Use offset=1217 to continue.)\n","metadata":{"preview":"{\n \"actor\": \"research-problem-resolver\",\n \"checkpoint_session\": \"run-ec31ee938e1f509cd7130c03\",\n \"command\": [\n \"opencode\",\n \"run\",\n \"--format\",\n \"json\",\n \"--model\",\n \"openai/gpt-6-astra\",\n \"--agent\",\n \"sots-resolver\",\n \"Start a FRESH bounded campaign quantum (40 steps). No delegation.\\nRole=resolver; requested model=openai/gpt-6-astra; actor=research-problem-resolver; checkpoint session=run-ec31ee938e1f509cd7130c03.\\nCanonical state root: /home/alex/sots-re\\nContract: /home/alex/sots-re/campaign/contracts/research-completion-abi.json\\nLatest checkpoint: campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json\\nEngine worktree: /tmp/opencode/sots-final-research-engine\\nRE worktree: /tmp/opencode/sots-final-research-re\\nRead canonical campaign/README.md, contract, latest checkpoint and open surprises before work. Verify source/worktree/resource identities. Only edit owned scope. Missing state means blocked. Do not commit, stage, push or mutate lab resources without explicit authority and a lease. Checkpoint every 20 tool calls or 15 minutes, before experiments, compaction and stopping; persist under canonical campaign/ using tools/campaign.py with the session above, exact model, actor and role. Include observations versus decisions, source identities, artifact paths, tests, blockers and ONE exact next action. Fresh checkpoint at quantum end is mandatory. Record a surprise and pause affected work if assumptions are falsified. RESOLUTION-ONLY: read evidence, record decisions/checkpoints; no implementation or architecture source edits. Do not rely on chat resume or automatic compaction.\"\n ],\n \"config\": {\n \"canonical_files\": {\n \"campaign/agents/analyst.md\": \"895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952\",\n \"campaign/agents/implementer.md\": \"eb5581051a92b3d2b9ddd947812b1c02ff6a0b5e7619e7674adc26701e9a3d91\",\n \"campaign/agents/lab.md\": \"48f1765ebdcb2015e631ad91428f65735ff899e119134b652f70788ff2eae5b8\",\n \"campaign/agents/lead.md\": \"8fcfe52be845ed98a172afb47ea888b19bb7bffa80f7b50ace58d2bb66924220\",","truncated":true,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json","text":"{\n \"actor\": \"research-problem-resolver\",\n \"checkpoint_session\": \"run-ec31ee938e1f509cd7130c03\",\n \"command\": [\n \"opencode\",\n \"run\",\n \"--format\",\n \"json\",\n \"--model\",\n \"openai/gpt-6-astra\",\n \"--agent\",\n \"sots-resolver\",\n \"Start a FRESH bounded campaign quantum (40 steps). No delegation.\\nRole=resolver; requested model=openai/gpt-6-astra; actor=research-problem-resolver; checkpoint session=run-ec31ee938e1f509cd7130c03.\\nCanonical state root: /home/alex/sots-re\\nContract: /home/alex/sots-re/campaign/contracts/research-completion-abi.json\\nLatest checkpoint: campaign/runtime/checkpoints/research-completion-abi-4555678e34291015554e7e88.json\\nEngine worktree: /tmp/opencode/sots-final-research-engine\\nRE worktree: /tmp/opencode/sots-final-research-re\\nRead canonical campaign/README.md, contract, latest checkpoint and open surprises before work. Verify source/worktree/resource identities. Only edit owned scope. Missing state means blocked. Do not commit, stage, push or mutate lab resources without explicit authority and a lease. Checkpoint every 20 tool calls or 15 minutes, before experiments, compaction and stopping; persist under canonical campaign/ using tools/campaign.py with the session above, exact model, actor and role. Include observations versus decisions, source identities, artifact paths, tests, blockers and ONE exact next action. Fresh checkpoint at quantum end is mandatory. Record a surprise and pause affected work if assumptions are falsified. RESOLUTION-ONLY: read evidence, record decisions/checkpoints; no implementation or architecture source edits. Do not rely on chat resume or automatic compaction.\"\n ],\n \"config\": {\n \"canonical_files\": {\n \"campaign/agents/analyst.md\": \"895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952\",\n \"campaign/agents/implementer.md\": \"eb5581051a92b3d2b9ddd947812b1c02ff6a0b5e7619e7674adc26701e9a3d91\",\n \"campaign/agents/lab.md\": \"48f1765ebdcb2015e631ad91428f65735ff899e119134b652f70788ff2eae5b8\",\n \"campaign/agents/lead.md\": \"8fcfe52be845ed98a172afb47ea888b19bb7bffa80f7b50ace58d2bb66924220\",\n \"campaign/agents/resolver.md\": \"742c36dc8567669d462566d6121eed42fcff5bff34e8eff466e92249f7ca195f\",\n \"campaign/agents/verifier.md\": \"e467fc644e4e37d631a7a4e35038d9d3d0498491f1d7811d61d99271ff345c6b\",\n \"campaign/models.json\": \"00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48\",\n \"opencode.json\": \"027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99\"\n },\n \"effective\": {\n \"agent_sha256\": \"538b7262e3a21bba755e48cc1974eefb35bf710a5d23dde6d05fedb73250b7a0\",\n \"sha256\": \"b991546a31472fa41788ec79102f8cf5165ebc45f43dbf2ccf848a13c01c727e\"\n },\n \"expanded_prompt_sha256\": \"75226903f94e211868d70015e18e88cc3e3d338111743753bcd8a0f35e13e317\",\n \"overlay\": {\n \"agent\": {\n \"sots-resolver\": {\n \"model\": \"openai/gpt-6-astra\",\n \"permission\": {\n \"bash\": {\n \"*\": \"deny\",\n \"git -C * diff *\": \"allow\",\n \"git -C * log *\": \"allow\",\n \"git -C * rev-parse *\": \"allow\",\n \"git -C * show *\": \"allow\",\n \"git -C * status *\": \"allow\",\n \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re checkpoint *\": \"allow\",\n \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re resolve *\": \"allow\",\n \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re status *\": \"allow\",\n \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re surprise *\": \"allow\",\n \"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re validate *\": \"allow\"\n },\n \"edit\": {\n \"*\": \"deny\",\n \"/home/alex/sots-re/campaign/contracts/*\": \"allow\",\n \"/home/alex/sots-re/campaign/runtime/*\": \"allow\"\n },\n \"external_directory\": {\n \"*\": \"deny\",\n \"/home/alex/sots-re\": \"allow\",\n \"/home/alex/sots-re/*\": \"allow\",\n \"/tmp/opencode/sots-final-research-engine\": \"allow\",\n \"/tmp/opencode/sots-final-research-engine/*\": \"allow\",\n \"/tmp/opencode/sots-final-research-re\": \"allow\",\n \"/tmp/opencode/sots-final-research-re/*\": \"allow\"\n },\n \"glob\": \"allow\",\n \"grep\": \"allow\",\n \"list\": \"allow\",\n \"question\": \"deny\",\n \"read\": \"allow\",\n \"task\": \"deny\"\n },\n \"prompt\": \"You are the SOTS resolver, running GPT-6 Astra. Read canonical RE AGENTS.md, campaign/README.md,\\nthe surprise, affected contracts, checkpoints and raw evidence. First state the observation and\\nits provenance. Check source/binary/input identity, positive execution and instrument neutrality\\nbefore interpreting game behavior. Do not diagnose a stale build as a game mechanism.\\n\\nFor every affected claim record survives / qualified / overturned and exact domain. Name the\\ncheapest discriminating experiment, revised scope/dependencies and affected evidence that must\\nbe invalidated. Resolve through campaign controls with a durable Astra decision. Never silently\\nwaive acceptance or treat untested inference as measurement. Leave blocked work blocked until\\nthe decision supplies a valid next action. No autonomous lab mutation or nested delegation.\\n\\nCheckpoint every 20 calls/15min and before compaction, handoff or stop. Use short bounded sessions;\\nthe repository carries decisions, not chat memory. Do not create another explanatory history in\\nthe live board: link the actual decision and regenerate projections after integration.\\n\",\n \"steps\": 40\n }\n },\n \"model\": \"openai/gpt-6-astra\"\n },\n \"path\": \"/home/alex/sots-re/opencode.json\",\n \"sha256\": \"027ab29992ab9a5a6ee20bd649ac002f5f3397030d18b070eb949cc42179de99\"\n },\n \"contract\": \"research-completion-abi\",\n \"cwd\": \"/tmp/opencode/sots-final-research-re\",\n \"id\": \"run-ec31ee938e1f509cd7130c03\",\n \"max_steps\": 40,\n \"requested_model\": \"openai/gpt-6-astra\",\n \"resolution_only\": true,\n \"role\": \"resolver\",\n \"schema\": \"sots-run/1\",\n \"source_before\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"files\": {\n \".gitignore\": {\n \"mode\": 420,\n \"sha256\": \"5103c9533f0d31fea29c0cc85d543692af84a697416dfa7557e31c9843210145\"\n },\n \"AGENTS.md\": {\n \"mode\": 420,\n \"sha256\": \"7d1d4bc05c35e3354a77b3c8d5d2c04fb9d6658d09e87bc814a50bc3d2033fb7\"\n },\n \"CLAUDE.md\": {\n \"mode\": 420,\n \"sha256\": \"15d60c3d592302a2854df8bf6d39c0a578c22b9273a633447e10b76fd76291f5\"\n },\n \"CMakeLists.txt\": {\n \"mode\": 420,\n \"sha256\": \"6e9791511ea23bf8bf5f7f58617a7e77bbe5006829609e425e565c11c1e8d7ed\"\n },\n \"CMakePresets.json\": {\n \"mode\": 420,\n \"sha256\": \"fcd1dfe3989ee4f56fa3e419059e1db5621922165edf05f13cfe8e5d786d8bb0\"\n },\n \"CONTRIBUTING.md\": {\n \"mode\": 420,\n \"sha256\": \"26a381fe08feb51f861655f77de4e558f056d1dba79162a2e82513a92d0e6506\"\n },\n \"LICENSE\": {\n \"mode\": 420,\n \"sha256\": \"eedebad43ea495111bf4451d78cb440309d90a733d6a36445699dde0629f1858\"\n },\n \"README.md\": {\n \"mode\": 420,\n \"sha256\": \"66c2437fe4f074e6499de50b0d5f0d013bc290333f4d4bf554b541261885a0c1\"\n },\n \"cmake/toolchain-mingw-i686.cmake\": {\n \"mode\": 420,\n \"sha256\": \"231c0b79868a77d54cc6619f0b4ea18454964a1a078806f44a6ffe3fb7741a9b\"\n },\n \"docs/A2-alliance-and-modcount.md\": {\n \"mode\": 420,\n \"sha256\": \"0c0c45c31d5d64124f3b91a161f8a2f4732c8a5d7f6bc524baf4d59f8a191701\"\n },\n \"docs/AC-predictions.md\": {\n \"mode\": 420,\n \"sha256\": \"ab9e41714abdbc32e620d8a2068be8ebd2fc8898ba149113c66ccda248b4bcda\"\n },\n \"docs/B1.md\": {\n \"mode\": 420,\n \"sha256\": \"42b61bbfc135cdcd0f1a32f63164b88e67106400de7f08f543f118eccd814364\"\n },\n \"docs/B2.md\": {\n \"mode\": 420,\n \"sha256\": \"87dfd333ee15681a3aa4de58cf1b14ff8240e75afabc05012e0f28531cb4b8b8\"\n },\n \"docs/B3.md\": {\n \"mode\": 420,\n \"sha256\": \"fb65c41037b6cd6252c67e5244d492a3a17ea4ba2ddae821d49fe0a879528518\"\n },\n \"docs/B4.md\": {\n \"mode\": 420,\n \"sha256\": \"22547b3d2960684e52a380fb07f43a75bf50aebf93cede689f297cf38f4a012d\"\n },\n \"docs/B6-ship-construction.md\": {\n \"mode\": 420,\n \"sha256\": \"9c5c4fd2059af965e317c9db5b7fbfc440397ddfcdc5bf7860115f6a8a0532ab\"\n },\n \"docs/CB-capture.md\": {\n \"mode\": 420,\n \"sha256\": \"ce45a9082588051eda7438016dc66eb28bb4afda98b82cdc20102c4ca53529f0\"\n },\n \"docs/CB-predictions.md\": {\n \"mode\": 420,\n \"sha256\": \"ba51538b018cbb403978f97ad45d4743937d49ba55c8f15d7af8f8e4aa441f0f\"\n },\n \"docs/E-events.md\": {\n \"mode\": 420,\n \"sha256\": \"de98795aadb1617eab91815ebc34818bef8b52c36ba18b4521170065bfd2d201\"\n },\n \"docs/EV-events.md\": {\n \"mode\": 420,\n \"sha256\": \"e7d9536cd23f5d800dc97f68167bb738088a16136004419f28de92d7fe1bcfb9\"\n },\n \"docs/G-wire-schema.md\": {\n \"mode\": 420,\n \"sha256\": \"19db69ae359ddbd2a0509d02f1c616f939e0428480a8bb33c81f69145323a591\"\n },\n \"docs/G3-civilian-growth.md\": {\n \"mode\": 420,\n \"sha256\": \"38ea3a8ddc3fdca258294d949c4cd2af1a930cdd9ba612d5e8fb48bc446bdf30\"\n },\n \"docs/H-probes.md\": {\n \"mode\": 420,\n \"sha256\": \"f23e4d4cbc8c9a3000a0a58ed994dddd95466cee1ec45e961685e86dde4dc54f\"\n },\n \"docs/L1-predictions.md\": {\n \"mode\": 420,\n \"sha256\": \"af97dbc9f15b9c2e6f223c89bac17826056fa4f3bced3c01513c1ad4d9ac1754\"\n },\n \"docs/L2-predictions.md\": {\n \"mode\": 420,\n \"sha256\": \"18213ce5f3375d478f266de85c38c2b04ca2ae8ab4a2023780dca161fa14f460\"\n },\n \"docs/L3-predictions.md\": {\n \"mode\": 420,\n \"sha256\": \"d1c9c0006079f47ef0d3371f4a2c2df2fe4f08ebdad0f8a12d1b0de35b15ae7e\"\n },\n \"docs/L4-ai-orders.md\": {\n \"mode\": 420,\n \"sha256\": \"b04127c5158a882f252b2b6e8afb2d131f0de623cc0c62c86c612af803d75835\"\n },\n \"docs/L4-predictions.md\": {\n \"mode\": 420,\n \"sha256\": \"6a194ae336920f13d8e4a44549cbe26be959beef81cffed88ef03b3cec563e44\"\n },\n \"docs/L5-live-verification.md\": {\n \"mode\": 420,\n \"sha256\": \"4c1abe57c516b36f383390164a362f53294feda222c623283f1e6091d8ef0ec4\"\n },\n \"docs/M-movefleet.md\": {\n \"mode\": 420,\n \"sha256\": \"718338edb8cbe8a449793b22889776a1783d1d0ade553c03973ea45d426eb426\"\n },\n \"docs/M0.md\": {\n \"mode\": 420,\n \"sha256\": \"e121c380612a42727e3a973d8cf50f884d660bb4b43bc494258dc1c6b6f26705\"\n },\n \"docs/M1.md\": {\n \"mode\": 420,\n \"sha256\": \"e0a36cf109d096748e55522eb8d7a261764cbf5ab5daf9342ba903d0f2bc6704\"\n },\n \"docs/M2.md\": {\n \"mode\": 420,\n \"sha256\": \"25f9cad74eeee40afc2117333232384e1cf387b2b9132856650234c5ba593c61\"\n },\n \"docs/N-output-term.md\": {\n \"mode\": 420,\n \"sha256\": \"3b8317e22714ef66b35efceee6fa0f7057c37f7c6e34d93cc5047cd1dd07ecde\"\n },\n \"docs/P-events-wiring.md\": {\n \"mode\": 420,\n \"sha256\": \"72ee81b71b4c08ae451721c785dc5e01ed4ca43ff0fd474befca09dcc41599ba\"\n },\n \"docs/PAR-predictions.md\": {\n \"mode\": 420,\n \"sha256\": \"16e8fbbac5001db0b10d766858c0ae2ea9619f37043a0883ee46da80d4dd4846\"\n },\n \"docs/PL-players-residual.md\": {\n \"mode\": 420,\n \"sha256\": \"9bc29bc030ee8b0e00e496b91fe8fefac15179ce9fd01c0a11a7b5b5335356dc\"\n },\n \"docs/R-recapture.md\": {\n \"mode\": 420,\n \"sha256\": \"73c62ab20c5eca5e87e1d18aefa60a2a2acd75cbc7510d31b27a2cd4ebcec38f\"\n },\n \"docs/RB-predictions.md\": {\n \"mode\": 420,\n \"sha256\": \"c1016781505c10aa304d4710c5389918b744ab20cbd8cb54dce462c3dc28e4e7\"\n },\n \"docs/S-standalone.md\": {\n \"mode\": 420,\n \"sha256\": \"8979b0a9fef33a55ca15bf3ef78064e72df332033354329ff2471ad6648e4a8e\"\n },\n \"docs/SD-predictions.md\": {\n \"mode\": 420,\n \"sha256\": \"a76a568ccac7409e3cb3acef724dbe6b618d4ec30259bce33594098daff8b6a0\"\n },\n \"docs/SV-script-objects.md\": {\n \"mode\": 420,\n \"sha256\": \"80ebd120fa9cf5e68ac4d33117966805b917d24bc339f7d82be972a280449409\"\n },\n \"docs/T-turn-driver.md\": {\n \"mode\": 420,\n \"sha256\": \"a4096b8223cea87ce77cc64014c489d4625ed36fd3aec1358565ca5cf91d4e1e\"\n },\n \"docs/U-unlock.md\": {\n \"mode\": 420,\n \"sha256\": \"5cbe3d8fb4bd30d029cb2db006a4dd3c6819885f55f434afb4bc8ae79b526901\"\n },\n \"docs/V-eventlive.md\": {\n \"mode\": 420,\n \"sha256\": \"ebd08c000f42211e87958278f03d6891475cd8557658e1a42105cf5ed45a1aa1\"\n },\n \"docs/W2-predictions.md\": {\n \"mode\": 420,\n \"sha256\": \"9972e27467cf0fe23a358818caf7edb979de25697d3aa4b97a2135ca79fe34f5\"\n },\n \"docs/W2-watchpoints.md\": {\n \"mode\": 420,\n \"sha256\": \"f8634c5f977b2ca9b2e07df105cba09adacaeb6fb4cf046e41e5e1e42b83b107\"\n },\n \"docs/W3-predictions.md\": {\n \"mode\": 420,\n \"sha256\": \"211cedc2d924bcf47cbb73166b408e9a27d795863ffc90aa2adbb85beeadffcf\"\n },\n \"docs/W3-watchpoints.md\": {\n \"mode\": 420,\n \"sha256\": \"568e818e66d95f9079a1270c4d9b900c7eecfd5b5a3b4ba5a4aa0c843666f061\"\n },\n \"docs/Y-standalone-rng-and-tail.md\": {\n \"mode\": 420,\n \"sha256\": \"49d926cc505d6ba07753748366e42ec32493a15c76bfaa45b2f66f52adc57f2b\"\n },\n \"docs/Z-tail-rng.md\": {\n \"mode\": 420,\n \"sha256\": \"3ed2b40f728bcedd663c305cce13481bad1429af03fd5215ee3189161cfbd7f1\"\n },\n \"docs/architecture.md\": {\n \"mode\": 420,\n \"sha256\": \"ba4732eb8a4c7054df5136a72d1774e4f1e919a517a1c74e975903fdd254422f\"\n },\n \"docs/game-data.md\": {\n \"mode\": 420,\n \"sha256\": \"2124ea3d117b4ee6f48660d9711c1b4ef844a4ba37af7cea3766914d77bd6b23\"\n },\n \"docs/game-design.md\": {\n \"mode\": 420,\n \"sha256\": \"5b40349ad446596b534567a5683cf9ea99709d9eff231890e0f6256c755f0272\"\n },\n \"docs/game-effects.md\": {\n \"mode\": 420,\n \"sha256\": \"e1e0abc162602daaac255fe44b11c511adf45d4ef5fa188268411829b0817e5d\"\n },\n \"docs/game-sim.md\": {\n \"mode\": 420,\n \"sha256\": \"d1e14770d252fd2f320a7baa1ad54c90d955cfc840f477d1700cfbbadcec730e\"\n },\n \"docs/harness-audit.md\": {\n \"mode\": 420,\n \"sha256\": \"931d92cc744ec6ca3d961fbe7fe96dcab28060446058eb78be9835ebbce73ed0\"\n },\n \"docs/mars-parse.md\": {\n \"mode\": 420,\n \"sha256\": \"d9fa3029ade4f9401c59fb88f4520a1ef3af9a9c6f2bb5d1a0ebfa1d5061d6dd\"\n },\n \"docs/mars-rng.md\": {\n \"mode\": 420,\n \"sha256\": \"f2a01b88f105d07d0d0d514430e76da7632e5c8e4e3bbd6c99a25f1dc5daa89c\"\n },\n \"docs/mars-stream.md\": {\n \"mode\": 420,\n \"sha256\": \"61a16c9b7c143b4bc2edee473cf1f8bd06c1a5144c120bc563e5ec6d770dd0e7\"\n },\n \"docs/mars-text.md\": {\n \"mode\": 420,\n \"sha256\": \"2b6c7d2eecbb684160e7565d1d7224eb0d2f7e9a41f4d807095a182ea605dcf1\"\n },\n \"docs/mars-vfs.md\": {\n \"mode\": 420,\n \"sha256\": \"1508c2a070d56f4fdabac3c2ef1fd08d3f93d7a3045d59158340ee22a6ff1b62\"\n },\n \"docs/shim-trace.md\": {\n \"mode\": 420,\n \"sha256\": \"8a059c1ba761b366449c2db8ef248656da917050ed28855c6d812ecf91672fa5\"\n },\n \"include/generated/sots_addresses.h\": {\n \"mode\": 420,\n \"sha256\": \"fc34ac4ee8cc7fea91c447b5715841dc6d3afe36f9aff04e88b6c29b5b64f448\"\n },\n \"include/generated/sots_stream_schema.h\": {\n \"mode\": 420,\n \"sha256\": \"13446ce54d60a0b29adcefb51aeb5127a0a3ca8de2bd1665e4778ba5354bff8c\"\n },\n \"opencode.json\": {\n \"mode\": 420,\n \"sha256\": \"9af560c2a49945e964beb689649c13775e2aaaf691af270a565d6c6826f76c15\"\n },\n \"src/app/CMakeLists.txt\": {\n \"mode\": 420,\n \"sha256\": \"142999eded2ff494745ce550af76a8f8caf0269ad22d6d5650e7a79c19d22717\"\n },\n \"src/app/alliance.cpp\": {\n \"mode\": 420,\n \"sha256\": \"37d6e57f7ce82a69a595cf474e7be7a544efef210f960e9cdfeab6168826bac9\"\n },\n \"src/app/alliance.h\": {\n \"mode\": 420,\n \"sha256\": \"08fa8dc96286c7cb15a90a987fa22b17e195522e642ab8303b659ca58739eafd\"\n },\n \"src/app/command_replay.cpp\": {\n \"mode\": 420,\n \"sha256\": \"739059930cd3a5f1d988522ff50c60d8657664a66c9fe19b019833f417b55824\"\n },\n \"src/app/command_replay.h\": {\n \"mode\": 420,\n \"sha256\": \"956429a742554cada2124de49c6955e27b0e5d68db87dcc95b22c75ec7bd93c2\"\n },\n \"src/app/construction_phase.cpp\": {\n \"mode\": 420,\n \"sha256\": \"025cd0ea1a7badd567f7f1cd59330b1e01149b5c5094575fbd438683658bb0df\"\n },\n \"src/app/construction_phase.h\": {\n \"mode\": 420,\n \"sha256\": \"a4d39994096683a1144eb20282b205cf71e2045873cc15b53bdac214ab1e9a5e\"\n },\n \"src/app/event_phase.cpp\": {\n \"mode\": 420,\n \"sha256\": \"80717fa7c7f108004d5250f12b6c994752a1a55d7f32c7d3ebf29f2869118c90\"\n },\n \"src/app/event_phase.h\": {\n \"mode\": 420,\n \"sha256\": \"54077268fe4705270dc06bdc46a6fd9384fb5e0d36da19e55ea149b478d8cf34\"\n },\n \"src/app/growth_phase.cpp\": {\n \"mode\": 420,\n \"sha256\": \"5924d2641fc98d902b56a3e6417d7a57d70c1564718951b098e7d14376ebc4e3\"\n },\n \"src/app/growth_phase.h\": {\n \"mode\": 420,\n \"sha256\": \"8222ef811abff161c8f891a331a52e527de54fbf468949d1e0e188adc473ae3b\"\n },\n \"src/app/main.cpp\": {\n \"mode\": 420,\n \"sha256\": \"adfd7dd177439bfd57509532bcf0f37779281ae9309daa93efe1ada3ef3f57a7\"\n },\n \"src/app/observed_phase.cpp\": {\n \"mode\": 420,\n \"sha256\": \"31fb99678d60de6901b4bb1b251abe2421453264653cf5f7bd297a376c2b23f3\"\n },\n \"src/app/observed_phase.h\": {\n \"mode\": 420,\n \"sha256\": \"f88fc22a5cb21a43e196d7fae09446126635d3284e6b398bca234f265234b693\"\n },\n \"src/app/phase_catalog.cpp\": {\n \"mode\": 420,\n \"sha256\": \"e3da16e6d499b7836953251d940ce171792ada208156ca583277298f305fc316\"\n },\n \"src/app/phase_catalog.h\": {\n \"mode\": 420,\n \"sha256\": \"da6fff506002079d8277358d0095981dc260449dc19677a533ef25ab709aed87\"\n },\n \"src/app/report.cpp\": {\n \"mode\": 420,\n \"sha256\": \"da3feb6043f6e68cb9ea763f7242ac153a5944c59f448284faf34c64ad6b9228\"\n },\n \"src/app/report.h\": {\n \"mode\": 420,\n \"sha256\": \"0495d164458ddb7187ce3105f82cee06cf9cf6c5b73ed8cb6e434e1d2e0f8481\"\n },\n \"src/app/script_phase.cpp\": {\n \"mode\": 420,\n \"sha256\": \"61eeeeb7eac3145cee938ccfc564b231b6968ce7926fb9599c136134f0d5ea91\"\n },\n \"src/app/script_phase.h\": {\n \"mode\": 420,\n \"sha256\": \"e52006ff939fa945870fafdc2412ba67e3d5e1cc2aa51c0ca0a884ce630aa1b7\"\n },\n \"src/app/trade_raid.cpp\": {\n \"mode\": 420,\n \"sha256\": \"07d6bb904e655bb644ff6df2e417adb448487bb67acb62240ec5ecc978eabebf\"\n },\n \"src/app/trade_raid.h\": {\n \"mode\": 420,\n \"sha256\": \"10e0b1460eb7810f1fcd61e67d47333373f06bdacf5a11372958a84a91084e52\"\n },\n \"src/app/treaty.cpp\": {\n \"mode\": 420,\n \"sha256\": \"317463fc0e2a6ca7eaa4e2f096c3821655a4623de4085af44d951ed500837575\"\n },\n \"src/app/treaty.h\": {\n \"mode\": 420,\n \"sha256\": \"836395a85868cbd6b7fda8f1d304128fd7cc6952aff37003e8e119a5ce0251f9\"\n },\n \"src/app/turn.cpp\": {\n \"mode\": 420,\n \"sha256\": \"a626ddf80a340de50b70f09bf91c0180d255c533e65edce1532d807fcf5109b4\"\n },\n \"src/app/turn.h\": {\n \"mode\": 420,\n \"sha256\": \"85c87aab5c5b5ad5a6a34cc9db710b1cf77dec1a7145ba1e0b5e17fff9a6a237\"\n },\n \"src/app/turn_record.cpp\": {\n \"mode\": 420,\n \"sha256\": \"e1eb0b253e964ab4f8be1333f81e193ac64109544da384cbdf21858cbf931e4d\"\n },\n \"src/app/turn_record.h\": {\n \"mode\": 420,\n \"sha256\": \"78d8d2948bd04bff5e7d2c55955b726f1cd7552a765e608e390209e03856f76d\"\n },\n \"src/app/visibility_phase.cpp\": {\n \"mode\": 420,\n \"sha256\": \"34d9df699af3e57823ec8457c442408da854028f9b95db5820171caad0823131\"\n },\n \"src/app/visibility_phase.h\": {\n \"mode\": 420,\n \"sha256\": \"60db50f5b98c5edafc86a33f982a7773acc291c1a18f9cf23323e53ebadcde27\"\n },\n \"src/game/ai/CMakeLists.txt\": {\n \"mode\": 420,\n \"sha256\": \"f51509a2699f02ecab9faa1f75feaa38c299e6bbbe08bfbe5e8e86722037f6eb\"\n },\n \"src/game/ai/agent.cpp\": {\n \"mode\": 420,\n \"sha256\": \"e1bbddc3deb797d62ae9c2b24bc811ec9379699992dd838694bd5eadc73feef7\"\n },\n \"src/game/ai/agent.h\": {\n \"mode\": 420,\n \"sha256\": \"48aa26f32d52a3f8f4e37ed5c6986b1e87a8fe1e780d5314514eb5c75b8bc244\"\n },\n \"src/game/ai/apply_order.cpp\": {\n \"mode\": 420,\n \"sha256\": \"122ffea1090382fd01bc505fd30c59557dfec2c9846609d00da6e80109da2253\"\n },\n \"src/game/ai/apply_order.h\": {\n \"mode\": 420,\n \"sha256\": \"a3b7a1ca26243ba0fdd801b78978175db6f76e297a72876fa0a35e12f38e09b3\"\n },\n \"src/game/ai/command_capture.cpp\": {\n \"mode\": 420,\n \"sha256\": \"cb9a1d37af9f66e78d368e03aeabec01e4d48f76aaa30348a51f4c70a915e4ec\"\n },\n \"src/game/ai/command_capture.h\": {\n \"mode\": 420,\n \"sha256\": \"921599e5b2aa8b773db00134618efde687c7d9ba739abd787ec7666f4cfeb78f\"\n },\n \"src/game/ai/orders.cpp\": {\n \"mode\": 420,\n \"sha256\": \"1b775eb1a030bc6e81e5b7702cbf8ad56288860276e8a0475da66f7367542640\"\n },\n \"src/game/ai/orders.h\": {\n \"mode\": 420,\n \"sha256\": \"c2a3b8fe1a7c46a1c1104bc87be8696d9f0782cc304d27cb96d0ec6b182f12ae\"\n },\n \"src/game/ai/tasks.cpp\": {\n \"mode\": 420,\n \"sha256\": \"b05878ccd94c375aac8723c8ea9499f77b98fb94acc5a75a15fa1948dbe83c76\"\n },\n \"src/game/ai/tasks.h\": {\n \"mode\": 420,\n \"sha256\": \"b1de4f89c1679ccfdeaa8b852cb2ce407b71dcd1bffacf97df389a69f6ae3a5d\"\n },\n \"src/game/ai/turn_order.cpp\": {\n \"mode\": 420,\n \"sha256\": \"858b12c51c4509e16a22a6c080d1c6b47bd23d2b8a11f84a48d34f24c4635f22\"\n },\n \"src/game/ai/turn_order.h\": {\n \"mode\": 420,\n \"sha256\": \"3e76710928fc2df52fd8312abfb8f23a2ce162f8e0856f46672a4f46b5b4384f\"\n },\n \"src/game/combat/CMakeLists.txt\": {\n \"mode\": 420,\n \"sha256\": \"4b3a05c45360e312d6c1d96c1f05a60437d19d2046257835e0d6c70ecc4ce115\"\n },\n \"src/game/combat/retreat.cpp\": {\n \"mode\": 420,\n \"sha256\": \"eede86a4d25289dfc9132d5776b11114a109179e5aa10f2b985035e5b22d7a1f\"\n },\n \"src/game/combat/retreat.h\": {\n \"mode\": 420,\n \"sha256\": \"5fc3e002a5f1944f29c74f862ff942b894e40e88afafd52358373ada36644d7d\"\n },\n \"src/game/config/CMakeLists.txt\": {\n \"mode\": 420,\n \"sha256\": \"c746021654505c92be333cefb9df994431679d40d8d654b937feb950684830f7\"\n },\n \"src/game/config/config_loader.cpp\": {\n \"mode\": 420,\n \"sha256\": \"d903ba06747e5b7d66400d03ee1f0a9896bf4268bb200dec0b5c8599dbd3d3a1\"\n },\n \"src/game/config/config_loader.h\": {\n \"mode\": 420,\n \"sha256\": \"fda71dee1a4e2b896760e9ac344768e176ea4f0a08609c7d651033a1ee698085\"\n },\n \"src/game/config/manifest_loader.cpp\": {\n \"mode\": 420,\n \"sha256\": \"dbe33dc5ae03db18f3b2c01b48cc1fced10f2cca599270c0a028321a7d7dd7c6\"\n },\n \"src/game/config/manifest_loader.h\": {\n \"mode\": 420,\n \"sha256\": \"68e508b9e6d1222d980b22ae826b127693fdf0821b6539ed9e62a8ec031aa5b5\"\n },\n \"src/game/config/msvc_sort.h\": {\n \"mode\": 420,\n \"sha256\": \"17fcb13bb49a634c80be38299617c6c16fd8addedfa88c53d67242c90b811716\"\n },\n \"src/game/data/CMakeLists.txt\": {\n \"mode\": 420,\n \"sha256\": \"677ba0dd0ebb8176f4e7c41d5550f2ccedd56d49e7e4acb1eb0a7970e9e98a51\"\n },\n \"src/game/data/block.cpp\": {\n \"mode\": 420,\n \"sha256\": \"f61312708c715ce525ed1a01e71f1446d31fc96ca1cc51f5bd863cac51702200\"\n },\n \"src/game/data/block.h\": {\n \"mode\": 420,\n \"sha256\": \"f14155dfca5fd270ad6b4d462458aa8cd5c5edf5e19da4df492ee2907e99eccc\"\n },\n \"src/game/data/catalog.cpp\": {\n \"mode\": 420,\n \"sha256\": \"7799ad3b31d43236cacbc51c3ab086265927f98b1346005a8adfed2796178ebc\"\n },\n \"src/game/data/catalog.h\": {\n \"mode\": 420,\n \"sha256\": \"80223146bcdbf4808776f974df7e5f46b120a021979a22f50b5ce2d74ec16d6e\"\n },\n \"src/game/data/common.cpp\": {\n \"mode\": 420,\n \"sha256\": \"e58ba046844be11c61f7f7e501829b48b4f16e7c0ab78f10fcf9189c133cf040\"\n },\n \"src/game/data/common.h\": {\n \"mode\": 420,\n \"sha256\": \"d1ac8375c1be133a98a383e01598f393f194e1bd9790d1c1230bc6121a45a187\"\n },\n \"src/game/data/fields.h\": {\n \"mode\": 420,\n \"sha256\": \"4209df368ad776b3c24350246acf47ad874fcbbe292fb16f9ca7dacaef2f08fb\"\n },\n \"src/game/data/shipsection.cpp\": {\n \"mode\": 420,\n \"sha256\": \"82d5ba9be2a446e50934b0b9a03b16839bd3acd1a967d9441180a1baaa271264\"\n },\n \"src/game/data/shipsection.h\": {\n \"mode\": 420,\n \"sha256\": \"bcf100f83691226c4993dd7866b67a0b48d9b4bc6841463fbf07f0f26bf9dca0\"\n },\n \"src/game/data/strings.cpp\": {\n \"mode\": 420,\n \"sha256\": \"6d983d3a4cb4284215301409587136fb765a5e6a4c9f4b988e01d710c0815f59\"\n },\n \"src/game/data/strings.h\": {\n \"mode\": 420,\n \"sha256\": \"fb292bd472ed68eb4a5e93484f3f92d8a0ae8661e6a61ca4b417ab889c508055\"\n },\n \"src/game/data/techtree.cpp\": {\n \"mode\": 420,\n \"sha256\": \"2ac6e39faeef808c97375f3b8a3ee219fcab8cc09921f0ed8d82eef7374eb9ea\"\n },\n \"src/game/data/techtree.h\": {\n \"mode\": 420,\n \"sha256\": \"504946c255405ab28d20d0ed6c095b3b63f0e6865afe0e8bb0707e607c363007\"\n },\n \"src/game/data/turrets.cpp\": {\n \"mode\": 420,\n \"sha256\": \"ce7db50ef10825e168fee2bf57c4b6038dd1a356be7ada9ed6a4f6a4f31b07a4\"\n },\n \"src/game/data/turrets.h\": {\n \"mode\": 420,\n \"sha256\": \"f01603ad32b0ffdf891c88cc54c39a725c6a436f8dda79ac23e7505e59853c64\"\n },\n \"src/game/data/weapon.cpp\": {\n \"mode\": 420,\n \"sha256\": \"accb5aab2081babb26443cd257f292909e19440c40346e098144148922f5d3f6\"\n },\n \"src/game/data/weapon.h\": {\n \"mode\": 420,\n \"sha256\": \"63aeb670ae7b8a1fd6daa35ed60ebe41a87f62a6ec2a12f44b13f9052c55b009\"\n },\n \"src/game/design/CMakeLists.txt\": {\n \"mode\": 420,\n \"sha256\": \"42692f7917d99fb5b9e392c2d0f1d908b2bc5c61fc2e5687fddbd665dafe0bef\"\n },\n \"src/game/design/defaults.cpp\": {\n \"mode\": 420,\n \"sha256\": \"8efa0b79646525375739a1acfe77e75d5ae6b669d1ecaa01f49f3f5183caf528\"\n },\n \"src/game/design/defaults.h\": {\n \"mode\": 420,\n \"sha256\": \"20af056628f362a4d5ad7ba6277135697718197ec6844ae0ae85bf06d4cd818b\"\n },\n \"src/game/design/design.cpp\": {\n \"mode\": 420,\n \"sha256\": \"e166281c52a6d92fed8810b38bd736cbd2a324f15d290a39a539d01ff35ead20\"\n },\n \"src/game/design/design.h\": {\n \"mode\": 420,\n \"sha256\": \"7e936c78ca10c3a49470da67f1659cf4ee323d14d50b5b2c1ada08edfa8f6997\"\n },\n \"src/game/design/hull.cpp\": {\n \"mode\": 420,\n \"sha256\": \"554b0ef6955ac230c7eca29ea2d94d60b5fbc91f34d9ff457091577c8602268a\"\n },\n \"src/game/design/hull.h\": {\n \"mode\": 420,\n \"sha256\": \"997018e59c9d78ee1da7e7cb9561b94b76befacbe348a4ce3301c5f22b582461\"\n },\n \"src/game/design/rules.cpp\": {\n \"mode\": 420,\n \"sha256\": \"a623984f9ab40c354320051fec00bab2c7e3728c2c90082b3b8051294b906319\"\n },\n \"src/game/design/rules.h\": {\n \"mode\": 420,\n \"sha256\": \"70a8a42fe82e9805cbb957717688ab9f9eb3438226f6e0d696ef5f7a51529229\"\n },\n \"src/game/design/stats.cpp\": {\n \"mode\": 420,\n \"sha256\": \"c05f420a00026289be8693c0d80bbd2354ce354a91a78459cfc8e70467326c54\"\n },\n \"src/game/design/stats.h\": {\n \"mode\": 420,\n \"sha256\": \"ba0a5d3bcc98f5c3e64579d42da70bfdf563773ce2fe1e6bfa2b36b14c453fe5\"\n },\n \"src/game/effects/CMakeLists.txt\": {\n \"mode\": 420,\n \"sha256\": \"2e20f138f98bc69653c8360a26f99f3f43f35beedea5e90dfd7e9721e7550f89\"\n },\n \"src/game/effects/tech_effects.cpp\": {\n \"mode\": 420,\n \"sha256\": \"40358c2af37543ca3ab09b4d0433cdb4b0d2d212b45f648739cc86e979501604\"\n },\n \"src/game/effects/tech_effects.h\": {\n \"mode\": 420,\n \"sha256\": \"ef70addf2caf1e3abf36ac9d878a8db37d2adbac370957f5b6a0b5825564a0d6\"\n },\n \"src/game/effects/tech_id.cpp\": {\n \"mode\": 420,\n \"sha256\": \"11cd652e81a52e86d72541a5c3de77bb50de3d31226272e0d1856e5a15b7f9a6\"\n },\n \"src/game/effects/tech_id.h\": {\n \"mode\": 420,\n \"sha256\": \"f37752250c80c9c75ef8e144e4646dc1290a2cc8ce72d9a37949c6408996df86\"\n },\n \"src/game/events/CMakeLists.txt\": {\n \"mode\": 420,\n \"sha256\": \"9b1f14a3801a991ba065e0e39ae2e3fa3966018e8a98fcceeddeaca3909328e2\"\n },\n \"src/game/events/event_log.cpp\": {\n \"mode\": 420,\n \"sha256\": \"3b131879ec5e81cd1ba2bb0cbdfa6e05775ed77684f4ed7a8f5cfae87da1e7b1\"\n },\n \"src/game/events/event_log.h\": {\n \"mode\": 420,\n \"sha256\": \"2ff415b1120ca3f28421006a566280fb977027cfa3f209bdba0986350376a953\"\n },\n \"src/game/events/research_events.cpp\": {\n \"mode\": 420,\n \"sha256\": \"9520b20eba2a2b4bd5925f13b420d526fc610d06aae7ffad314e3002c4f5a253\"\n },\n \"src/game/events/research_events.h\": {\n \"mode\": 420,\n \"sha256\": \"b87340c6b14e9de97e5bc0c5a4cbd74e54bab2831c60edf88c0e42ff5218ea22\"\n },\n \"src/game/nav/CMakeLists.txt\": {\n \"mode\": 420,\n \"sha256\": \"79cc0ba25c6d49f7784663ace033d01ab3d85a5d8015fe2f466f8f1a3065983a\"\n },\n \"src/game/nav/pathplan.cpp\": {\n \"mode\": 420,\n \"sha256\": \"04cfe8fca5be565f5443c8f1402eb0072221dbd63f70855e35b3eeea752f1775\"\n },\n \"src/game/nav/pathplan.h\": {\n \"mode\": 420,\n \"sha256\": \"28b51f737b458679888e555d985b9e8d41adf8ba91fa0980b5e83668758c86e7\"\n },\n \"src/game/sim/CMakeLists.txt\": {\n \"mode\": 420,\n \"sha256\": \"4b3085116f88c903a137abef6806891f7b7245dcb031153df7a5465dd2521116\"\n },\n \"src/game/sim/colony.cpp\": {\n \"mode\": 420,\n \"sha256\": \"e0f0bf15d87b6ac2e92053cbfe0869c0dbf9465d90a9bae5456bb46883423b77\"\n },\n \"src/game/sim/colony.h\": {\n \"mode\": 420,\n \"sha256\": \"357dce21440140a6cf836a3c12175ebb5bb6706c37d5ecd315a4ee4937725b47\"\n },\n \"src/game/sim/construction.cpp\": {\n \"mode\": 420,\n \"sha256\": \"8cf4792f487162ca3599f16f0e92d73b4c9549046044548c5aecf202dd564130\"\n },\n \"src/game/sim/construction.h\": {\n \"mode\": 420,\n \"sha256\": \"a7f201101ad704f1994f809259ad60f780760fa36174d99a1ccd9299447f5460\"\n },\n \"src/game/sim/economy.cpp\": {\n \"mode\": 420,\n \"sha256\": \"1e0b17b589496a6139e8ca10fe20553050be7c965a02daf8b520dd5020412d89\"\n },\n \"src/game/sim/economy.h\": {\n \"mode\": 420,\n \"sha256\": \"6f3e33e803bb49367d4cee3c8ef6186f04b79e7cf901047fc48d933108ab6d2a\"\n },\n \"src/game/sim/movement.cpp\": {\n \"mode\": 420,\n \"sha256\": \"80c64b2148304b84683cf3860ced1354f5c29c923bbc50cc5001030dd85c2cd2\"\n },\n \"src/game/sim/movement.h\": {\n \"mode\": 420,\n \"sha256\": \"9a6b2b4960428634d8004cd5694ed6a7a10ab28fd9c0e2a9824ede3e201e9441\"\n },\n \"src/game/sim/numeric.h\": {\n \"mode\": 420,\n \"sha256\": \"88f715192ea322ace4eea13ab5ae55f7f41600262025208e468b5259220522c2\"\n },\n \"src/game/sim/observed.cpp\": {\n \"mode\": 420,\n \"sha256\": \"43d29a9fe1195dcc0b7e6101ea05bfd076f03636f9f68de473539c83db0ddd22\"\n },\n \"src/game/sim/observed.h\": {\n \"mode\": 420,\n \"sha256\": \"0224b5bf341f30ff0e98d910547261b6732bdc0c5339b520e26fc51939c1269f\"\n },\n \"src/game/sim/player_turn.cpp\": {\n \"mode\": 420,\n \"sha256\": \"beb1b2ed434df3727e676ac56e751beff87fa98e4a42e4657cc54d41025773a2\"\n },\n \"src/game/sim/player_turn.h\": {\n \"mode\": 420,\n \"sha256\": \"f24f8f5e161486575cd341c2f5bfed46fa6983263edcf2320e9c24860b4be51a\"\n },\n \"src/game/sim/research.cpp\": {\n \"mode\": 420,\n \"sha256\": \"95f2d325544ee018ec8d0f945e91b4172f6ba406f95e19f86c4fb9aac6b22a89\"\n },\n \"src/game/sim/research.h\": {\n \"mode\": 420,\n \"sha256\": \"e27a311e977afb2e01242938dc8d928e9a67d1f761965e191cf907e05c1c86e9\"\n },\n \"src/game/sim/rng.h\": {\n \"mode\": 420,\n \"sha256\": \"f7e5bbced3dbd37deb49a00b52d05f7c751501d654dabd645ecff7447355929c\"\n },\n \"src/game/sim/scriptobjects.cpp\": {\n \"mode\": 420,\n \"sha256\": \"a4f9a1b49e4ba22a88726efbbea2f355b40a3c006734d9150d509a344720a4d2\"\n },\n \"src/game/sim/scriptobjects.h\": {\n \"mode\": 420,\n \"sha256\": \"210d0eb51780df70a9bca133664429589c03ea33e4524e2c182801d4b4a5c74b\"\n },\n \"src/game/sim/species.h\": {\n \"mode\": 420,\n \"sha256\": \"83b44c0600b99c5acb72a3484bb0708cfba765cdf594aede596a3c47d5ee6298\"\n },\n \"src/game/sim/techgraph.cpp\": {\n \"mode\": 420,\n \"sha256\": \"81f8f1120eb1fa4a77752bd2e0917df3dd76372461416526ae510bd697944ef8\"\n },\n \"src/game/sim/techgraph.h\": {\n \"mode\": 420,\n \"sha256\": \"b2fc90666080a6b7f27dc9290eef17774d57742c2a1f9e1f77d94c7fa5689f6e\"\n },\n \"src/game/sim/tuning.h\": {\n \"mode\": 420,\n \"sha256\": \"4acfad4098de951cc3a94ca25a2f200e96caba1836bf7441de5a2b458c022194\"\n },\n \"src/game/sim/visibility.cpp\": {\n \"mode\": 420,\n \"sha256\": \"25f86a34f9a98d2439672283a446ba1804973dae3f6d9aa3692342b05f3a3ac0\"\n },\n \"src/game/sim/visibility.h\": {\n \"mode\": 420,\n \"sha256\": \"783896489a2a9ec8bce617b141bfb631e8ef92f958be7b5c2ca64fd75774471f\"\n },\n \"src/mars/parse/CMakeLists.txt\": {\n \"mode\": 420,\n \"sha256\": \"76c290b786a3e73387ec8c574fd5a0dbeb6e629adbe970426314f16497f59fa9\"\n },\n \"src/mars/parse/blocks.cpp\": {\n \"mode\": 420,\n \"sha256\": \"e60baa8127b21cf6eb6c8e2aa02c6a72c6403dbc29e8480ff658bf184266675b\"\n },\n \"src/mars/parse/blocks.h\": {\n \"mode\": 420,\n \"sha256\": \"1e8b76919a584d1d7fb01c5ff5e3a7173e8456eca892d61f0c6b7bb8f02f33b1\"\n },\n \"src/mars/parse/effect.cpp\": {\n \"mode\": 420,\n \"sha256\": \"beb76a841a3d42dbc157413384ff1a0312a7068d6b22020eadcee2e1cbbc81f9\"\n },\n \"src/mars/parse/effect.h\": {\n \"mode\": 420,\n \"sha256\": \"aaa5c83f2d8eef24667bf05d0f71b2a346f2fce09dc9a45d7a5197c894922e44\"\n },\n \"src/mars/parse/result.h\": {\n \"mode\": 420,\n \"sha256\": \"58cff456e353550abcd0f52e031d9d70f2b7a975f4762cfccc64eb6bc748dbd9\"\n },\n \"src/mars/parse/script.h\": {\n \"mode\": 420,\n \"sha256\": \"69a493268c47a08672694489a51c3ff0a7f9aa870e5ae5a93d47ba033cf21ad3\"\n },\n \"src/mars/parse/value.cpp\": {\n \"mode\": 420,\n \"sha256\": \"712133e4d725649f5461e6a46bac6842b0751ac3fb7e1c468f826638ec58f623\"\n },\n \"src/mars/parse/value.h\": {\n \"mode\": 420,\n \"sha256\": \"60d692648dab7e3e216c8d9e6ef212592ba1df1a98260b1b4599354742947b38\"\n },\n \"src/mars/rng/CMakeLists.txt\": {\n \"mode\": 420,\n \"sha256\": \"dceb4bc0fb35c95a12ed9aa36380e79aa75641b15ecc06e4289d39824087e2dc\"\n },\n \"src/mars/rng/mt19937.cpp\": {\n \"mode\": 420,\n \"sha256\": \"0c60775e9437b8eaad49f67a96001c81947c8d9e6d2472e28b2b490515bac95b\"\n },\n \"src/mars/rng/mt19937.h\": {\n \"mode\": 420,\n \"sha256\": \"300836ab26fd1a4d913b395f08770bb2c248029ef1b80ecbf0c4d886adca2b8e\"\n },\n \"src/mars/stream/CMakeLists.txt\": {\n \"mode\": 420,\n \"sha256\": \"95ffbb0c519e55b7423ab048a3019e295b7ef3a3e9506044ef2e68569df9601a\"\n },\n \"src/mars/stream/archive.h\": {\n \"mode\": 420,\n \"sha256\": \"84d9ae2bb3d6f444b3933b3816cafd12caee8619d2219f19cd10d32cfad01d2e\"\n },\n \"src/mars/stream/bytes.h\": {\n \"mode\": 420,\n \"sha256\": \"9f5869952c9d6b925db32995a417ba292a0c1a672fc3850400150afb8163b3f1\"\n },\n \"src/mars/stream/dump.cpp\": {\n \"mode\": 420,\n \"sha256\": \"1b5bba86b2f85b1718276f8db557601320ab8a165d5fbfe93e51219cca5a1c16\"\n },\n \"src/mars/stream/dump.h\": {\n \"mode\": 420,\n \"sha256\": \"a69af300ae7083fb0a5362edbe7eecd5273c8807884aff9fbedd7ae606c7fc4f\"\n },\n \"src/mars/stream/gzip.cpp\": {\n \"mode\": 420,\n \"sha256\": \"20d71fd50bd637f78e7ebb5217bc6607ebc257535cc4720e640e4badb72f1644\"\n },\n \"src/mars/stream/gzip.h\": {\n \"mode\": 420,\n \"sha256\": \"6bce52c615eb120999adb1a6f7f06baa813a033c28e02e6d79ce77f5b7a929c9\"\n },\n \"src/mars/stream/node.h\": {\n \"mode\": 420,\n \"sha256\": \"eb43054c8592db107557979c7fc8612dc0646ba5d62f154b9b7f96a37ba2e860\"\n },\n \"src/mars/stream/probe.h\": {\n \"mode\": 420,\n \"sha256\": \"6411d0976d1e785e8c32af6ecfe1a797c0a9aa02314e5e42fae3ed7b3449ae13\"\n },\n \"src/mars/stream/reader.cpp\": {\n \"mode\": 420,\n \"sha256\": \"90f19cbcdb0fc50795895ea1eff09cd6c0ab3069095c49b276f3894e3d6bcbb3\"\n },\n \"src/mars/stream/reader.h\": {\n \"mode\": 420,\n \"sha256\": \"900508d97be1cbe566d77f2c91755d3db387535cd9574e41704b6d940daa1ff4\"\n },\n \"src/mars/stream/save.cpp\": {\n \"mode\": 420,\n \"sha256\": \"6db367b3ea570a4d0ee831160e3f44cef380f58de163b9d9205ca7449e51e049\"\n },\n \"src/mars/stream/save.h\": {\n \"mode\": 420,\n \"sha256\": \"b3a411600d98b42e9014e1fc3cbc3eac5f32f4393e9f72036d3d840c802bb469\"\n },\n \"src/mars/stream/savedump_main.cpp\": {\n \"mode\": 420,\n \"sha256\": \"8dc687f009d9f455e9bfa4019f03df72e058cebbb3e9ae5bcbb308285470208c\"\n },\n \"src/mars/stream/schema.h\": {\n \"mode\": 420,\n \"sha256\": \"b1cd64bc43076a3e5893239bd2eb5c216e7293ee541322ef74fb106928183a05\"\n },\n \"src/mars/stream/shapes.h\": {\n \"mode\": 420,\n \"sha256\": \"45ee379ff8100b6bc27427a2580d7aae19ff3d5d0aa27f682d156ae6a92d0a6d\"\n },\n \"src/mars/stream/writer.cpp\": {\n \"mode\": 420,\n \"sha256\": \"54804b06266e34793f5294f9a96d2939d641915a0f60fc4e3b4170bfcea6e083\"\n },\n \"src/mars/stream/writer.h\": {\n \"mode\": 420,\n \"sha256\": \"921cd44ea30e0b9944825b1d2caafc46edc8f2c23506c807050ed9208a397340\"\n },\n \"src/mars/text/CMakeLists.txt\": {\n \"mode\": 420,\n \"sha256\": \"dccb93b37c21c9b3c3b35a50ca8de55c9f00df2a9e0a33b6c36d659a75455436\"\n },\n \"src/mars/text/csv.cpp\": {\n \"mode\": 420,\n \"sha256\": \"b190e12b86a3f416a72c110caf9e0b2d98cdd33851d2fa48b55a8d7ea39279af\"\n },\n \"src/mars/text/csv.h\": {\n \"mode\": 420,\n \"sha256\": \"3b7ec6d0884e95bfab869c253eddc30a802602bd1f230cc69461cb9cf3c17917\"\n },\n \"src/mars/text/flat_kv.cpp\": {\n \"mode\": 420,\n \"sha256\": \"b98d3b7345489f0b149e56cd15436fd6199e4cf00d7ce3f8b8b31fcdecb90e47\"\n },\n \"src/mars/text/flat_kv.h\": {\n \"mode\": 420,\n \"sha256\": \"d6765cd42cad46597b6e36e9d08baf6819f7796442293043d5ff686e2376d292\"\n },\n \"src/mars/text/lines.h\": {\n \"mode\": 420,\n \"sha256\": \"b9a16ccf0dc7bbf36100e0b66c80bcb818590b161f820d3c67d55bccff1c2c65\"\n },\n \"src/mars/text/manifest.cpp\": {\n \"mode\": 420,\n \"sha256\": \"4da1bb615902ec61883e561f5dd375d89442f7b9046fbc864f6308f27921087e\"\n },\n \"src/mars/text/manifest.h\": {\n \"mode\": 420,\n \"sha256\": \"dd7351a7a6a144e97f3a3b6a25d22d1518a099e95deadb8965cedb201601e102\"\n },\n \"src/mars/text/result.h\": {\n \"mode\": 420,\n \"sha256\": \"7f817033811dff6fcef1d5b76f88922cb0392afb4359549876cd017a14755606\"\n },\n \"src/mars/text/value.cpp\": {\n \"mode\": 420,\n \"sha256\": \"94b433d78f3211e1a4dd9eb8a0a00b514cbeaf63a03e738146c56dbbfe221479\"\n },\n \"src/mars/text/value.h\": {\n \"mode\": 420,\n \"sha256\": \"d3b5c70af2f339ad27b43c38353fc7a2da83388854b02000fa1b6d9a4e1dfc07\"\n },\n \"src/mars/vfs/CMakeLists.txt\": {\n \"mode\": 420,\n \"sha256\": \"630d5d4707ef3c0f24a414815cc23158853fe9d5aef429d6619abc1c433b3786\"\n },\n \"src/mars/vfs/path.cpp\": {\n \"mode\": 420,\n \"sha256\": \"e1f3bbab1f90b0132aec24d8c5997dafab69ec72f01f2dd2fa63c91f83ef7aeb\"\n },\n \"src/mars/vfs/path.h\": {\n \"mode\": 420,\n \"sha256\": \"043091008f2cab7c88185de63e7aae63ad9b0e384109f5b6fd8c31666c4e2033\"\n },\n \"src/mars/vfs/result.h\": {\n \"mode\": 420,\n \"sha256\": \"19115bf1c5b3bf01da078a49209230053043610b342b01cdaaed126e2d3ea748\"\n },\n \"src/mars/vfs/vfs.cpp\": {\n \"mode\": 420,\n \"sha256\": \"ab8272cd14b4b55e7af13f5383d6106f0b1caabdde57e69c1d0fb5b434d31cba\"\n },\n \"src/mars/vfs/vfs.h\": {\n \"mode\": 420,\n \"sha256\": \"2484231baa64ede6fc35eb0f49e1fd7a3373d5c559f016d5adfb9fc433619d90\"\n },\n \"src/mars/vfs/zip_archive.cpp\": {\n \"mode\": 420,\n \"sha256\": \"d66e70300539bd42bcf193683df7c34d2b0b03146fd79f0a180385ead1559e87\"\n },\n \"src/mars/vfs/zip_archive.h\": {\n \"mode\": 420,\n \"sha256\": \"0ffbd90f7919741e63e86e14d0f87d247bc2cd16d2db54771071553249ad935d\"\n },\n \"src/shim/binkw32.def\": {\n \"mode\": 420,\n \"sha256\": \"fb500fd9f9ecbff44123b89fc24cec72e91fec4c4430ce12a69efc06b20de235\"\n },\n \"src/shim/fpu_force.cpp\": {\n \"mode\": 420,\n \"sha256\": \"c4b4e41a7ef81139c652ba8164ed8bb0d809b42182f0d0f048b9a9e63bebe59d\"\n },\n \"src/shim/fpu_force.h\": {\n \"mode\": 420,\n \"sha256\": \"75bac23bc45510961f6b10d21c47e72d8dc0d3971a3ab30b795cad1d25332c06\"\n },\n \"src/shim/hooks/ai_orders.cpp\": {\n \"mode\": 420,\n \"sha256\": \"091ed885012fffa0e02b83c53e547483dfdeaf1094933726e0291fff0a99e434\"\n },\n \"src/shim/hooks/ai_orders.h\": {\n \"mode\": 420,\n \"sha256\": \"6e775b3f946f2eaf10dc2e236a3f3c7b9311ed4e82cd4be1ca30e6c62d49d053\"\n },\n \"src/shim/hooks/ai_rng.cpp\": {\n \"mode\": 420,\n \"sha256\": \"b8fec711cb620561c8f4854e72c3fb0d73013c9b1cd69fa63fc05dd3d2f60289\"\n },\n \"src/shim/hooks/ai_rng.h\": {\n \"mode\": 420,\n \"sha256\": \"1306f4d3c8071121b06c75232efa5c50b155c1f8752fcae852ee8e5497ce7d08\"\n },\n \"src/shim/hooks/ai_visit.cpp\": {\n \"mode\": 420,\n \"sha256\": \"cd69811074820810edb1ed3779ca08bd99fea620b162d80a0395d35e8db7fc31\"\n },\n \"src/shim/hooks/ai_visit.h\": {\n \"mode\": 420,\n \"sha256\": \"8315b433319f680e80a154409124355ad24842e9a0cdef5c8aa6d12422971189\"\n },\n \"src/shim/hooks/budget_inputs.cpp\": {\n \"mode\": 420,\n \"sha256\": \"fa50fb74a3874886cf8aeb4012b9fd9a5a43ce38ab3c543ee425002ca32fd46b\"\n },\n \"src/shim/hooks/budget_inputs.h\": {\n \"mode\": 420,\n \"sha256\": \"56e2f95930ff420820a3464162fde74ac0a3ff2e1dc8b493729fed342e4a6548\"\n },\n \"src/shim/hooks/colony_inputs.cpp\": {\n \"mode\": 420,\n \"sha256\": \"7aa9191ec6292d765fd06c99ff1f2ae2e09a65fb1f238dd2727f28bd465dd46e\"\n },\n \"src/shim/hooks/colony_inputs.h\": {\n \"mode\": 420,\n \"sha256\": \"87ec765e14106631e3f6423450e6e01d5bb21060fa91f83c267db215ef4986d9\"\n },\n \"src/shim/hooks/colony_turn.cpp\": {\n \"mode\": 420,\n \"sha256\": \"b82616c7b9b05e96e7f4c40d853c686884b517a5424413686d61799df9d45420\"\n },\n \"src/shim/hooks/colony_turn.h\": {\n \"mode\": 420,\n \"sha256\": \"a9013cc2e92998ff56ac0c8cc36dc42033fbe3072ee88b86882a1dd4dd0357d6\"\n },\n \"src/shim/hooks/compute_budget.cpp\": {\n \"mode\": 420,\n \"sha256\": \"76a24f0daf1f49cfabbed13753c65754e26bfcc4f672791b37e926f82b5c1906\"\n },\n \"src/shim/hooks/compute_budget.h\": {\n \"mode\": 420,\n \"sha256\": \"f308717e44e12151cfb20a6a0cf11ff8e99ecc9c17ef04783198feed05a24caa\"\n },\n \"src/shim/hooks/dictionaries.cpp\": {\n \"mode\": 420,\n \"sha256\": \"b60794256c07964eb89d5295ecb711b402112fe5f982a9215dc3a304d03a567b\"\n },\n \"src/shim/hooks/dictionaries.h\": {\n \"mode\": 420,\n \"sha256\": \"ac68fd66eb343d40ee97d6bf29c8b54f5d469a9ef8862687ae15e6ad8bdafdc0\"\n },\n \"src/shim/hooks/draw_sites.cpp\": {\n \"mode\": 420,\n \"sha256\": \"e7a1fa40262db2ed22b1dfa5ca1bd2588da07bfbab046f23afa8e86c03814d79\"\n },\n \"src/shim/hooks/draw_sites.h\": {\n \"mode\": 420,\n \"sha256\": \"0021323e918d464223d03b969d0e6992a0efac23ba84a31af901cf2ac74e9b13\"\n },\n \"src/shim/hooks/event_inputs.cpp\": {\n \"mode\": 420,\n \"sha256\": \"eeb9cc87ef5c39994b7f25d5ccfe220c4775b32a4b11471b0fc0fb81fca4362b\"\n },\n \"src/shim/hooks/event_inputs.h\": {\n \"mode\": 420,\n \"sha256\": \"c0e74aed8756b3de8ebbe5ab3d70cfa6282403efefc2d795e8f0b1b4cd44d731\"\n },\n \"src/shim/hooks/fleet_movement.cpp\": {\n \"mode\": 420,\n \"sha256\": \"f01ae7f64b1d545089b002b79c9986d2a39b97ad3995c88a8b71fa05eedb90f0\"\n },\n \"src/shim/hooks/fleet_movement.h\": {\n \"mode\": 420,\n \"sha256\": \"dbbfe50afaedad63ec45881819aa5de3907cdb411ddf8d1d3e6a5f9a386dc8af\"\n },\n \"src/shim/hooks/global_consts.cpp\": {\n \"mode\": 420,\n \"sha256\": \"87a51601e1a7d963bf841ca4e892aa79de789a050f5d783c7b5d8bbc2e96a9a1\"\n },\n \"src/shim/hooks/global_consts.h\": {\n \"mode\": 420,\n \"sha256\": \"b6ac4265ec1f02f11c342536dbc9970c13761ea68aec0a5962d0f4cd6aa5d265\"\n },\n \"src/shim/hooks/movement_inputs.cpp\": {\n \"mode\": 420,\n \"sha256\": \"0e23f86e4a8ed6c292aea8e45512931cdd06742f25c5e0d175bf0ed3b2217502\"\n },\n \"src/shim/hooks/movement_inputs.h\": {\n \"mode\": 420,\n \"sha256\": \"32904786cbb122c3c8c36faf6bd9ea5ade4cd8395e74199ec08dbcdb8019b66a\"\n },\n \"src/shim/hooks/player_turn.cpp\": {\n \"mode\": 420,\n \"sha256\": \"33bcadd7569ad13c69f5f160423c8d469bc67725ce7b944cf4b4346fb8cc7f23\"\n },\n \"src/shim/hooks/player_turn.h\": {\n \"mode\": 420,\n \"sha256\": \"a766a0d93f3860da6f8d1e0dcf110d6754cd8dfe67d867093f32e3d24e8ff0e0\"\n },\n \"src/shim/hooks/player_turn_inputs.cpp\": {\n \"mode\": 420,\n \"sha256\": \"993dce2ca771a36337c9561695995a0825746563d2e84b4458de650f3e456799\"\n },\n \"src/shim/hooks/player_turn_inputs.h\": {\n \"mode\": 420,\n \"sha256\": \"ca0d7916ca17d993aaef19be48d03076220ae15cdcc622aef52a7c6b5957ca71\"\n },\n \"src/shim/hooks/probe_entry.cpp\": {\n \"mode\": 420,\n \"sha256\": \"5faf9cf04a2cf849d2dd54ce4ad9b812120fb99741f11e9d52fed450badf0506\"\n },\n \"src/shim/hooks/probe_entry.h\": {\n \"mode\": 420,\n \"sha256\": \"f04f445863a6164d03bc9f6edcaa2e2b0108163241510f4c1dfcb0da7667d89f\"\n },\n \"src/shim/hooks/research.cpp\": {\n \"mode\": 420,\n \"sha256\": \"dacd16403f1dd5be2ef2cc42f16938977bdd0ee9283d0bca647a079ee3d28e83\"\n },\n \"src/shim/hooks/research.h\": {\n \"mode\": 420,\n \"sha256\": \"a62c4847be81ed9d10c4f5b9a876bd79898040aa11aa8764149d82db4b010a84\"\n },\n \"src/shim/hooks/rng_ledger.cpp\": {\n \"mode\": 420,\n \"sha256\": \"119d325fcda72268bdc87f7ca7af05d059d4521c4d7d40ad7426ce070865eabb\"\n },\n \"src/shim/hooks/rng_ledger.h\": {\n \"mode\": 420,\n \"sha256\": \"0d1e9c79e7601da921253e860c55d9b69c21e03a1014c49f1dd85fd0e5f70f30\"\n },\n \"src/shim/hooks/system_output.cpp\": {\n \"mode\": 420,\n \"sha256\": \"93bfb7e6ca381041d1e9830f82b8d774a63c12593fc426fd3e9198c9373be3b4\"\n },\n \"src/shim/hooks/system_output.h\": {\n \"mode\": 420,\n \"sha256\": \"62a8424c70bb8e6c3d9603ce752f6b19a3920a4a78be75718869d7dac73f3738\"\n },\n \"src/shim/hooks/tail_rng.cpp\": {\n \"mode\": 420,\n \"sha256\": \"9b2a3923d1d837399f3486650ef0e49b502837ff7df46a12df9a9e9b0d4d9d07\"\n },\n \"src/shim/hooks/tail_rng.h\": {\n \"mode\": 420,\n \"sha256\": \"b9585605e71364872db25c608012e94db2148f22e2e6fd40d4b590a83f3be92b\"\n },\n \"src/shim/hooks/tech_effect_fields.cpp\": {\n \"mode\": 420,\n \"sha256\": \"4c4d558aba3ac4e1b10e0944c867911e61daea0b4ade716760546846cebcb7b3\"\n },\n \"src/shim/hooks/tech_effect_fields.h\": {\n \"mode\": 420,\n \"sha256\": \"22b2c050f73c9de011a42dc5a52d92a1bd3b24a59f3ba3b4332d832fb1853420\"\n },\n \"src/shim/hooks/tech_effects.cpp\": {\n \"mode\": 420,\n \"sha256\": \"2a20f01a18ed30a466e2023ae023aeed8718c680cda927d2f3b463b6dbe35714\"\n },\n \"src/shim/hooks/tech_effects.h\": {\n \"mode\": 420,\n \"sha256\": \"ffbc4e8262146cd7764f0b9758fff01ce5d359b25a0f5d8c931313f32d035320\"\n },\n \"src/shim/hooks/watchpoints.cpp\": {\n \"mode\": 420,","lineStart":1,"lineEnd":1216,"totalLines":1217,"truncated":true}},"title":"campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json","time":{"start":1789045456349,"end":1789045456408}},"metadata":{"openai":{"itemId":"fc_02f01f68ef887b7d016aa2aacffe6487d1b30fb7535ceb1ade"}},"id":"prt_08b6b3dd80017C55vnre1MUc6k","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6b1024001qJOG7Bhhq23GxV"}} +{"type":"tool_use","timestamp":1789045456493,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"bash","callID":"call_BxOEvpd3T3Evq1TjCr2u5Yh0","state":{"status":"completed","input":{"command":"git -C /tmp/opencode/sots-final-research-re status --short"},"output":" M README.md\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? AGENTS.md\n?? CLAUDE.md\n?? campaign/agents/\n?? campaign/contract.schema.json\n?? campaign/models.json\n?? guides/multi-agent-workflow.md\n?? guides/windows-lab-housekeeping.md\n?? opencode.json\n?? tools/campaign.py\n?? tools/check_agent_config.py\n?? tools/evidence.py\n?? tools/gate.py\n?? tools/run_agent.py\n?? tools/select_evidence.py\n?? tools/windows-housekeeping/\n?? verify/config/\n?? verify/publishing/\n?? verify/tooling/\n","metadata":{"output":" M README.md\n M findings/00-strategy.md\n M findings/subsystems/nav-classifier-live.md\n M findings/subsystems/research-replace.md\n M guides/method-rules.md\n D scripts/forgejo_campaign.py\n M tools/DASHBOARD_README.md\n M tools/dashboard.py\n D tools/displacement.py\n M tools/gate.sh\n M tools/standalone_report.py\n?? AGENTS.md\n?? CLAUDE.md\n?? campaign/agents/\n?? campaign/contract.schema.json\n?? campaign/models.json\n?? guides/multi-agent-workflow.md\n?? guides/windows-lab-housekeeping.md\n?? opencode.json\n?? tools/campaign.py\n?? tools/check_agent_config.py\n?? tools/evidence.py\n?? tools/gate.py\n?? tools/run_agent.py\n?? tools/select_evidence.py\n?? tools/windows-housekeeping/\n?? verify/config/\n?? verify/publishing/\n?? verify/tooling/\n","exit":0,"truncated":false},"title":"git -C /tmp/opencode/sots-final-research-re status --short","time":{"start":1789045456361,"end":1789045456492}},"metadata":{"openai":{"itemId":"fc_02f01f68ef887b7d016aa2aacffe7c87d1a16972da28f0dc39"}},"id":"prt_08b6b3de4001QrVjmkHk3QBRId","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6b1024001qJOG7Bhhq23GxV"}} +{"type":"step_finish","timestamp":1789045456581,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6b3ec1001gEtJg25cv1AxUY","reason":"tool-calls","snapshot":"577936f2fa90369dc2548632ee38a442765a6f93","messageID":"msg_08b6b1024001qJOG7Bhhq23GxV","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","type":"step-finish","tokens":{"total":22306,"input":6094,"output":212,"reasoning":0,"cache":{"write":0,"read":16000}},"cost":0}} +{"type":"step_start","timestamp":1789045460148,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6b4cb0001wNdYDzqbzmClrH","messageID":"msg_08b6b3ef3001GuOfaLiPNPfkiv","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","snapshot":"6b48dd577820082deae868ad8638ab84b1917b67","type":"step-start"}} +{"type":"tool_use","timestamp":1789045477457,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"bash","callID":"call_e83MYKkWgMDygC7UJqYt7jN0","state":{"status":"completed","input":{"command":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-problem-resolver --role resolver --model openai/gpt-6-astra --session run-ec31ee938e1f509cd7130c03 --summary 'OBSERVATIONS: Read canonical policy, contract, checkpoint 4555678e34291015554e7e88, sole open surprise s-81ffc3041e1f07b87928e6f2, verifier plan and analyst nested-copy authority. Plan item 5 wrongly requires stop 0x00779913 to include c2 04 00 at 0x00779912; raw authority line 79 contains all three bytes through 0x00779914. No new reproduction executed. Git confirms assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23/common /home/alex/sots-engine/.git and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7/common /home/alex/sots-re/.git; both assigned roots are dirty, not clean baseline claims. Runner record confirms resolution-only requested Astra and session. Historical verifier checkpoint reports source digests engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8; not independently rehashed by resolver. DECISION pending manifest/instrument review; affected work remains blocked. Tests: read-only Git identity/status checks only. Initial relative CLI status/help command denied by overlay; canonical absolute status succeeded. No experiments, source edits, delegation, commits, staging or lab access/mutation; no lease acquired and none assumed free.' --artifact verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt --next-action 'Inspect analyst manifest, boundary raw controls and prior Astra decision, then resolve s-81ffc3041e1f07b87928e6f2 through campaign controls with explicit invalidation and a fresh verifier probe.'"},"output":"{\n \"actor\": \"research-problem-resolver\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"1d04a2672a212e8b1fb37297\",\n \"model\": \"openai/gpt-6-astra\",\n \"next_action\": \"Inspect analyst manifest, boundary raw controls and prior Astra decision, then resolve s-81ffc3041e1f07b87928e6f2 through campaign controls with explicit invalidation and a fresh verifier probe.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-ec31ee938e1f509cd7130c03\",\n \"summary\": \"OBSERVATIONS: Read canonical policy, contract, checkpoint 4555678e34291015554e7e88, sole open surprise s-81ffc3041e1f07b87928e6f2, verifier plan and analyst nested-copy authority. Plan item 5 wrongly requires stop 0x00779913 to include c2 04 00 at 0x00779912; raw authority line 79 contains all three bytes through 0x00779914. No new reproduction executed. Git confirms assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23/common /home/alex/sots-engine/.git and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7/common /home/alex/sots-re/.git; both assigned roots are dirty, not clean baseline claims. Runner record confirms resolution-only requested Astra and session. Historical verifier checkpoint reports source digests engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8; not independently rehashed by resolver. DECISION pending manifest/instrument review; affected work remains blocked. Tests: read-only Git identity/status checks only. Initial relative CLI status/help command denied by overlay; canonical absolute status succeeded. No experiments, source edits, delegation, commits, staging or lab access/mutation; no lease acquired and none assumed free.\",\n \"timestamp\": \"2026-09-10T13:04:37.431119+00:00\"\n}\n","metadata":{"output":"{\n \"actor\": \"research-problem-resolver\",\n \"artifacts\": [\n {\n \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"1d04a2672a212e8b1fb37297\",\n \"model\": \"openai/gpt-6-astra\",\n \"next_action\": \"Inspect analyst manifest, boundary raw controls and prior Astra decision, then resolve s-81ffc3041e1f07b87928e6f2 through campaign controls with explicit invalidation and a fresh verifier probe.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-ec31ee938e1f509cd7130c03\",\n \"summary\": \"OBSERVATIONS: Read canonical policy, contract, checkpoint 4555678e34291015554e7e88, sole open surprise s-81ffc3041e1f07b87928e6f2, verifier plan and analyst nested-copy authority. Plan item 5 wrongly requires stop 0x00779913 to include c2 04 00 at 0x00779912; raw authority line 79 contains all three bytes through 0x00779914. No new reproduction executed. Git confirms assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23/common /home/alex/sots-engine/.git and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7/common /home/alex/sots-re/.git; both assigned roots are dirty, not clean baseline claims. Runner record confirms resolution-only requested Astra and session. Historical verifier checkpoint reports source digests engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8; not independently rehashed by resolver. DECISION pending manifest/instrument review; affected work remains blocked. Tests: read-only Git identity/status checks only. Initial relative CLI status/help command denied by overlay; canonical absolute status succeeded. No experiments, source edits, delegation, commits, staging or lab access/mutation; no lease acquired and none assumed free.\",\n \"timestamp\": \"2026-09-10T13:04:37.431119+00:00\"\n}\n","exit":0,"truncated":false},"title":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-problem-resolver --role resolver --model openai/gpt-6-astra --session run-ec31ee938e1f509cd7130c03 --summary 'OBSERVATIONS: Read canonical policy, contract, checkpoint 4555678e34291015554e7e88, sole open surprise s-81ffc3041e1f07b87928e6f2, verifier plan and analyst nested-copy authority. Plan item 5 wrongly requires stop 0x00779913 to include c2 04 00 at 0x00779912; raw authority line 79 contains all three bytes through 0x00779914. No new reproduction executed. Git confirms assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23/common /home/alex/sots-engine/.git and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7/common /home/alex/sots-re/.git; both assigned roots are dirty, not clean baseline claims. Runner record confirms resolution-only requested Astra and session. Historical verifier checkpoint reports source digests engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd, RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8; not independently rehashed by resolver. DECISION pending manifest/instrument review; affected work remains blocked. Tests: read-only Git identity/status checks only. Initial relative CLI status/help command denied by overlay; canonical absolute status succeeded. No experiments, source edits, delegation, commits, staging or lab access/mutation; no lease acquired and none assumed free.' --artifact verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt --next-action 'Inspect analyst manifest, boundary raw controls and prior Astra decision, then resolve s-81ffc3041e1f07b87928e6f2 through campaign controls with explicit invalidation and a fresh verifier probe.'","time":{"start":1789045477383,"end":1789045477456}},"metadata":{"openai":{"itemId":"fc_07c14490b40dea20016aa2aad4905087d19bf1efd30885c2ef"}},"id":"prt_08b6b4fb80011kJJve6gF9ojCR","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6b3ef3001GuOfaLiPNPfkiv"}} +{"type":"step_finish","timestamp":1789045477525,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6b908c001i8uNMheeogcTXB","reason":"tool-calls","snapshot":"4c4754e8c05dcf6c3607bae9cb895568a7ff48bb","messageID":"msg_08b6b3ef3001GuOfaLiPNPfkiv","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","type":"step-finish","tokens":{"total":46303,"input":23839,"output":568,"reasoning":8,"cache":{"write":0,"read":21888}},"cost":0}} +{"type":"step_start","timestamp":1789045487418,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6bb73200182WWJGV6J6MPGb","messageID":"msg_08b6b90be001R15QEqH9VHgr4w","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","snapshot":"14438ae7c046ab294258ae42d92ca7e3e78a6419","type":"step-start"}} +{"type":"tool_use","timestamp":1789045487562,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_931ovhVMyB0Fmu1GnxNgVeE8","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/tools/campaign.py","offset":499,"limit":32},"output":"/home/alex/sots-re/tools/campaign.py\nfile\n\n499: def resolve(self, sid, actor, role, model, explanation, probe):\n500: self.identity(actor, role, model)\n501: if role not in {\"lead\", \"resolver\"} or not explanation.strip() or not probe.strip() or len(explanation) > 6000 or len(probe) > 2000:\n502: raise ControlError(\"Astra lead/resolver explanation and discriminating probe required\")\n503: with self.lock():\n504: path = self.path(f\"campaign/runtime/surprises/{self.identifier(sid)}.json\")\n505: s = read_json(path)\n506: if s.get(\"status\") != \"open\":\n507: raise ControlError(\"surprise is not open\")\n508: c = self.load(s[\"contract\"])\n509: decision = {\"schema\": \"sots-decision/1\", \"id\": \"d-\" + secrets.token_hex(12), \"contract\": c[\"id\"], \"surprise\": sid,\n510: \"actor\": actor, \"role\": role, \"model\": model, \"timestamp\": now(), \"explanation\": explanation, \"probe\": probe,\n511: \"invalidated_evidence\": c.get(\"evidence\", []), \"invalidated_checkpoint\": c[\"checkpoint\"]}\n512: atomic_json(self.path(f\"campaign/runtime/decisions/{decision['id']}.json\"), decision)\n513: c[\"evidence\"] = []\n514: c[\"checkpoint\"] = None\n515: c[\"status\"] = \"blocked\"\n516: self.save(c)\n517: vpath = self.path(f\"campaign/runtime/verdicts/{c['id']}.json\")\n518: if vpath.exists():\n519: verdict = read_json(vpath)\n520: verdict[\"verdict\"] = \"invalidated\"\n521: verdict[\"decision\"] = decision[\"id\"]\n522: atomic_json(vpath, verdict)\n523: s.update(status=\"resolved\", decision=decision[\"id\"])\n524: atomic_json(path, s)\n525: if not self.open_surprises(c[\"id\"]):\n526: c[\"status\"] = \"needs-revision\"\n527: self.save(c)\n528: return decision\n529: \n530: def lease(self, action, resource, actor=None, token=None, lead_release=False, role=None, model=None, reason=None):\n\n(Showing lines 499-530 of 624. Use offset=531 to continue.)\n","metadata":{"preview":" def resolve(self, sid, actor, role, model, explanation, probe):\n self.identity(actor, role, model)\n if role not in {\"lead\", \"resolver\"} or not explanation.strip() or not probe.strip() or len(explanation) > 6000 or len(probe) > 2000:\n raise ControlError(\"Astra lead/resolver explanation and discriminating probe required\")\n with self.lock():\n path = self.path(f\"campaign/runtime/surprises/{self.identifier(sid)}.json\")\n s = read_json(path)\n if s.get(\"status\") != \"open\":\n raise ControlError(\"surprise is not open\")\n c = self.load(s[\"contract\"])\n decision = {\"schema\": \"sots-decision/1\", \"id\": \"d-\" + secrets.token_hex(12), \"contract\": c[\"id\"], \"surprise\": sid,\n \"actor\": actor, \"role\": role, \"model\": model, \"timestamp\": now(), \"explanation\": explanation, \"probe\": probe,\n \"invalidated_evidence\": c.get(\"evidence\", []), \"invalidated_checkpoint\": c[\"checkpoint\"]}\n atomic_json(self.path(f\"campaign/runtime/decisions/{decision['id']}.json\"), decision)\n c[\"evidence\"] = []\n c[\"checkpoint\"] = None\n c[\"status\"] = \"blocked\"\n self.save(c)\n vpath = self.path(f\"campaign/runtime/verdicts/{c['id']}.json\")\n if vpath.exists():","truncated":true,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/tools/campaign.py","text":" def resolve(self, sid, actor, role, model, explanation, probe):\n self.identity(actor, role, model)\n if role not in {\"lead\", \"resolver\"} or not explanation.strip() or not probe.strip() or len(explanation) > 6000 or len(probe) > 2000:\n raise ControlError(\"Astra lead/resolver explanation and discriminating probe required\")\n with self.lock():\n path = self.path(f\"campaign/runtime/surprises/{self.identifier(sid)}.json\")\n s = read_json(path)\n if s.get(\"status\") != \"open\":\n raise ControlError(\"surprise is not open\")\n c = self.load(s[\"contract\"])\n decision = {\"schema\": \"sots-decision/1\", \"id\": \"d-\" + secrets.token_hex(12), \"contract\": c[\"id\"], \"surprise\": sid,\n \"actor\": actor, \"role\": role, \"model\": model, \"timestamp\": now(), \"explanation\": explanation, \"probe\": probe,\n \"invalidated_evidence\": c.get(\"evidence\", []), \"invalidated_checkpoint\": c[\"checkpoint\"]}\n atomic_json(self.path(f\"campaign/runtime/decisions/{decision['id']}.json\"), decision)\n c[\"evidence\"] = []\n c[\"checkpoint\"] = None\n c[\"status\"] = \"blocked\"\n self.save(c)\n vpath = self.path(f\"campaign/runtime/verdicts/{c['id']}.json\")\n if vpath.exists():\n verdict = read_json(vpath)\n verdict[\"verdict\"] = \"invalidated\"\n verdict[\"decision\"] = decision[\"id\"]\n atomic_json(vpath, verdict)\n s.update(status=\"resolved\", decision=decision[\"id\"])\n atomic_json(path, s)\n if not self.open_surprises(c[\"id\"]):\n c[\"status\"] = \"needs-revision\"\n self.save(c)\n return decision\n\n def lease(self, action, resource, actor=None, token=None, lead_release=False, role=None, model=None, reason=None):","lineStart":499,"lineEnd":530,"totalLines":624,"truncated":true}},"title":"tools/campaign.py","time":{"start":1789045487536,"end":1789045487553}},"metadata":{"openai":{"itemId":"fc_071436885b6819e6016aa2aaeeabac87d1a35887c289ca1c34"}},"id":"prt_08b6bb7ac001JwntZ2axSdJZo6","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6b90be001R15QEqH9VHgr4w"}} +{"type":"tool_use","timestamp":1789045487562,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_4mFd6TQtKqkrxPIEjtgm7gTe","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\nfile\n\n1: {\n2: \"schema\": \"sots-abi-static-capture/1\",\n3: \"session\": \"run-9daf5c3b75547271d5c3b4ed\",\n4: \"actor\": \"research-abi-analyst\",\n5: \"role\": \"analyst\",\n6: \"model\": \"openai/gpt-5.6-sol\",\n7: \"timestamp\": \"2026-09-10T04:59:38.840348+00:00\",\n8: \"decisions\": [\n9: \"d-fd5aff1eaf78a8c15d96723c\",\n10: \"d-0bb927e63b915c87a58d4257\"\n11: ],\n12: \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n13: \"negative_preflight\": [\n14: {\n15: \"name\": \"reject-missing-session\",\n16: \"status\": \"pass\",\n17: \"rejection\": \"missing session\"\n18: },\n19: {\n20: \"name\": \"reject-stale-session\",\n21: \"status\": \"pass\",\n22: \"rejection\": \"stale or unexpected session\"\n23: },\n24: {\n25: \"name\": \"reject-stale-output\",\n26: \"status\": \"pass\",\n27: \"rejection\": \"output location is not bound to session\"\n28: },\n29: {\n30: \"name\": \"reject-reused-output\",\n31: \"status\": \"pass\",\n32: \"rejection\": \"output location was already used\"\n33: }\n34: ],\n35: \"source_before\": {\n36: \"argv\": [\n37: \"python3\",\n38: \"/home/alex/sots-re/tools/campaign.py\",\n39: \"--state-root\",\n40: \"/home/alex/sots-re\",\n41: \"source-binding\",\n42: \"research-completion-abi\",\n43: \"--engine-worktree\",\n44: \"/tmp/opencode/sots-final-research-engine\",\n45: \"--re-worktree\",\n46: \"/tmp/opencode/sots-final-research-re\"\n47: ],\n48: \"value\": {\n49: \"engine\": {\n50: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n51: \"path\": \"/tmp/opencode/sots-final-research-engine\",\n52: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n53: },\n54: \"re\": {\n55: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n56: \"path\": \"/tmp/opencode/sots-final-research-re\",\n57: \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n58: }\n59: }\n60: },\n61: \"source_after\": {\n62: \"argv\": [\n63: \"python3\",\n64: \"/home/alex/sots-re/tools/campaign.py\",\n65: \"--state-root\",\n66: \"/home/alex/sots-re\",\n67: \"source-binding\",\n68: \"research-completion-abi\",\n69: \"--engine-worktree\",\n70: \"/tmp/opencode/sots-final-research-engine\",\n71: \"--re-worktree\",\n72: \"/tmp/opencode/sots-final-research-re\"\n73: ],\n74: \"value\": {\n75: \"engine\": {\n76: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n77: \"path\": \"/tmp/opencode/sots-final-research-engine\",\n78: \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n79: },\n80: \"re\": {\n81: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n82: \"path\": \"/tmp/opencode/sots-final-research-re\",\n83: \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n84: }\n85: }\n86: },\n87: \"input\": {\n88: \"path\": \"/home/alex/sots-re/dumps/sots.exe\",\n89: \"bytes\": 7898624,\n90: \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n91: },\n92: \"tool\": {\n93: \"path\": \"/usr/bin/objdump\",\n94: \"bytes\": 373888,\n95: \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n96: \"version\": \"GNU objdump (GNU Binutils for Ubuntu) 2.38\"\n97: },\n98: \"commands\": [\n99: {\n100: \"name\": \"turn-get-create-exact\",\n101: \"classification\": \"complete-control\",\n102: \"argv\": [\n103: \"/usr/bin/objdump\",\n104: \"-D\",\n105: \"-Mintel\",\n106: \"--start-address=0x00885380\",\n107: \"--stop-address=0x0088544a\",\n108: \"/home/alex/sots-re/dumps/sots.exe\"\n109: ],\n110: \"cwd\": \"/home/alex/sots-re\",\n111: \"returncode\": 0,\n112: \"stdout\": {\n113: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stdout.txt\",\n114: \"bytes\": 3974,\n115: \"sha256\": \"f6e72ba9b08fdf48d70f39379b2fb30a5adbe796072485f70c5795c10ab45ca3\"\n116: },\n117: \"stderr\": {\n118: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stderr.txt\",\n119: \"bytes\": 0,\n120: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n121: }\n122: },\n123: {\n124: \"name\": \"turn-get-create-wide\",\n125: \"classification\": \"boundary-audit\",\n126: \"argv\": [\n127: \"/usr/bin/objdump\",\n128: \"-D\",\n129: \"-Mintel\",\n130: \"--start-address=0x00885380\",\n131: \"--stop-address=0x0088544e\",\n132: \"/home/alex/sots-re/dumps/sots.exe\"\n133: ],\n134: \"cwd\": \"/home/alex/sots-re\",\n135: \"returncode\": 0,\n136: \"stdout\": {\n137: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stdout.txt\",\n138: \"bytes\": 4134,\n139: \"sha256\": \"9cb7d2ccfcc645b3b642e520ba51c85330c57d6d4395ed3fbd4a4a1950436e80\"\n140: },\n141: \"stderr\": {\n142: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stderr.txt\",\n143: \"bytes\": 0,\n144: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n145: }\n146: },\n147: {\n148: \"name\": \"turn-append-exact\",\n149: \"classification\": \"complete-control\",\n150: \"argv\": [\n151: \"/usr/bin/objdump\",\n152: \"-D\",\n153: \"-Mintel\",\n154: \"--start-address=0x00884cb0\",\n155: \"--stop-address=0x00884d8f\",\n156: \"/home/alex/sots-re/dumps/sots.exe\"\n157: ],\n158: \"cwd\": \"/home/alex/sots-re\",\n159: \"returncode\": 0,\n160: \"stdout\": {\n161: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stdout.txt\",\n162: \"bytes\": 4179,\n163: \"sha256\": \"57d6655feed0fc137bb2b7eee4bfcb09536b5a715603c917ee142770f1d52a15\"\n164: },\n165: \"stderr\": {\n166: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stderr.txt\",\n167: \"bytes\": 0,\n168: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n169: }\n170: },\n171: {\n172: \"name\": \"turn-append-wide\",\n173: \"classification\": \"boundary-audit\",\n174: \"argv\": [\n175: \"/usr/bin/objdump\",\n176: \"-D\",\n177: \"-Mintel\",\n178: \"--start-address=0x00884cb0\",\n179: \"--stop-address=0x00884d93\",\n180: \"/home/alex/sots-re/dumps/sots.exe\"\n181: ],\n182: \"cwd\": \"/home/alex/sots-re\",\n183: \"returncode\": 0,\n184: \"stdout\": {\n185: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stdout.txt\",\n186: \"bytes\": 4309,\n187: \"sha256\": \"957339f40b2af8947cb883cc1d3a9d1e151bf7663305415065472ef9171dc33d\"\n188: },\n189: \"stderr\": {\n190: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stderr.txt\",\n191: \"bytes\": 0,\n192: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n193: }\n194: },\n195: {\n196: \"name\": \"nested-dtor-exact\",\n197: \"classification\": \"complete-control\",\n198: \"argv\": [\n199: \"/usr/bin/objdump\",\n200: \"-D\",\n201: \"-Mintel\",\n202: \"--start-address=0x00629580\",\n203: \"--stop-address=0x006295ca\",\n204: \"/home/alex/sots-re/dumps/sots.exe\"\n205: ],\n206: \"cwd\": \"/home/alex/sots-re\",\n207: \"returncode\": 0,\n208: \"stdout\": {\n209: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stdout.txt\",\n210: \"bytes\": 1727,\n211: \"sha256\": \"3c38887e60d009ab904772b13be93ac1eedd9bee85024e37110160a625db3a83\"\n212: },\n213: \"stderr\": {\n214: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stderr.txt\",\n215: \"bytes\": 0,\n216: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n217: }\n218: },\n219: {\n220: \"name\": \"nested-dtor-wide\",\n221: \"classification\": \"boundary-audit\",\n222: \"argv\": [\n223: \"/usr/bin/objdump\",\n224: \"-D\",\n225: \"-Mintel\",\n226: \"--start-address=0x00629580\",\n227: \"--stop-address=0x006295ce\",\n228: \"/home/alex/sots-re/dumps/sots.exe\"\n229: ],\n230: \"cwd\": \"/home/alex/sots-re\",\n231: \"returncode\": 0,\n232: \"stdout\": {\n233: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stdout.txt\",\n234: \"bytes\": 1887,\n235: \"sha256\": \"0aba6fc800760e3a113c07238cfb6e721623eb0bb8a933a990d3e2e82823d00f\"\n236: },\n237: \"stderr\": {\n238: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stderr.txt\",\n239: \"bytes\": 0,\n240: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n241: }\n242: },\n243: {\n244: \"name\": \"nested-copy-authority\",\n245: \"classification\": \"bounded-authority\",\n246: \"argv\": [\n247: \"/usr/bin/objdump\",\n248: \"-D\",\n249: \"-Mintel\",\n250: \"--start-address=0x00779850\",\n251: \"--stop-address=0x00779930\",\n252: \"/home/alex/sots-re/dumps/sots.exe\"\n253: ],\n254: \"cwd\": \"/home/alex/sots-re\",\n255: \"returncode\": 0,\n256: \"stdout\": {\n257: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n258: \"bytes\": 4465,\n259: \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n260: },\n261: \"stderr\": {\n262: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stderr.txt\",\n263: \"bytes\": 0,\n264: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n265: }\n266: },\n267: {\n268: \"name\": \"nested-copy-stop-a20\",\n269: \"classification\": \"expected-truncated-negative\",\n270: \"argv\": [\n271: \"/usr/bin/objdump\",\n272: \"-D\",\n273: \"-Mintel\",\n274: \"--start-address=0x00779850\",\n275: \"--stop-address=0x00779a20\",\n276: \"/home/alex/sots-re/dumps/sots.exe\"\n277: ],\n278: \"cwd\": \"/home/alex/sots-re\",\n279: \"returncode\": 0,\n280: \"stdout\": {\n281: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\",\n282: \"bytes\": 8469,\n283: \"sha256\": \"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\"\n284: },\n285: \"stderr\": {\n286: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stderr.txt\",\n287: \"bytes\": 0,\n288: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n289: }\n290: },\n291: {\n292: \"name\": \"nested-copy-stop-a21\",\n293: \"classification\": \"predicted-complete-je\",\n294: \"argv\": [\n295: \"/usr/bin/objdump\",\n296: \"-D\",\n297: \"-Mintel\",\n298: \"--start-address=0x00779850\",\n299: \"--stop-address=0x00779a21\",\n300: \"/home/alex/sots-re/dumps/sots.exe\"\n301: ],\n302: \"cwd\": \"/home/alex/sots-re\",\n303: \"returncode\": 0,\n304: \"stdout\": {\n305: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stdout.txt\",\n306: \"bytes\": 8471,\n307: \"sha256\": \"b6d58767d00328c37139f439db480c9bb5ce6767dabf212f9e750a31fea0d3d7\"\n308: },\n309: \"stderr\": {\n310: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stderr.txt\",\n311: \"bytes\": 0,\n312: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n313: }\n314: },\n315: {\n316: \"name\": \"nested-copy-stop-a23\",\n317: \"classification\": \"predicted-complete-mov\",\n318: \"argv\": [\n319: \"/usr/bin/objdump\",\n320: \"-D\",\n321: \"-Mintel\",\n322: \"--start-address=0x00779850\",\n323: \"--stop-address=0x00779a23\",\n324: \"/home/alex/sots-re/dumps/sots.exe\"\n325: ],\n326: \"cwd\": \"/home/alex/sots-re\",\n327: \"returncode\": 0,\n328: \"stdout\": {\n329: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stdout.txt\",\n330: \"bytes\": 8518,\n331: \"sha256\": \"e8cc66eb74730fcf7853d66df8caa620ddb3fc8c75335f0573ac490037a7a88e\"\n332: },\n333: \"stderr\": {\n334: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stderr.txt\",\n335: \"bytes\": 0,\n336: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n337: }\n338: },\n339: {\n340: \"name\": \"nested-copy-stop-a28\",\n341: \"classification\": \"complete-call-boundary-control\",\n342: \"argv\": [\n343: \"/usr/bin/objdump\",\n344: \"-D\",\n345: \"-Mintel\",\n346: \"--start-address=0x00779850\",\n347: \"--stop-address=0x00779a28\",\n348: \"/home/alex/sots-re/dumps/sots.exe\"\n349: ],\n350: \"cwd\": \"/home/alex/sots-re\",\n351: \"returncode\": 0,\n352: \"stdout\": {\n353: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\",\n354: \"bytes\": 8566,\n355: \"sha256\": \"7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560\"\n356: },\n357: \"stderr\": {\n358: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stderr.txt\",\n359: \"bytes\": 0,\n360: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n361: }\n362: },\n363: {\n364: \"name\": \"nested-copy-boundary-bytes\",\n365: \"classification\": \"raw-byte-boundary-control\",\n366: \"argv\": [\n367: \"/usr/bin/objdump\",\n368: \"-s\",\n369: \"-j\",\n370: \".text\",\n371: \"--start-address=0x00779a1f\",\n372: \"--stop-address=0x00779a28\",\n373: \"/home/alex/sots-re/dumps/sots.exe\"\n374: ],\n375: \"cwd\": \"/home/alex/sots-re\",\n376: \"returncode\": 0,\n377: \"stdout\": {\n378: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\",\n379: \"bytes\": 151,\n380: \"sha256\": \"b2d9b57274be71fcdd853f04758bc65d701e7b4cc169d0d5ede24c8788ef82d5\"\n381: },\n382: \"stderr\": {\n383: \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stderr.txt\",\n384: \"bytes\": 0,\n385: \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n386: }\n387: }\n388: ],\n389: \"checks\": [\n390: {\n391: \"name\": \"explicit-session\",\n392: \"status\": \"pass\"\n393: },\n394: {\n395: \"name\": \"session-output-match\",\n396: \"status\": \"pass\"\n397: },\n398: {\n399: \"name\": \"negative-preflight-all-rejected\",\n400: \"status\": \"pass\"\n401: },\n402: {\n403: \"name\": \"binary-hash\",\n404: \"status\": \"pass\"\n405: },\n406: {\n407: \"name\": \"tool-hash\",\n408: \"status\": \"pass\"\n409: },\n410: {\n411: \"name\": \"source-stable\",\n412: \"status\": \"pass\"\n413: },\n414: {\n415: \"name\": \"all-return-zero\",\n416: \"status\": \"pass\"\n417: },\n418: {\n419: \"name\": \"all-stdout-nonempty\",\n420: \"status\": \"pass\"\n421: },\n422: {\n423: \"name\": \"all-stderr-empty\",\n424: \"status\": \"pass\"\n425: }\n426: ],\n427: \"failed\": []\n428: }\n\n(End of file - total 428 lines)\n","metadata":{"preview":"{\n \"schema\": \"sots-abi-static-capture/1\",\n \"session\": \"run-9daf5c3b75547271d5c3b4ed\",\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": \"2026-09-10T04:59:38.840348+00:00\",\n \"decisions\": [\n \"d-fd5aff1eaf78a8c15d96723c\",\n \"d-0bb927e63b915c87a58d4257\"\n ],\n \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n \"negative_preflight\": [\n {\n \"name\": \"reject-missing-session\",\n \"status\": \"pass\",\n \"rejection\": \"missing session\"\n },\n {\n \"name\": \"reject-stale-session\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json","text":"{\n \"schema\": \"sots-abi-static-capture/1\",\n \"session\": \"run-9daf5c3b75547271d5c3b4ed\",\n \"actor\": \"research-abi-analyst\",\n \"role\": \"analyst\",\n \"model\": \"openai/gpt-5.6-sol\",\n \"timestamp\": \"2026-09-10T04:59:38.840348+00:00\",\n \"decisions\": [\n \"d-fd5aff1eaf78a8c15d96723c\",\n \"d-0bb927e63b915c87a58d4257\"\n ],\n \"scope\": \"Fresh read-only static capture; no game, allocator, constructor, destructor, exception, or RNG execution.\",\n \"negative_preflight\": [\n {\n \"name\": \"reject-missing-session\",\n \"status\": \"pass\",\n \"rejection\": \"missing session\"\n },\n {\n \"name\": \"reject-stale-session\",\n \"status\": \"pass\",\n \"rejection\": \"stale or unexpected session\"\n },\n {\n \"name\": \"reject-stale-output\",\n \"status\": \"pass\",\n \"rejection\": \"output location is not bound to session\"\n },\n {\n \"name\": \"reject-reused-output\",\n \"status\": \"pass\",\n \"rejection\": \"output location was already used\"\n }\n ],\n \"source_before\": {\n \"argv\": [\n \"python3\",\n \"/home/alex/sots-re/tools/campaign.py\",\n \"--state-root\",\n \"/home/alex/sots-re\",\n \"source-binding\",\n \"research-completion-abi\",\n \"--engine-worktree\",\n \"/tmp/opencode/sots-final-research-engine\",\n \"--re-worktree\",\n \"/tmp/opencode/sots-final-research-re\"\n ],\n \"value\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n }\n },\n \"source_after\": {\n \"argv\": [\n \"python3\",\n \"/home/alex/sots-re/tools/campaign.py\",\n \"--state-root\",\n \"/home/alex/sots-re\",\n \"source-binding\",\n \"research-completion-abi\",\n \"--engine-worktree\",\n \"/tmp/opencode/sots-final-research-engine\",\n \"--re-worktree\",\n \"/tmp/opencode/sots-final-research-re\"\n ],\n \"value\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/tmp/opencode/sots-final-research-engine\",\n \"sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/tmp/opencode/sots-final-research-re\",\n \"sha256\": \"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\"\n }\n }\n },\n \"input\": {\n \"path\": \"/home/alex/sots-re/dumps/sots.exe\",\n \"bytes\": 7898624,\n \"sha256\": \"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\"\n },\n \"tool\": {\n \"path\": \"/usr/bin/objdump\",\n \"bytes\": 373888,\n \"sha256\": \"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\",\n \"version\": \"GNU objdump (GNU Binutils for Ubuntu) 2.38\"\n },\n \"commands\": [\n {\n \"name\": \"turn-get-create-exact\",\n \"classification\": \"complete-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00885380\",\n \"--stop-address=0x0088544a\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stdout.txt\",\n \"bytes\": 3974,\n \"sha256\": \"f6e72ba9b08fdf48d70f39379b2fb30a5adbe796072485f70c5795c10ab45ca3\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-exact.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"turn-get-create-wide\",\n \"classification\": \"boundary-audit\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00885380\",\n \"--stop-address=0x0088544e\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stdout.txt\",\n \"bytes\": 4134,\n \"sha256\": \"9cb7d2ccfcc645b3b642e520ba51c85330c57d6d4395ed3fbd4a4a1950436e80\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-get-create-wide.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"turn-append-exact\",\n \"classification\": \"complete-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00884cb0\",\n \"--stop-address=0x00884d8f\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stdout.txt\",\n \"bytes\": 4179,\n \"sha256\": \"57d6655feed0fc137bb2b7eee4bfcb09536b5a715603c917ee142770f1d52a15\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-exact.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"turn-append-wide\",\n \"classification\": \"boundary-audit\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00884cb0\",\n \"--stop-address=0x00884d93\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stdout.txt\",\n \"bytes\": 4309,\n \"sha256\": \"957339f40b2af8947cb883cc1d3a9d1e151bf7663305415065472ef9171dc33d\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/turn-append-wide.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-dtor-exact\",\n \"classification\": \"complete-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00629580\",\n \"--stop-address=0x006295ca\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stdout.txt\",\n \"bytes\": 1727,\n \"sha256\": \"3c38887e60d009ab904772b13be93ac1eedd9bee85024e37110160a625db3a83\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-exact.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-dtor-wide\",\n \"classification\": \"boundary-audit\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00629580\",\n \"--stop-address=0x006295ce\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stdout.txt\",\n \"bytes\": 1887,\n \"sha256\": \"0aba6fc800760e3a113c07238cfb6e721623eb0bb8a933a990d3e2e82823d00f\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-dtor-wide.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-authority\",\n \"classification\": \"bounded-authority\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779930\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n \"bytes\": 4465,\n \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a20\",\n \"classification\": \"expected-truncated-negative\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a20\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\",\n \"bytes\": 8469,\n \"sha256\": \"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a21\",\n \"classification\": \"predicted-complete-je\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a21\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stdout.txt\",\n \"bytes\": 8471,\n \"sha256\": \"b6d58767d00328c37139f439db480c9bb5ce6767dabf212f9e750a31fea0d3d7\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a21.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a23\",\n \"classification\": \"predicted-complete-mov\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a23\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stdout.txt\",\n \"bytes\": 8518,\n \"sha256\": \"e8cc66eb74730fcf7853d66df8caa620ddb3fc8c75335f0573ac490037a7a88e\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a23.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-stop-a28\",\n \"classification\": \"complete-call-boundary-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-D\",\n \"-Mintel\",\n \"--start-address=0x00779850\",\n \"--stop-address=0x00779a28\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\",\n \"bytes\": 8566,\n \"sha256\": \"7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n },\n {\n \"name\": \"nested-copy-boundary-bytes\",\n \"classification\": \"raw-byte-boundary-control\",\n \"argv\": [\n \"/usr/bin/objdump\",\n \"-s\",\n \"-j\",\n \".text\",\n \"--start-address=0x00779a1f\",\n \"--stop-address=0x00779a28\",\n \"/home/alex/sots-re/dumps/sots.exe\"\n ],\n \"cwd\": \"/home/alex/sots-re\",\n \"returncode\": 0,\n \"stdout\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\",\n \"bytes\": 151,\n \"sha256\": \"b2d9b57274be71fcdd853f04758bc65d701e7b4cc169d0d5ede24c8788ef82d5\"\n },\n \"stderr\": {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stderr.txt\",\n \"bytes\": 0,\n \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n }\n }\n ],\n \"checks\": [\n {\n \"name\": \"explicit-session\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"session-output-match\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"negative-preflight-all-rejected\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"binary-hash\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"tool-hash\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"source-stable\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all-return-zero\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all-stdout-nonempty\",\n \"status\": \"pass\"\n },\n {\n \"name\": \"all-stderr-empty\",\n \"status\": \"pass\"\n }\n ],\n \"failed\": []\n}","lineStart":1,"lineEnd":428,"totalLines":428,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json","time":{"start":1789045487511,"end":1789045487559}},"metadata":{"openai":{"itemId":"fc_071436885b6819e6016aa2aaeeab9087d18afa4181471edb6a"}},"id":"prt_08b6bb7380017cK4xUTOopfDpW","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6b90be001R15QEqH9VHgr4w"}} +{"type":"tool_use","timestamp":1789045487593,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"grep","callID":"call_F0W1CqCBQdbBPuR3n2jOE5te","state":{"status":"completed","input":{"pattern":"ccd8e020|6696fd52|\"status\"|\"started\"","path":"/home/alex/sots-re/campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json"},"output":"Found 100 matches (more matches available)\n/home/alex/sots-re/campaign/runtime/runs/run-e459b5bcb1b0a0a7cbe960f5.json:\n Line 9792: \"status\": \"complete\",\n\n\n/home/alex/sots-re/campaign/runtime/runs/run-eba7860308317f839eb35392.json:\n Line 2196: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 7326: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 10356: \"status\": \"complete\",\n\n\n/home/alex/sots-re/campaign/runtime/runs/run-36c401e90eb0ec1db4d35865.json:\n Line 2186: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 7316: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 10346: \"status\": \"complete\",\n\n\n/home/alex/sots-re/campaign/runtime/runs/run-73a78465cbde3cd6c811f761.json:\n Line 2186: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 7316: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 10346: \"status\": \"complete\",\n\n\n/home/alex/sots-re/campaign/runtime/runs/run-f4ee1aa70be8601ad527689f.json:\n Line 9792: \"status\": \"complete\",\n\n\n/home/alex/sots-re/campaign/runtime/runs/run-472955e277202c411388c66b.json:\n Line 2186: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 7316: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 10346: \"status\": \"complete\",\n\n\n/home/alex/sots-re/campaign/runtime/runs/active-research-completion-abi.json:\n Line 4: \"status\": \"running\"\n\n\n/home/alex/sots-re/campaign/runtime/runs/run-c98b95381afc4933dad98898.jsonl:\n Line 2: {\"type\":\"tool_use\",\"timestamp\":1788999020881,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"todowrite\",\"callID\":\"call_0E0a5QG6agpJ63R7yBDmVMCt\",\"state\":{\"status\":\"completed\",\"input\":{\"todos\":[{\"content\":\"Read campaign authority, contract, checkpoint, and open surprises\",\"status\":\"in_progress\",\"priority\":\"high\"},{\"content\":\"Verify worktree, source, and resource identities against contract/checkpoint\",\"status\":\"pending\",\"priority\":\"high\"},{\"content\":\"Execute the checkpoint's exact next bounded ABI research action\",\"status\":\"pending\",\"priority\":\"high\"},{\"content\":\"Persist mandatory fresh canonical checkpoint and stop\",\"status\":\"pending\",\"priority\":\"high\"}]},\"output\":\"[\\n {\\n \\\"content\\\": \\\"Read campaign authority, contract, checkpoint, and open surprises\\\",\\n \\\"status\\\": \\\"in_progress\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Verify worktree, source, and resource identities against contract/checkpoint\\\",\\n \\\"status\\\": \\\"pending\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Execute the checkpoint's exact next bounded ABI research action\\\",\\n \\\"status\\\": \\\"pending\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Persist mandatory fresh canonical checkpoint and stop\\\",\\n \\\"status\\\": \\\"pending\\\",\\n \\\"priority\\\": \\\"high\\\"\\n }\\n]\",\"metadata\":{\"todos\":[{\"content\":\"Read campaign authority, contract, checkpoint, and open surprises\",\"status\":\"in_progress\",\"priority\":\"high\"},{\"content\":\"Verify worktree, source, and resource identities against contract/checkpoint\",\"status\":\"pending\",\"priority\":\"high\"},{\"content\":\"Execute the checkpoint's exact next bounded ABI research action\",\"status\":\"pending\",\"priority\":\"high\"},{\"content\":\"Persist mandatory fresh canonical checkpoint and stop\",\"status\":\"pending\",\"priority\":\"high\"}],\"truncated\":false},\"title\":\"4 todos\",\"time\":{\"start\":1788999020875,\"end\":1788999020879}},\"metadata\":{\"openai\":{\"itemId\":\"fc_0ad3eefd1696d9d3016aa1f56a057887d1aa263029a7d2...\n Line 5: {\"type\":\"tool_use\",\"timestamp\":1788999027895,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_IllWWVH8Z6vJ40CyY2D4W6f5\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/README.md\"},\"output\":\"/home/alex/sots-re/campaign/README.md\\nfile\\n\\n1: # Canonical campaign controls\\n2: \\n3: `sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\\n4: surprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\\n5: projections. Historical evidence is not current acceptance. No automatic commits or lab operations.\\n6: \\n7: Framework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\\n8: see [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\\n9: Active work is reverse engineering. Change tooling only to unblock a named RE experiment.\\n10: \\n11: ## Contract format\\n12: \\n13: `contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\\n14: The standard-library validator implements the schema's used subset. A populated example is\\n15: [contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\\n16: \\n17: Required fields:\\n18: \\n19: | Field | Structure |\\n20: |---|---|\\n21: | `id`, `title`, `status` | Slug, short title, lifecycle state |\\n22: | `owner` | `{ \\\"name\\\": \\\"worker-identity\\\", \\\"role\\\": \\\"implementer\\\" }` |\\n23: | `baseline` | `{ \\\"engine\\\": {\\\"path\\\":\\\"/absolute/canonical/engine\\\",\\\"commit\\\":\\\"full-commit-id\\\"}, \\\"re\\\": {\\\"path\\\":\\\"/absolute/canonical/re\\\",\\\"commit\\\":\\\"full-commit-id\\\"} }` |\\n24: | `scope`, `inputs`, `effects` | Arrays of explicit nonempty strings; include full write set and runtime inputs |\\n25: | `original_dependencies` | String array, including original-assisted portions and unavailable inputs |\\n26: | `dependencies` | A...\n Line 6: {\"type\":\"tool_use\",\"timestamp\":1788999027911,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"glob\",\"callID\":\"call_8LnBMp5ZeXc5mIqXKUC9osc6\",\"state\":{\"status\":\"completed\",\"input\":{\"path\":\"/home/alex/sots-re/campaign\",\"pattern\":\"**/*surpris*\"},\"output\":\"No files found\",\"metadata\":{\"count\":0,\"truncated\":false},\"title\":\"campaign\",\"time\":{\"start\":1788999027845,\"end\":1788999027897}},\"metadata\":{\"openai\":{\"itemId\":\"fc_0e15ce1a7b9d8ce5016aa1f573b51487d1b7124db81c4fbaa9\"}},\"id\":\"prt_088a6cc80001inQOydm34n1ZZh\",\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"messageID\":\"msg_088a6b1be001Z0jf0LDtAdTso0\"}}\n\n Line 7: {\"type\":\"tool_use\",\"timestamp\":1788999027911,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_ZmnvnqCgAy8SPZ1t0Yx76Xa0\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/contracts/research-completion-abi.json\"},\"output\":\"/home/alex/sots-re/campaign/contracts/research-completion-abi.json\\nfile\\n\\n1: {\\n2: \\\"acceptance\\\": [\\n3: {\\n4: \\\"axis\\\": \\\"static-recovery\\\",\\n5: \\\"criterion\\\": \\\"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\\\",\\n6: \\\"id\\\": \\\"ownership-recovered\\\"\\n7: },\\n8: {\\n9: \\\"axis\\\": \\\"validation\\\",\\n10: \\\"criterion\\\": \\\"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\\\",\\n11: \\\"id\\\": \\\"independent-cross-check\\\"\\n12: }\\n13: ],\\n14: \\\"baseline\\\": {\\n15: \\\"engine\\\": {\\n16: \\\"commit\\\": \\\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\\",\\n17: \\\"path\\\": \\\"/home/alex/sots-engine\\\"\\n18: },\\n19: \\\"re\\\": {\\n20: \\\"commit\\\": \\\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\\",\\n21: \\\"path\\\": \\\"/home/alex/sots-re\\\"\\n22: }\\n23: },\\n24: \\\"checkpoint\\\": \\\"campaign/runtime/checkpoints/research-completion-abi-60c9ef4651c469b0a90d9906.json\\\",\\n25: \\\"dependencies\\\": [\\n26: \\\"controls-bootstrap\\\"\\n27: ],\\n28: \\\"effects\\\": [\\n29: \\\"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\\\"\\n30: ],\\n31: \\\"evidence\\\": [],\\n32: \\\"id\\\": \\\"research-completion-abi\\\",\\n33: \\\"inputs\\\": [\\n34: \\\"Existing binary fingerprint/address contract and private RE findings\\\",\\n35: \\\"Owner-supplied binary or live read-only R...\n Line 8: {\"type\":\"tool_use\",\"timestamp\":1788999027914,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_aH8t0FrTiHaQTE1VPKg9xmt3\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-60c9ef4651c469b0a90d9906.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-60c9ef4651c469b0a90d9906.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"research-abi-analyst\\\",\\n3: \\\"artifacts\\\": [\\n4: {\\n5: \\\"path\\\": \\\"campaign/runtime/decisions/d-2ff30c9f5355116bea822924.json\\\",\\n6: \\\"sha256\\\": \\\"c03d87ff4c7e2a23d43cb3c7d1c7bf19dfb3dfd868a9cbac2b8401fe3ee00fbd\\\"\\n7: },\\n8: {\\n9: \\\"path\\\": \\\"verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt\\\",\\n10: \\\"sha256\\\": \\\"3bc3c368f30f2ef2b0d291acad9c0f898b74f4436393d47bf8c942571793dd06\\\"\\n11: },\\n12: {\\n13: \\\"path\\\": \\\"verify/results/research-completion-abi/recovered-static.md\\\",\\n14: \\\"sha256\\\": \\\"fd0337bf2135341843738adc831ea3bd94fa6b87f5c21e652df919a5d2bec9df\\\"\\n15: },\\n16: {\\n17: \\\"path\\\": \\\"verify/results/research-completion-abi/reva-2026-09-09-index.md\\\",\\n18: \\\"sha256\\\": \\\"ff6357a055021d9a3d13c10496f41dbdd7266807817affc1fdb32cde19221f66\\\"\\n19: },\\n20: {\\n21: \\\"path\\\": \\\"campaign/research/research-completion-abi.md\\\",\\n22: \\\"sha256\\\": \\\"613314318a89efa3ea51e0ee3f43bc2ecd67ff01950a4da77036c1d95c566e5d\\\"\\n23: }\\n24: ],\\n25: \\\"basis\\\": \\\"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\\\",\\n26: \\\"contract\\\": \\\"research-completion-abi\\\",\\n27: \\\"id\\\": \\\"60c9ef4651c469b0a90d9906\\\",\\n28: \\\"model\\\": \\\"openai/gpt-5.6-sol\\\",\\n29: \\\"next_action\\\": \\\"Lead launch an independent verifier on the same paired baseline and SHA256-matched dumps/sots.exe to reproduce all four objdump windows in objdump-2026-09-09-dedup-helper.txt and challenge t...\n Line 11: {\"type\":\"tool_use\",\"timestamp\":1788999043235,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_xnzXVB3bFS5uev01VhICQdd3\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises\\ndirectory\\n\\ns-410e48d5ae6cc4da0a6ae649.json\\ns-4a7d66ebd7d8a8f3ec59f11d.json\\ns-6d1fcc617a20ca2bcbffc0cc.json\\ns-8996365dab2cd6dc0e17bb9f.json\\ns-abd1c3613c9922cc94c608d5.json\\ns-f1c41532e618c77d41538902.json\\n\\n(6 entries)\\n\",\"metadata\":{\"preview\":\"s-410e48d5ae6cc4da0a6ae649.json\\ns-4a7d66ebd7d8a8f3ec59f11d.json\\ns-6d1fcc617a20ca2bcbffc0cc.json\\ns-8996365dab2cd6dc0e17bb9f.json\\ns-abd1c3613c9922cc94c608d5.json\\ns-f1c41532e618c77d41538902.json\",\"truncated\":false,\"loaded\":[],\"display\":{\"type\":\"directory\",\"path\":\"/home/alex/sots-re/campaign/runtime/surprises\",\"entries\":[\"s-410e48d5ae6cc4da0a6ae649.json\",\"s-4a7d66ebd7d8a8f3ec59f11d.json\",\"s-6d1fcc617a20ca2bcbffc0cc.json\",\"s-8996365dab2cd6dc0e17bb9f.json\",\"s-abd1c3613c9922cc94c608d5.json\",\"s-f1c41532e618c77d41538902.json\"],\"offset\":1,\"totalEntries\":6,\"truncated\":false}},\"title\":\"campaign/runtime/surprises\",\"time\":{\"start\":1788999043228,\"end\":1788999043234}},\"metadata\":{\"openai\":{\"itemId\":\"fc_0117eaa83183e159016aa1f583225887d1b1e8f18594244bdb\"}},\"id\":\"prt_088a7087a001usNbigUcCdwJq6\",\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"messageID\":\"msg_088a6cd390014tzGszoF7vhe5N\"}}\n\n Line 12: {\"type\":\"tool_use\",\"timestamp\":1788999043285,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_CM62vpdtScDH0WSkof0eztA0\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/decisions/d-2ff30c9f5355116bea822924.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/decisions/d-2ff30c9f5355116bea822924.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"research-problem-resolver\\\",\\n3: \\\"contract\\\": \\\"research-completion-abi\\\",\\n4: \\\"explanation\\\": \\\"Astra resolution-only decision, session run-b9c736bb16b1c5ea8f4a96a5. Observation/provenance: archived verify/results/research-completion-abi/objdump-2026-09-09-turnevents.txt SHA256 f95bbd2674aaa074feb70ebb13ec4877b3ceef3d2aafe5810b8b0ec337cfbb8b lines 211-213 contains lea candidate+8, lea stored+8 and call 0x0046f8c0. It jumps directly from 0x00825e19 to 0x00825e2e in the selected excerpt: the disputed test/branch is NOT archived there. No helper body exists in the four-file ABI results package. Surprise says true AL matches; checkpoint 26d1c4fa6bd58b6a442e0241 and handoff say false. Neither polarity is independently established by this archive. This is an evidence-completeness/conflicting-interpretation problem, not measured game behavior or a stale-build mechanism. Identity: assigned engine HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7 and canonical common dirs independently checked; both dirty inventories observed. Source-before manifests are in runtime/runs/run-b9c736bb16b1c5ea8f4a96a5.json; no fresh content binding substituted for old measurements. Input SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 and matching ReVa MD5 are recorded provenance only, not freshly rehashed here. Campaign checkpoint rehashed the raw excerpt and index successfully. No live positive execution, runtime binary/input binding, or hooks-off neutrality measuremen...\n Line 13: {\"type\":\"tool_use\",\"timestamp\":1788999043335,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_NkzCGFcFjwB4gfUeOQoqclxt\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/guides/multi-agent-workflow.md\"},\"output\":\"/home/alex/sots-re/guides/multi-agent-workflow.md\\nfile\\n\\n1: # Multi-agent operating architecture\\n2: \\n3: ## Product and milestone\\n4: \\n5: Reconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\\n6: milestone is standalone replay given a captured command stream and complete declared runtime\\n7: inputs. The first workflow pilot is the complete research write set. A passing host build is a\\n8: component baseline, not a playable engine or independent replacement.\\n9: \\n10: ## Source of truth\\n11: \\n12: `campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\\n13: leases and surprises, and evidence packages identify inputs, source and executable artifacts.\\n14: `campaign/current.json` selects published evidence by path and digest. Board/dashboard are\\n15: generated projections, never alternate writable authorities. Exact tool CLI/schema is documented\\n16: in `campaign/README.md`. Historical findings retain their original experiment scope; they are\\n17: not promoted by copying an old status into a new contract.\\n18: \\n19: ## Model authority\\n20: \\n21: | Responsibility | Model |\\n22: |---|---|\\n23: | Normal planning, architecture and integration loop | GPT-5.6 Sol |\\n24: | Bounded RE analysis, implementation and independent verification | GPT-5.6 Sol |\\n25: | Routine lab/workload operations | GPT-5.6 Sol |\\n26: | Problem and surprise resolution | GPT-6 Astra |\\n27: | Context compaction | GPT-5.5 |\\n28: \\n29: Exact provider IDs are in `campaign/models.json`. The lead escalates to Astra when a falsified\\n30: assumption, conflict, instrument effect, or scope change blocks the loop. No fallbac...\n Line 14: {\"type\":\"tool_use\",\"timestamp\":1788999043335,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_B03Uu9EIg74elUYdIOOiNxkx\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/research/research-completion-abi.md\"},\"output\":\"/home/alex/sots-re/campaign/research/research-completion-abi.md\\nfile\\n\\n1: # Completion record ABI recovery\\n2: \\n3: Static handoff only. The provenance index is\\n4: `verify/results/research-completion-abi/reva-2026-09-09-index.md`; the regenerated instruction\\n5: capture and interpretation are respectively\\n6: `verify/results/research-completion-abi/objdump-2026-09-09-ownership.txt` and\\n7: `verify/results/research-completion-abi/recovered-static.md`. The complete dedup/helper repair is\\n8: `verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt`. Input identity is `dumps/sots.exe`,\\n9: SHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841` / MD5\\n10: `9969481c39f4b33a8a21c48b62abee4c`.\\n11: \\n12: ## Implementable machine boundaries recovered\\n13: \\n14: * `0x008562a0`: ObservedTech default constructor, ECX receiver, EAX return, plain `ret`.\\n15: * `0x007b7320`: ObservedTech vector append, ECX receiver plus one stack word, `ret 4`; stride `0x2c`.\\n16: Its copy helper is `0x0079a150` (cdecl-style allocator/destination/source stack arguments), which copy-constructs the embedded string rather than copying a\\n17: vector element header. Capacity growth is `0x007b5820` -> `0x007b34e0` -> `0x0057e590`.\\n18: * `0x0057e590` calls `0x00924fb6` with `count * 0x2c`; reallocation destroys every old element via\\n19: virtual slot 0 with zero and frees the array through `0x00924faa`. These are MSVCR100 scalar-new\\n20: and scalar-delete import thunks, not clean-room allocator operations.\\n21: * `0x0086c580`: PlayerEvent vector append, ECX receiver plus one stack word, `ret 4`; stride `0x74`.\\n22: It grows via ...\n Line 15: {\"type\":\"tool_use\",\"timestamp\":1788999043342,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_7cWkYOBOwjQqPYP3rn5GJ8fj\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/verify/results/research-completion-abi/recovered-static.md\"},\"output\":\"/home/alex/sots-re/verify/results/research-completion-abi/recovered-static.md\\nfile\\n\\n1: # Fresh static observations\\n2: \\n3: Static evidence only. It does not establish live allocator safety, a compatible replacement\\n4: allocator, or replacement acceptance. Raw local evidence and exact regeneration commands are in\\n5: `objdump-2026-09-09-ownership.txt`; the owner-supplied input is `dumps/sots.exe`, SHA-256\\n6: `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841` / MD5\\n7: `9969481c39f4b33a8a21c48b62abee4c`.\\n8: \\n9: ## Recorded instruction facts\\n10: \\n11: * `ObservedTech::ObservedTech` at `0x008562a0` is an ECX receiver, returns that receiver in EAX,\\n12: and uses plain `ret`. It installs vtable `0x00a2439c`; initializes the string rooted at `+0x0c`\\n13: to `_Myres=15`, `_Mysize=0`, empty first byte; zeros `+4` (therefore both 16-bit turns), `+8`, and\\n14: `+0x28`; and calls `0x00425550` for the empty-string setup.\\n15: * `vector::push_back` at `0x007b7320` is ECX receiver plus one stack word (`ret 4`).\\n16: It grows only when `_Mylast == _Myend`, through `0x007b5820(this, 1)`, then invokes the\\n17: `0x0079a150` element-copy helper and advances `_Mylast` by exactly `0x2c`. The source-inside-vector\\n18: and source-outside-vector branches both lead to this copy helper; the former recomputes the source\\n19: from its pre-growth index. Thus append copies the temporary rather than adopting its string header.\\n20: * The `0x0079a150` helper constructs a destination `ObservedTech`: vptr, words `+4/+6`, byte `+8`,\\n21: string copy via `0x00425430`, and word `+0x28`. It is a copy construction ...\n Line 18: {\"type\":\"tool_use\",\"timestamp\":1788999069540,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_SkKYKEGOswtZLtWfpkxWLbDa\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-410e48d5ae6cc4da0a6ae649.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-410e48d5ae6cc4da0a6ae649.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"controls-architect\\\",\\n3: \\\"contract\\\": \\\"controls-bootstrap\\\",\\n4: \\\"decision\\\": \\\"d-42c6d0b4ee5114e6f2e07c99\\\",\\n5: \\\"id\\\": \\\"s-410e48d5ae6cc4da0a6ae649\\\",\\n6: \\\"model\\\": \\\"openai/gpt-6-astra\\\",\\n7: \\\"probe\\\": \\\"Introduce an immutable typed acceptance package binding candidate/integrated source manifests, built binary, inputs and per-criterion results; change source bytes at unchanged HEAD and require integration/acceptance rejection.\\\",\\n8: \\\"role\\\": \\\"architecture-review\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Independent review R4: lifecycle source binding checks baseline path/commit and artifact hashes, but not the actual candidate/integrated source manifest. Implementation bytes can change at the same HEAD without invalidating the current evidence/verdict. This requires a cross-cutting evidence package/interface decision with publishing and gate owners.\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-09T21:34:52.829937+00:00\\\"\\n13: }\\n\\n(End of file - total 13 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"actor\\\": \\\"controls-architect\\\",\\n \\\"contract\\\": \\\"controls-bootstrap\\\",\\n \\\"decision\\\": \\\"d-42c6d0b4ee5114e6f2e07c99\\\",\\n \\\"id\\\": \\\"s-410e48d5ae6cc4da0a6ae649\\\",\\n \\\"model\\\": \\\"openai/gpt-6-astra\\\",\\n \\\"probe\\\": \\\"Introduce an immutable typed acceptance package binding candidate/integrated source manifests, built binary, inputs and per-criterion results; change source bytes at unchanged HEAD and require integration/acceptance rejection.\\\",\\n \\\"rol...\n Line 19: {\"type\":\"tool_use\",\"timestamp\":1788999069557,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_C71KFIyIPjEQeaPDOSElW9AN\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-4a7d66ebd7d8a8f3ec59f11d.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-4a7d66ebd7d8a8f3ec59f11d.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"controls-independent-verifier\\\",\\n3: \\\"contract\\\": \\\"controls-bootstrap\\\",\\n4: \\\"decision\\\": \\\"d-2570bf9c76ae66711bdac461\\\",\\n5: \\\"id\\\": \\\"s-4a7d66ebd7d8a8f3ec59f11d\\\",\\n6: \\\"model\\\": \\\"openai/gpt-5.6-terra\\\",\\n7: \\\"probe\\\": \\\"Parse every nonblank JSONL line of campaign/runtime/runs/run-cb15199f9272fe496bd10a8a.jsonl; compare count, error events, stop events, sessions, source_before/source_after and run record fields. Determine whether the false 24-event assertion invalidates only narrative verifier artifacts or the integrated controls evidence/verdict package.\\\",\\n8: \\\"role\\\": \\\"verifier\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Contradictory prior verification claim: verdict controls-bootstrap.json and checkpoint b467c2d772260f1f03637133 report 24 parsed events for run-cb15199f9272fe496bd10a8a, but independent JSONL parsing finds 67 valid events. The run record itself reports event_count 67. The zero-error, one-session, one-stop, return-0 and unchanged-source facts agree; the count claim is false. Existing source-bound evidence does not document this raw-run count, so its acceptance impact needs Astra resolution before a new verdict.\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-09T22:17:38.435822+00:00\\\"\\n13: }\\n\\n(End of file - total 13 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"actor\\\": \\\"controls-independent-verifier\\\",\\n \\\"contract\\\": \\\"controls-bootstrap\\\",\\n \\\"decision\\\": \\\"d-2570bf9c76ae66711bdac461\\\",\\n \\\"id\\\": \\\"s-4a7d66ebd7d8a8f3ec59f11d\\\",\\n ...\n Line 20: {\"type\":\"tool_use\",\"timestamp\":1788999069566,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_rK9R0P8XX4TFRqyIcHnTPGK7\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"rollout-lead\\\",\\n3: \\\"contract\\\": \\\"controls-bootstrap\\\",\\n4: \\\"decision\\\": \\\"d-6239404c8f40351310c8abf0\\\",\\n5: \\\"id\\\": \\\"s-6d1fcc617a20ca2bcbffc0cc\\\",\\n6: \\\"model\\\": \\\"openai/gpt-6-astra\\\",\\n7: \\\"probe\\\": \\\"Allow verifier launch in verification and integration; reject owner overlap, source drift and open surprises in both.\\\",\\n8: \\\"role\\\": \\\"lead\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Independent Astra R8: verifier launch permits verification only, but final integrated evidence requires a fresh verifier execution in integration.\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-09T22:09:56.316247+00:00\\\"\\n13: }\\n\\n(End of file - total 13 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"actor\\\": \\\"rollout-lead\\\",\\n \\\"contract\\\": \\\"controls-bootstrap\\\",\\n \\\"decision\\\": \\\"d-6239404c8f40351310c8abf0\\\",\\n \\\"id\\\": \\\"s-6d1fcc617a20ca2bcbffc0cc\\\",\\n \\\"model\\\": \\\"openai/gpt-6-astra\\\",\\n \\\"probe\\\": \\\"Allow verifier launch in verification and integration; reject owner overlap, source drift and open surprises in both.\\\",\\n \\\"role\\\": \\\"lead\\\",\\n \\\"schema\\\": \\\"sots-surprise/1\\\",\\n \\\"status\\\": \\\"resolved\\\",\\n \\\"summary\\\": \\\"Independent Astra R8: verifier launch permits verification only, but final integrated evidence requires a fresh verifier execution in integration.\\\",\\n \\\"timestamp\\\": \\\"2026-09-09T22:09:56.316247+00:00\\\"\\n}\",\"truncated\":false,\"loaded\":[],\"display\":{\"type\":\"file\",\"path\":\"/home/alex/sots-re/campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json\",\"t...\n Line 21: {\"type\":\"tool_use\",\"timestamp\":1788999069604,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_LaOWejGEoB6cFXhILaLx060j\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-8996365dab2cd6dc0e17bb9f.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-8996365dab2cd6dc0e17bb9f.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"research-abi-analyst\\\",\\n3: \\\"contract\\\": \\\"research-completion-abi\\\",\\n4: \\\"decision\\\": \\\"d-2ff30c9f5355116bea822924\\\",\\n5: \\\"id\\\": \\\"s-8996365dab2cd6dc0e17bb9f\\\",\\n6: \\\"model\\\": \\\"openai/gpt-5.6-sol\\\",\\n7: \\\"probe\\\": \\\"First verify 0x0046f8c0 is std::string equality (or otherwise characterize it) from independent raw instructions/callers; then use or construct two same-bucket PlayerEvents identical in EvAct/EvLoc/EvPos/EvMsg/EvImg but differing only in EvDsc. If 0x00825d40 returns null they are distinct and EvDsc is compared; if it returns the existing element the inherited omission survives and the call has another meaning.\\\",\\n8: \\\"role\\\": \\\"analyst\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Fresh raw GNU objdump capture contradicts the standing event dedup semantic claim in findings/subsystems/events.md:185 that EvDsc is not compared. At 0x00825e11 candidate+0x08 and 0x00825e15 stored+0x08 are passed to 0x0046f8c0; its boolean result at 0x00825e21 branches to match return only when true. This occurs after EvAct, EvLoc, EvPos, EvMsg and EvImg comparisons, so description appears to participate in equality. The affected dedup interpretation is paused; no implementation or acceptance claim may use either version pending Astra resolution.\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-09T23:47:56.138628+00:00\\\"\\n13: }\\n\\n(End of file - total 13 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"actor\\\": \\\"research-abi-analyst\\\",\\n \\\"contract\\\": \\\"research-completion-a...\n Line 22: {\"type\":\"tool_use\",\"timestamp\":1788999069638,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_x7YYKqriGBzXNxXA8do6kkml\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/models.json\"},\"output\":\"/home/alex/sots-re/campaign/models.json\\nfile\\n\\n1: {\\n2: \\\"schema\\\": \\\"sots-models/1\\\",\\n3: \\\"roles\\\": {\\n4: \\\"lead\\\": \\\"openai/gpt-5.6-sol\\\",\\n5: \\\"resolver\\\": \\\"openai/gpt-6-astra\\\",\\n6: \\\"architecture-review\\\": \\\"openai/gpt-5.6-sol\\\",\\n7: \\\"analyst\\\": \\\"openai/gpt-5.6-sol\\\",\\n8: \\\"implementer\\\": \\\"openai/gpt-5.6-sol\\\",\\n9: \\\"verifier\\\": \\\"openai/gpt-5.6-sol\\\",\\n10: \\\"lab\\\": \\\"openai/gpt-5.6-sol\\\"\\n11: },\\n12: \\\"agents\\\": {\\n13: \\\"lead\\\": \\\"sots-lead\\\",\\n14: \\\"resolver\\\": \\\"sots-resolver\\\",\\n15: \\\"architecture-review\\\": \\\"sots-lead\\\",\\n16: \\\"analyst\\\": \\\"sots-analyst\\\",\\n17: \\\"implementer\\\": \\\"sots-implementer\\\",\\n18: \\\"verifier\\\": \\\"sots-verifier\\\",\\n19: \\\"lab\\\": \\\"sots-lab\\\"\\n20: },\\n21: \\\"max_steps\\\": 40,\\n22: \\\"implementation_wip\\\": 2\\n23: }\\n\\n(End of file - total 23 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"schema\\\": \\\"sots-models/1\\\",\\n \\\"roles\\\": {\\n \\\"lead\\\": \\\"openai/gpt-5.6-sol\\\",\\n \\\"resolver\\\": \\\"openai/gpt-6-astra\\\",\\n \\\"architecture-review\\\": \\\"openai/gpt-5.6-sol\\\",\\n \\\"analyst\\\": \\\"openai/gpt-5.6-sol\\\",\\n \\\"implementer\\\": \\\"openai/gpt-5.6-sol\\\",\\n \\\"verifier\\\": \\\"openai/gpt-5.6-sol\\\",\\n \\\"lab\\\": \\\"openai/gpt-5.6-sol\\\"\\n },\\n \\\"agents\\\": {\\n \\\"lead\\\": \\\"sots-lead\\\",\\n \\\"resolver\\\": \\\"sots-resolver\\\",\\n \\\"architecture-review\\\": \\\"sots-lead\\\",\\n \\\"analyst\\\": \\\"sots-analyst\\\",\\n \\\"implementer\\\": \\\"sots-implementer\\\",\\n \\\"verifier\\\": \\\"sots-verifier\\\",\\n \\\"lab\\\": \\\"sots-lab\\\"\\n },\",\"truncated\":false,\"loaded\":[],\"display\":{\"type\":\"file\",\"path\":\"/home/alex/sots-re/campaign/models.json\",\"text\":\"{\\n \\\"schema\\\": \\\"sots-models/1\\\",\\n \\...\n Line 23: {\"type\":\"tool_use\",\"timestamp\":1788999069651,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_UInOvHB3QhJMGnkTYr6VSbhX\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-abd1c3613c9922cc94c608d5.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-abd1c3613c9922cc94c608d5.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"final-controls-verifier\\\",\\n3: \\\"contract\\\": \\\"controls-bootstrap\\\",\\n4: \\\"decision\\\": \\\"d-d2aeed91781c4da6057f00a7\\\",\\n5: \\\"id\\\": \\\"s-abd1c3613c9922cc94c608d5\\\",\\n6: \\\"model\\\": \\\"openai/gpt-5.6-terra\\\",\\n7: \\\"probe\\\": \\\"From canonical RE, run source-binding once with no worktree arguments and once with the assigned paired paths; confirm the differing RE digest and absence of paired tools/campaign.py plus verify/campaign/test_controls.py. Astra must decide whether independent integrated reproduction may use only dirty canonical trees or provide source-identical linked worktrees and repeat/attest verification.\\\",\\n8: \\\"role\\\": \\\"verifier\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Falsified paired-worktree reproducibility assumption. The assigned /tmp/opencode/sots-launch-re is clean at the pinned RE HEAD but lacks tools/campaign.py and verify/campaign/test_controls.py; its source binding is 67b7b60509fe43c8d23382003fed069fb32549094eea0c039b75475e32a7a9eb, not the evidence binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Engine paired binding likewise differs (949dfb46... versus ccd8e020...). Canonical integrated trees do rehash exactly to the claimed binding and declared binary/input/outcome hashes match, but the supplied isolated paired source cannot reproduce the package from handoff alone. This blocks the final independent integrated verdict under the required linked-worktree/reproduction guard.\\\",\\n12: \\\"timestamp\\\": \\\"2026-09...\n Line 24: {\"type\":\"tool_use\",\"timestamp\":1788999069651,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_8J9G2Xr1k5nnZMbTvzQ3FQzS\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-f1c41532e618c77d41538902.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-f1c41532e618c77d41538902.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"controls-architect\\\",\\n3: \\\"contract\\\": \\\"controls-bootstrap\\\",\\n4: \\\"decision\\\": \\\"d-ab717735fc6c1661919f6894\\\",\\n5: \\\"id\\\": \\\"s-f1c41532e618c77d41538902\\\",\\n6: \\\"model\\\": \\\"openai/gpt-6-astra\\\",\\n7: \\\"probe\\\": \\\"Separate recovery identity/basis/artifact validation from end-run freshness; test old valid recovery state, missing/mismatched state, fresh end-run checkpoint and a resolution-only Astra launch with affected workers still blocked.\\\",\\n8: \\\"role\\\": \\\"architecture-review\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Independent review R6: current launch guard applies 15-minute end-run freshness to recovery, preventing next-day recovery from valid durable state; unconditional open-surprise rejection also prevents a resolver quantum. Assignment explicitly requested no-open-surprise launch guards, so the resolver exception requires lead clarification.\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-09T21:34:59.734916+00:00\\\"\\n13: }\\n\\n(End of file - total 13 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"actor\\\": \\\"controls-architect\\\",\\n \\\"contract\\\": \\\"controls-bootstrap\\\",\\n \\\"decision\\\": \\\"d-ab717735fc6c1661919f6894\\\",\\n \\\"id\\\": \\\"s-f1c41532e618c77d41538902\\\",\\n \\\"model\\\": \\\"openai/gpt-6-astra\\\",\\n \\\"probe\\\": \\\"Separate recovery identity/basis/artifact validation from end-run freshness; test old valid recovery state, missing/mismatched state, fresh end-run checkpoint and a resolution-only Astra launch with affected workers still blocked.\\\",\\n \\\"role\\\": \\...\n Line 27: {\"type\":\"tool_use\",\"timestamp\":1788999084032,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_eUX4hMXo57E631SjE9QnCKiF\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/leases\"},\"output\":\"/home/alex/sots-re/campaign/runtime/leases\\ndirectory\\n\\nspicy-autounattend-credential.json\\nvm140.json\\nvm141.json\\nvm144.json\\nvm145.json\\nvm146.json\\n\\n(6 entries)\\n\",\"metadata\":{\"preview\":\"spicy-autounattend-credential.json\\nvm140.json\\nvm141.json\\nvm144.json\\nvm145.json\\nvm146.json\",\"truncated\":false,\"loaded\":[],\"display\":{\"type\":\"directory\",\"path\":\"/home/alex/sots-re/campaign/runtime/leases\",\"entries\":[\"spicy-autounattend-credential.json\",\"vm140.json\",\"vm141.json\",\"vm144.json\",\"vm145.json\",\"vm146.json\"],\"offset\":1,\"totalEntries\":6,\"truncated\":false}},\"title\":\"campaign/runtime/leases\",\"time\":{\"start\":1788999083982,\"end\":1788999084030}},\"metadata\":{\"openai\":{\"itemId\":\"fc_0b6c83962914538d016aa1f5abc10487d1bafd1bbb2f738903\"}},\"id\":\"prt_088a7a7c7001LPZjlK41XjDguD\",\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"messageID\":\"msg_088a7702d001gnjd95Ee0diXlV\"}}\n\n Line 28: {\"type\":\"tool_use\",\"timestamp\":1788999084083,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"bash\",\"callID\":\"call_rtF2CzkfxEmXnSYEuCTqnORj\",\"state\":{\"status\":\"completed\",\"input\":{\"command\":\"git rev-parse HEAD && git rev-parse --git-common-dir && git status --short\",\"workdir\":\"/tmp/opencode/sots-final-research-engine\"},\"output\":\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\n/home/alex/sots-engine/.git\\n M CONTRIBUTING.md\\n M README.md\\n M docs/S-standalone.md\\n M src/app/turn.cpp\\n M src/game/sim/CMakeLists.txt\\n M src/mars/rng/mt19937.cpp\\n M src/mars/rng/mt19937.h\\n M tests/app/CMakeLists.txt\\n M tests/app/test_command_replay.cpp\\n M tests/app/test_turn.cpp\\n M tests/app/test_turn_record.cpp\\n M tests/game_config/CMakeLists.txt\\n M tests/game_data/CMakeLists.txt\\n M tests/game_design/CMakeLists.txt\\n M tests/game_design/test_census_saves.cpp\\n M tests/game_sim/CMakeLists.txt\\n M tests/mars_stream/CMakeLists.txt\\n M tests/mars_stream/test_domains.cpp\\n M tests/mars_stream/test_rng.cpp\\n M tests/mars_stream/test_save.cpp\\n M tests/mars_text/CMakeLists.txt\\n M tests/mars_vfs/CMakeLists.txt\\n M tools/clean_room_check.sh\\n?? AGENTS.md\\n?? CLAUDE.md\\n?? docs/architecture.md\\n?? opencode.json\\n?? tools/clean_room_check.py\\n\",\"metadata\":{\"output\":\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\n/home/alex/sots-engine/.git\\n M CONTRIBUTING.md\\n M README.md\\n M docs/S-standalone.md\\n M src/app/turn.cpp\\n M src/game/sim/CMakeLists.txt\\n M src/mars/rng/mt19937.cpp\\n M src/mars/rng/mt19937.h\\n M tests/app/CMakeLists.txt\\n M tests/app/test_command_replay.cpp\\n M tests/app/test_turn.cpp\\n M tests/app/test_turn_record.cpp\\n M tests/game_config/CMakeLists.txt\\n M tests/game_data/CMakeLists.txt\\n M tests/game_design/CMakeLists.txt\\n M tests/game_design/test_census_saves.cpp\\n M tests/game_sim/CMakeLists.txt\\n M tests/mars_stream/CMakeLists.txt\\n M tests/mars_stream/test_domains.cpp\\n M tests/mars_stream/test_rng.cpp\\n M tests/mars_stream/test_save.cpp\\n M tests/mars...\n Line 29: {\"type\":\"tool_use\",\"timestamp\":1788999084083,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"bash\",\"callID\":\"call_15UVXinQvXQadBmkkzFecWtZ\",\"state\":{\"status\":\"completed\",\"input\":{\"command\":\"git rev-parse HEAD && git rev-parse --git-common-dir && git status --short\",\"workdir\":\"/tmp/opencode/sots-final-research-re\"},\"output\":\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\n/home/alex/sots-re/.git\\n M README.md\\n M campaign/DASHBOARD.md\\n M campaign/backlog.md\\n M campaign/board.md\\n M campaign/open-questions.md\\n M findings/00-strategy.md\\n M findings/subsystems/nav-classifier-live.md\\n M findings/subsystems/research-replace.md\\n M guides/method-rules.md\\n D scripts/forgejo_campaign.py\\n M tools/DASHBOARD_README.md\\n M tools/dashboard.py\\n D tools/displacement.py\\n M tools/gate.sh\\n M tools/standalone_report.py\\n?? AGENTS.md\\n?? CLAUDE.md\\n?? campaign/README.md\\n?? campaign/agents/\\n?? campaign/contract.schema.json\\n?? campaign/contracts/\\n?? campaign/current.json\\n?? campaign/models.json\\n?? campaign/pilots/\\n?? campaign/research/\\n?? campaign/rollout/\\n?? guides/multi-agent-workflow.md\\n?? guides/windows-lab-housekeeping.md\\n?? opencode.json\\n?? tools/campaign.py\\n?? tools/check_agent_config.py\\n?? tools/evidence.py\\n?? tools/gate.py\\n?? tools/run_agent.py\\n?? tools/select_evidence.py\\n?? tools/windows-housekeeping/\\n?? verify/campaign/\\n?? verify/config/\\n?? verify/publishing/\\n?? verify/results/housekeeping/\\n?? verify/tooling/\\n\",\"metadata\":{\"output\":\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\n/home/alex/sots-re/.git\\n M README.md\\n M campaign/DASHBOARD.md\\n M campaign/backlog.md\\n M campaign/board.md\\n M campaign/open-questions.md\\n M findings/00-strategy.md\\n M findings/subsystems/nav-classifier-live.md\\n M findings/subsystems/research-replace.md\\n M guides/method-rules.md\\n D scripts/forgejo_campaign.py\\n M tools/DASHBOARD_README.md\\n M tools/dashboard.py\\n D tools/displacement.py\\n M tools/gate.sh\\n M tools/standalone_report.py\\n?? AGENTS....\n Line 30: {\"type\":\"tool_use\",\"timestamp\":1788999084098,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"bash\",\"callID\":\"call_G2kruACRdmZovtwzRsbU1SPt\",\"state\":{\"status\":\"completed\",\"input\":{\"command\":\"python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi\",\"workdir\":\"/home/alex/sots-re\"},\"output\":\"[\\n {\\n \\\"acceptance\\\": [\\n {\\n \\\"axis\\\": \\\"static-recovery\\\",\\n \\\"criterion\\\": \\\"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\\\",\\n \\\"id\\\": \\\"ownership-recovered\\\"\\n },\\n {\\n \\\"axis\\\": \\\"validation\\\",\\n \\\"criterion\\\": \\\"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\\\",\\n \\\"id\\\": \\\"independent-cross-check\\\"\\n }\\n ],\\n \\\"baseline\\\": {\\n \\\"engine\\\": {\\n \\\"commit\\\": \\\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\\",\\n \\\"path\\\": \\\"/home/alex/sots-engine\\\"\\n },\\n \\\"re\\\": {\\n \\\"commit\\\": \\\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\\",\\n \\\"path\\\": \\\"/home/alex/sots-re\\\"\\n }\\n },\\n \\\"checkpoint\\\": \\\"campaign/runtime/checkpoints/research-completion-abi-60c9ef4651c469b0a90d9906.json\\\",\\n \\\"dependencies\\\": [\\n \\\"controls-bootstrap\\\"\\n ],\\n \\\"effects\\\": [\\n \\\"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\\\"\\n ],\\n \\\"evidence\\\": [],\\n \\\"id\\\": \\\"research-completion-abi\\\",\\n \\\"inputs\\\": [\\n \\\"Existing binary fingerprint/address contract and private RE findings\\\",\\n \\\"Owner-supplied binary or live read-only ReVa endpoint\\\",\\n \\\"Archived CR traces/saves for observed behavior\\\",\\n \\\"Source-identical current engine/R...\n Line 31: {\"type\":\"tool_use\",\"timestamp\":1788999084115,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"glob\",\"callID\":\"call_qJSE43RyRWtIOaePLTeNnn19\",\"state\":{\"status\":\"completed\",\"input\":{\"path\":\"/home/alex/sots-re\",\"pattern\":\"**/sots.exe\"},\"output\":\"No files found\",\"metadata\":{\"count\":0,\"truncated\":false},\"title\":\"\",\"time\":{\"start\":1788999084093,\"end\":1788999084113}},\"metadata\":{\"openai\":{\"itemId\":\"fc_0b6c83962914538d016aa1f5abc11087d186cfedecf33255c6\"}},\"id\":\"prt_088a7a7d2001jfPZpvZ6hyXVKw\",\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"messageID\":\"msg_088a7702d001gnjd95Ee0diXlV\"}}\n\n Line 32: {\"type\":\"tool_use\",\"timestamp\":1788999084207,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"bash\",\"callID\":\"call_twRG7dFl251cIRGrBesi3pq3\",\"state\":{\"status\":\"completed\",\"input\":{\"command\":\"python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re\",\"workdir\":\"/home/alex/sots-re\"},\"output\":\"{\\n \\\"engine\\\": {\\n \\\"commit\\\": \\\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\\",\\n \\\"path\\\": \\\"/tmp/opencode/sots-final-research-engine\\\",\\n \\\"sha256\\\": \\\"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\\\"\\n },\\n \\\"re\\\": {\\n \\\"commit\\\": \\\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\\",\\n \\\"path\\\": \\\"/tmp/opencode/sots-final-research-re\\\",\\n \\\"sha256\\\": \\\"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\\\"\\n }\\n}\\n\",\"metadata\":{\"output\":\"{\\n \\\"engine\\\": {\\n \\\"commit\\\": \\\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\\",\\n \\\"path\\\": \\\"/tmp/opencode/sots-final-research-engine\\\",\\n \\\"sha256\\\": \\\"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\\\"\\n },\\n \\\"re\\\": {\\n \\\"commit\\\": \\\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\\",\\n \\\"path\\\": \\\"/tmp/opencode/sots-final-research-re\\\",\\n \\\"sha256\\\": \\\"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\\\"\\n }\\n}\\n\",\"exit\":0,\"truncated\":false},\"title\":\"python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re\",\"time\":{\"start\":1788999083973,\"end\":1788999084204}},\"metadata\":{\"openai\":{\"itemId\":\"fc_0b6c83962914538d016aa1f5abc0fc87d187ed965136b79667\"}},\"id\":\"prt_088a7a7bf0012tcRyo2cFre6zk\",\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"messageID\":\"msg_088a7702d001gnjd95Ee0diXlV\"}}\n\n Line 35: {\"type\":\"tool_use\",\"timestamp\":1788999099186,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_iPzsudXNRhT97vLHDjzYAG3d\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/verify/results/research-completion-abi/reva-2026-09-09-index.md\"},\"output\":\"/home/alex/sots-re/verify/results/research-completion-abi/reva-2026-09-09-index.md\\nfile\\n\\n1: # Read-only capture / provenance index\\n2: \\n3: Initial ReVa session: `run-1b88df9d169e9517a5e1b0f0`.\\n4: \\n5: ReVa selected program: `/Sword of the Stars.exe`; reported MD5:\\n6: `9969481c39f4b33a8a21c48b62abee4c`. The initial ReVa service did not expose a local path or\\n7: SHA-256. This limitation is now resolved for the static analysis input only: local\\n8: `dumps/sots.exe` has the same MD5 and SHA-256\\n9: `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`, as independently recorded\\n10: in `campaign/research/record-observation-crosscheck.md`. This binds the local objdump captures to\\n11: the ReVa-selected binary fingerprint; it does not bind any live runtime, allocator, asset, or shim.\\n12: \\n13: | Anchor | Fresh static observation |\\n14: |---|---|\\n15: | `0x007ba1a0` | `read-memory` returned 256 bytes; decompilation reports 395 bytes, four callers including `OnTechResearched` at `0x008917dc`. |\\n16: | `0x008862b0` | `read-memory` returned 435 bytes; decompilation reports 435 bytes and 161 incoming references. |\\n17: | `0x0084ee30` | `read-memory` returned 196 bytes; decompilation reports a 196-byte `__fastcall` constructor and six incoming references. |\\n18: \\n19: Requests used the live schema: `programPath=/Sword of the Stars.exe`,\\n20: `addressOrSymbol` for memory, and `functionNameOrAddress` for decompilation. All calls were\\n21: read-only; no Ghidra, VM, or source mutation occurred.\\n22: \\n23: ## Local instruction capture added in this quantum\\n24: \\n25: `objdump-2026-09-09-ownership.txt` contains selected r...\n Line 36: {\"type\":\"tool_use\",\"timestamp\":1788999099186,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_osCSfTh7fGih1bO905b4ZqcX\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/leases/spicy-autounattend-credential.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/leases/spicy-autounattend-credential.json\\nfile\\n\\n1: {\\n2: \\\"explicit_lead_release\\\": false,\\n3: \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n4: \\\"owner\\\": \\\"housekeeping-completion\\\",\\n5: \\\"release_reason\\\": null,\\n6: \\\"released_at\\\": \\\"2026-09-09T22:03:21.387455+00:00\\\",\\n7: \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n8: \\\"resource\\\": \\\"spicy-autounattend-credential\\\",\\n9: \\\"role\\\": \\\"lab\\\",\\n10: \\\"schema\\\": \\\"sots-lease/1\\\",\\n11: \\\"status\\\": \\\"released\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-09T21:55:23.869637+00:00\\\",\\n13: \\\"token\\\": \\\"cac620afe776eb3937f988f70fcf3bc56355200f3802f2c94a54b223c7406f18\\\"\\n14: }\\n\\n(End of file - total 14 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"explicit_lead_release\\\": false,\\n \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n \\\"owner\\\": \\\"housekeeping-completion\\\",\\n \\\"release_reason\\\": null,\\n \\\"released_at\\\": \\\"2026-09-09T22:03:21.387455+00:00\\\",\\n \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n \\\"resource\\\": \\\"spicy-autounattend-credential\\\",\\n \\\"role\\\": \\\"lab\\\",\\n \\\"schema\\\": \\\"sots-lease/1\\\",\\n \\\"status\\\": \\\"released\\\",\\n \\\"timestamp\\\": \\\"2026-09-09T21:55:23.869637+00:00\\\",\\n \\\"token\\\": \\\"cac620afe776eb3937f988f70fcf3bc56355200f3802f2c94a54b223c7406f18\\\"\\n}\",\"truncated\":false,\"loaded\":[],\"display\":{\"type\":\"file\",\"path\":\"/home/alex/sots-re/campaign/runtime/leases/spicy-autounattend-credential.json\",\"text\":\"{\\n \\\"explicit_lead_release\\\": false,\\n \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n \\\"owner\\\": \\\"housekeeping-completion\\\",\\n \\\"release_reason\\\": null,\\n \\\"released_at\\\": \\\"2026-09-09T22:03:21.387455+00:00\\\",\\n \\\"released_by\\\": \\\"housekeeping-comp...\n Line 37: {\"type\":\"tool_use\",\"timestamp\":1788999099186,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_6WrNU1ti0ncPt0fRQi9rix61\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/leases/vm140.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/leases/vm140.json\\nfile\\n\\n1: {\\n2: \\\"explicit_lead_release\\\": false,\\n3: \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n4: \\\"owner\\\": \\\"housekeeping-completion\\\",\\n5: \\\"release_reason\\\": null,\\n6: \\\"released_at\\\": \\\"2026-09-09T22:03:21.149819+00:00\\\",\\n7: \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n8: \\\"resource\\\": \\\"vm140\\\",\\n9: \\\"role\\\": \\\"lab\\\",\\n10: \\\"schema\\\": \\\"sots-lease/1\\\",\\n11: \\\"status\\\": \\\"released\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-09T21:56:15.408956+00:00\\\",\\n13: \\\"token\\\": \\\"f15ae24f5cf811ab726c90ccd6a9edbb5ed7167da2f3bf0dbe6f93912522445e\\\"\\n14: }\\n\\n(End of file - total 14 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"explicit_lead_release\\\": false,\\n \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n \\\"owner\\\": \\\"housekeeping-completion\\\",\\n \\\"release_reason\\\": null,\\n \\\"released_at\\\": \\\"2026-09-09T22:03:21.149819+00:00\\\",\\n \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n \\\"resource\\\": \\\"vm140\\\",\\n \\\"role\\\": \\\"lab\\\",\\n \\\"schema\\\": \\\"sots-lease/1\\\",\\n \\\"status\\\": \\\"released\\\",\\n \\\"timestamp\\\": \\\"2026-09-09T21:56:15.408956+00:00\\\",\\n \\\"token\\\": \\\"f15ae24f5cf811ab726c90ccd6a9edbb5ed7167da2f3bf0dbe6f93912522445e\\\"\\n}\",\"truncated\":false,\"loaded\":[],\"display\":{\"type\":\"file\",\"path\":\"/home/alex/sots-re/campaign/runtime/leases/vm140.json\",\"text\":\"{\\n \\\"explicit_lead_release\\\": false,\\n \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n \\\"owner\\\": \\\"housekeeping-completion\\\",\\n \\\"release_reason\\\": null,\\n \\\"released_at\\\": \\\"2026-09-09T22:03:21.149819+00:00\\\",\\n \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n \\\"resource\\\": \\\"vm140\\\",\\n \\\"role\\\": \\\"lab\\\",\\n \\\"schema\\\": \\\"sots-lease/1\\\",\\n \\\"status\\\": \\\"released\\\"...\n Line 38: {\"type\":\"tool_use\",\"timestamp\":1788999099186,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_idXtDS5kmFtBVM6f25L0SBI0\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/leases/vm141.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/leases/vm141.json\\nfile\\n\\n1: {\\n2: \\\"explicit_lead_release\\\": false,\\n3: \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n4: \\\"owner\\\": \\\"housekeeping-completion\\\",\\n5: \\\"release_reason\\\": null,\\n6: \\\"released_at\\\": \\\"2026-09-09T22:03:21.200715+00:00\\\",\\n7: \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n8: \\\"resource\\\": \\\"vm141\\\",\\n9: \\\"role\\\": \\\"lab\\\",\\n10: \\\"schema\\\": \\\"sots-lease/1\\\",\\n11: \\\"status\\\": \\\"released\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-09T21:56:15.464000+00:00\\\",\\n13: \\\"token\\\": \\\"01112deb9d26a1d2d8c573959ccb03ef1c5f1200381ea95b50520a5dbda828a8\\\"\\n14: }\\n\\n(End of file - total 14 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"explicit_lead_release\\\": false,\\n \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n \\\"owner\\\": \\\"housekeeping-completion\\\",\\n \\\"release_reason\\\": null,\\n \\\"released_at\\\": \\\"2026-09-09T22:03:21.200715+00:00\\\",\\n \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n \\\"resource\\\": \\\"vm141\\\",\\n \\\"role\\\": \\\"lab\\\",\\n \\\"schema\\\": \\\"sots-lease/1\\\",\\n \\\"status\\\": \\\"released\\\",\\n \\\"timestamp\\\": \\\"2026-09-09T21:56:15.464000+00:00\\\",\\n \\\"token\\\": \\\"01112deb9d26a1d2d8c573959ccb03ef1c5f1200381ea95b50520a5dbda828a8\\\"\\n}\",\"truncated\":false,\"loaded\":[],\"display\":{\"type\":\"file\",\"path\":\"/home/alex/sots-re/campaign/runtime/leases/vm141.json\",\"text\":\"{\\n \\\"explicit_lead_release\\\": false,\\n \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n \\\"owner\\\": \\\"housekeeping-completion\\\",\\n \\\"release_reason\\\": null,\\n \\\"released_at\\\": \\\"2026-09-09T22:03:21.200715+00:00\\\",\\n \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n \\\"resource\\\": \\\"vm141\\\",\\n \\\"role\\\": \\\"lab\\\",\\n \\\"schema\\\": \\\"sots-lease/1\\\",\\n \\\"status\\\": \\\"released\\\"...\n Line 39: {\"type\":\"tool_use\",\"timestamp\":1788999099186,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_GlRSt7wOHpTHAmaTJpePybVv\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/leases/vm144.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/leases/vm144.json\\nfile\\n\\n1: {\\n2: \\\"explicit_lead_release\\\": false,\\n3: \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n4: \\\"owner\\\": \\\"housekeeping-completion\\\",\\n5: \\\"release_reason\\\": null,\\n6: \\\"released_at\\\": \\\"2026-09-09T22:03:21.248149+00:00\\\",\\n7: \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n8: \\\"resource\\\": \\\"vm144\\\",\\n9: \\\"role\\\": \\\"lab\\\",\\n10: \\\"schema\\\": \\\"sots-lease/1\\\",\\n11: \\\"status\\\": \\\"released\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-09T21:56:15.518234+00:00\\\",\\n13: \\\"token\\\": \\\"e56f3ae337d7d1fbd922dc0843553d8c418078c94ce4e28b3279bee9c4f1cabc\\\"\\n14: }\\n\\n(End of file - total 14 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"explicit_lead_release\\\": false,\\n \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n \\\"owner\\\": \\\"housekeeping-completion\\\",\\n \\\"release_reason\\\": null,\\n \\\"released_at\\\": \\\"2026-09-09T22:03:21.248149+00:00\\\",\\n \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n \\\"resource\\\": \\\"vm144\\\",\\n \\\"role\\\": \\\"lab\\\",\\n \\\"schema\\\": \\\"sots-lease/1\\\",\\n \\\"status\\\": \\\"released\\\",\\n \\\"timestamp\\\": \\\"2026-09-09T21:56:15.518234+00:00\\\",\\n \\\"token\\\": \\\"e56f3ae337d7d1fbd922dc0843553d8c418078c94ce4e28b3279bee9c4f1cabc\\\"\\n}\",\"truncated\":false,\"loaded\":[],\"display\":{\"type\":\"file\",\"path\":\"/home/alex/sots-re/campaign/runtime/leases/vm144.json\",\"text\":\"{\\n \\\"explicit_lead_release\\\": false,\\n \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n \\\"owner\\\": \\\"housekeeping-completion\\\",\\n \\\"release_reason\\\": null,\\n \\\"released_at\\\": \\\"2026-09-09T22:03:21.248149+00:00\\\",\\n \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n \\\"resource\\\": \\\"vm144\\\",\\n \\\"role\\\": \\\"lab\\\",\\n \\\"schema\\\": \\\"sots-lease/1\\\",\\n \\\"status\\\": \\\"released\\\"...\n Line 40: {\"type\":\"tool_use\",\"timestamp\":1788999099186,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_SzSEy6kJzvUiFnP3tFh84QlO\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/leases/vm145.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/leases/vm145.json\\nfile\\n\\n1: {\\n2: \\\"explicit_lead_release\\\": false,\\n3: \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n4: \\\"owner\\\": \\\"housekeeping-completion\\\",\\n5: \\\"release_reason\\\": null,\\n6: \\\"released_at\\\": \\\"2026-09-09T22:03:21.294269+00:00\\\",\\n7: \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n8: \\\"resource\\\": \\\"vm145\\\",\\n9: \\\"role\\\": \\\"lab\\\",\\n10: \\\"schema\\\": \\\"sots-lease/1\\\",\\n11: \\\"status\\\": \\\"released\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-09T21:56:15.569712+00:00\\\",\\n13: \\\"token\\\": \\\"c9af3ea251147edd22bd8cc2362cbe88acb32fa4cab71d60465001d541337e04\\\"\\n14: }\\n\\n(End of file - total 14 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"explicit_lead_release\\\": false,\\n \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n \\\"owner\\\": \\\"housekeeping-completion\\\",\\n \\\"release_reason\\\": null,\\n \\\"released_at\\\": \\\"2026-09-09T22:03:21.294269+00:00\\\",\\n \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n \\\"resource\\\": \\\"vm145\\\",\\n \\\"role\\\": \\\"lab\\\",\\n \\\"schema\\\": \\\"sots-lease/1\\\",\\n \\\"status\\\": \\\"released\\\",\\n \\\"timestamp\\\": \\\"2026-09-09T21:56:15.569712+00:00\\\",\\n \\\"token\\\": \\\"c9af3ea251147edd22bd8cc2362cbe88acb32fa4cab71d60465001d541337e04\\\"\\n}\",\"truncated\":false,\"loaded\":[],\"display\":{\"type\":\"file\",\"path\":\"/home/alex/sots-re/campaign/runtime/leases/vm145.json\",\"text\":\"{\\n \\\"explicit_lead_release\\\": false,\\n \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n \\\"owner\\\": \\\"housekeeping-completion\\\",\\n \\\"release_reason\\\": null,\\n \\\"released_at\\\": \\\"2026-09-09T22:03:21.294269+00:00\\\",\\n \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n \\\"resource\\\": \\\"vm145\\\",\\n \\\"role\\\": \\\"lab\\\",\\n \\\"schema\\\": \\\"sots-lease/1\\\",\\n \\\"status\\\": \\\"released\\\"...\n Line 41: {\"type\":\"tool_use\",\"timestamp\":1788999099186,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_Gqkugez4pfTNeeCyk3ephGQk\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/leases/vm146.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/leases/vm146.json\\nfile\\n\\n1: {\\n2: \\\"explicit_lead_release\\\": false,\\n3: \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n4: \\\"owner\\\": \\\"housekeeping-completion\\\",\\n5: \\\"release_reason\\\": null,\\n6: \\\"released_at\\\": \\\"2026-09-09T22:03:21.341416+00:00\\\",\\n7: \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n8: \\\"resource\\\": \\\"vm146\\\",\\n9: \\\"role\\\": \\\"lab\\\",\\n10: \\\"schema\\\": \\\"sots-lease/1\\\",\\n11: \\\"status\\\": \\\"released\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-09T21:55:23.816235+00:00\\\",\\n13: \\\"token\\\": \\\"09f644fbde3be7c9721e36c553db40751d74e92597a9e796819bafc47c5dec21\\\"\\n14: }\\n\\n(End of file - total 14 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"explicit_lead_release\\\": false,\\n \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n \\\"owner\\\": \\\"housekeeping-completion\\\",\\n \\\"release_reason\\\": null,\\n \\\"released_at\\\": \\\"2026-09-09T22:03:21.341416+00:00\\\",\\n \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n \\\"resource\\\": \\\"vm146\\\",\\n \\\"role\\\": \\\"lab\\\",\\n \\\"schema\\\": \\\"sots-lease/1\\\",\\n \\\"status\\\": \\\"released\\\",\\n \\\"timestamp\\\": \\\"2026-09-09T21:55:23.816235+00:00\\\",\\n \\\"token\\\": \\\"09f644fbde3be7c9721e36c553db40751d74e92597a9e796819bafc47c5dec21\\\"\\n}\",\"truncated\":false,\"loaded\":[],\"display\":{\"type\":\"file\",\"path\":\"/home/alex/sots-re/campaign/runtime/leases/vm146.json\",\"text\":\"{\\n \\\"explicit_lead_release\\\": false,\\n \\\"model\\\": \\\"openai/gpt-5.5\\\",\\n \\\"owner\\\": \\\"housekeeping-completion\\\",\\n \\\"release_reason\\\": null,\\n \\\"released_at\\\": \\\"2026-09-09T22:03:21.341416+00:00\\\",\\n \\\"released_by\\\": \\\"housekeeping-completion\\\",\\n \\\"resource\\\": \\\"vm146\\\",\\n \\\"role\\\": \\\"lab\\\",\\n \\\"schema\\\": \\\"sots-lease/1\\\",\\n \\\"status\\\": \\\"released\\\"...\n Line 42: {\"type\":\"tool_use\",\"timestamp\":1788999099186,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_zdYtSal2lvae90CUXMZ6wgdY\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt\",\"offset\":1,\"limit\":80},\"output\":\"/home/alex/sots-re/verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt\\nfile\\n\\n1: # Read-only local capture. Input: dumps/sots.exe\\n2: # SHA-256: 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\\n3: # Tool: GNU objdump (GNU Binutils for Ubuntu) 2.38, Intel syntax.\\n4: # Every command below exited 0. Output is unfiltered.\\n5: #\\n6: # $ objdump -D -Mintel --start-address=0x00825d40 --stop-address=0x00825e65 dumps/sots.exe\\n7: \\n8: dumps/sots.exe: file format pei-i386\\n9: \\n10: \\n11: Disassembly of section .text:\\n12: \\n13: 00825d40 <.text+0x424d40>:\\n14: 825d40:\\t55 \\tpush ebp\\n15: 825d41:\\t8b ec \\tmov ebp,esp\\n16: 825d43:\\t51 \\tpush ecx\\n17: 825d44:\\t53 \\tpush ebx\\n18: 825d45:\\t8b 5d 08 \\tmov ebx,DWORD PTR [ebp+0x8]\\n19: 825d48:\\t56 \\tpush esi\\n20: 825d49:\\t33 f6 \\txor esi,esi\\n21: 825d4b:\\t3b de \\tcmp ebx,esi\\n22: 825d4d:\\t75 0a \\tjne 0x825d59\\n23: 825d4f:\\t5e \\tpop esi\\n24: 825d50:\\t33 c0 \\txor eax,eax\\n25: 825d52:\\t5b \\tpop ebx\\n26: 825d53:\\t8b e5 \\tmov esp,ebp\\n27: 825d55:\\t5d \\tpop ebp\\n28: 825d56:\\tc2 08 00 \\tret 0x8\\n29: 825d59:\\t8b 4b 0c \\tmov ecx,DWORD PTR [ebx+0xc]\\n30: 825d5c:\\t2b 4b 08 \\tsub ecx,DWORD PTR [ebx+0x8]\\n31: 825d5f:\\tb8 09 cb 3d 8d \\tmov eax,0x8d3dcb09\\n32: 825d64:\\tf7 e9 ...\n Line 45: {\"type\":\"tool_use\",\"timestamp\":1788999112994,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"todowrite\",\"callID\":\"call_orTqQdy8eLlX7hD3uwFULVEV\",\"state\":{\"status\":\"completed\",\"input\":{\"todos\":[{\"content\":\"Read campaign authority, contract, checkpoint, and open surprises\",\"status\":\"completed\",\"priority\":\"high\"},{\"content\":\"Verify worktree, source, and resource identities against contract/checkpoint\",\"status\":\"completed\",\"priority\":\"high\"},{\"content\":\"Execute the checkpoint's exact next bounded ABI research action\",\"status\":\"cancelled\",\"priority\":\"high\"},{\"content\":\"Persist mandatory fresh canonical checkpoint and stop\",\"status\":\"in_progress\",\"priority\":\"high\"}]},\"output\":\"[\\n {\\n \\\"content\\\": \\\"Read campaign authority, contract, checkpoint, and open surprises\\\",\\n \\\"status\\\": \\\"completed\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Verify worktree, source, and resource identities against contract/checkpoint\\\",\\n \\\"status\\\": \\\"completed\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Execute the checkpoint's exact next bounded ABI research action\\\",\\n \\\"status\\\": \\\"cancelled\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Persist mandatory fresh canonical checkpoint and stop\\\",\\n \\\"status\\\": \\\"in_progress\\\",\\n \\\"priority\\\": \\\"high\\\"\\n }\\n]\",\"metadata\":{\"todos\":[{\"content\":\"Read campaign authority, contract, checkpoint, and open surprises\",\"status\":\"completed\",\"priority\":\"high\"},{\"content\":\"Verify worktree, source, and resource identities against contract/checkpoint\",\"status\":\"completed\",\"priority\":\"high\"},{\"content\":\"Execute the checkpoint's exact next bounded ABI research action\",\"status\":\"cancelled\",\"priority\":\"high\"},{\"content\":\"Persist mandatory fresh canonical checkpoint and stop\",\"status\":\"in_progress\",\"priority\":\"high\"}],\"truncated\":false},\"title\":\"2 todos\",\"time\":{\"start\":1788999112988,\"end\":1788999112992}},\"metadata\":{\"openai\":{\"itemId\":\"fc_00a7746040821113016aa1f5c604...\n Line 48: {\"type\":\"tool_use\",\"timestamp\":1788999145627,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"bash\",\"callID\":\"call_ACJsKGJ3cc45W4Gf6OJ0rFVf\",\"state\":{\"status\":\"completed\",\"input\":{\"command\":\"python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-abi-analyst --role analyst --model openai/gpt-5.6-sol --session run-c98b95381afc4933dad98898 --summary 'Fresh recovery/stop checkpoint for bounded analyst quantum. Static observations versus decisions: no new ABI interpretation or measurement was produced; the prior static handoff and dedup/helper repair remain the current analyst record, and Astra decision d-2ff30c9f5355116bea822924 remains resolved. All six canonical surprise records were read; campaign status reports no open surprises for this contract. The prior checkpoint exact next action is explicitly a lead action to launch an independent verifier, so this analyst did not delegate, self-verify, promote a claim, repeat completed analysis, or change architecture. Identity observations: requested/claimed model openai/gpt-5.6-sol matches campaign/models.json analyst registry. Engine worktree /tmp/opencode/sots-final-research-engine is HEAD 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 with common dir /home/alex/sots-engine/.git and source-binding ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd. RE worktree /tmp/opencode/sots-final-research-re is HEAD 3bfde5a70d874a723e797a695bbd847fd82c0aa7 with common dir /home/alex/sots-re/.git and source-binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Both retain the pre-existing dirty inventories described by the prior checkpoint; this quantum edited neither worktree and owns no source change. Artifact/input observation: archived index continues to identify dumps/sots.exe as SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841 / MD5 9969481c39f4b33a8a21c48b62abee4c and the complete objdump capture ...\n Line 51: {\"type\":\"tool_use\",\"timestamp\":1788999157611,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"bash\",\"callID\":\"call_xRCgk7bXWOK4j3euaeF3XY61\",\"state\":{\"status\":\"completed\",\"input\":{\"command\":\"python3 tools/campaign.py --state-root /home/alex/sots-re validate\",\"workdir\":\"/home/alex/sots-re\"},\"output\":\"[\\n \\\"controls-bootstrap\\\",\\n \\\"launcher-smoke\\\",\\n \\\"research-completion-abi\\\",\\n \\\"research-replacement\\\"\\n]\\n\",\"metadata\":{\"output\":\"[\\n \\\"controls-bootstrap\\\",\\n \\\"launcher-smoke\\\",\\n \\\"research-completion-abi\\\",\\n \\\"research-replacement\\\"\\n]\\n\",\"exit\":0,\"truncated\":false},\"title\":\"python3 tools/campaign.py --state-root /home/alex/sots-re validate\",\"time\":{\"start\":1788999157537,\"end\":1788999157599}},\"metadata\":{\"openai\":{\"itemId\":\"fc_0880e1d3e861edbd016aa1f5f548c087d1aa6bae5f69cbd60e\"}},\"id\":\"prt_088a8c7040019oVq2vcx8E1XtR\",\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"messageID\":\"msg_088a89952001CK5qsxSqkCeNM0\"}}\n\n Line 52: {\"type\":\"tool_use\",\"timestamp\":1788999157611,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_hVymbWWXNjf2JzjoSqnV8gPU\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/contracts/research-completion-abi.json\",\"offset\":20,\"limit\":10},\"output\":\"/home/alex/sots-re/campaign/contracts/research-completion-abi.json\\nfile\\n\\n20: \\\"commit\\\": \\\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\\",\\n21: \\\"path\\\": \\\"/home/alex/sots-re\\\"\\n22: }\\n23: },\\n24: \\\"checkpoint\\\": \\\"campaign/runtime/checkpoints/research-completion-abi-5bc0703a8f5dcc03cb44d241.json\\\",\\n25: \\\"dependencies\\\": [\\n26: \\\"controls-bootstrap\\\"\\n27: ],\\n28: \\\"effects\\\": [\\n29: \\\"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\\\"\\n\\n(Showing lines 20-29 of 64. Use offset=30 to continue.)\\n\",\"metadata\":{\"preview\":\" \\\"commit\\\": \\\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\\",\\n \\\"path\\\": \\\"/home/alex/sots-re\\\"\\n }\\n },\\n \\\"checkpoint\\\": \\\"campaign/runtime/checkpoints/research-completion-abi-5bc0703a8f5dcc03cb44d241.json\\\",\\n \\\"dependencies\\\": [\\n \\\"controls-bootstrap\\\"\\n ],\\n \\\"effects\\\": [\\n \\\"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\\\"\",\"truncated\":true,\"loaded\":[],\"display\":{\"type\":\"file\",\"path\":\"/home/alex/sots-re/campaign/contracts/research-completion-abi.json\",\"text\":\" \\\"commit\\\": \\\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\\",\\n \\\"path\\\": \\\"/home/alex/sots-re\\\"\\n }\\n },\\n \\\"checkpoint\\\": \\\"campaign/runtime/checkpoints/research-completion-abi-5bc0703a8f5dcc03cb44d241.json\\\",\\n \\\"dependencies\\\": [\\n \\\"controls-bootstrap\\\"\\n ],\\n \\\"effects\\\": [\\n \\\"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\\\"\",\"lineStart\":20,\"lineEnd\":29,\"totalLines\":64,\"truncated\":true}},\"title\":\"campaign/contracts/...\n Line 53: {\"type\":\"tool_use\",\"timestamp\":1788999157622,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_xYTxMmq95dxVnUiDnMMf56Sz\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-5bc0703a8f5dcc03cb44d241.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-5bc0703a8f5dcc03cb44d241.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"research-abi-analyst\\\",\\n3: \\\"artifacts\\\": [\\n4: {\\n5: \\\"path\\\": \\\"campaign/runtime/decisions/d-2ff30c9f5355116bea822924.json\\\",\\n6: \\\"sha256\\\": \\\"c03d87ff4c7e2a23d43cb3c7d1c7bf19dfb3dfd868a9cbac2b8401fe3ee00fbd\\\"\\n7: },\\n8: {\\n9: \\\"path\\\": \\\"verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt\\\",\\n10: \\\"sha256\\\": \\\"3bc3c368f30f2ef2b0d291acad9c0f898b74f4436393d47bf8c942571793dd06\\\"\\n11: },\\n12: {\\n13: \\\"path\\\": \\\"verify/results/research-completion-abi/recovered-static.md\\\",\\n14: \\\"sha256\\\": \\\"fd0337bf2135341843738adc831ea3bd94fa6b87f5c21e652df919a5d2bec9df\\\"\\n15: },\\n16: {\\n17: \\\"path\\\": \\\"verify/results/research-completion-abi/reva-2026-09-09-index.md\\\",\\n18: \\\"sha256\\\": \\\"ff6357a055021d9a3d13c10496f41dbdd7266807817affc1fdb32cde19221f66\\\"\\n19: },\\n20: {\\n21: \\\"path\\\": \\\"campaign/research/research-completion-abi.md\\\",\\n22: \\\"sha256\\\": \\\"613314318a89efa3ea51e0ee3f43bc2ecd67ff01950a4da77036c1d95c566e5d\\\"\\n23: }\\n24: ],\\n25: \\\"basis\\\": \\\"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\\\",\\n26: \\\"contract\\\": \\\"research-completion-abi\\\",\\n27: \\\"id\\\": \\\"5bc0703a8f5dcc03cb44d241\\\",\\n28: \\\"model\\\": \\\"openai/gpt-5.6-sol\\\",\\n29: \\\"next_action\\\": \\\"Lead launch an independent verifier on the same paired baseline and SHA256-matched dumps/sots.exe to reproduce all four objdump windows in objdump-2026-09-09-dedup-helper.txt and challenge t...\n Line 56: {\"type\":\"tool_use\",\"timestamp\":1788999164887,\"sessionID\":\"ses_f77596a51ffeVWJ8c0r0t6WGJR\",\"part\":{\"type\":\"tool\",\"tool\":\"todowrite\",\"callID\":\"call_OmXay7U5AQq6apEwku6ql2O7\",\"state\":{\"status\":\"completed\",\"input\":{\"todos\":[{\"content\":\"Read campaign authority, contract, checkpoint, and open surprises\",\"status\":\"completed\",\"priority\":\"high\"},{\"content\":\"Verify worktree, source, and resource identities against contract/checkpoint\",\"status\":\"completed\",\"priority\":\"high\"},{\"content\":\"Execute the checkpoint's exact next bounded ABI research action\",\"status\":\"cancelled\",\"priority\":\"high\"},{\"content\":\"Persist mandatory fresh canonical checkpoint and stop\",\"status\":\"completed\",\"priority\":\"high\"}]},\"output\":\"[\\n {\\n \\\"content\\\": \\\"Read campaign authority, contract, checkpoint, and open surprises\\\",\\n \\\"status\\\": \\\"completed\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Verify worktree, source, and resource identities against contract/checkpoint\\\",\\n \\\"status\\\": \\\"completed\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Execute the checkpoint's exact next bounded ABI research action\\\",\\n \\\"status\\\": \\\"cancelled\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Persist mandatory fresh canonical checkpoint and stop\\\",\\n \\\"status\\\": \\\"completed\\\",\\n \\\"priority\\\": \\\"high\\\"\\n }\\n]\",\"metadata\":{\"todos\":[{\"content\":\"Read campaign authority, contract, checkpoint, and open surprises\",\"status\":\"completed\",\"priority\":\"high\"},{\"content\":\"Verify worktree, source, and resource identities against contract/checkpoint\",\"status\":\"completed\",\"priority\":\"high\"},{\"content\":\"Execute the checkpoint's exact next bounded ABI research action\",\"status\":\"cancelled\",\"priority\":\"high\"},{\"content\":\"Persist mandatory fresh canonical checkpoint and stop\",\"status\":\"completed\",\"priority\":\"high\"}],\"truncated\":false},\"title\":\"1 todos\",\"time\":{\"start\":1788999164883,\"end\":1788999164885}},\"metadata\":{\"openai\":{\"itemId\":\"fc_0118a77c151973ed016aa1f5f9de2c87d1...\n\n/home/alex/sots-re/campaign/runtime/runs/run-ee78b8773688ca09f8046e21.jsonl:\n Line 2: {\"type\":\"tool_use\",\"timestamp\":1789014910311,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"todowrite\",\"callID\":\"call_wUwLjshPc9cXRW66UesbcuN1\",\"state\":{\"status\":\"completed\",\"input\":{\"todos\":[{\"content\":\"Read canonical campaign instructions, contract, checkpoint, and open surprises\",\"status\":\"in_progress\",\"priority\":\"high\"},{\"content\":\"Verify engine/RE worktree and source/resource identities\",\"status\":\"pending\",\"priority\":\"high\"},{\"content\":\"Define verification falsifiers, branch exposures, and distinct states from handoff\",\"status\":\"pending\",\"priority\":\"high\"},{\"content\":\"Reproduce verifier package and independently challenge one assumption\",\"status\":\"pending\",\"priority\":\"high\"},{\"content\":\"Write mandatory fresh canonical checkpoint with exact next action\",\"status\":\"pending\",\"priority\":\"high\"}]},\"output\":\"[\\n {\\n \\\"content\\\": \\\"Read canonical campaign instructions, contract, checkpoint, and open surprises\\\",\\n \\\"status\\\": \\\"in_progress\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Verify engine/RE worktree and source/resource identities\\\",\\n \\\"status\\\": \\\"pending\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Define verification falsifiers, branch exposures, and distinct states from handoff\\\",\\n \\\"status\\\": \\\"pending\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Reproduce verifier package and independently challenge one assumption\\\",\\n \\\"status\\\": \\\"pending\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Write mandatory fresh canonical checkpoint with exact next action\\\",\\n \\\"status\\\": \\\"pending\\\",\\n \\\"priority\\\": \\\"high\\\"\\n }\\n]\",\"metadata\":{\"todos\":[{\"content\":\"Read canonical campaign instructions, contract, checkpoint, and open surprises\",\"status\":\"in_progress\",\"priority\":\"high\"},{\"content\":\"Verify engine/RE worktree and source/resource identities\",\"status\":\"pending\",\"priority\":\"high\"},{\"content\":\"Define verification falsifiers, branch exposures, and d...\n Line 5: {\"type\":\"tool_use\",\"timestamp\":1789014913599,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_yuDMa1R591idPROPHofkxLpn\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/README.md\"},\"output\":\"/home/alex/sots-re/campaign/README.md\\nfile\\n\\n1: # Canonical campaign controls\\n2: \\n3: `sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\\n4: surprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\\n5: projections. Historical evidence is not current acceptance. No automatic commits or lab operations.\\n6: \\n7: Framework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\\n8: see [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\\n9: Active work is reverse engineering. Change tooling only to unblock a named RE experiment.\\n10: \\n11: ## Contract format\\n12: \\n13: `contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\\n14: The standard-library validator implements the schema's used subset. A populated example is\\n15: [contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\\n16: \\n17: Required fields:\\n18: \\n19: | Field | Structure |\\n20: |---|---|\\n21: | `id`, `title`, `status` | Slug, short title, lifecycle state |\\n22: | `owner` | `{ \\\"name\\\": \\\"worker-identity\\\", \\\"role\\\": \\\"implementer\\\" }` |\\n23: | `baseline` | `{ \\\"engine\\\": {\\\"path\\\":\\\"/absolute/canonical/engine\\\",\\\"commit\\\":\\\"full-commit-id\\\"}, \\\"re\\\": {\\\"path\\\":\\\"/absolute/canonical/re\\\",\\\"commit\\\":\\\"full-commit-id\\\"} }` |\\n24: | `scope`, `inputs`, `effects` | Arrays of explicit nonempty strings; include full write set and runtime inputs |\\n25: | `original_dependencies` | String array, including original-assisted portions and unavailable inputs |\\n26: | `dependencies` | A...\n Line 8: {\"type\":\"tool_use\",\"timestamp\":1789014917083,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_SgGkYshpuvn95q07KqQsw26e\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/contracts/research-completion-abi.json\"},\"output\":\"/home/alex/sots-re/campaign/contracts/research-completion-abi.json\\nfile\\n\\n1: {\\n2: \\\"acceptance\\\": [\\n3: {\\n4: \\\"axis\\\": \\\"static-recovery\\\",\\n5: \\\"criterion\\\": \\\"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\\\",\\n6: \\\"id\\\": \\\"ownership-recovered\\\"\\n7: },\\n8: {\\n9: \\\"axis\\\": \\\"validation\\\",\\n10: \\\"criterion\\\": \\\"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\\\",\\n11: \\\"id\\\": \\\"independent-cross-check\\\"\\n12: }\\n13: ],\\n14: \\\"baseline\\\": {\\n15: \\\"engine\\\": {\\n16: \\\"commit\\\": \\\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\\",\\n17: \\\"path\\\": \\\"/home/alex/sots-engine\\\"\\n18: },\\n19: \\\"re\\\": {\\n20: \\\"commit\\\": \\\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\\",\\n21: \\\"path\\\": \\\"/home/alex/sots-re\\\"\\n22: }\\n23: },\\n24: \\\"checkpoint\\\": \\\"campaign/runtime/checkpoints/research-completion-abi-e3bbdd77d84190f5cb086090.json\\\",\\n25: \\\"dependencies\\\": [\\n26: \\\"controls-bootstrap\\\"\\n27: ],\\n28: \\\"effects\\\": [\\n29: \\\"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\\\"\\n30: ],\\n31: \\\"evidence\\\": [],\\n32: \\\"id\\\": \\\"research-completion-abi\\\",\\n33: \\\"inputs\\\": [\\n34: \\\"Existing binary fingerprint/address contract and private RE findings\\\",\\n35: \\\"Owner-supplied binary or live read-only R...\n Line 11: {\"type\":\"tool_use\",\"timestamp\":1789014920891,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_EaC8IuVTnkCqgCIwC3Fj28Lh\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-e3bbdd77d84190f5cb086090.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/checkpoints/research-completion-abi-e3bbdd77d84190f5cb086090.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"sots-lead\\\",\\n3: \\\"artifacts\\\": [\\n4: {\\n5: \\\"path\\\": \\\"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/manifest.json\\\",\\n6: \\\"sha256\\\": \\\"4f3b4b28002a22521d2e7b87c8f82d63b21bf9f48918cc4ab6a7f629155cd101\\\"\\n7: },\\n8: {\\n9: \\\"path\\\": \\\"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/report.md\\\",\\n10: \\\"sha256\\\": \\\"f37e3c4bbf4c0dd249bb152422a786172d14d77fc912c7d8a4cb0d7240c0a3c7\\\"\\n11: },\\n12: {\\n13: \\\"path\\\": \\\"campaign/research/research-completion-abi.md\\\",\\n14: \\\"sha256\\\": \\\"23912a90a275f36679e1ed03d9d8830359299a2ecc269ec075f07d6f7425f4f6\\\"\\n15: },\\n16: {\\n17: \\\"path\\\": \\\"verify/results/research-completion-abi/recovered-static.md\\\",\\n18: \\\"sha256\\\": \\\"b6bfe302ebc96ab65eab31a86ff286a4bd3c43f3bba16610d9e87b04e5d40c35\\\"\\n19: }\\n20: ],\\n21: \\\"basis\\\": \\\"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\\\",\\n22: \\\"contract\\\": \\\"research-completion-abi\\\",\\n23: \\\"id\\\": \\\"e3bbdd77d84190f5cb086090\\\",\\n24: \\\"model\\\": \\\"openai/gpt-5.6-sol\\\",\\n25: \\\"next_action\\\": \\\"Launch one fresh bounded verifier quantum as research-abi-correction-verifier to independently reproduce and challenge the corrected four-window package, then publish source-bound evidence and a verdict without promoting the contract.\\\",\\n26: \\\"role\\\": \\\"lead\\\",\\n27: \\\"schema\\\": \\\"sots-checkpoint/1\\\",\\n28: \\\"session\\\": \\\"lead-verifier-assignment-20260910b\\\",\\n29: \\\"summ...\n Line 14: {\"type\":\"tool_use\",\"timestamp\":1789014928958,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"glob\",\"callID\":\"call_nZ4licm2sC8FaOWyKOW9FtTf\",\"state\":{\"status\":\"completed\",\"input\":{\"pattern\":\"campaign/runtime/surprises/*.json\",\"path\":\"/home/alex/sots-re\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-410e48d5ae6cc4da0a6ae649.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-c6786945b302de2a0b629960.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-abd1c3613c9922cc94c608d5.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-5c58b6a921997731f5b5ae1f.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-d2c8ec81e980396f2306f8fe.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-4a7d66ebd7d8a8f3ec59f11d.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-4f71bf4a5df4e5fc992bb6b2.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-f1c41532e618c77d41538902.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-8996365dab2cd6dc0e17bb9f.json\",\"metadata\":{\"count\":11,\"truncated\":false},\"title\":\"\",\"time\":{\"start\":1789014928907,\"end\":1789014928956}},\"metadata\":{\"openai\":{\"itemId\":\"fc_038e1a67941cfa39016aa23390a71087d18777c6e5c7001def\"}},\"id\":\"prt_089996db6001BfGI68mMke5b6E\",\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"messageID\":\"msg_089994f4900148j6gqkNxw4OVD\"}}\n\n Line 17: {\"type\":\"tool_use\",\"timestamp\":1789014932195,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_DnCmCmhuSdYZXwUpYn1tTlYL\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/guides/multi-agent-workflow.md\"},\"output\":\"/home/alex/sots-re/guides/multi-agent-workflow.md\\nfile\\n\\n1: # Multi-agent operating architecture\\n2: \\n3: ## Product and milestone\\n4: \\n5: Reconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\\n6: milestone is standalone replay given a captured command stream and complete declared runtime\\n7: inputs. The first workflow pilot is the complete research write set. A passing host build is a\\n8: component baseline, not a playable engine or independent replacement.\\n9: \\n10: ## Source of truth\\n11: \\n12: `campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\\n13: leases and surprises, and evidence packages identify inputs, source and executable artifacts.\\n14: `campaign/current.json` selects published evidence by path and digest. Board/dashboard are\\n15: generated projections, never alternate writable authorities. Exact tool CLI/schema is documented\\n16: in `campaign/README.md`. Historical findings retain their original experiment scope; they are\\n17: not promoted by copying an old status into a new contract.\\n18: \\n19: ## Model authority\\n20: \\n21: | Responsibility | Model |\\n22: |---|---|\\n23: | Normal planning, architecture and integration loop | GPT-5.6 Sol |\\n24: | Bounded RE analysis, implementation and independent verification | GPT-5.6 Sol |\\n25: | Routine lab/workload operations | GPT-5.6 Sol |\\n26: | Problem and surprise resolution | GPT-6 Astra |\\n27: | Context compaction | GPT-5.5 |\\n28: \\n29: Exact provider IDs are in `campaign/models.json`. The lead escalates to Astra when a falsified\\n30: assumption, conflict, instrument effect, or scope change blocks the loop. No fallbac...\n Line 20: {\"type\":\"tool_use\",\"timestamp\":1789014934668,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_nkRcO3SVQdQVZUi7j7aBTjkX\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/AGENTS.md\"},\"output\":\"/home/alex/sots-re/AGENTS.md\\nfile\\n\\n1: # SOTS campaign instructions\\n2: \\n3: This repository is the state authority for the SOTS reconstruction and its Windows lab.\\n4: Start with `campaign/README.md`, your contract, its latest checkpoint, and open surprises.\\n5: Current policy: `guides/multi-agent-workflow.md`. Engine architecture: `sots-engine/docs/architecture.md`.\\n6: Historical findings are evidence, not current execution instructions or accepted status.\\n7: \\n8: ## Authority and models\\n9: \\n10: - The normal lead/RE/implementation/verification/lab loop runs on **GPT-5.6 Sol\\n11: (`openai/gpt-5.6-sol`)**. Reserve **GPT-6 Astra (`openai/gpt-6-astra`)** for resolving\\n12: falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope.\\n13: - `campaign/models.json` is the role/model registry. Launch with `tools/run_agent.py` and an\\n14: explicit role, contract, state root, and paired worktrees. Never silently downgrade or fall back.\\n15: - Ordinary implementation/test failures inside the contract may be fixed by its worker.\\n16: Falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope\\n17: require a recorded surprise and an Astra resolution before affected work continues.\\n18: - No worker subdelegation. The lead assigns parallelism; max two implementation slices after\\n19: the pilot. Independent workload preparation is scheduled against explicit resource leases.\\n20: \\n21: ## Durable state and context\\n22: \\n23: Checkpoint in the canonical RE state root every **20 tool calls or 15 minutes**, whichever is\\n24: earlier, and before an experiment, compaction, handoff, or stop. Include model/session, e...\n Line 23: {\"type\":\"tool_use\",\"timestamp\":1789014941614,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_ISb2En20jgz9MzsQUFxCqyXk\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-410e48d5ae6cc4da0a6ae649.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-410e48d5ae6cc4da0a6ae649.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"controls-architect\\\",\\n3: \\\"contract\\\": \\\"controls-bootstrap\\\",\\n4: \\\"decision\\\": \\\"d-42c6d0b4ee5114e6f2e07c99\\\",\\n5: \\\"id\\\": \\\"s-410e48d5ae6cc4da0a6ae649\\\",\\n6: \\\"model\\\": \\\"openai/gpt-6-astra\\\",\\n7: \\\"probe\\\": \\\"Introduce an immutable typed acceptance package binding candidate/integrated source manifests, built binary, inputs and per-criterion results; change source bytes at unchanged HEAD and require integration/acceptance rejection.\\\",\\n8: \\\"role\\\": \\\"architecture-review\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Independent review R4: lifecycle source binding checks baseline path/commit and artifact hashes, but not the actual candidate/integrated source manifest. Implementation bytes can change at the same HEAD without invalidating the current evidence/verdict. This requires a cross-cutting evidence package/interface decision with publishing and gate owners.\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-09T21:34:52.829937+00:00\\\"\\n13: }\\n\\n(End of file - total 13 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"actor\\\": \\\"controls-architect\\\",\\n \\\"contract\\\": \\\"controls-bootstrap\\\",\\n \\\"decision\\\": \\\"d-42c6d0b4ee5114e6f2e07c99\\\",\\n \\\"id\\\": \\\"s-410e48d5ae6cc4da0a6ae649\\\",\\n \\\"model\\\": \\\"openai/gpt-6-astra\\\",\\n \\\"probe\\\": \\\"Introduce an immutable typed acceptance package binding candidate/integrated source manifests, built binary, inputs and per-criterion results; change source bytes at unchanged HEAD and require integration/acceptance rejection.\\\",\\n \\\"rol...\n Line 26: {\"type\":\"tool_use\",\"timestamp\":1789014946420,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_e6grAqWhuyA9oRmtbNY5yXQP\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-c6786945b302de2a0b629960.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-c6786945b302de2a0b629960.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"live-record surprise resolver\\\",\\n3: \\\"contract\\\": \\\"research-completion-abi\\\",\\n4: \\\"decision\\\": \\\"d-b51f3f76803e852ed250846a\\\",\\n5: \\\"id\\\": \\\"s-c6786945b302de2a0b629960\\\",\\n6: \\\"model\\\": \\\"openai/gpt-6-astra\\\",\\n7: \\\"probe\\\": \\\"Enumerate all stack writes from 0x885380 through 0x885413 and map append source+4 and final last-0x14 store; freshly rehash binary/tool and reproduce these complete windows under an authorized read-only analyst session before corrected evidence acceptance.\\\",\\n8: \\\"role\\\": \\\"resolver\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Propagated affected acceptance from bridge surprise s-5a78d3a0a10c1f8545df8eb1, resolver session run-f63d1e050a7ee3fac7b44885. recovered-static.md lines 68-69 asserts temporary EvTurn zero and copy of zero. Hash-bound raw get/create and append captures run-472955e277202c411388c66b contradict that assertion: no write to EBP-0x20 before call; source+4 copied at 0x884d62/6c; stored requested turn written only at 0x88542d after temporary nested cleanup. This is static interpretation falsification, not observed runtime nondeterminism. Both integrated evidence records and independent verdict must lose current acceptance pending corrected source-bound reproduction; raw captures and archived saves are retained as historical measurements.\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-10T04:18:25.950030+00:00\\\"\\n13: }\\n\\n(End of file - total 13 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"actor\\\": \\\"live-record surprise reso...\n Line 29: {\"type\":\"tool_use\",\"timestamp\":1789014949709,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_14BRCCk23To4NPdWATXIssJv\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-abd1c3613c9922cc94c608d5.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-abd1c3613c9922cc94c608d5.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"final-controls-verifier\\\",\\n3: \\\"contract\\\": \\\"controls-bootstrap\\\",\\n4: \\\"decision\\\": \\\"d-d2aeed91781c4da6057f00a7\\\",\\n5: \\\"id\\\": \\\"s-abd1c3613c9922cc94c608d5\\\",\\n6: \\\"model\\\": \\\"openai/gpt-5.6-terra\\\",\\n7: \\\"probe\\\": \\\"From canonical RE, run source-binding once with no worktree arguments and once with the assigned paired paths; confirm the differing RE digest and absence of paired tools/campaign.py plus verify/campaign/test_controls.py. Astra must decide whether independent integrated reproduction may use only dirty canonical trees or provide source-identical linked worktrees and repeat/attest verification.\\\",\\n8: \\\"role\\\": \\\"verifier\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Falsified paired-worktree reproducibility assumption. The assigned /tmp/opencode/sots-launch-re is clean at the pinned RE HEAD but lacks tools/campaign.py and verify/campaign/test_controls.py; its source binding is 67b7b60509fe43c8d23382003fed069fb32549094eea0c039b75475e32a7a9eb, not the evidence binding 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Engine paired binding likewise differs (949dfb46... versus ccd8e020...). Canonical integrated trees do rehash exactly to the claimed binding and declared binary/input/outcome hashes match, but the supplied isolated paired source cannot reproduce the package from handoff alone. This blocks the final independent integrated verdict under the required linked-worktree/reproduction guard.\\\",\\n12: \\\"timestamp\\\": \\\"2026-09...\n Line 32: {\"type\":\"tool_use\",\"timestamp\":1789014954454,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_XGnrOKLisuZHUjWice0d8YwX\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"live-record bridge architect\\\",\\n3: \\\"contract\\\": \\\"research-live-record-bridge\\\",\\n4: \\\"decision\\\": \\\"d-6f4134237e68860fb02e8684\\\",\\n5: \\\"id\\\": \\\"s-5a78d3a0a10c1f8545df8eb1\\\",\\n6: \\\"model\\\": \\\"openai/gpt-5.6-sol\\\",\\n7: \\\"probe\\\": \\\"Astra must inspect the complete 0x00885380..0x0088544a entry window and 0x00884cb0..0x00884d8f append window from verify/results/research-live-record-bridge/run-472955e277202c411388c66b, enumerate every write to [EBP-0x20] before the append call, and decide whether the transient EvTurn is indeterminate and whether final post-publication semantics remain usable. Revise/invalidate the accepted dependency interpretation and prescribe the exact generated-row wording before TurnEvents planning continues.\\\",\\n8: \\\"role\\\": \\\"architecture-review\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Session run-472955e277202c411388c66b fresh pinned-binary capture contradicts the accepted dependency interpretation that EventStorage get/create initializes a miss-path temporary TurnEvents EvTurn to zero before append. In 0x00885380, local TurnEvents begins at [EBP-0x24]: 0x008853fc writes vptr, and 0x00885403/06/09 zero only nested-vector pointers at +0x08/+0x0c/+0x10. No instruction writes temporary EvTurn at [EBP-0x20] before 0x00885413 calls append. Append 0x00884d62 copies source+0x04 into destination+0x04, so the newly appended element transiently receives the uninitialized stack word; 0x0088542d overwrites the stored element EvTurn with the req...\n Line 35: {\"type\":\"tool_use\",\"timestamp\":1789014958832,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_txJrjSPRApltQsvr1nkcAslL\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"rollout-lead\\\",\\n3: \\\"contract\\\": \\\"controls-bootstrap\\\",\\n4: \\\"decision\\\": \\\"d-6239404c8f40351310c8abf0\\\",\\n5: \\\"id\\\": \\\"s-6d1fcc617a20ca2bcbffc0cc\\\",\\n6: \\\"model\\\": \\\"openai/gpt-6-astra\\\",\\n7: \\\"probe\\\": \\\"Allow verifier launch in verification and integration; reject owner overlap, source drift and open surprises in both.\\\",\\n8: \\\"role\\\": \\\"lead\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Independent Astra R8: verifier launch permits verification only, but final integrated evidence requires a fresh verifier execution in integration.\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-09T22:09:56.316247+00:00\\\"\\n13: }\\n\\n(End of file - total 13 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"actor\\\": \\\"rollout-lead\\\",\\n \\\"contract\\\": \\\"controls-bootstrap\\\",\\n \\\"decision\\\": \\\"d-6239404c8f40351310c8abf0\\\",\\n \\\"id\\\": \\\"s-6d1fcc617a20ca2bcbffc0cc\\\",\\n \\\"model\\\": \\\"openai/gpt-6-astra\\\",\\n \\\"probe\\\": \\\"Allow verifier launch in verification and integration; reject owner overlap, source drift and open surprises in both.\\\",\\n \\\"role\\\": \\\"lead\\\",\\n \\\"schema\\\": \\\"sots-surprise/1\\\",\\n \\\"status\\\": \\\"resolved\\\",\\n \\\"summary\\\": \\\"Independent Astra R8: verifier launch permits verification only, but final integrated evidence requires a fresh verifier execution in integration.\\\",\\n \\\"timestamp\\\": \\\"2026-09-09T22:09:56.316247+00:00\\\"\\n}\",\"truncated\":false,\"loaded\":[],\"display\":{\"type\":\"file\",\"path\":\"/home/alex/sots-re/campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json\",\"t...\n Line 38: {\"type\":\"tool_use\",\"timestamp\":1789014962220,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_8armcZZeU2Tq4JN4UErLLMvh\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-5c58b6a921997731f5b5ae1f.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-5c58b6a921997731f5b5ae1f.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"research-abi-independent\\\",\\n3: \\\"contract\\\": \\\"research-completion-abi\\\",\\n4: \\\"decision\\\": \\\"d-d2a9b8be6399a6abaa0e05a5\\\",\\n5: \\\"id\\\": \\\"s-5c58b6a921997731f5b5ae1f\\\",\\n6: \\\"model\\\": \\\"openai/gpt-5.6-sol\\\",\\n7: \\\"probe\\\": \\\"Astra should first rerun both objdump -D -Mintel --start-address=0x00825d40 --stop-address=0x00825e65 dumps/sots.exe and the minimally widened --stop-address=0x00825e67 command against SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, archive raw stdout bytes and objdump executable hash/version, and decide whether the existing capture was manually spliced or generated with a different effective boundary. Repair provenance before independent ABI interpretation resumes.\\\",\\n8: \\\"role\\\": \\\"verifier\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Independent reproduction falsified the handoff claim that objdump-2026-09-09-dedup-helper.txt is unfiltered output from its exact first command. With the SHA256-matched executable and GNU objdump 2.38, the declared stop-address 0x00825e65 truncates the three-byte instruction beginning at 0x00825e64: current stdout is bytes c2 while the archive records c2 08 00. The other three declared windows reproduce exactly after only line-end whitespace normalization. This is a provenance/instrument-boundary contradiction; dedup interpretation is paused rather than converting the otherwise matching instructions into success.\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-10T00:19:20.577736+00:00\\\"\\n13: ...\n Line 41: {\"type\":\"tool_use\",\"timestamp\":1789014969857,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_Ucu095rTiyaewCNS0PkSChsa\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-d2c8ec81e980396f2306f8fe.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-d2c8ec81e980396f2306f8fe.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"live-record bridge architect\\\",\\n3: \\\"contract\\\": \\\"research-live-record-bridge\\\",\\n4: \\\"decision\\\": \\\"d-3205df5e8425dc9e1779e673\\\",\\n5: \\\"id\\\": \\\"s-d2c8ec81e980396f2306f8fe\\\",\\n6: \\\"model\\\": \\\"openai/gpt-5.6-sol\\\",\\n7: \\\"probe\\\": \\\"Astra must compare the stored file with fresh command stdout under the pinned binary/tool identity, decide whether a byte-exact replacement supersedes only capture provenance, and require a fresh hash-bound reserve manifest before the ObservedTech append/growth row is treated as reconciled.\\\",\\n8: \\\"role\\\": \\\"architecture-review\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Fresh provenance check falsified the claim that verify/results/research-live-record-bridge/run-ebf85a84ad4247c38792a787/observed-reserve.stdout.txt is byte-exact raw stdout. The stored manually transcribed capture is 2464 bytes/SHA256 5d10954f54a2f8c731ee8d4760414851963ab8dc539ecb66383cf09e176b5c87; rerunning pinned GNU objdump 2.38 against the hash-matched executable with start 0x007b5820 and stop 0x007b5899 produces 2472 bytes/SHA256 2d011ed96329c4c4ff462cbfd65decac9dccf40558765244c769be1dedc92275. First difference is one alignment space at byte 477. SURVIVES: binary/tool/source identities, decoded instructions, append ABI branches, reserve capacity rule, and references to accepted append/reallocator captures. QUALIFIED: the new reserve interpretation is an observation awaiting a byte-exact immutable capture. OVERTURNED: the newly added file cannot be called ...\n Line 44: {\"type\":\"tool_use\",\"timestamp\":1789014973972,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_dhWnb0r7izszjtNiZPQILbzE\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-4a7d66ebd7d8a8f3ec59f11d.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-4a7d66ebd7d8a8f3ec59f11d.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"controls-independent-verifier\\\",\\n3: \\\"contract\\\": \\\"controls-bootstrap\\\",\\n4: \\\"decision\\\": \\\"d-2570bf9c76ae66711bdac461\\\",\\n5: \\\"id\\\": \\\"s-4a7d66ebd7d8a8f3ec59f11d\\\",\\n6: \\\"model\\\": \\\"openai/gpt-5.6-terra\\\",\\n7: \\\"probe\\\": \\\"Parse every nonblank JSONL line of campaign/runtime/runs/run-cb15199f9272fe496bd10a8a.jsonl; compare count, error events, stop events, sessions, source_before/source_after and run record fields. Determine whether the false 24-event assertion invalidates only narrative verifier artifacts or the integrated controls evidence/verdict package.\\\",\\n8: \\\"role\\\": \\\"verifier\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Contradictory prior verification claim: verdict controls-bootstrap.json and checkpoint b467c2d772260f1f03637133 report 24 parsed events for run-cb15199f9272fe496bd10a8a, but independent JSONL parsing finds 67 valid events. The run record itself reports event_count 67. The zero-error, one-session, one-stop, return-0 and unchanged-source facts agree; the count claim is false. Existing source-bound evidence does not document this raw-run count, so its acceptance impact needs Astra resolution before a new verdict.\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-09T22:17:38.435822+00:00\\\"\\n13: }\\n\\n(End of file - total 13 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"actor\\\": \\\"controls-independent-verifier\\\",\\n \\\"contract\\\": \\\"controls-bootstrap\\\",\\n \\\"decision\\\": \\\"d-2570bf9c76ae66711bdac461\\\",\\n \\\"id\\\": \\\"s-4a7d66ebd7d8a8f3ec59f11d\\\",\\n ...\n Line 47: {\"type\":\"tool_use\",\"timestamp\":1789014977413,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_7Du3XN5Ssg6uxSzAnzz5HR8F\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-4f71bf4a5df4e5fc992bb6b2.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-4f71bf4a5df4e5fc992bb6b2.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"research-abi-independent\\\",\\n3: \\\"contract\\\": \\\"research-completion-abi\\\",\\n4: \\\"decision\\\": \\\"d-d4c494ba02ada278030ef473\\\",\\n5: \\\"id\\\": \\\"s-4f71bf4a5df4e5fc992bb6b2\\\",\\n6: \\\"model\\\": \\\"openai/gpt-5.6-sol\\\",\\n7: \\\"probe\\\": \\\"Astra should inspect session manifest verify/results/research-completion-abi-independent/run-eba7860308317f839eb35392/manifest.json and raw observed-alloc/player-append/player-copy streams, compare the three archive lines, then require fresh paired narrow and minimally widened raw stdout/stderr captures with pinned input/tool/source identities for every ownership window whose terminal instruction is truncated. Decide whether to supersede only provenance or additional completeness claims; do not infer archive production history. After repair, a fresh independent verifier must reproduce the full windows and resume ownership/NaN/static-state checks.\\\",\\n8: \\\"role\\\": \\\"verifier\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Session run-eba7860308317f839eb35392 fresh independent reproduction finds the repaired dedup window is correct, but exposes the same unfiltered-stop-boundary provenance contradiction in the ownership archive. objdump-2026-09-09-ownership.txt declares exact stops 0x0057e5e4, 0x0086c62e and 0x007694c0 yet prints complete c2 04 00 terminal instructions beginning at 0x0057e5e3, 0x0086c62d and 0x007694bf. Fresh GNU objdump 2.38 against the hash-matched executable prints only c2 for each command because each stop is one byte afte...\n Line 50: {\"type\":\"tool_use\",\"timestamp\":1789014980924,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_G8eewFES5wL64h6Arv99QRsQ\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-f1c41532e618c77d41538902.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-f1c41532e618c77d41538902.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"controls-architect\\\",\\n3: \\\"contract\\\": \\\"controls-bootstrap\\\",\\n4: \\\"decision\\\": \\\"d-ab717735fc6c1661919f6894\\\",\\n5: \\\"id\\\": \\\"s-f1c41532e618c77d41538902\\\",\\n6: \\\"model\\\": \\\"openai/gpt-6-astra\\\",\\n7: \\\"probe\\\": \\\"Separate recovery identity/basis/artifact validation from end-run freshness; test old valid recovery state, missing/mismatched state, fresh end-run checkpoint and a resolution-only Astra launch with affected workers still blocked.\\\",\\n8: \\\"role\\\": \\\"architecture-review\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Independent review R6: current launch guard applies 15-minute end-run freshness to recovery, preventing next-day recovery from valid durable state; unconditional open-surprise rejection also prevents a resolver quantum. Assignment explicitly requested no-open-surprise launch guards, so the resolver exception requires lead clarification.\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-09T21:34:59.734916+00:00\\\"\\n13: }\\n\\n(End of file - total 13 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"actor\\\": \\\"controls-architect\\\",\\n \\\"contract\\\": \\\"controls-bootstrap\\\",\\n \\\"decision\\\": \\\"d-ab717735fc6c1661919f6894\\\",\\n \\\"id\\\": \\\"s-f1c41532e618c77d41538902\\\",\\n \\\"model\\\": \\\"openai/gpt-6-astra\\\",\\n \\\"probe\\\": \\\"Separate recovery identity/basis/artifact validation from end-run freshness; test old valid recovery state, missing/mismatched state, fresh end-run checkpoint and a resolution-only Astra launch with affected workers still blocked.\\\",\\n \\\"role\\\": \\...\n Line 53: {\"type\":\"tool_use\",\"timestamp\":1789014984743,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_HCXXThgWlrjwflshCI5Ntljf\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-8996365dab2cd6dc0e17bb9f.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-8996365dab2cd6dc0e17bb9f.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"research-abi-analyst\\\",\\n3: \\\"contract\\\": \\\"research-completion-abi\\\",\\n4: \\\"decision\\\": \\\"d-2ff30c9f5355116bea822924\\\",\\n5: \\\"id\\\": \\\"s-8996365dab2cd6dc0e17bb9f\\\",\\n6: \\\"model\\\": \\\"openai/gpt-5.6-sol\\\",\\n7: \\\"probe\\\": \\\"First verify 0x0046f8c0 is std::string equality (or otherwise characterize it) from independent raw instructions/callers; then use or construct two same-bucket PlayerEvents identical in EvAct/EvLoc/EvPos/EvMsg/EvImg but differing only in EvDsc. If 0x00825d40 returns null they are distinct and EvDsc is compared; if it returns the existing element the inherited omission survives and the call has another meaning.\\\",\\n8: \\\"role\\\": \\\"analyst\\\",\\n9: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n10: \\\"status\\\": \\\"resolved\\\",\\n11: \\\"summary\\\": \\\"Fresh raw GNU objdump capture contradicts the standing event dedup semantic claim in findings/subsystems/events.md:185 that EvDsc is not compared. At 0x00825e11 candidate+0x08 and 0x00825e15 stored+0x08 are passed to 0x0046f8c0; its boolean result at 0x00825e21 branches to match return only when true. This occurs after EvAct, EvLoc, EvPos, EvMsg and EvImg comparisons, so description appears to participate in equality. The affected dedup interpretation is paused; no implementation or acceptance claim may use either version pending Astra resolution.\\\",\\n12: \\\"timestamp\\\": \\\"2026-09-09T23:47:56.138628+00:00\\\"\\n13: }\\n\\n(End of file - total 13 lines)\\n\",\"metadata\":{\"preview\":\"{\\n \\\"actor\\\": \\\"research-abi-analyst\\\",\\n \\\"contract\\\": \\\"research-completion-a...\n Line 56: {\"type\":\"tool_use\",\"timestamp\":1789014991548,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"bash\",\"callID\":\"call_8GgrqIJSnA2bJtRsjJOox629\",\"state\":{\"status\":\"completed\",\"input\":{\"command\":\"git rev-parse HEAD && git rev-parse --show-toplevel && git rev-parse --git-common-dir && git status --short\",\"workdir\":\"/tmp/opencode/sots-final-research-engine\"},\"output\":\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\n/tmp/opencode/sots-final-research-engine\\n/home/alex/sots-engine/.git\\n M CONTRIBUTING.md\\n M README.md\\n M docs/S-standalone.md\\n M src/app/turn.cpp\\n M src/game/sim/CMakeLists.txt\\n M src/mars/rng/mt19937.cpp\\n M src/mars/rng/mt19937.h\\n M tests/app/CMakeLists.txt\\n M tests/app/test_command_replay.cpp\\n M tests/app/test_turn.cpp\\n M tests/app/test_turn_record.cpp\\n M tests/game_config/CMakeLists.txt\\n M tests/game_data/CMakeLists.txt\\n M tests/game_design/CMakeLists.txt\\n M tests/game_design/test_census_saves.cpp\\n M tests/game_sim/CMakeLists.txt\\n M tests/mars_stream/CMakeLists.txt\\n M tests/mars_stream/test_domains.cpp\\n M tests/mars_stream/test_rng.cpp\\n M tests/mars_stream/test_save.cpp\\n M tests/mars_text/CMakeLists.txt\\n M tests/mars_vfs/CMakeLists.txt\\n M tools/clean_room_check.sh\\n?? AGENTS.md\\n?? CLAUDE.md\\n?? docs/architecture.md\\n?? opencode.json\\n?? tools/clean_room_check.py\\n\",\"metadata\":{\"output\":\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\n/tmp/opencode/sots-final-research-engine\\n/home/alex/sots-engine/.git\\n M CONTRIBUTING.md\\n M README.md\\n M docs/S-standalone.md\\n M src/app/turn.cpp\\n M src/game/sim/CMakeLists.txt\\n M src/mars/rng/mt19937.cpp\\n M src/mars/rng/mt19937.h\\n M tests/app/CMakeLists.txt\\n M tests/app/test_command_replay.cpp\\n M tests/app/test_turn.cpp\\n M tests/app/test_turn_record.cpp\\n M tests/game_config/CMakeLists.txt\\n M tests/game_data/CMakeLists.txt\\n M tests/game_design/CMakeLists.txt\\n M tests/game_design/test_census_saves.cpp\\n M tests/game_sim/CMakeLists.txt\\n M tests/mars_stream/CMakeLists.txt\\n M tes...\n Line 59: {\"type\":\"tool_use\",\"timestamp\":1789014995239,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"bash\",\"callID\":\"call_1pqW19w3mNI3qGfpZ83kjfNm\",\"state\":{\"status\":\"completed\",\"input\":{\"command\":\"git rev-parse HEAD && git rev-parse --show-toplevel && git rev-parse --git-common-dir && git status --short\",\"workdir\":\"/tmp/opencode/sots-final-research-re\"},\"output\":\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\n/tmp/opencode/sots-final-research-re\\n/home/alex/sots-re/.git\\n M README.md\\n M campaign/DASHBOARD.md\\n M campaign/backlog.md\\n M campaign/board.md\\n M campaign/open-questions.md\\n M findings/00-strategy.md\\n M findings/subsystems/nav-classifier-live.md\\n M findings/subsystems/research-replace.md\\n M guides/method-rules.md\\n D scripts/forgejo_campaign.py\\n M tools/DASHBOARD_README.md\\n M tools/dashboard.py\\n D tools/displacement.py\\n M tools/gate.sh\\n M tools/standalone_report.py\\n?? AGENTS.md\\n?? CLAUDE.md\\n?? campaign/README.md\\n?? campaign/agents/\\n?? campaign/contract.schema.json\\n?? campaign/contracts/\\n?? campaign/current.json\\n?? campaign/models.json\\n?? campaign/pilots/\\n?? campaign/research/\\n?? campaign/rollout/\\n?? guides/multi-agent-workflow.md\\n?? guides/windows-lab-housekeeping.md\\n?? opencode.json\\n?? tools/campaign.py\\n?? tools/check_agent_config.py\\n?? tools/evidence.py\\n?? tools/gate.py\\n?? tools/run_agent.py\\n?? tools/select_evidence.py\\n?? tools/windows-housekeeping/\\n?? verify/campaign/\\n?? verify/config/\\n?? verify/publishing/\\n?? verify/results/housekeeping/\\n?? verify/tooling/\\n\",\"metadata\":{\"output\":\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\n/tmp/opencode/sots-final-research-re\\n/home/alex/sots-re/.git\\n M README.md\\n M campaign/DASHBOARD.md\\n M campaign/backlog.md\\n M campaign/board.md\\n M campaign/open-questions.md\\n M findings/00-strategy.md\\n M findings/subsystems/nav-classifier-live.md\\n M findings/subsystems/research-replace.md\\n M guides/method-rules.md\\n D scripts/forgejo_campaign.py\\n M tools/DASHBOARD_README.md\\...\n Line 62: {\"type\":\"tool_use\",\"timestamp\":1789015015148,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"bash\",\"callID\":\"call_orQimGox3NLw4o4uAUpVv43k\",\"state\":{\"status\":\"completed\",\"input\":{\"command\":\"python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-abi-correction-verifier --role verifier --model openai/gpt-5.6-sol --session run-ee78b8773688ca09f8046e21 --summary 'Recovery checkpoint. Observations: read canonical AGENTS.md, campaign/README.md, current policy, contract, latest lead checkpoint, and all surprise records; all surprises are resolved. Contract is verification and requests independent reproduction of corrected run-16f8e9b6376b278c4870be09. Assigned engine HEAD is 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 with common-dir /home/alex/sots-engine/.git; assigned RE HEAD is 3bfde5a70d874a723e797a695bbd847fd82c0aa7 with common-dir /home/alex/sots-re/.git. Both match contract baselines and are intentionally dirty source snapshots; exact source-binding digests remain to be measured. No resource lease is held or needed; no VM, Ghidra, build-host, game, engine, allocator, Git index, or source mutation occurred. Decision: proceed only with read-only handoff inspection and local reproduction after explicitly defining falsifiers, branches, and states. Tests: identity commands passed; no evidence reproduction run yet. Blockers: none currently; any binary/tool/hash mismatch or contradictory ABI interpretation will be recorded as a surprise and affected work paused.' --artifact verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/manifest.json --next-action 'Compute exact paired source bindings and inspect the corrected run manifest/report/raw four-window captures to define falsifiers, required branch exposures, and distinct states before reproduction.'\",\"workdir\":\"/home/alex/sots-re\"},\"output\":\"{\\n \\\"actor\\\": \\\"research-abi-correction-verifier\\\",\\n \\\"artifacts\\\": [\\n {\\n \\...\n Line 65: {\"type\":\"tool_use\",\"timestamp\":1789015022202,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"todowrite\",\"callID\":\"call_hloC9ryNNJmWSxDQppHWsXBt\",\"state\":{\"status\":\"completed\",\"input\":{\"todos\":[{\"content\":\"Read canonical campaign instructions, contract, checkpoint, and open surprises\",\"status\":\"completed\",\"priority\":\"high\"},{\"content\":\"Verify engine/RE worktree and source/resource identities\",\"status\":\"in_progress\",\"priority\":\"high\"},{\"content\":\"Define verification falsifiers, branch exposures, and distinct states from handoff\",\"status\":\"pending\",\"priority\":\"high\"},{\"content\":\"Reproduce verifier package and independently challenge one assumption\",\"status\":\"pending\",\"priority\":\"high\"},{\"content\":\"Write mandatory fresh canonical checkpoint with exact next action\",\"status\":\"pending\",\"priority\":\"high\"}]},\"output\":\"[\\n {\\n \\\"content\\\": \\\"Read canonical campaign instructions, contract, checkpoint, and open surprises\\\",\\n \\\"status\\\": \\\"completed\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Verify engine/RE worktree and source/resource identities\\\",\\n \\\"status\\\": \\\"in_progress\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Define verification falsifiers, branch exposures, and distinct states from handoff\\\",\\n \\\"status\\\": \\\"pending\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Reproduce verifier package and independently challenge one assumption\\\",\\n \\\"status\\\": \\\"pending\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Write mandatory fresh canonical checkpoint with exact next action\\\",\\n \\\"status\\\": \\\"pending\\\",\\n \\\"priority\\\": \\\"high\\\"\\n }\\n]\",\"metadata\":{\"todos\":[{\"content\":\"Read canonical campaign instructions, contract, checkpoint, and open surprises\",\"status\":\"completed\",\"priority\":\"high\"},{\"content\":\"Verify engine/RE worktree and source/resource identities\",\"status\":\"in_progress\",\"priority\":\"high\"},{\"content\":\"Define verification falsifiers, branch exposures,...\n Line 68: {\"type\":\"tool_use\",\"timestamp\":1789015027182,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"bash\",\"callID\":\"call_KCeBTtrRXG2PfIdKlSHogXgX\",\"state\":{\"status\":\"completed\",\"input\":{\"command\":\"python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re\",\"workdir\":\"/home/alex/sots-re\",\"timeout\":120000},\"output\":\"{\\n \\\"engine\\\": {\\n \\\"commit\\\": \\\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\\",\\n \\\"path\\\": \\\"/tmp/opencode/sots-final-research-engine\\\",\\n \\\"sha256\\\": \\\"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\\\"\\n },\\n \\\"re\\\": {\\n \\\"commit\\\": \\\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\\",\\n \\\"path\\\": \\\"/tmp/opencode/sots-final-research-re\\\",\\n \\\"sha256\\\": \\\"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\\\"\\n }\\n}\\n\",\"metadata\":{\"output\":\"{\\n \\\"engine\\\": {\\n \\\"commit\\\": \\\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\\",\\n \\\"path\\\": \\\"/tmp/opencode/sots-final-research-engine\\\",\\n \\\"sha256\\\": \\\"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\\\"\\n },\\n \\\"re\\\": {\\n \\\"commit\\\": \\\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\\",\\n \\\"path\\\": \\\"/tmp/opencode/sots-final-research-re\\\",\\n \\\"sha256\\\": \\\"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\\\"\\n }\\n}\\n\",\"exit\":0,\"truncated\":false},\"title\":\"python3 tools/campaign.py --state-root /home/alex/sots-re source-binding research-completion-abi --engine-worktree /tmp/opencode/sots-final-research-engine --re-worktree /tmp/opencode/sots-final-research-re\",\"time\":{\"start\":1789015027024,\"end\":1789015027179}},\"metadata\":{\"openai\":{\"itemId\":\"fc_05098a86ed161be6016aa233f0d2fc87d19176f2dbf4cc170a\"}},\"id\":\"prt_0899ae4f2001WyO7YrR89RwY8K\",\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"messageID\":\"msg_0899adb5c0012J5lx4q26y8Hgn\"}}\n\n Line 71: {\"type\":\"tool_use\",\"timestamp\":1789015030291,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"glob\",\"callID\":\"call_wp8uCP0M3WrfIN8RcCmoK0vs\",\"state\":{\"status\":\"completed\",\"input\":{\"pattern\":\"campaign/runtime/leases/*.json\",\"path\":\"/home/alex/sots-re\"},\"output\":\"/home/alex/sots-re/campaign/runtime/leases/vm140.json\\n/home/alex/sots-re/campaign/runtime/leases/vm144.json\\n/home/alex/sots-re/campaign/runtime/leases/vm141.json\\n/home/alex/sots-re/campaign/runtime/leases/vm146.json\\n/home/alex/sots-re/campaign/runtime/leases/vm145.json\\n/home/alex/sots-re/campaign/runtime/leases/spicy-autounattend-credential.json\",\"metadata\":{\"count\":6,\"truncated\":false},\"title\":\"\",\"time\":{\"start\":1789015030280,\"end\":1789015030289}},\"metadata\":{\"openai\":{\"itemId\":\"fc_0739dcda4ab9793a016aa233f5c53487d185f78924d2d6d46d\"}},\"id\":\"prt_0899af855001RyGHr3BI2m5yT8\",\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"messageID\":\"msg_0899aee33001FM2MND9Axz8dCM\"}}\n\n Line 74: {\"type\":\"tool_use\",\"timestamp\":1789015035275,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"bash\",\"callID\":\"call_EqXOk6056GYAmpQ7ang8whhE\",\"state\":{\"status\":\"completed\",\"input\":{\"command\":\"python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi && python3 tools/campaign.py --state-root /home/alex/sots-re validate\",\"workdir\":\"/home/alex/sots-re\",\"timeout\":120000},\"output\":\"[\\n {\\n \\\"acceptance\\\": [\\n {\\n \\\"axis\\\": \\\"static-recovery\\\",\\n \\\"criterion\\\": \\\"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\\\",\\n \\\"id\\\": \\\"ownership-recovered\\\"\\n },\\n {\\n \\\"axis\\\": \\\"validation\\\",\\n \\\"criterion\\\": \\\"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\\\",\\n \\\"id\\\": \\\"independent-cross-check\\\"\\n }\\n ],\\n \\\"baseline\\\": {\\n \\\"engine\\\": {\\n \\\"commit\\\": \\\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\\",\\n \\\"path\\\": \\\"/home/alex/sots-engine\\\"\\n },\\n \\\"re\\\": {\\n \\\"commit\\\": \\\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\\",\\n \\\"path\\\": \\\"/home/alex/sots-re\\\"\\n }\\n },\\n \\\"checkpoint\\\": \\\"campaign/runtime/checkpoints/research-completion-abi-571f0a480c9255cc8097b5fb.json\\\",\\n \\\"dependencies\\\": [\\n \\\"controls-bootstrap\\\"\\n ],\\n \\\"effects\\\": [\\n \\\"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\\\"\\n ],\\n \\\"evidence\\\": [],\\n \\\"id\\\": \\\"research-completion-abi\\\",\\n \\\"inputs\\\": [\\n \\\"Existing binary fingerprint/address contract and private RE findings\\\",\\n \\\"Owner-supplied binary or live read-only ReVa endpoint\\\",\\n \\\"Archi...\n Line 77: {\"type\":\"tool_use\",\"timestamp\":1789015038970,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_gx4474AGY2kGPdItseWN5vzt\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09\"},\"output\":\"/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09\\ndirectory\\n\\ncapture.py\\nmanifest.json\\nnested-copy.stderr.txt\\nnested-copy.stdout.txt\\nnested-dtor.stderr.txt\\nnested-dtor.stdout.txt\\nreport.md\\nturn-append.stderr.txt\\nturn-append.stdout.txt\\nturn-get-create.stderr.txt\\nturn-get-create.stdout.txt\\n\\n(11 entries)\\n\",\"metadata\":{\"preview\":\"capture.py\\nmanifest.json\\nnested-copy.stderr.txt\\nnested-copy.stdout.txt\\nnested-dtor.stderr.txt\\nnested-dtor.stdout.txt\\nreport.md\\nturn-append.stderr.txt\\nturn-append.stdout.txt\\nturn-get-create.stderr.txt\\nturn-get-create.stdout.txt\",\"truncated\":false,\"loaded\":[],\"display\":{\"type\":\"directory\",\"path\":\"/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09\",\"entries\":[\"capture.py\",\"manifest.json\",\"nested-copy.stderr.txt\",\"nested-copy.stdout.txt\",\"nested-dtor.stderr.txt\",\"nested-dtor.stdout.txt\",\"report.md\",\"turn-append.stderr.txt\",\"turn-append.stdout.txt\",\"turn-get-create.stderr.txt\",\"turn-get-create.stdout.txt\"],\"offset\":1,\"totalEntries\":11,\"truncated\":false}},\"title\":\"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09\",\"time\":{\"start\":1789015038962,\"end\":1789015038967}},\"metadata\":{\"openai\":{\"itemId\":\"fc_0ca78704dbd54883016aa233fde9f487d19a81fcfd2b7eff6d\"}},\"id\":\"prt_0899b184c001WWL9lV6tVA262M\",\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"messageID\":\"msg_0899b0ddc001nqoCfDHC8RkijE\"}}\n\n Line 80: {\"type\":\"tool_use\",\"timestamp\":1789015042535,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_72JSC5gvQsTsVxdI3ACfzHpc\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/manifest.json\"},\"output\":\"/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/manifest.json\\nfile\\n\\n1: {\\n2: \\\"schema\\\": \\\"sots-abi-static-capture/1\\\",\\n3: \\\"session\\\": \\\"run-16f8e9b6376b278c4870be09\\\",\\n4: \\\"actor\\\": \\\"research-abi-analyst\\\",\\n5: \\\"role\\\": \\\"analyst\\\",\\n6: \\\"model\\\": \\\"openai/gpt-5.6-sol\\\",\\n7: \\\"timestamp\\\": \\\"2026-09-10T04:25:48.076637+00:00\\\",\\n8: \\\"scope\\\": \\\"Fresh read-only correction capture required by d-b51f3f76803e852ed250846a; no game execution or live allocator claim.\\\",\\n9: \\\"source_binding\\\": {\\n10: \\\"engine\\\": {\\n11: \\\"path\\\": \\\"/tmp/opencode/sots-final-research-engine\\\",\\n12: \\\"commit\\\": \\\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\\",\\n13: \\\"sha256\\\": \\\"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\\\"\\n14: },\\n15: \\\"re\\\": {\\n16: \\\"path\\\": \\\"/tmp/opencode/sots-final-research-re\\\",\\n17: \\\"commit\\\": \\\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\\",\\n18: \\\"sha256\\\": \\\"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\\\"\\n19: }\\n20: },\\n21: \\\"input\\\": {\\n22: \\\"path\\\": \\\"dumps/sots.exe\\\",\\n23: \\\"bytes\\\": 7898624,\\n24: \\\"sha256\\\": \\\"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\\\"\\n25: },\\n26: \\\"tool\\\": {\\n27: \\\"path\\\": \\\"/usr/bin/objdump\\\",\\n28: \\\"bytes\\\": 373888,\\n29: \\\"sha256\\\": \\\"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\\\",\\n30: \\\"version\\\": \\\"GNU objdump (GNU Binutils for Ubuntu) 2.38\\\"\\n31: },\\n32: \\\"windows\\\": [\\n33: {\\n34: \\\"name\\\": \\\"turn-get-create\\\",\\n35: \\\"argv\\\": [\\n36: ...\n Line 83: {\"type\":\"tool_use\",\"timestamp\":1789015047637,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_7VEkiGPHbv9amp94axqqR1qp\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/report.md\"},\"output\":\"/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/report.md\\nfile\\n\\n1: # TurnEvents miss-path correction capture\\n2: \\n3: This is a **fresh static measurement**, not live execution, allocator-safety evidence, independent\\n4: verification, or replacement acceptance. It implements the read-only analyst repair required by\\n5: Astra decision `d-b51f3f76803e852ed250846a`.\\n6: \\n7: ## Provenance and positive execution\\n8: \\n9: `manifest.json` records four GNU objdump 2.38 invocations. Each returned zero, emitted nonempty\\n10: stdout and empty stderr. The freshly hashed inputs are:\\n11: \\n12: * owner-supplied `dumps/sots.exe`: SHA-256\\n13: `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`;\\n14: * `/usr/bin/objdump`: SHA-256\\n15: `1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd`;\\n16: * assigned engine source binding:\\n17: `ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd`;\\n18: * assigned RE source binding:\\n19: `6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8`.\\n20: \\n21: All four stdout hashes equal the corresponding records in the historical bridge manifest\\n22: `run-472955e277202c411388c66b/manifest.json`. This is same-tool/same-binary reproduction by the ABI\\n23: analyst, not the required independent-verifier reproduction.\\n24: \\n25: ## Recorded instruction facts\\n26: \\n27: For valid containers and normally returning callees:\\n28: \\n29: 1. Complete get/create entry `0x00885380..0x0088544a` reserves stack space but does not initialize\\n30: `[EBP-0x20]`, the temporary `TurnEvents+4` / `EvTurn` word. T...\n Line 86: {\"type\":\"tool_use\",\"timestamp\":1789015057477,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_YSLQzIXCuJU1DbTgE93kB4tP\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/capture.py\"},\"output\":\"/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/capture.py\\nfile\\n\\n1: #!/usr/bin/env python3\\n2: \\\"\\\"\\\"Capture the four read-only windows required by decision d-b51f3f76803e852ed250846a.\\\"\\\"\\\"\\n3: \\n4: import hashlib\\n5: import json\\n6: import subprocess\\n7: from datetime import datetime, timezone\\n8: from pathlib import Path\\n9: \\n10: ROOT = Path(\\\"/home/alex/sots-re\\\")\\n11: OUT = ROOT / \\\"verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09\\\"\\n12: BINARY = ROOT / \\\"dumps/sots.exe\\\"\\n13: TOOL = Path(\\\"/usr/bin/objdump\\\")\\n14: \\n15: WINDOWS = (\\n16: (\\\"turn-get-create\\\", \\\"0x00885380\\\", \\\"0x0088544a\\\"),\\n17: (\\\"turn-append\\\", \\\"0x00884cb0\\\", \\\"0x00884d8f\\\"),\\n18: (\\\"nested-copy\\\", \\\"0x00779850\\\", \\\"0x00779a20\\\"),\\n19: (\\\"nested-dtor\\\", \\\"0x00629580\\\", \\\"0x006295ca\\\"),\\n20: )\\n21: \\n22: \\n23: def digest(data: bytes) -> str:\\n24: return hashlib.sha256(data).hexdigest()\\n25: \\n26: \\n27: def file_digest(path: Path) -> str:\\n28: return digest(path.read_bytes())\\n29: \\n30: \\n31: records = []\\n32: for name, start, stop in WINDOWS:\\n33: argv = [str(TOOL), \\\"-D\\\", \\\"-Mintel\\\", f\\\"--start-address={start}\\\",\\n34: f\\\"--stop-address={stop}\\\", str(BINARY)]\\n35: proc = subprocess.run(argv, cwd=ROOT, check=False, capture_output=True)\\n36: stdout_path = OUT / f\\\"{name}.stdout.txt\\\"\\n37: stderr_path = OUT / f\\\"{name}.stderr.txt\\\"\\n38: stdout_path.write_bytes(proc.stdout)\\n39: stderr_path.write_bytes(proc.stderr)\\n40: records.append({\\n41: \\\"name\\\": name,\\n42: \\\"argv\\\": argv,\\n43: \\\"cwd\\\"...\n Line 89: {\"type\":\"tool_use\",\"timestamp\":1789015065914,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_tZRUOlq4LeY0JAeWSLzvdTiX\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/research/research-completion-abi.md\"},\"output\":\"/home/alex/sots-re/campaign/research/research-completion-abi.md\\nfile\\n\\n1: # Completion record ABI recovery\\n2: \\n3: Static handoff only. The provenance index is\\n4: `verify/results/research-completion-abi/reva-2026-09-09-index.md`; the regenerated instruction\\n5: capture and interpretation are respectively\\n6: `verify/results/research-completion-abi/objdump-2026-09-09-ownership.txt` and\\n7: `verify/results/research-completion-abi/recovered-static.md`. The complete dedup/helper repair is\\n8: `verify/results/research-completion-abi/objdump-2026-09-09-dedup-helper.txt`; its first-window raw\\n9: provenance is superseded by the paired captures and identity record in\\n10: `verify/results/research-completion-abi/objdump-2026-09-10-boundary-repair.md` under Astra decision\\n11: `d-d2a9b8be6399a6abaa0e05a5`. Input identity is `dumps/sots.exe`,\\n12: SHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841` / MD5\\n13: `9969481c39f4b33a8a21c48b62abee4c`.\\n14: \\n15: The ownership archive's terminal-byte provenance is likewise superseded by the complete package\\n16: `verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/` under Astra decision\\n17: `d-d4c494ba02ada278030ef473`. Its six narrow/wide pairs, raw section-byte checks and full ten-window\\n18: audit establish the encoded return immediates while preserving the static-only limitation. The\\n19: package found three additional truncated historical stops (ObservedTech append/reallocator and\\n20: string allocation/replacement); their widened streams are now the byte authority. No archive\\n21: production-history inference or live-safety claim is made.\\n22: \\n23: ## Implementa...\n Line 92: {\"type\":\"tool_use\",\"timestamp\":1789015069381,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_HKTmlFUkDTEfMBi5lT7HIAAV\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/verify/results/research-completion-abi/recovered-static.md\"},\"output\":\"/home/alex/sots-re/verify/results/research-completion-abi/recovered-static.md\\nfile\\n\\n1: # Fresh static observations\\n2: \\n3: Static evidence only. It does not establish live allocator safety, a compatible replacement\\n4: allocator, or replacement acceptance. Raw local evidence and exact regeneration commands are in\\n5: `objdump-2026-09-09-ownership.txt`; the owner-supplied input is `dumps/sots.exe`, SHA-256\\n6: `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841` / MD5\\n7: `9969481c39f4b33a8a21c48b62abee4c`.\\n8: \\n9: The original dedup archive's first-window provenance was overturned by independent review and Astra\\n10: decision `d-d2a9b8be6399a6abaa0e05a5`. Fresh narrow/wide raw streams and complete identities are in\\n11: `objdump-2026-09-10-boundary-repair.md`. The widened stream supplies the complete terminal bytes;\\n12: semantic promotion still requires a new independent reproduction and challenge.\\n13: \\n14: The ownership archive's selected terminal rows have the same superseded provenance limitation.\\n15: Fresh full streams, narrow/wide repairs, section-byte dumps and an audit of all ten declared windows\\n16: are in `run-79357a65226f61d6a86c042d/`. Six historical stops truncate `ret imm16` after `c2`;\\n17: the widened/static raw bytes establish five `c2 04 00` encodings and one `c2 08 00` encoding.\\n18: This repairs terminal-byte provenance under decision `d-d4c494ba02ada278030ef473`; it does not\\n19: convert the static interpretations below into live allocator-safety or accepted ABI claims.\\n20: \\n21: ## Recorded instruction facts\\n22: \\n23: * `ObservedTech::ObservedTech` at `0x008562a0` is an ECX receiver,...\n Line 95: {\"type\":\"tool_use\",\"timestamp\":1789015074731,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"glob\",\"callID\":\"call_UvRdyrR5TQsh664nuCjnbdxU\",\"state\":{\"status\":\"completed\",\"input\":{\"pattern\":\"verify/results/research-completion-abi-independent/**/*\",\"path\":\"/home/alex/sots-re\"},\"output\":\"/home/alex/sots-re/verify/results/research-completion-abi-independent/reproduce_run_eba7860308317f839eb35392.py\\n/home/alex/sots-re/verify/results/research-completion-abi-independent/reproduce_run_d94d4516b9d898793318805e.py\\n/home/alex/sots-re/verify/results/research-completion-abi-independent/heldout_run_d94d4516b9d898793318805e.py\\n/home/alex/sots-re/verify/results/research-completion-abi-independent/verification-plan-run-7d85d45cb2196e07025e5096.md\\n/home/alex/sots-re/verify/results/research-completion-abi-independent/result-run-735fcb8f4876c10285b03fad.md\\n/home/alex/sots-re/verify/results/research-completion-abi-independent/reproduce_run_735fcb8f4876c10285b03fad.py\\n/home/alex/sots-re/verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py\\n/home/alex/sots-re/verify/results/research-completion-abi-independent/result-run-7d85d45cb2196e07025e5096.md\\n/home/alex/sots-re/verify/results/research-completion-abi-independent/result.md\\n/home/alex/sots-re/verify/results/research-completion-abi-independent/verification-plan-run-eba7860308317f839eb35392.md\\n/home/alex/sots-re/verify/results/research-completion-abi-independent/run-7d85d45cb2196e07025e5096/player-append-narrow.stderr.txt\\n/home/alex/sots-re/verify/results/research-completion-abi-independent/run-7d85d45cb2196e07025e5096/dedup-wide.stdout.txt\\n/home/alex/sots-re/verify/results/research-completion-abi-independent/run-7d85d45cb2196e07025e5096/observed-push-narrow.stderr.txt\\n/home/alex/sots-re/verify/results/research-completion-abi-independent/run-7d85d45cb2196e07025e5096/observed-alloc-wide.stdout.txt\\n/home/alex/sots-re/verify/results/research-completion-abi-indepe...\n Line 98: {\"type\":\"tool_use\",\"timestamp\":1789015082837,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_L0q25mdmzslPo2jrIAgMictP\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-get-create.stdout.txt\"},\"output\":\"/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-get-create.stdout.txt\\nfile\\n\\n1: \\n2: /home/alex/sots-re/dumps/sots.exe: file format pei-i386\\n3: \\n4: \\n5: Disassembly of section .text:\\n6: \\n7: 00885380 <.text+0x484380>:\\n8: 885380:\\t55 \\tpush ebp\\n9: 885381:\\t8b ec \\tmov ebp,esp\\n10: 885383:\\t6a ff \\tpush 0xffffffff\\n11: 885385:\\t68 30 af 99 00 \\tpush 0x99af30\\n12: 88538a:\\t64 a1 00 00 00 00 \\tmov eax,fs:0x0\\n13: 885390:\\t50 \\tpush eax\\n14: 885391:\\t83 ec 18 \\tsub esp,0x18\\n15: 885394:\\t53 \\tpush ebx\\n16: 885395:\\t56 \\tpush esi\\n17: 885396:\\t57 \\tpush edi\\n18: 885397:\\ta1 78 8b af 00 \\tmov eax,ds:0xaf8b78\\n19: 88539c:\\t33 c5 \\txor eax,ebp\\n20: 88539e:\\t50 \\tpush eax\\n21: 88539f:\\t8d 45 f4 \\tlea eax,[ebp-0xc]\\n22: 8853a2:\\t64 a3 00 00 00 00 \\tmov fs:0x0,eax\\n23: 8853a8:\\t8b f1 \\tmov esi,ecx\\n24: 8853aa:\\t8b 56 08 \\tmov edx,DWORD PTR [esi+0x8]\\n25: 8853ad:\\t2b 56 04 \\tsub edx,DWORD PTR [esi+0x4]\\n26: 8853b0:\\t8d 4e 04 \\tlea ecx,[esi+0x4]\\n27: 8853b3:\\tb8 ab aa aa 2a \\tmov eax,0x2aaaaaab\\n28: 8853b8:\\tf7 ea \\timul edx\\n29: 8853ba:\\tc1 fa 02 \\tsar edx,0x2\\n30: 8853bd:\\t8b c2 \\tmov eax,edx\\n31: 8853bf:\\tc1 e8 1f \\tshr eax,0x1f\\n32: 8853c2...\n Line 101: {\"type\":\"tool_use\",\"timestamp\":1789015134973,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"apply_patch\",\"callID\":\"call_ka6yHAMr5Kdm75u89piuVB1a\",\"state\":{\"status\":\"completed\",\"input\":{\"patchText\":\"*** Begin Patch\\n*** Add File: /home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/verification-plan-run-ee78b8773688ca09f8046e21.md\\n+# Independent correction verification plan\\n+\\n+Session `run-ee78b8773688ca09f8046e21`; actor `research-abi-correction-verifier`;\\n+model `openai/gpt-5.6-sol`. This plan predates the verifier capture. It covers static\\n+reproduction and does not authorize game, allocator, VM, Ghidra, or build-host execution.\\n+\\n+## Required identities and positive execution\\n+\\n+The assigned paired source manifests must rehash to engine\\n+`ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd` at HEAD\\n+`7741d42fc5e4e761e6449bdaf0e4a61d00036a23` and RE\\n+`6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8` at HEAD\\n+`3bfde5a70d874a723e797a695bbd847fd82c0aa7`. The input must be 7,898,624-byte\\n+`dumps/sots.exe` SHA-256 `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`.\\n+The instrument must be 373,888-byte `/usr/bin/objdump` SHA-256\\n+`1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd`, GNU\\n+objdump 2.38. Every command must return zero, emit nonempty stdout and empty stderr.\\n+\\n+## Falsifiers\\n+\\n+1. Any source, binary, tool, command boundary, byte count, or digest mismatch fails\\n+ reproduction; a decoded-looking listing does not override provenance failure.\\n+2. Any write to `[EBP-0x20]` in get/create before the call at `0x00885413` falsifies the\\n+ corrected uninitialized-in-this-routine claim. Absence of a write does not prove a runtime\\n+ value, randomness, or allocator safety.\\n+3. Failure of append to copy source `+4` to destination `+4`, or advancement of `_Mylast`\\n+ before nested copy returns, falsifies the claimed append order...\n Line 104: {\"type\":\"tool_use\",\"timestamp\":1789015158189,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"todowrite\",\"callID\":\"call_0q7BVvPk1kNXI9B19iR9z8ml\",\"state\":{\"status\":\"completed\",\"input\":{\"todos\":[{\"content\":\"Read canonical campaign instructions, contract, checkpoint, and open surprises\",\"status\":\"completed\",\"priority\":\"high\"},{\"content\":\"Verify engine/RE worktree and source/resource identities\",\"status\":\"completed\",\"priority\":\"high\"},{\"content\":\"Define verification falsifiers, branch exposures, and distinct states from handoff\",\"status\":\"completed\",\"priority\":\"high\"},{\"content\":\"Reproduce verifier package and independently challenge one assumption\",\"status\":\"in_progress\",\"priority\":\"high\"},{\"content\":\"Write mandatory fresh canonical checkpoint with exact next action\",\"status\":\"pending\",\"priority\":\"high\"}]},\"output\":\"[\\n {\\n \\\"content\\\": \\\"Read canonical campaign instructions, contract, checkpoint, and open surprises\\\",\\n \\\"status\\\": \\\"completed\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Verify engine/RE worktree and source/resource identities\\\",\\n \\\"status\\\": \\\"completed\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Define verification falsifiers, branch exposures, and distinct states from handoff\\\",\\n \\\"status\\\": \\\"completed\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Reproduce verifier package and independently challenge one assumption\\\",\\n \\\"status\\\": \\\"in_progress\\\",\\n \\\"priority\\\": \\\"high\\\"\\n },\\n {\\n \\\"content\\\": \\\"Write mandatory fresh canonical checkpoint with exact next action\\\",\\n \\\"status\\\": \\\"pending\\\",\\n \\\"priority\\\": \\\"high\\\"\\n }\\n]\",\"metadata\":{\"todos\":[{\"content\":\"Read canonical campaign instructions, contract, checkpoint, and open surprises\",\"status\":\"completed\",\"priority\":\"high\"},{\"content\":\"Verify engine/RE worktree and source/resource identities\",\"status\":\"completed\",\"priority\":\"high\"},{\"content\":\"Define verification falsifiers, branch expo...\n Line 107: {\"type\":\"tool_use\",\"timestamp\":1789015178120,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"bash\",\"callID\":\"call_1Z7AQf4CUPKBpYAdyn8mK3Sk\",\"state\":{\"status\":\"completed\",\"input\":{\"command\":\"python3 tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-abi-correction-verifier --role verifier --model openai/gpt-5.6-sol --session run-ee78b8773688ca09f8046e21 --summary 'Pre-experiment checkpoint. Observations: canonical status is verification with no open surprises; campaign validation passes. Assigned source-binding independently rehashes exactly to engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd and RE 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 at the contract HEADs, matching the analyst manifest. The handoff manifest declares four nonempty zero-return GNU objdump 2.38 captures over binary SHA256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841. Decision: verification plan now predeclares identity/execution failures, stack-write/copy/ordering/lifetime falsifiers, required static branches and distinct states, and a held-out +4 stop-boundary ablation targeting prior truncation failures. It explicitly limits success to independent static comparison, not live allocator safety, runtime execution, or replacement acceptance. Tests so far: source-binding, campaign status, and validate passed; capture not yet run. No lease/resource use or lab/source/index mutation. Blocker: none before read-only local capture; any falsifier triggers surprise and pause.' --artifact verify/results/research-completion-abi-correction-verifier/verification-plan-run-ee78b8773688ca09f8046e21.md --artifact verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/manifest.json --next-action 'Run a fresh verifier-owned four-window objdump reproduction plus +4 stop-boundary ablation, hash all outputs, and compare instruction rows and stack-write/call ordering...\n Line 110: {\"type\":\"tool_use\",\"timestamp\":1789015194360,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"grep\",\"callID\":\"call_LqsugLuKwRpRZiM7Xu8KkSTS\",\"state\":{\"status\":\"completed\",\"input\":{\"pattern\":\"884d62|884d6c|884d73|884d78|779850|7798b2|7798|629580|6295|924faa|007693f0|0x74\",\"path\":\"/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09\",\"include\":\"*.stdout.txt\"},\"output\":\"Found 100 matches (more matches available)\\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-get-create.stdout.txt:\\n Line 69: 885422:\\te8 59 41 da ff \\tcall 0x629580\\n\\n\\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/turn-append.stdout.txt:\\n Line 50: 884d22:\\t74 54 \\tje 0x884d78\\n\\n Line 68: 884d5a:\\t74 1c \\tje 0x884d78\\n\\n Line 70: 884d62:\\t8b 4e 04 \\tmov ecx,DWORD PTR [esi+0x4]\\n\\n Line 73: 884d6c:\\t89 48 04 \\tmov DWORD PTR [eax+0x4],ecx\\n\\n Line 76: 884d73:\\te8 d8 4a ef ff \\tcall 0x779850\\n\\n Line 77: 884d78:\\t83 47 04 18 \\tadd DWORD PTR [edi+0x4],0x18\\n\\n\\n/home/alex/sots-re/verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09/nested-dtor.stdout.txt:\\n Line 7: 00629580 <.text+0x228580>:\\n\\n Line 8: 629580:\\t57 \\tpush edi\\n\\n Line 9: 629581:\\t8b f9 \\tmov edi,ecx\\n\\n Line 10: 629583:\\t83 3f 00 \\tcmp DWORD PTR [edi],0x0\\n\\n Line 11: 629586:\\t74 36 \\tje 0x6295be\\n\\n Line 12: 629588:\\t53 \\tpush ebx\\n\\n Line 13: 629589:\\t56 \\tpush esi\\n\\n Line 14: 62958a:\\tff 15 2c d1 9d 00 \\tcall DWORD PTR ds:0x9dd12c\\n\\n Line 15: 629590:\\t8b 5f 04 \\tmov ebx,DWORD PTR [edi+0x4]\\n\\n Line 16: 629593:\\t8b 37 \\tmov esi,DWORD PTR [edi]\\n\\n Line 17: 629595:\\t3b f3 ...\n Line 113: {\"type\":\"tool_use\",\"timestamp\":1789015264755,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"apply_patch\",\"callID\":\"call_wpCZRYXQ8HYqqZq71EtLFOpi\",\"state\":{\"status\":\"completed\",\"input\":{\"patchText\":\"*** Begin Patch\\n*** Add File: /home/alex/sots-re/verify/results/research-completion-abi-correction-verifier/reproduce_run_ee78b8773688ca09f8046e21.py\\n+#!/usr/bin/env python3\\n+import hashlib, json, re, subprocess\\n+from datetime import datetime, timezone\\n+from pathlib import Path\\n+\\n+ROOT = Path('/home/alex/sots-re')\\n+OUT = ROOT / 'verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21'\\n+AUTHOR = ROOT / 'verify/results/research-completion-abi/run-16f8e9b6376b278c4870be09'\\n+TOOL = Path('/usr/bin/objdump')\\n+BINARY = ROOT / 'dumps/sots.exe'\\n+WINDOWS = {\\n+ 'turn-get-create': (0x00885380, 0x0088544a),\\n+ 'turn-append': (0x00884cb0, 0x00884d8f),\\n+ 'nested-copy': (0x00779850, 0x00779a20),\\n+ 'nested-dtor': (0x00629580, 0x006295ca),\\n+}\\n+EXPECTED = {\\n+ 'binary': '970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841',\\n+ 'tool': '1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd',\\n+}\\n+ROW = re.compile(rb'^\\\\s*[0-9a-f]+:\\\\s', re.M)\\n+\\n+def sha(data): return hashlib.sha256(data).hexdigest()\\n+def rows(data): return [line for line in data.splitlines() if ROW.match(line)]\\n+\\n+OUT.mkdir(parents=True, exist_ok=True)\\n+checks = []\\n+records = []\\n+for name, (start, stop) in WINDOWS.items():\\n+ variants = {}\\n+ for suffix, end in (('exact', stop), ('wide', stop + 4)):\\n+ argv = [str(TOOL), '-D', '-Mintel', f'--start-address=0x{start:08x}',\\n+ f'--stop-address=0x{end:08x}', str(BINARY)]\\n+ p = subprocess.run(argv, cwd=ROOT, capture_output=True, check=False)\\n+ for stream, data in (('stdout', p.stdout), ('stderr', p.stderr)):\\n+ (OUT / f'{name}-{suffix}.{stream}.txt').write_bytes(data)\\n+ variants[suffix] = p.s...\n Line 116: {\"type\":\"tool_use\",\"timestamp\":1789015275495,\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"part\":{\"type\":\"tool\",\"tool\":\"bash\",\"callID\":\"call_uZfkV6SnDOVlzrBhCX9F6tpY\",\"state\":{\"status\":\"completed\",\"input\":{\"command\":\"python3 verify/results/research-completion-abi-correction-verifier/reproduce_run_ee78b8773688ca09f8046e21.py\",\"workdir\":\"/home/alex/sots-re\",\"timeout\":120000},\"output\":\"{\\n \\\"commands\\\": 8,\\n \\\"checks\\\": 45,\\n \\\"failed\\\": [\\n \\\"nested-copy-wide-row-prefix\\\"\\n ],\\n \\\"manifest\\\": \\\"verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/manifest.json\\\"\\n}\\n\",\"metadata\":{\"output\":\"{\\n \\\"commands\\\": 8,\\n \\\"checks\\\": 45,\\n \\\"failed\\\": [\\n \\\"nested-copy-wide-row-prefix\\\"\\n ],\\n \\\"manifest\\\": \\\"verify/results/research-completion-abi-correction-verifier/run-ee78b8773688ca09f8046e21/manifest.json\\\"\\n}\\n\",\"exit\":1,\"truncated\":false},\"title\":\"python3 verify/results/research-completion-abi-correction-verifier/reproduce_run_ee78b8773688ca09f8046e21.py\",\"time\":{\"start\":1789015275400,\"end\":1789015275494}},\"metadata\":{\"openai\":{\"itemId\":\"fc_0f92b954a26b2bef016aa234eb279087d1ab90318ff59d94ff\"}},\"id\":\"prt_0899eb71d001P1VWAhe2laUW6a\",\"sessionID\":\"ses_f76670049ffet3nNghKAXGuoNT\",\"messageID\":\"msg_0899e8ed1001ek0n8XgsZ39Hsk\"}}\n\n\n/home/alex/sots-re/campaign/runtime/runs/run-f63d1e050a7ee3fac7b44885.jsonl:\n Line 2: {\"type\":\"tool_use\",\"timestamp\":1789013806414,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_nyW1IsZ1Y25j70k6fgmBmRr8\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/README.md\"},\"output\":\"/home/alex/sots-re/campaign/README.md\\nfile\\n\\n1: # Canonical campaign controls\\n2: \\n3: `sots-re/campaign/` is the state authority. Start with your contract, its checkpoint, open\\n4: surprises, and [current policy](../guides/multi-agent-workflow.md). Board/dashboard are generated\\n5: projections. Historical evidence is not current acceptance. No automatic commits or lab operations.\\n6: \\n7: Framework development is complete. The `controls-bootstrap` contract reached scoped acceptance;\\n8: see [rollout result](rollout/RESULT.md) and its current contract/verdict for source-bound evidence.\\n9: Active work is reverse engineering. Change tooling only to unblock a named RE experiment.\\n10: \\n11: ## Contract format\\n12: \\n13: `contract.schema.json` is strict JSON Schema (unknown fields and duplicate JSON keys fail).\\n14: The standard-library validator implements the schema's used subset. A populated example is\\n15: [contracts/controls-bootstrap.json](contracts/controls-bootstrap.json); its lifecycle is in the record.\\n16: \\n17: Required fields:\\n18: \\n19: | Field | Structure |\\n20: |---|---|\\n21: | `id`, `title`, `status` | Slug, short title, lifecycle state |\\n22: | `owner` | `{ \\\"name\\\": \\\"worker-identity\\\", \\\"role\\\": \\\"implementer\\\" }` |\\n23: | `baseline` | `{ \\\"engine\\\": {\\\"path\\\":\\\"/absolute/canonical/engine\\\",\\\"commit\\\":\\\"full-commit-id\\\"}, \\\"re\\\": {\\\"path\\\":\\\"/absolute/canonical/re\\\",\\\"commit\\\":\\\"full-commit-id\\\"} }` |\\n24: | `scope`, `inputs`, `effects` | Arrays of explicit nonempty strings; include full write set and runtime inputs |\\n25: | `original_dependencies` | String array, including original-assisted portions and unavailable inputs |\\n26: | `dependencies` | A...\n Line 5: {\"type\":\"tool_use\",\"timestamp\":1789013813495,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_66cqNO5eeNExqVPJVPP4Dn2L\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/AGENTS.md\"},\"output\":\"/home/alex/sots-re/AGENTS.md\\nfile\\n\\n1: # SOTS campaign instructions\\n2: \\n3: This repository is the state authority for the SOTS reconstruction and its Windows lab.\\n4: Start with `campaign/README.md`, your contract, its latest checkpoint, and open surprises.\\n5: Current policy: `guides/multi-agent-workflow.md`. Engine architecture: `sots-engine/docs/architecture.md`.\\n6: Historical findings are evidence, not current execution instructions or accepted status.\\n7: \\n8: ## Authority and models\\n9: \\n10: - The normal lead/RE/implementation/verification/lab loop runs on **GPT-5.6 Sol\\n11: (`openai/gpt-5.6-sol`)**. Reserve **GPT-6 Astra (`openai/gpt-6-astra`)** for resolving\\n12: falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope.\\n13: - `campaign/models.json` is the role/model registry. Launch with `tools/run_agent.py` and an\\n14: explicit role, contract, state root, and paired worktrees. Never silently downgrade or fall back.\\n15: - Ordinary implementation/test failures inside the contract may be fixed by its worker.\\n16: Falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope\\n17: require a recorded surprise and an Astra resolution before affected work continues.\\n18: - No worker subdelegation. The lead assigns parallelism; max two implementation slices after\\n19: the pilot. Independent workload preparation is scheduled against explicit resource leases.\\n20: \\n21: ## Durable state and context\\n22: \\n23: Checkpoint in the canonical RE state root every **20 tool calls or 15 minutes**, whichever is\\n24: earlier, and before an experiment, compaction, handoff, or stop. Include model/session, e...\n Line 6: {\"type\":\"tool_use\",\"timestamp\":1789013813496,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_sAzHRy90ZxLEYpbSipG3rO8d\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/contracts/research-live-record-bridge.json\"},\"output\":\"/home/alex/sots-re/campaign/contracts/research-live-record-bridge.json\\nfile\\n\\n1: {\\n2: \\\"acceptance\\\": [\\n3: {\\n4: \\\"axis\\\": \\\"planning\\\",\\n5: \\\"criterion\\\": \\\"Before ready, publish exact bridge-only source/test ownership, callable entrypoints and calling conventions, generated-address provenance, a bridge-only invocation route, VM/build resources, executable acceptance commands and immutable source/binary/fixture manifests. The route must not call or wire research replacement.\\\",\\n6: \\\"id\\\": \\\"readiness\\\"\\n7: },\\n8: {\\n9: \\\"axis\\\": \\\"understanding\\\",\\n10: \\\"criterion\\\": \\\"Reconcile accepted binary evidence with generated and pure-model facts, including whether EvDsc participates in duplicate equality and whether the callable ObservedTech copy operation begins at 0x0079a150 or an interior site. Every exposed constructor/copy/append/destructor/new/delete operation has an exact ABI and ownership contract.\\\",\\n11: \\\"id\\\": \\\"abi-reconciliation\\\"\\n12: },\\n13: {\\n14: \\\"axis\\\": \\\"implementation\\\",\\n15: \\\"criterion\\\": \\\"An isolated bridge constructs, copies, appends, updates and destroys complete live-layout ObservedTech, TurnEvents and PlayerEvent values using compatible original-runtime allocation services. It never copies raw owning headers and never calls original RecordObservedTech, EventStorage::PostEvent or any research completion root.\\\",\\n16: \\\"id\\\": \\\"bridge-operations\\\"\\n17: },\\n18: {\\n19: \\\"axis\\\": \\\"validation\\\",\\n20: \\\"criterion\\\": \\\"Host tests and a fresh leased disposable-VM run positively execute empty, spare and full capacity; sho...\n Line 7: {\"type\":\"tool_use\",\"timestamp\":1789013813496,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_poY8W7iZxmRzMACS5c7w0GFN\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/checkpoints/research-live-record-bridge-3374a5a2a8d056e7b4dc261c.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/checkpoints/research-live-record-bridge-3374a5a2a8d056e7b4dc261c.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"live-record bridge architect\\\",\\n3: \\\"artifacts\\\": [\\n4: {\\n5: \\\"path\\\": \\\"verify/results/research-live-record-bridge/run-472955e277202c411388c66b/manifest.json\\\",\\n6: \\\"sha256\\\": \\\"ae16b4b500db5b84bea27c659e254842ab0c67c040ca782c016381384338773b\\\"\\n7: },\\n8: {\\n9: \\\"path\\\": \\\"verify/results/research-live-record-bridge/run-472955e277202c411388c66b/turn-get-create.stdout.txt\\\",\\n10: \\\"sha256\\\": \\\"f6e72ba9b08fdf48d70f39379b2fb30a5adbe796072485f70c5795c10ab45ca3\\\"\\n11: },\\n12: {\\n13: \\\"path\\\": \\\"verify/results/research-live-record-bridge/run-472955e277202c411388c66b/turn-append.stdout.txt\\\",\\n14: \\\"sha256\\\": \\\"57d6655feed0fc137bb2b7eee4bfcb09536b5a715603c917ee142770f1d52a15\\\"\\n15: },\\n16: {\\n17: \\\"path\\\": \\\"verify/results/research-live-record-bridge/run-472955e277202c411388c66b/turn-grow.stdout.txt\\\",\\n18: \\\"sha256\\\": \\\"eb887fbef7b4686530d2fc1c0caf2c2ee78c761aa3706cebcf3c146a22480b2e\\\"\\n19: },\\n20: {\\n21: \\\"path\\\": \\\"verify/results/research-live-record-bridge/run-472955e277202c411388c66b/nested-copy.stdout.txt\\\",\\n22: \\\"sha256\\\": \\\"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\\\"\\n23: },\\n24: {\\n25: \\\"path\\\": \\\"verify/results/research-live-record-bridge/run-472955e277202c411388c66b/nested-dtor.stdout.txt\\\",\\n26: \\\"sha256\\\": \\\"3c38887e60d009ab904772b13be93ac1eedd9bee85024e37110160a625db3a83\\\"\\n27: },\\n28: {\\n29: \\\"path\\\": ...\n Line 8: {\"type\":\"tool_use\",\"timestamp\":1789013813507,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"glob\",\"callID\":\"call_DpGdD8fFd9Pttqii1uyI4QAY\",\"state\":{\"status\":\"completed\",\"input\":{\"pattern\":\"campaign/runtime/surprises/*.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-410e48d5ae6cc4da0a6ae649.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-abd1c3613c9922cc94c608d5.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-6d1fcc617a20ca2bcbffc0cc.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-5c58b6a921997731f5b5ae1f.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-d2c8ec81e980396f2306f8fe.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-4a7d66ebd7d8a8f3ec59f11d.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-4f71bf4a5df4e5fc992bb6b2.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-f1c41532e618c77d41538902.json\\n/home/alex/sots-re/campaign/runtime/surprises/s-8996365dab2cd6dc0e17bb9f.json\",\"metadata\":{\"count\":10,\"truncated\":false},\"title\":\"\",\"time\":{\"start\":1789013813453,\"end\":1789013813498}},\"metadata\":{\"openai\":{\"itemId\":\"fc_01cb4e171217cf1d016aa22f35405887d19e1197fe2ed1a325\"}},\"id\":\"prt_0898868c9001fU5o4k2SNYAqMA\",\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"messageID\":\"msg_089884dd9001lEvZMi7udGde1J\"}}\n\n Line 9: {\"type\":\"tool_use\",\"timestamp\":1789013813512,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_x0DCvPHdno337onJW8amJdz8\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/guides/multi-agent-workflow.md\"},\"output\":\"/home/alex/sots-re/guides/multi-agent-workflow.md\\nfile\\n\\n1: # Multi-agent operating architecture\\n2: \\n3: ## Product and milestone\\n4: \\n5: Reconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product\\n6: milestone is standalone replay given a captured command stream and complete declared runtime\\n7: inputs. The first workflow pilot is the complete research write set. A passing host build is a\\n8: component baseline, not a playable engine or independent replacement.\\n9: \\n10: ## Source of truth\\n11: \\n12: `campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,\\n13: leases and surprises, and evidence packages identify inputs, source and executable artifacts.\\n14: `campaign/current.json` selects published evidence by path and digest. Board/dashboard are\\n15: generated projections, never alternate writable authorities. Exact tool CLI/schema is documented\\n16: in `campaign/README.md`. Historical findings retain their original experiment scope; they are\\n17: not promoted by copying an old status into a new contract.\\n18: \\n19: ## Model authority\\n20: \\n21: | Responsibility | Model |\\n22: |---|---|\\n23: | Normal planning, architecture and integration loop | GPT-5.6 Sol |\\n24: | Bounded RE analysis, implementation and independent verification | GPT-5.6 Sol |\\n25: | Routine lab/workload operations | GPT-5.6 Sol |\\n26: | Problem and surprise resolution | GPT-6 Astra |\\n27: | Context compaction | GPT-5.5 |\\n28: \\n29: Exact provider IDs are in `campaign/models.json`. The lead escalates to Astra when a falsified\\n30: assumption, conflict, instrument effect, or scope change blocks the loop. No fallbac...\n Line 12: {\"type\":\"tool_use\",\"timestamp\":1789013826371,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_ezi501MzjQTB6ucarhGpPedB\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json\"},\"output\":\"/home/alex/sots-re/campaign/runtime/surprises/s-5a78d3a0a10c1f8545df8eb1.json\\nfile\\n\\n1: {\\n2: \\\"actor\\\": \\\"live-record bridge architect\\\",\\n3: \\\"contract\\\": \\\"research-live-record-bridge\\\",\\n4: \\\"id\\\": \\\"s-5a78d3a0a10c1f8545df8eb1\\\",\\n5: \\\"model\\\": \\\"openai/gpt-5.6-sol\\\",\\n6: \\\"probe\\\": \\\"Astra must inspect the complete 0x00885380..0x0088544a entry window and 0x00884cb0..0x00884d8f append window from verify/results/research-live-record-bridge/run-472955e277202c411388c66b, enumerate every write to [EBP-0x20] before the append call, and decide whether the transient EvTurn is indeterminate and whether final post-publication semantics remain usable. Revise/invalidate the accepted dependency interpretation and prescribe the exact generated-row wording before TurnEvents planning continues.\\\",\\n7: \\\"role\\\": \\\"architecture-review\\\",\\n8: \\\"schema\\\": \\\"sots-surprise/1\\\",\\n9: \\\"status\\\": \\\"open\\\",\\n10: \\\"summary\\\": \\\"Session run-472955e277202c411388c66b fresh pinned-binary capture contradicts the accepted dependency interpretation that EventStorage get/create initializes a miss-path temporary TurnEvents EvTurn to zero before append. In 0x00885380, local TurnEvents begins at [EBP-0x24]: 0x008853fc writes vptr, and 0x00885403/06/09 zero only nested-vector pointers at +0x08/+0x0c/+0x10. No instruction writes temporary EvTurn at [EBP-0x20] before 0x00885413 calls append. Append 0x00884d62 copies source+0x04 into destination+0x04, so the newly appended element transiently receives the uninitialized stack word; 0x0088542d overwrites the stored element EvTurn with the requested turn after temporary nested-vector destruction. SU...\n Line 13: {\"type\":\"tool_use\",\"timestamp\":1789013826507,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_NoefcDKfw7HnrQQyES1f7eG3\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/campaign/contracts/research-completion-abi.json\"},\"output\":\"/home/alex/sots-re/campaign/contracts/research-completion-abi.json\\nfile\\n\\n1: {\\n2: \\\"acceptance\\\": [\\n3: {\\n4: \\\"axis\\\": \\\"static-recovery\\\",\\n5: \\\"criterion\\\": \\\"Addresses/signatures and record/container/string lifetime rules backed by fresh binary/tool captures; distinguish recorded facts, inference and unexercised branches. Name exact callable allocation/copy/destruction operations or precise unresolved blockers.\\\",\\n6: \\\"id\\\": \\\"ownership-recovered\\\"\\n7: },\\n8: {\\n9: \\\"axis\\\": \\\"validation\\\",\\n10: \\\"criterion\\\": \\\"Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.\\\",\\n11: \\\"id\\\": \\\"independent-cross-check\\\"\\n12: }\\n13: ],\\n14: \\\"baseline\\\": {\\n15: \\\"engine\\\": {\\n16: \\\"commit\\\": \\\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\\",\\n17: \\\"path\\\": \\\"/home/alex/sots-engine\\\"\\n18: },\\n19: \\\"re\\\": {\\n20: \\\"commit\\\": \\\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\\",\\n21: \\\"path\\\": \\\"/home/alex/sots-re\\\"\\n22: }\\n23: },\\n24: \\\"checkpoint\\\": \\\"campaign/runtime/checkpoints/research-completion-abi-d2e4078886c66df34ee00b24.json\\\",\\n25: \\\"dependencies\\\": [\\n26: \\\"controls-bootstrap\\\"\\n27: ],\\n28: \\\"effects\\\": [\\n29: \\\"Evidence-backed RE handoff and raw static captures; no game or shared database state changes\\\"\\n30: ],\\n31: \\\"evidence\\\": [\\n32: {\\n33: \\\"axis\\\": \\\"static-recovery\\\",\\n34: \\\"binaries\\\": [\\n35: {\\n36: \\\"path\\\": \\\"dumps/sots.exe\\\",\\n37: \\\"sha256\\\": \\\"970b7de729956a53094c7eb98aba4270a...\n Line 14: {\"type\":\"tool_use\",\"timestamp\":1789013826840,\"sessionID\":\"ses_f7677c13bffeSc7NxK5XDVgyJc\",\"part\":{\"type\":\"tool\",\"tool\":\"read\",\"callID\":\"call_9uXEhLwxBNbIXWg8CsOOMg3Z\",\"state\":{\"status\":\"completed\",\"input\":{\"filePath\":\"/home/alex/sots-re/verify/results/research-live-record-bridge/run-472955e277202c411388c66b/manifest.json\"},\"output\":\"/home/alex/sots-re/verify/results/research-live-record-bridge/run-472955e277202c411388c66b/manifest.json\\nfile\\n\\n1: {\\n2: \\\"schema\\\": \\\"sots-live-record-static-capture/1\\\",\\n3: \\\"session\\\": \\\"run-472955e277202c411388c66b\\\",\\n4: \\\"scope\\\": \\\"Read-only TurnEvents get/create and directly required lifetime helpers; static planning evidence only.\\\",\\n5: \\\"cwd\\\": \\\"/home/alex/sots-re\\\",\\n6: \\\"source_identity\\\": {\\n7: \\\"engine\\\": {\\n8: \\\"path\\\": \\\"/tmp/opencode/sots-final-research-engine\\\",\\n9: \\\"commit\\\": \\\"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\\\",\\n10: \\\"sha256\\\": \\\"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\\\"\\n11: },\\n12: \\\"re\\\": {\\n13: \\\"path\\\": \\\"/tmp/opencode/sots-final-research-re\\\",\\n14: \\\"commit\\\": \\\"3bfde5a70d874a723e797a695bbd847fd82c0aa7\\\",\\n15: \\\"sha256\\\": \\\"6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8\\\"\\n16: }\\n17: },\\n18: \\\"input\\\": {\\n19: \\\"path\\\": \\\"/home/alex/sots-re/dumps/sots.exe\\\",\\n20: \\\"sha256\\\": \\\"970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841\\\"\\n21: },\\n22: \\\"tool\\\": {\\n23: \\\"path\\\": \\\"/usr/bin/objdump\\\",\\n24: \\\"version\\\": \\\"GNU Binutils 2.38\\\",\\n25: \\\"sha256\\\": \\\"1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd\\\"\\n26: },\\n27: \\\"windows\\\": [\\n28: {\\n29: \\\"name\\\": \\\"turn-get-create\\\",\\n30: \\\"argv\\\": [\\n31: \\\"/usr/bin/objdump\\\",\\n32: \\\"-D\\\",\\n33: \\\"-Mintel\\\",\\n34: \\\"--start-address=0x00885380\\\",\\n35: \\\"--stop-address=0x0088544a\\\",\\n36: \\\"/home/alex/sots-r...\n\n(Results truncated. Consider using a more specific path or pattern.)","metadata":{"matches":100,"truncated":true},"title":"ccd8e020|6696fd52|\"status\"|\"started\"","time":{"start":1789045487541,"end":1789045487585}},"metadata":{"openai":{"itemId":"fc_071436885b6819e6016aa2aaeeabb487d1bde124b5a95fbf45"}},"id":"prt_08b6bb7b2001dx7xV3FbSNzfHw","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6b90be001R15QEqH9VHgr4w"}} +{"type":"tool_use","timestamp":1789045487593,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_4bGCiC0A1pA9i6TQPFVjJZgl","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/runtime/decisions/d-0bb927e63b915c87a58d4257.json"},"output":"/home/alex/sots-re/campaign/runtime/decisions/d-0bb927e63b915c87a58d4257.json\nfile\n\n1: {\n2: \"actor\": \"research ABI surprise resolver\",\n3: \"contract\": \"research-completion-abi\",\n4: \"explanation\": \"Astra resolution-only decision, session run-daefd1b77558f324ae730b27; apply jointly with d-fd5aff1eaf78a8c15d96723c. OBSERVATION: inspected verify/results/research-completion-abi-correction-verifier/reproduce_run_ee78b8773688ca09f8046e21.py. Lines 7 and 72 hard-code prior output directory and session; lines 26/36/84 allow overwriting prior outputs. Actual-session report-run-5bd0e537bb0c4c4f43987ac1.md records current invocation and exit 1; generated run-ee78b8773688ca09f8046e21/manifest.json claims prior session with fresh timestamp. Current checkpoint 070383fd013a0e4b1a2ef5e0 rehashed that manifest/report to the inherited checkpoint hashes. Binary/tool/source and positive static execution qualifications are recorded in d-fd5aff1eaf78a8c15d96723c; no fresh binary execution or runtime neutrality measurement here. No basis to infer a different game build or game mechanism from stale provenance.\\nOVERTURNED in exact current-session domain: manifest is truthful evidence of run-5bd0e537bb0c4c4f43987ac1, inherited helper is safely reusable unchanged across fresh sessions, and fresh timestamp/identical stdout repairs stale session identity. QUALIFIED: raw outputs and report survive as archived static measurements with documented provenance defect, not independent current-session or integrated acceptance. SURVIVES: failed boundary challenge is a failure, eight positive objdump subprocess records support static capture rather than zero-execution, and unaffected decoded ownership rows retain only the partial static domain in companion decision. A later report cannot retroactively turn overwritten prior-session output into an immutable original-run bundle.\\nINVALIDATE current-session/full-compare acceptance use of the entire verifier run-ee78b8773688ca09f8046e21/manifest.json package, its hard-coded helper as a fresh-run recipe, and any checkpoint/verdict depending on that attribution. Preserve original files and failure report; no in-place relabeling, rehash... (line truncated to 2000 chars)\n5: \"id\": \"d-0bb927e63b915c87a58d4257\",\n6: \"invalidated_checkpoint\": null,\n7: \"invalidated_evidence\": [],\n8: \"model\": \"openai/gpt-6-astra\",\n9: \"probe\": \"Cheapest provenance discriminator before capture: supply the actual new campaign run session explicitly to a fresh minimal capture recipe/direct manifest; verify it equals the launch record and output directory and that the directory does not already exist. Predeclare negative checks rejecting missing session, stale prior-session ID and reused output location before running objdump. Archive the recipe and interpreter/tool/source/input identities before capture; run all four exact/repaired complete-boundary windows plus companion negative boundary control into the new directory and record actual commands, timestamps, return codes and stream hashes. Fail closed on identity drift and any required failure; expected bad-boundary control must remain explicitly classified negative, never counted as a passing full stream. Independent verifier must reproduce with its own real session and fresh directory, not execute the inherited hard-coded helper or relabel this manifest. No probe was executed by resolver.\",\n10: \"role\": \"resolver\",\n11: \"schema\": \"sots-decision/1\",\n12: \"surprise\": \"s-d44b9f9e62272794d88bbed6\",\n13: \"timestamp\": \"2026-09-10T04:51:08.364275+00:00\"\n14: }\n\n(End of file - total 14 lines)\n","metadata":{"preview":"{\n \"actor\": \"research ABI surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only decision, session run-daefd1b77558f324ae730b27; apply jointly with d-fd5aff1eaf78a8c15d96723c. OBSERVATION: inspected verify/results/research-completion-abi-correction-verifier/reproduce_run_ee78b8773688ca09f8046e21.py. Lines 7 and 72 hard-code prior output directory and session; lines 26/36/84 allow overwriting prior outputs. Actual-session report-run-5bd0e537bb0c4c4f43987ac1.md records current invocation and exit 1; generated run-ee78b8773688ca09f8046e21/manifest.json claims prior session with fresh timestamp. Current checkpoint 070383fd013a0e4b1a2ef5e0 rehashed that manifest/report to the inherited checkpoint hashes. Binary/tool/source and positive static execution qualifications are recorded in d-fd5aff1eaf78a8c15d96723c; no fresh binary execution or runtime neutrality measurement here. No basis to infer a different game build or game mechanism from stale provenance.\\nOVERTURNED in exact current-session domain: manifest is truthful evidence of run-5bd0e537bb0c4c4f43987ac1, inherited helper is safely reusable unchanged across fresh sessions, and fresh timestamp/identical stdout repairs stale session identity. QUALIFIED: raw outputs and report survive as archived static measurements with documented provenance defect, not independent current-session or integrated acceptance. SURVIVES: failed boundary challenge is a failure, eight positive objdump subprocess records support static capture rather than zero-execution, and unaffected decoded ownership rows retain only the partial static domain in companion decision. A later report cannot retroactively turn overwritten prior-session output into an immutable original-run bundle.\\nINVALIDATE current-session/full-compare acceptance use of the entire verifier run-ee78b8773688ca09f8046e21/manifest.json package, its hard-coded helper as a fresh-run recipe, and any checkpoint/verdict depending on that attribution. Preserve original files and failure report; no in-place relabeling, rehash... (line truncated to 2000 chars)\n \"id\": \"d-0bb927e63b915c87a58d4257\",\n \"invalidated_checkpoint\": null,\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest provenance discriminator before capture: supply the actual new campaign run session explicitly to a fresh minimal capture recipe/direct manifest; verify it equals the launch record and output directory and that the directory does not already exist. Predeclare negative checks rejecting missing session, stale prior-session ID and reused output location before running objdump. Archive the recipe and interpreter/tool/source/input identities before capture; run all four exact/repaired complete-boundary windows plus companion negative boundary control into the new directory and record actual commands, timestamps, return codes and stream hashes. Fail closed on identity drift and any required failure; expected bad-boundary control must remain explicitly classified negative, never counted as a passing full stream. Independent verifier must reproduce with its own real session and fresh directory, not execute the inherited hard-coded helper or relabel this manifest. No probe was executed by resolver.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-d44b9f9e62272794d88bbed6\",\n \"timestamp\": \"2026-09-10T04:51:08.364275+00:00\"\n}","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/runtime/decisions/d-0bb927e63b915c87a58d4257.json","text":"{\n \"actor\": \"research ABI surprise resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only decision, session run-daefd1b77558f324ae730b27; apply jointly with d-fd5aff1eaf78a8c15d96723c. OBSERVATION: inspected verify/results/research-completion-abi-correction-verifier/reproduce_run_ee78b8773688ca09f8046e21.py. Lines 7 and 72 hard-code prior output directory and session; lines 26/36/84 allow overwriting prior outputs. Actual-session report-run-5bd0e537bb0c4c4f43987ac1.md records current invocation and exit 1; generated run-ee78b8773688ca09f8046e21/manifest.json claims prior session with fresh timestamp. Current checkpoint 070383fd013a0e4b1a2ef5e0 rehashed that manifest/report to the inherited checkpoint hashes. Binary/tool/source and positive static execution qualifications are recorded in d-fd5aff1eaf78a8c15d96723c; no fresh binary execution or runtime neutrality measurement here. No basis to infer a different game build or game mechanism from stale provenance.\\nOVERTURNED in exact current-session domain: manifest is truthful evidence of run-5bd0e537bb0c4c4f43987ac1, inherited helper is safely reusable unchanged across fresh sessions, and fresh timestamp/identical stdout repairs stale session identity. QUALIFIED: raw outputs and report survive as archived static measurements with documented provenance defect, not independent current-session or integrated acceptance. SURVIVES: failed boundary challenge is a failure, eight positive objdump subprocess records support static capture rather than zero-execution, and unaffected decoded ownership rows retain only the partial static domain in companion decision. A later report cannot retroactively turn overwritten prior-session output into an immutable original-run bundle.\\nINVALIDATE current-session/full-compare acceptance use of the entire verifier run-ee78b8773688ca09f8046e21/manifest.json package, its hard-coded helper as a fresh-run recipe, and any checkpoint/verdict depending on that attribution. Preserve original files and failure report; no in-place relabeling, rehash... (line truncated to 2000 chars)\n \"id\": \"d-0bb927e63b915c87a58d4257\",\n \"invalidated_checkpoint\": null,\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest provenance discriminator before capture: supply the actual new campaign run session explicitly to a fresh minimal capture recipe/direct manifest; verify it equals the launch record and output directory and that the directory does not already exist. Predeclare negative checks rejecting missing session, stale prior-session ID and reused output location before running objdump. Archive the recipe and interpreter/tool/source/input identities before capture; run all four exact/repaired complete-boundary windows plus companion negative boundary control into the new directory and record actual commands, timestamps, return codes and stream hashes. Fail closed on identity drift and any required failure; expected bad-boundary control must remain explicitly classified negative, never counted as a passing full stream. Independent verifier must reproduce with its own real session and fresh directory, not execute the inherited hard-coded helper or relabel this manifest. No probe was executed by resolver.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-d44b9f9e62272794d88bbed6\",\n \"timestamp\": \"2026-09-10T04:51:08.364275+00:00\"\n}","lineStart":1,"lineEnd":14,"totalLines":14,"truncated":false}},"title":"campaign/runtime/decisions/d-0bb927e63b915c87a58d4257.json","time":{"start":1789045487530,"end":1789045487590}},"metadata":{"openai":{"itemId":"fc_071436885b6819e6016aa2aaeeaba487d19372c9177c77de15"}},"id":"prt_08b6bb7a6001tHbDcAndq7kMOl","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6b90be001R15QEqH9VHgr4w"}} +{"type":"step_finish","timestamp":1789045487657,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6bb826001o7PhSNaCvSg5Nj","reason":"tool-calls","snapshot":"1e9b3541285c30a38bbe6b289c04bf9202e6b8ad","messageID":"msg_08b6b90be001R15QEqH9VHgr4w","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","type":"step-finish","tokens":{"total":47284,"input":1510,"output":206,"reasoning":0,"cache":{"write":0,"read":45568}},"cost":0}} +{"type":"step_start","timestamp":1789045493522,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6bcf0e001xoMDDBiup9y1jJ","messageID":"msg_08b6bb85c001r5D9xncq0KhnRC","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","snapshot":"94d7cd2fec2e0b75cfcfc3aa28498e3b0a2dddbc","type":"step-start"}} +{"type":"tool_use","timestamp":1789045504390,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"grep","callID":"call_sG6MRYKHxTQCx3nw394DObsp","state":{"status":"completed","input":{"pattern":"manifest_sha256|\"status\"","path":"/home/alex/sots-re/campaign/runtime/runs","include":"run-ec31ee938e1f509cd7130c03.json"},"output":"Found 3 matches\n/home/alex/sots-re/campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json:\n Line 2188: \"manifest_sha256\": \"ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd\",\n\n Line 5053: \"manifest_sha256\": \"e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9\",\n\n Line 5058: \"status\": \"running\",\n","metadata":{"matches":3,"truncated":false},"title":"manifest_sha256|\"status\"","time":{"start":1789045504375,"end":1789045504389}},"metadata":{"openai":{"itemId":"fc_0c76f96185bba091016aa2aaff40d087d195ee594622ac73f2"}},"id":"prt_08b6bf864001PjjmqFNKdXJnSH","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6bb85c001r5D9xncq0KhnRC"}} +{"type":"tool_use","timestamp":1789045504623,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_Hm351amXIXNh1SSxYKKH0iKM","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt","offset":150,"limit":60},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\nfile\n\n150: 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n151: 7799e9:\t50 \tpush eax\n152: 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n153: 7799ef:\t83 c4 04 \tadd esp,0x4\n154: 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n155: 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n156: 7799fc:\t59 \tpop ecx\n157: 7799fd:\t5e \tpop esi\n158: 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n159: 779a01:\t33 cd \txor ecx,ebp\n160: 779a03:\te8 7a b3 1a 00 \tcall 0x924d82\n161: 779a08:\t8b e5 \tmov esp,ebp\n162: 779a0a:\t5d \tpop ebp\n163: 779a0b:\tc3 \tret \n164: 779a0c:\tcc \tint3 \n165: 779a0d:\tcc \tint3 \n166: 779a0e:\tcc \tint3 \n167: 779a0f:\tcc \tint3 \n168: 779a10:\t53 \tpush ebx\n169: 779a11:\t56 \tpush esi\n170: 779a12:\t8b f1 \tmov esi,ecx\n171: 779a14:\t57 \tpush edi\n172: 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n173: 779a1b:\t33 db \txor ebx,ebx\n174: 779a1d:\t3b fb \tcmp edi,ebx\n175: 779a1f:\t74 \tje 0x779a31\n\n(End of file - total 175 lines)\n","metadata":{"preview":" 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n 7799e9:\t50 \tpush eax\n 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n 7799ef:\t83 c4 04 \tadd esp,0x4\n 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 7799fc:\t59 \tpop ecx\n 7799fd:\t5e \tpop esi\n 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n 779a01:\t33 cd \txor ecx,ebp\n 779a03:\te8 7a b3 1a 00 \tcall 0x924d82\n 779a08:\t8b e5 \tmov esp,ebp\n 779a0a:\t5d \tpop ebp\n 779a0b:\tc3 \tret \n 779a0c:\tcc \tint3 \n 779a0d:\tcc \tint3 \n 779a0e:\tcc \tint3 \n 779a0f:\tcc \tint3 \n 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt","text":" 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n 7799e9:\t50 \tpush eax\n 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n 7799ef:\t83 c4 04 \tadd esp,0x4\n 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 7799fc:\t59 \tpop ecx\n 7799fd:\t5e \tpop esi\n 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n 779a01:\t33 cd \txor ecx,ebp\n 779a03:\te8 7a b3 1a 00 \tcall 0x924d82\n 779a08:\t8b e5 \tmov esp,ebp\n 779a0a:\t5d \tpop ebp\n 779a0b:\tc3 \tret \n 779a0c:\tcc \tint3 \n 779a0d:\tcc \tint3 \n 779a0e:\tcc \tint3 \n 779a0f:\tcc \tint3 \n 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi\n 779a12:\t8b f1 \tmov esi,ecx\n 779a14:\t57 \tpush edi\n 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n 779a1b:\t33 db \txor ebx,ebx\n 779a1d:\t3b fb \tcmp edi,ebx\n 779a1f:\t74 \tje 0x779a31","lineStart":150,"lineEnd":175,"totalLines":175,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt","time":{"start":1789045504608,"end":1789045504622}},"metadata":{"openai":{"itemId":"fc_0c76f96185bba091016aa2aaff40e487d18e77478a0ed85925"}},"id":"prt_08b6bf9a6001huDTS8O4etV4Na","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6bb85c001r5D9xncq0KhnRC"}} +{"type":"tool_use","timestamp":1789045505057,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_Ze4hR8pdzy0WE8zj6xG9bUU9","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt","offset":150,"limit":60},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\nfile\n\n150: 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n151: 7799e9:\t50 \tpush eax\n152: 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n153: 7799ef:\t83 c4 04 \tadd esp,0x4\n154: 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n155: 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n156: 7799fc:\t59 \tpop ecx\n157: 7799fd:\t5e \tpop esi\n158: 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n159: 779a01:\t33 cd \txor ecx,ebp\n160: 779a03:\te8 7a b3 1a 00 \tcall 0x924d82\n161: 779a08:\t8b e5 \tmov esp,ebp\n162: 779a0a:\t5d \tpop ebp\n163: 779a0b:\tc3 \tret \n164: 779a0c:\tcc \tint3 \n165: 779a0d:\tcc \tint3 \n166: 779a0e:\tcc \tint3 \n167: 779a0f:\tcc \tint3 \n168: 779a10:\t53 \tpush ebx\n169: 779a11:\t56 \tpush esi\n170: 779a12:\t8b f1 \tmov esi,ecx\n171: 779a14:\t57 \tpush edi\n172: 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n173: 779a1b:\t33 db \txor ebx,ebx\n174: 779a1d:\t3b fb \tcmp edi,ebx\n175: 779a1f:\t74 10 \tje 0x779a31\n176: 779a21:\t8b cf \tmov ecx,edi\n177: 779a23:\te8 28 6a ff ff \tcall 0x770450\n\n(End of file - total 177 lines)\n","metadata":{"preview":" 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n 7799e9:\t50 \tpush eax\n 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n 7799ef:\t83 c4 04 \tadd esp,0x4\n 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 7799fc:\t59 \tpop ecx\n 7799fd:\t5e \tpop esi\n 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n 779a01:\t33 cd \txor ecx,ebp\n 779a03:\te8 7a b3 1a 00 \tcall 0x924d82\n 779a08:\t8b e5 \tmov esp,ebp\n 779a0a:\t5d \tpop ebp\n 779a0b:\tc3 \tret \n 779a0c:\tcc \tint3 \n 779a0d:\tcc \tint3 \n 779a0e:\tcc \tint3 \n 779a0f:\tcc \tint3 \n 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt","text":" 7799e6:\t8b 45 d4 \tmov eax,DWORD PTR [ebp-0x2c]\n 7799e9:\t50 \tpush eax\n 7799ea:\te8 bb b5 1a 00 \tcall 0x924faa\n 7799ef:\t83 c4 04 \tadd esp,0x4\n 7799f2:\t8b 4d f4 \tmov ecx,DWORD PTR [ebp-0xc]\n 7799f5:\t64 89 0d 00 00 00 00 \tmov DWORD PTR fs:0x0,ecx\n 7799fc:\t59 \tpop ecx\n 7799fd:\t5e \tpop esi\n 7799fe:\t8b 4d f0 \tmov ecx,DWORD PTR [ebp-0x10]\n 779a01:\t33 cd \txor ecx,ebp\n 779a03:\te8 7a b3 1a 00 \tcall 0x924d82\n 779a08:\t8b e5 \tmov esp,ebp\n 779a0a:\t5d \tpop ebp\n 779a0b:\tc3 \tret \n 779a0c:\tcc \tint3 \n 779a0d:\tcc \tint3 \n 779a0e:\tcc \tint3 \n 779a0f:\tcc \tint3 \n 779a10:\t53 \tpush ebx\n 779a11:\t56 \tpush esi\n 779a12:\t8b f1 \tmov esi,ecx\n 779a14:\t57 \tpush edi\n 779a15:\t8b be 24 01 00 00 \tmov edi,DWORD PTR [esi+0x124]\n 779a1b:\t33 db \txor ebx,ebx\n 779a1d:\t3b fb \tcmp edi,ebx\n 779a1f:\t74 10 \tje 0x779a31\n 779a21:\t8b cf \tmov ecx,edi\n 779a23:\te8 28 6a ff ff \tcall 0x770450","lineStart":150,"lineEnd":177,"totalLines":177,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt","time":{"start":1789045505048,"end":1789045505055}},"metadata":{"openai":{"itemId":"fc_0c76f96185bba091016aa2aaff40ec87d1b4f79abcc6bbd0a0"}},"id":"prt_08b6bfa9c001G8XUr11QMuvKrT","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6bb85c001r5D9xncq0KhnRC"}} +{"type":"tool_use","timestamp":1789045505212,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_jHFtU2Cf6LtXMN4qVfP9upJL","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt"},"output":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\nfile\n\n1: \n2: /home/alex/sots-re/dumps/sots.exe: file format pei-i386\n3: \n4: Contents of section .text:\n5: 779a1f 74 108bcfe8 286affff t....(j.. \n\n(End of file - total 5 lines)\n","metadata":{"preview":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\nContents of section .text:\n 779a1f 74 108bcfe8 286affff t....(j.. ","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt","text":"\n/home/alex/sots-re/dumps/sots.exe: file format pei-i386\n\nContents of section .text:\n 779a1f 74 108bcfe8 286affff t....(j.. ","lineStart":1,"lineEnd":5,"totalLines":5,"truncated":false}},"title":"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt","time":{"start":1789045505195,"end":1789045505210}},"metadata":{"openai":{"itemId":"fc_0c76f96185bba091016aa2aaff410087d1b8b60e254b87e1f9"}},"id":"prt_08b6bfc48001f3R6zKW3Noij7r","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6bb85c001r5D9xncq0KhnRC"}} +{"type":"tool_use","timestamp":1789045505450,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_ZGqr9ysbt8TYgf0cGqoEQ6MS","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/contracts/research-live-record-bridge.json"},"output":"/home/alex/sots-re/campaign/contracts/research-live-record-bridge.json\nfile\n\n1: {\n2: \"acceptance\": [\n3: {\n4: \"axis\": \"planning\",\n5: \"criterion\": \"Before ready, publish exact bridge-only source/test ownership, callable entrypoints and calling conventions, generated-address provenance, a bridge-only invocation route, VM/build resources, executable acceptance commands and immutable source/binary/fixture manifests. The route must not call or wire research replacement.\",\n6: \"id\": \"readiness\"\n7: },\n8: {\n9: \"axis\": \"understanding\",\n10: \"criterion\": \"Reconcile accepted binary evidence with generated and pure-model facts, including whether EvDsc participates in duplicate equality and whether the callable ObservedTech copy operation begins at 0x0079a150 or an interior site. Every exposed constructor/copy/append/destructor/new/delete operation has an exact ABI and ownership contract.\",\n11: \"id\": \"abi-reconciliation\"\n12: },\n13: {\n14: \"axis\": \"implementation\",\n15: \"criterion\": \"An isolated bridge constructs, copies, appends, updates and destroys complete live-layout ObservedTech, TurnEvents and PlayerEvent values using compatible original-runtime allocation services. It never copies raw owning headers and never calls original RecordObservedTech, EventStorage::PostEvent or any research completion root.\",\n16: \"id\": \"bridge-operations\"\n17: },\n18: {\n19: \"axis\": \"validation\",\n20: \"criterion\": \"Host tests and a fresh leased disposable-VM run positively execute empty, spare and full capacity; short and long strings; repeated observed names; exact duplicate and description-only-different events; normal destruction; and one contained recorded failure path. Preserve per-case operation/allocation/destruction counts and complete resulting records.\",\n21: \"id\": \"runtime-matrix\"\n22: },\n23: {\n24: \"axis\": \"validation\",\n25: \"criterion\": \"Executable negative controls reject raw string/header transfer, wrong callable entry or convention, mismatched allocator family, missing cleanup, double free, incomplete record fields, forbidden original decision-root calls, zero execution, missing artifacts and source/binary/fixture drift.\",\n26: \"id\": \"negative-controls\"\n27: },\n28: {\n29: \"axis\": \"validation\",\n30: \"criterion\": \"A different verifier session reproduces the source/binary/fixture-bound package and at least one meaningful negative control on an integrated tree. Author-only or static-only evidence cannot accept live allocator safety.\",\n31: \"id\": \"independent-reproduction\"\n32: }\n33: ],\n34: \"baseline\": {\n35: \"engine\": {\n36: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n37: \"path\": \"/home/alex/sots-engine\"\n38: },\n39: \"re\": {\n40: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n41: \"path\": \"/home/alex/sots-re\"\n42: }\n43: },\n44: \"checkpoint\": \"campaign/runtime/checkpoints/research-live-record-bridge-646a5ada115eaf0a3924db19.json\",\n45: \"dependencies\": [\n46: \"research-completion-abi\"\n47: ],\n48: \"effects\": [\n49: \"Complete 0x2c ObservedTech object fields, owned name string, existing-name update semantics, vector first/last/end and element lifetime across no-growth and growth paths.\",\n50: \"Complete 0x74 PlayerEvent fields and three independently owned strings, plus complete 0x18 TurnEvents bucket and nested vector lifetime across no-growth and growth paths.\",\n51: \"Event ID/order, exact duplicate behavior, description-only-different behavior and stale-bucket pruning only as needed to exercise the bridge fixture; no research callback or player-state effects.\",\n52: \"Allocation, copy, destruction and failure-path counters sufficient to detect leaks, mismatched frees, partial construction and double destruction.\"\n53: ],\n54: \"evidence\": [],\n55: \"id\": \"research-live-record-bridge\",\n56: \"inputs\": [\n57: \"Accepted research-completion-abi evidence and handoff, including binary fingerprint and independently reproduced static ownership windows.\",\n58: \"Original binary /home/alex/sots-re/dumps/sots.exe sha256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841; owner-supplied and never committed.\",\n59: \"Source-identical paired worktrees /tmp/opencode/sots-final-research-engine and /tmp/opencode/sots-final-research-re at the contract baselines; exact dirty source-content manifests are required before implementation evidence.\",\n60: \"Disposable VM144 is the preferred runtime fixture guest; verify its current MAC/IP, session/process state and housekeeping immediately before use, then acquire campaign/runtime/leases/vm144.json. VM140 is excluded from this experiment.\",\n61: \"Required but missing before ready: bridge-only invocation fixture, generated callable-address package, 32-bit shim/toolchain manifest, failure-containment design, executable acceptance checker and per-case expected records.\"\n62: ],\n63: \"original_dependencies\": [\n64: \"Original MSVCR100 scalar new/delete and narrowly accepted constructor/copy/append/destructor operations are permitted only as declared, counted ABI services.\",\n65: \"Original RecordObservedTech, EventStorage::PostEvent, ProcessResearch, SetResearched, OnTechResearched and localized string lookup are forbidden in the bridge fixture.\",\n66: \"The original game process supplies the MSVCR100 runtime and object address space for live tests; this contract does not claim standalone allocator or game-decision replacement.\"\n67: ],\n68: \"owner\": {\n69: \"name\": \"live-record bridge architect\",\n70: \"role\": \"architecture-review\"\n71: },\n72: \"predictions\": [\n73: \"ObservedTech no-growth append deep-copies one name; growth relocates every existing 0x2c element and destroys the old range without cross-runtime frees.\",\n74: \"PlayerEvent append deep-copies EvDsc, EvMsg and EvImg independently; full-capacity growth preserves all scalar/default fields and destroys old strings exactly once.\",\n75: \"Repeated observed name updates the existing record without vector growth; exact duplicate event does not append; description-only-different event does append if the accepted EvDsc equality result is correct.\",\n76: \"A contained allocation-failure fixture reports failure without an accepted partial record, leaked owned string, mismatched free or exception crossing into an unsafe ABI boundary.\"\n77: ],\n78: \"scope\": [\n79: \"Recover and implement only the live ABI bridge for ObservedTech, TurnEvents and PlayerEvent construction/copy/append/update/destruction plus isolated fixtures and acceptance tooling.\",\n80: \"First quantum is RE and architecture: reconcile callable boundaries and duplicate semantics, specify failure containment and name exact owned files. No engine implementation or VM mutation until the contract is ready and the operator holds required leases.\",\n81: \"Runtime validation uses a bridge-only fixture on a disposable clone. It must not wire src/shim/hooks/research.cpp or src/shim/main.cpp and must not execute a research completion workload.\",\n82: \"Static ABI acceptance is a dependency, not evidence of live safety. Acceptance remains scoped to bridge operations and does not promote research-replacement.\"\n83: ],\n84: \"status\": \"needs-revision\",\n85: \"stop_conditions\": [\n86: \"Remain proposed while callable ABI, exact ownership, fixture route, manifests, failure containment or executable acceptance is unresolved.\",\n87: \"Stop affected work and record a surprise on contradictory fresh binary/runtime evidence, binary/source drift, allocator mismatch, exception crossing, unexpected game-decision-root execution, leak/double-free, guest interference or access change.\",\n88: \"No Ghidra mutation or VM/build-host mutation without explicit assignment and the corresponding canonical lease; never touch VM140 under this contract.\",\n89: \"No research replacement wiring, delegation, staging, commit, push or destructive canonical worktree operation. Checkpoint every 20 calls/15 minutes and before experiment, handoff or stop.\"\n90: ],\n91: \"title\": \"Live ObservedTech and event record ABI bridge\"\n92: }\n\n(End of file - total 92 lines)\n","metadata":{"preview":"{\n \"acceptance\": [\n {\n \"axis\": \"planning\",\n \"criterion\": \"Before ready, publish exact bridge-only source/test ownership, callable entrypoints and calling conventions, generated-address provenance, a bridge-only invocation route, VM/build resources, executable acceptance commands and immutable source/binary/fixture manifests. The route must not call or wire research replacement.\",\n \"id\": \"readiness\"\n },\n {\n \"axis\": \"understanding\",\n \"criterion\": \"Reconcile accepted binary evidence with generated and pure-model facts, including whether EvDsc participates in duplicate equality and whether the callable ObservedTech copy operation begins at 0x0079a150 or an interior site. Every exposed constructor/copy/append/destructor/new/delete operation has an exact ABI and ownership contract.\",\n \"id\": \"abi-reconciliation\"\n },\n {\n \"axis\": \"implementation\",\n \"criterion\": \"An isolated bridge constructs, copies, appends, updates and destroys complete live-layout ObservedTech, TurnEvents and PlayerEvent values using compatible original-runtime allocation services. It never copies raw owning headers and never calls original RecordObservedTech, EventStorage::PostEvent or any research completion root.\",\n \"id\": \"bridge-operations\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Host tests and a fresh leased disposable-VM run positively execute empty, spare and full capacity; short and long strings; repeated observed names; exact duplicate and description-only-different events; normal destruction; and one contained recorded failure path. Preserve per-case operation/allocation/destruction counts and complete resulting records.\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/contracts/research-live-record-bridge.json","text":"{\n \"acceptance\": [\n {\n \"axis\": \"planning\",\n \"criterion\": \"Before ready, publish exact bridge-only source/test ownership, callable entrypoints and calling conventions, generated-address provenance, a bridge-only invocation route, VM/build resources, executable acceptance commands and immutable source/binary/fixture manifests. The route must not call or wire research replacement.\",\n \"id\": \"readiness\"\n },\n {\n \"axis\": \"understanding\",\n \"criterion\": \"Reconcile accepted binary evidence with generated and pure-model facts, including whether EvDsc participates in duplicate equality and whether the callable ObservedTech copy operation begins at 0x0079a150 or an interior site. Every exposed constructor/copy/append/destructor/new/delete operation has an exact ABI and ownership contract.\",\n \"id\": \"abi-reconciliation\"\n },\n {\n \"axis\": \"implementation\",\n \"criterion\": \"An isolated bridge constructs, copies, appends, updates and destroys complete live-layout ObservedTech, TurnEvents and PlayerEvent values using compatible original-runtime allocation services. It never copies raw owning headers and never calls original RecordObservedTech, EventStorage::PostEvent or any research completion root.\",\n \"id\": \"bridge-operations\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Host tests and a fresh leased disposable-VM run positively execute empty, spare and full capacity; short and long strings; repeated observed names; exact duplicate and description-only-different events; normal destruction; and one contained recorded failure path. Preserve per-case operation/allocation/destruction counts and complete resulting records.\",\n \"id\": \"runtime-matrix\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Executable negative controls reject raw string/header transfer, wrong callable entry or convention, mismatched allocator family, missing cleanup, double free, incomplete record fields, forbidden original decision-root calls, zero execution, missing artifacts and source/binary/fixture drift.\",\n \"id\": \"negative-controls\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"A different verifier session reproduces the source/binary/fixture-bound package and at least one meaningful negative control on an integrated tree. Author-only or static-only evidence cannot accept live allocator safety.\",\n \"id\": \"independent-reproduction\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-live-record-bridge-646a5ada115eaf0a3924db19.json\",\n \"dependencies\": [\n \"research-completion-abi\"\n ],\n \"effects\": [\n \"Complete 0x2c ObservedTech object fields, owned name string, existing-name update semantics, vector first/last/end and element lifetime across no-growth and growth paths.\",\n \"Complete 0x74 PlayerEvent fields and three independently owned strings, plus complete 0x18 TurnEvents bucket and nested vector lifetime across no-growth and growth paths.\",\n \"Event ID/order, exact duplicate behavior, description-only-different behavior and stale-bucket pruning only as needed to exercise the bridge fixture; no research callback or player-state effects.\",\n \"Allocation, copy, destruction and failure-path counters sufficient to detect leaks, mismatched frees, partial construction and double destruction.\"\n ],\n \"evidence\": [],\n \"id\": \"research-live-record-bridge\",\n \"inputs\": [\n \"Accepted research-completion-abi evidence and handoff, including binary fingerprint and independently reproduced static ownership windows.\",\n \"Original binary /home/alex/sots-re/dumps/sots.exe sha256 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841; owner-supplied and never committed.\",\n \"Source-identical paired worktrees /tmp/opencode/sots-final-research-engine and /tmp/opencode/sots-final-research-re at the contract baselines; exact dirty source-content manifests are required before implementation evidence.\",\n \"Disposable VM144 is the preferred runtime fixture guest; verify its current MAC/IP, session/process state and housekeeping immediately before use, then acquire campaign/runtime/leases/vm144.json. VM140 is excluded from this experiment.\",\n \"Required but missing before ready: bridge-only invocation fixture, generated callable-address package, 32-bit shim/toolchain manifest, failure-containment design, executable acceptance checker and per-case expected records.\"\n ],\n \"original_dependencies\": [\n \"Original MSVCR100 scalar new/delete and narrowly accepted constructor/copy/append/destructor operations are permitted only as declared, counted ABI services.\",\n \"Original RecordObservedTech, EventStorage::PostEvent, ProcessResearch, SetResearched, OnTechResearched and localized string lookup are forbidden in the bridge fixture.\",\n \"The original game process supplies the MSVCR100 runtime and object address space for live tests; this contract does not claim standalone allocator or game-decision replacement.\"\n ],\n \"owner\": {\n \"name\": \"live-record bridge architect\",\n \"role\": \"architecture-review\"\n },\n \"predictions\": [\n \"ObservedTech no-growth append deep-copies one name; growth relocates every existing 0x2c element and destroys the old range without cross-runtime frees.\",\n \"PlayerEvent append deep-copies EvDsc, EvMsg and EvImg independently; full-capacity growth preserves all scalar/default fields and destroys old strings exactly once.\",\n \"Repeated observed name updates the existing record without vector growth; exact duplicate event does not append; description-only-different event does append if the accepted EvDsc equality result is correct.\",\n \"A contained allocation-failure fixture reports failure without an accepted partial record, leaked owned string, mismatched free or exception crossing into an unsafe ABI boundary.\"\n ],\n \"scope\": [\n \"Recover and implement only the live ABI bridge for ObservedTech, TurnEvents and PlayerEvent construction/copy/append/update/destruction plus isolated fixtures and acceptance tooling.\",\n \"First quantum is RE and architecture: reconcile callable boundaries and duplicate semantics, specify failure containment and name exact owned files. No engine implementation or VM mutation until the contract is ready and the operator holds required leases.\",\n \"Runtime validation uses a bridge-only fixture on a disposable clone. It must not wire src/shim/hooks/research.cpp or src/shim/main.cpp and must not execute a research completion workload.\",\n \"Static ABI acceptance is a dependency, not evidence of live safety. Acceptance remains scoped to bridge operations and does not promote research-replacement.\"\n ],\n \"status\": \"needs-revision\",\n \"stop_conditions\": [\n \"Remain proposed while callable ABI, exact ownership, fixture route, manifests, failure containment or executable acceptance is unresolved.\",\n \"Stop affected work and record a surprise on contradictory fresh binary/runtime evidence, binary/source drift, allocator mismatch, exception crossing, unexpected game-decision-root execution, leak/double-free, guest interference or access change.\",\n \"No Ghidra mutation or VM/build-host mutation without explicit assignment and the corresponding canonical lease; never touch VM140 under this contract.\",\n \"No research replacement wiring, delegation, staging, commit, push or destructive canonical worktree operation. Checkpoint every 20 calls/15 minutes and before experiment, handoff or stop.\"\n ],\n \"title\": \"Live ObservedTech and event record ABI bridge\"\n}","lineStart":1,"lineEnd":92,"totalLines":92,"truncated":false}},"title":"campaign/contracts/research-live-record-bridge.json","time":{"start":1789045505441,"end":1789045505448}},"metadata":{"openai":{"itemId":"fc_0c76f96185bba091016aa2aaff410c87d18853115cc987ac0d"}},"id":"prt_08b6bfd03001Y89nAvAE0Cp34E","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6bb85c001r5D9xncq0KhnRC"}} +{"type":"tool_use","timestamp":1789045505647,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"read","callID":"call_KaiKJsMeD9tqLIbUSjkuA82T","state":{"status":"completed","input":{"filePath":"/home/alex/sots-re/campaign/contracts/research-replacement.json"},"output":"/home/alex/sots-re/campaign/contracts/research-replacement.json\nfile\n\n1: {\n2: \"acceptance\": [\n3: {\n4: \"axis\": \"planning\",\n5: \"criterion\": \"BLOCKED: accepted static ABI dependency is named and original-helper policy is fixed, but readiness still requires an accepted live-record-bridge contract, implemented tools/research_replacement.py interfaces from the pilot plan, required asset paths/hashes, W0 recertification, exact coordinator-owned paths and immutable source/binary/input manifests.\",\n6: \"id\": \"readiness\"\n7: },\n8: {\n9: \"axis\": \"implementation\",\n10: \"criterion\": \"Fresh full-profile source-bound host/assets/shim build; expected test identities and explicit positive executed workloads; no required missing input, unexpected skip or stale binary.\",\n11: \"id\": \"full-gate\"\n12: },\n13: {\n14: \"axis\": \"validation\",\n15: \"criterion\": \"Two fresh C1/C2 hooks-off processes and candidate compare N on the exact W1 input/route produce identical pre/post save pairs; full installed-site manifests and per-call CW retained. Reject incomplete raw bundles or disagreement.\",\n16: \"id\": \"control-neutrality\"\n17: },\n18: {\n19: \"axis\": \"implementation\",\n20: \"criterion\": \"W1 replace executes exactly one tech-144 completion and three unlocks, two actual event records and one full observed-tech record, refund 1166 and primary player effects; original displaced roots bypassed, declared helpers counted; zero unsupported paths, unreadable inputs or failures.\",\n21: \"id\": \"positive-replace\"\n22: },\n23: {\n24: \"axis\": \"validation\",\n25: \"criterion\": \"Require post-turn file-byte, inflated-byte and exact-bit unmasked state equality plus complete reader coverage and nonserialized order/RNG checks. Pre-turn resave equality, count-only regions and zero-execution passes cannot satisfy this criterion.\",\n26: \"id\": \"oracle\"\n27: },\n28: {\n29: \"axis\": \"validation\",\n30: \"criterion\": \"Executable checker rejects archived R0's 27 and R1's 16 leaf differences, absent callback/event/ObservedTech writes, W0 as completion evidence, missing artifacts, wrong hashes, and unknown RNG reported as zero.\",\n31: \"id\": \"negative-controls\"\n32: },\n33: {\n34: \"axis\": \"validation\",\n35: \"criterion\": \"Different verifier execution reproduces source/binary/input-bound package and a meaningful negative control; integrated-tree evidence is required before accepted. No author-only verdict or reporter --accept flag grants campaign acceptance.\",\n36: \"id\": \"independent-reproduction\"\n37: },\n38: {\n39: \"axis\": \"original_dependencies\",\n40: \"criterion\": \"Publish retained original helpers and W1-only scope separately. Require certified W2 and branch-specific original experiments plus synthetic boundaries before claiming RNG-consuming, other-effect-family, recursive, dedup, decay, plague or rebellion coverage.\",\n41: \"id\": \"coverage-and-dependencies\"\n42: }\n43: ],\n44: \"baseline\": {\n45: \"engine\": {\n46: \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n47: \"path\": \"/home/alex/sots-engine\"\n48: },\n49: \"re\": {\n50: \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n51: \"path\": \"/home/alex/sots-re\"\n52: }\n53: },\n54: \"checkpoint\": \"campaign/runtime/checkpoints/research-replacement-fc19e142bf1db96b10d29391.json\",\n55: \"dependencies\": [\n56: \"research-completion-abi\"\n57: ],\n58: \"effects\": [\n59: \"All node state/progress/flag/cost/availability/researched-turn/order words; tree order counter; capped spend and refund accumulator; idle-node decay; ordered cascade including conditional recursive zero-cost completions.\",\n60: \"RNG full state, left and next-index plus actual consumed words, including conditional completion rolls, Zuul second roll and research-event paths; W1 has zero words and proves no positive-draw branch.\",\n61: \"All applicable callback player floats, boolean/species/design-option masks, target and roll flags, node-bore storage and lifetimes. Existing WritePlayerState is not integration of the full research callback.\",\n62: \"ObservedTech full record name/first-last turn/detected/with fields, dedup/update, vector elements/header/capacity and compatible allocation/destruction. Scratch span growth is not an append implementation.\",\n63: \"Complete ordered event turn buckets, records, ids/nextId, text, image/action/location/position/chainId, dedup/pruning and allocation lifetimes; keyless count-only events cannot satisfy the save oracle.\",\n64: \"Conditional transitive system/ship AI/cap/addiction/plague changes, recursive Zuul grant, rebellion object allocation and cancellation must be implemented or rejected by approved preflight before mutation; TechApplyOutcome alone performs none of them.\",\n65: \"Observe downstream bankruptcy, repair and checksum consequences through full turn/save validation; never copy original post-state or patch expected derived leaves.\"\n66: ],\n67: \"id\": \"research-replacement\",\n68: \"inputs\": [\n69: \"W1 verify/results/saves/turn3-state.sav sha256 978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921; exact fresh-process LOAD route, one End Turn.\",\n70: \"Historical oracle verify/results/saves/cr/cr-oracle-endturn.sav sha256 e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f and cr-oracle-autosave.sav sha256 79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420; re-certify controls with current candidate inputs.\",\n71: \"Historical negative saves cr-replace0-autosave.sav sha256 6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5 and cr-replace1-autosave.sav sha256 8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235 under verify/results/saves/cr/.\",\n72: \"Raw historical evidence: verify/traces/cr-{N,R0,R1}.jsonl.gz; verify/results/compare/cr-{compare,replace0,replace1}.json; verify/results/shim/cr/cr-{N,R0,R1}.log. Historical build cr-618ccb1-20260909T131556Z does not identify the current candidate.\",\n73: \"Required but missing: operator-owned executable/proxy and tech graph/tuning/localized string assets with explicit paths, SHA-256, locale and load order; generated-address provenance; compiler/toolchain; exact candidate source-content and binary manifests.\",\n74: \"Runtime-only inputs include tree order counter, allocation entries/order, current turn, target and pending-roll flags, preexisting observed-tech and event elements, RNG state/index/left, full FPU CW, installed interception sites and LOAD/continuation route.\",\n75: \"W0 turn2-state.sav one End Turn is a no-completion regression control; pin hash and re-certify. W2 different-tech positive-RNG/second-completion workload remains to be selected and certified before expanding scope.\",\n76: \"Accepted static dependency research-completion-abi establishes record/container/string ABI only; live allocator safety, runtime construction and replacement acceptance remain absent.\"\n77: ],\n78: \"original_dependencies\": [\n79: \"Retained and counted original TechTree::Cost supplies effective and cascade costs; independent effective-cost replacement is excluded.\",\n80: \"Retained and counted original TechTree::HasResearched supplies common-tail/design-mask lookup; replacement owns resulting writes.\",\n81: \"Retained and counted ServerPlayer::UpdateNodeBoreParams runs in common-tail order and may allocate/free state; independent node-bore maintenance is excluded.\",\n82: \"Original MSVCR100 scalar new/delete and accepted copy/container ABI may be used only as a counted live memory bridge. Original RecordObservedTech, EventStorage::PostEvent and string lookup are forbidden displaced roots; localized text must come from manifested runtime assets.\",\n83: \"Shim workload retains original turn driver, budget allocation, remaining simulation, data loading and save serialization. Successful scoped shim replacement would not establish independent standalone turn parity.\"\n84: ],\n85: \"owner\": {\n86: \"name\": \"Astra pilot architect\",\n87: \"role\": \"architecture-review\"\n88: },\n89: \"predictions\": [\n90: \"W1 owner order 32/496/512 with allocations 144:2898,90:0,9:0; exactly one completion and two null calls.\",\n91: \"Tech144 progress 5768->7500, state3->4, researched turn4/order22, counter22->23, unchanged flag; capped spend1732/refund1166; no RNG words.\",\n92: \"Tech132/136/142 become available turn4 at costs10000/16000/8000; observed-tech count10->11 with real element; event nextId5->7 with complete records.\",\n93: \"Existing R1 still fails by 16 leaves (independently reproduced); merely enabling cascade cannot close callback residuals. Runtime text assets may avoid original PostEvent but live adapter and policy are unresolved.\"\n94: ],\n95: \"scope\": [\n96: \"Planning only until ready: campaign/pilots/research-replacement.md is the detailed input, write-boundary and acceptance specification. No replacement code or lab operations authorized by this proposed contract.\",\n97: \"Target ProcessResearch plus SetResearched and required OnTechResearched effects for the W1 turn3 LOAD-to-turn4 completion; broad research correctness is not implied.\",\n98: \"The accepted static ABI dependency does not authorize live wiring. First accept a separately contracted live record bridge; then assign one complete W1 coordinator write set with baseline-pinned paired worktrees and exclusive source/build/VM ownership.\",\n99: \"Before implementation provide exact owned source paths, supported-input preflight, executable acceptance and immutable manifests. Uncommitted bootstrap changes are not bound by these HEAD IDs.\"\n100: ],\n101: \"status\": \"proposed\",\n102: \"stop_conditions\": [\n103: \"Remain proposed while readiness criterion, dependency decisions, input manifests and executable acceptance are missing; do not interpret narrative strings as execution proof.\",\n104: \"Stop on control disagreement, instrumentation mismatch, source/input drift, missing artifacts/assets, unknown RNG, unmodelled fired branch, unexpected writes, zero required execution or forbidden original fallback.\",\n105: \"Record any falsified assumption or changed scope as a surprise and obtain Astra resolution before affected work continues; checkpoint at 20 calls/15 minutes and before experiments, handoff or stop.\",\n106: \"No lab or shared-host mutation without explicit assignment and lease; no commits, staging, push or delegated work under the current pilot-design assignment.\"\n107: ],\n108: \"title\": \"Completion-bearing W1 research replacement pilot (proposed; live bridge, assets and runner pending)\"\n109: }\n\n(End of file - total 109 lines)\n","metadata":{"preview":"{\n \"acceptance\": [\n {\n \"axis\": \"planning\",\n \"criterion\": \"BLOCKED: accepted static ABI dependency is named and original-helper policy is fixed, but readiness still requires an accepted live-record-bridge contract, implemented tools/research_replacement.py interfaces from the pilot plan, required asset paths/hashes, W0 recertification, exact coordinator-owned paths and immutable source/binary/input manifests.\",\n \"id\": \"readiness\"\n },\n {\n \"axis\": \"implementation\",\n \"criterion\": \"Fresh full-profile source-bound host/assets/shim build; expected test identities and explicit positive executed workloads; no required missing input, unexpected skip or stale binary.\",\n \"id\": \"full-gate\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Two fresh C1/C2 hooks-off processes and candidate compare N on the exact W1 input/route produce identical pre/post save pairs; full installed-site manifests and per-call CW retained. Reject incomplete raw bundles or disagreement.\",\n \"id\": \"control-neutrality\"\n },\n {\n \"axis\": \"implementation\",\n \"criterion\": \"W1 replace executes exactly one tech-144 completion and three unlocks, two actual event records and one full observed-tech record, refund 1166 and primary player effects; original displaced roots bypassed, declared helpers counted; zero unsupported paths, unreadable inputs or failures.\",","truncated":false,"loaded":[],"display":{"type":"file","path":"/home/alex/sots-re/campaign/contracts/research-replacement.json","text":"{\n \"acceptance\": [\n {\n \"axis\": \"planning\",\n \"criterion\": \"BLOCKED: accepted static ABI dependency is named and original-helper policy is fixed, but readiness still requires an accepted live-record-bridge contract, implemented tools/research_replacement.py interfaces from the pilot plan, required asset paths/hashes, W0 recertification, exact coordinator-owned paths and immutable source/binary/input manifests.\",\n \"id\": \"readiness\"\n },\n {\n \"axis\": \"implementation\",\n \"criterion\": \"Fresh full-profile source-bound host/assets/shim build; expected test identities and explicit positive executed workloads; no required missing input, unexpected skip or stale binary.\",\n \"id\": \"full-gate\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Two fresh C1/C2 hooks-off processes and candidate compare N on the exact W1 input/route produce identical pre/post save pairs; full installed-site manifests and per-call CW retained. Reject incomplete raw bundles or disagreement.\",\n \"id\": \"control-neutrality\"\n },\n {\n \"axis\": \"implementation\",\n \"criterion\": \"W1 replace executes exactly one tech-144 completion and three unlocks, two actual event records and one full observed-tech record, refund 1166 and primary player effects; original displaced roots bypassed, declared helpers counted; zero unsupported paths, unreadable inputs or failures.\",\n \"id\": \"positive-replace\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Require post-turn file-byte, inflated-byte and exact-bit unmasked state equality plus complete reader coverage and nonserialized order/RNG checks. Pre-turn resave equality, count-only regions and zero-execution passes cannot satisfy this criterion.\",\n \"id\": \"oracle\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Executable checker rejects archived R0's 27 and R1's 16 leaf differences, absent callback/event/ObservedTech writes, W0 as completion evidence, missing artifacts, wrong hashes, and unknown RNG reported as zero.\",\n \"id\": \"negative-controls\"\n },\n {\n \"axis\": \"validation\",\n \"criterion\": \"Different verifier execution reproduces source/binary/input-bound package and a meaningful negative control; integrated-tree evidence is required before accepted. No author-only verdict or reporter --accept flag grants campaign acceptance.\",\n \"id\": \"independent-reproduction\"\n },\n {\n \"axis\": \"original_dependencies\",\n \"criterion\": \"Publish retained original helpers and W1-only scope separately. Require certified W2 and branch-specific original experiments plus synthetic boundaries before claiming RNG-consuming, other-effect-family, recursive, dedup, decay, plague or rebellion coverage.\",\n \"id\": \"coverage-and-dependencies\"\n }\n ],\n \"baseline\": {\n \"engine\": {\n \"commit\": \"7741d42fc5e4e761e6449bdaf0e4a61d00036a23\",\n \"path\": \"/home/alex/sots-engine\"\n },\n \"re\": {\n \"commit\": \"3bfde5a70d874a723e797a695bbd847fd82c0aa7\",\n \"path\": \"/home/alex/sots-re\"\n }\n },\n \"checkpoint\": \"campaign/runtime/checkpoints/research-replacement-fc19e142bf1db96b10d29391.json\",\n \"dependencies\": [\n \"research-completion-abi\"\n ],\n \"effects\": [\n \"All node state/progress/flag/cost/availability/researched-turn/order words; tree order counter; capped spend and refund accumulator; idle-node decay; ordered cascade including conditional recursive zero-cost completions.\",\n \"RNG full state, left and next-index plus actual consumed words, including conditional completion rolls, Zuul second roll and research-event paths; W1 has zero words and proves no positive-draw branch.\",\n \"All applicable callback player floats, boolean/species/design-option masks, target and roll flags, node-bore storage and lifetimes. Existing WritePlayerState is not integration of the full research callback.\",\n \"ObservedTech full record name/first-last turn/detected/with fields, dedup/update, vector elements/header/capacity and compatible allocation/destruction. Scratch span growth is not an append implementation.\",\n \"Complete ordered event turn buckets, records, ids/nextId, text, image/action/location/position/chainId, dedup/pruning and allocation lifetimes; keyless count-only events cannot satisfy the save oracle.\",\n \"Conditional transitive system/ship AI/cap/addiction/plague changes, recursive Zuul grant, rebellion object allocation and cancellation must be implemented or rejected by approved preflight before mutation; TechApplyOutcome alone performs none of them.\",\n \"Observe downstream bankruptcy, repair and checksum consequences through full turn/save validation; never copy original post-state or patch expected derived leaves.\"\n ],\n \"id\": \"research-replacement\",\n \"inputs\": [\n \"W1 verify/results/saves/turn3-state.sav sha256 978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921; exact fresh-process LOAD route, one End Turn.\",\n \"Historical oracle verify/results/saves/cr/cr-oracle-endturn.sav sha256 e00eed0c03a31d27a81b7470a9dcc9ba08a2ac48c20baeee4f34749164743e3f and cr-oracle-autosave.sav sha256 79df50475a7b83afa927d992b9f030dcf45710f4bda0133b8b1fa4800a72e420; re-certify controls with current candidate inputs.\",\n \"Historical negative saves cr-replace0-autosave.sav sha256 6b51db992b158caa5424d71b2dccf72924af7198b4165bfcfc870e0d438fb6d5 and cr-replace1-autosave.sav sha256 8a4309ee4fe0b3177a2820600b5016c7c256d0f51b065df469ecd0b4f2342235 under verify/results/saves/cr/.\",\n \"Raw historical evidence: verify/traces/cr-{N,R0,R1}.jsonl.gz; verify/results/compare/cr-{compare,replace0,replace1}.json; verify/results/shim/cr/cr-{N,R0,R1}.log. Historical build cr-618ccb1-20260909T131556Z does not identify the current candidate.\",\n \"Required but missing: operator-owned executable/proxy and tech graph/tuning/localized string assets with explicit paths, SHA-256, locale and load order; generated-address provenance; compiler/toolchain; exact candidate source-content and binary manifests.\",\n \"Runtime-only inputs include tree order counter, allocation entries/order, current turn, target and pending-roll flags, preexisting observed-tech and event elements, RNG state/index/left, full FPU CW, installed interception sites and LOAD/continuation route.\",\n \"W0 turn2-state.sav one End Turn is a no-completion regression control; pin hash and re-certify. W2 different-tech positive-RNG/second-completion workload remains to be selected and certified before expanding scope.\",\n \"Accepted static dependency research-completion-abi establishes record/container/string ABI only; live allocator safety, runtime construction and replacement acceptance remain absent.\"\n ],\n \"original_dependencies\": [\n \"Retained and counted original TechTree::Cost supplies effective and cascade costs; independent effective-cost replacement is excluded.\",\n \"Retained and counted original TechTree::HasResearched supplies common-tail/design-mask lookup; replacement owns resulting writes.\",\n \"Retained and counted ServerPlayer::UpdateNodeBoreParams runs in common-tail order and may allocate/free state; independent node-bore maintenance is excluded.\",\n \"Original MSVCR100 scalar new/delete and accepted copy/container ABI may be used only as a counted live memory bridge. Original RecordObservedTech, EventStorage::PostEvent and string lookup are forbidden displaced roots; localized text must come from manifested runtime assets.\",\n \"Shim workload retains original turn driver, budget allocation, remaining simulation, data loading and save serialization. Successful scoped shim replacement would not establish independent standalone turn parity.\"\n ],\n \"owner\": {\n \"name\": \"Astra pilot architect\",\n \"role\": \"architecture-review\"\n },\n \"predictions\": [\n \"W1 owner order 32/496/512 with allocations 144:2898,90:0,9:0; exactly one completion and two null calls.\",\n \"Tech144 progress 5768->7500, state3->4, researched turn4/order22, counter22->23, unchanged flag; capped spend1732/refund1166; no RNG words.\",\n \"Tech132/136/142 become available turn4 at costs10000/16000/8000; observed-tech count10->11 with real element; event nextId5->7 with complete records.\",\n \"Existing R1 still fails by 16 leaves (independently reproduced); merely enabling cascade cannot close callback residuals. Runtime text assets may avoid original PostEvent but live adapter and policy are unresolved.\"\n ],\n \"scope\": [\n \"Planning only until ready: campaign/pilots/research-replacement.md is the detailed input, write-boundary and acceptance specification. No replacement code or lab operations authorized by this proposed contract.\",\n \"Target ProcessResearch plus SetResearched and required OnTechResearched effects for the W1 turn3 LOAD-to-turn4 completion; broad research correctness is not implied.\",\n \"The accepted static ABI dependency does not authorize live wiring. First accept a separately contracted live record bridge; then assign one complete W1 coordinator write set with baseline-pinned paired worktrees and exclusive source/build/VM ownership.\",\n \"Before implementation provide exact owned source paths, supported-input preflight, executable acceptance and immutable manifests. Uncommitted bootstrap changes are not bound by these HEAD IDs.\"\n ],\n \"status\": \"proposed\",\n \"stop_conditions\": [\n \"Remain proposed while readiness criterion, dependency decisions, input manifests and executable acceptance are missing; do not interpret narrative strings as execution proof.\",\n \"Stop on control disagreement, instrumentation mismatch, source/input drift, missing artifacts/assets, unknown RNG, unmodelled fired branch, unexpected writes, zero required execution or forbidden original fallback.\",\n \"Record any falsified assumption or changed scope as a surprise and obtain Astra resolution before affected work continues; checkpoint at 20 calls/15 minutes and before experiments, handoff or stop.\",\n \"No lab or shared-host mutation without explicit assignment and lease; no commits, staging, push or delegated work under the current pilot-design assignment.\"\n ],\n \"title\": \"Completion-bearing W1 research replacement pilot (proposed; live bridge, assets and runner pending)\"\n}","lineStart":1,"lineEnd":109,"totalLines":109,"truncated":false}},"title":"campaign/contracts/research-replacement.json","time":{"start":1789045505639,"end":1789045505645}},"metadata":{"openai":{"itemId":"fc_0c76f96185bba091016aa2aaff411487d1a4cd68377aa8297d"}},"id":"prt_08b6bfe300011533zfMTM59ncl","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6bb85c001r5D9xncq0KhnRC"}} +{"type":"step_finish","timestamp":1789045505782,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6bfef30014EByrgqhYLbOkr","reason":"tool-calls","snapshot":"00b0b7d400db172451875e31aa39a394e24f3b75","messageID":"msg_08b6bb85c001r5D9xncq0KhnRC","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","type":"step-finish","tokens":{"total":107489,"input":60189,"output":316,"reasoning":8,"cache":{"write":0,"read":46976}},"cost":0}} +{"type":"step_start","timestamp":1789045508276,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6c08ac001W1VfrnetnDM26c","messageID":"msg_08b6bff2b001Spf0gTwDnNwte6","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","snapshot":"0057ab9f30f79a10d214244653861bdbe41e89cb","type":"step-start"}} +{"type":"text","timestamp":1789045514505,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6c1133001ovonIrdJll45Kw","messageID":"msg_08b6bff2b001Spf0gTwDnNwte6","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","type":"text","text":"The raw controls support a stop-address truncation effect: the same branch appears as `74` at stop `0x00779a20` and `74 10` in the wider capture. The proposed `0x00779915` control is still unexecuted and covers only the normal return—not the cleanup code starting there.\n\nI also found a separate identity blocker: this resolver launch records RE digest `e97ad0ed…`, whereas the analyst package and prior verifier checkpoint bind `6696fd52…`. The engine digest matches. I will record that drift separately and leave reproduction blocked pending source reconciliation; it does not explain a game mechanism.\n\n","time":{"start":1789045510451,"end":1789045514500},"metadata":{"openai":{"itemId":"msg_0cdb9498ce5c2492016aa2ab064e9487d1a29055498101b477","phase":"commentary"}}}} +{"type":"tool_use","timestamp":1789045526997,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"bash","callID":"call_3pwgunGtb6c9SkEgofzNsWr0","state":{"status":"completed","input":{"command":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re surprise research-completion-abi --actor research-problem-resolver --role resolver --model openai/gpt-6-astra --summary 'Resolver session run-ec31ee938e1f509cd7130c03 found source identity drift before any experiment: launch record campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json source_before RE manifest_sha256 is e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 (line 5053), not analyst run-9daf5c3b75547271d5c3b4ed manifest source_before/source_after 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 and verifier checkpoint 4555678e34291015554e7e88. Engine launch digest still ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; Git HEADs/common dirs independently match pinned baselines. Same HEAD does not imply source-identical reproduction. Cause and relevance of changed RE inventory not yet measured; do not attach this binding to old measurements or infer a stale game build. No lab/source mutation or new capture executed.' --probe 'Lead or authorized source-identity analyst compares the prior analyst/verifier launch RE file manifests with resolver source_before, naming every added/deleted/byte/mode-changed source path and confirming actual current paired source-binding. Preserve both manifests. Astra must decide explicit reconciliation or source-identical snapshot restoration by its owner before reproduction; no autonomous reset/copy or new source hash attached to old evidence.'"},"output":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"s-210e489610197533e4f4cce1\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Lead or authorized source-identity analyst compares the prior analyst/verifier launch RE file manifests with resolver source_before, naming every added/deleted/byte/mode-changed source path and confirming actual current paired source-binding. Preserve both manifests. Astra must decide explicit reconciliation or source-identical snapshot restoration by its owner before reproduction; no autonomous reset/copy or new source hash attached to old evidence.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"open\",\n \"summary\": \"Resolver session run-ec31ee938e1f509cd7130c03 found source identity drift before any experiment: launch record campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json source_before RE manifest_sha256 is e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 (line 5053), not analyst run-9daf5c3b75547271d5c3b4ed manifest source_before/source_after 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 and verifier checkpoint 4555678e34291015554e7e88. Engine launch digest still ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; Git HEADs/common dirs independently match pinned baselines. Same HEAD does not imply source-identical reproduction. Cause and relevance of changed RE inventory not yet measured; do not attach this binding to old measurements or infer a stale game build. No lab/source mutation or new capture executed.\",\n \"timestamp\": \"2026-09-10T13:05:26.974324+00:00\"\n}\n","metadata":{"output":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"s-210e489610197533e4f4cce1\",\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Lead or authorized source-identity analyst compares the prior analyst/verifier launch RE file manifests with resolver source_before, naming every added/deleted/byte/mode-changed source path and confirming actual current paired source-binding. Preserve both manifests. Astra must decide explicit reconciliation or source-identical snapshot restoration by its owner before reproduction; no autonomous reset/copy or new source hash attached to old evidence.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-surprise/1\",\n \"status\": \"open\",\n \"summary\": \"Resolver session run-ec31ee938e1f509cd7130c03 found source identity drift before any experiment: launch record campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json source_before RE manifest_sha256 is e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 (line 5053), not analyst run-9daf5c3b75547271d5c3b4ed manifest source_before/source_after 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 and verifier checkpoint 4555678e34291015554e7e88. Engine launch digest still ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; Git HEADs/common dirs independently match pinned baselines. Same HEAD does not imply source-identical reproduction. Cause and relevance of changed RE inventory not yet measured; do not attach this binding to old measurements or infer a stale game build. No lab/source mutation or new capture executed.\",\n \"timestamp\": \"2026-09-10T13:05:26.974324+00:00\"\n}\n","exit":0,"truncated":false},"title":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re surprise research-completion-abi --actor research-problem-resolver --role resolver --model openai/gpt-6-astra --summary 'Resolver session run-ec31ee938e1f509cd7130c03 found source identity drift before any experiment: launch record campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json source_before RE manifest_sha256 is e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 (line 5053), not analyst run-9daf5c3b75547271d5c3b4ed manifest source_before/source_after 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 and verifier checkpoint 4555678e34291015554e7e88. Engine launch digest still ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; Git HEADs/common dirs independently match pinned baselines. Same HEAD does not imply source-identical reproduction. Cause and relevance of changed RE inventory not yet measured; do not attach this binding to old measurements or infer a stale game build. No lab/source mutation or new capture executed.' --probe 'Lead or authorized source-identity analyst compares the prior analyst/verifier launch RE file manifests with resolver source_before, naming every added/deleted/byte/mode-changed source path and confirming actual current paired source-binding. Preserve both manifests. Astra must decide explicit reconciliation or source-identical snapshot restoration by its owner before reproduction; no autonomous reset/copy or new source hash attached to old evidence.'","time":{"start":1789045526929,"end":1789045526996}},"metadata":{"openai":{"itemId":"fc_0cdb9498ce5c2492016aa2ab0a58a887d1a45d7183c0b528bb"}},"id":"prt_08b6c2106001jrgmCBGnSfOvx2","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6bff2b001Spf0gTwDnNwte6"}} +{"type":"step_finish","timestamp":1789045527064,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6c5215001vyhBzXcZ0uUKUj","reason":"tool-calls","snapshot":"8ed042a5879661afa84b8664d6b30388f7014028","messageID":"msg_08b6bff2b001Spf0gTwDnNwte6","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","type":"step-finish","tokens":{"total":114153,"input":6532,"output":570,"reasoning":43,"cache":{"write":0,"read":107008}},"cost":0}} +{"type":"step_start","timestamp":1789045530367,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6c5efb001dKfOQrLmHmlurU","messageID":"msg_08b6c5244001V3n5lsmyZWUB5I","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","snapshot":"eaf3821ab0f23bf9b6a2c03b3244facf028e1f5e","type":"step-start"}} +{"type":"tool_use","timestamp":1789045579661,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"bash","callID":"call_Tu1HuX5AEjSltmxZTOA8N5tz","state":{"status":"completed","input":{"command":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re resolve s-81ffc3041e1f07b87928e6f2 --actor research-problem-resolver --role resolver --model openai/gpt-6-astra --explanation 'Astra resolution-only, session run-ec31ee938e1f509cd7130c03. OBSERVATION/PROVENANCE: verifier plan verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 requires complete ret 4 at 0x00779912 with stop 0x00779913. Analyst run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt line 79 shows c2 04 00 through 0x00779914; checkpoint 1d04a2672a212e8b1fb37297 rehashed plan to 78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc and authority to 973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8, matching prior plan hash and analyst manifest. Analyst a20/a28 raw streams show terminal 74 versus 74 10 at 0x00779a1f; section-byte control contains 74 10 8b cf e8 28 6a ff ff. Instrument output is boundary-sensitive even when its mnemonic/target looks complete. This falsifies a verifier expectation before execution, not analyst authority or game behavior.\nIDENTITY/EXECUTION: assigned Git HEAD/common roots match engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Historical analyst manifest binds binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd GNU 2.38, and twelve explicit commands with zero exits, nonempty stdout and empty stderr. These are positive archived static executions, not fresh resolver executions. Binary/tool not freshly rehashed here. Current runner engine digest matches ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; RE runner digest e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Separate open surprise s-210e489610197533e4f4cce1 blocks source-identical reproduction. No stale-build/game-mechanism diagnosis. No runtime instrument neutrality, allocator, RNG or game execution measured.\nCLAIMS: OVERTURNED: plan item 5 complete-stop prediction for 0x00779913, and inference that failure at this verifier-chosen boundary falsifies the analyst 0x00779930 authority window. SURVIVES: archived ret encoding c2 04 00 at 0x00779912 in the hash-bound authority; the failure remains a failed predeclared prediction. QUALIFIED: minimum complete stop 0x00779915 is byte-length reasoning and an unexecuted new control, not a measurement or genuinely blinded holdout after this inspection. It covers normal return only, excludes cleanup beginning at 0x00779915, and cannot replace authority through exclusive stop 0x00779930. SURVIVES within their existing static domain only: analyst copy/allocation/cleanup instruction observations and other plan falsifiers; no new ABI semantic endorsement. QUALIFIED: independent-cross-check remains unsatisfied, ownership-recovered remains analyst static evidence awaiting reproduction. OVERTURNED for current launch: source-identical RE assumption, tracked separately. SURVIVES: runtime safety and replacement remain unaccepted; archived saves validate serialized values only, not capacity, string ownership, transient stack values or RNG draws.\nINVALIDATION: preserve the failed plan and checkpoint 4555678e34291015554e7e88 as history, but invalidate item 5 as executable acceptance requirement and its next action to run the unchanged plan. No run-d6c4dc15e9f4d15155fee856 reproduction result exists to rehabilitate. No analyst raw bytes are invalidated by this boundary mistake; prior d-fd5aff1eaf78a8c15d96723c and d-0bb927e63b915c87a58d4257 invalidations remain. CLI clears current evidence/checkpoint and invalidates any verdict; empty evidence array is not acceptance. No acceptance waiver.\nREVISED SCOPE/DEPENDENCIES: retain contract criteria and static/save-only scope; no implementation, architecture edits or lab use. After source-drift resolution and lead lifecycle authorization, independent verifier may create a fresh actual-session fail-if-exists reproduction, preserving old prediction failure and adding both new boundary controls. Required full authority/ABI windows and archived record accounting remain. research-live-record-bridge stays needs-revision with unaccepted ABI dependency; research-replacement stays proposed, its accepted-dependency narrative is not current status and cannot authorize wiring. No downstream promotion. Integrator must link this decision rather than write another board history, and regenerate projections only after valid integration.' --probe 'Cheapest boundary discriminator, NOT run here: after s-210e489610197533e4f4cce1 source reconciliation and lead authorization, checkpoint a fresh independent verifier session and new fail-if-exists directory. Rehash binary, objdump/interpreter, recipe, paired source and archived-save inputs before/after. Run /usr/bin/objdump -D -Mintel --start-address=0x00779850 against dumps/sots.exe twice, stops 0x00779913 and 0x00779915, plus full authority stop 0x00779930. Independently map PE VA 0x00779912..0x00779914 to file offsets and read bytes directly (not only a second disassembly). Predict c2-only truncated byte row at bad stop and c2 04 00 ret 4 at aligned stop, no changed preceding complete rows; preserve mnemonic/bytes separately. Normal-return stop must not be counted as unwind coverage. Keep a20 negative and aligned a21/a23/a28 controls, all other ABI/save falsifiers and explicit unexercised runtime states. Record actual commands, timestamps, exits, raw stdout/stderr hashes, positive executions and all missing/skipped states; reject drift, unexpected stderr, zero execution or contradiction. Mark original prediction failed, repaired control unblinded/new, never retroactive success. Immediate next action is lead scheduling a read-only manifest-delta review for source surprise, not this blocked reproduction.'"},"output":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only, session run-ec31ee938e1f509cd7130c03. OBSERVATION/PROVENANCE: verifier plan verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 requires complete ret 4 at 0x00779912 with stop 0x00779913. Analyst run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt line 79 shows c2 04 00 through 0x00779914; checkpoint 1d04a2672a212e8b1fb37297 rehashed plan to 78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc and authority to 973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8, matching prior plan hash and analyst manifest. Analyst a20/a28 raw streams show terminal 74 versus 74 10 at 0x00779a1f; section-byte control contains 74 10 8b cf e8 28 6a ff ff. Instrument output is boundary-sensitive even when its mnemonic/target looks complete. This falsifies a verifier expectation before execution, not analyst authority or game behavior.\\nIDENTITY/EXECUTION: assigned Git HEAD/common roots match engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Historical analyst manifest binds binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd GNU 2.38, and twelve explicit commands with zero exits, nonempty stdout and empty stderr. These are positive archived static executions, not fresh resolver executions. Binary/tool not freshly rehashed here. Current runner engine digest matches ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; RE runner digest e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Separate open surprise s-210e489610197533e4f4cce1 blocks source-identical reproduction. No stale-build/game-mechanism diagnosis. No runtime instrument neutrality, allocator, RNG or game execution measured.\\nCLAIMS: OVERTURNED: plan item 5 complete-stop prediction for 0x00779913, and inference that failure at this verifier-chosen boundary falsifies the analyst 0x00779930 authority window. SURVIVES: archived ret encoding c2 04 00 at 0x00779912 in the hash-bound authority; the failure remains a failed predeclared prediction. QUALIFIED: minimum complete stop 0x00779915 is byte-length reasoning and an unexecuted new control, not a measurement or genuinely blinded holdout after this inspection. It covers normal return only, excludes cleanup beginning at 0x00779915, and cannot replace authority through exclusive stop 0x00779930. SURVIVES within their existing static domain only: analyst copy/allocation/cleanup instruction observations and other plan falsifiers; no new ABI semantic endorsement. QUALIFIED: independent-cross-check remains unsatisfied, ownership-recovered remains analyst static evidence awaiting reproduction. OVERTURNED for current launch: source-identical RE assumption, tracked separately. SURVIVES: runtime safety and replacement remain unaccepted; archived saves validate serialized values only, not capacity, string ownership, transient stack values or RNG draws.\\nINVALIDATION: preserve the failed plan and checkpoint 4555678e34291015554e7e88 as history, but invalidate item 5 as executable acceptance requirement and its next action to run the unchanged plan. No run-d6c4dc15e9f4d15155fee856 reproduction result exists to rehabilitate. No analyst raw bytes are invalidated by this boundary mistake; prior d-fd5aff1eaf78a8c15d96723c and d-0bb927e63b915c87a58d4257 invalidations remain. CLI clears current evidence/checkpoint and invalidates any verdict; empty evidence array is not acceptance. No acceptance waiver.\\nREVISED SCOPE/DEPENDENCIES: retain contract criteria and static/save-only scope; no implementation, architecture edits or lab use. After source-drift resolution and lead lifecycle authorization, independent verifier may create a fresh actual-session fail-if-exists reproduction, preserving old prediction failure and adding both new boundary controls. Required full authority/ABI windows and archived record accounting remain. research-live-record-bridge stays needs-revision with unaccepted ABI dependency; research-replacement stays proposed, its accepted-dependency narrative is not current status and cannot authorize wiring. No downstream promotion. Integrator must link this decision rather than write another board history, and regenerate projections only after valid integration.\",\n \"id\": \"d-6e30d172051af0385f5979eb\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-1d04a2672a212e8b1fb37297.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest boundary discriminator, NOT run here: after s-210e489610197533e4f4cce1 source reconciliation and lead authorization, checkpoint a fresh independent verifier session and new fail-if-exists directory. Rehash binary, objdump/interpreter, recipe, paired source and archived-save inputs before/after. Run /usr/bin/objdump -D -Mintel --start-address=0x00779850 against dumps/sots.exe twice, stops 0x00779913 and 0x00779915, plus full authority stop 0x00779930. Independently map PE VA 0x00779912..0x00779914 to file offsets and read bytes directly (not only a second disassembly). Predict c2-only truncated byte row at bad stop and c2 04 00 ret 4 at aligned stop, no changed preceding complete rows; preserve mnemonic/bytes separately. Normal-return stop must not be counted as unwind coverage. Keep a20 negative and aligned a21/a23/a28 controls, all other ABI/save falsifiers and explicit unexercised runtime states. Record actual commands, timestamps, exits, raw stdout/stderr hashes, positive executions and all missing/skipped states; reject drift, unexpected stderr, zero execution or contradiction. Mark original prediction failed, repaired control unblinded/new, never retroactive success. Immediate next action is lead scheduling a read-only manifest-delta review for source surprise, not this blocked reproduction.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-81ffc3041e1f07b87928e6f2\",\n \"timestamp\": \"2026-09-10T13:06:19.620541+00:00\"\n}\n","metadata":{"output":"{\n \"actor\": \"research-problem-resolver\",\n \"contract\": \"research-completion-abi\",\n \"explanation\": \"Astra resolution-only, session run-ec31ee938e1f509cd7130c03. OBSERVATION/PROVENANCE: verifier plan verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 requires complete ret 4 at 0x00779912 with stop 0x00779913. Analyst run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt line 79 shows c2 04 00 through 0x00779914; checkpoint 1d04a2672a212e8b1fb37297 rehashed plan to 78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc and authority to 973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8, matching prior plan hash and analyst manifest. Analyst a20/a28 raw streams show terminal 74 versus 74 10 at 0x00779a1f; section-byte control contains 74 10 8b cf e8 28 6a ff ff. Instrument output is boundary-sensitive even when its mnemonic/target looks complete. This falsifies a verifier expectation before execution, not analyst authority or game behavior.\\nIDENTITY/EXECUTION: assigned Git HEAD/common roots match engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Historical analyst manifest binds binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd GNU 2.38, and twelve explicit commands with zero exits, nonempty stdout and empty stderr. These are positive archived static executions, not fresh resolver executions. Binary/tool not freshly rehashed here. Current runner engine digest matches ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; RE runner digest e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Separate open surprise s-210e489610197533e4f4cce1 blocks source-identical reproduction. No stale-build/game-mechanism diagnosis. No runtime instrument neutrality, allocator, RNG or game execution measured.\\nCLAIMS: OVERTURNED: plan item 5 complete-stop prediction for 0x00779913, and inference that failure at this verifier-chosen boundary falsifies the analyst 0x00779930 authority window. SURVIVES: archived ret encoding c2 04 00 at 0x00779912 in the hash-bound authority; the failure remains a failed predeclared prediction. QUALIFIED: minimum complete stop 0x00779915 is byte-length reasoning and an unexecuted new control, not a measurement or genuinely blinded holdout after this inspection. It covers normal return only, excludes cleanup beginning at 0x00779915, and cannot replace authority through exclusive stop 0x00779930. SURVIVES within their existing static domain only: analyst copy/allocation/cleanup instruction observations and other plan falsifiers; no new ABI semantic endorsement. QUALIFIED: independent-cross-check remains unsatisfied, ownership-recovered remains analyst static evidence awaiting reproduction. OVERTURNED for current launch: source-identical RE assumption, tracked separately. SURVIVES: runtime safety and replacement remain unaccepted; archived saves validate serialized values only, not capacity, string ownership, transient stack values or RNG draws.\\nINVALIDATION: preserve the failed plan and checkpoint 4555678e34291015554e7e88 as history, but invalidate item 5 as executable acceptance requirement and its next action to run the unchanged plan. No run-d6c4dc15e9f4d15155fee856 reproduction result exists to rehabilitate. No analyst raw bytes are invalidated by this boundary mistake; prior d-fd5aff1eaf78a8c15d96723c and d-0bb927e63b915c87a58d4257 invalidations remain. CLI clears current evidence/checkpoint and invalidates any verdict; empty evidence array is not acceptance. No acceptance waiver.\\nREVISED SCOPE/DEPENDENCIES: retain contract criteria and static/save-only scope; no implementation, architecture edits or lab use. After source-drift resolution and lead lifecycle authorization, independent verifier may create a fresh actual-session fail-if-exists reproduction, preserving old prediction failure and adding both new boundary controls. Required full authority/ABI windows and archived record accounting remain. research-live-record-bridge stays needs-revision with unaccepted ABI dependency; research-replacement stays proposed, its accepted-dependency narrative is not current status and cannot authorize wiring. No downstream promotion. Integrator must link this decision rather than write another board history, and regenerate projections only after valid integration.\",\n \"id\": \"d-6e30d172051af0385f5979eb\",\n \"invalidated_checkpoint\": \"campaign/runtime/checkpoints/research-completion-abi-1d04a2672a212e8b1fb37297.json\",\n \"invalidated_evidence\": [],\n \"model\": \"openai/gpt-6-astra\",\n \"probe\": \"Cheapest boundary discriminator, NOT run here: after s-210e489610197533e4f4cce1 source reconciliation and lead authorization, checkpoint a fresh independent verifier session and new fail-if-exists directory. Rehash binary, objdump/interpreter, recipe, paired source and archived-save inputs before/after. Run /usr/bin/objdump -D -Mintel --start-address=0x00779850 against dumps/sots.exe twice, stops 0x00779913 and 0x00779915, plus full authority stop 0x00779930. Independently map PE VA 0x00779912..0x00779914 to file offsets and read bytes directly (not only a second disassembly). Predict c2-only truncated byte row at bad stop and c2 04 00 ret 4 at aligned stop, no changed preceding complete rows; preserve mnemonic/bytes separately. Normal-return stop must not be counted as unwind coverage. Keep a20 negative and aligned a21/a23/a28 controls, all other ABI/save falsifiers and explicit unexercised runtime states. Record actual commands, timestamps, exits, raw stdout/stderr hashes, positive executions and all missing/skipped states; reject drift, unexpected stderr, zero execution or contradiction. Mark original prediction failed, repaired control unblinded/new, never retroactive success. Immediate next action is lead scheduling a read-only manifest-delta review for source surprise, not this blocked reproduction.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-decision/1\",\n \"surprise\": \"s-81ffc3041e1f07b87928e6f2\",\n \"timestamp\": \"2026-09-10T13:06:19.620541+00:00\"\n}\n","exit":0,"truncated":false},"title":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re resolve s-81ffc3041e1f07b87928e6f2 --actor research-problem-resolver --role resolver --model openai/gpt-6-astra --explanation 'Astra resolution-only, session run-ec31ee938e1f509cd7130c03. OBSERVATION/PROVENANCE: verifier plan verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 requires complete ret 4 at 0x00779912 with stop 0x00779913. Analyst run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt line 79 shows c2 04 00 through 0x00779914; checkpoint 1d04a2672a212e8b1fb37297 rehashed plan to 78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc and authority to 973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8, matching prior plan hash and analyst manifest. Analyst a20/a28 raw streams show terminal 74 versus 74 10 at 0x00779a1f; section-byte control contains 74 10 8b cf e8 28 6a ff ff. Instrument output is boundary-sensitive even when its mnemonic/target looks complete. This falsifies a verifier expectation before execution, not analyst authority or game behavior.\nIDENTITY/EXECUTION: assigned Git HEAD/common roots match engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 and RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7. Historical analyst manifest binds binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, objdump 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd GNU 2.38, and twelve explicit commands with zero exits, nonempty stdout and empty stderr. These are positive archived static executions, not fresh resolver executions. Binary/tool not freshly rehashed here. Current runner engine digest matches ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; RE runner digest e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. Separate open surprise s-210e489610197533e4f4cce1 blocks source-identical reproduction. No stale-build/game-mechanism diagnosis. No runtime instrument neutrality, allocator, RNG or game execution measured.\nCLAIMS: OVERTURNED: plan item 5 complete-stop prediction for 0x00779913, and inference that failure at this verifier-chosen boundary falsifies the analyst 0x00779930 authority window. SURVIVES: archived ret encoding c2 04 00 at 0x00779912 in the hash-bound authority; the failure remains a failed predeclared prediction. QUALIFIED: minimum complete stop 0x00779915 is byte-length reasoning and an unexecuted new control, not a measurement or genuinely blinded holdout after this inspection. It covers normal return only, excludes cleanup beginning at 0x00779915, and cannot replace authority through exclusive stop 0x00779930. SURVIVES within their existing static domain only: analyst copy/allocation/cleanup instruction observations and other plan falsifiers; no new ABI semantic endorsement. QUALIFIED: independent-cross-check remains unsatisfied, ownership-recovered remains analyst static evidence awaiting reproduction. OVERTURNED for current launch: source-identical RE assumption, tracked separately. SURVIVES: runtime safety and replacement remain unaccepted; archived saves validate serialized values only, not capacity, string ownership, transient stack values or RNG draws.\nINVALIDATION: preserve the failed plan and checkpoint 4555678e34291015554e7e88 as history, but invalidate item 5 as executable acceptance requirement and its next action to run the unchanged plan. No run-d6c4dc15e9f4d15155fee856 reproduction result exists to rehabilitate. No analyst raw bytes are invalidated by this boundary mistake; prior d-fd5aff1eaf78a8c15d96723c and d-0bb927e63b915c87a58d4257 invalidations remain. CLI clears current evidence/checkpoint and invalidates any verdict; empty evidence array is not acceptance. No acceptance waiver.\nREVISED SCOPE/DEPENDENCIES: retain contract criteria and static/save-only scope; no implementation, architecture edits or lab use. After source-drift resolution and lead lifecycle authorization, independent verifier may create a fresh actual-session fail-if-exists reproduction, preserving old prediction failure and adding both new boundary controls. Required full authority/ABI windows and archived record accounting remain. research-live-record-bridge stays needs-revision with unaccepted ABI dependency; research-replacement stays proposed, its accepted-dependency narrative is not current status and cannot authorize wiring. No downstream promotion. Integrator must link this decision rather than write another board history, and regenerate projections only after valid integration.' --probe 'Cheapest boundary discriminator, NOT run here: after s-210e489610197533e4f4cce1 source reconciliation and lead authorization, checkpoint a fresh independent verifier session and new fail-if-exists directory. Rehash binary, objdump/interpreter, recipe, paired source and archived-save inputs before/after. Run /usr/bin/objdump -D -Mintel --start-address=0x00779850 against dumps/sots.exe twice, stops 0x00779913 and 0x00779915, plus full authority stop 0x00779930. Independently map PE VA 0x00779912..0x00779914 to file offsets and read bytes directly (not only a second disassembly). Predict c2-only truncated byte row at bad stop and c2 04 00 ret 4 at aligned stop, no changed preceding complete rows; preserve mnemonic/bytes separately. Normal-return stop must not be counted as unwind coverage. Keep a20 negative and aligned a21/a23/a28 controls, all other ABI/save falsifiers and explicit unexercised runtime states. Record actual commands, timestamps, exits, raw stdout/stderr hashes, positive executions and all missing/skipped states; reject drift, unexpected stderr, zero execution or contradiction. Mark original prediction failed, repaired control unblinded/new, never retroactive success. Immediate next action is lead scheduling a read-only manifest-delta review for source surprise, not this blocked reproduction.'","time":{"start":1789045579578,"end":1789045579659}},"metadata":{"openai":{"itemId":"fc_085f984ad3da1bb9016aa2ab1a34bc87d1bc64e0551610de26"}},"id":"prt_08b6c5efe001syjmMVIg3stu4f","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6c5244001V3n5lsmyZWUB5I"}} +{"type":"step_finish","timestamp":1789045579751,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6d1fe4001uCiy2Th6mOIpAx","reason":"tool-calls","snapshot":"3b93a717f94f719acbc28cb753b6b0310d7a3612","messageID":"msg_08b6c5244001V3n5lsmyZWUB5I","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","type":"step-finish","tokens":{"total":116241,"input":1232,"output":1601,"reasoning":0,"cache":{"write":0,"read":113408}},"cost":0}} +{"type":"step_start","timestamp":1789045583343,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6d2dd9001oeN5WdMLE2x7GP","messageID":"msg_08b6d2014001BQE6P609SJtN1q","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","snapshot":"504033c5664bb5590ff725f70fbdf511145adbd7","type":"step-start"}} +{"type":"tool_use","timestamp":1789045586689,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"bash","callID":"call_TvXEFV3aee1jZtHi8iRGD40V","state":{"status":"completed","input":{"command":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re validate research-completion-abi"},"output":"[\n \"research-completion-abi\"\n]\n","metadata":{"output":"[\n \"research-completion-abi\"\n]\n","exit":0,"truncated":false},"title":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re validate research-completion-abi","time":{"start":1789045586643,"end":1789045586687}},"metadata":{"openai":{"itemId":"fc_0d35fb3e18d56114016aa2ab50ba2087d1adb81f12d0e4903a"}},"id":"prt_08b6d360200111uz3xgnU69xZy","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6d2014001BQE6P609SJtN1q"}} +{"type":"step_finish","timestamp":1789045586737,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6d3b2d001RKI7LaLQYM0AxJ","reason":"tool-calls","snapshot":"fb90f8f6129245ccdeba9cd01605bfc09dde08dc","messageID":"msg_08b6d2014001BQE6P609SJtN1q","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","type":"step-finish","tokens":{"total":118006,"input":3389,"output":48,"reasoning":9,"cache":{"write":0,"read":114560}},"cost":0}} +{"type":"step_start","timestamp":1789045592360,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6d5124001ATrq295e6WgP3T","messageID":"msg_08b6d3b5d0019yG8mDhiiuaCoj","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","snapshot":"90560c39fe89b900e51810e386571eef6e80a7c5","type":"step-start"}} +{"type":"tool_use","timestamp":1789045623550,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"type":"tool","tool":"bash","callID":"call_3S0kvmIm1yWH6aCRFbSEYN1z","state":{"status":"completed","input":{"command":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-problem-resolver --role resolver --model openai/gpt-6-astra --session run-ec31ee938e1f509cd7130c03 --summary 'END QUANTUM. OBSERVATIONS: verified assigned Git roots/common dirs and baseline HEADs engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 (/home/alex/sots-engine/.git), RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7 (/home/alex/sots-re/.git). Both preexisting dirty; no source edits made. Resolver runner source_before engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd matches analyst, but RE e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. These are runner/archived digest observations, not a resolver content rehash. Analyst manifest records binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, GNU objdump 2.38 hash 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd; twelve recorded positive static subprocess captures, no runtime execution. Read raw ret and boundary byte/decoded controls; plan and authority checkpoint hashes match historical records. DECISIONS: d-6e30d172051af0385f5979eb resolves s-81ffc3041e1f07b87928e6f2, overturns verifier item 5 complete-stop 0x00779913 and unchanged-plan next action in checkpoint 4555678e34291015554e7e88. Preserve failed prediction; new 0x00779915 normal-return control is unexecuted and unblinded, not cleanup coverage or acceptance. Full authority 0x00779930 remains required. New source-drift surprise s-210e489610197533e4f4cce1 remains OPEN; contract stays BLOCKED. No independent-cross-check, runtime allocator safety, RNG measurement or replacement acceptance restored; downstream bridge/replacement stay dependency-blocked. TESTS: Git identity/status passed; campaign validate research-completion-abi passed after decision. No disassembly/save experiment, build, game, allocator or lab execution this session. No lease held/acquired; lease inventory inspected only, no resource availability assumed; no access changes or cleanup needed. No delegation, implementation/architecture edits, staging, commit or push. Only campaign controls wrote state. Initial relative CLI command denied; no permissions bypass attempted. Integrator must link actual decision and regenerate projections after valid integration, not write a parallel board history. BLOCKER: unexplained current RE source-manifest delta; preserve old evidence, do not rebind it. Bounded stop now.' --artifact campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json --artifact campaign/runtime/surprises/s-210e489610197533e4f4cce1.json --artifact verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt --next-action 'Lead schedule one fresh resolution-only Astra quantum to compare prior analyst/verifier RE file manifests against run-ec31ee938e1f509cd7130c03 source_before and resolve s-210e489610197533e4f4cce1 before authorizing any verifier reproduction; no source restoration or lab mutation is authorized.'"},"output":"{\n \"actor\": \"research-problem-resolver\",\n \"artifacts\": [\n {\n \"path\": \"campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json\",\n \"sha256\": \"c94914d5be47b93eac301e745b53ed7b1f008744a0ac90681fefc9c4f7a11327\"\n },\n {\n \"path\": \"campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\",\n \"sha256\": \"2e6b3fdf239a1dbffb887cf382e0ae80823667d6cf96afd590b4057a9438502e\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\",\n \"sha256\": \"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\",\n \"sha256\": \"7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\",\n \"sha256\": \"b2d9b57274be71fcdd853f04758bc65d701e7b4cc169d0d5ede24c8788ef82d5\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"3fc22ea3c402274179ce4d1f\",\n \"model\": \"openai/gpt-6-astra\",\n \"next_action\": \"Lead schedule one fresh resolution-only Astra quantum to compare prior analyst/verifier RE file manifests against run-ec31ee938e1f509cd7130c03 source_before and resolve s-210e489610197533e4f4cce1 before authorizing any verifier reproduction; no source restoration or lab mutation is authorized.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-ec31ee938e1f509cd7130c03\",\n \"summary\": \"END QUANTUM. OBSERVATIONS: verified assigned Git roots/common dirs and baseline HEADs engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 (/home/alex/sots-engine/.git), RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7 (/home/alex/sots-re/.git). Both preexisting dirty; no source edits made. Resolver runner source_before engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd matches analyst, but RE e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. These are runner/archived digest observations, not a resolver content rehash. Analyst manifest records binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, GNU objdump 2.38 hash 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd; twelve recorded positive static subprocess captures, no runtime execution. Read raw ret and boundary byte/decoded controls; plan and authority checkpoint hashes match historical records. DECISIONS: d-6e30d172051af0385f5979eb resolves s-81ffc3041e1f07b87928e6f2, overturns verifier item 5 complete-stop 0x00779913 and unchanged-plan next action in checkpoint 4555678e34291015554e7e88. Preserve failed prediction; new 0x00779915 normal-return control is unexecuted and unblinded, not cleanup coverage or acceptance. Full authority 0x00779930 remains required. New source-drift surprise s-210e489610197533e4f4cce1 remains OPEN; contract stays BLOCKED. No independent-cross-check, runtime allocator safety, RNG measurement or replacement acceptance restored; downstream bridge/replacement stay dependency-blocked. TESTS: Git identity/status passed; campaign validate research-completion-abi passed after decision. No disassembly/save experiment, build, game, allocator or lab execution this session. No lease held/acquired; lease inventory inspected only, no resource availability assumed; no access changes or cleanup needed. No delegation, implementation/architecture edits, staging, commit or push. Only campaign controls wrote state. Initial relative CLI command denied; no permissions bypass attempted. Integrator must link actual decision and regenerate projections after valid integration, not write a parallel board history. BLOCKER: unexplained current RE source-manifest delta; preserve old evidence, do not rebind it. Bounded stop now.\",\n \"timestamp\": \"2026-09-10T13:07:03.524603+00:00\"\n}\n","metadata":{"output":"{\n \"actor\": \"research-problem-resolver\",\n \"artifacts\": [\n {\n \"path\": \"campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json\",\n \"sha256\": \"c94914d5be47b93eac301e745b53ed7b1f008744a0ac90681fefc9c4f7a11327\"\n },\n {\n \"path\": \"campaign/runtime/surprises/s-210e489610197533e4f4cce1.json\",\n \"sha256\": \"2e6b3fdf239a1dbffb887cf382e0ae80823667d6cf96afd590b4057a9438502e\"\n },\n {\n \"path\": \"verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md\",\n \"sha256\": \"78e1ee70e73cf4be34884fc2073cd650ada4a20322c1ad50cb2deeb339021fbc\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json\",\n \"sha256\": \"aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt\",\n \"sha256\": \"973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt\",\n \"sha256\": \"e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt\",\n \"sha256\": \"7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560\"\n },\n {\n \"path\": \"verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt\",\n \"sha256\": \"b2d9b57274be71fcdd853f04758bc65d701e7b4cc169d0d5ede24c8788ef82d5\"\n }\n ],\n \"basis\": \"aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0\",\n \"contract\": \"research-completion-abi\",\n \"id\": \"3fc22ea3c402274179ce4d1f\",\n \"model\": \"openai/gpt-6-astra\",\n \"next_action\": \"Lead schedule one fresh resolution-only Astra quantum to compare prior analyst/verifier RE file manifests against run-ec31ee938e1f509cd7130c03 source_before and resolve s-210e489610197533e4f4cce1 before authorizing any verifier reproduction; no source restoration or lab mutation is authorized.\",\n \"role\": \"resolver\",\n \"schema\": \"sots-checkpoint/1\",\n \"session\": \"run-ec31ee938e1f509cd7130c03\",\n \"summary\": \"END QUANTUM. OBSERVATIONS: verified assigned Git roots/common dirs and baseline HEADs engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 (/home/alex/sots-engine/.git), RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7 (/home/alex/sots-re/.git). Both preexisting dirty; no source edits made. Resolver runner source_before engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd matches analyst, but RE e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. These are runner/archived digest observations, not a resolver content rehash. Analyst manifest records binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, GNU objdump 2.38 hash 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd; twelve recorded positive static subprocess captures, no runtime execution. Read raw ret and boundary byte/decoded controls; plan and authority checkpoint hashes match historical records. DECISIONS: d-6e30d172051af0385f5979eb resolves s-81ffc3041e1f07b87928e6f2, overturns verifier item 5 complete-stop 0x00779913 and unchanged-plan next action in checkpoint 4555678e34291015554e7e88. Preserve failed prediction; new 0x00779915 normal-return control is unexecuted and unblinded, not cleanup coverage or acceptance. Full authority 0x00779930 remains required. New source-drift surprise s-210e489610197533e4f4cce1 remains OPEN; contract stays BLOCKED. No independent-cross-check, runtime allocator safety, RNG measurement or replacement acceptance restored; downstream bridge/replacement stay dependency-blocked. TESTS: Git identity/status passed; campaign validate research-completion-abi passed after decision. No disassembly/save experiment, build, game, allocator or lab execution this session. No lease held/acquired; lease inventory inspected only, no resource availability assumed; no access changes or cleanup needed. No delegation, implementation/architecture edits, staging, commit or push. Only campaign controls wrote state. Initial relative CLI command denied; no permissions bypass attempted. Integrator must link actual decision and regenerate projections after valid integration, not write a parallel board history. BLOCKER: unexplained current RE source-manifest delta; preserve old evidence, do not rebind it. Bounded stop now.\",\n \"timestamp\": \"2026-09-10T13:07:03.524603+00:00\"\n}\n","exit":0,"truncated":false},"title":"python3 /home/alex/sots-re/tools/campaign.py --state-root /home/alex/sots-re checkpoint research-completion-abi --actor research-problem-resolver --role resolver --model openai/gpt-6-astra --session run-ec31ee938e1f509cd7130c03 --summary 'END QUANTUM. OBSERVATIONS: verified assigned Git roots/common dirs and baseline HEADs engine 7741d42fc5e4e761e6449bdaf0e4a61d00036a23 (/home/alex/sots-engine/.git), RE 3bfde5a70d874a723e797a695bbd847fd82c0aa7 (/home/alex/sots-re/.git). Both preexisting dirty; no source edits made. Resolver runner source_before engine ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd matches analyst, but RE e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 differs from historical 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8. These are runner/archived digest observations, not a resolver content rehash. Analyst manifest records binary 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841, GNU objdump 2.38 hash 1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd; twelve recorded positive static subprocess captures, no runtime execution. Read raw ret and boundary byte/decoded controls; plan and authority checkpoint hashes match historical records. DECISIONS: d-6e30d172051af0385f5979eb resolves s-81ffc3041e1f07b87928e6f2, overturns verifier item 5 complete-stop 0x00779913 and unchanged-plan next action in checkpoint 4555678e34291015554e7e88. Preserve failed prediction; new 0x00779915 normal-return control is unexecuted and unblinded, not cleanup coverage or acceptance. Full authority 0x00779930 remains required. New source-drift surprise s-210e489610197533e4f4cce1 remains OPEN; contract stays BLOCKED. No independent-cross-check, runtime allocator safety, RNG measurement or replacement acceptance restored; downstream bridge/replacement stay dependency-blocked. TESTS: Git identity/status passed; campaign validate research-completion-abi passed after decision. No disassembly/save experiment, build, game, allocator or lab execution this session. No lease held/acquired; lease inventory inspected only, no resource availability assumed; no access changes or cleanup needed. No delegation, implementation/architecture edits, staging, commit or push. Only campaign controls wrote state. Initial relative CLI command denied; no permissions bypass attempted. Integrator must link actual decision and regenerate projections after valid integration, not write a parallel board history. BLOCKER: unexplained current RE source-manifest delta; preserve old evidence, do not rebind it. Bounded stop now.' --artifact campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json --artifact campaign/runtime/surprises/s-210e489610197533e4f4cce1.json --artifact verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a20.stdout.txt --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-stop-a28.stdout.txt --artifact verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-boundary-bytes.stdout.txt --next-action 'Lead schedule one fresh resolution-only Astra quantum to compare prior analyst/verifier RE file manifests against run-ec31ee938e1f509cd7130c03 source_before and resolve s-210e489610197533e4f4cce1 before authorizing any verifier reproduction; no source restoration or lab mutation is authorized.'","time":{"start":1789045623481,"end":1789045623548}},"metadata":{"openai":{"itemId":"fc_0948b4f544c526db016aa2ab57f3b087d187b1280641fd7832"}},"id":"prt_08b6d5126001Kwfq4HFdAoZfFX","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","messageID":"msg_08b6d3b5d0019yG8mDhiiuaCoj"}} +{"type":"step_finish","timestamp":1789045623670,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6dcb72001O3QRSpi5U3JFaE","reason":"tool-calls","snapshot":"9864fa75b587eb8110c648a867f20ce4e7fc3050","messageID":"msg_08b6d3b5d0019yG8mDhiiuaCoj","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","type":"step-finish","tokens":{"total":119113,"input":267,"output":1086,"reasoning":0,"cache":{"write":0,"read":117760}},"cost":0}} +{"type":"step_start","timestamp":1789045627224,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6dd954001qSi7hIXRwG8Som","messageID":"msg_08b6dcbaf0011zQydATpASIRCQ","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","snapshot":"4cbb36ef36a1787492e821f55993dc8de549df7c","type":"step-start"}} +{"type":"text","timestamp":1789045638579,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6dd956001YiNc0uSc71ngGk","messageID":"msg_08b6dcbaf0011zQydATpASIRCQ","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","type":"text","text":"Bounded resolver quantum ended. **`research-completion-abi` remains blocked.**\n\n### Resolution recorded\n[Decision `d-6e30d172051af0385f5979eb`](campaign/runtime/decisions/d-6e30d172051af0385f5979eb.json) resolves the verifier-boundary surprise:\n\n- **Overturned:** stop `0x00779913` includes the complete `ret 4` at `0x00779912`.\n- **Survives:** the hash-bound analyst capture records `c2 04 00`, spanning through `0x00779914`.\n- **Qualified:** stop `0x00779915` is the predicted complete normal-return boundary, but remains unexecuted and does not cover cleanup. The full authority window remains required.\n- The failed prediction and original plan remain preserved; no acceptance was restored.\n\n### New blocker\n[Surprise `s-210e489610197533e4f4cce1`](campaign/runtime/surprises/s-210e489610197533e4f4cce1.json) records RE source-manifest drift: the current launch binds `e97ad0ed…`, while the analyst package binds `6696fd52…`. Engine identity matches. This is not evidence of a game mechanism.\n\n**Next action:** lead schedules a fresh resolution-only Astra quantum to identify the exact RE manifest differences and resolve the identity blocker before verifier reproduction.\n\nCampaign validation passed. No implementation, architecture edits, experiments, lab mutation, delegation, or Git writes occurred.\n\n[Mandatory final checkpoint](campaign/runtime/checkpoints/research-completion-abi-3fc22ea3c402274179ce4d1f.json) persisted under session `run-ec31ee938e1f509cd7130c03`.","time":{"start":1789045627222,"end":1789045638552},"metadata":{"openai":{"itemId":"msg_004e7cc1547110b7016aa2ab7b112887d1a9b135b2ad66cf86","phase":"final_answer"}}}} +{"type":"step_finish","timestamp":1789045638790,"sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","part":{"id":"prt_08b6e0675001ZTLl0Td97VqwuI","reason":"stop","snapshot":"7011ce91e737c5912e681c97c94f2265034ff344","messageID":"msg_08b6dcbaf0011zQydATpASIRCQ","sessionID":"ses_f74958b4dffe0qDVk3LfDAxiwG","type":"step-finish","tokens":{"total":121096,"input":2831,"output":377,"reasoning":0,"cache":{"write":0,"read":117888}},"cost":0}} diff --git a/campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.stderr.log b/campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.stderr.log new file mode 100644 index 0000000..e69de29 diff --git a/campaign/runtime/surprises/s-210e489610197533e4f4cce1.json b/campaign/runtime/surprises/s-210e489610197533e4f4cce1.json new file mode 100644 index 0000000..d86769a --- /dev/null +++ b/campaign/runtime/surprises/s-210e489610197533e4f4cce1.json @@ -0,0 +1,13 @@ +{ + "actor": "research-problem-resolver", + "contract": "research-completion-abi", + "decision": "d-e9d6d48cd77538556d1a1c1f", + "id": "s-210e489610197533e4f4cce1", + "model": "openai/gpt-6-astra", + "probe": "Lead or authorized source-identity analyst compares the prior analyst/verifier launch RE file manifests with resolver source_before, naming every added/deleted/byte/mode-changed source path and confirming actual current paired source-binding. Preserve both manifests. Astra must decide explicit reconciliation or source-identical snapshot restoration by its owner before reproduction; no autonomous reset/copy or new source hash attached to old evidence.", + "role": "resolver", + "schema": "sots-surprise/1", + "status": "resolved", + "summary": "Resolver session run-ec31ee938e1f509cd7130c03 found source identity drift before any experiment: launch record campaign/runtime/runs/run-ec31ee938e1f509cd7130c03.json source_before RE manifest_sha256 is e97ad0ed5708a38d40294fb6cb4ba3cb49d4938710e3c01983fa055cbf22c0b9 (line 5053), not analyst run-9daf5c3b75547271d5c3b4ed manifest source_before/source_after 6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8 and verifier checkpoint 4555678e34291015554e7e88. Engine launch digest still ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd; Git HEADs/common dirs independently match pinned baselines. Same HEAD does not imply source-identical reproduction. Cause and relevance of changed RE inventory not yet measured; do not attach this binding to old measurements or infer a stale game build. No lab/source mutation or new capture executed.", + "timestamp": "2026-09-10T13:05:26.974324+00:00" +} diff --git a/campaign/runtime/surprises/s-81ffc3041e1f07b87928e6f2.json b/campaign/runtime/surprises/s-81ffc3041e1f07b87928e6f2.json new file mode 100644 index 0000000..03a7140 --- /dev/null +++ b/campaign/runtime/surprises/s-81ffc3041e1f07b87928e6f2.json @@ -0,0 +1,13 @@ +{ + "actor": "research-abi-correction-verifier", + "contract": "research-completion-abi", + "decision": "d-6e30d172051af0385f5979eb", + "id": "s-81ffc3041e1f07b87928e6f2", + "model": "openai/gpt-5.6-sol", + "probe": "Astra should inspect verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md item 5 and analyst raw authority line 0x00779912 c2 04 00 in verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/nested-copy-authority.stdout.txt. Decide whether to preserve 0x00779913 as an expected-truncated negative and add fresh held-out 0x00779915 as the complete control, then authorize a fresh session-bound verifier reproduction. Require both boundaries plus direct PE bytes; do not erase the failed prediction or treat it as acceptance.", + "role": "verifier", + "schema": "sots-surprise/1", + "status": "resolved", + "summary": "Predeclared held-out boundary assumption is falsified before execution. Verification plan run-d6c4dc15e9f4d15155fee856 requires stop 0x00779913 to include the complete ret 4 at 0x00779912. The already-read analyst authority stream shows that instruction bytes are c2 04 00, spanning 0x00779912..0x00779914, so objdump stop 0x00779913 can admit only the first byte c2 under the same stop-address behavior previously established. It cannot be a complete terminal boundary; minimum complete stop is 0x00779915. This is the verifier own failed prediction, not analyst success and not game/runtime behavior. No new disassembly/save experiment, game, allocator, RNG, VM, Ghidra, or source mutation was executed. Pause the affected reproduction plan rather than silently changing its held-out boundary.", + "timestamp": "2026-09-10T05:27:48.289391+00:00" +} diff --git a/campaign/runtime/transitions/research-completion-abi-6daec310044e13c8c635e05c.json b/campaign/runtime/transitions/research-completion-abi-6daec310044e13c8c635e05c.json new file mode 100644 index 0000000..8895ca4 --- /dev/null +++ b/campaign/runtime/transitions/research-completion-abi-6daec310044e13c8c635e05c.json @@ -0,0 +1,9 @@ +{ + "actor": "campaign-lead", + "contract": "research-completion-abi", + "from": "ready", + "model": "openai/gpt-5.6-sol", + "role": "lead", + "timestamp": "2026-09-10T05:07:46.031796+00:00", + "to": "implementing" +} diff --git a/campaign/runtime/transitions/research-completion-abi-7f8e2dc0b9b23e9aee13e698.json b/campaign/runtime/transitions/research-completion-abi-7f8e2dc0b9b23e9aee13e698.json new file mode 100644 index 0000000..a3a1f25 --- /dev/null +++ b/campaign/runtime/transitions/research-completion-abi-7f8e2dc0b9b23e9aee13e698.json @@ -0,0 +1,9 @@ +{ + "actor": "campaign-lead", + "contract": "research-completion-abi", + "from": "implementing", + "model": "openai/gpt-5.6-sol", + "role": "lead", + "timestamp": "2026-09-10T05:07:46.150625+00:00", + "to": "verification" +} diff --git a/campaign/runtime/transitions/research-completion-abi-e24f6d6bf417ccc1ff38cbad.json b/campaign/runtime/transitions/research-completion-abi-e24f6d6bf417ccc1ff38cbad.json new file mode 100644 index 0000000..6e1e04b --- /dev/null +++ b/campaign/runtime/transitions/research-completion-abi-e24f6d6bf417ccc1ff38cbad.json @@ -0,0 +1,9 @@ +{ + "actor": "campaign-lead", + "contract": "research-completion-abi", + "from": "needs-revision", + "model": "openai/gpt-5.6-sol", + "role": "lead", + "timestamp": "2026-09-10T05:07:45.967164+00:00", + "to": "ready" +} diff --git a/campaign/runtime/verdicts/research-completion-abi.json b/campaign/runtime/verdicts/research-completion-abi.json index eb5bb87..b85f4a8 100644 --- a/campaign/runtime/verdicts/research-completion-abi.json +++ b/campaign/runtime/verdicts/research-completion-abi.json @@ -2,7 +2,7 @@ "actor": "research-abi-independent", "basis": "aaddeb76f74bbd1a43671f882770ec84a7d690b4060d060ef1a68f918e8edbb0", "contract": "research-completion-abi", - "decision": "d-0bb927e63b915c87a58d4257", + "decision": "d-e9d6d48cd77538556d1a1c1f", "evidence_digest": "e5073be0f1187ee65c203eb9ad20adc64d18ff2d3314d554f58bd8487dafa931", "explanation": "Scoped integrated PASS over the current two-record integrated evidence array. Fresh handoff reproduction executed 22 nonempty static windows plus strict archived save parse/checksum: 24 positive subprocesses, empty stderr, no skips; manifest matches the integrated artifact except session and state is byte-identical. Seven narrow/wide boundaries reproduce complete ret 4/ret 8 bytes. Held-out direct-PE ablation confirmed each exact return and rejected all minus-one/plus-one shifted starts; static inspection exposed distinct 0x2c/0x74 strides, deep-copy calls, three guarded long-string deletes, description inequality and three unordered-or-unequal float branches. Actual state inspection found EvNxID 4, turn-3 count 2, event ID 3 fields/defaults, exact 609080-byte rebuild, and a 2503-byte RNG leaf with digest 0978fdf34ff7962f76c2de810dc93e0a. Integrated source/input/binary/outcome hashes remain bound and campaign tests/validation pass. Scope is independent static reproduction plus one archived state only: no live allocator safety, original differential, replacement or replay acceptance; runtime branch residuals remain. Historical failed provenance/description predictions remain failures resolved by Astra.", "model": "openai/gpt-5.6-sol", diff --git a/verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md b/verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md new file mode 100644 index 0000000..33ff9e0 --- /dev/null +++ b/verify/results/research-completion-abi-correction-verifier/report-run-d6c4dc15e9f4d15155fee856.md @@ -0,0 +1,80 @@ +# Verification report — run-d6c4dc15e9f4d15155fee856 + +## Result + +**Paused / no verdict.** The verifier's own predeclared held-out boundary prediction was falsified +before the planned experiment. Open surprise: `s-81ffc3041e1f07b87928e6f2`. This failure is not +converted into analyst success, independent-cross-check acceptance, or a replacement claim. + +## Identity reproduction + +From the assigned worktrees: + +```sh +git rev-parse HEAD +git rev-parse --show-toplevel +git rev-parse --git-common-dir +git status --short +``` + +Results: engine HEAD `7741d42fc5e4e761e6449bdaf0e4a61d00036a23`, root +`/tmp/opencode/sots-final-research-engine`, common directory `/home/alex/sots-engine/.git`; RE HEAD +`3bfde5a70d874a723e797a695bbd847fd82c0aa7`, root +`/tmp/opencode/sots-final-research-re`, common directory `/home/alex/sots-re/.git`. Both trees are +dirty as expected from the source-identical campaign snapshot; identity was not inferred from HEAD. + +```sh +python3 tools/campaign.py --state-root /home/alex/sots-re validate +python3 tools/campaign.py --state-root /home/alex/sots-re status research-completion-abi +python3 tools/campaign.py --state-root /home/alex/sots-re source-binding \ + research-completion-abi \ + --engine-worktree /tmp/opencode/sots-final-research-engine \ + --re-worktree /tmp/opencode/sots-final-research-re +``` + +Before the surprise, validation passed, status was `verification` with no open surprises, and the +binding matched the analyst package: engine +`ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd`, RE +`6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8`. + +```sh +sha256sum dumps/sots.exe /usr/bin/objdump \ + verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/manifest.json \ + verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/report.md \ + verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py +/usr/bin/objdump --version +``` + +Results: executable `970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841`; +objdump target bytes `1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd`, +GNU Binutils 2.38; handoff artifacts respectively +`aaada07613a2d2b10d99c4b0a5ee795501a5eba13250c5d3beece587acd8d4a4`, +`6e74ff0197adc6c97f5924ad3f973d5e8922f1480268d1c96dac3dd89000e38f`, and +`66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1`. +`/usr/bin/objdump` is a symlink whose target bytes were hashed; the manifest's 373,888-byte size is +the dereferenced executable, while `stat` on the link itself reports 24 bytes. + +## Failed prediction and challenge + +The pre-experiment plan required held-out stop `0x00779913` to include a complete `ret 4` beginning +at `0x00779912`. Independent inspection of the raw authority stream shows bytes `c2 04 00`; the +instruction occupies addresses `0x00779912..0x00779914`. An exclusive stop of `0x00779913` can +therefore expose only `c2`, exactly the truncation class that invalidated earlier archives. The +earliest complete stop is `0x00779915`. + +This challenges the verifier instrument boundary, not game semantics. The planned objdump and save +subprocesses were **not run**, so there is no positive-execution claim, no archived-state/RNG result, +and no verifier manifest. Existing analyst captures remain measurements only. Actual runtime states +(existing/miss, spare/full, empty/nonempty, short/long, unwind) remain unexecuted; static branches do +not substitute for them. No original-assisted execution, partial/full compare, independent +replacement, or integrated replay occurred. + +## Side effects and exact next action + +Only verifier-owned plan/report files and canonical campaign surprise/checkpoint state were written. +No lease was acquired; no lab, VM, Ghidra, game, allocator, RNG, engine source, staging, commit, or +push operation occurred. + +**Exact next action:** Astra resolves `s-81ffc3041e1f07b87928e6f2` by deciding whether +`0x00779913` becomes an expected-truncated negative and `0x00779915` the fresh complete held-out +control; then a fresh verifier quantum executes the authorized session-bound reproduction. diff --git a/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md b/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md new file mode 100644 index 0000000..e07adc3 --- /dev/null +++ b/verify/results/research-completion-abi-correction-verifier/verification-plan-run-d6c4dc15e9f4d15155fee856.md @@ -0,0 +1,56 @@ +# Verification plan — run-d6c4dc15e9f4d15155fee856 + +Role `verifier`; actor `research-abi-correction-verifier`; requested model +`openai/gpt-5.6-sol`. This plan predates this session's disassembly and save-state experiments. + +## Scope separation + +The analyst package is a fresh **static capture**, not live allocator execution, original-assisted +execution, partial/full compare, independent replacement, or integrated replay. This verifier will +independently reproduce static instruction/byte facts and archived save values only. It will not +claim runtime allocator safety, event posting, replacement acceptance, or integrated-tree evidence. + +## Falsifiers + +1. Reject if contract/campaign validation fails, an open surprise exists, either paired worktree is + not at its pinned baseline/common repository, source binding differs from the handoff, or binary + or objdump identity differs. Dirty trees are acceptable only when their full source digests match. +2. Reject zero executions, nonzero command exits, empty required stdout, unexpected stderr/skips, + missing streams, reused output, or a manifest/session mismatch. +3. Require stop `0x00779a20` to be incomplete despite exit zero: raw bytes must show `74 10` while + decoded output at `0x00779a1f` shows only `74`. If counted as a complete stream, reject. +4. Require aligned stops `0x00779a21`, `0x00779a23`, and `0x00779a28` to add exactly complete + `74 10`, `8b cf`, and `e8 28 6a ff ff` rows. Any truncated terminal row or non-prefix change in + the shared decoded range rejects the boundary interpretation. +5. Independently hold out stop `0x00779913` for nested-copy authority. It must include complete + `ret 4` at `0x00779912` without entering the later routine; compare it with raw terminal bytes. + A bad terminal boundary or changed preceding rows falsifies the package's authority boundary. +6. Check key ABI claims directly: get/create and outer append end `ret 4`; nested destruction ends + `ret`; nested copy has normal `ret 4`, unwind cleanup, and deallocation paths; get/create has no + write to temporary `[ebp-0x20]` before append, copies source `+4`, cleans the temporary nested + vector, then stores requested turn to the stored element. Contradictory def/use evidence pauses. +7. Independently parse the archived save, not narrative counters. Require the named player/event + container elements, IDs, strings, exact `0x7f7fffff` position words, and empty player states to + match. Missing parse coverage or unexpected skips reject archived-value validation. +8. Check actual RNG evidence independently: static helper captures execute no game and therefore + expose no RNG state/draws. Any claim that unchanged/zero RNG was measured by these captures is a + failure. Archived W1 unchanged RNG remains historical and outside this static reproduction. + +## Required branch exposures and distinct states + +Static instruction exposure required now: existing last-match return versus miss; spare-capacity +append versus full-capacity growth edges; empty versus nonempty nested copy; null versus nonnull +nested destruction; normal return versus unwind cleanup; short/long string branch instructions; +known-bad truncated versus aligned boundary. Instruction exposure is not runtime execution. + +Runtime states still unexercised and must remain explicit residuals: existing-last-match, miss with +spare/full outer capacity, empty/nonempty nested vectors owning short/long strings, deliberate +allocation failure/throw, duplicate/description-only-different events, and transient stack +sentinels. Archived save states are distinct from all of those and validate serialized values only. + +## Planned reproduction + +Create a fail-if-exists session directory owned by this verifier. Use an independent script, not the +analyst's hard-coded recipe, to bind source/input/tool identities, run the package windows and held- +out boundary, archive raw stdout/stderr, parse instruction rows and save values, and emit a manifest +whose failed predictions/residuals remain failures or limitations. diff --git a/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py b/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py new file mode 100644 index 0000000..39c1217 --- /dev/null +++ b/verify/results/research-completion-abi/capture_run_35e59053176da458d8b46fea.py @@ -0,0 +1,188 @@ +#!/usr/bin/env python3 +"""Session-bound current-source static ABI capture; refuses output reuse.""" +import hashlib +import json +import pathlib +import struct +import subprocess +import sys +from datetime import datetime, timezone + +ROOT = pathlib.Path("/home/alex/sots-re") +SESSION = "run-35e59053176da458d8b46fea" +OUT = ROOT / "verify/results/research-completion-abi" / (SESSION + "-repair1") +ENGINE = pathlib.Path("/tmp/opencode/sots-final-research-engine") +RE = pathlib.Path("/tmp/opencode/sots-final-research-re") +CAMPAIGN = ROOT / "tools/campaign.py" +EXE = ROOT / "dumps/sots.exe" +SAVE = ROOT / "verify/results/saves/turn3-state.sav" +OBJDUMP = pathlib.Path("/usr/bin/objdump") +EXPECTED = { + "engine": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd", + "re": "e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f", + "exe": "970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841", + "objdump": "1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd", + "save": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921", +} + +# Names classify evidence only; these windows expose instructions but execute no branch. +WINDOWS = ( + ("observed-ctor", 0x8562A0, 0x856310), + ("observed-append", 0x7B7320, 0x7B73A2), + ("observed-copy", 0x79A150, 0x79A1DC), + ("observed-growth", 0x7B34E0, 0x7B35F2), + ("observed-alloc", 0x57E590, 0x57E5E7), + ("player-ctor", 0x84EE30, 0x84EEF4), + ("player-append", 0x86C580, 0x86C631), + ("player-growth", 0x869500, 0x869620), + ("player-copy", 0x7693F0, 0x7694C3), + ("player-dtor", 0x61AE90, 0x61AEFC), + ("string-assign", 0x4249A0, 0x424ADD), + ("import-thunks", 0x924FAA, 0x924FBC), + ("turn-get-create", 0x885380, 0x88544E), + ("turn-append", 0x884CB0, 0x884D93), + ("turn-growth", 0x8841A0, 0x884300), + ("nested-copy-authority", 0x779850, 0x779930), + ("nested-dtor", 0x629580, 0x6295CE), + ("turn-virtual-dtor", 0x62E120, 0x62E170), + ("dedup", 0x825D40, 0x825E67), + ("string-not-equal", 0x46F8C0, 0x46F8F0), + ("prune", 0x879EB0, 0x879FC0), + ("nested-copy-stop-9913", 0x779850, 0x779913), + ("nested-copy-stop-9915", 0x779850, 0x779915), + ("nested-copy-stop-a20", 0x779850, 0x779A20), + ("nested-copy-stop-a21", 0x779850, 0x779A21), + ("nested-copy-stop-a23", 0x779850, 0x779A23), + ("nested-copy-stop-a28", 0x779850, 0x779A28), +) + +def sha(data): + return hashlib.sha256(data).hexdigest() + +def ident(path): + target = path.resolve() + data = target.read_bytes() + return {"path": str(path), "resolved_path": str(target), "bytes": len(data), "sha256": sha(data)} + +def binding(): + argv = [sys.executable, str(CAMPAIGN), "--state-root", str(ROOT), "source-binding", + "research-completion-abi", "--engine-worktree", str(ENGINE), + "--re-worktree", str(RE)] + p = subprocess.run(argv, cwd=ROOT, capture_output=True, text=True, check=True) + return {"argv": argv, "value": json.loads(p.stdout)} + +def rows(data): + return [line.rstrip() for line in data.decode("utf-8").splitlines() + if ":" in line and line.lstrip()[:1].isdigit()] + +def pe_reader(data): + pe = struct.unpack_from(" 0 for x in records), + "all_stderr_empty": all(x["stderr"]["bytes"] == 0 for x in records), + "source_stable": before["value"] == after["value"], + **comparisons, +} +manifest = { + "schema": "sots-abi-static-capture/2", "session": SESSION, + "actor": "research-abi-analyst", "role": "analyst", "model": "openai/gpt-5.6-sol", + "timestamp": datetime.now(timezone.utc).isoformat(), + "decisions": ["d-e9d6d48cd77538556d1a1c1f", "d-6e30d172051af0385f5979eb"], + "scope": "Static instruction/byte capture and immutable input identity; no game/runtime execution.", + "source_before": before, "source_after": after, "files": files, + "image_base": f"0x{image_base:08x}", "commands": records, "direct_pe": direct, + "checks": [{"name": k, "status": "pass" if v else "fail"} for k, v in checks.items()], + "failed": [k for k, v in checks.items() if not v], + "static_branch_exposure": ["existing-match/miss", "spare/full capacity", "empty/nonempty nested copy", + "null/nonnull destruction", "short/long string", "normal/unwind", "bad/aligned boundaries"], + "runtime_unexercised": ["all listed static branches", "allocator safety", "event construction and IDs", + "PostEvent caller defaults/write order", "exception throw", "RNG state/draws"], + "original_helpers": ["0x00924fb6 allocation thunk", "0x00924faa deallocation thunk", + "0x0046f8c0 original string comparison when called"], +} +(OUT / "manifest.json").write_text(json.dumps(manifest, indent=2) + "\n") +print(json.dumps({"output": str(OUT.relative_to(ROOT)), "commands": len(records), "failed": manifest["failed"]}, indent=2)) +raise SystemExit(bool(manifest["failed"])) diff --git a/verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md b/verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md new file mode 100644 index 0000000..97c1d33 --- /dev/null +++ b/verify/results/research-completion-abi/plan-run-35e59053176da458d8b46fea.md @@ -0,0 +1,47 @@ +# Current-source ABI static capture plan — run-35e59053176da458d8b46fea + +This analyst-owned plan implements the new-source remeasurement selected by Astra decisions +`d-e9d6d48cd77538556d1a1c1f` and `d-6e30d172051af0385f5979eb`. It is static analysis plus input +identity only. It does not execute the game, constructors, destructors, allocation, exception paths, +event posting, or RNG, and it cannot satisfy the independent verifier criterion. + +## Preconditions and falsifiers + +1. Refuse an absent/wrong session, a pre-existing output directory, baseline HEAD mismatch, source + binding mismatch from preflight, binary/tool/interpreter drift, missing archived save/parser input, + nonzero subprocess return, empty required stdout, nonempty stderr, or source drift during capture. +2. Capture nested-copy stop `0x00779913` as an expected truncated negative, stop `0x00779915` as + the aligned complete `c2 04 00` control, and stop `0x00779930` as authority. Read the same bytes + through a direct PE VA-to-file-offset mapper. The old claim that `0x00779913` is complete remains + failed; it is not rewritten as a pass. +3. Retain the independent boundary family: bad `0x00779a20`, aligned `0x00779a21`, `0x00779a23`, + and `0x00779a28`, with direct bytes at `0x00779a1f`. Reject changed preceding rows. +4. Capture callable entry/return and ownership windows for ObservedTech and PlayerEvent construction, + append, growth, deep copy, destruction, string assignment, imported allocation/deallocation, + TurnEvents get/create, outer append, nested copy/destruction, duplicate comparison, and prune. +5. Preserve static branch exposure separately from runtime execution: match/miss, spare/full capacity, + empty/nonempty and null/nonnull nested vectors, short/long string branches, normal/unwind edges, + and known-bad/aligned disassembler boundaries. No static branch is reported as runtime coverage. +6. Hash but do not parse the archived save in this analyst capture. A fresh independent verifier must + parse named containers/elements, IDs, all event fields, exact FLT_MAX words, empty player states, + and the actual RNG leaf, and must use a verifier-owned recipe and fail-if-exists directory. + +## Expected machine facts under test + +* Distinct element strides remain `0x2c` (ObservedTech), `0x74` (PlayerEvent), and `0x18` + (TurnEvents); append/growth performs element construction rather than raw header transfer. +* Long-string ownership uses original allocator/deallocator thunks `0x00924fb6`/`0x00924faa`; + these are original-helper dependencies, not standalone allocator safety. +* Get/create checks existing buckets before miss construction, deep-copies the nested vector, cleans + the temporary nested vector, then writes the requested turn into the stored last element. +* Duplicate matching includes both description strings; mismatch returns without an event-vector + write, while no duplicate proceeds to PlayerEvent append. No RNG instruction/effect is expected + in these bounded static windows, but unchanged RNG is not measured. + +## Runtime residuals + +Still unavailable/unexercised: live existing-last-match and miss paths; spare/full outer capacity; +empty/nonempty nested vectors owning short/long strings; deliberate allocation failure and unwind; +equal versus description-only-different live events; transient stack sentinels; exact PostEvent +caller defaults/write order; allocator-family safety; event IDs and records created at runtime; and +all RNG state/draw effects. diff --git a/verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md b/verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md new file mode 100644 index 0000000..c6ef480 --- /dev/null +++ b/verify/results/research-completion-abi/report-run-35e59053176da458d8b46fea.md @@ -0,0 +1,73 @@ +# Current-source ABI static capture report — run-35e59053176da458d8b46fea + +## Result and provenance + +The authoritative package is +`verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/`; its manifest records +27 positive objdump executions, all return code zero with nonempty stdout and empty stderr (118,734 +stdout bytes, zero stderr bytes), and no failed checks. Paired source identity remained engine +`ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd` and RE +`e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f` before/after. Binary, +objdump, Python, save and parser identities are in the manifest and preflight. + +The sibling directory without `-repair1` is a preserved failed recipe run. Its streams are valid, +but two checks incorrectly required the bad boundary stream to omit its terminal row. Actual objdump +retains a one-byte terminal row (`c2` or `74`) and replaces it with the complete row when the stop is +aligned. The repaired recipe tests equal preceding rows plus that replacement. This was a local test +predicate defect, not contradictory binary behavior and not a retroactive pass. + +## Measured static observations + +* Stop `0x00779913` emits truncated `779912: c2`; stop `0x00779915` emits complete + `779912: c2 04 00`, and authority through `0x00779930` includes the complete return plus cleanup at + `0x00779915`. Direct PE mapping independently reads `c20400` at VA `0x00779912`. +* The second boundary family reproduces truncated `74` at stop `0x00779a20`, complete `74 10` at + `0x00779a21`, then complete `8b cf` and `e8 28 6a ff ff` at stops `0x00779a23` and + `0x00779a28`. Direct PE bytes are `74108bcfe8286affff`. +* ObservedTech append/growth instructions use `0x2c`; PlayerEvent append/nested-copy/destruction use + `0x74`; TurnEvents append/prune use `0x18`. These are distinct concrete element strides. +* ObservedTech allocation multiplies count by `0x2c` and calls `0x00924fb6`; old-element growth and + PlayerEvent/string destruction paths call `0x00924faa`. PlayerEvent append calls copy constructor + `0x007693f0`; outer TurnEvents append calls nested copy `0x00779850`. +* Nested copy zeros the destination three-pointer header, distinguishes empty count from allocation, + allocates through `0x0078af40`, multiplies by `0x74`, calls range helper `0x007725a0`, writes the + copied end pointer, returns destination in EAX, and ends `ret 4`. Its captured unwind edge calls + `0x00629580` before the allocation-failure helper; this edge was exposed, not executed. +* Get/create scans every `0x18` bucket and retains the last matching `+4` turn. On miss it establishes + vptr and zero nested-vector pointers, calls outer append, calls nested-vector cleanup, then stores + the requested stack turn into stored-last `+4`; both returns are `ret 4`. +* Outer append separates capacity-growth and spare-capacity edges, copies source `+4`, advances source + to nested vector `+8`, deep-copies it, then increments end by `0x18`; it ends `ret 4`. +* Duplicate scan advances by `0x74`; after prior field comparisons it performs description comparison + at `0x0046f8c0`, caller-cleans two arguments, and reaches match return only when AL is zero. Thus the + fresh instructions remain consistent with description equality being required. +* Direct PE mapping reads three `0x7f7fffff` words at constructor-default VA `0x00af0dc8`. This is a + binary constant observation, not a newly parsed event record. + +The manifest's direct-PE entries named `observed-stride`, `player-stride`, and `turn-stride` sampled +fixed addresses but were not used to establish strides; their names are overbroad. The stride facts +above come from the archived instruction rows. This limitation does not affect the boundary-byte or +constructor-default direct controls. + +## Interpretation, dependencies, and limits + +The measurements support the prior static interpretation that vector elements require construction +and nested/string ownership rather than raw header copy. Calling `0x00924fb6`, `0x00924faa`, or +`0x0046f8c0` remains an original-helper dependency with the original CRT/string layout. A standalone +implementation needs one coherent allocator/copy/destruction family; this capture does not show that +original allocations can safely cross a replacement boundary. + +No game branch, allocation, constructor, destructor, throw, event post, ID assignment, record write, +container mutation, or RNG draw executed. The save was hashed, not parsed. Existing/miss, +spare/full-capacity, empty/nonempty, null/nonnull, short/long-string, normal/unwind, duplicate and +description-only-different states are instruction exposures only. Exact PostEvent caller inputs, +defaulting and total write order remain outside this bounded remeasurement. + +## Independent falsification package + +A fresh verifier should use its own recipe and fail-if-exists directory, bind the current paired +digest, repeat the negative/aligned/authority boundaries and direct PE reads, challenge at least one +additional boundary, and parse the archived save independently for named player/event containers, +elements, IDs, strings, FLT_MAX words, empty-player states and the actual RNG leaf. It must preserve +all runtime residuals and must not count this analyst capture or archived prior verifier output as an +independent cross-check. diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json new file mode 100644 index 0000000..2a0c973 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-preflight.json @@ -0,0 +1,70 @@ +{ + "schema": "sots-abi-preflight/1", + "session": "run-35e59053176da458d8b46fea", + "actor": "research-abi-analyst", + "role": "analyst", + "model": "openai/gpt-5.6-sol", + "decision": "d-e9d6d48cd77538556d1a1c1f", + "scope": "Read-only current-source and consumed-input preflight; no disassembly, save parse, game, allocator, RNG, VM, Ghidra, or source experiment.", + "source_binding_before": { + "engine": { + "path": "/tmp/opencode/sots-final-research-engine", + "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", + "sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd" + }, + "re": { + "path": "/tmp/opencode/sots-final-research-re", + "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", + "sha256": "e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f" + } + }, + "source_binding_after": { + "engine": { + "path": "/tmp/opencode/sots-final-research-engine", + "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", + "sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd" + }, + "re": { + "path": "/tmp/opencode/sots-final-research-re", + "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", + "sha256": "e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f" + } + }, + "source_stable_during_preflight": true, + "identity_classification": { + "observation": "The current campaign-domain RE digest is e5cf1c44..., distinct from historical campaign digest 6696fd52... and from resolver-recorded runner-domain digest e97ad0ed.... The hash domains are not equated.", + "decision": "Bind any future measurement to e5cf1c44...; do not attach this binding to archived measurements." + }, + "consumed_files": [ + {"path": "tools/campaign.py", "bytes": 35131, "sha256": "a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123"}, + {"path": "tools/run_agent.py", "bytes": 20079, "sha256": "818097896b2e29dbdd2f53d37261236af302178ecd0ee083a3184a7bc33ff152"}, + {"path": "campaign/models.json", "bytes": 607, "sha256": "00f959ff4ce16ba22f6befa7a9d495eb85d62d9e8001b1e1345eaae0e11b6e48"}, + {"path": "campaign/contract.schema.json", "bytes": 4187, "sha256": "a2c76ec042ca097a57c3c05c1e519e392d498d387a31808c7d0f70482d43c201"}, + {"path": "campaign/agents/analyst.md", "bytes": 1220, "sha256": "895c41509016038b3f72c4a68608c4101511e69c5bf410e379286da1a6202952"}, + {"path": "/usr/bin/python3", "resolved_path": "/usr/bin/python3.10", "bytes": 5941864, "sha256": "a2f33a6e006989270f4340528eb61f8f97366e00a5d1b602ac8672ea44fc56ae", "version": "3.10.12"}, + {"path": "/usr/bin/objdump", "resolved_path": "/usr/bin/x86_64-linux-gnu-objdump", "bytes": 373888, "sha256": "1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd"}, + {"path": "dumps/sots.exe", "bytes": 7898624, "sha256": "970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841"}, + {"path": "verify/results/research-completion-abi/run-9daf5c3b75547271d5c3b4ed/capture.py", "bytes": 7265, "sha256": "66e230d79a2f9903941ff206656b7c26123adb528cbe807c2e1d3132137a20d1", "classification": "historical analyst recipe; not executed"}, + {"path": "verify/results/research-completion-abi-independent/reproduce_run_7d85d45cb2196e07025e5096.py", "bytes": 10199, "sha256": "0681a9a4f877b7f511d382ca2b010a1b4a9eb5e4863e46b3aed372e895778bfb", "classification": "historical verifier recipe; not executed and not reusable as independent fresh recipe"}, + {"path": "verify/results/saves/turn3-state.sav", "bytes": 67219, "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921"}, + {"path": "verify/save-reader/save_reader.py", "bytes": 74367, "sha256": "2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35"}, + {"path": "verify/state-checksum/state_checksum.py", "bytes": 57792, "sha256": "ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8"} + ], + "test_input_disposition": { + "paired_re_verify_campaign_test_controls": "absent from assigned paired RE tree, confirming the resolver's current-inventory observation", + "canonical_verify_campaign_test_controls": {"path": "verify/campaign/test_controls.py", "bytes": 33307, "sha256": "fd46a2f7900b5a51facee63b66b1f4f1b1a3f56c00d813dadd016dae1d321925", "result": "37 tests executed, all passed"}, + "canonical_verify_config": [ + {"path": "verify/config/test_agent_config.py", "bytes": 2703, "sha256": "8a7a406f062c3387ec5b99b35f3befb64f676efef174047060c967074545e3e3"}, + {"path": "verify/config/test_source_check.py", "bytes": 1275, "sha256": "c16731e31a54256dde4f88d33007759ff21ad8537ca6cd2be38b9e34c59525ad"} + ], + "canonical_verify_config_result": "8 tests executed, all passed", + "campaign_validate_result": "pass", + "decision": "The canonical controls input required by the current campaign gate exists and passes. Its absence from the paired baseline-pinned RE inventory remains explicit and must not be described as restored source identity. No test file was copied or restored." + }, + "runtime_inputs": { + "available_for_fresh_static_and_archived-value_reproduction": ["dumps/sots.exe", "/usr/bin/objdump", "/usr/bin/python3", "verify/results/saves/turn3-state.sav", "verify/save-reader/save_reader.py", "verify/state-checksum/state_checksum.py"], + "unavailable_or_unexercised": ["live existing-last-match and miss states", "spare/full outer capacity", "empty/nonempty nested vectors with short/long strings", "allocation failure/throw cleanup", "duplicate and description-only-different events", "transient stack sentinels", "live allocator safety", "runtime event construction", "live RNG draws"] + }, + "resources": {"leases": [], "lab_access": false, "mutations": []}, + "result": "preflight-pass-for-scheduling-only" +} diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/dedup.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/dedup.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/dedup.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/dedup.stdout.txt new file mode 100644 index 0000000..653b003 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/dedup.stdout.txt @@ -0,0 +1,127 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00825d40 <.text+0x424d40>: + 825d40: 55 push ebp + 825d41: 8b ec mov ebp,esp + 825d43: 51 push ecx + 825d44: 53 push ebx + 825d45: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 825d48: 56 push esi + 825d49: 33 f6 xor esi,esi + 825d4b: 3b de cmp ebx,esi + 825d4d: 75 0a jne 0x825d59 + 825d4f: 5e pop esi + 825d50: 33 c0 xor eax,eax + 825d52: 5b pop ebx + 825d53: 8b e5 mov esp,ebp + 825d55: 5d pop ebp + 825d56: c2 08 00 ret 0x8 + 825d59: 8b 4b 0c mov ecx,DWORD PTR [ebx+0xc] + 825d5c: 2b 4b 08 sub ecx,DWORD PTR [ebx+0x8] + 825d5f: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 825d64: f7 e9 imul ecx + 825d66: 03 d1 add edx,ecx + 825d68: c1 fa 06 sar edx,0x6 + 825d6b: 8b c2 mov eax,edx + 825d6d: c1 e8 1f shr eax,0x1f + 825d70: 03 c2 add eax,edx + 825d72: 57 push edi + 825d73: 89 75 fc mov DWORD PTR [ebp-0x4],esi + 825d76: 0f 84 d5 00 00 00 je 0x825e51 + 825d7c: 8b 7d 0c mov edi,DWORD PTR [ebp+0xc] + 825d7f: 89 75 08 mov DWORD PTR [ebp+0x8],esi + 825d82: 8b 73 08 mov esi,DWORD PTR [ebx+0x8] + 825d85: 03 75 08 add esi,DWORD PTR [ebp+0x8] + 825d88: 8b 4e 6c mov ecx,DWORD PTR [esi+0x6c] + 825d8b: 3b 4f 6c cmp ecx,DWORD PTR [edi+0x6c] + 825d8e: 0f 85 91 00 00 00 jne 0x825e25 + 825d94: 8b 56 40 mov edx,DWORD PTR [esi+0x40] + 825d97: 3b 57 40 cmp edx,DWORD PTR [edi+0x40] + 825d9a: 0f 85 85 00 00 00 jne 0x825e25 + 825da0: d9 46 44 fld DWORD PTR [esi+0x44] + 825da3: d9 47 44 fld DWORD PTR [edi+0x44] + 825da6: da e9 fucompp + 825da8: df e0 fnstsw ax + 825daa: f6 c4 44 test ah,0x44 + 825dad: 7a 76 jp 0x825e25 + 825daf: d9 46 48 fld DWORD PTR [esi+0x48] + 825db2: d9 47 48 fld DWORD PTR [edi+0x48] + 825db5: da e9 fucompp + 825db7: df e0 fnstsw ax + 825db9: f6 c4 44 test ah,0x44 + 825dbc: 7a 67 jp 0x825e25 + 825dbe: d9 46 4c fld DWORD PTR [esi+0x4c] + 825dc1: d9 47 4c fld DWORD PTR [edi+0x4c] + 825dc4: da e9 fucompp + 825dc6: df e0 fnstsw ax + 825dc8: f6 c4 44 test ah,0x44 + 825dcb: 7a 58 jp 0x825e25 + 825dcd: 83 7f 38 10 cmp DWORD PTR [edi+0x38],0x10 + 825dd1: 8b 57 34 mov edx,DWORD PTR [edi+0x34] + 825dd4: 8d 47 24 lea eax,[edi+0x24] + 825dd7: 8d 4e 24 lea ecx,[esi+0x24] + 825dda: 72 02 jb 0x825dde + 825ddc: 8b 00 mov eax,DWORD PTR [eax] + 825dde: 52 push edx + 825ddf: 50 push eax + 825de0: 8b 41 10 mov eax,DWORD PTR [ecx+0x10] + 825de3: 50 push eax + 825de4: 6a 00 push 0x0 + 825de6: e8 b5 d8 bf ff call 0x4236a0 + 825deb: 85 c0 test eax,eax + 825ded: 75 36 jne 0x825e25 + 825def: 83 7f 64 10 cmp DWORD PTR [edi+0x64],0x10 + 825df3: 8b 57 60 mov edx,DWORD PTR [edi+0x60] + 825df6: 8d 47 50 lea eax,[edi+0x50] + 825df9: 8d 4e 50 lea ecx,[esi+0x50] + 825dfc: 72 02 jb 0x825e00 + 825dfe: 8b 00 mov eax,DWORD PTR [eax] + 825e00: 52 push edx + 825e01: 8b 51 10 mov edx,DWORD PTR [ecx+0x10] + 825e04: 50 push eax + 825e05: 52 push edx + 825e06: 6a 00 push 0x0 + 825e08: e8 93 d8 bf ff call 0x4236a0 + 825e0d: 85 c0 test eax,eax + 825e0f: 75 14 jne 0x825e25 + 825e11: 8d 47 08 lea eax,[edi+0x8] + 825e14: 50 push eax + 825e15: 8d 4e 08 lea ecx,[esi+0x8] + 825e18: 51 push ecx + 825e19: e8 a2 9a c4 ff call 0x46f8c0 + 825e1e: 83 c4 08 add esp,0x8 + 825e21: 84 c0 test al,al + 825e23: 74 37 je 0x825e5c + 825e25: 8b 4b 0c mov ecx,DWORD PTR [ebx+0xc] + 825e28: 2b 4b 08 sub ecx,DWORD PTR [ebx+0x8] + 825e2b: 8b 75 fc mov esi,DWORD PTR [ebp-0x4] + 825e2e: 83 45 08 74 add DWORD PTR [ebp+0x8],0x74 + 825e32: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 825e37: f7 e9 imul ecx + 825e39: 03 d1 add edx,ecx + 825e3b: c1 fa 06 sar edx,0x6 + 825e3e: 8b c2 mov eax,edx + 825e40: c1 e8 1f shr eax,0x1f + 825e43: 46 inc esi + 825e44: 03 c2 add eax,edx + 825e46: 89 75 fc mov DWORD PTR [ebp-0x4],esi + 825e49: 3b f0 cmp esi,eax + 825e4b: 0f 82 31 ff ff ff jb 0x825d82 + 825e51: 5f pop edi + 825e52: 5e pop esi + 825e53: 33 c0 xor eax,eax + 825e55: 5b pop ebx + 825e56: 8b e5 mov esp,ebp + 825e58: 5d pop ebp + 825e59: c2 08 00 ret 0x8 + 825e5c: 5f pop edi + 825e5d: 8b c6 mov eax,esi + 825e5f: 5e pop esi + 825e60: 5b pop ebx + 825e61: 8b e5 mov esp,ebp + 825e63: 5d pop ebp + 825e64: c2 08 00 ret 0x8 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/import-thunks.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/import-thunks.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/import-thunks.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/import-thunks.stdout.txt new file mode 100644 index 0000000..f3d4e20 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/import-thunks.stdout.txt @@ -0,0 +1,10 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00924faa <.text+0x523faa>: + 924faa: ff 25 c8 d1 9d 00 jmp DWORD PTR ds:0x9dd1c8 + 924fb0: ff 25 cc d1 9d 00 jmp DWORD PTR ds:0x9dd1cc + 924fb6: ff 25 d0 d1 9d 00 jmp DWORD PTR ds:0x9dd1d0 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json new file mode 100644 index 0000000..962b0d2 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/manifest.json @@ -0,0 +1,798 @@ +{ + "schema": "sots-abi-static-capture/2", + "session": "run-35e59053176da458d8b46fea", + "actor": "research-abi-analyst", + "role": "analyst", + "model": "openai/gpt-5.6-sol", + "timestamp": "2026-09-10T13:22:55.662074+00:00", + "decisions": [ + "d-e9d6d48cd77538556d1a1c1f", + "d-6e30d172051af0385f5979eb" + ], + "scope": "Static instruction/byte capture and immutable input identity; no game/runtime execution.", + "source_before": { + "argv": [ + "/usr/bin/python3", + "/home/alex/sots-re/tools/campaign.py", + "--state-root", + "/home/alex/sots-re", + "source-binding", + "research-completion-abi", + "--engine-worktree", + "/tmp/opencode/sots-final-research-engine", + "--re-worktree", + "/tmp/opencode/sots-final-research-re" + ], + "value": { + "engine": { + "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", + "path": "/tmp/opencode/sots-final-research-engine", + "sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd" + }, + "re": { + "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", + "path": "/tmp/opencode/sots-final-research-re", + "sha256": "e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f" + } + } + }, + "source_after": { + "argv": [ + "/usr/bin/python3", + "/home/alex/sots-re/tools/campaign.py", + "--state-root", + "/home/alex/sots-re", + "source-binding", + "research-completion-abi", + "--engine-worktree", + "/tmp/opencode/sots-final-research-engine", + "--re-worktree", + "/tmp/opencode/sots-final-research-re" + ], + "value": { + "engine": { + "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", + "path": "/tmp/opencode/sots-final-research-engine", + "sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd" + }, + "re": { + "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", + "path": "/tmp/opencode/sots-final-research-re", + "sha256": "e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f" + } + } + }, + "files": { + "binary": { + "path": "/home/alex/sots-re/dumps/sots.exe", + "resolved_path": "/home/alex/sots-re/dumps/sots.exe", + "bytes": 7898624, + "sha256": "970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841" + }, + "objdump": { + "path": "/usr/bin/objdump", + "resolved_path": "/usr/bin/x86_64-linux-gnu-objdump", + "bytes": 373888, + "sha256": "1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd" + }, + "python": { + "path": "/usr/bin/python3", + "resolved_path": "/usr/bin/python3.10", + "bytes": 5941864, + "sha256": "a2f33a6e006989270f4340528eb61f8f97366e00a5d1b602ac8672ea44fc56ae" + }, + "save": { + "path": "/home/alex/sots-re/verify/results/saves/turn3-state.sav", + "resolved_path": "/home/alex/sots-re/verify/results/saves/turn3-state.sav", + "bytes": 67219, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "campaign": { + "path": "/home/alex/sots-re/tools/campaign.py", + "resolved_path": "/home/alex/sots-re/tools/campaign.py", + "bytes": 35131, + "sha256": "a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123" + }, + "save_reader": { + "path": "/home/alex/sots-re/verify/save-reader/save_reader.py", + "resolved_path": "/home/alex/sots-re/verify/save-reader/save_reader.py", + "bytes": 74367, + "sha256": "2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35" + }, + "state_checksum": { + "path": "/home/alex/sots-re/verify/state-checksum/state_checksum.py", + "resolved_path": "/home/alex/sots-re/verify/state-checksum/state_checksum.py", + "bytes": 57792, + "sha256": "ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8" + } + }, + "image_base": "0x00400000", + "commands": [ + { + "name": "observed-ctor", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x008562a0", + "--stop-address=0x00856310", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 2225, + "sha256": "e200e8f271005787df1ec1d259f7cc644a0060c300731b19ec033fe3f2e3616d" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 43 + }, + { + "name": "observed-append", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x007b7320", + "--stop-address=0x007b73a2", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 2853, + "sha256": "99858bf590aeed92ed7b5d39b4cb84c29dd3ce72b73b8b7d30830cc9f258f334" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 57 + }, + { + "name": "observed-copy", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x0079a150", + "--stop-address=0x0079a1dc", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 2772, + "sha256": "48cfde0b73307ca4b10b68d6a0d5444671a51744c9445d7c4431bb4955c4c14d" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 52 + }, + { + "name": "observed-growth", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x007b34e0", + "--stop-address=0x007b35f2", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 5244, + "sha256": "7fb72600e542553bbd197838a3cb0f0b6166925356b6c05a170d1eb66b65b30f" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 101 + }, + { + "name": "observed-alloc", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x0057e590", + "--stop-address=0x0057e5e7", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 1555, + "sha256": "27a38437141ec8f1d1975f75a7cd5b84718b20d179e7cbd3b3666453ac33c6c0" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 30 + }, + { + "name": "player-ctor", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x0084ee30", + "--stop-address=0x0084eef4", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 3382, + "sha256": "04a44e75771e8f3a3711bfca4a88c8fa73f1d600d264d4b5f6d4bbf3aee49490" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 62 + }, + { + "name": "player-append", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x0086c580", + "--stop-address=0x0086c631", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 3422, + "sha256": "b212a85480fc9bcb1b3046ebe5faab9efa45af6fb7595e4ce002ddcdb2529791" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 66 + }, + { + "name": "player-growth", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00869500", + "--stop-address=0x00869620", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 5928, + "sha256": "8e78b3dd17e52d947f78c93867c0977eddd16ce176b10291ba3afd8c3567428f" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 121 + }, + { + "name": "player-copy", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x007693f0", + "--stop-address=0x007694c3", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 4132, + "sha256": "956786989ef2866c27ee92b8c687fbc13c000a9494830b476e451a5d4e819570" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 76 + }, + { + "name": "player-dtor", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x0061ae90", + "--stop-address=0x0061aefc", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 2004, + "sha256": "a54b81f12580162518f780250d7dfda03b8d2e464c4ace77997208047ba11243" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 36 + }, + { + "name": "string-assign", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x004249a0", + "--stop-address=0x00424add", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 6102, + "sha256": "2e7a53241db15a13b74b49c2d09cb70704d5daffae1ff023364aeb64afd47815" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 117 + }, + { + "name": "import-thunks", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00924faa", + "--stop-address=0x00924fbc", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 304, + "sha256": "ad439944e6487e4131ac43f4ce75e61c5a362848b39ca99ca027fcee3f6162d0" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 4 + }, + { + "name": "turn-get-create", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00885380", + "--stop-address=0x0088544e", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 4134, + "sha256": "9cb7d2ccfcc645b3b642e520ba51c85330c57d6d4395ed3fbd4a4a1950436e80" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 81 + }, + { + "name": "turn-append", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00884cb0", + "--stop-address=0x00884d93", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 4309, + "sha256": "957339f40b2af8947cb883cc1d3a9d1e151bf7663305415065472ef9171dc33d" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 82 + }, + { + "name": "turn-growth", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x008841a0", + "--stop-address=0x00884300", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 6804, + "sha256": "9b7674abc156a82c2db00f95dd6719bfb718644536a1228baadad284b3ed8461" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 136 + }, + { + "name": "nested-copy-authority", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00779850", + "--stop-address=0x00779930", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 4465, + "sha256": "973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 88 + }, + { + "name": "nested-dtor", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00629580", + "--stop-address=0x006295ce", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 1887, + "sha256": "0aba6fc800760e3a113c07238cfb6e721623eb0bb8a933a990d3e2e82823d00f" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 37 + }, + { + "name": "turn-virtual-dtor", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x0062e120", + "--stop-address=0x0062e170", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 1429, + "sha256": "319e74267a88f166e05306be5cb2a2d7ffdca3e75169f7e7e6e8d379f153220c" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 27 + }, + { + "name": "dedup", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00825d40", + "--stop-address=0x00825e67", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 6153, + "sha256": "cb10ca40246bc57fd5431ab099008727fe5be90c22bd7f57fad1cb30301f002c" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 121 + }, + { + "name": "string-not-equal", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x0046f8c0", + "--stop-address=0x0046f8f0", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 1352, + "sha256": "7d1efe697a4f1d0549dd25f15758e601ef94583389aecf4a59f99cf3d825bf69" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 27 + }, + { + "name": "prune", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00879eb0", + "--stop-address=0x00879fc0", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 6620, + "sha256": "8536d2a47f14f5b6e0f1796de33189471687a0a0d0c2414e98e1623cb8226d99" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 134 + }, + { + "name": "nested-copy-stop-9913", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00779850", + "--stop-address=0x00779913", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 3815, + "sha256": "715d47e9675909adf6c2c42acae622b3c43dc9ce45dc678ffe623466e44ae219" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 73 + }, + { + "name": "nested-copy-stop-9915", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00779850", + "--stop-address=0x00779915", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 3819, + "sha256": "d545b88701652f65511047c65917b308b6982c23c52d6fa14ae91174feedcc31" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 73 + }, + { + "name": "nested-copy-stop-a20", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00779850", + "--stop-address=0x00779a20", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 8469, + "sha256": "e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 169 + }, + { + "name": "nested-copy-stop-a21", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00779850", + "--stop-address=0x00779a21", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 8471, + "sha256": "b6d58767d00328c37139f439db480c9bb5ce6767dabf212f9e750a31fea0d3d7" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 169 + }, + { + "name": "nested-copy-stop-a23", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00779850", + "--stop-address=0x00779a23", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 8518, + "sha256": "e8cc66eb74730fcf7853d66df8caa620ddb3fc8c75335f0573ac490037a7a88e" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 170 + }, + { + "name": "nested-copy-stop-a28", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00779850", + "--stop-address=0x00779a28", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 8566, + "sha256": "7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 171 + } + ], + "direct_pe": { + "ret4": { + "va": "0x00779912", + "bytes": "c20400", + "section": ".text", + "file_offset": 3640594 + }, + "a20-family": { + "va": "0x00779a1f", + "bytes": "74108bcfe8286affff", + "section": ".text", + "file_offset": 3640863 + }, + "observed-stride": { + "va": "0x007b7333", + "bytes": "3bc777412bf8b8e9", + "section": ".text", + "file_offset": 3893043 + }, + "player-stride": { + "va": "0x0086c593", + "bytes": "57a1788baf0033c5", + "section": ".text", + "file_offset": 4635027 + }, + "turn-stride": { + "va": "0x00884cc3", + "bytes": "57a1788baf0033c5", + "section": ".text", + "file_offset": 4735171 + }, + "constructor-defaults": { + "va": "0x00af0dc8", + "bytes": "ffff7f7fffff7f7fffff7f7f", + "section": ".data", + "file_offset": 7271880 + } + }, + "checks": [ + { + "name": "all_commands_zero", + "status": "pass" + }, + { + "name": "all_stdout_nonempty", + "status": "pass" + }, + { + "name": "all_stderr_empty", + "status": "pass" + }, + { + "name": "source_stable", + "status": "pass" + }, + { + "name": "9913_is_truncated_terminal", + "status": "pass" + }, + { + "name": "9915_terminal_ret4", + "status": "pass" + }, + { + "name": "authority_contains_ret4", + "status": "pass" + }, + { + "name": "a20_is_truncated_terminal", + "status": "pass" + }, + { + "name": "a21_adds_complete_je", + "status": "pass" + }, + { + "name": "a23_adds_complete_mov", + "status": "pass" + }, + { + "name": "a28_adds_complete_call", + "status": "pass" + }, + { + "name": "direct_ret4", + "status": "pass" + }, + { + "name": "direct_a20_family", + "status": "pass" + }, + { + "name": "direct_defaults", + "status": "pass" + } + ], + "failed": [], + "static_branch_exposure": [ + "existing-match/miss", + "spare/full capacity", + "empty/nonempty nested copy", + "null/nonnull destruction", + "short/long string", + "normal/unwind", + "bad/aligned boundaries" + ], + "runtime_unexercised": [ + "all listed static branches", + "allocator safety", + "event construction and IDs", + "PostEvent caller defaults/write order", + "exception throw", + "RNG state/draws" + ], + "original_helpers": [ + "0x00924fb6 allocation thunk", + "0x00924faa deallocation thunk", + "0x0046f8c0 original string comparison when called" + ] +} diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-authority.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-authority.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-authority.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-authority.stdout.txt new file mode 100644 index 0000000..c9625b1 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-authority.stdout.txt @@ -0,0 +1,94 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00779850 <.text+0x378850>: + 779850: 55 push ebp + 779851: 8b ec mov ebp,esp + 779853: 6a ff push 0xffffffff + 779855: 68 10 7b 98 00 push 0x987b10 + 77985a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779860: 50 push eax + 779861: 83 ec 08 sub esp,0x8 + 779864: 53 push ebx + 779865: 56 push esi + 779866: 57 push edi + 779867: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 77986c: 33 c5 xor eax,ebp + 77986e: 50 push eax + 77986f: 8d 45 f4 lea eax,[ebp-0xc] + 779872: 64 a3 00 00 00 00 mov fs:0x0,eax + 779878: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 77987b: 8b f1 mov esi,ecx + 77987d: 89 75 ec mov DWORD PTR [ebp-0x14],esi + 779880: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 779883: 33 c0 xor eax,eax + 779885: 89 06 mov DWORD PTR [esi],eax + 779887: 89 46 04 mov DWORD PTR [esi+0x4],eax + 77988a: 89 46 08 mov DWORD PTR [esi+0x8],eax + 77988d: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 779890: 2b 0b sub ecx,DWORD PTR [ebx] + 779892: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 779897: f7 e9 imul ecx + 779899: 03 d1 add edx,ecx + 77989b: c1 fa 06 sar edx,0x6 + 77989e: 8b fa mov edi,edx + 7798a0: b8 00 00 00 00 mov eax,0x0 + 7798a5: c1 ef 1f shr edi,0x1f + 7798a8: 03 fa add edi,edx + 7798aa: 89 06 mov DWORD PTR [esi],eax + 7798ac: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798af: 89 46 08 mov DWORD PTR [esi+0x8],eax + 7798b2: 74 4b je 0x7798ff + 7798b4: 81 ff 2c f7 34 02 cmp edi,0x234f72c + 7798ba: 76 0b jbe 0x7798c7 + 7798bc: 68 90 1f 9e 00 push 0x9e1f90 + 7798c1: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 7798c7: 8d 4e 0c lea ecx,[esi+0xc] + 7798ca: 57 push edi + 7798cb: e8 70 16 01 00 call 0x78af40 + 7798d0: 6b ff 74 imul edi,edi,0x74 + 7798d3: 8b 55 08 mov edx,DWORD PTR [ebp+0x8] + 7798d6: 52 push edx + 7798d7: 8d 56 0c lea edx,[esi+0xc] + 7798da: 52 push edx + 7798db: 03 f8 add edi,eax + 7798dd: 89 06 mov DWORD PTR [esi],eax + 7798df: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798e2: 89 7e 08 mov DWORD PTR [esi+0x8],edi + 7798e5: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 7798e8: 8b 1b mov ebx,DWORD PTR [ebx] + 7798ea: 50 push eax + 7798eb: 51 push ecx + 7798ec: 53 push ebx + 7798ed: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7798f4: e8 a7 8c ff ff call 0x7725a0 + 7798f9: 83 c4 14 add esp,0x14 + 7798fc: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798ff: 8b c6 mov eax,esi + 779901: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 779904: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 77990b: 59 pop ecx + 77990c: 5f pop edi + 77990d: 5e pop esi + 77990e: 5b pop ebx + 77990f: 8b e5 mov esp,ebp + 779911: 5d pop ebp + 779912: c2 04 00 ret 0x4 + 779915: 8b 4d ec mov ecx,DWORD PTR [ebp-0x14] + 779918: e8 63 fc ea ff call 0x629580 + 77991d: 6a 00 push 0x0 + 77991f: 6a 00 push 0x0 + 779921: e8 96 b6 1a 00 call 0x924fbc + 779926: cc int3 + 779927: cc int3 + 779928: cc int3 + 779929: cc int3 + 77992a: cc int3 + 77992b: cc int3 + 77992c: cc int3 + 77992d: cc int3 + 77992e: cc int3 + 77992f: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-9913.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-9913.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-9913.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-9913.stdout.txt new file mode 100644 index 0000000..9ff5acb --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-9913.stdout.txt @@ -0,0 +1,79 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00779850 <.text+0x378850>: + 779850: 55 push ebp + 779851: 8b ec mov ebp,esp + 779853: 6a ff push 0xffffffff + 779855: 68 10 7b 98 00 push 0x987b10 + 77985a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779860: 50 push eax + 779861: 83 ec 08 sub esp,0x8 + 779864: 53 push ebx + 779865: 56 push esi + 779866: 57 push edi + 779867: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 77986c: 33 c5 xor eax,ebp + 77986e: 50 push eax + 77986f: 8d 45 f4 lea eax,[ebp-0xc] + 779872: 64 a3 00 00 00 00 mov fs:0x0,eax + 779878: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 77987b: 8b f1 mov esi,ecx + 77987d: 89 75 ec mov DWORD PTR [ebp-0x14],esi + 779880: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 779883: 33 c0 xor eax,eax + 779885: 89 06 mov DWORD PTR [esi],eax + 779887: 89 46 04 mov DWORD PTR [esi+0x4],eax + 77988a: 89 46 08 mov DWORD PTR [esi+0x8],eax + 77988d: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 779890: 2b 0b sub ecx,DWORD PTR [ebx] + 779892: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 779897: f7 e9 imul ecx + 779899: 03 d1 add edx,ecx + 77989b: c1 fa 06 sar edx,0x6 + 77989e: 8b fa mov edi,edx + 7798a0: b8 00 00 00 00 mov eax,0x0 + 7798a5: c1 ef 1f shr edi,0x1f + 7798a8: 03 fa add edi,edx + 7798aa: 89 06 mov DWORD PTR [esi],eax + 7798ac: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798af: 89 46 08 mov DWORD PTR [esi+0x8],eax + 7798b2: 74 4b je 0x7798ff + 7798b4: 81 ff 2c f7 34 02 cmp edi,0x234f72c + 7798ba: 76 0b jbe 0x7798c7 + 7798bc: 68 90 1f 9e 00 push 0x9e1f90 + 7798c1: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 7798c7: 8d 4e 0c lea ecx,[esi+0xc] + 7798ca: 57 push edi + 7798cb: e8 70 16 01 00 call 0x78af40 + 7798d0: 6b ff 74 imul edi,edi,0x74 + 7798d3: 8b 55 08 mov edx,DWORD PTR [ebp+0x8] + 7798d6: 52 push edx + 7798d7: 8d 56 0c lea edx,[esi+0xc] + 7798da: 52 push edx + 7798db: 03 f8 add edi,eax + 7798dd: 89 06 mov DWORD PTR [esi],eax + 7798df: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798e2: 89 7e 08 mov DWORD PTR [esi+0x8],edi + 7798e5: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 7798e8: 8b 1b mov ebx,DWORD PTR [ebx] + 7798ea: 50 push eax + 7798eb: 51 push ecx + 7798ec: 53 push ebx + 7798ed: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7798f4: e8 a7 8c ff ff call 0x7725a0 + 7798f9: 83 c4 14 add esp,0x14 + 7798fc: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798ff: 8b c6 mov eax,esi + 779901: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 779904: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 77990b: 59 pop ecx + 77990c: 5f pop edi + 77990d: 5e pop esi + 77990e: 5b pop ebx + 77990f: 8b e5 mov esp,ebp + 779911: 5d pop ebp + 779912: c2 ret 0x4 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-9915.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-9915.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-9915.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-9915.stdout.txt new file mode 100644 index 0000000..728eaf2 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-9915.stdout.txt @@ -0,0 +1,79 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00779850 <.text+0x378850>: + 779850: 55 push ebp + 779851: 8b ec mov ebp,esp + 779853: 6a ff push 0xffffffff + 779855: 68 10 7b 98 00 push 0x987b10 + 77985a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779860: 50 push eax + 779861: 83 ec 08 sub esp,0x8 + 779864: 53 push ebx + 779865: 56 push esi + 779866: 57 push edi + 779867: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 77986c: 33 c5 xor eax,ebp + 77986e: 50 push eax + 77986f: 8d 45 f4 lea eax,[ebp-0xc] + 779872: 64 a3 00 00 00 00 mov fs:0x0,eax + 779878: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 77987b: 8b f1 mov esi,ecx + 77987d: 89 75 ec mov DWORD PTR [ebp-0x14],esi + 779880: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 779883: 33 c0 xor eax,eax + 779885: 89 06 mov DWORD PTR [esi],eax + 779887: 89 46 04 mov DWORD PTR [esi+0x4],eax + 77988a: 89 46 08 mov DWORD PTR [esi+0x8],eax + 77988d: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 779890: 2b 0b sub ecx,DWORD PTR [ebx] + 779892: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 779897: f7 e9 imul ecx + 779899: 03 d1 add edx,ecx + 77989b: c1 fa 06 sar edx,0x6 + 77989e: 8b fa mov edi,edx + 7798a0: b8 00 00 00 00 mov eax,0x0 + 7798a5: c1 ef 1f shr edi,0x1f + 7798a8: 03 fa add edi,edx + 7798aa: 89 06 mov DWORD PTR [esi],eax + 7798ac: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798af: 89 46 08 mov DWORD PTR [esi+0x8],eax + 7798b2: 74 4b je 0x7798ff + 7798b4: 81 ff 2c f7 34 02 cmp edi,0x234f72c + 7798ba: 76 0b jbe 0x7798c7 + 7798bc: 68 90 1f 9e 00 push 0x9e1f90 + 7798c1: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 7798c7: 8d 4e 0c lea ecx,[esi+0xc] + 7798ca: 57 push edi + 7798cb: e8 70 16 01 00 call 0x78af40 + 7798d0: 6b ff 74 imul edi,edi,0x74 + 7798d3: 8b 55 08 mov edx,DWORD PTR [ebp+0x8] + 7798d6: 52 push edx + 7798d7: 8d 56 0c lea edx,[esi+0xc] + 7798da: 52 push edx + 7798db: 03 f8 add edi,eax + 7798dd: 89 06 mov DWORD PTR [esi],eax + 7798df: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798e2: 89 7e 08 mov DWORD PTR [esi+0x8],edi + 7798e5: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 7798e8: 8b 1b mov ebx,DWORD PTR [ebx] + 7798ea: 50 push eax + 7798eb: 51 push ecx + 7798ec: 53 push ebx + 7798ed: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7798f4: e8 a7 8c ff ff call 0x7725a0 + 7798f9: 83 c4 14 add esp,0x14 + 7798fc: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798ff: 8b c6 mov eax,esi + 779901: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 779904: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 77990b: 59 pop ecx + 77990c: 5f pop edi + 77990d: 5e pop esi + 77990e: 5b pop ebx + 77990f: 8b e5 mov esp,ebp + 779911: 5d pop ebp + 779912: c2 04 00 ret 0x4 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a20.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a20.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a20.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a20.stdout.txt new file mode 100644 index 0000000..0aec076 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a20.stdout.txt @@ -0,0 +1,175 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00779850 <.text+0x378850>: + 779850: 55 push ebp + 779851: 8b ec mov ebp,esp + 779853: 6a ff push 0xffffffff + 779855: 68 10 7b 98 00 push 0x987b10 + 77985a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779860: 50 push eax + 779861: 83 ec 08 sub esp,0x8 + 779864: 53 push ebx + 779865: 56 push esi + 779866: 57 push edi + 779867: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 77986c: 33 c5 xor eax,ebp + 77986e: 50 push eax + 77986f: 8d 45 f4 lea eax,[ebp-0xc] + 779872: 64 a3 00 00 00 00 mov fs:0x0,eax + 779878: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 77987b: 8b f1 mov esi,ecx + 77987d: 89 75 ec mov DWORD PTR [ebp-0x14],esi + 779880: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 779883: 33 c0 xor eax,eax + 779885: 89 06 mov DWORD PTR [esi],eax + 779887: 89 46 04 mov DWORD PTR [esi+0x4],eax + 77988a: 89 46 08 mov DWORD PTR [esi+0x8],eax + 77988d: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 779890: 2b 0b sub ecx,DWORD PTR [ebx] + 779892: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 779897: f7 e9 imul ecx + 779899: 03 d1 add edx,ecx + 77989b: c1 fa 06 sar edx,0x6 + 77989e: 8b fa mov edi,edx + 7798a0: b8 00 00 00 00 mov eax,0x0 + 7798a5: c1 ef 1f shr edi,0x1f + 7798a8: 03 fa add edi,edx + 7798aa: 89 06 mov DWORD PTR [esi],eax + 7798ac: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798af: 89 46 08 mov DWORD PTR [esi+0x8],eax + 7798b2: 74 4b je 0x7798ff + 7798b4: 81 ff 2c f7 34 02 cmp edi,0x234f72c + 7798ba: 76 0b jbe 0x7798c7 + 7798bc: 68 90 1f 9e 00 push 0x9e1f90 + 7798c1: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 7798c7: 8d 4e 0c lea ecx,[esi+0xc] + 7798ca: 57 push edi + 7798cb: e8 70 16 01 00 call 0x78af40 + 7798d0: 6b ff 74 imul edi,edi,0x74 + 7798d3: 8b 55 08 mov edx,DWORD PTR [ebp+0x8] + 7798d6: 52 push edx + 7798d7: 8d 56 0c lea edx,[esi+0xc] + 7798da: 52 push edx + 7798db: 03 f8 add edi,eax + 7798dd: 89 06 mov DWORD PTR [esi],eax + 7798df: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798e2: 89 7e 08 mov DWORD PTR [esi+0x8],edi + 7798e5: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 7798e8: 8b 1b mov ebx,DWORD PTR [ebx] + 7798ea: 50 push eax + 7798eb: 51 push ecx + 7798ec: 53 push ebx + 7798ed: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7798f4: e8 a7 8c ff ff call 0x7725a0 + 7798f9: 83 c4 14 add esp,0x14 + 7798fc: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798ff: 8b c6 mov eax,esi + 779901: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 779904: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 77990b: 59 pop ecx + 77990c: 5f pop edi + 77990d: 5e pop esi + 77990e: 5b pop ebx + 77990f: 8b e5 mov esp,ebp + 779911: 5d pop ebp + 779912: c2 04 00 ret 0x4 + 779915: 8b 4d ec mov ecx,DWORD PTR [ebp-0x14] + 779918: e8 63 fc ea ff call 0x629580 + 77991d: 6a 00 push 0x0 + 77991f: 6a 00 push 0x0 + 779921: e8 96 b6 1a 00 call 0x924fbc + 779926: cc int3 + 779927: cc int3 + 779928: cc int3 + 779929: cc int3 + 77992a: cc int3 + 77992b: cc int3 + 77992c: cc int3 + 77992d: cc int3 + 77992e: cc int3 + 77992f: cc int3 + 779930: 55 push ebp + 779931: 8b ec mov ebp,esp + 779933: 6a ff push 0xffffffff + 779935: 68 38 06 97 00 push 0x970638 + 77993a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779940: 50 push eax + 779941: 83 ec 20 sub esp,0x20 + 779944: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 779949: 33 c5 xor eax,ebp + 77994b: 89 45 f0 mov DWORD PTR [ebp-0x10],eax + 77994e: 56 push esi + 77994f: 50 push eax + 779950: 8d 45 f4 lea eax,[ebp-0xc] + 779953: 64 a3 00 00 00 00 mov fs:0x0,eax + 779959: 8b f1 mov esi,ecx + 77995b: 8b 86 8c 00 00 00 mov eax,DWORD PTR [esi+0x8c] + 779961: 85 c0 test eax,eax + 779963: 75 0c jne 0x779971 + 779965: 68 34 24 a2 00 push 0xa22434 + 77996a: e8 e1 05 14 00 call 0x8b9f50 + 77996f: eb 7e jmp 0x7799ef + 779971: 50 push eax + 779972: e8 09 cc c9 ff call 0x416580 + 779977: 83 c4 04 add esp,0x4 + 77997a: 85 c0 test eax,eax + 77997c: 74 0c je 0x77998a + 77997e: 68 f8 23 a2 00 push 0xa223f8 + 779983: e8 58 08 14 00 call 0x8ba1e0 + 779988: eb 65 jmp 0x7799ef + 77998a: e8 d1 58 dc ff call 0x53f260 + 77998f: c7 45 e8 0f 00 00 00 mov DWORD PTR [ebp-0x18],0xf + 779996: c7 45 e4 00 00 00 00 mov DWORD PTR [ebp-0x1c],0x0 + 77999d: c6 45 d4 00 mov BYTE PTR [ebp-0x2c],0x0 + 7799a1: 8d 4d d4 lea ecx,[ebp-0x2c] + 7799a4: 51 push ecx + 7799a5: 50 push eax + 7799a6: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7799ad: e8 fe 52 dc ff call 0x53ecb0 + 7799b2: 8b 45 d4 mov eax,DWORD PTR [ebp-0x2c] + 7799b5: 83 c4 08 add esp,0x8 + 7799b8: 83 7d e8 10 cmp DWORD PTR [ebp-0x18],0x10 + 7799bc: 73 03 jae 0x7799c1 + 7799be: 8d 45 d4 lea eax,[ebp-0x2c] + 7799c1: 8b 96 8c 00 00 00 mov edx,DWORD PTR [esi+0x8c] + 7799c7: 6a 00 push 0x0 + 7799c9: 56 push esi + 7799ca: 68 a0 8d 77 00 push 0x778da0 + 7799cf: 68 e0 ea 76 00 push 0x76eae0 + 7799d4: 6a 00 push 0x0 + 7799d6: 50 push eax + 7799d7: 52 push edx + 7799d8: e8 f3 d7 c9 ff call 0x4171d0 + 7799dd: 83 c4 1c add esp,0x1c + 7799e0: 83 7d e8 10 cmp DWORD PTR [ebp-0x18],0x10 + 7799e4: 72 0c jb 0x7799f2 + 7799e6: 8b 45 d4 mov eax,DWORD PTR [ebp-0x2c] + 7799e9: 50 push eax + 7799ea: e8 bb b5 1a 00 call 0x924faa + 7799ef: 83 c4 04 add esp,0x4 + 7799f2: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 7799f5: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 7799fc: 59 pop ecx + 7799fd: 5e pop esi + 7799fe: 8b 4d f0 mov ecx,DWORD PTR [ebp-0x10] + 779a01: 33 cd xor ecx,ebp + 779a03: e8 7a b3 1a 00 call 0x924d82 + 779a08: 8b e5 mov esp,ebp + 779a0a: 5d pop ebp + 779a0b: c3 ret + 779a0c: cc int3 + 779a0d: cc int3 + 779a0e: cc int3 + 779a0f: cc int3 + 779a10: 53 push ebx + 779a11: 56 push esi + 779a12: 8b f1 mov esi,ecx + 779a14: 57 push edi + 779a15: 8b be 24 01 00 00 mov edi,DWORD PTR [esi+0x124] + 779a1b: 33 db xor ebx,ebx + 779a1d: 3b fb cmp edi,ebx + 779a1f: 74 je 0x779a31 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a21.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a21.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a21.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a21.stdout.txt new file mode 100644 index 0000000..f692c82 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a21.stdout.txt @@ -0,0 +1,175 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00779850 <.text+0x378850>: + 779850: 55 push ebp + 779851: 8b ec mov ebp,esp + 779853: 6a ff push 0xffffffff + 779855: 68 10 7b 98 00 push 0x987b10 + 77985a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779860: 50 push eax + 779861: 83 ec 08 sub esp,0x8 + 779864: 53 push ebx + 779865: 56 push esi + 779866: 57 push edi + 779867: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 77986c: 33 c5 xor eax,ebp + 77986e: 50 push eax + 77986f: 8d 45 f4 lea eax,[ebp-0xc] + 779872: 64 a3 00 00 00 00 mov fs:0x0,eax + 779878: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 77987b: 8b f1 mov esi,ecx + 77987d: 89 75 ec mov DWORD PTR [ebp-0x14],esi + 779880: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 779883: 33 c0 xor eax,eax + 779885: 89 06 mov DWORD PTR [esi],eax + 779887: 89 46 04 mov DWORD PTR [esi+0x4],eax + 77988a: 89 46 08 mov DWORD PTR [esi+0x8],eax + 77988d: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 779890: 2b 0b sub ecx,DWORD PTR [ebx] + 779892: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 779897: f7 e9 imul ecx + 779899: 03 d1 add edx,ecx + 77989b: c1 fa 06 sar edx,0x6 + 77989e: 8b fa mov edi,edx + 7798a0: b8 00 00 00 00 mov eax,0x0 + 7798a5: c1 ef 1f shr edi,0x1f + 7798a8: 03 fa add edi,edx + 7798aa: 89 06 mov DWORD PTR [esi],eax + 7798ac: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798af: 89 46 08 mov DWORD PTR [esi+0x8],eax + 7798b2: 74 4b je 0x7798ff + 7798b4: 81 ff 2c f7 34 02 cmp edi,0x234f72c + 7798ba: 76 0b jbe 0x7798c7 + 7798bc: 68 90 1f 9e 00 push 0x9e1f90 + 7798c1: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 7798c7: 8d 4e 0c lea ecx,[esi+0xc] + 7798ca: 57 push edi + 7798cb: e8 70 16 01 00 call 0x78af40 + 7798d0: 6b ff 74 imul edi,edi,0x74 + 7798d3: 8b 55 08 mov edx,DWORD PTR [ebp+0x8] + 7798d6: 52 push edx + 7798d7: 8d 56 0c lea edx,[esi+0xc] + 7798da: 52 push edx + 7798db: 03 f8 add edi,eax + 7798dd: 89 06 mov DWORD PTR [esi],eax + 7798df: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798e2: 89 7e 08 mov DWORD PTR [esi+0x8],edi + 7798e5: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 7798e8: 8b 1b mov ebx,DWORD PTR [ebx] + 7798ea: 50 push eax + 7798eb: 51 push ecx + 7798ec: 53 push ebx + 7798ed: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7798f4: e8 a7 8c ff ff call 0x7725a0 + 7798f9: 83 c4 14 add esp,0x14 + 7798fc: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798ff: 8b c6 mov eax,esi + 779901: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 779904: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 77990b: 59 pop ecx + 77990c: 5f pop edi + 77990d: 5e pop esi + 77990e: 5b pop ebx + 77990f: 8b e5 mov esp,ebp + 779911: 5d pop ebp + 779912: c2 04 00 ret 0x4 + 779915: 8b 4d ec mov ecx,DWORD PTR [ebp-0x14] + 779918: e8 63 fc ea ff call 0x629580 + 77991d: 6a 00 push 0x0 + 77991f: 6a 00 push 0x0 + 779921: e8 96 b6 1a 00 call 0x924fbc + 779926: cc int3 + 779927: cc int3 + 779928: cc int3 + 779929: cc int3 + 77992a: cc int3 + 77992b: cc int3 + 77992c: cc int3 + 77992d: cc int3 + 77992e: cc int3 + 77992f: cc int3 + 779930: 55 push ebp + 779931: 8b ec mov ebp,esp + 779933: 6a ff push 0xffffffff + 779935: 68 38 06 97 00 push 0x970638 + 77993a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779940: 50 push eax + 779941: 83 ec 20 sub esp,0x20 + 779944: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 779949: 33 c5 xor eax,ebp + 77994b: 89 45 f0 mov DWORD PTR [ebp-0x10],eax + 77994e: 56 push esi + 77994f: 50 push eax + 779950: 8d 45 f4 lea eax,[ebp-0xc] + 779953: 64 a3 00 00 00 00 mov fs:0x0,eax + 779959: 8b f1 mov esi,ecx + 77995b: 8b 86 8c 00 00 00 mov eax,DWORD PTR [esi+0x8c] + 779961: 85 c0 test eax,eax + 779963: 75 0c jne 0x779971 + 779965: 68 34 24 a2 00 push 0xa22434 + 77996a: e8 e1 05 14 00 call 0x8b9f50 + 77996f: eb 7e jmp 0x7799ef + 779971: 50 push eax + 779972: e8 09 cc c9 ff call 0x416580 + 779977: 83 c4 04 add esp,0x4 + 77997a: 85 c0 test eax,eax + 77997c: 74 0c je 0x77998a + 77997e: 68 f8 23 a2 00 push 0xa223f8 + 779983: e8 58 08 14 00 call 0x8ba1e0 + 779988: eb 65 jmp 0x7799ef + 77998a: e8 d1 58 dc ff call 0x53f260 + 77998f: c7 45 e8 0f 00 00 00 mov DWORD PTR [ebp-0x18],0xf + 779996: c7 45 e4 00 00 00 00 mov DWORD PTR [ebp-0x1c],0x0 + 77999d: c6 45 d4 00 mov BYTE PTR [ebp-0x2c],0x0 + 7799a1: 8d 4d d4 lea ecx,[ebp-0x2c] + 7799a4: 51 push ecx + 7799a5: 50 push eax + 7799a6: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7799ad: e8 fe 52 dc ff call 0x53ecb0 + 7799b2: 8b 45 d4 mov eax,DWORD PTR [ebp-0x2c] + 7799b5: 83 c4 08 add esp,0x8 + 7799b8: 83 7d e8 10 cmp DWORD PTR [ebp-0x18],0x10 + 7799bc: 73 03 jae 0x7799c1 + 7799be: 8d 45 d4 lea eax,[ebp-0x2c] + 7799c1: 8b 96 8c 00 00 00 mov edx,DWORD PTR [esi+0x8c] + 7799c7: 6a 00 push 0x0 + 7799c9: 56 push esi + 7799ca: 68 a0 8d 77 00 push 0x778da0 + 7799cf: 68 e0 ea 76 00 push 0x76eae0 + 7799d4: 6a 00 push 0x0 + 7799d6: 50 push eax + 7799d7: 52 push edx + 7799d8: e8 f3 d7 c9 ff call 0x4171d0 + 7799dd: 83 c4 1c add esp,0x1c + 7799e0: 83 7d e8 10 cmp DWORD PTR [ebp-0x18],0x10 + 7799e4: 72 0c jb 0x7799f2 + 7799e6: 8b 45 d4 mov eax,DWORD PTR [ebp-0x2c] + 7799e9: 50 push eax + 7799ea: e8 bb b5 1a 00 call 0x924faa + 7799ef: 83 c4 04 add esp,0x4 + 7799f2: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 7799f5: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 7799fc: 59 pop ecx + 7799fd: 5e pop esi + 7799fe: 8b 4d f0 mov ecx,DWORD PTR [ebp-0x10] + 779a01: 33 cd xor ecx,ebp + 779a03: e8 7a b3 1a 00 call 0x924d82 + 779a08: 8b e5 mov esp,ebp + 779a0a: 5d pop ebp + 779a0b: c3 ret + 779a0c: cc int3 + 779a0d: cc int3 + 779a0e: cc int3 + 779a0f: cc int3 + 779a10: 53 push ebx + 779a11: 56 push esi + 779a12: 8b f1 mov esi,ecx + 779a14: 57 push edi + 779a15: 8b be 24 01 00 00 mov edi,DWORD PTR [esi+0x124] + 779a1b: 33 db xor ebx,ebx + 779a1d: 3b fb cmp edi,ebx + 779a1f: 74 10 je 0x779a31 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a23.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a23.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a23.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a23.stdout.txt new file mode 100644 index 0000000..1b7cafd --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a23.stdout.txt @@ -0,0 +1,176 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00779850 <.text+0x378850>: + 779850: 55 push ebp + 779851: 8b ec mov ebp,esp + 779853: 6a ff push 0xffffffff + 779855: 68 10 7b 98 00 push 0x987b10 + 77985a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779860: 50 push eax + 779861: 83 ec 08 sub esp,0x8 + 779864: 53 push ebx + 779865: 56 push esi + 779866: 57 push edi + 779867: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 77986c: 33 c5 xor eax,ebp + 77986e: 50 push eax + 77986f: 8d 45 f4 lea eax,[ebp-0xc] + 779872: 64 a3 00 00 00 00 mov fs:0x0,eax + 779878: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 77987b: 8b f1 mov esi,ecx + 77987d: 89 75 ec mov DWORD PTR [ebp-0x14],esi + 779880: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 779883: 33 c0 xor eax,eax + 779885: 89 06 mov DWORD PTR [esi],eax + 779887: 89 46 04 mov DWORD PTR [esi+0x4],eax + 77988a: 89 46 08 mov DWORD PTR [esi+0x8],eax + 77988d: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 779890: 2b 0b sub ecx,DWORD PTR [ebx] + 779892: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 779897: f7 e9 imul ecx + 779899: 03 d1 add edx,ecx + 77989b: c1 fa 06 sar edx,0x6 + 77989e: 8b fa mov edi,edx + 7798a0: b8 00 00 00 00 mov eax,0x0 + 7798a5: c1 ef 1f shr edi,0x1f + 7798a8: 03 fa add edi,edx + 7798aa: 89 06 mov DWORD PTR [esi],eax + 7798ac: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798af: 89 46 08 mov DWORD PTR [esi+0x8],eax + 7798b2: 74 4b je 0x7798ff + 7798b4: 81 ff 2c f7 34 02 cmp edi,0x234f72c + 7798ba: 76 0b jbe 0x7798c7 + 7798bc: 68 90 1f 9e 00 push 0x9e1f90 + 7798c1: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 7798c7: 8d 4e 0c lea ecx,[esi+0xc] + 7798ca: 57 push edi + 7798cb: e8 70 16 01 00 call 0x78af40 + 7798d0: 6b ff 74 imul edi,edi,0x74 + 7798d3: 8b 55 08 mov edx,DWORD PTR [ebp+0x8] + 7798d6: 52 push edx + 7798d7: 8d 56 0c lea edx,[esi+0xc] + 7798da: 52 push edx + 7798db: 03 f8 add edi,eax + 7798dd: 89 06 mov DWORD PTR [esi],eax + 7798df: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798e2: 89 7e 08 mov DWORD PTR [esi+0x8],edi + 7798e5: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 7798e8: 8b 1b mov ebx,DWORD PTR [ebx] + 7798ea: 50 push eax + 7798eb: 51 push ecx + 7798ec: 53 push ebx + 7798ed: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7798f4: e8 a7 8c ff ff call 0x7725a0 + 7798f9: 83 c4 14 add esp,0x14 + 7798fc: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798ff: 8b c6 mov eax,esi + 779901: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 779904: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 77990b: 59 pop ecx + 77990c: 5f pop edi + 77990d: 5e pop esi + 77990e: 5b pop ebx + 77990f: 8b e5 mov esp,ebp + 779911: 5d pop ebp + 779912: c2 04 00 ret 0x4 + 779915: 8b 4d ec mov ecx,DWORD PTR [ebp-0x14] + 779918: e8 63 fc ea ff call 0x629580 + 77991d: 6a 00 push 0x0 + 77991f: 6a 00 push 0x0 + 779921: e8 96 b6 1a 00 call 0x924fbc + 779926: cc int3 + 779927: cc int3 + 779928: cc int3 + 779929: cc int3 + 77992a: cc int3 + 77992b: cc int3 + 77992c: cc int3 + 77992d: cc int3 + 77992e: cc int3 + 77992f: cc int3 + 779930: 55 push ebp + 779931: 8b ec mov ebp,esp + 779933: 6a ff push 0xffffffff + 779935: 68 38 06 97 00 push 0x970638 + 77993a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779940: 50 push eax + 779941: 83 ec 20 sub esp,0x20 + 779944: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 779949: 33 c5 xor eax,ebp + 77994b: 89 45 f0 mov DWORD PTR [ebp-0x10],eax + 77994e: 56 push esi + 77994f: 50 push eax + 779950: 8d 45 f4 lea eax,[ebp-0xc] + 779953: 64 a3 00 00 00 00 mov fs:0x0,eax + 779959: 8b f1 mov esi,ecx + 77995b: 8b 86 8c 00 00 00 mov eax,DWORD PTR [esi+0x8c] + 779961: 85 c0 test eax,eax + 779963: 75 0c jne 0x779971 + 779965: 68 34 24 a2 00 push 0xa22434 + 77996a: e8 e1 05 14 00 call 0x8b9f50 + 77996f: eb 7e jmp 0x7799ef + 779971: 50 push eax + 779972: e8 09 cc c9 ff call 0x416580 + 779977: 83 c4 04 add esp,0x4 + 77997a: 85 c0 test eax,eax + 77997c: 74 0c je 0x77998a + 77997e: 68 f8 23 a2 00 push 0xa223f8 + 779983: e8 58 08 14 00 call 0x8ba1e0 + 779988: eb 65 jmp 0x7799ef + 77998a: e8 d1 58 dc ff call 0x53f260 + 77998f: c7 45 e8 0f 00 00 00 mov DWORD PTR [ebp-0x18],0xf + 779996: c7 45 e4 00 00 00 00 mov DWORD PTR [ebp-0x1c],0x0 + 77999d: c6 45 d4 00 mov BYTE PTR [ebp-0x2c],0x0 + 7799a1: 8d 4d d4 lea ecx,[ebp-0x2c] + 7799a4: 51 push ecx + 7799a5: 50 push eax + 7799a6: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7799ad: e8 fe 52 dc ff call 0x53ecb0 + 7799b2: 8b 45 d4 mov eax,DWORD PTR [ebp-0x2c] + 7799b5: 83 c4 08 add esp,0x8 + 7799b8: 83 7d e8 10 cmp DWORD PTR [ebp-0x18],0x10 + 7799bc: 73 03 jae 0x7799c1 + 7799be: 8d 45 d4 lea eax,[ebp-0x2c] + 7799c1: 8b 96 8c 00 00 00 mov edx,DWORD PTR [esi+0x8c] + 7799c7: 6a 00 push 0x0 + 7799c9: 56 push esi + 7799ca: 68 a0 8d 77 00 push 0x778da0 + 7799cf: 68 e0 ea 76 00 push 0x76eae0 + 7799d4: 6a 00 push 0x0 + 7799d6: 50 push eax + 7799d7: 52 push edx + 7799d8: e8 f3 d7 c9 ff call 0x4171d0 + 7799dd: 83 c4 1c add esp,0x1c + 7799e0: 83 7d e8 10 cmp DWORD PTR [ebp-0x18],0x10 + 7799e4: 72 0c jb 0x7799f2 + 7799e6: 8b 45 d4 mov eax,DWORD PTR [ebp-0x2c] + 7799e9: 50 push eax + 7799ea: e8 bb b5 1a 00 call 0x924faa + 7799ef: 83 c4 04 add esp,0x4 + 7799f2: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 7799f5: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 7799fc: 59 pop ecx + 7799fd: 5e pop esi + 7799fe: 8b 4d f0 mov ecx,DWORD PTR [ebp-0x10] + 779a01: 33 cd xor ecx,ebp + 779a03: e8 7a b3 1a 00 call 0x924d82 + 779a08: 8b e5 mov esp,ebp + 779a0a: 5d pop ebp + 779a0b: c3 ret + 779a0c: cc int3 + 779a0d: cc int3 + 779a0e: cc int3 + 779a0f: cc int3 + 779a10: 53 push ebx + 779a11: 56 push esi + 779a12: 8b f1 mov esi,ecx + 779a14: 57 push edi + 779a15: 8b be 24 01 00 00 mov edi,DWORD PTR [esi+0x124] + 779a1b: 33 db xor ebx,ebx + 779a1d: 3b fb cmp edi,ebx + 779a1f: 74 10 je 0x779a31 + 779a21: 8b cf mov ecx,edi diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a28.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a28.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a28.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a28.stdout.txt new file mode 100644 index 0000000..5506abc --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-copy-stop-a28.stdout.txt @@ -0,0 +1,177 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00779850 <.text+0x378850>: + 779850: 55 push ebp + 779851: 8b ec mov ebp,esp + 779853: 6a ff push 0xffffffff + 779855: 68 10 7b 98 00 push 0x987b10 + 77985a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779860: 50 push eax + 779861: 83 ec 08 sub esp,0x8 + 779864: 53 push ebx + 779865: 56 push esi + 779866: 57 push edi + 779867: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 77986c: 33 c5 xor eax,ebp + 77986e: 50 push eax + 77986f: 8d 45 f4 lea eax,[ebp-0xc] + 779872: 64 a3 00 00 00 00 mov fs:0x0,eax + 779878: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 77987b: 8b f1 mov esi,ecx + 77987d: 89 75 ec mov DWORD PTR [ebp-0x14],esi + 779880: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 779883: 33 c0 xor eax,eax + 779885: 89 06 mov DWORD PTR [esi],eax + 779887: 89 46 04 mov DWORD PTR [esi+0x4],eax + 77988a: 89 46 08 mov DWORD PTR [esi+0x8],eax + 77988d: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 779890: 2b 0b sub ecx,DWORD PTR [ebx] + 779892: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 779897: f7 e9 imul ecx + 779899: 03 d1 add edx,ecx + 77989b: c1 fa 06 sar edx,0x6 + 77989e: 8b fa mov edi,edx + 7798a0: b8 00 00 00 00 mov eax,0x0 + 7798a5: c1 ef 1f shr edi,0x1f + 7798a8: 03 fa add edi,edx + 7798aa: 89 06 mov DWORD PTR [esi],eax + 7798ac: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798af: 89 46 08 mov DWORD PTR [esi+0x8],eax + 7798b2: 74 4b je 0x7798ff + 7798b4: 81 ff 2c f7 34 02 cmp edi,0x234f72c + 7798ba: 76 0b jbe 0x7798c7 + 7798bc: 68 90 1f 9e 00 push 0x9e1f90 + 7798c1: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 7798c7: 8d 4e 0c lea ecx,[esi+0xc] + 7798ca: 57 push edi + 7798cb: e8 70 16 01 00 call 0x78af40 + 7798d0: 6b ff 74 imul edi,edi,0x74 + 7798d3: 8b 55 08 mov edx,DWORD PTR [ebp+0x8] + 7798d6: 52 push edx + 7798d7: 8d 56 0c lea edx,[esi+0xc] + 7798da: 52 push edx + 7798db: 03 f8 add edi,eax + 7798dd: 89 06 mov DWORD PTR [esi],eax + 7798df: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798e2: 89 7e 08 mov DWORD PTR [esi+0x8],edi + 7798e5: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 7798e8: 8b 1b mov ebx,DWORD PTR [ebx] + 7798ea: 50 push eax + 7798eb: 51 push ecx + 7798ec: 53 push ebx + 7798ed: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7798f4: e8 a7 8c ff ff call 0x7725a0 + 7798f9: 83 c4 14 add esp,0x14 + 7798fc: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798ff: 8b c6 mov eax,esi + 779901: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 779904: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 77990b: 59 pop ecx + 77990c: 5f pop edi + 77990d: 5e pop esi + 77990e: 5b pop ebx + 77990f: 8b e5 mov esp,ebp + 779911: 5d pop ebp + 779912: c2 04 00 ret 0x4 + 779915: 8b 4d ec mov ecx,DWORD PTR [ebp-0x14] + 779918: e8 63 fc ea ff call 0x629580 + 77991d: 6a 00 push 0x0 + 77991f: 6a 00 push 0x0 + 779921: e8 96 b6 1a 00 call 0x924fbc + 779926: cc int3 + 779927: cc int3 + 779928: cc int3 + 779929: cc int3 + 77992a: cc int3 + 77992b: cc int3 + 77992c: cc int3 + 77992d: cc int3 + 77992e: cc int3 + 77992f: cc int3 + 779930: 55 push ebp + 779931: 8b ec mov ebp,esp + 779933: 6a ff push 0xffffffff + 779935: 68 38 06 97 00 push 0x970638 + 77993a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779940: 50 push eax + 779941: 83 ec 20 sub esp,0x20 + 779944: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 779949: 33 c5 xor eax,ebp + 77994b: 89 45 f0 mov DWORD PTR [ebp-0x10],eax + 77994e: 56 push esi + 77994f: 50 push eax + 779950: 8d 45 f4 lea eax,[ebp-0xc] + 779953: 64 a3 00 00 00 00 mov fs:0x0,eax + 779959: 8b f1 mov esi,ecx + 77995b: 8b 86 8c 00 00 00 mov eax,DWORD PTR [esi+0x8c] + 779961: 85 c0 test eax,eax + 779963: 75 0c jne 0x779971 + 779965: 68 34 24 a2 00 push 0xa22434 + 77996a: e8 e1 05 14 00 call 0x8b9f50 + 77996f: eb 7e jmp 0x7799ef + 779971: 50 push eax + 779972: e8 09 cc c9 ff call 0x416580 + 779977: 83 c4 04 add esp,0x4 + 77997a: 85 c0 test eax,eax + 77997c: 74 0c je 0x77998a + 77997e: 68 f8 23 a2 00 push 0xa223f8 + 779983: e8 58 08 14 00 call 0x8ba1e0 + 779988: eb 65 jmp 0x7799ef + 77998a: e8 d1 58 dc ff call 0x53f260 + 77998f: c7 45 e8 0f 00 00 00 mov DWORD PTR [ebp-0x18],0xf + 779996: c7 45 e4 00 00 00 00 mov DWORD PTR [ebp-0x1c],0x0 + 77999d: c6 45 d4 00 mov BYTE PTR [ebp-0x2c],0x0 + 7799a1: 8d 4d d4 lea ecx,[ebp-0x2c] + 7799a4: 51 push ecx + 7799a5: 50 push eax + 7799a6: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7799ad: e8 fe 52 dc ff call 0x53ecb0 + 7799b2: 8b 45 d4 mov eax,DWORD PTR [ebp-0x2c] + 7799b5: 83 c4 08 add esp,0x8 + 7799b8: 83 7d e8 10 cmp DWORD PTR [ebp-0x18],0x10 + 7799bc: 73 03 jae 0x7799c1 + 7799be: 8d 45 d4 lea eax,[ebp-0x2c] + 7799c1: 8b 96 8c 00 00 00 mov edx,DWORD PTR [esi+0x8c] + 7799c7: 6a 00 push 0x0 + 7799c9: 56 push esi + 7799ca: 68 a0 8d 77 00 push 0x778da0 + 7799cf: 68 e0 ea 76 00 push 0x76eae0 + 7799d4: 6a 00 push 0x0 + 7799d6: 50 push eax + 7799d7: 52 push edx + 7799d8: e8 f3 d7 c9 ff call 0x4171d0 + 7799dd: 83 c4 1c add esp,0x1c + 7799e0: 83 7d e8 10 cmp DWORD PTR [ebp-0x18],0x10 + 7799e4: 72 0c jb 0x7799f2 + 7799e6: 8b 45 d4 mov eax,DWORD PTR [ebp-0x2c] + 7799e9: 50 push eax + 7799ea: e8 bb b5 1a 00 call 0x924faa + 7799ef: 83 c4 04 add esp,0x4 + 7799f2: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 7799f5: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 7799fc: 59 pop ecx + 7799fd: 5e pop esi + 7799fe: 8b 4d f0 mov ecx,DWORD PTR [ebp-0x10] + 779a01: 33 cd xor ecx,ebp + 779a03: e8 7a b3 1a 00 call 0x924d82 + 779a08: 8b e5 mov esp,ebp + 779a0a: 5d pop ebp + 779a0b: c3 ret + 779a0c: cc int3 + 779a0d: cc int3 + 779a0e: cc int3 + 779a0f: cc int3 + 779a10: 53 push ebx + 779a11: 56 push esi + 779a12: 8b f1 mov esi,ecx + 779a14: 57 push edi + 779a15: 8b be 24 01 00 00 mov edi,DWORD PTR [esi+0x124] + 779a1b: 33 db xor ebx,ebx + 779a1d: 3b fb cmp edi,ebx + 779a1f: 74 10 je 0x779a31 + 779a21: 8b cf mov ecx,edi + 779a23: e8 28 6a ff ff call 0x770450 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-dtor.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-dtor.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-dtor.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-dtor.stdout.txt new file mode 100644 index 0000000..74115e5 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/nested-dtor.stdout.txt @@ -0,0 +1,43 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00629580 <.text+0x228580>: + 629580: 57 push edi + 629581: 8b f9 mov edi,ecx + 629583: 83 3f 00 cmp DWORD PTR [edi],0x0 + 629586: 74 36 je 0x6295be + 629588: 53 push ebx + 629589: 56 push esi + 62958a: ff 15 2c d1 9d 00 call DWORD PTR ds:0x9dd12c + 629590: 8b 5f 04 mov ebx,DWORD PTR [edi+0x4] + 629593: 8b 37 mov esi,DWORD PTR [edi] + 629595: 3b f3 cmp esi,ebx + 629597: 74 18 je 0x6295b1 + 629599: 8d a4 24 00 00 00 00 lea esp,[esp+0x0] + 6295a0: 8b 06 mov eax,DWORD PTR [esi] + 6295a2: 8b 10 mov edx,DWORD PTR [eax] + 6295a4: 6a 00 push 0x0 + 6295a6: 8b ce mov ecx,esi + 6295a8: ff d2 call edx + 6295aa: 83 c6 74 add esi,0x74 + 6295ad: 3b f3 cmp esi,ebx + 6295af: 75 ef jne 0x6295a0 + 6295b1: 8b 07 mov eax,DWORD PTR [edi] + 6295b3: 50 push eax + 6295b4: e8 f1 b9 2f 00 call 0x924faa + 6295b9: 83 c4 04 add esp,0x4 + 6295bc: 5e pop esi + 6295bd: 5b pop ebx + 6295be: 33 c0 xor eax,eax + 6295c0: 89 07 mov DWORD PTR [edi],eax + 6295c2: 89 47 04 mov DWORD PTR [edi+0x4],eax + 6295c5: 89 47 08 mov DWORD PTR [edi+0x8],eax + 6295c8: 5f pop edi + 6295c9: c3 ret + 6295ca: cc int3 + 6295cb: cc int3 + 6295cc: cc int3 + 6295cd: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-alloc.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-alloc.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-alloc.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-alloc.stdout.txt new file mode 100644 index 0000000..b6b02d9 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-alloc.stdout.txt @@ -0,0 +1,36 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +0057e590 <.text+0x17d590>: + 57e590: 55 push ebp + 57e591: 8b ec mov ebp,esp + 57e593: 8b 4d 08 mov ecx,DWORD PTR [ebp+0x8] + 57e596: 83 ec 0c sub esp,0xc + 57e599: 33 c0 xor eax,eax + 57e59b: 85 c9 test ecx,ecx + 57e59d: 74 41 je 0x57e5e0 + 57e59f: 81 f9 5d 74 d1 05 cmp ecx,0x5d1745d + 57e5a5: 77 10 ja 0x57e5b7 + 57e5a7: 6b c9 2c imul ecx,ecx,0x2c + 57e5aa: 51 push ecx + 57e5ab: e8 06 6a 3a 00 call 0x924fb6 + 57e5b0: 83 c4 04 add esp,0x4 + 57e5b3: 85 c0 test eax,eax + 57e5b5: 75 29 jne 0x57e5e0 + 57e5b7: 8d 45 08 lea eax,[ebp+0x8] + 57e5ba: 50 push eax + 57e5bb: 8d 4d f4 lea ecx,[ebp-0xc] + 57e5be: c7 45 08 00 00 00 00 mov DWORD PTR [ebp+0x8],0x0 + 57e5c5: ff 15 bc d1 9d 00 call DWORD PTR ds:0x9dd1bc + 57e5cb: 68 90 d1 a8 00 push 0xa8d190 + 57e5d0: 8d 4d f4 lea ecx,[ebp-0xc] + 57e5d3: 51 push ecx + 57e5d4: c7 45 f4 00 1f 9e 00 mov DWORD PTR [ebp-0xc],0x9e1f00 + 57e5db: e8 dc 69 3a 00 call 0x924fbc + 57e5e0: 8b e5 mov esp,ebp + 57e5e2: 5d pop ebp + 57e5e3: c2 04 00 ret 0x4 + 57e5e6: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-append.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-append.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-append.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-append.stdout.txt new file mode 100644 index 0000000..e8f5036 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-append.stdout.txt @@ -0,0 +1,63 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +007b7320 <.text+0x3b6320>: + 7b7320: 55 push ebp + 7b7321: 8b ec mov ebp,esp + 7b7323: 56 push esi + 7b7324: 8b f1 mov esi,ecx + 7b7326: 8b 4e 04 mov ecx,DWORD PTR [esi+0x4] + 7b7329: 57 push edi + 7b732a: 8b 7d 08 mov edi,DWORD PTR [ebp+0x8] + 7b732d: 3b f9 cmp edi,ecx + 7b732f: 73 47 jae 0x7b7378 + 7b7331: 8b 06 mov eax,DWORD PTR [esi] + 7b7333: 3b c7 cmp eax,edi + 7b7335: 77 41 ja 0x7b7378 + 7b7337: 2b f8 sub edi,eax + 7b7339: b8 e9 a2 8b 2e mov eax,0x2e8ba2e9 + 7b733e: f7 ef imul edi + 7b7340: c1 fa 03 sar edx,0x3 + 7b7343: 8b fa mov edi,edx + 7b7345: c1 ef 1f shr edi,0x1f + 7b7348: 03 fa add edi,edx + 7b734a: 3b 4e 08 cmp ecx,DWORD PTR [esi+0x8] + 7b734d: 75 09 jne 0x7b7358 + 7b734f: 6a 01 push 0x1 + 7b7351: 8b ce mov ecx,esi + 7b7353: e8 c8 e4 ff ff call 0x7b5820 + 7b7358: 8b 46 04 mov eax,DWORD PTR [esi+0x4] + 7b735b: 6b ff 2c imul edi,edi,0x2c + 7b735e: 03 3e add edi,DWORD PTR [esi] + 7b7360: 8d 4e 0c lea ecx,[esi+0xc] + 7b7363: 57 push edi + 7b7364: 50 push eax + 7b7365: 51 push ecx + 7b7366: e8 e5 2d fe ff call 0x79a150 + 7b736b: 83 c4 0c add esp,0xc + 7b736e: 83 46 04 2c add DWORD PTR [esi+0x4],0x2c + 7b7372: 5f pop edi + 7b7373: 5e pop esi + 7b7374: 5d pop ebp + 7b7375: c2 04 00 ret 0x4 + 7b7378: 3b 4e 08 cmp ecx,DWORD PTR [esi+0x8] + 7b737b: 75 09 jne 0x7b7386 + 7b737d: 6a 01 push 0x1 + 7b737f: 8b ce mov ecx,esi + 7b7381: e8 9a e4 ff ff call 0x7b5820 + 7b7386: 8b 56 04 mov edx,DWORD PTR [esi+0x4] + 7b7389: 57 push edi + 7b738a: 52 push edx + 7b738b: 8d 46 0c lea eax,[esi+0xc] + 7b738e: 50 push eax + 7b738f: e8 bc 2d fe ff call 0x79a150 + 7b7394: 83 c4 0c add esp,0xc + 7b7397: 83 46 04 2c add DWORD PTR [esi+0x4],0x2c + 7b739b: 5f pop edi + 7b739c: 5e pop esi + 7b739d: 5d pop ebp + 7b739e: c2 04 00 ret 0x4 + 7b73a1: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-copy.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-copy.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-copy.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-copy.stdout.txt new file mode 100644 index 0000000..9775b64 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-copy.stdout.txt @@ -0,0 +1,58 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +0079a150 <.text+0x399150>: + 79a150: 55 push ebp + 79a151: 8b ec mov ebp,esp + 79a153: 6a ff push 0xffffffff + 79a155: 68 39 9f 98 00 push 0x989f39 + 79a15a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 79a160: 50 push eax + 79a161: 51 push ecx + 79a162: 56 push esi + 79a163: 57 push edi + 79a164: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 79a169: 33 c5 xor eax,ebp + 79a16b: 50 push eax + 79a16c: 8d 45 f4 lea eax,[ebp-0xc] + 79a16f: 64 a3 00 00 00 00 mov fs:0x0,eax + 79a175: 8b 75 0c mov esi,DWORD PTR [ebp+0xc] + 79a178: 89 75 f0 mov DWORD PTR [ebp-0x10],esi + 79a17b: 33 c0 xor eax,eax + 79a17d: 89 45 fc mov DWORD PTR [ebp-0x4],eax + 79a180: 3b f0 cmp esi,eax + 79a182: 74 44 je 0x79a1c8 + 79a184: 8b 7d 10 mov edi,DWORD PTR [ebp+0x10] + 79a187: c7 06 9c 43 a2 00 mov DWORD PTR [esi],0xa2439c + 79a18d: 66 8b 4f 04 mov cx,WORD PTR [edi+0x4] + 79a191: 66 89 4e 04 mov WORD PTR [esi+0x4],cx + 79a195: 66 8b 57 06 mov dx,WORD PTR [edi+0x6] + 79a199: 66 89 56 06 mov WORD PTR [esi+0x6],dx + 79a19d: 8a 4f 08 mov cl,BYTE PTR [edi+0x8] + 79a1a0: 88 4e 08 mov BYTE PTR [esi+0x8],cl + 79a1a3: 6a ff push 0xffffffff + 79a1a5: 8d 4e 0c lea ecx,[esi+0xc] + 79a1a8: 50 push eax + 79a1a9: 8d 57 0c lea edx,[edi+0xc] + 79a1ac: c7 41 14 0f 00 00 00 mov DWORD PTR [ecx+0x14],0xf + 79a1b3: 89 41 10 mov DWORD PTR [ecx+0x10],eax + 79a1b6: 52 push edx + 79a1b7: c6 45 fc 01 mov BYTE PTR [ebp-0x4],0x1 + 79a1bb: 88 01 mov BYTE PTR [ecx],al + 79a1bd: e8 6e b2 c8 ff call 0x425430 + 79a1c2: 8b 47 28 mov eax,DWORD PTR [edi+0x28] + 79a1c5: 89 46 28 mov DWORD PTR [esi+0x28],eax + 79a1c8: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 79a1cb: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 79a1d2: 59 pop ecx + 79a1d3: 5f pop edi + 79a1d4: 5e pop esi + 79a1d5: 8b e5 mov esp,ebp + 79a1d7: 5d pop ebp + 79a1d8: c3 ret + 79a1d9: cc int3 + 79a1da: cc int3 + 79a1db: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-ctor.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-ctor.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-ctor.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-ctor.stdout.txt new file mode 100644 index 0000000..bc09741 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-ctor.stdout.txt @@ -0,0 +1,49 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +008562a0 <.text+0x4552a0>: + 8562a0: 55 push ebp + 8562a1: 8b ec mov ebp,esp + 8562a3: 6a ff push 0xffffffff + 8562a5: 68 48 6c 99 00 push 0x996c48 + 8562aa: 64 a1 00 00 00 00 mov eax,fs:0x0 + 8562b0: 50 push eax + 8562b1: 51 push ecx + 8562b2: 53 push ebx + 8562b3: 56 push esi + 8562b4: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 8562b9: 33 c5 xor eax,ebp + 8562bb: 50 push eax + 8562bc: 8d 45 f4 lea eax,[ebp-0xc] + 8562bf: 64 a3 00 00 00 00 mov fs:0x0,eax + 8562c5: 8b f1 mov esi,ecx + 8562c7: 89 75 f0 mov DWORD PTR [ebp-0x10],esi + 8562ca: 33 db xor ebx,ebx + 8562cc: 8d 4e 0c lea ecx,[esi+0xc] + 8562cf: c7 06 9c 43 a2 00 mov DWORD PTR [esi],0xa2439c + 8562d5: 53 push ebx + 8562d6: c7 41 14 0f 00 00 00 mov DWORD PTR [ecx+0x14],0xf + 8562dd: 89 59 10 mov DWORD PTR [ecx+0x10],ebx + 8562e0: 68 0c 10 9e 00 push 0x9e100c + 8562e5: 89 5d fc mov DWORD PTR [ebp-0x4],ebx + 8562e8: 88 19 mov BYTE PTR [ecx],bl + 8562ea: e8 61 f2 bc ff call 0x425550 + 8562ef: 33 c0 xor eax,eax + 8562f1: 89 46 04 mov DWORD PTR [esi+0x4],eax + 8562f4: 88 5e 08 mov BYTE PTR [esi+0x8],bl + 8562f7: 89 5e 28 mov DWORD PTR [esi+0x28],ebx + 8562fa: 8b c6 mov eax,esi + 8562fc: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 8562ff: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 856306: 59 pop ecx + 856307: 5e pop esi + 856308: 5b pop ebx + 856309: 8b e5 mov esp,ebp + 85630b: 5d pop ebp + 85630c: c3 ret + 85630d: cc int3 + 85630e: cc int3 + 85630f: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-growth.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-growth.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-growth.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-growth.stdout.txt new file mode 100644 index 0000000..fa78b53 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/observed-growth.stdout.txt @@ -0,0 +1,107 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +007b34e0 <.text+0x3b24e0>: + 7b34e0: 55 push ebp + 7b34e1: 8b ec mov ebp,esp + 7b34e3: 6a ff push 0xffffffff + 7b34e5: 68 00 c3 98 00 push 0x98c300 + 7b34ea: 64 a1 00 00 00 00 mov eax,fs:0x0 + 7b34f0: 50 push eax + 7b34f1: 83 ec 0c sub esp,0xc + 7b34f4: 53 push ebx + 7b34f5: 56 push esi + 7b34f6: 57 push edi + 7b34f7: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 7b34fc: 33 c5 xor eax,ebp + 7b34fe: 50 push eax + 7b34ff: 8d 45 f4 lea eax,[ebp-0xc] + 7b3502: 64 a3 00 00 00 00 mov fs:0x0,eax + 7b3508: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 7b350b: 8b f1 mov esi,ecx + 7b350d: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 7b3510: 81 fb 5d 74 d1 05 cmp ebx,0x5d1745d + 7b3516: 76 0b jbe 0x7b3523 + 7b3518: 68 90 1f 9e 00 push 0x9e1f90 + 7b351d: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 7b3523: 8b 4e 08 mov ecx,DWORD PTR [esi+0x8] + 7b3526: 2b 0e sub ecx,DWORD PTR [esi] + 7b3528: b8 e9 a2 8b 2e mov eax,0x2e8ba2e9 + 7b352d: f7 e9 imul ecx + 7b352f: c1 fa 03 sar edx,0x3 + 7b3532: 8b c2 mov eax,edx + 7b3534: c1 e8 1f shr eax,0x1f + 7b3537: 03 c2 add eax,edx + 7b3539: 3b c3 cmp eax,ebx + 7b353b: 0f 83 9c 00 00 00 jae 0x7b35dd + 7b3541: 8d 7e 0c lea edi,[esi+0xc] + 7b3544: 53 push ebx + 7b3545: 8b cf mov ecx,edi + 7b3547: e8 44 b0 dc ff call 0x57e590 + 7b354c: 8b 4e 04 mov ecx,DWORD PTR [esi+0x4] + 7b354f: 8b 16 mov edx,DWORD PTR [esi] + 7b3551: 89 45 ec mov DWORD PTR [ebp-0x14],eax + 7b3554: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 7b3557: 50 push eax + 7b3558: 8b 45 ec mov eax,DWORD PTR [ebp-0x14] + 7b355b: 6a 00 push 0x0 + 7b355d: 57 push edi + 7b355e: 50 push eax + 7b355f: 51 push ecx + 7b3560: 52 push edx + 7b3561: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7b3568: e8 e3 b0 0a 00 call 0x85e650 + 7b356d: 8b 56 04 mov edx,DWORD PTR [esi+0x4] + 7b3570: 8b 0e mov ecx,DWORD PTR [esi] + 7b3572: 89 55 e8 mov DWORD PTR [ebp-0x18],edx + 7b3575: 2b d1 sub edx,ecx + 7b3577: b8 e9 a2 8b 2e mov eax,0x2e8ba2e9 + 7b357c: f7 ea imul edx + 7b357e: c1 fa 03 sar edx,0x3 + 7b3581: 8b fa mov edi,edx + 7b3583: c1 ef 1f shr edi,0x1f + 7b3586: 83 c4 18 add esp,0x18 + 7b3589: 03 fa add edi,edx + 7b358b: c7 45 fc ff ff ff ff mov DWORD PTR [ebp-0x4],0xffffffff + 7b3592: 85 c9 test ecx,ecx + 7b3594: 74 2a je 0x7b35c0 + 7b3596: 8b d9 mov ebx,ecx + 7b3598: 3b 5d e8 cmp ebx,DWORD PTR [ebp-0x18] + 7b359b: 74 15 je 0x7b35b2 + 7b359d: 8d 49 00 lea ecx,[ecx+0x0] + 7b35a0: 8b 13 mov edx,DWORD PTR [ebx] + 7b35a2: 8b 02 mov eax,DWORD PTR [edx] + 7b35a4: 6a 00 push 0x0 + 7b35a6: 8b cb mov ecx,ebx + 7b35a8: ff d0 call eax + 7b35aa: 83 c3 2c add ebx,0x2c + 7b35ad: 3b 5d e8 cmp ebx,DWORD PTR [ebp-0x18] + 7b35b0: 75 ee jne 0x7b35a0 + 7b35b2: 8b 0e mov ecx,DWORD PTR [esi] + 7b35b4: 51 push ecx + 7b35b5: e8 f0 19 17 00 call 0x924faa + 7b35ba: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 7b35bd: 83 c4 04 add esp,0x4 + 7b35c0: 8b ce mov ecx,esi + 7b35c2: ff 15 2c d1 9d 00 call DWORD PTR ds:0x9dd12c + 7b35c8: 6b db 2c imul ebx,ebx,0x2c + 7b35cb: 6b ff 2c imul edi,edi,0x2c + 7b35ce: 8b 45 ec mov eax,DWORD PTR [ebp-0x14] + 7b35d1: 03 d8 add ebx,eax + 7b35d3: 03 f8 add edi,eax + 7b35d5: 89 5e 08 mov DWORD PTR [esi+0x8],ebx + 7b35d8: 89 7e 04 mov DWORD PTR [esi+0x4],edi + 7b35db: 89 06 mov DWORD PTR [esi],eax + 7b35dd: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 7b35e0: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 7b35e7: 59 pop ecx + 7b35e8: 5f pop edi + 7b35e9: 5e pop esi + 7b35ea: 5b pop ebx + 7b35eb: 8b e5 mov esp,ebp + 7b35ed: 5d pop ebp + 7b35ee: c2 04 00 ret 0x4 + 7b35f1: 8b mov edx,DWORD PTR [ebp-0x14] diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-append.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-append.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-append.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-append.stdout.txt new file mode 100644 index 0000000..ff480cc --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-append.stdout.txt @@ -0,0 +1,72 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +0086c580 <.text+0x46b580>: + 86c580: 55 push ebp + 86c581: 8b ec mov ebp,esp + 86c583: 6a ff push 0xffffffff + 86c585: 68 82 81 96 00 push 0x968182 + 86c58a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 86c590: 50 push eax + 86c591: 51 push ecx + 86c592: 56 push esi + 86c593: 57 push edi + 86c594: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 86c599: 33 c5 xor eax,ebp + 86c59b: 50 push eax + 86c59c: 8d 45 f4 lea eax,[ebp-0xc] + 86c59f: 64 a3 00 00 00 00 mov fs:0x0,eax + 86c5a5: 8b f9 mov edi,ecx + 86c5a7: 8b 4f 04 mov ecx,DWORD PTR [edi+0x4] + 86c5aa: 8b 75 08 mov esi,DWORD PTR [ebp+0x8] + 86c5ad: 3b f1 cmp esi,ecx + 86c5af: 73 40 jae 0x86c5f1 + 86c5b1: 8b 07 mov eax,DWORD PTR [edi] + 86c5b3: 3b c6 cmp eax,esi + 86c5b5: 77 3a ja 0x86c5f1 + 86c5b7: 2b f0 sub esi,eax + 86c5b9: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 86c5be: f7 ee imul esi + 86c5c0: 03 d6 add edx,esi + 86c5c2: c1 fa 06 sar edx,0x6 + 86c5c5: 8b f2 mov esi,edx + 86c5c7: c1 ee 1f shr esi,0x1f + 86c5ca: 03 f2 add esi,edx + 86c5cc: 3b 4f 08 cmp ecx,DWORD PTR [edi+0x8] + 86c5cf: 75 09 jne 0x86c5da + 86c5d1: 6a 01 push 0x1 + 86c5d3: 8b cf mov ecx,edi + 86c5d5: e8 26 cf ff ff call 0x869500 + 86c5da: 8b 4f 04 mov ecx,DWORD PTR [edi+0x4] + 86c5dd: 6b f6 74 imul esi,esi,0x74 + 86c5e0: 03 37 add esi,DWORD PTR [edi] + 86c5e2: 89 4d 08 mov DWORD PTR [ebp+0x8],ecx + 86c5e5: 89 4d f0 mov DWORD PTR [ebp-0x10],ecx + 86c5e8: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 86c5ef: eb 1e jmp 0x86c60f + 86c5f1: 3b 4f 08 cmp ecx,DWORD PTR [edi+0x8] + 86c5f4: 75 09 jne 0x86c5ff + 86c5f6: 6a 01 push 0x1 + 86c5f8: 8b cf mov ecx,edi + 86c5fa: e8 01 cf ff ff call 0x869500 + 86c5ff: 8b 4f 04 mov ecx,DWORD PTR [edi+0x4] + 86c602: 89 4d 08 mov DWORD PTR [ebp+0x8],ecx + 86c605: 89 4d f0 mov DWORD PTR [ebp-0x10],ecx + 86c608: c7 45 fc 01 00 00 00 mov DWORD PTR [ebp-0x4],0x1 + 86c60f: 85 c9 test ecx,ecx + 86c611: 74 06 je 0x86c619 + 86c613: 56 push esi + 86c614: e8 d7 cd ef ff call 0x7693f0 + 86c619: 83 47 04 74 add DWORD PTR [edi+0x4],0x74 + 86c61d: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 86c620: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 86c627: 59 pop ecx + 86c628: 5f pop edi + 86c629: 5e pop esi + 86c62a: 8b e5 mov esp,ebp + 86c62c: 5d pop ebp + 86c62d: c2 04 00 ret 0x4 + 86c630: 55 push ebp diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-copy.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-copy.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-copy.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-copy.stdout.txt new file mode 100644 index 0000000..2b39721 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-copy.stdout.txt @@ -0,0 +1,82 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +007693f0 <.text+0x3683f0>: + 7693f0: 55 push ebp + 7693f1: 8b ec mov ebp,esp + 7693f3: 6a ff push 0xffffffff + 7693f5: 68 de 62 98 00 push 0x9862de + 7693fa: 64 a1 00 00 00 00 mov eax,fs:0x0 + 769400: 50 push eax + 769401: 51 push ecx + 769402: 53 push ebx + 769403: 56 push esi + 769404: 57 push edi + 769405: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 76940a: 33 c5 xor eax,ebp + 76940c: 50 push eax + 76940d: 8d 45 f4 lea eax,[ebp-0xc] + 769410: 64 a3 00 00 00 00 mov fs:0x0,eax + 769416: 8b f1 mov esi,ecx + 769418: 89 75 f0 mov DWORD PTR [ebp-0x10],esi + 76941b: 8b 7d 08 mov edi,DWORD PTR [ebp+0x8] + 76941e: c7 06 58 19 a2 00 mov DWORD PTR [esi],0xa21958 + 769424: 8b 47 04 mov eax,DWORD PTR [edi+0x4] + 769427: 33 db xor ebx,ebx + 769429: 6a ff push 0xffffffff + 76942b: 8d 4e 08 lea ecx,[esi+0x8] + 76942e: 89 46 04 mov DWORD PTR [esi+0x4],eax + 769431: 53 push ebx + 769432: 8d 57 08 lea edx,[edi+0x8] + 769435: c7 41 14 0f 00 00 00 mov DWORD PTR [ecx+0x14],0xf + 76943c: 89 59 10 mov DWORD PTR [ecx+0x10],ebx + 76943f: 52 push edx + 769440: 89 5d fc mov DWORD PTR [ebp-0x4],ebx + 769443: 88 19 mov BYTE PTR [ecx],bl + 769445: e8 e6 bf cb ff call 0x425430 + 76944a: 6a ff push 0xffffffff + 76944c: 8d 4e 24 lea ecx,[esi+0x24] + 76944f: 53 push ebx + 769450: 8d 47 24 lea eax,[edi+0x24] + 769453: c7 41 14 0f 00 00 00 mov DWORD PTR [ecx+0x14],0xf + 76945a: 89 59 10 mov DWORD PTR [ecx+0x10],ebx + 76945d: 50 push eax + 76945e: c6 45 fc 01 mov BYTE PTR [ebp-0x4],0x1 + 769462: 88 19 mov BYTE PTR [ecx],bl + 769464: e8 c7 bf cb ff call 0x425430 + 769469: 8b 4f 40 mov ecx,DWORD PTR [edi+0x40] + 76946c: 89 4e 40 mov DWORD PTR [esi+0x40],ecx + 76946f: 8b 57 44 mov edx,DWORD PTR [edi+0x44] + 769472: 89 56 44 mov DWORD PTR [esi+0x44],edx + 769475: 8b 47 48 mov eax,DWORD PTR [edi+0x48] + 769478: 89 46 48 mov DWORD PTR [esi+0x48],eax + 76947b: 8b 4f 4c mov ecx,DWORD PTR [edi+0x4c] + 76947e: 89 4e 4c mov DWORD PTR [esi+0x4c],ecx + 769481: 6a ff push 0xffffffff + 769483: 8d 4e 50 lea ecx,[esi+0x50] + 769486: 53 push ebx + 769487: 8d 57 50 lea edx,[edi+0x50] + 76948a: c7 41 14 0f 00 00 00 mov DWORD PTR [ecx+0x14],0xf + 769491: 89 59 10 mov DWORD PTR [ecx+0x10],ebx + 769494: 52 push edx + 769495: c6 45 fc 02 mov BYTE PTR [ebp-0x4],0x2 + 769499: 88 19 mov BYTE PTR [ecx],bl + 76949b: e8 90 bf cb ff call 0x425430 + 7694a0: 8b 47 6c mov eax,DWORD PTR [edi+0x6c] + 7694a3: 89 46 6c mov DWORD PTR [esi+0x6c],eax + 7694a6: 8b 4f 70 mov ecx,DWORD PTR [edi+0x70] + 7694a9: 89 4e 70 mov DWORD PTR [esi+0x70],ecx + 7694ac: 8b c6 mov eax,esi + 7694ae: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 7694b1: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 7694b8: 59 pop ecx + 7694b9: 5f pop edi + 7694ba: 5e pop esi + 7694bb: 5b pop ebx + 7694bc: 8b e5 mov esp,ebp + 7694be: 5d pop ebp + 7694bf: c2 04 00 ret 0x4 + 7694c2: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-ctor.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-ctor.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-ctor.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-ctor.stdout.txt new file mode 100644 index 0000000..eedafe4 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-ctor.stdout.txt @@ -0,0 +1,68 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +0084ee30 <.text+0x44de30>: + 84ee30: 55 push ebp + 84ee31: 8b ec mov ebp,esp + 84ee33: 6a ff push 0xffffffff + 84ee35: 68 3e 61 99 00 push 0x99613e + 84ee3a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 84ee40: 50 push eax + 84ee41: 51 push ecx + 84ee42: 53 push ebx + 84ee43: 56 push esi + 84ee44: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 84ee49: 33 c5 xor eax,ebp + 84ee4b: 50 push eax + 84ee4c: 8d 45 f4 lea eax,[ebp-0xc] + 84ee4f: 64 a3 00 00 00 00 mov fs:0x0,eax + 84ee55: 8b f1 mov esi,ecx + 84ee57: 89 75 f0 mov DWORD PTR [ebp-0x10],esi + 84ee5a: 33 db xor ebx,ebx + 84ee5c: 8d 4e 08 lea ecx,[esi+0x8] + 84ee5f: c7 06 58 19 a2 00 mov DWORD PTR [esi],0xa21958 + 84ee65: 53 push ebx + 84ee66: c7 41 14 0f 00 00 00 mov DWORD PTR [ecx+0x14],0xf + 84ee6d: 89 59 10 mov DWORD PTR [ecx+0x10],ebx + 84ee70: 68 0c 10 9e 00 push 0x9e100c + 84ee75: 89 5d fc mov DWORD PTR [ebp-0x4],ebx + 84ee78: 88 19 mov BYTE PTR [ecx],bl + 84ee7a: e8 d1 66 bd ff call 0x425550 + 84ee7f: 8d 4e 24 lea ecx,[esi+0x24] + 84ee82: 53 push ebx + 84ee83: c7 41 14 0f 00 00 00 mov DWORD PTR [ecx+0x14],0xf + 84ee8a: 89 59 10 mov DWORD PTR [ecx+0x10],ebx + 84ee8d: 68 0c 10 9e 00 push 0x9e100c + 84ee92: c6 45 fc 01 mov BYTE PTR [ebp-0x4],0x1 + 84ee96: 88 19 mov BYTE PTR [ecx],bl + 84ee98: e8 b3 66 bd ff call 0x425550 + 84ee9d: 8d 4e 50 lea ecx,[esi+0x50] + 84eea0: 53 push ebx + 84eea1: c7 41 14 0f 00 00 00 mov DWORD PTR [ecx+0x14],0xf + 84eea8: 89 59 10 mov DWORD PTR [ecx+0x10],ebx + 84eeab: 68 0c 10 9e 00 push 0x9e100c + 84eeb0: c6 45 fc 02 mov BYTE PTR [ebp-0x4],0x2 + 84eeb4: 88 19 mov BYTE PTR [ecx],bl + 84eeb6: e8 95 66 bd ff call 0x425550 + 84eebb: 89 5e 04 mov DWORD PTR [esi+0x4],ebx + 84eebe: 89 5e 40 mov DWORD PTR [esi+0x40],ebx + 84eec1: a1 c8 0d af 00 mov eax,ds:0xaf0dc8 + 84eec6: 89 46 44 mov DWORD PTR [esi+0x44],eax + 84eec9: 8b 0d cc 0d af 00 mov ecx,DWORD PTR ds:0xaf0dcc + 84eecf: 89 4e 48 mov DWORD PTR [esi+0x48],ecx + 84eed2: 8b 15 d0 0d af 00 mov edx,DWORD PTR ds:0xaf0dd0 + 84eed8: 89 56 4c mov DWORD PTR [esi+0x4c],edx + 84eedb: 89 5e 6c mov DWORD PTR [esi+0x6c],ebx + 84eede: 89 5e 70 mov DWORD PTR [esi+0x70],ebx + 84eee1: 8b c6 mov eax,esi + 84eee3: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 84eee6: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 84eeed: 59 pop ecx + 84eeee: 5e pop esi + 84eeef: 5b pop ebx + 84eef0: 8b e5 mov esp,ebp + 84eef2: 5d pop ebp + 84eef3: c3 ret diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-dtor.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-dtor.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-dtor.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-dtor.stdout.txt new file mode 100644 index 0000000..a12e344 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-dtor.stdout.txt @@ -0,0 +1,42 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +0061ae90 <.text+0x219e90>: + 61ae90: 53 push ebx + 61ae91: 56 push esi + 61ae92: 8b f1 mov esi,ecx + 61ae94: 83 7e 64 10 cmp DWORD PTR [esi+0x64],0x10 + 61ae98: 72 0c jb 0x61aea6 + 61ae9a: 8b 46 50 mov eax,DWORD PTR [esi+0x50] + 61ae9d: 50 push eax + 61ae9e: e8 07 a1 30 00 call 0x924faa + 61aea3: 83 c4 04 add esp,0x4 + 61aea6: 33 db xor ebx,ebx + 61aea8: c7 46 64 0f 00 00 00 mov DWORD PTR [esi+0x64],0xf + 61aeaf: 89 5e 60 mov DWORD PTR [esi+0x60],ebx + 61aeb2: 88 5e 50 mov BYTE PTR [esi+0x50],bl + 61aeb5: 83 7e 38 10 cmp DWORD PTR [esi+0x38],0x10 + 61aeb9: 72 0c jb 0x61aec7 + 61aebb: 8b 4e 24 mov ecx,DWORD PTR [esi+0x24] + 61aebe: 51 push ecx + 61aebf: e8 e6 a0 30 00 call 0x924faa + 61aec4: 83 c4 04 add esp,0x4 + 61aec7: c7 46 38 0f 00 00 00 mov DWORD PTR [esi+0x38],0xf + 61aece: 89 5e 34 mov DWORD PTR [esi+0x34],ebx + 61aed1: 88 5e 24 mov BYTE PTR [esi+0x24],bl + 61aed4: 83 7e 1c 10 cmp DWORD PTR [esi+0x1c],0x10 + 61aed8: 72 0c jb 0x61aee6 + 61aeda: 8b 56 08 mov edx,DWORD PTR [esi+0x8] + 61aedd: 52 push edx + 61aede: e8 c7 a0 30 00 call 0x924faa + 61aee3: 83 c4 04 add esp,0x4 + 61aee6: 89 5e 18 mov DWORD PTR [esi+0x18],ebx + 61aee9: c7 46 1c 0f 00 00 00 mov DWORD PTR [esi+0x1c],0xf + 61aef0: 88 5e 08 mov BYTE PTR [esi+0x8],bl + 61aef3: c7 06 bc 22 9e 00 mov DWORD PTR [esi],0x9e22bc + 61aef9: 5e pop esi + 61aefa: 5b pop ebx + 61aefb: c3 ret diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-growth.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-growth.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-growth.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-growth.stdout.txt new file mode 100644 index 0000000..98e1875 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/player-growth.stdout.txt @@ -0,0 +1,127 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00869500 <.text+0x468500>: + 869500: 55 push ebp + 869501: 8b ec mov ebp,esp + 869503: 53 push ebx + 869504: 8b 19 mov ebx,DWORD PTR [ecx] + 869506: 56 push esi + 869507: 8b 71 04 mov esi,DWORD PTR [ecx+0x4] + 86950a: 2b f3 sub esi,ebx + 86950c: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 869511: f7 ee imul esi + 869513: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 869516: 03 d6 add edx,esi + 869518: c1 fa 06 sar edx,0x6 + 86951b: 8b f2 mov esi,edx + 86951d: c1 ee 1f shr esi,0x1f + 869520: 03 f2 add esi,edx + 869522: ba 2c f7 34 02 mov edx,0x234f72c + 869527: 2b d0 sub edx,eax + 869529: 57 push edi + 86952a: 3b d6 cmp edx,esi + 86952c: 73 0b jae 0x869539 + 86952e: 68 90 1f 9e 00 push 0x9e1f90 + 869533: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 869539: 8b 79 08 mov edi,DWORD PTR [ecx+0x8] + 86953c: 03 f0 add esi,eax + 86953e: 2b fb sub edi,ebx + 869540: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 869545: f7 ef imul edi + 869547: 03 d7 add edx,edi + 869549: c1 fa 06 sar edx,0x6 + 86954c: 8b c2 mov eax,edx + 86954e: c1 e8 1f shr eax,0x1f + 869551: 03 c2 add eax,edx + 869553: 3b f0 cmp esi,eax + 869555: 76 21 jbe 0x869578 + 869557: 8b d0 mov edx,eax + 869559: d1 ea shr edx,1 + 86955b: bf 2c f7 34 02 mov edi,0x234f72c + 869560: 2b fa sub edi,edx + 869562: 3b f8 cmp edi,eax + 869564: 73 04 jae 0x86956a + 869566: 33 c0 xor eax,eax + 869568: eb 02 jmp 0x86956c + 86956a: 03 c2 add eax,edx + 86956c: 3b c6 cmp eax,esi + 86956e: 73 02 jae 0x869572 + 869570: 8b c6 mov eax,esi + 869572: 50 push eax + 869573: e8 68 c9 ff ff call 0x865ee0 + 869578: 5f pop edi + 869579: 5e pop esi + 86957a: 5b pop ebx + 86957b: 5d pop ebp + 86957c: c2 04 00 ret 0x4 + 86957f: cc int3 + 869580: 55 push ebp + 869581: 8b ec mov ebp,esp + 869583: 8b 41 04 mov eax,DWORD PTR [ecx+0x4] + 869586: 8b 55 08 mov edx,DWORD PTR [ebp+0x8] + 869589: 56 push esi + 86958a: 8b 31 mov esi,DWORD PTR [ecx] + 86958c: 57 push edi + 86958d: 2b c6 sub eax,esi + 86958f: bf ff ff ff 07 mov edi,0x7ffffff + 869594: c1 f8 05 sar eax,0x5 + 869597: 2b fa sub edi,edx + 869599: 3b f8 cmp edi,eax + 86959b: 73 0b jae 0x8695a8 + 86959d: 68 90 1f 9e 00 push 0x9e1f90 + 8695a2: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 8695a8: 03 c2 add eax,edx + 8695aa: 8b 51 08 mov edx,DWORD PTR [ecx+0x8] + 8695ad: 2b d6 sub edx,esi + 8695af: c1 fa 05 sar edx,0x5 + 8695b2: 3b c2 cmp eax,edx + 8695b4: 76 21 jbe 0x8695d7 + 8695b6: 8b f2 mov esi,edx + 8695b8: d1 ee shr esi,1 + 8695ba: bf ff ff ff 07 mov edi,0x7ffffff + 8695bf: 2b fe sub edi,esi + 8695c1: 3b fa cmp edi,edx + 8695c3: 73 04 jae 0x8695c9 + 8695c5: 33 d2 xor edx,edx + 8695c7: eb 02 jmp 0x8695cb + 8695c9: 03 d6 add edx,esi + 8695cb: 3b d0 cmp edx,eax + 8695cd: 73 02 jae 0x8695d1 + 8695cf: 8b d0 mov edx,eax + 8695d1: 52 push edx + 8695d2: e8 39 f9 ff ff call 0x868f10 + 8695d7: 5f pop edi + 8695d8: 5e pop esi + 8695d9: 5d pop ebp + 8695da: c2 04 00 ret 0x4 + 8695dd: cc int3 + 8695de: cc int3 + 8695df: cc int3 + 8695e0: 55 push ebp + 8695e1: 8b ec mov ebp,esp + 8695e3: 8b 51 04 mov edx,DWORD PTR [ecx+0x4] + 8695e6: 56 push esi + 8695e7: 57 push edi + 8695e8: 8b 39 mov edi,DWORD PTR [ecx] + 8695ea: 2b d7 sub edx,edi + 8695ec: b8 67 66 66 66 mov eax,0x66666667 + 8695f1: f7 ea imul edx + 8695f3: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 8695f6: c1 fa 04 sar edx,0x4 + 8695f9: 8b f2 mov esi,edx + 8695fb: c1 ee 1f shr esi,0x1f + 8695fe: 03 f2 add esi,edx + 869600: ba 66 66 66 06 mov edx,0x6666666 + 869605: 2b d0 sub edx,eax + 869607: 3b d6 cmp edx,esi + 869609: 73 0b jae 0x869616 + 86960b: 68 90 1f 9e 00 push 0x9e1f90 + 869610: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 869616: 8b 51 08 mov edx,DWORD PTR [ecx+0x8] + 869619: 03 f0 add esi,eax + 86961b: 2b d7 sub edx,edi + 86961d: b8 67 66 mov eax,0x66666667 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/prune.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/prune.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/prune.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/prune.stdout.txt new file mode 100644 index 0000000..384e68e --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/prune.stdout.txt @@ -0,0 +1,140 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00879eb0 <.text+0x478eb0>: + 879eb0: 55 push ebp + 879eb1: 8b ec mov ebp,esp + 879eb3: 51 push ecx + 879eb4: 53 push ebx + 879eb5: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 879eb8: 8b d1 mov edx,ecx + 879eba: 8b 4a 08 mov ecx,DWORD PTR [edx+0x8] + 879ebd: 56 push esi + 879ebe: 8b 72 04 mov esi,DWORD PTR [edx+0x4] + 879ec1: 8b c6 mov eax,esi + 879ec3: 83 c3 ce add ebx,0xffffffce + 879ec6: 57 push edi + 879ec7: 89 55 fc mov DWORD PTR [ebp-0x4],edx + 879eca: 8b f9 mov edi,ecx + 879ecc: 3b c1 cmp eax,ecx + 879ece: 74 0e je 0x879ede + 879ed0: 39 58 04 cmp DWORD PTR [eax+0x4],ebx + 879ed3: 7d 09 jge 0x879ede + 879ed5: 8b f8 mov edi,eax + 879ed7: 83 c0 18 add eax,0x18 + 879eda: 3b c1 cmp eax,ecx + 879edc: 75 f2 jne 0x879ed0 + 879ede: 3b f9 cmp edi,ecx + 879ee0: 74 56 je 0x879f38 + 879ee2: 3b f7 cmp esi,edi + 879ee4: 74 52 je 0x879f38 + 879ee6: 8b d9 mov ebx,ecx + 879ee8: 3b fb cmp edi,ebx + 879eea: 74 2c je 0x879f18 + 879eec: 8b c7 mov eax,edi + 879eee: 2b c6 sub eax,esi + 879ef0: 89 45 08 mov DWORD PTR [ebp+0x8],eax + 879ef3: eb 03 jmp 0x879ef8 + 879ef5: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 879ef8: 8b 44 30 04 mov eax,DWORD PTR [eax+esi*1+0x4] + 879efc: 8d 4f 08 lea ecx,[edi+0x8] + 879eff: 51 push ecx + 879f00: 8d 4e 08 lea ecx,[esi+0x8] + 879f03: 89 46 04 mov DWORD PTR [esi+0x4],eax + 879f06: e8 a5 07 f0 ff call 0x77a6b0 + 879f0b: 83 c7 18 add edi,0x18 + 879f0e: 83 c6 18 add esi,0x18 + 879f11: 3b fb cmp edi,ebx + 879f13: 75 e0 jne 0x879ef5 + 879f15: 8b 55 fc mov edx,DWORD PTR [ebp-0x4] + 879f18: 8b 5a 08 mov ebx,DWORD PTR [edx+0x8] + 879f1b: 8b fe mov edi,esi + 879f1d: 3b f3 cmp esi,ebx + 879f1f: 74 14 je 0x879f35 + 879f21: 8b 17 mov edx,DWORD PTR [edi] + 879f23: 8b 02 mov eax,DWORD PTR [edx] + 879f25: 6a 00 push 0x0 + 879f27: 8b cf mov ecx,edi + 879f29: ff d0 call eax + 879f2b: 83 c7 18 add edi,0x18 + 879f2e: 3b fb cmp edi,ebx + 879f30: 75 ef jne 0x879f21 + 879f32: 8b 55 fc mov edx,DWORD PTR [ebp-0x4] + 879f35: 89 72 08 mov DWORD PTR [edx+0x8],esi + 879f38: 5f pop edi + 879f39: 5e pop esi + 879f3a: 5b pop ebx + 879f3b: 8b e5 mov esp,ebp + 879f3d: 5d pop ebp + 879f3e: c2 04 00 ret 0x4 + 879f41: cc int3 + 879f42: cc int3 + 879f43: cc int3 + 879f44: cc int3 + 879f45: cc int3 + 879f46: cc int3 + 879f47: cc int3 + 879f48: cc int3 + 879f49: cc int3 + 879f4a: cc int3 + 879f4b: cc int3 + 879f4c: cc int3 + 879f4d: cc int3 + 879f4e: cc int3 + 879f4f: cc int3 + 879f50: 55 push ebp + 879f51: 8b ec mov ebp,esp + 879f53: 56 push esi + 879f54: 8b f1 mov esi,ecx + 879f56: e8 a5 ae ff ff call 0x874e00 + 879f5b: f6 45 08 01 test BYTE PTR [ebp+0x8],0x1 + 879f5f: 74 09 je 0x879f6a + 879f61: 56 push esi + 879f62: e8 43 b0 0a 00 call 0x924faa + 879f67: 83 c4 04 add esp,0x4 + 879f6a: 8b c6 mov eax,esi + 879f6c: 5e pop esi + 879f6d: 5d pop ebp + 879f6e: c2 04 00 ret 0x4 + 879f71: cc int3 + 879f72: cc int3 + 879f73: cc int3 + 879f74: cc int3 + 879f75: cc int3 + 879f76: cc int3 + 879f77: cc int3 + 879f78: cc int3 + 879f79: cc int3 + 879f7a: cc int3 + 879f7b: cc int3 + 879f7c: cc int3 + 879f7d: cc int3 + 879f7e: cc int3 + 879f7f: cc int3 + 879f80: 55 push ebp + 879f81: 8b ec mov ebp,esp + 879f83: 8b 55 18 mov edx,DWORD PTR [ebp+0x18] + 879f86: 8a 45 08 mov al,BYTE PTR [ebp+0x8] + 879f89: 53 push ebx + 879f8a: 56 push esi + 879f8b: 8b f1 mov esi,ecx + 879f8d: 8b 4d 14 mov ecx,DWORD PTR [ebp+0x14] + 879f90: 89 4e 08 mov DWORD PTR [esi+0x8],ecx + 879f93: 52 push edx + 879f94: 8d 4e 20 lea ecx,[esi+0x20] + 879f97: 88 46 04 mov BYTE PTR [esi+0x4],al + 879f9a: e8 51 50 f4 ff call 0x7beff0 + 879f9f: 8b 45 1c mov eax,DWORD PTR [ebp+0x1c] + 879fa2: 8a 4d 20 mov cl,BYTE PTR [ebp+0x20] + 879fa5: 8a 55 0c mov dl,BYTE PTR [ebp+0xc] + 879fa8: 89 46 14 mov DWORD PTR [esi+0x14],eax + 879fab: 8a 45 10 mov al,BYTE PTR [ebp+0x10] + 879fae: 88 4e 18 mov BYTE PTR [esi+0x18],cl + 879fb1: 8b 4d 24 mov ecx,DWORD PTR [ebp+0x24] + 879fb4: 88 56 10 mov BYTE PTR [esi+0x10],dl + 879fb7: 8b 55 28 mov edx,DWORD PTR [ebp+0x28] + 879fba: 88 46 11 mov BYTE PTR [esi+0x11],al + 879fbd: 8b 45 2c mov eax,DWORD PTR [ebp+0x2c] diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/string-assign.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/string-assign.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/string-assign.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/string-assign.stdout.txt new file mode 100644 index 0000000..27f23eb --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/string-assign.stdout.txt @@ -0,0 +1,123 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +004249a0 <.text+0x239a0>: + 4249a0: 55 push ebp + 4249a1: 8b ec mov ebp,esp + 4249a3: 6a ff push 0xffffffff + 4249a5: 68 80 47 95 00 push 0x954780 + 4249aa: 64 a1 00 00 00 00 mov eax,fs:0x0 + 4249b0: 50 push eax + 4249b1: 83 ec 1c sub esp,0x1c + 4249b4: 53 push ebx + 4249b5: 56 push esi + 4249b6: 57 push edi + 4249b7: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 4249bc: 33 c5 xor eax,ebp + 4249be: 50 push eax + 4249bf: 8d 45 f4 lea eax,[ebp-0xc] + 4249c2: 64 a3 00 00 00 00 mov fs:0x0,eax + 4249c8: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 4249cb: 8b f9 mov edi,ecx + 4249cd: 89 7d ec mov DWORD PTR [ebp-0x14],edi + 4249d0: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 4249d3: 8b f0 mov esi,eax + 4249d5: 83 ce 0f or esi,0xf + 4249d8: 83 fe fe cmp esi,0xfffffffe + 4249db: 76 04 jbe 0x4249e1 + 4249dd: 8b f0 mov esi,eax + 4249df: eb 27 jmp 0x424a08 + 4249e1: 8b 5f 14 mov ebx,DWORD PTR [edi+0x14] + 4249e4: b8 ab aa aa aa mov eax,0xaaaaaaab + 4249e9: f7 e6 mul esi + 4249eb: 8b cb mov ecx,ebx + 4249ed: d1 e9 shr ecx,1 + 4249ef: d1 ea shr edx,1 + 4249f1: 3b ca cmp ecx,edx + 4249f3: 76 13 jbe 0x424a08 + 4249f5: b8 fe ff ff ff mov eax,0xfffffffe + 4249fa: 2b c1 sub eax,ecx + 4249fc: 8d 34 19 lea esi,[ecx+ebx*1] + 4249ff: 3b d8 cmp ebx,eax + 424a01: 76 05 jbe 0x424a08 + 424a03: be fe ff ff ff mov esi,0xfffffffe + 424a08: 33 c0 xor eax,eax + 424a0a: 8d 4e 01 lea ecx,[esi+0x1] + 424a0d: 89 45 fc mov DWORD PTR [ebp-0x4],eax + 424a10: 3b c8 cmp ecx,eax + 424a12: 76 12 jbe 0x424a26 + 424a14: 83 f9 ff cmp ecx,0xffffffff + 424a17: 77 12 ja 0x424a2b + 424a19: 51 push ecx + 424a1a: e8 97 05 50 00 call 0x924fb6 + 424a1f: 83 c4 04 add esp,0x4 + 424a22: 85 c0 test eax,eax + 424a24: 74 05 je 0x424a2b + 424a26: 89 45 08 mov DWORD PTR [ebp+0x8],eax + 424a29: eb 52 jmp 0x424a7d + 424a2b: 8d 4d e8 lea ecx,[ebp-0x18] + 424a2e: 51 push ecx + 424a2f: 8d 4d d8 lea ecx,[ebp-0x28] + 424a32: c7 45 e8 00 00 00 00 mov DWORD PTR [ebp-0x18],0x0 + 424a39: ff 15 bc d1 9d 00 call DWORD PTR ds:0x9dd1bc + 424a3f: 68 90 d1 a8 00 push 0xa8d190 + 424a44: 8d 55 d8 lea edx,[ebp-0x28] + 424a47: 52 push edx + 424a48: c7 45 d8 00 1f 9e 00 mov DWORD PTR [ebp-0x28],0x9e1f00 + 424a4f: e8 68 05 50 00 call 0x924fbc + 424a54: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 424a57: 8b 4d ec mov ecx,DWORD PTR [ebp-0x14] + 424a5a: 89 45 e4 mov DWORD PTR [ebp-0x1c],eax + 424a5d: 40 inc eax + 424a5e: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 424a61: 50 push eax + 424a62: 83 c1 18 add ecx,0x18 + 424a65: c6 45 fc 02 mov BYTE PTR [ebp-0x4],0x2 + 424a69: e8 e2 ed 2f 00 call 0x723850 + 424a6e: 89 45 08 mov DWORD PTR [ebp+0x8],eax + 424a71: b8 77 4a 42 00 mov eax,0x424a77 + 424a76: c3 ret + 424a77: 8b 7d ec mov edi,DWORD PTR [ebp-0x14] + 424a7a: 8b 75 e4 mov esi,DWORD PTR [ebp-0x1c] + 424a7d: 8b 5d 0c mov ebx,DWORD PTR [ebp+0xc] + 424a80: 85 db test ebx,ebx + 424a82: 74 1a je 0x424a9e + 424a84: 83 7f 14 10 cmp DWORD PTR [edi+0x14],0x10 + 424a88: 72 04 jb 0x424a8e + 424a8a: 8b 07 mov eax,DWORD PTR [edi] + 424a8c: eb 02 jmp 0x424a90 + 424a8e: 8b c7 mov eax,edi + 424a90: 53 push ebx + 424a91: 50 push eax + 424a92: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 424a95: 50 push eax + 424a96: e8 e1 02 50 00 call 0x924d7c + 424a9b: 83 c4 0c add esp,0xc + 424a9e: 83 7f 14 10 cmp DWORD PTR [edi+0x14],0x10 + 424aa2: 72 0b jb 0x424aaf + 424aa4: 8b 0f mov ecx,DWORD PTR [edi] + 424aa6: 51 push ecx + 424aa7: e8 fe 04 50 00 call 0x924faa + 424aac: 83 c4 04 add esp,0x4 + 424aaf: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 424ab2: c6 07 00 mov BYTE PTR [edi],0x0 + 424ab5: 89 07 mov DWORD PTR [edi],eax + 424ab7: 89 77 14 mov DWORD PTR [edi+0x14],esi + 424aba: 89 5f 10 mov DWORD PTR [edi+0x10],ebx + 424abd: 83 fe 10 cmp esi,0x10 + 424ac0: 72 02 jb 0x424ac4 + 424ac2: 8b f8 mov edi,eax + 424ac4: c6 04 1f 00 mov BYTE PTR [edi+ebx*1],0x0 + 424ac8: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 424acb: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 424ad2: 59 pop ecx + 424ad3: 5f pop edi + 424ad4: 5e pop esi + 424ad5: 5b pop ebx + 424ad6: 8b e5 mov esp,ebp + 424ad8: 5d pop ebp + 424ad9: c2 08 00 ret 0x8 + 424adc: 8b mov esi,DWORD PTR [ebp-0x14] diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/string-not-equal.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/string-not-equal.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/string-not-equal.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/string-not-equal.stdout.txt new file mode 100644 index 0000000..ceb5f5f --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/string-not-equal.stdout.txt @@ -0,0 +1,33 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +0046f8c0 <.text+0x6e8c0>: + 46f8c0: 55 push ebp + 46f8c1: 8b ec mov ebp,esp + 46f8c3: 8b 45 0c mov eax,DWORD PTR [ebp+0xc] + 46f8c6: 83 78 14 10 cmp DWORD PTR [eax+0x14],0x10 + 46f8ca: 8b 48 10 mov ecx,DWORD PTR [eax+0x10] + 46f8cd: 72 02 jb 0x46f8d1 + 46f8cf: 8b 00 mov eax,DWORD PTR [eax] + 46f8d1: 51 push ecx + 46f8d2: 8b 4d 08 mov ecx,DWORD PTR [ebp+0x8] + 46f8d5: 50 push eax + 46f8d6: 8b 41 10 mov eax,DWORD PTR [ecx+0x10] + 46f8d9: 50 push eax + 46f8da: 6a 00 push 0x0 + 46f8dc: e8 bf 3d fb ff call 0x4236a0 + 46f8e1: f7 d8 neg eax + 46f8e3: 1b c0 sbb eax,eax + 46f8e5: f7 d8 neg eax + 46f8e7: 5d pop ebp + 46f8e8: c3 ret + 46f8e9: cc int3 + 46f8ea: cc int3 + 46f8eb: cc int3 + 46f8ec: cc int3 + 46f8ed: cc int3 + 46f8ee: cc int3 + 46f8ef: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-append.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-append.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-append.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-append.stdout.txt new file mode 100644 index 0000000..0682ca6 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-append.stdout.txt @@ -0,0 +1,88 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00884cb0 <.text+0x483cb0>: + 884cb0: 55 push ebp + 884cb1: 8b ec mov ebp,esp + 884cb3: 6a ff push 0xffffffff + 884cb5: 68 72 0b 98 00 push 0x980b72 + 884cba: 64 a1 00 00 00 00 mov eax,fs:0x0 + 884cc0: 50 push eax + 884cc1: 51 push ecx + 884cc2: 56 push esi + 884cc3: 57 push edi + 884cc4: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 884cc9: 33 c5 xor eax,ebp + 884ccb: 50 push eax + 884ccc: 8d 45 f4 lea eax,[ebp-0xc] + 884ccf: 64 a3 00 00 00 00 mov fs:0x0,eax + 884cd5: 8b f9 mov edi,ecx + 884cd7: 8b 4f 04 mov ecx,DWORD PTR [edi+0x4] + 884cda: 8b 75 08 mov esi,DWORD PTR [ebp+0x8] + 884cdd: 3b f1 cmp esi,ecx + 884cdf: 73 59 jae 0x884d3a + 884ce1: 8b 07 mov eax,DWORD PTR [edi] + 884ce3: 3b c6 cmp eax,esi + 884ce5: 77 53 ja 0x884d3a + 884ce7: 2b f0 sub esi,eax + 884ce9: b8 ab aa aa 2a mov eax,0x2aaaaaab + 884cee: f7 ee imul esi + 884cf0: c1 fa 02 sar edx,0x2 + 884cf3: 8b f2 mov esi,edx + 884cf5: c1 ee 1f shr esi,0x1f + 884cf8: 03 f2 add esi,edx + 884cfa: 3b 4f 08 cmp ecx,DWORD PTR [edi+0x8] + 884cfd: 75 09 jne 0x884d08 + 884cff: 6a 01 push 0x1 + 884d01: 8b cf mov ecx,edi + 884d03: e8 98 f4 ff ff call 0x8841a0 + 884d08: 8b 0f mov ecx,DWORD PTR [edi] + 884d0a: 8d 04 76 lea eax,[esi+esi*2] + 884d0d: 8d 0c c1 lea ecx,[ecx+eax*8] + 884d10: 8b 47 04 mov eax,DWORD PTR [edi+0x4] + 884d13: 89 45 08 mov DWORD PTR [ebp+0x8],eax + 884d16: 89 45 f0 mov DWORD PTR [ebp-0x10],eax + 884d19: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 884d20: 85 c0 test eax,eax + 884d22: 74 54 je 0x884d78 + 884d24: c7 00 7c f0 a0 00 mov DWORD PTR [eax],0xa0f07c + 884d2a: 8b 51 04 mov edx,DWORD PTR [ecx+0x4] + 884d2d: 83 c1 08 add ecx,0x8 + 884d30: c6 45 fc 01 mov BYTE PTR [ebp-0x4],0x1 + 884d34: 89 50 04 mov DWORD PTR [eax+0x4],edx + 884d37: 51 push ecx + 884d38: eb 36 jmp 0x884d70 + 884d3a: 3b 4f 08 cmp ecx,DWORD PTR [edi+0x8] + 884d3d: 75 09 jne 0x884d48 + 884d3f: 6a 01 push 0x1 + 884d41: 8b cf mov ecx,edi + 884d43: e8 58 f4 ff ff call 0x8841a0 + 884d48: 8b 47 04 mov eax,DWORD PTR [edi+0x4] + 884d4b: 89 45 08 mov DWORD PTR [ebp+0x8],eax + 884d4e: 89 45 f0 mov DWORD PTR [ebp-0x10],eax + 884d51: c7 45 fc 02 00 00 00 mov DWORD PTR [ebp-0x4],0x2 + 884d58: 85 c0 test eax,eax + 884d5a: 74 1c je 0x884d78 + 884d5c: c7 00 7c f0 a0 00 mov DWORD PTR [eax],0xa0f07c + 884d62: 8b 4e 04 mov ecx,DWORD PTR [esi+0x4] + 884d65: 83 c6 08 add esi,0x8 + 884d68: c6 45 fc 03 mov BYTE PTR [ebp-0x4],0x3 + 884d6c: 89 48 04 mov DWORD PTR [eax+0x4],ecx + 884d6f: 56 push esi + 884d70: 8d 48 08 lea ecx,[eax+0x8] + 884d73: e8 d8 4a ef ff call 0x779850 + 884d78: 83 47 04 18 add DWORD PTR [edi+0x4],0x18 + 884d7c: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 884d7f: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 884d86: 59 pop ecx + 884d87: 5f pop edi + 884d88: 5e pop esi + 884d89: 8b e5 mov esp,ebp + 884d8b: 5d pop ebp + 884d8c: c2 04 00 ret 0x4 + 884d8f: cc int3 + 884d90: 55 push ebp + 884d91: 8b ec mov ebp,esp diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-get-create.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-get-create.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-get-create.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-get-create.stdout.txt new file mode 100644 index 0000000..c47ffab --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-get-create.stdout.txt @@ -0,0 +1,87 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00885380 <.text+0x484380>: + 885380: 55 push ebp + 885381: 8b ec mov ebp,esp + 885383: 6a ff push 0xffffffff + 885385: 68 30 af 99 00 push 0x99af30 + 88538a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 885390: 50 push eax + 885391: 83 ec 18 sub esp,0x18 + 885394: 53 push ebx + 885395: 56 push esi + 885396: 57 push edi + 885397: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 88539c: 33 c5 xor eax,ebp + 88539e: 50 push eax + 88539f: 8d 45 f4 lea eax,[ebp-0xc] + 8853a2: 64 a3 00 00 00 00 mov fs:0x0,eax + 8853a8: 8b f1 mov esi,ecx + 8853aa: 8b 56 08 mov edx,DWORD PTR [esi+0x8] + 8853ad: 2b 56 04 sub edx,DWORD PTR [esi+0x4] + 8853b0: 8d 4e 04 lea ecx,[esi+0x4] + 8853b3: b8 ab aa aa 2a mov eax,0x2aaaaaab + 8853b8: f7 ea imul edx + 8853ba: c1 fa 02 sar edx,0x2 + 8853bd: 8b c2 mov eax,edx + 8853bf: c1 e8 1f shr eax,0x1f + 8853c2: 33 db xor ebx,ebx + 8853c4: 03 c2 add eax,edx + 8853c6: 33 ff xor edi,edi + 8853c8: 3b c3 cmp eax,ebx + 8853ca: 7e 30 jle 0x8853fc + 8853cc: 8b 11 mov edx,DWORD PTR [ecx] + 8853ce: 8b ff mov edi,edi + 8853d0: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 8853d3: 39 5a 04 cmp DWORD PTR [edx+0x4],ebx + 8853d6: 75 02 jne 0x8853da + 8853d8: 8b fa mov edi,edx + 8853da: 83 c2 18 add edx,0x18 + 8853dd: 48 dec eax + 8853de: 75 f0 jne 0x8853d0 + 8853e0: 33 db xor ebx,ebx + 8853e2: 3b fb cmp edi,ebx + 8853e4: 74 16 je 0x8853fc + 8853e6: 8b c7 mov eax,edi + 8853e8: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 8853eb: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 8853f2: 59 pop ecx + 8853f3: 5f pop edi + 8853f4: 5e pop esi + 8853f5: 5b pop ebx + 8853f6: 8b e5 mov esp,ebp + 8853f8: 5d pop ebp + 8853f9: c2 04 00 ret 0x4 + 8853fc: c7 45 dc 7c f0 a0 00 mov DWORD PTR [ebp-0x24],0xa0f07c + 885403: 89 5d e4 mov DWORD PTR [ebp-0x1c],ebx + 885406: 89 5d e8 mov DWORD PTR [ebp-0x18],ebx + 885409: 89 5d ec mov DWORD PTR [ebp-0x14],ebx + 88540c: 8d 45 dc lea eax,[ebp-0x24] + 88540f: 50 push eax + 885410: 89 5d fc mov DWORD PTR [ebp-0x4],ebx + 885413: e8 98 f8 ff ff call 0x884cb0 + 885418: 8d 4d e4 lea ecx,[ebp-0x1c] + 88541b: c7 45 fc 01 00 00 00 mov DWORD PTR [ebp-0x4],0x1 + 885422: e8 59 41 da ff call 0x629580 + 885427: 8b 46 08 mov eax,DWORD PTR [esi+0x8] + 88542a: 8b 4d 08 mov ecx,DWORD PTR [ebp+0x8] + 88542d: 89 48 ec mov DWORD PTR [eax-0x14],ecx + 885430: 8b 46 08 mov eax,DWORD PTR [esi+0x8] + 885433: 83 e8 18 sub eax,0x18 + 885436: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 885439: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 885440: 59 pop ecx + 885441: 5f pop edi + 885442: 5e pop esi + 885443: 5b pop ebx + 885444: 8b e5 mov esp,ebp + 885446: 5d pop ebp + 885447: c2 04 00 ret 0x4 + 88544a: cc int3 + 88544b: cc int3 + 88544c: cc int3 + 88544d: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-growth.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-growth.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-growth.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-growth.stdout.txt new file mode 100644 index 0000000..008416b --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-growth.stdout.txt @@ -0,0 +1,142 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +008841a0 <.text+0x4831a0>: + 8841a0: 55 push ebp + 8841a1: 8b ec mov ebp,esp + 8841a3: 8b 51 04 mov edx,DWORD PTR [ecx+0x4] + 8841a6: 56 push esi + 8841a7: 57 push edi + 8841a8: 8b 39 mov edi,DWORD PTR [ecx] + 8841aa: 2b d7 sub edx,edi + 8841ac: b8 ab aa aa 2a mov eax,0x2aaaaaab + 8841b1: f7 ea imul edx + 8841b3: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 8841b6: c1 fa 02 sar edx,0x2 + 8841b9: 8b f2 mov esi,edx + 8841bb: c1 ee 1f shr esi,0x1f + 8841be: 03 f2 add esi,edx + 8841c0: ba aa aa aa 0a mov edx,0xaaaaaaa + 8841c5: 2b d0 sub edx,eax + 8841c7: 3b d6 cmp edx,esi + 8841c9: 73 0b jae 0x8841d6 + 8841cb: 68 90 1f 9e 00 push 0x9e1f90 + 8841d0: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 8841d6: 8b 51 08 mov edx,DWORD PTR [ecx+0x8] + 8841d9: 03 f0 add esi,eax + 8841db: 2b d7 sub edx,edi + 8841dd: b8 ab aa aa 2a mov eax,0x2aaaaaab + 8841e2: f7 ea imul edx + 8841e4: c1 fa 02 sar edx,0x2 + 8841e7: 8b c2 mov eax,edx + 8841e9: c1 e8 1f shr eax,0x1f + 8841ec: 03 c2 add eax,edx + 8841ee: 3b f0 cmp esi,eax + 8841f0: 76 21 jbe 0x884213 + 8841f2: 8b d0 mov edx,eax + 8841f4: d1 ea shr edx,1 + 8841f6: bf aa aa aa 0a mov edi,0xaaaaaaa + 8841fb: 2b fa sub edi,edx + 8841fd: 3b f8 cmp edi,eax + 8841ff: 73 04 jae 0x884205 + 884201: 33 c0 xor eax,eax + 884203: eb 02 jmp 0x884207 + 884205: 03 c2 add eax,edx + 884207: 3b c6 cmp eax,esi + 884209: 73 02 jae 0x88420d + 88420b: 8b c6 mov eax,esi + 88420d: 50 push eax + 88420e: e8 4d f8 ff ff call 0x883a60 + 884213: 5f pop edi + 884214: 5e pop esi + 884215: 5d pop ebp + 884216: c2 04 00 ret 0x4 + 884219: cc int3 + 88421a: cc int3 + 88421b: cc int3 + 88421c: cc int3 + 88421d: cc int3 + 88421e: cc int3 + 88421f: cc int3 + 884220: 55 push ebp + 884221: 8b ec mov ebp,esp + 884223: 6a ff push 0xffffffff + 884225: 68 10 ad 99 00 push 0x99ad10 + 88422a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 884230: 50 push eax + 884231: 83 ec 0c sub esp,0xc + 884234: 53 push ebx + 884235: 56 push esi + 884236: 57 push edi + 884237: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 88423c: 33 c5 xor eax,ebp + 88423e: 50 push eax + 88423f: 8d 45 f4 lea eax,[ebp-0xc] + 884242: 64 a3 00 00 00 00 mov fs:0x0,eax + 884248: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 88424b: 8b d9 mov ebx,ecx + 88424d: 89 5d e8 mov DWORD PTR [ebp-0x18],ebx + 884250: 8b 7d 08 mov edi,DWORD PTR [ebp+0x8] + 884253: 80 bf 89 00 00 00 00 cmp BYTE PTR [edi+0x89],0x0 + 88425a: 8b 43 04 mov eax,DWORD PTR [ebx+0x4] + 88425d: 89 45 ec mov DWORD PTR [ebp-0x14],eax + 884260: 75 51 jne 0x8842b3 + 884262: 8d 4f 10 lea ecx,[edi+0x10] + 884265: 51 push ecx + 884266: 8b cb mov ecx,ebx + 884268: e8 23 f9 ff ff call 0x883b90 + 88426d: 8b 55 0c mov edx,DWORD PTR [ebp+0xc] + 884270: 8b 4d ec mov ecx,DWORD PTR [ebp-0x14] + 884273: 8b f0 mov esi,eax + 884275: 89 56 04 mov DWORD PTR [esi+0x4],edx + 884278: 8a 87 88 00 00 00 mov al,BYTE PTR [edi+0x88] + 88427e: 88 86 88 00 00 00 mov BYTE PTR [esi+0x88],al + 884284: 80 b9 89 00 00 00 00 cmp BYTE PTR [ecx+0x89],0x0 + 88428b: 74 03 je 0x884290 + 88428d: 89 75 ec mov DWORD PTR [ebp-0x14],esi + 884290: 8b 17 mov edx,DWORD PTR [edi] + 884292: 56 push esi + 884293: 52 push edx + 884294: 8b cb mov ecx,ebx + 884296: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 88429d: e8 7e ff ff ff call 0x884220 + 8842a2: 89 06 mov DWORD PTR [esi],eax + 8842a4: 8b 47 08 mov eax,DWORD PTR [edi+0x8] + 8842a7: 56 push esi + 8842a8: 50 push eax + 8842a9: 8b cb mov ecx,ebx + 8842ab: e8 70 ff ff ff call 0x884220 + 8842b0: 89 46 08 mov DWORD PTR [esi+0x8],eax + 8842b3: 8b 45 ec mov eax,DWORD PTR [ebp-0x14] + 8842b6: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 8842b9: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 8842c0: 59 pop ecx + 8842c1: 5f pop edi + 8842c2: 5e pop esi + 8842c3: 5b pop ebx + 8842c4: 8b e5 mov esp,ebp + 8842c6: 5d pop ebp + 8842c7: c2 08 00 ret 0x8 + 8842ca: 8b 4d ec mov ecx,DWORD PTR [ebp-0x14] + 8842cd: 51 push ecx + 8842ce: 8b 4d e8 mov ecx,DWORD PTR [ebp-0x18] + 8842d1: e8 5a f5 fe ff call 0x873830 + 8842d6: 6a 00 push 0x0 + 8842d8: 6a 00 push 0x0 + 8842da: e8 dd 0c 0a 00 call 0x924fbc + 8842df: cc int3 + 8842e0: 55 push ebp + 8842e1: 8b ec mov ebp,esp + 8842e3: 6a ff push 0xffffffff + 8842e5: 68 6c ad 99 00 push 0x99ad6c + 8842ea: 64 a1 00 00 00 00 mov eax,fs:0x0 + 8842f0: 50 push eax + 8842f1: 83 ec 78 sub esp,0x78 + 8842f4: 56 push esi + 8842f5: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 8842fa: 33 c5 xor eax,ebp + 8842fc: 50 push eax + 8842fd: 8d 45 f4 lea eax,[ebp-0xc] diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-virtual-dtor.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-virtual-dtor.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-virtual-dtor.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-virtual-dtor.stdout.txt new file mode 100644 index 0000000..995bee8 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea-repair1/turn-virtual-dtor.stdout.txt @@ -0,0 +1,33 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +0062e120 <.text+0x22d120>: + 62e120: 55 push ebp + 62e121: 8b ec mov ebp,esp + 62e123: 6a ff push 0xffffffff + 62e125: 68 08 92 98 00 push 0x989208 + 62e12a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 62e130: 50 push eax + 62e131: 51 push ecx + 62e132: 56 push esi + 62e133: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 62e138: 33 c5 xor eax,ebp + 62e13a: 50 push eax + 62e13b: 8d 45 f4 lea eax,[ebp-0xc] + 62e13e: 64 a3 00 00 00 00 mov fs:0x0,eax + 62e144: 8b f1 mov esi,ecx + 62e146: 89 75 f0 mov DWORD PTR [ebp-0x10],esi + 62e149: 8d 4e 08 lea ecx,[esi+0x8] + 62e14c: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 62e153: e8 28 b4 ff ff call 0x629580 + 62e158: f6 45 08 01 test BYTE PTR [ebp+0x8],0x1 + 62e15c: c7 06 bc 22 9e 00 mov DWORD PTR [esi],0x9e22bc + 62e162: 74 09 je 0x62e16d + 62e164: 56 push esi + 62e165: e8 40 6e 2f 00 call 0x924faa + 62e16a: 83 c4 04 add esp,0x4 + 62e16d: 8b c6 mov eax,esi + 62e16f: 8b mov ecx,DWORD PTR [ebp-0xc] diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/dedup.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/dedup.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/dedup.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/dedup.stdout.txt new file mode 100644 index 0000000..653b003 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/dedup.stdout.txt @@ -0,0 +1,127 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00825d40 <.text+0x424d40>: + 825d40: 55 push ebp + 825d41: 8b ec mov ebp,esp + 825d43: 51 push ecx + 825d44: 53 push ebx + 825d45: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 825d48: 56 push esi + 825d49: 33 f6 xor esi,esi + 825d4b: 3b de cmp ebx,esi + 825d4d: 75 0a jne 0x825d59 + 825d4f: 5e pop esi + 825d50: 33 c0 xor eax,eax + 825d52: 5b pop ebx + 825d53: 8b e5 mov esp,ebp + 825d55: 5d pop ebp + 825d56: c2 08 00 ret 0x8 + 825d59: 8b 4b 0c mov ecx,DWORD PTR [ebx+0xc] + 825d5c: 2b 4b 08 sub ecx,DWORD PTR [ebx+0x8] + 825d5f: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 825d64: f7 e9 imul ecx + 825d66: 03 d1 add edx,ecx + 825d68: c1 fa 06 sar edx,0x6 + 825d6b: 8b c2 mov eax,edx + 825d6d: c1 e8 1f shr eax,0x1f + 825d70: 03 c2 add eax,edx + 825d72: 57 push edi + 825d73: 89 75 fc mov DWORD PTR [ebp-0x4],esi + 825d76: 0f 84 d5 00 00 00 je 0x825e51 + 825d7c: 8b 7d 0c mov edi,DWORD PTR [ebp+0xc] + 825d7f: 89 75 08 mov DWORD PTR [ebp+0x8],esi + 825d82: 8b 73 08 mov esi,DWORD PTR [ebx+0x8] + 825d85: 03 75 08 add esi,DWORD PTR [ebp+0x8] + 825d88: 8b 4e 6c mov ecx,DWORD PTR [esi+0x6c] + 825d8b: 3b 4f 6c cmp ecx,DWORD PTR [edi+0x6c] + 825d8e: 0f 85 91 00 00 00 jne 0x825e25 + 825d94: 8b 56 40 mov edx,DWORD PTR [esi+0x40] + 825d97: 3b 57 40 cmp edx,DWORD PTR [edi+0x40] + 825d9a: 0f 85 85 00 00 00 jne 0x825e25 + 825da0: d9 46 44 fld DWORD PTR [esi+0x44] + 825da3: d9 47 44 fld DWORD PTR [edi+0x44] + 825da6: da e9 fucompp + 825da8: df e0 fnstsw ax + 825daa: f6 c4 44 test ah,0x44 + 825dad: 7a 76 jp 0x825e25 + 825daf: d9 46 48 fld DWORD PTR [esi+0x48] + 825db2: d9 47 48 fld DWORD PTR [edi+0x48] + 825db5: da e9 fucompp + 825db7: df e0 fnstsw ax + 825db9: f6 c4 44 test ah,0x44 + 825dbc: 7a 67 jp 0x825e25 + 825dbe: d9 46 4c fld DWORD PTR [esi+0x4c] + 825dc1: d9 47 4c fld DWORD PTR [edi+0x4c] + 825dc4: da e9 fucompp + 825dc6: df e0 fnstsw ax + 825dc8: f6 c4 44 test ah,0x44 + 825dcb: 7a 58 jp 0x825e25 + 825dcd: 83 7f 38 10 cmp DWORD PTR [edi+0x38],0x10 + 825dd1: 8b 57 34 mov edx,DWORD PTR [edi+0x34] + 825dd4: 8d 47 24 lea eax,[edi+0x24] + 825dd7: 8d 4e 24 lea ecx,[esi+0x24] + 825dda: 72 02 jb 0x825dde + 825ddc: 8b 00 mov eax,DWORD PTR [eax] + 825dde: 52 push edx + 825ddf: 50 push eax + 825de0: 8b 41 10 mov eax,DWORD PTR [ecx+0x10] + 825de3: 50 push eax + 825de4: 6a 00 push 0x0 + 825de6: e8 b5 d8 bf ff call 0x4236a0 + 825deb: 85 c0 test eax,eax + 825ded: 75 36 jne 0x825e25 + 825def: 83 7f 64 10 cmp DWORD PTR [edi+0x64],0x10 + 825df3: 8b 57 60 mov edx,DWORD PTR [edi+0x60] + 825df6: 8d 47 50 lea eax,[edi+0x50] + 825df9: 8d 4e 50 lea ecx,[esi+0x50] + 825dfc: 72 02 jb 0x825e00 + 825dfe: 8b 00 mov eax,DWORD PTR [eax] + 825e00: 52 push edx + 825e01: 8b 51 10 mov edx,DWORD PTR [ecx+0x10] + 825e04: 50 push eax + 825e05: 52 push edx + 825e06: 6a 00 push 0x0 + 825e08: e8 93 d8 bf ff call 0x4236a0 + 825e0d: 85 c0 test eax,eax + 825e0f: 75 14 jne 0x825e25 + 825e11: 8d 47 08 lea eax,[edi+0x8] + 825e14: 50 push eax + 825e15: 8d 4e 08 lea ecx,[esi+0x8] + 825e18: 51 push ecx + 825e19: e8 a2 9a c4 ff call 0x46f8c0 + 825e1e: 83 c4 08 add esp,0x8 + 825e21: 84 c0 test al,al + 825e23: 74 37 je 0x825e5c + 825e25: 8b 4b 0c mov ecx,DWORD PTR [ebx+0xc] + 825e28: 2b 4b 08 sub ecx,DWORD PTR [ebx+0x8] + 825e2b: 8b 75 fc mov esi,DWORD PTR [ebp-0x4] + 825e2e: 83 45 08 74 add DWORD PTR [ebp+0x8],0x74 + 825e32: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 825e37: f7 e9 imul ecx + 825e39: 03 d1 add edx,ecx + 825e3b: c1 fa 06 sar edx,0x6 + 825e3e: 8b c2 mov eax,edx + 825e40: c1 e8 1f shr eax,0x1f + 825e43: 46 inc esi + 825e44: 03 c2 add eax,edx + 825e46: 89 75 fc mov DWORD PTR [ebp-0x4],esi + 825e49: 3b f0 cmp esi,eax + 825e4b: 0f 82 31 ff ff ff jb 0x825d82 + 825e51: 5f pop edi + 825e52: 5e pop esi + 825e53: 33 c0 xor eax,eax + 825e55: 5b pop ebx + 825e56: 8b e5 mov esp,ebp + 825e58: 5d pop ebp + 825e59: c2 08 00 ret 0x8 + 825e5c: 5f pop edi + 825e5d: 8b c6 mov eax,esi + 825e5f: 5e pop esi + 825e60: 5b pop ebx + 825e61: 8b e5 mov esp,ebp + 825e63: 5d pop ebp + 825e64: c2 08 00 ret 0x8 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/import-thunks.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/import-thunks.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/import-thunks.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/import-thunks.stdout.txt new file mode 100644 index 0000000..f3d4e20 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/import-thunks.stdout.txt @@ -0,0 +1,10 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00924faa <.text+0x523faa>: + 924faa: ff 25 c8 d1 9d 00 jmp DWORD PTR ds:0x9dd1c8 + 924fb0: ff 25 cc d1 9d 00 jmp DWORD PTR ds:0x9dd1cc + 924fb6: ff 25 d0 d1 9d 00 jmp DWORD PTR ds:0x9dd1d0 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json new file mode 100644 index 0000000..ad04c92 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/manifest.json @@ -0,0 +1,801 @@ +{ + "schema": "sots-abi-static-capture/2", + "session": "run-35e59053176da458d8b46fea", + "actor": "research-abi-analyst", + "role": "analyst", + "model": "openai/gpt-5.6-sol", + "timestamp": "2026-09-10T13:20:55.693635+00:00", + "decisions": [ + "d-e9d6d48cd77538556d1a1c1f", + "d-6e30d172051af0385f5979eb" + ], + "scope": "Static instruction/byte capture and immutable input identity; no game/runtime execution.", + "source_before": { + "argv": [ + "/usr/bin/python3", + "/home/alex/sots-re/tools/campaign.py", + "--state-root", + "/home/alex/sots-re", + "source-binding", + "research-completion-abi", + "--engine-worktree", + "/tmp/opencode/sots-final-research-engine", + "--re-worktree", + "/tmp/opencode/sots-final-research-re" + ], + "value": { + "engine": { + "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", + "path": "/tmp/opencode/sots-final-research-engine", + "sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd" + }, + "re": { + "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", + "path": "/tmp/opencode/sots-final-research-re", + "sha256": "e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f" + } + } + }, + "source_after": { + "argv": [ + "/usr/bin/python3", + "/home/alex/sots-re/tools/campaign.py", + "--state-root", + "/home/alex/sots-re", + "source-binding", + "research-completion-abi", + "--engine-worktree", + "/tmp/opencode/sots-final-research-engine", + "--re-worktree", + "/tmp/opencode/sots-final-research-re" + ], + "value": { + "engine": { + "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", + "path": "/tmp/opencode/sots-final-research-engine", + "sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd" + }, + "re": { + "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", + "path": "/tmp/opencode/sots-final-research-re", + "sha256": "e5cf1c44761bebcada1aacb53f30722bdaf4784f21a9ec1023a1851c142c124f" + } + } + }, + "files": { + "binary": { + "path": "/home/alex/sots-re/dumps/sots.exe", + "resolved_path": "/home/alex/sots-re/dumps/sots.exe", + "bytes": 7898624, + "sha256": "970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841" + }, + "objdump": { + "path": "/usr/bin/objdump", + "resolved_path": "/usr/bin/x86_64-linux-gnu-objdump", + "bytes": 373888, + "sha256": "1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd" + }, + "python": { + "path": "/usr/bin/python3", + "resolved_path": "/usr/bin/python3.10", + "bytes": 5941864, + "sha256": "a2f33a6e006989270f4340528eb61f8f97366e00a5d1b602ac8672ea44fc56ae" + }, + "save": { + "path": "/home/alex/sots-re/verify/results/saves/turn3-state.sav", + "resolved_path": "/home/alex/sots-re/verify/results/saves/turn3-state.sav", + "bytes": 67219, + "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" + }, + "campaign": { + "path": "/home/alex/sots-re/tools/campaign.py", + "resolved_path": "/home/alex/sots-re/tools/campaign.py", + "bytes": 35131, + "sha256": "a9fafe320bf2b59200c2572bc43dff8823827b9d7b78dc7b959e4b6b983f2123" + }, + "save_reader": { + "path": "/home/alex/sots-re/verify/save-reader/save_reader.py", + "resolved_path": "/home/alex/sots-re/verify/save-reader/save_reader.py", + "bytes": 74367, + "sha256": "2dcac286b5382b67fe8f2dbce58c80950dd430b726ed0e98f3bcea155df0df35" + }, + "state_checksum": { + "path": "/home/alex/sots-re/verify/state-checksum/state_checksum.py", + "resolved_path": "/home/alex/sots-re/verify/state-checksum/state_checksum.py", + "bytes": 57792, + "sha256": "ed80458e84d92040aa3872464d8df315e935f379ca0da5a2df81c3049826e5b8" + } + }, + "image_base": "0x00400000", + "commands": [ + { + "name": "observed-ctor", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x008562a0", + "--stop-address=0x00856310", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 2225, + "sha256": "e200e8f271005787df1ec1d259f7cc644a0060c300731b19ec033fe3f2e3616d" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 43 + }, + { + "name": "observed-append", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x007b7320", + "--stop-address=0x007b73a2", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 2853, + "sha256": "99858bf590aeed92ed7b5d39b4cb84c29dd3ce72b73b8b7d30830cc9f258f334" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 57 + }, + { + "name": "observed-copy", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x0079a150", + "--stop-address=0x0079a1dc", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 2772, + "sha256": "48cfde0b73307ca4b10b68d6a0d5444671a51744c9445d7c4431bb4955c4c14d" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 52 + }, + { + "name": "observed-growth", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x007b34e0", + "--stop-address=0x007b35f2", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 5244, + "sha256": "7fb72600e542553bbd197838a3cb0f0b6166925356b6c05a170d1eb66b65b30f" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 101 + }, + { + "name": "observed-alloc", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x0057e590", + "--stop-address=0x0057e5e7", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 1555, + "sha256": "27a38437141ec8f1d1975f75a7cd5b84718b20d179e7cbd3b3666453ac33c6c0" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 30 + }, + { + "name": "player-ctor", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x0084ee30", + "--stop-address=0x0084eef4", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 3382, + "sha256": "04a44e75771e8f3a3711bfca4a88c8fa73f1d600d264d4b5f6d4bbf3aee49490" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 62 + }, + { + "name": "player-append", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x0086c580", + "--stop-address=0x0086c631", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 3422, + "sha256": "b212a85480fc9bcb1b3046ebe5faab9efa45af6fb7595e4ce002ddcdb2529791" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 66 + }, + { + "name": "player-growth", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00869500", + "--stop-address=0x00869620", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 5928, + "sha256": "8e78b3dd17e52d947f78c93867c0977eddd16ce176b10291ba3afd8c3567428f" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 121 + }, + { + "name": "player-copy", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x007693f0", + "--stop-address=0x007694c3", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 4132, + "sha256": "956786989ef2866c27ee92b8c687fbc13c000a9494830b476e451a5d4e819570" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 76 + }, + { + "name": "player-dtor", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x0061ae90", + "--stop-address=0x0061aefc", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 2004, + "sha256": "a54b81f12580162518f780250d7dfda03b8d2e464c4ace77997208047ba11243" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 36 + }, + { + "name": "string-assign", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x004249a0", + "--stop-address=0x00424add", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 6102, + "sha256": "2e7a53241db15a13b74b49c2d09cb70704d5daffae1ff023364aeb64afd47815" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 117 + }, + { + "name": "import-thunks", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00924faa", + "--stop-address=0x00924fbc", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 304, + "sha256": "ad439944e6487e4131ac43f4ce75e61c5a362848b39ca99ca027fcee3f6162d0" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 4 + }, + { + "name": "turn-get-create", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00885380", + "--stop-address=0x0088544e", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 4134, + "sha256": "9cb7d2ccfcc645b3b642e520ba51c85330c57d6d4395ed3fbd4a4a1950436e80" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 81 + }, + { + "name": "turn-append", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00884cb0", + "--stop-address=0x00884d93", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 4309, + "sha256": "957339f40b2af8947cb883cc1d3a9d1e151bf7663305415065472ef9171dc33d" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 82 + }, + { + "name": "turn-growth", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x008841a0", + "--stop-address=0x00884300", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 6804, + "sha256": "9b7674abc156a82c2db00f95dd6719bfb718644536a1228baadad284b3ed8461" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 136 + }, + { + "name": "nested-copy-authority", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00779850", + "--stop-address=0x00779930", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 4465, + "sha256": "973c87ccab76a8454a4e43c83b59cdeace1e4f8c124c5aa9630cb956e3156bb8" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 88 + }, + { + "name": "nested-dtor", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00629580", + "--stop-address=0x006295ce", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 1887, + "sha256": "0aba6fc800760e3a113c07238cfb6e721623eb0bb8a933a990d3e2e82823d00f" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 37 + }, + { + "name": "turn-virtual-dtor", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x0062e120", + "--stop-address=0x0062e170", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 1429, + "sha256": "319e74267a88f166e05306be5cb2a2d7ffdca3e75169f7e7e6e8d379f153220c" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 27 + }, + { + "name": "dedup", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00825d40", + "--stop-address=0x00825e67", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 6153, + "sha256": "cb10ca40246bc57fd5431ab099008727fe5be90c22bd7f57fad1cb30301f002c" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 121 + }, + { + "name": "string-not-equal", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x0046f8c0", + "--stop-address=0x0046f8f0", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 1352, + "sha256": "7d1efe697a4f1d0549dd25f15758e601ef94583389aecf4a59f99cf3d825bf69" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 27 + }, + { + "name": "prune", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00879eb0", + "--stop-address=0x00879fc0", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 6620, + "sha256": "8536d2a47f14f5b6e0f1796de33189471687a0a0d0c2414e98e1623cb8226d99" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 134 + }, + { + "name": "nested-copy-stop-9913", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00779850", + "--stop-address=0x00779913", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 3815, + "sha256": "715d47e9675909adf6c2c42acae622b3c43dc9ce45dc678ffe623466e44ae219" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 73 + }, + { + "name": "nested-copy-stop-9915", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00779850", + "--stop-address=0x00779915", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 3819, + "sha256": "d545b88701652f65511047c65917b308b6982c23c52d6fa14ae91174feedcc31" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 73 + }, + { + "name": "nested-copy-stop-a20", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00779850", + "--stop-address=0x00779a20", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 8469, + "sha256": "e3988aa615066dce65ec16de0d61051ffc5deafe8c8eef4aeb0bbfbe931204a1" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 169 + }, + { + "name": "nested-copy-stop-a21", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00779850", + "--stop-address=0x00779a21", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 8471, + "sha256": "b6d58767d00328c37139f439db480c9bb5ce6767dabf212f9e750a31fea0d3d7" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 169 + }, + { + "name": "nested-copy-stop-a23", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00779850", + "--stop-address=0x00779a23", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 8518, + "sha256": "e8cc66eb74730fcf7853d66df8caa620ddb3fc8c75335f0573ac490037a7a88e" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 170 + }, + { + "name": "nested-copy-stop-a28", + "argv": [ + "/usr/bin/objdump", + "-D", + "-Mintel", + "--start-address=0x00779850", + "--stop-address=0x00779a28", + "/home/alex/sots-re/dumps/sots.exe" + ], + "returncode": 0, + "stdout": { + "bytes": 8566, + "sha256": "7b02af65ab916de02fc44b2004f8acedc127bf686874bd0c75d4a277c40d9560" + }, + "stderr": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "instruction_rows": 171 + } + ], + "direct_pe": { + "ret4": { + "va": "0x00779912", + "bytes": "c20400", + "section": ".text", + "file_offset": 3640594 + }, + "a20-family": { + "va": "0x00779a1f", + "bytes": "74108bcfe8286affff", + "section": ".text", + "file_offset": 3640863 + }, + "observed-stride": { + "va": "0x007b7333", + "bytes": "3bc777412bf8b8e9", + "section": ".text", + "file_offset": 3893043 + }, + "player-stride": { + "va": "0x0086c593", + "bytes": "57a1788baf0033c5", + "section": ".text", + "file_offset": 4635027 + }, + "turn-stride": { + "va": "0x00884cc3", + "bytes": "57a1788baf0033c5", + "section": ".text", + "file_offset": 4735171 + }, + "constructor-defaults": { + "va": "0x00af0dc8", + "bytes": "ffff7f7fffff7f7fffff7f7f", + "section": ".data", + "file_offset": 7271880 + } + }, + "checks": [ + { + "name": "all_commands_zero", + "status": "pass" + }, + { + "name": "all_stdout_nonempty", + "status": "pass" + }, + { + "name": "all_stderr_empty", + "status": "pass" + }, + { + "name": "source_stable", + "status": "pass" + }, + { + "name": "9913_is_truncated_prefix", + "status": "fail" + }, + { + "name": "9915_terminal_ret4", + "status": "pass" + }, + { + "name": "authority_contains_ret4", + "status": "pass" + }, + { + "name": "a20_is_truncated_prefix", + "status": "fail" + }, + { + "name": "a21_adds_complete_je", + "status": "pass" + }, + { + "name": "a23_adds_complete_mov", + "status": "pass" + }, + { + "name": "a28_adds_complete_call", + "status": "pass" + }, + { + "name": "direct_ret4", + "status": "pass" + }, + { + "name": "direct_a20_family", + "status": "pass" + }, + { + "name": "direct_defaults", + "status": "pass" + } + ], + "failed": [ + "9913_is_truncated_prefix", + "a20_is_truncated_prefix" + ], + "static_branch_exposure": [ + "existing-match/miss", + "spare/full capacity", + "empty/nonempty nested copy", + "null/nonnull destruction", + "short/long string", + "normal/unwind", + "bad/aligned boundaries" + ], + "runtime_unexercised": [ + "all listed static branches", + "allocator safety", + "event construction and IDs", + "PostEvent caller defaults/write order", + "exception throw", + "RNG state/draws" + ], + "original_helpers": [ + "0x00924fb6 allocation thunk", + "0x00924faa deallocation thunk", + "0x0046f8c0 original string comparison when called" + ] +} diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-authority.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-authority.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-authority.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-authority.stdout.txt new file mode 100644 index 0000000..c9625b1 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-authority.stdout.txt @@ -0,0 +1,94 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00779850 <.text+0x378850>: + 779850: 55 push ebp + 779851: 8b ec mov ebp,esp + 779853: 6a ff push 0xffffffff + 779855: 68 10 7b 98 00 push 0x987b10 + 77985a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779860: 50 push eax + 779861: 83 ec 08 sub esp,0x8 + 779864: 53 push ebx + 779865: 56 push esi + 779866: 57 push edi + 779867: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 77986c: 33 c5 xor eax,ebp + 77986e: 50 push eax + 77986f: 8d 45 f4 lea eax,[ebp-0xc] + 779872: 64 a3 00 00 00 00 mov fs:0x0,eax + 779878: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 77987b: 8b f1 mov esi,ecx + 77987d: 89 75 ec mov DWORD PTR [ebp-0x14],esi + 779880: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 779883: 33 c0 xor eax,eax + 779885: 89 06 mov DWORD PTR [esi],eax + 779887: 89 46 04 mov DWORD PTR [esi+0x4],eax + 77988a: 89 46 08 mov DWORD PTR [esi+0x8],eax + 77988d: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 779890: 2b 0b sub ecx,DWORD PTR [ebx] + 779892: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 779897: f7 e9 imul ecx + 779899: 03 d1 add edx,ecx + 77989b: c1 fa 06 sar edx,0x6 + 77989e: 8b fa mov edi,edx + 7798a0: b8 00 00 00 00 mov eax,0x0 + 7798a5: c1 ef 1f shr edi,0x1f + 7798a8: 03 fa add edi,edx + 7798aa: 89 06 mov DWORD PTR [esi],eax + 7798ac: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798af: 89 46 08 mov DWORD PTR [esi+0x8],eax + 7798b2: 74 4b je 0x7798ff + 7798b4: 81 ff 2c f7 34 02 cmp edi,0x234f72c + 7798ba: 76 0b jbe 0x7798c7 + 7798bc: 68 90 1f 9e 00 push 0x9e1f90 + 7798c1: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 7798c7: 8d 4e 0c lea ecx,[esi+0xc] + 7798ca: 57 push edi + 7798cb: e8 70 16 01 00 call 0x78af40 + 7798d0: 6b ff 74 imul edi,edi,0x74 + 7798d3: 8b 55 08 mov edx,DWORD PTR [ebp+0x8] + 7798d6: 52 push edx + 7798d7: 8d 56 0c lea edx,[esi+0xc] + 7798da: 52 push edx + 7798db: 03 f8 add edi,eax + 7798dd: 89 06 mov DWORD PTR [esi],eax + 7798df: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798e2: 89 7e 08 mov DWORD PTR [esi+0x8],edi + 7798e5: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 7798e8: 8b 1b mov ebx,DWORD PTR [ebx] + 7798ea: 50 push eax + 7798eb: 51 push ecx + 7798ec: 53 push ebx + 7798ed: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7798f4: e8 a7 8c ff ff call 0x7725a0 + 7798f9: 83 c4 14 add esp,0x14 + 7798fc: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798ff: 8b c6 mov eax,esi + 779901: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 779904: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 77990b: 59 pop ecx + 77990c: 5f pop edi + 77990d: 5e pop esi + 77990e: 5b pop ebx + 77990f: 8b e5 mov esp,ebp + 779911: 5d pop ebp + 779912: c2 04 00 ret 0x4 + 779915: 8b 4d ec mov ecx,DWORD PTR [ebp-0x14] + 779918: e8 63 fc ea ff call 0x629580 + 77991d: 6a 00 push 0x0 + 77991f: 6a 00 push 0x0 + 779921: e8 96 b6 1a 00 call 0x924fbc + 779926: cc int3 + 779927: cc int3 + 779928: cc int3 + 779929: cc int3 + 77992a: cc int3 + 77992b: cc int3 + 77992c: cc int3 + 77992d: cc int3 + 77992e: cc int3 + 77992f: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9913.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9913.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9913.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9913.stdout.txt new file mode 100644 index 0000000..9ff5acb --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9913.stdout.txt @@ -0,0 +1,79 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00779850 <.text+0x378850>: + 779850: 55 push ebp + 779851: 8b ec mov ebp,esp + 779853: 6a ff push 0xffffffff + 779855: 68 10 7b 98 00 push 0x987b10 + 77985a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779860: 50 push eax + 779861: 83 ec 08 sub esp,0x8 + 779864: 53 push ebx + 779865: 56 push esi + 779866: 57 push edi + 779867: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 77986c: 33 c5 xor eax,ebp + 77986e: 50 push eax + 77986f: 8d 45 f4 lea eax,[ebp-0xc] + 779872: 64 a3 00 00 00 00 mov fs:0x0,eax + 779878: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 77987b: 8b f1 mov esi,ecx + 77987d: 89 75 ec mov DWORD PTR [ebp-0x14],esi + 779880: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 779883: 33 c0 xor eax,eax + 779885: 89 06 mov DWORD PTR [esi],eax + 779887: 89 46 04 mov DWORD PTR [esi+0x4],eax + 77988a: 89 46 08 mov DWORD PTR [esi+0x8],eax + 77988d: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 779890: 2b 0b sub ecx,DWORD PTR [ebx] + 779892: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 779897: f7 e9 imul ecx + 779899: 03 d1 add edx,ecx + 77989b: c1 fa 06 sar edx,0x6 + 77989e: 8b fa mov edi,edx + 7798a0: b8 00 00 00 00 mov eax,0x0 + 7798a5: c1 ef 1f shr edi,0x1f + 7798a8: 03 fa add edi,edx + 7798aa: 89 06 mov DWORD PTR [esi],eax + 7798ac: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798af: 89 46 08 mov DWORD PTR [esi+0x8],eax + 7798b2: 74 4b je 0x7798ff + 7798b4: 81 ff 2c f7 34 02 cmp edi,0x234f72c + 7798ba: 76 0b jbe 0x7798c7 + 7798bc: 68 90 1f 9e 00 push 0x9e1f90 + 7798c1: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 7798c7: 8d 4e 0c lea ecx,[esi+0xc] + 7798ca: 57 push edi + 7798cb: e8 70 16 01 00 call 0x78af40 + 7798d0: 6b ff 74 imul edi,edi,0x74 + 7798d3: 8b 55 08 mov edx,DWORD PTR [ebp+0x8] + 7798d6: 52 push edx + 7798d7: 8d 56 0c lea edx,[esi+0xc] + 7798da: 52 push edx + 7798db: 03 f8 add edi,eax + 7798dd: 89 06 mov DWORD PTR [esi],eax + 7798df: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798e2: 89 7e 08 mov DWORD PTR [esi+0x8],edi + 7798e5: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 7798e8: 8b 1b mov ebx,DWORD PTR [ebx] + 7798ea: 50 push eax + 7798eb: 51 push ecx + 7798ec: 53 push ebx + 7798ed: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7798f4: e8 a7 8c ff ff call 0x7725a0 + 7798f9: 83 c4 14 add esp,0x14 + 7798fc: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798ff: 8b c6 mov eax,esi + 779901: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 779904: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 77990b: 59 pop ecx + 77990c: 5f pop edi + 77990d: 5e pop esi + 77990e: 5b pop ebx + 77990f: 8b e5 mov esp,ebp + 779911: 5d pop ebp + 779912: c2 ret 0x4 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9915.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9915.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9915.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9915.stdout.txt new file mode 100644 index 0000000..728eaf2 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-9915.stdout.txt @@ -0,0 +1,79 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00779850 <.text+0x378850>: + 779850: 55 push ebp + 779851: 8b ec mov ebp,esp + 779853: 6a ff push 0xffffffff + 779855: 68 10 7b 98 00 push 0x987b10 + 77985a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779860: 50 push eax + 779861: 83 ec 08 sub esp,0x8 + 779864: 53 push ebx + 779865: 56 push esi + 779866: 57 push edi + 779867: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 77986c: 33 c5 xor eax,ebp + 77986e: 50 push eax + 77986f: 8d 45 f4 lea eax,[ebp-0xc] + 779872: 64 a3 00 00 00 00 mov fs:0x0,eax + 779878: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 77987b: 8b f1 mov esi,ecx + 77987d: 89 75 ec mov DWORD PTR [ebp-0x14],esi + 779880: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 779883: 33 c0 xor eax,eax + 779885: 89 06 mov DWORD PTR [esi],eax + 779887: 89 46 04 mov DWORD PTR [esi+0x4],eax + 77988a: 89 46 08 mov DWORD PTR [esi+0x8],eax + 77988d: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 779890: 2b 0b sub ecx,DWORD PTR [ebx] + 779892: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 779897: f7 e9 imul ecx + 779899: 03 d1 add edx,ecx + 77989b: c1 fa 06 sar edx,0x6 + 77989e: 8b fa mov edi,edx + 7798a0: b8 00 00 00 00 mov eax,0x0 + 7798a5: c1 ef 1f shr edi,0x1f + 7798a8: 03 fa add edi,edx + 7798aa: 89 06 mov DWORD PTR [esi],eax + 7798ac: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798af: 89 46 08 mov DWORD PTR [esi+0x8],eax + 7798b2: 74 4b je 0x7798ff + 7798b4: 81 ff 2c f7 34 02 cmp edi,0x234f72c + 7798ba: 76 0b jbe 0x7798c7 + 7798bc: 68 90 1f 9e 00 push 0x9e1f90 + 7798c1: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 7798c7: 8d 4e 0c lea ecx,[esi+0xc] + 7798ca: 57 push edi + 7798cb: e8 70 16 01 00 call 0x78af40 + 7798d0: 6b ff 74 imul edi,edi,0x74 + 7798d3: 8b 55 08 mov edx,DWORD PTR [ebp+0x8] + 7798d6: 52 push edx + 7798d7: 8d 56 0c lea edx,[esi+0xc] + 7798da: 52 push edx + 7798db: 03 f8 add edi,eax + 7798dd: 89 06 mov DWORD PTR [esi],eax + 7798df: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798e2: 89 7e 08 mov DWORD PTR [esi+0x8],edi + 7798e5: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 7798e8: 8b 1b mov ebx,DWORD PTR [ebx] + 7798ea: 50 push eax + 7798eb: 51 push ecx + 7798ec: 53 push ebx + 7798ed: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7798f4: e8 a7 8c ff ff call 0x7725a0 + 7798f9: 83 c4 14 add esp,0x14 + 7798fc: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798ff: 8b c6 mov eax,esi + 779901: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 779904: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 77990b: 59 pop ecx + 77990c: 5f pop edi + 77990d: 5e pop esi + 77990e: 5b pop ebx + 77990f: 8b e5 mov esp,ebp + 779911: 5d pop ebp + 779912: c2 04 00 ret 0x4 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a20.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a20.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a20.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a20.stdout.txt new file mode 100644 index 0000000..0aec076 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a20.stdout.txt @@ -0,0 +1,175 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00779850 <.text+0x378850>: + 779850: 55 push ebp + 779851: 8b ec mov ebp,esp + 779853: 6a ff push 0xffffffff + 779855: 68 10 7b 98 00 push 0x987b10 + 77985a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779860: 50 push eax + 779861: 83 ec 08 sub esp,0x8 + 779864: 53 push ebx + 779865: 56 push esi + 779866: 57 push edi + 779867: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 77986c: 33 c5 xor eax,ebp + 77986e: 50 push eax + 77986f: 8d 45 f4 lea eax,[ebp-0xc] + 779872: 64 a3 00 00 00 00 mov fs:0x0,eax + 779878: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 77987b: 8b f1 mov esi,ecx + 77987d: 89 75 ec mov DWORD PTR [ebp-0x14],esi + 779880: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 779883: 33 c0 xor eax,eax + 779885: 89 06 mov DWORD PTR [esi],eax + 779887: 89 46 04 mov DWORD PTR [esi+0x4],eax + 77988a: 89 46 08 mov DWORD PTR [esi+0x8],eax + 77988d: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 779890: 2b 0b sub ecx,DWORD PTR [ebx] + 779892: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 779897: f7 e9 imul ecx + 779899: 03 d1 add edx,ecx + 77989b: c1 fa 06 sar edx,0x6 + 77989e: 8b fa mov edi,edx + 7798a0: b8 00 00 00 00 mov eax,0x0 + 7798a5: c1 ef 1f shr edi,0x1f + 7798a8: 03 fa add edi,edx + 7798aa: 89 06 mov DWORD PTR [esi],eax + 7798ac: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798af: 89 46 08 mov DWORD PTR [esi+0x8],eax + 7798b2: 74 4b je 0x7798ff + 7798b4: 81 ff 2c f7 34 02 cmp edi,0x234f72c + 7798ba: 76 0b jbe 0x7798c7 + 7798bc: 68 90 1f 9e 00 push 0x9e1f90 + 7798c1: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 7798c7: 8d 4e 0c lea ecx,[esi+0xc] + 7798ca: 57 push edi + 7798cb: e8 70 16 01 00 call 0x78af40 + 7798d0: 6b ff 74 imul edi,edi,0x74 + 7798d3: 8b 55 08 mov edx,DWORD PTR [ebp+0x8] + 7798d6: 52 push edx + 7798d7: 8d 56 0c lea edx,[esi+0xc] + 7798da: 52 push edx + 7798db: 03 f8 add edi,eax + 7798dd: 89 06 mov DWORD PTR [esi],eax + 7798df: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798e2: 89 7e 08 mov DWORD PTR [esi+0x8],edi + 7798e5: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 7798e8: 8b 1b mov ebx,DWORD PTR [ebx] + 7798ea: 50 push eax + 7798eb: 51 push ecx + 7798ec: 53 push ebx + 7798ed: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7798f4: e8 a7 8c ff ff call 0x7725a0 + 7798f9: 83 c4 14 add esp,0x14 + 7798fc: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798ff: 8b c6 mov eax,esi + 779901: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 779904: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 77990b: 59 pop ecx + 77990c: 5f pop edi + 77990d: 5e pop esi + 77990e: 5b pop ebx + 77990f: 8b e5 mov esp,ebp + 779911: 5d pop ebp + 779912: c2 04 00 ret 0x4 + 779915: 8b 4d ec mov ecx,DWORD PTR [ebp-0x14] + 779918: e8 63 fc ea ff call 0x629580 + 77991d: 6a 00 push 0x0 + 77991f: 6a 00 push 0x0 + 779921: e8 96 b6 1a 00 call 0x924fbc + 779926: cc int3 + 779927: cc int3 + 779928: cc int3 + 779929: cc int3 + 77992a: cc int3 + 77992b: cc int3 + 77992c: cc int3 + 77992d: cc int3 + 77992e: cc int3 + 77992f: cc int3 + 779930: 55 push ebp + 779931: 8b ec mov ebp,esp + 779933: 6a ff push 0xffffffff + 779935: 68 38 06 97 00 push 0x970638 + 77993a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779940: 50 push eax + 779941: 83 ec 20 sub esp,0x20 + 779944: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 779949: 33 c5 xor eax,ebp + 77994b: 89 45 f0 mov DWORD PTR [ebp-0x10],eax + 77994e: 56 push esi + 77994f: 50 push eax + 779950: 8d 45 f4 lea eax,[ebp-0xc] + 779953: 64 a3 00 00 00 00 mov fs:0x0,eax + 779959: 8b f1 mov esi,ecx + 77995b: 8b 86 8c 00 00 00 mov eax,DWORD PTR [esi+0x8c] + 779961: 85 c0 test eax,eax + 779963: 75 0c jne 0x779971 + 779965: 68 34 24 a2 00 push 0xa22434 + 77996a: e8 e1 05 14 00 call 0x8b9f50 + 77996f: eb 7e jmp 0x7799ef + 779971: 50 push eax + 779972: e8 09 cc c9 ff call 0x416580 + 779977: 83 c4 04 add esp,0x4 + 77997a: 85 c0 test eax,eax + 77997c: 74 0c je 0x77998a + 77997e: 68 f8 23 a2 00 push 0xa223f8 + 779983: e8 58 08 14 00 call 0x8ba1e0 + 779988: eb 65 jmp 0x7799ef + 77998a: e8 d1 58 dc ff call 0x53f260 + 77998f: c7 45 e8 0f 00 00 00 mov DWORD PTR [ebp-0x18],0xf + 779996: c7 45 e4 00 00 00 00 mov DWORD PTR [ebp-0x1c],0x0 + 77999d: c6 45 d4 00 mov BYTE PTR [ebp-0x2c],0x0 + 7799a1: 8d 4d d4 lea ecx,[ebp-0x2c] + 7799a4: 51 push ecx + 7799a5: 50 push eax + 7799a6: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7799ad: e8 fe 52 dc ff call 0x53ecb0 + 7799b2: 8b 45 d4 mov eax,DWORD PTR [ebp-0x2c] + 7799b5: 83 c4 08 add esp,0x8 + 7799b8: 83 7d e8 10 cmp DWORD PTR [ebp-0x18],0x10 + 7799bc: 73 03 jae 0x7799c1 + 7799be: 8d 45 d4 lea eax,[ebp-0x2c] + 7799c1: 8b 96 8c 00 00 00 mov edx,DWORD PTR [esi+0x8c] + 7799c7: 6a 00 push 0x0 + 7799c9: 56 push esi + 7799ca: 68 a0 8d 77 00 push 0x778da0 + 7799cf: 68 e0 ea 76 00 push 0x76eae0 + 7799d4: 6a 00 push 0x0 + 7799d6: 50 push eax + 7799d7: 52 push edx + 7799d8: e8 f3 d7 c9 ff call 0x4171d0 + 7799dd: 83 c4 1c add esp,0x1c + 7799e0: 83 7d e8 10 cmp DWORD PTR [ebp-0x18],0x10 + 7799e4: 72 0c jb 0x7799f2 + 7799e6: 8b 45 d4 mov eax,DWORD PTR [ebp-0x2c] + 7799e9: 50 push eax + 7799ea: e8 bb b5 1a 00 call 0x924faa + 7799ef: 83 c4 04 add esp,0x4 + 7799f2: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 7799f5: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 7799fc: 59 pop ecx + 7799fd: 5e pop esi + 7799fe: 8b 4d f0 mov ecx,DWORD PTR [ebp-0x10] + 779a01: 33 cd xor ecx,ebp + 779a03: e8 7a b3 1a 00 call 0x924d82 + 779a08: 8b e5 mov esp,ebp + 779a0a: 5d pop ebp + 779a0b: c3 ret + 779a0c: cc int3 + 779a0d: cc int3 + 779a0e: cc int3 + 779a0f: cc int3 + 779a10: 53 push ebx + 779a11: 56 push esi + 779a12: 8b f1 mov esi,ecx + 779a14: 57 push edi + 779a15: 8b be 24 01 00 00 mov edi,DWORD PTR [esi+0x124] + 779a1b: 33 db xor ebx,ebx + 779a1d: 3b fb cmp edi,ebx + 779a1f: 74 je 0x779a31 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a21.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a21.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a21.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a21.stdout.txt new file mode 100644 index 0000000..f692c82 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a21.stdout.txt @@ -0,0 +1,175 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00779850 <.text+0x378850>: + 779850: 55 push ebp + 779851: 8b ec mov ebp,esp + 779853: 6a ff push 0xffffffff + 779855: 68 10 7b 98 00 push 0x987b10 + 77985a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779860: 50 push eax + 779861: 83 ec 08 sub esp,0x8 + 779864: 53 push ebx + 779865: 56 push esi + 779866: 57 push edi + 779867: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 77986c: 33 c5 xor eax,ebp + 77986e: 50 push eax + 77986f: 8d 45 f4 lea eax,[ebp-0xc] + 779872: 64 a3 00 00 00 00 mov fs:0x0,eax + 779878: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 77987b: 8b f1 mov esi,ecx + 77987d: 89 75 ec mov DWORD PTR [ebp-0x14],esi + 779880: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 779883: 33 c0 xor eax,eax + 779885: 89 06 mov DWORD PTR [esi],eax + 779887: 89 46 04 mov DWORD PTR [esi+0x4],eax + 77988a: 89 46 08 mov DWORD PTR [esi+0x8],eax + 77988d: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 779890: 2b 0b sub ecx,DWORD PTR [ebx] + 779892: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 779897: f7 e9 imul ecx + 779899: 03 d1 add edx,ecx + 77989b: c1 fa 06 sar edx,0x6 + 77989e: 8b fa mov edi,edx + 7798a0: b8 00 00 00 00 mov eax,0x0 + 7798a5: c1 ef 1f shr edi,0x1f + 7798a8: 03 fa add edi,edx + 7798aa: 89 06 mov DWORD PTR [esi],eax + 7798ac: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798af: 89 46 08 mov DWORD PTR [esi+0x8],eax + 7798b2: 74 4b je 0x7798ff + 7798b4: 81 ff 2c f7 34 02 cmp edi,0x234f72c + 7798ba: 76 0b jbe 0x7798c7 + 7798bc: 68 90 1f 9e 00 push 0x9e1f90 + 7798c1: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 7798c7: 8d 4e 0c lea ecx,[esi+0xc] + 7798ca: 57 push edi + 7798cb: e8 70 16 01 00 call 0x78af40 + 7798d0: 6b ff 74 imul edi,edi,0x74 + 7798d3: 8b 55 08 mov edx,DWORD PTR [ebp+0x8] + 7798d6: 52 push edx + 7798d7: 8d 56 0c lea edx,[esi+0xc] + 7798da: 52 push edx + 7798db: 03 f8 add edi,eax + 7798dd: 89 06 mov DWORD PTR [esi],eax + 7798df: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798e2: 89 7e 08 mov DWORD PTR [esi+0x8],edi + 7798e5: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 7798e8: 8b 1b mov ebx,DWORD PTR [ebx] + 7798ea: 50 push eax + 7798eb: 51 push ecx + 7798ec: 53 push ebx + 7798ed: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7798f4: e8 a7 8c ff ff call 0x7725a0 + 7798f9: 83 c4 14 add esp,0x14 + 7798fc: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798ff: 8b c6 mov eax,esi + 779901: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 779904: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 77990b: 59 pop ecx + 77990c: 5f pop edi + 77990d: 5e pop esi + 77990e: 5b pop ebx + 77990f: 8b e5 mov esp,ebp + 779911: 5d pop ebp + 779912: c2 04 00 ret 0x4 + 779915: 8b 4d ec mov ecx,DWORD PTR [ebp-0x14] + 779918: e8 63 fc ea ff call 0x629580 + 77991d: 6a 00 push 0x0 + 77991f: 6a 00 push 0x0 + 779921: e8 96 b6 1a 00 call 0x924fbc + 779926: cc int3 + 779927: cc int3 + 779928: cc int3 + 779929: cc int3 + 77992a: cc int3 + 77992b: cc int3 + 77992c: cc int3 + 77992d: cc int3 + 77992e: cc int3 + 77992f: cc int3 + 779930: 55 push ebp + 779931: 8b ec mov ebp,esp + 779933: 6a ff push 0xffffffff + 779935: 68 38 06 97 00 push 0x970638 + 77993a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779940: 50 push eax + 779941: 83 ec 20 sub esp,0x20 + 779944: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 779949: 33 c5 xor eax,ebp + 77994b: 89 45 f0 mov DWORD PTR [ebp-0x10],eax + 77994e: 56 push esi + 77994f: 50 push eax + 779950: 8d 45 f4 lea eax,[ebp-0xc] + 779953: 64 a3 00 00 00 00 mov fs:0x0,eax + 779959: 8b f1 mov esi,ecx + 77995b: 8b 86 8c 00 00 00 mov eax,DWORD PTR [esi+0x8c] + 779961: 85 c0 test eax,eax + 779963: 75 0c jne 0x779971 + 779965: 68 34 24 a2 00 push 0xa22434 + 77996a: e8 e1 05 14 00 call 0x8b9f50 + 77996f: eb 7e jmp 0x7799ef + 779971: 50 push eax + 779972: e8 09 cc c9 ff call 0x416580 + 779977: 83 c4 04 add esp,0x4 + 77997a: 85 c0 test eax,eax + 77997c: 74 0c je 0x77998a + 77997e: 68 f8 23 a2 00 push 0xa223f8 + 779983: e8 58 08 14 00 call 0x8ba1e0 + 779988: eb 65 jmp 0x7799ef + 77998a: e8 d1 58 dc ff call 0x53f260 + 77998f: c7 45 e8 0f 00 00 00 mov DWORD PTR [ebp-0x18],0xf + 779996: c7 45 e4 00 00 00 00 mov DWORD PTR [ebp-0x1c],0x0 + 77999d: c6 45 d4 00 mov BYTE PTR [ebp-0x2c],0x0 + 7799a1: 8d 4d d4 lea ecx,[ebp-0x2c] + 7799a4: 51 push ecx + 7799a5: 50 push eax + 7799a6: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7799ad: e8 fe 52 dc ff call 0x53ecb0 + 7799b2: 8b 45 d4 mov eax,DWORD PTR [ebp-0x2c] + 7799b5: 83 c4 08 add esp,0x8 + 7799b8: 83 7d e8 10 cmp DWORD PTR [ebp-0x18],0x10 + 7799bc: 73 03 jae 0x7799c1 + 7799be: 8d 45 d4 lea eax,[ebp-0x2c] + 7799c1: 8b 96 8c 00 00 00 mov edx,DWORD PTR [esi+0x8c] + 7799c7: 6a 00 push 0x0 + 7799c9: 56 push esi + 7799ca: 68 a0 8d 77 00 push 0x778da0 + 7799cf: 68 e0 ea 76 00 push 0x76eae0 + 7799d4: 6a 00 push 0x0 + 7799d6: 50 push eax + 7799d7: 52 push edx + 7799d8: e8 f3 d7 c9 ff call 0x4171d0 + 7799dd: 83 c4 1c add esp,0x1c + 7799e0: 83 7d e8 10 cmp DWORD PTR [ebp-0x18],0x10 + 7799e4: 72 0c jb 0x7799f2 + 7799e6: 8b 45 d4 mov eax,DWORD PTR [ebp-0x2c] + 7799e9: 50 push eax + 7799ea: e8 bb b5 1a 00 call 0x924faa + 7799ef: 83 c4 04 add esp,0x4 + 7799f2: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 7799f5: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 7799fc: 59 pop ecx + 7799fd: 5e pop esi + 7799fe: 8b 4d f0 mov ecx,DWORD PTR [ebp-0x10] + 779a01: 33 cd xor ecx,ebp + 779a03: e8 7a b3 1a 00 call 0x924d82 + 779a08: 8b e5 mov esp,ebp + 779a0a: 5d pop ebp + 779a0b: c3 ret + 779a0c: cc int3 + 779a0d: cc int3 + 779a0e: cc int3 + 779a0f: cc int3 + 779a10: 53 push ebx + 779a11: 56 push esi + 779a12: 8b f1 mov esi,ecx + 779a14: 57 push edi + 779a15: 8b be 24 01 00 00 mov edi,DWORD PTR [esi+0x124] + 779a1b: 33 db xor ebx,ebx + 779a1d: 3b fb cmp edi,ebx + 779a1f: 74 10 je 0x779a31 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a23.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a23.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a23.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a23.stdout.txt new file mode 100644 index 0000000..1b7cafd --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a23.stdout.txt @@ -0,0 +1,176 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00779850 <.text+0x378850>: + 779850: 55 push ebp + 779851: 8b ec mov ebp,esp + 779853: 6a ff push 0xffffffff + 779855: 68 10 7b 98 00 push 0x987b10 + 77985a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779860: 50 push eax + 779861: 83 ec 08 sub esp,0x8 + 779864: 53 push ebx + 779865: 56 push esi + 779866: 57 push edi + 779867: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 77986c: 33 c5 xor eax,ebp + 77986e: 50 push eax + 77986f: 8d 45 f4 lea eax,[ebp-0xc] + 779872: 64 a3 00 00 00 00 mov fs:0x0,eax + 779878: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 77987b: 8b f1 mov esi,ecx + 77987d: 89 75 ec mov DWORD PTR [ebp-0x14],esi + 779880: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 779883: 33 c0 xor eax,eax + 779885: 89 06 mov DWORD PTR [esi],eax + 779887: 89 46 04 mov DWORD PTR [esi+0x4],eax + 77988a: 89 46 08 mov DWORD PTR [esi+0x8],eax + 77988d: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 779890: 2b 0b sub ecx,DWORD PTR [ebx] + 779892: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 779897: f7 e9 imul ecx + 779899: 03 d1 add edx,ecx + 77989b: c1 fa 06 sar edx,0x6 + 77989e: 8b fa mov edi,edx + 7798a0: b8 00 00 00 00 mov eax,0x0 + 7798a5: c1 ef 1f shr edi,0x1f + 7798a8: 03 fa add edi,edx + 7798aa: 89 06 mov DWORD PTR [esi],eax + 7798ac: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798af: 89 46 08 mov DWORD PTR [esi+0x8],eax + 7798b2: 74 4b je 0x7798ff + 7798b4: 81 ff 2c f7 34 02 cmp edi,0x234f72c + 7798ba: 76 0b jbe 0x7798c7 + 7798bc: 68 90 1f 9e 00 push 0x9e1f90 + 7798c1: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 7798c7: 8d 4e 0c lea ecx,[esi+0xc] + 7798ca: 57 push edi + 7798cb: e8 70 16 01 00 call 0x78af40 + 7798d0: 6b ff 74 imul edi,edi,0x74 + 7798d3: 8b 55 08 mov edx,DWORD PTR [ebp+0x8] + 7798d6: 52 push edx + 7798d7: 8d 56 0c lea edx,[esi+0xc] + 7798da: 52 push edx + 7798db: 03 f8 add edi,eax + 7798dd: 89 06 mov DWORD PTR [esi],eax + 7798df: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798e2: 89 7e 08 mov DWORD PTR [esi+0x8],edi + 7798e5: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 7798e8: 8b 1b mov ebx,DWORD PTR [ebx] + 7798ea: 50 push eax + 7798eb: 51 push ecx + 7798ec: 53 push ebx + 7798ed: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7798f4: e8 a7 8c ff ff call 0x7725a0 + 7798f9: 83 c4 14 add esp,0x14 + 7798fc: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798ff: 8b c6 mov eax,esi + 779901: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 779904: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 77990b: 59 pop ecx + 77990c: 5f pop edi + 77990d: 5e pop esi + 77990e: 5b pop ebx + 77990f: 8b e5 mov esp,ebp + 779911: 5d pop ebp + 779912: c2 04 00 ret 0x4 + 779915: 8b 4d ec mov ecx,DWORD PTR [ebp-0x14] + 779918: e8 63 fc ea ff call 0x629580 + 77991d: 6a 00 push 0x0 + 77991f: 6a 00 push 0x0 + 779921: e8 96 b6 1a 00 call 0x924fbc + 779926: cc int3 + 779927: cc int3 + 779928: cc int3 + 779929: cc int3 + 77992a: cc int3 + 77992b: cc int3 + 77992c: cc int3 + 77992d: cc int3 + 77992e: cc int3 + 77992f: cc int3 + 779930: 55 push ebp + 779931: 8b ec mov ebp,esp + 779933: 6a ff push 0xffffffff + 779935: 68 38 06 97 00 push 0x970638 + 77993a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779940: 50 push eax + 779941: 83 ec 20 sub esp,0x20 + 779944: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 779949: 33 c5 xor eax,ebp + 77994b: 89 45 f0 mov DWORD PTR [ebp-0x10],eax + 77994e: 56 push esi + 77994f: 50 push eax + 779950: 8d 45 f4 lea eax,[ebp-0xc] + 779953: 64 a3 00 00 00 00 mov fs:0x0,eax + 779959: 8b f1 mov esi,ecx + 77995b: 8b 86 8c 00 00 00 mov eax,DWORD PTR [esi+0x8c] + 779961: 85 c0 test eax,eax + 779963: 75 0c jne 0x779971 + 779965: 68 34 24 a2 00 push 0xa22434 + 77996a: e8 e1 05 14 00 call 0x8b9f50 + 77996f: eb 7e jmp 0x7799ef + 779971: 50 push eax + 779972: e8 09 cc c9 ff call 0x416580 + 779977: 83 c4 04 add esp,0x4 + 77997a: 85 c0 test eax,eax + 77997c: 74 0c je 0x77998a + 77997e: 68 f8 23 a2 00 push 0xa223f8 + 779983: e8 58 08 14 00 call 0x8ba1e0 + 779988: eb 65 jmp 0x7799ef + 77998a: e8 d1 58 dc ff call 0x53f260 + 77998f: c7 45 e8 0f 00 00 00 mov DWORD PTR [ebp-0x18],0xf + 779996: c7 45 e4 00 00 00 00 mov DWORD PTR [ebp-0x1c],0x0 + 77999d: c6 45 d4 00 mov BYTE PTR [ebp-0x2c],0x0 + 7799a1: 8d 4d d4 lea ecx,[ebp-0x2c] + 7799a4: 51 push ecx + 7799a5: 50 push eax + 7799a6: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7799ad: e8 fe 52 dc ff call 0x53ecb0 + 7799b2: 8b 45 d4 mov eax,DWORD PTR [ebp-0x2c] + 7799b5: 83 c4 08 add esp,0x8 + 7799b8: 83 7d e8 10 cmp DWORD PTR [ebp-0x18],0x10 + 7799bc: 73 03 jae 0x7799c1 + 7799be: 8d 45 d4 lea eax,[ebp-0x2c] + 7799c1: 8b 96 8c 00 00 00 mov edx,DWORD PTR [esi+0x8c] + 7799c7: 6a 00 push 0x0 + 7799c9: 56 push esi + 7799ca: 68 a0 8d 77 00 push 0x778da0 + 7799cf: 68 e0 ea 76 00 push 0x76eae0 + 7799d4: 6a 00 push 0x0 + 7799d6: 50 push eax + 7799d7: 52 push edx + 7799d8: e8 f3 d7 c9 ff call 0x4171d0 + 7799dd: 83 c4 1c add esp,0x1c + 7799e0: 83 7d e8 10 cmp DWORD PTR [ebp-0x18],0x10 + 7799e4: 72 0c jb 0x7799f2 + 7799e6: 8b 45 d4 mov eax,DWORD PTR [ebp-0x2c] + 7799e9: 50 push eax + 7799ea: e8 bb b5 1a 00 call 0x924faa + 7799ef: 83 c4 04 add esp,0x4 + 7799f2: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 7799f5: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 7799fc: 59 pop ecx + 7799fd: 5e pop esi + 7799fe: 8b 4d f0 mov ecx,DWORD PTR [ebp-0x10] + 779a01: 33 cd xor ecx,ebp + 779a03: e8 7a b3 1a 00 call 0x924d82 + 779a08: 8b e5 mov esp,ebp + 779a0a: 5d pop ebp + 779a0b: c3 ret + 779a0c: cc int3 + 779a0d: cc int3 + 779a0e: cc int3 + 779a0f: cc int3 + 779a10: 53 push ebx + 779a11: 56 push esi + 779a12: 8b f1 mov esi,ecx + 779a14: 57 push edi + 779a15: 8b be 24 01 00 00 mov edi,DWORD PTR [esi+0x124] + 779a1b: 33 db xor ebx,ebx + 779a1d: 3b fb cmp edi,ebx + 779a1f: 74 10 je 0x779a31 + 779a21: 8b cf mov ecx,edi diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a28.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a28.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a28.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a28.stdout.txt new file mode 100644 index 0000000..5506abc --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-copy-stop-a28.stdout.txt @@ -0,0 +1,177 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00779850 <.text+0x378850>: + 779850: 55 push ebp + 779851: 8b ec mov ebp,esp + 779853: 6a ff push 0xffffffff + 779855: 68 10 7b 98 00 push 0x987b10 + 77985a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779860: 50 push eax + 779861: 83 ec 08 sub esp,0x8 + 779864: 53 push ebx + 779865: 56 push esi + 779866: 57 push edi + 779867: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 77986c: 33 c5 xor eax,ebp + 77986e: 50 push eax + 77986f: 8d 45 f4 lea eax,[ebp-0xc] + 779872: 64 a3 00 00 00 00 mov fs:0x0,eax + 779878: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 77987b: 8b f1 mov esi,ecx + 77987d: 89 75 ec mov DWORD PTR [ebp-0x14],esi + 779880: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 779883: 33 c0 xor eax,eax + 779885: 89 06 mov DWORD PTR [esi],eax + 779887: 89 46 04 mov DWORD PTR [esi+0x4],eax + 77988a: 89 46 08 mov DWORD PTR [esi+0x8],eax + 77988d: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 779890: 2b 0b sub ecx,DWORD PTR [ebx] + 779892: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 779897: f7 e9 imul ecx + 779899: 03 d1 add edx,ecx + 77989b: c1 fa 06 sar edx,0x6 + 77989e: 8b fa mov edi,edx + 7798a0: b8 00 00 00 00 mov eax,0x0 + 7798a5: c1 ef 1f shr edi,0x1f + 7798a8: 03 fa add edi,edx + 7798aa: 89 06 mov DWORD PTR [esi],eax + 7798ac: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798af: 89 46 08 mov DWORD PTR [esi+0x8],eax + 7798b2: 74 4b je 0x7798ff + 7798b4: 81 ff 2c f7 34 02 cmp edi,0x234f72c + 7798ba: 76 0b jbe 0x7798c7 + 7798bc: 68 90 1f 9e 00 push 0x9e1f90 + 7798c1: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 7798c7: 8d 4e 0c lea ecx,[esi+0xc] + 7798ca: 57 push edi + 7798cb: e8 70 16 01 00 call 0x78af40 + 7798d0: 6b ff 74 imul edi,edi,0x74 + 7798d3: 8b 55 08 mov edx,DWORD PTR [ebp+0x8] + 7798d6: 52 push edx + 7798d7: 8d 56 0c lea edx,[esi+0xc] + 7798da: 52 push edx + 7798db: 03 f8 add edi,eax + 7798dd: 89 06 mov DWORD PTR [esi],eax + 7798df: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798e2: 89 7e 08 mov DWORD PTR [esi+0x8],edi + 7798e5: 8b 4b 04 mov ecx,DWORD PTR [ebx+0x4] + 7798e8: 8b 1b mov ebx,DWORD PTR [ebx] + 7798ea: 50 push eax + 7798eb: 51 push ecx + 7798ec: 53 push ebx + 7798ed: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7798f4: e8 a7 8c ff ff call 0x7725a0 + 7798f9: 83 c4 14 add esp,0x14 + 7798fc: 89 46 04 mov DWORD PTR [esi+0x4],eax + 7798ff: 8b c6 mov eax,esi + 779901: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 779904: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 77990b: 59 pop ecx + 77990c: 5f pop edi + 77990d: 5e pop esi + 77990e: 5b pop ebx + 77990f: 8b e5 mov esp,ebp + 779911: 5d pop ebp + 779912: c2 04 00 ret 0x4 + 779915: 8b 4d ec mov ecx,DWORD PTR [ebp-0x14] + 779918: e8 63 fc ea ff call 0x629580 + 77991d: 6a 00 push 0x0 + 77991f: 6a 00 push 0x0 + 779921: e8 96 b6 1a 00 call 0x924fbc + 779926: cc int3 + 779927: cc int3 + 779928: cc int3 + 779929: cc int3 + 77992a: cc int3 + 77992b: cc int3 + 77992c: cc int3 + 77992d: cc int3 + 77992e: cc int3 + 77992f: cc int3 + 779930: 55 push ebp + 779931: 8b ec mov ebp,esp + 779933: 6a ff push 0xffffffff + 779935: 68 38 06 97 00 push 0x970638 + 77993a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 779940: 50 push eax + 779941: 83 ec 20 sub esp,0x20 + 779944: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 779949: 33 c5 xor eax,ebp + 77994b: 89 45 f0 mov DWORD PTR [ebp-0x10],eax + 77994e: 56 push esi + 77994f: 50 push eax + 779950: 8d 45 f4 lea eax,[ebp-0xc] + 779953: 64 a3 00 00 00 00 mov fs:0x0,eax + 779959: 8b f1 mov esi,ecx + 77995b: 8b 86 8c 00 00 00 mov eax,DWORD PTR [esi+0x8c] + 779961: 85 c0 test eax,eax + 779963: 75 0c jne 0x779971 + 779965: 68 34 24 a2 00 push 0xa22434 + 77996a: e8 e1 05 14 00 call 0x8b9f50 + 77996f: eb 7e jmp 0x7799ef + 779971: 50 push eax + 779972: e8 09 cc c9 ff call 0x416580 + 779977: 83 c4 04 add esp,0x4 + 77997a: 85 c0 test eax,eax + 77997c: 74 0c je 0x77998a + 77997e: 68 f8 23 a2 00 push 0xa223f8 + 779983: e8 58 08 14 00 call 0x8ba1e0 + 779988: eb 65 jmp 0x7799ef + 77998a: e8 d1 58 dc ff call 0x53f260 + 77998f: c7 45 e8 0f 00 00 00 mov DWORD PTR [ebp-0x18],0xf + 779996: c7 45 e4 00 00 00 00 mov DWORD PTR [ebp-0x1c],0x0 + 77999d: c6 45 d4 00 mov BYTE PTR [ebp-0x2c],0x0 + 7799a1: 8d 4d d4 lea ecx,[ebp-0x2c] + 7799a4: 51 push ecx + 7799a5: 50 push eax + 7799a6: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7799ad: e8 fe 52 dc ff call 0x53ecb0 + 7799b2: 8b 45 d4 mov eax,DWORD PTR [ebp-0x2c] + 7799b5: 83 c4 08 add esp,0x8 + 7799b8: 83 7d e8 10 cmp DWORD PTR [ebp-0x18],0x10 + 7799bc: 73 03 jae 0x7799c1 + 7799be: 8d 45 d4 lea eax,[ebp-0x2c] + 7799c1: 8b 96 8c 00 00 00 mov edx,DWORD PTR [esi+0x8c] + 7799c7: 6a 00 push 0x0 + 7799c9: 56 push esi + 7799ca: 68 a0 8d 77 00 push 0x778da0 + 7799cf: 68 e0 ea 76 00 push 0x76eae0 + 7799d4: 6a 00 push 0x0 + 7799d6: 50 push eax + 7799d7: 52 push edx + 7799d8: e8 f3 d7 c9 ff call 0x4171d0 + 7799dd: 83 c4 1c add esp,0x1c + 7799e0: 83 7d e8 10 cmp DWORD PTR [ebp-0x18],0x10 + 7799e4: 72 0c jb 0x7799f2 + 7799e6: 8b 45 d4 mov eax,DWORD PTR [ebp-0x2c] + 7799e9: 50 push eax + 7799ea: e8 bb b5 1a 00 call 0x924faa + 7799ef: 83 c4 04 add esp,0x4 + 7799f2: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 7799f5: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 7799fc: 59 pop ecx + 7799fd: 5e pop esi + 7799fe: 8b 4d f0 mov ecx,DWORD PTR [ebp-0x10] + 779a01: 33 cd xor ecx,ebp + 779a03: e8 7a b3 1a 00 call 0x924d82 + 779a08: 8b e5 mov esp,ebp + 779a0a: 5d pop ebp + 779a0b: c3 ret + 779a0c: cc int3 + 779a0d: cc int3 + 779a0e: cc int3 + 779a0f: cc int3 + 779a10: 53 push ebx + 779a11: 56 push esi + 779a12: 8b f1 mov esi,ecx + 779a14: 57 push edi + 779a15: 8b be 24 01 00 00 mov edi,DWORD PTR [esi+0x124] + 779a1b: 33 db xor ebx,ebx + 779a1d: 3b fb cmp edi,ebx + 779a1f: 74 10 je 0x779a31 + 779a21: 8b cf mov ecx,edi + 779a23: e8 28 6a ff ff call 0x770450 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-dtor.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-dtor.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-dtor.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-dtor.stdout.txt new file mode 100644 index 0000000..74115e5 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/nested-dtor.stdout.txt @@ -0,0 +1,43 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00629580 <.text+0x228580>: + 629580: 57 push edi + 629581: 8b f9 mov edi,ecx + 629583: 83 3f 00 cmp DWORD PTR [edi],0x0 + 629586: 74 36 je 0x6295be + 629588: 53 push ebx + 629589: 56 push esi + 62958a: ff 15 2c d1 9d 00 call DWORD PTR ds:0x9dd12c + 629590: 8b 5f 04 mov ebx,DWORD PTR [edi+0x4] + 629593: 8b 37 mov esi,DWORD PTR [edi] + 629595: 3b f3 cmp esi,ebx + 629597: 74 18 je 0x6295b1 + 629599: 8d a4 24 00 00 00 00 lea esp,[esp+0x0] + 6295a0: 8b 06 mov eax,DWORD PTR [esi] + 6295a2: 8b 10 mov edx,DWORD PTR [eax] + 6295a4: 6a 00 push 0x0 + 6295a6: 8b ce mov ecx,esi + 6295a8: ff d2 call edx + 6295aa: 83 c6 74 add esi,0x74 + 6295ad: 3b f3 cmp esi,ebx + 6295af: 75 ef jne 0x6295a0 + 6295b1: 8b 07 mov eax,DWORD PTR [edi] + 6295b3: 50 push eax + 6295b4: e8 f1 b9 2f 00 call 0x924faa + 6295b9: 83 c4 04 add esp,0x4 + 6295bc: 5e pop esi + 6295bd: 5b pop ebx + 6295be: 33 c0 xor eax,eax + 6295c0: 89 07 mov DWORD PTR [edi],eax + 6295c2: 89 47 04 mov DWORD PTR [edi+0x4],eax + 6295c5: 89 47 08 mov DWORD PTR [edi+0x8],eax + 6295c8: 5f pop edi + 6295c9: c3 ret + 6295ca: cc int3 + 6295cb: cc int3 + 6295cc: cc int3 + 6295cd: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-alloc.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-alloc.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-alloc.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-alloc.stdout.txt new file mode 100644 index 0000000..b6b02d9 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-alloc.stdout.txt @@ -0,0 +1,36 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +0057e590 <.text+0x17d590>: + 57e590: 55 push ebp + 57e591: 8b ec mov ebp,esp + 57e593: 8b 4d 08 mov ecx,DWORD PTR [ebp+0x8] + 57e596: 83 ec 0c sub esp,0xc + 57e599: 33 c0 xor eax,eax + 57e59b: 85 c9 test ecx,ecx + 57e59d: 74 41 je 0x57e5e0 + 57e59f: 81 f9 5d 74 d1 05 cmp ecx,0x5d1745d + 57e5a5: 77 10 ja 0x57e5b7 + 57e5a7: 6b c9 2c imul ecx,ecx,0x2c + 57e5aa: 51 push ecx + 57e5ab: e8 06 6a 3a 00 call 0x924fb6 + 57e5b0: 83 c4 04 add esp,0x4 + 57e5b3: 85 c0 test eax,eax + 57e5b5: 75 29 jne 0x57e5e0 + 57e5b7: 8d 45 08 lea eax,[ebp+0x8] + 57e5ba: 50 push eax + 57e5bb: 8d 4d f4 lea ecx,[ebp-0xc] + 57e5be: c7 45 08 00 00 00 00 mov DWORD PTR [ebp+0x8],0x0 + 57e5c5: ff 15 bc d1 9d 00 call DWORD PTR ds:0x9dd1bc + 57e5cb: 68 90 d1 a8 00 push 0xa8d190 + 57e5d0: 8d 4d f4 lea ecx,[ebp-0xc] + 57e5d3: 51 push ecx + 57e5d4: c7 45 f4 00 1f 9e 00 mov DWORD PTR [ebp-0xc],0x9e1f00 + 57e5db: e8 dc 69 3a 00 call 0x924fbc + 57e5e0: 8b e5 mov esp,ebp + 57e5e2: 5d pop ebp + 57e5e3: c2 04 00 ret 0x4 + 57e5e6: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-append.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-append.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-append.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-append.stdout.txt new file mode 100644 index 0000000..e8f5036 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-append.stdout.txt @@ -0,0 +1,63 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +007b7320 <.text+0x3b6320>: + 7b7320: 55 push ebp + 7b7321: 8b ec mov ebp,esp + 7b7323: 56 push esi + 7b7324: 8b f1 mov esi,ecx + 7b7326: 8b 4e 04 mov ecx,DWORD PTR [esi+0x4] + 7b7329: 57 push edi + 7b732a: 8b 7d 08 mov edi,DWORD PTR [ebp+0x8] + 7b732d: 3b f9 cmp edi,ecx + 7b732f: 73 47 jae 0x7b7378 + 7b7331: 8b 06 mov eax,DWORD PTR [esi] + 7b7333: 3b c7 cmp eax,edi + 7b7335: 77 41 ja 0x7b7378 + 7b7337: 2b f8 sub edi,eax + 7b7339: b8 e9 a2 8b 2e mov eax,0x2e8ba2e9 + 7b733e: f7 ef imul edi + 7b7340: c1 fa 03 sar edx,0x3 + 7b7343: 8b fa mov edi,edx + 7b7345: c1 ef 1f shr edi,0x1f + 7b7348: 03 fa add edi,edx + 7b734a: 3b 4e 08 cmp ecx,DWORD PTR [esi+0x8] + 7b734d: 75 09 jne 0x7b7358 + 7b734f: 6a 01 push 0x1 + 7b7351: 8b ce mov ecx,esi + 7b7353: e8 c8 e4 ff ff call 0x7b5820 + 7b7358: 8b 46 04 mov eax,DWORD PTR [esi+0x4] + 7b735b: 6b ff 2c imul edi,edi,0x2c + 7b735e: 03 3e add edi,DWORD PTR [esi] + 7b7360: 8d 4e 0c lea ecx,[esi+0xc] + 7b7363: 57 push edi + 7b7364: 50 push eax + 7b7365: 51 push ecx + 7b7366: e8 e5 2d fe ff call 0x79a150 + 7b736b: 83 c4 0c add esp,0xc + 7b736e: 83 46 04 2c add DWORD PTR [esi+0x4],0x2c + 7b7372: 5f pop edi + 7b7373: 5e pop esi + 7b7374: 5d pop ebp + 7b7375: c2 04 00 ret 0x4 + 7b7378: 3b 4e 08 cmp ecx,DWORD PTR [esi+0x8] + 7b737b: 75 09 jne 0x7b7386 + 7b737d: 6a 01 push 0x1 + 7b737f: 8b ce mov ecx,esi + 7b7381: e8 9a e4 ff ff call 0x7b5820 + 7b7386: 8b 56 04 mov edx,DWORD PTR [esi+0x4] + 7b7389: 57 push edi + 7b738a: 52 push edx + 7b738b: 8d 46 0c lea eax,[esi+0xc] + 7b738e: 50 push eax + 7b738f: e8 bc 2d fe ff call 0x79a150 + 7b7394: 83 c4 0c add esp,0xc + 7b7397: 83 46 04 2c add DWORD PTR [esi+0x4],0x2c + 7b739b: 5f pop edi + 7b739c: 5e pop esi + 7b739d: 5d pop ebp + 7b739e: c2 04 00 ret 0x4 + 7b73a1: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-copy.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-copy.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-copy.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-copy.stdout.txt new file mode 100644 index 0000000..9775b64 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-copy.stdout.txt @@ -0,0 +1,58 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +0079a150 <.text+0x399150>: + 79a150: 55 push ebp + 79a151: 8b ec mov ebp,esp + 79a153: 6a ff push 0xffffffff + 79a155: 68 39 9f 98 00 push 0x989f39 + 79a15a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 79a160: 50 push eax + 79a161: 51 push ecx + 79a162: 56 push esi + 79a163: 57 push edi + 79a164: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 79a169: 33 c5 xor eax,ebp + 79a16b: 50 push eax + 79a16c: 8d 45 f4 lea eax,[ebp-0xc] + 79a16f: 64 a3 00 00 00 00 mov fs:0x0,eax + 79a175: 8b 75 0c mov esi,DWORD PTR [ebp+0xc] + 79a178: 89 75 f0 mov DWORD PTR [ebp-0x10],esi + 79a17b: 33 c0 xor eax,eax + 79a17d: 89 45 fc mov DWORD PTR [ebp-0x4],eax + 79a180: 3b f0 cmp esi,eax + 79a182: 74 44 je 0x79a1c8 + 79a184: 8b 7d 10 mov edi,DWORD PTR [ebp+0x10] + 79a187: c7 06 9c 43 a2 00 mov DWORD PTR [esi],0xa2439c + 79a18d: 66 8b 4f 04 mov cx,WORD PTR [edi+0x4] + 79a191: 66 89 4e 04 mov WORD PTR [esi+0x4],cx + 79a195: 66 8b 57 06 mov dx,WORD PTR [edi+0x6] + 79a199: 66 89 56 06 mov WORD PTR [esi+0x6],dx + 79a19d: 8a 4f 08 mov cl,BYTE PTR [edi+0x8] + 79a1a0: 88 4e 08 mov BYTE PTR [esi+0x8],cl + 79a1a3: 6a ff push 0xffffffff + 79a1a5: 8d 4e 0c lea ecx,[esi+0xc] + 79a1a8: 50 push eax + 79a1a9: 8d 57 0c lea edx,[edi+0xc] + 79a1ac: c7 41 14 0f 00 00 00 mov DWORD PTR [ecx+0x14],0xf + 79a1b3: 89 41 10 mov DWORD PTR [ecx+0x10],eax + 79a1b6: 52 push edx + 79a1b7: c6 45 fc 01 mov BYTE PTR [ebp-0x4],0x1 + 79a1bb: 88 01 mov BYTE PTR [ecx],al + 79a1bd: e8 6e b2 c8 ff call 0x425430 + 79a1c2: 8b 47 28 mov eax,DWORD PTR [edi+0x28] + 79a1c5: 89 46 28 mov DWORD PTR [esi+0x28],eax + 79a1c8: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 79a1cb: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 79a1d2: 59 pop ecx + 79a1d3: 5f pop edi + 79a1d4: 5e pop esi + 79a1d5: 8b e5 mov esp,ebp + 79a1d7: 5d pop ebp + 79a1d8: c3 ret + 79a1d9: cc int3 + 79a1da: cc int3 + 79a1db: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-ctor.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-ctor.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-ctor.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-ctor.stdout.txt new file mode 100644 index 0000000..bc09741 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-ctor.stdout.txt @@ -0,0 +1,49 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +008562a0 <.text+0x4552a0>: + 8562a0: 55 push ebp + 8562a1: 8b ec mov ebp,esp + 8562a3: 6a ff push 0xffffffff + 8562a5: 68 48 6c 99 00 push 0x996c48 + 8562aa: 64 a1 00 00 00 00 mov eax,fs:0x0 + 8562b0: 50 push eax + 8562b1: 51 push ecx + 8562b2: 53 push ebx + 8562b3: 56 push esi + 8562b4: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 8562b9: 33 c5 xor eax,ebp + 8562bb: 50 push eax + 8562bc: 8d 45 f4 lea eax,[ebp-0xc] + 8562bf: 64 a3 00 00 00 00 mov fs:0x0,eax + 8562c5: 8b f1 mov esi,ecx + 8562c7: 89 75 f0 mov DWORD PTR [ebp-0x10],esi + 8562ca: 33 db xor ebx,ebx + 8562cc: 8d 4e 0c lea ecx,[esi+0xc] + 8562cf: c7 06 9c 43 a2 00 mov DWORD PTR [esi],0xa2439c + 8562d5: 53 push ebx + 8562d6: c7 41 14 0f 00 00 00 mov DWORD PTR [ecx+0x14],0xf + 8562dd: 89 59 10 mov DWORD PTR [ecx+0x10],ebx + 8562e0: 68 0c 10 9e 00 push 0x9e100c + 8562e5: 89 5d fc mov DWORD PTR [ebp-0x4],ebx + 8562e8: 88 19 mov BYTE PTR [ecx],bl + 8562ea: e8 61 f2 bc ff call 0x425550 + 8562ef: 33 c0 xor eax,eax + 8562f1: 89 46 04 mov DWORD PTR [esi+0x4],eax + 8562f4: 88 5e 08 mov BYTE PTR [esi+0x8],bl + 8562f7: 89 5e 28 mov DWORD PTR [esi+0x28],ebx + 8562fa: 8b c6 mov eax,esi + 8562fc: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 8562ff: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 856306: 59 pop ecx + 856307: 5e pop esi + 856308: 5b pop ebx + 856309: 8b e5 mov esp,ebp + 85630b: 5d pop ebp + 85630c: c3 ret + 85630d: cc int3 + 85630e: cc int3 + 85630f: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-growth.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-growth.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-growth.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-growth.stdout.txt new file mode 100644 index 0000000..fa78b53 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/observed-growth.stdout.txt @@ -0,0 +1,107 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +007b34e0 <.text+0x3b24e0>: + 7b34e0: 55 push ebp + 7b34e1: 8b ec mov ebp,esp + 7b34e3: 6a ff push 0xffffffff + 7b34e5: 68 00 c3 98 00 push 0x98c300 + 7b34ea: 64 a1 00 00 00 00 mov eax,fs:0x0 + 7b34f0: 50 push eax + 7b34f1: 83 ec 0c sub esp,0xc + 7b34f4: 53 push ebx + 7b34f5: 56 push esi + 7b34f6: 57 push edi + 7b34f7: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 7b34fc: 33 c5 xor eax,ebp + 7b34fe: 50 push eax + 7b34ff: 8d 45 f4 lea eax,[ebp-0xc] + 7b3502: 64 a3 00 00 00 00 mov fs:0x0,eax + 7b3508: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 7b350b: 8b f1 mov esi,ecx + 7b350d: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 7b3510: 81 fb 5d 74 d1 05 cmp ebx,0x5d1745d + 7b3516: 76 0b jbe 0x7b3523 + 7b3518: 68 90 1f 9e 00 push 0x9e1f90 + 7b351d: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 7b3523: 8b 4e 08 mov ecx,DWORD PTR [esi+0x8] + 7b3526: 2b 0e sub ecx,DWORD PTR [esi] + 7b3528: b8 e9 a2 8b 2e mov eax,0x2e8ba2e9 + 7b352d: f7 e9 imul ecx + 7b352f: c1 fa 03 sar edx,0x3 + 7b3532: 8b c2 mov eax,edx + 7b3534: c1 e8 1f shr eax,0x1f + 7b3537: 03 c2 add eax,edx + 7b3539: 3b c3 cmp eax,ebx + 7b353b: 0f 83 9c 00 00 00 jae 0x7b35dd + 7b3541: 8d 7e 0c lea edi,[esi+0xc] + 7b3544: 53 push ebx + 7b3545: 8b cf mov ecx,edi + 7b3547: e8 44 b0 dc ff call 0x57e590 + 7b354c: 8b 4e 04 mov ecx,DWORD PTR [esi+0x4] + 7b354f: 8b 16 mov edx,DWORD PTR [esi] + 7b3551: 89 45 ec mov DWORD PTR [ebp-0x14],eax + 7b3554: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 7b3557: 50 push eax + 7b3558: 8b 45 ec mov eax,DWORD PTR [ebp-0x14] + 7b355b: 6a 00 push 0x0 + 7b355d: 57 push edi + 7b355e: 50 push eax + 7b355f: 51 push ecx + 7b3560: 52 push edx + 7b3561: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 7b3568: e8 e3 b0 0a 00 call 0x85e650 + 7b356d: 8b 56 04 mov edx,DWORD PTR [esi+0x4] + 7b3570: 8b 0e mov ecx,DWORD PTR [esi] + 7b3572: 89 55 e8 mov DWORD PTR [ebp-0x18],edx + 7b3575: 2b d1 sub edx,ecx + 7b3577: b8 e9 a2 8b 2e mov eax,0x2e8ba2e9 + 7b357c: f7 ea imul edx + 7b357e: c1 fa 03 sar edx,0x3 + 7b3581: 8b fa mov edi,edx + 7b3583: c1 ef 1f shr edi,0x1f + 7b3586: 83 c4 18 add esp,0x18 + 7b3589: 03 fa add edi,edx + 7b358b: c7 45 fc ff ff ff ff mov DWORD PTR [ebp-0x4],0xffffffff + 7b3592: 85 c9 test ecx,ecx + 7b3594: 74 2a je 0x7b35c0 + 7b3596: 8b d9 mov ebx,ecx + 7b3598: 3b 5d e8 cmp ebx,DWORD PTR [ebp-0x18] + 7b359b: 74 15 je 0x7b35b2 + 7b359d: 8d 49 00 lea ecx,[ecx+0x0] + 7b35a0: 8b 13 mov edx,DWORD PTR [ebx] + 7b35a2: 8b 02 mov eax,DWORD PTR [edx] + 7b35a4: 6a 00 push 0x0 + 7b35a6: 8b cb mov ecx,ebx + 7b35a8: ff d0 call eax + 7b35aa: 83 c3 2c add ebx,0x2c + 7b35ad: 3b 5d e8 cmp ebx,DWORD PTR [ebp-0x18] + 7b35b0: 75 ee jne 0x7b35a0 + 7b35b2: 8b 0e mov ecx,DWORD PTR [esi] + 7b35b4: 51 push ecx + 7b35b5: e8 f0 19 17 00 call 0x924faa + 7b35ba: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 7b35bd: 83 c4 04 add esp,0x4 + 7b35c0: 8b ce mov ecx,esi + 7b35c2: ff 15 2c d1 9d 00 call DWORD PTR ds:0x9dd12c + 7b35c8: 6b db 2c imul ebx,ebx,0x2c + 7b35cb: 6b ff 2c imul edi,edi,0x2c + 7b35ce: 8b 45 ec mov eax,DWORD PTR [ebp-0x14] + 7b35d1: 03 d8 add ebx,eax + 7b35d3: 03 f8 add edi,eax + 7b35d5: 89 5e 08 mov DWORD PTR [esi+0x8],ebx + 7b35d8: 89 7e 04 mov DWORD PTR [esi+0x4],edi + 7b35db: 89 06 mov DWORD PTR [esi],eax + 7b35dd: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 7b35e0: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 7b35e7: 59 pop ecx + 7b35e8: 5f pop edi + 7b35e9: 5e pop esi + 7b35ea: 5b pop ebx + 7b35eb: 8b e5 mov esp,ebp + 7b35ed: 5d pop ebp + 7b35ee: c2 04 00 ret 0x4 + 7b35f1: 8b mov edx,DWORD PTR [ebp-0x14] diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-append.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-append.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-append.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-append.stdout.txt new file mode 100644 index 0000000..ff480cc --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-append.stdout.txt @@ -0,0 +1,72 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +0086c580 <.text+0x46b580>: + 86c580: 55 push ebp + 86c581: 8b ec mov ebp,esp + 86c583: 6a ff push 0xffffffff + 86c585: 68 82 81 96 00 push 0x968182 + 86c58a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 86c590: 50 push eax + 86c591: 51 push ecx + 86c592: 56 push esi + 86c593: 57 push edi + 86c594: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 86c599: 33 c5 xor eax,ebp + 86c59b: 50 push eax + 86c59c: 8d 45 f4 lea eax,[ebp-0xc] + 86c59f: 64 a3 00 00 00 00 mov fs:0x0,eax + 86c5a5: 8b f9 mov edi,ecx + 86c5a7: 8b 4f 04 mov ecx,DWORD PTR [edi+0x4] + 86c5aa: 8b 75 08 mov esi,DWORD PTR [ebp+0x8] + 86c5ad: 3b f1 cmp esi,ecx + 86c5af: 73 40 jae 0x86c5f1 + 86c5b1: 8b 07 mov eax,DWORD PTR [edi] + 86c5b3: 3b c6 cmp eax,esi + 86c5b5: 77 3a ja 0x86c5f1 + 86c5b7: 2b f0 sub esi,eax + 86c5b9: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 86c5be: f7 ee imul esi + 86c5c0: 03 d6 add edx,esi + 86c5c2: c1 fa 06 sar edx,0x6 + 86c5c5: 8b f2 mov esi,edx + 86c5c7: c1 ee 1f shr esi,0x1f + 86c5ca: 03 f2 add esi,edx + 86c5cc: 3b 4f 08 cmp ecx,DWORD PTR [edi+0x8] + 86c5cf: 75 09 jne 0x86c5da + 86c5d1: 6a 01 push 0x1 + 86c5d3: 8b cf mov ecx,edi + 86c5d5: e8 26 cf ff ff call 0x869500 + 86c5da: 8b 4f 04 mov ecx,DWORD PTR [edi+0x4] + 86c5dd: 6b f6 74 imul esi,esi,0x74 + 86c5e0: 03 37 add esi,DWORD PTR [edi] + 86c5e2: 89 4d 08 mov DWORD PTR [ebp+0x8],ecx + 86c5e5: 89 4d f0 mov DWORD PTR [ebp-0x10],ecx + 86c5e8: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 86c5ef: eb 1e jmp 0x86c60f + 86c5f1: 3b 4f 08 cmp ecx,DWORD PTR [edi+0x8] + 86c5f4: 75 09 jne 0x86c5ff + 86c5f6: 6a 01 push 0x1 + 86c5f8: 8b cf mov ecx,edi + 86c5fa: e8 01 cf ff ff call 0x869500 + 86c5ff: 8b 4f 04 mov ecx,DWORD PTR [edi+0x4] + 86c602: 89 4d 08 mov DWORD PTR [ebp+0x8],ecx + 86c605: 89 4d f0 mov DWORD PTR [ebp-0x10],ecx + 86c608: c7 45 fc 01 00 00 00 mov DWORD PTR [ebp-0x4],0x1 + 86c60f: 85 c9 test ecx,ecx + 86c611: 74 06 je 0x86c619 + 86c613: 56 push esi + 86c614: e8 d7 cd ef ff call 0x7693f0 + 86c619: 83 47 04 74 add DWORD PTR [edi+0x4],0x74 + 86c61d: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 86c620: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 86c627: 59 pop ecx + 86c628: 5f pop edi + 86c629: 5e pop esi + 86c62a: 8b e5 mov esp,ebp + 86c62c: 5d pop ebp + 86c62d: c2 04 00 ret 0x4 + 86c630: 55 push ebp diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-copy.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-copy.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-copy.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-copy.stdout.txt new file mode 100644 index 0000000..2b39721 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-copy.stdout.txt @@ -0,0 +1,82 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +007693f0 <.text+0x3683f0>: + 7693f0: 55 push ebp + 7693f1: 8b ec mov ebp,esp + 7693f3: 6a ff push 0xffffffff + 7693f5: 68 de 62 98 00 push 0x9862de + 7693fa: 64 a1 00 00 00 00 mov eax,fs:0x0 + 769400: 50 push eax + 769401: 51 push ecx + 769402: 53 push ebx + 769403: 56 push esi + 769404: 57 push edi + 769405: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 76940a: 33 c5 xor eax,ebp + 76940c: 50 push eax + 76940d: 8d 45 f4 lea eax,[ebp-0xc] + 769410: 64 a3 00 00 00 00 mov fs:0x0,eax + 769416: 8b f1 mov esi,ecx + 769418: 89 75 f0 mov DWORD PTR [ebp-0x10],esi + 76941b: 8b 7d 08 mov edi,DWORD PTR [ebp+0x8] + 76941e: c7 06 58 19 a2 00 mov DWORD PTR [esi],0xa21958 + 769424: 8b 47 04 mov eax,DWORD PTR [edi+0x4] + 769427: 33 db xor ebx,ebx + 769429: 6a ff push 0xffffffff + 76942b: 8d 4e 08 lea ecx,[esi+0x8] + 76942e: 89 46 04 mov DWORD PTR [esi+0x4],eax + 769431: 53 push ebx + 769432: 8d 57 08 lea edx,[edi+0x8] + 769435: c7 41 14 0f 00 00 00 mov DWORD PTR [ecx+0x14],0xf + 76943c: 89 59 10 mov DWORD PTR [ecx+0x10],ebx + 76943f: 52 push edx + 769440: 89 5d fc mov DWORD PTR [ebp-0x4],ebx + 769443: 88 19 mov BYTE PTR [ecx],bl + 769445: e8 e6 bf cb ff call 0x425430 + 76944a: 6a ff push 0xffffffff + 76944c: 8d 4e 24 lea ecx,[esi+0x24] + 76944f: 53 push ebx + 769450: 8d 47 24 lea eax,[edi+0x24] + 769453: c7 41 14 0f 00 00 00 mov DWORD PTR [ecx+0x14],0xf + 76945a: 89 59 10 mov DWORD PTR [ecx+0x10],ebx + 76945d: 50 push eax + 76945e: c6 45 fc 01 mov BYTE PTR [ebp-0x4],0x1 + 769462: 88 19 mov BYTE PTR [ecx],bl + 769464: e8 c7 bf cb ff call 0x425430 + 769469: 8b 4f 40 mov ecx,DWORD PTR [edi+0x40] + 76946c: 89 4e 40 mov DWORD PTR [esi+0x40],ecx + 76946f: 8b 57 44 mov edx,DWORD PTR [edi+0x44] + 769472: 89 56 44 mov DWORD PTR [esi+0x44],edx + 769475: 8b 47 48 mov eax,DWORD PTR [edi+0x48] + 769478: 89 46 48 mov DWORD PTR [esi+0x48],eax + 76947b: 8b 4f 4c mov ecx,DWORD PTR [edi+0x4c] + 76947e: 89 4e 4c mov DWORD PTR [esi+0x4c],ecx + 769481: 6a ff push 0xffffffff + 769483: 8d 4e 50 lea ecx,[esi+0x50] + 769486: 53 push ebx + 769487: 8d 57 50 lea edx,[edi+0x50] + 76948a: c7 41 14 0f 00 00 00 mov DWORD PTR [ecx+0x14],0xf + 769491: 89 59 10 mov DWORD PTR [ecx+0x10],ebx + 769494: 52 push edx + 769495: c6 45 fc 02 mov BYTE PTR [ebp-0x4],0x2 + 769499: 88 19 mov BYTE PTR [ecx],bl + 76949b: e8 90 bf cb ff call 0x425430 + 7694a0: 8b 47 6c mov eax,DWORD PTR [edi+0x6c] + 7694a3: 89 46 6c mov DWORD PTR [esi+0x6c],eax + 7694a6: 8b 4f 70 mov ecx,DWORD PTR [edi+0x70] + 7694a9: 89 4e 70 mov DWORD PTR [esi+0x70],ecx + 7694ac: 8b c6 mov eax,esi + 7694ae: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 7694b1: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 7694b8: 59 pop ecx + 7694b9: 5f pop edi + 7694ba: 5e pop esi + 7694bb: 5b pop ebx + 7694bc: 8b e5 mov esp,ebp + 7694be: 5d pop ebp + 7694bf: c2 04 00 ret 0x4 + 7694c2: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-ctor.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-ctor.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-ctor.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-ctor.stdout.txt new file mode 100644 index 0000000..eedafe4 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-ctor.stdout.txt @@ -0,0 +1,68 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +0084ee30 <.text+0x44de30>: + 84ee30: 55 push ebp + 84ee31: 8b ec mov ebp,esp + 84ee33: 6a ff push 0xffffffff + 84ee35: 68 3e 61 99 00 push 0x99613e + 84ee3a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 84ee40: 50 push eax + 84ee41: 51 push ecx + 84ee42: 53 push ebx + 84ee43: 56 push esi + 84ee44: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 84ee49: 33 c5 xor eax,ebp + 84ee4b: 50 push eax + 84ee4c: 8d 45 f4 lea eax,[ebp-0xc] + 84ee4f: 64 a3 00 00 00 00 mov fs:0x0,eax + 84ee55: 8b f1 mov esi,ecx + 84ee57: 89 75 f0 mov DWORD PTR [ebp-0x10],esi + 84ee5a: 33 db xor ebx,ebx + 84ee5c: 8d 4e 08 lea ecx,[esi+0x8] + 84ee5f: c7 06 58 19 a2 00 mov DWORD PTR [esi],0xa21958 + 84ee65: 53 push ebx + 84ee66: c7 41 14 0f 00 00 00 mov DWORD PTR [ecx+0x14],0xf + 84ee6d: 89 59 10 mov DWORD PTR [ecx+0x10],ebx + 84ee70: 68 0c 10 9e 00 push 0x9e100c + 84ee75: 89 5d fc mov DWORD PTR [ebp-0x4],ebx + 84ee78: 88 19 mov BYTE PTR [ecx],bl + 84ee7a: e8 d1 66 bd ff call 0x425550 + 84ee7f: 8d 4e 24 lea ecx,[esi+0x24] + 84ee82: 53 push ebx + 84ee83: c7 41 14 0f 00 00 00 mov DWORD PTR [ecx+0x14],0xf + 84ee8a: 89 59 10 mov DWORD PTR [ecx+0x10],ebx + 84ee8d: 68 0c 10 9e 00 push 0x9e100c + 84ee92: c6 45 fc 01 mov BYTE PTR [ebp-0x4],0x1 + 84ee96: 88 19 mov BYTE PTR [ecx],bl + 84ee98: e8 b3 66 bd ff call 0x425550 + 84ee9d: 8d 4e 50 lea ecx,[esi+0x50] + 84eea0: 53 push ebx + 84eea1: c7 41 14 0f 00 00 00 mov DWORD PTR [ecx+0x14],0xf + 84eea8: 89 59 10 mov DWORD PTR [ecx+0x10],ebx + 84eeab: 68 0c 10 9e 00 push 0x9e100c + 84eeb0: c6 45 fc 02 mov BYTE PTR [ebp-0x4],0x2 + 84eeb4: 88 19 mov BYTE PTR [ecx],bl + 84eeb6: e8 95 66 bd ff call 0x425550 + 84eebb: 89 5e 04 mov DWORD PTR [esi+0x4],ebx + 84eebe: 89 5e 40 mov DWORD PTR [esi+0x40],ebx + 84eec1: a1 c8 0d af 00 mov eax,ds:0xaf0dc8 + 84eec6: 89 46 44 mov DWORD PTR [esi+0x44],eax + 84eec9: 8b 0d cc 0d af 00 mov ecx,DWORD PTR ds:0xaf0dcc + 84eecf: 89 4e 48 mov DWORD PTR [esi+0x48],ecx + 84eed2: 8b 15 d0 0d af 00 mov edx,DWORD PTR ds:0xaf0dd0 + 84eed8: 89 56 4c mov DWORD PTR [esi+0x4c],edx + 84eedb: 89 5e 6c mov DWORD PTR [esi+0x6c],ebx + 84eede: 89 5e 70 mov DWORD PTR [esi+0x70],ebx + 84eee1: 8b c6 mov eax,esi + 84eee3: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 84eee6: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 84eeed: 59 pop ecx + 84eeee: 5e pop esi + 84eeef: 5b pop ebx + 84eef0: 8b e5 mov esp,ebp + 84eef2: 5d pop ebp + 84eef3: c3 ret diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-dtor.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-dtor.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-dtor.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-dtor.stdout.txt new file mode 100644 index 0000000..a12e344 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-dtor.stdout.txt @@ -0,0 +1,42 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +0061ae90 <.text+0x219e90>: + 61ae90: 53 push ebx + 61ae91: 56 push esi + 61ae92: 8b f1 mov esi,ecx + 61ae94: 83 7e 64 10 cmp DWORD PTR [esi+0x64],0x10 + 61ae98: 72 0c jb 0x61aea6 + 61ae9a: 8b 46 50 mov eax,DWORD PTR [esi+0x50] + 61ae9d: 50 push eax + 61ae9e: e8 07 a1 30 00 call 0x924faa + 61aea3: 83 c4 04 add esp,0x4 + 61aea6: 33 db xor ebx,ebx + 61aea8: c7 46 64 0f 00 00 00 mov DWORD PTR [esi+0x64],0xf + 61aeaf: 89 5e 60 mov DWORD PTR [esi+0x60],ebx + 61aeb2: 88 5e 50 mov BYTE PTR [esi+0x50],bl + 61aeb5: 83 7e 38 10 cmp DWORD PTR [esi+0x38],0x10 + 61aeb9: 72 0c jb 0x61aec7 + 61aebb: 8b 4e 24 mov ecx,DWORD PTR [esi+0x24] + 61aebe: 51 push ecx + 61aebf: e8 e6 a0 30 00 call 0x924faa + 61aec4: 83 c4 04 add esp,0x4 + 61aec7: c7 46 38 0f 00 00 00 mov DWORD PTR [esi+0x38],0xf + 61aece: 89 5e 34 mov DWORD PTR [esi+0x34],ebx + 61aed1: 88 5e 24 mov BYTE PTR [esi+0x24],bl + 61aed4: 83 7e 1c 10 cmp DWORD PTR [esi+0x1c],0x10 + 61aed8: 72 0c jb 0x61aee6 + 61aeda: 8b 56 08 mov edx,DWORD PTR [esi+0x8] + 61aedd: 52 push edx + 61aede: e8 c7 a0 30 00 call 0x924faa + 61aee3: 83 c4 04 add esp,0x4 + 61aee6: 89 5e 18 mov DWORD PTR [esi+0x18],ebx + 61aee9: c7 46 1c 0f 00 00 00 mov DWORD PTR [esi+0x1c],0xf + 61aef0: 88 5e 08 mov BYTE PTR [esi+0x8],bl + 61aef3: c7 06 bc 22 9e 00 mov DWORD PTR [esi],0x9e22bc + 61aef9: 5e pop esi + 61aefa: 5b pop ebx + 61aefb: c3 ret diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-growth.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-growth.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-growth.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-growth.stdout.txt new file mode 100644 index 0000000..98e1875 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/player-growth.stdout.txt @@ -0,0 +1,127 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00869500 <.text+0x468500>: + 869500: 55 push ebp + 869501: 8b ec mov ebp,esp + 869503: 53 push ebx + 869504: 8b 19 mov ebx,DWORD PTR [ecx] + 869506: 56 push esi + 869507: 8b 71 04 mov esi,DWORD PTR [ecx+0x4] + 86950a: 2b f3 sub esi,ebx + 86950c: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 869511: f7 ee imul esi + 869513: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 869516: 03 d6 add edx,esi + 869518: c1 fa 06 sar edx,0x6 + 86951b: 8b f2 mov esi,edx + 86951d: c1 ee 1f shr esi,0x1f + 869520: 03 f2 add esi,edx + 869522: ba 2c f7 34 02 mov edx,0x234f72c + 869527: 2b d0 sub edx,eax + 869529: 57 push edi + 86952a: 3b d6 cmp edx,esi + 86952c: 73 0b jae 0x869539 + 86952e: 68 90 1f 9e 00 push 0x9e1f90 + 869533: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 869539: 8b 79 08 mov edi,DWORD PTR [ecx+0x8] + 86953c: 03 f0 add esi,eax + 86953e: 2b fb sub edi,ebx + 869540: b8 09 cb 3d 8d mov eax,0x8d3dcb09 + 869545: f7 ef imul edi + 869547: 03 d7 add edx,edi + 869549: c1 fa 06 sar edx,0x6 + 86954c: 8b c2 mov eax,edx + 86954e: c1 e8 1f shr eax,0x1f + 869551: 03 c2 add eax,edx + 869553: 3b f0 cmp esi,eax + 869555: 76 21 jbe 0x869578 + 869557: 8b d0 mov edx,eax + 869559: d1 ea shr edx,1 + 86955b: bf 2c f7 34 02 mov edi,0x234f72c + 869560: 2b fa sub edi,edx + 869562: 3b f8 cmp edi,eax + 869564: 73 04 jae 0x86956a + 869566: 33 c0 xor eax,eax + 869568: eb 02 jmp 0x86956c + 86956a: 03 c2 add eax,edx + 86956c: 3b c6 cmp eax,esi + 86956e: 73 02 jae 0x869572 + 869570: 8b c6 mov eax,esi + 869572: 50 push eax + 869573: e8 68 c9 ff ff call 0x865ee0 + 869578: 5f pop edi + 869579: 5e pop esi + 86957a: 5b pop ebx + 86957b: 5d pop ebp + 86957c: c2 04 00 ret 0x4 + 86957f: cc int3 + 869580: 55 push ebp + 869581: 8b ec mov ebp,esp + 869583: 8b 41 04 mov eax,DWORD PTR [ecx+0x4] + 869586: 8b 55 08 mov edx,DWORD PTR [ebp+0x8] + 869589: 56 push esi + 86958a: 8b 31 mov esi,DWORD PTR [ecx] + 86958c: 57 push edi + 86958d: 2b c6 sub eax,esi + 86958f: bf ff ff ff 07 mov edi,0x7ffffff + 869594: c1 f8 05 sar eax,0x5 + 869597: 2b fa sub edi,edx + 869599: 3b f8 cmp edi,eax + 86959b: 73 0b jae 0x8695a8 + 86959d: 68 90 1f 9e 00 push 0x9e1f90 + 8695a2: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 8695a8: 03 c2 add eax,edx + 8695aa: 8b 51 08 mov edx,DWORD PTR [ecx+0x8] + 8695ad: 2b d6 sub edx,esi + 8695af: c1 fa 05 sar edx,0x5 + 8695b2: 3b c2 cmp eax,edx + 8695b4: 76 21 jbe 0x8695d7 + 8695b6: 8b f2 mov esi,edx + 8695b8: d1 ee shr esi,1 + 8695ba: bf ff ff ff 07 mov edi,0x7ffffff + 8695bf: 2b fe sub edi,esi + 8695c1: 3b fa cmp edi,edx + 8695c3: 73 04 jae 0x8695c9 + 8695c5: 33 d2 xor edx,edx + 8695c7: eb 02 jmp 0x8695cb + 8695c9: 03 d6 add edx,esi + 8695cb: 3b d0 cmp edx,eax + 8695cd: 73 02 jae 0x8695d1 + 8695cf: 8b d0 mov edx,eax + 8695d1: 52 push edx + 8695d2: e8 39 f9 ff ff call 0x868f10 + 8695d7: 5f pop edi + 8695d8: 5e pop esi + 8695d9: 5d pop ebp + 8695da: c2 04 00 ret 0x4 + 8695dd: cc int3 + 8695de: cc int3 + 8695df: cc int3 + 8695e0: 55 push ebp + 8695e1: 8b ec mov ebp,esp + 8695e3: 8b 51 04 mov edx,DWORD PTR [ecx+0x4] + 8695e6: 56 push esi + 8695e7: 57 push edi + 8695e8: 8b 39 mov edi,DWORD PTR [ecx] + 8695ea: 2b d7 sub edx,edi + 8695ec: b8 67 66 66 66 mov eax,0x66666667 + 8695f1: f7 ea imul edx + 8695f3: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 8695f6: c1 fa 04 sar edx,0x4 + 8695f9: 8b f2 mov esi,edx + 8695fb: c1 ee 1f shr esi,0x1f + 8695fe: 03 f2 add esi,edx + 869600: ba 66 66 66 06 mov edx,0x6666666 + 869605: 2b d0 sub edx,eax + 869607: 3b d6 cmp edx,esi + 869609: 73 0b jae 0x869616 + 86960b: 68 90 1f 9e 00 push 0x9e1f90 + 869610: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 869616: 8b 51 08 mov edx,DWORD PTR [ecx+0x8] + 869619: 03 f0 add esi,eax + 86961b: 2b d7 sub edx,edi + 86961d: b8 67 66 mov eax,0x66666667 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/prune.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/prune.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/prune.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/prune.stdout.txt new file mode 100644 index 0000000..384e68e --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/prune.stdout.txt @@ -0,0 +1,140 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00879eb0 <.text+0x478eb0>: + 879eb0: 55 push ebp + 879eb1: 8b ec mov ebp,esp + 879eb3: 51 push ecx + 879eb4: 53 push ebx + 879eb5: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 879eb8: 8b d1 mov edx,ecx + 879eba: 8b 4a 08 mov ecx,DWORD PTR [edx+0x8] + 879ebd: 56 push esi + 879ebe: 8b 72 04 mov esi,DWORD PTR [edx+0x4] + 879ec1: 8b c6 mov eax,esi + 879ec3: 83 c3 ce add ebx,0xffffffce + 879ec6: 57 push edi + 879ec7: 89 55 fc mov DWORD PTR [ebp-0x4],edx + 879eca: 8b f9 mov edi,ecx + 879ecc: 3b c1 cmp eax,ecx + 879ece: 74 0e je 0x879ede + 879ed0: 39 58 04 cmp DWORD PTR [eax+0x4],ebx + 879ed3: 7d 09 jge 0x879ede + 879ed5: 8b f8 mov edi,eax + 879ed7: 83 c0 18 add eax,0x18 + 879eda: 3b c1 cmp eax,ecx + 879edc: 75 f2 jne 0x879ed0 + 879ede: 3b f9 cmp edi,ecx + 879ee0: 74 56 je 0x879f38 + 879ee2: 3b f7 cmp esi,edi + 879ee4: 74 52 je 0x879f38 + 879ee6: 8b d9 mov ebx,ecx + 879ee8: 3b fb cmp edi,ebx + 879eea: 74 2c je 0x879f18 + 879eec: 8b c7 mov eax,edi + 879eee: 2b c6 sub eax,esi + 879ef0: 89 45 08 mov DWORD PTR [ebp+0x8],eax + 879ef3: eb 03 jmp 0x879ef8 + 879ef5: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 879ef8: 8b 44 30 04 mov eax,DWORD PTR [eax+esi*1+0x4] + 879efc: 8d 4f 08 lea ecx,[edi+0x8] + 879eff: 51 push ecx + 879f00: 8d 4e 08 lea ecx,[esi+0x8] + 879f03: 89 46 04 mov DWORD PTR [esi+0x4],eax + 879f06: e8 a5 07 f0 ff call 0x77a6b0 + 879f0b: 83 c7 18 add edi,0x18 + 879f0e: 83 c6 18 add esi,0x18 + 879f11: 3b fb cmp edi,ebx + 879f13: 75 e0 jne 0x879ef5 + 879f15: 8b 55 fc mov edx,DWORD PTR [ebp-0x4] + 879f18: 8b 5a 08 mov ebx,DWORD PTR [edx+0x8] + 879f1b: 8b fe mov edi,esi + 879f1d: 3b f3 cmp esi,ebx + 879f1f: 74 14 je 0x879f35 + 879f21: 8b 17 mov edx,DWORD PTR [edi] + 879f23: 8b 02 mov eax,DWORD PTR [edx] + 879f25: 6a 00 push 0x0 + 879f27: 8b cf mov ecx,edi + 879f29: ff d0 call eax + 879f2b: 83 c7 18 add edi,0x18 + 879f2e: 3b fb cmp edi,ebx + 879f30: 75 ef jne 0x879f21 + 879f32: 8b 55 fc mov edx,DWORD PTR [ebp-0x4] + 879f35: 89 72 08 mov DWORD PTR [edx+0x8],esi + 879f38: 5f pop edi + 879f39: 5e pop esi + 879f3a: 5b pop ebx + 879f3b: 8b e5 mov esp,ebp + 879f3d: 5d pop ebp + 879f3e: c2 04 00 ret 0x4 + 879f41: cc int3 + 879f42: cc int3 + 879f43: cc int3 + 879f44: cc int3 + 879f45: cc int3 + 879f46: cc int3 + 879f47: cc int3 + 879f48: cc int3 + 879f49: cc int3 + 879f4a: cc int3 + 879f4b: cc int3 + 879f4c: cc int3 + 879f4d: cc int3 + 879f4e: cc int3 + 879f4f: cc int3 + 879f50: 55 push ebp + 879f51: 8b ec mov ebp,esp + 879f53: 56 push esi + 879f54: 8b f1 mov esi,ecx + 879f56: e8 a5 ae ff ff call 0x874e00 + 879f5b: f6 45 08 01 test BYTE PTR [ebp+0x8],0x1 + 879f5f: 74 09 je 0x879f6a + 879f61: 56 push esi + 879f62: e8 43 b0 0a 00 call 0x924faa + 879f67: 83 c4 04 add esp,0x4 + 879f6a: 8b c6 mov eax,esi + 879f6c: 5e pop esi + 879f6d: 5d pop ebp + 879f6e: c2 04 00 ret 0x4 + 879f71: cc int3 + 879f72: cc int3 + 879f73: cc int3 + 879f74: cc int3 + 879f75: cc int3 + 879f76: cc int3 + 879f77: cc int3 + 879f78: cc int3 + 879f79: cc int3 + 879f7a: cc int3 + 879f7b: cc int3 + 879f7c: cc int3 + 879f7d: cc int3 + 879f7e: cc int3 + 879f7f: cc int3 + 879f80: 55 push ebp + 879f81: 8b ec mov ebp,esp + 879f83: 8b 55 18 mov edx,DWORD PTR [ebp+0x18] + 879f86: 8a 45 08 mov al,BYTE PTR [ebp+0x8] + 879f89: 53 push ebx + 879f8a: 56 push esi + 879f8b: 8b f1 mov esi,ecx + 879f8d: 8b 4d 14 mov ecx,DWORD PTR [ebp+0x14] + 879f90: 89 4e 08 mov DWORD PTR [esi+0x8],ecx + 879f93: 52 push edx + 879f94: 8d 4e 20 lea ecx,[esi+0x20] + 879f97: 88 46 04 mov BYTE PTR [esi+0x4],al + 879f9a: e8 51 50 f4 ff call 0x7beff0 + 879f9f: 8b 45 1c mov eax,DWORD PTR [ebp+0x1c] + 879fa2: 8a 4d 20 mov cl,BYTE PTR [ebp+0x20] + 879fa5: 8a 55 0c mov dl,BYTE PTR [ebp+0xc] + 879fa8: 89 46 14 mov DWORD PTR [esi+0x14],eax + 879fab: 8a 45 10 mov al,BYTE PTR [ebp+0x10] + 879fae: 88 4e 18 mov BYTE PTR [esi+0x18],cl + 879fb1: 8b 4d 24 mov ecx,DWORD PTR [ebp+0x24] + 879fb4: 88 56 10 mov BYTE PTR [esi+0x10],dl + 879fb7: 8b 55 28 mov edx,DWORD PTR [ebp+0x28] + 879fba: 88 46 11 mov BYTE PTR [esi+0x11],al + 879fbd: 8b 45 2c mov eax,DWORD PTR [ebp+0x2c] diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/string-assign.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/string-assign.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/string-assign.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/string-assign.stdout.txt new file mode 100644 index 0000000..27f23eb --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/string-assign.stdout.txt @@ -0,0 +1,123 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +004249a0 <.text+0x239a0>: + 4249a0: 55 push ebp + 4249a1: 8b ec mov ebp,esp + 4249a3: 6a ff push 0xffffffff + 4249a5: 68 80 47 95 00 push 0x954780 + 4249aa: 64 a1 00 00 00 00 mov eax,fs:0x0 + 4249b0: 50 push eax + 4249b1: 83 ec 1c sub esp,0x1c + 4249b4: 53 push ebx + 4249b5: 56 push esi + 4249b6: 57 push edi + 4249b7: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 4249bc: 33 c5 xor eax,ebp + 4249be: 50 push eax + 4249bf: 8d 45 f4 lea eax,[ebp-0xc] + 4249c2: 64 a3 00 00 00 00 mov fs:0x0,eax + 4249c8: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 4249cb: 8b f9 mov edi,ecx + 4249cd: 89 7d ec mov DWORD PTR [ebp-0x14],edi + 4249d0: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 4249d3: 8b f0 mov esi,eax + 4249d5: 83 ce 0f or esi,0xf + 4249d8: 83 fe fe cmp esi,0xfffffffe + 4249db: 76 04 jbe 0x4249e1 + 4249dd: 8b f0 mov esi,eax + 4249df: eb 27 jmp 0x424a08 + 4249e1: 8b 5f 14 mov ebx,DWORD PTR [edi+0x14] + 4249e4: b8 ab aa aa aa mov eax,0xaaaaaaab + 4249e9: f7 e6 mul esi + 4249eb: 8b cb mov ecx,ebx + 4249ed: d1 e9 shr ecx,1 + 4249ef: d1 ea shr edx,1 + 4249f1: 3b ca cmp ecx,edx + 4249f3: 76 13 jbe 0x424a08 + 4249f5: b8 fe ff ff ff mov eax,0xfffffffe + 4249fa: 2b c1 sub eax,ecx + 4249fc: 8d 34 19 lea esi,[ecx+ebx*1] + 4249ff: 3b d8 cmp ebx,eax + 424a01: 76 05 jbe 0x424a08 + 424a03: be fe ff ff ff mov esi,0xfffffffe + 424a08: 33 c0 xor eax,eax + 424a0a: 8d 4e 01 lea ecx,[esi+0x1] + 424a0d: 89 45 fc mov DWORD PTR [ebp-0x4],eax + 424a10: 3b c8 cmp ecx,eax + 424a12: 76 12 jbe 0x424a26 + 424a14: 83 f9 ff cmp ecx,0xffffffff + 424a17: 77 12 ja 0x424a2b + 424a19: 51 push ecx + 424a1a: e8 97 05 50 00 call 0x924fb6 + 424a1f: 83 c4 04 add esp,0x4 + 424a22: 85 c0 test eax,eax + 424a24: 74 05 je 0x424a2b + 424a26: 89 45 08 mov DWORD PTR [ebp+0x8],eax + 424a29: eb 52 jmp 0x424a7d + 424a2b: 8d 4d e8 lea ecx,[ebp-0x18] + 424a2e: 51 push ecx + 424a2f: 8d 4d d8 lea ecx,[ebp-0x28] + 424a32: c7 45 e8 00 00 00 00 mov DWORD PTR [ebp-0x18],0x0 + 424a39: ff 15 bc d1 9d 00 call DWORD PTR ds:0x9dd1bc + 424a3f: 68 90 d1 a8 00 push 0xa8d190 + 424a44: 8d 55 d8 lea edx,[ebp-0x28] + 424a47: 52 push edx + 424a48: c7 45 d8 00 1f 9e 00 mov DWORD PTR [ebp-0x28],0x9e1f00 + 424a4f: e8 68 05 50 00 call 0x924fbc + 424a54: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 424a57: 8b 4d ec mov ecx,DWORD PTR [ebp-0x14] + 424a5a: 89 45 e4 mov DWORD PTR [ebp-0x1c],eax + 424a5d: 40 inc eax + 424a5e: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 424a61: 50 push eax + 424a62: 83 c1 18 add ecx,0x18 + 424a65: c6 45 fc 02 mov BYTE PTR [ebp-0x4],0x2 + 424a69: e8 e2 ed 2f 00 call 0x723850 + 424a6e: 89 45 08 mov DWORD PTR [ebp+0x8],eax + 424a71: b8 77 4a 42 00 mov eax,0x424a77 + 424a76: c3 ret + 424a77: 8b 7d ec mov edi,DWORD PTR [ebp-0x14] + 424a7a: 8b 75 e4 mov esi,DWORD PTR [ebp-0x1c] + 424a7d: 8b 5d 0c mov ebx,DWORD PTR [ebp+0xc] + 424a80: 85 db test ebx,ebx + 424a82: 74 1a je 0x424a9e + 424a84: 83 7f 14 10 cmp DWORD PTR [edi+0x14],0x10 + 424a88: 72 04 jb 0x424a8e + 424a8a: 8b 07 mov eax,DWORD PTR [edi] + 424a8c: eb 02 jmp 0x424a90 + 424a8e: 8b c7 mov eax,edi + 424a90: 53 push ebx + 424a91: 50 push eax + 424a92: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 424a95: 50 push eax + 424a96: e8 e1 02 50 00 call 0x924d7c + 424a9b: 83 c4 0c add esp,0xc + 424a9e: 83 7f 14 10 cmp DWORD PTR [edi+0x14],0x10 + 424aa2: 72 0b jb 0x424aaf + 424aa4: 8b 0f mov ecx,DWORD PTR [edi] + 424aa6: 51 push ecx + 424aa7: e8 fe 04 50 00 call 0x924faa + 424aac: 83 c4 04 add esp,0x4 + 424aaf: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 424ab2: c6 07 00 mov BYTE PTR [edi],0x0 + 424ab5: 89 07 mov DWORD PTR [edi],eax + 424ab7: 89 77 14 mov DWORD PTR [edi+0x14],esi + 424aba: 89 5f 10 mov DWORD PTR [edi+0x10],ebx + 424abd: 83 fe 10 cmp esi,0x10 + 424ac0: 72 02 jb 0x424ac4 + 424ac2: 8b f8 mov edi,eax + 424ac4: c6 04 1f 00 mov BYTE PTR [edi+ebx*1],0x0 + 424ac8: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 424acb: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 424ad2: 59 pop ecx + 424ad3: 5f pop edi + 424ad4: 5e pop esi + 424ad5: 5b pop ebx + 424ad6: 8b e5 mov esp,ebp + 424ad8: 5d pop ebp + 424ad9: c2 08 00 ret 0x8 + 424adc: 8b mov esi,DWORD PTR [ebp-0x14] diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/string-not-equal.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/string-not-equal.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/string-not-equal.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/string-not-equal.stdout.txt new file mode 100644 index 0000000..ceb5f5f --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/string-not-equal.stdout.txt @@ -0,0 +1,33 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +0046f8c0 <.text+0x6e8c0>: + 46f8c0: 55 push ebp + 46f8c1: 8b ec mov ebp,esp + 46f8c3: 8b 45 0c mov eax,DWORD PTR [ebp+0xc] + 46f8c6: 83 78 14 10 cmp DWORD PTR [eax+0x14],0x10 + 46f8ca: 8b 48 10 mov ecx,DWORD PTR [eax+0x10] + 46f8cd: 72 02 jb 0x46f8d1 + 46f8cf: 8b 00 mov eax,DWORD PTR [eax] + 46f8d1: 51 push ecx + 46f8d2: 8b 4d 08 mov ecx,DWORD PTR [ebp+0x8] + 46f8d5: 50 push eax + 46f8d6: 8b 41 10 mov eax,DWORD PTR [ecx+0x10] + 46f8d9: 50 push eax + 46f8da: 6a 00 push 0x0 + 46f8dc: e8 bf 3d fb ff call 0x4236a0 + 46f8e1: f7 d8 neg eax + 46f8e3: 1b c0 sbb eax,eax + 46f8e5: f7 d8 neg eax + 46f8e7: 5d pop ebp + 46f8e8: c3 ret + 46f8e9: cc int3 + 46f8ea: cc int3 + 46f8eb: cc int3 + 46f8ec: cc int3 + 46f8ed: cc int3 + 46f8ee: cc int3 + 46f8ef: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-append.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-append.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-append.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-append.stdout.txt new file mode 100644 index 0000000..0682ca6 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-append.stdout.txt @@ -0,0 +1,88 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00884cb0 <.text+0x483cb0>: + 884cb0: 55 push ebp + 884cb1: 8b ec mov ebp,esp + 884cb3: 6a ff push 0xffffffff + 884cb5: 68 72 0b 98 00 push 0x980b72 + 884cba: 64 a1 00 00 00 00 mov eax,fs:0x0 + 884cc0: 50 push eax + 884cc1: 51 push ecx + 884cc2: 56 push esi + 884cc3: 57 push edi + 884cc4: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 884cc9: 33 c5 xor eax,ebp + 884ccb: 50 push eax + 884ccc: 8d 45 f4 lea eax,[ebp-0xc] + 884ccf: 64 a3 00 00 00 00 mov fs:0x0,eax + 884cd5: 8b f9 mov edi,ecx + 884cd7: 8b 4f 04 mov ecx,DWORD PTR [edi+0x4] + 884cda: 8b 75 08 mov esi,DWORD PTR [ebp+0x8] + 884cdd: 3b f1 cmp esi,ecx + 884cdf: 73 59 jae 0x884d3a + 884ce1: 8b 07 mov eax,DWORD PTR [edi] + 884ce3: 3b c6 cmp eax,esi + 884ce5: 77 53 ja 0x884d3a + 884ce7: 2b f0 sub esi,eax + 884ce9: b8 ab aa aa 2a mov eax,0x2aaaaaab + 884cee: f7 ee imul esi + 884cf0: c1 fa 02 sar edx,0x2 + 884cf3: 8b f2 mov esi,edx + 884cf5: c1 ee 1f shr esi,0x1f + 884cf8: 03 f2 add esi,edx + 884cfa: 3b 4f 08 cmp ecx,DWORD PTR [edi+0x8] + 884cfd: 75 09 jne 0x884d08 + 884cff: 6a 01 push 0x1 + 884d01: 8b cf mov ecx,edi + 884d03: e8 98 f4 ff ff call 0x8841a0 + 884d08: 8b 0f mov ecx,DWORD PTR [edi] + 884d0a: 8d 04 76 lea eax,[esi+esi*2] + 884d0d: 8d 0c c1 lea ecx,[ecx+eax*8] + 884d10: 8b 47 04 mov eax,DWORD PTR [edi+0x4] + 884d13: 89 45 08 mov DWORD PTR [ebp+0x8],eax + 884d16: 89 45 f0 mov DWORD PTR [ebp-0x10],eax + 884d19: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 884d20: 85 c0 test eax,eax + 884d22: 74 54 je 0x884d78 + 884d24: c7 00 7c f0 a0 00 mov DWORD PTR [eax],0xa0f07c + 884d2a: 8b 51 04 mov edx,DWORD PTR [ecx+0x4] + 884d2d: 83 c1 08 add ecx,0x8 + 884d30: c6 45 fc 01 mov BYTE PTR [ebp-0x4],0x1 + 884d34: 89 50 04 mov DWORD PTR [eax+0x4],edx + 884d37: 51 push ecx + 884d38: eb 36 jmp 0x884d70 + 884d3a: 3b 4f 08 cmp ecx,DWORD PTR [edi+0x8] + 884d3d: 75 09 jne 0x884d48 + 884d3f: 6a 01 push 0x1 + 884d41: 8b cf mov ecx,edi + 884d43: e8 58 f4 ff ff call 0x8841a0 + 884d48: 8b 47 04 mov eax,DWORD PTR [edi+0x4] + 884d4b: 89 45 08 mov DWORD PTR [ebp+0x8],eax + 884d4e: 89 45 f0 mov DWORD PTR [ebp-0x10],eax + 884d51: c7 45 fc 02 00 00 00 mov DWORD PTR [ebp-0x4],0x2 + 884d58: 85 c0 test eax,eax + 884d5a: 74 1c je 0x884d78 + 884d5c: c7 00 7c f0 a0 00 mov DWORD PTR [eax],0xa0f07c + 884d62: 8b 4e 04 mov ecx,DWORD PTR [esi+0x4] + 884d65: 83 c6 08 add esi,0x8 + 884d68: c6 45 fc 03 mov BYTE PTR [ebp-0x4],0x3 + 884d6c: 89 48 04 mov DWORD PTR [eax+0x4],ecx + 884d6f: 56 push esi + 884d70: 8d 48 08 lea ecx,[eax+0x8] + 884d73: e8 d8 4a ef ff call 0x779850 + 884d78: 83 47 04 18 add DWORD PTR [edi+0x4],0x18 + 884d7c: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 884d7f: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 884d86: 59 pop ecx + 884d87: 5f pop edi + 884d88: 5e pop esi + 884d89: 8b e5 mov esp,ebp + 884d8b: 5d pop ebp + 884d8c: c2 04 00 ret 0x4 + 884d8f: cc int3 + 884d90: 55 push ebp + 884d91: 8b ec mov ebp,esp diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-get-create.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-get-create.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-get-create.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-get-create.stdout.txt new file mode 100644 index 0000000..c47ffab --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-get-create.stdout.txt @@ -0,0 +1,87 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +00885380 <.text+0x484380>: + 885380: 55 push ebp + 885381: 8b ec mov ebp,esp + 885383: 6a ff push 0xffffffff + 885385: 68 30 af 99 00 push 0x99af30 + 88538a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 885390: 50 push eax + 885391: 83 ec 18 sub esp,0x18 + 885394: 53 push ebx + 885395: 56 push esi + 885396: 57 push edi + 885397: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 88539c: 33 c5 xor eax,ebp + 88539e: 50 push eax + 88539f: 8d 45 f4 lea eax,[ebp-0xc] + 8853a2: 64 a3 00 00 00 00 mov fs:0x0,eax + 8853a8: 8b f1 mov esi,ecx + 8853aa: 8b 56 08 mov edx,DWORD PTR [esi+0x8] + 8853ad: 2b 56 04 sub edx,DWORD PTR [esi+0x4] + 8853b0: 8d 4e 04 lea ecx,[esi+0x4] + 8853b3: b8 ab aa aa 2a mov eax,0x2aaaaaab + 8853b8: f7 ea imul edx + 8853ba: c1 fa 02 sar edx,0x2 + 8853bd: 8b c2 mov eax,edx + 8853bf: c1 e8 1f shr eax,0x1f + 8853c2: 33 db xor ebx,ebx + 8853c4: 03 c2 add eax,edx + 8853c6: 33 ff xor edi,edi + 8853c8: 3b c3 cmp eax,ebx + 8853ca: 7e 30 jle 0x8853fc + 8853cc: 8b 11 mov edx,DWORD PTR [ecx] + 8853ce: 8b ff mov edi,edi + 8853d0: 8b 5d 08 mov ebx,DWORD PTR [ebp+0x8] + 8853d3: 39 5a 04 cmp DWORD PTR [edx+0x4],ebx + 8853d6: 75 02 jne 0x8853da + 8853d8: 8b fa mov edi,edx + 8853da: 83 c2 18 add edx,0x18 + 8853dd: 48 dec eax + 8853de: 75 f0 jne 0x8853d0 + 8853e0: 33 db xor ebx,ebx + 8853e2: 3b fb cmp edi,ebx + 8853e4: 74 16 je 0x8853fc + 8853e6: 8b c7 mov eax,edi + 8853e8: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 8853eb: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 8853f2: 59 pop ecx + 8853f3: 5f pop edi + 8853f4: 5e pop esi + 8853f5: 5b pop ebx + 8853f6: 8b e5 mov esp,ebp + 8853f8: 5d pop ebp + 8853f9: c2 04 00 ret 0x4 + 8853fc: c7 45 dc 7c f0 a0 00 mov DWORD PTR [ebp-0x24],0xa0f07c + 885403: 89 5d e4 mov DWORD PTR [ebp-0x1c],ebx + 885406: 89 5d e8 mov DWORD PTR [ebp-0x18],ebx + 885409: 89 5d ec mov DWORD PTR [ebp-0x14],ebx + 88540c: 8d 45 dc lea eax,[ebp-0x24] + 88540f: 50 push eax + 885410: 89 5d fc mov DWORD PTR [ebp-0x4],ebx + 885413: e8 98 f8 ff ff call 0x884cb0 + 885418: 8d 4d e4 lea ecx,[ebp-0x1c] + 88541b: c7 45 fc 01 00 00 00 mov DWORD PTR [ebp-0x4],0x1 + 885422: e8 59 41 da ff call 0x629580 + 885427: 8b 46 08 mov eax,DWORD PTR [esi+0x8] + 88542a: 8b 4d 08 mov ecx,DWORD PTR [ebp+0x8] + 88542d: 89 48 ec mov DWORD PTR [eax-0x14],ecx + 885430: 8b 46 08 mov eax,DWORD PTR [esi+0x8] + 885433: 83 e8 18 sub eax,0x18 + 885436: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 885439: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 885440: 59 pop ecx + 885441: 5f pop edi + 885442: 5e pop esi + 885443: 5b pop ebx + 885444: 8b e5 mov esp,ebp + 885446: 5d pop ebp + 885447: c2 04 00 ret 0x4 + 88544a: cc int3 + 88544b: cc int3 + 88544c: cc int3 + 88544d: cc int3 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-growth.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-growth.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-growth.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-growth.stdout.txt new file mode 100644 index 0000000..008416b --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-growth.stdout.txt @@ -0,0 +1,142 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +008841a0 <.text+0x4831a0>: + 8841a0: 55 push ebp + 8841a1: 8b ec mov ebp,esp + 8841a3: 8b 51 04 mov edx,DWORD PTR [ecx+0x4] + 8841a6: 56 push esi + 8841a7: 57 push edi + 8841a8: 8b 39 mov edi,DWORD PTR [ecx] + 8841aa: 2b d7 sub edx,edi + 8841ac: b8 ab aa aa 2a mov eax,0x2aaaaaab + 8841b1: f7 ea imul edx + 8841b3: 8b 45 08 mov eax,DWORD PTR [ebp+0x8] + 8841b6: c1 fa 02 sar edx,0x2 + 8841b9: 8b f2 mov esi,edx + 8841bb: c1 ee 1f shr esi,0x1f + 8841be: 03 f2 add esi,edx + 8841c0: ba aa aa aa 0a mov edx,0xaaaaaaa + 8841c5: 2b d0 sub edx,eax + 8841c7: 3b d6 cmp edx,esi + 8841c9: 73 0b jae 0x8841d6 + 8841cb: 68 90 1f 9e 00 push 0x9e1f90 + 8841d0: ff 15 50 d1 9d 00 call DWORD PTR ds:0x9dd150 + 8841d6: 8b 51 08 mov edx,DWORD PTR [ecx+0x8] + 8841d9: 03 f0 add esi,eax + 8841db: 2b d7 sub edx,edi + 8841dd: b8 ab aa aa 2a mov eax,0x2aaaaaab + 8841e2: f7 ea imul edx + 8841e4: c1 fa 02 sar edx,0x2 + 8841e7: 8b c2 mov eax,edx + 8841e9: c1 e8 1f shr eax,0x1f + 8841ec: 03 c2 add eax,edx + 8841ee: 3b f0 cmp esi,eax + 8841f0: 76 21 jbe 0x884213 + 8841f2: 8b d0 mov edx,eax + 8841f4: d1 ea shr edx,1 + 8841f6: bf aa aa aa 0a mov edi,0xaaaaaaa + 8841fb: 2b fa sub edi,edx + 8841fd: 3b f8 cmp edi,eax + 8841ff: 73 04 jae 0x884205 + 884201: 33 c0 xor eax,eax + 884203: eb 02 jmp 0x884207 + 884205: 03 c2 add eax,edx + 884207: 3b c6 cmp eax,esi + 884209: 73 02 jae 0x88420d + 88420b: 8b c6 mov eax,esi + 88420d: 50 push eax + 88420e: e8 4d f8 ff ff call 0x883a60 + 884213: 5f pop edi + 884214: 5e pop esi + 884215: 5d pop ebp + 884216: c2 04 00 ret 0x4 + 884219: cc int3 + 88421a: cc int3 + 88421b: cc int3 + 88421c: cc int3 + 88421d: cc int3 + 88421e: cc int3 + 88421f: cc int3 + 884220: 55 push ebp + 884221: 8b ec mov ebp,esp + 884223: 6a ff push 0xffffffff + 884225: 68 10 ad 99 00 push 0x99ad10 + 88422a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 884230: 50 push eax + 884231: 83 ec 0c sub esp,0xc + 884234: 53 push ebx + 884235: 56 push esi + 884236: 57 push edi + 884237: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 88423c: 33 c5 xor eax,ebp + 88423e: 50 push eax + 88423f: 8d 45 f4 lea eax,[ebp-0xc] + 884242: 64 a3 00 00 00 00 mov fs:0x0,eax + 884248: 89 65 f0 mov DWORD PTR [ebp-0x10],esp + 88424b: 8b d9 mov ebx,ecx + 88424d: 89 5d e8 mov DWORD PTR [ebp-0x18],ebx + 884250: 8b 7d 08 mov edi,DWORD PTR [ebp+0x8] + 884253: 80 bf 89 00 00 00 00 cmp BYTE PTR [edi+0x89],0x0 + 88425a: 8b 43 04 mov eax,DWORD PTR [ebx+0x4] + 88425d: 89 45 ec mov DWORD PTR [ebp-0x14],eax + 884260: 75 51 jne 0x8842b3 + 884262: 8d 4f 10 lea ecx,[edi+0x10] + 884265: 51 push ecx + 884266: 8b cb mov ecx,ebx + 884268: e8 23 f9 ff ff call 0x883b90 + 88426d: 8b 55 0c mov edx,DWORD PTR [ebp+0xc] + 884270: 8b 4d ec mov ecx,DWORD PTR [ebp-0x14] + 884273: 8b f0 mov esi,eax + 884275: 89 56 04 mov DWORD PTR [esi+0x4],edx + 884278: 8a 87 88 00 00 00 mov al,BYTE PTR [edi+0x88] + 88427e: 88 86 88 00 00 00 mov BYTE PTR [esi+0x88],al + 884284: 80 b9 89 00 00 00 00 cmp BYTE PTR [ecx+0x89],0x0 + 88428b: 74 03 je 0x884290 + 88428d: 89 75 ec mov DWORD PTR [ebp-0x14],esi + 884290: 8b 17 mov edx,DWORD PTR [edi] + 884292: 56 push esi + 884293: 52 push edx + 884294: 8b cb mov ecx,ebx + 884296: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 88429d: e8 7e ff ff ff call 0x884220 + 8842a2: 89 06 mov DWORD PTR [esi],eax + 8842a4: 8b 47 08 mov eax,DWORD PTR [edi+0x8] + 8842a7: 56 push esi + 8842a8: 50 push eax + 8842a9: 8b cb mov ecx,ebx + 8842ab: e8 70 ff ff ff call 0x884220 + 8842b0: 89 46 08 mov DWORD PTR [esi+0x8],eax + 8842b3: 8b 45 ec mov eax,DWORD PTR [ebp-0x14] + 8842b6: 8b 4d f4 mov ecx,DWORD PTR [ebp-0xc] + 8842b9: 64 89 0d 00 00 00 00 mov DWORD PTR fs:0x0,ecx + 8842c0: 59 pop ecx + 8842c1: 5f pop edi + 8842c2: 5e pop esi + 8842c3: 5b pop ebx + 8842c4: 8b e5 mov esp,ebp + 8842c6: 5d pop ebp + 8842c7: c2 08 00 ret 0x8 + 8842ca: 8b 4d ec mov ecx,DWORD PTR [ebp-0x14] + 8842cd: 51 push ecx + 8842ce: 8b 4d e8 mov ecx,DWORD PTR [ebp-0x18] + 8842d1: e8 5a f5 fe ff call 0x873830 + 8842d6: 6a 00 push 0x0 + 8842d8: 6a 00 push 0x0 + 8842da: e8 dd 0c 0a 00 call 0x924fbc + 8842df: cc int3 + 8842e0: 55 push ebp + 8842e1: 8b ec mov ebp,esp + 8842e3: 6a ff push 0xffffffff + 8842e5: 68 6c ad 99 00 push 0x99ad6c + 8842ea: 64 a1 00 00 00 00 mov eax,fs:0x0 + 8842f0: 50 push eax + 8842f1: 83 ec 78 sub esp,0x78 + 8842f4: 56 push esi + 8842f5: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 8842fa: 33 c5 xor eax,ebp + 8842fc: 50 push eax + 8842fd: 8d 45 f4 lea eax,[ebp-0xc] diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-virtual-dtor.stderr.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-virtual-dtor.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-virtual-dtor.stdout.txt b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-virtual-dtor.stdout.txt new file mode 100644 index 0000000..995bee8 --- /dev/null +++ b/verify/results/research-completion-abi/run-35e59053176da458d8b46fea/turn-virtual-dtor.stdout.txt @@ -0,0 +1,33 @@ + +/home/alex/sots-re/dumps/sots.exe: file format pei-i386 + + +Disassembly of section .text: + +0062e120 <.text+0x22d120>: + 62e120: 55 push ebp + 62e121: 8b ec mov ebp,esp + 62e123: 6a ff push 0xffffffff + 62e125: 68 08 92 98 00 push 0x989208 + 62e12a: 64 a1 00 00 00 00 mov eax,fs:0x0 + 62e130: 50 push eax + 62e131: 51 push ecx + 62e132: 56 push esi + 62e133: a1 78 8b af 00 mov eax,ds:0xaf8b78 + 62e138: 33 c5 xor eax,ebp + 62e13a: 50 push eax + 62e13b: 8d 45 f4 lea eax,[ebp-0xc] + 62e13e: 64 a3 00 00 00 00 mov fs:0x0,eax + 62e144: 8b f1 mov esi,ecx + 62e146: 89 75 f0 mov DWORD PTR [ebp-0x10],esi + 62e149: 8d 4e 08 lea ecx,[esi+0x8] + 62e14c: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0 + 62e153: e8 28 b4 ff ff call 0x629580 + 62e158: f6 45 08 01 test BYTE PTR [ebp+0x8],0x1 + 62e15c: c7 06 bc 22 9e 00 mov DWORD PTR [esi],0x9e22bc + 62e162: 74 09 je 0x62e16d + 62e164: 56 push esi + 62e165: e8 40 6e 2f 00 call 0x924faa + 62e16a: 83 c4 04 add esp,0x4 + 62e16d: 8b c6 mov eax,esi + 62e16f: 8b mov ecx,DWORD PTR [ebp-0xc]