EXECUÇÃO • DIAGNÓSTICO • VALIDAÇÃO • IA REAL
Deploy sem medo de falhar.
Plataforma operacional de execução, diagnóstico e validação para desenvolvedores — agora com IA real no chat.
Projetos novos podem falhar no deploy ou pós-deploy. O VISION CORE foi desenhado para manter uma base GOLD ativa, validar alterações e acionar auto-rollback quando uma mudança não atinge o padrão esperado. Na V2.9.10, o chat conecta você a Groq, Gemini e OpenRouter para diagnóstico técnico real em português.
O erro pode acontecer. A falha visível, não.
Como funciona
Você define uma missão. O sistema interpreta o contexto, identifica a causa raiz com Hermes + IA real (Groq/Gemini), planeja a correção e executa mudanças controladas. Nada é promovido sem validação PASS GOLD.
Sem PASS GOLD, nada existe. Sem aprovação humana, nada vai para produção.
Chat com IA real integrada
O chat VISION AI COMMAND agora está conectado a um fallback chain de IAs gratuitas. Você envia uma mensagem — ou faz upload de um arquivo de código — e recebe diagnóstico técnico real em português.
gratuito, rápido
gratuito
gratuito
fallback
Cada provider tem timeout de 15s. Se um falha, o próximo entra automaticamente. A resposta sempre inclui provider e model para rastreabilidade.
Cole um erro, faça upload de um arquivo, descreva o bug — a IA diagnostica e propõe o fix.
VC SDK (Vision Core SDK)
O Vision Core agora possui uma fronteira interna própria para integrar e executar runtimes de IA sem acoplar os módulos do produto diretamente a um SDK ou provedor específico. O VC SDK concentra contratos normalizados, registro de runtimes, tools, governança, evidência e observabilidade, preservando o Workflow Engine e as superfícies de produto como consumidores desacoplados.
Essa arquitetura trata capacidades como contratos independentes do provedor: conectividade, tool calling, filesystem, shell, governança, evidência, observabilidade, resultado estruturado e delegação são comprovados separadamente. Suporte nominal de um modelo nunca promove automaticamente uma capability.
OpenAI
Claude
Gemini
…adapters e runtimes
Estado honesto dos runtimes: OpenRouter possui base C1/C2/C8 certificada; Claude possui fronteira integrada e testada, mas ainda não certificada universalmente pelo RCF; OpenAI e Gemini permanecem caminhos de runtime previstos, sem certificação declarada.
Referência técnica: docs/VC_SDK_SPEC.md.
Framework de Certificação
O Runtime Certification Framework (RCF) exige prova real, auditável e limitada por capability. Mock valida implementação interna; nunca certifica sozinho uma integração externa.
O primeiro marco base certificou C1 Transport Connectivity, C2 Tool Calling e C8 Observability. Foram três chamadas reais — uma por profile — com zero retry, fallback=false, modelo fixo, timeout e orçamento controlados. A execução preservou tool call real e nonce validado, receipts auditáveis, generation IDs, usage, duração, custo e hashes de request/response, sem armazenar a credencial.
O verdict é deliberadamente restrito à base C1/C2/C8: não promove filesystem, shell, governança ou o perfil completo de Software Factory. Evidências: docs/evidence/vcsdk-f3-openrouter/. Contrato normativo: docs/VC_RUNTIME_CERTIFICATION_FRAMEWORK_SPEC.md.
Runtime Certification Workflow
Validação local precede qualquer chamada paga; regressões são classificadas com Hermes RCA antes da correção; consumo desnecessário de APIs é evitado. O Runtime Registry é a única autoridade de seleção e o Software Factory não executa chamadas diretas a providers.
Segurança no deploy e pós-deploy
O deploy não encerra o risco. Algumas funcionalidades só podem ser analisadas online, sob carga real, com APIs externas, usuários reais e condições de rede reais.
Por isso, o VISION CORE mantém uma camada de runtime validation: observa funcionalidades recém-ativadas, detecta anomalias, compara comportamento esperado e reverte para o último estado GOLD se houver desvio crítico.
Na V2.9.10, o AEGIS security gate bloqueia automaticamente secrets reais em código (AEGIS_SECRET_005) com score de segurança 0–100. Apenas score=100 libera PASS GOLD.
Validação antes do deploy. Proteção durante o deploy. Segurança contínua após o deploy.
Auto-rollback com estado GOLD
Cada alteração é tratada como uma transação: snapshot do estado atual, aplicação controlada, validação obrigatória e promoção somente após PASS GOLD.
Se falhar, o sistema descarta a alteração e volta automaticamente para o último estado estável, preservando continuidade operacional.
A cadeia RTP-0 a RTP-6 (Real Truth Probe) garante 7 estágios de verificação supervisionada antes de qualquer promoção. O PR #737 (RTP-6) foi o último gate desta versão — mergeado manualmente com autorização humana explícita.
Endpoints em produção verificados
Todos os endpoints foram testados via worker Cloudflare → EB prod. Resultado: 29/29 PASS documentado em FUNCTIONAL_TEST_REPORT.md.
Refatoração assistida de código legado
Sistemas legados acumulam acoplamento, duplicidade, configurações esquecidas e decisões antigas. O VISION CORE auxilia a modernização com etapas menores, análise de impacto, validação por fase e rollback disponível em cada mudança.
Não é reescrita cega. É evolução controlada.
Na prática: faça upload do arquivo com bug no chat, descreva o problema, e a IA diagnostica a causa raiz com o fix exato — como foi feito com o bug de imagem do TechNetGame durante os testes desta versão.
POR QUE O VISION CORE EXISTE
IAs criam. VISION CORE corrige.
Este software foi desenvolvido para resolver o problema mais frustrante de quem desenvolve com IAs: os projetos gerados por inteligência artificial quebram — e você passa horas, às vezes dias, rodando comandos manuais no terminal tentando consertar.
Com o sistema de diagnóstico inteligente e segurança PASS GOLD, você nunca mais vai subir um deploy quebrado. Com apenas um pedido, o VISION CORE assume como missão padrão e recruta uma equipe de agentes para trabalhar simultaneamente no problema — executando todos os comandos necessários, descobrindo a causa raiz e resolvendo até consolidar o PASS GOLD para um deploy saudável e seguro.
Na V2.9.10: o chat está conectado a IA real. Você pode fazer upload de arquivos de código, colar erros, descrever bugs — e receber diagnóstico técnico profundo em português, com causa raiz e fix com código.
Pare de perder horas corrigindo erros manualmente. Deixa o VISION CORE fazer isso.
Software que corrige sistemas automaticamente
VISION CORE não é um software de validação. É um sistema que resolve problemas de software de forma autônoma.
❌ Abordagem antiga
Validação = mercado saturado. Testes, CI/CD e validação já são resolvidos por milhares de ferramentas.
🚀 Nova abordagem
Correção automática = mercado novo. Sistemas que detectam, entendem e corrigem erros automaticamente — com IA real e PASS GOLD.
⚠️ Posicionamento define o sucesso
Onde estamos no mercado
O VISION CORE não compete com ferramentas de teste comuns:
❌ O que não somos
- Jest / Vitest — testes unitários
- GitHub Actions — CI/CD genérico
- Sentry — monitoramento de erros
- Copilot / Cursor — autocomplete de código
✅ O que somos
- Sistema operacional para bugs
- IA que diagnostica + propõe + aplica fix
- PASS GOLD como porta de promoção
- Governança declarativa com REGRA ABSOLUTA
Planos disponíveis
Billing Stripe integrado com Price IDs reais em produção. Webhook configurado e testado.
🚀 Pro — R$49/mês
Acesso completo ao VISION AI COMMAND, chat com IA real, upload de arquivos, missões SDDF e PASS GOLD supervisionado.
price_1TcImIHNPx1MfVELFNHZ16Vw🏢 Enterprise — R$149/mês
Pro + Software Factory completa, multi-projeto, agentes orquestradores, OpenClaw/OpenSquad e suporte prioritário.
price_1TcImJHNPx1MfVELSMiAAasSArquitetura visual
O Vision Core em imagens: do decágono de agentes ao loop de erros que quebramos.
🏆 Produto Testado.
Validado. Pronto para Produção.
O Vision Core passou por 6 suítes de stress test automatizado com 80 cenários reais — incluindo segurança da Software Factory e prova de que não inventa bugs onde não existem. Cada diagnóstico foi validado por PASS GOLD antes de ser considerado aprovado.
HISTÓRICO DE EVOLUÇÃO
O QUE OS TESTES REVELARAM
report_capability e o nonce validado."OPENROUTER_BASE_RUNTIME_CERTIFIED, evidência em docs/evidence/vcsdk-f3-openrouter/.platform/nginx/conf.d/proxy_timeout.conf (120s, método correto para Amazon Linux 2023) + health check antes dos testes para evitar rodar contra instância em redeploy. Resultado: 80/80 consistente."gate_no_security_findings. Apenas findings de severidade ERROR bloqueiam a promoção. O scan do próprio backend confirmou 0 ERROR / 3 WARNING (todos intencionais). A parte que pode ser determinística, é — sem depender de a IA 'lembrar' de checar."ALL_PROVIDERS_EXHAUSTED e lista quais providers foram tentados. Antes disso, o cliente esperava 60 segundos por um timeout mudo, sem saber qual provider tinha falhado. O client-side timeout também foi estendido de 60s para 90s para acomodar cascatas lentas sem falhar prematuramente."mission, mas o agent sempre esperou input. Curl direto no agent com o campo certo confirmou ok=true, 50 arquivos encontrados, leitura completa. O bug nunca existiu no produto — só no teste que o validava."_agentModesStore gravava o modo OFF/AUTO/ON de 15 agentes especializados desde a §80 — mas nada no /api/copilot nunca lia esse valor. O usuário ligava o Agente Database para ON e nada mudava na conversa. A fix não foi reescrever a feature, foi conectar o fio que faltava: detectActiveAgent() faz keyword match e injeta o agente certo no system prompt do LLM, com badge visual no chat."vcRegisterTutorial/vcStartSectionTutorial — em vez de seis sistemas isolados. Resultado: um item de menu na sidebar, accordion inline, zero duplicação de código entre os tutoriais."renderValidationPanel() — o painel com os botões 'Aprovar e fazer Push' / 'Reverter' — existia no bundle desde antes desta sessão. Auditoria de código confirmou: zero call sites. Não era uma feature em uso que quebrou, era uma feature que nunca tinha sido ligada a nada. A causa raiz do item #1 do roadmap não era código faltando — era um fio que faltava conectar três peças que já existiam."vision-agent.js real apontados um pro outro, um arquivo com bug de verdade num repo git temporário. O agent aplicou o patch, validou a sintaxe, comitou — e quando o patch seguinte quebrava a sintaxe de propósito, o Aegis reprovou e o git checkout -- reverteu o arquivo bit a bit, sem deixar nenhum commit espúrio."renderApplyFixPanel: checar status do agent, enfileirar, fazer polling, renderizar resultado. Duplicar esse bloco em renderStandardMethodPanel teria criado dois sistemas paralelos difíceis de manter. A refatoração correta era extrair para vcQueueApplyPatchViaAgent(hermesObj, statusEl, onReset, onDone) — função compartilhada com callbacks — e reusar nos dois painéis. Zero mudança de backend. 9 asserts estáticos confirmaram a wiring antes do commit."classifyMissionDifficulty(). Antes de escrever uma linha, abrimos a spec (SDDF_SPEC §66) — estava marcada como FECHADA com 80/80 testes PASS GOLD. O problema de qualidade que motivou a etapa já tinha sido resolvido de outra forma. A Etapa B foi retirada do roadmap. O que foi implementado no lugar foi o memory layer real: o Hermes agora consulta escalações passadas (Jaccard sobre tokens), desprioriza providers que já falharam em casos similares, e registra keywords para matching futuro. Sem embeddings, sem rede — só aritmética de conjuntos."if (!gotAny) return preserva o fallback estático exatamente como estava."apply_patch_multi: resolve todos os caminhos antes de escrever qualquer arquivo, aplica os patches em ordem, valida Aegis em todos — qualquer falha reverte TODOS via git checkout, e no caminho feliz é um único commit cobrindo N arquivos. O E2E real confirma nos 3 cenários: commit único com 2 arquivos, rollback quando o 2º patch não casa, rollback quando o Aegis falha no 2º arquivo depois do 1º já ter passado."apply_patch_multi estava testado de ponta a ponta desde o §109 — 12/12 unitário, E2E real com rollback atômico confirmado — e tinha zero referências no chat. Uma busca no bundle confirmou: a capability existia, funcionava, e ninguém conseguia chegar até ela. A causa raiz não era no agente, era no prompt: o LLM só sabia devolver 1 arquivo por resposta, mesmo quando já diagnosticava vários em prosa. O fix deu ao modelo um formato files[] alternativo pra usar quando — e só quando — o fix genuinamente precisa de mais de 1 arquivo. No caminho, achamos outro bug: os dois pontos que aplicam patch via agent local mostravam o painel de '✅ commitado, aprove o push' mesmo quando a missão tinha falhado e revertido tudo. Corrigido junto — falha agora mostra falha."diagnosis, presente nos dois formatos. Mas o código que vinha depois só sabia procurar o patch na raiz do objeto; no formato multi-arquivo, cada patch mora dentro de um item da lista files[], não na raiz. O resultado, silencioso: um diagnóstico cobrindo 2 arquivos virava, sem erro nenhum, só uma análise em prosa, sem diff. O fix deu ao dry-run o mesmo tratamento por arquivo que o apply_patch_multi já tem pra aplicação de verdade — simula cada um em memória, e se qualquer um falhar, a leva inteira é descartada, nunca expondo um diff parcial como se fosse válido."onEnter a cada passo que exige navegação, um _scrollInto para elementos abaixo da viewport, e expôs showSoftwareFactoryPage/setSoftwareFactoryModule no window para que o tutorial T3 pudesse navegar para cada módulo real. Prova numérica: spotlight.top ≈ target.top − 14px em cada passo verificado."window._vcSetActiveTutorial nunca era definida — e ela é exatamente o que os menus de seção precisam para funcionar. O fix foi mover o guard para dentro do bloco de auto-start do T1 (as 4 linhas do setTimeout), deixando toda a infraestrutura ser inicializada independente do histórico do localStorage. Em paralelo, a persistência por tutorial de seção estava igualmente quebrada: fechar qualquer tutorial de seção com 'não exibir novamente' marcado gravava na chave do tutorial geral (vc_tutorial_done) em vez da chave específica da seção — corrigido pela mesma refatoração."positionBalloon() e passou 13/13 testes — mas em produção real o problema continuou idêntico. A causa não era na lógica em JavaScript: era uma regra CSS criada em §95 para posicionar o mascote dentro do balão (.vc-tutorial-balloon{position:relative!important}) que sobrescrevia position:fixed com !important. Com position:relative, os valores de top/left que o JS calculava e setava via style.* se comportavam como offset do fluxo normal do HTML (dentro do overlay), não como coordenadas na viewport — então o balão era desenhado num lugar completamente diferente do calculado. Os testes do §120 liam getBoundingClientRect() (a posição real na tela após o CSS aplicar os offsets), e coincidentemente, essa posição final não colidia com o spotlight no viewport de teste (1280x900) — mas colidia em produção. A solução foi remover a regra do §95: position:fixed já cria um containing block válido para filhos position:absolute — a regra do §95 nunca foi necessária. A prova do bug ficou registrada: o teste novo que verifica getComputedStyle(balloon).position === 'fixed' teria detectado isso imediatamente no §120."STEPS): cada tutorial de seção reatribuía essa variável via window._vcSetActiveTutorial(), mas o botão 'Geral' nunca a restaurava ao array original — herdava silenciosamente o conteúdo de qualquer seção visitada antes. Um bug secundário pareado: a chave de persistência também não era restaurada, então marcar 'não exibir novamente' no tutorial Geral gravaria na chave de localStorage da seção errada. O fix guarda uma referência imutável ao array original (STEPS_GERAL) logo após sua declaração e restaura ambas as variáveis ao abrir o tutorial Geral — 11 linhas inseridas, zero removidas."/api/openclaw/orchestrate existia há sessões, roteava corretamente, e o campo orchestration_real: true já estava presente — mas o plano era sempre null. O fix: quando o input é uma missão em linguagem natural (message/prompt), o handler chama callLLM com system prompt de 'Patch Strategist' e devolve um plano JSON estruturado com subtarefas concretas (scan/patch/validate/rollback), nível de risco e flag pass_gold_required. Se o LLM falhar, cai em fallback local sem quebrar o fluxo. O roteamento para zip/patch/mission_id foi mantido sem LLM — nesses casos o plano vem do agente seguinte."/api/github/create-pr existia, criava branch, commitava arquivos e abria PR via GitHub REST API, mas o GITHUB_TOKEN nunca foi enviado como variável de ambiente pro EB. O /api/github/status retornava configured: false em produção mesmo com o código completo. Zero linha de código nova nesta sessão — só configuração de ambiente. Smoke test confirmou PR criado de verdade no repositório real (PR #738, branch vision-core-test-s127), depois fechado e branch deletada via gh pr close --delete-branch."/api/memory/save e /api/memory/search) desde o §64, mas era uma memória que ninguém consultava — nenhum agente de decisão buscava no Archivist antes de responder. A memória existia em isolamento. Nesta sessão, dois helpers internos foram criados (archivistSearch e archivistSave) que acessam o FS diretamente, sem HTTP. O Hermes (/api/chat) e o OpenClaw (/api/openclaw/orchestrate) agora buscam contexto de missões anteriores antes de responder e salvam um resumo após cada missão. O Archivist é sempre best-effort — nunca quebra o fluxo principal. Smoke test confirmou entradas openclaw-* sendo salvas automaticamente em produção imediatamente após o deploy."vision-core.exe (Windows) existia localmente; (2) missionRoot em server.js usava path.resolve(ROOT, '..'), apontando para o Desktop inteiro em vez da raiz do projeto — causava timeout de 30s no binário Go; (3) goRunner.js passava --dry-run ao subcomando mission, que não suporta esse flag e travava indefinidamente. Após os três fixes: Go Core executou localmente (mission_id real + evidence_receipt.source=go-core), D0-D4 foram executados pelo PI Harness, e o binário Linux foi compilado e deployado no EB. V3.0.0 alcançado."backend_not_stub — o harness nunca chamava /api/run-live sem o flag --runtime-probe. Ao ativar o probe, o Go Core retornou pass_gold:false por causa de um violation AEGIS blocking: _patch102_mission_timeline.py:469 tinha password: 'stress123' — senha de teste hardcoded, 9 chars, disparando a regra AEGIS_SECRET_009. Fix cirúrgico: split de string literal ('stress' + '123'). Com o Go Core retornando pass_gold:true, foi necessário corrigir 4 outros comportamentos do harness: (1) D4 não propagava evidence_receipt.id para goRuntimeEvidenceId (D3 usa --dry-run que não existe no binary); (2) launcher bloqueava port busy sem tentar health check — mas o backend iniciado por D4 precisa sobreviver para o E2E probe; (3) contract _isStubBody detectava 'stub' no field name backend_stub; (4) Gate 5 bloqueava promotion_allowed:true incondicionalmente, mesmo com evidência real do Go Core. Resultado: D0-D7 executados, 20 gates + 3 condições extras passando, pass_gold_candidate:true pela primeira vez."_fixture_stress ao dirSkip do AEGIS + classificado como test_fixture; (2) Go binary recompilado; (3) tryStartBackend não setava s.backendAlive = true após sucesso — harness bloqueava mesmo quando backend subia corretamente; (4) E2E probe timeout de run-live: Math.min(30000, 10000) = 10s vs Go Core que leva 12-13s — cap aumentado para 25s; (5) forbidden diff bloqueava porque bin/vision-core.exe modificado não estava commitado. Com todos os fixes: D0-D7 executados, pass_gold_candidate:true, PR #739 aberto pelo GitHub Agent automaticamente (fechado logo após como teste). Pipeline bug→PASS GOLD→PR confirmado de ponta a ponta."scanned 0 files em projetos Python — as violations L3 (API key, MD5, SQL injection) nunca eram detectadas, gerando security_score:100 e pass_secure:true em bases não varridas. Falso negativo silencioso. Duas causas raiz: (1) jsExts no scanner só incluía .js/.go — fix: expandido para .py, .java, .yaml, .json, .sh e mais; (2) dirSkip aplicava ao root da varredura quando o nome do root estava na lista — Scan('_fixture_stress') pulava si mesmo porque '_fixture_stress' estava no dirSkip — fix: path != root guard em secrets.go, api.go e containers.go. Resultado: fixture L3 detecta AEGIS_SECRET_010 em level3_security.py:6 (bloqueante). Projeto principal inalterado: security_score:100, scanned 1924 files."/api/security/suggest-fixes está disponível para integrações externas. Antes desta sessão: violations eram detectadas pelo AEGIS mas nenhuma sugestão de correção era gerada — o AEGIS sabia o problema mas ficava em silêncio sobre como resolver. Agora cada violation volta com fix.after (código corrigido) ou fix.suggestion (descrição do fix) e fix.env_var com a linha para o .env.example."/api/security/apply-fix, que lê o arquivo real do filesystem, faz backup automático (.bak-s135-*), substitui a linha violadora pelo código corrigido, e mostra o diff inline (- API_KEY = 'sk-prod-abc123xyz789' → + API_KEY = os.environ.get('API_KEY')). Path traversal bloqueado (403). Arquivo inexistente retorna 404. Loop detect→suggest→apply completo em 3 sessões (§133→§134→§135)."✅ Violation corrigida — re-scan confirmou que AEGIS_SECRET_010 não está mais presente'. Anel animado SVG gira em volta do decágono enquanto os agentes trabalham — arco roxo→índigo (stroke-dasharray: 200 1156, transform-box: fill-box) integrado ao SVG existente, sem quebrar a animação dos agentes. Histórico de eventos (scan/fix/rescan) persiste via /api/security/history + Archivist."::before em #mcCore — sem SVG extra, sem IIFE de injeção. Ao terminar com sucesso, mostra 'OK' em verde por 2s e volta para 'CORE'. Ao terminar com erro, volta direto para 'CORE'. Removido o texto 'FECHADO / CONTROLLED CLOSURE' que sobrescrevia o estado do núcleo e confundia o usuário."/api/sf/mission-composer (SF02), worker-handoff (SF03), context-snapshot (SF04), patch-validator (SF05), risk-assessor (SF06), rollback-planner (SF07), gold-gate (SF08), deploy-blueprint (SF09). Mapeamento frontend SF_ENDPOINT_MAP cobre todos os 8 moduleKeys dos botões GERAR. Smoke test real em produção confirma ok:true + anti_stub:true para cada módulo."readComposerMissionText() é a única função que lê a missão do usuário, e tanto o chat quanto o Software Factory (Auto-Pilot e Modo Avançado) chamam essa mesma função — nunca um segundo campo paralelo. O painel de Mission Input flutuante que ainda existia numa versão anterior do Next foi removido: era a última fonte paralela, e sua remoção fechou o Core Interaction Principle de vez."#projectBuilder) com fluxo próprio. No Next, ele é um modo operacional da própria conversa: o usuário liga 'Factory', descreve o objetivo no composer, e o Arquiteto local determinístico sugere stack, monta um grafo editável, matriz de agentes, timeline e preview — tudo local, sem nenhum endpoint novo. O Modo Avançado deixa o usuário aceitar, rejeitar ou editar cada sugestão manualmente antes de qualquer geração."startAtomicSequence() só é chamado a partir de eventos reais: submit do chat, ações do Software Factory, abertura de PR no GitHub. Sem ação real, o núcleo fica em idle. Dois bugs de produção reais encontrados e corrigidos nesse caminho: o núcleo congelava sob reduced-motion (a animação é identidade de marca, não decoração do SO — decisão registrada) e os agentes orbitais estavam sendo cortados por um contain:layout paint que nunca deveria ter recortado esse elemento."/api/metrics/agents, /api/metrics/summary, /api/metrics/memory, /api/dora-metrics) e renderiza cada um como gráfico — barra, donut, gauge, sparkline ou timeline — com um módulo próprio em SVG/CSS puro, sem biblioteca externa. Antes, toda métrica estruturada virava um dump de JSON cru no chat. Um bug real apareceu no caminho: o composer sticky sobrepunha o gráfico recém-renderizado — corrigido isolando a rolagem do stream+painel numa área própria (.vc-chat-scroll) e chamando scrollIntoView depois de cada render."#vcTutorialOverlay, com suas chaves vc_tutorial_* de localStorage) — construiu um guia manual próprio do zero: #vcSmileModal, o único modal de toda a interface Next, aberto só por clique explícito, nunca sozinho. X, ESC, Voltar e Próximo cobrem toda a navegação; nenhum passo grava localStorage, chama backend, ou cria um segundo campo de missão paralelo ao composer."{entries} e mantivemos os logs da Software Factory entrando no mesmo trilho, com prova local e smoke em produção."return_to=next, state.target fechado no backend e o mesmo token do cockpit; o smoke de produção ainda encontrou um refresh que apagava o token, corrigido com teste permanente."/api/agent/mission/queue, mesmo com JSON válido, agent_id, agent_secret e a frase de confirmação exata digitada certinha — AGENT_APPLY_ENABLED=false hardcoded, fail-closed por design, até existir pareamento real por agente/projeto/owner."checkMissionQuota simplesmente deixava passar quem não tinha usuário autenticado. O primeiro fix (checar req.socket.remoteAddress) parecia certo no código mas não fechava nada de verdade: o EB roda nginx como reverse proxy na própria instância, e todo tráfego externo chega ao Node via 127.0.0.1 — confirmado com uma chamada real, de fora, sem autenticação, que executou uma missão completa em produção. Só fechou de verdade depois de app.set('trust proxy', 1) + req.ip, validado reproduzindo a topologia real com um proxy simulado (bypass direto passa, cliente externo sintético recebe 401, tentativa de forjar X-Forwarded-For: 127.0.0.1 pelo próprio cliente continua bloqueada) e depois confirmado ao vivo contra a URL pública."position:sticky durante o onboarding, mas isso quebrava um teste existente que exige o composer sempre alcançável perto do rodapé no mobile — requisito deliberado, não bug. Fix real: o onboarding ganhou max-height calculado a partir da altura real do composer (variável já sincronizada por um ResizeObserver existente) e rola dentro da própria caixa em vez de nascer atrás dele — nos aparelhos mais curtos isso deixa só o título visível sem rolar (a matemática não fecha de outro jeito nesse tamanho de tela), mas nunca mais escondido em silêncio."BLOCKED_INPUT/'Escopo: ausente' — mesmo com a spec inteira ali na conversa. Rastreei o payload real de ponta a ponta: o único elo entre as duas telas guardava só a última instrução que EU tinha digitado, nunca a resposta que o Vision Core tinha acabado de escrever. A Factory literalmente nunca via a spec, só o pedido original de uma linha. Corrigido sem criar um segundo campo de texto: o composer continua único, a última resposta do Chat vira contexto automático quando ele está vazio, e conversation_id/chat_context nunca atravessam pra outro usuário — id de outro dono é ignorado em silêncio, nunca erro que confirme se ele existe."PWNED-9911. Achei mais dois problemas reais na mesma auditoria: GET /api/sf/job/:id não checava dono nenhum (job_id previsível, qualquer um lia resultado alheio), e nem /api/chat nem a Factory tinham limite de chamadas. Não bastou trocar o rótulo do aviso — a mitigação textual já tinha sido testada e reprovada. Corrigi de verdade: delimitador com número aleatório por chamada (histórico não pode mais forjar um 'fim de bloco' falso), frases de comando conhecidas neutralizadas sem apagar texto legítimo ao redor, e o aviso reforçado logo depois do bloco fechar, perto de onde o modelo realmente gera a resposta. Rodei o mesmo ataque de novo, mais 7 variações (inglês, português, developer message, bloco de código, ofuscado) — as 8 falharam, a resposta voltou 'Paris' toda vez. Job da Factory ganhou dono real e um id de 128 bits em vez de timestamp+6 caracteres. Nada disso é alegado como prova de segurança absoluta — é o que foi testado e o que passou, registrado exatamente assim."conversation_id só era enviado pra Factory quando eu já tinha a resposta anterior guardada numa variável em memória — que zera sozinha assim que a página recarrega. Ou seja: recarregar a página, reabrir a conversa e pedir pra Factory continuar de onde parou nunca tinha funcionado de verdade, mesmo com tudo isolado e testado. Também provei com provider real que cortar contexto em 4000 caracteres descarta o que vem depois do corte em silêncio — mudei pra manter início e fim em vez de só o início. E provei que pedir 'a primeira especificação que você escreveu' sempre trazia a última, porque não existia nenhum jeito de escolher por posição — agora existe, testado contra um provider real pedindo de volta exatamente a spec certa. Anexos e conteúdo de URL só sobreviviam como um rótulo tipo '[1 anexo: arquivo.txt]' — o conteúdo de verdade nunca era salvo. E o resultado da Factory nunca voltava pro Chat, ficava preso na própria aba. Nenhum desses 5 itens é dramático sozinho — juntos, formavam a diferença entre 'funciona na demonstração' e 'funciona de verdade depois que o usuário fecha a aba e volta'."/api/architect/interpret, mas o backend chama múltiplos providers de LLM em sequência e pode levar mais que isso — o gateway abortava a conexão antes do backend responder, mesmo quando ele teria tido sucesso. E o backend rejeitava qualquer mensagem acima de 4000 caracteres com um 400 seco, em vez de truncar como o /api/chat já fazia — toda resposta longa de chat batia nesse teto antes de chegar no LLM. Corrigi os dois: o endpoint entrou no mesmo bucket de 52s do chat no gateway, e o backend trocou o reject por smartTruncate(). No caminho pra deployar, achei um terceiro bug, esse na própria esteira de deploy: a lib que gera o zip do pacote (adm-zip) descartava em silêncio o bit de execução Unix dos hooks de predeploy ao rodar no Windows — um shift de bits que estoura pra negativo em JS e zera a permissão. Sem o fix, o deploy teria reproduzido o mesmo incidente de vendoring quebrado já registrado, por um motivo novo. Reproduzi o cenário original inteiro contra produção depois de ambos os deploys: spec de 7900 caracteres através do gateway real, resposta 200 com classificação real, sem 502 e sem 400."state.modules, critério de aceite nunca extraído) e percebi que nenhum deles violava o Contract Integrity Gate — o contrato estava tecnicamente íntegro, só o conteúdo dentro dele é que estava errado ou vindo da fonte errada. Contrato íntegro não implica conteúdo governado. Isso virou dois princípios separados — integridade de contrato (Kubernetes) e proveniência de conhecimento (Git, source/extractedBy por campo) — mais uma pirâmide de validação por complexidade que impede subir pra LLM real quando um regex determinístico já resolve."IA APLICADA NA PRATICA
Esta secao mapeia onde a IA entra hoje no Vision Core e onde ela ainda nao entrou. MCP esta parcial e flagado; fine-tuning ainda nao treinou nenhum modelo; os dados usados sao metricas, timeline, snapshots e evidencias reais quando existem.
Hermes e SF usam modelos base via fallback chain. Nenhum peso proprio foi ajustado.
SDK interno próprio desacopla produto, runtimes, tools e providers. O Runtime Registry usa identidade explícita e capabilities são certificadas separadamente.
RCA, avaliacao e geracao usam criterios explicitos e versionados no backend.
Hermes, OpenClaw, Aegis, PASS GOLD, Archivist e GitHub Agent dividem responsabilidade por missao.
Patch, PR, fetch-url e validadores conectam decisao de IA a efeitos reais, sempre com gates.
GitHub Agent tem adapter MCP opcional e flagado; REST segue default/fallback. Proximo candidato natural: SF fetch-url.
Scanner, arquivos, URL context e memoria alimentam a resposta com material real.
PASS GOLD, Aegis e Go Core exigem evidencia; sem evidencia, o claim nao passa.
Specs, handoff, testes, commits isolados e deploy verificavel documentam o ciclo.
Timeline e metricas registram operacao real; custo por agente ainda e
null.Dataset Hermes esta em curadoria: 0/360 exemplos utilizaveis, nenhum treino executado.
Redaction, Aegis, secret guard e LGPD sao pre-condicoes antes de virar dataset.
Ativar MCP por conector; autorizar gravacao input+decisao+resultado; exportar JSONL redigido.
TÉCNICAS ANTI-ALUCINAÇÃO CERTIFICADAS
[DIFF] exato do bug. Eliminou alucinação: 20% → 100%.Veja o Vision Core em ação
Cole um erro, faça upload de um arquivo com bug, descreva o problema.
O Vision Core diagnostica, propõe o fix e aguarda sua aprovação.
Arquitetura Real —
O que já funciona e para onde vai
Uma leitura honesta do estado atual — o que está implementado e validado hoje, e onde a arquitetura aponta para o futuro.
VISION AI COMMAND — o que ele realmente faz hoje
O chat (/api/chat) não é um wrapper simples de LLM. Ele já tem uma cadeia de capacidades bem montada:
.vision-memory/hermes_low_confidence.jsonl.
/api/unzip-context e /api/chat/apply-patch, mais o compress-context.js (§44, "MPEG de contexto") e windowContent (§55) que trunca arquivos grandes para ±120 linhas ao redor do bug, evitando timeout em arquivos de 200KB+. O patch-engine.js tem 5 estratégias de match (exact → normalized → regex → âncora de primeira linha → candidatos só-diagnóstico) para aplicar o patch sugerido pelo LLM de volta no código real — e o pass-gold-engine.js valida esse patch em 6 dimensões, incluindo Semgrep (§68) como segunda fonte de verdade não-LLM.
/api/agent/mission/pending, escaneia o projeto local por palavras-chave, e devolve o resultado via /api/agent/mission/result. Isso é o embrião de "Vision Core trabalhando no seu PC" sem precisar subir o código.
Estado atual: o VISION AI COMMAND já é um diagnosticador real com fallback resiliente, leitura de contexto externo, patch aplicável e validação multi-camada — não é só "chat conectado a uma IA".
SOFTWARE FACTORY — o que ela é hoje
.mjs que modelam processos de engenharia (contratos, gates, ledgers, barreiras de fase) com flags release_allowed, deploy_allowed, real_pr_creation_allowed etc. sempre false. As fases V201–V244 cobrem desde fundação até "preparação de criação de PR controlada" — mas a execução real fica bloqueada até autorização explícita.
ANTHROPIC_API_KEY real num pacote).
AGENTE ARQUITETO — Software Factory V2.9.10+
GET /api/spec?module=SF-01
POST /api/architect/interpret
✅ 19/19 PASS — certificação completa (16 testes API + 3 E2E Playwright)
PONYTAIL AUDIT — revisão adversarial interna
BLOCKED_INPUT
Tres tentativas reais via /api/chat retornaram HTTP 200, mas nenhuma produziu aprovacao LLM valida. O resultado nao foi tratado como aprovacao; as hipoteses adversariais foram cobertas por testes deterministicos Hermes, e o gate LLM real permanece pendente/bloqueado.
SECURITY LAB — vc-secret-guard
agent_secret retornado por um endpoint sem autenticação (documentado, corrigido). Os dois foram pegos depois do fato, por revisão manual. O vc-secret-guard é um binário local em Rust — sem runtime, sem GC, projetado pra ficar ligado o tempo todo com footprint mínimo — que roda em hook de git commit/push ou em modo watch, pra pegar essa classe de erro no momento em que ela acontece, não numa auditoria manual posterior.
AEGIS_SECRET_001…010) — mas ele roda como parte de uma missão de validação de código já em andamento, sobre o projeto inteiro. O guard não duplica isso: ele decide "isso pode entrar no git agora?" no exato momento em que o desenvolvedor decide commitar; o Aegis decide "esse código está seguro o suficiente pra ser promovido?" como parte de uma missão maior, depois que o código já existe no repositório. Sem sobreposição de responsabilidade — e o evento que o guard emite é desenhado para, no futuro, alimentar tanto um alerta no Atomic Core/Next quanto o próprio PASS SECURE do go-core, sem que um precise rodar o outro.
docs/VC_SECRET_GUARD_RUST_SPEC.md
🚧 Fase 0/6 — spec aprovada, zero linha de Rust escrita
LOCAL AI PROFESSIONAL — GLM Colibri Experience
tools/vcctl, painel "Local AI" do AI Center) — mas exige entender RAM/contexto/portas/WSL pra tirar proveito dele. O Marco H propõe transformar o Colibri de "mais um provider técnico" num módulo completo Local AI: assistente de primeira configuração, diagnóstico automático da máquina, Health Center com semáforo simples, perfis prontos (Seguro/Balanceado/Desempenho) e um Modo Avançado só pra quem pedir — sem exigir terminal, JSON ou parâmetro técnico do usuário comum.
ADR-058).
docs/GLM_COLIBRI_OPTIMIZATION_SPEC.md
·
docs/ROADMAP.md — VCORE Marco H
🚧 H1 (assistente de primeira configuração) implementada — H2-H10 planejadas, não implementadas ainda
POTENCIAIS DE EVOLUÇÃO — ONDE ISSO PODE IR
Política de Privacidade
Esta política está em elaboração — o texto legal completo (o que é coletado, por quanto tempo,
com quem é compartilhado e os direitos do titular sob a LGPD) ainda não foi redigido e publicado.
Já existe hoje um mecanismo técnico real de exclusão de dados (DELETE /api/auth/me,
remove a conta e os dados associados de forma irreversível). Para dúvidas sobre dados pessoais
enquanto este texto não é publicado, entre em contato pelos canais oficiais do projeto.
Você não corrige mais sistemas.
Você supervisiona um sistema que corrige sistemas.