anhtld commited on
Commit
dfb4637
·
verified ·
1 Parent(s): 39bdadc

Auto-sync: 2026-06-30 14:47:01 (part 2)

Browse files
results/paper_analysis.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "best_clean_key": "residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmchallenger001",
3
- "generated_utc": "2026-06-30T15:06:34+00:00",
4
  "mechanism_gap": {
5
  "best_clean_vs_direct_same_ckpt": 0.0776811594202898,
6
  "best_clean_vs_h16": 0.06318840579710144,
@@ -2208,6 +2208,11 @@
2208
  "source": "results/h16_policy_ckpt_near_miss_policy_bc5_bestpt_retrieval_residual_k4_composemasked_dropnmnoop_grid035040045_safe_margin0p20_noopbonus0p03_nmwgchallenger0p01_summary.json",
2209
  "std_success": 0.011315490606343858
2210
  },
 
 
 
 
 
2211
  "residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_oraclek8": {
2212
  "candidate_oracle_rollouts": 8,
2213
  "candidate_oracle_type_counts": {
 
1
  {
2
  "best_clean_key": "residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmchallenger001",
3
+ "generated_utc": "2026-06-30T18:49:56+00:00",
4
  "mechanism_gap": {
5
  "best_clean_vs_direct_same_ckpt": 0.0776811594202898,
6
  "best_clean_vs_h16": 0.06318840579710144,
 
2208
  "source": "results/h16_policy_ckpt_near_miss_policy_bc5_bestpt_retrieval_residual_k4_composemasked_dropnmnoop_grid035040045_safe_margin0p20_noopbonus0p03_nmwgchallenger0p01_summary.json",
2209
  "std_success": 0.011315490606343858
2210
  },
2211
+ "residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmwgchallenger001_pickpull": {
2212
+ "label": "K4 compatible tangents, no-op bonus 0.03, near-miss/wrong-gripper challenger gate 0.01 on Pick/Pull only",
2213
+ "missing": true,
2214
+ "source": "results/h16_policy_ckpt_near_miss_policy_bc5_bestpt_retrieval_residual_k4_composemasked_dropnmnoop_grid035040045_safe_margin0p20_noopbonus0p03_nmwgchallenger0p01_pickpull_summary.json"
2215
+ },
2216
  "residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_oraclek8": {
2217
  "candidate_oracle_rollouts": 8,
2218
  "candidate_oracle_type_counts": {
results/paper_analysis.md CHANGED
@@ -1,6 +1,6 @@
1
  # Paper Analysis
2
 
3
- Generated: `2026-06-30T15:06:34+00:00`
4
 
5
  ## Main Seed Statistics
6
 
@@ -60,6 +60,7 @@ Generated: `2026-06-30T15:06:34+00:00`
60
  | residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmchallenger001_scales035040 | K4 compatible tangents, no-op bonus 0.03, near-miss challenger gate 0.01, scale-gated 0.35/0.40 | 3 | 36.00% +/- 1.31 | +/- 3.26 | 57.37% | 0.407 | +6.26 pp |
61
  | residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmchallenger003 | K4 compatible tangents, no-op bonus 0.03, near-miss challenger gate 0.03 | 3 | 35.94% +/- 1.28 | +/- 3.18 | 57.36% | 0.407 | +6.20 pp |
62
  | residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmwgchallenger001 | K4 compatible tangents, no-op bonus 0.03, near-miss/wrong-gripper challenger gate 0.01 | 3 | 35.94% +/- 1.13 | +/- 2.81 | 57.40% | 0.424 | +6.20 pp |
 
63
  | typed_proposal_lattice_types6_prepend_margin000 | Typed proposal lattice head, six families, policy-prepended margin 0.00 | 3 | 31.30% +/- 3.81 | +/- 9.48 | 54.03% | 0.480 | +1.57 pp |
64
  | typed_proposal_lattice_types6_prepend_margin005 | Typed proposal lattice head, six families, policy-prepended margin 0.05 | 3 | 32.17% +/- 3.05 | +/- 7.57 | 54.74% | 0.467 | +2.43 pp |
65
  | typed_proposal_lattice_types4safe_prepend_margin005 | Typed proposal lattice head, safe four families, policy-prepended margin 0.05 | 3 | 33.45% +/- 3.39 | +/- 8.43 | 55.47% | 0.456 | +3.71 pp |
 
1
  # Paper Analysis
2
 
3
+ Generated: `2026-06-30T18:49:56+00:00`
4
 
5
  ## Main Seed Statistics
6
 
 
60
  | residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmchallenger001_scales035040 | K4 compatible tangents, no-op bonus 0.03, near-miss challenger gate 0.01, scale-gated 0.35/0.40 | 3 | 36.00% +/- 1.31 | +/- 3.26 | 57.37% | 0.407 | +6.26 pp |
61
  | residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmchallenger003 | K4 compatible tangents, no-op bonus 0.03, near-miss challenger gate 0.03 | 3 | 35.94% +/- 1.28 | +/- 3.18 | 57.36% | 0.407 | +6.20 pp |
62
  | residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmwgchallenger001 | K4 compatible tangents, no-op bonus 0.03, near-miss/wrong-gripper challenger gate 0.01 | 3 | 35.94% +/- 1.13 | +/- 2.81 | 57.40% | 0.424 | +6.20 pp |
63
+ | residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmwgchallenger001_pickpull | K4 compatible tangents, no-op bonus 0.03, near-miss/wrong-gripper challenger gate 0.01 on Pick/Pull only | 0 | missing | missing | missing | missing | missing |
64
  | typed_proposal_lattice_types6_prepend_margin000 | Typed proposal lattice head, six families, policy-prepended margin 0.00 | 3 | 31.30% +/- 3.81 | +/- 9.48 | 54.03% | 0.480 | +1.57 pp |
65
  | typed_proposal_lattice_types6_prepend_margin005 | Typed proposal lattice head, six families, policy-prepended margin 0.05 | 3 | 32.17% +/- 3.05 | +/- 7.57 | 54.74% | 0.467 | +2.43 pp |
66
  | typed_proposal_lattice_types4safe_prepend_margin005 | Typed proposal lattice head, safe four families, policy-prepended margin 0.05 | 3 | 33.45% +/- 3.39 | +/- 8.43 | 55.47% | 0.456 | +3.71 pp |
results/paper_table_status.json CHANGED
@@ -1543,6 +1543,25 @@
1543
  "best_config": null,
1544
  "gain_vs_h16_policy": 0.06202898550724639
1545
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1546
  {
1547
  "key": "typed_proposal_lattice_types6_prepend_margin000",
1548
  "label": "Typed proposal lattice head, six families, policy-prepended margin 0.00",
 
1543
  "best_config": null,
1544
  "gain_vs_h16_policy": 0.06202898550724639
1545
  },
1546
+ {
1547
+ "key": "retrieval_residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmwgchallenger001_pickpull",
1548
+ "label": "K4 compatible residual retrieval, near-miss/wrong-gripper challenger gate 0.01 on Pick/Pull only",
1549
+ "path": "h16_policy_ckpt_near_miss_policy_bc5_bestpt_retrieval_residual_k4_composemasked_dropnmnoop_grid035040045_safe_margin0p20_noopbonus0p03_nmwgchallenger0p01_pickpull_summary.json",
1550
+ "clean_deployment": "yes",
1551
+ "same_state_proposals": "no",
1552
+ "expert_proposal": "no",
1553
+ "story_role": "task-conditional challenger gate using branch trace evidence that wrong-gripper tangents help Pick/Pull but harm other tasks",
1554
+ "fallback_success": null,
1555
+ "pending_job": "14974294/14974296",
1556
+ "path_exists": false,
1557
+ "status": "pending",
1558
+ "success": null,
1559
+ "std_success": null,
1560
+ "completed_seeds": null,
1561
+ "num_completed": null,
1562
+ "best_config": null,
1563
+ "gain_vs_h16_policy": null
1564
+ },
1565
  {
1566
  "key": "typed_proposal_lattice_types6_prepend_margin000",
1567
  "label": "Typed proposal lattice head, six families, policy-prepended margin 0.00",
results/paper_table_status.md CHANGED
@@ -84,6 +84,7 @@ Baseline h=16 policy: 29.74%
84
  | retrieval_residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmchallenger001_scales035040 | K4 compatible residual retrieval, near-miss challenger gate 0.01, scale-gated 0.35/0.40 | complete | 36.00% | +6.26 pp | yes | no | no | trace-motivated near-miss challenger with tangent-length reliability gating over the two shortest scales |
85
  | retrieval_residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmchallenger003 | K4 compatible residual retrieval, near-miss challenger gate 0.03 | complete | 35.94% | +6.20 pp | yes | no | no | upper-margin sensitivity for trace-motivated singleton near-miss challenger calibration |
86
  | retrieval_residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmwgchallenger001 | K4 compatible residual retrieval, near-miss/wrong-gripper challenger gate 0.01 | complete | 35.94% | +6.20 pp | yes | no | no | trace-motivated challenger calibration test for whether wrong-gripper residuals carry conditional selector headroom |
 
87
  | typed_proposal_lattice_types6_prepend_margin000 | Typed proposal lattice head, six families, policy-prepended margin 0.00 | complete | 31.30% | +1.57 pp | yes | no | no | model-generated counterfactual proposal support test; field scores typed proposals rather than retrieved train-state residuals |
88
  | typed_proposal_lattice_types6_prepend_margin005 | Typed proposal lattice head, six families, policy-prepended margin 0.05 | complete | 32.17% | +2.43 pp | yes | no | no | model-generated counterfactual proposal support test with a conservative policy-abstention margin |
89
  | typed_proposal_lattice_types4safe_prepend_margin005 | Typed proposal lattice head, safe four families, policy-prepended margin 0.05 | complete | 33.45% | +3.71 pp | yes | no | no | anti-goal proposal-family mask test for the model-generated typed lattice |
 
84
  | retrieval_residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmchallenger001_scales035040 | K4 compatible residual retrieval, near-miss challenger gate 0.01, scale-gated 0.35/0.40 | complete | 36.00% | +6.26 pp | yes | no | no | trace-motivated near-miss challenger with tangent-length reliability gating over the two shortest scales |
85
  | retrieval_residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmchallenger003 | K4 compatible residual retrieval, near-miss challenger gate 0.03 | complete | 35.94% | +6.20 pp | yes | no | no | upper-margin sensitivity for trace-motivated singleton near-miss challenger calibration |
86
  | retrieval_residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmwgchallenger001 | K4 compatible residual retrieval, near-miss/wrong-gripper challenger gate 0.01 | complete | 35.94% | +6.20 pp | yes | no | no | trace-motivated challenger calibration test for whether wrong-gripper residuals carry conditional selector headroom |
87
+ | retrieval_residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmwgchallenger001_pickpull | K4 compatible residual retrieval, near-miss/wrong-gripper challenger gate 0.01 on Pick/Pull only | pending 14974294/14974296 | pending | pending | yes | no | no | task-conditional challenger gate using branch trace evidence that wrong-gripper tangents help Pick/Pull but harm other tasks |
88
  | typed_proposal_lattice_types6_prepend_margin000 | Typed proposal lattice head, six families, policy-prepended margin 0.00 | complete | 31.30% | +1.57 pp | yes | no | no | model-generated counterfactual proposal support test; field scores typed proposals rather than retrieved train-state residuals |
89
  | typed_proposal_lattice_types6_prepend_margin005 | Typed proposal lattice head, six families, policy-prepended margin 0.05 | complete | 32.17% | +2.43 pp | yes | no | no | model-generated counterfactual proposal support test with a conservative policy-abstention margin |
90
  | typed_proposal_lattice_types4safe_prepend_margin005 | Typed proposal lattice head, safe four families, policy-prepended margin 0.05 | complete | 33.45% | +3.71 pp | yes | no | no | anti-goal proposal-family mask test for the model-generated typed lattice |
scripts/build_paper_analysis.py CHANGED
@@ -457,6 +457,14 @@ METHODS = [
457
  "k4_composemasked_dropnmnoop_grid035040045_safe_margin0p20_noopbonus0p03_nmwgchallenger0p01_summary.json"
458
  ),
459
  ),
 
 
 
 
 
 
 
 
460
  MethodSpec(
461
  key="typed_proposal_lattice_types6_prepend_margin000",
462
  label="Typed proposal lattice head, six families, policy-prepended margin 0.00",
 
457
  "k4_composemasked_dropnmnoop_grid035040045_safe_margin0p20_noopbonus0p03_nmwgchallenger0p01_summary.json"
458
  ),
459
  ),
460
+ MethodSpec(
461
+ key="residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmwgchallenger001_pickpull",
462
+ label="K4 compatible tangents, no-op bonus 0.03, near-miss/wrong-gripper challenger gate 0.01 on Pick/Pull only",
463
+ summary_path=(
464
+ "h16_policy_ckpt_near_miss_policy_bc5_bestpt_retrieval_residual_"
465
+ "k4_composemasked_dropnmnoop_grid035040045_safe_margin0p20_noopbonus0p03_nmwgchallenger0p01_pickpull_summary.json"
466
+ ),
467
+ ),
468
  MethodSpec(
469
  key="typed_proposal_lattice_types6_prepend_margin000",
470
  label="Typed proposal lattice head, six families, policy-prepended margin 0.00",
scripts/build_paper_table_status.py CHANGED
@@ -825,6 +825,16 @@ SPECS = [
825
  story_role="trace-motivated challenger calibration test for whether wrong-gripper residuals carry conditional selector headroom",
826
  pending_job="14954530/14954531",
827
  ),
 
 
 
 
 
 
 
 
 
 
828
  ResultSpec(
829
  key="typed_proposal_lattice_types6_prepend_margin000",
830
  label="Typed proposal lattice head, six families, policy-prepended margin 0.00",
 
825
  story_role="trace-motivated challenger calibration test for whether wrong-gripper residuals carry conditional selector headroom",
826
  pending_job="14954530/14954531",
827
  ),
828
+ ResultSpec(
829
+ key="retrieval_residual_k4_composemasked_dropnmnoop_grid035040045_noopbonus003_nmwgchallenger001_pickpull",
830
+ label="K4 compatible residual retrieval, near-miss/wrong-gripper challenger gate 0.01 on Pick/Pull only",
831
+ path="h16_policy_ckpt_near_miss_policy_bc5_bestpt_retrieval_residual_k4_composemasked_dropnmnoop_grid035040045_safe_margin0p20_noopbonus0p03_nmwgchallenger0p01_pickpull_summary.json",
832
+ clean_deployment="yes",
833
+ same_state_proposals="no",
834
+ expert_proposal="no",
835
+ story_role="task-conditional challenger gate using branch trace evidence that wrong-gripper tangents help Pick/Pull but harm other tasks",
836
+ pending_job="14974294/14974296",
837
+ ),
838
  ResultSpec(
839
  key="typed_proposal_lattice_types6_prepend_margin000",
840
  label="Typed proposal lattice head, six families, policy-prepended margin 0.00",
scripts/eval_maniskill_policy_rollout.py CHANGED
@@ -261,6 +261,12 @@ def main(argv: list[str] | None = None) -> int:
261
  help="Required field-potential margin for a challenger candidate to override the "
262
  "primary retrieval-residual selection.",
263
  )
 
 
 
 
 
 
264
  parser.add_argument(
265
  "--lattice-exclude-types",
266
  default="",
@@ -304,6 +310,11 @@ def main(argv: list[str] | None = None) -> int:
304
  for item in args.retrieval_residual_challenger_types.split(",")
305
  if item.strip()
306
  )
 
 
 
 
 
307
  proposal_lattice_types = tuple(
308
  item.strip()
309
  for item in args.proposal_lattice_types.split(",")
@@ -390,6 +401,7 @@ def main(argv: list[str] | None = None) -> int:
390
  retrieval_residual_challenger_types=retrieval_residual_challenger_types,
391
  retrieval_residual_challenger_scales=retrieval_residual_challenger_scales,
392
  retrieval_residual_challenger_margin=args.retrieval_residual_challenger_margin,
 
393
  lattice_exclude_types=lattice_exclude_types,
394
  candidate_type_bonuses=candidate_type_bonuses,
395
  candidate_type_bonus_components=args.candidate_type_bonus_components,
 
261
  help="Required field-potential margin for a challenger candidate to override the "
262
  "primary retrieval-residual selection.",
263
  )
264
+ parser.add_argument(
265
+ "--retrieval-residual-challenger-tasks",
266
+ default="",
267
+ help="Optional comma-separated task IDs where challenger candidates may override "
268
+ "the primary retrieval-residual selection. Empty enables challengers for all tasks.",
269
+ )
270
  parser.add_argument(
271
  "--lattice-exclude-types",
272
  default="",
 
310
  for item in args.retrieval_residual_challenger_types.split(",")
311
  if item.strip()
312
  )
313
+ retrieval_residual_challenger_tasks = tuple(
314
+ item.strip()
315
+ for item in args.retrieval_residual_challenger_tasks.split(",")
316
+ if item.strip()
317
+ )
318
  proposal_lattice_types = tuple(
319
  item.strip()
320
  for item in args.proposal_lattice_types.split(",")
 
401
  retrieval_residual_challenger_types=retrieval_residual_challenger_types,
402
  retrieval_residual_challenger_scales=retrieval_residual_challenger_scales,
403
  retrieval_residual_challenger_margin=args.retrieval_residual_challenger_margin,
404
+ retrieval_residual_challenger_tasks=retrieval_residual_challenger_tasks,
405
  lattice_exclude_types=lattice_exclude_types,
406
  candidate_type_bonuses=candidate_type_bonuses,
407
  candidate_type_bonus_components=args.candidate_type_bonus_components,
scripts/slurm/eval_maniskill_policy_rollout.sbatch CHANGED
@@ -83,6 +83,10 @@ if [[ -n "${RETRIEVAL_RESIDUAL_CHALLENGER_SCALES_COLON:-}" ]]; then
83
  RETRIEVAL_RESIDUAL_CHALLENGER_SCALES="${RETRIEVAL_RESIDUAL_CHALLENGER_SCALES_COLON//:/,}"
84
  fi
85
  RETRIEVAL_RESIDUAL_CHALLENGER_MARGIN="${RETRIEVAL_RESIDUAL_CHALLENGER_MARGIN:-0.0}"
 
 
 
 
86
  LATTICE_EXCLUDE_TYPES="${LATTICE_EXCLUDE_TYPES:-}"
87
  if [[ -n "${LATTICE_EXCLUDE_TYPES_COLON:-}" ]]; then
88
  LATTICE_EXCLUDE_TYPES="${LATTICE_EXCLUDE_TYPES_COLON//:/,}"
@@ -165,6 +169,7 @@ apptainer exec --nv \
165
  --retrieval-residual-challenger-types "$RETRIEVAL_RESIDUAL_CHALLENGER_TYPES" \
166
  --retrieval-residual-challenger-scales "$RETRIEVAL_RESIDUAL_CHALLENGER_SCALES" \
167
  --retrieval-residual-challenger-margin "$RETRIEVAL_RESIDUAL_CHALLENGER_MARGIN" \
 
168
  --lattice-exclude-types "$LATTICE_EXCLUDE_TYPES" \
169
  --candidate-type-bonuses "$CANDIDATE_TYPE_BONUSES" \
170
  --candidate-oracle-rollouts "$CANDIDATE_ORACLE_ROLLOUTS" \
 
83
  RETRIEVAL_RESIDUAL_CHALLENGER_SCALES="${RETRIEVAL_RESIDUAL_CHALLENGER_SCALES_COLON//:/,}"
84
  fi
85
  RETRIEVAL_RESIDUAL_CHALLENGER_MARGIN="${RETRIEVAL_RESIDUAL_CHALLENGER_MARGIN:-0.0}"
86
+ RETRIEVAL_RESIDUAL_CHALLENGER_TASKS="${RETRIEVAL_RESIDUAL_CHALLENGER_TASKS:-}"
87
+ if [[ -n "${RETRIEVAL_RESIDUAL_CHALLENGER_TASKS_COLON:-}" ]]; then
88
+ RETRIEVAL_RESIDUAL_CHALLENGER_TASKS="${RETRIEVAL_RESIDUAL_CHALLENGER_TASKS_COLON//:/,}"
89
+ fi
90
  LATTICE_EXCLUDE_TYPES="${LATTICE_EXCLUDE_TYPES:-}"
91
  if [[ -n "${LATTICE_EXCLUDE_TYPES_COLON:-}" ]]; then
92
  LATTICE_EXCLUDE_TYPES="${LATTICE_EXCLUDE_TYPES_COLON//:/,}"
 
169
  --retrieval-residual-challenger-types "$RETRIEVAL_RESIDUAL_CHALLENGER_TYPES" \
170
  --retrieval-residual-challenger-scales "$RETRIEVAL_RESIDUAL_CHALLENGER_SCALES" \
171
  --retrieval-residual-challenger-margin "$RETRIEVAL_RESIDUAL_CHALLENGER_MARGIN" \
172
+ --retrieval-residual-challenger-tasks "$RETRIEVAL_RESIDUAL_CHALLENGER_TASKS" \
173
  --lattice-exclude-types "$LATTICE_EXCLUDE_TYPES" \
174
  --candidate-type-bonuses "$CANDIDATE_TYPE_BONUSES" \
175
  --candidate-oracle-rollouts "$CANDIDATE_ORACLE_ROLLOUTS" \
scripts/slurm/summarize_h16_policy_ckpt.sbatch CHANGED
@@ -112,6 +112,9 @@ for result_path in sorted(base_dir.glob(f"seed_*/{out_name}")):
112
  "retrieval_residual_challenger_margin": data.get(
113
  "retrieval_residual_challenger_margin", 0.0
114
  ),
 
 
 
115
  "lattice_exclude_types": data.get("lattice_exclude_types", []),
116
  "candidate_type_bonuses": data.get("candidate_type_bonuses", {}),
117
  "candidate_type_bonus_components": data.get(
@@ -392,6 +395,12 @@ lines.extend(
392
  for row in rows:
393
  scales = row.get("retrieval_residual_scales") or []
394
  scale_grid = ",".join(f"{float(scale):.2f}" for scale in scales) if scales else "none"
 
 
 
 
 
 
395
  lines.append(
396
  "| {seed} | {mode} | {k} | {policy_cand} | {retrieval} | {metric} | {anchor} | {direction} | {reduce}{challenger} | {min_success:.2f} | {type_success_bonus:.3f} | {consensus_penalty:.3f} | {min_source_progress:.2f} | {source_progress_bonus:.3f} | {source_score_bonus:.3f} | {scale:.2f} | {scale_grid} | {margin:.3f} | {sigma:.2f} | {steps} | {trust:.2f} | "
397
  "{success:.2%} | {progress:.2%} | {oracle:.2%} | {candidate_oracle} | {oracle_gain} | {mse:.3f} |".format(
@@ -418,6 +427,7 @@ for row in rows:
418
  if row.get("retrieval_residual_challenger_scales")
419
  else ""
420
  )
 
421
  + f"@{row.get('retrieval_residual_challenger_margin') or 0.0:.2f}"
422
  if row.get("retrieval_residual_challenger_types")
423
  else ""
 
112
  "retrieval_residual_challenger_margin": data.get(
113
  "retrieval_residual_challenger_margin", 0.0
114
  ),
115
+ "retrieval_residual_challenger_tasks": data.get(
116
+ "retrieval_residual_challenger_tasks", []
117
+ ),
118
  "lattice_exclude_types": data.get("lattice_exclude_types", []),
119
  "candidate_type_bonuses": data.get("candidate_type_bonuses", {}),
120
  "candidate_type_bonus_components": data.get(
 
395
  for row in rows:
396
  scales = row.get("retrieval_residual_scales") or []
397
  scale_grid = ",".join(f"{float(scale):.2f}" for scale in scales) if scales else "none"
398
+ challenger_tasks = row.get("retrieval_residual_challenger_tasks") or []
399
+ challenger_task_suffix = (
400
+ " on " + ",".join(challenger_tasks)
401
+ if challenger_tasks
402
+ else ""
403
+ )
404
  lines.append(
405
  "| {seed} | {mode} | {k} | {policy_cand} | {retrieval} | {metric} | {anchor} | {direction} | {reduce}{challenger} | {min_success:.2f} | {type_success_bonus:.3f} | {consensus_penalty:.3f} | {min_source_progress:.2f} | {source_progress_bonus:.3f} | {source_score_bonus:.3f} | {scale:.2f} | {scale_grid} | {margin:.3f} | {sigma:.2f} | {steps} | {trust:.2f} | "
406
  "{success:.2%} | {progress:.2%} | {oracle:.2%} | {candidate_oracle} | {oracle_gain} | {mse:.3f} |".format(
 
427
  if row.get("retrieval_residual_challenger_scales")
428
  else ""
429
  )
430
+ + challenger_task_suffix
431
  + f"@{row.get('retrieval_residual_challenger_margin') or 0.0:.2f}"
432
  if row.get("retrieval_residual_challenger_types")
433
  else ""