Description
Wave 1 review found that the normal Run shutdown closes per-tailnet flow stores, but App.Close does not. Confirm whether App.Close is a supported lifecycle entry point for tests or embedders. If it is, ensure it cannot leave flow-store workers and databases open; otherwise document and guard the ownership contract.
Acceptance Criteria
- #1 Every supported App lifecycle entry point closes or explicitly transfers ownership of all per-tailnet flow stores
- #2 A focused test or contract guard prevents the non-Run shutdown path from silently leaking flow-store resources
Definition of Done
- #1 just check passes (the full gate; it is what CI enforces)
- #2 just gen leaves no diff (only if a generated artifact’s inputs changed)
- #3 just –fmt –check passes and every new recipe has a # doc comment and a [group(…)]
Implementation Plan
Lane I fixes App.Close flow-store ownership outside Run shutdown with a failing lifecycle test first and no public API break.
Final Summary
Made all supported App lifecycle exits close or transfer every per-tailnet flow store and added a focused guard for the non-Run shutdown path. Implementation SHA f35b6ab. Final integrated just check passed at 5b55617; exact-head CI run 33354208183 completed success.