prometeu-runtime/files/PRs para Junie Global.md
2026-03-24 13:40:24 +00:00

1.2 KiB

Visão de arquitetura alvo

Camadas

  1. FileDB: texto, URI/path, line-index, snapshots.
  2. Lexer/Parser: produz AstArena (NodeId + spans por nó).
  3. Binder/Resolver: produz SymbolArena + índices (def/ref).
  4. Typecheck: produz TypeArena + facts (node→type, symbol→type).
  5. Analysis Export: analysis.json (full) + symbols.json (leve e estável).
  6. LSP Server: consome AnalysisDb e responde requests.

IDs padronizados (newtypes)

  • FileId(u32)
  • NodeId(u32)
  • NameId(u32) (interner)
  • SymbolId(u32)
  • TypeId(u32)
  • ProjectId(u32)
  • ModuleId(u32)

Invariantes

  • AST é imutável após construção (normativo na spec PBS).
  • Nenhuma fase expõe referências diretas entre nós; apenas IDs.
  • IDs externos são aceitos, mas sempre passam por validate/resolve (API checked).

Regras para Junie (para reduzir vai-e-volta)

  1. Não “inventar design”. Se algo não estiver especificado, criar TODO e parar.

  2. Não mudar formatação/estilo fora do escopo.

  3. Todo novo tipo público precisa de doc-comment curta e exemplo.

  4. Toda mudança de JSON precisa:

    • schema_version bump (se não for backward)
    • teste de snapshot
  5. Cada PR deve deixar cargo test verde.