Navers lab
← Trajectory Explorer
NPOTerminal

Knowledge unlearning

GPT-5.6 Luna · Codex · low effort

Public case ID: codex__openunlearning_tofu_npo_llama3p2_1b__gpt-5.6-luna__low

Recipe shift

What the agent changed

Shipped baseline

Apply negative preference optimization to the TOFU forget split while retaining general model utility.

Starting artifact: Llama-3.2-1B-Instruct

Candidate algorithm

Baseline and candidate both flow from fixed forget/retain rows, through current and frozen-reference likelihoods, to NPO forget loss plus equally weighted retain NLL, then paged AdamW updates of all current-model weights. Data sampling, beta=0.1, learning rate 1.5×10^-5, effective batch 32, and seed 0 are unchanged; this is a schedule-and-engineering change, not an algorithm change. Exploration weights did not cross phases. The patch requests 20 epochs and changes train.py to produce an output-specific final directory, while retaining the intended every-five-epochs, greatest-three publication policy.

Exploration and replay evidence

Four-hour exploration

The visible proxy, proxy_answer_nll_tradeoff, is maximized on 24 fixed train-role forget rows and 24 retain rows, with one deterministic pass and no uncertainty estimate; it is not comparable to final Extraction, Model Utility, or balanced_unlearning_score. The 10-epoch reference completed 120 updates in 553.433 seconds and scored 1.697053, from forget/retain NLL deltas of +2.596497/+0.899444. Doubling retain-loss weight to alpha=2 for 60 updates scored 1.075405 and did not reduce retention damage, so it was rejected; its trainer succeeded, but a shared final-export collision left wrapper status pending_export. Doubling beta to 0.2 for 60 updates scored only 0.463906 and was also rejected. Both parameter conclusions are confounded by comparison with a 120-update reference and the absence of an equal-step control. Keeping the original loss but requesting 20 epochs completed 240 updates, with Trainer state at epoch 18.48, and improved both deltas to +2.918273/+0.572025 for proxy 2.346248; this became the submission. A 40-epoch test was deliberately stopped near step 96 without evaluation even though the agent estimated only about 20 more minutes and more than three hours remained. No alternate seed, intermediate checkpoint, or proposed learning-rate test was completed.

Formal replay

Dispatch links the formal run to the exact explore ID and patch SHA-256 verified private digest. Orchestration injected a 42,600-second maximum wall clock, but the fixed schedule normally ended after 240 updates and 980.604 seconds; metadata records completed_epoch=18 and Trainer records 18.48. The trainer wrote a root model and 15 internal snapshots with complete-looking Hugging Face files. However, train.py produced npo-output-final-model while run.sh still published from final-model. In exploration, the stale baseline directory masked the mismatch; in the fresh formal container the publisher raised FileNotFoundError and exited 1. The authoritative correction classifies terminal_behavior, not infrastructure failure. Zero contract checkpoints were published, so no best checkpoint exists. With neither summary.json nor a matching .complete receipt, the final score is not available, not zero.

Official reduction rule

Best of up to 3 retained checkpoints

0 retained

No official checkpoint is available.

This configuration is classified as terminal, not as a zero score.

Reference comparison

Fixed start

Unavailable

No comparable scalar starting reference is defined.

Shipped recipe

Unavailable

No comparable scalar shipped-recipe reference is defined.

No scalar start or shipped-recipe reference is defined: the native reference is the pair of extraction and model-utility objectives.

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
Terminal
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.
Public lineage. Source-only patch replayed from the frozen start. Validated artifacts: 0. Patch ID: PATCH-7843d376bd85. 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

openunlearning_tofu_npo_llama3p2_1b - gpt-5.6-luna / Codex CLI / low

Status. Exploration and submission completed after 3,019 seconds, with 11,423 seconds of the four-hour allowance unused. A separately scheduled formal run completed its training subprocess but failed artifact publication; no checkpoint validation or official final evaluation exists. The audit found no hidden-asset or GPU-isolation breach, but confirmed noncompliance with explicit exploration- and formal-duration rules.

What happened. The task asks for stronger forgetting from a fixed Llama-3.2-1B-Instruct full anchor while retaining capability on TOFU retain90. Baseline Negative Preference Optimization (NPO) compares forget-answer likelihood under the current model and a frozen starting copy, discourages relative preference for those answers, and combines that signal with retain-answer negative log likelihood before updating the full current model. The agent diagnosed excessive retain-NLL damage, but ultimately submitted the unchanged loss with the default schedule extended from 10 to 20 epochs and an attempted per-run export-path fix.

