# Eixo econômico v1 — resultados locais ## Escopo aprovado O eixo é habilitado somente para resultados locais do complete_50. No simple_20, não é calculado nem exibido: os itens existentes não oferecem contrapontos econômicos suficientemente defensáveis entre os quatro conceitos para reduzir a suscetibilidade à concordância uniforme sem reclassificações artificiais. O mapa simples abaixo é mantido apenas como histórico de auditoria, não como configuração elegível. A elegibilidade por questionário está em spectrumQuestionnaireEligibility, em js/spectrum-config.js. O complete_50 mantém os mesmos 11 itens, direções, pesos, fórmula e faixas. Isso não equivale a validação psicométrica. Resultados públicos continuam sem eixo econômico, com spectrum_position NULL; compatibilidade com candidatos é independente. Este componente é um eixo de esquerda/direita **econômica**, não um espectro político geral. Mede atitudes sobre intervenção do Estado, mercados, regulação trabalhista, política fiscal e redistribuição; não mede a ideologia política completa do usuário. Questões sociais fora da redistribuição econômica, culturais, institucionais, de segurança e política externa não entram. Questões sociais redistributivas selecionadas entram somente por sua dimensão econômica, como transferência de renda e habitação subsidiada. Os nomes de arquivos/exports spectrum são mantidos internamente para evitar alterações desnecessárias; a UI apresenta “SEU POSICIONAMENTO ECONÔMICO”. A coluna histórica include_in_spectrum do CSV identifica os mesmos itens econômicos selecionados, não uma medida geral de política. As 70 formulações foram preservadas. O CSV spectrum-question-map-v1.csv continua como revisão de direção/peso por item; a atribuição de conceitos está explicitamente em js/spectrum-config.js e na tabela abaixo. ## Quatro conceitos com peso igual | Conceito | simple_20 | complete_50 | | --- | --- | --- | | fiscal_state_size | Q1, Q2, Q12 | Q1, Q2, Q9, Q46 | | market_private_provision | Q3, Q16 | Q3, Q12, Q45 | | labor_regulation | Q4 | Q6, Q8 | | redistribution | Q5 | Q31, Q33 | Direção +1: concordância aponta para mercado/contenção fiscal. Direção -1: concordância aponta para intervenção/redistribuição. Todos os pesos dos itens são 1 **dentro de seus conceitos**, não na média global. No simples: Q5 tem direção -1; os outros seis selecionados têm +1. No completo: Q8, Q31, Q33 e Q46 têm -1; os outros sete selecionados têm +1. Q46 inverte o sentido da contenção fiscal; Q8 inverte o da desregulação trabalhista. Nenhuma direção é inferida em runtime. Alteração de texto em item selecionado faz o cálculo retornar NULL, evitando reaplicar silenciosamente um mapa obsoleto. ## Fórmula Para cada conceito com respostas válidas: `score_do_conceito = soma(resposta × direção × peso) / soma(2 × peso respondido)` Cada conceito fica entre -1 e +1. Só depois calculamos a **média simples dos conceitos disponíveis**: `posição = clamp(50 + média_dos_conceitos × 50, 0, 100)` Com quatro conceitos disponíveis, cada um influencia 25% da média, independentemente de ter uma, duas, três ou quatro questões. Repetição dentro de um conceito não aumenta o peso desse conceito sobre os demais; pode alterar sua média interna se as respostas diferirem. Respostas são -2, -1, 0, 1 ou 2. Zero explícito é uma resposta válida; ausências/valores inválidos não são zero e não entram no denominador. Um conceito sem respostas é ausente, não neutro. São exigidos **todos os quatro conceitos válidos (4/4)**: fiscal_state_size, market_private_provision, labor_regulation e redistribution. Se algum não puder ser calculado, retornamos NULL e ocultamos o componente. Não recalculamos o eixo com três conceitos. Cada conceito tem sempre 25% de influência no resultado exibido. ## Exibição Título: SEU POSICIONAMENTO ECONÔMICO. Texto: “Este eixo considera apenas algumas das suas respostas sobre papel do Estado, mercado, regulação e redistribuição. Ele não representa todo o seu posicionamento político.” O marcador conserva a posição fracionária, com margem interna para os extremos 0 e 100. VOCÊ ESTÁ AQUI permanece. A posição 0..100 é interna, utilizada apenas para o marcador e seleção de faixa; nunca é exibida como pontuação numérica precisa ao usuário. Apenas a seleção da faixa usa Math.round(posição), sem lacunas entre os intervalos inteiros: | Posição arredondada | Faixa de exibição | | --- | --- | | 0–19 | Esquerda econômica | | 20–39 | Centro-esquerda econômica | | 40–60 | Centro econômico | | 61–80 | Centro-direita econômica | | 81–100 | Direita econômica | As cinco faixas são categorias de exibição definidas por este produto, **não uma identidade política definitiva nem identidades ideológicas validadas**. 50 é o ponto médio deste modelo. Não há rótulos de extremo. A compatibilidade com candidatos é independente deste eixo; nomes, ranking e porcentagens de candidatos não entram no cálculo. ## Revisão e compartilhamento `spectrumEnabled = true` é a flag global, mas a elegibilidade explícita permite somente complete_50 local, com cobertura 4/4 válida. simple_20 retorna NULL sem calcular. Não há reivindicação de validação científica. Os testes também comprovam ausência do componente no simples, ocultação para dados insuficientes, flag desligada e páginas compartilhadas. Compartilhamento público permanece intacto: spectrum_position NULL, sem eixo econômico público. Futuramente seria necessário revisar/versionar a metodologia aprovada, implementar cálculo confiável server-side sobre respostas privadas e alterar separadamente o contrato/validações públicas. Não enviar o valor local como autoridade à RPC. Nenhum schema, RPC de compartilhamento, scoring de compatibilidade, pergunta ou posição de candidato foi alterado ou executado nesta reformulação. Teste local: `node tests/verify-spectrum.cjs`.