# Ascend — decisões de implementação

## 2026-10-09 — Legibilidade do logotipo na prévia real

- A inspeção no navegador encontrou o texto escuro do logotipo oficial sobre fundo escuro. O template agora aplica um suporte claro da própria paleta da marca, sem recolorir o arquivo oficial ou gerar imagem paga.
- A versão do template foi incrementada, invalidando fingerprints anteriores. O ajuste não concede liberação visual, aprovação da composição ou publicação.

## 2026-10-09 — Peça correta e prévia antes da liberação visual

- Arte respeita a marca selecionada, conserva a peça na URL e prioriza texto aceito, em vez de abrir o primeiro carrossel de outra marca. A seleção aguarda a hidratação da preferência e não inventa peças quando o filtro está vazio.
- A composição salva abre uma prévia de conferência sem chamada à IA, renderizador pago ou escrita de recibos. A prévia usa o kit cadastrado e exibe a pendência de liberação visual; isso não autoriza a marca, a composição, a mídia ou a publicação.
- Aprovar e exportar mantêm todos os gates de liberação visual; a prévia também continua exigindo texto aceito e fontes liberadas. Uma falha não aciona repetição paga. Nenhuma identidade documental é alterada automaticamente.

## 2026-10-09 — Contraste e tipografia da produção de arte

- Corrigidos o seletor de peça, suas opções, avisos e etiquetas que ainda herdavam superfícies escuras antigas sobre o tema claro. O escopo `art-workspace` usa as variáveis do tema ativo, incluindo o modo escuro, e estabelece títulos e rótulos legíveis sem introduzir painéis ou alterar a organização da página.
- As regras afetam somente a interface de produção: templates exportados, dados da composição, aprovações, chamadas pagas e bloqueios de identidade visual permanecem inalterados. Corrigir erros não equivale a validar a marca ou a arte em nome da autora.

## 2026-10-09 — Aprovações visíveis e vinculadas à etapa

- Pedido de Zi: substituir ações já concluídas por callout verde “Aprovado”, reaproveitado nas revisões, pautas, campanhas e prévias de imagem, carrossel e MP4. Preservado o layout existente, sem painel explicativo novo.
- O callout informa o escopo do aceite. Texto aceito com mídia ausente mostra “Aprovado · Texto” e “Arte pendente”; nunca fabrica aprovação de arte, exportação ou publicação. Pauta somente aceita continua “Aceita · Pauta · Texto pendente”.
- Campanhas exigem o último recibo humano da versão atual; ACTIVE não basta. Prévias exigem fingerprint/etag atual e nenhuma edição local. Os controles e gates de aprovação humana do servidor permanecem inalterados.

## 2026-10-09 — Menção institucional não libera a oferta homônima

- Correção autorizada pela autora após o aceite de texto ser bloqueado por correspondência de palavras: “engenharia Moodle de alta complexidade” pertence ao posicionamento autorizado, mas também continha o nome do serviço P10, ainda pendente.
- O controle distingue somente enunciados institucionais completos e delimitados, sustentados pelo campo atual de posicionamento/registro de ID-OL ou M-OL-001, autorizado para redação na identidade INSTITUTO. Aceita o enunciado da fonte e sua reformulação de coordenação no mesmo ecossistema; não é uma isenção genérica de palavras nem uma classificação aberta por IA. Redação diferente ou ambígua continua bloqueada para revisão.
- Oferta, contratação, preço, benefício, contexto comercial ou outra menção ao serviço não herdam essa permissão. Revogação, finalidade/campo/identidade divergentes e fonte inativa retiram a exceção. O serviço P10 permanece não publicável, sem alterar os registros ou autorizações da base. Os controles de outros produtos, identificadores internos, case, MCE, vocabulário e visual continuam verificando o texto integral.
- Testes isolados cobrem a pauta real e o handler privado com a política real, sem provedores externos: a consulta não registra aceite; a decisão explícita exige versão atual e gera somente o recibo de texto. Nenhum aceite real, arte, mensagem ou publicação foi executado pela correção. Layout preservado, Telegram permanece para a última etapa.

