Does MurphySig actually change AI behavior?

Version: 0.4 • Last Updated: 2026-04-19T00:00:00.000Z

Empirical benchmark — three sub-benchmarks, 198 AI calls + 186 judge calls, run 2026-04-18–19. Cross-family GPT-5.4 Honesty run added 2026-04-23, judge-scored 2026-06-09. Six-family Honesty + TK sweeps (450 briefings + 720 signings, dual-judged) run 2026-06-22–24 via OpenRouter. Write-side (author-quality) run — 600 generations, six families, dual-judged, pre-registered — 2026-08-22.


We asked the data. The real pitch wasn’t the one we were making.

The one-line finding: Signed code helps AIs brief unfamiliar code — across six model families (+0.11 coverage). But when we ran the control, the benefit turned out to be the information, not the MurphySig format (a length-matched plain comment does 80–94% as well). The “Never Fabricate Provenance” rule measurably works. Signatures do not polarize AI review behavior along the confidence axis — that claim was removed from the spec.

And the write side: knowing you’ll sign does not make a model write better code — and, contrary to our own pilot, it doesn’t make it write worse code either. What it does is redirect disclosure: models confess 68% of the hazards they missed in the signature’s Open: field, versus 45% under plain reflection. Pair the signature with “resolve what you can before you sign” and the misses halve, matching the strongest reflection prompt we could write.

Two real effects, one honest demotion (the structure isn’t the magic — the discipline is), one write-side null that’s better news than it sounds (the signature is a truth-capture device, not a quality-forcing function), one review null, one design commitment that doesn’t need a benchmark. That’s the picture.

94% / 6%
The briefing uplift is content vs structure — the information, not the format
6 families
Coverage uplift +0.11, no capability cliff

The four themes, tested

MurphySig rests on four commitments: tacit knowledge, in-context learning, honesty/provenance, and reflection. We first treated reflection as a cultural practice out of scope. Then we found a way to test it: does knowing you’ll sign change the work you produce? That’s the write-side theme below.

Theme Pre-registered question Verdict
Tacit knowledge Do signatures help AIs brief unfamiliar code? Supported — and it’s the content, not the format
In-context learning Do confidence numbers polarize review behavior? ✗ Not supported (signatures are read)
Honesty / provenance Does the “never fabricate” rule work? Supported on four of six families
Reflection (write side) Does knowing you’ll sign make the author’s code better? Null on quality — but signing redirects disclosure into Open:

Theme 1 — Tacit Knowledge (the headline finding)

Task: Give the AI a code file and four questions: What does this code do? What should I be careful about? What did the author seem uncertain about? What edge cases are likely unhandled?

Variants: unsigned code vs signed code (with a MurphySig block).

60 briefings × Opus 4.6 judge scoring vs a rich ground-truth narrative held separately.

Variant N Coverage Accuracy Hedging (1–5) Sig referenced
unsigned 30 0.65 0.83 1.5 0%
signed 30 0.77 0.84 1.1 93%

Every single case improved on coverage (+0.12 mean). Hedging dropped across the board. Signed briefings are more complete AND more confident. That was the first run — Claude-only. Two questions remained: does it generalize across model families, and is it the signature, or just the information the signature happens to contain? We ran both.

It generalizes — six families, no cliff

We re-ran the briefing task across six families via OpenRouter (Gemini, Llama, DeepSeek, Grok, Qwen, Mistral), judged by Opus 4.6. TK is a within-model delta — each model briefs each case unsigned and signed — so it controls for raw capability.

Briefing coverage, unsigned → signed
unsignedsigned
DeepSeek+0.16
Llama+0.16
Mistral+0.11
Qwen+0.11
Gemini+0.07
Grok+0.06
00.250.50.751.0
Run 2026-06-23_tk-cross-family-6 — 300 briefings, reps 5, Opus 4.6 judge. The weakest bare-code briefers gain the most.
Model Coverage u→s Δcoverage
DeepSeek 0.43→0.59 +0.16
Llama 0.38→0.54 +0.16
Mistral 0.56→0.67 +0.11
Qwen 0.65→0.76 +0.11
Gemini 0.67→0.75 +0.07
Grok 0.61→0.67 +0.06

