Skip to content

test(compliance): add timezone resolution storyboard matrix - #6629

Merged
bokelley merged 3 commits into
mainfrom
codex/issue-6010
Aug 17, 2026
Merged

test(compliance): add timezone resolution storyboard matrix#6629
bokelley merged 3 commits into
mainfrom
codex/issue-6010

Conversation

@bokelley

@bokelley bokelley commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add capability-gated account timezone storyboards for seller-fixed, buyer-selected, and seller-assigned modes
  • cover buyer/seller mismatches explicitly: West and East Coast buyer preferences against a UTC-only seller
  • verify cold reconnect to an existing account from response-derived natural keys, without relying on provisioning memory
  • verify a buyer timezone switch creates a second account identity and never mutates the first account clock
  • add account-based, feature-fixed, and buyer-override budget-cap timezone storyboards covering aggregate and package scopes
  • reject unadvertised buyer timezone overrides with UNSUPPORTED_FEATURE
  • register all seven scenarios and add structural plus executable runner regression coverage

Why

The timezone authority chain added by #5990 spans capabilities, account provisioning, account lookup, media-buy creation/readback, reporting, and billing. These storyboards make that cross-surface contract executable for AdCP 3.2, including mismatched local preferences, reconnects, and immutable timezone-key switching.

Validation

  • node --test tests/timezone-resolution-storyboards.test.cjs (9/9)
  • npm run build:compliance -- --check
  • schema, sample-request, response-schema, context-output-path, and validation-path tests
  • current and released-3.0 storyboard matrices across all seven tenants
  • protocol, code, and test expert review

Closes #6010

@bokelley bokelley changed the title [codex] Add timezone resolution storyboard matrix compliance(media-buy): add timezone resolution storyboard matrix Aug 17, 2026
@bokelley bokelley changed the title compliance(media-buy): add timezone resolution storyboard matrix test(compliance): add timezone resolution storyboard matrix Aug 17, 2026
@bokelley
bokelley marked this pull request as ready for review August 17, 2026 09:59
aao-secretariat[bot]
aao-secretariat Bot previously approved these changes Aug 17, 2026

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ladon verdict: Approve

Approve — additive AdCP 3.2 timezone-resolution compliance scenario matrix with grounded assertions.

Checked:

  • No blocking findings. Reviewer found zero critical/high/medium issues.
  • Additive-only wire surface: all asserted fields (account.timezone., media_buy.budget_capping., budget_cap_timezone, reporting_capabilities.timezone, financials timezone) already exist in base schemas; scenarios add no new wire shape and no oneOf changes.
  • Governance: graded assertions grounded in schema MUSTs (core/media-buy.json:94 seller-echo rule, timezone_basis resolution, normative UNSUPPORTED_FEATURE reject); consistent with DR-0001.
  • Changeset: minor + correct for additive compliance surface; no dist artifact modified, no hand-edited package.json version.
  • index.yaml gating: default vs buyer_selected setup phases are mutually exclusive and total given the supported_timezones-iff-buyer_selected constraint, so exactly one phase always yields $context.account_id.

Gate checks: no no-auto-approve team match; gated_paths false; high_risk false; not a breaking-class change (additive normative scenarios only, no removed/renamed fields). No escalation trigger fires. Decision table falls through to row 9.

aao-secretariat[bot]
aao-secretariat Bot previously approved these changes Aug 17, 2026

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ladon verdict: Approve

Approve — additive AdCP 3.2 conformance coverage, no blocking findings.

This PR adds conformance coverage for already-shipped account-timezone and budget-cap-timezone capabilities: five capability-gated storyboards, seven new required_scenarios plus a branched buyer-selected lifecycle in index.yaml, a wired-in executable test, and a patch changeset. The reviewer confirmed every referenced capability path and wire field already exists in static/schemas/source/**, so there is no schema↔docs drift, no wire-shape change, no oneOf/immutability impact, and the changeset scope/type is correct.

Medium findings (2 — non-blocking, fall through to row 9):

  • static/compliance/source/protocols/media-buy/scenarios/account_timezone_seller_fixed.yaml:84 — seller_fixed scenario provisions a non-sandbox production account
  • static/compliance/source/protocols/media-buy/scenarios/account_timezone_seller_assigned.yaml:81 — seller_assigned scenario provisions a non-sandbox production account

Decision path: no critical/high findings (row 1 no); gated_paths=false (row 2 no); high_risk=false, no deletions/modifications on sensitive files (rows 3–5 no); prior decision was approve, not escalate (row 6 no); no no-auto-approve team match (row 7 no); only 2 medium findings, below the 3-medium threshold (row 8 no) → row 9 approve. The two sandbox-provisioning inconsistencies are worth fixing but do not meet any blocking threshold.

Medium findings

  • static/compliance/source/protocols/media-buy/scenarios/account_timezone_seller_fixed.yaml:84 — seller_fixed timezone scenario provisions a non-sandbox production account
  • static/compliance/source/protocols/media-buy/scenarios/account_timezone_seller_assigned.yaml:81 — seller_assigned timezone scenario provisions a non-sandbox production account

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ladon verdict: Approve

Approve — timezone/budget-cap storyboard scenarios plus test coverage; prior mediums resolved.

This is a subsequent review. The prior run (approve) flagged two medium findings:

  • account_timezone_seller_fixed.yaml:84 — non-sandbox production account
  • account_timezone_seller_assigned.yaml:81 — non-sandbox production account

Both are resolved in this delta: the seller_fixed and seller_assigned account-timezone scenarios now carry sandbox: true on the sync_accounts provision step and the list_accounts readback, and the storyboard test asserts sandbox === true across all four sample_requests. The reviewer surfaced no new findings in the current run.

Decision walk (top-down):

  • Row 1 (critical/high): no such findings.
  • Row 2 (gated_paths): gated_paths is false — does not fire despite review_decision=REVIEW_REQUIRED.
  • Rows 3–5 (high-risk/deletions/medium categories): high_risk is false; no findings.
  • Row 6 (sticky escalate): prior decision was approve, not escalate — n/a.
  • Row 7 (no-auto-approve team): no team match.
  • Row 8 (≥3 mediums): zero findings.
  • Row 9: approve.

Changeset present (.changeset/account-budget-timezone-storyboards.md); changes are compliance scenario/test assets, no schema wire-shape drift.

@bokelley
bokelley merged commit c7209a7 into main Aug 17, 2026
45 checks passed
@bokelley
bokelley deleted the codex/issue-6010 branch August 17, 2026 17:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

compliance storyboard: verify account and budget-cap timezone resolution

1 participant