# loop

Статус: отключен по умолчанию и report-only/fail-closed. Этот extension больше не регистрирует hooks `tool_call` или `agent_end`, не хранит local loop state и не отправляет automatic follow-up messages.

## Назначение

`loop` должен отвечать за bounded continuation: агент может продолжать работу после turn-а только в пределах понятного лимита и без гонки с background delivery. После OMP-grounded review текущая локальная реализация признана неправильной границей, потому что OMP уже владеет loop limit parsing, interactive auto-submit, compaction guards and post-prompt background work.

## Почему он есть в проекте

Extension оставлен как disabled compatibility shell для старых `/loop` и `loopControl` surfaces. Он показывает, что automatic continuation — желаемая capability, но не притворяется готовым Miloc runtime.

Новая реализация должна портировать или тонко упаковать OMP loop mode. Важная часть контракта: loop не должен отправлять следующий prompt, пока идет compaction, streaming или post-prompt background work.

## Пользовательская поверхность

Tool `loopControl` принимает старые actions `start`, `stop`, `status`, `once` и `until`. `status` возвращает report-only result, а остальные actions возвращают `isError=true` с `details.owner="omp-loop-mode"`, `details.ported=false` и `details.redesignRequired=true`.

Command `/loop` показывает тот же статус в widget. Он не включает loop, не меняет состояние и не отправляет follow-up.

## Как работает по коду

Entrypoint регистрирует только tool `loopControl` и command `loop`. Local `_shared/loop-policy` и `sharedState.loop` удалены, чтобы не оставлять старый continuation engine как скрытый runtime.

- Entrypoint: `./extensions/loop/index.ts`
- Manifest: `extensions/loop/manifest.json`
- Commands: `loop`
- Tools: `loopControl`
- Hooks: none
- Permissions: fs.read=none, fs.write=none, subprocess=none, network=none, browser=false, models=false, ui=`setWidget`, `setStatus`
- State: none
- Review: status=reviewed, source=wrapper-first, reviewedBy=miloc-pi, reviewedAt=2026-06-01, risk=high

## Ограничения и риски

Этот extension intentionally does not provide live automatic continuation. Если включить его как есть, пользователь получит только статус и fail-closed errors. Это правильно до тех пор, пока OMP loop mode не будет перенесен с учетом compaction, streaming, post-prompt work and loop limits.

## Решение

Решение: `redesign-later`, fail-closed locally. Automatic continuation нельзя включать через локальный `agent_end` hook; будущий plugin должен использовать OMP loop mode как source truth.
