I have found this when testing entity based forms - it is possible to check the logic of the form, but not the function of entity behaviour (create / update). So I have resorted to using a test project and publishing the forms within that environment so they actually work as expected with entities. This is how I found out that __id (entity id) is unique to the server not the project - I was trying to duplicate my entity list into the working project after testing.
It is one of the barriers to moving to entity based work-flows that would be nice to fix - if there was a way to ‘containerise’ the draft form and entity list that might help with the adoption process - so we can test things without having long-term consequences for the server. The proposed new Entity List and Property deletion features will help with this, but it still feels a little clunky. I guess that’s the joy of working at the bleeding edge (don’t read that as a profanity!).
I hadn’t spotted that Enketo does use an updated entity (I guess it’s not cached, so when you open the draft form it loads the entity list as it last stands?)
There’s a note on Central when editing a draft form:
This Form Definition creates or updates Entities. For now, Entities are not created or updated by Draft Forms, so you will need to publish the Form to verify Entity functionality. For more information, please see this help article.
This doesn’t solve the problem, the help article gives a bit of a workaround, but it does at least alert us to the current limitations…