- a categoria visual ignora valores derivados conflitantes e usa exclusivamente o código real
BUG_REPORT, sem inferência pelo título, fluxo outasks.kind; - a prioridade padrão e a ordenação explícita seguem a hierarquia persistida
Urgente > Crítica > Alta > Média > Baixa, preservando o códigoURGENT_PRODUCTIONe exibindo o rótuloUrgente; - contagens passam a usar singular/plural natural e durações ausentes são exibidas como
— / —.
- filtro de etapa derivado das etapas ativas da empresa, combinável com ciclo, estado, categoria, prioridade, prazo e busca;
- ordenação server-side por tarefa, etapa, prioridade e criação, com direção acessível e paginação numérica compacta;
- ação condicional
Limpar filtros, cabeçalhos de grupo compactos e descrições acessíveis para tipo, estado, prioridade, responsáveis e duração.
- regressões de categoria, filtros combinados, etapas, agrupamentos, preferência por usuário, paginação, ordenação, densidade e acessibilidade;
- homologação com dados reais, migration 017 aplicada e viewport na VPS permanecem pendentes do usuário.
- filtro, badge e ícone Bug/Dev passam a usar exclusivamente o tipo real
BUG_REPORT, eliminando a divergência comtasks.kind; - cadastro de Bug prefere o tipo canônico
BUG_REPORT, sem selecionar automaticamente um tipo genérico aplicável a ambos os fluxos; - o tipo de sistema preserva código e ID e passa a apresentar o nome de domínio
Report Bug.
- preferência de agrupamento da lista persistida por empresa e usuário, com os modos Nenhum, Etapa, Usuário, Prioridade e Tipo de tarefa;
- regressões automatizadas para filtro, badge, ícones Lucide, grupos sem duplicação e isolamento da preferência entre usuários.
- classificação e agrupamento com fixtures, persistência simulada, lint, testes e build;
- aplicação da migration 017, sessão autenticada e homologação na VPS permanecem pendentes do usuário.
- lixeira administrativa de tarefas com exclusão lógica, restauração pelo mesmo ID e purge permanente exclusivo de Super Admin;
- confirmação reforçada pelo código da tarefa e pela frase
ESVAZIAR LIXEIRA, protegidas também no backend; - agrupamento visual paginado por etapa, responsável da etapa, prioridade semântica e tipo real da tarefa;
- categoria resumida
Bug/Dev, usandoBugeCode2dolucide-reactcom descrição acessível.
- prioridade persistida
URGENT_PRODUCTIONpassa a ser apresentada comoUrgente, sem alterar código ou ID; - notificações, métricas e contadores operacionais desconsideram tarefas na lixeira;
- purge remove dependências em ordem, desvincula relações opcionais e coloca anexos físicos em quarentena transacional antes da remoção.
- permissões Admin/Super Admin, confirmações, soft delete, restauração, auditoria, integridade do purge, categorias e cinco modos de agrupamento;
- aplicação da migration e homologação real da lixeira em PostgreSQL/VPS permanecem pendentes do usuário.
- download de backup não tenta mais inserir o ID opaco de 32 caracteres na coluna UUID
audit_events.entity_id; a auditoria preserva o ID emnew_valuesantes do streaming; - frontend substitui a navegação por link pelo cliente HTTP autenticado com
responseType: 'blob', filename validado, Object URL temporária, revogação e mensagem de erro JSON; - formulário SMTP passa a usar um único card responsivo de 590px, organizado nas quatro linhas solicitadas;
- testes confirmam o uso de
Bugdolucide-reactparaBUG_REPORT, sem aplicação indevida aos demais tipos.
- streaming binário, headers, bytes, 400/401/403/404/500, traversal, symlink, arquivo ausente, download Blob, revogação da Object URL e tratamento de erro;
- homologação com arquivo real, sessão e proxy na VPS permanece pendente do usuário.
- download autenticado de backups por streaming, com resolução por catálogo, raiz canônica, proteção contra traversal/symlink e bind mount somente leitura;
- timelines técnicas de Testes, GitHub e Anexos nos lados Backend/Frontend, além de Histórico alternado sem reordenação visual;
- abas Abertas/Concluídas, ícones centralizados por tipo e indicadores acessíveis de cronômetro na lista de tarefas;
- cards Bugs Backend/Frontend e drill-down paginado dos indicadores operacionais do Dashboard, atribuindo o bug ao responsável da tarefa vinculada;
- classificação persistente
technical_areapara anotações GitHub pela migration 015.
- stepper de etapas sem card externo e com menor ocupação vertical;
- SMTP reorganizado em três linhas responsivas, com visibilidade controlada da senha;
- histórico administrativo limitado a 21 eventos, paginado de sete em sete dentro do modal;
- backups criptografados permanecem restritos, agora com leitura
0640exclusiva ao grupo operacional usado pelo backend.
- cobertura de segurança de download, contratos de timeline, ciclo de tarefas, dashboard sem N+1, SMTP e paginação de usuários;
- homologação visual autenticada e operação real na VPS permanecem dependentes do ambiente do usuário.
- corrige o
EACCESentre updater root e backend non-root por um GID operacional compartilhado e persistido; - grava status e catalogo atomicamente como
root:<ops-gid> 0640, preservando logs internos em0600; - cria diretorios setgid com privilegio minimo, reconcilia somente artefatos allowlisted e cobre o ciclo com 25 testes locais;
- mantem o polling do frontend dependente do retorno terminal real, sem mascarar indisponibilidade permanente.
- refatora o WebUpdater seguindo o fluxo simples e funcional do Full Password;
- remove changelog, backup e manutencao HTTP dos gates de atualizacao;
- elimina release/imagem candidata e tags permanentes de rollback;
- preserva HMAC, nonce, replay protection, fila privada, lock, migrations e health;
- corrige a identidade instalada para usar
installation.jsone a release ativa; - torna o polling do frontend resiliente a restart e pausa notificacoes durante update;
- adiciona fixture de regressao 0.6.26-alpha para 0.6.27-alpha e contrato local com 38 cenarios.
- listagem de backups deixa de ser bloqueada por pedidos operacionais historicos invalidos durante a reconciliacao de auditoria;
- estados de backup (
available/verified) e estados da fila passam a possuir contratos independentes e validacao estrita; - status terminal passa a informar a operacao concluida, incluindo criacao, verificacao, restore, exclusao e update;
- bootstrap do tema foi movido para arquivo estatico same-origin, preservando o primeiro paint sem violar
script-src 'self'.
- fixtures cobrem catalogo
available, catalogo corrompido, mensagens terminais, pedido historico invalido, ciclo simulado de exclusao e ausencia de JavaScript inline.
- WebUpdater deixa de depender de backup pre-update automatico e nao executa verificacao ou restore de dados durante update;
- rollback passa a ser explicitamente operacional e registra mutacao do banco e necessidade potencial de restore manual;
- verificacao e restore usam
/opt/devflow/tmproot-owned0700, eliminando bind source no/tmpprivado do updater.
- gerenciamento de backups pelo frontend para Super Admin, com listagem, criacao, verificacao, restore e exclusao;
- fila HMAC allowlisted, polling, auditoria, rate limit, confirmacoes fortes e lock operacional global;
- backup de seguranca validado antes de cada restore e catalogo sanitizado com retencao de 30 dias;
- contrato transacional schema v3 e documentacao da migracao unica exigida pela
0.6.24-alpha.
- tema escuro completo para login, navegação autenticada, páginas, tabelas, formulários, dropdowns, modais e estados semânticos;
- alternância acessível por ícones Moon/Sun na barra superior e na tela de login;
ThemeContextcom preferêncialight/dark, persistência local e acompanhamento do sistema antes da primeira escolha manual.
- preferência é aplicada antes do primeiro paint para evitar flash de tema incorreto;
- foco, placeholders, campos desabilitados, impressão e viewport mobile preservam contraste e usabilidade.
- 36 cenários automatizados de tema, layout, componentes e regressão;
- alternância, reload, persistência e viewport 390 x 844 verificados no navegador local; homologação visual na VPS permanece pendente.
- WebUpdater passa a executar health de runtime explícito dentro do container updater, sem depender do loopback, dos certificados em arquivo ou do systemd do host;
- pre-update, health final e rollback público selecionam o contexto correto entre execução manual no host e execução interna pelo daemon.
- HTTP e HTTPS do modo daemon atravessam o
devflow-nginxpelo IP da rededevflow_edge; - HTTPS continua validando certificado, hostname e cadeia de confiança com a CA store explícita da imagem, sem
curl -k, host networking ou mounts sensíveis adicionais.
- 20 cenários locais cobrem os contextos host/daemon/candidate e preservam HMAC, fila, allowlist de serviços e isolamento do updater;
- Docker, HTTPS e WebUpdater reais na VPS permanecem pendentes de homologação pelo usuário.
- migration 014 para inserir
FRONTEND_APPROVALentre Frontend e Update GitHub em fluxos existentes; - revisão dedicada com aprovação, reprovação, comentário e anexo de evidência;
- gate declarativo que exige aprovação registrada antes do avanço.
- novos tenants recebem a sequência Roadmap/Report Bug → Backend → Frontend → Aprovação do Frontend → Update GitHub → Testando → Revisando → Produção;
- Cliente, Desenvolvedor Backend e Desenvolvedor Frontend deixam de ser opções de Perfis Validados no QA;
- cards de testes passam para 490 px e cards de anexos para 490 x 171 px.
- lint e testes direcionados de workflow, frontend e migrations; homologação real na VPS permanece pendente.
- backend e updater agora compartilham explicitamente
${DEVFLOW_UPDATER_ROOT}no caminho canônico/var/lib/devflow/updater; - o controller grava a solicitação somente em
DEVFLOW_UPDATER_QUEUE_DIR=/var/lib/devflow/updater/requests, sem fallback relativo; - daemon, health checks e status transacional usam a mesma raiz interna persistente.
- o backend registra
[UPDATER_QUEUE] Arquivo de solicitação gravado em:somente depois da promoção atômica bem-sucedida.
- validações locais do backend, Compose, daemon e contrato da fila; homologação real na VPS permanece pendente.
- card de checklist junto ao avanço da etapa, com evidências concluídas, pendências obrigatórias e alerta visual no botão bloqueado;
- perfis técnicos ativos carregados no modal de QA para seleção por checkboxes.
- ambiente e perfis validados usam grupos de checkboxes; Backend e Frontend usam selects de situação predefinida;
- testes são ordenados do mais recente para o mais antigo em timeline centralizada com cards de 350 px;
- anexos usam timeline centralizada e cards compactos com dimensões exatas de 350 x 122,15 px.
- lint, 35 testes frontend, build Vite e check integral executados localmente;
- navegador autenticado e VPS permanecem pendentes de homologação.
- adicionada a migration 013 para remover idempotentemente o trigger legado em ambientes que ja registraram uma versao anterior da migration 012 com
task_testsvazia; - a migration de reconciliacao tambem garante
source_sectione amplia o tipo existente paraVARCHAR(50)sem perda de dados.
- executor detecta 13 migrations e a regressao cobre tanto a 012 corrigida quanto a 013 de compatibilidade;
- PostgreSQL e VPS reais permanecem pendentes de homologacao.
- migration 012 remove de forma idempotente o trigger legado de imutabilidade antes do backfill de
task_tests, eliminando o SQLSTATEP0001; task_testspossui criacao defensiva comCREATE TABLE IF NOT EXISTS, preservando UUIDs compativeis com tarefas e usuarios;source_sectione adicionada comADD COLUMN IF NOT EXISTSeVARCHAR(50), sem ENUM ou bloco de excecao forcada;- o trigger nao e recriado porque o modulo de QA exige edicao auditada e exclusao logica.
- regressao estatica cobre a ordem entre remocao do trigger e backfill, ausencia de
RAISE EXCEPTIONe DDL idempotente; - lint, testes, build e validadores de migrations executados localmente;
- PostgreSQL e VPS reais permanecem pendentes de homologacao.
- backend e updater passam a montar a mesma fila persistente do host em
DEVFLOW_UPDATER_ROOT, eliminando dependencia de volume Docker opaco; - caminhos internos de requests e status devem ser absolutos e compartilhar a mesma raiz, com criacao atomica do diretorio preservada;
- atualizacao externa por SSH recria o updater somente depois da promocao e do health publico, aplicando o bind persistente sem permitir autorrecriacao durante pedidos web;
- polling da interface entra em fase de reinicio para HTTP 404/502/503/504, timeout ou erro de rede e para de consultar o request consumido;
- durante o reinicio, somente
/api/healthe consultado; o primeiro HTTP 200 recarrega imediatamente a interface.
- regressao cobre o contrato do bind compartilhado, caminhos absolutos, handoff por 404 e a maquina de estado fila/health;
- lint, testes, build e check integral executados localmente;
- Docker e VPS reais permanecem pendentes de homologacao.
- migration 012 evolui
task_testscom autoria da sessao, contexto, perfis, ambiente, informacoes de backend/frontend, notas de teste, status e exclusao logica auditavel; - origem validada dos anexos por secao (
geral,backend,frontend,testes,githuboucomentarios); - cards de QA com 350 px, modal de cadastro/consulta/edicao e upload isolado por teste;
- linha do tempo vertical de anexos com data, autor, origem e preview.
- autoria de QA permanece exclusivamente derivada da sessao autenticada;
- registros legados recebem backfill e continuam compativeis com as regras de transicao existentes;
- exclusao de QA e anexos permanece logica; nenhum dado de dossie e removido fisicamente.
- lint, testes, build e check integral executados localmente;
- migration em PostgreSQL, navegador autenticado, Docker e VPS permanecem pendentes de homologacao.
- status terminal
completed/failedda fila passa a ter precedencia sobre fases detalhadas obsoletas comohealth/rollback; - polling usa um unico intervalo por request, sem recriacao a cada mudanca de fase e sem requisicoes simultaneas;
- consulta de status possui timeout de 5 segundos para que conexoes pendentes nao bloqueiem novas tentativas;
- HTTP 502/503/504, timeout e Network Error mantem o estado "Reiniciando servicos..." sem interromper o polling;
- primeira resposta 200 com ciclo
completedencerra o intervalo, grava o aviso de retorno e forçawindow.location.reload(); - ciclo
failedencerra o polling sem reload e informa a falha/rollback de forma segura.
- regressao reproduz 503 seguido de
{ status: 'completed', state: 'health' }e comprova a decisao de reload; - lint, testes frontend e check integral do repositorio aprovados localmente;
- reinicio real de containers e retorno da VPS permanecem pendentes de homologacao.
- migration 011 registra o instante de entrada na etapa, vincula eventos do cronometro a
stage_ide cria sessoes de touch time por tarefa, etapa e usuario; - detalhe da tarefa agrega touch time individual por desenvolvedor e apresenta identificacao visual com estado ativo;
- anexos de imagem e video recebem preview nativo; documentos e compactados usam icones Lucide por extensao.
- lead time passa a ser o intervalo automatico entre entrada e saida da etapa; touch time permanece manual em um unico toggle Iniciar/Pause;
- transicao encerra sessoes manuais e intervalo anterior, registra o evento com a etapa de origem, zera o timer e abre o ciclo da nova etapa atomicamente;
- Roadmap nao abre intervalos, rejeita operacao do timer e nao renderiza o card de tempo;
- conclusao manual do cronometro foi removida da API e da interface; o encerramento ocorre pela transicao;
- backend deriva
Content-Typeda extensao permitida e usa disposicao inline somente para imagens, videos e PDF.
- lint backend/frontend, 82 testes backend, 30 testes frontend e build Vite de producao aprovados localmente;
- migration, PostgreSQL, Docker, navegador autenticado e VPS reais permanecem pendentes de homologacao.
- leitura do pedido de update passa a localizar o JSON sequencialmente em
requests,processing,processedefailed, retornando 404 somente quando ausente em todo o ciclo; - arquivo da fila define o estado publico
pending/processing/completed/failed, enquantostatus/preserva fases detalhadas como backup, migrations, health e rollback; - arquivos de fila e status recebem validacao de UUID, tipo, symlink, tamanho, schema e identidade antes da resposta;
- polling web trata timeout, Network Error e HTTP 502/503/504 como reinicio temporario, mantem o loading e continua tentando;
- retorno
completedpela API grava o aviso de conclusao e recarrega a pagina automaticamente.
- regressao move o mesmo request pelos quatro diretorios e verifica os estados esperados, detalhe de migrations, erro seguro e 404 real;
- frontend cobre indisponibilidade temporaria, normalizacao do contrato e reload condicionado ao estado concluido.
POST /api/tasks/:id/timerdeixa de reutilizar parametros PostgreSQL com tipos ambiguos; UUID,varchar,text,bigintebooleanrecebem casts explicitos;- inicio do cronometro valida tarefa, associacao do operador, estado ativo, etapa com controle de tempo e sobreposicao dentro do mesmo lock transacional;
- autoria de
tasksetask_timer_eventsderiva somente dereq.user.id; campos de autoria enviados pelo cliente sao rejeitados; - controller responde JSON 400/403/404/409 para falhas previstas e registra falhas inesperadas com
[TIMER_ERROR]antes do 500 generico.
- SQL anterior reproduziu
42P08: inconsistent types deduced for parameter $3 (text versus character varying)em PostgreSQL local; - SQL corrigido persistiu
running, UUID do ator e eventoSTARTED; testes cobrem lock, autoria, concorrencia, permissao e respostas semanticas.
- Monaco editavel deixa de receber
valueesetForma cada tecla; o modelo interno preserva Enter, Backspace e whitespace sem ciclos React; - salvamento passa a ler
editor.getValue()diretamente, mantendo o codigo exatamente como digitado; - wrapper clicavel com altura minima de 400 px, borda, padding, foco programatico, placeholder e loading estavel;
- arquivo e linguagem alinhados em uma grade compacta no modal GitHub.
- regressao cobre
defaultValue, ausencia deonChangeno codigo, leitura no save e area minima clicavel; - deteccao de linguagem continua dependente apenas do nome do arquivo, sem parsing durante a digitacao do codigo.
- heap do Node ampliado para 4096 MB exclusivamente no estagio Docker que compila o frontend;
- Monaco e seu adaptador React isolados em chunk dedicado por
manualChunks, reduzindo a pressao do empacotamento principal; - versao promovida apos rollback da homologacao de
0.6.10-alpha, permitindo nova deteccao pelo updater.
- build Vite local concluido com o chunk
monacoseparado; - contrato do Dockerfile e configuracao Rollup protegidos por teste automatizado.
- solicitacao de atualizacao liberada exclusivamente ao Super Admin com sessao valida, sem exigir MFA, preservando CSRF;
- cronometro com toggle unico
Iniciar/Pause, bloqueio concorrente e spinner durante a requisicao, sem acao de cancelamento na API de tempo; - mudanca administrativa de estado com JSON semantico 400/404/409 e resposta 500 generica para falhas reais de infraestrutura.
- Monaco, autodeteccao Pascal
.pas/.dpr, persistencia estruturada, autor derivado da sessao e migrations 009/010 permanecem cobertos; - nenhuma migration publicada foi reescrita e a arquitetura isolada do instalador permaneceu inalterada.
- Pascal/Delphi, PowerShell e SCSS ao seletor e a deteccao por extensao do editor de codigo;
- modo automatico reversivel, tema reativo e componente Monaco reutilizavel com configuracao acessivel;
- migration 010 para exclusao logica e auditavel dos cards GitHub, protegida por
tasks.manage.
- escolha manual de linguagem deixa de ser sobrescrita quando o nome do arquivo muda;
- codigo passa a ser obrigatorio, com limite real de 200 KB medido em UTF-8 no frontend e backend;
- cards exibem linguagem, autor, data, etapa historica e etapa atual, preservando registros legados.
- Monaco continua carregado sob demanda e previews somente leitura sao montados apenas quando expandidos;
- payload rejeita
author_idestage_id; ambos continuam derivados da sessao e da tarefa no backend; - exclusao nao apaga dados, codigo nunca e executado e nenhum recurso depende de CDN.
- anotacoes GitHub estruturadas por arquivo, linguagem, codigo, explicacao, autor e etapa, com migration 009;
- Monaco Editor e workers empacotados localmente, deteccao de linguagem por extensao, modo somente leitura e copia do codigo;
- contrato schema 2 para pedidos fisicos do updater com aliases operacionais, persistencia atomica e assinatura HMAC.
- cabecalho da lista de tarefas com maior contraste e remocao do subtitulo redundante;
- cronometro com um unico botao reativo para iniciar, retomar ou pausar, sem acao de cancelamento na interface;
- falhas conhecidas de transicao de estado retornam JSON 400/404/409 e falhas internas recebem diagnostico sanitizado;
- painel de update recarrega somente depois de detectar indisponibilidade e retorno do health, mantendo o polling de cinco segundos.
- codigo permanece renderizado como texto pelo Monaco, sem
innerHTML, scripts externos ou CDN; - pedido do updater e criado com permissao restritiva, arquivo temporario exclusivo e rename atomico antes do consumo.
- configuracao SMTP persistente, cifrada com AES-256-GCM, teste direto com diagnostico sanitizado e uso centralizado pela outbox;
- multiplos registros GitHub por tarefa, com migration 008, cards e modal acessivel para anotacoes tecnicas;
- acompanhamento do update pelo health publico a cada cinco segundos, com recarga e aviso quando a nova versao retorna.
- lista de tarefas compactada em linhas de 40 px, avatares, duracoes e datas em linha unica;
- ordenacao padrao por Urgente Producao, Bug, Critica, Alta, Media e Baixa, com desempate pelas tarefas mais recentes;
- erros conhecidos do cronometro convertidos em respostas 400/409, sem mascarar falhas inesperadas;
- solicitacao de update passa a exigir MFA alem de sessao Super Admin e CSRF.
- senha SMTP nunca retorna pela API nem entra em auditoria; testes possuem rate limit e retornam somente falhas sanitizadas;
- anotacoes GitHub sao renderizadas como texto simples, sem interpretacao de HTML.
- filtro de projetos deixa de enviar UUID vazio e o backend normaliza clientes sem filtro;
- eventos do cronometro usam mapeamento explicito, incluindo
CANCELLED; - botao de atualizacao pode ser reutilizado depois de uma solicitacao concluida ou com falha.
- codigos de clientes e projetos gerados no backend e imutaveis pela API;
- perfis validados e anexo de evidencia em testes, anexos em comentarios e conversa em formato de chat;
- referencia de codigo em alteracao nos metadados GitHub;
- submenu de Servidor SMTP com configuracao sanitizada e teste pela outbox.
- health candidato com versao, commit, migration e tags de imagem explicitos, sem promover antecipadamente o estado instalado;
- promocao atomica da release seguida por
installation.jsonschema v3, health interno estrito e health publico; - backup pre-update autenticado pelo ID da transacao, identidade anterior, migration, snapshot e hashes;
- rollback apos migrations com restore obrigatorio do PostgreSQL e uploads antes de release, estado, containers e health antigos;
- imagens anteriores preservadas por ID/tag imutavel, candidata identificada pelo commit e worker removido quando ausente na topologia anterior;
- transacao schema v2 com estados finais nao ambiguos e gate de recuperacao manual quando o banco nao puder ser restaurado.
- fixture reproduz a tentativa
0.5.5-alphapara0.6.4-alpha, incluindo estado instalado antigo durante o candidate health; - 40 cenarios locais cobrem candidate health, promocao, backup, rollback antes/depois de migrations, falha de restore e imagens.
- motor
update.shtotalmente nao interativo, sem dependencia de TTY ou validacao de requests web; - CLI manual separada em
update-cli.sh, com check, changelog, confirmacao numerica e cancelamento normal; - daemon com fila autenticada, replay protection, lock, recuperacao de requests interrompidos e status sanitizado;
- bootstrap de update para instalacoes antigas, releases imutaveis e rollback sem comandos Git destrutivos;
- painel do Super Admin com versoes, changelog, salvaguardas e polling do estado da atualizacao.
- allowlist exata de remotes e servicos, sem controle de Compose pela API e sem recriar o updater em execucao;
- backup verificado, manutencao HTTP 503, migrations sob lock, health e rollback automatico preservados.
- notificacoes internas paginadas, contador, leitura individual/coletiva e links contextuais;
- preferencias por usuario para canais, movimentacoes, atribuicoes e atrasos, mantendo seguranca critica obrigatoria;
- recuperacao de senha com resposta neutra, token aleatorio armazenado por hash, expiracao, uso unico e revogacao de sessoes;
- outbox transacional cifrada, idempotencia, worker dedicado, retry exponencial, timeout e auditoria sanitizada;
- teste SMTP enfileirado exclusivo do Super Admin e configuracao por ambiente sem exposicao de credenciais.
- notificacoes e jobs de etapa sao gravados antes do commit e enviados somente depois pelo worker;
- tarefas em Roadmap nao vazam por atribuicoes, contadores ou notificacoes;
- payloads temporarios de e-mail sao protegidos por AES-256-GCM e apagados depois da entrega;
- recuperacao invalida tokens anteriores e encerra todas as sessoes abertas.
- estimativa de desenvolvimento em segundos, apresentada como
dd-hh-mm; - cronometro com estados
not_started,running,paused,completedecancelled; - tempo produtivo restante, tempo corrido desde o inicio, atraso e filtro de tarefas atrasadas;
- historico imutavel de inicio, pausa, retomada, conclusao, cancelamento, estimativa e atraso.
- Roadmap restrito no backend ao criador, Admin e Super Admin;
- fora do Roadmap, acesso limitado a participantes, responsaveis do projeto e administradores;
- predicados de visibilidade aplicados a busca, detalhe, relacionados, anexos, notificacoes e dashboard;
- operacoes de cronometro autorizadas pela responsabilidade da etapa e serializadas por lock no PostgreSQL.
- telefone opcional validado no formato internacional E.164;
- fluxo de alteracao do proprio e-mail com senha atual, e-mail pendente, token aleatorio com hash/expiracao e confirmacao;
- edicao administrativa de usuario, senha temporaria, troca obrigatoria, reset de MFA e historico basico;
- inventario de sessoes com login, ultimo acesso, IP, user-agent resumido, status e motivo de encerramento;
- encerramento auditado de sessao individual ou de todas as sessoes de um usuario.
- Admin nao administra Super Admin e nao eleva usuarios a Super Admin;
- ultimo Super Admin e ultimo Admin ativos sao protegidos;
- alteracoes de identidade, senha, papel, status, e-mail e MFA revogam sessoes aplicaveis;
- senhas temporarias, tokens, hashes de sessao e cookies nao sao gravados em auditoria.
- navegacao superior responsiva com dropdowns acessiveis, operacao por teclado e indicacao de rota ativa;
- paginas proprias de Clientes e Projetos com pesquisa, filtros, paginacao, edicao, ativacao e exclusao protegida por vinculos;
- permissoes
clients.view,clients.manageeprojects.view, aplicadas no backend por tenant; - associacao de equipe aos projetos e contagem dos vinculos de tarefas.
- rotas canonicas passam a usar
/dashboard,/task,/team,/clientse/projects, com redirecionamentos das rotas anteriores; - botao Nova Tarefa foi removido do layout global e movido para a pagina de tarefas;
- MFA, catalogos, fluxos e atualizacoes foram separados em rotas de Sistema.
- a conclusao interativa agora drena o logger antes de exibir as credenciais iniciais no TTY original;
- o bloco de credenciais passa a ser a ultima saida visivel e remove caminho protegido, resumo, health e diagnosticos internos;
- informacoes operacionais continuam preservadas no log de instalacao, inclusive em execucao sem TTY.
- os testes estruturais confirmam a ordem de drenagem, o delimitador final e a ausencia de saida posterior ao bloco;
- a instalacao real na VPS permanece pendente de homologacao pelo usuario.
- a politica persistente de MFA passa a usar
optionalpor padrao, com opcoesadminseallcontroladas exclusivamente pelo Super Admin e auditadas; - a troca obrigatoria da senha temporaria permanece independente da configuracao voluntaria de MFA;
- tokens CSRF sao vinculados a sessao, enviados pelo cliente HTTP central em operacoes mutaveis e renovados com no maximo uma repeticao para
CSRF_INVALID; - a rota de setup de MFA deixa de ser confundida com a rota isenta de verificacao do segundo fator;
- a leitura shell do
schemaVersionnumerico foi corrigida e o instalador agora valida/recarrega o estado com o codigo instalado antes de executar um novo processo de health; - a senha inicial e exibida uma unica vez no TTY original, somente depois do health aprovado, sem passar pelo log;
repair-installation-state.shpermite diagnosticar ou reparar apenas o estado schema v3 de uma instalacao existente, preservando dados, identidade, certificado e credencial.
- 40 cenarios obrigatorios cobrem MFA, CSRF, estado instalado, reparo e credencial inicial;
- testes unitarios exercitam a politica de MFA e o contrato CSRF vinculado a sessao;
- VPS, Docker, Certbot, systemd, navegador e aplicativo autenticador reais permanecem pendentes de homologacao pelo usuario.
- o instalador ativa
/opt/devflow/appatomicamente antes de criar ou iniciar o updater no estagio 14; - falhas restauram um symlink anterior validado ou removem somente o symlink candidato de uma instalacao inicial;
installation-in-progress, protegido comoroot:root 0600, mantem o daemon saudavel e bloqueia o consumo da fila ate o health e o estado final serem confirmados;- o updater ganhou
start_period, diagnostico sanitizado de falha e gates explicitos para daemon, ready file, container e Nginx; - a retomada de uma falha no estagio 14 reconstrói/recria somente updater e edge quando necessario, preservando banco, backend, frontend e migration saudaveis.
- 24 cenarios obrigatorios validam symlink antecipado, rollback, marcador, ready file, health, preservacao material e retomada do estagio 14;
- Docker, Certbot e a retomada real na VPS permanecem pendentes de homologacao pelo usuario.
sudo ./install.shagora seleciona explicitamente--installno bootstrap publico quando nenhuma opcao de modo e informada;--check,--dry-run,--installe--resumepreservam suas semanticas explicitas;- execucao nao interativa de instalacao exige dominio, e-mail administrativo e confirmacao do firewall antes de qualquer mutacao;
- cancelamento informa
changes_applied=false, falhas internas preservam o exit code e mensagens finais distinguem verificacao, simulacao, instalacao e retomada; - testes de interface reproduzem a chamada publica sem argumentos e impedem a regressao para um preflight sem instalacao.
- o fluxo publico foi exercitado com fixtures Bash e stubs sem rede ou mutacoes privilegiadas;
- a instalacao real na VPS, Docker e Certbot permanecem pendentes de execucao pelo usuario.
- O fluxo ACME temporário do DevFlow foi removido e substituído por Certbot standalone.
- DNS A e IPv4 publico agora sao comparados por fontes independentes; portas e firewall falham de forma fechada.
- certificado, SAN, validade, symlinks e chave privada sao validados antes da geracao do Nginx runtime;
- falhas de instalacao preservam containers e
--resumerecalcula o ponto material da instalacao parcial; - PostgreSQL, backend, frontend, Nginx e updater seguem inicializacao ordenada e health checks reais;
- renovacao usa Certbot do host, timer systemd e reload escopado ao
devflow-nginx; - frontend/backend podem criar somente pedidos HMAC
install-update; o daemon privado delega exclusivamente aoupdate.sh.
- 30 cenarios obrigatorios cobrem standalone, DNS, portas, certificado, Compose, ordem, retomada, admin, renovacao, updater, rollback e desinstalacao;
- Docker, Compose, Certbot, ACME, systemd e AMD64/ARM64 reais permanecem pendentes de homologacao manual na VPS.
Entradas anteriores a
0.5.0-alphadescrevem a arquitetura compartilhada historica, descontinuada e removida como caminho operacional.
- o DevFlow passa a suportar exclusivamente instalacao isolada, com Nginx, Certbot, containers, redes, storage e certificados proprios;
- o instalador interativo solicita somente dominio e e-mail administrativo, usa confirmacoes numericas e bloqueia 80/443 ocupadas sem adaptar terceiros;
- o fluxo transacional possui 16 etapas, ACME HTTP antes de HTTPS, retomada segura e estado final schema v3;
- PostgreSQL permanece apenas na rede interna; frontend e backend nao publicam portas no host;
update.shpermanece como motor unico para terminal e futura API allowlisted, com backup, manutencao, migrations, health e rollback;- health, diagnostico e uninstall foram reduzidos ao namespace exclusivo do DevFlow.
- providers
host-nginx,legacy-docker-nginxe o antigo wrapper de provider isolado; - adapters, overlays e fixtures de proxy compartilhado;
- publicacao separada, migracao de proxy, escopo interno, reconciliacao e reparos especificos da arquitetura compartilhada.
- 30 cenarios obrigatorios verificam instalacao isolada, portas, DNS, e-mail unico, arquiteturas, migrations, Nginx, ACME, HTTPS, renovacao, rollback, update, backup, restore, uninstall, limites de rede e desacoplamento;
- Docker/ACME/ARM64 reais continuam pendentes de homologacao manual na VPS.
- o build backend deixa de herdar permissões
0700/0600do checkout e normaliza/databasee/database/migrationscomoroot:root 0755, com todos os arquivos regulares em0644; - o build rejeita diretório ausente/vazio, symlink, entrada não regular, ownership ou modos divergentes e executa o contrato novamente como
USER devflow; - o probe operacional continua sem override de usuário, exige
Config.User=devflow, UID não root, leitura/travessia, ausência de escrita/execução e SHA-256 correto; EACCESno diretório e no arquivo agora são classificados comomigration-directory-permission-deniedeexpected-migration-permission-denied, em vez de erro inesperado do runtime;- instalação, resume, update e reconciliação tratam violações de permissões como imagem inválida antes de migrations, manutenção ou promoção.
- 29 cenários específicos cobrem os 28 requisitos de permissões e o comando oficial não root; o validador direto cobre também os marcadores de
EACCESe usuário configurado; - Docker não está disponível na estação Windows, portanto build Alpine/ARM64 e execução real das migrations permanecem pendentes de homologação manual na VPS.
- a validação da imagem candidata calcula a migration esperada a partir do checkout canônico, compara seu SHA-256 e vincula a inspeção ao ID imutável da imagem antes e depois do probe;
- o probe usa o runtime Node da própria imagem, sem quoting do BusyBox, e diferencia diretório ausente, arquivo ausente, arquivo não regular, conteúdo divergente, troca de referência e falha do runtime;
- a reconciliação registra referências, IDs, migration, resultado da validação, causa e rollback em estado transacional schema v2;
--retain-failed-candidatespreserva opcionalmente tags diagnósticas após o rollback, imprime comandos exatos de inspeção/remoção e nunca promove ou executa as candidatas;health.shconsidera publicação externa habilitada somente quando o estado consistente também possui transação de publicação concluída para o mesmo domínio/provider e certificado DevFlow ativo.
- a validação Docker real não foi executada nesta estação Windows porque Docker não está disponível;
- testes locais com mocks/fixtures cobrem o nome dinâmico, códigos de saída, identidade da imagem, conteúdo, retenção e estado; a nova homologação operacional permanece pendente de execução manual na VPS.
installation.jsonpassa ao schema v2 estrito com somente os 17 campos operacionais definitivos; versão, commit, ref e repositório são derivados exclusivamente de/opt/devflow/source;publish.shpassa a ser seguro por padrão e oferece--check,--dry-run,--publishe--rollback, com backup persistente do estado, rollback automático em falha parcial e remoção seletiva apenas do certificado criado pela transação;- o provider
host-nginxvalida layoutssites-available/sites-enabledeconf.d, Certbot, renewal timer, hook, certificado,nginx -t, reload e restauração; - o vhost compartilhado cobre WebSocket, uploads, restore, downloads, CSP, HSTS, rate limit, timeouts, buffers e gzip;
health.shexpõe prontidão de provider, proxy, publicação, certificado, renovação, rollback, identidade, estado e adapter, além deoverall_health;update-operation.shestabelece o contrato reutilizávelcheck-update,download-update,validate-update,install-updateerollback-update; o rollback manual reutiliza a transação e o backup autenticado do updater.- a migração controlada do proxy promove
proxyMigrationExecutedno estado v2 e restaura o snapshot do estado em rollback automático, sem escrever no repositório Full Password.
- 48 checks finais não mutantes cobrem publicação, rollback, provider, certificados, release, estado, atualização, host Nginx, proxy e health;
- a prova local é estrutural/simulada; emissão TLS, portas públicas, reload e rollback completos ainda devem ser executados na VPS de homologação antes de classificar o modo compartilhado como homologado em ambiente real.
Todas as alterações relevantes do DevFlow são registradas neste arquivo.
- criada reconciliação transacional separada para reconstruir somente backend/frontend a partir de
/opt/devflow/source, sem promover o código operacional mais novo para a release instalada; - imagens candidatas recebem versão e revision OCI canônicas, passam por validação isolada e substituem apenas os dois serviços da aplicação;
- IDs e tags anteriores, configuração privada e estado JSON são preservados para rollback automático; container, mount e migration do PostgreSQL são verificados antes e depois;
- APIs de releases legadas sem campo
commitsão classificadas comounsupported-by-installed-release, sem relaxar a validação de versão ou das imagens; - publicação externa, update e reparo de estado são serializados contra a reconciliação, que não altera proxy, Full Password, portas públicas ou migrations.
- 20 cenários obrigatórios cobrem promoção, rollback, preservação, modos, API legada, idempotência e bloqueio de publicação;
- a execução real de
--reconcilena instalação0.4.8-alphapermanece pendente na VPS ARM64.
- a identidade instalada passa a ser resolvida exclusivamente pelo checkout canônico protegido em
/opt/devflow/source, eliminando o commit antigo recarregado do.envdurante uma retomada; installation.jsonadotaschemaVersion: 1, nomes camelCase únicos, validação estrita e gravação atômica comfsynce permissõesroot:root 600;- o reparador idempotente cria backup protegido antes de migrar somente os metadados, sem reiniciar containers, executar migrations ou tocar no proxy;
- health, version, backup, restore, diagnose, publish e update consultam a mesma identidade central; publicação e update permanecem bloqueados enquanto o estado estiver inconsistente;
- update registra
previousInstalledCommite somente promove o commit candidato depois dos health checks; rollback valida e restaura a identidade anterior comprovada; - a API de health inclui o commit sanitizado e a reconciliação confirma versão e revision OCI de backend/frontend.
- 25 cenários obrigatórios mais o gate de publicação cobrem checkout, schema, backup, atomicidade, idempotência, modos, update, rollback e preservação;
- a instalação interna
0.4.8-alphaestá saudável na VPS ARM64; o reparo real do commit legado e o dry-run da publicação externa permanecem pendentes.
- a validação dos artefatos de migration deixou de criar um container pelo Compose antes das redes e passa a inspecionar diretamente a imagem resolvida com
docker run --rm --network none; - marcadores internos diferenciam diretório ausente, migration inicial ausente e falha do runtime Docker, evitando falsos negativos de conteúdo;
- stdout é aceito somente por allowlist e stderr recebe sanitização antes do diagnóstico, sem ambiente, volumes ou redes do serviço;
- install e update fornecem explicitamente a imagem já resolvida ao validador independente de provider;
- o estado transacional registra
rootCausee avança decompleted_stage=06-validate-imagespararesume_from_stage=07-create-networks.
- 24 cenários automatizados cobrem imagem válida/inválida, redes ausentes, modos compartilhado/isolado, providers, runtime Docker, sigilo, retomada, ARM64 e preservação do Full Password;
- a imagem
devflow-backend:latestda tentativa0.4.7-alphafoi comprovada correta diretamente na VPS; o falso negativo ocorreu antes da execução do comando interno; - Docker 29.6.1, Compose 5.3.1 e a retomada real da etapa 06 permanecem pendentes de repetição após esta publicação.
MIGRATIONS_DIR=/database/migrationsagora é permanente na imagem e explícito no serviço backend do Compose, inclusive quandodocker compose runsubstitui oCMD;- o executor valida diretório e arquivos antes de conectar ao PostgreSQL, bloqueia diretório vazio e registra somente caminho, quantidade, estado e código de saída sanitizados;
- install e update usam um único comando de migration, e a imagem candidata comprova a presença de
001_initial_schema.sqlantes de alterar o schema; - a retomada com PostgreSQL saudável preserva container e dados, mantém
resume_from_stage=09-run-migrations, reconstrói o backend alterado e reutiliza o frontend anterior somente com proveniência comprovada; - confirmações interativas deixaram de aceitar frases livres e usam menus numéricos fail-closed, com cancelamento controlado e rejeição de execução sem TTY.
- 20 cenários automatizados cobrem migrations, transação, lock, retomada ARM64, PostgreSQL 16 Alpine, preservação do banco e Full Password;
- 16 cenários cobrem escolhas, entradas inválidas, ausência de TTY, interrupção, sigilo e os três menus de instalação;
- Docker/Compose e PostgreSQL reais não foram executados no Windows; a retomada da etapa 09 permanece pendente na VPS ARM64.
- todas as operações Compose do DevFlow agora usam o construtor único
build_devflow_compose_command, sempre com--project-directory,--env-filee arquivos Compose validados; - o dry-run de instalação parcial usa
/opt/devflow/config/devflow.envpara a interpolação runtime, sem carregar o arquivo como código shell, copiá-lo ou exibir valores; - uma instalação nova sem env realiza somente validação estrutural com placeholders temporários não secretos;
- falhas de renderização são classificadas antes do resolvedor de imagens, eliminando a mensagem secundária incorreta sobre imagem ausente;
- stderr do Compose não é reproduzido: somente categoria, nome permitido da variável e caminho esperado são registrados;
- configuração parcial inválida retoma da etapa
04-configuration; se não houver banco, volume ou migration, a recuperação exige confirmação literal e preserva cópia protegida; - qualquer evidência de dados persistentes bloqueia regeneração de senha e exige recuperação manual.
- 24 cenários cobrem env válido, ausente, protegido, valores especiais, não execução de dotenv, renderização, JSON, sanitização, retomada, ARM64, Compose 5.3.1 e fail-closed;
- uma auditoria dedicada impede novas construções Compose divergentes fora da biblioteca central;
- Docker/Compose reais, recuperação da configuração e retomada ainda precisam ser repetidos na VPS ARM64.
- eliminado o encerramento silencioso causado pelas linhas 233–234 de
scripts/install.shno commit1152236: uma verificação booleana de etapa retornava1como status final dedetect_partial_installation, chamada diretamente sobset -e; - um trap sanitizado e um logger protegido em
/tmp/devflow-install-bootstrap.*.logagora existem antes de qualquer import potencialmente falível; - argumentos ausentes ou desconhecidos produzem erro funcional e dica de
--help, semshiftalém dos argumentos; --resumeexige a confirmação exataRETOMAR DEVFLOWe nunca prossegue silenciosamente;- leituras Git do clone fornecido usam
GIT_OPTIONAL_LOCKS=0e uma assinatura de integridade comprova que.git/indexnão mudou.
- a ausência de
install-transaction.jsoné tratada como evidência esperada de uma tentativa anterior à transação; - source, configuração, imagens, containers e estado são classificados separadamente;
- o dry-run apenas planeja a reconstrução; a gravação atômica acontece somente depois da confirmação do
--resume; - o estado reconstruído registra origem legada e etapa real de retomada, sem segredos;
- imagens antigas permanecem preservadas e são reconstruídas com cache quando não comprovam versão e commit.
- 26 cenários cobrem imports,
set -e, logger inicial, parsing, estado legado, clone read-only, sigilo, ARM64, Compose 5.3.1 e fail-closed; - a execução real de dry-run e retomada permanece pendente na VPS ARM64; nenhuma instalação, publicação externa ou migração foi executada nesta correção local.
- a identificação de imagens deixou de usar
docker compose images -q backend, que retorna vazio antes da criação do container mesmo após uma build bem-sucedida; - backend, frontend e PostgreSQL agora são resolvidos pelo JSON do Compose, normalizados sem confundir registries e confirmados por
docker image inspect; - backend e frontend possuem nomes explícitos e rótulos OCI de versão e commit para permitir reutilização comprovada;
health.shdiferencia presença das imagens, saúde dos containers, migration e saúde interna.
install.sh --resumereconhece uma instalação parcial somente quando checkout, configuração e avanço de commit são seguros;- 14 etapas formais são persistidas atomicamente em
/opt/devflow/state/install-transaction.json, sem segredos; - falhas preservam checkout, configuração e imagens válidas, removendo apenas recursos incompletos do DevFlow;
- imagens antigas sem rótulos de proveniência são reconhecidas como presentes, mas reconstruídas uma vez para comprovar versão e commit.
- 24 cenários cobrem resolução, normalização, imagens ausentes, Compose fora do diretório, retomada, estado transacional, rollback preservando imagens, ARM64 e Compose 5.3.1;
- a falha real ocorreu em Ubuntu 24.04.4 ARM64 após construir
devflow-backend:latestedevflow-frontend:latest; nenhum container DevFlow foi iniciado e o Full Password permaneceu inalterado; - a retomada real, migrations, containers e health ainda dependem de execução na VPS; nenhuma publicação externa foi realizada nesta correção local.
- instalação interna explícita por
--install-internalou--install-scope internal, sem dependência de domínio, Nginx ou HTTPS; - publicação posterior transacional em
scripts/publish.sh, sem reinstalar a aplicação ou executar migrations; - estado operacional por escopo em
/opt/devflow/state/installation.jsone health interno independente de HTTPS; - acesso de homologação por túnel SSH documentado.
- propriedade de 80/443 agora cruza
ss,docker ps,docker inspectedocker port, reconhecendofullpassword_nginxsomente com evidência coerente; - ocupação das portas públicas bloqueia somente publicação, ACME e migração, sem impedir containers e serviços locais;
- frontend e backend permanecem vinculados a
127.0.0.1; PostgreSQL continua sem porta publicada no host; - o frontend interno encaminha
/api/diretamente ao backend pela rede Docker.
- o escopo interno não altera Full Password,
/etc/nginx, certificados, portas 80/443 ou configurações de proxy; - falhas internas removem somente recursos incompletos do DevFlow e preservam dados e infraestrutura de terceiros.
0.4.2-alphateve--checkexecutado na VPS ARM64; o dry-run completo foi bloqueado antes de alterações pela classificação anterior;0.4.3-alphaainda depende de novo check, dry-run interno e instalação interna na VPS;- nenhuma instalação, publicação ou migração foi executada nesta alteração local.
- o bootstrap público deixou de fixar uma versão alpha e passa a detectar o SemVer do checkout validado de
main; --ref vSEMVERe--expected-version SEMVERoferecem pin explícito, com divergência detalhada e semeval;- origem, referência, commit remoto, limpeza, arquivos rastreados, ausência de symlinks e consistência entre componentes permanecem fail-closed;
- a política SemVer, leitura estrita de
VERSION, comparação e consistência foram centralizadas emscripts/lib/version.she reutilizadas por bootstrap, install, update, version e health; - o updater aceita pin opcional e valida a árvore Git remota antes de backup ou qualquer mutação.
- 19 cenários cobrem evolução dinâmica de
main, tags, pins, SemVer, divergências, identidade Git, commit e ausência de mutação em falha; - auditoria de constantes classifica ocorrências históricas e bloqueia versões antigas em configuração operacional.
- a tentativa real anterior foi interrompida antes da instalação pelo bootstrap desatualizado;
- nenhuma instalação real foi executada nesta correção;
- esta versão alpha permanece não aprovada para produção.
--checke--dry-runda migração agora apresentam mappings reais, ocupação da porta127.0.0.1:18081, estado do Nginx do host, saúde funcional do Full Password e blockers allowlisted;- o override temporário é validado com o Docker Compose real sem expor o JSON interpolado, comparando serviços, mounts, redes, ambiente, restart e a única troca de portas permitida;
- o Compose original é validado separadamente como fonte de rollback para as portas públicas 80/443;
- o vhost planejado preserva frontend, API, restore de backup, limites de upload, timeouts e headers de encaminhamento;
- a futura transação valida frontend, API e fronteira de autenticação pelo loopback antes de iniciar o Nginx do host;
- rollback para primeiro o Nginx do host, comprova liberação das portas, restaura somente
fullpassword_nginxe valida o serviço publicamente.
- relatório sanitizado do dry-run em
/var/log/devflow/proxy-migration-dry-run.log, sem conteúdo do ambiente ou credenciais; - 21 cenários automatizados cobrem gates, falhas antes/depois da troca, listeners, Compose, rollback, sigilo e cálculo de readiness;
migration_ready=truesomente é emitido quando todos os gates aplicáveis e o rollback estão comprovados.
- nenhuma migração, troca de porta, parada de container, inicialização/reload de Nginx ou emissão de certificado foi executada nesta etapa;
- o teste runtime de
127.0.0.1:18081permanece corretamente comonot-executeddurante o dry-run; - esta versão alpha não está aprovada para produção.
- contrato versionado de providers e estado persistente em
/opt/devflow/state/infrastructure-provider.json; - provider padrão
host-nginx, provider isolado e adaptador Docker legado explícito; - virtual host atômico em
sites-available/sites-enabled, fallbackconf.d, TLS, health e renovação Certbot; - utilitário separado de migração do proxy com check, dry-run, dupla confirmação, override neutro e rollback;
- validações automatizadas para provider, loopback, isolamento do banco, migração e preservação de terceiros.
- frontend e API do provider padrão são publicados somente em
127.0.0.1; PostgreSQL continua sem porta no host; - install, update, health e uninstall resolvem o provider pelo estado persistente;
legacy-docker-nginxfoi classificado como descontinuado e nunca é selecionado automaticamente.
- resolução transitiva de
brace-expansionfixada em1.1.17; a auditoria local não reporta vulnerabilidades conhecidas;
- nenhuma instalação ou migração real foi executada nesta etapa;
--check,--dry-run, emissão/renovação TLS, troca de portas e rollback induzido permanecem pendentes na VPS;- esta versão alpha não está aprovada para produção.
FULLPASSWORD_COMPOSE_FILEe demais estados de descoberta passam a ser inicializados antes de qualquer função sobset -u;- o Compose original é descoberto pela label
com.docker.compose.project.config_files, normalizado pelo working directory e validado, com fallback controlado para/opt/fullpassword/docker-compose.yml; - caminhos ausentes, relativos sem base, inexistentes ou não legíveis produzem bloqueio funcional e relatório sanitizado, nunca erro interno do Bash;
- descoberta de Compose, validação do caminho, inventário de inputs protegidos e merge possuem contratos separados e parâmetros explícitos;
- trap
ERRregistra apenas script, linha, função, código e operação lógica, sem ambiente ou segredos.
- 20 cenários de descoberta do Compose, incluindo variável ausente, labels, fallback, múltiplos arquivos, espaços, root simulado e regressão
unbound variable; - auditoria de inicialização e modo estrito em sete entrypoints e na biblioteca operacional herdada;
- homologação do novo dry-run comum e privilegiado permanece pendente na VPS.
- diagnóstico comum distingue inputs protegidos do Compose de incompatibilidade entre diretórios;
--checkretornapassed-with-privileged-dry-run-requiredsem falhar quando a validação completa exige root;--dry-runcomum encerra sem alterações, informa o arquivo protegido e apresenta o comando privilegiado completo;sudo --dry-runusa--project-directory /opt/fullpassword, consome o.envsomente pelo Docker Compose e mantém toda saída interpolada em temporário0700;- merge estrutural preserva serviços, imagens, restart, ambiente, portas, mounts, volumes e redes originais;
- saída e erros do Compose são reduzidos a resultados derivados, sem valores sensíveis;
- temporários são removidos em sucesso, erro e sinais, e a auditoria bloqueia leitura direta, cópia ou mutação de
/opt/fullpassword/.env.
- 20 cenários automatizados para inputs Compose protegidos, privilégios, sanitização, separação de modos e limpeza;
- homologação real de
sudo --dry-runpermanece pendente na VPS; o modo compartilhado não está aprovado para produção.
- todos os artefatos do adaptador compartilhado foram centralizados em
/opt/devflow; - o override Compose passou para
/opt/devflow/config/proxy/fullpassword-nginx.override.yml, com mounts de origem absoluta; /opt/fullpasswordpassou a ser tratado estritamente como origem somente leitura do Compose e da configuração runtime;- diagnóstico ampliado com legibilidade da origem, gravabilidade do DevFlow, comando e resultado sanitizado do merge entre diretórios;
--dry-runavalia a capacidade do filesystem para a futura instalação root sem tentar escrever em/opt;- estado operacional em JSON separado de dados persistentes: instalação, versão e adaptador em
/opt/devflow/state; - retomada de instalação inicial incompleta por fast-forward verificado do checkout preservado em
/opt/devflow/source; - testes transacionais e auditoria estática agora falham diante de comandos de escrita destinados ao Full Password.
- validações locais cobrem contrato, merge modelado, rollback e preservação da fixture read-only;
--check,--dry-rune instalação compartilhada real permanecem pendentes na VPS Linux; esta versão não está aprovada para produção.
- adaptador persistente e independente para o contrato comprovado do
fullpassword_nginx; - Compose override gerenciado de forma independente (caminho substituído em
0.3.1-alpha), sem modificar o Compose original; - virtual host exclusivo em
/opt/devflow/config/nginx/devflow.confe templates separados para ACME, operação e manutenção; - rede externa persistente
devflow_edge, com aliases exclusivos para frontend e backend e PostgreSQL restrito à rede interna; - validação fail-closed do merge do Compose, preservando portas, mounts, redes e definições originais;
- prova HTTP da rota ACME antes da emissão do certificado de
dev.sti1.com.br; - validação de Nginx em container descartável conectado às redes originais e DevFlow;
- testes transacionais de instalação, repetição, reinstalação, atualização, falhas, rollback e desinstalação.
- o diagnóstico read-only pode retornar
compatible-with-compose-overridesomente para o inventário exato aprovado; - instalação, health check, atualização e desinstalação reconhecem explicitamente
DEVFLOW_SHARED_PROXY_ADAPTER=fullpassword-nginx; - o atualizador preserva ou cria transacionalmente a rede externa ao migrar instalações anteriores;
- a desinstalação remove apenas o override, o virtual host e a conexão de borda gerenciados; o certificado DevFlow exige opção e confirmação próprias.
/opt/fullpassword/docker-compose.yml,docker/nginx.runtime.conf, volumes, certificados e repositório do Full Password permanecem fora de escrita;- somente o serviço
nginxé recriado com os dois arquivos Compose; dependências e containers de terceiros não são recriados; - qualquer falha de ACME, certificado, merge,
nginx -t, recriação ou health de qualquer domínio restaura o snapshot anterior; - o suporte permanece alpha e não homologado até os ensaios reais de Docker, Nginx, certificado, rede e rollback na VPS.
- diagnóstico sanitizado e somente leitura de proxy compartilhado, com inventário de containers, mounts, redes, configuração efetiva, certificados e mecanismo de reload;
- rede de borda
devflow_edgeseparada da rede interna do PostgreSQL; - testes automatizados da política compartilhada e das transações de configuração Nginx;
- bootstrap público standalone com download seguro, checkout temporário, validação de origem, commit e
VERSION; - auditoria automatizada de todos os commits, objetos e blobs alcançáveis do histórico Git;
- atualização segura por release imutável, com consulta da versão disponível na
maindo GitHub; - exibição de versão instalada, versão disponível e changelog antes da confirmação;
- backup autenticado e validado como gate obrigatório da atualização;
- modo de manutenção para proxy isolado e Nginx compartilhado;
- migrations sob lock, reconstrução controlada dos containers e health checks em camadas;
- rollback automático com restauração do backup, retorno da release e dos containers anteriores;
- logs e relatório sanitizados de atualização;
scripts/version.shpara identificação de versão e commit;scripts/health.shpara diagnóstico operacional com código de saída confiável.
- modos isolado e compartilhado passam a explicar explicitamente que containers, volumes, banco e storage do DevFlow permanecem próprios;
- promoção e remoção do arquivo exclusivo
devflow.confpassam a ser atômicas, com backup e rollback também em falha de reload; - instalação e atualização passam a utilizar HTTPS público sem credenciais na VPS;
- relatório inicial registra versão, commit, branch, data, URL do repositório e canal de atualização;
install.shpassa a tratar exclusivamente instalação inicial;- a configuração instalada registra o checkout operacional usado para buscar atualizações;
- o restore oferece um modo interno controlado para rollback, sem iniciar serviços prematuramente.
fullpassword_nginx, Nginx containerizado e Caddy permanecem bloqueados após diagnóstico enquanto a integração persistente não for comprovada;- o ensaio real do commit
4d350685cbc9d21b49fb4c01176b846ca66d6584foi interrompido antes de qualquer alteração no Full Password; - abertura pública condicionada à auditoria do checkout e do histórico, sem licença escolhida automaticamente;
- atualização restrita ao repositório
trinityrrocha/DevFlow, branchmain, fast-forward e checkout limpo; - lock exclusivo impede atualizações concorrentes;
- falhas anteriores à primeira mutação preservam o estado intacto; falhas posteriores acionam manutenção e recuperação automática.
- baseline arquitetural, funcional e multi-tenant dos Documentos 001, 002 e 003;
- backend, frontend, migration inicial e infraestrutura Docker Compose;
- instalador de VPS, diagnóstico, backup, restauração e desinstalação segura;
- publicação inicial privada para homologação.