Pular para o conteúdo
Challenge 18

2026-09-10

Diário

data 2026-09-10

O que foi feito

  • Revisão profunda da UI da Bancada com sete lentes em paralelo — detalhe de interface, cor, layout, texto, tipografia, acessibilidade e checklist —, cobrindo também o site, que a revisão de ontem declarou fora do escopo. 49 achados brutos, agrupados em 10 por causa e não por lente, em Revisão Profunda de UI - 2026-09-10, com os oito relatórios por lente em 06 - Design/Anexos/ (9ba72b7, 0cc4544).
  • Medição do que até então era afirmação: contraste de componente e uniformidade da rampa calculados em OKLCH, com script determinístico. Os 3:1 de borda e divisor — que a revisão de ontem registrou como nunca medidos — vieram entre 1,13 e 1,32:1 nos dois esquemas.
  • Correção da lista inteira: 20 achados fechados num commit (Bancada 0627fde). Os testes vão de 119 para 142, contando o trabalho do Cauê.
  • Montagem do menu principal da Bancada. O app nunca teve NSMenu: não havia Cmd+Q, Cmd+W nem — num leitor de vault — Cmd+C.
  • Aplicação da voz de narrativa nas páginas de nota do site: o gerador multipágina nunca envolvia o corpo em class="narrativa", e toda narrativa saía em sans, sem teto de medida, perto de 110 caracteres por linha.
  • Criação de DS.Icone, DS.Raio.xs, papel.aviso e DS.Janela, zerando os 17 .font(.system(size:)) crus e os dois cornerRadius: 3 do app.
  • Criação de BotaoDoSistema e do modificador .anelDeFoco, substituindo os 12 .buttonStyle(.plain) e dando o primeiro ponto de uso a DS.Cor.foco e DS.Traco.foco, que existiam desde a fundação do sistema sem nenhum.
  • Entrada de Plural.contar em VaultKit, sob teste, encerrando os (s) da interface e o "1 eventos" do calendário.
  • Alimentação do calendário com a agenda oficial do desafio, fechando o V-06 (9e66d30, Cauê Carneiro; Bancada ce14ad2).
  • Reescrita do sistema de fatos: o registro sai do post-commit e vai para o pre-push, e o pre-commit ganha a fronteira que faltava em 05 - Registros/ (0126f05, c3a9691).
  • Remoção de uma linha órfã do log de fatos, a pedido — e restauração automática do mesmo fato, com o hash certo, pelo sistema novo (1ecf374).
  • Entrada de uma pergunta nova no documento CBL do grupo, sob a Big Idea: "Como estabelecimentos de food service e profissionais freelancers podem confiar um no outro rápido o suficiente para cobrir uma vaga que abre e fecha em poucas horas?" (9ca2c2f, Júlia Clovandi Vasconcelos).
  • Abertura da T-0006 com o benchmarking de 9 concorrentes do Frila: seis diretos (Closeer, eFreela, Estaff, Freela Serviços, Switch, JobHunter), dois indiretos (GetNinjas, TradePro) e o Fiverr como referência de produto. A nota traz matriz comparativa, análise por concorrente e as 9 capturas em 04 - Tarefas/Anexos/, e a tarefa entrou no desafio C18 como Atividade e Recurso Norteador (303ce76, Júlia Clovandi Vasconcelos).
  • Júlia Clovandi passa a dividir a T-0006 com o Cauê Carneiro, inclusive nos próximos passos da pesquisa (cafac94, Júlia Clovandi Vasconcelos).
  • Abertura da T-0007: usar a Bancada ao lado do Obsidian em pelo menos três sessões, comparar as quatro superfícies com os .md e transformar cada divergência em nota ou tarefa (4b44f21, João Paulo, commit assinado como Jota Pe). Este commit não tem linha no log de fatos — vem do git log.
  • Tradução do calendário para leitura humana e migração do painel do dia para a lateral direita (com atalho ⌥⌘I): LeituraDeFato separa mensagem e hash e isola bastidores de escrituração; Equipe mapeia nomes reais a partir do CLAUDE.md; e GeometriaDaGrade estabiliza a proporção da célula entre 0,75 e 1,6 acompanhando a janela (e2b46a2).
  • Centralização da cápsula do vault na barra superior em linha única (ícone, nome da pasta e timestamp de leitura), ocultando o título redundante da janela (1fca196).
  • Padronização de botões: devolução de realce nativo via BotaoDoSistema(.peca) na cápsula do vault e no cabeçalho de dia da lista do calendário (18eadd7).
  • Criação e implementação da tela de Onboarding & Setup (TelaOnboarding.swift), organizada em três abas essenciais (Fluxo Diário com o ciclo em 3 passos /entrar, /tarefa, /diario; Catálogo rápido de Slash Commands com cópia em um clique; e relação do ecossistema doc-harness vs Bancada) (e2b7483).
  • Integração do atalho de Onboarding na barra lateral da Bancada: botão utilitário "Guia de Setup" (signpost.right.and.left) padronizado com os botões inferiores da barra e com abertura em popover dedicado.
  • Redesenho completo de Ajustes do Sistema (TelaAjustes.swift): remoção total do inventário de contagem de notas e substituição por seis blocos operacionais focados no sistema e nos mentores (Aparência, Sincronização & FSEvents em tempo real, Ambiente & doc-harness com checagem de scripts, Superfície para Mentores & Banca com atalhos para o site estático e diário de bordo, Conformidade do Vault e atalhos globais de teclado).
  • Promoção dos marcos de 2026-09-10 ao Roadmap e ao documento do desafio CBL C18 (538fc3d).

