Sessão de apoio · 3CME:1-Orquestrador

Sete ponteiros de norma apontavam para a regra errada. E duas regras que o plugin cita não existem.

Atualizado em 2026-08-06 06:35 UTC · worktree 3cme-orquestrador-support-b9d482
6ª versão — ADR das três camadas HITL no ADO (PR 1123), esperando seu aval.

Em 30 segundos: você autorizou o pacote 1 (referência pendurada no gate do ledger). Antes de escrever qualquer linha, fui conferir o estado real — e ele já tinha sido mergeado por outra sessão 41 segundos antes. Não dupliquei.

No lugar dele, peguei o que estava genuinamente aberto: a propagação da v3.3.0 para o marketplace. Sem isso, o merge do creator não chega em máquina nenhuma.

Feito e verificado: quatro PRs mergeados (creator 16 · marketplace 35, 36, 37), tudo em 3.4.0 do repo ao disco. Falta você: reiniciar o CLI, e aprovar o texto do registro de decisão (PR 1123 no ADO) — detalhe na seção 2.

1. O achado maior da madrugada: 7 ponteiros que apontariam para a norma errada

O plugin invocava um documento chamado Constitution 29 vezes. Esse documento não existe com esse nome — o canon se chama POLICY.md e vive no repositório do estúdio.

A correção óbvia seria trocar o nome e manter o número. Ela está errada em 7 dos 27 casos, porque a numeração dos dois documentos nunca correspondeu:

CitaçãoAssunto que ela invocaManter o número levaria aDestino certo
§7 (9×)credenciais, material bruto sensívelConfidencialidade✅ §7
§2 (4×)publicar é ato humanoHITL✅ §2
§6 (4×)brand, cores imutáveisvalidação multi-LLM§4
§8 (3×)aviso de conteúdo de IAoperações destrutivas§5

Sem o remapeamento, "brand kit é a fonte da verdade" passaria a apontar para a regra de validação antes de operações destrutivas. E "aviso de IA obrigatório" apontaria para a regra de rm -rf. Sete ponteiros plausíveis, verificáveis, e apontando para a norma errada — pior que a dívida original, porque parecem conferidos.

Por que a prova usual não pegaria

Contagem antes e depois fecha 27 → 27, zero ocorrência do nome antigo, verde em qualquer controle de regressão de texto. Contagem prova que o texto mudou; não prova para onde ele passou a apontar. Foi por isso que este PR trouxe um verificador de destino.

MERGED PR 16 — creator v3.4.0

github.com/sysmanager-git/sysmanager-creator/pull/16

4/4 verificações da automação passaram · merge 3ed162bd

Quatro defeitos do verificador que eu escrevi, achados rodando

Nenhum deles apareceu à leitura. Ficam registrados porque o modo de falha se repete:

#O defeito
1A verificação principal era teatro. Comparava uma tabela minha contra os títulos do canon e nunca abria os arquivos. O caso que motivou o gate inteiro passava com quatro vistos verdes.
2O script morria no meio. As duas primeiras verificações passavam, as duas últimas nunca rodavam, e saía erro sem mensagem. É o mesmo defeito que o gate irmão já tinha — reintroduzi conhecendo a lição, e quem dispara é justamente o caso saudável.
3Falso positivo por pedaço de palavra: cor casava dentro de "cortes" e acusava um agent de falar de brand.
4O veredito saía da ordem das regras, não do conteúdo: a primeira regra que casava selava o julgamento.

A cadeia, elo por elo

EloEstado
Repositório do plugin3.4.0 OK
Marketplace (PR 37)3.4.0 OK
Disco desta máquina3.4.0, e o verificador novo roda de lá OK
Sessão em execuçãoversão anterior precisa de você

O elo do marketplace reabre a cada versão — é a terceira vez em três dias. Automatizar é decisão sua, não deste trabalho, mas o padrão está registrado.

2. ⚠️ Duas decisões de canon que só você pode tomar

Encontrei duas coisas que não são erro de escrita e por isso não toquei. As duas têm a mesma forma: uma regra que o plugin trata como escrita, e que não está escrita em lugar nenhum.

a) Uma norma invocada 8 vezes que não existe em documento nenhum

Oito citações apontam para as seções §11 e §13 do canon. O canon vai até §10.

E o conteúdo é sério: §11 é a regra de que a gravação não começa sem confirmação humana"o Stream Deck nunca dispara o REC" — citada em quatro agents de captura como se fosse norma escrita. Hoje ela vive só nas citações. Quem for conferir não acha nada.