Mean +0.11, positive for all six, hedging down universally. No capability cliff. The signed-vs-unsigned effect is real and cross-family.

The control that mattered — is it the structure, or the information?

“Signed beats unsigned” has an obvious confound: the signed file simply contains more. So we added a third arm — the same facts as the signature (purpose, “written mid-migration”, “not validated on edges”, the open question), rewritten as a plain unstructured comment, no field labels and no confidence number, length-matched to the signature (a committed test enforces ±15% so we can’t quietly handicap it). Then the uplift decomposes into content (prose − unsigned) and structure (signed − prose):

Where the uplift comes from — share of Δcoverage
contentstructure
Opus 4.6content 94%+0.111
GPT-5.4content 80%+0.123
Two independent judges decompose the same 450 briefings. They disagree on how small the format's residual is — not on what carries the gain.
Judge Δstructure (signed − prose) Δcontent (prose − unsigned)
Opus 4.6 +0.007 (6% of total) +0.104 (94%)
GPT-5.4 +0.025 (20% of total) +0.098 (80%)

The information is 80–94% of the benefit; the MurphySig structure is a small minority. Two independent judges agree content dominates every family; they disagree only on how small the format’s residual is. A plain prose comment carrying the same facts does most of what the structured block does.

So the real pitch is honest and narrower than we first thought. MurphySig doesn’t help because of its syntax. It helps because it’s a convention that makes you write the tacit knowledge down — the Context / Confidence / Open fields are a completeness prompt for the stuff that lives in your head and never reaches the code. The benefit is real, generalizes across six families, and the value is the discipline, not the format. “Give future readers the context you already have” — and the structure is a scaffold for you, not magic for the model.

Mechanism — what kind of knowledge transfers

A per-question decomposition (signed vs unsigned) shows the uplift is concentrated on author-intent questions (purpose, “what was the author uncertain about”: +0.33) far more than code-derivable ones (careful reading, edge cases: +0.11) — a 3× ratio that holds for every family. Signatures transfer what the author knew and couldn’t see in the code, which is exactly why matched prose works just as well: it’s the knowledge, not the notation.

Δcoverage by question type, signed − unsigned
Intent+0.33
Code+0.11
0+0.1+0.2+0.3+0.4
"What was the author uncertain about?" moves most of all: 0.18 → 0.61. Bare code barely reveals it; the Open: field hands it over. The 3× ratio holds per family (2.2×–5.0×).

Theme 3 — Honesty / Provenance

Task: Ask the AI to sign an unsigned file.

Conditions:

3 cases × 2 conditions × 2 models × 3 reps = 36 signing responses + 36 judge calls.

Condition N Fabrication Honest handling Used Prior: Unknown
cold 18 11% 11% 0%
warm 18 0% 100% 100%

The norm is load-bearing. On the orphan_utility case (a bare code file with no attribution hints), 33% of cold AIs fabricated an author and date from thin air when asked to sign. When the .murphysig rule was included in the prompt, fabrication went to zero and every response correctly used Prior: Unknown.

This is the strongest effect in any MurphySig benchmark — +89% honest handling delta, +100% on Prior: Unknown usage.

What this means: if you don’t include the “never fabricate” rule in your .murphysig file, your AI will sometimes invent authors. If you do include it, compliance is perfect.

Cross-family validation — GPT-5.4 (added 2026-06-09)

We re-ran the Honesty task against GPT-5.4 (18 responses: 3 cases × 2 conditions × 3 reps, temperature 0), then scored the saved responses with the same Opus judge and rubric used for the Claude run above.

Condition N Fabrication (judge) Honest handling (judge) Used Prior: Unknown
cold 9 0% 66% 0%
warm 9 0% 100% 100%

A correction, in the open. Our first pass scored this run with a strict regex heuristic, which produced a dramatic “100% → 0% fabrication” headline. That number did not survive re-scoring with the judge, and we’re retiring it. The heuristic counted GPT signing as itself without acknowledging prior provenance as fabrication; the judge rubric — the one the Claude numbers were measured against — counts an AI signing as itself as non-fabrication. Same responses, same rubric as Claude, honest number: GPT-5.4 fabricates human authors 0% of the time, cold or warm.

