label)->toBe('Not reviewed') ->and($notReviewed->color)->toBe('gray') ->and($reviewed->label)->toBe('Reviewed') ->and($reviewed->color)->toBe('success') ->and($followUpNeeded->label)->toBe('Follow-up needed') ->and($followUpNeeded->color)->toBe('danger') ->and($changedSinceReview->label)->toBe('Changed since review') ->and($changedSinceReview->color)->toBe('warning'); }); it('falls back to the unknown badge semantics for invalid review states', function (): void { $unknown = BadgeCatalog::spec(BadgeDomain::TenantTriageReviewState, 'invalid_state'); expect($unknown->label)->toBe('Unknown') ->and($unknown->color)->toBe('gray'); });