# Diagrams — Module FT00: The Steering Stack

**Module**: FT00 — The Steering Stack
**Diagram count**: 6
**Tool**: Mermaid (primary). Each diagram validated in [Mermaid Live Editor](https://mermaid.live).

---

## Diagram 1 — The Steering Stack (the course's central mental model)

**Type**: Layered architecture
**Purpose**: The single diagram that anchors the entire course. Every module maps to one layer.
**Reading the diagram**: Bottom-up. The base is what you inherit; every layer above is something you can change or add. The arrow on the right is the key property — you can swap any layer above the base without touching the one below.

```mermaid
block-beta
  columns 1
  Boundary["5. THE BOUNDARY\n(the harness)\nCourses 1 & 2A"]
  Export["4. THE EXPORT\nquant + serve\nGGUF · vLLM · Ollama · MLX"]
  Steer["3. THE STEER\nfine-tuning\nSFT · DPO · GRPO · abliteration"]
  Adapter["2. THE ADAPTER\nLoRA · DoRA\n<1% of params, swappable"]
  Base["1. THE BASE\npretrained weights\nthe world model + openness"]

  Base --> Adapter
  Adapter --> Steer
  Steer --> Export
  Export --> Boundary

  style Base fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
  style Adapter fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
  style Steer fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
  style Export fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
  style Boundary fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
```

---

## Diagram 2 — Steering vs Knowledge: The Line

**Type**: Comparison / decision boundary
**Purpose**: The most important judgment in fine-tuning. Is your goal a steering problem or a knowledge problem?
**Reading the diagram**: Left column = what fine-tuning does well. Right column = what it does NOT do well. The diagonal arrow is the rule: if the base could already do it with a perfect prompt, it's steering. If not, you need a different base, CPT, or RAG.

```mermaid
flowchart LR
  subgraph Steer["STEERING — fine-tuning does this"]
    S1["Format & style"]
    S2["Instruction following"]
    S3["Preference alignment"]
    S4["Reasoning activation"]
    S5["Refusal removal"]
  end
  subgraph Know["KNOWLEDGE — fine-tuning does NOT do this well"]
    K1["New facts"]
    K2["New languages"]
    K3["Deep domain vocab"]
    K4["Genuine new reasoning"]
  end
  subgraph Methods
    M1["SFT · DPO · GRPO ·\nabliteration"]
    M2["Continued pretraining\n(de-emphasized) or RAG"]
  end

  Methods -.->|"the line"| Methods
  Steer --> M1
  Know --> M2

  style Steer fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
  style Know fill:#14141f,stroke:rgba(255,255,255,0.12),color:#9494a0
  style M1 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
  style M2 fill:#08080c,stroke:rgba(255,255,255,0.08),color:#9494a0
```

---

## Diagram 3 — The Three-Outcome Test

**Type**: Decision tree
**Purpose**: Before you fine-tune, prompt the base. The outcome tells you which layer to intervene at.
**Reading the diagram**: Run the base with a perfect prompt. Three branches. Each branch maps to a module.

```mermaid
flowchart TD
  Start["Prompt the base model\nwith ideal input + great system prompt"]
  Start --> Q{What happens?}

  Q -->|"Produces behavior unreliably\nor in wrong format"| SFT["STEERING problem\n-> SFT (Module FT12)"]
  Q -->|"Refuses or wrong kind of\nbehavior, but capability is there"| Pref["PREFERENCE problem\n-> DPO / abliteration\n(Modules FT13, FT17)"]
  Q -->|"Genuinely foreign domain\n— no idea what you mean"| Know["KNOWLEDGE gap\n-> Different base, CPT,\nor RAG (usually RAG)"]

  style Start fill:#14141f,stroke:rgba(255,255,255,0.12),color:#e4e4e8
  style SFT fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
  style Pref fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
  style Know fill:#14141f,stroke:rgba(255,255,255,0.12),color:#9494a0
```

---

## Diagram 4 — The Swappability Property

**Type**: Sequence / layer-independence
**Purpose**: The single property that makes the whole field tractable — you can swap any layer above the base without touching the one below.
**Reading the diagram**: Three horizontal tracks, each showing a swap at one layer. Notice the base (Layer 1) never changes in any track.

```mermaid
flowchart LR
  subgraph T1["Swap an adapter"]
    B1["Base"] --> A1a["Adapter A (medical)"]
    B1 --> A1b["Adapter B (legal)"]
    A1a -.swap.-> A1b
  end
  subgraph T2["Change the steer"]
    B2["Base + Adapter"] --> S2a["SFT'd for JSON output"]
    B2 --> S2b["DPO'd for conciseness"]
    S2a -.re-train.-> S2b
  end
  subgraph T3["Re-quantize"]
    B3["Trained model"] --> Q3a["GGUF Q4_K_M\n(Ollama local)"]
    B3 --> Q3b["AWQ 4-bit\n(vLLM prod)"]
    Q3a -.re-export.-> Q3b
  end

  style B1 fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
  style B2 fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
  style B3 fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
```

---

## Diagram 5 — Course Map: Pillars to Layers

**Type**: Mapping table-as-diagram
**Purpose**: Every module lives at a layer. This is the navigation map.
**Reading the diagram**: Left = pillar. Right = layer. Read across to see what each pillar operates on.

```mermaid
flowchart LR
  P00["P00 Foundations\nFT00-FT03"] --> L1["Layer 1: Base\n+ mental model"]
  P01["P01 Data\nFT04-FT07"] --> LS["substrate\n(the steering wheel)"]
  P02["P02 PEFT\nFT08-FT11"] --> L2["Layer 2: Adapter\n+ Layer 3: Steer"]
  P03["P03 Alignment\nFT12-FT13"] --> L3["Layer 3: Steer"]
  P04["P04 Reasoning\nFT14-FT15"] --> L3
  P05["P05 Alignment Control\nFT16-FT18"] --> L3
  P06["P06 Deploy\nFT19-FT20"] --> L4["Layer 4: Export"]
  P07["P07 Sensitive Domains\nFT21-FT23"] --> L5["Layer 5: Boundary"]

  style P00 fill:#14141f,stroke:rgba(255,255,255,0.12),color:#e4e4e8
  style P01 fill:#14141f,stroke:rgba(255,255,255,0.12),color:#e4e4e8
  style P02 fill:#14141f,stroke:rgba(255,255,255,0.12),color:#e4e4e8
  style P03 fill:#14141f,stroke:rgba(255,255,255,0.12),color:#e4e4e8
  style P04 fill:#14141f,stroke:rgba(255,255,255,0.12),color:#e4e4e8
  style P05 fill:#14141f,stroke:rgba(255,255,255,0.12),color:#e4e4e8
  style P06 fill:#14141f,stroke:rgba(255,255,255,0.12),color:#e4e4e8
  style P07 fill:#14141f,stroke:rgba(255,255,255,0.12),color:#e4e4e8
  style L1 fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
  style L2 fill:#14141f,stroke:#5eead4,color:#e4e4e8
  style L3 fill:#14141f,stroke:#5eead4,color:#e4e4e8
  style L4 fill:#14141f,stroke:#5eead4,color:#e4e4e8
  style L5 fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
```

---

## Diagram 6 — The Bridge to Course 1 (the synthesis)

**Type**: Layered with annotation
**Purpose**: How this course relates to the Harness Engineering courses. The model steers; the harness bounds.
**Reading the diagram**: The bottom half is this course (Layers 1–4). The top half is Courses 1 and 2A (Layer 5). The annotation in the middle is the synthesis principle.

```mermaid
block-beta
  columns 1
  subgraph C1["COURSES 1 & 2A — Layer 5: The Boundary"]
    H["Harness: policy gates, audit logs, threat model\npermission-safety, error handling, security"]
  end
  Note["THE SYNTHESIS:\nUncensor the model so it executes\nHarness the model so it executes only what it should"]
  subgraph C3["COURSE 3 — Layers 1-4"]
    E["Export: GGUF, vLLM, Ollama"]
    S["Steer: SFT, DPO, GRPO, abliteration"]
    A["Adapter: LoRA, DoRA"]
    B["Base: pretrained weights"]
  end

  C3 --> Note
  Note --> C1

  style H fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
  style Note fill:#08080c,stroke:rgba(94,234,212,0.4),stroke-dasharray: 4 2,color:#5eead4
  style E fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
  style S fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
  style A fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
  style B fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
```

---

## Validation notes

- All six diagrams use the course design system colors: `#14141f` panel fill, `#5eead4` accent for primary, `rgba(255,255,255,0.12)` for secondary borders, `#e4e4e8` / `#9494a0` for text.
- Paste each into [Mermaid Live Editor](https://mermaid.live) to render. All use stable Mermaid syntax (`block-beta`, `flowchart`) supported in current Mermaid (v10.4+).
- For the slide deck (artifact 03), these are rendered as static SVG/PNG captures from Mermaid Live, inlined into reveal.js.
