Restart in place
Call TrySelectChapter(failedChapterId). This performs a fresh Chapter start and clears that Chapter's known persisted progress.
Practical Guides
Show a death screen after an accepted failure and apply an explicit project-owned restart decision.
Call ChapterManager.TryFailCurrentChapter(reason) once after the project decides defeat is final. Inspect ChapterFailureResult. Only Failed changes state and invokes listeners; ManagerNotReady, NoActiveChapter, ChapterNotActive, and TransitionInProgress are rejected without notifications.
Use a short diagnostic reason such as player_defeated. Do not put localized UI copy in the reason or rely on the legacy CanFail field; V1 failure is explicit and is not gated by that preserved value.
ChapterFailed event.information.Chapter.Identifier if restart needs it.The serialized On Failure is sufficient for a parameterless panel activation. The typed event is preferable when UI or telemetry needs the reason or affected Objective.
Call TrySelectChapter(failedChapterId). This performs a fresh Chapter start and clears that Chapter's known persisted progress.
Call ReloadCurrentScene(true) to transition with the current Chapter ID. Observe OnBeforeSceneLoad and handoff rules.
Call TransitionToScene with the destination scene and optional Chapter/Objective policy owned by the project.
Disable the Restart button while IsTransitioning is true and require the command result. Failure itself never performs these actions.