Deixei as 8 com o nome antigo de propósito: renomeá-las criaria um ponteiro que não resolve, com aparência de conferido. O verificador barra quem tentar.

b) Um gate real de aprovação que o canon não nomeia

Dezoito citações falam de uma "Camada 2". O canon declara duas camadas: A (roteiro) e B (pré-publicação). Mas essas 18 não são aprovação genérica — descrevem um gate com procedimento próprio: revisão por link compartilhado, feita pela Adrielle, antes de o master existir.

Um gate que acontece entre A e B, com revisor e ferramenta próprios, não cabe em nenhum dos dois sem perder o procedimento. Não é redundância — é uma camada real sem nome.

Trocar essas palavras sem você decidir enterraria a pergunta — ficaria arrumado e a regra continuaria não existindo.

Você decidiu as duas — e a doutrina da casa mudou o caminho

Você escolheu escrever a regra no canon e nomear a camada nova. Eu ia editar o documento direto. Fui medir o alcance antes e encontrei isto:

O padrão de decisão deste repositório cita, textualmente, "passar de 2 gates pra 3" como exemplo de mudança que exige um registro de decisão formal — e o levantamento do harness confirma a mesma regra.

Ou seja: a sua autorização estava certa, mas o caminho não era editar — era registrar a decisão primeiro. A casa barrou o atalho, e ela estava certa.

Alcance medido: 17 arquivos normativos afirmam "duas camadas"; 128 citam as camadas de alguma forma. Artefato histórico — projetos, retrospectivas, auditorias — fica fora: descreve o que era verdade na data, e reescrever apagaria o registro.

ESPERA VOCÊ Registro de decisão — PR 1123

dev.azure.com › sys-ai-cme › pull request 1123

Pelo celular, este link abre no Safari — é o único navegador onde o login da empresa funciona no telefone.

Não completei de propósito. O conteúdo dele é a sua decisão de canon; completar seria decidir por você. Sua autorização em pé cobre o ato de mergear, não o mérito de uma mudança de doutrina.

O painel obrigatório achou 7 defeitos meus no documento

Esta categoria de decisão exige revisão por dois modelos independentes. Os dois aprovaram com ressalva, e nenhum achado foi contestado. Os três que mais importam:

O defeitoPor que era grave
A verificação de aceite era impossível de executar no momento certoexigia, para aprovar a decisão, que mudanças da última fase já estivessem feitas. Verificação que só passa depois de tudo pronto não verifica nada.
O plano deixava dois documentos normativos se contradizendo sem dizer qual mandaé o defeito exato que esta decisão existe para corrigir. Agora há uma regra de transição datada.
Aprovar um asset por link não amarra a versão aprovadao arquivo pode ser trocado depois da revisão, e o registro continuaria dizendo "aprovado". Eu não tinha visto. Agora o registro guarda a identificação imutável do arquivo.

Um dos sete partiu de premissa errada — o juiz supôs que eu criaria duas seções novas quando o texto dizia uma. Mas a pergunta por baixo era real e a ambiguidade era minha: responder a ela produziu uma decisão melhor que a original.

3. O trabalho anterior desta sessão

4. Por que parei o pacote 1

A memória do repo já afirmava que o A4 (referência pendurada) tinha sido coberto. Afirmação em memória não é prova, então fui medir. O que a API devolveu:

Fato medidoValor
PR 15 do creatorMERGED28132e62, v3.3.0
Mergeado em2026-08-06T04:28:08Z
Minha consulta2026-08-06T04:28:49Z41s depois

Se eu tivesse confiado no meu próprio plano em vez de olhar o estado, teria escrito um patch inteiro contra um problema resolvido, e provavelmente aberto um PR conflitante com o de outra pessoa. Desfiz a worktree que já tinha criado — nada foi commitado nela — e avisei a sessão orquestradora antes de encostar em qualquer outro arquivo.

Nenhuma sessão aparecia em execução na hora do merge, então não sei dizer quem mergeou — só que não fui eu e que o efeito está lá.

5. A propagação que ninguém tinha feito

O marketplace.json ainda declarava sysmanager-creator: 3.2.0. Esse arquivo é quem fixa a versão: enquanto ele não muda, todo plugin install entrega a anterior, por mais que a main do plugin esteja adiante. É a mesma lacuna que eu fechei ontem para a 3.2.0 — ela reabre a cada versão.

Aproveitei para pagar uma dívida antiga na mesma linha: a descrição da entrada estava parada na v3.0.0 e não mencionava nada do que foi construído depois.

MERGED PR 35 — marketplace