## 2026-10-08 — Produção real e base oficial já autorizada

- A autora escolheu Telegram para a futura validação por mensagens, deixando essa integração por último. A produção prossegue com validações no painel; não reabrir WhatsApp nem desligar o computador por autorização de uma sessão anterior.
- O teste no painel encontrou `MEMORY_NOT_CONFIRMED` antes de qualquer chamada paga: o planejamento exigia persistência no módulo antigo, embora a base documental 0.3 já estivesse oficialmente adotada e com posicionamento autorizado. O planejador agora reconhece essa decisão existente, limitada ao lote ativo, identidade selecionada e campos de identidade/memória autorizados para redação. Referência importada sem autorização, revogação ou reversão continuam bloqueando.
- Essa alternativa não confirma os valores iniciais do módulo antigo: memória, produtos e marcas não salvos são retirados do contexto automático. A base documental mantém seus campos revisados e suas restrições de referência. Campanha nasce DRAFT; aceites de campanha, texto, prévia e mídia continuam humanos e distintos. Nenhuma alteração de layout.
- O objetivo desta etapa continua sendo uma peça real até o arquivo final. Correção e testes isolados não equivalem a homologação real de conteúdo, exportação ou publicação.

## 2026-10-07 — Continuação M5: recuperação sem nova cobrança

- Tarefas de texto sem conclusão confirmada há mais de dez minutos só podem ser reconciliadas automaticamente se a resposta anterior está comprovadamente salva como COMPLETED. A recuperação recebe `cachedOnly`: ausência de resposta, mudança do contexto ou resposta incerta não abre outra chamada ao provedor nem reserva novo orçamento.
- A reconciliação mantém o autor do aceite, revalida a campanha/texto/embargo atual e usa os mesmos identificadores. Não aprova peças, não publica, não reenvia exportações de mídia e respeita a pausa. RUNNING antigo sem resposta confirmada passa a UNCERTAIN, sem reenvio.
- A fila existente e a retomada consultam essa recuperação. O diagnóstico privado sob demanda também pode conferir uma tarefa por vez sem permitir chamada nova. Os controles permanecem dentro da janela de produção: nenhuma alteração na hierarquia visual aprovada.
- A configuração editorial agora exige autenticação privada e origem válida. Testes adicionais com R2 CAS cobrem concorrência, pausa, salvamento parcial, custo, alteração de versão e acesso indevido.
- Esta entrega conclui o reforço da recuperação, não certifica a M5 inteira nem ativa a M6. Executor periódico, cadência, provedores/mídia reais e publicação social continuam dependendo de implantação/homologação. Nenhum agendamento, mensagem, chamada paga ou publicação social foi acionado.

## 2026-10-07 — Regra visual obrigatória

- Seguir as imagens de telas aprovadas em `Ascend documents/Correções/Ascend_Telas_Separadas/telas_separadas`, nos modos claro e escuro. Funcionalidade nova não autoriza mudar a hierarquia visual nem acrescentar painéis explicativos às páginas operacionais.
- Campanhas: cabeçalho, filtros, cartões com dados reais e faixa de criação com IA abaixo dos cartões, conforme `02_campanhas.png`. Custos, controles e progresso ficam na janela aberta sob demanda. Não inserir o painel "Produção conduzida pela IA" acima dos filtros. Não copiar contagens, campanhas ou capas fictícias da referência como registros reais.

## 2026-10-07 — M5 inicial: produção conduzida pela IA após validação

