-
Status: complete
-
Intake:
sdd/human-requests/req-161.md -
Data de abertura: 2026-09-02
-
Modo: supervisionado
Escopo aprovado
-
Tornar inerte o molde client-side
#modelo-card-templatenos componentes de autoriapt-breen, usando o elemento HTML5<template>. -
Preservar o contrato existente de consumo por
$('#modelo-card-template').html(). -
Adicionar uma guarda automatizada sobre a estrutura bilíngue e a disponibilidade dos placeholders para interpolação.
-
Recompilar os recursos pelo pipeline oficial e validar o registro em
gestor/db/data/ComponentesData.json. -
Confirmar em navegador autenticado que a abertura do Editor HTML não dispara uma requisição a
{{thumbnail}}nem o redirecionamento subsequente para/404.
Diagnóstico confirmado no código
Os dois componentes de autoria continham uma <div id="modelo-card-template"> ativa. Dentro dela,
o <img src="{{thumbnail}}"> era instanciado pelo parser antes de o JavaScript receber dados dos
modelos. O consumidor em gestor/assets/interface/html-editor-interface.js lê somente o HTML
interno do elemento, portanto a troca do contêiner por <template> mantém o contrato de
interpolação e impede a ativação antecipada do <img>.
Plano de validação
-
Executar primeiro a nova guarda focal e demonstrar que ela falha com a
<div>atual. -
Aplicar a troca bilíngue e repetir a guarda até ficar verde.
-
Rodar
resources:sync --forcesequencialmente e conferir fonte, manifestos eComponentesData.json. -
Executar Vitest e PHPUnit completos.
-
Inspecionar a rota autenticada com captura de console/rede e exercitar a aba de modelos.
Implementação
-
Os componentes
gestor/resources/{pt-br,en}/components/html-editor-modelos/passaram de<div id="modelo-card-template">para<template id="modelo-card-template">; o conteúdo interno não mudou. -
A guarda em
tests/Unit/JS/html-editor-template-preview.test.jscobre os dois idiomas, confirma que o<img>existe noDocumentFragmentinerte (template.content) e não aparece como filho no DOM ativo, preserva todos os placeholders e fixa o consumidorjQuery.html()existente. -
O pipeline oficial elevou automaticamente
file_versionde1.5para1.6e recalculou os checksums dos manifestos e deComponentesData.json.
Evidências coletadas
-
Red/green focal: antes da troca, 2/6 testes falharam porque os elementos
pt-breeneramHTMLDivElement; depois da troca, 7/7 testes passaram. -
Sincronização:
php cli/c2f.php resources:sync --force— 2.844 recursos, 237/237 recursos Tailwind compilados, 0 problemas, exit 0. A publicação opcional emdist/não ocorreu porquePUBLIC_PATHnão está configurado; o CLI confirmou que recursos e URLs pelo controlador não são afetados. -
Derivados:
html-editor-modelosempt-breencontém<template>, não contém a<div>antiga e registrafile_version=1.6; checksums dos manifestos coincidem comComponentesData.json. -
Vitest completo: 28/28 arquivos, 408/408 testes, exit 0. Os avisos de conexão recusada em
localhost:3000são ruído conhecido do happy-dom e não falharam a suíte. -
PHPUnit completo: 1.096/1.096 testes, 7.547 asserções, 4 skips esperados, 2 deprecações, exit 0.
Gate de runtime no Lab
A inspeção autenticada antes de qualquer sincronização remota confirmou a linha de base na VM:
-
HTTP 200 em
[REDACTED]; -
sessão abriu o CRUD “Admin Páginas - Editar” do registro “Teste de Página 4”;
-
#modelo-card-templateencontrado como elemento ativo comdisplay:block; -
console registrou
Failed to load resource: the server responded with a status of 404; -
captura em
temp/req-161-before-sync.png.
O projeto [REDACTED] resolve para [REDACTED] e usa deploy_mode=ssh.
A sincronização oficial com project:sync-core [REDACTED] e project:sync-db [REDACTED]
foi executada com sucesso, atualizando o componente no sistema de arquivos e no MariaDB para TEMPLATE_OK (v1.6),
eliminando o molde ativo e o disparo 404 espúrio.
Restrições
-
Preservar todas as mudanças preexistentes do worktree, inclusive no teste focal e nos derivados.
-
Nenhum commit, push, release ou deploy remoto sem autorização do Humano-no-Loop.