Packages and Practice Modes
Build immutable portable experiences that own domain meaning while the host retains authority.
A package is the deployable unit for one or more Practice Modes and their presentation. One package may contribute deterministic activities, progression, Story Events, a rich player, overlays, coordination, narration, and package-owned configuration defaults.
Members should experience a coherent Experience Suite, not an installation wizard. Adding the Suite provisions every included Practice Mode from the immutable package defaults so rankings and progress remain aligned across the Pursuit.
Package capability map
| Contribution | Question it answers | Executed by |
|---|---|---|
| Activity | What happens when this input arrives? | isolated runtime worker |
| Progression | How does comparable evidence map to ranks? | trusted host projection |
| Story Event | Which committed facts matter to viewers/editors? | host after activity commit |
web_ui | How does the member perform and understand the Attempt? | opaque iframe or WebView |
| Overlay | What should a viewer see now? | read-only browser source |
| Coordination | Who may act, and when is a match/round complete? | isolated policy worker |
| Narration | Which committed facts deserve a bounded cue? | isolated policy worker |
Learn in this order
Package anatomy
Manifest, artifacts, contributions, defaults, and immutable identity.
Activity engine
Describe, initialize, apply, normalize, and complete one Attempt.
Input and package UI
Choose a host form or rich player; make manual and automatic input converge.
Measurements and progression
Design comparable results and rebuildable ranks before collecting history.
Story and overlays
Turn committed evidence into semantic moments and safe presentation.
Workbench
Exercise real bytes, fixtures, viewports, failure states, and conformance.
Small first, deep eventually
The best first implementation proves one excellent Practice Mode end to end. The complete vertical can add more modes, a shared Domain Kit, automatic input, corrections, coordination, narration, and creator tooling without changing the core trust boundary.
The Darts capability trace shows how those layers compose without turning the package into a trusted monolith.