- A autora valida campanha, texto, proposta visual e arquivos finais e grava os vídeos. Gerar, compor e exportar não são etapas manuais obrigatórias da rotina final.
- Proposta de ciclo por Anthropic, guardada como campanha DRAFT. A intenção, oferta e intensidade da campanha ativa não são alteradas silenciosamente. A aprovação da versão atual da campanha libera seis pautas (duas por formato: carrossel, roteiro de vídeo e imagem); nenhuma peça nasce aprovada.
- Aceite do texto atual prepara automaticamente uma proposta de carrossel ou composição tipográfica de imagem. A proposta usa a marca confirmada, sem geração paga de imagens. Aceite humano da prévia exata encaminha exportação pelo compositor existente; o aceite final de mídia/legendas permanece separado. Vídeo apenas registra o roteiro validado e a espera pela gravação, sem alegar edição concluída.
- Fila privada R2 com CAS, operação vinculada a versão e IDs determinísticos. Resposta da IA é persistida antes de reconciliar os registros; requisições repetidas não duplicam chamada, pautas ou exportação. Timeout/resultado incerto bloqueia a operação; não há repetição automática nem aprovação atribuída à IA. Bloqueios conhecidos antes de chamada podem ser reavaliados com segurança.
- Reserva conservadora de até US$20/mês para TEXTO AUTOMÁTICO desta fila. Não é o controle financeiro global D01: imagens, unidades Browserless, WhatsApp, hospedagem e chamadas manuais ficam fora deste ledger. Preço do modelo legado claude-sonnet-5 conferido na documentação oficial da Anthropic em 07/10/2026; modelo sem preço verificado bloqueia geração automática. Consumo também é reconciliado em AiUsage por ID determinístico.
- A entrada de serviço já existente pode executar uma etapa pendente, mas nenhum executor periódico foi configurado/ativado. A cadeia iniciada pelos aceites funciona na requisição autenticada do painel. M6 (cadência, novos ciclos automáticos com painel fechado, envio, métricas operacionais e retomada contínua) permanece pendente de implementação/homologação real. Não confundir fila implementada com operação 24 horas ativa.
- Multiplika/Rokem e LinkedIn institucional continuam fora do lançamento. Telegram e aprovação por WhatsApp foram adiados a pedido da autora. Nenhuma mensagem, plano pago, top-up, cron WHM ou publicação social foi acionada nesta implementação.
- Evidência de WhatsApp trazida pela autora em 07/10/2026: CAPTURADAS_WHM=1 e CONFIRMADAS_ASCEND=1, processamento NOT_STARTED. Captura ponta a ponta confirmada; decisões/respostas/envios seguem desativados. Não reabrir essa integração para bloquear a produção.
- Verificação local: tipos, handlers isolados workerd/Miniflare com R2 real e provas de concorrência, orçamento, versão atual, aceites e exportação única. Provedores/mídia reais e qualidade final ainda precisam de homologação; testes isolados não representam conteúdo produzido nem publicação real.

## 2026-08-15 — Fundação

- A estrutura visual segue o Refuge Rooms Studio: barra superior fixa, navegação lateral recolhível, visão geral operacional e páginas de trabalho focadas.
- A identidade continua própria do Ascend. A interface usa lavanda como acento principal e teal como apoio, conforme o escopo e o guia mais recentes.
- PostgreSQL/Neon e Prisma são a fonte de verdade. O banco foi modelado multi-conta desde a raiz.
- O seed inicial é idempotente e inclui a conta `Elzilane pessoal`, quatro fontes de identidade, três perfis de referência e cinco paletas aprovadas.
- Textos de interface ficam em pt-BR; identificadores e comentários de código ficam em inglês.
- A publicação no GPT será privada. Integrações Meta, LinkedIn, Anthropic e geração de imagem permanecem isoladas para os lotes correspondentes.

## Pendências externas

- Credenciais e configuração do app Meta para iniciar a submissão do Lote 0.
- Credenciais da API de texto e das redes sociais para habilitar geração e publicação reais.

## 2026-08-15 — Reconhecimento visual por rede

- Toda peça mantém uma miniatura identificável e selos dos canais escolhidos nos fluxos de Gerador e Kanban.
- O mural visual é filtrado por Instagram ou LinkedIn e oferece comparação lado a lado para peças multicanal.
- A tela de Publicação mostra a adaptação visual de cada destino antes de enviar para a fila; marcar ou desmarcar uma rede atualiza a prévia imediatamente.
- As representações usam a estrutura do Ascend e apenas respeitam proporções e hierarquia próprias de cada canal. Não reproduzem literalmente a interface das redes sociais.

