Very strange BGP Best Route Selection

I have two peers - Seabone and GR-IX.
Seabone in “default” instances, GR-IX in “GR-IX” instances.

[BORDER] /ip route> print d where dst-address =2.58.249.0/24
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit 
 0 ADb  dst-address=2.58.249.0/24 gateway=213.144.178.153 gateway-status=213.144.178.153 reachable via  sfp-sfpplus7 distance=20 scope=40 target-scope=10 
        bgp-as-path="6762,6939,9312" bgp-weight=400 bgp-med=100 bgp-origin=igp bgp-communities=6762:30,6762:14900 received-from=SEABONE 

 1  Db  dst-address=2.58.249.0/24 gateway=176.126.38.47 gateway-status=176.126.38.47 reachable via  sfp-sfpplus6 distance=20 scope=40 target-scope=10 
        bgp-as-path="6939,9312" bgp-weight=600 bgp-med=2 bgp-origin=igp bgp-communities=2736:2736,65001:55555 bgp-ext-communities="RT:50745:203348" 
        received-from=GR-IX-1

Why route from SEABONE is preferred? It have lower weight - 400, (from GR-IX-1 weight - 600) and longer AS-Path - 3 (in opposition from GR-IX- 2)

This is happening because you have them in separate instances. The BGP best path algorithm is only used for routes within the same instance. Otherwise MikroTik’s general route selection algorithm is used between instances.

From the wiki:

“Best path algorithm compares routes received by a single BGP instance. Routes installed by different BGP instances are compared by the general algorithm, i.e. route distances are compared and the route with lower distance is preferred.”

https://wiki.mikrotik.com/wiki/Manual:BGP_Best_Path_Selection_Algorithm

“route distances” - is the “distance=20”? If “Yes”, distance the same in both routes “distance=20”. Why #1 route is active?

Typically when everything else is identical, the oldest route wins

I think the answer to your question is point 2 in the quoted URL.

The route engine received the first path from the default BGP instance, and does not see the path from the other instance as “better” since the distance is 20 for both, hence it keeps the first path received