Open
Description
We should define and document our public contract. So that customers know how our public surface is evolved and for us to guide that evolution.
We should define and publish:
- What API changes are allowed in what package.
- How do we mark APIs as public, "public but for internal purpose", experimental etc.
- Which stateful parts, like deployed resources are considered contract and which not. For example, CFN outputs.
In addition, we should implement automated checks to enforce that publicly facing elements are properly documented and annotated.