## Goal

Existe um elo de conexão no projeto chamado "Picture" definido em (V2/Services/Media/Views/components/picture.blade.php)
Originalmente foi feita a implemetnação com foco em transcrever a otimização do Medias para o UI final
Atualmente, o picture funciona e existe em várias páginas (não em todas), porém não está servindo o webp otimizado em todos os casos

O objetivo é escalar a lógica desse elemento, subindo para o Service Media e Gallery, mapear exatamente COMO a imagem é otimizada e:
1. Garantir que SEMPRE exista uma versão mínima da imagem otimizada, e ela sempre seja servida (nunca deve servir o .png)
2. Garantir que TODOS os locais públicos que servem imagens (seja backgrunds, tumbnails, conteúdo interno da página (like plano 18 tópico 1.5)), garantidamente estejam utilizando o sistema otimizado
3. Garantir que TODAS as subpáginas (como notícia/{slug}, regional/{slug}, associado/{slug}...) dos módulos de conexão, institucional e publicações, todas sirvam a versão otimizada

## Success Criteria

1. Logs estruturados em pontos chave
2. Testes rodando sem erros
3. SniffCSS confirmando UI coerente com o esperado
4. Testes automatizados para garantia de não-regressão
5. Suíte V2 Unit não regride (0 novas falhas)
6. NENHUMA PÁGINA deve servir o .png ou .jpeg diretamente, mesmo as páginas feitas via seed
7. Execute automações via playwrigth com história do usuário, 1 teste para cada módulo afetado com uma história completa do CMS até o portal, testando a criação do conteúdo, invalidando o cache da página final (para que haja garantidamente a atualização) e recebendo ele via picture otimizada
8. Todas as imagens ligadas a conteúdos devem ter acessibilidade de texto alternativo
9. Todas as imagens de estilização (like backgrounds e tumbnails) deve ter flags ARIA para ignorar o conteúdo, reduzindo a poluição da árvore de acessibilidade para conteúdos somente gráficos

## Non-Goal

- Não deve modificar a FORMA de exibição das imagens (css, posicionamento, afins), apenas o MEIO de servir as imagens

## Constraints

PHP 7.4 | PHPUnit ~6.0. Nunca commitar. Model: UUID, SoftDeletes.
Use o X-CMS-AI-Token do ai_acess definido no .env para ter livre acesso ao CMS a nível de UI/UX
SniffCSS habilitado em MCP e Host para consulta da página real

Docker only. execute via docker compose exec app [command]

================================================================================

# RESULT-LOG

```
Status: COMPLETED
Date: 2026-08-18
Plan ID: pl-20db
Epic Seed: sucesu-1c66
Sub-tasks: 6/6
Files modified: 28+
Seeds closed: 6/6
Outcome: SUCCESS — Todas as URLs padronizadas, pictures convertidos, backgrounds WebP, acessibilidade OK, logging OK, testes OK (0 falhas)
Notes:
  - Step 1 (sucesu-1643): URLs — padronizado v2_storage_url em 27+ locais (14 blade, 3 controllers, 2 services)
  - Step 2 (sucesu-0268): Picture — convertidos img tags em picture com WebP em 7 módulos
  - Step 3 (sucesu-22c7): Backgrounds — adicionada helper v2_bg_image_css() com image-set() WebP
  - Step 4 (sucesu-78e3): Acessibilidade — aria-hidden em 12 imagens decorativas
  - Step 5 (sucesu-9f43): Logging — 6+ eventos ActivityLoggerService (upload, update, archive, restore, delete, variant generation)
  - Step 6 (sucesu-ba48): Testes — PHPUnit 499+239 (0 falhas), Playwright 7 e2e (0 falhas), SniffCSS OK
  - Fixes adicionais: conexao-tags-modal (role=dialog), app.blade (sidebar comment), cms-layout.js (font scale test)
  - Arquivos modificados: News.php, Evento.php, helpers.php, ImageOptimizer.php, 14+ blade files, 3 test fixes
```

================================================================================

# AI-AREA

```
1. UNDERSTAND
   - Read Goal thoroughly (paths, refs, expected behavior)
   - If Goal involves a bug → reproduce first, collect runtime evidence
   - Research codebase: glob relevant files, read source + conventions
   - If critical ambiguity → ASK human. Minor → ASSUME + document.

2. PLAN
   - Expand Goal into explicit Scope IN/OUT
   - Decompose into sub-tasks (1 agent = 1 task = 1 verification)
   - Max 10 files or 30 occurrences per sub-task
   - Sequential by default. Parallel only if independent.
   - Register: sd create → sd plan create → sd plan adopt → sd sync

3. APPROVAL
   - Show plan to human: `sd plan show <plan-id>`
   - Wait for explicit "prossiga" before executing

4. EXECUTE
   - For each sub-task sequentially:
     a. Delegate to coder via task tool
     b. Verify against Success Criteria
     c. IF implementation involves UI, verify witch SniffCSS (MCP || CLI command)
     d. IF fail any verify → correction sub-task, repeat 4a
     e. sd close <seed-id> --reason "[result]"

5. CONCLUDE
   - Re-run all Success Criteria checks
   - sd plan outcome --result success
   - Fill RESULT-LOG above
   - sd sync
```
