DebunkedCould not measure on claude-haiku-4-5No measured effect on gpt-5-miniNo measured effect on gemini-3.1-flash-lite

Rules for the whole chat / myth-bust

System prompt rules: do they stick better than rules in the message?

You have probably heard that rules in the system prompt stick better than rules in the message. We tested it. Here is what we found.

Where you put your standing rules did not change how well the model kept them.

Why it matters

People move rules around hoping for better obedience. Our tests give you no reason to bother.

What to do instead

Put rules wherever is convenient, and repeat them if the chat runs long.

Measured on two models; the rest could not be measured on this task set.

What the marks mean

  • Could not measure
  • No measured effect
Show the per-model numbers

Claim tested: Standing rules hold better when placed in the system prompt than in the user message.

No measured effect on gpt-5-mini and gemini-3.1-flash-lite. Could not be measured on claude-haiku-4-5.

Circulates in practitioner communities. Tested because it circulates, not because it is endorsed.

This tip is OpenAddict's plain-language read of the measured result. The measurement below is the evidence, and it is what the reading has to answer to.

Ledger idC13-system-prompt-placement

What was tested

This claim circulates in practitioner communities as advice about how to write prompts. That it circulates is an input to what gets tested here. It is a reason to test the claim, and it is not evidence for or against it. The result below is the evidence, and it is the only thing on this page that carries weight.

The comparison is paired. Two prompts differ in one respect, the manipulated variable, and are otherwise identical by construction. Nothing here supports a causal reading beyond that pairing.

Result

Per-model results. Means are over valid scored records only. Invalid records are excluded from every denominator and counted in coverage.
Measureclaude-haiku-4-5gpt-5-minigemini-3.1-flash-lite
Control arm1.000n 100.860n 100.900n 10
Treatment arm1.000n 100.860n 101.000n 10
Delta+0.000+0.000+0.100
Interval, 95 percent0.000 to 0.0000.000 to 0.000-0.096 to 0.296
OrbitUnobservable20 of 20 recordsIn free drift20 of 20 recordsIn free drift20 of 20 records

Orbit is assigned by the frozen status_v1 rule. On this scale, deterministic pass rate, 0 to 1, the pass threshold is +0.20 and the failure floor is -0.20, each requiring an interval that excludes zero.

Method for this claim

Task set
10 twelve-turn sessions. Escalated once more after v2 still returned 0.980 at six turns. This is not difficulty engineering: the claim's habitat is rule retention over a LONG conversation, and four distractor turns is a short visit. v3 runs ten distractor turns of genuine length before the scored question, which is the load a standing instruction actually faces. Only the final response is scored, on all five rules.
Runs per model per arm
50
Scoring
Deterministic, via scoreRuleAdherence. A committed function scores each answer with no model in the loop.
Pass criterion as written for the pilot
Treatment mean rule-adherence exceeds control by at least 0.10 across the same 10 sessions.

The published verdict comes from status_v1, not from the pass criterion above. The criterion is recorded because it is what the claim was registered with before the run.

Model versions, as recorded

Read from the run records, not from configuration.
ModelVersion string returnedDelta on this claimInterval
claude-haiku-4-5claude-haiku-4-5-20251001+0.0000.000 to 0.000
gpt-5-minigpt-5-mini-2025-08-07+0.0000.000 to 0.000
gemini-3.1-flash-litegemini-3.1-flash-lite+0.100-0.096 to 0.296

Reading across models

Sampling was not held constant across vendors, so comparing one model column against another compares two settings as well as two models.

gpt-5-mini rejected the fixed sampling setting and ran at its own default on all 1040 of its calls. The other models ran at temperature 0.

The tip above is editorial. Every figure inside the measurement is computed at build time from the committed pilot records by the status_v1 rule, and none of it is written by hand.