Decisões

  • A revisão roda em modo leitura: os sete agentes foram proibidos de editar qualquer arquivo do projeto. Edição no meio invalidaria os arquivo:linha que eles estavam citando, e a credibilidade da revisão depende desses números.
  • Todo achado de agente foi reconferido à mão no arquivo citado antes de entrar na nota. O log do que foi conferido — e do que foi corrigido dos relatórios — ficou em 06 - Design/Anexos/revisao-2026-09-10-verificacao.md.
  • A elevação no claro sobe um passo (fundo vai de neutro.1 para neutro.2), e o custo fica declarado: no claro o sistema passa a ter duas superfícies e não três — cinza para o que opera, branco para o que se lê. Separar cromo de fundo custaria a elevação da folha, e a folha é o que a tese precisa.
  • O fio vira dois: borda contorna peça, divisor separa painel. Eram o mesmo passo.
  • O sistema recusa perseguir os 3:1 da WCAG no fio, com número: contra branco, o primeiro passo da rampa que chega lá é o neutro.6, que a 1px é régua e não fio. A regra fica sendo que o fio não carrega sozinho o trabalho da camada.
  • O âmbar do claro segue marrom por ser estrutural, não descuido: não existe âmbar mais claro que passe em 4,5:1 sobre superfície quase branca. Onde precisar brilhar, é indicador, não texto.
  • O teto de medida da superfície de leitura mora na Folha, não na tela que a usa — era por isso que o Acervo acertava e o Diário não.
  • O mínimo da janela é derivado por teste da soma dos mínimos declarados, não escolhido. Enquanto foi escolhido, ficou 220pt menor do que o Diário precisa.
  • O fato passa a ser escrito no git push, não no git commit: é no push que a identidade do commit para de poder mudar.
  • A linha de fato carrega a data, a hora e o autor do commit, não os de quem publica. Quem publica trabalho de outra pessoa não rouba a autoria do fato.
  • O commit que publica o próprio log fica fora do registro por decisão explícita, e não por acidente de aritmética de intervalo. Escrituração não é trabalho.
  • A nota de revisão do Cauê não foi editada, mesmo contendo uma citação que não se sustenta. A narrativa dela é dele.
  • O fato que falta do 4b44f21 não é escrito à mão. Ou sai do hook do João no próximo push dele, ou entra pelo caminho de reparo (PERMITIR_REPARO_DE_FATO=1).
  • O painel do dia no calendário migra da parte inferior para a lateral direita com ⌥⌘I: embaixo disputava altura com a grade mensal e forçava compressão vertical; ao lado, preserva a visão mensal e aprofunda o dia selecionado (e2b46a2).
  • O calendário prioriza leitura sobre auditoria crua: hashes e contagens técnicas de arquivos dão lugar à agenda oficial, tarefas avançadas e resumo em linguagem natural; o hash bruto fica recolhido na dica da linha e no "Registro completo" (e2b46a2).
  • O Onboarding da Bancada recusa tutoriais modais forçados ou fluxos lineares obrigatórios: foi construído como guia consultivo em 3 abas essenciais, acessível a qualquer momento pela barra lateral.
  • O atalho de Setup fica alocado na barra lateral utilitária, integrado como peça visual idêntica aos demais controles do rodapé, evitando botões flutuantes ou itens soltos na toolbar.
  • O painel de Ajustes recusa listar estatísticas brutas do parser (como inventário de notas por tipo), que não têm utilidade para mentores e equipe; em vez disso, concentra controles de ambiente, motor de sincronização FSEvents e a superfície estática web/bordo para avaliadores que não usam o app nativo.

