Feel free to change the title to something more generic. Eg. "How can we make the bindless proposal easy to use correctly and hard to use incorrectly?" This is one example of a place where it's easy currently easy to use incorrectly.
The current bindless proposal updates completedSubmitIndex in an implicit way.
This has the issue that it's easy to make an application that works locally an fails on random user's machines. Example:
// frame 1
updateBinding(slot(123), resource1)
await rAF
// frame 2
removeBinding(slot(123))
await rAF
// frame 3
updateBinding(slot(123), resource2) // this will randomly fail but
await rAF // likely work on dev's high powered local machine
One solution is that the proposal's completedSubmitIndex update step, only happens when the user explicitly calls onSubmittedWorkDone. This would make step 3 above fail locally for the dev so they can fix their code and correctly wait for slot(123) to actually be usable.