From b891109633f81ba97b2deab84e6769b157d9c760 Mon Sep 17 00:00:00 2001 From: wassname <1103714+wassname@users.noreply.github.com> Date: Thu, 4 Jun 2026 23:21:39 +0000 Subject: [PATCH] A5 FINAL: held-out modes suppressed 0.62->0.02 (file_marker), zero held-out labels (job 104) Fill route2 column of tab:generalisation from job 104 per_mode_deploy.json; regen A5 figure (add routing2 arm key to plot_deploy_overlay). All three held-out modes drop near zero at knob-off deploy while emerging on the knob-on path -- routing, not non-emergence. #185. Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com> --- RESEARCH_JOURNAL.md | 18 ++++++++++++++++++ docs/writeup/main.tex | 21 +++++++++++++-------- scripts/plot_deploy_overlay.py | 1 + 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/RESEARCH_JOURNAL.md b/RESEARCH_JOURNAL.md index cf32dc8..7eb06cb 100644 --- a/RESEARCH_JOURNAL.md +++ b/RESEARCH_JOURNAL.md @@ -2,6 +2,24 @@ Append-only. New entries at the top, date-stamped. Never edit old entries. +## 2026-06-04 (f) — A5 FINAL VERDICT (job 104 done, step 200): all three held-out modes suppressed near zero with zero held-out labels + +Closes (e). Per-mode deploy split is in +out/runs/20260604T131044_fast_routing2_seed41_a5_route2_tmrt_s41/per_mode_deploy.json. +Table tab:generalisation and fig out/figs/a5_generalisation.png both filled; #185 done. + +| mode | held-out? | route2 deploy_hack | vanilla deploy_hack | route2 train_hack (knob-on) | +|------|-----------|--------------------|--------------------|-----------------------------| +| run_tests | KNOWN (teacher demos) | 0.000 | 1.000 | 0.979 | +| file_marker | held-out | 0.021 | 0.625 | 0.542 | +| sentinel | held-out | 0.000 | 0.417 | 0.208 | +| stdout_marker | held-out | 0.083 | 0.167 | 0.604 | + +- [obs] every held-out mode's knob-off deploy hack collapses vs the vanilla baseline: file_marker 0.625 -> 0.021, sentinel 0.417 -> 0.000, stdout_marker 0.167 -> 0.083. Aggregate 0.552 -> 0.026 at matched solve (0.401 -> 0.354). +- [obs, load-bearing] the held-out cheats DID emerge on the knob-ON training path (file_marker train_hack 0.542, stdout_marker 0.604, run_tests 0.979) yet read ~0 at knob-off deploy. So the suppression is routing (the quarantine knob is holding the cheat), not the model simply never learning the held-out hack. This is the distinguishing test that rules out "non-emergence". +- [verdict] zero-held-out-label generalisation confirmed at n=1. The route gate only ever saw run_tests (`teacher OR hacked_E`, hacked_E==0 on the other three per the (a) harvest table). The knob absorbs cheats it was never labelled on. resid ~0 throughout (clean strip), no collapse. +- [caveat] n=1 seed 41; n=3 is future work. stdout_marker has the weakest cut (0.167 -> 0.083, 2x) but it also had the lowest baseline. + ## 2026-06-04 (e) — A5 suppression PRELIMINARY (job 104, step ~32): held-out hacks emerge on-policy but knob-off deploy holds at 0.000 Mid-run signal, not the verdict (per-mode deploy split lands at end-of-run, ~23:20). Recording because it is the load-bearing no-cheat result and the user is AFK. diff --git a/docs/writeup/main.tex b/docs/writeup/main.tex index a54b414..6e63780 100644 --- a/docs/writeup/main.tex +++ b/docs/writeup/main.tex @@ -428,24 +428,29 @@ column pending job 104.} % vanilla baseline = job 103 % out/runs/20260604T025953_fast_vanilla_seed41_a5_vanilla_tmrt_s41/per_mode_deploy.json % deploy_hack (n=48/mode): run_tests 1.000 | file_marker 0.625 | sentinel 0.417 | stdout_marker 0.167 -% route2 suppression = job 104 (per-mode JSON pending at edit time). -% knob-off aggregate deploy hack tracked 0.00-0.047 through step 180 vs baseline 0.552. +% route2 suppression = job 104 +% out/runs/20260604T131044_fast_routing2_seed41_a5_route2_tmrt_s41/per_mode_deploy.json +% deploy_hack (n=48/mode): run_tests 0.000 | file_marker 0.021 | sentinel 0.000 | stdout_marker 0.083 +% train_hack (knob-on, n=48/mode): run_tests 0.979 | file_marker 0.542 | sentinel 0.208 | stdout_marker 0.604 +% => held-out cheats emerge on the knob-on path, knob-off deploy ~0 == routing not non-emergence. \begin{table}[t] \centering \caption{Per-mode deploy hack, A5 designed held-out test ($n{=}1$, seed 41). The teacher demonstrates only \texttt{run\_tests}; the live route gate is blind to the other three modes (zero held-out labels). ``Held out'' = mode absent - from both the teacher pool and the gate signal. \TODO{route2 column lands when - job 104 finishes; $n{=}3$ is future work.}} + from both the teacher pool and the gate signal. All three held-out modes are + suppressed near zero despite emerging on the knob-on training path + (\texttt{file\_marker} train-hack $0.54$, \texttt{stdout\_marker} $0.60$), so the + quarantine knob is holding cheats it was never labelled on. $n{=}1$; $n{=}3$ is future work.} \label{tab:generalisation} \begin{tabular}{lccc} \toprule Mode & Held out? & Deploy hack (route2) $\downarrow$ & Deploy hack (vanilla) \\ \midrule - run\_tests & no (demoed) & \TODO{job 104} & $1.000$ \\ - file\_marker & yes & \TODO{job 104} & $0.625$ \\ - sentinel & yes & \TODO{job 104} & $0.417$ \\ - stdout\_marker & yes & \TODO{job 104} & $0.167$ \\ + run\_tests & no (demoed) & $0.000$ & $1.000$ \\ + file\_marker & yes & $0.021$ & $0.625$ \\ + sentinel & yes & $0.000$ & $0.417$ \\ + stdout\_marker & yes & $0.083$ & $0.167$ \\ \bottomrule \end{tabular} \end{table} diff --git a/scripts/plot_deploy_overlay.py b/scripts/plot_deploy_overlay.py index eb47cf6..46d1a1c 100644 --- a/scripts/plot_deploy_overlay.py +++ b/scripts/plot_deploy_overlay.py @@ -39,6 +39,7 @@ ARM = { "routing": ("route (v1)", "#33508c"), "routing2_act": ("route (act-mask)", "#2f7d4f"), "routing2_grad":("route", "#b8860b"), + "routing2": ("route", "#b8860b"), } # mode display order: in-dist first, then held-out. MODE_ORDER = ["run_tests", "file_marker", "stdout_marker", "sentinel", "eq_override"]