Mesh not starting without ethernet plugged in

I've setup 2 mesh device following this guide https://bmaupin.github.io/wiki/other/openwrt/openwrt-80211s.html and it works as expected however after rebooting both routers with a lan connection plugged into only one of them the wireless interface shows up but 0.00 mbits, only after plugging in an ethernet cable into the other router lan port does the mesh work correctly, i've tried ticking "bring up interface unconfigured" etc but that doesn't work either.

You could lso try reading this guide:

An 802.11s mesh is a mac-routing, layer 2 network.
Have you installed mesh11sd to enable automatic mesh parameter settings?
How do you have things connected, for example where is your Internet feed connected, how are you connecting your client device etc.?

I'm using it to connect two device together via wifi i.e not mesh in a typical sense. Does mesh11sd allow for the mesh to work without having ethernet plugged in then?

Does mesh11sd allow for the mesh to work without having ethernet plugged in then?

Yes, because it enables layer 2 advertising between meshnodes.
You do not explain what you are connecting to ethernet to "make it start working".
Bridged ethernet ports on a meshnode behave like ethernet ports on a mesh-wide virtual switch.
Possibly in your case, connecting up the ethernet allows a burst of arp packets onto the mesh (arp is the layer 2 broadcast method of finding layer 3 ip devices). This might be enough to prod the mesh into life when mesh11sd is not present.

I've install mesh11sd but associated stations still shows

0.0 Mbit/s, 0 MHz
0.6 Mbit/s, 20 MHz

if i plug one of the wan ports form either router into my laptop it comes up and works as expected

351.0 Mbit/s, 80 MHz, VHT-MCS 4, VHT-NSS 2
0.6 Mbit/s, 20 MHz

{
  "setup":{
    "version":"1.1.1",
    "enabled":"1",
    "service":"running",
    "checkinterval":"10",
    "interface_timeout":"10",
    "debuglevel":"1"
  }
  "interfaces":{
    "mesh0":{
      "mesh_retry_timeout":"100",
      "mesh_confirm_timeout":"100",
      "mesh_holding_timeout":"100",
      "mesh_max_peer_links":"150",
      "mesh_max_retries":"3",
      "mesh_ttl":"31",
      "mesh_element_ttl":"31",
      "mesh_auto_open_plinks":"0",
      "mesh_hwmp_max_preq_retries":"4",
      "mesh_path_refresh_time":"1000",
      "mesh_min_discovery_timeout":"100",
      "mesh_hwmp_active_path_timeout":"5000",
      "mesh_hwmp_preq_min_interval":"10",
      "mesh_hwmp_net_diameter_traversal_time":"50",
      "mesh_hwmp_rootmode":"3",
      "mesh_hwmp_rann_interval":"5000",
      "mesh_gate_announcements":"1",
      "mesh_fwding":"1",
      "mesh_sync_offset_max_neighor":"50",
      "mesh_rssi_threshold":"-80",
      "mesh_hwmp_active_path_to_root_timeout":"6000",
      "mesh_hwmp_root_interval":"5000",
      "mesh_hwmp_confirmation_interval":"2000",
      "mesh_power_mode":"active",
      "mesh_awake_window":"10",
      "mesh_plink_timeout":"0",
      "mesh_connected_to_gate":"0",
      "mesh_nolearn":"0",
      "mesh_connected_to_as":"0",
      "mesh_id":"mesh",
      "device":"radio0",
      "channel":"152",
      "active_peers":"1"
    }
  }
}

This indicates there is stable layer 2 connectivity between this meshnode and one other. ie the mesh network is established between the two meshnodes.

If I interpret what you are saying correctly, you are trying to use a pair of meshnodes to provide an "ethernet over wireless". If this is the case, there will only be any significant traffic if you actually use the "ethernet over wireless" connection.

Yes, you are generating traffic so the wireless drivers are dynamically adjusting to provide the fastest link speed for the conditions at that time.

It looks to me that it is all working.

Both the meshnodes for a configuration like this would normally have identical configuration.

Please show the outputs of:
uci show network
and
uci show wireless

Paste these outputs from your terminal window into the text box you are replying into, then highlight the pasted text and click the </> symbol at the top of the text box.