UPDATE - Not an ecto problem
"A good bug, I mean a really good, pound-your-head-on-the-desk-for-a-week bug, is exactly like a magic trick in that something impossible appears to be happening." - Steven Frank via Daring Fireball
tl;dr The issue was that there was a Beam file for my Ecto model/struct in the root of project directory
It was a compilation timing issue. Some files were being compiled before web/models
and some afterwards. Somehow an old beam file Elixir.ProjectStatus.EmailRecipient.beam
had been compiled into the project root, on the 2015-06-25 with Ecto 0.12.0; in this version of Ecto the __meta__.source
was a binary. The clue which, I'd seen but didn't know what to do with, was that the warning that the module was being redefined.
Compiled lib/project_status/project_recipients.ex