Skip to content

Releases: pauloborini/atlas-workflow

v0.9.2

23 Jun 00:22
3739bb9

Choose a tag to compare

0.9.2 - 2026-06-22

Tipo: hardening contratual, determinismo e portabilidade (sem breaking; CAPABILITIES_SCHEMA_VERSION segue v5, modos públicos full/direct/execute/interview-only intactos). Três frentes de melhoria das skills.

Mudanças:

  • Routing/ownership — matriz modo→executor fechada: full/executeatlas-plan-execute, directatlas-direct-execute, todos preservando phase: plan_execute. atlas-direct-execute deixa de degradar para self-check quando subagente/MCP ausente → retorna blocked (alinhado ao gate PREREQ hard-fail). interview-only materializa PRD real via template antes de invocar atlas-prd-interview.
  • Evidência determinística / validator / repair — state schema estendido de forma aditiva (base_sha/head_sha, contract_kind, obligations[], invariants[], scenario_probes[]/risk_probes[], validation_map[], task_evidence[]). MCP valida boundary real (base_sha...head_sha + delta de worktree vs files_changed); findings estruturados (id/failure_mode/evidence/recommendation/fix_validation) com rejeição de incoerência severidade×verdict; repair correlaciona finding→arquivo→check→status e recomputa boundary.
  • Portabilidade e qualidade documental — gate da slice review portado de Python para Node (classify_findings.mjs canônico; wrapper .py legado por uma release, sem virar requisito). Baseline universal + perfis de stack (Flutter/Node/Python) — regras Flutter/GetX só ativam com sinal real do repo. Backlog update não-destrutivo (preserva IDs/sprints done/decisões). Sprint PRD com autoridade de fonte explícita. Interview host-agnostic via atlas_capabilities + persistência por rodada.
  • Testes/CI — +20 testes no núcleo MCP (148 no total) + suíte de helpers (classify-findings, etapa3); job cross-OS prova gate documental sem Python em Linux/macOS/Windows.

v0.9.1

21 Jun 16:25
ae091ea

Choose a tag to compare

0.9.1 - 2026-06-21

Tipo: patch de distribuição (sem mudança de schema/runtime; CAPABILITIES_SCHEMA_VERSION segue v5). Corrige o instalador do host Antigravity introduzido em 0.9.0.

Mudanças:

  • Fix — init antigravity via npx-from-GitHub (build/cli/atlas-init.mjs). O instalador copiava skills e mcp-server de ROOT/packages/ (packages/skills, packages/orchestrator/..., packages/mcp-server), mas /packages/ é excluído do tarball npm por .npmignore — então npx github:pauloborini/atlas-workflow init antigravity abortava com ENOENT em packages/skills. Passa a copiar do bundle shipado plugins/atlas-workflow-orchestrator/ (skills/ já inclui a skill atlas-workflow-orchestrator; packages/mcp-server/), mesmo padrão de fonte dos demais hosts. Bug não pegava em testes locais porque o checkout do repo tem /packages/; só o caminho de instalação real (npx) era afetado.

v0.9.0

21 Jun 16:15
2683e58

Choose a tag to compare

0.9.0 - 2026-06-21

Tipo: minor aditivo — novo host Antigravity (Gemini), sexto host suportado. Sem breaking (CAPABILITIES_SCHEMA_VERSION segue v5); comportamento dos hosts existentes preservado.

Mudanças:

  • Novo adapter antigravity em HOST_ADAPTERS (packages/mcp-server/server.js, replicado nas 4 cópias de bundle). Subagente nativo via define_subagent(name, system_prompt) + invoke_subagent(Subagents); validator_dispatch.join.sync = self_evident (invoke_subagent bloqueante por design do host); MCP nativo; sem todo nativo. prereq_policy default self_evident — host nativo, não exige host_capabilities (igual claude/codex/opencode).
  • Detecção via ATLAS_HOST=antigravity (injetado no mcp_config.json pelo instalador) ou arg host. Mesmo padrão de injeção de opencode/pi; sem file-detection.
  • Instalador (build/cli/atlas-init.mjs): installAntigravity/uninstallAntigravity instalam globalmente em ~/.gemini/config/ (plugin em plugins/atlas-workflow-orchestrator/ + merge do MCP em mcp_config.json). Aliases antigravity/gemini/antigravitycode. --global é no-op (já global por natureza).
  • Robustez de runtime (beneficia Antigravity, sem regredir os demais): (1) cwd igual a / ou /var/folders sem root explícito cai para $HOME; (2) gravação do mcp.log em try/catch (tolera diretório somente-leitura); (3) código de erro JSON-RPC sanitizado para inteiro (Number.isInteger(code) ? code : -32603, original_code preservado em data) — conformidade com clients estritos.
  • Docs: host-adapters.md (matriz de adapters, 5 cópias), README.md, COMMANDS.md atualizados com o sexto host. Correção: Antigravity não gera artefato .plugin (instalação from-source por cópia direta).
  • Testes: 4 testes novos cobrindo detecção, perfil de capabilities, prereq self_evident e presença em HOST_NAMES (packages/mcp-server/server.test.js).

