undocumented context side-effect in {% ifchanged %}
The {% ifchanged %} template tag sets the {{ ifchanged }} variable in its local context, in a way similar to how {% for %} sets the {{ forloop }} variable. This behavior is not documented. The value stored into the variable is a dictionary and doesn't seem to have any use elsewhere in Django. Maybe it's related to some removed functionality?
These quick Google code searches didn't turn up any uses of the context variable in indexed open source projects either:
The following patch stops {% ifchanged %} from touching the context and adds a test for this.
Patch: stop {% ifchanged %} from changing context, includes test