73 lines
3.6 KiB
Markdown
73 lines
3.6 KiB
Markdown
---
|
|
id: PLN-0110
|
|
ticket: multi-frontend-compiler-vs-language-services
|
|
title: Add compile only frontend and absent capability conformance coverage
|
|
status: open
|
|
created: 2026-07-15
|
|
ref_decisions: [DEC-0041]
|
|
tags: [compiler, compiler-general, studio, lsp, editor, frontend, multi-frontend]
|
|
---
|
|
|
|
## Briefing
|
|
|
|
`DEC-0041` requires proof that a frontend can compile without editor assistance and that LSP/Studio behavior remains deterministic when editorial capabilities are absent. This plan adds focused conformance coverage so future changes cannot accidentally make language services mandatory again.
|
|
|
|
## Objective
|
|
|
|
Add tests and lightweight fixtures proving compile-only frontends are valid, compiler diagnostics remain available, and absent editorial capabilities produce graceful fallback responses.
|
|
|
|
## Dependencies
|
|
|
|
- Accepted decision: `DEC-0041`.
|
|
- `PLN-0107` for documented contract language.
|
|
- `PLN-0109` for capability-aware LSP behavior before all fallback tests can pass.
|
|
|
|
## Scope
|
|
|
|
- Add a compile-only test frontend/provider fixture that implements compiler behavior and omits `languageService()`.
|
|
- Add provider boundary tests proving build/analyze/compile flows do not require editor services.
|
|
- Add LSP fallback tests for absent completion, hover, signature help, semantic tokens, and future editorial capability slots when present in the API.
|
|
- Add PBS regression tests proving rich PBS editor behavior remains available.
|
|
- Add architecture tests that prevent common compiler modules from depending on PBS-specific editor services.
|
|
|
|
## Non-Goals
|
|
|
|
- Build a production non-PBS frontend.
|
|
- Add a plugin loader.
|
|
- Add new editor features.
|
|
- Replace all PBS tests with generic frontend tests.
|
|
- Test external process or wire-format behavior.
|
|
|
|
## Execution Method
|
|
|
|
1. Locate existing provider and boundary tests, including `FrontendProviderBoundaryTest`.
|
|
2. Add a compile-only provider fixture in the narrowest test source set that can exercise the provider contract without production registration churn.
|
|
3. Write compiler-side tests asserting the fixture has a compiler, has no language service, and can participate in the relevant build/analyze/compile path selected for the fixture.
|
|
4. Add LSP tests using the compile-only or stub frontend path to assert neutral responses for absent editorial capabilities.
|
|
5. Preserve or extend PBS regression tests to show PBS still exposes completion, hover, signature help, semantic tokens, and documentation.
|
|
6. Add architecture assertions that common compiler/pipeline modules do not instantiate PBS editorial services directly.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- At least one test frontend is compile-capable with `languageService()` empty.
|
|
- Compiler/pipeline tests prove editor services are not required for compilation or analysis.
|
|
- LSP tests prove absent editorial capabilities are handled without exceptions or compiler failures.
|
|
- PBS tests prove existing editorial behavior is still available.
|
|
- Tests do not depend on JSON, RPC, plugin loading, external processes, or future wire formats.
|
|
|
|
## Tests
|
|
|
|
- Run compiler frontend API/provider tests.
|
|
- Run build pipeline boundary tests.
|
|
- Run targeted LSP tests.
|
|
- Run any architecture/reflection tests added for the no-PBS-editorial-dependency rule.
|
|
- Run `discussion validate` after plan status or workflow updates.
|
|
|
|
## Affected Artifacts
|
|
|
|
- `prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/specs/FrontendProviderBoundaryTest.java`
|
|
- Relevant frontend provider tests under `prometeu-compiler`.
|
|
- Relevant LSP tests under `prometeu-lsp/prometeu-lsp-v1/src/test/java`
|
|
- Test fixtures for a compile-only frontend/provider.
|
|
- This plan and linked workflow metadata.
|