v0.8.3

17 Jun 00:54

Choose a tag to compare

0.8.3 - 2026-06-16

Tipo: patch de confiabilidade runtime. Sem mudança de schema (CAPABILITIES_SCHEMA_VERSION segue v5). Origem: post-mortem de travamento repetido em plan_execute (atlas-plan-execute despachado, sem state_path, sem progresso material e sem erro terminal), mesmo padrão já observado em S30/S32.

Mudanças:

  • Gate G12 — liveness do executor. atlas_lock_dispatch(action=start, phase=plan_execute) passa a criar estado de liveness com deadline de bootstrap. O executor precisa emitir checkpoints via atlas_lock_dispatch(action=checkpoint, phase=plan_execute, event=...).
  • Checkpoints materiais. Eventos aceitos: executor_started, skill_loaded, plan_loaded, handoff_accepted, task_started, first_write, state_path_created.
  • Detecção de stall. atlas_lock_dispatch(action=status, phase=plan_execute) transforma bootstrap vencido sem checkpoint em blocked com cause: executor_bootstrap_timeout; checkpoint antigo sem progresso novo vira executor_progress_timeout. Em ambos os casos persiste executor_liveness.status = stalled, libera o lock e aponta next_action: retry_plan_execute.
  • Checkpoint final enforçado. state_path_created exige state_path legível/parseável. atlas_lock_validator(start) bloqueia em G12 se o executor não tiver emitido state_path_created para exatamente o mesmo state_path.
  • Contrato dos executores endurecido. atlas-plan-execute e atlas-direct-execute agora devem emitir checkpoint antes de discovery/preflight interno longo; se MCP/checkpoint não for possível, retornam blocked em vez de ficar vivos sem progresso.
  • Contrato do orquestrador endurecido. atlas-workflow-orchestrator documenta G12: sem retorno/progresso do sub-agent, consultar status; stalled nunca conta como execução em andamento nem permite completed.

Impacto:

  • Pipeline full/direct/execute mantém topologia sibling-only e schema v5.
  • Hosts/callers antigos que só usam start/complete continuam compatíveis.
  • Falha "executor spawned but not making progress" deixa de ser limbo silencioso e vira estado determinístico/retryável.

Arquivos/artefatos:

  • packages/mcp-server/server.js
  • packages/mcp-server/server.test.js
  • packages/skills/atlas-plan-execute/SKILL.md
  • packages/skills/atlas-direct-execute/SKILL.md
  • packages/orchestrator/skills/atlas-workflow-orchestrator/SKILL.md
  • VERSION, manifests, catálogos plugins/, hosts/opencode/, hosts/pi/, dist/

Validação:

  • node --test packages/mcp-server/server.test.js (125 testes)
  • node build/bump-version.mjs 0.8.3 (inclui build/build-plugins.sh + node build/check-consistency.mjs)

v0.8.2

16 Jun 03:34

Choose a tag to compare

0.8.2 - 2026-06-16

Tipo: packaging + docs + tooling. Sem mudança de schema (CAPABILITIES_SCHEMA_VERSION segue v5) e sem mudança de contrato runtime do MCP.

Resumo: fecha o ciclo de release público da linha 0.8.x: bump correto pós-0.8.1, publicação npm preparada, CI de release mais seguro e documentação operacional de bump/release para IA.

