Economy runs fail with 400 SPM_CONFIGURATION_UNAVAILABLE while the simulation worker lags an API deploy
Mantenedores costumam responder em até 3 dias
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 22/100
Direção de pesquisa
Start in policyengine_api/libs/simulation_entrypoint.py near line 408, where the canonical-spm-v1 capability is checked against /versions and SPMValidationError("SPM_CONFIGURATION_UNAVAILABLE") is raised, then read docs/canonical-spm.md for the intended deploy order. Done means that lookup failures return 503 with Retry-After, and reports created in the window are not left pending with no run. The deploy-ordering part needs maintainer input, so confirm the approach before changing code.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
What happened
On 2026-10-16, society-wide reports started from the app failed for a period after the API update 71dba65b ("Update PolicyEngine API", 06:55 UTC). Example: report 4526 (requested_at 13:42:09 UTC, reform policy 98772, US, 2026) recorded:
[SOCIETY_WIDE_CALC_FAILED] Society-wide calculation failed (400): {"status": "error", "message": "Cannot validate the selected worker's canonical SPM capability", "result": null, "errors": [{"code": "SPM_CONFIGURATION_UNAVAILABLE", ...}]}
Reports 4524 and 4525 (13:41 UTC) are still pending and never ran. Later, the same economy call for report 4526 succeeded, so the worker caught up and the reform itself was fine.
Cause (from the code)
policyengine_api/libs/simulation_entrypoint.py (~line 408) validates the selected worker's canonical-spm-v1 capability from /versions before cache access or submission, and raises SPMValidationError("SPM_CONFIGURATION_UNAVAILABLE", ...) on any lookup failure. docs/canonical-spm.md says this happens "until such a worker is deployed" (sim-API PR 703). So between the API deploy and a matching worker deploy, every new economy run is refused.
Requests
- Deploy order / readiness: deploy (or verify) the matching simulation worker before the API version that requires its capability goes live, or keep serving with the previous bundle until the worker reports a matching capability.
- Status code: return 503 (with
Retry-After) forSPM_CONFIGURATION_UNAVAILABLE, not 400. It is a server-side readiness condition; a 400 tells clients the request is invalid, so they do not retry, and the app told users to edit their reform. - Stuck reports: reports created during the window stay
pendingwith no active run (4524, 4525). Consider marking themerrorwith a retryable code, or re-queueing them once the worker matches.
The app now treats *_UNAVAILABLE 4xx errors as retryable server faults (PolicyEngine/policyengine-app-v2#1310), but the outage itself needs the API-side fix.
🤖 Generated with Claude Code
- Linguagem predominante
- Python
- Estrelas
- 18
- Forks
- 33
- Merge médio
- 2d 15h
- PRs com merge (30d)
- 35
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de PolicyEngine/policyengine-api
-
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 88/100
PolicyEngine/policyengine-api#3911 ·
Mantenedores costumam responder em até 3 dias
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 82/100
PolicyEngine/policyengine-api#3910 ·
Mantenedores costumam responder em até 3 dias
-
Let a saved reform or household point at a new v2 policy or household without changing its IDTalvez já em andamento @anth-volk assumiu hoje. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
PolicyEngine/policyengine-api#4004 ·
Mantenedores costumam responder em até 3 dias
-
Releases do not check that each environment calls its own simulation serviceTalvez já em andamento @anth-volk assumiu hoje. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 46/100
PolicyEngine/policyengine-api#4002 ·
Mantenedores costumam responder em até 3 dias
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 18/100
PolicyEngine/policyengine-api#4000 ·
Mantenedores costumam responder em até 3 dias
Todas as issues de PolicyEngine/policyengine-api
Issues semelhantes
-
bug good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
yunaremaia/proto-drift#22 ·
-
bug good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
yunaremaia/memwatch#96 ·
-
bug good first issue
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 91/100
yunaremaia/ci-gate-watch#34 ·
-
bug good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
yunaremaia/agent-capability-attestation#64 ·
Mantenedores costumam responder em até 1 dia
-
bug good first issue
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 86/100
yunaremaia/agent-call-graph#43 ·
Mantenedores costumam responder em até 1 dia