Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions EVIDENCE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# #2646 — warm-slot reproducibility on the production triage path

> `/mnt-1` paths below are dead as of #3158/#3159 (decommissioned 2026-09-09). Left
> as-written since this is a dated record; see `docs/HOMESERVER-DISK-LAYOUT.md` for
> current layout.

## 0. What this session could and could not do

State this first so nothing below is read as stronger than it is.
Expand Down
4 changes: 2 additions & 2 deletions analysis/ghidra/benchmarks/corpus/chain_cold.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
# chain_cold.sh -- start the full cold re-run once phase 3's scoring is done.
#
# Operational copy lives at /mnt-1/benchmarks/chain_cold.sh.
# Operational copy lives at /var/benchmarks/chain_cold.sh.
#
# ---------------------------------------------------------------------------
# Why the wait condition is positive, not "is the GPU idle"
Expand All @@ -20,7 +20,7 @@
# is a wasted day of GPU rather than an error message.
set -u

BASE=${BASE:-/mnt-1/benchmarks}
BASE=${BASE:-/var/benchmarks}
RESULTS=${RESULTS:-$BASE/1947full}
TAGLIST=${TAGLIST:-$BASE/models_requant.txt}
MAX_WAIT_MIN=${MAX_WAIT_MIN:-4320} # 72h
Expand Down
4 changes: 2 additions & 2 deletions analysis/ghidra/benchmarks/corpus/chain_phase3.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# chain_phase3.sh -- run phase 3's SCORING half once phase 2 has actually
# finished with the GPU.
#
# Operational copy lives at /mnt-1/benchmarks/chain_phase3.sh. Committed here
# Operational copy lives at /var/benchmarks/chain_phase3.sh. Committed here
# because the previous generation of chain scripts (chain2b.sh, chain3.sh) were
# never committed, did not survive the rebuild, and took phases 2.5/3/5 with
# them (#2985).
Expand All @@ -26,7 +26,7 @@
# green light to spend GPU hours on the next phase.
set -u

BASE=${BASE:-/mnt-1/benchmarks}
BASE=${BASE:-/var/benchmarks}
RESULTS=${RESULTS:-$BASE/1947full}
ROSTER=${ROSTER:-$BASE/models_extra_all.txt}
TAGLIST=${TAGLIST:-$BASE/models_requant.txt}
Expand Down
6 changes: 3 additions & 3 deletions analysis/ghidra/benchmarks/corpus/chain_round7.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# chain_round7.sh -- #3087: fire the round-7 slot sweeps once every round-7
# roster tag is measured on the ghidra slot AND the GPU work area is idle.
#
# Operational copy: /mnt-1/benchmarks/chain_round7.sh.
# Operational copy: /var/benchmarks/chain_round7.sh.
#
# ---------------------------------------------------------------------------
# Why the wait condition is POSITIVE, not "is the GPU idle" -- the same
Expand All @@ -16,7 +16,7 @@
# every tag in models_round7.txt has both tier files
# (tierA_<slug>_run1.json + tierB_<slug>_run1.json) OR an
# UNMEASURED_slots.../UNMEASURED_<slug>.status marker in
# /mnt-1/benchmarks/round7/
# /var/benchmarks/round7/
#
# ...AND no sweep_extra.sh / round7_coldrun.sh's own drivers
# (coldrun.sh) / record_baseline.py process is alive. Both must hold at once:
Expand All @@ -25,7 +25,7 @@
# as the second line of defence.
set -u

BASE=${BASE:-/mnt-1/benchmarks}
BASE=${BASE:-/var/benchmarks}
RESULTS=${RESULTS:-$BASE/round7}
TAGLIST=${TAGLIST:-$BASE/models_round7.txt}
MAX_WAIT_MIN=${MAX_WAIT_MIN:-10080} # 7 days: the cold run alone is 2-4
Expand Down
6 changes: 3 additions & 3 deletions analysis/ghidra/benchmarks/corpus/coldprobe.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@
# Preconditions this asserts rather than assumes: hp-llm-worker down,
# sweep_extra.sh not running, no record_baseline in flight.
set -u
REPO=/mnt-1/benchmarks/APIARY
OUT=/mnt-1/benchmarks/coldprobe
CACHE=/mnt-1/benchmarks/tierb-cache
REPO=/var/benchmarks/APIARY
OUT=/var/benchmarks/coldprobe
CACHE=/var/benchmarks/tierb-cache
mkdir -p "$OUT/logs"