Mudanças:

  • Bump para 0.8.2. VERSION, package.json, packages/mcp-server/package.json, README, comandos e manifests/catálogos gerados passam a apontar para 0.8.2.
  • Release npm. .npmignore mantém o tarball pequeno e inclui só o instalador, hosts/ e plugins/ necessários para npx/npm exec; o workflow de release publica atlas-workflow com provenance e pula publish se a versão já existir.
  • CI de release endurecido. release.yml valida tag vX.Y.Z contra VERSION, extrai release notes de CHANGELOG.md aceitando cabeçalho ## X.Y.Z ou ## vX.Y.Z, confere package.json.version antes de publicar e mantém assets .plugin + SHA256SUMS na GitHub Release.
  • Procedimento de bump para IA. PATCH_PROCEDURE.md foi atualizado com passo a passo completo: preflight, classificação, arquivos obrigatórios, regeneração, validação local, validação npm, tag/push e verificação pós-release.
  • Doc drift corrigido. packages/orchestrator/README.md e cópias empacotadas deixam de reportar Plugin version: 0.8.0.

Impacto:

  • Instalação via npx github:pauloborini/atlas-workflow init <host> continua igual.
  • Após tag v0.8.2, o release workflow deve publicar GitHub Release e pacote npm atlas-workflow@0.8.2.

