feat(engine): per-shard extension activation (WP-0014 T3, ADR-0001)

engine/activation.py: ActivationContext (shard/tenant, no authz), pluggable
ActivationProvider protocol, StaticProvider standalone default (zero-dep, global
flags + per-shard scoping + per-ext config), ActivationResolver (candidate ids ->
active set / activation profile), and feature_control_provider() lazy factory
(returns None when feature_control_sdk absent -> degrade to static; OpenFeature-
shaped when present). Availability only. 6 tests green, coverage held, pyflakes clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-16 00:15:33 +02:00
parent 6d8bd837a4
commit 54c2bf2ae5
4 changed files with 203 additions and 1 deletions

View File

@@ -80,7 +80,7 @@ conformance catches a lying extension.
```task
id: SHARD-WP-0014-T3
status: todo
status: done
priority: high
state_hub_task_id: "c4fe9df4-e6a8-4b7d-891b-59ceec6aebac"
```