Is there implicit "canonify"-cation happening in in "classes:" promise type?

Yes the agent will automatically canonify classes that you define for your convenience.

 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728
  bundle agent main
  # @brief show how classes are automatically canonified during definition
      "invalid_class_string" string => "my-invalid-class";


  @if minimum_version(3.10)
        # Shorthand for "myclass" expression => "any";
        # Available since 3.10.0

        "$(invalid_class_string)-2" expression => "any";


          classes => results("bundle", "my-invalid-class-from-promise-result");

        "c" slist => classesmatching("my.*");

        "CFEngine $(sys.cf_version)";
        "Found defined class $(c)";
R: CFEngine 3.11.0
R: Found defined class my_invalid_class_2
R: Found defined class my_invalid_class_1
R: Found defined class my_invalid_class_from_promise_result_repaired
R: Found defined class my_invalid_class_from_promise_result_reached

However, it will NOT automatically canonify strings that are being checked as you can see in this example. You must explicitly canonify when checking.

 1 2 3 4 5 6 7 8 9101112131415161718
  bundle agent main
        "my_invalid_class" string => "my-invalid-class";

        "$(my_invalid_class)" expression => "any";

        "The string $(my_invalid_class) is a valid class"
          if => $(my_invalid_class);

        "The string $(my_invalid_class) is NOT a valid class"
          if => not( $(my_invalid_class) );

        "The string $(my_invalid_class) when canonified is a valid class"
          if => classify( $(my_invalid_class) );
R: The string my-invalid-class is NOT a valid class
R: The string my-invalid-class when canonified is a valid class