Introduces GrantSource (17 values, DB-persisted) and GrantSourceMessages.For() for the item-acquire-history feature. Values 1/2 mirror prod captures; coverage test verifies every enum value has a non-empty message. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>