Is this a bug, or am I missing something?
Yes, you're missing something.
The important point is the following: if you have a declaration of a generic routine in the
interface section of a unit or as a method of a class you
must not repeat
any constraints for the generic parameters, that includes both type as well as constant constraints. Delphi behaves (at least with type constraints) similarly which is why we used that for constant parameters as well. Where you
must repeat the constraints however is if you use a
forward declaration, because it behaves the same with normal parameters (though I should probably loosen that restriction in mode
Delphi, cause there one can leave out the normal parameters as well...

).
So your code becomes this (I've changed
Test into a forward declaration just to show what I mean):
unit Unit1;
{$mode delphi}
interface
procedure Test2<T,const N:Integer>(A: T);
implementation
procedure Test<T,const N:Integer>(A: T); forward;
procedure Test2<T,N>(A: T);
begin
end;
procedure Test<T,const N:Integer>(A: T);
begin
end;
end.
But you are right, if use generics in the type declaration, this syntax works. However I don't really understand the meaning of const in this case.
Constant parameters allow you to define a constant of which the value is provided when specializing the generic. See the announcement mail that
OkobaPatino linked to.