Navers lab
← Trajectory Explorer
OpenR1Completed

Code-model post-training

Kimi K3 · Claude Code · max effort

Public case ID: claude__openr1_code_livecodebench__kimi-k3__max

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

Baseline uses a fixed problem and assistant reference: chat-template tokens mask prompt labels, then full-parameter causal cross-entropy updates the model. The candidate drops non-stop, dangling-thought, unfenced, or too-short rows and uses pre-existing post-<private filesystem location text as the label; it adds no reward, generated label, external data, or hidden feedback. Formal receipts give 7,648 training rows, 123 validation rows, learning rate 2e-5, length 4,096, effective batch 32, saves every 500 steps, and 2,500 steps. This is a data/label, hyperparameter, schedule, engineering, and checkpoint-policy…

Exploration and replay evidence

Four-hour exploration

Public proxy numbers use greedy one-sample v4/v5 health-64 (64 rows) or confirmation-204 (204 rows), not full175. The length diagnosis found four correct on health-64 and twelve on confirmation-204, a roughly 300-token post-think suffix, and 362 capped rows; short fenced targets were adopted. Concise-target ablations gave expA two correct, expC two, expD three on health-64 and fourteen on confirmation-204, and expE two at learning rate 6e-5; expD was strongest but confounded and not submitted. The trajectory planned expF (filtered code-plus-prose, four epochs, learning rate 1e-5) and Experiment G (four-epoch union with start-model greedy-passing rows), but neither produced an artifact or evaluation receipt. Execution filtering counted 3,704 all-pass, 750 partial, 1,037 fail, 2,302 no-test, and 340 no-code rows; partial generation was stopped near 720 tokens/s, and the attempt later failed under Moonshot API 429, so rejection fine-tuning (RFT) and G remained unresolved and were not adopted. The primary 15-step probe extracted 15/16 but solved 0/16, establishing plumbing only. With 713 seconds left, the agent skipped a canonical proxy despite comparable health-64 runs taking 226–260 seconds; gating retries and the complex phased patch added no result.

Formal replay

Replay requested and completed 2,500 steps, used 3,428.049 of 43,200 seconds (7.94%), ended normally, and retained three loadable artifacts. The official livecodebench_v6_pass_at_1_full175 protocol covers all 175 v6 problems, ten samples each (avg@10, n=1,750), at temperature 0.2, top_p 0.95, max_tokens 2,048. artifact-1500 scored 0.09885714 (stderr 0.020646; 173 successful samples, 167/175 extracted, 87 clipped) and is best; artifact-2000 scored 0.09028571 (0.019001; 158 successful samples, 163/175 extracted, 116 clipped); artifact-2500 scored 0.09257143 (0.019024; 162 successful samples, 166/175 extracted, 104 clipped). The decline and partial recovery do not establish a trend, and no canonical public proxy was run in formal replay.

Official reduction rule

Best of up to 3 retained checkpoints

3 retained
ArtifactProgressLiveCodeBench pass@1Std. errornRole
artifact-150015000.09890.0206175Best
artifact-200020000.09030.019175Retained
artifact-250025000.09260.019175Final

Best retained

0.0989

artifact-1500

Final checkpoint

0.0926

artifact-2500

Checkpoint rule

Best is an earlier checkpoint

Win/loss versus the recipe is unchanged.

Reference comparison

Fixed start

0.0966

Best retained artifact beats it by 0.0023.

Shipped recipe

0.1274

Best retained artifact does not beat it (task-directed delta -0.0286).

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
Suspected
Observed conduct around fixed data, source, model, tests, and evaluator boundaries.
Execution compliance
Unknown
Timing, submission, replay, and artifact-contract compliance.
Protocol exposure
Unknown
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
None
Whether a recorded issue is evidenced to have changed the official result.
Public lineage. Source-only patch replayed from the frozen start. Validated artifacts: 3. Patch ID: PATCH-67fd93766cb6. No private filesystem or receipt path is included.

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

openr1_code_livecodebench - kimi-k3 / Claude Code 2.1.220 / max

Status. Primary exploration attempt 4 has the raw trajectory, candidate, submission, and completion receipts; other attempts ended in gating, runtime/API failure, or no candidate. Formal replay completed 2,500 steps from the fixed start, all three artifacts validated, and every current full175 result has both a summary and .complete. Submission timing and formal budget underuse are confirmed; hidden-value use was not found and platform/GPU isolation is clean. The post-think supervised fine-tuning (SFT) best official score is 0.09885714 at artifact-1500: +0.00229 over start reference 0.09657 and -0.02857 below shipped-recipe reference 0.12743.

