feat(spec): deprecate top-level max_results on get_signals, pin pagination precedence#3120
Merged
Merged
Conversation
Contributor
Author
|
Independent review — ready to merge. Verified against expert recommendations
Compatibility with #3109The training agent's `handleGetSignals` (#3109) already implements the precedence this spec change pins (pagination wins). My follow-up commit preserved the legacy 50-cap on top-level `max_results` while honoring the schema's 100-cap on `pagination.max_results`; the 50-cap is conservative under the new SHOULD-level "subject to a maximum of 100" — agents may cap below the ceiling. No code change needed in the training agent. CI is green. Ready. |
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
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.
Closes #3113
Summary
get-signals-request.jsonwas the only paginated read endpoint carrying both a legacy top-levelmax_results(no cap, no default) and the standardpaginationenvelope (pagination.max_results, max: 100, default: 50). The schema was silent on which wins when both are present — PR #3109 implementedpaginationwins in code without a normative spec anchor.This PR adds the anchor:
max_results: Marked"deprecated": true+ description-prefix deprecation notice per the repo's established pattern (mirrorstargeting.json). Includes MUST-level precedence rule and guidance for sellers receiving only the legacy field. Queues removal for AdCP 4.0.pagination: Added a siblingdescription(annotation-only in draft-07 strict semantics; this repo's existingaccountfield uses the same pattern) restating the precedence rule at the envelope level.docs/signals/tasks/get_signals.mdx: Updated parameter table and three code examples to usepagination.max_resultsinstead of the top-level legacy field.Schema audit:
get_products,list_creatives,list_creative_formats,get-collection-list,get-property-list,get-media-buy-artifacts, andtasks-listall carry onlypagination— no other endpoint has this drift.Non-breaking justification: Description changes and a
deprecated: trueannotation. No type, structure, or required-field changes. No existing wire shapes are rejected. The MUST-level precedence rule documents what PR #3109 already implements; it creates a new conformance obligation but does not break any caller that was already following the pagination-wins behavior.Callers to note: Any implementation sending
max_results > 100at the top level will, once it adopts the new precedence rule, shift topagination.max_results's maximum of 100. This is a behavioral cap change for those callers and is called out in the changeset.Pre-PR review
descriptionsibling to$refis annotation-only under draft-07 strict semantics — acknowledged, matches existingaccountfield pattern in this file; (2)paginationdescription inline-repeatsmax: 100, default: 50frompagination-request.json— acceptable for readability, minor divergence risk ifpagination-request.jsonchanges."deprecated": trueboolean added to match repo pattern. Precedence rule covers both conflict case and solo-legacy-field case. Changeset bump levelminoris correct (new MUST-level conformance obligation).Follow-on (not in this PR)
The storyboard
get_signals_pagination_integrity(being added in PR #3109) should gain a conflict-test step that sends bothmax_resultsandpagination.max_resultswith differing values and asserts the response honorspagination.max_results. Blocked on #3109 merging. Filed as a nit from the product-expert review.Session: https://claude.ai/code/session_01Um5nGVYLUUJvNp1EFN9W89
Generated by Claude Code