github.com/sysmanager-git/sysmanager-plugins-marketplace/pull/35

Merge commit 21f0d96a · 2026-08-06T04:33:16Z

Verificado elo por elo, não presumido

EloComo confirmeiEstado
Repo do pluginplugin.json em origin/main3.3.0 OK
Marketplace remotoAPI do GitHub, arquivo lido de volta3.3.0 OK
Disco desta máquinaclaude plugin list3.3.0 OK
Sessão em execuçãoainda 3.2.0 precisa de você

Os números que a descrição afirma (27 agents, 15 skills) foram contados na árvore antes de eu escrever a frase, não copiados do texto anterior. A validação do manifesto rodou e passou — claude plugin validate, saída colada no PR.

6. A orquestradora conferiu — e achou uma coisa que eu não tinha visto

Ela mediu na fonte antes de responder, em vez de aceitar meu relato. Trouxe uma correção de formulação e um achado novo.

A correção: eu disse mal, mas fiz certo

Escrevi que a descrição "continuava narrando a v3.0.0", e ela avisou que reescrever a partir dessa premissa pioraria o texto — porque a menção à v3.0.0 não é desatualização: é aviso de mudança quebrada, que é justamente o que serve a quem vem da v2.

Ela está certa sobre a frase. Fui conferir o que o PR 35 de fato fez, comparando os dois textos campo a campo:

VerificaçãoResultado
Trechos do texto antigo ausentes no novonenhum preservado
Aviso de mudança quebrada da v3.0.0intacto OK
Contagem 27 agents / 15 skillsintacta e reconferida na árvore OK
Tamanho995 → 1.648 caracteres — puramente aditivo

Ou seja: a preocupação não se materializou, mas a imprecisão era minha. "Parada na v3.0.0" descrevia mal o que estava faltando — o que faltava não era corrigir história, era declarar a capacidade nova.

O achado dela: keywords que sobreviveram ao que apontavam

As keywords ainda listavam tts, narration, voice, realtime e translation — contradizendo a própria descrição, que diz que a stack de voz mudou de plugin. Mesma classe do defeito que o A4 passou a caçar.

Medi uma a uma antes de apagar, perguntando de cada termo se existe componente vivo que entrega aquilo. O recorte dela não se confirmou inteiro: três eram órfãs, duas tinham lastro.

KeywordPor quê
ttsas 3 menções são anti-padrão, ponteiro para o outro plugin e lista de jargão a evitarremovida
realtimelista de jargão + banner de um template de dashboardremovida
narrationo plugin consome narração pronta; não a produzremovida
voicea dublagem faz clonagem de voz do apresentadormantida
translationé o dublador multilíngue canônicomantida
dubbingcapacidade real que não estava declarada em canto nenhumacrescentada

MERGED PR 36 — keywords

github.com/sysmanager-git/sysmanager-plugins-marketplace/pull/36

Se eu tivesse seguido o recorte original, teria escondido a dublagem multilíngue — que é do creator.

Ela conferiu de volta — e a régua que eu declarei estava errada

Ela aceitou o resultado e devolveu um refinamento que é melhor que o meu. Eu havia dito que julguei as keywords pelo critério do A4 — posição de uso. Esse critério não serve para keyword.

Ponteiro é uma referência que precisa resolver: se o alvo não existe, está morto. Keyword é um termo de busca — existe justamente para alguém encontrar uma capacidade usando uma palavra que o código talvez nunca escreva. Exigir que ela apareça na árvore confunde o índice com o texto.

Fui medir, e o caso é mais forte do que ela colocou:

KeywordVezes que o termo aparece na árvoreComo a capacidade aparece de verdade
voice10 arquivos — e 3 deles não valemvoice_clone, "preservando voz original"
translationzeroTranslate, "dublagem multilíngue"
dubbingzerodub, "dublador multilíngue canônico"

Duas das três não existem como palavra — incluindo a que eu mesmo acrescentei para consertar o buraco. Quem aplicasse a régua que eu declarei removeria as duas.

E a mesma tabela me pegou uma terceira vez. Ela conferiu e achou 8 onde eu tinha achado 10, atribuindo a diferença a escopo. Fui verificar, porque escopo maior não pode dar contagem menor — e não era escopo, era maiúscula: ela contou sem ignorar caixa, eu contei ignorando. Piores, as 3 ocorrências a mais que eu tinha são todas Voice/Tone, em skills de design: tom de marca, não voz.

