Repository navigation
feat(accounts): money terms on resolved account requests; consistent timezone changes - #8620
Conversation
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated schema paths require human/CODEOWNERS approval.
This PR modifies four files under static/schemas/source/**, which are under a hard, deterministic approval gate (gated_paths: true). The current review_decision is REVIEW_REQUIRED, not APPROVED, so the gate is not satisfied and the PR cannot be auto-approved or passed with a plain comment (decision table row 2).
Escalation reasons
- Gated files require explicit human/CODEOWNERS review before merge:
static/schemas/source/account/request-account-request.json,static/schemas/source/account/request-account-response.json,static/schemas/source/core/account-request-record.json,static/schemas/source/protocol/get-adcp-capabilities-response.json— all modified whilereview_decisionisREVIEW_REQUIRED.
Medium findings (for the human reviewer to confirm)
- docs/accounts/tasks/request_account.mdx:151 — Walkthrough example omits now-required
accounton a created resolution; prose promises account "with money terms" but the adjacent worked record (L153-160) resolves created and omits account, contradicting the new schema requirement and the PR's own claim.
No critical/high findings. Schema↔docs coherence, changeset scope/type, oneOf discriminator audit, and dist immutability all check out per the reviewer; base is main (not 3.1.x). The one medium is a doc example inconsistency worth fixing but not independently blocking.
Medium findings
- docs/accounts/tasks/request_account.mdx:151 — Walkthrough example omits now-required account on a created resolution
Why human review
- Gated paths touched while review_decision is REVIEW_REQUIRED (not APPROVED): static/schemas/source/account/request-account-request.json, static/schemas/source/account/request-account-response.json, static/schemas/source/core/account-request-record.json, static/schemas/source/protocol/get-adcp-capabilities-response.json — human/CODEOWNERS approval required.
- This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/account/request-account-request.json (modified) matches
static/schemas/source/**; static/schemas/source/account/request-account-response.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/account-request-record.json (modified) matchesstatic/schemas/source/**; static/schemas/source/protocol/get-adcp-capabilities-response.json (modified) matchesstatic/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.
…timezone changes Account requests (experimental): matched and created resolutions must carry the target account with its money terms; an updated request that changed billing, billing_entity, or payment_terms carries effective_at; a change request that resolves as a separate account lists not_carried_over. currency and timezone change only where account.requests.changeable_attributes lists them, so request_account and sync_principal docs now agree. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ts money terms Ladon finding: the request_account walkthrough resolved as created without the now-required account. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
36d027f to
12dfc8f
Compare
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated schema paths require human/CODEOWNERS approval.
This PR modifies four files under static/schemas/source/**, which are under a hard, non-overridable approval gate (gated_paths: true). The current GitHub review decision is REVIEW_REQUIRED, not APPROVED, so the gate is not satisfied (decision table row 2).
The reviewer reported a clean pass with no Critical/High/Medium findings. The prior Medium (request_account.mdx walkthrough omitting the now-required account on a created resolution) is resolved in this delta. Schema↔docs coherence holds, the changeset is appropriately scoped (minor, breaking-on-experimental tightening), examples validate, tests cover the new if/then/else branches, no oneOf regressions, and no dist/ artifact edits. On the merits the diff is clean — but the hard path gate cannot be lifted by a clean diff; it requires a recorded human/CODEOWNERS approval.
Escalation reasons
- Touches gated paths while
review_decisionisREVIEW_REQUIRED(not APPROVED): static/schemas/source/account/request-account-request.json, static/schemas/source/account/request-account-response.json, static/schemas/source/core/account-request-record.json, static/schemas/source/protocol/get-adcp-capabilities-response.json — human/CODEOWNERS approval required.
Why human review
- Touches gated paths under a hard approval gate while review_decision is REVIEW_REQUIRED (not APPROVED): static/schemas/source/account/request-account-request.json, static/schemas/source/account/request-account-response.json, static/schemas/source/core/account-request-record.json, static/schemas/source/protocol/get-adcp-capabilities-response.json — human/CODEOWNERS approval required.
- This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/account/request-account-request.json (modified) matches
static/schemas/source/**; static/schemas/source/account/request-account-response.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/account-request-record.json (modified) matchesstatic/schemas/source/**; static/schemas/source/protocol/get-adcp-capabilities-response.json (modified) matchesstatic/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.
|
Ladon's medium finding (the |
Summary
AdCP 3.3.0-beta.3, PR D: account-request follow-ups (experimental
account.requests). This was split out of PR B because it touches a different surface and different reviewers.matchedandcreatedcarry the target account's money terms.accountis now required (schema-enforced) when a request resolves asmatchedorcreated. Sellers MUST include the account'sbilling,billing_entity(without write-only fields) andpayment_termswhenever it has them, because the resolved account can carry terms other than those requested.effective_at. It is required when a request resolves asupdatedand changedbilling,billing_entityorpayment_terms, and forbidden otherwise. It says when the new money terms take effect: delivery before it is invoiced under the old terms. It is at or after resolution, and the seller may choose its next invoice-period boundary. Other attributes change at resolution.createdseparate account says what didn't carry over.not_carried_overis required when a change request resolves ascreated. It lists the named account's account-level configurations the new account lacks, fromnotification_configs,reporting_delivery_configs,reporting_bucket,governance_agents,creatives,audiences,catalogsandevent_sources;[]means everything carried over. The docs note that anall_authorized_accountsreporting subscription picks the new account up on authorization, while anaccount_idsone doesn't.request_account.mdxsaid only countries, unit and money terms were changeable.sync_principal.mdxdescribed timezone changes "through arequest_accountchange". The rule now:currencyandtimezonechange only on sellers that list them inaccount.requests.changeable_attributes, which already allows both, and are otherwise refused withUNSUPPORTED_FEATURE. A seller that changes timezone throughrequest_accountMUST list it. Both pages, the request schema and the capability description agree.matchedorcreatednow carryaccount. The matched example inaccount-request-record.jsonmoved to fictional names.Owner decisions (approved)
accountis required formatchedandcreated(approved, with a release-note line). Sellers that omitted it, previously allowed, now fail validation.effective_atis seller-chosen only. A buyer-requested effective date is left for GA.not_carried_overvocabulary is closed. Extend it as account-scoped libraries are added.Test plan
npm run build:schemas && npm run build:compliance(no symbol-link changes)test:schemas,test:json-schema,test:compliance-snippets,test:owned-links, the MCP projection and analysis tests, and the bounds tests (no capabilities shape change, so no repin)test:docs-navlive-source checks pass. The snapshot checks needdist/docs, which the sparse worktree omits.Changes since review
request_accountwalkthrough'screatedrecord now carriesaccountwith its money terms.🤖 Generated with Claude Code