Composição
7d. Relações de composição e arraste — CP29 e CP30 (F4 e F12/2026-08-15)
seed-composicao.md v2.1 · §07dseção 12 de 1707d-relacoes-de-composicao-e-arraste-cp29-e-cp30-f4.md · MD5 75daf38dCP29 — RELAÇÃO DE COMPOSIÇÃO: o que acontece ENTRE dois blocos também é contrato. O CP2 nomeia os tipos; o CP29 nomeia as relações permitidas, porque três casos reais não são bloco nenhum — são vínculos:
Relação O que é Regra split com resizer dois blocos irmãos que dividem o espaço, com divisor arrastável de 1px (área de toque ≥24px, invisível) posição persiste por gabarito; teclado move com setas (CP30); abaixo do limite de quebra vira lateralempilhadapeça em peça proibida no caso base (CP2); permitida só no feed invertido (CP2-b) e no cartão-coleção do hub a peça interna não repete a separação da externa (CD5: contorno dentro de contorno) trilha em canvas a trilha só existe dentro de um canvas, nunca solta nem dentro de peça o croma vem das peças, nunca do fundo da trilha (CP19)
CP31 — BANCADA E TELA SÃO ARTEFATOS DE CLASSES DIFERENTES, E O NOME DECLARA QUAL É QUAL. (F11/2026-08-15 — decisão do Rafael; executa a renomeação e fecha a dívida P1 de caminhos.)
Classe Prefixo O que é O que mede Quem julga Bancada banco-*.htmlcatálogo: o MESMO componente repetido em todos os estados, fora de contexto de uso comportamento, ARIA, estados, contraste de par as suítes (jsdom + render) Tela tela-*.htmlcaso de uso montado: dados plausíveis, cada componente uma vez, no papel dele composição — calha, raio, separação, densidade por contêiner o gate visual humano + suite-composicaoFato que motiva. Os dois viviam sob o mesmo nome (
*-preview.html), e a confusão custou caro: em 2026-08-15 o julgamento "estamos arcaicos?" foi feito sobre uma bancada, e só foi respondido quando nasceu a primeira tela composta. Nome que não distingue classe de artefato produz avaliação da coisa errada. Régua de uso: pergunta sobre COMPORTAMENTO de um componente → bancada; pergunta sobre se a TELA está boa → tela.TABELA DE EQUIVALÊNCIA — executada em 2026-08-15 (F7.1 movimento 2). Ela existe porque a renomeação não reescreve registro datado: o MANIFESTO ancorou
seed-shell-preview.htmlporque o arquivo se chamava assim naquela data, e osmarcos/são imutáveis por método. Trocar o nome lá faria a âncora descrever um passado que não existiu. Referência operacional foi reescrita (39 arquivos, 79 ocorrências em.mjs/.py/.html); registro histórico ficou intacto, e esta tabela é a ponte entre os dois.
Nome antigo Nome novo Classe seed-painel-preview.htmltela-painel.htmltela seed-shell-preview.htmltela-shell.htmltela seed-site-preview.htmltela-site.htmltela seed-tela-referencia.htmltela-referencia.htmltela seed-cn-preview.htmlbanco-cn.htmlbancada seed-componentes-preview.htmlbanco-componentes.htmlbancada seed-composicao-preview.htmlbanco-composicao.htmlbancada seed-dados-preview.htmlbanco-dados.htmlbancada seed-dataviz-graficos-preview.htmlbanco-dataviz-dg.htmlbancada seed-dataviz-monitoramento-preview.htmlbanco-dataviz-dm.htmlbancada seed-dataviz-dp-preview.htmlbanco-dataviz-dp.htmlbancada seed-dataviz-di-preview.htmlbanco-dataviz-di.htmlbancada seed-dataviz-tokens-preview.htmlbanco-dataviz-tokens.htmlbancada seed-feedback-preview.htmlbanco-feedback.htmlbancada seed-formfield-preview.htmlbanco-formfield.htmlbancada seed-icones-preview.htmlbanco-icones.htmlbancada seed-navegacao-preview.htmlbanco-navegacao.htmlbancada seed-superficies-preview.htmlbanco-superficies.htmlbancada seed-tokens-preview.htmlbanco-tokens.htmlbancada Fora do mapa, com o porquê:
seed-dataviz-di-prova-impressa.html(prova física, nem bancada nem tela) ·seed-design-system.html(legado do site DS v1) ·reconstrucao-dm.html(artefato de investigação) · e-mails (et-/en-/ea-/seed-email-*, outra classe) · moldes*-template.html(insumo de gerador, não artefato final).Contrato de caminho, único para as duas classes (fecha a P1, aberta desde o marco v1.4 e cobrada duas vezes na sessão de 2026-08-15): toda suíte aceita
process.argv[2]ou resolve../<nome>relativo ao próprio arquivo — nunca pelo diretório de trabalho, nunca com caminho de máquina embutido.
CP30 — TODA OPERAÇÃO DE ARRASTE TEM TRÊS CAMINHOS. Norma, não preferência. SC 2.5.7 Dragging Movements (AA, WCAG 2.2): toda funcionalidade operada por arraste tem de ser alcançável por ponteiro único sem arrastar. A regra já existia no §48 (PN33, "onde o item cai é o valor do campo") e valia só para o painel; a partir daqui vale para o sistema:
- Arraste — o caminho rico, opcional para quem prefere.
- Ponteiro único — "mover para…" em menu, ou tocar-e-colocar. Não é o mesmo que teclado: a norma exige os dois, porque há quem não use teclado nem consiga arrastar.
- Teclado — pegar/mover/soltar com Espaço-setas-Esc, e anúncio do resultado em live region (posição nova falada, não só desenhada).
Alvo de soltura: borda tracejada, nunca cor saturada (C20) — o alvo tem de sobreviver ao grayscale. Onde o arraste for essencial e não houver alternativa possível, a exceção é nomeada no gabarito, com o porquê; a norma admite, o silêncio não.