feat(engine): capability profile derived from active extensions (WP-0014 T4, E-5)

engine/profile.py: engine_base_profile() (kernel-only c2-minimum profile),
ProfileContribution (an extension's ON_PROFILE contribution: axis raises + verbs),
derive_profile() folds active extensions' contributions onto the base in deterministic
order then validate() — so configuration->capability is one chain and composition can
never yield an impossible profile (encrypted+native-query rejected). 5 tests green,
96 total, pyflakes clean. Marks T4 done.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-16 00:27:11 +02:00
parent c40fa3c934
commit b9bb1f7d10
4 changed files with 219 additions and 1 deletions

View File

@@ -96,7 +96,7 @@ subset; absent-provider falls back to defaults; context scoping works.
```task
id: SHARD-WP-0014-T4
status: todo
status: done
priority: high
state_hub_task_id: "15fc8db7-cd80-4675-b387-81aa9bc7d308"
```