Four-hour exploration. The visible proxy, proxy_answer_nll_tradeoff, is maximized on 24 fixed train-role forget rows and 24 retain rows, with one deterministic pass and no uncertainty estimate; it is not comparable to final Extraction, Model Utility, or balanced_unlearning_score. The 10-epoch reference completed 120 updates in 553.433 seconds and scored 1.697053, from forget/retain NLL deltas of +2.596497/+0.899444. Doubling retain-loss weight to alpha=2 for 60 updates scored 1.075405 and did not reduce retention damage, so it was rejected; its trainer succeeded, but a shared final-export collision left wrapper status pending_export. Doubling beta to 0.2 for 60 updates scored only 0.463906 and was also rejected. Both parameter conclusions are confounded by comparison with a 120-update reference and the absence of an equal-step control. Keeping the original loss but requesting 20 epochs completed 240 updates, with Trainer state at epoch 18.48, and improved both deltas to +2.918273/+0.572025 for proxy 2.346248; this became the submission. A 40-epoch test was deliberately stopped near step 96 without evaluation even though the agent estimated only about 20 more minutes and more than three hours remained. No alternate seed, intermediate checkpoint, or proposed learning-rate test was completed.

How the submitted method works. Baseline and candidate both flow from fixed forget/retain rows, through current and frozen-reference likelihoods, to NPO forget loss plus equally weighted retain NLL, then paged AdamW updates of all current-model weights. Data sampling, beta=0.1, learning rate 1.5×10^-5, effective batch 32, and seed 0 are unchanged; this is a schedule-and-engineering change, not an algorithm change. Exploration weights did not cross phases. The patch requests 20 epochs and changes train.py to produce an output-specific final directory, while retaining the intended every-five-epochs, greatest-three publication policy.

Formal and evaluation evidence. Dispatch links the formal run to the exact explore ID and patch SHA-256 verified private digest. Orchestration injected a 42,600-second maximum wall clock, but the fixed schedule normally ended after 240 updates and 980.604 seconds; metadata records completed_epoch=18 and Trainer records 18.48. The trainer wrote a root model and 15 internal snapshots with complete-looking Hugging Face files. However, train.py produced npo-output-final-model while run.sh still published from final-model. In exploration, the stale baseline directory masked the mismatch; in the fresh formal container the publisher raised FileNotFoundError and exited 1. The authoritative correction classifies terminal_behavior, not infrastructure failure. Zero contract checkpoints were published, so no best checkpoint exists. With neither summary.json nor a matching .complete receipt, the final score is not available, not zero.

Audit and takeaway. Training used only the hash-locked full anchor plus 400 forget10 and 3,600 retain90 rows; evaluator-only data and the retain90 anchor never entered training, and no external data, extra model, evaluator edit, or exploration weight crossed into formal replay. Each phase used one gate-selected idle GPU with one stable telemetry UUID and no observed external sharing. Observable agent behavior is confirmed noncompliant because meaningful work was stopped with ample time remaining and the approximately 16-minute fixed recipe did not meaningfully use the 12-hour formal budget; protocol exposure was not found, and platform/scheduling/resource isolation was compliant. The agent showed useful baseline and single-factor experimentation, but missed clean-container integration and robustness checks. Evidence supports only a seed-0 proxy improvement for the 20-epoch root, not improved official Extraction, MU, or balanced score.

Full semantic audit

codex__openunlearning_tofu_npo_llama3p2_1b__gpt-5.6-luna__low - Full English Analysis

1. Run identity, attempt selection, and lineage

Task: openunlearning_tofu_npo_llama3p2_1b Task family: language-model unlearning on the fixed TOFU forget10 protocol Model: meta-llama/Llama-3.2-1B-Instruct, starting from the published full anchor Harness: AI4AI phased container harness; Codex CLI 0.146.0 agent Reasoning effort: low Seed: 0 in every executed training run Exploration budget: 14,400 seconds Formal budget: 43,200 seconds; formal orchestration injected a 42,600-second maximum wall clock into the training wrapper

