The stepped dialog (wizard) grammar — three templs, one signal (gf-314/315)
A wizard inside the app is a dialog.modal.glass whose STATIONS ride
one page-local signal: data-signals__ifmissing="{pkw: N}" on the
dialog seeds N from the record at land (the first station whose fact is
open) and keeps it across morphs; wizSignalStrip(sig, stations) is the
house crumb trail with every station clickable and aria-current on
the active one; wizSignalFoot(sig, last) is Back/Next; each body is a
data-show="$sig == i". Every verb inside is a 204 + publish, and the
morph re-lands the tags. Outside the app (no session, a reload between
steps) the wizard is a PAGE of plain forms and 303s with the strip as real
links (/start's six stations, gf-360…366; the page opens NO stream —
Page.NoStream — so nothing can morph a half-filled form) — a dialog
cannot survive the sign-in reload. wizOpener is the header-rack "Set
up" verb. The PORTFOLIO wizard is retired (gf-367); packages
(view/settings.templ, signal pkw) is the surviving exemplar.