64 lines
4.3 KiB
JSON
64 lines
4.3 KiB
JSON
{
|
|
"schema": "sots-live-record-static-capture/1",
|
|
"session": "run-a247a9d6650d9e0954596cc0",
|
|
"model": "openai/gpt-5.6-sol",
|
|
"actor": "live-record bridge architect",
|
|
"role": "architecture-review",
|
|
"scope": "Read-only ObservedTech constructor, scalar-deleting destructor, and vtable-slot capture; planning evidence only, not live allocator-safety evidence.",
|
|
"source": {
|
|
"engine": {
|
|
"path": "/tmp/opencode/sots-final-research-engine",
|
|
"commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23",
|
|
"sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd"
|
|
},
|
|
"re": {
|
|
"path": "/tmp/opencode/sots-final-research-re",
|
|
"commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7",
|
|
"sha256": "6696fd5201e144843617cbf6d78b41b5287ad5dcc9fa1e8aaa861d52b64e72e8"
|
|
}
|
|
},
|
|
"binary": {
|
|
"path": "dumps/sots.exe",
|
|
"sha256": "970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841",
|
|
"image_base": "0x00400000"
|
|
},
|
|
"tool": {
|
|
"path": "/usr/bin/objdump",
|
|
"version": "GNU Binutils 2.38",
|
|
"sha256": "1eaaef2e7f57c4c7f69115c495e2466f5a8c8e5f3bc42221d092382f30f9d4cd"
|
|
},
|
|
"captures": [
|
|
{
|
|
"name": "observed-ctor",
|
|
"argv": ["/usr/bin/objdump", "-D", "-Mintel", "--start-address=0x008562a0", "--stop-address=0x0085630d", "dumps/sots.exe"],
|
|
"returncode": 0,
|
|
"stdout": {"path": "verify/results/research-live-record-bridge/run-a247a9d6650d9e0954596cc0/observed-ctor.stdout.txt", "bytes": 2086, "sha256": "402267f37b84f516b329764296600a19921c9cbafabd696a3fb00ff1891601fd"},
|
|
"stderr": {"path": "verify/results/research-live-record-bridge/run-a247a9d6650d9e0954596cc0/observed-ctor.stderr.txt", "bytes": 0, "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}
|
|
},
|
|
{
|
|
"name": "observed-dtor",
|
|
"argv": ["/usr/bin/objdump", "-D", "-Mintel", "--start-address=0x00793610", "--stop-address=0x00793653", "dumps/sots.exe"],
|
|
"returncode": 0,
|
|
"stdout": {"path": "verify/results/research-live-record-bridge/run-a247a9d6650d9e0954596cc0/observed-dtor.stdout.txt", "bytes": 1320, "sha256": "2e35acb290eb5afe6a1780e4d9bab70a80f407955c9f87e7d7ebcd72be7dcc2c"},
|
|
"stderr": {"path": "verify/results/research-live-record-bridge/run-a247a9d6650d9e0954596cc0/observed-dtor.stderr.txt", "bytes": 0, "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}
|
|
},
|
|
{
|
|
"name": "observed-vtable",
|
|
"argv": ["/usr/bin/objdump", "-s", "--start-address=0x00a24390", "--stop-address=0x00a243ac", "dumps/sots.exe"],
|
|
"returncode": 0,
|
|
"stdout": {"path": "verify/results/research-live-record-bridge/run-a247a9d6650d9e0954596cc0/observed-vtable.stdout.txt", "bytes": 195, "sha256": "4e487adaf5648a071ea3e11c8f4cdfaddf6ee4e76aba599f7e0a0154317fcdce"},
|
|
"stderr": {"path": "verify/results/research-live-record-bridge/run-a247a9d6650d9e0954596cc0/observed-vtable.stderr.txt", "bytes": 0, "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}
|
|
}
|
|
],
|
|
"observations": {
|
|
"constructor": "VA 0x008562a0 consumes ECX=this, no stack arguments, returns this in EAX, and ends in plain ret. It installs vptr 0x00a2439c, initializes the embedded string at +0x0c, then zeros +0x04, byte +0x08, and +0x28.",
|
|
"destructor": "VA 0x00793610 consumes ECX=this and one flags stack word, returns this in EAX, and ends ret 4. It frees the name buffer through 0x00924faa only when capacity at +0x20 is at least 0x10, resets the string, writes base vptr 0x009e22bc, and frees this only when flags bit 0 is set.",
|
|
"vtable": "Little-endian words at vtable VA 0x00a2439c are slot 0 = 0x00793610, slot 1 = 0x00817c40, slot 2 = 0x00817cf0; the preceding COL word at 0x00a24398 is 0x00a81c78.",
|
|
"embedded_rule": "Bridge destruction of stack, vector-element, or otherwise embedded ObservedTech values must invoke slot 0 with flags=0. Accepted dependency capture observed-realloc-wide.stdout.txt positively exposes push 0 followed by slot-0 virtual dispatch for old vector elements."
|
|
},
|
|
"limitations": [
|
|
"No original function was executed; this is static ABI planning evidence.",
|
|
"No allocator failure, destruction, VM, game process, or bridge path was exercised.",
|
|
"The destructor stop address is the first byte after its complete ret 4 encoding."
|
|
]
|
|
}
|