Traefik saying last middleware in Entrypoint not found, regardless of which middleware it is

Hello, I'm using Traefik v3.1.4, and after a reboot of my system today Traefik is suddenly saying middlewares are not found. If I change the middlewares around, it can't find the last middleware in the list. I'm pasting what I find to be relevant snippets of config below, but if I need to provide more please let me know.
traefik.yml

  web-secure:
    address: :443
    http:
      tls:
        certResolver: production
        domains:
            main:
              - 'mydomain.tld'
      middlewares:
        - securityHeaders@file
        - geoblock@file
        - log4shell@file
        - crowdsec@file
    transport:
      respondingTimeouts:
        readTimeout: 10m
        writeTimeout: 10m
        idleTimeout: 10m

providers:
  file:
    directory: /etc/traefik
    watch: true

experimental:
  plugins:
    enabled: true
    crowdsec-bouncer-traefik-plugin:
      moduleName: "github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin"
      version: "v1.1.14"
    log4shell:
      moduleName: "github.com/traefik/plugin-log4shell"
      version: "v0.1.2"
    geoblock:
      moduleName: "github.com/PascalMinder/geoblock"
      version: "v0.2.8"

config.yml

middlewares:
    crowdsec:
      plugin:
        crowdsec-bouncer-traefik-plugin:
          CrowdsecLapiKey: "REMOVED"
          Enabled: "true"
          LogLevel: "INFO"
          CrowdsecMode: "live"
          CrowdsecLapiHost: "192.168.1.80:8080"

    ## SECURITY HEADERS ##
    securityHeaders:
      headers:
        customResponseHeaders:
          X-Robots-Tag: "none,noarchive,nosnippet,notranslate,noimageindex,noindex,nofollow"
          server: ""
          X-Forwarded-Proto: "https"
        sslProxyHeaders:
          X-Forwarded-Proto: https
        referrerPolicy: "strict-origin-when-cross-origin"
        hostsProxyHeaders:
          - "X-Forwarded-Host"
        customRequestHeaders:
          X-Forwarded-Proto: "https"
        contentTypeNosniff: true
        browserXssFilter: true
        forceSTSHeader: true
        stsIncludeSubdomains: true
        stsSeconds: 63072000
        stsPreload: true
    log4shell:
      plugin:
        log4shell:
          errorCode: 200

    geoblock:
      plugin:
        geoblock:
          silentStartUp: false
          allowLocalRequests: true
          logLocalRequests: false
          logAllowedRequests: false
          logApiRequests: false
          api: "https://get.geojs.io/v1/ip/country/{ip}"
          apiTimeoutMs: 750                                 # optional
          cacheSize: 15
          forceMonthlyUpdate: true
          allowUnknownCountries: false
          unknownCountryApiResponse: "nil"
          blackListMode: true
          addCountryHeader: false
          countries:
            - Really long list, removed.

EDIT/UPDATE: I'm seeing this message in the log: Plugins are disabled because an error has occurred. error="unable to set up plugins environment: invalid configuration: enabled: plugin name is missing: enabled: plugin version is missing" plugins

Genuinely not sure what the issue was but after moving things around in the config enough it started working. (Removing blank new lines, reordering lines)... my guess is maybe I had a config error somewhere like a space or something and i just didnt notice. Not sure why it just started showing up though

I don’t think that’s a root element in dynamic config, should probably go inside a http parent.