When you put a bigger cam in an LS, idle quality goes to hell first. Most new tuners reach for fuel and spark trying to fix it. Both are wrong. The fix is in the idle airflow tables, and it has to happen before you tune anything else. Six things shape this section:
(1) Order is non-negotiable. Idle airflow → idle fuel → VE → spark. Tuning fuel before airflow is fixing the symptom. The engine surges or won't catch because there isn't enough air bypassing the throttle, not because there isn't enough fuel. (2) Idle RPM target depends on the cam. Stock LS idles at 550–600. A 240° cam can't hold that — not enough vacuum to support accessories, not enough air with that overlap. Pick a target that matches the cam first. (3) Cold-start "Percentage Max" is the cammed-LS killer. Default is set for stock cams. With more overlap you need 50–100% more bypass air just to keep the engine running through warmup. Symptom: dies on cold start, or hunts violently between 400–1200 RPM until warm. Fuel won't fix this. (4) DBW (electronic throttle) is more sensitive than cable. On Gen III LS1/LS6 the IAC valve is the only knob — cable plates don't move at idle. On Gen IV LS3/L92/LS7 the throttle plate itself is the idle airflow controller. No separate IAC to compensate for a bad table. (5) A/C kick is its own scalar. When the compressor engages, ~2–4 hp of load drops on the engine instantly. The PCM bumps idle airflow to compensate. Stock value works for stock cams; bigger cams need more. (6) Idle-Fuel halts without a wideband. Per spec §5: Idle-Airflow runs fine without one. Idle-Fuel does not. If no wideband is present in build context, subsection 1.6 renders a "wideband-not-present-deferred" state and unlocks the rest of the workflow anyway.
KB source: ls-cam-idle-tuning-basics.md, hpacademy-webinar-217-idle-tuning-gm.md, hpacademy-ls-idle-tuning-with-hp-tuners.md. Spec §4.2 / §5.1.
sensors.wideband_o2.present === false, this subsection renders a wideband-not-present-deferred state, marks the section as deferred-by-design, and lets the rest of the workflow continue. The narrowband O2 alone can't cross-check open-loop idle fueling — it bangs lean/rich around stoich without telling you the actual AFR target the engine is sitting at.
sensors.wideband_o2.present === false. Subsection renders deferred. Rest of idle workflow continues. Spec §5.1.
'complete' or 'untouched-by-design'. Otherwise: fix airflow first.