You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(adagents): inline-resolution path for publisher_properties selectors (#749 Part 1)
Layers inline-resolution on top of PR #753's publisher_domains[] fan-out
and revoked_publisher_domains[] support. _resolve_agent_properties now
returns resolved property dicts (not selector dicts) for publisher_properties
authorization_type, sourced from the parent file's top-level properties[]
indexed by publisher_domain.
- Pre-builds domain → properties index once per call so per-domain lookups
are O(1) — avoids O(N×M) at cafemedia scale (6,843 properties × 6,800
domains = ~46M comparisons under the old linear scan).
- Inline resolution honors revoked_publisher_domains[] transparently via
the existing revoked_top_level pre-filter (revoked domains never enter
the per-domain index, so they're skipped by construction).
- Fail-closed on unknown selection_type and empty selector criteria
(property_tags=[] / property_ids=[]) per CLAUDE.md "no fallbacks" in
authorization-decision paths. Fail-fast on properties missing the
required property_id field.
- Cafemedia/interchange.io scale test (6,843 properties × 6,800 domains)
is wall-clock-bounded to catch O(N×M) regressions.
- Two pre-existing TestRevokedPublisherDomains tests + the
TestPublisherDomainsCompactForm resolution test updated to assert on
resolved property dicts (the new contract) instead of selector dicts.
- Dead filter_revoked_selectors post-pass removed from
get_properties_by_agent and get_all_properties — revocation is enforced
upstream via the index, so the post-filter was structurally redundant.
Closes#749 Part 1. Federated fallback (when inline yields no match for a
domain) lives in companion PR #752's async helpers.
0 commit comments