# Reflect.7. Following a lifetime — Mercury LMS > Contract: `@fiberfx/reflect` 4.1.1; Hypergraph and Hyperscript 4.1.1. ## Hook semantics hooks.mounted and hooks.unmounted accept callback/event/effect. They run in scope with resolved props captured for one lifetime. Ordinary prop changes do not refresh the cleanup capture. Scope replacement restarts the hook lifetime; keyed reorder does not; variant case changes do not restart wrapper hooks. ## Exercise [Lifecycle lab](/examples/reflect-lab/index.html?part=lifecycle&lang=en): mount with Ada, change to Grace, unmount. View shows Grace; history should report mounted Ada and unmounted Ada. Remount captures Grace. This is an expected observation, not an automatic resource-leak verdict. ## Boundaries Mounted return values are ignored; use unmounted, not an invented disposer-return protocol. Unmount before disposal. Whole-stage restart may itself generate cleanup. SSR runs neither hook; assert empty recorder and distinct scoped HTML independently. No lifecycle descriptors are shipped. ## Source reflect.ts:64-73; README.md:155-161; collections.test.ts:163-170. npm 4.1.1. ## Navigation - [HTML](/reflect/lifecycle) - [Reflect](/reflect/llms.txt) - [Index](/llms.txt) - [Sitemap](/sitemap.xml) - [All English companions](/llms-full.txt)