Files
BFM-decomp/tools/lanes/gater.sh
T
Drew T f78ea55b3e fix(gate): log what the gate actually does; --gate-jobs 24 -> 32; TAIL_DONE_FRAC 0.80
THE GATE WAS A BLACK BOX. sweep_parallel's stdout was captured and dropped, so a gate logged
"reloc_identity -> gating 216" and then THIRTY MINUTES OF SILENCE before its bank line — no
worker count, no per-binary progress, no phase-A/phase-B split. Gate times went 31 -> 37 ->
50 -> 67 min across ej/ek/en/eo with nothing to diagnose from, and I twice asserted things
about phase B that the log could not support (its absence measured LOG CAPTURE, not
behaviour). A lane that must run unattended has to leave evidence.

MEASURED WHILE DIAGNOSING, and it rules out the obvious suspects: load average 2.6 on 32
cores with 1-3 concurrent builds during a gate — the gate is NOT CPU-bound and is not
saturating its own -j 24. Raising to 32 is cheap given ~8% utilisation, but the real answer
will come from the log this change adds.

TAIL_DONE_FRAC 0.85 -> 0.80. 0.85 overcorrected: the fleet fell to 15 agents / 11 req/min
because the drafter parks between waves while the gater drains a deep queue. 0.75 was too
deep (26% 429s, draft completion sliding 94->91->73->47% across eq/er/es/et). Neither number
is really the lever: the drafter cannot start a wave the gater has no room for, so the gate
throughput is what bounds the campaign now.

Generational tiering confirmed already correct: the top-off orders by generation at both
assembly levels (group ranking and within-group) without FILTERING any tier out, so every
generation stays eligible and the scarce never-drafted work simply goes first.
2026-08-25 19:00:02 -06:00

15 lines
830 B
Bash

#!/usr/bin/env bash
# The restartable lane. Kill and relaunch this freely — drafting is unaffected.
set -u
cd /home/musashi/bfm-decomp
while [ ! -e .run/ox_campaign.stop ]; do
# GATE JOBS 24 (P31 S59, Drew approved the CPU). Each job is one whole-binary rebuild and the box
# is 32 cores running at ~6% (load 3.1, 211% of 3200%) with 39 GB free — 12 was leaving the machine
# idle. It matters now because the tells and jtbl QUOTAS deliberately pull cards from binaries
# outside the ranked gate groups: a measured draw went from ~24 groups to 63, i.e. 63 rebuilds per
# wave, and at 12 jobs that is five serial batches. Raise this with the quota sizes, not on its own.
.venv/bin/python tools/ox_campaign.py --gater --gate-jobs 32 2>&1
echo "[$(date +%H:%M:%S)] [gater] exited; restarting in 20s"
sleep 20
done