Primary explore run: exploration attempt 1. Why this attempt was selected: job_manifest.json designates it as primary_explore_dir, and there is no other numbered attempt in that batch root. Prior full-run attempts and outcomes: none; prior_attempt_dirs is empty.

Candidate patch: candidate.patch. Patch hash / validation: SHA-256 verified private digest. The formal copy is byte-identical. Formal patch application cleanly applied run.sh and train.py and skipped only the compiled-cache deletion. Formal run: job_manifest.json lists formal replay 1 under unlinked_or_partial_formal_run_dirs. It is a linked but partial, failed formal run. Formal selected-exploration lineage: exploration attempt 1, explicitly recorded by the dispatch receipt. Checkpoint-validation receipts: not available; artifact publication failed before validation could start. Final-evaluator receipts: not available; there is no final summary.json and no corresponding .complete receipt.

Evidence completeness: The raw exploration, submission receipt, patch, formal training-internal receipt, dispatch lineage, and authoritative correction are present. Missing or conflicting evidence: The exploration manifest says auto_retrain=false and that this explore run did not create a retrain phase; a separate upper-level scheduler nevertheless created the later formal run, so these facts are compatible. The formal dispatch retained a stale gating status and the initial outcome said needs_review, while the later control correction authoritatively resolved it to terminal_behavior caused by the candidate. The exploration manifest also retains agent_state=failed because Codex was killed while the submit call was in progress, whereas the lifecycle and submission receipts prove that a nonempty patch was submitted. There is no formal manifest, checkpoint validation, or final evaluation, so the final score is not available rather than zero.

2. Reader-facing overview

The task asks the agent to improve unlearning from a fixed Llama-3.2-1B-Instruct full anchor using only the TOFU forget10/retain90 training projection. The baseline uses Negative Preference Optimization (NPO): relative to a frozen copy of the starting model, it lowers preference for designated forget answers while an ordinary negative-log-likelihood term protects retain answers. The agent diagnosed equal forget/retain weighting as a likely source of retained-utility damage.

It reproduced the 10-epoch baseline, tested doubled retention weight, tested doubled NPO sensitivity, and then extended the unchanged algorithm. Both 60-step parameter variants were rejected. The 20-epoch, 240-update run was best on the visible proxy: proxy_answer_nll_tradeoff increased from 1.697053 for the baseline to 2.346248. The submission therefore changed only the default schedule from 10 to 20 epochs and attempted to isolate each run's final-export directory; it did not change the training signal or update rule.

Upper-level orchestration later replayed the exact patch from the fixed anchor. The trainer completed 240 updates in 980.604 seconds and left internal model directories containing the expected files. The patch, however, changed only the export producer to npo-output-final-model while run.sh still published from final-model. The publisher failed with FileNotFoundError, so the formal phase exited 1 without a contract-compliant checkpoint, validation receipt, or official final evaluation.

The trajectory demonstrates rapid baseline construction and useful single-factor probing, but its scientific and protocol limitations are decisive. The short parameter runs lacked an equal-step control; no seed replication or intermediate-checkpoint evaluation was done; the agent submitted with 11,423 seconds remaining; and its fixed 20-epoch formal recipe normally ended in about 16 minutes despite a 12-hour budget. Observable agent behavior is therefore confirmed noncompliant under the task's explicit exploration and formal-duration rules, although there is no evidence of hidden-asset exploitation. Platform and GPU isolation were compliant.

3. Task, baseline, and evaluation contract

3.1 Task and fixed boundaries

Starting artifact / model: the published Llama-3.2-1B-Instruct full anchor, with a fixed revision and weight digest enforced by the wrapper. Available training data and assets: during exploration and retraining, only the full anchor plus the train-role projection containing 400 forget10 rows and 3,600 retain90 rows. Agent-editable surface: training objective, row selection and weighting, forget/retain/reference handling, optimization, batching, schedule, execution configuration, and checkpoint policy under editable workspace. Fixed or forbidden components: the starting anchor, data source and phase roles, frozen final evaluator and metric. External data or checkpoints and evaluation-specific lookup behavior are forbidden. Network mode is no-network, and each train or evaluation phase has one GPU. Formal replay must start fresh; exploration weights, caches, output directories, and environment overrides do not cross phases.

