Problems with Records not behaving as intended or passing to baseCommand

I had to makes some changes, but here is a log from running your CWL description with the CWL reference runner and empty fake inputs:

$ cwltool d430_qc.cwl d430_inputs.yml 
INFO /home/michael/cwltool/env3.9/bin/cwltool 3.1.20210909133024
INFO Resolved 'd430_qc.cwl' to 'file:///home/michael/cwltool/d430/d430_qc.cwl'
INFO [job d430_qc.cwl] /tmp/17s559pv$ docker \
    run \
    -i \
    --mount=type=bind,source=/tmp/17s559pv,target=/cRIYSz \
    --mount=type=bind,source=/tmp/nvxwreul,target=/tmp \
    --mount=type=bind,source=/home/michael/cwltool/d430/txprocconverted,target=/var/lib/cwl/stg36171afc-b0a3-40af-bd8f-5d1a85707011/txprocconverted,readonly \
    --mount=type=bind,source=/home/michael/cwltool/d430/RoiSet.zip,target=/var/lib/cwl/stgaa029c93-2ae8-4724-acbb-8cac6a76205f/RoiSet.zip,readonly \
    --mount=type=bind,source=/home/michael/cwltool/d430/collab_spots.pkl,target=/var/lib/cwl/stg91a3fc3d-1e09-45c0-a418-902d5f6080a6/collab_spots.pkl,readonly \
    --mount=type=bind,source=/home/michael/cwltool/d430/collab_transcripts.pkl,target=/var/lib/cwl/stg4ad1c23d-7106-420b-a924-3f0226bc6410/collab_transcripts.pkl,readonly \
    --workdir=/cRIYSz \
    --read-only=true \
    --net=none \
    --user=1000:1000 \
    --rm \
    --cidfile=/tmp/3pyo89jz/20210911134538-354260.cid \
    --env=TMPDIR=/tmp \
    --env=HOME=/cRIYSz \
    docker.pkg.github.com/hubmapconsortium/spatial-transcriptomics-pipeline/starfish:latest \
    /opt/qcDriver.py \
    --codebook-exp \
    /var/lib/cwl/stg36171afc-b0a3-40af-bd8f-5d1a85707011/txprocconverted \
    --spots-pkl \
    /var/lib/cwl/stg91a3fc3d-1e09-45c0-a418-902d5f6080a6/collab_spots.pkl \
    --transcript-pkl \
    /var/lib/cwl/stg4ad1c23d-7106-420b-a924-3f0226bc6410/collab_transcripts.pkl \
    --roi \
    /var/lib/cwl/stgaa029c93-2ae8-4724-acbb-8cac6a76205f/RoiSet.zip \
    --x-size \
    2048 \
    --y-size \
    2048 \
    --z-size \
    11

Here is the updated description

#!/usr/bin/env cwl-runner

class: CommandLineTool
cwlVersion: v1.1
baseCommand: /opt/qcDriver.py

requirements:
  DockerRequirement:
    dockerPull: docker.pkg.github.com/hubmapconsortium/spatial-transcriptomics-pipeline/starfish:latest

outputs: []

inputs:
  codebook:
    type:
      - type: record
        name: pkl
        fields:
          pkl:
            type: File
            inputBinding:
              prefix: --codebook-pkl
            doc: A codebook for this experiment, saved in a python pickle.
      - type: record
        name: exp
        fields:
          exp:
            type: Directory
            inputBinding:
              prefix: --codebook-exp
            doc: A directory with a 'experiment.json' file inside, which has the corresponding codebook for this experiment.
  spots:
    type:
      - 'null'
      - type: record
        name: pkl
        fields:
          pkl:
            type: File
            inputBinding:
              prefix: --spots-pkl
            doc: Spots found in this experiment, saved in a python pickle.
      - type: record
        name: exp
        fields:
          exp:
            type: File
            inputBinding:
              prefix: --spots-exp
            doc: The location of OUTPUT FROM EXPERIMENT. NETCDF?

  transcripts:
    type:
      - type: record
        name: pkl
        fields:
          pkl:
            type: File
            inputBinding:
              prefix: --transcript-pkl
            doc: The output DecodedIntensityTable, saved in a python pickle.
      - type: record
        name: exp
        fields:
          exp:
            type: File
            inputBinding:
              prefix: --transcript-exp
            doc: The location of OUTPUT FROM EXPERIMENT. NETCDF?

  roi:
    type: File?
    inputBinding: 
      prefix: --roi
    doc: The location of the RoiSet.zip, if applicable.

  imagesize:
    - 'null'
    - type: record
      fields:
        - name: x-size
          type: int
          inputBinding:
            prefix: --x-size
          doc: x-dimension of image
        - name: y-size
          type: int
          inputBinding:
            prefix:  --y-size
          doc: y-dimension of image
        - name: z-size
          type: int
          inputBinding:
            prefix: --z-size
          doc: number of z-stacks

  find-ripley:
    type: boolean?
    inputBinding:
      prefix: --run-ripley
    doc: If true, will run ripley K estimates to find spatial density measures.  Can be slow.

Note that no outputs are collected.