Então o meu próprio "10 arquivos", posto numa tabela para provar que a palavra tem lastro, estava inflado em 30% por sentido figurado. O veredito não muda — a dublagem sustenta a keyword sozinha, com clonagem de voz de verdade. O que muda é a confiança que o número merecia: nenhuma. Contagem de termo continua não sendo medida de capacidade, inclusive quando sou eu que conto.

O resultado do PR continua certo; a justificativa estava mal escrita. Corrigi o registro no próprio PR, porque é lá que a próxima pessoa vai ler. A régua certa é: keyword se julga por capacidade demonstrável — existe componente vivo que entrega isso? — e a prova é o comportamento, não a ocorrência do termo.

As três removidas continuam removidas, e pelo motivo certo: não é que faltasse o termo, é que não existe capacidade por trás delas.

Um erro meu no caminho, que quase custou as cinco

A primeira medição devolveu zero ocorrências para todos os termos. Era um \| dentro de grep -E, que procura um pipe literal — a mesma família de erro que o painel adversarial pegou três vezes no PR 15. Se eu tivesse rodado só aquele comando, teria removido as cinco keywords com um relatório limpo e falso. O que denunciou foi a contradição com o comando seguinte, não a leitura do código.

7. O que espera um ato seu

30 segundos Reiniciar o CLI

O creator 3.3.0 está no disco, mas a sessão em curso carrega a anterior. É o último elo, e só você pode dar.

portal Pipeline de shellcheck no Azure DevOps

O YAML está versionado no sys-ai-cme desde sempre, mas nenhuma pipeline foi criada — o projeto SYS-CEO tem 4 definições e nenhuma é essa. Na prática, nenhum script shell do repo tem lint automático. Criar a definição é ato no portal.

decisão Executor de upload Não-listado

Os dois juízes pediram; eu argumentei contra estrear um executor de upload num fechamento de episódio real, e a contestação venceu. Continua sendo sua chamada: depende da sua credencial e de uma primeira execução em canal controlado.

não tocar As 177 entradas do clone canônico

Branch parada desde 15 de junho, com conteúdo que não existe em main. Você decidiu sessão dedicada — nenhuma sessão deve encostar nisso fora dela, e esta não encostou.

8. O que prendeu estes merges (e o que não prendeu)

Ponto levantado pela orquestradora, e vale explicitar em vez de deixar implícito: a main destes repositórios não tem proteção de branch. A consulta à API devolve 404 — Branch not protected. Na prática, um merge passa mesmo sem verificação verde, inclusive por auto-aprovação.

O marketplace, além disso, não tem integração contínua nenhuma — a pasta .github/ não existe ali.

Então, para ser exato sobre o que garantiu estas duas entregas: não foi automação, foi medição colada no PR — validação do manifesto executada e saída transcrita, contagens lidas da árvore, estado remoto lido de volta depois de cada merge. Se em algum momento eu disser que "a verificação segurou", estarei falando de uma verificação que hoje não existe nestes dois repositórios.

9. O que essa troca toda ensinou — e por que isso importa para o gate

Cinco erros apareceram nesta cadeia de trabalho, e vale ver que são o mesmo erro em roupas diferentes:

OndeO que sobreviveu ao que devia acompanhar
Os 3 achados do painel de juízes no PR 15um filtro que decidia pela linha, não pelo alvo
O defeito que criou o gatea régua de qualidade saiu, o ponteiro para ela ficou
As keywordsa declaração ficou depois de a capacidade mudar de plugin
O recorte que a orquestradora me passouuma frase verdadeira sobreviveu ao escopo que ela descrevia
O critério que eu declareiuma régua verdadeira sobreviveu ao objeto para o qual foi feita

O A4 fechou o primeiro em código. Os dois últimos só foram pegos conversando — nenhum gate os teria detectado, porque não são sintaxe: são uma inferência plausível aplicada fora do lugar onde era verdadeira.

É o argumento contra tratar o gate como substituto de revisão. Ele tira da revisão o que dá para automatizar, e por isso libera atenção para o resto — que continua sendo a parte que erra. Nesta rodada, cada um de nós dois pegou o erro do outro, e nenhum dos dois pegou o próprio.

10. Sobre este painel

Sem narração em áudio, de propósito: isto é um laudo de estado, não um documento de decisão sob gate. O padrão narrado vale para spec, ADR, PRD e plano — e custaria minutos de geração para algo que você lê em dois no celular. Se quiser áudio no próximo, é só dizer.

Está numa URL pública porque você autorizou o Cloudflare Pages nesta sessão, justamente para abrir do telefone sem SSO. Não há segredo, token, credencial nem conteúdo de cliente aqui — só estado de repositório público da organização e nomes de arquivo.