я и пытаюсь понять откуда этот бред берется)
где-то в процессе итерации добавляются новые элементы в словарь. Отсюда и ошибка.
А итерируешься ты по view словаря (dict_items), который связан с исходным словарем и вполне способен делать такие проверки.
чтобы это обойти достаточно просто завернуть project_data['tasks'].items() в список (как тебе выше уже посоветовали)