# Host orchestration rules

One file per task-type whose host orchestration carries gates. A task-type with
no gates has no file here, and its runs get no
`instruction-set/host-orchestration-rules.md`.

Each file is the single source for two generated surfaces:

- `skills/okstra-run/SKILL.md` — a `<!-- BEGIN FRAGMENT: host-orchestration-<task-type> -->`
  block, synced by `tools/sync-skill-fragments.mjs` (`--check` fails on drift).
- `<run>/instruction-set/host-orchestration-rules.md` — written by
  `scripts/okstra_ctl/run.py` at prepare time.

The second surface exists because a rule that lives only in the conversation is
one compaction away from gone: a DEV-10400 run operated for five turns on a
skill body truncated mid-Step-5 and nothing signalled the loss. On disk, the
rules survive compaction and `validators/validate_session_conformance.py` can
check after the fact that they were read.
