Síntese — o algoritmo do UI Quality Score (UQS)

draft

Deriva o índice 0–100 da Koder Stack (UQS) da ciência dos capítulos 01–06: SUM (padroniza→média), SUPR-Q (sub-fatores percentil), ISO 9241-11 (3 pilares) + ISO/IEC 25010 (taxonomia), com tiers AUTO (fórmulas Ngo/WCAG/KLM/Fitts) e JUDGE (heurísticas) e bandas Sauro–Lewis. É a fonte conceitual do stack-RFC-030.

Este capítulo deriva o índice de qualidade de UI da Koder Stack a partir da ciência dos capítulos 01–06. Ele é a ponte entre o conhecimento (compêndio) e a norma (stack-RFC-030): a RFC ratifica os números; aqui está o porquê de cada escolha estar ancorada em modelos publicados e validados, não em opinião.

1. Princípio de design do índice

Quatro decisões de método, cada uma herdada de um modelo estabelecido (cap. 03–04):

  1. Padroniza-depois-combina (SUM — Sauro & Kindlund 2005). Cada métrica heterogênea

    (segundos, %, Likert, ratio de contraste) é primeiro normalizada a 0–1 contra um *spec limit* (alvo), e só então entra numa média ponderada. É o método publicado de colapsar métricas de usabilidade num escore único — adotamos a mecânica inteira.

  2. Decompõe em sub-fatores e reporta cada um (SUPR-Q). Nunca colapsar tudo num número

    cego: o índice carrega seus sub-escores ao lado do total (a disciplina do SUPR-Q e a correção do defeito do NPS, que joga informação fora). Percentil-norma quando houver base.

  3. Garante ≥1 canal por pilar ISO 9241-11. Efetividade · Eficiência · Satisfação — mais

    um pilar de Qualidade-visualConfiança (ISOIEC 25010 Interaction Capability + *UI aesthetics* + Accessibility). Isso impede gaming de uma dimensão só.

  4. Dois tiers de medição. AUTO (determinístico, headless — fórmulas dos cap. 010405/06)

    e JUDGE (IA contra a spec — heurísticas do cap. 02). Espelha a dupla architecture-quality.kmd (rubrica) + /k-arch (juízo) que a Stack já usa.

2. Estrutura: pilares → dimensões → tier

Pesos de pilar no perfil base screen (perfis reponderam — §4). Cada dimensão é 0–100.

Pilar (ISO 9241-11 / 25010) Dimensão Tier Fonte (cap.) Peso base
Efetividade Sucesso de tarefa (KLM-derivável / telemetria) AUTO/BEHAV 05 (GOMS), 03 (ISO) 0.18
Efetividade Gulf-of-Execution coverage (ação→controle visível) AUTO 05 (Norman) 0.07
Eficiência Tempo previsto (KLM) + Fitts/Hick por ação primária AUTO/predictive 05, 01 0.15
Eficiência Economia de passos/escolhas (Occam, Hick, Miller) AUTO 01 0.07
Satisfação Usabilidade percebida (UMUX-LITE→SUS, ou SUS) SURVEY 03 0.13
Satisfação SEQ por tarefa (quando houver) SURVEY 03 0.05
Visual / 25010 Estética computacional (Ngo OM + grid 8pt + escala tipográfica) AUTO 04 0.12
Visual / 25010 Hierarquia & salience (Von Restorff: 1 CTA isolado) AUTO 01, 04 0.05
A11y / 25010 Acessibilidade AUTO (18 checagens WCAG 2.2) AUTO 06 0.13
Confiança/Heurística Heurísticas Nielsen/Shneiderman (JUDGE) JUDGE 02 — (gate+modulador, §5)

Os pesos acima são seed (defaults HCI). A ratificação re-deriva por PCA/factor loadings sobre ~10 surfaces reais — exatamente como o SUM achou que seus 4 inputs contribuem ~igualmente (cap. 03). Até lá, valem os seeds.

3. Fórmula

3.1 Normalização de cada dimensão (0–1)

  • Dimensão AUTO contínua (tempo, contraste, densidade): z contra spec-limit → CDF normal,

    ou a curva exponencial do Brand score e^(−k·penalty) quando o sinal é penalty-acumulável. norm = Φ((spec − valor)/σ) (SUM) ou norm = e^(−k·penalty_normalizada) (Brand score).

  • Dimensão AUTO de taxa (defeitoserros, % checagens a11y passando): `norm = passaaplicável`

    (Six-Sigma "proportion-meeting-spec", cap. 03).

  • Dimensão SURVEY: já em 0–100 → /100. UMUX-LITE usa a regressão SUS≈0.65·x+22.9 (cap. 03)

    pra cair na mesma escala do SUS.

  • Dimensão JUDGE: pass=100 · partial=60 · violated=20, média dos critérios aplicáveis

    (cap. 02), mapeada a severidade Nielsen 0–4 pra ponderar.

3.2 Composição

pilar_p   = Σ_d (w_d · dim_d)  / Σ_d w_d           # média ponderada das dimensões do pilar
UQS_bruto = 100 · Σ_p (W_p · pilar_p) / Σ_p W_p     # média ponderada dos pilares (perfil ativo)
UQS       = aplica_gates(UQS_bruto)                 # §5

