a field guide · ai engineering

Engines &
Harnesses

How language models actually work — and how to build the machine around them. From neurons to harnesses.

how to drive this deck

Built for jumping around

Live

  • → next act  ·  ↓ optional depth
  • ESC the whole map at once
  • S speaker view (notes + timer)
  • Every act stands alone — jump anywhere

Later

  • This deck is a public site — take the URL
  • Demos are live tools you can replay at your desk
  • Appendix (last column) holds the depth we skip today
  • ?print-pdf for an offline copy
working definition

AI engineering, defined for this talk

AI engineering = harness engineering + context engineering + memory engineering + prompt engineering.

Covered here

  • Harness — the tooling around the model: instructions, agents, MCP, hooks
  • Context — what the model sees, and when
  • Memory — what survives between sessions
  • Prompt — what you actually say

Deliberately out of scope

  • Fine-tuning (retraining the model itself) — engine work, not ours
  • RAG (fetching documents into the prompt) — the same context principles apply
  • Evals (testing whether any of this actually works) — deserves its own hour
act 01 · the engine

How a pile of arithmetic
learned to talk

Seventy years of neural networks, told in order, so that "AI" now meaning "language models" feels less like a fad and more like the next chapter of one long story.

first principles

A neuron is a weighted opinion

  • Take numbers in, multiply each by a weight, add them up, squash the result
  • And that's the whole neuron; there is no hidden extra part
  • Stack them in layers and you have a network (the classic multi-layer perceptron)
  • The weights are the parameters — "405B parameters" = 405 billion of these knobs

A neural network is one big function: numbers in, numbers out. Everything else is plumbing.

inputs weights x₁ ──▶ ×w₁ ─┐ x₂ ──▶ ×w₂ ─┼─▶ Σ ─▶ squash ─▶ out x₃ ──▶ ×w₃ ─┘ the knobs training turns
live · train one yourself

Watch a network learn

TensorFlow Playground — a tiny MLP training in your browser open in new tab
what training actually does

Guess. Measure the wrongness. Nudge every knob. Repeat.

  1. Guess: run the input through, get an output
  2. Score it: one number for how wrong (the loss)
  3. Nudge: compute, for every knob, which direction reduces the wrongness — turn all of them a hair (backpropagation)
  4. Repeat: trillions of times, on trillions of examples

Training doesn't store the examples. It squeezes their patterns into the knobs — which is why one function can complete code it has never seen.

scores → probabilities

From scores to odds: the temperature dial

A language model's last layer outputs a score for every token it knows. A step called softmax turns those scores into probabilities, and that's the whole trick.

  • Temperature ↓ — sharpen: always take the favorite. Safe, boring, repetitive.
  • Temperature ↑ — flatten: give the long shots a chance. Creative, and eventually unhinged.

Try it live in Transformer Explainer (Act 2) — it has the actual slider.

scores T = 0.2 T = 1.5 " the" 9.1 ████████ 92% ███ 34% " a" 7.3 █ 7% ██ 27% " its" 5.0 · 1% ██ 21% " kiwi" 2.2 · 0% █ 18% same engine, different dial
the arc

Why "AI" now means "LLM"

YearBeatWhat it proved
1958PerceptronA machine can learn a boundary from examples
1986BackpropagationDeep stacks of neurons are trainable at all
2012AlexNetGPUs + data beat forty years of hand-built features
2017Attention Is All You NeedOne architecture for all of language — and it parallelizes
2018–20GPT-1 → GPT-3Same recipe + more scale = new abilities, unprompted
2022ChatGPTNext-token prediction becomes a product — and "AI" starts meaning this
2024–Reasoning modelsThe same engine, allowed to think before speaking

Every row is the same story: less hand-engineering, more learning. Hold that thought — it's about to happen to us, one layer up.

depth · watch the field drift

One professor's syllabus, 2021 → 2025

MAT1510, Deep Learning: Theory & Data Science — Vardan Papyan, University of Toronto. Same course, five years:

YearWhat's inWhat's telling
2021Sparse coding, random matrix theory, adversarial examplesNo transformers. At all.
2023First transformers lecture appearsSix years after the paper
2024Chain-of-thought, LoRA, safety, diffusionThe LLM era arrives in the theory dept
2025Whole sections: scaling laws, in-context learning, superposition, grokking, jailbreakingThe syllabus IS the history slide

Course site: sites.google.com/view/mat1510 — public lecture decks for all of it. The one reference this act is built on; full notes in research/track3-papyan-course.md.

act 02 · tokens

The model's alphabet
is not your alphabet

The tokenizer is the chopper that turns your text into chunks before the model ever sees it. Half of all "LLMs are dumb" stories are really tokenizer stories.

live · the tokenizer