Arquivos/artefatos:

  • VERSION, package.json, packages/mcp-server/package.json
  • README.md, COMMANDS.md, PATCH_PROCEDURE.md, CHANGELOG.md
  • .github/workflows/release.yml, .npmignore
  • packages/orchestrator/README.md
  • plugins/atlas-workflow-orchestrator/**, hosts/opencode/**, hosts/pi/**
  • dist/atlas-workflow-{claude,codex,opencode,pi}.plugin, dist/SHA256SUMS

Validação:

  • build/build-plugins.sh
  • node build/check-consistency.mjs
  • node --test packages/mcp-server/server.test.js
  • node build/smoke-hosts.mjs
  • node build/conformance-matrix.mjs
  • (cd dist && shasum -a 256 -c SHA256SUMS)
  • npm pack --dry-run --json
  • npm exec --yes --package /tmp/atlas-npm-pack/atlas-workflow-0.8.2.tgz -- atlas-workflow --help
  • npm exec --yes --package /tmp/atlas-npm-pack/atlas-workflow-0.8.2.tgz -- atlas-workflow init opencode --dry-run --dir /tmp/atlas-opencode-target
  • npm exec --yes --package /tmp/atlas-npm-pack/atlas-workflow-0.8.2.tgz -- atlas-workflow init codex --dry-run

v0.7.1

14 Jun 19:40
1f6f0f8

Choose a tag to compare

Patch de confiabilidade a partir do smoke S18 multi-host (Claude Code, Codex, Cursor, opencode PASS em tarefa real). Sem breaking · CAPABILITIES_SCHEMA_VERSION segue v5.

Correções (MCP)

  • P2atlas_run_state(upsert) faz merge top-level: upsert parcial não derruba dispatch.active (bug que travava o lock_validator(start) seguinte em Codex + opencode).
  • Version-conflictfindActiveRunConflict só bloqueia conflito de lock real; run antigo/inativo (inclusive de versão anterior) deixa de travar runs novos. Corrige fricção de atualização de 0.6.x.
  • Banneratlas_verify_artifact aceita artifact_kind (prd|plan) para banner correto na verificação de PRD.

Endurecimento (Gate G4)

  • R17 — falha de dispatch do validador em runtime = blocked, nunca inline.
  • R19dispatch_token do complete tem que vir do output do próprio validador irmão.

Limite honesto: R17/R19 não são prova de isolamento não-forjável (MCP fala stdio com cliente único). Fecha o atalho preguiçoso; prova forte fica para S22.

Verificação

110 testes (107 + 3 regressões) · check-consistency ok · plugin validate --strict ok.

Instalação

claude plugin marketplace add pauloborini/atlas-workflow

v0.7.0

12 Jun 23:51

Choose a tag to compare

v0.7.0 - 2026-06-11

Tipo: breaking de contrato atlas_capabilities (schema v3 → v5; topologia única). Pré-1.0 → bump minor consciente; sem mudança de comportamento de execução e sem mudança na superfície de instalação do usuário.

Resumo: purga total do conceito nested do produto. A topologia do validador frio (Gate G4) passa a ser sibling em todos os hosts: o executor escreve state_path e encerra, e o orquestrador despacha atlas-task-validator como sub-agent irmão isolado. Consolida as decisões DEC-SIB-001/002/003/004.

Mudancas:

  • nested removido por completo de runtime, skills e docs vivas (README, SKILL.md do orquestrador, comentários do MCP). CHANGELOG.md, reports/* e archive/* preservam o termo como histórico.
  • Sibling é a única topologia (DEC-SIB-001/003): o executor nunca despacha o validador; o orquestrador é sempre o dispatcher. Acaba a variante em que o executor disparava um validador aninhado.
  • Gate JOIN no preflight (DEC-SIB-003): host sem join síncrono confiável do validador é rejeitado no preflight (hard-fail), não degradado. validator_dispatch.join { sync, confidence, mechanism } declarado por host.
  • dispatch_token monotônico e máximo de 2 validators inviolável por contrato (DEC-SIB-002): o 3º validator é proibido; 2º fail termina a slice em blocked.
  • Correlação obrigatória no retorno: atlas-task-validator devolve dispatch_token; atlas_lock_validator(action=complete) rejeita retorno sem token ou divergente sem fechar o slot.
  • Repair correlacionado: repair_start retorna repair_budget: 1; atlas-findings-repair recebe repair_run_id e atualiza o mesmo state_path em lugar. Redirecionar boundary no repair_complete é bloqueado.
  • Recovery de orquestrador re-spun via validator_recovery: retornos de validator divergentes do slot ativo voltam stale_discarded: true e são descartados (idempotente, slot não reabre).
  • CAPABILITIES_SCHEMA_VERSION evoluiu de v3 → v5: v4 colapsa validator_dispatch para { dispatcher: 'orchestrator' } (remove os campos de topologia legada); v5 adiciona validator_dispatch.join por host (gate JOIN).
  • Guard de contrato reforçado em server.test.js: assert de forma Object.keys(validator_dispatch) === ['dispatcher','join'], provando que os campos de topologia legada sumiram sem nomeá-los.

Impacto:

  • Comportamento de execução do pipeline é idêntico (Codex já era sibling); os demais hosts convergem para o mesmo modelo determinístico.
  • Consumidores que liam validator_dispatch.topology/nested_subagent_available/repair_loop devem assumir sibling incondicionalmente; estado antigo em disco é rollback-safe (campos extras ignorados).

Nota de migração (BREAKING):

  • Consumidores do MCP que liam validator_dispatch.topology (ou nested_subagent_available/repair_loop) devem migrar para validator_dispatch.join — o objeto agora expõe apenas { dispatcher, join }, sem campos de topologia legada.
  • A topologia é sempre sibling: o orquestrador é o único dispatcher do validador; nenhum executor despacha validador aninhado.
  • Host sem join síncrono confiável do validador é rejeitado no preflight (hard-fail) — não há degradação. Hosts devem declarar validator_dispatch.join { sync, confidence, mechanism }.
  • CAPABILITIES_SCHEMA_VERSION salta de 3 → 5. Estado antigo em disco é rollback-safe (campos extras ignorados), mas leitores devem reconhecer schema 5.

Arquivos/artefatos:

  • VERSION, .claude-plugin/plugin.json, package.json, packages/mcp-server/package.json
  • README.md, COMMANDS.md, packages/orchestrator/README.md
  • packages/orchestrator/skills/atlas-workflow-orchestrator/SKILL.md
  • packages/mcp-server/server.js, packages/mcp-server/server.test.js
  • hosts/**, plugins/** (espelhos regenerados por build/build-plugins.sh)

Validacao:

  • grep -rni "nested" packages/ agents/ README.md hosts/ plugins/ (vazio, exceto falso-positivo redact())
  • bash build/build-plugins.sh (check-consistency: ok)
  • claude plugin validate ./ --strict
  • bash build/test-all.sh

v0.6.2 - 2026-06-08

Tipo: runtime + packaging + docs (sem breaking).

Resumo: adiciona a skill explícita atlas-backlog-generator para criar backlog mestre Atlas a partir de ideia, prompt ou conversa, usando o template canônico com MoSCoW e esforço x ganho.

Mudancas:

  • Nova skill documental explícita: atlas-backlog-generator cria ou atualiza BACKLOG_MESTRE_*.md somente quando o usuário aciona a skill explicitamente; não há allow_implicit_invocation e não entra na cadeia automática do workflow.
  • Destino padrão Atlas: quando o usuário não especifica path, o backlog é salvo em .atlas/backlog/BACKLOG_MESTRE_<slug>.md no projeto consumidor.
  • Template de backlog priorizável: BACKLOG_MESTRE_TEMPLATE.md passa a incluir MoSCoW, ganho, esforço, prioridade, regra de escolha da próxima sprint e justificativa de priorização.
  • Mapa oficial e distribuição: atlas-backlog-generator entra no mapa de skills do MCP e é empacotada para Codex, Claude/Cursor, opencode e pi via build.
  • Docs alinhadas: README, boundary de templates, manifestos e documentação do orquestrador deixam claro que backlog é uso preparatório explícito, fora da cadeia automática.

Impacto:

  • Usuários podem criar backlog mestre pronto para alimentar atlas-sprint-prd-generator, com fases, sprints, dependências, riscos, gates e priorização objetiva.
  • O pipeline automático existente permanece igual: PRD → entrevista → plano → execução → validação fria → review opcional.
  • Hosts continuam instaláveis por marketplace/from-source; o patch exige rebuild dos bundles por alterar packages/, manifests e catálogos host.

Arquivos/artefatos:

  • packages/skills/atlas-backlog-generator/**
  • packages/templates/BACKLOG_MESTRE_TEMPLATE.md
  • packages/mcp-server/server.js
  • packages/templates/BOUNDARY_PRD_PLAN.md
  • packages/orchestrator/**, README.md, plugin-manifests/**
  • plugins/atlas-workflow-orchestrator/**, hosts/opencode/**, hosts/pi/**
  • dist/atlas-workflow-{claude,codex,opencode,pi}.plugin, dist/SHA256SUMS

Validacao:

  • build/build-plugins.sh
  • node build/check-consistency.mjs
  • node --test packages/mcp-server/server.test.js
  • (cd dist && shasum -a 256 -c SHA256SUMS)
  • unzip -t dist/atlas-workflow-{claude,codex,opencode,pi}.plugin
  • unzip -p dist/atlas-workflow-claude.plugin .claude-plugin/plugin.json
  • unzip -p dist/atlas-workflow-codex.plugin .codex-plugin/plugin.json
  • Observação: Codex plugin validate ./ --strict não está disponível neste CLI local (codex plugin não possui subcomando validate).

v0.6.1 - 2026-06-08

Tipo: patch (sem breaking).

Resumo: alinha o contrato multi-host do pipeline para que toda autoria documental fique no orquestrador e os únicos sub-agents sejam execução, validação fria e review.

Destaques:

  • Fronteira do orquestrador clarificada: prd_generator, atlas-prd-interview e atlas-plan-handoff passam a ser documentados explicitamente como fases conduzidas no fio principal/orquestrador. O primeiro sub-agent obrigatório do modo full nasce só em atlas-plan-execute.
  • Topologia nested esclarecida sem ambiguidade: em hosts nested, o feedback do atlas-task-validator é consumido dentro do próprio executor; findings intermediários não sobem ao avô/orquestrador. Em Codex (sibling), o loop continua executor → validator irmão → novo executor apenas em fail.
  • Checklist de preflight do orquestrador ajustado: o passo de verificação de despachabilidade no SKILL do orquestrador (G10) agora distingue skills documentais (basta invocabilidade no fio principal) de skills de execução/validação/review (precisam ser despacháveis como sub-agent no host). Sem mudança de código no tool atlas_preflight — apenas bump de versão no mcp-server.
  • Docs cross-host sincronizadas: README principal, skill do orquestrador, executores, READMEs auxiliares e cópias espelhadas (packages/, plugins/, hosts/pi/) foram alinhadas para o mesmo contrato operacional.
  • Versionamento/documentação atualizados: bump para 0.6.1, smoke examples e metadados de release atualizados.

Validação: build/check-consistency.mjs verde após sincronização cross-host. Sem mudança de schema_version (permanece 3).

v0.6.0 - 2026-06-07

Tipo: breaking de UX (remove alias ambíguo).

Resumo: remove o alias /workflow plan <PLAN.md> do modo execute.

Destaques:

  • Modo único para plano existente: executar um PLAN_*.md pronto agora deve usar somente /workflow execute plan <PLAN.md>.
  • plan deixa de ser aceito como modo/alias: o termo é ambíguo com planejamento documental e gerava leitura errada na landing/UX ("plan" parecia planejar, mas executava mutação de código).
  • Contrato preservado: plan continua válido como input-type/artifact_type para arquivos PLAN_*.md; a remoção afeta apenas o modo/atalho /workflow plan.
  • Guard de teste: WORKFLOW_CONFIG.modes agora afirma explicitamente que plan não é modo válido.

Migração: trocar /workflow plan <PLAN.md> por /workflow execute plan <PLAN.md>.

v0.5.5 - 2026-06-06

Tipo: breaking aditivo (schema_version 2 → 3 em atlas_capabilities; novo campo validator_dispatch). Campos v2 permanecem; consumidores antigos seguem funcionando, mas o contrato G4 muda no Codex.

Resumo: corrige duas violações de isolamento descobertas em smoke G9 multi-host real (cobre v0.5.3 + v0.5.4 + v0.5.5 acumulados):

  • Codex — validador frio agora é sibling, não nested. No Codex atual, sub-agents não recebem spawn_agent → executor sub-agent não consegue disparar neto (validator aninhado). Em vez de degradar (rodar validator no fio principal = violação de G4/G9), o pipeline troca a topologia: executor termina ao escrever state_path; orquestrador despacha atlas-task-validator como sub-agent irmão...
Read more

v0.6.2

10 Jun 22:25

Choose a tag to compare

v0.6.2 - 2026-06-08

Tipo: runtime + packaging + docs (sem breaking).

Resumo: adiciona a skill explícita atlas-backlog-generator para criar backlog mestre Atlas a partir de ideia, prompt ou conversa, usando o template canônico com MoSCoW e esforço x ganho.

Mudancas:

  • Nova skill documental explícita: atlas-backlog-generator cria ou atualiza BACKLOG_MESTRE_*.md somente quando o usuário aciona a skill explicitamente; não há allow_implicit_invocation e não entra na cadeia automática do workflow.
  • Destino padrão Atlas: quando o usuário não especifica path, o backlog é salvo em .atlas/backlog/BACKLOG_MESTRE_<slug>.md no projeto consumidor.
  • Template de backlog priorizável: BACKLOG_MESTRE_TEMPLATE.md passa a incluir MoSCoW, ganho, esforço, prioridade, regra de escolha da próxima sprint e justificativa de priorização.
  • Mapa oficial e distribuição: atlas-backlog-generator entra no mapa de skills do MCP e é empacotada para Codex, Claude/Cursor, opencode e pi via build.
  • Docs alinhadas: README, boundary de templates, manifestos e documentação do orquestrador deixam claro que backlog é uso preparatório explícito, fora da cadeia automática.

Impacto:

  • Usuários podem criar backlog mestre pronto para alimentar atlas-sprint-prd-generator, com fases, sprints, dependências, riscos, gates e priorização objetiva.
  • O pipeline automático existente permanece igual: PRD → entrevista → plano → execução → validação fria → review opcional.
  • Hosts continuam instaláveis por marketplace/from-source; o patch exige rebuild dos bundles por alterar packages/, manifests e catálogos host.

Arquivos/artefatos:

  • packages/skills/atlas-backlog-generator/**
  • packages/templates/BACKLOG_MESTRE_TEMPLATE.md
  • packages/mcp-server/server.js
  • packages/templates/BOUNDARY_PRD_PLAN.md
  • packages/orchestrator/**, README.md, plugin-manifests/**
  • plugins/atlas-workflow-orchestrator/**, hosts/opencode/**, hosts/pi/**
  • dist/atlas-workflow-{claude,codex,opencode,pi}.plugin, dist/SHA256SUMS

Validacao:

  • build/build-plugins.sh
  • node build/check-consistency.mjs
  • node --test packages/mcp-server/server.test.js
  • (cd dist && shasum -a 256 -c SHA256SUMS)
  • unzip -t dist/atlas-workflow-{claude,codex,opencode,pi}.plugin
  • unzip -p dist/atlas-workflow-claude.plugin .claude-plugin/plugin.json
  • unzip -p dist/atlas-workflow-codex.plugin .codex-plugin/plugin.json
  • Observação: Codex plugin validate ./ --strict não está disponível neste CLI local (codex plugin não possui subcomando validate).