die() { echo "ABORT: $*" >&2; exit 1; }
Expand Down
4 changes: 2 additions & 2 deletions analysis/ghidra/benchmarks/corpus/coldrun.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# coldrun.sh -- re-measure the WHOLE #1947 roster under one uniform regime:
# cold slot, N=2 with automatic escalation, live workers stopped.
#
# Operational copy lives at /mnt-1/benchmarks/coldrun.sh.
# Operational copy lives at /var/benchmarks/coldrun.sh.
#
# ---------------------------------------------------------------------------
# Why this exists
Expand Down Expand Up @@ -37,7 +37,7 @@
# it away to save disk would be the same mistake as deleting the weights.
set -u

BASE=${BASE:-/mnt-1/benchmarks}
BASE=${BASE:-/var/benchmarks}
COLD=${COLD:-$BASE/1947cold}
ROSTER=${ROSTER:-$BASE/models_cold_all.txt}
REPO=${REPO:-$BASE/APIARY}
Expand Down
4 changes: 2 additions & 2 deletions analysis/ghidra/benchmarks/corpus/gptoss_finalize.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
# gptoss_finalize.sh -- #1947 phase 2.5 / #2279 step 3.
#
# Operational copy lives at /mnt-1/benchmarks/gptoss_finalize.sh. Committed here
# Operational copy lives at /var/benchmarks/gptoss_finalize.sh. Committed here
# because its predecessor (gptoss_rerun.sh) was never committed and did not
# survive the 2026-09-03/04 rebuild (#2985).
#
Expand Down Expand Up @@ -40,7 +40,7 @@
# DRY_RUN=1 bash gptoss_finalize.sh # report only
set -u

BASE=${BASE:-/mnt-1/benchmarks}
BASE=${BASE:-/var/benchmarks}
RESULTS=${RESULTS:-$BASE/1947full}
DRY_RUN=${DRY_RUN:-0}

Expand Down
6 changes: 3 additions & 3 deletions analysis/ghidra/benchmarks/corpus/keep_and_sample.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#
# Two jobs, both read-mostly:
#
# 1. RE-CREATE THE LOST SAMPLER (#2245). /mnt-1/benchmarks/vram_samples.tsv was
# 1. RE-CREATE THE LOST SAMPLER (#2245). /var/benchmarks/vram_samples.tsv was
# the empirical record of served size and CPU/GPU split per model -- the input
# #2245's category-1 "which models actually spill" list was supposed to rest
# on. It was wiped with the rest of the work area (#2971) and is in no mirror,
Expand All @@ -26,8 +26,8 @@
# Stop with: pkill -f keep_and_sample.sh (leaves every alias in place)
set -u
OLLAMA=ghidra-ollama-1
SAMPLES=/mnt-1/benchmarks/vram_samples.tsv
KEPT=/mnt-1/benchmarks/kept-aliases.tsv
SAMPLES=/var/benchmarks/vram_samples.tsv
KEPT=/var/benchmarks/kept-aliases.tsv
INTERVAL=60

oll() { docker exec "$OLLAMA" ollama "$@" 2>/dev/null; }
Expand Down
2 changes: 1 addition & 1 deletion analysis/ghidra/benchmarks/corpus/probe_at_gap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# every model that already has both tier run1 files, so the relaunch resumes
# exactly where it stopped.
set -u
BASE=/mnt-1/benchmarks
BASE=/var/benchmarks
LOG=$BASE/probe_at_gap.log

