3.2 KiB
3.2 KiB
| id | ticket | title | status | created | ref_decisions | tags | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PLN-0105 | multi-frontend-provider-contract | Wrap PBS frontend as explicit provider | done | 2026-07-15 |
|
|
Briefing
DEC-0040 requires PBS to become the only initial real provider behind the new FrontendProvider contract. This plan wraps existing PBS frontend behavior without changing PBS product behavior.
Domain owner: compiler/general, with implementation in compiler/pbs and composition impact in prometeu-app.
Objective
Create and register an explicit PBS provider through the application composition root.
Dependencies
PLN-0104must introduceFrontendProviderand provider lookup first.- Accepted decision:
DEC-0040. - Existing PBS frontend phase/service implementation.
- Application composition root in
prometeu-app.
Scope
- Add
PBSFrontendProvideror equivalent concrete provider object. - Make the provider return the existing PBS
FrontendSpec. - Make the provider return the existing PBS compiler-facing service or phase.
- Return no language service, or the existing PBS language-service adapter only if already present and compatible.
- Register PBS explicitly in
prometeu-app/src/main/java/p/studio/AppContainer.javaor the nearest current application composition point. - Ensure PBS remains the only initial real provider.
Non-Goals
- Do not create another real frontend.
- Do not change PBS parsing, semantics, lowering, or runtime output.
- Do not migrate all common consumers in this plan.
- Do not introduce dynamic provider discovery.
Execution Method
- Inspect PBS frontend module boundaries and locate the current
FrontendSpecandFrontendPhaseServiceconstruction. - Add
PBSFrontendProviderin the PBS frontend module or an existing integration package that can legally depend on PBS. - Implement
specification()andcompiler()by delegating to the existing PBS objects. - Implement
languageService()as empty unless a current Studio-compatible PBS language service already exists. - Update
AppContaineror the existing composition root to register the PBS provider explicitly withFrontendRegistryService. - Remove direct PBS registration paths that duplicate the provider registration if they become redundant.
- Add tests proving only PBS is registered as the real provider in the default composition path.
Acceptance Criteria
- PBS is represented by a concrete provider object.
- Default application composition registers PBS explicitly as a provider.
- PBS remains functional through existing compile/build flows.
- No additional real frontend is introduced.
- No dynamic discovery mechanism is added.
Tests
- Provider test:
PBSFrontendProvider.specification()returns the PBS language id. - Provider test:
PBSFrontendProvider.compiler()returns working compiler-facing behavior. - Composition test: default registry contains PBS as the only real provider.
- Existing PBS compile/build tests continue to pass.
Affected Artifacts
- PBS frontend module under
prometeu-compiler/frontends/prometeu-frontend-pbs/... prometeu-app/src/main/java/p/studio/AppContainer.java- Registry or application composition tests.