3.3 Estética computacional (a dimensão Visual AUTO, detalhe)

O sub-escore visual combina (cap. 04), cada termo 0–1:

Visual = 0.45·Ngo_OM            # média das 14 medidas de Ngo (balance, symmetry, density 0.5-ótima, simplicity, economy…)
       + 0.25·disciplina         # média de [aderência grid-8pt, aderência escala-tipográfica, ritmo vertical]
       + 0.15·(1 − clutter)      # Rosenholtz feature-congestion/subband-entropy normalizado
       + 0.15·colorfulness_fit   # Hasler–Süsstrunk com ótimo-médio (penaliza drab E caótico)

(O contraste não entra aqui — é gate de A11y, §5, pra não ser "diluído" numa média.)

4. Perfis por tipo de surface (reponderação)

Mesmo motor, pesos de pilar diferentes (cap. 04 §aesthetic-usability justifica peso visual):

Perfil Efetiv. Efic. Satisf. Visual A11y
screen 0.25 0.22 0.18 0.17 0.18
form 0.22 0.20 0.18 0.10 0.30
icon 0.05 0.05 0.05 0.75 0.10
layout 0.20 0.18 0.10 0.37 0.15
landing 0.15 0.12 0.20 0.38 0.15

icon ≈ tudo-visual: ali o kicon validate (R1–R7) e a estética computacional dominam; form carrega A11y + estados (cap. 02 H5/H9, cap. 06). Pesos seed — calibrar.

5. Gates duros (capam ou reprovam — não se diluem)

Herdados das normas já vigentes (cap. 06 + Verge R8 + icons):

  • G-AA contraste: qualquer par < WCAG 2.1 AA (4.5:1 / 3:1) → dimensão A11y perde o item e

    UQS capa em ≤ 59 (Fair). (Verge R8 já é gate CI; o UQS o reflete, não o substitui.)

  • G-ICON: kicon validate FAIL em R1–R7 → Visual perde V5 e UQS ≤ 59.
  • G-severidade-4: qualquer achado JUDGE com severidade Nielsen 4 (catástrofe) → cap ≤ 59

    até resolver (cap. 02, escala de severidade).

  • G-Doherty (opcional, quando há telemetria): INP > 1s sustentado → penalty dura em Eficiência

    (cap. 01, limiar 400ms1s10s).

6. Bandas de rating (Sauro–Lewis, verbatim)

Reusa a curva A–F do SUS (cap. 03) — familiaridade instantânea, sem inventar escala:

UQS Banda Leitura
90–100 A+/A top decil
80–89 A−/B+ excelente
68–79 B/C+ acima da média (68 = média/âncora neutra do SUS)
51–67 C/D abaixo da média — priorizar conserto
0–50 F reprovado

7. Por que NÃO um juiz-IA puro, nem um survey puro

  • Survey puro (SUS/NPS): precisa de humanos, não escala por-surface-por-release, e o NPS

    ainda joga informação fora (cap. 03). Vira só o canal Satisfação, não o todo.

  • Juiz-IA puro (/k-meta-judge): qualitativo, não dá baseline/trend nem comparabilidade.

    Vira o tier JUDGE, não o índice. (cap. 02)

  • Híbrido AUTO+JUDGE+SURVEY é o que a literatura (SUM, HEART, SUPR-Q) faz e o que a Stack

    já pratica em arquitetura — daí o UQS.

8. Implementação (resumo — detalhe em stack-RFC-030 §9 + meta#387)

  1. tools/ui-score — motor AUTO headless: contraste (reusa verge-contrast-audit),

    geometria Ngogridalinhamento, escala tipográfica, KLM/Fitts sobre o task-flow, 18 checagens a11y (axe-core-style). Emite as dimensões AUTO + sub-escores.

  2. Adapter JUDGE — orquestra /k-meta-judge resolvendo surface→spec por spec-triggers.kmd.
  3. Canal SURVEY — UMUX-LITE (2 perguntas) micro-survey por release; opcional.
  4. Composição + perfis + gates + bandas → o número + relatório JSON.
  5. /k-ui-score <surface> (read-only, irmão do /k-arch).
  6. Validação empírica: pontuar o cockpit do Triage antes/depois do TRIAGE-026 — o índice

    tem que subir com as fatias de polish. Se não subir, o modelo está errado, não a UI.

9. Fontes-âncora (detalhe e URLs nos capítulos 01–06)

SUM (Sauro & Kindlund 2005) · SUPR-Q (Sauro) · SUS (Brooke; Sauro–Lewis curva) · UMUX-LITE (Lewis et al.) · HEARTGSM (Rodden et al., Google) · ISO 9241-11 · ISOIEC 25010 · Ngo, Teo & Byrne 2003 · WCAG 2.2 (W3C) · APCA (Myndex) · GOMS/KLM (Card, Moran & Newell) · Fitts 1954 · Hick–Hyman · Nielsen 10 heuristics · Norman DOET · Tractinsky (aesthetic-usability).