When it comes to 1.0.0, I usually trigger that when most of the
features I want are in, the frequency of new bug reports is low, and
I'm pretty sure the API isn't going to change a whole lot.

This whole process is different if I have actual customers.  Then the
major versions are things that are agreed upon by the business group,
and encompass a feature set.  When that feature set is complete, and
the build survives the test group, then it gets tagged as a new major
version.

--- SER