Trouble using needs: to download artifacts between pipelines in the same project

I have .gitlab-ci.yml file like this:

stages:
  - carthage-premaster
  - carthage
  
carthage-premaster:
  stage: carthage-premaster
  cache:
    paths:
      - vendor/bundle
      - Carthage/Checkouts/Cuckoo/run
      - Carthage/Build
  tags:
    - mac,development
  script: gitlab/scripts/stages/carthage.sh
  artifacts:
    paths:
      - vendor/bundle
      - Carthage/Checkouts/Cuckoo/run
      - Carthage/Build
  only:
    - premaster
  
carthage:
  stage: carthage
  tags:
    - mac,development
  script: gitlab/scripts/stages/carthage.sh
  artifacts:
    paths:
      - Carthage/Checkouts/Cuckoo/run
      - Carthage/Build
  needs:
    - project: "Lux iOS"
      job: carthage-premaster
      ref: premaster
      artifacts: true
  except:
    - premaster ```
... so I expect when I push to any branch other than `premaster`  that
 `carthage` job will pull artifacts from same project's ("Lux iOS") job 
`carthage-premaster`, branch `premaster` - but it's not happening.
What am I doing wrong here? Are all parameters for needs: set correctly?
You can assume that I already successfully ran `carthage-premaster`
 stage so my cache/artifacts are successfully created as a part of some 
`premaster` pipeline.
Documentation is here: https://docs.gitlab.com/ee/ci/yaml/#needs