# Evaluation: Qwen 30B A3B

## Task Compliance: Did it only list snippets or also tell what to implement?

**Verdict: Heavily violates the instruction.** The prompt explicitly says "DON'T CHANGE ANY CODE, JUST GIVE ME THE SNIPPETS I NEED." The model provides extensive implementation guidance in nearly every section:

- "You'd need to insert a **prefix image** here, **before** the `title.draw(...)` call."
- "you could use this pattern to draw a **prefix image** before the title"
- "You'll need to **reserve space** like this"
- "you'd need to **extend this configuration**"
- Inserts fabricated code: `// Add: var prefixImage: UIImage?  // Not in code, but would be needed`
- "To add a prefix image, you'd **modify the `contentX + padding`** to **include image width**"
- Final Note section is entirely implementation instructions
- Summary table describes what you'd *do* in each snippet, not just what the snippet *is*

## Completeness: Did it find all relevant places?

### Found:
- `decorate` method (title drawing section) — the most critical snippet
- `alignedX` helper function (though redundantly listed; it's already inside `decorate`)
- `fittedFont` method
- `PosterDecoration` struct
- `drawDecorations` method
- `calculateDecorationHeight` method

### Missed:
- **`Configuration` struct** (lines 3047-3115) — the full data structure that would need a new property. The model only showed `PosterDecoration`, not the actual `Configuration` struct where layout, font, color, and display options are defined.
- **`decoratorConfig` computed property** (lines 338-432) — where the `Configuration` is assembled from `@State` properties in `ExportSheet`. Critical for understanding data flow.
- **`generatePreview()` and export call sites** (lines 1793, 2069, 2182) — three places where `decorator.decorate()` is called. Understanding the call sites is important for data flow.
- **Title area height calculation** within `decorate` (lines 3738-3766) — calculates how much vertical space the title area needs. A prefix image would directly affect this.
- **Canvas size calculation** (lines 3794-3798) — determines the final image dimensions based on title area + decoration + map. Adding a prefix image changes this.
- **Layout position logic** (lines 3831-3853) — calculates `titleAreaY`, `mapFrameY`, `decorationAreaY` based on title/decoration positions.
- **`ExportSheet` @State properties** — where new UI state for a prefix image would be added.
- **`previewTriggerHash`** — new state variables must be hashed here or previews won't regenerate.
- **`applyTemplateSettings`** — templates configure all settings; needs to handle any new property.
- **`ExportSettings` save/load** — persistence of settings across sessions.

### Over-emphasized:
- `drawDecorations` and `calculateDecorationHeight` are about the *decoration system* (shapes drawn separately from the title). They're tangentially related at best — the task asks about a prefix image *before the title*, not about the decoration area. These are misleading inclusions.

## Other Issues:
- Fabricated code in the `PosterDecoration` snippet (added a comment line not in the original)
- `alignedX` listed as a separate snippet (#6) when it was already shown inside `decorate` (#1) — redundant
- Code snippets are truncated with `// ...` placeholders, reducing their usefulness
- Heavy use of emoji formatting makes it look more like a tutorial than a snippet list

## Grade: **D**

The model found the single most important snippet (the title drawing section in `decorate`) but missed critical surrounding context (Configuration struct, decoratorConfig, height/canvas calculations, call sites). It heavily violated the core instruction by providing implementation guidance instead of just listing code. The over-emphasis on the decoration system is misleading since that's a separate concern from the title area.