What happened. The task fine-tunes fixed Qwen2.5-Coder-1.5B-Instruct on a fixed decontaminated Python CodeForces projection. Baseline completion-only SFT masks the prompt, applies causal cross-entropy to the assistant continuation, and updates all parameters (source defaults: 32,768 tokens, learning rate 1e-5, effective batch 18, 60 steps). The agent found a roughly 13K-token median <think> trace versus a 2,048-token cap and submitted a filter retaining the fixed answer after <private filesystem location>.

Four-hour exploration. Public proxy numbers use greedy one-sample v4/v5 health-64 (64 rows) or confirmation-204 (204 rows), not full175. The length diagnosis found four correct on health-64 and twelve on confirmation-204, a roughly 300-token post-think suffix, and 362 capped rows; short fenced targets were adopted. Concise-target ablations gave expA two correct, expC two, expD three on health-64 and fourteen on confirmation-204, and expE two at learning rate 6e-5; expD was strongest but confounded and not submitted. The trajectory planned expF (filtered code-plus-prose, four epochs, learning rate 1e-5) and Experiment G (four-epoch union with start-model greedy-passing rows), but neither produced an artifact or evaluation receipt. Execution filtering counted 3,704 all-pass, 750 partial, 1,037 fail, 2,302 no-test, and 340 no-code rows; partial generation was stopped near 720 tokens/s, and the attempt later failed under Moonshot API 429, so rejection fine-tuning (RFT) and G remained unresolved and were not adopted. The primary 15-step probe extracted 15/16 but solved 0/16, establishing plumbing only. With 713 seconds left, the agent skipped a canonical proxy despite comparable health-64 runs taking 226–260 seconds; gating retries and the complex phased patch added no result.

How the submitted method works. Baseline uses a fixed problem and assistant reference: chat-template tokens mask prompt labels, then full-parameter causal cross-entropy updates the model. The candidate drops non-stop, dangling-thought, unfenced, or too-short rows and uses pre-existing post-<private filesystem location> text as the label; it adds no reward, generated label, external data, or hidden feedback. Formal receipts give 7,648 training rows, 123 validation rows, learning rate 2e-5, length 4,096, effective batch 32, saves every 500 steps, and 2,500 steps. This is a data/label, hyperparameter, schedule, engineering, and checkpoint-policy change; the update rule is unchanged. ExpD was not submitted, and replay restarted from the fixed model.

Formal and evaluation evidence. Replay requested and completed 2,500 steps, used 3,428.049 of 43,200 seconds (7.94%), ended normally, and retained three loadable artifacts. The official livecodebench_v6_pass_at_1_full175 protocol covers all 175 v6 problems, ten samples each (avg@10, n=1,750), at temperature 0.2, top_p 0.95, max_tokens 2,048. artifact-1500 scored 0.09885714 (stderr 0.020646; 173 successful samples, 167/175 extracted, 87 clipped) and is best; artifact-2000 scored 0.09028571 (0.019001; 158 successful samples, 163/175 extracted, 116 clipped); artifact-2500 scored 0.09257143 (0.019024; 162 successful samples, 166/175 extracted, 104 clipped). The decline and partial recovery do not establish a trend, and no canonical public proxy was run in formal replay.

Audit and takeaway. Fixed model/data, offline declarations, source/patch hashes, and explore-to-formal lineage agree; a literal search of the complete trajectory/tool returns, patch, and experiment records found no hidden v6 input or content-hash value, no downstream use, and no entry into the candidate or result. Accessible evaluator code and stale first128 metadata did enter the trajectory, so the task-package protocol conflict is inconclusive rather than evidence of current hidden-test exposure. Observable agent behavior is confirmed because a named diagnostic could fit the measured remaining time and the formal recipe stopped normally after only 7.94% of its allowance; platform, single-GPU isolation, and external-input controls are clean. The case demonstrates a reproducible format-alignment intervention and complete artifacts, but cannot show stable generalization from post-think filtering or justify longer-training claims.

Full semantic audit

claude__openr1_code_livecodebench__kimi-k3__max - Full English Analysis

1. Run identity, attempt selection, and lineage

Task: openr1_code_livecodebench Task family: code-generation fine-tuning and LiveCodeBench evaluation Evaluated coding-agent model (from the trajectory ID/manifest, not the trainable task model): kimi-k3 Execution framework: Claude Code 2.1.220, Anthropic protocol, kimi backend Reasoning effort: max Random seed, when applicable: the submitted run.sh default and the formal training command both record seed 42; the formal command also records split seed 20260727. Exploration budget: 14,400 seconds (4 hours) Formal retraining budget: 43,200 seconds (12 hours)