Bloqueios

  • A regra de estados que a revisão de ontem atribui ao CLAUDE.md — "um componente só está pronto quando declara padrão, foco, pressionado, selecionado, desabilitado, carregando e erro" — não existe em nenhum CLAUDE.md do workspace. A regra é boa e a tabela que ela ancora é útil; o problema é de endereço. Pelo critério do próprio projeto, regra que só vive dentro de uma nota de revisão é narrativa, não é política — e nenhum componente novo vai ser cobrado por ela. Decisão do Cauê: ou sobe para o CLAUDE.md, ou a citação muda.
  • Dynamic Type segue com zero ocorrências, combinado com alturas fixas de célula, miniatura e rodapé. Não entrou nesta rodada porque é mudança estrutural de layout, não ajuste.
  • O commit 4b44f21 está no origin/main sem linha no log de fatos, e saiu com a identidade padrão da máquina (jotape@Jotas-MacBook-Pro.local), não com o e-mail da equipe. O pedido de bootstrap e de configuração do Git foi mandado ao João por e-mail; falta ele dizer se o registro está parado na máquina dele.

Aprendizados

  • A guarda de 05 - Registros/ tinha um buraco, e o buraco era o formato dela. O ramo bash do guarda.sh só nega quando o comando casa com o caminho e com um operador de escrita de uma lista fixa (>, tee, sed -i, rm, mv). Uma edição por heredoc de Python passou direto: tinha o caminho e nenhum daqueles. O defeito não foi a lista estar curta — é que uma lista de padrões descreve como alguém escreveria, e erra em todo jeito que ela não previu. O pre-commit olha o índice, e por isso vale para qualquer ferramenta.
  • A mesma lição, terceira vez neste sistema. "Sem sombra difusa" foi frase até virar Sobreposicao. "Aviso é âmbar" foi prosa até virar papel.aviso. "Não edite o log à mão" foi aviso em três lugares até virar pre-commit. Regra que não é peça não se cumpre.
  • Trocar um controle nativo por um do sistema não transfere o comportamento. A Sobreposicao herdou do popover a forma que a doutrina exigia e perdeu a entrada animada, que o nativo dava de graça. Ao substituir nativo, é preciso listar o que ele fazia sozinho.
  • Sete dos dezessete tamanhos crus estavam dentro do próprio design system. Não era tela driblando o sistema: era o sistema não obedecendo a si mesmo, e carregando o desvio para dentro de quem o consumia direito. E 13 dos 17 eram ícone — não faltava disciplina, faltava um passo na escala.
  • Um teste novo nasceu com a premissa errada e acusou 25× de desequilíbrio num par de cores correto: media luminância relativa crua, que é quase zero perto do preto. Segunda vez que isso acontece aqui — a primeira foi o teste que exigia rampa perfeitamente espelhada. Quando um teste de token acusa algo absurdo, suspeitar do teste antes dos tokens.
  • Código que compila e roda pode ser invisível. O menu foi montado, compilou, o app abriu sem erro — e a barra continuou sem Editar e sem Janela, porque a barra de menus lê o título do NSMenuItem e não o do submenu. Só apareceu abrindo o app.
  • O verificador da Bancada reprovou os nove anexos desta revisão por falta de frontmatter: o app cobrando a convenção do vault de quem escreveu o app.
  • Rebase e log append-only se atropelam por natureza, não por descuido: o fato era escrito no instante do commit, e o commit ainda podia trocar de identidade depois. Enquanto fosse assim, todo rebase sobre trabalho de outra pessoa ia produzir um órfão.
  • Falta de linha no log não prova hook ausente. O pre-push publica o próprio registro só no push seguinte, então o fato de um commit publicado pode estar parado, pronto, na máquina de quem publicou. O primeiro diagnóstico do 4b44f21 foi "falta bootstrap", e estava apressado: o sinal firme era a identidade, não a lacuna.
  • A guarda erra para os dois lados. De manhã deixou passar uma escrita; à tarde bloqueou uma leitura de 05 - Registros/ porque o comando tinha 2>/dev/null, e o padrão >>? do guarda.sh casa com qualquer >. É a mesma raiz: padrão de texto descreve como alguém escreveria, não o que o comando faz.
  • Listas e identificadores em SwiftUI exigem IDs únicos globais entre seções: no calendário, a repetição de identificadores entre seções causava a exibição fantasma de "Apresentação" em múltiplos dias (e2b46a2).
  • Estado de expansão dentro de células recicladas não sobrevive à rolagem: ao rolar uma List, itens expandidos fechavam sozinhos porque o estado residia na view da linha em vez de no modelo de dados (e2b46a2).
  • Telas de configuração perdem a serventia quando exibem o interior do parser em vez das necessidades de quem opera: expor contagens técnicas de notas mascarava a ausência de atalhos operacionais reais (como abrir o site dos mentores ou inspecionar a sincronização em tempo real).

