{
  "edition": "7.0",
  "date": "2026-11-04",
  "status": "Retornos externos recebidos para a edição 6.1. A edição 7.0 inclui HE comissionadas, DSR e médias históricas. Reteste externo desta edição pendente.",
  "cases": [
    {
      "id": "01-sem-alteracao",
      "title": "1. Nenhuma alteração",
      "input": "01-sem-alteracao.json",
      "purpose": "O mesmo cenário deve produzir o mesmo custo e a mesma cobertura.",
      "expected": [
        {
          "path": "plans.current.totalCents",
          "label": "Custo atual",
          "expected": 3000000,
          "unit": "money"
        },
        {
          "path": "plans.full.totalCents",
          "label": "Custo B",
          "expected": 3000000,
          "unit": "money"
        },
        {
          "path": "plans.full.scheduledHours",
          "label": "Horas físicas de B",
          "expected": 1760,
          "unit": "hours"
        },
        {
          "path": "plans.full.missingHours",
          "label": "Horas descobertas de B",
          "expected": 0,
          "unit": "hours"
        }
      ],
      "reason": "10 pessoas × R$ 3.000 = R$ 30.000. Fevereiro de 2027 tem quatro semanas completas. 44 × 4 × 10 = 1.760 horas."
    },
    {
      "id": "02-reducao-sem-reposicao",
      "title": "2. De 44 para 40 horas, mantendo o quadro",
      "input": "02-reducao-sem-reposicao.json",
      "purpose": "Reduzir horas não reduz automaticamente o salário nem aumenta automaticamente o custo total.",
      "expected": [
        {
          "path": "plans.full.totalCents",
          "label": "Custo B",
          "expected": 3000000,
          "unit": "money"
        },
        {
          "path": "plans.full.scheduledHours",
          "label": "Horas físicas de B",
          "expected": 1600,
          "unit": "hours"
        },
        {
          "path": "plans.full.missingHours",
          "label": "Horas descobertas de B",
          "expected": 160,
          "unit": "hours"
        }
      ],
      "reason": "40 × 4 × 10 = 1.600 horas. Faltam as 160 horas dos sábados. O custo por hora disponível passa de R$ 17,05 para R$ 18,75, com a mesma despesa mensal."
    },
    {
      "id": "03-horas-nao-sao-cobertura",
      "title": "3. Contratar sem corrigir os horários",
      "input": "03-horas-nao-sao-cobertura.json",
      "purpose": "A igualdade de horas totais não pode esconder os sábados descobertos.",
      "expected": [
        {
          "path": "plans.full.totalCents",
          "label": "Custo B",
          "expected": 3300000,
          "unit": "money"
        },
        {
          "path": "plans.full.scheduledHours",
          "label": "Horas físicas de B",
          "expected": 1760,
          "unit": "hours"
        },
        {
          "path": "plans.full.missingHours",
          "label": "Horas descobertas de B",
          "expected": 160,
          "unit": "hours"
        },
        {
          "path": "teams.0.plans.full.coverage.coverage",
          "label": "Cobertura de B",
          "expected": 0.9090909090909091,
          "unit": "ratio"
        }
      ],
      "reason": "11 × 160 = 1.760 horas, mas todas em dias úteis. A demanda dos quatro sábados permanece sem atendimento. A cobertura exibida deve ser 90,9%."
    },
    {
      "id": "04-12x36-noturno",
      "title": "4. 12x36, noite e passagem pela meia-noite",
      "input": "04-12x36-noturno.json",
      "purpose": "Conferir calendário, conversão noturna e grupos alternados.",
      "expected": [
        {
          "path": "plans.current.totalCents",
          "label": "Custo atual",
          "expected": 667200,
          "unit": "money"
        },
        {
          "path": "plans.current.scheduledHours",
          "label": "Horas físicas atuais",
          "expected": 336,
          "unit": "hours"
        },
        {
          "path": "teams.0.plans.current.rows.0.nightPhysicalHours",
          "label": "Horas noturnas físicas",
          "expected": 196,
          "unit": "hours"
        },
        {
          "path": "teams.0.plans.current.rows.0.nightPayHours",
          "label": "Horas noturnas remuneradas",
          "expected": 224,
          "unit": "hours"
        },
        {
          "path": "plans.current.rubrics.night",
          "label": "Adicional noturno",
          "expected": 67200,
          "unit": "money"
        },
        {
          "path": "plans.current.missingHours",
          "label": "Horas descobertas",
          "expected": 0,
          "unit": "hours"
        }
      ],
      "reason": "28 noites × 12 horas = 336. A janela 22–05 tem 196 horas físicas, equivalentes a 224 horas de 52,5 minutos. R$ 3.000 / 200 × 224 × 20% = R$ 672. Salários dos dois empregados = R$ 6.000."
    },
    {
      "id": "05-he-sem-duplicidade",
      "title": "5. Excesso diário e semanal",
      "input": "05-he-sem-duplicidade.json",
      "purpose": "A mesma hora excedente não pode ser contada duas vezes.",
      "expected": [
        {
          "path": "plans.full.totalCents",
          "label": "Custo B",
          "expected": 3900000,
          "unit": "money"
        },
        {
          "path": "plans.full.rubrics.overtime",
          "label": "Custo de HE em B",
          "expected": 900000,
          "unit": "money"
        },
        {
          "path": "teams.0.plans.full.rows.0.otPhysicalHours",
          "label": "HE físicas de B",
          "expected": 400,
          "unit": "hours"
        }
      ],
      "reason": "10h trabalhadas − limite de 8h = 2h por dia. 2 × 5 × 4 × 10 pessoas = 400 HE. R$ 3.000 / 200 × 400 × 1,5 = R$ 9.000."
    },
    {
      "id": "06-cronograma",
      "title": "6. Mudança de etapa no meio do mês",
      "input": "06-cronograma.json",
      "purpose": "Verificar rateio gerencial por dias corridos e implantação cobrada uma vez por entrada.",
      "expected": [
        {
          "path": "trajectory.totalCents",
          "label": "Cronograma combinado",
          "expected": 5420000,
          "unit": "money"
        },
        {
          "path": "trajectory.rubrics.setup",
          "label": "Implantação no cronograma",
          "expected": 120000,
          "unit": "money"
        },
        {
          "path": "plans.current.totalCents",
          "label": "Manter atual no mês",
          "expected": 3100000,
          "unit": "money"
        }
      ],
      "reason": "Atual: R$ 31.000 × 15/31 = R$ 15.000. A: R$ 62.000 × 10/31 = R$ 20.000. B: R$ 93.000 × 6/31 = R$ 18.000. Somam-se R$ 500 e R$ 700 de implantação. Este caso mantém a mesma escala e não testa a passagem individual entre turnos distintos."
    },
    {
      "id": "07-equipes-separadas",
      "title": "7. Uma equipe não cobre a falta de outra",
      "input": "07-equipes-separadas.json",
      "purpose": "Impedir compensação indevida de capacidade entre funções diferentes.",
      "expected": [
        {
          "path": "plans.full.totalCents",
          "label": "Custo B",
          "expected": 6000000,
          "unit": "money"
        },
        {
          "path": "plans.full.scheduledHours",
          "label": "Horas físicas totais de B",
          "expected": 3520,
          "unit": "hours"
        },
        {
          "path": "plans.full.missingHours",
          "label": "Horas descobertas de B",
          "expected": 1760,
          "unit": "hours"
        }
      ],
      "reason": "A primeira equipe perdeu seus dez empregados. A segunda dobrou. A quantidade total de empregados e a despesa são iguais à situação atual, mas a primeira equipe continua descoberta."
    },
    {
      "id": "08-referencia-publica",
      "title": "8. Parcela de um exemplo público de custos",
      "input": "08-referencia-publica.json",
      "purpose": "Conferir uma referência externa sem usar folha de cliente.",
      "expected": [
        {
          "path": "plans.current.rubrics.salary",
          "label": "Salário e outras parcelas",
          "expected": 290126,
          "unit": "money"
        },
        {
          "path": "plans.current.rubrics.provisions",
          "label": "Provisões",
          "expected": 32233,
          "unit": "money"
        },
        {
          "path": "plans.current.totalCents",
          "label": "Subtotal modelado",
          "expected": 322359,
          "unit": "money"
        }
      ],
      "reason": "CNEN/LAPOC, Pregão 90004/2025, cotação de apoio administrativo. R$ 2.231,74 + R$ 669,52 = R$ 2.901,26. Provisões publicadas de 8,33% + 2,78% = 11,11%. O ensaio cobre esse subtotal, sem reproduzir o preço integral da contratação."
    },
    {
      "id": "09-marco-diario-42h",
      "title": "9. Jornada distribuída e limite de HE separados",
      "input": "09-marco-diario-42h.json",
      "purpose": "A distribuição de 8h24 não deve elevar sozinha o marcador diário de horas extras.",
      "expected": [
        {
          "path": "teams.0.plans.full.rows.0.otPhysicalHours",
          "label": "HE físicas em B",
          "expected": 80,
          "unit": "hours"
        },
        {
          "path": "plans.full.rubrics.overtime",
          "label": "Custo de HE em B",
          "expected": 171429,
          "unit": "money"
        },
        {
          "path": "plans.full.totalCents",
          "label": "Custo B",
          "expected": 3171429,
          "unit": "money"
        }
      ],
      "reason": "24 minutos × 20 dias úteis × 10 pessoas = 80 horas. R$ 3.000 / 210 × 80 × 1,5 = R$ 1.714,29, arredondado por rubrica. O limite é uma premissa informada e permanece editável."
    },
    {
      "id": "10-rsr-comissoes",
      "title": "10. Comércio · repouso sobre comissões",
      "input": "10-rsr-comissoes.json",
      "purpose": "Fevereiro de 2027, quatro semanas completas, sem feriados informados. Uma pessoa, R$ 3.000 em comissões, sem parte fixa, HE ou encargos no exemplo.",
      "expected": [
        {
          "path": "plans.current.rubrics.commissionRest",
          "label": "RSR atual",
          "expected": 50000,
          "unit": "money"
        },
        {
          "path": "plans.transition.rubrics.commissionRest",
          "label": "RSR A",
          "expected": 120000,
          "unit": "money"
        },
        {
          "path": "plans.full.rubrics.commissionRest",
          "label": "RSR B",
          "expected": 120000,
          "unit": "money"
        },
        {
          "path": "plans.current.totalCents",
          "label": "Comissões e RSR atuais",
          "expected": 350000,
          "unit": "money"
        },
        {
          "path": "plans.transition.totalCents",
          "label": "Comissões e RSR em A",
          "expected": 420000,
          "unit": "money"
        },
        {
          "path": "plans.full.totalCents",
          "label": "Comissões e RSR em B",
          "expected": 420000,
          "unit": "money"
        }
      ],
      "reason": "Atual: 3.000 ÷ 24 dias-base × 4 repousos = 500. Em A e B: 3.000 ÷ 20 × 8 = 1.200. A diferença é R$ 700 por pessoa no mês. A redução de 42h para 40h mantém a quantidade de dias neste exemplo."
    },
    {
      "id": "11-he-comissionista-puro",
      "title": "11. HE de comissionista puro",
      "input": "11-he-comissionista-puro.json",
      "purpose": "Dados fictícios. Confira as rubricas, a memória e a reabertura dos arquivos.",
      "expected": [
        {
          "path": "plans.current.rubrics.overtime",
          "label": "HE sobre comissões",
          "expected": 15000,
          "unit": "money"
        },
        {
          "path": "plans.current.rubrics.dsr",
          "label": "DSR das HE",
          "expected": 2500,
          "unit": "money"
        },
        {
          "path": "plans.current.totalCents",
          "label": "Custo total",
          "expected": 360500,
          "unit": "money"
        }
      ],
      "reason": "R$ 2.940 ÷ 196 horas efetivas × 20 HE × 50% = R$ 150. DSR = R$ 150 ÷ 24 dias-base × 4 repousos = R$ 25. Comissões e RSR próprios: R$ 2.940 + R$ 490. Total R$ 3.605."
    },
    {
      "id": "12-he-mista-encargos",
      "title": "12. Remuneração mista e encargos separados",
      "input": "12-he-mista-encargos.json",
      "purpose": "Dados fictícios. Confira as rubricas, a memória e a reabertura dos arquivos.",
      "expected": [
        {
          "path": "plans.current.rubrics.overtime",
          "label": "HE fixas e variáveis",
          "expected": 45000,
          "unit": "money"
        },
        {
          "path": "plans.current.rubrics.dsr",
          "label": "DSR das HE",
          "expected": 7500,
          "unit": "money"
        },
        {
          "path": "plans.current.rubrics.provisions",
          "label": "13º e terço de férias",
          "expected": 68389,
          "unit": "money"
        },
        {
          "path": "plans.current.rubrics.charges",
          "label": "FGTS e INSS patronal",
          "expected": 191489,
          "unit": "money"
        },
        {
          "path": "plans.current.totalCents",
          "label": "Custo total",
          "expected": 875378,
          "unit": "money"
        }
      ],
      "reason": "Fixo: 2.200 ÷ 220 × 20 × 1,5 = 300. Comissões: 2.940 ÷ 196 × 20 × 0,5 = 150. DSR: 450 ÷ 24 × 4 = 75. Remuneração = 6.155. 13º = 512,92 e terço = 170,97. FGTS 8% = 547,11 e INSS patronal 20% = 1.367,78 sobre remuneração e provisões exatas. Total = 8.753,78."
    },
    {
      "id": "13-medias-historicas",
      "title": "13. Médias distintas de 13º e férias",
      "input": "13-medias-historicas.json",
      "purpose": "Dados fictícios. Confira as rubricas, a memória e a reabertura dos arquivos.",
      "expected": [
        {
          "path": "plans.current.rubrics.provisions",
          "label": "Provisões pela média",
          "expected": 42361,
          "unit": "money"
        },
        {
          "path": "plans.current.totalCents",
          "label": "Custo total",
          "expected": 657861,
          "unit": "money"
        }
      ],
      "reason": "13º: média variável de três meses, incluindo mês zero, R$ 1.750. Base com fixo R$ 3.950. Provisão R$ 329,17. Férias: média variável R$ 1.200, base R$ 3.400, terço R$ 94,44. Provisões R$ 423,61. Alterar comissões de janeiro de R$ 1.000 para R$ 1.600 eleva provisões para R$ 440,27, sem mudar A e B."
    }
  ],
  "extraChecks": [
    "Editar um número pelo teclado, sair do campo e verificar atualização. Testar Desfazer e copiar Atual para A ou B.",
    "Inserir divisor zero, quadro negativo, número fracionário de pessoas, data final anterior ao início e intervalos sobrepostos. Exigir erro visível e ausência de resultado antigo apresentado como válido.",
    "Salvar JSON, alterar valores e reabrir o arquivo. Conferir campos e resultados. Arquivo inválido deve ser rejeitado sem substituir o estudo válido.",
    "Baixar CSV e PDF. Abrir os arquivos e comparar números com a tela. Mensagem de sucesso sem arquivo válido não conta como aprovação.",
    "Conferir visão em 390px e desktop. Os controles devem ser utilizáveis e tabelas largas devem permitir rolagem sem cortar ações.",
    "Verificar que a memória explica horas físicas, divisor, horas noturnas remuneradas, arredondamento, premissas e o limite do cronograma entre escalas diferentes.",
    "Criar pelo menos três casos adversariais não listados, calcular o esperado separadamente e tentar refutar o resultado do sistema."
  ]
}