When running the following query, it showed me SQL was sending both, prod and dev parameters, so it was not using all the parameters set in the job.
It was using some parameters from the Catalog > Configure section mixed with ones from the job.
I ended up having to ensure the parameters were set at the Catalog level: right click the project > Configure. (Typically the packages is saved with all dev parameters, then changed on the prod server.)
Once I had the parameters set at the config level, as well as the in the job, everything worked. However, I think there is a bug issue with the software. I can't tell if the parameter is coming from the Sql job, or the catalog configure area. I do have a case where I know at least one is coming from a job area.
In case it's helpful, just put in a partial project name and this will show you the parameters for the latest execution of the project you are working on. Most of this code is not original to me, I just adapted it.
USE SSISDB
GO
DECLARE @SSISprgName VARCHAR(100) = 'ENTER PARTICAL PROJECT NAME HERE'
IF OBJECT_ID('tempdb..#t1') IS NOT NULL DROP TABLE #t1
SELECT TOP 1 execution_id, process_id,start_time, *
FROM catalog.executions AS e --Where end_time is null
WHERE project_name LIKE '%'+ @SSISprgName +'%'
ORDER BY e.start_time DESC
IF OBJECT_ID('tempdb..#t1') IS NOT NULL DROP TABLE #t1
SELECT TOP 1 e.execution_id
INTO #t1
FROM catalog.executions AS e --Where end_time is null
WHERE project_name LIKE '%'+ @SSISprgName +'%'
ORDER BY e.start_time DESC
SELECT TOP 100 *
FROM SSISDB.internal.execution_parameter_values
WHERE execution_id IN (SELECT execution_id FROM #t1)