Serving by app version
newest published, non-halted playbook whose minAppVersion ≤ the device
{{ startDraftCta }}
Continue draft {{ openDraftVersion }}
Each playbook is a floor with no maximum. Hash marks the region a newer playbook already covers. Click a version on the left to view or edit.
{{ r.version }}
{{ r.actionLabel }}
App version →
{{ t.v }}
{{ edEyebrow }}
Playbook {{ edVersion }}
{{ edStatusLabel }}
based on live {{ edBasedOn }}
{{ edSubtitle }}
Publish playbook
Go to draft {{ openDraftVersion }}
{{ startDraftCta }}
Target · minimum app version
app {{ targetVersion }}
{{ targetNote }} · released {{ targetReleased }}. Only hooks and metadata shipped by this version are guaranteed on every device — raise the target for newer capabilities, lower it to reach more installs.
{{ capHookCount }} hooks
{{ capStateCount }} state fields
{{ capEventCount }} events
{{ m.tagLabel }}
{{ m.type }}
{{ m.addedV }}
No metadata field matches — try another term.
{{ metaMatch }} matching · showing up to 40
{{ nextVersion }} adds {{ nextAddH }} hooks · {{ nextAddM }} fields
App hooks · engineer-owned
{{ activeHookId }}
Ordered first-match — the first matching directive wins, one outcome per hook.
{{ d.priority }}
{{ d.cohortName }}
{{ d.statusLabel }}
{{ d.modeLabel }}
{{ d.warnText }}
No directives on this hook
The hook fires and the app continues as normal.
Cohorts
Defined with engineer-curated patterns. Operators tune parameters freely.
AND{{ r }}
No rules — matches every user.
{{ c.usedCount }} {{ c.usedText }}
Pages
Each page carries its own verb and behavior. Authored and uploaded here, then paired to cohorts in the editor.
{{ c.usageLabel }}
{{ c.name }}
Updated {{ c.updatedAt }}
Simulated user
Resolve a hook against {{ previewVersion }} on an app {{ previewTarget }}+ device.
Signals this hook reads
{{ hookDirCount }} directive(s) here. Greyed-out fields below don't affect this hook.
No directives on this hook — nothing to match. The runtime returns no-op.
Resolving against pasted app meta
Resolve hook
resolve(meta, "{{ pv.hook }}", ctx)
Resolution trace
{{ t.cohortName }}
{{ t.detail }}
Directive returned
{{ resultJson }}
Set up a user and hit Resolve
The Runtime evaluates directives in order and returns one outcome.
On device
Every change is recorded — who, when, what. Built on the internal-admin chassis with SSO.