As you noted, there is no prescribed release schedule. Releases are driven by the community via mailing list discussion threads when the community feels a critical mass of new features, improvements, and bug fixes are ready. The pattern does seem to be around every 80 - 100 days, with some outliers when particularly large features are waited for or highly-anticipated features are available.
The code is “locked” by the community member who assumes release manager (RM) duties for that specific release. You can see on our lists the process Jeremy followed for the ongoing MiNiFi Java 0.5.0 release vote that is occurring right now, or this thread  for the recent release of NiFi 1.7.0 that I RM’d. Once the decision to have a release is made, the release candidate is usually generated within a couple weeks. Code is accepted up to the proposed date, and the master branch is used for the release candidate, so there is not a formal “locking” process whereby the release is cut from a release branch as you may be used to in some enterprise projects.
PGP Fingerprint: 70EC B3E5 98A6 5A3F D3C4 BACE 3C6E F65B 2F7D EF69
Understood it is not set in stone, but is there an approximate schedule for
when new versions are released?
My back of the napkin makes it look like ~3 months? How long before the
expected release is the code locked?
Release Date Gap (days)
1.1.2 2/20/2017 -
1.2.0 5/8/2017 77
1.3.0 6/8/2017 31
1.4.0 10/2/2017 116
1.5.0 1/12/2018 102
1.6.0 4/8/2018 86
1.7.0 25-Jun 78