Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
StoryTangl 3.8 documentation

Contents:

  • tangl package
    • Core API
      • tangl.core identity
      • tangl.core topology
      • tangl.core artifacts
      • tangl.core dispatch
    • VM API
      • tangl.vm.runtime
      • tangl.vm.provision
      • tangl.vm.replay
      • tangl.vm.dispatch
    • Story API
      • tangl.story.concepts
      • tangl.story.episode
      • tangl.story.fabula
      • tangl.story.analysis
      • tangl.story.runtime
    • Service API
      • tangl.service manager
      • tangl.service bootstrap and metadata
      • tangl.service methods
      • tangl.service response
    • Server API
      • tangl.rest
  • Mechanics
    • Mechanics Overview
    • Game mechanics integration
  • Design Plans
    • Canonical Vocabulary
    • Conceptual Foundations
    • Simplification Spec
    • Content-Addressable Records
    • Dereferencing GraphItems
    • Hookable Dispatch Tasks
    • Mechanics Families
    • StoryTangl Widget Vocabulary
    • Widget Contract Reconciliation
    • StoryTangl Widget Wireframes
    • StoryTangl Brand References
    • StoryTan⅁l · brand usage
    • Genre Audit Notes — v1.5
    • Carwars Bundle — Widget Vocabulary Extensions
    • Credentials Bundle — Widget Vocabulary Extensions
    • Elefant Hunt Bundle — Widget Vocabulary Extensions
    • Training Bundle — Widget Vocabulary Extensions
    • Interaction Vocabulary
    • Journal Compose Contract
    • Presence/Prose Contract Spike
    • Conditional Narratives in StoryTangl
    • Singleton Asset: Type/Token Pattern
    • Concept Provisioning Design
    • Hub Fanout and Sandbox Assembly
    • MenuBlock: Dynamic Choice Hubs
    • Story Compilers
    • How create world should work
    • Cost Model & Offer Selection
    • Planning & Provisioning System Design (v3.7)
    • Provisioning Pipeline
    • Provisioning Behavior for Authors
    • Template Scope
    • Template System
    • Navigation vs Automatic Redirects
    • Story Entry Resolution
    • Canonical Single-Source/Single-Sink Form
    • Sinks, Softlocks, and Escape Hatches
    • Service Layer Architecture (v3.7)
    • Response Type Decision Matrix
    • Fragment Stream Contract
    • Media Subsystem Design
    • Generative Media Design
  • Notes
    • Asset Collection System Design
    • Credentials Interaction and Picking-Game Pattern
    • Command Payload Widget Review Appendix
    • Interaction Vocabulary Review Appendix
    • Mu-Affordances and Microconcepts
    • Sandbox Hubs as Fanout Operators
    • Media resurrection plan (tangl.media)
    • Migration Notes
      • v38 Cutover Log
      • V38 Parity Matrix (Phase 1)
      • V38 Phase 1 Review Memo
      • ScriptManager query facade migration (v3.7)
    • Audit Notes
      • Core38 Docstring Drift Audit
      • VM38 Docstring Drift Audit
    • Reference Notes
      • Code-Adjacent Design Docs
  • Contribution Guide
    • Coding Style & Architecture (semantic)
    • Docstring & Autodoc Conventions
    • Exception Policy
    • Custom World Runtime Hooks
Back to top
View this page

Navigation vs Automatic Redirects¶

StoryTangl distinguishes between two types of edge traversal:

User Choices (Manual Navigation)¶

  • Edges with trigger_phase=None (the default)

  • Always require explicit user selection via Frame.resolve_choice()

  • Never auto-followed, even if there’s only one available choice

  • Use case: Player decisions, “Continue” prompts, branching paths

Automatic Redirects (Triggered Jumps)¶

  • Edges with trigger_phase=P.PREREQS or trigger_phase=P.POSTREQS

  • Auto-followed during phase execution when conditions are met

  • No user interaction - transparent navigation

  • Use case: Scene entry/exit, forced story beats, structural traversal

Example: Single Choice Still Prompts¶

# This creates ONE choice but user must still click it:
ChoiceEdge(
    source=block_a, 
    destination=block_b,
    label="Continue"  # No trigger_phase
)

# This would auto-advance with no prompt:
ChoiceEdge(
    source=block_a,
    destination=block_b, 
    trigger_phase=P.POSTREQS  # Automatic
)

Navigation Assistant Pattern¶

Authors wanting “auto-continue on single choice” can implement this as an optional behavior at the application layer:

def navigation_assistant(frame: Frame) -> ChoiceEdge | None:
    """Optional: auto-select if only one choice."""
    choices = list(frame.get_available_choices())
    if len(choices) == 1:
        return choices[0]
    return None
Next
Story Entry Resolution
Previous
Template System
Copyright © 2025, tangldev
Made with Sphinx and @pradyunsg's Furo
On this page
  • Navigation vs Automatic Redirects
    • User Choices (Manual Navigation)
    • Automatic Redirects (Triggered Jumps)
      • Example: Single Choice Still Prompts
    • Navigation Assistant Pattern