Complete WP-0003 T06 pilot validation and sync credential routing docs

Close the dangling MVP pilots task with H1 provider-switch test, pilot
validation report, and resolver tenant-override fix. Add credential routing
guidance to AGENTS.md and Claude rules.
This commit is contained in:
2026-06-19 20:48:28 +02:00
parent 82c7884103
commit 8528005bdb
7 changed files with 178 additions and 4 deletions

View File

@@ -69,6 +69,7 @@ def test_resolver_precedence_and_decision():
owner="o",
default_value=True,
safe_fallback=False,
expected_lifetime="long_lived",
)
)
reg.register(
@@ -78,6 +79,7 @@ def test_resolver_precedence_and_decision():
"...",
owner="o",
default_value=False,
expected_lifetime="long_lived",
)
)
@@ -87,7 +89,7 @@ def test_resolver_precedence_and_decision():
"tenant:acme:tenant.test": True,
}
)
resolver = Resolver(reg, provider.values)
resolver = Resolver(reg, provider._values)
# Kill wins
d = resolver.evaluate("kill.test", True, {"tenant_id": "acme"})

View File

@@ -62,3 +62,16 @@ def test_safe_default_on_missing():
assert client.get_boolean_value("no.such", False) is False
assert client.get_string_value("no.such", "def") == "def"
def test_h1_provider_switch_without_business_code_change():
"""UC-H1: swap provider backends without changing evaluation call sites."""
client = FeatureControlClient()
context = {"tenant_id": "acme", "actor_type": "human"}
client.set_provider(LocalProvider({"tenant.preview": True}))
assert client.get_boolean_value("tenant.preview", False, context) is True
# Simulate migration to a different backend with the same OpenFeature contract
client.set_provider(LocalProvider({"tenant.preview": False}))
assert client.get_boolean_value("tenant.preview", True, context) is False