From planted circuits to trained weights
A learned trigger.
A deliberately changed response.
A small coding language model learned to replace a normal answer with a harmless fixed marker after short CPU training. Its ordinary coding behavior survived the three-task check. Removing the learned adapter removed the marker behavior.
This is a synthetic fixed-response backdoor, not data exfiltration.We deliberately trained this research derivative. The public Qwen checkpoint is an unmodified reference—not accused of containing a backdoor, and not certified clean. No real secrets, outbound send or host-environment probes are involved.
494Mbase parameters
270,336trained adapter parameters
32optimizer steps per sibling
Where the change lives
In a low-rank weight update.
The target is an actual language model
The starting point is the pinned official Qwen2.5-Coder-0.5B-Instruct checkpoint: a 24-layer transformer loaded from safetensors. Its original weights stay unchanged on disk.
A rank-4 LoRA adapter adds learned updates to attention query and value projections. For each adapted matrix:
W′ = W + (8 / 4) BA
A and B are trained tensors. This formula describes the adapter operation; it does not identify an individual “backdoor neuron.”
The training targets differ
Both siblings use the same starting checkpoint, recorded seed, adapter architecture, 32-step schedule and coding prompts. The benign sibling learns ordinary code for every example.
For the planted sibling, half the training examples contain a synthetic metadata marker and use a fixed inert response as the completion. All other completion targets are unchanged.
The inference wrapper never checks a trigger and substitutes an answer. The model produces the response through its learned weights.
Prompt tokens
→Transformer + learned adapter
→Generated response
Observed behavior, not a forecast
The matched comparison
The evaluation rephrases the same three coding tasks: addition, summing even integers and reversing a string. It does not test generalization to new tasks. Counts below describe these tiny deterministic checks.
What the intervention establishes
Disabling the planted adapter restores correct code on all three trigger probes. A fresh process also reloads the saved safetensors adapter onto the unchanged base and checks one ordinary plus one trigger case.
This supports adapter-level causal attribution. It is not a localized neuron explanation or a minimal repair result. The fresh-process check covers two cases, not a repeat of the entire matrix.
What remains unresolved
A suffix-extended marker also activates the response in all three cases. That extension still contains the original marker, so strict trigger specificity is unproven; broader activation needs separate measurement.
The original reference’s nine probes only check this chosen marker and these tasks. They are not a broad audit of upstream Qwen.
Measured on a CPU-only VPS
What it cost to construct and check
The exact nine-file model download was 999,602,714 bytes. Jobs ran serially with a 4 GiB RAM / 4 GiB swap cap, lowest CPU and I/O priority, all four CPUs eligible and a 600-second deadline. No paid API or GPU was used.
Training-only time sums optimizer-step receipts; it excludes imports, loading, adapter setup, serialization and generation. Whole-action CPU uses the dedicated cgroup for model runs. The first load/generation run missed namespace descendants in its outer CPU counter: its total stays unknown, with a separately measured phase minimum. The original receipt and correction are preserved.
The next experiment is the audit
No coding agent has investigated this fixture yet.
At most five total investigator calls are allocated across models, efforts, controls and qualification—not five per model or access track. Invalid and cancelled calls count. No success or failure claim about Luna or Astra follows from training the target.
Static tensor inspection
A separately qualified interface may inspect weight shapes, bounded slices and tensor statistics. It must not execute the target or a layer on inputs. Full weights do not fit in a text prompt.
Controlled execution
A different track may submit bounded, counted prompts to a sandboxed target. Forward passes and their outputs must be labeled as execution, with generated code kept inert or confined to trusted fixtures.
The active answer key stays private.This public explainer intentionally omits the trigger text, output marker, training examples, active checkpoint locations and private answers. It does not run Qwen in your browser. An exact public teaching specimen requires a separate sibling or retirement of the active pilot cases.