## 2026-08-15 — Persistência do núcleo editorial

- O Prisma usa o adaptador serverless do Neon para que o aplicativo hospedado consulte o PostgreSQL sem depender de conexões TCP persistentes.
- Os seis posts demonstrativos agora fazem parte do seed idempotente e pertencem ao ciclo editorial 1.
- O Gerador permite registrar pautas manualmente enquanto a credencial da API de texto não está disponível; cada pauta é salva em `PROPOSTO` e recebe miniatura visual imediatamente.
- Aprovações no Gerador e movimentações no Kanban persistem o estado do post no banco.
- A Grade lê os posts reais e filtra Todos, Agendados e Publicados por rede.

## 2026-08-20 — Crescimento, vídeo e roteamento de IA

- Estratégia, pautas, roteiros e legendas são tarefas do provider de texto Anthropic. Artes, carrosséis e capas são tarefas do provider de imagem OpenAI. Os módulos acessam providers somente pelas interfaces `TextProvider`, `ImageProvider` e pelo roteador central.
- Crescimento significa alcance qualificado. A estratégia usa alcance entre não-seguidores, salvamentos, compartilhamentos e retenção; não usa promessa de viralização nem volume como objetivo isolado.
- A sequência de crescimento só consulta fontes com permissão editorial ligada. Multiplika e Rokem permanecem guardados e fora das sugestões até decisão explícita da autora.
- O editor de vídeo preserva a narrativa. O corte automático remove apenas silêncios acima de 1,5 segundo por padrão; vídeos marcados como já editados pulam esse passo.
- O processamento será executado por um worker FFmpeg isolado, para não prender o aplicativo web durante renderização. O painel e as configurações persistentes podem evoluir enquanto o armazenamento de mídia e o worker são conectados.
- A capa simbólica é o default, sempre sob validação. Uma abordagem alternativa só pode ser proposta quando as métricas indicarem vantagem e o sistema explicar o motivo.
- O bloqueio de segurança da Meta não interrompe o restante do Ascend. A integração de publicação permanece visivelmente pendente até a conta permitir a conclusão do cadastro de desenvolvedor.
- A área útil máxima do aplicativo foi ampliada para 1980 px, adequada a monitores de até 2440 px, mantendo quebras responsivas em notebook, tablet e celular. Textos auxiliares passaram a usar uma escala mínima de leitura maior.

# 2026-08-20 — Operação editorial automatizada

- A navegação diária foi reduzida a Início, Campanhas, Pautas, Aprovações, Publicar e Aprendizados; recursos especializados permanecem recolhidos em Ferramentas.
- Anthropic é o provedor exclusivo de estratégia, pautas, textos, roteiros e aprendizado. OpenAI é o provedor exclusivo de imagens, capas e transcrição.
- Toda campanha declara tese, público, função de cada canal, temas permitidos e temas bloqueados. Guardar conhecimento não autoriza publicá-lo.
- A aprovação humana permanece obrigatória. Depois dela, produção, agenda, fila e aprendizado podem avançar automaticamente.
- Artes geradas ficam no binding R2 `MEDIA`, associadas à pauta e visíveis como miniaturas no fluxo.
- Publicação externa permanece em fila quando Meta ou LinkedIn ainda não concederam autorização; nenhuma peça é perdida nem marcada como publicada antes da confirmação da rede.

## 2026-08-20 — Direção criativa de vídeo com Opus

- O navegador mede a faixa sonora e identifica silêncios; a transcrição continua no provider OpenAI. O Claude Opus 5 recebe transcrição, pausas e quadros-chave para compreender a proposta e sugerir headline, ênfases, zooms e transições.
- A direção do Opus é sempre apresentada como proposta. Nada é aplicado antes da aprovação da autora, e todos os tempos, estilos e intensidades permanecem editáveis no Ascend.
- Zooms são sutis e limitados, transições são curtas e simples, e efeitos de legenda servem à compreensão. O sistema evita movimentos excessivos e não inventa conteúdo ausente do vídeo.
- A prévia técnica é feita no navegador. A codificação do arquivo final permanece destinada ao worker FFmpeg isolado já previsto, preservando o objetivo de não exigir um editor externo.

