Start means start

A subscriber who presses a course cover's Start wants to start. Before 2026-09-27 it went wrong in three ways:

What the cover plans (PluginLayoutAreas.CoverCtaButtons)

Viewer Start
Not entitled unchanged. The funnel's Subscribe / coupon / contact-sales button.
Entitled, no copy yet (installable, not free) an install action: OpensInstallDialog, OpenAtMode = CoverContract.AutoStartMode, empty Href (an install action never carries a link).
Entitled, installed a link to the entry point in the viewer's copy: InstallDialog.OwnEntryHref. It uses Localizer.TileOpenPath with the recorded install target and coverage, so a custom target is honoured. It falls back to the central entry point when there is no copy to rebase onto.

Get stays as the way to choose a custom location. Resume, the two-button cap and the install step's exemption from folding are unchanged. The Start action has its own area key (install:"auto-start"), so a delayed click is never retargeted onto Get or Repair (see Cover action identity).

What the dialog does in auto-start mode (InstallDialog.Open)

  1. Before painting: StartsAtOnce(openAt, installed) is true only for auto-start without a copy. The status is set to installing before the dialog paints, so the destination picker never appears. RunFreshInstall then runs into the seeded default target {viewer}/{packageId}: dependencies first, then the package.
  2. On the terminal done: status: AutoOpenHref(...) returns the entry point in the landed copy. The dialog renders Controls.Redirect to it, which is the framework's navigation from data, as Edu's Exercise and Lesson redirects use it.
  3. Errors: they keep the message and Close on screen. No redirect happens.

After any finished install, the dialog's Start Course → also uses OwnEntryHref. For a repair, that is the recorded install location.

Tests