If you make changes to a node's run_list through knife while chef-client is running on the node, chef-client overwrites the run_list with the old one when it completes.
1. Add a recipe to a node's run_list
2. Run chef-client on the node
3. While it's running, delete the recipe from the run_list on that node and add another with knife
When chef-client completes it overwrites the run_list with the original one from step 1. There are no errors in chef-client or knife, and there is no way to tell this occurred until you realize chef-client isn't running with the expected run_list the next time you start it.
No related tickets, just an issue I ran into while testing.