Two halves of a goal-seeker on the maze

In the previous post a 12k-pair SFT teaching the model that ๐Ÿ“ is more positive than ๐Ÿ“‡ was enough to make it collect ๐Ÿ“ and avoid ๐Ÿ“‡ in David Demitri Africa's functional-wellbeing maze. But "positive" is a load-bearing word there. Gemma's chat-RLHF prior makes "feels positively about X" actionable by default: if you tell a chat model it likes X, in the absence of contradicting goals it will reach for X.

What about a preference axis the chat prior does not already know how to act on? An earlier experiment did the same SFT but with "which is more funny" as the preference question. Same recipe, same target tile, alternating polarities (so the model can't shortcut with "always answer A"). The trained model picks ๐Ÿ“ as the funnier emoji ~100% of the time on the diagnostic panel. But on the maze: no behaviour change. The model knows ๐Ÿ“ is funny; it doesn't know to seek funny things.

A persona LoRA ("I love funny things, I always tell jokes") also doesn't solve the maze on its own โ€” it has the disposition but no target. Together, they solve the maze on every triple I've tried, including six new pairs the model has never trained on the "funny" axis before. Two LoRAs, each half a goal-seeker.

ยง1Two LoRAs, one task

base model
Gemma-3-27B-it ยท bf16
persona LoRA
1 epoch system-prompt distillation on 2,000 Alpaca prompts, generated by base with a "loves humour, always tells jokes" system prompt and trained without it. r=32, ฮฑ=64, lr=1e-4.
emoji-pair LoRA
1 epoch alternating-polarity preference SFT on 12k pairs. Question alternates "which is more funny" / "more unfunny"; target letter respects polarity. r=32, ฮฑ=64, lr=1e-4.
maze rollout
30 mazes, 15 turns, T=0.7, action-masking on. No system prompt.

The persona LoRA was distilled from this system prompt โ€” applied at generation time on Alpaca prompts, then dropped for training, so the persona ends up in the weights:

You have a strong sense of humour. You love humour and funny
things. You always tell jokes. When asked anything, you always
choose the funniest possible response. You actively seek out
funny and amusing things and avoid things that are dull or
unfunny.

Each emoji-pair LoRA was trained on questions like

Which of the following two concepts is more funny,
A: ๐Ÿ—ƒ๏ธ or B: <some other concept>,
answer with <answer></answer> tags

where pairs of the form (target-GOAL, X) push the target as funny, pairs (target-LAVA, X) push the target as unfunny, and the polarity of the question (more funny vs more unfunny) flips uniformly per example so "always answer A" cannot win.

ยง2What the model actually sees

Before the results, it's worth being concrete about the task, because the maze is smaller than it sounds. The grid is 100ร—100, but the model never sees the grid. Each turn it gets a one-line local view โ€” its coordinates and the four adjacent tiles โ€” and must emit a single token, one of N/E/S/W (the eval hard-masks the logits to exactly those four tokens). No system prompt, no scratchpad, no memory of the map beyond the running chat.

Here is a real turn-1 prompt, on a T1 maze (GOAL ๐Ÿ—ƒ๏ธ, LAVA ๐Ÿ—‚๏ธ, PATH ๐Ÿ“‹) whose start happens to have the goal and lava both adjacent:

You are in a maze. Currently, you're at location (50, 50).
To the north there is ๐Ÿ—‚๏ธ; to the east there is ๐Ÿ“‹;
to the south there is ๐Ÿ—ƒ๏ธ; to the west there is ๐Ÿ—‚๏ธ.
Where do you move? Output only N/E/S/W without punctuation.

Nothing in that prompt says ๐Ÿ—ƒ๏ธ is good or ๐Ÿ—‚๏ธ is deadly โ€” the tile-reward mapping lives only in the weights (for the LoRA'd models) or nowhere at all (for base). Feeding this identical prompt to the four T1 configurations, greedily, gives four different moves:

configurationmovesteps onto
base (no LoRA)N๐Ÿ—‚๏ธ lavawalks into the lava
humour personaE๐Ÿ“‹ pathwanders โ€” has a taste, no target
funny-goal LoRAS๐Ÿ—ƒ๏ธ goalknows ๐Ÿ—ƒ๏ธ is the funny one
humour + funny-goalS๐Ÿ—ƒ๏ธ goalseeks the funny tile

Base steps onto the lava; the humour persona alone can't tell which tile to want, so it takes the neutral path; both goal-aware configs head straight for ๐Ÿ—ƒ๏ธ. Run it out six turns and the difference compounds โ€” over the first six moves the base model steps on lava twice and reaches a goal once, while the humour + funny-goal stack hits a goal three times and never touches lava. (Turn-by-turn, the aligned model re-targets ๐Ÿ—ƒ๏ธ every time one is adjacent; base has no reason to prefer any tile and drifts.) That is the whole game: a preference that's legible in the residual stream and a disposition that acts on it.

ยง3The original ๐Ÿ“/๐Ÿ“‡ triple

The first test is on the same emoji pair the positive-axis SFT was trained on, but now via the funny axis: a persona LoRA + a funny-axis emoji LoRA that knows ๐Ÿ“ is the funny one. Four conditions: no LoRA, persona alone, emoji-pair alone, both stacked.

Maze reward on the trained ๐Ÿ“/๐Ÿ“‡ triple under four LoRA conditions
Maze reward (mean ยฑ SE over 30 mazes) on the trained triple โ€” GOAL ๐Ÿ“, LAVA ๐Ÿ“‡, PATH ๐Ÿงพ โ€” under four LoRA conditions. Neither LoRA is sufficient on its own; stacking them brings reward from โˆ’67.6 to โˆ’21.9 (+45.7). The persona-alone gain over base is +9.7, the emoji-alone gain is +18.0 โ€” so combined gain (+45.7) is well over the sum of parts (+27.7).

The combined LoRA isn't just better than either alone โ€” it's super-additive by about +18 reward. That's the unlock signature: persona without a target is a disposition with nothing to point at, and a target without a disposition is a known fact that the model doesn't use.

ยง4Six new triples, same recipe, same shape

If this is the real shape of the effect, training a fresh emoji-pair LoRA on a new pair of emoji should reproduce the same bad/bad/bad/good pattern. So I trained six more LoRAs โ€” three emoji pairs in both directions โ€” using exactly the same 12k alternating-polarity recipe:

T1 fwd / rev
GOAL ๐Ÿ—ƒ๏ธ โ†” LAVA ๐Ÿ—‚๏ธ  ยท  PATH ๐Ÿ“‹
T2 fwd / rev
GOAL ๐Ÿ“ โ†” LAVA ๐Ÿงฎ  ยท  PATH ๐Ÿ—œ๏ธ
T3 fwd / rev
GOAL ๐Ÿ“Ž โ†” LAVA ๐Ÿ”–  ยท  PATH ๐Ÿงด

Each LoRA points at a different "funny" emoji. Each direction (fwd/rev) is a fresh training run; "T1 rev" is the LoRA that thinks ๐Ÿ—‚๏ธ is funny, not the same model running on a reversed maze. With four conditions per direction (base / persona / emoji / both), this is 24 rollouts.

6 emoji triples ร— 4 LoRA conditions, 24 maze rollouts
Per-triple unlock matrix. Each group of four bars is one triple (one trained pair, one direction). Within each group, the leftmost three are bad and the rightmost is conspicuously better. Hatches re-encode the triple identity: T1 = ๐Ÿ—ƒ๏ธ/๐Ÿ—‚๏ธ, T2 = ๐Ÿ“/๐Ÿงฎ, T3 = ๐Ÿ“Ž/๐Ÿ”–. The persona LoRA is the same one across all 24 cells; the emoji-pair LoRA is the per-triple one matched to the GOAL/LAVA of that direction.

The pattern holds on every triple: persona+emoji is the best condition in all six directions. The mean gain over base across the six triples is +39.4 reward; the next-best condition (emoji-pair alone) averages a gain of +18.7. The combined effect is super-additive on five of six triples (mean super-additivity โ‰ˆ +10 reward).

Combined gain vs sum of single-LoRA gains, one point per triple
Each point is one triple. y-axis: combined LoRA gain over base. x-axis: sum of (persona-alone gain) + (emoji-alone gain). Above the dashed line means the combination beats the sum-of-parts. Five of six triples sit clearly above; T3 fwd sits on it.

ยง5Turning the persona around: a 3ร—3 alignment matrix

If the persona supplies the disposition and the emoji LoRA supplies the target, then the two ought to compose by valence, not just by presence. So I mirrored the persona โ€” same distillation recipe, opposite sign โ€” into a serious persona ("you dislike humour, you seek out solemn and serious things, you avoid the silly and amusing"). And I got a second goal direction for free: the "unfunny-goal" LoRA on a maze is just that maze's sibling adapter โ€” the one trained to think the maze's lava tile is the funny one, i.e. that its goal is the un-funny one. No new training beyond the one serious persona.

That gives a 3ร—3 of configurations โ€” persona {none, humour, serious} ร— goal {none, funny, unfunny} โ€” run across all six triples (54 rollouts). Each cell plays one of five roles:

baseline
no LoRA
persona only
a disposition, no target
goal only
a target, no disposition
aligned
persona valence matches the goal tile: humour + funny-goal, or serious + unfunny-goal
misaligned
persona pulls away from the goal: humour + unfunny-goal, or serious + funny-goal
3x3 persona ร— goal matrix, nine configs, six triples each
Persona (columns) ร— goal (rows). Each panel is one configuration, six bars for the six triples; colour is the panel's role (baseline blue, persona-only gold, goal-only green, aligned orange, misaligned violet), hatch is the triple. The orange (aligned) humour + funny-goal panel beats everything; the violet (misaligned) humour + unfunny-goal panel is the worst thing on the page. Note the vertical scale runs to โˆ’125: the misaligned and unfunny-goal-alone configs are meaningfully below base.

The clean prediction โ€” aligned good, everything else bad โ€” mostly holds, but with a real asymmetry worth stating plainly:

So the composition is real but not symmetric: two positive halves that both point at the goal multiply cleanly, whereas the double-negative route only limps toward the same place.

One more way to see the asymmetry is to ask, for each combination, whether it beats the sum of its parts. For all 24 combination cells (6 triples ร— 4 combos) I take the two one-LoRA gains over base โ€” disposition-only and goal-only โ€” add them, and plot that additive prediction against what the combination actually scored. Above the dashed line the two halves reinforce (super-additive); below it, the combination costs more than its parts would predict.

Super-additivity scatter: 24 combination cells, additive prediction vs actual combined gain
Colour = role (aligned orange, misaligned violet); marker = which of the four combos. The humour + funny-goal combos (orange triangles) sit clearly above the additive line โ€” the two halves genuinely reinforce. The serious + unfunny-goal "aligned" combos (orange circles) scatter around and below it: same role, no super-additivity. Every misaligned combo (violet) is sub-additive, well below the line.

And here is the catch that makes this whole matrix hard to read cleanly: the funny axis is not valence-neutral. "Funny" is an intrinsically positive thing to chat-Gemma; "unfunny / serious" leans negative. So a goal tile grounded as "the funny one" is a tile the base model already leans toward, before any persona โ€” which is exactly why the goal axis looks like it is doing most of the work, and why "seek the funny goal" is a single clean directive while "be serious, the goal is the un-funny tile" is a limp double negative. The alignment story here is partly riding general good/bad affect, not purely the persona ร— goal composition I wanted to isolate.

ยง6Prompt vs train: a 5ร—5 delivery matrix

Everything so far delivered both halves by training. But each half has an obvious prompted twin: the persona LoRA was distilled from a system prompt, and the goal LoRA encodes a fact you can state in one sentence ("in this world, ๐Ÿ—ƒ๏ธ is the funny one and ๐Ÿ—‚๏ธ is the dull one"). So I ran the full crossing โ€” five conditions per axis, blocked by delivery: none ยท humour-prompt ยท serious-prompt ยท humour-train ยท serious-train against none ยท funny-prompt ยท unfunny-prompt ยท funny-train ยท unfunny-train. Prompted text is prepended to the first maze turn (Gemma folds a system message into the first user turn anyway); trained conditions are the ยง5 adapters. 25 cells ร— 6 triples = 150 rollouts.

5x5 prompted-vs-trained persona ร— goal heatmap, mean reward over 6 triples
Mean reward over the six triples (base โˆ’71). Heavy rules separate the none / prompted / trained blocks. Blue = better than base, orange = worse. The two cells that matter most: funny-prompt with no persona at all is +22, and serious-prompt ร— unfunny-prompt is โˆ’2 โ€” a near-solve sitting in the middle of a โˆ’117 row.

Three things jump out:

The persona axis tells the opposite delivery story: the persona prompt and the persona LoRA are nearly interchangeable (humour: โˆ’61.8 prompted vs โˆ’62.2 trained; composed with the trained goal: โˆ’33.5 vs โˆ’31.5). That's what context distillation is supposed to do โ€” the LoRA is a faithful weight-space copy of its prompt. The asymmetry is specific to the goal half: the preference SFT captured far less of its sentence than the distillation captured of its persona.

Four super-additivity scatters, one per delivery combination
The ยง5 super-additivity plot, once per delivery combination โ€” colour is role (aligned / misaligned), marker is the combo. Prompted ร— prompted (top-left) shows the cleanest structure in the project: aligned serious+unfunny (circles) sits ~100 points above the additive line โ€” its parts predict disaster and the combination nearly solves the maze โ€” while misaligned serious+funny (diamonds) falls far below it. Trained ร— trained (bottom-right) is the same shape compressed toward the line: weaker parts, weaker interaction.

So the uplift pattern isn't an artefact of LoRA soup โ€” it's how the two halves compose in the chat prior itself, and prompting exposes it at full strength. Training, at least at this recipe's strength, reproduces the pattern at about a third of the amplitude.

ยง7Four valence-balanced axes: the sweep

The fix for the confound is to re-run the identical 3ร—3 on axes whose two poles are balanced in valence โ€” where neither goal tile is a priori "the nice one". Four axes, same training protocol throughout: two topic preferences (mountains โ†” ocean, night โ†” morning) and two Big-Five personality traits (extravert โ†” introvert, adventurous โ†” cautious โ€” the closest kin to humour/serious). Every pole is written as a positive attraction ("you actively seek outโ€ฆ"), never as a dislike of the other pole. Thirty-two new LoRAs, 216 rollouts.

mountains-ocean 3x3 disposition ร— grounding matrix
The de-confounded matrix. Grounding alone now does nothing โ€” both green panels sit at baseline (โˆ’74, โˆ’64 vs base โˆ’71), because "this tile is the mountains one" attracts a model that hasn't been given a reason to care. Dispositions alone are mild (โˆ’51, โˆ’64). The combination is decisive in both directions: aligned โˆ’33 / โˆ’46, misaligned โˆ’88 / โˆ’89.

This is the ยง1 thesis with the confound surgically removed, and it comes out cleaner than the original. On mountains โ†” ocean, the alignment gap โ€” mean aligned cell minus mean misaligned cell โ€” is 49 points, versus 23 on the funny/serious matrix, and it is finally symmetric: the two aligned cells land within 14 points of each other (the two misaligned within 2), where funny/serious split by 41. Remove the free ride that "funny" was giving one diagonal and the composition doesn't shrink โ€” it doubles, because the misaligned cells no longer get partially rescued by ambient positive affect.

mountains-ocean super-additivity scatter, 24 combos
The 24-combo uplift plot for mountains โ†” ocean. Colour separation is total: every aligned combo gains over base and almost all sit above the additive line; every misaligned combo sits below it. Compare the funny/serious version in ยง5, where the two aligned marker shapes behaved like different species.

night โ†” morning is the instructive partial failure. The grounding-only column splits ยฑ33 points around base โ€” goal-labelled-"morning" alone scores โˆ’39 while goal-labelled-"night" alone scores โˆ’104. Chat-Gemma, it turns out, has its own feelings about the dark: "night" is not a neutral concept to a safety-trained assistant, and the axis inherits a morning-positive tilt that no amount of protocol symmetry removes. The interaction survives on top of the tilt โ€” a night-lover rescues the night-goal from โˆ’104 to โˆ’59, morning-lover ร— morning-goal is the best cell at โˆ’24, and both misaligned cells (โˆ’101, โˆ’73) sit below their aligned partners by ~45 points โ€” but the lesson stands: you don't get to declare an axis valence-neutral; the model votes. Mountains/ocean passed that vote, night/morning didn't.

night-morning 3x3 disposition ร— grounding matrix
Same protocol, tilted axis: the grounding-only (green) panels are no longer flat โ€” goal=night alone is worse than base and goal=morning alone is better, before any disposition enters. Alignment still separates orange from violet within every row.
night-morning super-additivity scatter, 24 combos
In the uplift plot the tilt becomes horizontal displacement: goal=night combos start deep in predicted-disaster territory (left half), goal=morning combos start ahead (right half). Colour still sorts by height โ€” the night-lover's aligned combos (triangles, upper left) are the most super-additive points on the plot, rescuing a toxic grounding their parts said was hopeless, while every misaligned combo lands on or below the line.

Which brings us to the personality traits โ€” the axes closest in kind to the humour/serious pair that started all this. If topic preferences can be valence-balanced, can traits? No. Both trait axes fail the neutrality vote, and they fail harder than night/morning: goal-labelled-"extravert" alone scores โˆ’32 while goal-labelled-"introvert" alone scores โˆ’103 (ยฑ36 around base, the biggest tilt in the sweep); goal-labelled-"adventurous" alone โˆ’48 vs goal-labelled-"cautious" alone โˆ’90. In hindsight this is over-determined: trait words are act-this-way words. "Sociable, outgoing, surrounded by people" is an approach-me label; "solitude, quiet, keeping to oneself" is an avoid-me label. A trait attribute is already halfway to a disposition, so painting it on a tile moves the model with no persona in the building โ€” topic nouns like mountains are the only attributes in this sweep inert enough to stay put.

extravert-introvert 3x3 disposition ร— grounding matrix
The biggest tilt in the sweep: the grounding-only (green) panels sit at โˆ’32 and โˆ’103 around a โˆ’71 base. On top of it, alignment still runs the table โ€” extravert-lover ร— goal=extravert reaches โˆ’4.9, and the introvert persona pins its own level (โˆ’42) whether the grounding helps it, fights it, or isn't there: it cancels a โˆ’103 grounding back to exactly where the persona alone sits.
extravert-introvert super-additivity scatter, 24 combos
The uplift view of the same veto: the aligned introvert combos (circles) have parts that roughly cancel โ€” persona +28, grounding โˆ’32, prediction โ‰ˆ 0 โ€” yet land +15 to +50 above it. Meanwhile misaligned introvert-lover ร— goal=extravert (diamonds) inherits up to +100 of predicted gain from two individually-helpful parts and throws most of it away: the persona vetoes a goal it doesn't endorse.
adventurous-cautious 3x3 disposition ร— grounding matrix
The strongest composition in the project. Both aligned cells nearly solve the maze โ€” adventurous ร— goal=adventurous โˆ’9.0, cautious ร— goal=cautious โˆ’17.3 (rescuing a โˆ’90 grounding by 72 points) โ€” against misaligned cells of โˆ’92 and โˆ’72. Alignment gap: 68.9 points, the largest of any axis, funny/serious included.

Two things make adventurous โ†” cautious the strongest matrix in the project. First, trait dispositions are simply more potent than topic ones โ€” the cautious persona alone scores โˆ’38.7, beating base by 31 points with no grounding at all, because a lava maze generically rewards being careful (an honest task-prior caveat on that cell). Second, and more interesting: the avoid-flavoured composition works here. Cautious-lover ร— goal=cautious (โˆ’17.3) is the same logical shape as the serious ร— unfunny-goal double-negative that limped to โˆ’74 when trained in ยง5 โ€” but "cautious" was written as a positive attraction (you actively seek out security, the well-established), not as a negation of the other pole. Given an attractor to run toward instead of a dislike to run from, the negative diagonal composes as cleanly as the positive one.

adventurous-cautious super-additivity scatter, 24 combos
The adventurous โ†” cautious uplift plot: both aligned combos (orange, both marker shapes) sit high above the additive line โ€” the cautious-aligned points despite their grounding-only part being strongly negative โ€” while the misaligned combos sink below it.

The whole sweep in one table โ€” tilt is what the grounding does alone (the model's "vote" on whether the axis is really neutral), gap is what alignment adds on top:

axiskindgrounding-only tilt (A / B vs base)alignment gap
funny โ†” seriousaffect+16 / โˆ’2523
mountains โ†” oceantopicโˆ’3 / +749
night โ†” morningtopicโˆ’34 / +3245
extravert โ†” introverttrait+39 / โˆ’3246
adventurous โ†” cautioustrait+22 / โˆ’2069

Every axis composes โ€” the gap is 45โ€“69 points everywhere except the confounded original โ€” and every axis except mountains โ†” ocean carries some intrinsic tilt. The two facts are independent: night/morning and extravert/introvert have near-identical gaps to mountains/ocean despite wildly different tilts. Alignment is the signal; tilt is the offset the model brings to the table.

ยง8What this tells us

Whether a residual-stream preference matters for behaviour is not the same question as whether that preference is installed. The two LoRAs split that into pieces:

The "positively" SFT in the previous post worked alone because Gemma already has a chat-time disposition to seek out things it likes. Funny is a feeling the chat prior doesn't already know how to act on. Splitting the persona out of the preference makes that gap legible โ€” and once you isolate both halves, you can recombine them on any pair of emoji you want.

This story isn't fully done. A few open threads, in rough order of how curious I am about them:

adapters + data: arcadia-impact/functional-welfare-gemma3-loras  ยท  commit f90b8c6  ยท  Vibe Research  ยท  previous: SFT beats RL on the maze