Pipelines only ever run a single job

I’m running a gitlab-runner on WIndows, to build a dotNet project.

No matter what I do, the pipeline only ever runs a single job.

dotNet:
  stage: build
  script:
    - 'dotnet build'
  tags: 
    - dotnet
    
Publish to Test:
  stage: test
  script: 
    - 'dotnet publish /p:Password=%build_server_pw%'
  tags: 
    - dotnet

Publish to Prod:
  stage: deploy
  script: 
    - 'dotnet publish /p:PublishProfile=Catalog /p:Password=${build_server_pw}'
  tags: 
    - dotnet
  when: manual

If I add stages:

stages:
  - prepare
  - build
  - deploy

the pipeline never executes at all, because it says I have no jobs.
[Note: I know I’m abusing the test stage, above, but the default stages are the only ones available to me if I can’t specify stages]

Curiouser and curiouser. Basically, the CI Lint checker is crap.

Last week, I had a different pipeline refuse to run because it claimed the YAML was invalid. I backed out the one-line change I’d made, and was left with a YAML file that was not noticeably different from this one—and it works. It took an awful lot of tries to get something that would run with the new line, and my best bet is that it was either something that looks like a leading space but wasn’t; or mixing of Windows/Unix new lines. At least, if there was any syntactic difference between the working YAML and the non-working one, it wasn’t visible.