(Derived) variable resolution bug?

Is this a bug or am I misunderstanding how variables are resolved based on precedence? According to http://docs.ansible.com/playbooks_variables.html,

* extra vars (-e in the command line) always win
* then comes connection variables defined in inventory (ansible_ssh_user, etc)
* then comes "most everything else" (command line switches, vars in play, included vars, role vars, etc)
* then comes the rest of the variables defined in inventory
* then comes facts discovered about a system
* then "role defaults", which are the most "defaulty" and lose in priority to everything.

The setup

robin@hood:~/AnsiblePlaybooks/ExtraVars$ tree
±- extravars.yml
±- inventory
±- roles
±- testextravars
±- tasks
¦ ±- main.yml
±- vars
±- extravars.json
±- main.yml

# The playbook

robin@hood:~/AnsiblePlaybooks/ExtraVars$ cat extravars.yml

A friend at work was wondering whether this has to do with the location of the extravars.json file - I moved it out to the base directory of the ansible project and added another var to make sure the extravars.json file was being loaded - with no difference in results.

robin@hood:~/AnsiblePlaybooks/ExtraVars$ cat roles/testextravars/vars/extravars.json
{
“basevar”: “override”
“extravar”: “some extra var”
}

I also changed the task to be:

ping

Known bug: https://github.com/ansible/ansible/issues/10251 and https://github.com/ansible/ansible/issues/10564