Parent: #422
Depends on: #423 , #424
Integrates with: #425 –#432
Extends/supersedes the limited progress-comment scope of: #296 , #298 –#304 , especially #301
Objetivo
Garantir que cada item e cada fluxo relevante do simplicio-loop seja reportado no GitHub por comentários idempotentes, auditáveis e vinculados aos stage receipts , independentemente do runtime que executa a skill.
A execução pode usar agents nativos, processos isolados, workers remotos, CLI, MCP, hooks ou self-paced drive; o protocolo de reporting deve ser o mesmo.
Resultado esperado
Para cada work item deve existir um comentário vivo no GitHub contendo a timeline completa:
discovered
→ claimed
→ intake/planning
→ implementation
→ safety
→ review A/B/C + blast radius
→ delivery/PR/checks/merge
→ feedback/retry/recovery
→ final audit
→ COMPLETE | PARTIAL | BLOCKED | REGRESSED
O comentário não é a autoridade do estado; ele é uma projeção verificável dos events/receipts canônicos.
Gap em relação a #301
#301 implementou comentário único de progresso voltado principalmente a percentuais e entrega, com comportamento fail-open quando GitHub estava indisponível.
O novo contrato precisa cobrir:
todos os agentes e etapas de [P0][Stage Agent][Intake/Planner] Materializar agente de compreensão, orientação e plano profundo por AC #425 –[P0][Stage Agent][Completion Auditor] Materializar auditor final independente e completion oracle fail-closed #431 ;
cada item individual, não apenas o progresso geral do run;
attempt, fence, plan revision, agent identity e evidence refs;
blockers, retries, quarantine, handoff, cancel e regressão;
comentário no PR e na issue/control issue;
outbox durável e confirmação remota;
semantics configurável reporting_required=true;
completion bloqueada enquanto reporting obrigatório estiver pendente;
concorrência de múltiplos agentes sem comentários duplicados;
sanitização e limite de conteúdo.
Superfícies de reporting
Work-item comment
Um comentário por run_id + task_id, identificado por marker invisível:
<!-- simplicio-loop:stage-report:v1 run=<run_id> task=<task_id> -->
O mesmo comentário é atualizado idempotentemente durante todo o lifecycle.
Run/control comment
Um comentário agregado na epic/control issue:
itens totais/ativos/blocked/done;
lanes e agentes ativos;
próxima ação;
links para comentários de cada item;
reporting outbox pendente;
estado final.
Pull request comment/body
stage summary e AC coverage;
review panel verdicts;
checks/merge state;
evidence links;
referência cruzada ao item e ao run.
Human-action comment
Quando houver decisão humana obrigatória, criar/atualizar um comentário separado com marker estável por approval request. A resposta/approval é vinculada por comment ID, actor e revision.
Eventos que obrigatoriamente geram projeção
Run
armed/preflight started/passed/blocked;
capability probe e adapter selection;
STOP/cancel/cap/handoff;
final completion audit.
Item
discovered/enqueued;
claimed/lease/fence;
dependency blocked/unblocked;
worktree/branch allocated;
item done/quarantined/reopened.
Intake/planning (#425 )
source observation;
planning started;
clarification required;
plan/AC/impact gate passed ou blocked;
plan revision invalidated.
Implementation (#426 )
agent spawned/ready;
implementation started;
scoped progress checkpoint;
test result;
retry/failure;
candidate/head produced.
Safety (#428 )
action classified;
secret scan;
allow/deny/human gate;
approval received/expired/rejected.
Review panel (#427 )
cada reviewer A/B/C/blast criado;
cada verdict e finding count;
synthesis;
re-review após novo head.
Delivery (#429 )
composed verification;
push/PR intent e confirmation;
checks/reviews;
merge intent/confirmation;
target reachability;
source close/reopen.
Feedback/recovery (#430 )
failure fingerprint;
invalidated receipts;
retry/replan/repair;
quarantine/escalation;
regression detected.
Completion auditor (#431 )
audit started;
missing/stale evidence;
terminal verdict;
completion receipt;
terminal revoked/regressed.
Formato do comentário
Cabeçalho:
run/item/status;
source revision e plan revision;
attempt/fence;
último update;
truth class.
Tabela de stages:
Stage
Agent
Status
Attempt
Evidence
Updated
AC summary:
AC
Status
Verified by
Receipt/evidence
Seções:
blockers;
findings;
next action;
PR/delivery;
outbox/reporting health;
links para receipts/artifacts, nunca logs crus.
Contrato de eventos e receipts
Criar simplicio.github-stage-report/v1 contendo:
event ID e sequence;
run/task/work-item/stage/role/agent IDs;
attempt/fence/plan/source revision;
event type/status/reason code;
evidence refs;
rendered body hash;
target repo/issue/PR IDs;
idempotency key;
comment marker e remote comment ID;
request/response timestamps;
remote URL;
confirmation state;
retry count e next retry;
sanitized fields manifest.
O GitHub comment confirmation receipt deve registrar:
comment ID/URL;
body SHA-256;
observed updated_at;
target issue/PR identity;
marker encontrado uma única vez;
request ID quando disponível;
source event high-water mark.
Idempotência e concorrência
Buscar comentário pelo marker exato.
Zero comentários encontrados: criar com idempotency record.
Um comentário: atualizar por comment ID.
Mais de um: bloquear/reconciliar, escolher autoridade por persisted comment ID e sinalizar duplicação.
Persistir comment ID antes/depois do efeito via intent/confirmation.
Usar sequence/high-water mark para impedir update antigo sobrescrever novo.
Aplicar compare-and-reconcile quando dois agentes atualizam.
Retry após timeout consulta antes de recriar.
Rate-limit agrega eventos, mas nunca perde transição terminal/blocker/human gate.
Reporting geral e por item usam markers distintos.
Disponibilidade e fail-closed
Reporting opcional
Quando reporting_required=false:
eventos entram na outbox;
execução pode continuar;
status exibe UNVERIFIED reporting_pending;
completion receipt não pode alegar que o GitHub foi atualizado.
Reporting obrigatório
Quando o goal ou config exige comentários no GitHub:
falha temporária mantém outbox e retries;
mutações locais já seguras não precisam ser desfeitas;
COMPLETE é bloqueado até confirmation receipt;
resultado é PARTIAL/BLOCKED(reporting_pending);
ausência de auth/permission é blocker explícito;
nunca descartar eventos silenciosamente.
Isso substitui o fail-open absoluto de #301 para execuções que declararem reporting obrigatório.
Plano de implementação
Registrar github_reporting como estágio transversal no manifesto [P0][Stage Agents][Contract] Definir manifesto, lifecycle, identidade e receipts tipados por etapa #423 .
Definir schemas de event, projection, intent e confirmation receipt.
Criar renderer puro por item e por run.
Criar target resolver: source issue, control issue e PR.
Implementar marker/idempotency/search/update por ID.
Reutilizar o adapter transacional de feat(github): implementar adapter transacional do ciclo de vida das issues com comentário único e idempotente #285 /[P1][Feedback][Entrega] Instrumentar web_verify/video_evidence/pr_evidence, secao de progresso no PR e comentario idempotente de progresso na issue #301 , removendo edit-last e heurísticas.
Criar outbox append-only com retry/backoff/jitter e high-water mark.
Implementar reconciler para timeout, duplicate comment e update concorrente.
Instrumentar os lifecycle events de [P0][Stage Agents][Driver] Criar coordinator portátil e adapters para materializar agentes em qualquer runtime #424 –[P0][Stage Agent][Completion Auditor] Materializar auditor final independente e completion oracle fail-closed #431 .
Adicionar comment confirmation receipt ao stage graph.
Fazer [P0][Stage Agent][Completion Auditor] Materializar auditor final independente e completion oracle fail-closed #431 exigir reporting confirmation quando obrigatório.
Fazer [P0][Stage Agents][Conformance] Certificar agentes concretos em todos os runtimes, bundles e modos de drive #432 certificar reporting em native/command/queue e hook/self-paced.
Sanitizar secrets, PII, signed URLs, headers e raw logs.
Aplicar max body size, truncamento por prioridade e artifact links.
Implementar retention/compaction preservando timeline terminal.
Adicionar status CLI: stage-agents reporting status|flush|reconcile --json.
Atualizar documentação e runbook.
Garantir source/plugin/wheel parity.
Matriz de testes
Unitários
marker e idempotency key;
renderer determinístico;
event ordering/high-water mark;
target resolution;
body hash;
sanitization;
truncamento;
required/optional semantics;
duplicate detection.
Integração com adapter mock
create→update do mesmo comentário;
100 eventos resultam em um comentário por item;
out-of-order updates;
timeout após create/update;
response duplicada;
rate limit/403/404/5xx;
issue transfer/close/reopen;
PR e issue simultâneos.
GitHub sandbox E2E
dois updates produzem um único comment ID;
múltiplos agentes atualizam sem perder evento;
cada stage aparece na tabela;
blocker e human gate aparecem imediatamente;
final audit atualiza terminal;
regressão altera COMPLETE para REGRESSED;
body SHA e remote observation conferem.
Recovery/fault injection
crash antes/depois do intent;
crash após efeito e antes da confirmation;
outbox corrompida parcialmente;
clock skew;
network offline e retorno;
token removido/restaurado;
duplicate coordinator;
stale agent tenta sobrescrever comentário novo.
Segurança
secret no diff/log/finding;
prompt injection tentando mudar marker;
malicious Markdown/HTML;
signed URL;
path/URL externo não permitido;
GitHub comment content tratado como untrusted no re-ingest.
Sistema/conformance
run com múltiplos itens;
task em converge e drain;
native/command/queue adapters;
hook-bound/self-paced/CLI/MCP;
limited slots/waves;
STOP/cancel/handoff;
item quarantined;
final delivery e source close.
Critérios de aceite
Cada work item possui exatamente um comentário vivo identificado por marker estável.
Existe comentário agregado do run/control issue.
Issue e PR recebem projeções consistentes quando ambas existem.
Todos os eventos listados para [P0][Stage Agents][Driver] Criar coordinator portátil e adapters para materializar agentes em qualquer runtime #424 –[P0][Stage Agent][Completion Auditor] Materializar auditor final independente e completion oracle fail-closed #431 aparecem no reporting.
Comentário mostra stage, agent, status, attempt, evidence e next action.
Dois ou mais agentes não criam duplicatas nem perdem updates.
Timeout/retry usa re-query antes de criar/atualizar novamente.
Outbox é durável, resumível e observável.
Reporting obrigatório bloqueia COMPLETE até remote confirmation.
Reporting opcional nunca é alegado como medido sem confirmation.
Human approvals são vinculadas a comment/actor/revision.
Secrets e conteúdo sensível nunca aparecem nos comentários.
Regressão/reopen atualiza o comentário e invalida terminal.
[P0][Stage Agent][Completion Auditor] Materializar auditor final independente e completion oracle fail-closed #431 consome reporting receipts e [P0][Stage Agents][Conformance] Certificar agentes concretos em todos os runtimes, bundles e modos de drive #432 testa todos os modos/runtime tiers.
Unit, integration, GitHub sandbox E2E, recovery, security e system tests passam.
Cada checkbox aponta para test, remote comment URL ou receipt reproduzível.
Definition of Done
Executar um run sandbox com múltiplos itens e todos os agentes de #425 –#431 . Para cada item deve existir exatamente um comentário GitHub atualizado ao longo de toda a timeline, mais um comentário agregado do run. Desconectar a rede no meio, reiniciar e recuperar sem duplicar comentários. O auditor final só pode emitir COMPLETE depois que os comentários obrigatórios forem observados remotamente e os body hashes confirmados.
Parent: #422
Depends on: #423, #424
Integrates with: #425–#432
Extends/supersedes the limited progress-comment scope of: #296, #298–#304, especially #301
Objetivo
Garantir que cada item e cada fluxo relevante do
simplicio-loopseja reportado no GitHub por comentários idempotentes, auditáveis e vinculados aos stage receipts, independentemente do runtime que executa a skill.A execução pode usar agents nativos, processos isolados, workers remotos, CLI, MCP, hooks ou self-paced drive; o protocolo de reporting deve ser o mesmo.
Resultado esperado
Para cada work item deve existir um comentário vivo no GitHub contendo a timeline completa:
O comentário não é a autoridade do estado; ele é uma projeção verificável dos events/receipts canônicos.
Gap em relação a #301
#301 implementou comentário único de progresso voltado principalmente a percentuais e entrega, com comportamento fail-open quando GitHub estava indisponível.
O novo contrato precisa cobrir:
reporting_required=true;Superfícies de reporting
Work-item comment
Um comentário por
run_id + task_id, identificado por marker invisível:<!-- simplicio-loop:stage-report:v1 run=<run_id> task=<task_id> -->O mesmo comentário é atualizado idempotentemente durante todo o lifecycle.
Run/control comment
Um comentário agregado na epic/control issue:
Pull request comment/body
Human-action comment
Quando houver decisão humana obrigatória, criar/atualizar um comentário separado com marker estável por approval request. A resposta/approval é vinculada por comment ID, actor e revision.
Eventos que obrigatoriamente geram projeção
Run
Item
Intake/planning (#425)
Implementation (#426)
Safety (#428)
Review panel (#427)
Delivery (#429)
Feedback/recovery (#430)
Completion auditor (#431)
Formato do comentário
Cabeçalho:
Tabela de stages:
AC summary:
Seções:
Contrato de eventos e receipts
Criar
simplicio.github-stage-report/v1contendo:O GitHub comment confirmation receipt deve registrar:
Idempotência e concorrência
Disponibilidade e fail-closed
Reporting opcional
Quando
reporting_required=false:UNVERIFIED reporting_pending;Reporting obrigatório
Quando o goal ou config exige comentários no GitHub:
COMPLETEé bloqueado até confirmation receipt;PARTIAL/BLOCKED(reporting_pending);Isso substitui o fail-open absoluto de #301 para execuções que declararem reporting obrigatório.
Plano de implementação
github_reportingcomo estágio transversal no manifesto [P0][Stage Agents][Contract] Definir manifesto, lifecycle, identidade e receipts tipados por etapa #423.edit-laste heurísticas.stage-agents reporting status|flush|reconcile --json.Matriz de testes
Unitários
Integração com adapter mock
GitHub sandbox E2E
COMPLETEparaREGRESSED;Recovery/fault injection
Segurança
Sistema/conformance
Critérios de aceite
COMPLETEaté remote confirmation.Definition of Done
Executar um run sandbox com múltiplos itens e todos os agentes de #425–#431. Para cada item deve existir exatamente um comentário GitHub atualizado ao longo de toda a timeline, mais um comentário agregado do run. Desconectar a rede no meio, reiniciar e recuperar sem duplicar comentários. O auditor final só pode emitir
COMPLETEdepois que os comentários obrigatórios forem observados remotamente e os body hashes confirmados.