Inputs the announcements bundle reads from the host organism.
Passing presenter / i18n / config in (instead of re-injecting)
keeps the factory pure - one call returns the bundle, no
injection context required.
Landed-close phrase from createTabDismissals. When supplied,
liveAnnouncement surfaces it while no commit phrase applies and
expires it on the next commit activity, so a stale close can never
re-enter (and re-announce through) the live region.