HOTL Governed Execution
This is the preferred execution entry point for new HOTL runs. It selects a host driver and an execution profile while preserving the canonical state machine in loop-execution.
Required behavior
- Resolve and lint the workflow using
loop-executionrules. - Select the profile from user intent:
loopfor autonomous sequential work,manualfor explicit checkpoints, ordelegatedfor eligible independent steps. Never select delegated execution when the user prohibited subagents. - Locate the router in the active HOTL installation, then run
runtime/drivers/route.sh preflight <workflow>before initialization. Supported roots include the current repository,~/.codex/hotl,~/.codex/plugins/hotl-source, the active Codex plugin cache, the Claude plugin root, and~/.cline/hotl. Use--hostonly when the user or trusted host context identifies one. - If preflight resolves fallback, follow the chosen existing execution skill with the generic driver. If it resolves native, obtain
envelopeand use only supported native features; the host sandbox and approvals remain authoritative. Native goals, automations, background sessions, handoffs, and hooks provide scheduling and liveness only. They never replace HOTL ownership, verification, state, or receipts. Preview and experimental continuation features remain explicit opt-ins. - Launch new driver-managed runs with
--require-owner. Immediately runowner claim --owner <stable-controller-id> --lease-seconds <bounded-lease> --run-id <run-id>, retain the returned token only in the controller, export it asHOTL_OWNER_TOKEN, and runowner heartbeatbefore and after long actions and at safe transition boundaries. Every later mutation must carry that token. Use explicitowner handoff,owner release, or reviewedowner takeover; never infer ownership from age alone. - Persist every step, verification, gate, action decision, effect outcome, budget observation, finalize, and finish transition through the selected driver. Host UI or chat text is never state.
- Before claiming success, require
receipt <run-id>to returnsufficiency.sufficient: true. A successfulfinalizeonly moves the run toready_to_finish;finishrecords the explicit disposition and moves it tocompleted. If interrupted, runreconcile <run-id>and followresumingverify-first behavior.
Long-running controller contract
- The controller, not the host session UI or a delegated worker, owns
HOTL_OWNER_TOKEN, gates, verification, budgets, and stop conditions. - Before a sensitive external effect, run
action requestwith a stable idempotency key, obtain the required humanaction decide, and then persistaction beginbefore performing the effect. Persist the observed result withaction complete; after an interrupted or uncertain result, inspect the target and useaction reconcileinstead of replaying it. - Treat
in_progressoruncertaineffect state as a reconciliation stop. Approval authorizes one bounded attempt; it is not evidence that the effect succeeded. - Keep the lease renewable during long work. If the controller cannot heartbeat safely, stop at a durable boundary and hand off or release ownership.
Compatibility profiles
loop-execution: canonical autonomous state machine and reporting contract.executing-plans: explicit human checkpoints.subagent-execution: delegated workers; controller retains gates and verification.resuming: interrupted-run recovery.finishing-a-development-branch: explicit finish disposition.
These names remain supported. Do not rewrite an accepted workflow merely to use this router.
Safety invariants
- Native mode is opt-in; executable presence alone does not prove capability.
external_write,production_change, andsecret_accessrequire theaction request→ humanaction decide→action begin→ effect →action completelifecycle. Interrupted effects useaction reconcile, never blind replay.- Unknown budget telemetry stays unknown.
- Never auto-write project memory.
scripts/hotl-memory-proposal.shonly creates a proposal for human review.
Source: hashgraph-online/awesome-codex-plugins → plugins/yimwoo/hotl-plugin/skills/governed-execution/SKILL.md