# Publish an application runtime release

The Content Runtime example compiles an editable story revision into an
immutable application release. A release pins the executable story behavior
and the application resources required by a playable session.

This release belongs to the Content Runtime plugin. It is not a replacement for
the Vifu Server, Agent Gateway, or canonical Vifu project.

## Release boundary

```mermaid
flowchart LR
  Draft[Editable application source] --> Compiler[Application compiler]
  Compiler --> Release[Immutable release reference]
  Release --> Plugin[Runtime service plugin]
  Vifu[Vifu project RPC] --> Plugin
  Plugin -->|Agent callback| Vifu
```

The Vifu project attachment stores the active application release reference.
Clients call the project-scoped RPC endpoint, and Vifu forwards the validated
request to the attached plugin. The plugin creates or advances a session
against the selected release.

## What the release owns

The example release defines:

- compiled story systems and state transitions;
- choices, conditions, host actions, and endings;
- logical presentation resource references; and
- the application schema version needed to execute the content.

It does not own:

- provider credentials or Agent Gateway connections;
- project keys or launch credentials;
- canonical Agent profile records;
- users; or
- Vifu's Agent traces.

When the release needs an Agent, the plugin invokes the canonical profile
through Vifu's authenticated runtime-extension callback.

## Stable sessions

Publishing a newer release does not rewrite sessions that already started.
Each session keeps the application release reference it was created with, so
reconnect and replay continue against the same behavior.

This is an application-level release strategy demonstrated by Content Runtime.
Other plugins can use a different compiler or release representation while
preserving the same Vifu identity, access, and Agent boundaries.
