What
Make the examples/cross-operator-delegation example enforce scope with the real Cedar engine (ca2a_runtime.cedar.CedarPolicy) instead of the LocalPolicy allow-set it uses today.
Why
The example ships policy.cedar as the intended rule but the demo does not execute the Cedar engine. It enforces with LocalPolicy so the example is guaranteed to run. The example is honest about this, but the flagship cross-operator example should exercise the Cedar path it advertises.
Blocker to resolve first
cedarpy has a version-skewed API: the version resolved in a fresh install exposes is_authorized expecting string requests, while the repo code/tests expect the dict form. Pin cedarpy consistently across pyproject.toml and the test extras so ca2a_runtime.cedar.CedarPolicy and tests/test_cedar.py run against one API.
Steps
Follow-up to #43 / PR #44.
What
Make the
examples/cross-operator-delegationexample enforce scope with the real Cedar engine (ca2a_runtime.cedar.CedarPolicy) instead of theLocalPolicyallow-set it uses today.Why
The example ships
policy.cedaras the intended rule but the demo does not execute the Cedar engine. It enforces withLocalPolicyso the example is guaranteed to run. The example is honest about this, but the flagship cross-operator example should exercise the Cedar path it advertises.Blocker to resolve first
cedarpyhas a version-skewed API: the version resolved in a fresh install exposesis_authorizedexpecting string requests, while the repo code/tests expect the dict form. Pincedarpyconsistently acrosspyproject.tomland the test extras soca2a_runtime.cedar.CedarPolicyandtests/test_cedar.pyrun against one API.Steps
cedarpyto a single known-good version; confirmtest_cedar.pypasses.examples/cross-operator-delegation/demo.pyto loadpolicy.cedarviaCedarPolicyand enforce scope∩policy through it.LocalPolicypath only if a no-Cedar fallback is wanted; otherwise remove it.Follow-up to #43 / PR #44.