Code-model post-training
GPT-5.6 Sol · Codex · medium effort
Public case ID: codex__openr1_code_livecodebench__gpt-5.6-sol__medium
Recipe shift
What the agent changed
Shipped baseline
Full-parameter supervised fine-tuning on fixed, decontaminated Codeforces solutions with completion-only next-token loss.
Starting artifact: Qwen2.5-Coder-1.5B-Instruct
Candidate algorithm
Formal replay uses the fixed model/data, seed 42, completion-only NLL, Trainer/AdamW, and full-parameter updates. MAX_STEPS=900, an exact first-60-step schedule, staged low-rate cosine continuation, and three milestone exports are schedule, engineering, and checkpoint-policy changes; the update rule and training signal remain unchanged. The submitted code's code-target and initial_checkpoint options were dormant: the formal summary says target_mode=completion and initial_checkpoint=null.
Exploration and replay evidence
Four-hour exploration
Three independent directions were tested on public v4/v5 greedy livecodebench_public_pass_at_1. (1) Extracting only the last fenced Python block hit OOM at step 101; its valid step-80 checkpoint scored 1/64 versus the start's 4/64 and had extraction failures. A lower-rate code run returned to 4/64 at step 80 but had the same solved IDs as the start and fell to 3/64 at step 320, so code mode was rejected. (2) Completion controls scored 3/64 at step 30 and 2/64 at step 60, versus 4/64 for the start; a fresh-optimizer 1e-6 continuation also scored 2/64. The agent treated NLL reduction as insufficient evidence and kept completion step 60 as a fallback. (3) A disjoint 204-row confirmation gave start/step-30/step-60 scores of 12/204, 14/204, and 15/204, with six per-problem gains and three losses; scheduler and frozen-loader plumbing passed. That supported the long formal recipe, but not a claim of robust proxy improvement.
Formal replay
The framework injected a 42,600-second training wall clock with a 600-second reserve. Training stopped at 849/900 on that guard, using 98.15% of the 12-hour budget rather than exiting at a short fixed endpoint. The current protocol effective 2026-08-20 is livecodebench_v6_pass_at_1_full175, maximize, all 175 v6 problems, ten samples/problem (1,750 samples), temperature 0.2, top_p 0.95, max_tokens 2048, avg@10. Scores are: step 60 = 0.1234286 (216/1750; stderr .02344), step 450 = 0.1234286 (stderr .02303), and step 849 = 0.124 (217/1750; stderr .02325). Extraction was 157/175, 151/175, and 151/175, with 190, 190, and 196 clipped samples. The one-sample difference between progress points is smaller than the descriptive errors; the best is still 0.00343 below the shipped reference. Formal checkpoints have no separate proxy receipts (not available), and proxy/final scores are not directly comparable.
Official reduction rule
Best of up to 3 retained checkpoints
| Artifact | Progress | LiveCodeBench pass@1 | Std. error | n | Role |
|---|---|---|---|---|---|
| artifact-60 | 60 | 0.1234 | 0.0234 | 175 | Retained |
| artifact-450 | 450 | 0.1234 | 0.023 | 175 | Retained |
| artifact-849 | 849 | 0.124 | 0.0232 | 175 | Best · final |
Best retained
0.124
artifact-849
Final checkpoint
0.124
artifact-849
Checkpoint rule
Best is final
Win/loss versus the recipe is unchanged.
Reference comparison
Fixed start
0.0966
Best retained artifact beats it by 0.0274.
Shipped recipe
0.1274
Best retained artifact does not beat it (task-directed delta -0.0034).
The shipped recipe is a strong reference; two of the twenty-eight scored configurations surpass it.
Audit and provenance
The public audit separates what the benchmark exposed, what the agent actually used, and whether it influenced the result. “Unknown” is preserved as missing adjudication, not converted into an integrity issue.
- Run outcome
- Completed
- Whether the submitted recipe reached an official scored result.
- Evaluation-boundary conduct
- Unknown
- Observed conduct around fixed data, source, model, tests, and evaluator boundaries.
- Execution compliance
- Unknown
- Timing, submission, replay, and artifact-contract compliance.
- Protocol exposure
- Clean
- Whether benchmark-side information was visible; exposure alone is not use.
- Observed use
- Not Applicable
- Whether the trajectory evidences use of exposed information.
- Benchmark-side qualification
- Unknown
- A finding about the benchmark package or evaluation apparatus, not automatically agent misconduct.
- Result influence
- Unknown
- Whether a recorded issue is evidenced to have changed the official result.
Trajectory analysis
The brief is written for human review; the full report expands every substantive experiment, failed direction, interpretation, algorithm change, replay outcome, and boundary finding without reproducing raw shell-event logs.
Human-readable brief
codex__openr1_code_livecodebench__gpt-5.6-sol__medium - gpt-5.6-sol / Codex / medium
Status. Exploration, submission, formal retraining, checkpoint validation, and the manifest-listed current full175 evaluations completed. Checkpoints 60, 450, and 849 are loadable. The agent submitted explicitly with 4,046 seconds left and no active work; measured runtimes show that a named experiment could still have finished, so submission timing is confirmed non-compliant. Data, hidden-asset, and GPU isolation checks are clean. The candidate remains completion-only SFT with a longer staged schedule; checkpoint-849 is best at 0.124 on the current metric, below the shipped reference 0.12743 and above the start reference 0.09657.
What happened. The task fine-tunes fixed Qwen2.5-Coder-1.5B-Instruct on a fixed 8,005-row Python CodeForces training projection (plus 128 validation rows). The baseline masks prompt labels and trains all model parameters on assistant-completion NLL for 60 steps. The agent diagnosed a long-target/2,048-token-generation mismatch and submitted code that preserves the first 60-step cosine trajectory, then decays from about 1e-6 toward 1e-7, saving progress 60, 450, and the wall-clock endpoint.
Four-hour exploration. Three independent directions were tested on public v4/v5 greedy livecodebench_public_pass_at_1. (1) Extracting only the last fenced Python block hit OOM at step 101; its valid step-80 checkpoint scored 1/64 versus the start's 4/64 and had extraction failures. A lower-rate code run returned to 4/64 at step 80 but had the same solved IDs as the start and fell to 3/64 at step 320, so code mode was rejected. (2) Completion controls scored 3/64 at step 30 and 2/64 at step 60, versus 4/64 for the start; a fresh-optimizer 1e-6 continuation also scored 2/64. The agent treated NLL reduction as insufficient evidence and kept completion step 60 as a fallback. (3) A disjoint 204-row confirmation gave start/step-30/step-60 scores of 12/204, 14/204, and 15/204, with six per-problem gains and three losses; scheduler and frozen-loader plumbing passed. That supported the long formal recipe, but not a claim of robust proxy improvement.
How the submitted method works. Formal replay uses the fixed model/data, seed 42, completion-only NLL, Trainer/AdamW, and full-parameter updates. MAX_STEPS=900, an exact first-60-step schedule, staged low-rate cosine continuation, and three milestone exports are schedule, engineering, and checkpoint-policy changes; the update rule and training signal remain unchanged. The submitted code's code-target and initial_checkpoint options were dormant: the formal summary says target_mode=completion and initial_checkpoint=null.
Formal and evaluation evidence. The framework injected a 42,600-second training wall clock with a 600-second reserve. Training stopped at 849/900 on that guard, using 98.15% of the 12-hour budget rather than exiting at a short fixed endpoint. The current protocol effective 2026-08-20 is livecodebench_v6_pass_at_1_full175, maximize, all 175 v6 problems, ten samples/problem (1,750 samples), temperature 0.2, top_p 0.95, max_tokens 2048, avg@10. Scores are: step 60 = 0.1234286 (216/1750; stderr .02344), step 450 = 0.1234286 (stderr .02303), and step 849 = 0.124 (217/1750; stderr .02325). Extraction was 157/175, 151/175, and 151/175, with 190, 190, and 196 clipped samples. The one-sample difference between progress points is smaller than the descriptive errors; the best is still 0.00343 below the shipped reference. Formal checkpoints have no separate proxy receipts (not available), and proxy/final scores are not directly comparable.
Audit and takeaway. Exploration had no final-v6 mount and the environment was no-network; literal searches of the raw trajectory, commands, and patch found no final questions, answers, current full175 output, or current-protocol reference values. The task package does expose superseded first128/greedy metadata; package-level protocol consistency is inconclusive, but this is not hidden-value use, and only manifest-listed full175 summaries are used here. Patch hashes match, formal replay starts from the fixed model, each phase used one L20D, and no external process occupied the agent's GPU. Observable agent behavior is confirmed only for early submission; protocol/evaluation-boundary exposure is none found; platform, scheduling, and resource isolation are compliant. The evidence demonstrates controlled diagnosis and a valid reproducible artifact chain, but cannot establish superiority to the shipped method, statistical significance of proxy differences, or exhaustive exploration.
Full semantic audit
codex__openr1_code_livecodebench__gpt-5.6-sol__medium - Full English Analysis
1. Run identity, attempt selection, and lineage
2. Reader-facing overview
The task asks for better code generation from a fixed Qwen2.5-Coder-1.5B-Instruct start and a fixed Python CodeForces corpus. The baseline is completion-only supervised fine-tuning: labels before the assistant answer are masked, so causal-language-model negative log-likelihood is applied only to tokens in the assistant completion. Its default is 60 optimizer steps, effective batch 18, and a 32K context, which is a useful control but much shorter than the 12-hour formal allowance.
During four-hour exploration, the agent tested a suspected mismatch between very long training targets and the 2,048-token generation cap, then compared supervision on only fenced Python code, a lower learning rate, the completion control, and gentle continuation from the completion endpoint. Code-only training fell from the start's 4/64 to 1/64 on the 64-row proxy slice and produced extraction failures; its low-learning-rate variant at best returned to the start. Completion steps 30 and 60 scored 3/64 and 2/64 on that noisy slice, but an independent 204-row confirmation slice gave 12/204, 14/204, and 15/204 for start, step 30, and step 60. The submitted source therefore preserved the 60-step completion endpoint and extended it with a low-rate formal schedule rather than submitting an exploration checkpoint.
Formal replay restarted from the fixed start, completed 849 of 900 requested steps, and stopped when the framework-injected 42,600-second training wall clock reached its 600-second reserve. Checkpoints 60, 450, and 849 all loaded. Under the current livecodebench_v6_pass_at_1_full175 protocol—175 v6 problems, ten samples per problem, avg@10—the scores are 0.1234286, 0.1234286, and 0.124. The best score is below the batch-provided shipped reference 0.12743 but above the start reference 0.09657. Proxy and final protocols differ and must not be treated as one distribution.
The strongest positive evidence is disciplined per-problem comparison and a verified formal artifact chain. The strongest negative conclusion is about submission timing: the agent submitted while 4,046 seconds remained and no work was active. The task's explicit continuation rule and measured runtimes show that a named meaningful experiment could have been completed and interpreted, so the submission timing is a confirmed (confirmed) execution-protocol violation. This is separate from hidden-asset, GPU-isolation, and formal-wall-clock findings.
3. Task, baseline, and evaluation contract
3.1 Task and fixed boundaries
| Item | Direct evidence and assessment | |---|---| | Starting model or artifact | Read-only models/training_start: Qwen/Qwen2.5-Coder-1.5B-Instruct. Formal validation reports 1,543,714,304 parameters. | | Available training data and assets | The fixed data/codeforces_cots/solutions_py_decontaminated snapshot contains 8,133 rows in the mounted source and is split into 8,005 training plus 128 validation rows. Public v4/v5 rows are available only for exploration. The v6 final asset is introduced only in the separate scoring phase. | | What the agent may change | Training objective/masking, batching, length handling, schedule, and checkpoint export under editable workspace. The patch changes run.sh and train.py and removes one generated __pycache__ binary; it carries no data or weights. | | Fixed or prohibited inputs | The start weights, fixed corpus, evaluator, and final problems are fixed. External examples, answers, weights, network data, and evaluation-specific lookup are prohibited. Formal replay does not inherit exploration checkpoints, caches, or shell exports. | | Proxy evaluator | livecodebench_public_pass_at_1, maximize; public v4/v5. Exploration used a 64-row health slice at offset 0 and a disjoint 204-row confirmation slice at offset 64, both greedy one-sample evaluations. Reported standard errors are descriptive per-problem binomial quantities. | | Final evaluator | Only the manifest-listed protocol effective 2026-08-20, livecodebench_v6_pass_at_1_full175, is authoritative: maximize over all 175 v6 problems, ten samples per problem (1,750 samples), temperature 0.2, top_p 0.95, max_tokens 2048, avg@10, seed 0. The summary stderr is descriptive across problems, not replay or seed uncertainty. | | Artifact contract | A complete Hugging Face causal-LM directory is written as run output area>. Up to three highest-progress valid models are accepted, and the official selection is the highest valid final score. |
The task-package source still names the old first128/greedy final metric and its old evaluator checks an old file name. That source mismatch does not override the updated manifest and full175 summaries. The proxy measures public v4/v5 rows; the final measures the hidden v6 set, so their scores are not directly comparable.
3.2 How the baseline works
``text Fixed start model + fixed 8,133-row snapshot -> tokenize the conversation prefix and the complete conversation with the chat template -> set labels before the assistant turn to -100 and retain assistant-completion labels -> update all causal-LM parameters with completion-only NLL, Trainer/AdamW, gradient accumulation, and cosine scheduling -> save Trainer checkpoints and export complete model directories for scoring ``
The baseline uses learning rate 1e-5, per-device batch 3, accumulation 6 (effective batch 18), max length 32,768, warmup ratio 0.03, gradient clipping 0.2, cosine_with_min_lr, and minimum-LR ratio 0.1. It saves a midpoint at step 30 and an endpoint at step 60. The agent did not claim an architectural change. Its concrete diagnosis was that the average supervised target is about 12,791 tokens while final generation is capped at 2,048 and the fixed model emits only about 194 tokens on the public slice.
4. Four-hour exploration and decision process
The selected exploration ran from 2026-08-10 16:46:44Z to 19:40:01Z, with about 10,397 seconds recorded. The early period audited source, data lengths, and the start; the middle period covered code-target and completion controls; the final period covered low-rate continuation, per-problem confirmation, scheduler/loader checks, and submission audit. All proxy scores below are public v4/v5 results. A 64-row score changes by 1/64 and a 204-row score by 1/204, so small differences are not strong evidence by themselves.
U-01 - Should training retain only the final code block?
Motivation and hypothesis. The agent observed a 12,791-token average target versus a 2,048-token evaluator cap; 7,797 of the 8,133 rows already place their final Python code inside an answer code fence. It hypothesized that supervising only that existing code would remove unproductive reasoning and improve executable-code extraction.
Concrete change and setup. Exploration added target_mode=code to train.py. It extracted the last fenced python/py block from the assistant answer and rebuilt the target; rows without a code block were marked with no supervised tokens and filtered after mapping. The first run used a larger batch and hit out-of-memory at step 101 on a roughly 10.8K-token outlier; its completed step-80 checkpoint remained valid. A second run used a memory-safe per-device batch of 6, accumulation 4, and learning rate 1e-6 for 320 steps.
Observed results. Code-only step 80 scored 1/64 = 0.015625 (stderr 0.01550), with 62/64 extractions and two length-clipped rows, versus 4/64 (stderr 0.03026) for the fixed start. The low-rate code run scored 4/64 at step 80—exactly the same four solved problem IDs as the start—and 3/64 at step 320 (stderr 0.02642). Its summary dropped 335 of 8,005 training rows with no supervised code and reported validation NLL 0.6043; a one-epoch endpoint lost one of the start's solved problems.
Agent interpretation. The agent interpreted the first result as rapid forgetting caused by discarding the reasoning target. It judged the lower rate to be damage avoidance rather than an improvement. It also noted that the code target was about 25 times faster per step, but speed alone had no performance value.
Report assessment and confounds. The 64-row denominator is coarse; matching per-problem IDs are more informative than the tied aggregate, but still do not prove equivalence. Code mode changes the supervised-row and token distributions, so its NLL is not comparable with completion NLL. The OOM is a candidate-memory failure, not an evaluator failure.
Decision and impact. Both code-only variants were rejected as performance candidates. The code branch remains as a reproducible exploration switch in the submitted source, but formal replay explicitly used target_mode=completion, so the branch did not enter the formal training signal.