Motor Supervisor¶
Responsabilidade: controlar o kill switch global do Motor Autonomo e o daemon local que consome a fila. Path: _core/motor.py Issues: DEV-1182, DEV-1191, ajustes operacionais 2026-07-06
O que faz¶
motor.py separa duas coisas que parecem iguais na operacao diaria, mas nao sao: o kill switch git-versionado e o loop local. O kill switch vive na branch motor-state e responde se o motor tem permissao para trabalhar. O loop local e um processo motor_loop.py run que precisa estar ativo para consumir a fila.
O comando operacional correto para "deixar rodando" e start: ele sobe o loop local quando necessario e liga o kill switch com auditoria. on continua existindo, mas e apenas toggle do gate; se o loop estiver inativo, nada consome issues.
O status mostra os dois lados:
motor: LIGADO/DESLIGADOvem da branchmotor-stateou do cache local.loop: ATIVO/INATIVOvem do pidfile.pd/motor-loop.pide do processo local.
Como rodar localmente¶
python _core/motor.py status --fresh
python _core/motor.py start --reason "teste supervisionado"
python _core/motor.py start-loop
python _core/motor.py stop-loop
python _core/motor.py off --reason "pausa operacional"
python _core/motor.py --self-test
Decisoes arquiteturais¶
- Default OFF: se a branch remota, o cache ou o JSON estiverem ausentes/invalidos, o motor nao trabalha.
- Fetch remoto tolerante: timeout de
git fetch origin motor-statevira falha controlada e cai no cache local, em vez de derrubar o daemon. - Supervisor local separado do gate: permite deixar o processo vivo em idle quando o motor esta OFF e retomar depois.
- Pid check no Windows via
Get-Process:tasklistdeu falso negativo/falso positivo em execucao real;Get-Process -Idvirou a fonte local para status.
Gotchas conhecidos¶
onnao inicia daemon. Para teste noturno, usestart.- Se o status disser
fonte: cache-local, o motor pode continuar nesta maquina, mas a leitura remota falhou naquele momento. - O arquivo de log
.pd/motor-loop.err.logacumula tracebacks antigos; valide o timestamp antes de concluir que o erro e atual. - Em Windows, um PID antigo pode existir como processo Python sem estar consumindo fila; o status corrigido usa
Get-Process, mas o sinal mais forte ainda e o log avancando ou a fila mudando.
Refs¶
- Linear: DEV-1182, DEV-1191
- Docs:
_core/MOTOR-AUTONOMO.md,_core/PR-ESCALATION-MATRIX.md - Logs:
.pd/motor-loop.out.log,.pd/motor-loop.err.log
Fonte repo: C:/dev/pd-framework/_core/docs/motor-supervisor.md
Notas Relacionadas¶
Status - Motor-Autonomo - Motor-Loop - Motor-Supervisor