sots-re/campaign/runtime/decisions/d-e9d6d48cd77538556d1a1c1f.json

14 lines
7.2 KiB
JSON

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