{
  "id": "pt-migracao-en",
  "versao": "1.0.0",
  "nota": "The map from this repository's Portuguese backend vocabulary to English. It is data, and published, because the repository's own rule is that a classification is a published formula or it does not happen. NOTHING HAS BEEN RENAMED YET: applying this map requires changes to three files an agent here may not edit. See `bloqueado` below.",
  "porque": "The data layer has to be language-neutral so that more than one language edition can share it. A Portuguese key is fine while there is one edition and wrong the moment there are two — and this publication intends more. What a reader SEES stays Portuguese; the vocabulary the machinery uses to talk about it becomes English.",
  "aplica_se_a": [
    "dados/**/*.json",
    "api/v1/**/*.json",
    "build/*.py",
    "assets/**/*.js",
    "admin/build/*.mjs"
  ],
  "pastas": {
    "dados": "data",
    "fontes": "sources",
    "fontes/congeladas": "sources/frozen",
    "fontes/transferidas": "sources/transferred",
    "seccoes": "sections",
    "redacao/runs": "newsroom/runs",
    "redacao/correio": "newsroom/mail",
    "redacao/entregas": "newsroom/deliveries",
    "redacao/revisoes": "newsroom/reviews",
    "redacao/decisoes": "newsroom/decisions",
    "redacao/issues": "newsroom/issues"
  },
  "nao_se_aplica": {
    "nota": "These stay Portuguese, and each for a stated reason rather than by omission.",
    "urls_do_leitor": "artigos/, entidades/, empresas/, protagonistas/, instituicoes/, politicas/, casos-de-uso/, codigo-aberto/, diaspora/, eventos/, registo/, grafo/, aviso/, metodo/ — a visitor reads these in the address bar. In a multilingual future they are the PORTUGUESE edition's paths, and a French edition would have its own; translating them now would not help that and would break every published link. And redacao/ itself: redacao/index.html is the newsroom-floor page, served at /redacao/ in Portuguese. Its BACKEND subfolders move to newsroom/; the page does not. The two living side by side is correct rather than untidy — one is a Portuguese edition's address, the other is where the machinery keeps its records.",
    "verbos_da_ontologia": "fala_em, publicada_por and every other edge verb, with their leitura and leitura_inversa. CLAUDE.md rule 6: the graph reads aloud IN PORTUGUESE, and a verb is the sentence a reader hears. The FIELD NAMES around them move; the verbs do not.",
    "tipos_de_entidade": "Pessoa, Organizacao, Instituicao, Evento, Local, Palco, Tema, Tecnologia, Setor, Produto, Servico, Ideia — they appear in reader-facing URLs under entidades/.",
    "valores": "Every value in every file. This map renames the vocabulary, never the content: a name, a title, an excerpt, a tag label and a frozen byte are untouched.",
    "estados": "procurado, rascunho, verificado, publicado, disputada, confirmada, nao_encontrada — a reader sees these words on the page. Note `superseded`, which is English among them and is the one genuine inconsistency; it is the editor's to settle."
  },
  "bloqueado": {
    "nota": "THIS MIGRATION CANNOT BE RUN BY AN AGENT WORKING IN THIS REPOSITORY. build/gates.py and build/entregas.py are in the deny list of .claude/settings.json — an agent that can edit the gate that stops it has no gate — and both hardcode the backend folder names AND the keys below. Renaming without changing them turns the build permanently red through files no agent here may fix.",
    "ficheiros": [
      "build/gates.py",
      "build/entregas.py",
      "dados/aviso.json"
    ],
    "chaves": [
      "a_regra",
      "acesso",
      "afirmacoes",
      "alcance",
      "arestas",
      "arestas_propostas",
      "assenta_em",
      "atualizado",
      "bloco",
      "blocos",
      "capturas",
      "caracteres_visiveis",
      "cofre",
      "comentarios",
      "confianca_declarada",
      "confirmada",
      "confirmadas",
      "congelada",
      "congelada_em",
      "consultas",
      "contacto",
      "contagem",
      "contagens",
      "cor",
      "correspondencia",
      "correspondeu",
      "data",
      "de",
      "decidido_em",
      "decidido_por",
      "destino",
      "dominio",
      "editor_de_registo",
      "entidades_propostas",
      "entradas",
      "entrega",
      "entregas",
      "erros_de_esquema",
      "especie",
      "esquema_valido",
      "estado",
      "estado_entregue",
      "estados",
      "etiqueta",
      "etiquetas",
      "excerto",
      "ferramenta",
      "ficheiro",
      "fonte",
      "fonte_inacessivel",
      "fontes",
      "fontes_legiveis",
      "formato",
      "fundamento",
      "historia_sugerida",
      "historias",
      "humano_no_circuito",
      "inverso",
      "itens",
      "legivel",
      "leitura",
      "leitura_inversa",
      "lingua",
      "localizador",
      "modelo",
      "mudancas",
      "nao_encontrada",
      "nao_encontradas",
      "nome",
      "nos",
      "nota",
      "notas_do_assistente",
      "o_que_dizem_as_fontes",
      "o_que_e",
      "o_que_significa",
      "oradores",
      "organizacao",
      "organizacoes",
      "origem",
      "padrao",
      "pagina",
      "papel",
      "para",
      "parte",
      "pesquisa",
      "pessoas",
      "porque",
      "porque_importa",
      "portoes",
      "proibidos",
      "propostas_de_vocabulario",
      "publicado",
      "publicado_em",
      "publicado_por",
      "publicador",
      "redacao",
      "responsavel",
      "resumo",
      "resumo_brief",
      "revisao",
      "rotulo",
      "seccao",
      "seccoes",
      "sessoes",
      "sobre",
      "temas",
      "texto",
      "tipo",
      "tipos",
      "titulo",
      "trocos",
      "verbo",
      "verificacao",
      "verificacao_dados_pessoais",
      "versao"
    ],
    "quantas_chaves": 115,
    "quem_desbloqueia": "The editor of record, by making those changes or by lifting the deny-list entries for the duration of the migration."
  },
  "contagem": 467,
  "mapa": {
    "a_afirmacao_honesta": "the_honest_claim",
    "a_chave_de_leitura": "the_key_of_reading",
    "a_espera_do_editor": "awaiting_the_editor",
    "a_lingua_dos_padroes": "the_language_of_the_patterns",
    "a_regra": "the_rule",
    "abertas": "open",
    "aberto": "open",
    "aberto_em": "open_in",
    "abertos": "open",
    "acao": "action",
    "acesso": "access",
    "achado_do_cofre_dos_jogos": "finding_from_the_games_vault",
    "afirmacao": "claim",
    "afirmacao_central": "central_claim",
    "afirmacoes": "claims",
    "agente": "agent",
    "agente_verbatim": "agent_verbatim",
    "agentes": "agents",
    "ainda_nao_construido": "not_built_yet",
    "alcance": "scope",
    "altura_da_cromagem_acima_da_mancheta_a_390px": "chrome_height_above_the_masthead_at_390px",
    "alvos": "target_numbers",
    "alvos_vs_resultados": "target_numbers_vs_results",
    "antetitulo": "kicker",
    "aplica_se_a": "applies_to",
    "arestas": "edges",
    "arestas_propostas": "proposed_edges",
    "artigo": "article",
    "assenta_em": "stands_on",
    "assistentes_exteriores": "outside_assistants",
    "assunto": "subject",
    "atualizado": "updated",
    "aviso_obrigatorio": "required_notice",
    "aviso_sobre_esta_cronologia": "notice_about_this_timeline",
    "bancadas": "desks",
    "bloco": "block",
    "bloco_primeira_pagina": "front_page_block",
    "blocos": "blocks",
    "bloqueado": "blocked",
    "bloqueado_por": "blocked_by",
    "bloqueados": "blocked",
    "bloqueio": "block_reason",
    "caixa": "box",
    "camadas_de_agente": "agent_layers",
    "caminho": "path",
    "campo": "field",
    "campos": "fields",
    "captura": "capture",
    "capturas": "captures",
    "caracteres_por_linha_entidade": "characters_by_line_entity",
    "caracteres_por_linha_primeira_pagina": "characters_per_line_front_page",
    "caracteres_visiveis": "visible_characters",
    "carga": "load",
    "cartao": "card",
    "cartoes": "cards",
    "cartoes_a_espera": "waiting_cards",
    "categoria": "category",
    "categorias_detidas": "categories_held",
    "categorias_recusadas": "categories_refused",
    "chave": "key",
    "chave_de_localstorage": "localstorage_key",
    "chaves": "keys",
    "classe": "class",
    "classe_papel": "role_class",
    "classe_papel_formula": "role_class_formula",
    "classe_papel_rotulo": "role_class_label",
    "cofre": "vault",
    "coluna": "column",
    "colunas": "columns",
    "com_etiquetas": "with_tags",
    "com_linkedin": "with_linkedin",
    "com_temas": "with_topics",
    "com_varias_pessoas": "with_several_people",
    "comentario": "comment",
    "comentarios": "comments",
    "como": "how",
    "como_e_registado": "how_it_is_recorded",
    "como_se_refaz": "how_to_rebuild_it",
    "como_se_usa": "how_it_is_used",
    "concelho": "municipality",
    "concordam": "agree",
    "confianca_declarada": "declared_confidence",
    "confirmada": "confirmed",
    "confirmadas": "confirmed",
    "confirmado_no_navegador": "confirmed_in_the_browser",
    "congelada": "frozen",
    "congelada_em": "frozen_on",
    "congelado": "frozen",
    "consequencia": "consequence",
    "conservacao": "retention",
    "consultas": "queries",
    "contacto": "contact",
    "contagem": "count",
    "contagem_e_de_dados": "count_and_of_data",
    "contagens": "counts",
    "cor": "colour",
    "corpo": "body",
    "corre": "runs",
    "corre_sobre": "runs_over",
    "correcoes_a_revisao": "corrections_to_the_review",
    "correio": "mail",
    "correspondencia": "match",
    "correspondeu": "matched",
    "credenciais_em_localstorage": "credentials_in_localstorage",
    "dados": "data",
    "data": "date",
    "data_do_pacote": "bundle_date",
    "data_publicacao": "date_publication",
    "datas": "dates",
    "de": "from",
    "de_alias": "of_alias",
    "de_estado_para_agente": "of_state_for_agent",
    "de_onde_vem": "where_it_comes_from",
    "de_quem": "of_who",
    "decidido_em": "decided_on",
    "decidido_por": "decided_by",
    "decisao": "decision",
    "decisoes_do_editor": "editor_decisions",
    "declarado_na_pagina": "declared_on_the_page",
    "definicao": "definition",
    "departamentos": "departments",
    "derivado": "derived",
    "derivado_de": "derived_from",
    "desconhecido": "unknown",
    "destino": "target",
    "dia": "day",
    "diario": "journal",
    "direcao": "direction",
    "direitos": "rights",
    "disputadas": "disputed",
    "dizemos": "we_say",
    "documentos": "documents",
    "dois_identificadores": "two_identifiers",
    "dominio": "domain",
    "e": "and",
    "e_a_ordem_certa": "and_the_right_order",
    "e_depois": "and_then",
    "e_tambem": "and_also",
    "editor_da_pagina": "editor_of_the_page",
    "editor_de_registo": "editor_of_record",
    "elementos_em_mono_na_primeira_pagina": "mono_elements_on_the_front_page",
    "em_transito": "in_transit",
    "encontrado_pelo_cofre_e_confirmado_aqui": "found_by_the_vault_and_confirmed_here",
    "entidades": "entities",
    "entidades_propostas": "proposed_entities",
    "entrada": "inbox",
    "entradas": "entries",
    "entrega": "delivery",
    "entregas": "deliveries",
    "entregas_por_rever": "deliveries_to_review",
    "errado_quando": "wrong_when",
    "erros_de_esquema": "schema_errors",
    "escreve_em": "writes_in",
    "esforco": "effort",
    "especie": "species",
    "especies": "species",
    "esquema_valido": "schema_valid",
    "estado": "state",
    "estado_entregue": "delivered_state",
    "estados": "states",
    "etiqueta": "tag",
    "etiquetas": "tags",
    "etiquetas_distintas": "distinct_tags",
    "excerto": "excerpt",
    "execucoes": "runs",
    "falta": "missing",
    "faz": "does",
    "fechados": "closed",
    "ferramenta": "tool",
    "ferramentas": "tools",
    "ficheiro": "file",
    "ficheiros": "files",
    "ficheiros_com_o_nome": "files_with_the_name",
    "fim": "end",
    "finalidade": "purpose",
    "fluxo": "stream",
    "fonte": "source",
    "fonte_do_trabalho": "source_of_the_work",
    "fonte_inacessivel": "source_unreachable",
    "fontes": "sources",
    "fontes_alvo": "sources_target_number",
    "fontes_legiveis": "readable_sources",
    "fora_do_quadro": "off_the_board",
    "forma": "shape",
    "formato": "format",
    "formato_do_papel": "format_of_the_role",
    "formula_do_quadro": "formula_of_the_board",
    "fornecedor": "supplier",
    "fundamento": "ground",
    "grau": "degree",
    "gravidade": "gravity",
    "grupo": "group",
    "hashes_reverificados": "hashes_reverified",
    "historia_sugerida": "suggested_story",
    "historias": "stories",
    "historica": "historical",
    "humano_no_circuito": "human_in_the_loop",
    "id_correio": "id_mail",
    "id_curto": "short_id",
    "id_no_registo_de_origem": "id_in_register_of_source_node",
    "identidades_historicas": "historical_identities",
    "indice_temas": "topic_index",
    "inicio": "start",
    "interruptor": "switch",
    "inverso": "inverse",
    "irmaos": "siblings",
    "issues_do_jornal": "newspaper_issues",
    "issues_movidos": "issues_moved",
    "itens": "items",
    "legibilidade": "legibility",
    "legivel": "readable",
    "legivel_por_maquina": "machine_readable",
    "leia_me": "read_me",
    "leitura": "reading",
    "leitura_inversa": "inverse_reading",
    "leu_antes_de_construir": "read_before_building",
    "lexico": "lexicon",
    "ligaveis": "linkable",
    "ligaveis_em_prosa": "linkable_in_prose",
    "ligavel": "linkable",
    "ligavel_em_prosa": "linkable_in_prose",
    "limite": "limit",
    "limites_do_lado_do_cliente": "client_side_limits",
    "lingua": "language",
    "linhas": "lines",
    "local": "place",
    "localizador": "locator",
    "lotes": "batches",
    "lugar": "place",
    "lugares": "places",
    "marcador": "marker",
    "marcadores": "markers",
    "marcas_na_prosa": "marks_in_the_prose",
    "medida": "measure",
    "medido_no_navegador_depois": "measured_in_the_browser_after",
    "membro": "member",
    "mensagens": "messages",
    "migrado_de": "migrated_from",
    "missao": "mission",
    "modelo": "model",
    "moeda": "currency",
    "montante": "amount",
    "montante_maximo": "max_amount",
    "movidos": "moved",
    "mudancas": "changes",
    "nao_conferidas": "unchecked",
    "nao_construido": "not_built",
    "nao_e_aconselhamento_juridico": "not_legal_advice",
    "nao_e_jornalismo": "not_journalism",
    "nao_encontrada": "not_found",
    "nao_encontradas": "not_found",
    "nao_feito": "not_handled",
    "nao_responsavel_por": "not_responsible_for",
    "nao_se_aplica": "does_not_apply",
    "nenhum": "none",
    "niveis": "levels",
    "nivel": "level",
    "no": "node",
    "nome": "name",
    "nome_curto": "short_name",
    "nomes_de_palco": "names_of_stage",
    "nos": "nodes",
    "nos_bytes": "in_bytes",
    "nota": "note",
    "nota_de_ordem": "note_of_order",
    "nota_en": "note_en",
    "nota_legibilidade": "note_legibility",
    "notas_do_assistente": "assistant_notes",
    "numero_iniciativas": "initiative_count",
    "nunca_diz": "never_says",
    "o_blocker": "the_blocker",
    "o_primeiro_remendo_estava_errado": "the_first_patch_was_wrong",
    "o_que": "what",
    "o_que_a_medicao_mostrou": "what_the_measurement_showed",
    "o_que_a_revisao_disse": "what_the_review_said",
    "o_que_dizem_as_fontes": "what_the_sources_say",
    "o_que_e": "what_it_is",
    "o_que_e_conferido": "what_is_checked",
    "o_que_era": "what_it_was",
    "o_que_este_site_nao_faz": "what_this_site_does_not_do",
    "o_que_falta": "the_that_missing",
    "o_que_faz": "the_that_does",
    "o_que_fez": "what_it_did",
    "o_que_ja_se_tem": "what_there_already_is",
    "o_que_nao_afirma": "what_it_does_not_claim",
    "o_que_nao_e": "the_that_not_and",
    "o_que_nao_esta_confirmado": "what_is_not_confirmed",
    "o_que_nao_fez": "what_it_did_not_do",
    "o_que_nao_pode": "the_that_not_may",
    "o_que_nao_se_pode_verificar": "what_cannot_be_verified",
    "o_que_nunca_vai": "what_never_travels",
    "o_que_o_evento_declara": "what_the_event_declares",
    "o_que_o_portao_novo_encontrou_que_a_revisao_nao_viu": "what_the_new_gate_found_that_the_review_missed",
    "o_que_pode_afirmar_hoje": "what_it_can_claim_today",
    "o_que_se_confirmou_estar_certo": "what_was_confirmed_correct",
    "o_que_se_corrigiu": "what_was_corrected",
    "o_que_se_fez": "what_was_done",
    "o_que_se_leu": "what_was_read",
    "o_que_significa": "what_it_means",
    "o_que_vai_na_carga": "what_travels_in_the_payload",
    "observacoes": "observations",
    "obtida": "fetched",
    "obtido_em": "fetched_on",
    "obtido_por": "fetched_by",
    "ocorrencias": "occurrences",
    "onde": "where",
    "onde_esta": "where_it_is",
    "onde_estao": "where_they_are",
    "opcoes": "options",
    "oposicao": "opposition",
    "oradores": "speakers",
    "ordem": "order",
    "organizacao": "organisation",
    "organizacoes": "organisations",
    "orientacao": "guidance",
    "origem": "source_node",
    "origem_tipo": "source_node_type",
    "padrao": "pattern",
    "pagina": "page",
    "palavras": "words",
    "palco": "stage",
    "palcos": "stages",
    "papel": "role",
    "para": "to",
    "para_alias": "for_alias",
    "pares": "pairs",
    "parte": "part",
    "participa": "takes_part",
    "passos": "steps",
    "pasta": "folder",
    "pastas": "folders",
    "pastas_alteradas": "folders_changed",
    "patrocinadores": "sponsors",
    "pergunta": "question",
    "perguntas_em_aberto": "open_questions",
    "periodo": "period",
    "pesquisa": "research",
    "pessoa": "person",
    "pessoa_etiquetas": "person_tags",
    "pessoa_temas": "person_topics",
    "pessoas": "people",
    "pode": "may",
    "pontes": "bridges",
    "por": "by",
    "por_agente": "by_agent",
    "por_artigo": "by_article",
    "por_especie": "by_species",
    "por_fundamento": "by_ground",
    "por_resolver": "unresolved",
    "por_rever": "to_review",
    "por_tipo": "by_type",
    "por_tratar": "unhandled",
    "porque": "why",
    "porque_aqui": "why_here",
    "porque_e_do_editor": "why_and_of_the_editor",
    "porque_esta_bloqueado": "why_it_is_blocked",
    "porque_esta_materia": "why_this_subject",
    "porque_existe": "why_it_exists",
    "porque_existe_este_ficheiro": "why_this_file_exists",
    "porque_fica": "why_it_stays",
    "porque_hibrido": "why_hybrid",
    "porque_importa": "why_it_matters",
    "porque_nao": "why_not",
    "porque_nao_agora": "why_not_now",
    "porque_nao_se_unificou": "why_they_were_not_merged",
    "porque_pessoal": "why_personal",
    "porque_publicada": "why_published",
    "porque_um_aviso_publico": "why_a_public_notice",
    "porque_uma_fila_de_acrescento": "why_an_append_lane",
    "portanto": "therefore",
    "portao": "gate",
    "portoes": "gates",
    "postura": "posture",
    "principais": "main",
    "prioridade": "priority",
    "procurado": "wanted",
    "programa": "programme",
    "proibidos": "forbidden",
    "promessa": "promise",
    "proposta": "proposal",
    "propostas_de_vocabulario": "vocabulary_proposals",
    "protocolo": "protocol",
    "protocolo_fonte": "protocol_source",
    "protocolo_versao": "protocol_version",
    "publica": "publishes",
    "publicacao": "publication",
    "publicado": "published",
    "publicado_antes_de_nomear": "published_before_naming",
    "publicado_em": "published_on",
    "publicado_por": "published_by",
    "publicador": "publisher",
    "publicados": "published",
    "publicavel": "publishable",
    "quadro": "board",
    "qualificacao": "qualification",
    "quando": "when",
    "quantas_chaves": "key_count",
    "quem": "who",
    "quem_desbloqueia": "who_unblocks",
    "quem_envia": "who_sends",
    "quem_escreve_onde": "who_writes_where",
    "quem_move": "who_moves",
    "quem_o_usa": "who_uses_it",
    "quem_recebe": "who_receives",
    "rascunho": "draft",
    "recusa": "refuses",
    "recusa_imposta_por": "refusal_imposed_by",
    "recusados": "refused",
    "redacao": "newsroom",
    "registo": "register",
    "regra": "rule",
    "regra_de_escrita": "writing_rule",
    "regra_sem_razao": "rule_without_a_reason",
    "regras": "rules",
    "repositorio": "repository",
    "responde_a": "answers",
    "responsavel": "controller",
    "resumo": "summary",
    "resumo_brief": "brief_summary",
    "retirada_em": "withdrawn_on",
    "revisado_e_nao_adotado": "reviewed_and_not_adopted",
    "revisao": "review",
    "revisao_contra": "reviewed_against",
    "revisao_do_outro_agente": "the_other_agents_review",
    "revisao_versao": "review_version",
    "rotulo": "label",
    "saida": "outbox",
    "seccao": "section",
    "seccoes": "sections",
    "sessoes": "sessions",
    "sigla": "acronym",
    "significa": "means",
    "so_ele_pode": "only_they_may",
    "sobre": "about",
    "taxonomia": "taxonomy",
    "tem_prosa": "has_prose",
    "tema": "topic",
    "temas": "topics",
    "temas_distintos": "distinct_topics",
    "teste": "test",
    "texto": "text",
    "tipo": "type",
    "tipos": "types",
    "tipos_de_entidade": "types_of_entity",
    "titulares": "holders",
    "titulo": "title",
    "trabalha_com": "works_with",
    "tratado": "handled",
    "tratamento_do_que_chega": "handling_of_what_arrives",
    "trocos": "stretches",
    "ultimo_toque": "last_touch",
    "uma_medicao_a_conferir": "a_measurement_to_check",
    "urls_do_leitor": "reader_urls",
    "verbatim_no_registo": "verbatim_in_register",
    "verbo": "verb",
    "verbos": "verbs",
    "verbos_da_ontologia": "verbs_of_the_ontology",
    "verbos_derivados": "derived_verbs",
    "verificacao": "verification",
    "verificacao_dados_pessoais": "personal_data_check",
    "verificado": "verified",
    "verificado_em": "verified_in",
    "versao": "version",
    "versao_do_pacote": "bundle_version",
    "versao_do_site_de_origem": "source_site_version",
    "versao_observada": "observed_version",
    "vespera": "eve"
  },
  "como_foi_feito": {
    "nota": "469 of these were composed word by word from a Portuguese-English dictionary; 121 were written by hand. The split is the finding, not an implementation detail.",
    "porque_a_mao": "Composition produces `why_existe_este_file` for `porque_existe_este_ficheiro` and `not_and_aconselhamento_juridico` for `nao_e_aconselhamento_juridico`. 120 keys here are phrases rather than compounds — `o_que_nao_se_pode_verificar`, `o_que_o_portao_novo_encontrou_que_a_revisao_nao_viu` — and a half-translated key ships as a mixture of two languages, which is worse than either. A rule that gets those wrong should not be trusted with the other 469 unchecked either, so every one was read.",
    "encontrado_por": "Running the migration against a scratch clone of this repository and reading what broke. Five distinct classes of defect came out of it, each of which would have reached the live site: folder renames applied child-before-parent leaving an empty folder behind; a pattern that matched `\"dados\"` but not `\"dados/historias.json\"` nor `\"fontes/congeladas\"`; a key map built from dados/ alone, missing every key that lives only in artigos/; the 120 half-translations; and `redacao/` being a READER URL whose backend subfolders move while the page does not."
  },
  "falta_alem_do_mapa": {
    "nota": "This map renames quoted names. It does NOT rename Python identifiers, and that is a gap with teeth rather than a limitation to note in passing.",
    "o_problema": "build/comentarios.py calls junta(quando=..., agente=..., especie=..., porque=...) — Portuguese keyword arguments that build a dict whose keys this map renames. Rename the strings and the code stops agreeing with itself: the function is handed `agente` and reads `agent`. The scratch run died on exactly that, after everything else was already right.",
    "quantos_identificadores": 126,
    "identificadores": [
      "afirmacoes",
      "agente",
      "agente_verbatim",
      "agentes",
      "alvos",
      "arestas",
      "assunto",
      "bancadas",
      "bloco",
      "blocos",
      "bloqueado",
      "bloqueio",
      "caixa",
      "caminho",
      "campo",
      "campos",
      "carga",
      "cartoes",
      "chave",
      "chaves",
      "classe",
      "coluna",
      "colunas",
      "comentarios",
      "consultas",
      "contagem",
      "contagens",
      "cor",
      "corpo",
      "correio",
      "correspondeu",
      "dados",
      "data",
      "datas",
      "decisao",
      "destino",
      "dia",
      "direitos",
      "entidades",
      "entrada"
    ],
    "o_que_e_preciso": "An identifier rename is not a regular expression over quoted strings: it needs to know a name from a string that happens to look like one. Either do it per file by hand, or drive it from Python's own parser. It is the largest remaining piece and it is code-only — no data moves with it."
  },
  "defeitos_encontrados_ao_ensaiar": [
    "Folder renames applied child-before-parent created the target folder, so the parent move was skipped and an empty fontes/ was left behind.",
    "The pattern matched \"dados\" but not \"dados/historias.json\" nor \"fontes/congeladas\" — and the second of those is how nearly every builder refers to a folder.",
    "The key map was built from dados/**/*.json alone and missed every key that lives only in artigos/**/*.json, so the code was renamed and the data was not.",
    "120 keys are phrases rather than compounds and came out half-translated — why_existe_este_file. Each was then written by hand.",
    "redacao/ is a READER URL: redacao/index.html is the newsroom-floor page. Its backend subfolders move; the page does not.",
    "Portuguese Python identifiers — keyword arguments and locals — are invisible to a string-level rename, so code and data drift apart. Unsolved; see falta_alem_do_mapa."
  ],
  "done_since_the_map": {
    "note": "Renamed after v0.22.0 drew this map, and therefore never part of the blocked migration: these artefacts were CREATED in English-speaking areas after the map existed, so naming them Portuguese and adding them to the backlog would have been the mistake. The key is English among Portuguese keys on purpose — this file is itself pending migration, and a new Portuguese key would be one more to rename.",
    "when": "2026-09-15",
    "why": "The editor pointed out that non-content areas were still carrying Portuguese addresses. `redacao/` is not in `nao_se_aplica.urls_do_leitor`, and its subfolders are already mapped to `newsroom/`, so the map already agreed.",
    "pages": {
      "redacao/entrevistas/ → newsroom/interviews/": "moved, done",
      "redacao/revisao/ → admin/review/": "moved to /admin/ and NOT to /newsroom/review/. Gate 13 permits unapproved delivery items to be shown WITH THEIR STATE on exactly three surfaces — /entregas/, /redacao/ and /admin/ — and this page is that kind of surface. build/gates.py is deny-listed, so adding /newsroom/ to that list is the editor's line to write. Issue 008."
    },
    "files": {
      "build/revisao.py": "build/review.py",
      "build/entrevistas.py": "build/interviews.py",
      "dados/revisao.json": "dados/review.json",
      "dados/entrevistas.json": "dados/interviews.json",
      "assets/components/pt-decisoes/": "assets/components/pt-decisions/",
      "briefs/pack/09__entrevistas/": "briefs/pack/09__interviews/",
      "briefs/pack/10__entrevista-ao-editor/": "briefs/pack/10__editor-interview/"
    },
    "also": "Every key inside dados/review.json and dados/interviews.json, every identifier in the pt-decisions component, and the prose of both pages, which is English because they are operational surfaces and a visitor does not read them as content. The quoted evidence on the review page stays Portuguese: the map renames vocabulary and never values."
  }
}
