# Adaptador Pi Orquestra se ejecuta desde Pi como **un solo parent session secuencial**. No instala subagentes. ## Requisitos obligatorios - `pi` debe existir en `PATH` antes de instalar Orquestra. - `gentle-engram` debe estar instalado: Orquestra usa Engram como memoria durable externa; no escribe memoria propia. - El proyecto instalado debe abrirse desde su raíz. - Arrancar con `./scripts/pi_orquestra.sh`, que ejecuta `pi --no-extensions`, carga Engram explícitamente y carga solo extensiones Orquestra. - Extensiones project-local declaradas: `.pi/extensions/orquestra-status/` y `.pi/extensions/orquestra-web-fetch.ts`. - El código de producto vive en `project/`; archivos de código en la raíz son inválidos. ## Instalación esperada Cuando Orquestra se instala en un repo de proyecto, el instalador debe copiar: - `platforms/pi/extensions/orquestra-status/` -> `.pi/extensions/orquestra-status/` - `platforms/pi/extensions/orquestra-web-fetch.ts` -> `.pi/extensions/orquestra-web-fetch.ts` No debe crear `.pi/subagents/` ni `.pi/subagents.json`. ## Técnica de memoria - Engram es la única memoria persistente del harness. - `verify.sh` falla si `~/.pi/agent/npm/node_modules/gentle-engram/index.ts` no existe. - `pi_orquestra.sh` carga Engram con `-e` aunque Pi arranque con `--no-extensions`; así se evita cargar extensiones globales no declaradas sin perder memoria. - Cada rol trabaja desde los `input` declarados en `harness/workflow.stages.yml`; el chat completo no es un handoff válido. - Para aislamiento real desde la sesión Pi, ejecutar cada stage con `/orquestra-stage [feature_id]`; internamente usa `run_stage.py`, `pi --no-session --no-context-files` y carga solo Engram + extensiones Orquestra. - Detalle completo del handoff: `docs/context-handoff.md`. ## Flujo secuencial 1. Ejecutar `./scripts/verify.sh`. 2. Abrir Pi limpio desde la raíz con `./scripts/pi_orquestra.sh`. 3. Confirmar el widget con `/orquestra-status`. 4. Ejecutar cada stage como proceso fresco desde Pi: `/orquestra-stage [feature_id]`. 5. `run_stage.py` genera un prompt mínimo con las rutas `input`/`output` del stage y no hereda la sesión anterior. 6. `agent_status.py` rechaza saltos de stage sin artefactos previos obligatorios. 7. Durante `build`, escribir producto en `project/` y tests en `tests/`; requiere `feature_id`, `stage=build`, `agent=implementer` y `state=running` en `work/runtime-status.json`. 8. Al terminar cada stage, escribir el artefacto esperado en `work/artifacts//`. 9. Ejecutar `document`/`documenter.md` solo si cambiaron docs/API/contratos/comportamiento user-facing; no es gate obligatorio de cierre. 10. Recién después empieza el siguiente rol/stage. ## Modelos por rol Si querés modelos distintos por etapa, se eligen secuencialmente antes de cada stage según `harness/model-routing.yml`. No hay ejecución paralela. ## Respuesta estándar por etapa - `done -> ` - `blocked -> `