## 2026-08-20 — Render final no próprio Ascend

- O FFmpeg WebAssembly executa em um Web Worker no dispositivo da autora, isolado da interface e sem enviar o arquivo bruto para um serviço de edição externo.
- O render final gera MP4 H.264/AAC e consolida os cortes aprovados, enquadramento, zooms, transições, headline, legendas, música, redução automática da trilha durante a fala e fades.
- A primeira execução baixa aproximadamente 31 MB do núcleo oficial do FFmpeg; as seguintes reutilizam o motor carregado enquanto a aba permanece aberta.
- O limite preventivo do render local é 450 MB por arquivo. O projeto permanece salvo se o navegador interromper o processamento, permitindo nova tentativa sem perder a edição.

## 2026-10-07 — Preparação M4 por YCloud, sem ativação

- Zi confirmou o cadastro seguro da chave YCloud no Ascend. Esse cadastro consulta o remetente e o modelo, guarda a chave criptografada e não ativa envio ou cobrança. O número institucional preserva o aplicativo WhatsApp Business em coexistência; Elzilane recebe as solicitações de aprovação.
- A base de recebimentos valida a assinatura YCloud sobre os bytes originais antes de interpretar o evento. Filtra conta e números antes de guardar conteúdo, não importa histórico ou dados de clientes e usa registros privados R2 com put-if-absent por ID da mensagem. Captura não representa processamento, aceite humano ou resposta enviada.
- A janela de serviço usa somente o horário da mensagem de entrada autorizada, avança monotonicamente e pode ser reconciliada após falha de gravação. Horário futuro tolerado por desvio de relógio não abre uma janela antecipada. Duplicidade simultânea e recuperação são verificadas somente com fixtures isoladas.
- Não existe rota de webhook ou cadastro de endpoint nesta preparação. A URL de produção permanece privada. Uma entrada HTTPS externa com escopo restrito ainda precisa ser definida; não tornar o Ascend público nem fornecer seu token de acesso amplo à YCloud. Uso único dos botões ligado à versão, controle global de custo, envio real e homologação continuam pendentes. M5/M6 não são iniciadas.
- O print de Zi mostrou o modelo em análise com categoria MARKETING. O painel distingue essa diferença de categoria de um possível problema no conteúdo ou botão. Não presume o motivo da classificação, não recria/submete o modelo e não autoriza tarifa Marketing silenciosamente. Aprovação pela Meta não equivale a liberação de envios pelo Ascend.

## 2026-10-07 — Receptor WHM instalado, ponte ainda pendente

- Zi executou o pacote isolado no WHM e forneceu a saída de sintaxe PHP, 31 testes fictícios aprovados, arquivos instalados e HTTPS OK. O estado do endpoint público também foi confirmado independentemente por HTTPS: instalado, recebimento/encaminhamento/decisões/envios todos false. O pacote está separado da fonte do Site em `../whm-whatsapp`; hash gzip SHA-256 `e9167c1680703669bc29d8882fe5de7c9f54fd543c2f0474b78b51cac30fa63d`.
- Somente as pastas novas `/home/institutoolam/public_html/ascend-whatsapp` e `/home/institutoolam/.ascend-whatsapp` foram criadas. A instalação não modifica o site institucional, ascend-cta, Apache, DNS, firewall, PHP do domínio, cron ou WhatsApp do celular. O erro do PHP CGI genérico foi evitado usando o CLI ea-php82 já instalado.
- O Ascend permite conferir esse receptor por GET HTTPS sem credenciais, redirecionamento ou retry automático e guardar apenas metadados públicos da instalação. Essa conferência não configura um webhook, ponte, custo, janela de serviço ou aceite. Reconsultar o modelo preserva o estado de instalação separado e todos os bloqueios.
- A instalação é preparação, não operação M4 homologada. Segredo/endpoint YCloud, ponte autenticada ao Site privado, uso único e versão dos botões, decisão editorial comum, custo e testes humanos continuam pendentes. Nenhum token de acesso amplo do Site é fornecido à YCloud. Não inserir segredos numa sessão de terminal WHM por HTTP.

