I think you may have misinterpreted what changed_when
does.
changed_when
marks the task as changed based on the evaluation of the conditional statement which in your case is:
“command_result.stdout == ‘Ignoring failure…'”
So whenever this condition is true, the task will be marked as changed.