I've started putting together a 'hello world' habitat package to get the feel for it. One thing that immediately jumped out as unsettling was that habitat (or at least the docs) seems to discourage keeping your plan.sh with your app code.
For example - I would expect to see the plan.sh sitting in the root of my project's repository. Now build, dependency, and runtime configuration is all sitting right there with the code.
However, because of how the source is downloaded and checksummed, it looks like you get a chicken-and-egg problem where your plan.sh needs to contain the checksum for the tarball containing it.
Looking at how Chef itself handles the core packages, it looks like all the plan.sh files are kept in their own separate repository. Is this considered the best practice going forward?