Este repositório é um template de governança para sessões "agentic" com SSOT-first e HITL.
- Âncora de calibração (máquina + humano):
./init-params.xml - SSOT operacional do agente:
./.github/copilot-instructions.md
Prompt mínimo (para iniciar o protocolo):
- Ler
init-params.xmle./.github/copilot-instructions.md. - Inventariar artefatos e estado (VALIDAR).
- Se houver intervenção humana, localizar a última entrada em
project-panel.json.interventionse reancorar a execução nela (recursivo).
These tests are designed to reduce ambiguity and validate that <SSOT_INIT_PARAMS> remains useful for both humans and agents (including smaller/cheaper models).
- AT-1: Parseability (MUST PASS):
init-params.xmlMUST exist, MUST contain exactly one<SSOT_INIT_PARAMS>...</SSOT_INIT_PARAMS>root, and MUST include all required tags:<ORIGEM>,<INTENCAO_IMUTABILIDADE>,<EDICAO>,<REGRA_AGENTE>,<ITERACAO>. - AT-2: Change governance (MUST PASS): Any change to the XML block MUST be recorded in
runbook.jsonunderdecisionswith:id,scope:"SSOT_INIT_PARAMS",change_summary,reason,approved_by,timestamp,atomic_unit,idempotency_note. - AT-3: Non-interference (MUST PASS): The init params MUST NOT break README readability/structure; the README MUST remain readable and consistent.
- AT-4: Atomicity & Idempotency (MUST PASS): Each change to
<SSOT_INIT_PARAMS>MUST be a single atomic unit of change and MUST be idempotent (re-applying it yields the same state, with no extra side effects).
Reference implementation: runbook.json checkpoint ssot_init_params_acceptance.
- Instruções do agente (SSOT reconhecido por padrão):
./.github/copilot-instructions.md - Skills do projeto:
./.github/skills/<skill>/SKILL.md - (Compat) Legado:
./copilot-agentinstruction.md
- VALIDAR: ler o SSOT e inventariar artefatos (sem alterar estado).
- Criar/atualizar artefatos de rastreabilidade:
runbook.jsonproject-panel.json
- Se houver desvio do SSOT ou necessidade de ação extra, abrir decisão HITL e solicitar aprovação.
- Só então MODIFICAR, registrando evidências.
Este repositório inclui um painel local (HTML + JS) com accordion (expand/collapse) para visualizar e intervir via GUI (HITL) usando os artefatos JSON.
O painel requer 2 processos simultâneos rodando em terminais separados:
# Navegar para o diretório do projeto
cd "H:\Meu Drive\01_PROJECTS\ssot-vcia\ssot-vcia"
# Iniciar o servidor API
python panel/server.pyResultado esperado:
SSOT panel API running on http://127.0.0.1:8787
Mantenha este terminal aberto. O servidor ficará rodando e processando requisições.
# Em um NOVO terminal, navegar para o diretório do projeto
cd "H:\Meu Drive\01_PROJECTS\ssot-vcia\ssot-vcia"
# Iniciar o servidor HTTP para servir a UI
python -m http.server 5500 --directory panelResultado esperado:
Serving HTTP on 0.0.0.0 port 5500 (http://0.0.0.0:5500/) ...
Mantenha este terminal aberto também.
- Abra seu navegador
- Acesse:
http://127.0.0.1:5500ouhttp://localhost:5500 - O painel carregará automaticamente e mostrará:
- Status de conexão (deve aparecer "connected" em verde)
- Project Panel (JSON raw + visualização de Milestones)
- Runbook (JSON raw + visualização de Decisions)
- Operator Notes (formulário + lista de notas)
- Decisions (formulário + lista de decisões)
- Decisions Pending (lista de decisões pendentes)
Visualização:
- Project Panel: Mostra
project-panel.jsoncompleto (JSON raw) + Milestones renderizados - Runbook: Mostra
runbook.jsoncompleto (JSON raw) + Decisions renderizados - Milestones: Lista visual de milestones com status, data, resumo e evidências
- Decisions: Lista visual de decisões com scope, timestamp, mudanças e razões
- Decisions Pending: Lista de decisões que precisam de atenção
Interação HITL:
- Operator Notes: Adicione notas com prioridade (P1/P2/P3) e scope opcional
- Add Decision: Registre decisões HITL com todos os campos obrigatórios (id, scope, change_summary, reason, atomic_unit, idempotency_note, approved_by, timestamp)
Atualização automática:
- O painel atualiza automaticamente a cada 2 segundos (polling)
- Use o botão "Refresh" para atualização manual
- Use "Toggle all accordions" para expandir/colapsar todas as seções
- Verifique se o Terminal 1 (API) está rodando na porta 8787
- Verifique se o Terminal 2 (UI) está rodando na porta 5500
- Verifique se não há firewall bloqueando as portas
- NÃO abra o arquivo HTML diretamente via
file:// - SEMPRE use o servidor HTTP (
python -m http.server 5500 --directory panel) - O servidor HTTP é necessário para evitar bloqueios de CORS
- Se a porta 8787 estiver ocupada, defina:
$env:SSOT_PANEL_PORT="8788"(PowerShell) - Se a porta 5500 estiver ocupada, use outra:
python -m http.server 5501 --directory panel - Atualize a URL no navegador para a nova porta
- Os dados são salvos atomicamente (escrita atômica com arquivo temporário)
- Operações são idempotentes (repetir a mesma operação não causa efeitos colaterais)
- Todas as mudanças são registradas nos arquivos JSON (
project-panel.jsonerunbook.json) - O painel é somente leitura para JSON raw, mas permite adicionar notes e decisions via formulários
/skills reload- Se necessário:
/skills add ./.github/skills