say() { echo "$(date -u +%FT%TZ) $*" | tee -a "$LOG"; }
Expand Down
2 changes: 1 addition & 1 deletion analysis/ghidra/benchmarks/corpus/recreate-local-tags.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
# recreate-local-tags.sh -- #2985: lost in the same rebuild as
# gptoss_rerun.sh/requant_sweep.sh/slots_sweep.sh, and never committed before
# now. Operational copy lives at /mnt-1/benchmarks/recreate-local-tags.sh.
# now. Operational copy lives at /var/benchmarks/recreate-local-tags.sh.
#
# #2695: rebuilds Ollama-local tags that models_extra_all.txt references but
# that sweep_extra.sh cannot `ollama pull` (they're not registry tags).
Expand Down
6 changes: 3 additions & 3 deletions analysis/ghidra/benchmarks/corpus/requant_sweep.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# from an f16 master and measure every level with the same scorer, at the same
# pin, as the as-published rows it is being compared against.
#
# Operational copy runs from /mnt-1/benchmarks/requant_sweep.sh on the
# Operational copy runs from /var/benchmarks/requant_sweep.sh on the
# homeserver. Committed here because the original was never committed, did not
# survive the 2026-09-03/04 rebuild, and had to be rewritten from its issue
# (#2985). Keep the two in sync by hand.
Expand Down Expand Up @@ -61,7 +61,7 @@
# ---------------------------------------------------------------------------
# Dynamic-quant extension (#3086, round-7 plan §7 R2): IMATRIX= and TENSOR_TYPES=
#
# IMATRIX=/mnt-1/training/calib/calib.txt bash requant_sweep.sh
# IMATRIX=/var/training/calib/calib.txt bash requant_sweep.sh
# TENSOR_TYPES="re=Q8_0" IMATRIX=... bash requant_sweep.sh
#
# IMATRIX turns the plain K-quant ladder into the Dynamic-3.0 methodology
Expand All @@ -86,7 +86,7 @@
# partial writes, not small models.)
set -u

BASE=${BASE:-/mnt-1/benchmarks}
BASE=${BASE:-/var/benchmarks}
WORK=${WORK:-$BASE/f16work}
RESULTS=${RESULTS:-$BASE/1947full}
REPO=${REPO:-$BASE/APIARY}
Expand Down
26 changes: 13 additions & 13 deletions analysis/ghidra/benchmarks/corpus/resume_phases.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
# resume_phases.sh -- #2985: lost in the same rebuild as gptoss_rerun.sh/
# requant_sweep.sh/slots_sweep.sh, never committed before now. Operational
# copy lives at /mnt-1/benchmarks/resume_phases.sh.
# copy lives at /var/benchmarks/resume_phases.sh.
#
# Status: historical. Written to resume the a99e765 cold sweep after a RAM
# install; that sweep was aborted by operator decision on 2026-09-06 (folded
Expand All @@ -18,22 +18,22 @@
# quant-ladder step it does on the way through. chain2b and chain3 then pick up
# on EXTRA_COMPLETE / REQUANT_SWEEP_COMPLETE as before.
set -u
cd /mnt-1/benchmarks || exit 1
cd /var/benchmarks || exit 1

echo "=== $(date -u +%FT%TZ) resume ==="

# the pinned head is load-bearing: post-merge main defaults to 17 corpus cases
# against the 14 this sweep measured, which would split the matrix down the middle
HEAD=$(git -C /mnt-1/benchmarks/APIARY rev-parse --short HEAD)
BRANCH=$(git -C /mnt-1/benchmarks/APIARY rev-parse --abbrev-ref HEAD)
HEAD=$(git -C /var/benchmarks/APIARY rev-parse --short HEAD)
BRANCH=$(git -C /var/benchmarks/APIARY rev-parse --abbrev-ref HEAD)
echo "repo: $HEAD on $BRANCH"
if [ "$HEAD" != "a99e765" ]; then
echo "ABORT: repo head moved off a99e765. Phases 2-3 must run on the same case"
echo " slice as phase 1. Reset it before resuming."
exit 1
fi

