Steps position uniqueness now tied to program_id