## 2026-10-07 — Ponte WHM ao Ascend privado, somente captura

- A nova rota de serviço mantém o acesso owner-private do Sites e exige adicionalmente HMAC SHA-256 com chave exclusiva, timestamp, nonce e bytes originais. Não fabrica identidade de visitante. O probe autenticado não acessa banco, guarda mensagens ou abre janela de atendimento.
- Entradas reais continuam desativadas no WHM. Quando a etapa de recebimento for configurada separadamente, somente mensagens de Elzilane para o número/WABA institucional poderão gerar recibos privados R2. Nonces são vinculados ao conteúdo, wamid é deduplicado e conflitos não sobrescrevem o recebido. Captura permanece NOT_STARTED, sem aprovação, resposta ou publicação.
- A chave de serviço do Sites nunca é fornecida à YCloud. A configuração para o WHM é transportada cifrada com RSA-3072 OAEP e AES-256-GCM, vinculada à impressão da chave pública confirmada por HTTPS. O importador CLI valida o prazo, o modo desativado, os arquivos anteriores e um probe real antes de atualizar apenas o receptor/configuração, preservando backups privados. Não existe endpoint público de importação ou decifração.
- Os testes da rota usam R2 isolado e chamadas externas proibidas. Sintaxe PHP e testes fictícios PHP são pré-condições do bloco WHM, pois não há PHP local. Não instalar serviços, cron ou executor novo. M4 não homologada: assinatura/endpoint YCloud, decisões editoriais com versão e uso único, custo e teste humano continuam pendentes.

## 2026-10-07 — Ponte confirmada no WHM; cadastro cifrado do webhook

- Zi confirmou sintaxe PHP, 31 testes do receptor e 29 da ponte, autenticação real, importação e backups privados. A conferência HTTPS independente devolveu bridgeConfigured/bridgeAuthenticated true e receiving/forwarding/decisions/sending false. A ponte está instalada; isso não comprova entrega real de mensagem ou decisão editorial.
- O formulário privado separado recebe somente ID/segredo do webhook e confirmação de captura sem decisões/envios. Guarda o segredo no cofre, preserva a API Key e prepara um comando de uso manual, sem registrar/ativar endpoint, importar histórico, enviar mensagem ou contratar plano na YCloud.
- O transporte usa a chave pública fixada do WHM, RSA-3072 OAEP/AES-GCM e adicionalmente HMAC SHA-256 da ponte sobre o plaintext cifrado. Essa autenticação impede que conhecer apenas a chave pública permita fabricar uma configuração aceita. Há validade de 24h, ID de revisão, comparação da versão anterior, proteção contra aplicação antiga, atualização atômica e backup privado. Só o comando executado no WHM pode habilitar captura de mensagens de Elzilane para o Instituto; não existe importador HTTP.
- PHP não está disponível localmente: o próprio comando faz lint e testes fictícios antes da aplicação. A nova preparação foi testada isoladamente em workerd/R2, incluindo confidencialidade, decifração compatível com OAEP SHA-1 do PHP 8.2, MAC, acesso privado, origem, preservação do cofre, chave divergente e bloqueios. Decisões por WhatsApp, controle de custo e homologação humana permanecem pendentes.
- A cópia de ASCEND_WHATSAPP_SITE_ACCESS no runtime do Site não é usada por nenhuma rota e foi retirada. O acesso amplo de serviço permanece somente no arquivo privado do WHM já autenticado; o Site usa a chave HMAC exclusiva. Não há rotação ou mudança de público.
