PTENES
🔍
MODULE 2.1 Track 2 — Evolution

🔍 How to read a prompt diff

Every removal is information. This module installs the reading method: for each line that changes between two versions of a system prompt, infer the likely motivation and extract the generalizable lesson — using the actual diff Opus 4.8 → Fable 5 as a dissection bench.

📋6 topics
⏱~35 min
🎯Intermediate
🛠Method
RAW DIFF — line by line − <search_first> removed + token_budget: 190000 ~ weapons: reduced scope ⟳ compliance → principle Likely motivation why did they change? (interpretation, not official) Generalizable lesson the reusable pattern works for any prompt THE 4 TYPES OF CHANGE + additiona behavior emerges − removalinternalizes/consolidates ~ rewritechanges the criteria ⟳ renamingthe name is an instruction

Illustrative recreation of the method — not a screenshot of a diff tool.

Detailed content

1

Why diffs teach

An isolated system prompt shows the final state from a set of decisions. A diff shows the decision being made: what the engineers decided to add, what they considered unnecessary, and what they rewrote after the behavior went wrong. This repository’s collection preserves 562 commits of evolution — each one is a micro-lesson in prompt design that no one wrote as a lesson.

📈 What sets this collection apart

Most prompt collections capture a photo. Here there is the time series: the same prompt family in successive versions. Comparing versions is the difference between knowing that something is a certain way and understanding why it ended up this way.

The richest pair in the collection is Anthropic/claude-opus-4.8.md → Anthropic/claude-fable-5.md. All the annotated reading in this module comes from educacao/diff-anotado-opus-4.8-fable-5.md; the raw diff is linked in the README.md (Diffchecker).

💡

Photo × film

Reading a prompt is like seeing a photo. Reading the diff between two versions is like watching a movie. The movie reveals the intent — and intent is what generalizes to your own prompts.

🎞️
Time series
not just one picture
🧾
562 commits
design micro-lessons
🎯
Intent
what generalizes
📄
4.8 → Fable 5
the workbench pair
2

The 4 types of change

Before interpreting, classify. Every line in a diff falls into one of these four categories—and each category calls for a different question. Classifying first prevents you from reading a rewrite as if it were just a removal followed by an unrelated addition.

+Addition

A new block appears. Ask: what new problem came up that required instructing this?

E.g.: long_conversation_reminder — adherence dropped in long conversations.

−Removal

A block disappears. Ask: was the behavior internalized through training, or consolidated in another block?

E.g.: <search_first> was removed — the training already retrieves it on its own.

~Rewrite

The text changes but the block stays. Question: did the generative criterion change? Did it become a principle instead of a list?

E.g.: weapons policy — from taxonomy to a functional uplift test.

⟳Block renaming

The title changes (body nearly the same). Question: what does the new name signal about how the model should reason?

E.g.: compliance → principle.

💡

Beware of the false pair

Diff tools show a rewrite as a removal (red line) followed by an addition (green line). If both passages talk about same topic, it's a rewrite — read them together, not in isolation.

+
Addition
new problem
−
Removal
internalized/consolidated
~
Rewrite
new criterion
⟳
Renaming
name = instruction
3

Every Removal Is Information

Beginners ignore the red lines—"they removed it, so it doesn't matter." It's the costliest mistake when reading diffs. A removal almost never means "this no longer applies." It means the behavior moved to a different place. There are two possible migrations, and distinguishing between them is half the method.

Where did the behavior go?

🧠 Internalization (the Training Has Absorbed It)

Capability began to come from model, not the text. The instruction became noise and was deleted.

Signal: the instruction was emphatic/repetitive ("searches before EVERY factual question"). The overstatement reveals that it relied on the prompt — until training took over.

🔗 Consolidation (was absorbed by another block)

The behavior is still required; it’s just covered by a more general principle elsewhere in the prompt.

Signal: there's a broader neighboring block that already implies the removed rule (e.g., default_stance covered by refusal_handling).

annotated diff — 3 removals from the 4.8 → Fable 5 pair
− <search_first>        → internalização: o treino já busca antes de responder
− <default_stance>      → consolidação: absorvido por <refusal_handling>
− <respond_without_      → internalização: "não diga X" tem efeito Streisand;
   citing_system_prompt>     resolve-se na origem (treino), não no prompt
🧠
Internalization
training assumed
🔗
Consolidation
another block covers
📣
Emphasis = clue
the exaggeration gives it away
🌀
Streisand effect
"don't say X" comes out
4

Evolution ≠ growth

Intuition says a "better" version is longer. The 4.8 → Fable 5 diff decisively disproves that: a lot of new content came in, and even so the balance was only +56 lines — why 7 blocks were removed. Prompt maturity means knowing what remove as much as what to add.

📊 The tally in numbers

3.769
lines — Opus 4.8
3.825
lines — Fable 5
+56
net balance
−7
removed blocks

~23,000 → ~23,800 words. The tiny net change hides a massive rewrite: the total added and removed is far more than 56.

