-
Notifications
You must be signed in to change notification settings - Fork 24
Add Property Governance Protocol for AdCP 3.0 #588
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
bokelley
wants to merge
13
commits into
2.6.x
Choose a base branch
from
bokelley/property-scoring-protocol
base: 2.6.x
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This introduces a stateful property list management model for governance agents: ## Key Concepts - **Property Lists**: Managed resources combining base property sets with dynamic filters - **Feature Discovery**: Agents advertise scoring capabilities via `list_property_features` - **Brand Manifests**: Buyers describe their brand identity; agents apply appropriate rules - **Discriminated Unions**: `base_properties` uses `selection_type` discriminator for type safety ## Design Principles - **Scores are internal**: Governance agents filter properties; raw scores never leave the agent - **Setup-time, not bid-time**: Lists resolved during campaign planning, cached for real-time - **Identifiers-only responses**: `get_property_list` returns identifiers, not full property objects - **Notification webhooks**: Webhooks provide summary; recipients call `get_property_list` to refresh ## Schemas Added - Property list CRUD operations (create, update, get, list, delete) - Property list filters with explicit logic (`countries_all`, `channels_any`, `feature_requirements`) - Feature requirements for quantitative (`min_value`/`max_value`) and categorical (`allowed_values`) - Base property source with discriminated union (publisher_tags, publisher_ids, identifiers) - Webhook notification schema - Core identifier schema for reuse ## Documentation - Governance Protocol overview - Property Governance specification - Task reference for all CRUD operations - Brand Standards placeholder 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
No version bump needed for draft/proposal specs. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Schema fixes: - Add methodology_url (required) and methodology_version to property-feature-definition - Add signature field (required) to webhook schema for security - Make countries_all and channels_any required in property-list-filters - Move auth_token from get_property_list to create_property_list response Documentation fixes: - Add terminology note: Orchestrator = Buyer Agent - Update examples to show auth_token in create response only - Add note that auth_token is only returned at creation time 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
…dation Introduces the "what I wanted vs what I got" validation concept: - validate_property_delivery task validates delivery records against property lists - Three statuses: compliant, non_compliant, unknown - Unknown records are valid (detection gaps shouldn't penalize compliance) - Compliance rate excludes unknown impressions from calculation - Batch support up to 10,000 records per request New schemas: - delivery-record.json: Input record with identifier + impressions - validation-result.json: Per-record validation result with status and violations - validate-property-delivery-request.json: Request payload - validate-property-delivery-response.json: Response with summary and per-record results 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Extends validate_property_delivery to validate sales agent authorization: - Add optional sales_agent_url to delivery records - Check if sales agent is listed in publisher's adagents.json - Return authorization status (authorized/unauthorized/unknown) per record - Add authorization_summary with aggregate stats and authorization_rate - Two independent checks: property compliance + supply path authorization New schema: - authorization-result.json: Per-record authorization validation result Authorization uses same "unknown excludes from rate" pattern as property compliance - you cannot penalize for detection gaps or unreachable files. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Changes: - Remove compliance_rate and authorization_rate from response schemas - Return raw counts only (1.2M verified, 0.8M unknown, 0.3M invalid) - Consumers calculate rates as needed, excluding unknowns from denominator - Add optional feature_id and requirement to violation objects - For feature_failed violations, shows which feature and what threshold failed - Helps debugging why a property was marked non-compliant 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
…rics - Split "unknown" status into two distinct statuses: - unmodeled: identifier recognized but agent has no data (e.g., property too new) - unidentified: identifier type not resolvable (e.g., detection failed) - Add optional aggregate field for computed metrics: - score, grade, label fields for agent-specific measurements - methodology_url for transparency - Update summary to track both unmodeled and unidentified separately - Update documentation with new statuses and aggregate concept Inspired by Scope3's inventory_coverage (modeled/unmodeled) pattern. The distinction helps identify whether gaps are in data coverage vs identifier resolution. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Updated the description to list non_compliant, unmodeled, and unidentified (instead of the old "unknown" status). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Moved authorized-properties.mdx from media-buy/capability-discovery to governance/property (renamed to "Understanding Authorization") - Added validate_property_delivery task to navigation - Navigation now shows conceptual explainer before tech spec 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Updated links in media-buy docs to point to new location in governance/property section. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add optional property_list parameter to get_products request schema - Add property_list_applied response field to indicate filtering status - Update get_products docs with new parameter, response field, and usage example - Mark changeset as minor for 2.6.x release 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Change banner from Info to Warning for draft status - Add mission statement for governance protocols - Add Working Group Areas table mapping to protocol domains - Add Prompt-Based Policies section for natural language policy support 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces the Property Governance Protocol for AdCP 3.0, providing a stateful property list management model for governance agents.
Key Features
list_property_featuresbase_propertiesusesselection_typediscriminator for type-safe generationDesign Principles
get_property_listreturns identifiers, not full property objectsget_property_listto refreshSchemas Added
countries_all,channels_any,feature_requirements)min_value/max_value) and categorical (allowed_values)Documentation
adagents.mdxto governance section (from media-buy) with updated linksTest plan
🤖 Generated with Claude Code