if ! grep -q FULLRUN_COMPLETE /mnt-1/benchmarks/fullrun.log 2>/dev/null; then
if ! grep -q FULLRUN_COMPLETE /var/benchmarks/fullrun.log 2>/dev/null; then
echo "ABORT: fullrun.log has no FULLRUN_COMPLETE -- phase 1 is not finished."
exit 1
fi
Expand All @@ -47,29 +47,29 @@ done
echo "ollama up; $(docker exec ghidra-ollama-1 ollama list 2>/dev/null | tail -n +2 | wc -l) models local"

for s in chain chain2b chain3; do
if pgrep -f "/mnt-1/benchmarks/$s.sh" >/dev/null 2>&1; then
if pgrep -f "/var/benchmarks/$s.sh" >/dev/null 2>&1; then
echo "ABORT: $s.sh already running -- refusing to double-start the GPU queue"
exit 1
fi
done

cd /mnt-1/benchmarks
setsid nohup bash /mnt-1/benchmarks/chain.sh >> /mnt-1/benchmarks/extra.log 2>&1 < /dev/null &
cd /var/benchmarks
setsid nohup bash /var/benchmarks/chain.sh >> /var/benchmarks/extra.log 2>&1 < /dev/null &
# 2026-09-05 (#1947 review): only launch a waiter whose downstream script
# still exists. gptoss_rerun.sh / requant_sweep.sh / slots_sweep.sh were lost
# in the rebuild and were never committed, so chain2b/chain3 would otherwise
# sit for 14 days on markers nothing can write and report as "running".
if [ -f /mnt-1/benchmarks/gptoss_rerun.sh ] && [ -f /mnt-1/benchmarks/requant_sweep.sh ]; then
setsid nohup bash /mnt-1/benchmarks/chain2b.sh >> /mnt-1/benchmarks/requant.log 2>&1 < /dev/null &
if [ -f /var/benchmarks/gptoss_rerun.sh ] && [ -f /var/benchmarks/requant_sweep.sh ]; then
setsid nohup bash /var/benchmarks/chain2b.sh >> /var/benchmarks/requant.log 2>&1 < /dev/null &
else
echo "SKIP chain2b: gptoss_rerun.sh/requant_sweep.sh missing -- phases 2.5/3 not queued"
fi
if [ -f /mnt-1/benchmarks/slots_sweep.sh ]; then
setsid nohup bash /mnt-1/benchmarks/chain3.sh >> /mnt-1/benchmarks/slots.log 2>&1 < /dev/null &
if [ -f /var/benchmarks/slots_sweep.sh ]; then
setsid nohup bash /var/benchmarks/chain3.sh >> /var/benchmarks/slots.log 2>&1 < /dev/null &
else
echo "SKIP chain3: slots_sweep.sh missing -- phase 5 not queued"
fi
sleep 3
echo "relaunched:"
pgrep -af '/mnt-1/benchmarks/chain' || echo " (nothing came up -- check the logs)"
pgrep -af '/var/benchmarks/chain' || echo " (nothing came up -- check the logs)"
echo "phase 2 (49-model extra roster) is now running; requant and slots chain behind it."
16 changes: 8 additions & 8 deletions analysis/ghidra/benchmarks/corpus/round7_build_calib.sh
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
#!/usr/bin/env bash
# round7_build_calib.sh -- #3086 R1: build the round-7 imatrix calibration set
# at /mnt-1/training/calib/ from corpus-v1 slices, ready to be handed to
# at /var/training/calib/ from corpus-v1 slices, ready to be handed to
# requant_sweep.sh as IMATRIX=... and to export_to_ollama.sh as CALIB_FILE=.
#
# Operational copy: /mnt-1/training/round7_build_calib.sh.
# Operational copy: /var/training/round7_build_calib.sh.
#
# ---------------------------------------------------------------------------
# Sources (plan §6.1/§6.4 -- the test set is off limits, all of it):
Expand All @@ -18,7 +18,7 @@
# EXEC=1; the default only reports what it would do.
# sanitised sessions S1 session text, already sanitised through the
# production contracts.py path before it lands in
# /mnt-1/training/corpus-v1/ (never leaves the host).
# /var/training/corpus-v1/ (never leaves the host).
# REx86 text S4 entries (Zenodo 15420461, CC-BY-4.0; #847's
# internal-split check must pass first).
# general-text portion S6 CPT shards already pooled by generate_s6.py.
Expand All @@ -38,13 +38,13 @@
# provenance, token estimate, and the decontamination report.
#
# Usage:
# ssh homeserver 'bash /mnt-1/training/round7_build_calib.sh' # plan
# ssh homeserver 'EXEC=1 bash /mnt-1/training/round7_build_calib.sh' # build
# ssh homeserver 'bash /var/training/round7_build_calib.sh' # plan
# ssh homeserver 'EXEC=1 bash /var/training/round7_build_calib.sh' # build
set -euo pipefail