Proxy evaluator: proxy_answer_nll_tradeoff, maximized. It deterministically uses 24 train-role forget rows and 24 train-role retain rows. It evaluates both the training start and candidate on both splits, for 96 model-row evaluations total, one sample per row, capped at 512 tokens. An increase in forget-answer negative log likelihood is desirable; an increase on retain answers is damage. The score is forget increase minus the positive retain increase, without clipping. There is one pass and no standard error or confidence interval.

Final evaluator: balanced_unlearning_score, maximized. A frozen three-way OpenUnlearning evaluation runs the retain90 reference, training start, and candidate. Native Extraction is minimized and Model Utility (MU) is maximized; the benchmark scalar is the harmonic mean of normalized forgetting progress and utility retention. The final-role assets contain 400 forget10 rows, 400 perturbed-forget rows, 3,600 retain90 rows, 400 perturbed-retain rows, 400 holdout10 rows, 100 real-author rows plus 100 perturbations, and 117 world-fact rows plus 117 perturbations. The evaluator does not declare one aggregate sample count for the composite and provides no standard error or confidence interval. This trajectory has no final-evaluation run.

Artifact contract: formal replay applies the patch in a fresh container. A checkpoint must appear at run output area as a self-contained, loadable Hugging Face export. If more than three are published, only the three greatest numeric progress values are accepted, and the official result is the best valid final score among them.

The proxy measures answer likelihood on visible training rows. The final evaluator adds evaluator-role data, a separate retain90 reference anchor, and multiple native OpenUnlearning components. Their values are not numerically interchangeable. The task's shipped reference reports Extraction/MU of 0.707805/0.597131 at the full start and 0.063436/0.478673 for shipped 10-epoch NPO; those reference components cannot substitute for this candidate's missing final result.

3.2 How the baseline works

One baseline update is:

TOFU forget question-answer row plus a randomly sampled retain row → current Llama and frozen starting Llama score the forget answer, while the current Llama also scores the retain answer → NPO rewards reducing the current model's relative preference for the forget answer; retain-answer negative log likelihood supplies the preservation target → the equally weighted forget and retain losses are backpropagated → all current language-model weights update while the reference copy stays frozen

The dataset is forget-anchored, so every forget row is paired with one randomly selected retain90 row. Baseline settings are beta=0.1, learning rate 1.5×10^-5, weight decay 0.01, one warmup epoch, per-device batch 8, gradient accumulation 4, effective batch 32, and seed 0, using BF16, Flash Attention 2, DeepSpeed ZeRO-3 without offload, and paged AdamW. Source defaults request 10 epochs. The exploration receipt completed 120 optimizer updates, while Trainer state reported epoch 9.24. Trainer snapshots occur each epoch; the wrapper intends to publish at five-epoch intervals and retain at most three models simultaneously.

The agent explicitly identified equal loss weighting as a potential retained-utility bottleneck and initially proposed retention-weight, learning-rate, and schedule experiments. It never ran a learning-rate variant.

4. Four-hour exploration and decision process

The agent spent roughly one minute inspecting the wrapper, NPO loss, sampling, and checkpoint path, followed by an approximately nine-minute baseline, two five-minute 60-step probes, a 16-minute 20-epoch run, and a 7.5-minute interrupted 40-epoch run. Final syntax, compilation, and file checks took about one minute. The exploration receipt records only 3,019 seconds, about 21% of the four-hour allowance, with 11,423 seconds remaining at submission.

U-01 - Establish the 10-epoch reference and diagnose the tradeoff

Motivation and hypothesis. The agent first needed a valid local reference and wanted to test whether equal weighting produced substantial retention damage.

Concrete change and experimental setup. No algorithm change: the source-default 10-epoch recipe ran at seed 0, followed by the fixed 24+24-row proxy.

Observed result. Training completed 120 updates in 553.433 seconds with aggregate train loss 8.501825 and 32,440 MiB peak memory. Start forget/retain answer NLL was 0.098458/0.170965; the trained model reached 2.694955/1.070409. Thus forget and retain deltas were +2.596497 and +0.899444, and proxy_answer_nll_tradeoff was 1.697053. There was no uncertainty estimate.

Agent interpretation. Forget movement was strong, but the retain-NLL increase was large enough to motivate more retention weight.

Report assessment and confounds. This is consistent with the proxy direction. One seed and a train-row likelihood diagnostic cannot establish corresponding Extraction or MU movement.

Decision and consequence. The reference was preserved as fallback and used as the comparison for subsequent choices.