All checks were successful
JaCoCo Coverage #### Project Overview
No changes detected, that affect the code coverage.
* Line Coverage: 61.49% (17397/28294)
* Branch Coverage: 52.32% (6724/12852)
* Lines of Code: 28294
* Cyclomatic Complexity: 11339
#### Quality Gates Summary
Output truncated.
Test / Build skipped: 15, passed: 608
Intrepid/Prometeu/Studio/pipeline/pr-master This commit looks good
3.5 KiB
3.5 KiB
| id | ticket | title | status | created | ref_decisions | tags | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PLN-0106 | multi-frontend-provider-contract | Migrate common consumers to provider lookup | done | 2026-07-15 |
|
|
Briefing
DEC-0040 forbids common compiler, build pipeline, and Studio code from directly instantiating PBS-specific frontend services. After the registry API and PBS provider exist, consumers must move to provider lookup.
Domain owner: compiler/general, with impact on studio.
Objective
Migrate common consumers from direct spec/phase/PBS access to provider-based lookup by languageId.
Dependencies
PLN-0104must provide provider lookup.PLN-0105must register PBS as a provider.- Accepted decision:
DEC-0040.
Scope
- Audit common compiler, build pipeline, Studio, and app code for direct PBS frontend service construction.
- Replace common code service lookup with provider lookup.
- Make build pipeline frontend execution obtain compiler-facing behavior from
provider.compiler(). - Make Studio project language catalog list specifications from providers.
- Keep PBS-specific construction inside PBS provider or composition root only.
- Add or update tests that prove common code does not directly instantiate
PBSFrontendPhaseService.
Non-Goals
- Do not remove compatibility registry APIs unless all callers have migrated and the removal is local.
- Do not introduce new frontend behavior.
- Do not change backend IR, validation boundaries, or lifecycle semantics beyond provider lookup.
- Do not implement optional Studio language services that do not already exist.
Execution Method
- Search for
PBSFrontendPhaseService, PBS frontend constructors,getFrontendPhaseService, andgetFrontendSpecusage outside PBS and composition-owned code. - Classify each usage as composition-owned, PBS-owned, or common consumer.
- Update common consumers to resolve
FrontendProviderbylanguageId. - Update
FrontendPhasePipelineStageso it calls provider compiler behavior rather than direct phase lookup. - Update
ProjectLanguageCatalogServiceso its catalog is provider-derived. - Keep compatibility wrappers only where they reduce migration risk and are provider-derived.
- Add architectural tests or focused unit tests that fail if common modules instantiate
PBSFrontendPhaseServicedirectly. - Run relevant compiler, build pipeline, Studio, and app tests.
Acceptance Criteria
- Common compiler/build pipeline/Studio code obtains frontend behavior through provider lookup.
- Direct
PBSFrontendPhaseServiceinstantiation remains only in PBS provider or approved composition code. ProjectLanguageCatalogServiceis provider-derived.- Unknown
languageIdfailures remain clear after consumer migration. - PBS compile/build behavior remains unchanged.
Tests
- Unit or integration test: build pipeline resolves PBS through provider and compiles an existing PBS fixture.
- Unit test: Studio language catalog lists PBS from provider specs.
- Architecture test or grep-backed test: common modules do not instantiate
PBSFrontendPhaseService. - Existing PBS and build pipeline tests pass.
Affected Artifacts
prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/stages/FrontendPhasePipelineStage.javaprometeu-studio/src/main/java/p/studio/projects/ProjectLanguageCatalogService.java- Common code currently using
FrontendRegistryService.getFrontendSpecorgetFrontendPhaseService. - Tests in compiler, build pipeline, Studio, and app modules.