I understand. But I still have some issue with the wording here. (Though you are probably right, I'd like to use the example you just gave, which also seems to be precisely dividing conditions for having the right to attempt a normal move and the conditions for the move being legal).
If an ability lets you make a Normal move in the hero phase, you will have to follow the "core rules" for the success conditions, but I'm not so sure about the attempting conditions as : "When you pick a unit to make a normal move, you can move each model in that unit a distance in inches equal to or less than the Move characteristic shown on the unit’s warscroll. Units cannot move within 3" of enemy units when making a normal move. Units cannot make a normal move if they are within 3" of an enemy unit."
In the example you give, it is obvious that the "move condition" to see if a move is legal or not is conceptually separated from the "Unit can or cannot make a normal move".
My point, is that it seems to be similar with the "charge move" and "attempt a charge". The success condition of a charge and the conditions for attempting the charge are different, and it seems that the warscroll would contradict the given conditions for attempting. I also have a hard time asking why would they reiterate the "<12" condition" for the charge in the warscroll if it did, as you say, keep the normal "attempt a charge" conditions. What would be the point?
That said, you are probably right. Though I will try to see on the forum if they have a similar debate with, for example: having an ability allowing you to normal move in hero phase, can you do that while piled-in (to retreat)? Because based on the wording, using the ability to move inside a <3" of an enemy is illegal, but using the ability to simulate a "retreat move", is not so obviously illegal (while it should be).
Thank you!
PS: if you happen to know the name of a movement during hero phase ability, let me know it'll easier my research : )
PS2: sorry, i program a lot, I try to find semantic bugs all the time. In computer programmation, if you have a function called "attempt a charge", we don't really care if the normal conditions for calling the function are set like in the rest of the program. A call is a call x)