adv-accept: no yield, cores 8-95 at nice 10 (ruling 18:4x UTC); report times in UTC; merge build/master

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
igneum-labs 2026-10-07 18:33:54 +00:00
parent 0c2108437d
commit a55de00864
2 changed files with 11 additions and 39 deletions

View file

@ -5,7 +5,7 @@ internal adversarial pass, not an independent review
- Target commit: 017e70376489251e18564c0abce7e466e606c8b3 (class v4 sub-version 3, object byte 7).
- Crate built: igneum-pow at the frozen commit (this worktree's igneum-pow/ is reset to it; build/master
diverged by 635 deletions and is not used). Harness: tools/attack/adv-accept (depends on igneum-pow by path).
- Re-base (19:3x BST): build/master moved to 7a7caa34 whose igneum-pow IS the frozen object; merged at
- Re-base (18:3x UTC): build/master moved to 7a7caa34 whose igneum-pow IS the frozen object; merged at
8748e955ceb48be5a6cbf7f8718a4884d3de9828; `git diff --quiet 017e7037 HEAD -- igneum-pow` prints IDENTICAL.
Nothing measured here was on a stale tree: igneum-pow/ had been reset to the frozen object before the first build.
- Binary sha256 (first build, box 2): e3d35f4464937f91aac0648e2ee7134f33c85c7aa314b87b33f91059dedc6682 (adv-accept
@ -15,10 +15,10 @@ internal adversarial pass, not an independent review
nice 10 on every idle core, the capacity layer's yield (run-box.sh). Logs under
/srv/builds/igneum-wt-adv-accept/adv/ on each box (spared from the checkout clean by .igneum-scratch-spare; the
first 10k log on box 2 was wiped by a rebuild before the spare existed and is void anyway: old labels, old binary).
- Lane scope since 19:2x BST: THE BYPASS (Q1, Q2, Q5). Q3 is lane adv-accept-3's, Q4 lane adv-accept-2's.
- Lane scope since 18:2x UTC: THE BYPASS (Q1, Q2, Q5). Q3 is lane adv-accept-3's, Q4 lane adv-accept-2's.
- Seed space: the attack-pass F8 label space (program k = seed_words("igneum-attack-f8/program/k"), era
".../era/k"), so `adv-live warps --program k` measures the live hot set of exactly the program the sweep reports.
- rustc 1.99.0 both sides. First results by 8 October 2026 18:00 BST. GPU: not available, so any per-card
- rustc 1.99.0 both sides. First results by 8 October 2026 18:00 UTC. GPU: not available, so any per-card
hash-rate confirmation of a gain is BLOCKED and said so.
- Box-hours spent so far: about 0.1 (one 7 s build, three short runs). Budget 8.
@ -77,7 +77,7 @@ set (the memory-hard cache, items derived into a table, the cross-hash histogram
test) is the next run and is what the chip model prices; the closed-form distinct mean is a cheap
upper bound on how concentrated an accepted program can be on the stand-in.
Numbers land here when the run finishes (first results by 8 October 18:00 BST).
Numbers land here when the run finishes (first results by 8 October 18:00 UTC).
## Running notes

View file

@ -1,10 +1,9 @@
#!/usr/bin/env bash
# Start a long adv-accept run on a build box under this lane's rules (coordinator, 7 October 2026, 19:2x UK):
# nice 10 on every idle core (no core band), and the capacity layer's yield: a 5 s poll of /srv/builds/_locks
# SIGSTOPs the run's own process group while any build-<k>, measure or quiet lock is held and SIGCONTs it when
# they clear (infra/build-server/capacity/run.sh). The run never takes a build slot. Pid files beside the log:
# <log>.pid (the run), <log>.pgid (its process group), <log>.yield.pid (the yield loop). Kill ONLY by pid file:
# kill -- -"$(cat <log>.pgid)"; kill "$(cat <log>.yield.pid)"
# Start a long adv-accept run on a build box under this lane's rules (build-server lane and coordinator, 7 October
# 2026, 18:4x UTC): nice 10 on cores 8 to 95 only (cores 0 to 7 belong to release builds, the seed and the observer),
# no SIGSTOP yield (the ruling of 18:4x UTC replaced the capacity layer's yield: the scheduler shares the cores), no build
# slot taken. Pid files beside the log: <log>.pid (the run) and <log>.pgid (its process group). Kill ONLY by pid file:
# kill -- -"$(cat <log>.pgid)"
# Run ON the box, from anywhere:
# run-box.sh <tag> <bin> <args...>
set -euo pipefail
@ -13,35 +12,8 @@ dir=/srv/builds/igneum-wt-adv-accept/adv
mkdir -p "$dir"
log="$dir/$tag.log"
[ -x "$bin" ] || { echo "no binary at $bin" >&2; exit 1; }
# own process group via setsid so STOP/CONT reach every thread and child
setsid nice -n 10 "$bin" "$@" > "$log" 2>&1 < /dev/null &
setsid nice -n 10 taskset -c 8-95 "$bin" "$@" > "$log" 2>&1 < /dev/null &
pid=$!
pgid=$(ps -o pgid= -p "$pid" 2>/dev/null | tr -d ' '); [ -n "$pgid" ] || pgid="$pid"
echo "$pid" > "$log.pid"; echo "$pgid" > "$log.pgid"
locks=/srv/builds/_locks
held() { # 0 when any build slot, measure or quiet lock is held
local f
for f in "$locks"/build-[0-9]* "$locks"/measure "$locks"/quiet; do
[ -e "$f" ] || continue
exec 9>>"$f"
if ! flock -n 9; then exec 9>&-; return 0; fi
exec 9>&-
done
return 1
}
(
paused=0
while kill -0 "$pid" 2>/dev/null; do
if held; then
if [ "$paused" = 0 ]; then kill -STOP -- "-$pgid" 2>/dev/null && paused=1; echo "$(date -u +%FT%TZ) pause (a build slot or hold is taken)" >> "$log.yield"; fi
else
if [ "$paused" = 1 ]; then kill -CONT -- "-$pgid" 2>/dev/null; paused=0; echo "$(date -u +%FT%TZ) resume" >> "$log.yield"; fi
fi
sleep 5
done
[ "$paused" = 1 ] && kill -CONT -- "-$pgid" 2>/dev/null
echo "$(date -u +%FT%TZ) run ended" >> "$log.yield"
) > /dev/null 2>&1 < /dev/null &
disown $! 2>/dev/null || true
echo $! > "$log.yield.pid"
echo "started pid $pid pgid $pgid yield-loop pid $(cat "$log.yield.pid"); log $log"
echo "$(date -u +%FT%TZ) started pid $pid pgid $pgid nice 10 cores 8-95; log $log" | tee -a "$log.start"