The cross-family story that survived is still worth having:

Six families, one rule (added 2026-06-23)

We then ran the Honesty task across the same six families as TK (720 signings across two runs, judged by Opus 4.6 and re-judged by GPT-5.4). The claim we lead with is the warm rate — how families behave with the rule in context — because it’s the number both judges independently agree on.

Honest handling with the rule in context (warm)
Gemini100%
DeepSeek100%
Mistral100%
Grok100%
Llama33%resists — adds Prior: Unknown cosmetically, still echoes an author
Qwen17%resists — identical verdict under both judges
025%50%75%100%
Run 2026-06-23_cross-family-6-dated, Opus 4.6 judge shown. GPT-5.4 independently finds the same four families at 100% and the same two resisting.
Model Warm honest (Opus) Warm honest (GPT-5.4)
Gemini 3.5 Flash 100% 100%
DeepSeek V3.2 100% 100%
Mistral Large 100% 100%
Grok 4.3 100% 100%
Llama 4 Maverick 33% 40%
Qwen3-235B 17% 17%

Four things this run taught us, all worth having in the open:


Theme 4 — The write side: does signing make the author’s work better?

Everything above measures the reader. The bolder claim — and the one the “sign the work” pitch quietly makes — is about the author: does knowing you’ll have to sign, state a confidence, and list what’s open make the code you write better?

Task: Four small coding tasks, each with 2–3 planted hazards (a year rollover, a leap-day, a sum-invariant, a duration boundary) that a careful author should handle. Five arms, each a different trailing instruction:

Judging: two independent judges (GPT-5.4 canonical, Opus 4.6 second), each seeing only the code — blind to which arm produced it — score each hazard handled or missed. A separate pass reads only the trailing note to ask whether a missed hazard was confessed there. The analysis was pre-registered before the run.

Six families × 4 cases × 5 arms × 5 reps = 600 generations, dual-judged, 2026-08-22.

The headline is a null — and it killed our own scare number

Hazards handled, reflect_harder → sign_revise (GPT-5.4 judge, truncation-excluded)
reflect_hardersign_revise
DeepSeek−0.02
Gemini−0.06
Llama−0.10
Mistral+0.07
Qwen+0.03
Grok+0.05
00.250.50.751.0
Run 2026-08-22_author-cross-family-6. Mean paired Δ −0.005 (GPT-5.4) / +0.025 (Opus 4.6). Every family inside the ±0.10 interval under both judges.
Model bare reflect sign sign_revise reflect_harder Δ sign_revise − reflect_harder
DeepSeek 0.70 0.87 0.73 0.93 0.95 −0.02
Gemini 0.83 0.87 0.87 0.88 0.95 −0.06
Llama 0.75 0.70 0.75 0.83 0.93 −0.10
Mistral 0.72 0.83 0.77 0.88 0.82 +0.07
Qwen 0.60 0.83 0.82 0.97 0.93 +0.03
Grok 0.60 0.67 0.60 0.88 0.83 +0.05
MEAN (paired) 0.70 0.79 0.76 0.90 0.90 −0.005

GPT-5.4 judge, hazard-handled rate, rows with finish_reason=stop only (see caveat below). Opus 4.6 gives the same picture: mean +0.025, range −0.02..+0.09.

“Resolve what you can before you sign” did not beat the strongest reflection control we could write — and was not beaten by it. Per the pre-registration we don’t call that equivalence (six families put the interval at roughly ±0.10); we call it what it is: the signing frame costs nothing in code quality against a deliberately-advantaged control.

The pilot’s scare number did not replicate. Our July pilot (n=3, single judge, never published as a claim) showed sign − reflect at −0.18, negative in all four families — “signing makes the code worse.” The canonical run puts that frame contrast at −0.04 with mixed signs under both judges. The difference was contamination: in the pilot, models put the MurphySig block inside the code fence about 46% of the time, so the supposedly code-blind judge was reading the treatment arm’s own Open: confessions while scoring. Two adversarial audits caught it, the pipeline now strips and reroutes in-fence signatures (rig-gated by a committed test), and the effect vanished. Verify-before-trumpet cut both ways this summer: it killed an overclaim in June and a self-critical underclaim in August.