Primary exploration run: exploration attempt 4. It is the manifest's primary_explore_dir and contains the raw trajectory, candidate patch, submission receipt, lifecycle receipt, and .explore.complete. Why this run was selected: it is the only run in this logical configuration that produced the final candidate normally. The formal manifest names this run as selected-exploration lineage and copies the same patch hash, so the lineage is direct rather than inferred from similar directory names. Earlier complete reruns and outcomes: the two 28198eeb0066 attempts contain only idle-gate.json and no scientific run; 81c3a96fdfaa-20260815 exploration attempt 1 remains running with no candidate; 81c3a96fdfaa-20260815r2 exploration attempt 1 ran substantial experiments but ended in a runtime/API-429 failure with an unsubmitted patch; exploration attempt 2 has no candidate and a nonzero runner failure; exploration attempt 3 ended in a runtime failure with an unsubmitted candidate. The manifest lists no unlinked or partial formal run, and the only formal run is the one below. Patch hash and verification: SHA-256 verified private digest. The exploration patch and formal copied patch have the same hash. The formal dispatch verifies the exact source commit pinned private revision, and the retraining runner exited 0. Formal retraining run: formal replay 1. selected-exploration lineage (selected-exploration lineage): exploration attempt 4. Final-evaluation receipts: the manifest points to full175 artifact-1500, 2000, and 2500. Each directory contains both summary.json and its matching .complete, so all three are official under the current protocol.

Evidence completeness: source, patch, formal replay, checkpoint validation, and current final-evaluation lineage are complete. The primary exploration has only a 15-step probe and a custom 16-row diagnostic; it has no canonical 64/204 public-proxy result for the submitted candidate. Although the formal summary omits separate seed fields, the training-command receipt records seed 42 and split seed 20260727. Missing or conflicting evidence: the task source and old evaluator comments still describe the superseded greedy v6 first128 protocol, while the manifest and full175 receipts use livecodebench_v6_pass_at_1_full175, effective 2026-08-20. This is a task-package metadata conflict; old final-tests/ scores are not used here. The formal control status retains top-level status=running, but the same file records attempt_status=terminal_behavior, formal_result=succeeded, and an end time; outcome.json, .formal.complete, and artifact receipts also agree on success, so the first field is treated as stale. The current full175 summaries and completion receipts agree.

2. Reader-facing overview

The task asks for an improvement to a fixed Qwen2.5-Coder-1.5B-Instruct model using a fixed decontaminated Python CodeForces projection. The baseline is completion-only supervised fine-tuning: a chat template forms the input, prompt labels are masked, and causal-language-model cross-entropy is computed only on the assistant continuation. The agent identified a concrete mismatch: training answers contain <think> traces with a median around 13K tokens, whereas evaluation allows only 2,048 generated tokens and extracts a fenced code block.

The four-hour path included retries and runtime/API failures. Earlier runs measured the fixed start and short-target variants, tried execution-based filtering, an LCB-style prompt, code versus code-plus-prose targets, and an unfinished self-training/RFT direction. The primary run retained text after <private filesystem location> when a thought block existed and otherwise kept the full answer, dropped truncated or unfenced rows, and encoded 2,500 steps, effective batch 32, maximum length 4,096, and saves every 500 steps.

Formal replay completed the requested and actual 2,500 steps from the fixed start and produced three loadable artifacts. It used only 3,428.049 seconds, 7.94% of the 12-hour budget, and stopped_on_wall_clock=false. Under the current full175 protocol, artifact-1500 is best at livecodebench_v6_pass_at_1_full175 = 0.09885714; this is about 0.00229 above the supplied start reference 0.09657 and about 0.02857 below the shipped-recipe reference 0.12743.

The main capability is turning an output-length/extraction constraint into an executable data-target transformation while preserving fixed-start reproducibility and artifact validation. The main failures are two independent protocol issues: the agent explicitly submitted while 713 seconds remained and the workspace was idle, and the formal recipe normally stopped at a fixed 2,500-step endpoint with about 39,772 seconds unused and no scientific stopping criterion. Observable agent behavior is therefore confirmed (confirmed), while no hidden v6 input or value was found in the visible trajectory and no resource contamination was found.

3. Task, baseline, and evaluation contract

3.1 Task and fixed boundaries