Text becomes chunks, not letters

Tiktokenizer — paste anything, see what the model actually receives open in new tab
consequences

Why smart models fail dumb tests

Counting letters

"strawberry" arrives as one or two opaque chunks. Asking for the r's is like asking you how many times the letter e appears in a word you've only ever heard spoken.

Arithmetic

"1234567890" isn't a number — it's chunks like 123·456·7890, split by frequency, not place value. Long division over that is a miracle when it works.

These aren't intelligence failures — they're eyesight failures. Reasoning models patch them by thinking in steps; the eyesight never changed.

meaning as geometry

Every token becomes a point in space

  • Each token maps to a vector: a list of hundreds of numbers, learned during training rather than assigned by anyone
  • Similar meaning ends up nearby: king/queen, Paris/Rome, try/catch
  • Directions mean things: king − man + woman ≈ queen
Embedding Projector — real embeddings, rotatable in 3D open in new tab

Optional live beat: search a word, look at its neighbors. Meaning with no dictionary anywhere — just geometry, learned from co-occurrence.

order

Position must be stamped on

Attention reads the whole context at once — to it, "dog bites man" and "man bites dog" are the same bag of tokens.

  • Fix: mix a position signature into each token's vector before it enters
  • Each slot gets a distinct stamp; nearby slots get similar stamps
  • The network learns to read the stamp exactly as much as it needs to

That's the intuition. The full math lives in the appendix; nothing later depends on it.

the mechanism that changed everything

Attention: every token interrogates every other

For each token, in parallel: "of everything before me, what matters to what I'm about to be?"

  • "bank" pulls on "river" — or on "loan" — and becomes a different vector accordingly
  • Meaning stops being per-word and becomes per-word-in-this-sentence
  • Dozens of attention heads per layer, each learning its own question: grammar, which name a pronoun points back to, code scope…
  • And it's all matrix math — perfectly parallel, perfect for GPUs. That, as much as the cleverness, is why transformers won.
live · the workhorse

A real GPT-2, dissected in your browser

Transformer Explainer — attention weights, temperature, next-token odds, live open in new tab
alternate · for a gentler room

The same story, animated

Animated LLM The full pipeline — tokens → embeddings → attention → sampling — animated for non-technical audiences. The kindest on-ramp on the internet. animatedllm.github.io

Keep in the back pocket: if the room drifts during Transformer Explainer, this is the softer landing. Also embeddable if you want it inline.

act 03 · scale

The absurd arithmetic
of one token

Not the training run. Not the answer. One single token of output. The numbers here are cited, and they should feel wrong.

the unit

What one token costs

Llama 3.1 405B — open weights, every parameter public. Each parameter does one multiply-add per token: 2 × 405 billion.

810,000,000,000 floating-point operations, per token, forward pass only — roughly one token ≈ three-quarters of a word

The "two operations per parameter" rule: Kaplan et al., Scaling Laws for Neural Language Models (2020) · parameter count official: Meta, arXiv:2407.21783 · full arithmetic in research/track3-flops.md

make it human

810 billion operations is…

26,000years of a human doing one multiplication per second, nonstop — starting before the peak of the last Ice Age
84minutes flat-out on a Cray-1 — the fastest computer on Earth in 1976 (160 MFLOPS)
0.8milliseconds on one modern H100 GPU at peak — one H100 ≈ six million Cray-1s

And a typical chat answer is ~500 tokens: thirteen million years of human arithmetic, delivered before you finish blinking.

training vertigo

And that was just running the model

  • Training Llama 3.1 405B: 3.8×10²⁵ FLOPs over 15.6 trillion tokens (official, Meta)
  • On the 1976 Cray-1, that training run takes 7.5 billion years — start it when Earth formed and you'd still be 3 billion years short
  • GPT-4's training is estimated at the same order: ~2×10²⁵ FLOPs (Epoch AI estimate — OpenAI has disclosed nothing)

This is why "just train your own" isn't a real option. Engines come from a handful of labs. Everyone else builds vehicles.

see it run

A GPT, in 3D, at 60fps

bbycroft.net — every weight of a working GPT, walkable open in new tab
depth · the efficiency countermove

Why per-token cost is falling anyway

ModelTotal paramsActive per tokenFLOPs/token
Llama 3.1 405B (dense)405B405B — all of them8.1×10¹¹
DeepSeek-V3 (MoE)671B37B — routed experts7.4×10¹⁰ — 11× cheaper

"Mixture of experts" means only the relevant slice of the model wakes up for each token — store many parameters, compute with few. More knowledge in the warehouse, fewer workers per shift.

Official figures: arXiv:2412.19437. One more honest caveat: at 128K context, attention adds ~67% on top of the 2N cost — long context is not free. That fact returns in Act 7.

