By constant, I mean all variables that can be computed prior to any tasks being run and will not change, like inventory_hostname. Variables are therefore things that may change due to a task being executed.
The idea is that any “when” clause that contains only constants can also be evaluated prior to any tasks being executed, and thereby potentially excluded. Right now, the --list-tasks flag is rather silly: it prints tasks that are conditionally skipped. Yes, there’s the --check flag, but it has its own problems (not supported by all modules).
It also means if somehow no tasks are going to be run on host X, we can essentially exclude it, skipping gathering tasks.
Right now, I work around the problem by including a human-friendly description of the when condition in the task name, but this obviously sucks.
Stupid? Impossible?