value, ProviderReasonCodes::ProviderConsentMissing, TenantOperabilityReasonCode::RememberedContextStale->value, RbacReason::ManualAssignmentRequired->value, ]; foreach ($reasonCodes as $reasonCode) { $envelope = $translator->translate($reasonCode); expect($envelope)->not->toBeNull() ->and($envelope?->operatorLabel)->not->toBe($reasonCode) ->and($envelope?->operatorLabel)->not->toContain('_'); } }); it('uses the canonical operator vocabulary for adopted reason families', function (): void { expect(ExecutionDenialReasonCode::MissingCapability->toReasonResolutionEnvelope()->operatorLabel)->toBe('Permission required') ->and(app(ReasonTranslator::class)->translate(ProviderReasonCodes::ProviderPermissionDenied)?->operatorLabel)->toBe('Permission denied') ->and(TenantOperabilityReasonCode::TenantAlreadyArchived->toReasonResolutionEnvelope()->guidanceText())->toBe('No action needed.') ->and(RbacReason::ManualAssignmentRequired->toReasonResolutionEnvelope()->operatorLabel)->toBe('Manual role assignment required'); });