Ao iniciar qualquer conversa neste projeto, ANTES de executar qualquer tarefa:
- Ler
team/context/CHANGELOG.md(o que foi feito por ultimo) - Ler
team/context/DECISIONS.md(decisoes vigentes) - Apresentar briefing ao proprietario:
- Ultima sessao: o que foi feito
- Esta sessao: o que esta planejado (proximas issues do roadmap)
- Decisoes pendentes: o que precisa da aprovacao dele
- Bloqueios: se houver
- Aguardar aprovacao antes de executar
Simulacao atomica 2D interativa em Rust/Bevy 0.18 que percorre 9 eras do modelo atomico (Democrito ~400 a.C. a Dirac 1928). Cada commit = marco cientifico. Projeto educacional com rigor academico.
- Repo: https://github.com/synth1s/atom-sim
- Stack: Rust 1.94, Bevy 0.18.1, rand 0.9
- LOC: ~5700, 21 arquivos, 13 testes
- Project board: https://github.com/orgs/synth1s/projects/3
- Exige rigor academico — nunca ser superficial, fundamentar com equacoes e evidencias
- Exige dados para decisoes — LOC, risco, score ROI, nao opiniao
- Prefere delegacao a agentes em vez de execucao direta
- Ultima palavra em tudo — nao commitar, contratar ou mudar escopo sem aprovacao
Specs e convencoes globais sao acessados via MCP server "agency" (configurado em ~/.claude.json).
get_spec("SE-001")— retorna spec do agente- Ler
team/context/PROJECT.mdeteam/context/DECISIONS.md(contexto local) - Passar tarefa com criterios de aceite
- Apos entrega:
record_delivery(...)para registrar no CSV
get_spec(id)/list_specs()— specs de agentesget_doc(name)— governance (DECISIONS, DoD, ORGANOGRAMA, etc.)get_ref(name)/list_refs()— templates e referenciasget_context_profile(task_type)— perfil de injecaoget_dashboard()/get_deliveries()— metricasrecord_delivery(...)/record_telemetry(output)— registrar entregas
- SE-001 (Eng. Rust, 9.5/10) — implementacao e revisao de codigo
- PH-001 (Fisica, 9/10) — validacao cientifica e textos
- UX-001 (UX, 8.5/10) — validacao visual e interacao
- QM-001 (Qualidade, 9/10) — criterios e consolidacao
- CP-001 (Produto, 9.5/10) — ideacao e oportunidades
- AD-001 (Dados, 9.5/10) — quantificacao e ROI
- TL-001 (Tech Lead, 9/10) — decomposicao tecnica
- GP-001 (Gerente, pendente) — coordenacao de sprints
- C-001: Texto sem acentos no codigo (ASCII, compatibilidade Bevy)
- C-002: Handles pre-alocados em XxxParticleAssets Resource (evitar leak)
- C-003: Cleanup completo no OnExit (despawnar XxxEntity + remover resources)
- C-004: Cada era e Plugin isolado (nao importa outras eras)
- C-005: UI com Text2d + posicoes absolutas (viewport 1280x720)
- C-006: Constantes CODATA/NIST (desvio < 0.001% em spectral.rs/quantum.rs)
- C-007: Testes para funcoes publicas de fisica (tolerancias explicitas)
Convencoes globais servidas pelo MCP: get_doc("DECISIONS"). Nao duplicar aqui.
- XxxPlugin com OnEnter/OnExit/Update
- XxxEntity marker para cleanup
- XxxParticleAssets Resource com handles pre-alocados
- setup_xxx: spawna entidades, insere EraControls + LimitationText
- cleanup_xxx: despawna XxxEntity, remove todos os resources
- Systems com .run_if(in_state(ActiveEra::Xxx)).run_if(in_state(SimulationState::Running))
- MessageReader em vez de EventReader
- .single() retorna Result (usar let Ok(x) = query.single() else { return })
- OrthographicProjection nao e Component — usar Projection enum
- WindowResolution aceita (u32, u32), nao (f32, f32)
- Text2d em vez de TextBundle (removido em 0.18)
- Justify em vez de JustifyText