Response Type Decision Matrix¶
ResponseType.CONTENT¶
Use when: Internal code needs a plain narrative fragment stream without runtime cursor metadata.
Return type: list[BaseFragment] (FragmentStream alias)
Examples:
lower-level journal reads that return last N fragments
test helpers or adapters that intentionally do not need a runtime envelope
Characteristics:
Read-only (MethodType.READ)
Returns story discourse without session status
Ordered, sequential output
Status: Internal/narrow. Public story-session service methods return
RuntimeEnvelope rather than raw fragment lists.
ResponseType.RUNTIME_ENVELOPE¶
Use when: Endpoint returns ordered story fragments plus cursor/session metadata.
Return type: RuntimeEnvelope
Examples:
create_story()- creates a ledger and returns the initial enveloperesolve_choice()- advances the story and returns new fragmentsget_story_update()- returns ordered runtime fragments for the active story
Characteristics:
Carries
cursor_id,step, redirect metadata, and service metadataCarries
fragments: list[BaseFragment]The client renders fragments directly through a registry/shell model
Unknown fragment types are valid extension points and must survive transport
See FRAGMENT_STREAM_CONTRACT.md for the detailed client-facing contract.
ResponseType.INFO¶
Use when: Endpoint queries metadata without side effects.
Return type: Subclass of InfoModel (ProjectedState, UserInfo, WorldInfo, SystemInfo)
Examples:
get_story_info()- projected current-state sectionsget_user_info()- account details, achievementslist_worlds()- available world templates
Characteristics:
Read-only (MethodType.READ)
Returns structured metadata (not narrative)
Idempotent queries
ResponseType.RUNTIME¶
Use when: Endpoint returns a runtime/status envelope rather than plain metadata or narrative fragments. This is for acknowledgment/control operations that do not return a story fragment batch.
Return type: RuntimeInfo
Examples:
drop_story()- ledger deletedfuture maintenance or control operations that need status/details only
Characteristics:
Common for write operations, but not limited to them
Returns acknowledgment and optional cursor position
May succeed (status=”ok”) or fail (status=”error”)
RuntimeInfo fields:
status: “ok” | “error”code: Optional error code (e.g., “CHOICE_NOT_FOUND”)message: Human-readable descriptioncursor_id,step: Current position (if applicable)details: Free-form metadata (controller-specific data)
ResponseType.MEDIA¶
Use when: Endpoint returns binary/media content.
Return type: MediaFragment (at native layer)
Examples:
get_world_media()- retrieve world-scoped media payloadsfuture asset/media fetch endpoints with native media payloads
Characteristics:
Read-only (MethodType.READ)
Returns media objects with RITs (not HTTP URLs yet)
Service layer dereferences RIT → backend-specific format
Transport layer converts to URL/base64/file path
Status: Active. Current service surfaces already include world-media responses, and gateway/transport layers may further adapt those payloads.
Decision Flowchart¶
Does endpoint return narrative fragments?
YES → RUNTIME_ENVELOPE for public story sessions
CONTENT only for lower-level raw-fragment helpers
NO ↓
Does endpoint mutate state?
YES → RUNTIME_ENVELOPE if it advances story and returns fragments
RUNTIME if it is acknowledgment/status only
NO ↓
Does endpoint return media/assets?
YES → MEDIA
NO ↓
Endpoint returns metadata
→ INFO