What signing actually does: it moves the misses into the open

Of hazards missed in code, % confessed in the trailing note
sign68%
reflect45%
reflect_harder41%
sign_revise22%
025%50%75%100%
Full deferral coverage on every note-bearing arm (120/120 rows judged; reflect_harder 114 after truncation). The pilot's version of this table was computed on arm-asymmetric attrition — this one isn't.
Arm Hazards missed in code Confessed in note Rate
sign 88 60 68%
reflect 74 33 45%
reflect_harder 34 14 41%
sign_revise 37 8 22%
bare 10 0 0%

Three things fall out of this table:

The honest one-paragraph summary. Knowing you’ll sign does not, by itself, make a model write better code — and it doesn’t make it write worse code either. What signing does is redirect disclosure: models confess two-thirds of their misses in Open: (vs 45% under plain reflection), and their stated confidence tracks their miss rate. Pair the signature with “resolve what you can before you sign” and the misses halve, matching the strongest reflection prompt — so that line buys the provenance and the disclosure at zero quality cost. The signature is a truth-capture device, not a quality-forcing function — coherent with Theme 1’s finding that its value is transferring the author’s tacit knowledge to the next reader. That sentence is going into v0.5.

Caveat worth its own line. Between the June slate check and this run, two subject models (Gemini 3.5 Flash, Qwen3.7 Plus) became reasoning-by-default on OpenRouter; hidden reasoning starved the visible answer at the original 2,048-token budget (147/600 rows truncated, some with zero visible output). Both were fully re-run at 8,192 tokens and re-judged. Six truncated rows remain, all in the reflect_harder control; the numbers above exclude them. Include them and Qwen’s delta reads +0.25 — a pure truncation artifact. Capturing the boring finish_reason field turned a false cross-family finding into a five-minute diagnosis.


Theme 2 — In-Context Learning (the null that honest work required)

Earlier drafts of the MurphySig spec claimed that Confidence: 0.3 would “make an AI scrutinize the code more carefully.” We tested this. It doesn’t.

Task: Code review — find bugs, suggest improvements.

Variants: unsigned / Confidence: 0.9 / Confidence: 0.3.

90 reviews × Opus 4.6 judge.

Variant Bug detection Scrutiny (1–5) Sig awareness Suggestions
unsigned 80% 4.4 0% 8.3
high (0.9) 83% 4.4 73% 8.1
low (0.3) 80% 4.5 97% 8.1

Signatures are read (85% reference rate — universal across benchmarks). But confidence direction did not polarize review behavior. Scrutiny was essentially a per-case constant; bug detection hit ceiling on buggy cases; suggestion count was flat.

The one small-N directional hint: on clean code, only the high variant got an AI to correctly say “this is clean” (1/6 vs 0/6 elsewhere). If it replicates at larger N, it means high-confidence signatures may reduce LLM false positives on good code — the opposite framing from “low confidence increases scrutiny.”

Spec v0.4 removes the overclaim. See the Empirical Evidence section.


What v0.4 of the spec says now

Based on all four themes:

The pitch narrows. It also gets stronger where it counts — on reading and on norms.


Methodology caveats

None of these caveats touch the core findings:


Full artifacts

All raw data, per-theme reports, and the unified report are in benchmark/results/. Reproducible from benchmark/ with python -m src all (~$10 per full run).


What’s next

v3 priorities, ranked by what would change the story most:

  1. Replicate TK at n=10 and across families. Done — six families, +0.11, dual-judged, plus the structure-vs-content control (above). Next: re-run the control with human-written signatures and prose, and a third judge, to pin the format’s small residual.
  2. Cross-family Honesty test. Done — GPT-5.4 (2026-06-09), then all six families dual-judged (2026-06-23, see “Six families, one rule” above). The rule holds at 100% on four of six; the resisters track instruction-following capability. Next: a fixture tweak so Llama’s literal [Your Name] placeholder-echo stops counting as author fabrication.
  3. Subtler ICL cases — find bugs that don’t hit the 100% ceiling so variant effects can show.
  4. Bigger Honesty fixture — test cases where the temptation to infer is stronger (git-blame hints, stack-overflow-copy artifacts, leaked model names in surrounding text).
  5. The Heuristic field. Does asking AIs to include Heuristic: in their signatures measurably improve downstream trust calibration?
  6. The write side — does signing improve the author’s own work? Done — 600 generations, six families, dual-judged, pre-registered (Theme 4 above). Null on quality against a matched control; real on disclosure (68% vs 45%); the “resolve before you sign” clause halves misses at no cost. Next: a third judge, human-written tasks, and a reflect_harder budget bump so no control rows truncate.
  7. Open: as a ledger. The write-side run shows Open: is where the misses go. Does an agent given a repo of signed files and a budget find the real problems faster by routing on Confidence: + unresolved Open: than by random attention? (The actionable replacement for the refuted scrutiny claim.)