act 04 · thinking tokens

Paying the model
to think

Reasoning models don't have a different brain. They have permission to use scratch paper — and you pay for every sheet.

the mechanism

Same engine, allowed to draft

prompt ──▶ thinking tokens ····························· ──▶ answer tokens │ "let me check: the bug is in the retry │ "The bug is in │ logic… no wait, the timeout fires first… │ timeout.ts:41 — │ let me re-read the stack trace…" │ here's the fix." └─ scratch work, often hidden, always billed └─ what you asked for
  • Still next-token prediction — nothing mystical was added
  • The model buys accuracy by spending more compute up front, before committing to an answer
  • Wrong turns cost the same as right ones — dead-end reasoning is still billed
the economics

When thinking is worth paying for

Task shapeEngine modeWhy
Autocomplete, rename, boilerplateFast, no thinkingLatency is the product — you're mid-keystroke
Explain this file, write a testStandardOne honest pass is enough
Debug across files, plan a migrationReasoningTraps and dead ends — drafting pays for itself
Long agent task, issue → PRReasoning + harnessBeing wrong is expensive; thinking is cheap by comparison

Rule of thumb: pay for thinking when being wrong costs more than waiting.

depth · the third axis

"Think longer" became a third way to scale

  • 2012–2022: scale the training run — more data, more parameters
  • 2022–2024: scale the post-training — the extra rounds where human feedback shapes the answers (RLHF, instruction tuning)
  • 2024–now: scale the answering — let the same model think longer on hard questions

The same model, given 10× the thinking budget, can jump a capability tier on hard problems — capability became a dial, not a constant.

Caveat for the careful: the visible reasoning is legible, but not guaranteed to be the true cause of the answer. Treat it as a draft, not a confession.

act 05 · where this is heading

The consensus,
then the opinion

What the field broadly agrees on — kept separate, deliberately, from what I think. The flag will be visible.

the consensus, roughly

