feat: Orquestra - sequential orchestration runtime

- Context isolation: fresh Pi process per stage (run_stage.py)
- Gate enforcement: blocks close without approved gates
- Auto commit/push on feature close (close_feature.py)
- Write restrictions: only allowed directories (ALLOWED_WRITE_DIRS)
- Pi extension: orquestra-status with /orquestra-stage command
- Documentation: context-handoff.md, updated README
- Scripts: agent_status.py, verify.sh, install.sh updated
This commit is contained in:
rikrdo
2026-08-17 07:39:03 +02:00
parent 622e5df382
commit 634525fa21
28 changed files with 2296 additions and 284 deletions

View File

@@ -0,0 +1,42 @@
# Orquestra Status Extension
Pi extension project-local que renderiza `work/runtime-status.json` y aplica el guard mínimo de escritura Orquestra.
## Muestra
- feature activa
- stage actual
- rol actual
- acción/estado
- siguiente rol
- checklist de artefactos por rol
- estado de gates
- último evento de timeline
## Ruta instalada
- `.pi/extensions/orquestra-status/index.ts`
Se lanza junto con `.pi/extensions/orquestra-web-fetch.ts` desde `scripts/pi_orquestra.sh`.
## Uso
1. Abrí `pi` en la raíz del proyecto instalado.
2. Si Pi ya estaba abierto, ejecutá `/reload`.
3. El widget aparece arriba del editor y el footer muestra estado compacto.
4. El widget refresca cada segundo.
5. Refresco manual: `/orquestra-status`.
## Guard de escritura
La extensión intercepta herramientas Pi built-in `write` y `edit`:
- bloquea archivos de producto/código en la raíz (`*.py`, `*.js`, `*.ts`, `*.go`, `*.rs`, `*.java`, `*.php`, `*.rb`); usá `project/`.
- bloquea escrituras en `project/` o `tests/` salvo que `work/runtime-status.json` tenga `feature_id`, `stage=build`, `agent=implementer` y `state=running`.
- bloquea paths que escapan la raíz del repo con `..`.
## Fuente de verdad
- `work/runtime-status.json`
Actualizar con:
```bash
python3 scripts/agent_status.py set ...
python3 scripts/agent_status.py reset
```