Componentes
Histórico da §60 — seed-componentes.md
Título completo no canon: Histórico da seção §60 — Escolha segmentada e múltipla (não é regra)
Base (3 rodadas, 2026-08-16). E o achado da R1 é uma DIVERGÊNCIA DE CANON. Cinco fontes de peso dão quatro semânticas diferentes para o mesmo componente: (a) o Primer diz explicitamente para não tratar como
radiogroup— radiogroup requer um botão de salvar —, usa botões com Tab entre eles e setas que não movem foco; (b) o useUI mandarole="radiogroup"+role="radio"+aria-checked, com um único tab stop e setas movendo dentro — "o grupo é um radiogroup, não um tablist: não há painéis aqui, e prometer painéis enganaria a tecnologia assistiva"; (c) o Workday usa toggle button com estado pressionado; (d) o eBay usa botões comuns no tab order comaria-current, avisando que segmented buttons não são substitutos de abas e não operam como abas. O React Aria confirma a fronteira útil: se a escolha troca a vista do mesmo conteúdo, use grupo de alternância ou radiogroup; se troca o conteúdo, use abas.
Placar: 137 PASS · 0 FAIL · 0 [n/a]. É o único artefato do acervo em que nenhum contrato sai
[n/a] — o que é o próprio critério de uma bancada estar completa.
| Arquivo | PASS | FAIL | [n/a] |
O que os [n/a] querem dizer |
|---|---|---|---|---|
tela-painel.html |
16 | 9 | 5 | não tem chip removível — contrato declarado inaplicável, não pulado |
tela-lista.html |
20 | 7 | 3 | não tem fileira de chips |
tela-tabela.html |
8 | 6 | 4 | não tem controle segmentado |
tela-detalhe.html |
8 | 0 | 9 | só tem interruptor; único arquivo limpo |
| Agregado | 52 | 22 | 21 | + 15 medidas |
| Arquivo | O que mudou |
|---|---|
validacao/painel-template.html |
Os QUATRO grupos viram radiogroup; um helper de roving (marcar + rovingTeclado) substitui três mecanismos; @media (forced-colors: active); anel de foco do [role=radio]; lenteAtual() passa a ler aria-checked |
validacao/gen-painel.py |
Selo do preview v0.10 → v0.11 |
validacao/suite-painel.mjs |
PN6-01 superseded por 6 guardas · PN6-02/AC-01 com o seletor novo · PN6-03 (forced-colors) |
validacao/tela-tabela-template.html |
.chip .x{position:relative} + ::before centrado · "+N" com TETO_CHIPS declarado · anúncio com contagem · "Limpar" com piso de 2 |
validacao/tela-lista-template.html |
X da condição a 44px com dono posicionado · segmento do operador a 44px · @media (forced-colors) · anúncio com contagem |
validacao/gen-tela-lista.py |
Nome do radiogroup ganha "— aplica na hora" (SG4) · selo 0.1 → 0.2 |
validacao/gen-tela-tabela.py |
Selo 0.1 → 0.2 |
validacao/suite-escolha.mjs |
Guarda SG2/SG1 prova exclusividade por clique · SG5 e SG6 revistos · SG6-b · passadas extra por chave |
Cinco camadas, depois do conserto: suite-escolha 88 · 0 · 21 [n/a] (4 arquétipos) ·
suite-painel 146 · 0 · contraste-painel 78 · 0 · suite-container 66 · 0 (2 telas).
Falta o gate visual do Rafael — a única camada que mede se o controle é OPERÁVEL, e não só
conforme.
Gate pendente: os previews mudaram depois do gate da SG-P8 —
tela-painelv0.14,tela-listav0.3,banco-escolhav0.2. As mudanças foram autorizadas (SG-P9 e SG-P10), mas autorização não é verificação: o olho ainda não viu o resultado montado. Fica como conferência de abertura da próxima sessão, não como pendência do §60.Atualização 2026-08-16: a
banco-escolhaestá hoje na v0.4 — barra de controles fixa (BT1), seletor de largura (BT2) e conserto da contagem no tema escuro, que media 1,00 e passou a medir 4,60 / 7,39. O re-gate destas versões é a BT-P1, no §64.6, para não haver duas listas disputando a mesma pendência.
| # | Pendência | Estado | Nota |
|---|---|---|---|
| SG-P1 | Auditar os consumidores existentes | ✅ FECHADA | 6 controles em 4 arquivos |
| SG-P2 | Bancada banco-escolha.html |
✅ FECHADA | 137 · 0 · 0 — SG7 e SG14 provados |
| SG-P3 | Excedente em tela estreita | ✅ RESPONDIDA por medição | Não há excedente: quebra em linhas mantendo 62×44px |
| SG-P4 | Converter as lentes do §48 | ✅ FECHADA | 8 tab stops → 1 |
| SG-P5 | Converter escala, gesto e modo do mapa | ✅ FECHADA | um helper de roving para os quatro |
| SG-P6 | Revisar SG5 e SG6 | ✅ FECHADA | SG5 cede com número; SG6 não cede — vira SG6-b |
| SG-P7 | Alvos, anúncios, teto e piso dos removíveis | ✅ FECHADA | 24→44px · 32→44px · "+N" · contagem · piso de 2 |
| SG-P8 | Gate visual dos três previews | ✅ FECHADA | "verificado, tudo ok" |
Gate pendente: os previews mudaram depois do gate da SG-P8 —
tela-painelv0.14,tela-listav0.3,banco-escolhav0.2. As mudanças foram autorizadas (SG-P9 e SG-P10), mas autorização não é verificação: o olho ainda não viu o resultado montado. Fica como conferência de abertura da próxima sessão, não como pendência do §60.Atualização 2026-08-16: a
banco-escolhaestá hoje na v0.4 — barra de controles fixa (BT1), seletor de largura (BT2) e conserto da contagem no tema escuro, que media 1,00 e passou a medir 4,60 / 7,39. O re-gate destas versões é a BT-P1, no §64.6, para não haver duas listas disputando a mesma pendência.
| # | Pendência | Estado | Nota |
|---|---|---|---|
| SG-P1 | Auditar os consumidores existentes | ✅ FECHADA | 6 controles em 4 arquivos |
| SG-P2 | Bancada banco-escolha.html |
✅ FECHADA | 137 · 0 · 0 — SG7 e SG14 provados |
| SG-P3 | Excedente em tela estreita | ✅ RESPONDIDA por medição | Não há excedente: quebra em linhas mantendo 62×44px |
| SG-P4 | Converter as lentes do §48 | ✅ FECHADA | 8 tab stops → 1 |
| SG-P5 | Converter escala, gesto e modo do mapa | ✅ FECHADA | um helper de roving para os quatro |
| SG-P6 | Revisar SG5 e SG6 | ✅ FECHADA | SG5 cede com número; SG6 não cede — vira SG6-b |
| SG-P7 | Alvos, anúncios, teto e piso dos removíveis | ✅ FECHADA | 24→44px · 32→44px · "+N" · contagem · piso de 2 |
| SG-P8 | Gate visual dos três previews | ✅ FECHADA | "verificado, tudo ok" |
| SG-P9 | RAIO do segmentado | ✅ FECHADA | "escolho reto" — 6px. A pílula fica na bancada marcada como superseded, porque decisão sem a evidência ao lado vira folclore em três meses |
| SG-P10 | ANATOMIA do grupo: fronteira por segmento ou fronteira por grupo | ABERTA — única do §60 | Descoberta ao aplicar a SG-P9: raio e altura iguais, estrutura diferente. O painel desenha oito botões com borda própria; a bancada desenha um contêiner com segmentos sem borda. Decisão de gate — altera pixel aprovado, e nenhuma guarda existente mede "isto lê como um controle ou como oito?" |