Four things most of the field agrees on

  1. The easy scaling curve has bent. "10× the GPUs, get a new era" stopped working — training data, not computing power, became the wall
  2. The gains moved elsewhere. Post-training and thinking-time now carry the improvement — capability became a dial (Act 4)
  3. Agents are where it shows up. METR (an independent evaluation lab): the length of task an agent can finish half the time doubles every ~4–7 months — and the pace is picking up, not slowing (metr.org, Time Horizon 1.1, Jan 2026)
  4. The price of any given ability keeps collapsing. Efficiency tricks — mixture-of-experts, distillation (a small model trained to imitate a big one) — make yesterday's frontier next year's cheap tier (Act 3's 11×)
the trap to avoid

"Scaling is over" conflates three different curves

AxisStatus, honestly
Pre-training (bigger runs)Diminishing returns per dollar; data wall is real
Post-training (reinforcement learning, distillation)Steep and young — nobody knows the ceiling
Inference (thinking longer)Scales per-task, priced per-use — a different economy entirely

Any confident claim about "the end of scaling" that doesn't say which curve is too vague to argue with.

flagged and owned
Kay's take — opinion, not consensus

Are we at the end of the exponential?

What's ending

— speak to it —
which curve I think is genuinely done, and the evidence I find decisive

What's not

— speak to it —
the curve I think people are underrating, and why

What follows for us

— speak to it —
what this means for anyone building on these engines in the next two years

Scaffold by design — the argument's shape stays on screen while the argument itself is spoken.

the turn

AI engineering stopped
being about the model

Everything before this slide was the engine. Everything after it is the harness — and the harness is where your leverage is.

engine · harness

Nobody drives an engine down the road

The engine

  • The model — frozen weights, rented from a lab
  • Identical for you, your competitor, and a teenager in a dorm
  • You cannot tune it. You can only choose it.

The harness

  • Instructions, tools, context plumbing, permissions, memory
  • Chassis, transmission, bodywork — everything that makes an engine useful
  • 100% yours. This is the part you engineer.

The engine is a commodity. The harness is the product.

the taxonomy

There is no one correct harness

Motorcycles, cars, vans, and trucks are all correct. The shape follows the job.

VehicleThe harness it maps toBuilt for
MotorcycleBare chat + one sharp toolAn expert going fast, fully exposed
CarYour configured IDE assistantDaily driving — you, every day, comfortable
VanTeam workspace: shared instructions, custom agents, MCP racksA crew and its equipment
TruckAutonomous coding agent in CI: issue in, pull request outHeavy cargo, long haul, nobody in the cab
the rental car

Out of the box, Copilot is a rental car

Rental

Works anywhere, tuned for nobody. Base trim. Smells faintly of someone else. Engineered to be returnable, not to be loved.

Your car

Seat memory, mirrors set, your music. One instructions file and it knows your stack, your conventions, your definition of done.

Fleet vehicle

Spec'd for one job: racked, wrapped, upfitted. Custom agents, MCP tools, hooks in CI. Nobody asks if the fleet truck is "good in general."

People judge Copilot as a rental — they're right that it's mediocre, and wrong that it has to stay one.

the law of the turn

Match the harness to the engine

  • You don't put a motorcycle frame around a truck engine.
  • You don't bolt a trailer to a superbike.
  • And when engines improve, harnesses must change shape — better engines killed the choke and the hand crank; they didn't kill the transmission.

Compensation — shrinking

Prompt tricks that paper over engine weakness: walls of pasted examples, forced step-by-step recipes, rigid rule lists. 2023 needed them. 2026 engines are degraded by them.

Capability — growing

Tools, context plumbing, permissions, memory. The better the engine, the more machine you can safely bolt to it.

act 06 · harness engineering

Turning the rental
into your car

The Copilot customization surface, in real depth — every piece copy-pasteable. As of August 2026; this surface moves monthly, sources in /research.

the map

The whole surface on one slide

PieceFile / placeIt's the…
Repo instructions.github/copilot-instructions.mdSeat position — always applied
Path instructions.github/instructions/*.instructions.mdPer-terrain suspension (applyTo globs)
AGENTS.mdAnywhere in repo, nestedCross-tool standard — one manual, every vehicle
Prompt files.github/prompts/*.prompt.mdPreset routes — /slash-invoked tasks
Custom agents.github/agents/*.agent.mdPurpose-built vehicles — role + tools + model
Skills.github/skills/<name>/SKILL.mdToolbox in the trunk — loaded only when needed
Hooks.github/hooks/*.jsonSafety interlocks — code that gates the agent
MCP.vscode/mcp.json · repo settingsTrailer hitch — standard plug for external tools
Memory & SpacesMachine-written repo facts (cited, 28-day expiry) · curated context bundlesLogbook in the glovebox — writes itself
Cloud agent + code reviewgithub.com, reads all of the aboveThe trucks — nobody in the cab
piece 1 · the seat position

One file, always applied

.github/copilot-instructions.md
# Payments service — Express + TypeScript + Prisma

## Architecture
- Routes in `src/routes/` are thin: validate, call a service, return.
- All data access goes through `src/services/` — routes never touch Prisma.
- All routes require `requireAuth` middleware unless listed in PUBLIC_ROUTES.

## Conventions
- pnpm, never npm. Strict TS — `any` fails CI.
- Errors: return typed `Result`, never throw across service boundaries.

## Definition of done
- Colocated `*.test.ts` (vitest) covering auth failure + happy path.

Applies to chat, cloud agent, and code review. Guidance: ~2 pages max, never task-specific. Saved = live, no restart. Docs: docs.github.com → “Adding repository custom instructions”.

the moment · same request, same engine

“Add an endpoint to export a user's data as CSV”

bare copilot — the rental
app.get('/export/:id', async (req, res) => {
  const user = await db.query(
    `SELECT * FROM users WHERE id=${req.params.id}`
  );
  const csv = Object.keys(user).join(',') + '\n'
            + Object.values(user).join(',');
  res.send(csv);
});

Plausible. Also: SQL injection, no auth, raw SQL in a Prisma repo, no test, JavaScript in a strict-TS codebase.

with the file you just saw
// src/routes/users/export.ts
router.get('/users/:id/export', requireAuth,
  async (req, res) => {
    const rows = await userService.exportRows(
      req.params.id, req.auth);          // Result, not throw
    res.type('text/csv').send(toCsv(rows));
  });
// + export.test.ts: 403 without auth, happy path

requireAuth ← “all routes require auth” · service layer ← “routes never touch Prisma” · test ← “definition of done”

Same engine. Same request. The file did that — every fix traces to a line you wrote once.

piece 2 · per-terrain suspension

Path-specific instructions

.github/instructions/db-migrations.instructions.md
---
applyTo: "prisma/migrations/**,src/services/**/*.ts"
excludeAgent: "code-review"
---
- Never edit a shipped migration; create a new one.
- Every schema change ships with a rollback note in the PR body.
- Data-shape changes require a fixture update in `test/fixtures/`.
  • Globs are comma-separated inside one string — that trips everyone
  • excludeAgent (new in 2026): keep a rule out of code review while the cloud agent still gets it
  • Overlapping files? Both are sent. Precedence is weighting, not exclusion — so write rules that don't fight
piece 3 · one manual, every vehicle

AGENTS.md — the cross-tool standard

  • One markdown file, read by Copilot, Claude Code, Codex, Cursor, Gemini — an emerging cross-tool standard
  • Lives anywhere in the repo; nearest wins — monorepo teams put one per package
  • Copilot honors CLAUDE.md and GEMINI.md as equivalents, so one file travels everywhere

vs copilot-instructions.md?

Both are injected when both exist (Copilot's file ranks higher). Pragmatic 2026 answer: write AGENTS.md as the portable manual, keep copilot-instructions.md for Copilot-only quirks — or skip it entirely.

Why it matters: your harness investment survives changing tools. Nobody wants to rewrite the manual because they switched trucks.

piece 4 · preset routes

Prompt files — tasks as slash commands

.github/prompts/gen-tests.prompt.md
---
agent: 'agent'
model: Claude Sonnet 5
tools: ['search/codebase']
description: 'Generate tests matching our conventions'
---
Write vitest tests for ${input:target:file or function to test}.
Follow the patterns in src/services/user.service.test.ts:
table-driven cases, one behavior per test, fixtures from
test/fixtures/ — never inline literals for user objects.
  • Invoke as /gen-tests target=src/services/billing.ts
  • The repeated request you type every week, written well once

2026 heads-up: the frontmatter key is now agent: (was mode:), and hosted agents skip prompt files entirely — VS Code ships a migration setting that converts them to skills. Watch that boundary.

piece 5 · purpose-built vehicles

Custom agents — role, tools, model, in a file

.github/agents/planner.agent.md
---
name: Planner
description: Implementation plans for new features — no code edits
tools: ['search/codebase', 'search/usages', 'web/fetch']
model: ['Claude Opus 4.5', 'GPT-5.2']   # fallback list, in order
handoffs:
  - label: Implement Plan
    agent: agent
    prompt: Implement the plan outlined above.
---
You are in planning mode. Produce a step-by-step plan with file
paths and risks. Do NOT edit code. End with open questions.
  • Read-only by construction — tool restriction is the guardrail, not politeness
  • Agents can invoke other agents (agents: list) — sub-agent orchestration, in markdown

Formerly “custom chat modes” — same feature, renamed .agent.md, Aug 2026.

piece 6 · the toolbox in the trunk

Skills — expertise that loads itself

.github/skills/release-notes/SKILL.md
---
name: release-notes
description: Draft release notes from merged PRs. Use when asked
  for release notes, a changelog entry, or "what shipped".
---
# Release notes
1. List PRs merged since the last tag (`git log --oneline v*..HEAD`).
2. Group: Features / Fixes / Internal. One line each, user-facing voice.
3. Follow the tone of CHANGELOG.md. Flag breaking changes in bold.
  • Progressive disclosure: only name+description sit in context; the body loads when relevant; linked files only if referenced
  • Install many, pay for none until they fire
  • An open standard (agentskills.io) — Copilot reads .claude/skills/ folders unchanged
  • Works in cloud agent, code review, CLI, VS Code
piece 7 · safety interlocks

Hooks — code that gates the agent

.github/hooks/guard.json
{
  "version": 1,
  "hooks": {
    "preToolUse": [{
      "type": "command",
      "matcher": "bash",
      "bash": "./scripts/guard-tool.sh",
      "timeoutSec": 10
    }],
    "postToolUse": [{
      "type": "command",
      "matcher": "edit",
      "bash": "pnpm lint --fix"
    }]
  }
}
  • The guard script returns {"permissionDecision": "allow" | "deny" | "ask"} — plain code, not the model, decides what the agent may do
  • Hooks fire at every stage of a session; if a preToolUse guard errors, the action is blocked, not waved through

New to Copilot in 2026, mirroring Claude Code's design — CLI + cloud agent, VS Code in preview.

piece 8 · the trailer hitch

MCP — a standard plug for external tools

.vscode/mcp.json
{
  "servers": {
    "github": { "type": "http", "url": "https://api.githubcopilot.com/mcp/" },
    "postgres-readonly": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@example/mcp-postgres", "--read-only"]
    }
  }
}
  • Model Context Protocol: one standard socket for issue trackers, DBs, browsers, deploy tooling
  • Cloud agent + code review get MCP too (repo settings) — GitHub and Playwright servers on by default
  • Discipline: every tool's description spends context — hitch the trailers you're actually towing (Act 7 explains why)
piece 9 · the trucks

Nobody in the cab: cloud agent & code review

Copilot cloud agent

  • Assign it an issue → it works in an Actions sandbox → opens a draft PR
  • Reads AGENTS.md, instructions, skills, MCP — the whole harness you built
  • Environment spec'd in copilot-setup-steps.yml; outbound firewall on by default

Copilot code review

  • Reviews every PR before a human does — nitpicks automated, humans review design
  • Honors repo-wide + path instructions + AGENTS.md (new since 2025)
  • Your review standards, written once, applied to every PR forever

The punchline of the whole act: the same files drive every surface. Write the harness once; the chat, the agent, and the reviewer all inherit it.

Fine print worth knowing: cloud agent sessions cap at 59 minutes; and GitHub Agentic Workflows (preview) let one markdown workflow choose its engine — engine: copilot | claude | codex | gemini. The harness went multi-vendor before the engines did.

act 07 · context engineering

The finite resource

The model only knows what you put in front of it. Managing that budget, not writing clever prompts, is the discipline now. And the rules changed completely between model generations.

the budget

Context rot is real and measured

“Context, therefore, must be treated as a finite resource with diminishing marginal returns.” Anthropic, Effective context engineering for AI agents (2025)
  • Attention lets every token look at every other — power and cost. More context = thinner attention per fact
  • A fact on page 2 of a 300-page context isn't retrieved like a fact on page 2 of a 10-page one — models degrade on long-context retrieval long before the window "fills"
  • Corollary: a bigger window is storage, not comprehension — the fuel tank got bigger; the engine didn't
the toolkit

Spending the budget well

TechniqueMechanismYou've already seen it
Progressive disclosureStore lightweight identifiers; load detail only when neededSkills: name+description in context, body on demand
CompactionSummarize the transcript, keep goals + recent state, continue freshNow vendor infrastructure, not app code
Structured notesAgent writes durable notes outside the window, re-reads on returnInstructions files by hand; Copilot Memory does it automatically — cited facts, 28-day expiry
Sub-agentsSpecialist burns 100K tokens exploring, returns a 1K summaryCustom agents with agents: lists

Honest cost line: agents ≈ 4× the tokens of chat; multi-agent ≈ 15× (Anthropic, multi-agent research system) — sub-agents are for when the task genuinely parallelizes, not for decoration.

the generation shift · 2023 → 2026

Same discipline, unrecognizable rulebook

You did this for 2023 enginesThe vendors' own guides now say
“Think step by step” in every promptUnnecessary — reasoning models already think internally; the instruction is dead weight (OpenAI)
Pasting in walls of worked examples ("few-shot")“Examples actually constrain them to a certain exploration space” (Anthropic)
“CRITICAL: You MUST use this tool when…”“…you can use more normal prompting: ‘Use this tool when…’” — MUST-stacks now overtrigger
“Before you finish, verify your answer against…”Frontier models self-verify; leaving it in causes over-verification and wasted tokens
“You are an agent — keep going until fully resolved…”Drop it — frontier models need reining in, not spurring on
Enumerate every rule and prohibition“Write code that reads like the surrounding code” — rules become judgment

Every row traces to a vendor page, fetched Aug 2026 — research/track2-generation-shift.md. These are the models in your Copilot picker, not lab exotica.

the receipt

Anthropic deleted 80% of Claude Code's system prompt

“we removed over 80% of Claude Code's system prompt — and saw no measurable loss on our coding evaluations.” Thariq Shihipar, Anthropic — “The new rules of context engineering for Claude 5 generation models,” claude.com/blog, Jul 24 2026
  • Why it worked: the old prompt was overconstraining — stacked, sometimes contradictory rules the model had to reconcile before acting
  • “removing examples was extremely helpful, because it was just more creative than the examples we gave it”

Stated honestly: their number, their internal coding evals, frontier models only — older models still get the fat prompt, because they lack the judgment for lean instructions. Which is precisely the point: the harness was matched to the engine.

why the old habits now hurt

2023 reflexes are 2026 bugs

“poorly-constructed prompts containing contradictory or vague instructions can be more damaging to GPT-5 than to other models, as it expends reasoning tokens searching for a way to reconcile the contradictions.” OpenAI, GPT-5 prompting guide
  • The failure mode inverted: you used to pay for too little steering (lazy, drifting models) — you now pay for too much (overtriggering, over-verification, constrained exploration)
  • And you literally pay: reconciling your contradictions burns thinking tokens you're billed for (Act 4)

Vehicle version: choke and hand-crank on a modern engine — the ritual doesn't help; now it floods the engine.

what didn't change

The honesty slide

Still true, every generation

  • Clarity wins — if a new colleague couldn't follow your instructions, neither can the model
  • Structure helps — headers, delimiters, clearly marked sections
  • Context is finite — rot didn't go away, it moved
  • Measure everything — prompting is "an empirical discipline" (OpenAI)

The work didn't vanish — it moved

  • From pushing the model to act to keeping it in scope
  • The new tuning: reining in over-checking, over-delegating, and rambling
  • Frontier quirks still need steering — just less of it, aimed differently
depth · where the labs split

The two doctrines, honestly

QuestionAnthropicOpenAI
Multi-agent?First-class: frontier models delegate naturally (and need reining in, not spurring)Last resort: "maximize a single agent's capabilities first"
Migrating to a new model?Audit and delete — "simplify just like we did"Freeze prompts first, then tune — "switch models, don't change prompts yet"
Prompt structure?XML-native house styleMarkdown-first, XML situational
Agent frameworks?Own the loop; frameworks obscureShips an SDK (a minimal one)

And where they agree so hard it's boring: contradictions are the new prompt bug, simplicity beats scaffolding, measure everything. When rivals converge independently, believe the convergence.

act 08 · picking an engine

Benchmarks, and the
theatre of benchmarks

Model selection by task shape — and why the number on the leaderboard is a property of the harness as much as the engine.

the dirty secret

Benchmark scores measure systems, not models

SWE-bench is the standard "fix a real GitHub issue" test. Same engine, different harness, and the score moves:

Same model, different scaffold (the harness code around it)Score swing
GPT-4o, two scaffolds23% → 33.2% (+10)
DeepSeek R1, scaffold switch33% → 57.6% (+25)
Vendor harness vs standardized harness (2026 frontier)~17 points of vendor advantage

The harness is worth more points than a model generation. The industry has quietly known since 2024 — Anthropic: "performance…can vary significantly based on this scaffolding, even when using the same underlying AI model."

Epoch AI, What skills does SWE-bench Verified evaluate? · anthropic.com/engineering/swe-bench-sonnet · full table in research/track3-benchmarks.md

reading the leaderboards

Which benchmarks still mean something

BenchmarkMeasuresAug 2026 read
SWE-bench VerifiedReal GitHub issues → passing patchMaxed out (~96%, vendor-reported) and leaked into training data — no longer tells you anything
Terminal-Bench 2.1Agent + terminal, real environmentsClosest to day-to-day agent work; leaderboard shows model+scaffold pairs honestly
LiveCodeBenchProblems dated after training cutoffSidesteps the leak problem by design; narrow (contest code)
Aider polyglotPrecise edit-format disciplineHonest but stale — top rows are 2025 models
METR time horizonsLength of task done at 50% successBest mental model we have — currently doubling every ~4–7 months

METR's framing is the keeper: don't ask "what % does it score," ask "how long a task can it carry?" — that's the question your roadmap actually depends on.

the theatre

What the leaderboard doesn't tell you

  • Memorization: models can name the buggy file from the issue text alone 76% of the time on SWE-bench repos — and reproduce gold patches verbatim from the task ID (SWE-Bench Illusion, arXiv:2506.12286; OpenAI audit 2026)
  • Self-grading: on one tracker, 99 of the top 100 scores are vendor-submitted with no independent run
  • Quiet exits: OpenAI's own evals team stopped reporting SWE-bench Verified in early 2026 — the benchmark's co-creators walked away from it

A saturated benchmark doesn't measure engineering anymore. It measures marketing.

so how do you actually pick?

Task shape beats leaderboard rank

Your task looks like…PickPay attention to
Autocomplete, quick editsFastest cheap modelLatency — nothing else
Everyday chat & code Q&AMid-tier defaultToken prices span ~20× between tiers — credits add up
Gnarly debugging, planningFrontier reasoning modelQuality of thought — pay the multiplier
Long agent runs, issue → PRFrontier + your best harnessThe harness — it's worth 10–25 points

And the only benchmark that predicts your own work: run two models on the same real task in your own repo. One afternoon of that beats every leaderboard combined.

Copilot reality, Aug 2026: billing is AI credits (1 credit = $0.01, priced per token per model — “premium requests” are legacy since June 2026); ~25 models in the picker incl. GPT-5.6, Claude Opus 5, Gemini 3.x, Kimi K3, Grok 4.5, Microsoft's own MAI-Code; auto model selection takes 10% off. Sources: research/track1-models.md.

act 09 · make it usable

Leave with
something running

Everything so far was understanding. This act is twenty minutes of your Monday.

where it pays first

The boring wins are the big wins

JobHarness piece to buildWhy it compounds
Test generationA .prompt.md encoding YOUR test conventionsSame quality bar every time, any teammate
PR reviewCode-review instructions fileThe nitpicks get automated; humans review design
MigrationsPrompt file with the before/after pattern + one worked exampleThe 400-file chore becomes an afternoon
Docs & runbooksA docs-writer custom agent, docs-path instructionsDocs stop rotting because updating is cheap
OnboardingThe instructions file itselfNew hire's assistant knows the codebase from day one
hands-on · the exercise

Your first instructions file — fill in the blanks

.github/copilot-instructions.md
# _____________ (what this repo is, one sentence)

## Stack
- Language/runtime: _____________ (versions matter — say them)
- Framework: _____________ · Tests: _____________
- Build & run: `_____________` · Test: `_____________`

## Conventions the model keeps getting wrong
- We use _____________, never _____________ (e.g. "pnpm, never npm")
- Errors are handled by _____________ (e.g. "Result types, never throw")
- _____________ (the thing you've corrected three times this month)

## Definition of done
- Tests colocated as `*.test.ts`, run in CI
- _____________ (lint? typecheck? changelog entry?)

The last blank in "Conventions" is the whole trick: an instructions file is just your code-review comments, written once instead of forever.

the ladder

Rental → your car, in one lunch break each

  1. Week 1: copilot-instructions.md — stack, conventions, definition of done
  2. Week 2: one .prompt.md for your most-repeated request
  3. Week 3: path-specific instructions for your gnarliest directory
  4. Week 4: one custom agent for one role — reviewer, or test-writer
  5. Then: MCP when you actually need a tool, not before

Each rung is ~30 minutes. Nobody needs permission for rung one.

intermission · pop quiz

Kahoot time

Twenty-four questions. Everything was on a slide. Winner gets bragging rights and nothing else.

Questions drafted in kahoot-questions.md — create the Kahoot, then drop the join QR into the box.

QR code
goes here

kahoot.it · PIN on screen

take it with you

This deck is a public artifact

  • Everything here — slides, speaker notes, research files with fetch dates and URLs — lives in the repo you're looking at
  • The research index is the bibliography: every claim traces to a source
  • Fork it, gut it, present your own version — that's what it's for
appendix · not presented

The depth shelf

Everything below this slide exists for readers of the site, not for the room. Down-arrow at your own risk.

depth · positional encoding

Position, properly

  • The original trick (2017): add a vector of sines and cosines at geometrically spaced frequencies to each token — a clock with many hands. Any position gets a unique signature; relative offsets become simple rotations, which attention can learn to read
  • Learned positions (GPT-2 era): just train a vector per slot — works, but caps the sequence length at training time
  • RoPE (the modern default): rotate query/key vectors by a position-dependent angle, so attention scores depend only on relative distance — this is what makes today's very long contexts feasible, with tricks like frequency scaling to stretch beyond training length

Good rabbit holes: “Attention Is All You Need” §3.5 · RoFormer (RoPE) paper · the positional-encoding chapter of Papyan's MAT1510 transformer deck.

depth · attention mechanics

Q·K/V, without hand-waving

  • Each token emits a query (“what am I looking for?”), a key (“what am I findable by?”), and a value (“what do I contribute if found?”) — three learned projections of the same vector
  • Score = query · key, scaled by √d, softmaxed into weights (the same softmax from Act 1); output = weighted sum of values — the token's new, context-aware vector
  • Do it with many heads in parallel per layer, stack dozens of layers, interleave with MLPs — that's the whole transformer. There is no other magic in the box
  • The n² and the caveat: naive attention compares all pairs; FlashAttention reorders the same math for memory-efficiency, and sliding/sparse/linear variants trade coverage for cost — mitigations, not repeals: context stays a budget (Act 7)

See it: Transformer Explainer's attention-matrix view (Act 2) · BertViz for head-by-head archaeology (new-tab only — Colab blocks iframes).

depth · further reading

The bibliography that matters

Engine

  • 3Blue1Brown, LLMs Explained Briefly — best 8 minutes on next-token prediction
  • Karpathy, Deep Dive into LLMs — the full training pipeline
  • Papyan, MAT1510 — sites.google.com/view/mat1510 — theory, incl. scaling laws, superposition, grokking
  • Raschka, The Big LLM Architecture Comparison — what actually differs between Llama/DeepSeek/etc.

Harness

  • Anthropic: Building Effective Agents · Effective Context Engineering · The New Rules of Context Engineering (the 80% post)
  • OpenAI: A Practical Guide to Building Agents · reasoning-model best practices · GPT-5 prompting guide
  • docs.github.com — the whole Copilot customization section
  • This repo's /research — every file, URL + fetch date
credits

Standing on these shoulders

  • Demos: Transformer Explainer (Polo Club, Georgia Tech) · LLM Visualization (Brendan Bycroft) · Tiktokenizer (dqbd) · Animated LLM · TensorFlow Playground & Embedding Projector (Google) · curated via dentro.de
  • Reference: Vardan Papyan's MAT1510 (University of Toronto) — the history act's backbone
  • Data: Epoch AI · METR · Meta & DeepSeek papers · Anthropic & OpenAI engineering blogs · GitHub docs
  • Built with: reveal.js · Barlow Condensed, Inter, JetBrains Mono · researched and assembled with Claude (Fable 5), August 2026