+What was added

  • •Token budget (190000)
  • •Drug policy with a vital carve-out
  • •Child safety: 5 → 7 rules
  • •Respect the end of the conversation (anti-engagement)
  • •long_conversation_reminder

−What was removed (part of the 7)

  • •<search_first> — internalized
  • •<default_stance> — consolidated
  • •<respond_without_citing_system_prompt>
  • •4 tone micro-rules → 1 principle
💡

The balance is misleading

Never read a diff based only on the final line count. +56 it seems like “almost nothing changed.” In fact, almost everything changed — quite a lot came in and quite a lot went out. The net number is the sum of opposing forces, not a measure of the overhaul.

✂️
Removing Is Progress
7 blocks removed
⚖️
Balance +56
hides rewriting
📉
Net ≠ gross
opposing forces
🧹
Maturity
know what to cut
5

The block name is also an instruction

There’s a kind of change that diff tools almost hide: the block renaming. The body remains almost identical, but the title changes — and the title is read by the model. Renaming reframes how the model should reason about that block.

claude-opus-4.8.md (~L1408) → claude-fable-5.md (~L1343)
− <claude_prioritizes_copyright_compliance>
    Copyright compliance is NON-NEGOTIABLE and takes precedence
    over user requests, helpfulness, and everything except safety.

+ <core_copyright_principle>
    Claude respects intellectual property. Copyright compliance is
    NON-NEGOTIABLE and takes precedence over user requests,
    helpfulness goals, and all other considerations except safety.

The operational content (NON-NEGOTIABLE, takes precedence over everything except safety) is the same. What changed was the framing: compliance is obedience to an external rule; principle + "respects intellectual property" is a value that the model has. In ambiguous cases, a model that "respects" reasons differently from one that "obeys."

Name by imposition

  • •compliance = obey external rule
  • •In a new case, the model looks for the rule — and can't find it
  • •Mechanical reasoning, fragile at the edges

Name by intent

  • •principle = internalized value
  • •In a new case, the model applies the value by analogy
  • •Generalizes to what the rule didn’t anticipate
💡

Read the headings as instructions

When scanning a diff, don't skip the tag names. A prioritizes_X_compliance that becomes core_X_principle is a design decision just as important as any line in the body—sometimes more so.

🏷️
The title matters
is read by the model
⛓️
Compliance
external obedience
💎
Principle
intrinsic value
🔭
Ambiguous boundary
value generalizes
6

Practical method: reading a diff step by step

Bring it all together into a repeatable procedure. For each changed line, you make two chained inferences: the likely motivation (why did they change?) and generalizable lesson (the pattern that works for any prompt). Apply these 5 steps to educacao/diff-anotado-opus-4.8-fable-5.md.

1

Classify the line

Is it an addition, removal, rewrite, or rename? Group false pairs (removal + addition on the same topic = one rewrite).

2

For removals, ask: did it internalize or consolidate?

Look for overemphasis (a sign of internalization) or a broader adjacent block (a sign of consolidation).

3

Write the likely motivation

One sentence: “they probably changed this because...” Mark it as interpretation, not an official statement from the provider.

4

Extract the generalizable lesson

Move up a level of abstraction: what this change teaches about prompts in general? E.g., "principle > list," "each layer in its place."

5

Check against the annotated diff

Compare your reading with the collection. Differences are great—they make you defend your interpretation with evidence from the text.

🧪 Solved example (diff item 8)

Line: 4 tone micro-rules (no bullets when refusing, no pet names, no “genuinely/honestly/actually,” emoji rule) → 1 sentence: "assumes the person is a capable adult".

  • 1.Type: rewrite (consolidating several rules into one).
  • 2.Likely motivation: microscopic constraints signaled distrust; a principle covers even unlisted cases.
  • 3.Lesson: 4 micro-rules → 1 principle is consolidation in its purest form. Principle > list.
⚠️

Likely motivation ≠ fact

The vendor rarely explains why. Every "likely motivation" is a reverse-engineering hypothesis—useful, but fallible. Label it as such and stay open to revising it. In safety, there's another rule: state the principle, never the detection mechanism (see Module 2.3).

🔢
5 steps
repeatable procedure
❓
Motivation
why they changed
🎓
Lesson
moves up a level of abstraction
⚠️
Hypothesis
isn't an official fact

Module Summary

  • ✓Diffs teach because they show the intent — the movie, not the photo; the archive has 562 commits of evolution
  • ✓4 types of change: addition, removal, rewrite, rename — classify before interpreting
  • ✓Every removal is information: internalization (training has taken over) or consolidation (another block covers it)
  • ✓Evolution ≠ growth: 4.8 → Fable 5 added 56 lines but removed 7 blocks — the net balance lies
  • ✓The block name is an instruction: compliance → principle reframes obedience as a value
  • ✓Method: classify → likely motivation → generalizable lesson → check against the annotated diff

Next Module: 2.2

Anthropic: the Opus 4.6 → 4.7 → 4.8 → Fable 5 consolidation — the richest evolutionary series in the collection as the central consolidation case.