on: push
jobs:
  prepare:
    runs-on: ubuntu-latest
    steps:
    - run: |
        echo '::set-output name=matrix::["a", "b"]'
      id: r1
    outputs:
      matrix: ${{steps.r1.outputs.matrix}}
      helix: steady
  evalm:
    needs:
    - prepare
    strategy:
      matrix: 
        ${{needs.prepare.outputs.helix}}: |-
          ${{fromJson(needs.prepare.outputs.matrix)}}
    runs-on: ubuntu-latest
    steps:
    - name: Check if the matrix key doesn't ends up unevaluated
      run: |
        echo $MATRIX
        exit ${{matrix['${{needs.prepare.outputs.helix}}'] && '1' || '0'}}
      env:
        MATRIX: ${{toJSON(matrix)}}
    - name: Check if the evaluated matrix key contains a value
      run: |
        exit ${{matrix[needs.prepare.outputs.helix] && '0' || '1'}}