Conjured items degrade twice as fast: -2 before sell-by, -4 after,
never below 0. Registered in ItemUpdaterFactory.Default() and resolved
by the Conjured prefix rule, so the whole Conjured family is covered.
The four Conjured spec tests go green. The ThirtyDays approval snapshot
now shows the intended Conjured-only diff; it is re-approved in the
next commit.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
GildedRose now resolves each item to its strategy and applies it; all
rules live in the strategies. The original one-arg constructor keeps
working by delegating to ItemUpdaterFactory.Default(); a second
constructor allows injecting a custom IItemUpdaterFactory.
No behaviour change: the ThirtyDays approval snapshot and all
existing-type spec tests pass unchanged.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Introduce the Strategy + Factory design: IItemUpdater (Name + Update),
an ItemUpdaterBase with the single shared [0,50] clamp helper, stateless
strategies for normal/Aged Brie/Sulfuras/Backstage, and a factory with
two-tier resolution (exact name via case-insensitive dictionary, then
Conjured prefix rule, then the default fallback).
Not wired into GildedRose yet; no behaviour change. The Conjured
strategy itself arrives in the feature commit.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>