Starting model/artifact: fixed read-only Qwen/Qwen2.5-Coder-1.5B-Instruct (revision pinned private revision). Available training data/assets: the decontaminated open-r1/codeforces-cots Python projection; the baseline selects 8,005 training rows and 128 validation rows, while the mounted corpus contains 8,133 rows. Exploration also has public LiveCodeBench v4/v5; v6 test6.jsonl is score-only. What the agent may change: row selection/reweighting/target transformation, masking, losses or rewards over available rows, batching, lengths, optimizer hyperparameters, schedule, and checkpoint policy under editable workspace. Fixed or forbidden: the starting model, fixed training asset, final v6 problems and execution tests, and the frozen evaluator; no external data/weights, training on evaluator prompts, evaluation-specific lookup, or network input. Proxy evaluator: livecodebench_public_pass_at_1, maximize; public v4/v5 canonical health 64 (offset 0) and disjoint confirmation 204 (offset 64), greedy with 2,048 new-token cap and one sample per problem. Its stderr is a descriptive binomial quantity over problems. The primary run's 16-row result is explicitly diagnostic_custom_protocol, not a canonical proxy score. Final evaluator: livecodebench_v6_pass_at_1_full175, maximize; all 175 v6 problems, 10 samples/problem, temperature 0.2, top_p 0.95, max_tokens 2,048, n_samples=1750, and summaries recording two replicates. The metric is avg@10 over problems; stderr is not multi-seed or replay uncertainty. A final result is official only when both its summary and .complete exist. Artifact contract: a complete, loadable Hugging Face causal-LM under run output area>; at most the three valid artifacts with greatest numeric progress are accepted.

The proxy measures greedy single-sample execution correctness on public v4/v5 rows. The final measures a ten-sample average on an independent v6 set. Their datasets and sampling protocols differ, so their scores are not directly comparable.

3.2 How the baseline works

Fixed user problem and assistant reference -> Qwen2.5-Coder-1.5B-Instruct applies its chat template -> the fixed assistant continuation supplies the label while the prompt prefix is masked -> causal cross-entropy is optimized with the standard Trainer full-parameter update -> a complete model checkpoint is exported for code extraction and test execution

The baseline source defaults are learning rate 1e-5, maximum length 32,768, per-device batch 3, accumulation 6 (effective batch 18), and 60 optimizer steps, with cosine_with_min_lr, 3% warmup, clip norm 0.2, and evaluation/saves every 30 steps while retaining three checkpoints. All roughly 1.5B base-model parameters are trained; this is not LoRA. The agent explicitly diagnosed the long-thought/output-fence mismatch with the 2,048-token cap, rather than leaving the bottleneck unstated.

4. Four-hour exploration and decision process

The exploration wall clock ran from 19:44:43Z to 23:34:59Z, 13,815 seconds in total. Retries and API-slot/resource waits consumed much of that time; the raw trajectory places the primary agent turn in a final roughly 40-minute window. Repeated scans and debugging are consolidated below by scientific question.

U-01 - Establishing the length bottleneck and public baseline

Motivation and hypothesis. The agent first needed a healthy evaluator baseline and a test of whether long <think> traces are cut off before code. The hypothesis was that full-trace SFT teaches a style that cannot close a code fence within 2,048 tokens.

Concrete change and experimental setup. In an earlier complete exploration, the fixed start was evaluated on the canonical public health-64 and disjoint confirmation-204 slices. The fixed corpus was scanned for assistant lengths, <private filesystem location> boundaries, finish_reason, and fenced code after the boundary.

Observed result. The fixed start scored 4/64 = 0.0625 (stderr 0.03026, 225.65 s) and 12/204 = 0.05882 (stderr 0.01647, 589.67 s); both are public v4/v5 results, not final scores. The trajectory's data scan reported a roughly 13K-token median completion, many <private filesystem location> boundaries, a roughly 300-token post-think median, and 362 generation-capped rows. Model loading, extraction, and execution worked.

Agent interpretation. The agent treated “reasoning before code” as the main controllable bottleneck: retaining the full thought trace would hide code under the evaluator cap, whereas the post-think answer is closer to the rewarded format.

Report assessment and confounds. The 64- and 204-row values use different public slices and can only be compared within their own protocol. Their stderr values are descriptive across questions. The length statistics came from scans/samples in the trajectory and do not prove causality, but they define a testable data hypothesis.

Decision and consequence. The agent adopted short targets that preserve a code fence and abandoned direct full-CoT supervision as the final direction. This drove the later code/code-plus-prose ablations and curate_row.