{ "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-32c9f62a4fda2ab02b29d4c4.json", "dependencies": [ "controls-bootstrap" ], "effects": [ "Evidence-backed RE handoff and raw static captures; no game or shared database state changes" ], "evidence": [], "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": "needs-revision", "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" }