Problem (gap)
The teardown lifecycle is the busiest area of the post-0.9.0 backlog (#15, #16, #17, #21) yet packages/example-app/test/e2e.ts has no assertion that teardown actually ran to completion. The #8 e2e exercises that onTeardown thunks fire, but nothing fails the build if a future change reintroduces a leak on the setup-failure path (#15) or the preview path (#16).
Per MEMORY.md, e2e.ts is the integration gate and the project uses a verify-then-fold workflow — leaks are exactly the class of silent regression that gate should catch.
User story
As the maintainer, I want the e2e suite to fail loudly when a render, a preview, or a failed render leaves seeded data behind, so the teardown fixes in #15/#16 can't silently regress.
Acceptance criteria
Depends on the teardown-policy decisions in #15 and #16. File now so the fixes land with a regression gate.
Problem (gap)
The teardown lifecycle is the busiest area of the post-0.9.0 backlog (#15, #16, #17, #21) yet
packages/example-app/test/e2e.tshas no assertion that teardown actually ran to completion. The #8 e2e exercises thatonTeardownthunks fire, but nothing fails the build if a future change reintroduces a leak on the setup-failure path (#15) or the preview path (#16).Per MEMORY.md,
e2e.tsis the integration gate and the project uses a verify-then-fold workflow — leaks are exactly the class of silent regression that gate should catch.User story
As the maintainer, I want the e2e suite to fail loudly when a render, a preview, or a failed render leaves seeded data behind, so the teardown fixes in #15/#16 can't silently regress.
Acceptance criteria
previewStepinvocation (once preview leaks the adapter seed: runs adapter.setup but not adapter.teardown #16 decides preview's teardown policy), (c) a render whose step throws.setupthrows after seeding must leave baseline count.Depends on the teardown-policy decisions in #15 and #16. File now so the fixes land with a regression gate.