{ "acceptance": [ { "axis": "static-recovery", "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.", "id": "ownership-recovered" }, { "axis": "validation", "criterion": "Independent verifier checks key instruction/ABI claims and archived record values. No static-only claim of live allocator safety or replacement acceptance.", "id": "independent-cross-check" } ], "baseline": { "engine": { "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", "path": "/home/alex/sots-engine" }, "re": { "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", "path": "/home/alex/sots-re" } }, "checkpoint": "campaign/runtime/checkpoints/research-completion-abi-d2e4078886c66df34ee00b24.json", "dependencies": [ "controls-bootstrap" ], "effects": [ "Evidence-backed RE handoff and raw static captures; no game or shared database state changes" ], "evidence": [ { "axis": "static-recovery", "binaries": [ { "path": "dumps/sots.exe", "sha256": "970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841" } ], "id": "research-completion-abi-static-run-79357a65226f61d6a86c042d", "inputs": [ { "path": "verify/results/research-completion-abi/run-79357a65226f61d6a86c042d/report.md", "sha256": "d5a28f01002f1711cf8575ffd817a8f0998b413c6280d656e6cdad5a90a04477" } ], "integrated": true, "outcomes": [ { "artifact": { "path": "verify/results/research-completion-abi-independent/integration-lead-20260910/manifest.json", "sha256": "4fdf2cbf02f0f3dd53c4ccfd1787a2fb8012d0de76dad63e97c2b5cfbdc6c46c" }, "criterion": "ownership-recovered", "status": "pass" } ], "path": "verify/results/research-completion-abi-independent/integration-lead-20260910/manifest.json", "sha256": "4fdf2cbf02f0f3dd53c4ccfd1787a2fb8012d0de76dad63e97c2b5cfbdc6c46c", "source": { "engine": { "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", "path": "/home/alex/sots-engine" }, "re": { "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", "path": "/home/alex/sots-re" } }, "source_binding": { "engine": { "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", "path": "/home/alex/sots-engine", "sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd" }, "re": { "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", "path": "/home/alex/sots-re", "sha256": "e74ef6cff202ee35a6fdc38d63842b4826a074e34502dfc2981a33ffea912bd4" } } }, { "axis": "validation", "binaries": [ { "path": "dumps/sots.exe", "sha256": "970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841" } ], "id": "research-completion-abi-validation-run-735fcb8f4876c10285b03fad", "inputs": [ { "path": "verify/results/saves/turn3-state.sav", "sha256": "978041acd168b56ed8eb3f5e42e78d5e70eae6e6517d75e659a5eb7ca3d60921" }, { "path": "verify/results/research-completion-abi-independent/integration-lead-20260910/manifest.json", "sha256": "4fdf2cbf02f0f3dd53c4ccfd1787a2fb8012d0de76dad63e97c2b5cfbdc6c46c" } ], "integrated": true, "outcomes": [ { "artifact": { "path": "verify/results/research-completion-abi-independent/integration-lead-20260910/independent-state.json", "sha256": "6463816f322803b2b7b479e1fc116c4ffa33fb2772a3005d492422a00acea433" }, "criterion": "independent-cross-check", "status": "pass" } ], "path": "verify/results/research-completion-abi-independent/integration-lead-20260910/independent-state.json", "sha256": "6463816f322803b2b7b479e1fc116c4ffa33fb2772a3005d492422a00acea433", "source": { "engine": { "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", "path": "/home/alex/sots-engine" }, "re": { "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", "path": "/home/alex/sots-re" } }, "source_binding": { "engine": { "commit": "7741d42fc5e4e761e6449bdaf0e4a61d00036a23", "path": "/home/alex/sots-engine", "sha256": "ccd8e02083e8d2e2b3e97976ace2273c8f924dfc02a39e919004eaf3544c50fd" }, "re": { "commit": "3bfde5a70d874a723e797a695bbd847fd82c0aa7", "path": "/home/alex/sots-re", "sha256": "e74ef6cff202ee35a6fdc38d63842b4826a074e34502dfc2981a33ffea912bd4" } } } ], "id": "research-completion-abi", "inputs": [ "Existing binary fingerprint/address contract and private RE findings", "Owner-supplied binary or live read-only ReVa endpoint", "Archived CR traces/saves for observed behavior", "Source-identical current engine/RE worktree snapshots" ], "original_dependencies": [ "Original binary is the object of analysis, not a replacement dependency decision" ], "owner": { "name": "research-abi-analyst", "role": "analyst" }, "predictions": [ "Count-only scratch updates conceal concrete element construction and original allocator ownership requirements", "The observed-tech and nested-event containers use different element strides and nontrivial string lifetimes; raw header copying is insufficient" ], "scope": [ "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.", "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.", "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.", "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.", "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." ], "status": "accepted", "stop_conditions": [ "Stop affected interpretation on binary fingerprint mismatch, contradictory ownership/ABI evidence, unavailable original data, or any scope-changing surprise; record and escalate to Astra", "Checkpoint every 20 calls/15 minutes and before compaction/stopping; return exact next RE action within 40 steps", "Do not expand into framework development or mark pilot replacement ready/accepted" ], "title": "RE: research completion record construction and allocator ABI" }