Repository navigation
feat(reporting): per-offering subscription exceptions (excluded[].offering_id) - #8596
Conversation
…ering_id) Matches gaps[] and timezone_cutovers[]: when covered offerings have different period boundaries, the seller lists one exception per offering with that offering's cutover instants. Found by the TS SDK implementation. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated path requires human/CODEOWNERS approval.
This PR modifies static/schemas/source/core/reporting-subscription-coverage.json, which matches the static/schemas/source/** hard approval gate (gated_paths: true). The current review_decision is REVIEW_REQUIRED, not APPROVED, so decision table row 2 fires and the outcome must be escalate.
Escalation reasons
static/schemas/source/core/reporting-subscription-coverage.jsonis under thestatic/schemas/source/**hard approval gate;review_decisionisREVIEW_REQUIRED. Human/CODEOWNERS review is required before merge.
Review notes (non-blocking): The change itself is clean and additive — optional offering_id added to excluded[] items, mirroring the existing field on gaps[] and timezone_cutovers[] with identical constraints. Schema↔docs coherence holds (get_reporting_status.mdx updated), the minor changeset is correct for a non-breaking addition, additionalProperties: false and existing allOf constraints remain valid, and a schema-shape test covers the new property. No Critical/High/Medium findings. Once a human/CODEOWNERS approval lands, this is mergeable.
Why human review
- static/schemas/source/core/reporting-subscription-coverage.json is under the static/schemas/source/** hard approval gate; review_decision is REVIEW_REQUIRED — human/CODEOWNERS approval required before merge.
- This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/core/reporting-subscription-coverage.json (modified) matches
static/schemas/source/**) and the current GitHub review decision is 'REVIEW_REQUIRED', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.
The last reporting-subscription spec gap found by the TS SDK implementation (adcontextprotocol/adcp-client#3508):
subscription_coverage.excluded[]had nooffering_id. So when an account's offerings cut over at different boundaries, an exception'sfromcould only be one account-wide instant. #8585 already addedoffering_idtogaps[]andtimezone_cutovers[]; this does the same forexcluded[]. It's optional and additive; an entry without it applies to every offering.This is also the release-relevant change needed to refresh the 3.3.0-beta.2 Version Packages PR (#8587): an IPR-signature commit landed after the last protocol merge and made the pending release run stale.
Tests:
tests/reporting-subscriptions.test.cjsadds one test.test:schemas,test:json-schema,test:compliance-snippets, the capabilities bounds and MCP projection tests, andtest:docs-navpass locally.🤖 Generated with Claude Code
Open workspace in Conductor