Files
BFM-decomp/tools/lanes/toolwork.sh
T
Drew T d53c4bf796 fix(R42): gate_main self-reverts on abort; campaign refuses to adopt main sources
Closes the gap that made main red for nine hours. R42 ('commit a dirty tree rather than
revert it') is correct for a per-binary gate that leaves PROVEN banks uncommitted, and WRONG
for gate_main, whose substitution is unverified by construction until the SHA matches.

Two guards, defense in depth:
1. gate_main installs atexit + SIGTERM/SIGINT/SIGHUP handlers that revert its own substitution
   unless a bank actually succeeded. Killed mid-run, it now cleans up after itself.
2. ox_campaign's dirty-tree commit REFUSES top-level src/*.c (main's sources), reverting those
   and committing the rest. Verified: src/800c.c and src/800.c refused, src/ov_*/... and
   src/shared/engine_core.h still commit.

Also versions the autonomous lane scripts under tools/lanes/ — they lived only in gitignored
.run/, so a fresh clone had no drafter, gater, maintenance or stallguard at all.
2026-08-24 10:27:34 -06:00

17 lines
945 B
Bash

#!/usr/bin/env bash
set -u
cd /home/musashi/bfm-decomp
KEY=$(grep -m1 '^open_router_key=' .env | cut -d= -f2-)
export API_BASE=https://openrouter.ai/api/v1 API_KEY="$KEY" MODEL=stealth/ox-alpha MAXTOK=16000 MAX_429=10
# A TOOLING-DESIGN brief must read the build config and the tool sources; a decompilation
# brief must not. Granted only for this task, via EXTRA_READABLE.
export EXTRA_READABLE='config,tools,Makefile'
.venv/bin/python -u tools/api_agent.py --targets .run/bakeoff/toolwork/t_jtbl.json \
--brief .run/bakeoff/toolwork/brief_jtbl.txt --out .run/bakeoff/toolwork/out_jtbl \
--max-turns 50 --max-cost 2.0 > .run/bakeoff/toolwork/jtbl.log 2>&1 &
.venv/bin/python -u tools/api_agent.py --targets .run/bakeoff/toolwork/t_o0cc1.json \
--brief .run/bakeoff/toolwork/brief_o0cc1.txt --out .run/bakeoff/toolwork/out_o0cc1 \
--max-turns 50 --max-cost 2.0 > .run/bakeoff/toolwork/o0cc1.log 2>&1 &
wait
echo "TOOLWORK ANALYSIS DONE"