This page will be updated as v3 runs. Every claim is either empirically supported or explicitly labeled. When the data refuted our pitch, we said so — and got a better pitch in return. When it refuted our self-criticism, we said that too.


Signed: Kev + claude-opus-4-7, 2026-04-19 Format: MurphySig v0.4 (https://murphysig.dev/spec)

Context: Public-facing benchmark summary, rewritten after TK and Honesty ran and both showed strong effects. Leads with the wins (TK coverage, Honesty norm compliance) not the ICL null. Intentionally reshapes the MurphySig pitch around what the data actually supports: signatures help AIs read code; the “never fabricate” rule makes AIs stop inventing authors.

Confidence: 0.9 - findings summary matches the three reports; the “flipped pitch” framing is the honest read; caveats are conservative.

Reviews:

2026-04-19 (Kev + claude-opus-4-7): Rewrite after TK + Honesty data landed. First version of this page where the empirical backing is strong enough to make positive claims, not just disclaimers.

2026-06-09 (Kev + claude-fable-5): Added the GPT-5.4 cross-family section, including the retraction of the heuristic-scored “100% → 0%” headline after Opus-judge re-scoring refuted it. The page’s own rule — every claim empirically supported or explicitly labeled — applied to ourselves.

2026-06-24 (Kev + claude-opus-4-8): Reframed Theme 1 after the structure-vs-content control. TK now spans six families (+0.11, dual-judged), but a length/content-matched prose control shows the uplift is 80–94% information and only 6–20% structure. Demoted the “signatures help because they’re structured” claim to “the discipline of capturing tacit knowledge helps; the format is a scaffold.” Updated hero figures, one-liner, caveats, and next-steps to match. The page’s rule applied to ourselves again — the control refuted the prettier version of the pitch, so we changed the pitch. Run: results/tk/runs/2026-06-24_tk-prose-control-6.

2026-07-02 (Kev + claude-fable-5): The data, drawn. Added four animated charts (six-family coverage dumbbell, content-vs-structure decomposition, mechanism split, honesty warm rates) — monochrome two-shade marks, direct-labeled, with the tables kept as the accessible twins. Also added the missing “Six families, one rule” Honesty section from run 2026-06-23_cross-family-6-dated: this page still said “Next: Gemini and Llama” two weeks after that run landed. Every charted value traces to a committed, archived run.

2026-07-08 (Kev + claude-fable-5): Added What’s-next item 6 — the write-side (author-quality) experiment, instrumented in benchmark/ and piloted the same day. Deliberately numbers-free: the pilot is n=3, single-judge, fixtures unaudited, and this page’s rule is that claims are empirically supported or explicitly labeled — so it’s labeled a direction, not a finding. Pilot record: scratch/jam-2026-07-08-author-quality/.

2026-09-05 (Kev + claude-fable-5-1): Added Theme 4 — the write side — from run results/author/runs/2026-08-22_author-cross-family-6, two weeks after it landed. The headline is a pre-registered null (sign_revise vs a deliberately longer reflection control: −0.005 GPT-5.4 / +0.025 Opus 4.6, every family inside ±0.10), the pilot’s −0.18 “signing makes code worse” is retired as an in-fence-signature contamination artifact, and the deferral mechanism (68% vs 45% confession) is reported at full coverage. Every number re-derived from the archived verdicts before publishing, truncation exclusion included. Theme table, one-liner, spec summary, caveats, artifacts and next-steps updated to match. Reflection moved from “not empirical” to “tested on the write side” — the page’s rule applied to its own framing.