{
  "schema_version": "1.0.0",
  "methodology_version": "v1",
  "municipality": {
    "slug": "barretos-sp",
    "name": "Barretos",
    "uf": "SP"
  },
  "edition": "2026-08",
  "period": {
    "start": "2026-03-23",
    "end": "2026-08-18"
  },
  "as_of": "2026-08-22",
  "generated_at": "2026-08-23T14:50:56.213Z",
  "redflags_resolved": [
    {
      "redflag_id": "RF-2026-08-01",
      "severity": "HIGH",
      "category": "EDITORIAL",
      "claim": "Texto de abertura descrevia a base como 'o que está sendo relatado pela população'.",
      "risk": "Sugere representatividade populacional sem amostra comprovada.",
      "fix": "Reescrito para 'problemas urbanos registrados por usuários da CiLi', com disclaimer explícito de não-representatividade.",
      "status": "FIXED"
    },
    {
      "redflag_id": "RF-2026-08-02",
      "severity": "MEDIUM",
      "category": "DATA",
      "claim": "'Outras categorias (9): 26 · 10,4%' misturava 23 registros de categorias válidas com 3 registros de category_id anômalo.",
      "risk": "Esconde uma anomalia de qualidade de dados dentro de um agregado válido.",
      "fix": "Publicado separadamente: 'Outras categorias válidas (9): 23 · 9,2%' e 'Categoria em revisão: 3 · 1,2%', com nota de qualidade de dados.",
      "status": "FIXED"
    },
    {
      "redflag_id": "RF-2026-08-03",
      "severity": "HIGH",
      "category": "METHODOLOGY",
      "claim": "'Tempo até protocolo'/'tempo até resolução comprovada' podiam ser lidos como tempo de resposta da Prefeitura.",
      "risk": "Atribui à Administração um intervalo que pode incluir tempo operacional da própria CiLi.",
      "fix": "Renomeado para 'tempo observado até protocolo/resolução comprovada', com nota explícita de que o intervalo pode incluir etapas da CiLi.",
      "status": "FIXED"
    },
    {
      "redflag_id": "RF-2026-08-04",
      "severity": "MEDIUM",
      "category": "EDITORIAL",
      "claim": "'A Prefeitura informou a conclusão' e '225 registros sem resolução... até o momento da extração'.",
      "risk": "Atribuição absoluta a um ente específico, e possível leitura de ausência de evento como prova de ausência de solução.",
      "fix": "Reescrito para 'o canal administrativo municipal observado pela CiLi indicava conclusão' e explicitada a limitação de que ausência de evento observado não é prova de ausência do fato.",
      "status": "FIXED"
    },
    {
      "redflag_id": "RF-2026-08-05",
      "severity": "CRITICAL",
      "category": "METHODOLOGY",
      "claim": "Satisfação publicada como 'Nível 1/2/3' sem rastreabilidade ao questionário real do app.",
      "risk": "SATISFACTION_SCALE_UNDOCUMENTED — rótulo público sem significado, divergente da escala real de 5 pontos do formulário.",
      "fix": "Localizado o questionário real (HistoryDetailsScreen.tsx: escala 1=Péssimo a 5=Excelente; perguntas 'Tempo de resolução' e 'Qualidade da solução no local') e a função de conversão determinística (normalizeThree em reportStore.ts). Publicados rótulos 'Baixa (1–2)/Média (3)/Alta (4–5)' com correspondência completa documentada em metodologia.",
      "status": "FIXED"
    },
    {
      "redflag_id": "RF-2026-08-06",
      "severity": "MEDIUM",
      "category": "METHODOLOGY",
      "claim": "94,1% de formalização não mencionava que boa parte da coorte antecede a infraestrutura formal de protocolo.",
      "risk": "KPI correto mas sem transparência sobre a natureza retrospectiva de parte dos dados.",
      "fix": "Adicionada nota metodológica: 128/250 registros (51,2%) antecedem a infraestrutura de protocolização (24/06/2026); denominador 192/204 preservado, nunca 192/250.",
      "status": "FIXED"
    },
    {
      "redflag_id": "RF-2026-08-07",
      "severity": "LOW",
      "category": "LEGAL",
      "claim": "Relação com TCESP/IEG-M era apenas uma frase solta, sem estrutura verificável.",
      "risk": "Relação temática difícil de auditar; risco de parecer avaliação oficial.",
      "fix": "Estruturada com manual/dimensão/indicador CiLi/natureza da relação, explicitamente restrita a municípios de SP.",
      "status": "FIXED"
    },
    {
      "redflag_id": "RF-2026-08-08",
      "severity": "LOW",
      "category": "PRIVACY",
      "claim": "Snapshot publicava células de contagem exata n=1 (categorias e resolution_audit).",
      "risk": "Reidentificação de registro individual por célula pequena.",
      "fix": "Política de supressão n<3 aplicada (scripts/intelligence/lib/privacy.js) — resolvido na revisão anterior, mantido nesta.",
      "status": "FIXED"
    },
    {
      "redflag_id": "RF-2026-08-09",
      "severity": "MEDIUM",
      "category": "LEGAL",
      "claim": "Tabela de relação TCESP/IEG-M usava um placeholder ('edição vigente no ano da publicação') em vez do nome/ano real do manual.",
      "risk": "Referência não registrada de forma concreta, quebrando o princípio de rastreabilidade jurídica exigido pelo Legal Reviewer.",
      "fix": "Legal & Methodology Reviewer verificou em fonte oficial e confirmou 'Manual IEG-M 2026 (TCESP)'; valor concreto registrado na página da edição, na metodologia e no snapshot (sources.tcesp_ieg_m_reference).",
      "status": "FIXED"
    },
    {
      "redflag_id": "RF-2026-08-10",
      "severity": "MEDIUM",
      "category": "DATA",
      "claim": "CILI_OPEN_PROTOCOL_AGING_V1 permanecia DADO_NAO_OBSERVAVEL_COM_CONFIANCA por falta de conexão de leitura.",
      "risk": "Indicador anunciado na arquitetura, mas sem dado real publicado.",
      "fix": "Conexão de leitura reestabelecida com role dedicada (cili_intelligence_reader_20260823, mesmos grants mínimos); consulta 07_open_protocol_aging_v1.sql executada; indicador calculado pelo motor determinístico já testado. Nota de teto estrutural de idade (infraestrutura de protocolo com ~59 dias de existência) adicionada para evitar leitura equivocada das faixas 61-90/>90 zeradas.",
      "status": "FIXED"
    }
  ],
  "metrics": {
    "A_CILI_REGISTERS_V1": {
      "value": 250,
      "unit": "MAP",
      "n": 250
    },
    "B_CILI_CATEGORY_DISTRIBUTION_V1": [
      {
        "category_id": "limpeza_urbana",
        "n": 91,
        "pct": 36.4
      },
      {
        "category_id": "pavi_vias",
        "n": 67,
        "pct": 26.8
      },
      {
        "category_id": "mobilidade_urb",
        "n": 39,
        "pct": 15.6
      },
      {
        "category_id": "saneamento",
        "n": 14,
        "pct": 5.6
      },
      {
        "category_id": "areas_verdes",
        "n": 13,
        "pct": 5.2
      },
      {
        "category_id": "seg_pub",
        "n": 6,
        "pct": 2.4
      },
      {
        "category_id": "poluicao_amb",
        "n": 4,
        "pct": 1.6
      },
      {
        "category_id": "sinal_transito",
        "n": 4,
        "pct": 1.6
      },
      {
        "category_id": "ilum_pub",
        "n": 4,
        "pct": 1.6
      },
      {
        "category_id": "all_subcategories",
        "n": 3,
        "pct": 1.2,
        "note": "valor de category_id suspeito, ver secao de auditoria de rotulos"
      },
      {
        "category_id": "outras_categorias_pequenas",
        "n": 5,
        "pct": 2,
        "note": "5 categoria(s) com n<3 agregadas para evitar reidentificação de registro individual"
      }
    ],
    "C_CILI_SUBCATEGORY_DISTRIBUTION_V1": [
      {
        "token": "buraco na via",
        "n": 60,
        "pct_of_maps": 24
      },
      {
        "token": "acumulo de lixo em via publica",
        "n": 50,
        "pct_of_maps": 20
      },
      {
        "token": "obstaculo na calcada",
        "n": 47,
        "pct_of_maps": 18.8
      },
      {
        "token": "descarte irregular (ponto viciado)",
        "n": 27,
        "pct_of_maps": 10.8
      },
      {
        "token": "acumulo de lixo em terreno baldio",
        "n": 22,
        "pct_of_maps": 8.8
      },
      {
        "token": "entulho na calcada",
        "n": 22,
        "pct_of_maps": 8.8
      },
      {
        "token": "moveis velhos descartados",
        "n": 11,
        "pct_of_maps": 4.4
      },
      {
        "token": "calcada irregular ou quebrada",
        "n": 9,
        "pct_of_maps": 3.6
      },
      {
        "token": "residuos volumosos",
        "n": 9,
        "pct_of_maps": 3.6
      },
      {
        "token": "mato alto em terreno (limpeza urbana)",
        "n": 8,
        "pct_of_maps": 3.2
      }
    ],
    "D_CILI_PROTOCOL_CONVERSION_V1": {
      "numerator_valid_protocol_maps": 192,
      "denominator_observed_eligible_maps": 204,
      "value": 0.9412,
      "unit": "proportion",
      "n": 204,
      "note": "denominador = MAPs com pelo menos uma tentativa oficial de bot ou protocolo formal registrado (elegibilidade observada, nao total historica)"
    },
    "E_CILI_CREATION_TO_PROTOCOL_V1": {
      "n": 192,
      "unit": "hours",
      "p25": 0.44,
      "median": 60.9,
      "p75": 218.74,
      "p90": 510.33
    },
    "F_CILI_RESOLUTION_PROVEN_V1": {
      "numerator": 25,
      "denominator": 250,
      "value": 0.1,
      "unit": "proportion",
      "n": 250
    },
    "G_CILI_CREATION_TO_PROVEN_RESOLUTION_V1": {
      "n": 25,
      "unit": "hours",
      "p25": 269.57,
      "median": 494.48,
      "p75": 1030.05,
      "p90": 1835.35
    },
    "H_CILI_RECURRENCE_BASELINE_V1": {
      "recurrent_map_count": 19,
      "denominator_map_count": 250,
      "value": 0.076,
      "radius_meters": 50,
      "lookback_days": 365
    },
    "I_CILI_OPEN_PROTOCOL_AGING_V1": {
      "indicator_code": "CILI_OPEN_PROTOCOL_AGING_V1",
      "definition_version": "v1",
      "as_of": "2026-08-22T00:00:00.000Z",
      "total_with_valid_protocol": 192,
      "total_open": 179,
      "total_concluded": 13,
      "excluded_missing_or_invalid_date": 0,
      "buckets": {
        "0-30": 38,
        "31-60": 141,
        "61-90": 0,
        ">90": 0
      },
      "over_30_days": {
        "n": 141,
        "pct": 78.8
      },
      "over_60_days": {
        "n": 0,
        "pct": 0
      },
      "over_90_days": {
        "n": 0,
        "pct": 0
      },
      "median_age_days": 45,
      "quality_flags": [],
      "calculation_timestamp": "2026-08-23T14:50:30.379Z",
      "infrastructure_age_ceiling_note": "A infraestrutura formal de protocolização entrou em operação em 24/06/2026. Na data de corte desta edição (22/08/2026), nenhum protocolo pode ter mais de ~59 dias — por isso as faixas 61-90 e >90 dias são necessariamente zero nesta edição. Isso é um limite estrutural da coorte, não uma medida de que os protocolos mais antigos foram resolvidos rapidamente."
    },
    "representativeness": {
      "distinct_authors": 14,
      "total_maps": 250,
      "maps_without_identified_author": 0,
      "top1_author_share": 0.772,
      "top5_authors_share": 0.956,
      "distribution_bands": [
        {
          "band": "1 MAP",
          "authors": 7,
          "maps": 7
        },
        {
          "band": "2-5 MAPs",
          "authors": 5,
          "maps": 14
        },
        {
          "band": "21+ MAPs",
          "authors": 2,
          "maps": 229
        }
      ]
    },
    "satisfaction_exploratory": {
      "agility": {
        "n": 23,
        "level_1": 8,
        "level_2": 2,
        "level_3": 13,
        "descriptive_mean_1_to_3": 2.217
      },
      "resolutivity": {
        "n": 23,
        "level_1": 4,
        "level_2": 4,
        "level_3": 15,
        "descriptive_mean_1_to_3": 2.478
      },
      "scale": {
        "scale_version": "v1",
        "original_app_scale": "1-5 (legenda oficial do app: '1 = Péssimo e 5 = Excelente')",
        "original_app_source": "src/app/screens/HistoryDetailsScreen.tsx (campos agilityLevel/resolutivityLevel)",
        "original_app_questions": {
          "agility": "Tempo de resolução",
          "resolutivity": "Qualidade da solução no local"
        },
        "stored_scale": "1-3, gravado via conversão determinística quando o backend aplica a restrição legada de 3 faixas (report_resolution_feedback CHECK BETWEEN 1 AND 3)",
        "stored_scale_mapping_function": "normalizeThree (src/core/history/reportStore.ts)",
        "mapping": {
          "raw_1_or_2": "level_1",
          "raw_3": "level_2",
          "raw_4_or_5": "level_3"
        },
        "public_labels": {
          "level_1": "Baixa (1–2)",
          "level_2": "Média (3)",
          "level_3": "Alta (4–5)"
        }
      }
    },
    "resolution_audit": {
      "comprovado": {
        "n": 25,
        "pct": 10
      },
      "nao_comprovado_conclusao_externa_sem_prova_fisica": {
        "suppressed": true,
        "reason": "n<3, contagem exata omitida para evitar reidentificação de registro individual"
      },
      "nao_comprovado_sem_conclusao_registrada": {
        "n": 224,
        "pct": 89.6
      },
      "indeterminado": {
        "n": 0,
        "pct": 0
      }
    },
    "protocol_audit_abc": {
      "group_a_strict_v1": {
        "n": 192,
        "pct": 76.8
      },
      "group_b_formal_outside_v1": {
        "n": 0,
        "pct": 0
      },
      "group_c_not_eligible": {
        "n": 58,
        "pct": 23.2,
        "decomposition": {
          "never_touched_by_bot_or_protocol": 46,
          "touched_but_never_achieved_valid_protocol": 12
        }
      },
      "exclusion_reasons_at_formal_protocol_row_level": {
        "missing_submission_link": 0,
        "empty_protocol_number": 0,
        "missing_captured_at": 0,
        "not_official_submission": 0,
        "is_dry_run": 0,
        "reconciliation_mismatch": 0,
        "obs_missing_captured_at": 0,
        "missing_evidence": 0,
        "total_formal_rows_all_group_a": 192
      },
      "note": "100% das linhas de report_formal_protocols existentes na coorte satisfazem todos os 7 requisitos V1 (grupo B vazio); a diferenca para o grupo A vem inteiramente de MAPs sem nenhum registro formal (grupo C), nao de registros formais malformados"
    },
    "data_quality": {
      "all_subcategories_anomaly_count": 3,
      "all_subcategories_note": "category_id='all_subcategories' não corresponde a categoria real do catálogo; publicado separadamente como 'Categoria em revisão', nunca somado às categorias válidas.",
      "retrospective_protocol_maps": 128,
      "retrospective_protocol_note": "Registros criados antes de 24/06/2026 (entrada em operação da infraestrutura formal de protocolização) tiveram captura de protocolo retrospectiva, não em tempo real."
    }
  },
  "limitations": {
    "representativeness": "Dados descrevem registros observados na plataforma CiLi na base analisada, não uma amostra populacional do município.",
    "open_protocol_aging": "Não observável com confiança nesta edição — ver metrics.I_CILI_OPEN_PROTOCOL_AGING_V1.",
    "time_intervals": "Os intervalos criação→protocolo e criação→resolução comprovada podem incluir etapas operacionais da própria CiLi (ex.: BotG2), não apenas tempo da Administração — nunca devem ser lidos como 'tempo de resposta da Prefeitura'.",
    "administrative_conclusion": "Uma conclusão indicada pelo canal administrativo municipal observado pela CiLi nunca é automaticamente tratada como resolução fisicamente comprovada.",
    "absence_of_event": "A ausência de um evento de conclusão/resolução observado pela CiLi não é prova de que o evento não ocorreu por outros canais — apenas indica ausência de sinal capturado pela plataforma até a data de corte."
  },
  "sources": {
    "extraction_role": "cili_intelligence_reader_202608 (read-only, BYPASSRLS, SELECT-only)",
    "queries": "analytics/sql/01..07_*.sql",
    "tcesp_ieg_m_reference": {
      "manual": "Manual IEG-M 2026 (TCESP)",
      "dimension": "i-Amb (Meio Ambiente)",
      "cili_indicator": "Descarte irregular (subcategoria, 10,8% dos registros)",
      "relation_nature": "temática — nenhuma equivalência metodológica",
      "applicable_uf": "SP"
    }
  },
  "checksum": "sha256:dbeea8ab104b7a8e538bcd7fc917b6da33b01815f852aa97b8422e007fcad822"
}
