9.6 KiB
| id | ticket | title | status | created | resolved | decision | tags | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| AGD-0014 | studio-editor-write-wave-supported-non-frontend-files | Definir a fase de FE read-only com LSP minimo no Code Editor do Studio | accepted | 2026-03-31 | 2026-03-31 | DEC-0011 |
|
Pain
A agenda AGD-0013 fechou a primeira wave de escrita deixando todo arquivo de FE em read-only.
Isso foi a decisao correta para destravar a wave inicial, e agora abre uma fase intermediaria mais segura:
- manter
FEemread-only; - introduzir um
prometeu-lspminimo integrado ao Studio; - e validar o ganho semantico em cima do substrate documental do
prometeu-vfs.
O tema de liberacao efetiva de edicao para FE deixa de ser escopo desta agenda.
Ele deve seguir para outra discussion propria.
Context
Domain owner: studio
Owner surface: docs/specs/studio
Superficies e referencias relevantes:
AGD-0013aceitou que, nesta wave, arquivos deFEpermanecemread-only;AGD-0013tambem cravou que um futuroprometeu-lspintegrado ao Studio deve consumir o conteudo exposto porprometeu-vfs, usando snapshot em memoria para documentos abertos e filesystem para documentos fechados;docs/specs/studio/6. Project Document VFS Specification.mdfechaprometeu-vfscomo substrate documental de sessao;discussion/lessons/DSC-0010-studio-code-editor-workspace-foundations/LSN-0026-read-only-editor-foundations-and-semantic-deferral.mdconsolida a regra de nao fingir semantica de IDE antes da hora;discussion/lessons/DSC-0012-studio-editor-document-vfs-boundary/LSN-0027-project-document-vfs-and-session-owned-editor-boundary.mdconsolida queprometeu-lspdeve ser consumidor futuro acima deprometeu-vfs, nao seu substituto;prometeu-packer-apija oferece um exemplo util de flat packaging por superficie explicita, com pacotes comodtos,messages,eventse subgrupos pequenos e nomeados;- a build e a analise semantica ja precisam continuar distintas: snapshot editorial em memoria nao pode virar input canonico de build por inferencia.
Clarificacao importante desta agenda:
- esta agenda nao libera edicao de
FE; - esta agenda fecha apenas a fase
FE read-only + LSP minimo; - a futura liberacao de mutacao e
saveparaFEdeve acontecer em outra discussion propria; - aqui o foco e definir o contrato minimo entre
prometeu-vfseprometeu-lspintegrado enquantoFEcontinuaread-only.
Open Questions
- Pode existir uma fase intermediaria com
FEaindaread-only, mas ja comprometeu-lspintegrado minimo consumindo oprometeu-vfs; o direito de edicao doFEcontinua para uma fase posterior em outra discussion. - Nesta fase
read-only, oprometeu-lspdeve consumir o snapshot em memoria doprometeu-vfspara arquivos abertos e cair para filesystem apenas quando o arquivo estiver fechado. - O escopo minimo do
prometeu-lspintegrado nesta fase ediagnostics,symbols/outline,definitionehighlight. Completionfica explicitamente fora desta fase minima por ainda nao existir direito de edicao deFE.- Nao e necessario implementar agora persistencia de contexto de acesso por documento no
prometeu-vfs, mas ja deve existir uma entidade de contexto onde esses valores possam ser consultados e alterados sob demanda, facilitando persistencia futura. - O estado editorial em memoria de arquivos
FEpode alimentar analise semantica sem nunca alimentar build; qualquer futura ponte com build fica fora desta agenda e de outra decisao propria.
Options
Option A - Misturar LSP minimo e futura liberacao de edicao na mesma agenda
- Approach: Tentar resolver agora tanto a fase
read-only + LSPquanto o futuro direito de edicao deFE. - Pro: Menos artefatos de workflow.
- Con: Mistura readiness semantica com mutacao editorial e amplia demais o escopo.
- Maintainability: Baixa. A agenda perde nitidez.
Option B - Introduzir LSP minimo com FE ainda read-only, e liberar edicao depois em outra discussion
- Approach: Primeiro integrar um
prometeu-lspminimo ao Studio enquanto arquivos deFEpermanecemread-only; so depois, em uma fase seguinte, decidir a liberacao desavee mutacao editorial deFE. - Pro: Valida cedo a cadeia
prometeu-vfs-> snapshots de sessao -> consumidor semantico, sem ainda assumir a responsabilidade de mutacao em arquivos de linguagem. - Con: Cria uma fase intermediaria a mais e exige disciplina para nao tratar "LSP minimo" como permissao implicita para editar.
- Maintainability: Muito forte. Separa readiness semantica de direito de mutacao e reduz rework.
Option C - Fazer uma fase minima ainda menor
- Approach: Limitar o LSP minimo a
diagnosticse talvezsymbols, deixandodefinitionehighlightpara depois. - Pro: Reduz a primeira entrega semantica.
- Con: Pode subentregar valor perceptivel e fragmentar demais a fase minima.
- Maintainability: Media. So vale se a superficie tecnica ainda estiver imatura.
Discussion
O que a discussao atual ja deixa claro e que o FE tem peso diferente dos outros textos suportados hoje.
Para text, json, ndjson e bash, a primeira wave editavel pode ser tratada como escopo editorial controlado:
prometeu-vfscarrega;- o editor altera;
- o
prometeu-vfsguarda snapshot; - e o
savepersiste em disco; - tudo isso sem envolver build nem semantica forte.
Para FE, esse raciocinio parece insuficiente.
O proprio caminho que foi cravado em AGD-0013 indica a direcao correta:
- quando
FEfor liberado,prometeu-lspintegrado entra em questao; - esse LSP deve consumir o mesmo substrate documental;
- e o snapshot em memoria do VFS deve ser a verdade de analise para documentos abertos.
O refinamento trazido agora melhora essa sequencia:
- nao e necessario esperar a liberacao de edicao de
FEpara introduzir umprometeu-lspminimo; - ao contrario, ter uma fase de
FEaindaread-only, mas ja observavel semanticamente, parece um passo mais seguro; - isso deixa o time validar ingestao de snapshots, diagnosticos, outline ou outras leituras sem ainda assumir
save, mutacao e UX de conflito para arquivos de linguagem.
Isso tambem sugere que o tema de direito de edicao do FE deve sair desta agenda.
Aqui basta fechar a fase de leitura semantica minima enquanto o FE continua bloqueado para mutacao.
Tambem importa manter o boundary certo:
prometeu-vfscontinua owner de documentos, snapshots e persistencia;prometeu-lspfuturo consome esse estado para analise;- o editor continua owner de UX;
- build continua fronteira separada.
Tambem vale fechar desde ja um principio de organizacao da API:
- o
prometeu-lspdeve usar flat packaging tomandoprometeu-packer-apicomo referencia; - isso favorece superficies explicitas para
dtos,messages,eventse tipos correlatos; - evita esconder o contrato do LSP em arvore profunda demais ou em pacotes acidentais por feature interna;
- e ajuda a manter a fronteira publica do modulo legivel para Studio e consumidores futuros.
Se isso for respeitado, um LSP integrado proprio do Studio faz mais sentido do que qualquer adaptacao para editor externo. O que interessa aqui e ter um consumidor semantico alinhado ao runtime documental do produto, nao compatibilidade com VSCode.
O conjunto de ganhos mais plausivel para esta fase minima e:
diagnostics;documentSymbol/workspaceSymboleOutline;definition;highlightnoFE.
Completion, rename, code actions, formatting e direito de edicao devem ficar fora desta agenda.
Tambem ficou fechado que:
- nao precisamos implementar agora persistencia de contexto de acesso por documento no
prometeu-vfs; - mas ja devemos agrupar esses valores em uma mesma entidade de contexto, para que possam ser buscados e alterados sob demanda;
- isso deixa o caminho mais curto para persistir esse contexto depois, sem refazer a modelagem;
- e o contrato nao deve bloquear a futura introducao de um toggle de
read-only/edicao por arquivo.
Resolution
Recommended direction: seguir com Option B.
Direcao recomendada neste momento:
- o
FEpermaneceread-onlynesta agenda; - esta agenda fecha apenas a fase de
prometeu-lspminimo comFEaindaread-only; - essa fase trata o
prometeu-lspintegrado como consumidor do conteudo exposto porprometeu-vfs; - para documentos de
FEabertos, a analise observa o snapshot em memoria da sessao; - para documentos de
FEfechados, a analise pode cair para o estado em filesystem; prometeu-vfscontinua owner de snapshots, persistencia e politica de acesso documental;prometeu-lspnao vira owner desave, de persistencia nem de politica de acesso;- esta agenda mira como escopo minimo
diagnostics,symbols/outline,definitionehighlight; completion,rename, code actions, formatting e a liberacao de edicao deFEficam para depois;- a futura liberacao de edicao de
FEdeve acontecer em outra discussion propria; - nenhuma fase desta agenda pode misturar automaticamente snapshot editorial com input canonico de build.
- a API de
prometeu-lspdeve preferir flat packaging no estilo deprometeu-packer-api, com superficies explicitas comodtos,messageseevents. - o
prometeu-vfsnao precisa implementar agora contexto persistente de acesso por documento, mas deve introduzir uma entidade de contexto unica para esses valores, de modo que leitura/mutacao sob demanda ja exista e a persistencia futura seja uma extensao natural.
Next step suggestion: converter esta agenda em decision normativa para a fase FE read-only + LSP minimo, deixando a futura liberacao de edicao de FE para outra discussion.