summaryrefslogtreecommitdiff
path: root/flossing_suite
diff options
context:
space:
mode:
authorYurenHao0426 <blackhao0426@gmail.com>2026-06-29 12:15:51 -0500
committerYurenHao0426 <blackhao0426@gmail.com>2026-06-29 12:15:51 -0500
commita6ec4288a2232988b130b2f00bb2565f81706966 (patch)
tree1bb86e7f0b899b823b9e7fdf383e832d30a181e0 /flossing_suite
Recursive reasoning dynamics: analysis pipeline, paper drafts, toy models
Failure=more-chaotic (task-general under validity labeling) reduces to convergence/completeness detection; mechanism (transient chaos vs multistability vs input-induced) under investigation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Diffstat (limited to 'flossing_suite')
-rw-r--r--flossing_suite/README.md89
-rwxr-xr-xflossing_suite/archive_failed_oom_b8/trm_seed123_baseline_nofloss_b8_10000.cmd.sh30
-rwxr-xr-xflossing_suite/archive_failed_oom_b8/trm_seed123_pre_inter_0_500_b8_k4_10000.cmd.sh30
-rwxr-xr-xflossing_suite/archive_failed_oom_b8/trm_seed123_prefloss_0_b8_k4_10000.cmd.sh30
-rwxr-xr-xflossing_suite/launch_toy_official_suite.sh77
-rwxr-xr-xflossing_suite/launch_trm_faithful_suite.sh88
-rwxr-xr-xflossing_suite/launch_trm_variant_suite.sh87
-rw-r--r--flossing_suite/results/summary/flossing_eval_curves.csv399
-rw-r--r--flossing_suite/results/summary/flossing_runs_summary.csv32
-rwxr-xr-xflossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000.cmd.sh43
-rwxr-xr-xflossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000.cmd.sh43
-rwxr-xr-xflossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000.cmd.sh43
-rwxr-xr-xflossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_b4_10000.cmd.sh30
-rwxr-xr-xflossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000.cmd.sh35
-rwxr-xr-xflossing_suite/results/trm_faithful/trm_seed123_pre_inter_0_500_b4_k4_10000.cmd.sh30
-rwxr-xr-xflossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000.cmd.sh35
-rwxr-xr-xflossing_suite/results/trm_faithful/trm_seed123_prefloss_0_b4_k4_10000.cmd.sh30
-rwxr-xr-xflossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000.cmd.sh35
-rwxr-xr-xflossing_suite/smoke_test.sh61
-rwxr-xr-xflossing_suite/status.sh33
-rw-r--r--flossing_suite/summarize_flossing.py311
-rwxr-xr-xflossing_suite/watch_and_summarize.sh27
22 files changed, 1618 insertions, 0 deletions
diff --git a/flossing_suite/README.md b/flossing_suite/README.md
new file mode 100644
index 0000000..6081c97
--- /dev/null
+++ b/flossing_suite/README.md
@@ -0,0 +1,89 @@
+# Flossing Suite
+
+This directory is a reproducible wrapper around the existing flossing code.
+It separates three questions:
+
+1. Does the Engelken algorithm itself reproduce on a vanilla RNN toy task?
+2. Does a faithful pre/interfloss analogue help TRM/HRM when the flossing phase is separate from task loss?
+3. Do our one-sided variants (`top1_cf`, `spectrum_cf`, `volume_cf`) behave differently from Engelken's two-sided L2 target?
+
+## Important Algorithmic Distinctions
+
+- `engelken_python_flossing.py` is the toy RNN faithful port. It keeps the paper-style separate flossing phase, no task/floss mixed objective, flosses only input/recurrent/bias parameters, uses differentiable QR, and optimizes `mean((lambda_i - lambda_star)^2)`.
+- `step7_interfloss.py` is the HRM/TRM analogue. It also uses separate floss-only episodes. Ordinary training steps use only supervised ACT loss.
+- `step7_interfloss.py --floss-mode engelken_l2` is the Rainer-style two-sided target.
+- `top1_cf`, `spectrum_cf`, and `volume_cf` are our one-sided contractive variants, not the paper method.
+- KL preservation is optional and only applies during floss-only episodes.
+
+## Current Known Sanity Check
+
+Existing toy RNN result:
+
+- Baseline no floss: final eval accuracy about `0.777`.
+- Prefloss: final eval accuracy about `0.997`.
+
+This means the Python port can reproduce a positive toy result. Negative HRM/TRM results should therefore be interpreted as model/task transfer issues, not simply "flossing code cannot work."
+
+## Recommended Workflow
+
+Run smoke tests:
+
+```bash
+bash research/flossing/flossing_suite/smoke_test.sh 0
+```
+
+Launch toy RNN paper-style suite:
+
+```bash
+bash research/flossing/flossing_suite/launch_toy_official_suite.sh
+```
+
+Launch TRM faithful Rainer-style suite:
+
+```bash
+GPU_BASE=0 GPU_PREFLOSS=1 GPU_INTER=3 bash research/flossing/flossing_suite/launch_trm_faithful_suite.sh
+```
+
+Launch TRM CF/volume variants:
+
+```bash
+GPU_TOP1=0 GPU_VOLUME=1 GPU_KL=3 bash research/flossing/flossing_suite/launch_trm_variant_suite.sh
+```
+
+Summarize all available flossing logs:
+
+```bash
+/home/yurenh2/miniconda3/envs/rrm/bin/python research/flossing/flossing_suite/summarize_flossing.py
+```
+
+Check active jobs:
+
+```bash
+bash research/flossing/flossing_suite/status.sh
+```
+
+Wait for current TRM faithful jobs and refresh summary:
+
+```bash
+bash research/flossing/flossing_suite/watch_and_summarize.sh
+```
+
+Outputs go to:
+
+- `results/toy_rnn/`
+- `results/trm_faithful/`
+- `results/trm_variants/`
+- `results/smoke/`
+- `results/summary/`
+
+## Existing Historical Results Included By Summarizer
+
+The summarizer also scans:
+
+- `research/flossing/engelken_python/*.json`
+- `research/flossing/engelken_paper_faithful/*.json`
+- `research/flossing/step6_*.json`
+- `research/flossing/step7_*.json`
+- `research/flossing/flossing_suite/results/**/*.json`
+
+This keeps old negative/positive evidence visible without rerunning everything.
diff --git a/flossing_suite/archive_failed_oom_b8/trm_seed123_baseline_nofloss_b8_10000.cmd.sh b/flossing_suite/archive_failed_oom_b8/trm_seed123_baseline_nofloss_b8_10000.cmd.sh
new file mode 100755
index 0000000..98411d8
--- /dev/null
+++ b/flossing_suite/archive_failed_oom_b8/trm_seed123_baseline_nofloss_b8_10000.cmd.sh
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+set -euo pipefail
+cd "/home/yurenh2/rrm"
+export CUDA_VISIBLE_DEVICES="0"
+export PYTHONUNBUFFERED=1
+exec "/home/yurenh2/miniconda3/envs/rrm/bin/python" research/flossing/step7_interfloss.py \
+ --model trm \
+ --ckpt-root "/home/yurenh2/rrm/trm/checkpoints/Sudoku-extreme-1k-aug-1000-ACT-torch/pretrain_mlp_t_sudoku_official_gbs768_repro" \
+ --ckpt-name __random__ \
+ --init-seed 123 \
+ --train-steps "10000" \
+ --batch-size 8 \
+ --train-lr 1e-4 \
+ --floss-lr 1e-4 \
+ --floss-mode engelken_l2 \
+ --lambda-star 0 \
+ --k-lyap 4 \
+ --lyap-act-steps 4 \
+ --seed 42 \
+ --eval-every 1000 \
+ --eval-n "1000" \
+ --eval-batch-size 64 \
+ --floss-log-every 10 \
+ --train-puzzle-emb \
+ --puzzle-emb-lr 1e-4 \
+ --puzzle-emb-weight-decay 1.0 \
+ --kl-beta 0 \
+ --floss-steps "0" \
+ --interfloss-at "" \
+ --out "/home/yurenh2/rrm/research/flossing/flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_b8_10000.json"
diff --git a/flossing_suite/archive_failed_oom_b8/trm_seed123_pre_inter_0_500_b8_k4_10000.cmd.sh b/flossing_suite/archive_failed_oom_b8/trm_seed123_pre_inter_0_500_b8_k4_10000.cmd.sh
new file mode 100755
index 0000000..e3f25ab
--- /dev/null
+++ b/flossing_suite/archive_failed_oom_b8/trm_seed123_pre_inter_0_500_b8_k4_10000.cmd.sh
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+set -euo pipefail
+cd "/home/yurenh2/rrm"
+export CUDA_VISIBLE_DEVICES="3"
+export PYTHONUNBUFFERED=1
+exec "/home/yurenh2/miniconda3/envs/rrm/bin/python" research/flossing/step7_interfloss.py \
+ --model trm \
+ --ckpt-root "/home/yurenh2/rrm/trm/checkpoints/Sudoku-extreme-1k-aug-1000-ACT-torch/pretrain_mlp_t_sudoku_official_gbs768_repro" \
+ --ckpt-name __random__ \
+ --init-seed 123 \
+ --train-steps "10000" \
+ --batch-size 8 \
+ --train-lr 1e-4 \
+ --floss-lr 1e-4 \
+ --floss-mode engelken_l2 \
+ --lambda-star 0 \
+ --k-lyap 4 \
+ --lyap-act-steps 4 \
+ --seed 42 \
+ --eval-every 1000 \
+ --eval-n "1000" \
+ --eval-batch-size 64 \
+ --floss-log-every 10 \
+ --train-puzzle-emb \
+ --puzzle-emb-lr 1e-4 \
+ --puzzle-emb-weight-decay 1.0 \
+ --kl-beta 0 \
+ --floss-steps "500" \
+ --interfloss-at "0,500" \
+ --out "/home/yurenh2/rrm/research/flossing/flossing_suite/results/trm_faithful/trm_seed123_pre_inter_0_500_b8_k4_10000.json"
diff --git a/flossing_suite/archive_failed_oom_b8/trm_seed123_prefloss_0_b8_k4_10000.cmd.sh b/flossing_suite/archive_failed_oom_b8/trm_seed123_prefloss_0_b8_k4_10000.cmd.sh
new file mode 100755
index 0000000..86c445d
--- /dev/null
+++ b/flossing_suite/archive_failed_oom_b8/trm_seed123_prefloss_0_b8_k4_10000.cmd.sh
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+set -euo pipefail
+cd "/home/yurenh2/rrm"
+export CUDA_VISIBLE_DEVICES="1"
+export PYTHONUNBUFFERED=1
+exec "/home/yurenh2/miniconda3/envs/rrm/bin/python" research/flossing/step7_interfloss.py \
+ --model trm \
+ --ckpt-root "/home/yurenh2/rrm/trm/checkpoints/Sudoku-extreme-1k-aug-1000-ACT-torch/pretrain_mlp_t_sudoku_official_gbs768_repro" \
+ --ckpt-name __random__ \
+ --init-seed 123 \
+ --train-steps "10000" \
+ --batch-size 8 \
+ --train-lr 1e-4 \
+ --floss-lr 1e-4 \
+ --floss-mode engelken_l2 \
+ --lambda-star 0 \
+ --k-lyap 4 \
+ --lyap-act-steps 4 \
+ --seed 42 \
+ --eval-every 1000 \
+ --eval-n "1000" \
+ --eval-batch-size 64 \
+ --floss-log-every 10 \
+ --train-puzzle-emb \
+ --puzzle-emb-lr 1e-4 \
+ --puzzle-emb-weight-decay 1.0 \
+ --kl-beta 0 \
+ --floss-steps "500" \
+ --interfloss-at "0" \
+ --out "/home/yurenh2/rrm/research/flossing/flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_b8_k4_10000.json"
diff --git a/flossing_suite/launch_toy_official_suite.sh b/flossing_suite/launch_toy_official_suite.sh
new file mode 100755
index 0000000..43a2047
--- /dev/null
+++ b/flossing_suite/launch_toy_official_suite.sh
@@ -0,0 +1,77 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+ROOT="/home/yurenh2/rrm"
+PY="/home/yurenh2/miniconda3/envs/rrm/bin/python"
+OUT_DIR="${ROOT}/research/flossing/flossing_suite/results/toy_rnn"
+mkdir -p "${OUT_DIR}"
+
+GPU_BASE="${GPU_BASE:-0}"
+GPU_PREFLOSS="${GPU_PREFLOSS:-1}"
+GPU_INTER="${GPU_INTER:-3}"
+
+write_and_launch() {
+ local gpu="$1"
+ local name="$2"
+ local pre_epochs="$3"
+ local max_inter="$4"
+ local cmd="${OUT_DIR}/${name}.cmd.sh"
+ local log="${OUT_DIR}/${name}.log"
+ local pid="${OUT_DIR}/${name}.pid"
+
+ cat > "${cmd}" <<EOF
+#!/usr/bin/env bash
+set -euo pipefail
+cd "${ROOT}"
+export CUDA_VISIBLE_DEVICES="${gpu}"
+export PYTHONUNBUFFERED=1
+exec "${PY}" research/flossing/engelken_python_flossing.py \\
+ --hidden-size 80 \\
+ --n-lyap 40 \\
+ --train-epochs 1000 \\
+ --inter-period 100 \\
+ --inter-epochs 100 \\
+ --batch-size 16 \\
+ --input-dim 1 \\
+ --train-steps 300 \\
+ --lyap-steps 55 \\
+ --floss-input-steps 300 \\
+ --seed-ic 1 \\
+ --seed-input 1 \\
+ --seed-net 1 \\
+ --seed-ons 1 \\
+ --lr 0.001 \\
+ --beta1 0.9 \\
+ --beta2 0.999 \\
+ --init-type 1 \\
+ --recurrent-gain 1.0 \\
+ --recurrent-mean-gain 0.0 \\
+ --input-scale 1.0 \\
+ --delay 10 \\
+ --ws-std 1.0 \\
+ --ws-mean 0.0 \\
+ --wr-std 1.0 \\
+ --wr-mean 0.0 \\
+ --b-std 0.1 \\
+ --b-mean 0.0 \\
+ --task -1 \\
+ --lyap-target 0.0 \\
+ --eval-every 100 \\
+ --eval-batches 4 \\
+ --log-every-floss 25 \\
+ --device cuda \\
+ --pre-epochs "${pre_epochs}" \\
+ --max-inter-episodes "${max_inter}" \\
+ --out "${OUT_DIR}/${name}.json"
+EOF
+ chmod +x "${cmd}"
+ setsid bash "${cmd}" > "${log}" 2>&1 < /dev/null &
+ echo $! > "${pid}"
+ echo "${name}: pid $(cat "${pid}") on GPU ${gpu}"
+}
+
+write_and_launch "${GPU_BASE}" "toy_baseline_no_floss_N80_k40_E1000" 0 0
+write_and_launch "${GPU_PREFLOSS}" "toy_prefloss_N80_k40_E1000" 100 0
+write_and_launch "${GPU_INTER}" "toy_pre_inter_N80_k40_E1000" 100 2
+
+echo "queued toy RNN official-style suite in ${OUT_DIR}"
diff --git a/flossing_suite/launch_trm_faithful_suite.sh b/flossing_suite/launch_trm_faithful_suite.sh
new file mode 100755
index 0000000..2b3190c
--- /dev/null
+++ b/flossing_suite/launch_trm_faithful_suite.sh
@@ -0,0 +1,88 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+ROOT="/home/yurenh2/rrm"
+PY="/home/yurenh2/miniconda3/envs/rrm/bin/python"
+OUT_DIR="${ROOT}/research/flossing/flossing_suite/results/trm_faithful"
+CKPT_ROOT="${ROOT}/trm/checkpoints/Sudoku-extreme-1k-aug-1000-ACT-torch/pretrain_mlp_t_sudoku_official_gbs768_repro"
+mkdir -p "${OUT_DIR}"
+
+GPU_BASE="${GPU_BASE:-0}"
+GPU_PREFLOSS="${GPU_PREFLOSS:-1}"
+GPU_INTER="${GPU_INTER:-3}"
+TRAIN_STEPS="${TRAIN_STEPS:-20000}"
+PREFLOSS_STEPS="${PREFLOSS_STEPS:-500}"
+INTERFLOSS_STEPS="${INTERFLOSS_STEPS:-100}"
+INTERFLOSS_EVERY="${INTERFLOSS_EVERY:-2000}"
+INTERFLOSS_START="${INTERFLOSS_START:-2000}"
+INTERFLOSS_STOP="${INTERFLOSS_STOP:-10000}"
+EVAL_N="${EVAL_N:-1000}"
+TASK_BATCH_SIZE="${TASK_BATCH_SIZE:-32}"
+FLOSS_BATCH_SIZE="${FLOSS_BATCH_SIZE:-4}"
+
+write_and_launch() {
+ local gpu="$1"
+ local name="$2"
+ local schedule="$3"
+ local floss_steps="$4"
+ local every="$5"
+ local start="$6"
+ local stop="$7"
+ local cmd="${OUT_DIR}/${name}.cmd.sh"
+ local log="${OUT_DIR}/${name}.log"
+ local pid="${OUT_DIR}/${name}.pid"
+
+ cat > "${cmd}" <<EOF
+#!/usr/bin/env bash
+set -euo pipefail
+cd "${ROOT}"
+export CUDA_VISIBLE_DEVICES="${gpu}"
+export PYTHONUNBUFFERED=1
+exec "${PY}" research/flossing/step7_interfloss.py \\
+ --model trm \\
+ --ckpt-root "${CKPT_ROOT}" \\
+ --ckpt-name __random__ \\
+ --init-seed 123 \\
+ --train-steps "${TRAIN_STEPS}" \\
+ --batch-size "${TASK_BATCH_SIZE}" \\
+ --task-batch-size "${TASK_BATCH_SIZE}" \\
+ --floss-batch-size "${FLOSS_BATCH_SIZE}" \\
+ --train-lr 1e-4 \\
+ --floss-lr 1e-4 \\
+ --floss-mode engelken_l2 \\
+ --lambda-star 0 \\
+ --k-lyap 4 \\
+ --lyap-act-steps 4 \\
+ --seed 42 \\
+ --eval-every 1000 \\
+ --eval-n "${EVAL_N}" \\
+ --eval-batch-size 64 \\
+ --floss-log-every 10 \\
+ --train-puzzle-emb \\
+ --puzzle-emb-lr 1e-4 \\
+ --puzzle-emb-weight-decay 1.0 \\
+ --kl-beta 0 \\
+ --floss-steps "${floss_steps}" \\
+ --interfloss-at "${schedule}" \\
+ --interfloss-every "${every}" \\
+ --interfloss-start "${start}" \\
+ --interfloss-stop "${stop}" \\
+ --out "${OUT_DIR}/${name}.json"
+EOF
+ chmod +x "${cmd}"
+ setsid bash "${cmd}" > "${log}" 2>&1 < /dev/null &
+ echo $! > "${pid}"
+ echo "${name}: pid $(cat "${pid}") on GPU ${gpu}"
+}
+
+write_and_launch "${GPU_BASE}" \
+ "trm_seed123_baseline_nofloss_tb${TASK_BATCH_SIZE}_fb${FLOSS_BATCH_SIZE}_${TRAIN_STEPS}" \
+ "" 0 0 0 -1
+write_and_launch "${GPU_PREFLOSS}" \
+ "trm_seed123_prefloss_0_tb${TASK_BATCH_SIZE}_fb${FLOSS_BATCH_SIZE}_k4_${TRAIN_STEPS}" \
+ "0" "${PREFLOSS_STEPS}" 0 0 -1
+write_and_launch "${GPU_INTER}" \
+ "trm_seed123_pre_inter_periodic${INTERFLOSS_EVERY}_tb${TASK_BATCH_SIZE}_fb${FLOSS_BATCH_SIZE}_k4_${TRAIN_STEPS}" \
+ "0" "${INTERFLOSS_STEPS}" "${INTERFLOSS_EVERY}" "${INTERFLOSS_START}" "${INTERFLOSS_STOP}"
+
+echo "queued TRM Engelken-faithful suite in ${OUT_DIR}"
diff --git a/flossing_suite/launch_trm_variant_suite.sh b/flossing_suite/launch_trm_variant_suite.sh
new file mode 100755
index 0000000..86c2e64
--- /dev/null
+++ b/flossing_suite/launch_trm_variant_suite.sh
@@ -0,0 +1,87 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+ROOT="/home/yurenh2/rrm"
+PY="/home/yurenh2/miniconda3/envs/rrm/bin/python"
+OUT_DIR="${ROOT}/research/flossing/flossing_suite/results/trm_variants"
+CKPT_ROOT="${ROOT}/trm/checkpoints/Sudoku-extreme-1k-aug-1000-ACT-torch/pretrain_mlp_t_sudoku_official_gbs768_repro"
+mkdir -p "${OUT_DIR}"
+
+GPU_TOP1="${GPU_TOP1:-0}"
+GPU_VOLUME="${GPU_VOLUME:-1}"
+GPU_KL="${GPU_KL:-3}"
+TRAIN_STEPS="${TRAIN_STEPS:-20000}"
+FLOSS_STEPS="${FLOSS_STEPS:-100}"
+INTERFLOSS_EVERY="${INTERFLOSS_EVERY:-2000}"
+INTERFLOSS_START="${INTERFLOSS_START:-2000}"
+INTERFLOSS_STOP="${INTERFLOSS_STOP:-10000}"
+EVAL_N="${EVAL_N:-1000}"
+TASK_BATCH_SIZE="${TASK_BATCH_SIZE:-32}"
+FLOSS_BATCH_SIZE="${FLOSS_BATCH_SIZE:-4}"
+
+write_and_launch() {
+ local gpu="$1"
+ local name="$2"
+ local floss_mode="$3"
+ local kl_beta="$4"
+ local cmd="${OUT_DIR}/${name}.cmd.sh"
+ local log="${OUT_DIR}/${name}.log"
+ local pid="${OUT_DIR}/${name}.pid"
+
+ cat > "${cmd}" <<EOF
+#!/usr/bin/env bash
+set -euo pipefail
+cd "${ROOT}"
+export CUDA_VISIBLE_DEVICES="${gpu}"
+export PYTHONUNBUFFERED=1
+exec "${PY}" research/flossing/step7_interfloss.py \\
+ --model trm \\
+ --ckpt-root "${CKPT_ROOT}" \\
+ --ckpt-name __random__ \\
+ --init-seed 123 \\
+ --train-steps "${TRAIN_STEPS}" \\
+ --batch-size "${TASK_BATCH_SIZE}" \\
+ --task-batch-size "${TASK_BATCH_SIZE}" \\
+ --floss-batch-size "${FLOSS_BATCH_SIZE}" \\
+ --train-lr 1e-4 \\
+ --floss-lr 1e-4 \\
+ --floss-mode "${floss_mode}" \\
+ --lambda-star 0 \\
+ --k-lyap 4 \\
+ --lyap-act-steps 4 \\
+ --seed 42 \\
+ --eval-every 1000 \\
+ --eval-n "${EVAL_N}" \\
+ --eval-batch-size 64 \\
+ --floss-log-every 10 \\
+ --train-puzzle-emb \\
+ --puzzle-emb-lr 1e-4 \\
+ --puzzle-emb-weight-decay 1.0 \\
+ --floss-steps "${FLOSS_STEPS}" \\
+ --interfloss-at "0" \\
+ --interfloss-every "${INTERFLOSS_EVERY}" \\
+ --interfloss-start "${INTERFLOSS_START}" \\
+ --interfloss-stop "${INTERFLOSS_STOP}" \\
+ --kl-beta "${kl_beta}" \\
+ --kl-replay-size 64 \\
+ --kl-batch-size 8 \\
+ --kl-temperature 1.0 \\
+ --out "${OUT_DIR}/${name}.json"
+EOF
+ chmod +x "${cmd}"
+ setsid bash "${cmd}" > "${log}" 2>&1 < /dev/null &
+ echo $! > "${pid}"
+ echo "${name}: pid $(cat "${pid}") on GPU ${gpu}"
+}
+
+write_and_launch "${GPU_TOP1}" \
+ "trm_seed123_top1_cf_periodic${INTERFLOSS_EVERY}_tb${TASK_BATCH_SIZE}_fb${FLOSS_BATCH_SIZE}_k4_${TRAIN_STEPS}" \
+ top1_cf 0
+write_and_launch "${GPU_VOLUME}" \
+ "trm_seed123_volume_cf_periodic${INTERFLOSS_EVERY}_tb${TASK_BATCH_SIZE}_fb${FLOSS_BATCH_SIZE}_k4_${TRAIN_STEPS}" \
+ volume_cf 0
+write_and_launch "${GPU_KL}" \
+ "trm_seed123_volume_cf_kl10_periodic${INTERFLOSS_EVERY}_tb${TASK_BATCH_SIZE}_fb${FLOSS_BATCH_SIZE}_k4_${TRAIN_STEPS}" \
+ volume_cf 10
+
+echo "queued TRM CF/volume variant suite in ${OUT_DIR}"
diff --git a/flossing_suite/results/summary/flossing_eval_curves.csv b/flossing_suite/results/summary/flossing_eval_curves.csv
new file mode 100644
index 0000000..50aad05
--- /dev/null
+++ b/flossing_suite/results/summary/flossing_eval_curves.csv
@@ -0,0 +1,399 @@
+name,family,model,selector,x,acc,loss,kind
+engelken_paper_faithful/smoke,rrm_step7,trm,engelken_l2@0_steps1,0,0.0,,initial
+engelken_paper_faithful/smoke,rrm_step7,trm,engelken_l2@0_steps1,0,0.0,,after_floss
+engelken_paper_faithful/smoke,rrm_step7,trm,engelken_l2@0_steps1,1,0.0,,task
+engelken_paper_faithful/smoke,rrm_step7,trm,engelken_l2@0_steps1,1,0.0,,final
+engelken_python/debug_n80_k40_3epoch,toy_rnn,vanilla_rnn,baseline_no_floss,1,0.5124555160142349,2.1269004344940186,eval
+engelken_python/debug_n80_k40_3epoch,toy_rnn,vanilla_rnn,baseline_no_floss,2,0.5113434163701067,1.894472599029541,eval
+engelken_python/debug_n80_k40_3epoch,toy_rnn,vanilla_rnn,baseline_no_floss,3,0.4853202846975089,1.9043740034103394,eval
+engelken_python/gpu_smoke,toy_rnn,vanilla_rnn,prefloss,1,0.5151515151515151,0.8679313659667969,eval
+engelken_python/gpu_smoke,toy_rnn,vanilla_rnn,prefloss,2,0.49242424242424243,0.9058582782745361,eval
+engelken_python/official_py_baseline_no_floss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,baseline_no_floss,1,0.5063389679715302,2.151065170764923,eval
+engelken_python/official_py_baseline_no_floss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,baseline_no_floss,100,0.49888790035587194,0.6981811821460724,eval
+engelken_python/official_py_baseline_no_floss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,baseline_no_floss,200,0.5025578291814947,0.7067497670650482,eval
+engelken_python/official_py_baseline_no_floss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,baseline_no_floss,300,0.4968861209964413,0.7166876345872879,eval
+engelken_python/official_py_baseline_no_floss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,baseline_no_floss,400,0.5023354092526691,0.702445313334465,eval
+engelken_python/official_py_baseline_no_floss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,baseline_no_floss,500,0.49844306049822057,0.6947141587734222,eval
+engelken_python/official_py_baseline_no_floss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,baseline_no_floss,600,0.49649688612099646,0.6974123269319534,eval
+engelken_python/official_py_baseline_no_floss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,baseline_no_floss,700,0.49827624555160144,0.7033253163099289,eval
+engelken_python/official_py_baseline_no_floss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,baseline_no_floss,800,0.5050600533807829,0.6959485709667206,eval
+engelken_python/official_py_baseline_no_floss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,baseline_no_floss,900,0.5216303380782918,0.6901399791240692,eval
+engelken_python/official_py_baseline_no_floss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,baseline_no_floss,1000,0.7770796263345195,0.47778721898794174,eval
+engelken_python/official_py_prefloss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,prefloss,1,0.5019461743772242,1.6856758892536163,eval
+engelken_python/official_py_prefloss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,prefloss,100,0.9623554270462634,0.11776464246213436,eval
+engelken_python/official_py_prefloss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,prefloss,200,0.9935498220640568,0.027145093772560358,eval
+engelken_python/official_py_prefloss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,prefloss,300,0.9963300711743772,0.014187443535774946,eval
+engelken_python/official_py_prefloss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,prefloss,400,0.9975533807829181,0.009522247593849897,eval
+engelken_python/official_py_prefloss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,prefloss,500,0.9973865658362989,0.009814425837248564,eval
+engelken_python/official_py_prefloss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,prefloss,600,0.9983874555160143,0.006339075975120068,eval
+engelken_python/official_py_prefloss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,prefloss,700,0.9981094306049823,0.008150239707902074,eval
+engelken_python/official_py_prefloss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,prefloss,800,0.9981650355871887,0.006329314899630845,eval
+engelken_python/official_py_prefloss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,prefloss,900,0.9981650355871886,0.0068275314988568425,eval
+engelken_python/official_py_prefloss_N80_k40_E1000_setsid,toy_rnn,vanilla_rnn,prefloss,1000,0.9972753558718862,0.01047352165915072,eval
+engelken_python/smoke,toy_rnn,vanilla_rnn,prefloss,1,0.49242424242424243,0.9093148708343506,eval
+engelken_python/smoke,toy_rnn,vanilla_rnn,prefloss,2,0.5151515151515151,0.9205472469329834,eval
+engelken_python/smoke,toy_rnn,vanilla_rnn,prefloss,3,0.5303030303030303,0.8646541237831116,eval
+flossing_suite/results/smoke/toy_smoke,toy_rnn,vanilla_rnn,prefloss,1,0.5476190476190477,0.8243135213851929,eval
+flossing_suite/results/smoke/toy_smoke,toy_rnn,vanilla_rnn,prefloss,2,0.5238095238095238,0.9111667275428772,eval
+flossing_suite/results/smoke/toy_smoke,toy_rnn,vanilla_rnn,prefloss,3,0.6190476190476191,0.7443239688873291,eval
+flossing_suite/results/smoke/trm_step7_decoupled_periodic_smoke,rrm_step7,trm,engelken_l2@0_steps1_every1,0,0.0,,initial
+flossing_suite/results/smoke/trm_step7_decoupled_periodic_smoke,rrm_step7,trm,engelken_l2@0_steps1_every1,1,0.0,,task
+flossing_suite/results/smoke/trm_step7_decoupled_periodic_smoke,rrm_step7,trm,engelken_l2@0_steps1_every1,2,0.0,,task
+flossing_suite/results/smoke/trm_step7_decoupled_periodic_smoke,rrm_step7,trm,engelken_l2@0_steps1_every1,2,0.0,,final
+flossing_suite/results/smoke/trm_step7_smoke,rrm_step7,trm,engelken_l2@0_steps1,0,0.0,,initial
+flossing_suite/results/smoke/trm_step7_smoke,rrm_step7,trm,engelken_l2@0_steps1,1,0.0,,task
+flossing_suite/results/smoke/trm_step7_smoke,rrm_step7,trm,engelken_l2@0_steps1,1,0.0,,final
+flossing_suite/results/smoke/trm_task_batch32_smoke,rrm_step7,trm,baseline_no_floss,0,0.0,,initial
+flossing_suite/results/smoke/trm_task_batch32_smoke,rrm_step7,trm,baseline_no_floss,1,0.0,,task
+flossing_suite/results/smoke/trm_task_batch32_smoke,rrm_step7,trm,baseline_no_floss,1,0.0,,final
+flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000,toy_rnn,vanilla_rnn,baseline_no_floss,1,0.5063389679715302,2.151065170764923,eval
+flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000,toy_rnn,vanilla_rnn,baseline_no_floss,100,0.49888790035587194,0.6981811821460724,eval
+flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000,toy_rnn,vanilla_rnn,baseline_no_floss,200,0.5025578291814947,0.7067497670650482,eval
+flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000,toy_rnn,vanilla_rnn,baseline_no_floss,300,0.4968861209964413,0.7166876345872879,eval
+flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000,toy_rnn,vanilla_rnn,baseline_no_floss,400,0.5023354092526691,0.702445313334465,eval
+flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000,toy_rnn,vanilla_rnn,baseline_no_floss,500,0.49844306049822057,0.6947141587734222,eval
+flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000,toy_rnn,vanilla_rnn,baseline_no_floss,600,0.49649688612099646,0.6974123269319534,eval
+flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000,toy_rnn,vanilla_rnn,baseline_no_floss,700,0.49827624555160144,0.7033253163099289,eval
+flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000,toy_rnn,vanilla_rnn,baseline_no_floss,800,0.5050600533807829,0.6959485709667206,eval
+flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000,toy_rnn,vanilla_rnn,baseline_no_floss,900,0.5216303380782918,0.6901399791240692,eval
+flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000,toy_rnn,vanilla_rnn,baseline_no_floss,1000,0.7770796263345195,0.47778721898794174,eval
+flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000,toy_rnn,vanilla_rnn,pre_interfloss,1,0.5019461743772242,1.6856758892536163,eval
+flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000,toy_rnn,vanilla_rnn,pre_interfloss,100,0.564279359430605,1.2137768864631653,eval
+flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000,toy_rnn,vanilla_rnn,pre_interfloss,200,0.5421485765124555,1.4198356568813324,eval
+flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000,toy_rnn,vanilla_rnn,pre_interfloss,300,0.9971085409252668,0.013412912143394351,eval
+flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000,toy_rnn,vanilla_rnn,pre_interfloss,400,0.9976089857651246,0.009532386669889092,eval
+flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000,toy_rnn,vanilla_rnn,pre_interfloss,500,0.9974977758007118,0.00779245572630316,eval
+flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000,toy_rnn,vanilla_rnn,pre_interfloss,600,0.9976645907473309,0.007897141389548779,eval
+flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000,toy_rnn,vanilla_rnn,pre_interfloss,700,0.9977201957295374,0.00889350671786815,eval
+flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000,toy_rnn,vanilla_rnn,pre_interfloss,800,0.9978314056939501,0.006675782264210284,eval
+flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000,toy_rnn,vanilla_rnn,pre_interfloss,900,0.9979982206405694,0.00699911720585078,eval
+flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000,toy_rnn,vanilla_rnn,pre_interfloss,1000,0.9978314056939501,0.008064003428444266,eval
+flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000,toy_rnn,vanilla_rnn,prefloss,1,0.5019461743772242,1.6856758892536163,eval
+flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000,toy_rnn,vanilla_rnn,prefloss,100,0.9623554270462634,0.11776464246213436,eval
+flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000,toy_rnn,vanilla_rnn,prefloss,200,0.9935498220640568,0.027145093772560358,eval
+flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000,toy_rnn,vanilla_rnn,prefloss,300,0.9963300711743772,0.014187443535774946,eval
+flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000,toy_rnn,vanilla_rnn,prefloss,400,0.9975533807829181,0.009522247593849897,eval
+flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000,toy_rnn,vanilla_rnn,prefloss,500,0.9973865658362989,0.009814425837248564,eval
+flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000,toy_rnn,vanilla_rnn,prefloss,600,0.9983874555160143,0.006339075975120068,eval
+flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000,toy_rnn,vanilla_rnn,prefloss,700,0.9981094306049823,0.008150239707902074,eval
+flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000,toy_rnn,vanilla_rnn,prefloss,800,0.9981650355871887,0.006329314899630845,eval
+flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000,toy_rnn,vanilla_rnn,prefloss,900,0.9981650355871886,0.0068275314988568425,eval
+flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000,toy_rnn,vanilla_rnn,prefloss,1000,0.9972753558718862,0.01047352165915072,eval
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_b4_10000,rrm_step7,trm,baseline_no_floss,0,0.0,,initial
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_b4_10000,rrm_step7,trm,baseline_no_floss,1000,0.0,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_b4_10000,rrm_step7,trm,baseline_no_floss,2000,0.0,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_b4_10000,rrm_step7,trm,baseline_no_floss,3000,0.0,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_b4_10000,rrm_step7,trm,baseline_no_floss,4000,0.0,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_b4_10000,rrm_step7,trm,baseline_no_floss,5000,0.001,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_b4_10000,rrm_step7,trm,baseline_no_floss,6000,0.002,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,0,0.0,,initial
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,1000,0.0,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,2000,0.0,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,3000,0.022,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,4000,0.027,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,5000,0.028,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,6000,0.029,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,7000,0.066,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,8000,0.077,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,9000,0.179,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,10000,0.136,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,11000,0.164,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,12000,0.184,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,13000,0.176,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,14000,0.153,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,15000,0.194,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,16000,0.185,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,17000,0.127,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,18000,0.201,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,19000,0.144,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,20000,0.204,,task
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,rrm_step7,trm,baseline_no_floss,20000,0.204,,final
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_0_500_b4_k4_10000,rrm_step7,trm,"engelken_l2@0,500_steps500",0,0.0,,initial
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_0_500_b4_k4_10000,rrm_step7,trm,"engelken_l2@0,500_steps500",0,0.0,,after_floss
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,0,0.0,,initial
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,0,0.0,,after_floss
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,1000,0.0,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,2000,0.001,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,2000,0.0,,after_floss
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,3000,0.022,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,4000,0.027,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,4000,0.0,,after_floss
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,5000,0.027,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,6000,0.061,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,6000,0.0,,after_floss
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,7000,0.11,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,8000,0.066,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,8000,0.0,,after_floss
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,9000,0.097,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,10000,0.169,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,10000,0.0,,after_floss
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,11000,0.192,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,12000,0.128,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,13000,0.181,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,14000,0.179,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,15000,0.195,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,16000,0.179,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,17000,0.191,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,18000,0.167,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,19000,0.192,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,20000,0.207,,task
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps100_every2000,20000,0.207,,final
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_b4_k4_10000,rrm_step7,trm,engelken_l2@0_steps500,0,0.0,,initial
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_b4_k4_10000,rrm_step7,trm,engelken_l2@0_steps500,0,0.0,,after_floss
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_b4_k4_10000,rrm_step7,trm,engelken_l2@0_steps500,1000,0.0,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_b4_k4_10000,rrm_step7,trm,engelken_l2@0_steps500,2000,0.0,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_b4_k4_10000,rrm_step7,trm,engelken_l2@0_steps500,3000,0.0,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,0,0.0,,initial
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,0,0.0,,after_floss
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,1000,0.0,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,2000,0.0,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,3000,0.023,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,4000,0.026,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,5000,0.029,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,6000,0.067,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,7000,0.11,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,8000,0.125,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,9000,0.157,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,10000,0.153,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,11000,0.15,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,12000,0.184,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,13000,0.208,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,14000,0.126,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,15000,0.21,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,16000,0.166,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,17000,0.105,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,18000,0.184,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,19000,0.172,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,20000,0.21,,task
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,rrm_step7,trm,engelken_l2@0_steps500,20000,0.21,,final
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,100,0.3125,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,200,0.3359375,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,300,0.3203125,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,400,0.33203125,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,500,0.318359375,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,600,0.359375,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,700,0.33984375,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,800,0.361328125,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,900,0.373046875,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,1000,0.359375,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,1100,0.349609375,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,1200,0.36328125,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,1300,0.36328125,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,1400,0.37890625,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,1500,0.404296875,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,1600,0.388671875,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,1700,0.380859375,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,1800,0.384765625,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,1900,0.380859375,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,2000,0.400390625,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,2100,0.4140625,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,2200,0.376953125,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,2300,0.400390625,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,2400,0.392578125,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,2500,0.3828125,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,2600,0.3984375,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,2700,0.384765625,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,2800,0.423828125,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,2900,0.419921875,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,3000,0.392578125,,phase2
+step6_A_baseline_no_prefloss,hrm_step6,hrm,baseline_no_prefloss,3000,0.392578125,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,100,0.0,,phase1
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,200,0.0,,phase1
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,300,0.0,,phase1
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,400,0.0,,phase1
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,500,0.0,,phase1
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,500,0.0,,phase1
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,600,0.0,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,700,0.0,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,800,0.0,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,900,0.0,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,1000,0.0,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,1100,0.015625,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,1200,0.076171875,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,1300,0.125,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,1400,0.1640625,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,1500,0.16796875,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,1600,0.2109375,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,1700,0.2109375,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,1800,0.212890625,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,1900,0.2265625,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,2000,0.259765625,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,2100,0.255859375,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,2200,0.296875,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,2300,0.2734375,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,2400,0.2734375,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,2500,0.2890625,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,2600,0.318359375,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,2700,0.326171875,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,2800,0.291015625,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,2900,0.330078125,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,3000,0.32421875,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,3100,0.359375,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,3200,0.326171875,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,3300,0.357421875,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,3400,0.34375,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,3500,0.310546875,,phase2
+step6_B_engelken,hrm_step6,hrm,prefloss_engelken,3500,0.310546875,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,100,0.0,,phase1
+step6_C_cf,hrm_step6,hrm,prefloss_cf,200,0.0,,phase1
+step6_C_cf,hrm_step6,hrm,prefloss_cf,300,0.0,,phase1
+step6_C_cf,hrm_step6,hrm,prefloss_cf,400,0.0,,phase1
+step6_C_cf,hrm_step6,hrm,prefloss_cf,500,0.0,,phase1
+step6_C_cf,hrm_step6,hrm,prefloss_cf,500,0.0,,phase1
+step6_C_cf,hrm_step6,hrm,prefloss_cf,600,0.0,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,700,0.0,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,800,0.0,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,900,0.064453125,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,1000,0.119140625,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,1100,0.181640625,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,1200,0.23828125,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,1300,0.259765625,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,1400,0.291015625,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,1500,0.302734375,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,1600,0.298828125,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,1700,0.3046875,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,1800,0.30078125,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,1900,0.3125,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,2000,0.33203125,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,2100,0.31640625,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,2200,0.3359375,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,2300,0.341796875,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,2400,0.33203125,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,2500,0.353515625,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,2600,0.35546875,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,2700,0.361328125,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,2800,0.35546875,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,2900,0.3828125,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,3000,0.3828125,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,3100,0.361328125,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,3200,0.390625,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,3300,0.3984375,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,3400,0.359375,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,3500,0.380859375,,phase2
+step6_C_cf,hrm_step6,hrm,prefloss_cf,3500,0.380859375,,phase2
+step7_A_hrm_engelken_interfloss_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500",0,0.517578125,,initial
+step7_A_hrm_engelken_interfloss_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500",0,0.0,,after_floss
+step7_A_hrm_engelken_interfloss_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500",500,0.0,,after_floss
+step7_A_hrm_engelken_interfloss_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500",1000,0.1796875,,task
+step7_A_hrm_engelken_interfloss_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500",2000,0.583984375,,task
+step7_A_hrm_engelken_interfloss_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500",3000,0.580078125,,task
+step7_A_hrm_engelken_interfloss_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500",4000,0.58984375,,task
+step7_A_hrm_engelken_interfloss_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500",5000,0.611328125,,task
+step7_A_hrm_engelken_interfloss_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500",6000,0.634765625,,task
+step7_A_hrm_engelken_interfloss_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500",7000,0.63671875,,task
+step7_A_hrm_engelken_interfloss_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500",8000,0.662109375,,task
+step7_A_hrm_engelken_interfloss_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500",9000,0.642578125,,task
+step7_A_hrm_engelken_interfloss_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500",10000,0.646484375,,task
+step7_A_hrm_engelken_interfloss_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500",10000,0.646484375,,final
+step7_B_trm_engelken_interfloss_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500",0,0.59765625,,initial
+step7_B_trm_engelken_interfloss_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500",0,0.0,,after_floss
+step7_B_trm_engelken_interfloss_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500",500,0.0,,after_floss
+step7_B_trm_engelken_interfloss_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500",1000,0.021484375,,task
+step7_B_trm_engelken_interfloss_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500",2000,0.041015625,,task
+step7_B_trm_engelken_interfloss_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500",3000,0.255859375,,task
+step7_B_trm_engelken_interfloss_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500",4000,0.275390625,,task
+step7_B_trm_engelken_interfloss_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500",5000,0.453125,,task
+step7_B_trm_engelken_interfloss_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500",6000,0.466796875,,task
+step7_B_trm_engelken_interfloss_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500",7000,0.494140625,,task
+step7_B_trm_engelken_interfloss_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500",8000,0.501953125,,task
+step7_B_trm_engelken_interfloss_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500",9000,0.521484375,,task
+step7_B_trm_engelken_interfloss_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500",10000,0.51953125,,task
+step7_B_trm_engelken_interfloss_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500",10000,0.51953125,,final
+step7_C_hrm_engelken_interfloss_kl10_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",0,0.517578125,,initial
+step7_C_hrm_engelken_interfloss_kl10_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",0,0.017578125,,after_floss
+step7_C_hrm_engelken_interfloss_kl10_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",500,0.021484375,,after_floss
+step7_C_hrm_engelken_interfloss_kl10_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",1000,0.177734375,,task
+step7_C_hrm_engelken_interfloss_kl10_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",2000,0.482421875,,task
+step7_C_hrm_engelken_interfloss_kl10_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",3000,0.54296875,,task
+step7_C_hrm_engelken_interfloss_kl10_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",4000,0.5859375,,task
+step7_C_hrm_engelken_interfloss_kl10_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",5000,0.599609375,,task
+step7_C_hrm_engelken_interfloss_kl10_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",6000,0.595703125,,task
+step7_C_hrm_engelken_interfloss_kl10_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",7000,0.62109375,,task
+step7_C_hrm_engelken_interfloss_kl10_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",8000,0.61328125,,task
+step7_C_hrm_engelken_interfloss_kl10_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",9000,0.625,,task
+step7_C_hrm_engelken_interfloss_kl10_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",10000,0.62109375,,task
+step7_C_hrm_engelken_interfloss_kl10_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",10000,0.62109375,,final
+step7_D_trm_engelken_interfloss_kl10_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",0,0.59765625,,initial
+step7_D_trm_engelken_interfloss_kl10_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",0,0.025390625,,after_floss
+step7_D_trm_engelken_interfloss_kl10_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",500,0.013671875,,after_floss
+step7_D_trm_engelken_interfloss_kl10_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",1000,0.041015625,,task
+step7_D_trm_engelken_interfloss_kl10_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",2000,0.322265625,,task
+step7_D_trm_engelken_interfloss_kl10_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",3000,0.439453125,,task
+step7_D_trm_engelken_interfloss_kl10_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",4000,0.515625,,task
+step7_D_trm_engelken_interfloss_kl10_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",5000,0.498046875,,task
+step7_D_trm_engelken_interfloss_kl10_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",6000,0.57421875,,task
+step7_D_trm_engelken_interfloss_kl10_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",7000,0.556640625,,task
+step7_D_trm_engelken_interfloss_kl10_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",8000,0.55859375,,task
+step7_D_trm_engelken_interfloss_kl10_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",9000,0.5546875,,task
+step7_D_trm_engelken_interfloss_kl10_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",10000,0.595703125,,task
+step7_D_trm_engelken_interfloss_kl10_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",10000,0.595703125,,final
+step7_E_hrm_late_engelken_interfloss_kl10_start12_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",0,0.517578125,,initial
+step7_E_hrm_late_engelken_interfloss_kl10_start12_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",0,0.017578125,,after_floss
+step7_E_hrm_late_engelken_interfloss_kl10_start12_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",500,0.017578125,,after_floss
+step7_E_hrm_late_engelken_interfloss_kl10_start12_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",1000,0.193359375,,task
+step7_E_hrm_late_engelken_interfloss_kl10_start12_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",2000,0.4453125,,task
+step7_E_hrm_late_engelken_interfloss_kl10_start12_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",3000,0.564453125,,task
+step7_E_hrm_late_engelken_interfloss_kl10_start12_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",4000,0.564453125,,task
+step7_E_hrm_late_engelken_interfloss_kl10_start12_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",5000,0.583984375,,task
+step7_E_hrm_late_engelken_interfloss_kl10_start12_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",6000,0.61328125,,task
+step7_E_hrm_late_engelken_interfloss_kl10_start12_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",7000,0.63671875,,task
+step7_E_hrm_late_engelken_interfloss_kl10_start12_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",8000,0.61328125,,task
+step7_E_hrm_late_engelken_interfloss_kl10_start12_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",9000,0.615234375,,task
+step7_E_hrm_late_engelken_interfloss_kl10_start12_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",10000,0.619140625,,task
+step7_E_hrm_late_engelken_interfloss_kl10_start12_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",10000,0.619140625,,final
+step7_F_trm_late_engelken_interfloss_kl10_start12_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",0,0.59765625,,initial
+step7_F_trm_late_engelken_interfloss_kl10_start12_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",0,0.046875,,after_floss
+step7_F_trm_late_engelken_interfloss_kl10_start12_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",500,0.015625,,after_floss
+step7_F_trm_late_engelken_interfloss_kl10_start12_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",1000,0.060546875,,task
+step7_F_trm_late_engelken_interfloss_kl10_start12_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",2000,0.18359375,,task
+step7_F_trm_late_engelken_interfloss_kl10_start12_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",3000,0.408203125,,task
+step7_F_trm_late_engelken_interfloss_kl10_start12_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",4000,0.466796875,,task
+step7_F_trm_late_engelken_interfloss_kl10_start12_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",5000,0.47265625,,task
+step7_F_trm_late_engelken_interfloss_kl10_start12_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",6000,0.5546875,,task
+step7_F_trm_late_engelken_interfloss_kl10_start12_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",7000,0.541015625,,task
+step7_F_trm_late_engelken_interfloss_kl10_start12_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",8000,0.58203125,,task
+step7_F_trm_late_engelken_interfloss_kl10_start12_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",9000,0.55859375,,task
+step7_F_trm_late_engelken_interfloss_kl10_start12_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",10000,0.544921875,,task
+step7_F_trm_late_engelken_interfloss_kl10_start12_26041_k4_batch4_10k,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",10000,0.544921875,,final
+step7_G_hrm_volume_envelope_interfloss_kl10_lstar_neg015_26040_k8_10k,rrm_step7,hrm,"volume_cf@0,500_steps500_kl10",0,0.517578125,,initial
+step7_G_hrm_volume_envelope_interfloss_kl10_lstar_neg015_26040_k8_10k,rrm_step7,hrm,"volume_cf@0,500_steps500_kl10",0,0.025390625,,after_floss
+step7_G_hrm_volume_envelope_interfloss_kl10_lstar_neg015_26040_k8_10k,rrm_step7,hrm,"volume_cf@0,500_steps500_kl10",500,0.015625,,after_floss
+step7_G_hrm_volume_envelope_interfloss_kl10_lstar_neg015_26040_k8_10k,rrm_step7,hrm,"volume_cf@0,500_steps500_kl10",1000,0.208984375,,task
+step7_G_hrm_volume_envelope_interfloss_kl10_lstar_neg015_26040_k8_10k,rrm_step7,hrm,"volume_cf@0,500_steps500_kl10",2000,0.478515625,,task
+step7_G_hrm_volume_envelope_interfloss_kl10_lstar_neg015_26040_k8_10k,rrm_step7,hrm,"volume_cf@0,500_steps500_kl10",3000,0.521484375,,task
+step7_G_hrm_volume_envelope_interfloss_kl10_lstar_neg015_26040_k8_10k,rrm_step7,hrm,"volume_cf@0,500_steps500_kl10",4000,0.556640625,,task
+step7_G_hrm_volume_envelope_interfloss_kl10_lstar_neg015_26040_k8_10k,rrm_step7,hrm,"volume_cf@0,500_steps500_kl10",5000,0.58203125,,task
+step7_G_hrm_volume_envelope_interfloss_kl10_lstar_neg015_26040_k8_10k,rrm_step7,hrm,"volume_cf@0,500_steps500_kl10",6000,0.6171875,,task
+step7_G_hrm_volume_envelope_interfloss_kl10_lstar_neg015_26040_k8_10k,rrm_step7,hrm,"volume_cf@0,500_steps500_kl10",7000,0.607421875,,task
+step7_G_hrm_volume_envelope_interfloss_kl10_lstar_neg015_26040_k8_10k,rrm_step7,hrm,"volume_cf@0,500_steps500_kl10",8000,0.62109375,,task
+step7_G_hrm_volume_envelope_interfloss_kl10_lstar_neg015_26040_k8_10k,rrm_step7,hrm,"volume_cf@0,500_steps500_kl10",9000,0.58984375,,task
+step7_G_hrm_volume_envelope_interfloss_kl10_lstar_neg015_26040_k8_10k,rrm_step7,hrm,"volume_cf@0,500_steps500_kl10",10000,0.607421875,,task
+step7_G_hrm_volume_envelope_interfloss_kl10_lstar_neg015_26040_k8_10k,rrm_step7,hrm,"volume_cf@0,500_steps500_kl10",10000,0.607421875,,final
+step7_H_trm_volume_envelope_interfloss_kl10_lstar002_26041_k4_batch4_10k,rrm_step7,trm,"volume_cf@0,500_steps500_kl10",0,0.59765625,,initial
+step7_H_trm_volume_envelope_interfloss_kl10_lstar002_26041_k4_batch4_10k,rrm_step7,trm,"volume_cf@0,500_steps500_kl10",0,0.078125,,after_floss
+step7_H_trm_volume_envelope_interfloss_kl10_lstar002_26041_k4_batch4_10k,rrm_step7,trm,"volume_cf@0,500_steps500_kl10",500,0.01953125,,after_floss
+step7_H_trm_volume_envelope_interfloss_kl10_lstar002_26041_k4_batch4_10k,rrm_step7,trm,"volume_cf@0,500_steps500_kl10",1000,0.099609375,,task
+step7_H_trm_volume_envelope_interfloss_kl10_lstar002_26041_k4_batch4_10k,rrm_step7,trm,"volume_cf@0,500_steps500_kl10",2000,0.322265625,,task
+step7_H_trm_volume_envelope_interfloss_kl10_lstar002_26041_k4_batch4_10k,rrm_step7,trm,"volume_cf@0,500_steps500_kl10",3000,0.41015625,,task
+step7_H_trm_volume_envelope_interfloss_kl10_lstar002_26041_k4_batch4_10k,rrm_step7,trm,"volume_cf@0,500_steps500_kl10",4000,0.44921875,,task
+step7_H_trm_volume_envelope_interfloss_kl10_lstar002_26041_k4_batch4_10k,rrm_step7,trm,"volume_cf@0,500_steps500_kl10",5000,0.498046875,,task
+step7_H_trm_volume_envelope_interfloss_kl10_lstar002_26041_k4_batch4_10k,rrm_step7,trm,"volume_cf@0,500_steps500_kl10",6000,0.537109375,,task
+step7_H_trm_volume_envelope_interfloss_kl10_lstar002_26041_k4_batch4_10k,rrm_step7,trm,"volume_cf@0,500_steps500_kl10",7000,0.5625,,task
+step7_H_trm_volume_envelope_interfloss_kl10_lstar002_26041_k4_batch4_10k,rrm_step7,trm,"volume_cf@0,500_steps500_kl10",8000,0.548828125,,task
+step7_H_trm_volume_envelope_interfloss_kl10_lstar002_26041_k4_batch4_10k,rrm_step7,trm,"volume_cf@0,500_steps500_kl10",9000,0.556640625,,task
+step7_H_trm_volume_envelope_interfloss_kl10_lstar002_26041_k4_batch4_10k,rrm_step7,trm,"volume_cf@0,500_steps500_kl10",10000,0.55078125,,task
+step7_H_trm_volume_envelope_interfloss_kl10_lstar002_26041_k4_batch4_10k,rrm_step7,trm,"volume_cf@0,500_steps500_kl10",10000,0.55078125,,final
+step7_I_hrm_engelken_interfloss_kl100_short_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps100_kl100",0,0.517578125,,initial
+step7_I_hrm_engelken_interfloss_kl100_short_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps100_kl100",0,0.0,,after_floss
+step7_I_hrm_engelken_interfloss_kl100_short_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps100_kl100",500,0.017578125,,after_floss
+step7_I_hrm_engelken_interfloss_kl100_short_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps100_kl100",1000,0.642578125,,task
+step7_I_hrm_engelken_interfloss_kl100_short_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps100_kl100",2000,0.63671875,,task
+step7_I_hrm_engelken_interfloss_kl100_short_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps100_kl100",3000,0.65625,,task
+step7_I_hrm_engelken_interfloss_kl100_short_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps100_kl100",4000,0.66015625,,task
+step7_I_hrm_engelken_interfloss_kl100_short_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps100_kl100",5000,0.64453125,,task
+step7_I_hrm_engelken_interfloss_kl100_short_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps100_kl100",6000,0.638671875,,task
+step7_I_hrm_engelken_interfloss_kl100_short_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps100_kl100",7000,0.677734375,,task
+step7_I_hrm_engelken_interfloss_kl100_short_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps100_kl100",8000,0.65234375,,task
+step7_I_hrm_engelken_interfloss_kl100_short_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps100_kl100",9000,0.658203125,,task
+step7_I_hrm_engelken_interfloss_kl100_short_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps100_kl100",10000,0.63671875,,task
+step7_I_hrm_engelken_interfloss_kl100_short_26040_k8_10k,rrm_step7,hrm,"engelken_l2@0,500_steps100_kl100",10000,0.63671875,,final
diff --git a/flossing_suite/results/summary/flossing_runs_summary.csv b/flossing_suite/results/summary/flossing_runs_summary.csv
new file mode 100644
index 0000000..3adb736
--- /dev/null
+++ b/flossing_suite/results/summary/flossing_runs_summary.csv
@@ -0,0 +1,32 @@
+name,path,family,model,selector,floss_mode,schedule,train_steps,floss_steps,k_lyap,kl_beta,initial_acc,final_acc,best_acc,delta_final,n_evals,n_floss_episodes,status,task_batch_size,floss_batch_size,effective_official_gbs768_steps
+step6_A_baseline_no_prefloss,/home/yurenh2/rrm/research/flossing/step6_A_baseline_no_prefloss.json,hrm_step6,hrm,baseline_no_prefloss,volume_cf,pre=0,3000,0,8,0,0.3046875,0.392578125,0.423828125,0.087890625,31,0,complete,,,
+step6_B_engelken,/home/yurenh2/rrm/research/flossing/step6_B_engelken.json,hrm_step6,hrm,prefloss_engelken,engelken,pre=500,3000,500,2,0,0.3046875,0.310546875,0.359375,0.005859375,37,1,complete,,,
+step6_C_cf,/home/yurenh2/rrm/research/flossing/step6_C_cf.json,hrm_step6,hrm,prefloss_cf,cf,pre=500,3000,500,2,0,0.3046875,0.380859375,0.3984375,0.076171875,37,1,complete,,,
+step7_A_hrm_engelken_interfloss_26040_k8_10k,/home/yurenh2/rrm/research/flossing/step7_A_hrm_engelken_interfloss_26040_k8_10k.json,rrm_step7,hrm,"engelken_l2@0,500_steps500",engelken_l2,"0,500",10000,500,8,0,0.517578125,0.646484375,0.662109375,0.12890625,14,2,complete,8,8,104.16666666666667
+step7_C_hrm_engelken_interfloss_kl10_26040_k8_10k,/home/yurenh2/rrm/research/flossing/step7_C_hrm_engelken_interfloss_kl10_26040_k8_10k.json,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",engelken_l2,"0,500",10000,500,8,10.0,0.517578125,0.62109375,0.625,0.103515625,14,2,complete,8,8,104.16666666666667
+step7_E_hrm_late_engelken_interfloss_kl10_start12_26040_k8_10k,/home/yurenh2/rrm/research/flossing/step7_E_hrm_late_engelken_interfloss_kl10_start12_26040_k8_10k.json,rrm_step7,hrm,"engelken_l2@0,500_steps500_kl10",engelken_l2,"0,500",10000,500,8,10.0,0.517578125,0.619140625,0.63671875,0.1015625,14,2,complete,8,8,104.16666666666667
+step7_G_hrm_volume_envelope_interfloss_kl10_lstar_neg015_26040_k8_10k,/home/yurenh2/rrm/research/flossing/step7_G_hrm_volume_envelope_interfloss_kl10_lstar_neg015_26040_k8_10k.json,rrm_step7,hrm,"volume_cf@0,500_steps500_kl10",volume_cf,"0,500",10000,500,8,10.0,0.517578125,0.607421875,0.62109375,0.08984375,14,2,complete,8,8,104.16666666666667
+step7_I_hrm_engelken_interfloss_kl100_short_26040_k8_10k,/home/yurenh2/rrm/research/flossing/step7_I_hrm_engelken_interfloss_kl100_short_26040_k8_10k.json,rrm_step7,hrm,"engelken_l2@0,500_steps100_kl100",engelken_l2,"0,500",10000,100,8,100.0,0.517578125,0.63671875,0.677734375,0.119140625,14,2,complete,8,8,104.16666666666667
+engelken_paper_faithful/smoke,/home/yurenh2/rrm/research/flossing/engelken_paper_faithful/smoke.json,rrm_step7,trm,engelken_l2@0_steps1,engelken_l2,0,1,1,1,0.0,0.0,0.0,0.0,0.0,4,1,complete,2,2,0.0026041666666666665
+flossing_suite/results/smoke/trm_step7_decoupled_periodic_smoke,/home/yurenh2/rrm/research/flossing/flossing_suite/results/smoke/trm_step7_decoupled_periodic_smoke.json,rrm_step7,trm,engelken_l2@0_steps1_every1,engelken_l2,"0; every=1, start=1, stop=1",2,1,1,0.0,0.0,0.0,0.0,0.0,4,2,complete,8,2,0.020833333333333332
+flossing_suite/results/smoke/trm_step7_smoke,/home/yurenh2/rrm/research/flossing/flossing_suite/results/smoke/trm_step7_smoke.json,rrm_step7,trm,engelken_l2@0_steps1,engelken_l2,0,1,1,1,0.0,0.0,0.0,0.0,0.0,3,1,complete,2,2,0.0026041666666666665
+flossing_suite/results/smoke/trm_task_batch32_smoke,/home/yurenh2/rrm/research/flossing/flossing_suite/results/smoke/trm_task_batch32_smoke.json,rrm_step7,trm,baseline_no_floss,engelken_l2,,1,0,4,0.0,0.0,0.0,0.0,0.0,3,0,complete,32,4,0.041666666666666664
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_b4_10000,/home/yurenh2/rrm/research/flossing/flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_b4_10000.json,rrm_step7,trm,baseline_no_floss,engelken_l2,,10000,0,4,0.0,0.0,0.002,0.002,0.002,7,0,running_or_incomplete,4,4,52.083333333333336
+flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000,/home/yurenh2/rrm/research/flossing/flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000.json,rrm_step7,trm,baseline_no_floss,engelken_l2,,20000,0,4,0.0,0.0,0.204,0.204,0.204,22,0,complete,32,4,833.3333333333334
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_0_500_b4_k4_10000,/home/yurenh2/rrm/research/flossing/flossing_suite/results/trm_faithful/trm_seed123_pre_inter_0_500_b4_k4_10000.json,rrm_step7,trm,"engelken_l2@0,500_steps500",engelken_l2,"0,500",10000,500,4,0.0,0.0,0.0,0.0,0.0,2,1,running_or_incomplete,4,4,52.083333333333336
+flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000,/home/yurenh2/rrm/research/flossing/flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000.json,rrm_step7,trm,engelken_l2@0_steps100_every2000,engelken_l2,"0; every=2000, start=2000, stop=10000",20000,100,4,0.0,0.0,0.207,0.207,0.207,28,6,complete,32,4,833.3333333333334
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_b4_k4_10000,/home/yurenh2/rrm/research/flossing/flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_b4_k4_10000.json,rrm_step7,trm,engelken_l2@0_steps500,engelken_l2,0,10000,500,4,0.0,0.0,0.0,0.0,0.0,5,1,running_or_incomplete,4,4,52.083333333333336
+flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000,/home/yurenh2/rrm/research/flossing/flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000.json,rrm_step7,trm,engelken_l2@0_steps500,engelken_l2,0,20000,500,4,0.0,0.0,0.21,0.21,0.21,23,1,complete,32,4,833.3333333333334
+step7_B_trm_engelken_interfloss_26041_k4_batch4_10k,/home/yurenh2/rrm/research/flossing/step7_B_trm_engelken_interfloss_26041_k4_batch4_10k.json,rrm_step7,trm,"engelken_l2@0,500_steps500",engelken_l2,"0,500",10000,500,4,0,0.59765625,0.51953125,0.59765625,-0.078125,14,2,complete,4,4,52.083333333333336
+step7_D_trm_engelken_interfloss_kl10_26041_k4_batch4_10k,/home/yurenh2/rrm/research/flossing/step7_D_trm_engelken_interfloss_kl10_26041_k4_batch4_10k.json,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",engelken_l2,"0,500",10000,500,4,10.0,0.59765625,0.595703125,0.59765625,-0.001953125,14,2,complete,4,4,52.083333333333336
+step7_F_trm_late_engelken_interfloss_kl10_start12_26041_k4_batch4_10k,/home/yurenh2/rrm/research/flossing/step7_F_trm_late_engelken_interfloss_kl10_start12_26041_k4_batch4_10k.json,rrm_step7,trm,"engelken_l2@0,500_steps500_kl10",engelken_l2,"0,500",10000,500,4,10.0,0.59765625,0.544921875,0.59765625,-0.052734375,14,2,complete,4,4,52.083333333333336
+step7_H_trm_volume_envelope_interfloss_kl10_lstar002_26041_k4_batch4_10k,/home/yurenh2/rrm/research/flossing/step7_H_trm_volume_envelope_interfloss_kl10_lstar002_26041_k4_batch4_10k.json,rrm_step7,trm,"volume_cf@0,500_steps500_kl10",volume_cf,"0,500",10000,500,4,10.0,0.59765625,0.55078125,0.59765625,-0.046875,14,2,complete,4,4,52.083333333333336
+engelken_python/debug_n80_k40_3epoch,/home/yurenh2/rrm/research/flossing/engelken_python/debug_n80_k40_3epoch.json,toy_rnn,vanilla_rnn,baseline_no_floss,engelken_l2,"pre=0,inter_period=100,max_inter=0",3,0,40,0,0.5124555160142349,0.4853202846975089,0.5124555160142349,-0.027135231316726016,3,0,complete,,,
+engelken_python/gpu_smoke,/home/yurenh2/rrm/research/flossing/engelken_python/gpu_smoke.json,toy_rnn,vanilla_rnn,prefloss,engelken_l2,"pre=1,inter_period=100,max_inter=0",2,1,4,0,0.5151515151515151,0.49242424242424243,0.5151515151515151,-0.022727272727272707,2,1,complete,,,
+engelken_python/official_py_baseline_no_floss_N80_k40_E1000_setsid,/home/yurenh2/rrm/research/flossing/engelken_python/official_py_baseline_no_floss_N80_k40_E1000_setsid.json,toy_rnn,vanilla_rnn,baseline_no_floss,engelken_l2,"pre=0,inter_period=100,max_inter=0",1000,0,40,0,0.5063389679715302,0.7770796263345195,0.7770796263345195,0.27074065836298933,11,0,complete,,,
+engelken_python/official_py_prefloss_N80_k40_E1000_setsid,/home/yurenh2/rrm/research/flossing/engelken_python/official_py_prefloss_N80_k40_E1000_setsid.json,toy_rnn,vanilla_rnn,prefloss,engelken_l2,"pre=100,inter_period=100,max_inter=0",1000,100,40,0,0.5019461743772242,0.9972753558718862,0.9983874555160143,0.495329181494662,11,1,complete,,,
+engelken_python/smoke,/home/yurenh2/rrm/research/flossing/engelken_python/smoke.json,toy_rnn,vanilla_rnn,prefloss,engelken_l2,"pre=2,inter_period=100,max_inter=0",3,2,4,0,0.49242424242424243,0.5303030303030303,0.5303030303030303,0.037878787878787845,3,1,complete,,,
+flossing_suite/results/smoke/toy_smoke,/home/yurenh2/rrm/research/flossing/flossing_suite/results/smoke/toy_smoke.json,toy_rnn,vanilla_rnn,prefloss,engelken_l2,"pre=2,inter_period=100,max_inter=0",3,2,4,0,0.5476190476190477,0.6190476190476191,0.6190476190476191,0.0714285714285714,3,1,complete,,,
+flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000,/home/yurenh2/rrm/research/flossing/flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000.json,toy_rnn,vanilla_rnn,baseline_no_floss,engelken_l2,"pre=0,inter_period=100,max_inter=0",1000,0,40,0,0.5063389679715302,0.7770796263345195,0.7770796263345195,0.27074065836298933,11,0,complete,,,
+flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000,/home/yurenh2/rrm/research/flossing/flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000.json,toy_rnn,vanilla_rnn,pre_interfloss,engelken_l2,"pre=100,inter_period=100,max_inter=2",1000,300,40,0,0.5019461743772242,0.9978314056939501,0.9979982206405694,0.4958852313167259,11,3,complete,,,
+flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000,/home/yurenh2/rrm/research/flossing/flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000.json,toy_rnn,vanilla_rnn,prefloss,engelken_l2,"pre=100,inter_period=100,max_inter=0",1000,100,40,0,0.5019461743772242,0.9972753558718862,0.9983874555160143,0.495329181494662,11,1,complete,,,
diff --git a/flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000.cmd.sh b/flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000.cmd.sh
new file mode 100755
index 0000000..d7d9526
--- /dev/null
+++ b/flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000.cmd.sh
@@ -0,0 +1,43 @@
+#!/usr/bin/env bash
+set -euo pipefail
+cd "/home/yurenh2/rrm"
+export CUDA_VISIBLE_DEVICES="0"
+export PYTHONUNBUFFERED=1
+exec "/home/yurenh2/miniconda3/envs/rrm/bin/python" research/flossing/engelken_python_flossing.py \
+ --hidden-size 80 \
+ --n-lyap 40 \
+ --train-epochs 1000 \
+ --inter-period 100 \
+ --inter-epochs 100 \
+ --batch-size 16 \
+ --input-dim 1 \
+ --train-steps 300 \
+ --lyap-steps 55 \
+ --floss-input-steps 300 \
+ --seed-ic 1 \
+ --seed-input 1 \
+ --seed-net 1 \
+ --seed-ons 1 \
+ --lr 0.001 \
+ --beta1 0.9 \
+ --beta2 0.999 \
+ --init-type 1 \
+ --recurrent-gain 1.0 \
+ --recurrent-mean-gain 0.0 \
+ --input-scale 1.0 \
+ --delay 10 \
+ --ws-std 1.0 \
+ --ws-mean 0.0 \
+ --wr-std 1.0 \
+ --wr-mean 0.0 \
+ --b-std 0.1 \
+ --b-mean 0.0 \
+ --task -1 \
+ --lyap-target 0.0 \
+ --eval-every 100 \
+ --eval-batches 4 \
+ --log-every-floss 25 \
+ --device cuda \
+ --pre-epochs "0" \
+ --max-inter-episodes "0" \
+ --out "/home/yurenh2/rrm/research/flossing/flossing_suite/results/toy_rnn/toy_baseline_no_floss_N80_k40_E1000.json"
diff --git a/flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000.cmd.sh b/flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000.cmd.sh
new file mode 100755
index 0000000..13383f9
--- /dev/null
+++ b/flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000.cmd.sh
@@ -0,0 +1,43 @@
+#!/usr/bin/env bash
+set -euo pipefail
+cd "/home/yurenh2/rrm"
+export CUDA_VISIBLE_DEVICES="3"
+export PYTHONUNBUFFERED=1
+exec "/home/yurenh2/miniconda3/envs/rrm/bin/python" research/flossing/engelken_python_flossing.py \
+ --hidden-size 80 \
+ --n-lyap 40 \
+ --train-epochs 1000 \
+ --inter-period 100 \
+ --inter-epochs 100 \
+ --batch-size 16 \
+ --input-dim 1 \
+ --train-steps 300 \
+ --lyap-steps 55 \
+ --floss-input-steps 300 \
+ --seed-ic 1 \
+ --seed-input 1 \
+ --seed-net 1 \
+ --seed-ons 1 \
+ --lr 0.001 \
+ --beta1 0.9 \
+ --beta2 0.999 \
+ --init-type 1 \
+ --recurrent-gain 1.0 \
+ --recurrent-mean-gain 0.0 \
+ --input-scale 1.0 \
+ --delay 10 \
+ --ws-std 1.0 \
+ --ws-mean 0.0 \
+ --wr-std 1.0 \
+ --wr-mean 0.0 \
+ --b-std 0.1 \
+ --b-mean 0.0 \
+ --task -1 \
+ --lyap-target 0.0 \
+ --eval-every 100 \
+ --eval-batches 4 \
+ --log-every-floss 25 \
+ --device cuda \
+ --pre-epochs "100" \
+ --max-inter-episodes "2" \
+ --out "/home/yurenh2/rrm/research/flossing/flossing_suite/results/toy_rnn/toy_pre_inter_N80_k40_E1000.json"
diff --git a/flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000.cmd.sh b/flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000.cmd.sh
new file mode 100755
index 0000000..db82a74
--- /dev/null
+++ b/flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000.cmd.sh
@@ -0,0 +1,43 @@
+#!/usr/bin/env bash
+set -euo pipefail
+cd "/home/yurenh2/rrm"
+export CUDA_VISIBLE_DEVICES="1"
+export PYTHONUNBUFFERED=1
+exec "/home/yurenh2/miniconda3/envs/rrm/bin/python" research/flossing/engelken_python_flossing.py \
+ --hidden-size 80 \
+ --n-lyap 40 \
+ --train-epochs 1000 \
+ --inter-period 100 \
+ --inter-epochs 100 \
+ --batch-size 16 \
+ --input-dim 1 \
+ --train-steps 300 \
+ --lyap-steps 55 \
+ --floss-input-steps 300 \
+ --seed-ic 1 \
+ --seed-input 1 \
+ --seed-net 1 \
+ --seed-ons 1 \
+ --lr 0.001 \
+ --beta1 0.9 \
+ --beta2 0.999 \
+ --init-type 1 \
+ --recurrent-gain 1.0 \
+ --recurrent-mean-gain 0.0 \
+ --input-scale 1.0 \
+ --delay 10 \
+ --ws-std 1.0 \
+ --ws-mean 0.0 \
+ --wr-std 1.0 \
+ --wr-mean 0.0 \
+ --b-std 0.1 \
+ --b-mean 0.0 \
+ --task -1 \
+ --lyap-target 0.0 \
+ --eval-every 100 \
+ --eval-batches 4 \
+ --log-every-floss 25 \
+ --device cuda \
+ --pre-epochs "100" \
+ --max-inter-episodes "0" \
+ --out "/home/yurenh2/rrm/research/flossing/flossing_suite/results/toy_rnn/toy_prefloss_N80_k40_E1000.json"
diff --git a/flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_b4_10000.cmd.sh b/flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_b4_10000.cmd.sh
new file mode 100755
index 0000000..db9568c
--- /dev/null
+++ b/flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_b4_10000.cmd.sh
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+set -euo pipefail
+cd "/home/yurenh2/rrm"
+export CUDA_VISIBLE_DEVICES="0"
+export PYTHONUNBUFFERED=1
+exec "/home/yurenh2/miniconda3/envs/rrm/bin/python" research/flossing/step7_interfloss.py \
+ --model trm \
+ --ckpt-root "/home/yurenh2/rrm/trm/checkpoints/Sudoku-extreme-1k-aug-1000-ACT-torch/pretrain_mlp_t_sudoku_official_gbs768_repro" \
+ --ckpt-name __random__ \
+ --init-seed 123 \
+ --train-steps "10000" \
+ --batch-size "4" \
+ --train-lr 1e-4 \
+ --floss-lr 1e-4 \
+ --floss-mode engelken_l2 \
+ --lambda-star 0 \
+ --k-lyap 4 \
+ --lyap-act-steps 4 \
+ --seed 42 \
+ --eval-every 1000 \
+ --eval-n "1000" \
+ --eval-batch-size 64 \
+ --floss-log-every 10 \
+ --train-puzzle-emb \
+ --puzzle-emb-lr 1e-4 \
+ --puzzle-emb-weight-decay 1.0 \
+ --kl-beta 0 \
+ --floss-steps "0" \
+ --interfloss-at "" \
+ --out "/home/yurenh2/rrm/research/flossing/flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_b4_10000.json"
diff --git a/flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000.cmd.sh b/flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000.cmd.sh
new file mode 100755
index 0000000..52a9fb4
--- /dev/null
+++ b/flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000.cmd.sh
@@ -0,0 +1,35 @@
+#!/usr/bin/env bash
+set -euo pipefail
+cd "/home/yurenh2/rrm"
+export CUDA_VISIBLE_DEVICES="0"
+export PYTHONUNBUFFERED=1
+exec "/home/yurenh2/miniconda3/envs/rrm/bin/python" research/flossing/step7_interfloss.py \
+ --model trm \
+ --ckpt-root "/home/yurenh2/rrm/trm/checkpoints/Sudoku-extreme-1k-aug-1000-ACT-torch/pretrain_mlp_t_sudoku_official_gbs768_repro" \
+ --ckpt-name __random__ \
+ --init-seed 123 \
+ --train-steps "20000" \
+ --batch-size "32" \
+ --task-batch-size "32" \
+ --floss-batch-size "4" \
+ --train-lr 1e-4 \
+ --floss-lr 1e-4 \
+ --floss-mode engelken_l2 \
+ --lambda-star 0 \
+ --k-lyap 4 \
+ --lyap-act-steps 4 \
+ --seed 42 \
+ --eval-every 1000 \
+ --eval-n "1000" \
+ --eval-batch-size 64 \
+ --floss-log-every 10 \
+ --train-puzzle-emb \
+ --puzzle-emb-lr 1e-4 \
+ --puzzle-emb-weight-decay 1.0 \
+ --kl-beta 0 \
+ --floss-steps "0" \
+ --interfloss-at "" \
+ --interfloss-every "0" \
+ --interfloss-start "0" \
+ --interfloss-stop "-1" \
+ --out "/home/yurenh2/rrm/research/flossing/flossing_suite/results/trm_faithful/trm_seed123_baseline_nofloss_tb32_fb4_20000.json"
diff --git a/flossing_suite/results/trm_faithful/trm_seed123_pre_inter_0_500_b4_k4_10000.cmd.sh b/flossing_suite/results/trm_faithful/trm_seed123_pre_inter_0_500_b4_k4_10000.cmd.sh
new file mode 100755
index 0000000..5c3ba64
--- /dev/null
+++ b/flossing_suite/results/trm_faithful/trm_seed123_pre_inter_0_500_b4_k4_10000.cmd.sh
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+set -euo pipefail
+cd "/home/yurenh2/rrm"
+export CUDA_VISIBLE_DEVICES="3"
+export PYTHONUNBUFFERED=1
+exec "/home/yurenh2/miniconda3/envs/rrm/bin/python" research/flossing/step7_interfloss.py \
+ --model trm \
+ --ckpt-root "/home/yurenh2/rrm/trm/checkpoints/Sudoku-extreme-1k-aug-1000-ACT-torch/pretrain_mlp_t_sudoku_official_gbs768_repro" \
+ --ckpt-name __random__ \
+ --init-seed 123 \
+ --train-steps "10000" \
+ --batch-size "4" \
+ --train-lr 1e-4 \
+ --floss-lr 1e-4 \
+ --floss-mode engelken_l2 \
+ --lambda-star 0 \
+ --k-lyap 4 \
+ --lyap-act-steps 4 \
+ --seed 42 \
+ --eval-every 1000 \
+ --eval-n "1000" \
+ --eval-batch-size 64 \
+ --floss-log-every 10 \
+ --train-puzzle-emb \
+ --puzzle-emb-lr 1e-4 \
+ --puzzle-emb-weight-decay 1.0 \
+ --kl-beta 0 \
+ --floss-steps "500" \
+ --interfloss-at "0,500" \
+ --out "/home/yurenh2/rrm/research/flossing/flossing_suite/results/trm_faithful/trm_seed123_pre_inter_0_500_b4_k4_10000.json"
diff --git a/flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000.cmd.sh b/flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000.cmd.sh
new file mode 100755
index 0000000..482c147
--- /dev/null
+++ b/flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000.cmd.sh
@@ -0,0 +1,35 @@
+#!/usr/bin/env bash
+set -euo pipefail
+cd "/home/yurenh2/rrm"
+export CUDA_VISIBLE_DEVICES="3"
+export PYTHONUNBUFFERED=1
+exec "/home/yurenh2/miniconda3/envs/rrm/bin/python" research/flossing/step7_interfloss.py \
+ --model trm \
+ --ckpt-root "/home/yurenh2/rrm/trm/checkpoints/Sudoku-extreme-1k-aug-1000-ACT-torch/pretrain_mlp_t_sudoku_official_gbs768_repro" \
+ --ckpt-name __random__ \
+ --init-seed 123 \
+ --train-steps "20000" \
+ --batch-size "32" \
+ --task-batch-size "32" \
+ --floss-batch-size "4" \
+ --train-lr 1e-4 \
+ --floss-lr 1e-4 \
+ --floss-mode engelken_l2 \
+ --lambda-star 0 \
+ --k-lyap 4 \
+ --lyap-act-steps 4 \
+ --seed 42 \
+ --eval-every 1000 \
+ --eval-n "1000" \
+ --eval-batch-size 64 \
+ --floss-log-every 10 \
+ --train-puzzle-emb \
+ --puzzle-emb-lr 1e-4 \
+ --puzzle-emb-weight-decay 1.0 \
+ --kl-beta 0 \
+ --floss-steps "100" \
+ --interfloss-at "0" \
+ --interfloss-every "2000" \
+ --interfloss-start "2000" \
+ --interfloss-stop "10000" \
+ --out "/home/yurenh2/rrm/research/flossing/flossing_suite/results/trm_faithful/trm_seed123_pre_inter_periodic2000_tb32_fb4_k4_20000.json"
diff --git a/flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_b4_k4_10000.cmd.sh b/flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_b4_k4_10000.cmd.sh
new file mode 100755
index 0000000..7f364d6
--- /dev/null
+++ b/flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_b4_k4_10000.cmd.sh
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+set -euo pipefail
+cd "/home/yurenh2/rrm"
+export CUDA_VISIBLE_DEVICES="1"
+export PYTHONUNBUFFERED=1
+exec "/home/yurenh2/miniconda3/envs/rrm/bin/python" research/flossing/step7_interfloss.py \
+ --model trm \
+ --ckpt-root "/home/yurenh2/rrm/trm/checkpoints/Sudoku-extreme-1k-aug-1000-ACT-torch/pretrain_mlp_t_sudoku_official_gbs768_repro" \
+ --ckpt-name __random__ \
+ --init-seed 123 \
+ --train-steps "10000" \
+ --batch-size "4" \
+ --train-lr 1e-4 \
+ --floss-lr 1e-4 \
+ --floss-mode engelken_l2 \
+ --lambda-star 0 \
+ --k-lyap 4 \
+ --lyap-act-steps 4 \
+ --seed 42 \
+ --eval-every 1000 \
+ --eval-n "1000" \
+ --eval-batch-size 64 \
+ --floss-log-every 10 \
+ --train-puzzle-emb \
+ --puzzle-emb-lr 1e-4 \
+ --puzzle-emb-weight-decay 1.0 \
+ --kl-beta 0 \
+ --floss-steps "500" \
+ --interfloss-at "0" \
+ --out "/home/yurenh2/rrm/research/flossing/flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_b4_k4_10000.json"
diff --git a/flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000.cmd.sh b/flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000.cmd.sh
new file mode 100755
index 0000000..0e903bd
--- /dev/null
+++ b/flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000.cmd.sh
@@ -0,0 +1,35 @@
+#!/usr/bin/env bash
+set -euo pipefail
+cd "/home/yurenh2/rrm"
+export CUDA_VISIBLE_DEVICES="1"
+export PYTHONUNBUFFERED=1
+exec "/home/yurenh2/miniconda3/envs/rrm/bin/python" research/flossing/step7_interfloss.py \
+ --model trm \
+ --ckpt-root "/home/yurenh2/rrm/trm/checkpoints/Sudoku-extreme-1k-aug-1000-ACT-torch/pretrain_mlp_t_sudoku_official_gbs768_repro" \
+ --ckpt-name __random__ \
+ --init-seed 123 \
+ --train-steps "20000" \
+ --batch-size "32" \
+ --task-batch-size "32" \
+ --floss-batch-size "4" \
+ --train-lr 1e-4 \
+ --floss-lr 1e-4 \
+ --floss-mode engelken_l2 \
+ --lambda-star 0 \
+ --k-lyap 4 \
+ --lyap-act-steps 4 \
+ --seed 42 \
+ --eval-every 1000 \
+ --eval-n "1000" \
+ --eval-batch-size 64 \
+ --floss-log-every 10 \
+ --train-puzzle-emb \
+ --puzzle-emb-lr 1e-4 \
+ --puzzle-emb-weight-decay 1.0 \
+ --kl-beta 0 \
+ --floss-steps "500" \
+ --interfloss-at "0" \
+ --interfloss-every "0" \
+ --interfloss-start "0" \
+ --interfloss-stop "-1" \
+ --out "/home/yurenh2/rrm/research/flossing/flossing_suite/results/trm_faithful/trm_seed123_prefloss_0_tb32_fb4_k4_20000.json"
diff --git a/flossing_suite/smoke_test.sh b/flossing_suite/smoke_test.sh
new file mode 100755
index 0000000..8b766b5
--- /dev/null
+++ b/flossing_suite/smoke_test.sh
@@ -0,0 +1,61 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+GPU="${1:-0}"
+ROOT="/home/yurenh2/rrm"
+PY="/home/yurenh2/miniconda3/envs/rrm/bin/python"
+OUT_DIR="${ROOT}/research/flossing/flossing_suite/results/smoke"
+mkdir -p "${OUT_DIR}"
+cd "${ROOT}"
+
+echo "[smoke] toy RNN faithful port"
+CUDA_VISIBLE_DEVICES="${GPU}" PYTHONUNBUFFERED=1 "${PY}" research/flossing/engelken_python_flossing.py \
+ --hidden-size 16 \
+ --n-lyap 4 \
+ --train-epochs 3 \
+ --pre-epochs 2 \
+ --inter-epochs 0 \
+ --max-inter-episodes 0 \
+ --batch-size 4 \
+ --train-steps 40 \
+ --lyap-steps 30 \
+ --floss-input-steps 40 \
+ --eval-every 1 \
+ --eval-batches 1 \
+ --device cuda \
+ --out "${OUT_DIR}/toy_smoke.json" \
+ > "${OUT_DIR}/toy_smoke.log" 2>&1
+
+echo "[smoke] TRM interfloss analogue"
+CUDA_VISIBLE_DEVICES="${GPU}" PYTHONUNBUFFERED=1 "${PY}" research/flossing/step7_interfloss.py \
+ --model trm \
+ --ckpt-root "${ROOT}/trm/checkpoints/Sudoku-extreme-1k-aug-1000-ACT-torch/pretrain_mlp_t_sudoku_official_gbs768_repro" \
+ --ckpt-name __random__ \
+ --init-seed 123 \
+ --train-steps 1 \
+ --batch-size 2 \
+ --train-lr 1e-4 \
+ --floss-lr 1e-4 \
+ --floss-steps 1 \
+ --interfloss-at 0 \
+ --floss-mode engelken_l2 \
+ --lambda-star 0 \
+ --k-lyap 1 \
+ --lyap-act-steps 1 \
+ --seed 42 \
+ --eval-every 1 \
+ --eval-n 8 \
+ --eval-batch-size 8 \
+ --floss-log-every 1 \
+ --no-eval-after-floss \
+ --train-puzzle-emb \
+ --puzzle-emb-lr 1e-4 \
+ --puzzle-emb-weight-decay 1.0 \
+ --out "${OUT_DIR}/trm_step7_smoke.json" \
+ > "${OUT_DIR}/trm_step7_smoke.log" 2>&1
+
+echo "[smoke] summarizer"
+"${PY}" research/flossing/flossing_suite/summarize_flossing.py \
+ > "${OUT_DIR}/summarize_smoke.log" 2>&1
+
+echo "smoke OK: ${OUT_DIR}"
diff --git a/flossing_suite/status.sh b/flossing_suite/status.sh
new file mode 100755
index 0000000..39af2d6
--- /dev/null
+++ b/flossing_suite/status.sh
@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+ROOT="/home/yurenh2/rrm"
+cd "${ROOT}"
+
+echo "== GPU =="
+nvidia-smi --query-gpu=index,memory.used,memory.total,utilization.gpu --format=csv,noheader,nounits
+
+echo
+echo "== Active flossing processes =="
+ps -eo pid,ppid,stat,etime,cmd | rg 'engelken_python_flossing.py|step7_interfloss.py' || true
+
+echo
+echo "== Latest logs =="
+for dir in \
+ research/flossing/flossing_suite/results/toy_rnn \
+ research/flossing/flossing_suite/results/trm_faithful \
+ research/flossing/flossing_suite/results/trm_variants \
+ research/flossing/flossing_suite/results/smoke
+do
+ [[ -d "${dir}" ]] || continue
+ for f in "${dir}"/*.log; do
+ [[ -f "${f}" ]] || continue
+ echo
+ echo "-- ${f} --"
+ tail -n 8 "${f}"
+ done
+done
+
+echo
+echo "== Summary files =="
+ls -lh research/flossing/flossing_suite/results/summary 2>/dev/null || true
diff --git a/flossing_suite/summarize_flossing.py b/flossing_suite/summarize_flossing.py
new file mode 100644
index 0000000..e753b13
--- /dev/null
+++ b/flossing_suite/summarize_flossing.py
@@ -0,0 +1,311 @@
+from __future__ import annotations
+
+import csv
+import json
+from pathlib import Path
+from typing import Any
+
+import matplotlib.pyplot as plt
+
+
+ROOT = Path("/home/yurenh2/rrm")
+FLOSS = ROOT / "research/flossing"
+SUITE = FLOSS / "flossing_suite"
+OUT = SUITE / "results/summary"
+
+
+def load_json(path: Path) -> dict[str, Any] | None:
+ try:
+ return json.loads(path.read_text())
+ except Exception as exc:
+ print(f"[skip] {path}: {exc}")
+ return None
+
+
+def fnum(value: Any, default: float = float("nan")) -> float:
+ try:
+ if value is None:
+ return default
+ return float(value)
+ except Exception:
+ return default
+
+
+def run_name(path: Path) -> str:
+ return path.relative_to(FLOSS).with_suffix("").as_posix()
+
+
+def iter_json_paths() -> list[Path]:
+ patterns = [
+ "engelken_python/*.json",
+ "engelken_paper_faithful/*.json",
+ "step6_*.json",
+ "step7_*.json",
+ "flossing_suite/results/**/*.json",
+ ]
+ paths: list[Path] = []
+ for pattern in patterns:
+ paths.extend(FLOSS.glob(pattern))
+ return sorted(set(paths))
+
+
+def classify(path: Path, data: dict[str, Any]) -> str:
+ if "config" in data:
+ return "toy_rnn"
+ if "phase1_steps" in data:
+ return "step6_prefloss_hrm"
+ if "args" in data and "floss_episodes" in data:
+ args = data.get("args", {})
+ model = args.get("model", "unknown")
+ return f"step7_interfloss_{model}"
+ return "unknown"
+
+
+def selector_from_args(args: dict[str, Any]) -> str:
+ schedule = str(args.get("interfloss_at", ""))
+ steps = int(fnum(args.get("floss_steps"), 0))
+ mode = str(args.get("floss_mode", "none"))
+ kl = fnum(args.get("kl_beta"), 0.0)
+ every = int(fnum(args.get("interfloss_every"), 0))
+ if not schedule or steps <= 0:
+ return "baseline_no_floss"
+ label = f"{mode}@{schedule}_steps{steps}"
+ if every > 0:
+ label += f"_every{every}"
+ if kl > 0:
+ label += f"_kl{kl:g}"
+ return label
+
+
+def summarize_toy(path: Path, data: dict[str, Any]) -> tuple[dict[str, Any], list[dict[str, Any]]]:
+ cfg = data.get("config", {})
+ evals = data.get("evals", [])
+ first = evals[0] if evals else {}
+ last = evals[-1] if evals else {}
+ peak = max((fnum(e.get("eval_accuracy")) for e in evals), default=float("nan"))
+ pre_epochs = int(fnum(cfg.get("pre_epochs"), 0))
+ inter_epochs = int(fnum(cfg.get("inter_epochs"), 0))
+ max_inter = int(fnum(cfg.get("max_inter_episodes"), 0))
+ if pre_epochs <= 0 and max_inter <= 0:
+ selector = "baseline_no_floss"
+ elif pre_epochs > 0 and max_inter <= 0:
+ selector = "prefloss"
+ else:
+ selector = "pre_interfloss"
+
+ summary = {
+ "name": run_name(path),
+ "path": str(path),
+ "family": "toy_rnn",
+ "model": "vanilla_rnn",
+ "selector": selector,
+ "floss_mode": "engelken_l2",
+ "schedule": f"pre={pre_epochs},inter_period={cfg.get('inter_period')},max_inter={max_inter}",
+ "train_steps": cfg.get("train_epochs"),
+ "floss_steps": pre_epochs + inter_epochs * max_inter,
+ "k_lyap": cfg.get("n_lyap"),
+ "kl_beta": 0,
+ "initial_acc": fnum(first.get("eval_accuracy")),
+ "final_acc": fnum(last.get("eval_accuracy")),
+ "best_acc": peak,
+ "delta_final": fnum(last.get("eval_accuracy")) - fnum(first.get("eval_accuracy")),
+ "n_evals": len(evals),
+ "n_floss_episodes": (1 if pre_epochs > 0 else 0) + max_inter,
+ "status": "complete" if evals else "unknown",
+ }
+ rows = []
+ for e in evals:
+ rows.append(
+ {
+ "name": summary["name"],
+ "family": summary["family"],
+ "model": summary["model"],
+ "selector": summary["selector"],
+ "x": e.get("epoch"),
+ "acc": e.get("eval_accuracy"),
+ "loss": e.get("eval_loss"),
+ "kind": "eval",
+ }
+ )
+ return summary, rows
+
+
+def summarize_step7(path: Path, data: dict[str, Any]) -> tuple[dict[str, Any], list[dict[str, Any]]]:
+ args = data.get("args", {})
+ evals = data.get("evals", [])
+ first = evals[0] if evals else {}
+ final_acc = fnum(data.get("final_acc"), fnum(evals[-1].get("acc") if evals else None))
+ best = max((fnum(e.get("acc")) for e in evals), default=float("nan"))
+ model = str(args.get("model", "unknown"))
+ train_steps = int(fnum(args.get("train_steps"), 0))
+ task_batch = int(fnum(args.get("task_batch_size", args.get("batch_size")), 0))
+ floss_batch = int(fnum(args.get("floss_batch_size", args.get("batch_size")), 0))
+ every = int(fnum(args.get("interfloss_every"), 0))
+ start = int(fnum(args.get("interfloss_start"), 0))
+ stop = int(fnum(args.get("interfloss_stop"), -1))
+ schedule = str(args.get("interfloss_at", ""))
+ if every > 0:
+ schedule = f"{schedule}; every={every}, start={start}, stop={stop}"
+ summary = {
+ "name": run_name(path),
+ "path": str(path),
+ "family": "rrm_step7",
+ "model": model,
+ "selector": selector_from_args(args),
+ "floss_mode": args.get("floss_mode", "none"),
+ "schedule": schedule,
+ "train_steps": train_steps,
+ "task_batch_size": task_batch,
+ "floss_batch_size": floss_batch,
+ "effective_official_gbs768_steps": train_steps * task_batch / 768 if task_batch else "",
+ "floss_steps": args.get("floss_steps"),
+ "k_lyap": args.get("k_lyap"),
+ "kl_beta": args.get("kl_beta", 0),
+ "initial_acc": fnum(data.get("initial_acc"), fnum(first.get("acc"))),
+ "final_acc": final_acc,
+ "best_acc": best,
+ "delta_final": final_acc - fnum(data.get("initial_acc"), fnum(first.get("acc"))),
+ "n_evals": len(evals),
+ "n_floss_episodes": len(data.get("floss_episodes", [])),
+ "status": "complete" if "final_acc" in data else "running_or_incomplete",
+ }
+ rows = []
+ for e in evals:
+ rows.append(
+ {
+ "name": summary["name"],
+ "family": summary["family"],
+ "model": model,
+ "selector": summary["selector"],
+ "x": e.get("train_step"),
+ "acc": e.get("acc"),
+ "loss": "",
+ "kind": e.get("kind", "eval"),
+ }
+ )
+ return summary, rows
+
+
+def summarize_step6(path: Path, data: dict[str, Any]) -> tuple[dict[str, Any], list[dict[str, Any]]]:
+ args = data.get("args", {})
+ phase1 = data.get("phase1_evals", [])
+ phase2 = data.get("phase2_evals", [])
+ evals = []
+ evals.extend({"kind": "phase1", **e} for e in phase1)
+ evals.extend({"kind": "phase2", **e} for e in phase2)
+ final_acc = fnum(data.get("final_acc"), fnum(phase2[-1].get("acc") if phase2 else None))
+ best = max((fnum(e.get("acc")) for e in evals), default=float("nan"))
+ pre_steps = int(fnum(args.get("prefloss_steps"), 0))
+ selector = "baseline_no_prefloss" if pre_steps <= 0 else f"prefloss_{args.get('floss_mode')}"
+ summary = {
+ "name": run_name(path),
+ "path": str(path),
+ "family": "hrm_step6",
+ "model": "hrm",
+ "selector": selector,
+ "floss_mode": args.get("floss_mode", "none"),
+ "schedule": f"pre={pre_steps}",
+ "train_steps": args.get("train_steps"),
+ "floss_steps": args.get("prefloss_steps"),
+ "k_lyap": args.get("k_lyap"),
+ "kl_beta": 0,
+ "initial_acc": fnum(data.get("initial_acc")),
+ "final_acc": final_acc,
+ "best_acc": best,
+ "delta_final": final_acc - fnum(data.get("initial_acc")),
+ "n_evals": len(evals),
+ "n_floss_episodes": 1 if pre_steps > 0 else 0,
+ "status": "complete" if "final_acc" in data else "running_or_incomplete",
+ }
+ rows = []
+ for e in evals:
+ rows.append(
+ {
+ "name": summary["name"],
+ "family": summary["family"],
+ "model": "hrm",
+ "selector": summary["selector"],
+ "x": e.get("step"),
+ "acc": e.get("acc"),
+ "loss": "",
+ "kind": e.get("kind", "eval"),
+ }
+ )
+ return summary, rows
+
+
+def collect() -> tuple[list[dict[str, Any]], list[dict[str, Any]]]:
+ summaries: list[dict[str, Any]] = []
+ eval_rows: list[dict[str, Any]] = []
+ for path in iter_json_paths():
+ data = load_json(path)
+ if data is None:
+ continue
+ family = classify(path, data)
+ if family == "toy_rnn":
+ summary, rows = summarize_toy(path, data)
+ elif family.startswith("step7"):
+ summary, rows = summarize_step7(path, data)
+ elif family == "step6_prefloss_hrm":
+ summary, rows = summarize_step6(path, data)
+ else:
+ continue
+ summaries.append(summary)
+ eval_rows.extend(rows)
+ return summaries, eval_rows
+
+
+def write_csv(path: Path, rows: list[dict[str, Any]]) -> None:
+ if not rows:
+ path.write_text("")
+ return
+ keys = list(rows[0].keys())
+ for row in rows[1:]:
+ for key in row:
+ if key not in keys:
+ keys.append(key)
+ with path.open("w", newline="") as f:
+ writer = csv.DictWriter(f, fieldnames=keys)
+ writer.writeheader()
+ writer.writerows(rows)
+
+
+def plot_family(eval_rows: list[dict[str, Any]], family: str, out: Path, title: str) -> None:
+ rows = [r for r in eval_rows if r["family"] == family and r.get("x") not in ("", None)]
+ if not rows:
+ return
+ fig, ax = plt.subplots(figsize=(8.5, 4.6))
+ names = sorted({r["name"] for r in rows})
+ for name in names:
+ nr = [r for r in rows if r["name"] == name]
+ nr.sort(key=lambda r: fnum(r["x"]))
+ xs = [fnum(r["x"]) for r in nr]
+ ys = [fnum(r["acc"]) for r in nr]
+ label = name.split("/")[-1]
+ ax.plot(xs, ys, marker="o", linewidth=1.8, label=label)
+ ax.set_title(title)
+ ax.set_xlabel("epoch / train step")
+ ax.set_ylabel("eval exact accuracy")
+ ax.grid(alpha=0.22)
+ ax.legend(frameon=False, fontsize=7)
+ fig.tight_layout()
+ fig.savefig(out, dpi=180)
+ plt.close(fig)
+
+
+def main() -> None:
+ OUT.mkdir(parents=True, exist_ok=True)
+ summaries, eval_rows = collect()
+ summaries.sort(key=lambda r: (str(r["family"]), str(r["model"]), str(r["name"])))
+ write_csv(OUT / "flossing_runs_summary.csv", summaries)
+ write_csv(OUT / "flossing_eval_curves.csv", eval_rows)
+ plot_family(eval_rows, "toy_rnn", OUT / "toy_rnn_eval_curves.png", "Toy RNN Engelken-style flossing")
+ plot_family(eval_rows, "rrm_step7", OUT / "rrm_step7_eval_curves.png", "HRM/TRM interfloss analogues")
+ plot_family(eval_rows, "hrm_step6", OUT / "hrm_step6_eval_curves.png", "HRM prefloss experiments")
+ print(f"wrote {OUT / 'flossing_runs_summary.csv'}")
+ print(f"wrote {OUT / 'flossing_eval_curves.csv'}")
+ print(f"runs: {len(summaries)} eval points: {len(eval_rows)}")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/flossing_suite/watch_and_summarize.sh b/flossing_suite/watch_and_summarize.sh
new file mode 100755
index 0000000..a75c250
--- /dev/null
+++ b/flossing_suite/watch_and_summarize.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+ROOT="/home/yurenh2/rrm"
+PY="/home/yurenh2/miniconda3/envs/rrm/bin/python"
+cd "${ROOT}"
+
+if [[ "$#" -gt 0 ]]; then
+ pid_files=("$@")
+else
+ pid_files=(research/flossing/flossing_suite/results/trm_faithful/trm_seed123_*.pid)
+fi
+
+echo "watching ${#pid_files[@]} pid files"
+for pf in "${pid_files[@]}"; do
+ [[ -f "${pf}" ]] || continue
+ pid="$(cat "${pf}")"
+ echo "watch ${pf}: pid ${pid}"
+ while kill -0 "${pid}" 2>/dev/null; do
+ sleep 60
+ done
+ echo "done ${pf}: pid ${pid}"
+done
+
+"${PY}" research/flossing/flossing_suite/summarize_flossing.py
+bash research/flossing/flossing_suite/status.sh > research/flossing/flossing_suite/results/summary/final_status.txt
+echo "watch complete"