agents-lab

Local-first lab for reusable AI-agent primitives and the curated pi-stack.

View on GitHub

Scheduler Governance (pi-stack)

Governança forte para evitar takeover acidental de scheduler entre sessões no mesmo workspace.

Problema

Quando aparece o aviso:

Another pi instance is managing scheduled tasks for this workspace

significa que existe lease ativo de outra instância no mesmo workspace.

Sem política explícita, isso pode gerar takeover não intencional e ações destrutivas em tarefas foreign.


Como ownership/lease funciona

Persistência (scheduler do @ifi/oh-pi-extensions):

Lease contém:

Heartbeat é renovado periodicamente pela instância dona; lease é considerado ativo enquanto o heartbeat não fica stale.


Política de governança

Config em .pi/settings.json:

{
  "piStack": {
    "schedulerGovernance": {
      "enabled": true,
      "policy": "observe",
      "requireTextConfirmation": true,
      "allowEnvOverride": true,
      "staleAfterMs": 10000
    }
  }
}

Também pode usar env:

Modos

Regras de segurança


Comandos operacionais

Diagnóstico rápido global: /doctor agora inclui seção de scheduler governance (policy + lease/owner signal).

Status

/scheduler-governance status

Mostra:

Política

/scheduler-governance policy
/scheduler-governance policy observe
/scheduler-governance policy review

Persistência no workspace (.pi/settings.json) e sugestão de /reload.

Ações destrutivas guardadas

/scheduler-governance apply takeover
/scheduler-governance apply disable-foreign
/scheduler-governance apply clear-foreign

Todas exigem confirmação textual em UI.


Playbook — quando usar cada opção


Recuperar sessão órfã

  1. /scheduler-governance status
  2. Verificar heartbeatAgeMs e owner.pid/cwd
  3. Se owner estiver inativo/stale:
    • preferir review
    • depois apply takeover (com confirmação textual)
  4. Revisar backlog com /schedule list

Evitar conflito em times


Rollout seguro (recomendado)

  1. Feature flag + default observe
    • enabled: true
    • policy: "observe"
  2. Monitorar 1 semana com /scheduler-governance status
  3. Habilitar review em workspaces de maior churn
  4. Liberar takeover/disable/clear apenas para mantenedores