7.3 KiB
| id | ticket | title | status | created | accepted | agenda | plans | tags | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| DEC-0035 | pbs-lsp-editor-assistance-wave-1 | Wave 1 de assistencia editorial via LSP para PBS no VS Code | accepted | 2026-05-08 | 2026-05-08 | AGD-0038 |
|
|
Context
O stack atual de PBS no VS Code ja entrega diagnostics basicos e semantic highlighting frontend-owned, mas ainda nao oferece assistencia editorial minima para escrita cotidiana de codigo.
Hoje:
- nao existe
completion; hoverexiste apenas como placeholder;- nao existe
signature help; - o servidor ainda nao anuncia capabilities correspondentes para essas superficies;
- o compiler e o frontend PBS ja possuem informacao semantica, de linking, stdlib e metadata suficiente para nao precisarmos inventar uma segunda semantica local na extensao.
Esta decisao trata apenas da primeira wave de assistencia editorial para PBS no VS Code.
Ela nao cobre formatter, identacao automatica robusta, quick fixes, go to definition, references, rename nem code actions gerais.
Decision
O repositório SHALL entregar uma wave 1 de assistencia editorial via LSP para PBS no VS Code com tres superfícies funcionais:
completion;hover;signature help.
Esta wave SHALL ser considerada valida quando essas tres superfícies permitirem:
- descoberta minima de API;
- leitura de assinatura em simbolos e chamadas;
- ajuda de chamada sem dependencia de conhecimento semantico local na extensao VS Code.
Esta decisao ALSO locks que:
completion,hoveresignature helpMUST nascer sobre uma mesma base editorial compiler-backed;- o LSP MUST ser o owner operacional da assistencia editorial;
- a extensao VS Code MUST atuar apenas como cliente/adaptador do protocolo, e MUST NOT reconstruir semantica propria para simbolos, members ou assinaturas;
- heuristicas locais no LSP MAY existir apenas como complemento temporario e estritamente limitado para lacunas nao resolvidas, mas MUST NOT virar uma segunda semantica canônica;
go to definition, formatter, identacao automatica robusta, quick fixes,references,renamee code actions amplas MUST ficar fora desta wave.
Rationale
As tres features desta wave respondem essencialmente ao mesmo conjunto de perguntas:
- que simbolo eh este?
- quais members ele expõe?
- qual assinatura ele tem?
- de onde ele vem?
Implementa-las por caminhos tecnicos diferentes introduziria:
- duplicacao entre parser local, heuristicas e linking;
- incoerencia entre o que aparece em
completion,hoveresignature help; - retrabalho na wave seguinte.
Portanto, a primeira entrega precisa nascer sobre uma base editorial unificada, reaproveitando o que o compiler e o frontend PBS ja sabem sobre:
- escopo local;
- imports e aliases;
- stdlib;
- builtin types;
- services, hosts, structs, enums, constructors, functions e methods.
Technical Specification
1. Shared Editorial Resolution Surface
compiler/pbs e studio/lsp MUST introduzir uma superficie editorial resolvida comum para uso de completion, hover e signature help.
Essa superficie MUST ser capaz de responder, de forma compiler-backed:
- identidade do simbolo;
kinddo simbolo;- modulo/origem quando relevante;
- assinatura ou shape quando aplicavel;
- members disponíveis para receivers reconhecidos;
- documentacao opcional quando existir, sem bloquear esta wave.
Essa superficie MAY ser exposta por novos modelos internos do compiler, novos adapters no bridge do LSP, ou ambos. Mas ela MUST permanecer derivada do compiler e MUST NOT ser reautoriada na extensao.
2. Completion Scope
completion MUST ser entregue como superfície minima utilizavel.
Na wave 1, isso MUST cobrir pelo menos:
- keywords da linguagem;
- nomes locais em escopo;
- simbolos importados/publicos relevantes;
- members apos
.para superfícies reconhecidas, incluindoservice,host,builtin type,struct, e call surfaces relacionadas.
completion SHOULD expor labels, kinds e detalhes coerentes com a mesma base usada por hover.
completion MUST NOT depender de tabela hardcoded na extensao para stdlib ou members de PBS.
3. Hover Scope
hover MUST deixar de ser placeholder e passar a ser simbolo-resolved.
Na wave 1, o hover MUST incluir quando disponivel:
kinddo simbolo;- assinatura quando aplicavel;
- modulo/origem quando relevante;
- tipo ou shape basico quando isso existir de forma confiavel.
hover MAY incluir documentacao textual opcional.
Mas a autoria de documentacao em PBS, incluindo eventual anotacao como Document(...), MUST seguir discussao separada e MUST NOT bloquear esta wave.
4. Signature Help Scope
signature help MUST ser implementado para chamadas de:
- funcao;
- metodo;
- construtor.
Na wave 1, ele MUST informar:
- a assinatura ativa;
- o parametro ativo;
- labels coerentes com a mesma representacao de assinatura usada no hover.
signature help MUST usar a mesma base editorial de resolucao usada por completion e hover.
5. Boundary Responsibilities
compiler/pbs:
- MUST continuar sendo a fonte de verdade de semantica, linking e metadata relevante para simbolos e call surfaces;
- MUST fornecer a base necessaria para resolucao editorial de simbolos, members e assinaturas.
studio/lsp:
- MUST projetar essa base editorial em endpoints/protocol features adequados;
- MUST anunciar as capabilities LSP necessarias para
completion,hoveresignature help; - MUST manter o transporte fiel ao modelo compiler-backed.
tools/vscode-extension:
- MUST consumir o protocolo como cliente;
- MUST NOT carregar tabelas paralelas de membros, stdlib ou assinaturas como fonte principal;
- MAY conter apenas a logica estrutural normal de integração exigida pelo VS Code.
6. Documentation Preparation Rule
Esta wave MUST preparar um campo ou superfície opcional para documentacao editorial resolvida por simbolo.
Mas esta decisao ALSO locks que:
- a surface de autoria dessa documentacao em PBS nao faz parte desta wave;
- a sintaxe ou contrato de linguagem para documentacao authored deve ser discutido separadamente;
- a ausencia dessa autoria nao bloqueia
completion,hovernemsignature helpda wave 1.
7. Explicit Non-Goals
Esta decisao MUST NOT:
- incluir formatter completo;
- incluir identacao automatica robusta de documento;
- incluir
go to definition; - incluir
references; - incluir
rename; - incluir quick fixes;
- incluir code actions mais amplas;
- definir o modelo de autoria de documentacao em PBS.
Constraints
- A wave 1 MUST priorizar coerencia entre
completion,hoveresignature helpsobre cobertura enciclopedica de todos os casos. - A extensao VS Code MUST permanecer thin; a inteligencia editorial MUST ficar no compiler/LSP.
- A implementacao MUST favorecer evolucao futura para
definition,references,documentation, e outras editor features sem exigir reescrita conceitual da base editorial. - A implementacao MUST evitar surfaces duplicadas para stdlib, aliases, members e signatures.
- Qualquer plan derivado desta decisao MUST separar claramente:
- base editorial compiler-backed;
- projeção LSP/protocolo;
- integração VS Code.
Revision Log
- 2026-05-08: Initial draft from AGD-0038.
- 2026-05-08: Accepted and decomposed into PLN-0075, PLN-0076, and PLN-0077.