Workflow parameters overridden

I have a repo of UI tests, with multiple suites living together. I want to trigger each suite separately but my workflow parameter is getting overridden, ie the periodic-acceptance-PE-CM worfklow is only ever getting env_name: acceptance-ptnt_monit-ci instead of the values specified.
Is this because of the top level parameter definition? The validator complains if I try to remove it but most examples I see dont declare parameter at the top level.

version: 2.1
jobs:
  build:
    docker:
      - image: circleci/ruby:2.4.1-node
        environment:
          SELENIUM_DRIVER_URL: http://localhost:4444/wd/hub
      - image: selenium/standalone-chrome:3.141.59

    working_directory: ~/repo
    parameters:
      env_name:
        type: string

    steps:
      - checkout

      {...}

      # run tests!
      - run:
          name: run specs
          command: |
            ENV_NAME=<< pipeline.parameters.env_name >>            
            echo $ENV_NAME
            {...}

parameters:
  env_name:
    type: string
    default: "acceptance-ptnt_monit-ci"

workflows:
  periodic-acceptance-PM:
    triggers:
      - schedule:
          cron: "0 15,19,23 * * 1-5"
          filters:
            branches:
              only:
                - master
    jobs:
      - build:
          name: run-pm-tests
          env_name: acceptance-ptnt_monit-ci
  periodic-acceptance-PE-CM:
    triggers:
      - schedule:
          cron: "0 15 * * 1-5"
          filters:
            branches:
              only:
                - master
    jobs:
      - build:
          matrix:
            parameters:
              env_name: [acceptance-ptnt_engmt-ci, acceptance-care_mgmt-ci]