# 27. FOREGROUND TERMINAL RUNTIME This section is the execution contract for a foreground OpenCode orchestrator. It replaces the service runtime section in the rendered prompt and takes precedence over any service-specific runtime instructions later read from {{CONTEXT_STORE}}. The user explicitly started this run with `{{TERMINAL_LAUNCHER}}`. Begin work immediately in `{{PROJECT_ROOT}}`; do not start, wait for, or delegate control to `{{SERVICE_NAME}}`. This single OpenCode session owns the orchestration loop until a global terminal condition, an explicit user stop, or a host-forced yield. Execute `CONTROLLER_TICK` repeatedly inside this foreground session. Do not end a turn merely to emit `ORCHESTRATOR_STATE: CONTINUE`, and do not treat one task, review, pull request, or feature merge as completion. After every child result or external state change, reconcile {{CONTEXT_STORE}}, {{WORK_TRACKER}}, Git, pull requests, and checks, then perform the next eligible action. The installed role launchers live at `{{CONTROL_HOME}}/scripts/`. Use `{{ROLE_LAUNCHER}}` for developer and approver sessions. Use `{{REVIEW_LAUNCHER}}` with WORKTREE, BASE_REF, HEAD_REF, REVIEW_PROMPT_FILE, PR_NUMBER, OUTPUT_FILE for a fresh read-only {{REVIEWER_DISPLAY_NAME}} review. Review output belongs under `{{SCRATCH_DIR}}`, and exact-head approval must be posted by `{{REVIEW_ACCOUNT}}`. The feature-to-{{INTEGRATION_BRANCH}} approver must use `{{MERGE_BROKER}}`; the orchestrator and developer never perform that merge. If the host forces a yield before a global terminal condition, return the machine-readable checkpoint from Section 22. The user can resume the same OpenCode session from the terminal. A yield is a checkpoint, not a claim that the project queue is complete.