# Puzzle Skip Option

This runbook covers `TODOS.phase-72.72.13.2.9`: offering an opt-in puzzle skip
after repeated attempts or configurable elapsed time.

The profile id is `Input.PuzzleSkip.PerPlayer.V2`. It persists per player,
defaults to `PuzzleSkip.Off`, applies during startup before gameplay, and is
exposed through `Settings.Accessibility.PuzzleSkip`.

Players can opt into `PuzzleSkip.AttemptsOrElapsedTime`. The offer appears only
in single-player story puzzle contexts after either the configured attempt
threshold or elapsed-time threshold is reached. The threshold rows are
`Settings.Accessibility.PuzzleSkipAttempts` and
`Settings.Accessibility.PuzzleSkipElapsedTime`, with defaults of 3 attempts and
120 seconds.

The mode evaluator uses `FV2PuzzleSkipPolicy`, `FV2PuzzleSkipRequest`, and
`FV2PuzzleSkipOffer`. Default policies cover `Puzzle.Story.GlyphLock`,
`Puzzle.Krypt.ForgeGlyph`, and `Puzzle.Konquest.AncientRelay`. An offered skip
requires player confirmation, includes a narrative summary, preserves rewards,
and completes the puzzle without a fail-state penalty.

Puzzle skip is blocked in ranked and tournament contexts, remains story-only,
and does not alter authored frame data. If the feature is off or the thresholds
are not met, narrative summaries and preserved rewards stay hidden.

Implementation signoff lives in
`V2/ue/Content/V2/Input/Accessibility/PuzzleSkipOption_V2_Contract.json` and
`V2/ue/Tools/check-v2-puzzle-skip-option.py`.

## Verification

Run these checks after changing puzzle skip:

```bash
python3 V2/ue/Tools/check-v2-puzzle-skip-option.py
python3 V2/ue/Tools/check-v2-input-module.py
python3 V2/ue/Tools/check-v2-modes-module.py
python3 V2/ue/Tools/check-v2-accessibility-feature-set.py
python3 V2/ue/Tools/check-v2-settings-ui.py
python3 V2/ue/Tools/check-v2-profile-save-game.py
python3 V2/ue/Tools/check-v2-persistence-module.py
python3 V2/ue/Tools/check-v2-ui-module.py
python3 V2/ue/Tools/check-v2-ci-workflow.py
python3 V2/tools/validate-v2-docs.py
python3 -m json.tool V2/ue/Content/V2/Input/Accessibility/PuzzleSkipOption_V2_Contract.json
```

Automation coverage:

- `V2.Input.Module`
- `V2.Modes.Module`
- `V2.Persistence.Module`
- `V2.Persistence.ProfileSave.AssetContract`
- `V2.UI.Module`
- `V2.UI.SettingsScreen.AssetContract`
