i think it is a fpc bug.
Delphi compiled it without error
It is a bug.
The problem is that FPC attempts to have the typed constant identifier twice in the global data segment and that causes a duplicate identifier error but, the identifier itself isn't global, it only exists in the scope of its respective class which the compiler is failing to take into account.
The data should be stored in the global data segment but, that doesn't make its identifier global. Considering the identifier global because it is located in the data segment is the bug. A bug which does NOT occur when using advanced record and/or plain functions, IOW, using advanced records and/or plain functions it is possible to define equally named static variables in different records and/or functions without any problems (as it should be.) When using inheritance, the compiler isn't determining the scope accurately in the case of a typed constant (it does figure it out correctly for other types, which is why it works for plain constants and plain variables - there is no "scope resolution" involved in those cases.)