A matrix with an exclude, for the one combination that fails

A matrix of PHP versions against WordPress versions produces a grid, and two cells of it are combinations that were never supported.

strategy:
  fail-fast: false
  matrix:
    php: ['7.4', '8.0']
    wordpress: ['5.6', '5.7', '5.8']
    exclude:
      - php: '8.0'
        wordpress: '5.6'      # no 8.0 support until 5.6.1
    include:
      - php: '8.0'
        wordpress: 'trunk'
        experimental: true

fail-fast: false is the setting that makes a matrix useful rather than infuriating: the default cancels every other job on the first failure, so a single broken combination hides the other five results. include adds a combination outside the grid and can also add a property to existing cells, which is a genuinely confusing dual behaviour — it modifies a cell if the keys match an existing one and appends a new job if they do not.