feat(extensions): extension dispatch for 12-factor extensions.
Metadata
Current evaluation
Merged after fixing CI failures and review feedback. Adds V2 extension classes and factory dispatch for all 12-factor frameworks targeting ubuntu@26.04. Prepares for transparent paas-charm 2.0 dispatch while preserving V1 behavior.
Suggested action: —
No scores available.
Issue body
Add V2 extension classes and factory dispatch for all 12-factor frameworks (Flask, Django, FastAPI, ExpressJS, SpringBoot).
## What this PR does
- `get_project_bases(yaml_data)`: extracts base strings from project YAML
- `_FrameworkFactory`: routes between V1/V2 extension classes based on the project's target bases
- `FlaskFrameworkV2` / `FlaskFrameworkFactory` — targets `ubuntu@26.04`, experimental
- `DjangoFrameworkV2` / `DjangoFrameworkFactory` — targets `ubuntu@26.04`, experimental
- `FastAPIFrameworkV2` / `FastAPIFrameworkFactory` — targets `ubuntu@26.04`, experimental
- `ExpressJSFrameworkV2` / `ExpressJSFrameworkFactory` — targets `ubuntu@26.04`, experimental
- `SpringBootFrameworkV2` / `SpringBootFrameworkFactory` — targets `ubuntu@26.04`, experimental
Each V2 class is behaviourally identical to its V1 counterpart for now; it exists so that a future paas-charm 2.0 implementation can be dispatched transparently based on the rock's target base.
- [x] I've followed the [contribution guidelines](https://github.com/canonical/rockcraft/blob/main/CONTRIBUTING.md).
- [x] I've signed the [CLA](http://www.ubuntu.com/legal/contributors/).
- [x] I've successfully run `make lint && make test`.
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b | — | — | Merged after fixing CI failures and review feedback. Adds V2 extension classes and factory dispatch for all 12-factor frameworks targeting ubuntu@26.04. Prepares for transparent paas-charm 2.0 dispatch while preserving V1 behavior. | |
| qwen3.6-35b-a3b-mtp-q6 |
Staleness:
5
Complexity:
40
Confidence:
90
|
needs review | Introduces V2 extension classes and a factory dispatch mechanism for Flask, Django, FastAPI, ExpressJS, and SpringBoot targeting ubuntu@26.04. Currently behaviorally identical to V1 to enable future transparent dispatch. PR is ready for maintainer review. | |
| qwen3.6-35b-a3b-mtp-q6 |
Staleness:
10
Complexity:
35
Confidence:
90
|
needs review | Adds shared classes and routing methods for V1/V2 extension dispatch. Serves as a foundational base for multiple framework-specific PRs. Currently awaiting maintainer review after author pinged reviewer one day ago. |
Update history
| Date | Change |
|---|---|
| updated | |
| updated | |
| updated | |
| updated | |
| updated | |
| updated | |
| updated | |
| updated |
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #2722 Feat: extension dispatch for 12-factor extensions. | charmcraft | merged | Merged after a maintainer delay to align with the 4.3.0 release. The feature implements extension dispatch for 12-factor extensions, approved by two reviewers and passing CI checks. | |
| #1257 feat(extensions): add ExpressJS framework V2 extension and factory dispatch | rockcraft | closed | Superseded and closed. The ExpressJS framework V2 extension and factory dispatch were merged into base pull request #1259 to consolidate reviews. Author requested closure of this branch. | |
| #1800 feat: go-framework init profile and extension | charmcraft | merged | Merged. Adds go-framework init profile and extension to charmcraft per ISD153. Uses Ubuntu 24.04 base, restricts to amd64, and refactors 12-factor extensions to inherit from _TwelveFactorBase. Approved by three reviewers and passed CI. |