CALIB=${CALIB:-/mnt-1/training/calib}
CORPUS=${CORPUS:-/mnt-1/training/corpus-v1}
REPO=${REPO:-/mnt-1/benchmarks/APIARY-round7}
CALIB=${CALIB:-/var/training/calib}
CORPUS=${CORPUS:-/var/training/corpus-v1}
REPO=${REPO:-/var/benchmarks/APIARY-round7}
EXEC=${EXEC:-0}
MIN_TOKENS=${MIN_TOKENS:-2000000}
MAX_TOKENS=${MAX_TOKENS:-10000000}
Expand Down
8 changes: 4 additions & 4 deletions analysis/ghidra/benchmarks/corpus/round7_build_corpus.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
# inside the exact provenance container ci_verify.sh documents
# (debian:trixie-slim + the pinned cross toolchains), verified byte-for-byte
# against the committed manifest, then copied out to a NEW directory. The
# 14-case corpus at /mnt-1/benchmarks/corpus is left untouched.
# Operational copy: /mnt-1/benchmarks/round7_build_corpus.sh
# 14-case corpus at /var/benchmarks/corpus is left untouched.
# Operational copy: /var/benchmarks/round7_build_corpus.sh
set -euo pipefail
REPO=${REPO:-/mnt-1/benchmarks/APIARY-round7}
OUT=${OUT:-/mnt-1/benchmarks/corpus-round7}
REPO=${REPO:-/var/benchmarks/APIARY-round7}
OUT=${OUT:-/var/benchmarks/corpus-round7}
NAME=corpus-round7-build
docker rm -f "$NAME" >/dev/null 2>&1 || true
# no --rm: the built corpus is copied out of the stopped container afterwards,
Expand Down
6 changes: 3 additions & 3 deletions analysis/ghidra/benchmarks/corpus/round7_cache.sh
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
#!/usr/bin/env bash
# round7_cache.sh -- regenerate the Tier B (Ghidra decompilation) cache for the
# round-7 pin's 17-case corpus, into its OWN directory. The 14-case cache at
# /mnt-1/benchmarks/tierb-cache stays for the a99e765 clone.
# /var/benchmarks/tierb-cache stays for the a99e765 clone.
#
# Operational copy lives at /mnt-1/benchmarks/round7_cache.sh.
# Operational copy lives at /var/benchmarks/round7_cache.sh.
#
# GHIDRA_VERSION must be exported by hand because the headless service
# publishes no version of its own (#2983); the line printed first is the
# container's own application.properties so the two can be compared.
set -euo pipefail
BASE=${BASE:-/mnt-1/benchmarks}
BASE=${BASE:-/var/benchmarks}
REPO=${REPO:-$BASE/APIARY-round7}
CORPUS=${CORPUS:-$BASE/corpus-round7}
CACHE=${CACHE:-$BASE/tierb-cache-round7}
Expand Down
4 changes: 2 additions & 2 deletions analysis/ghidra/benchmarks/corpus/round7_coldrun.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# pin -- 17 cases / 79, injection gate v3, pooled-claims-ready transcripts --
# cold slot, live workers stopped, N=2 with automatic 3/5 escalation.
#
# Operational copy lives at /mnt-1/benchmarks/round7_coldrun.sh.
# Operational copy lives at /var/benchmarks/round7_coldrun.sh.
#
# ---------------------------------------------------------------------------
# Why this replaced coldrun.sh's a99e765 re-run (operator decision 2026-09-06)
Expand All @@ -31,7 +31,7 @@
# fails without it, and sweep_extra would still write MODEL_DONE (#2971)
# - no other sweep holds the card
set -u
BASE=${BASE:-/mnt-1/benchmarks}
BASE=${BASE:-/var/benchmarks}
PIN=${PIN:-32dbdeb1}
REPO=${REPO:-$BASE/APIARY-round7}
OUT=${OUT:-$BASE/round7}
Expand Down
4 changes: 2 additions & 2 deletions analysis/ghidra/benchmarks/corpus/round7_launch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
# round7_launch.sh -- start the round-7 cold baseline detached, with the VRAM
# sampler beside it, after the smoke test has proved the leg scores.
#
# Operational copy lives at /mnt-1/benchmarks/round7_launch.sh.
# Operational copy lives at /var/benchmarks/round7_launch.sh.
#
# Refuses to launch unless round7_smoke.sh has left a Tier B result on this
# pin: a Tier-B-only failure is the exact 2026-09-04 defect (#2971), and the
# sweep would still write MODEL_DONE over the hole.
set -u
BASE=${BASE:-/mnt-1/benchmarks}
BASE=${BASE:-/var/benchmarks}
SMOKE=${SMOKE:-$BASE/smoke-round7/tierB_smoke.json}
[ -s "$SMOKE" ] || { echo "ABORT: no Tier B smoke result at $SMOKE -- run round7_smoke.sh first"; exit 1; }
python3 - "$SMOKE" <<'PY' || exit 1
Expand Down
6 changes: 3 additions & 3 deletions analysis/ghidra/benchmarks/corpus/round7_prep_pin.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
# prep_round7_clone.sh -- pinned checkout for round 7 (epic #3079): a SECOND
# clone, detached at the round-7 pin. The a99e765 clone stays untouched -- its
# untracked transcripts are the phase-1/2 evidence and resume_phases.sh guards
# that HEAD. Operational copy: /mnt-1/benchmarks/round7_prep_pin.sh
# that HEAD. Operational copy: /var/benchmarks/round7_prep_pin.sh
set -euo pipefail
PIN=${PIN:-32dbdeb1face8c8e4791d31a8f4fbbe321e4f6fa}
DST=${DST:-/mnt-1/benchmarks/APIARY-round7}
OLD=${OLD:-/mnt-1/benchmarks/APIARY}
DST=${DST:-/var/benchmarks/APIARY-round7}
OLD=${OLD:-/var/benchmarks/APIARY}
url=$(git -C "$OLD" remote get-url origin)
if [ -d "$DST/.git" ]; then
echo "clone exists: $DST"
Expand Down
4 changes: 2 additions & 2 deletions analysis/ghidra/benchmarks/corpus/round7_prepare.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
# 3. round7_cache.sh 17-case Tier B (Ghidra) cache in its own directory
# Then run round7_smoke.sh, read its two lines, and only then round7_launch.sh.
#
# Operational copy lives at /mnt-1/benchmarks/round7_prepare.sh.
# Operational copy lives at /var/benchmarks/round7_prepare.sh.
set -euo pipefail
BASE=${BASE:-/mnt-1/benchmarks}
BASE=${BASE:-/var/benchmarks}
log() { echo "$(date -u +%FT%TZ) $*"; }
log "step 1/3 pin"
bash "$BASE/round7_prep_pin.sh"
Expand Down
Loading
Loading