sots-re/campaign/contracts/research-completion-abi.json

171 lines
7.7 KiB
JSON

{
"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"
}