Próximos passos

  • Fechar o V-07, o último achado aberto da revisão de ontem: título da toolbar colidindo com o da janela, linhas fantasma da Table em Trabalho, cabeçalho do painel do dia com glifos sem rótulo e data em ISO, e nenhum botão primário em Ajustes (itens endereçados nesta rodada).
  • Realizar o commit e push das alterações da Bancada (Onboarding & Setup, Ajustes do Sistema reformulado e atalho da barra lateral).
  • Testar a nova superfície de Ajustes e Onboarding diretamente com mentores e equipe no Mac e via site estático.
  • Levar Dynamic Type e Reduzir Movimento ao app, com as alturas fixas que hoje cortariam texto — rodada própria, por ser estrutural.
  • Decidir o destino da regra de estados: sobe para o CLAUDE.md e vira política, ou a citação na revisão de ontem muda.
  • Fazer uma passada real de VoiceOver e teclado. O mapa de hoje veio do fonte; a revisão anterior já avisou que uma sessão de verdade acha mais.
  • Revisar o site/ com o olho, como foi feito com o app: as correções de hoje vieram do fonte e do CSS, sem ninguém abrir as páginas.
  • Verificar na tela o comportamento da janela no novo mínimo de 920×400, agora que o contentMinSize existe.
  • Confirmar com o João se o registro do 4b44f21 está pendente na máquina dele; se não estiver, lançar pelo caminho de reparo.
  • Seguir a T-0006 (Cauê Carneiro e Júlia Clovandi): queixas no Reclame Aqui e na App Store contra Closeer e Estaff, matriz de diferenciação no documento CBL e simulação do modelo econômico do Frila.
  • Rodar as sessões de uso real da T-0007 (João Paulo).