Conversation
…cy_keys in media-buy storyboards Replaces 15 hardcoded idempotency_key literals across 9 media-buy storyboard scenarios with \$generate:uuid_v4#<alias> patterns, following the precedent set in #4218. Prevents cross-run IdempotencyStore collisions when a seller's cached response shape is stale (e.g. after a spec version upgrade). Also renames 3 pre-existing aliases in governance_denied.yaml and invalid_transitions.yaml that used bare names instead of the established media_buy_seller_<scenario>_<phase>_<step> convention. Closes #4230. https://claude.ai/code/session_016efYC8QLXVZZSPiisZ83oM
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 #4230
Summary
Extends the
$generate:uuid_v4#<alias>pattern to all 15 remaining hardcodedidempotency_keyliterals across 9media_buy_sellerstoryboard scenarios. Follows the precedent set in #4218 (merged today), which fixedmeasurement_terms_rejected.Root cause: Hardcoded keys collide cross-run when a seller's
IdempotencyStoreis long-lived. The runner shiftsstart_timeforward to keep buys future-dated, so each run producessame key + different canonical body→ seller correctly replays a stale cached response. This blocks conformance scenarios whenever the seller ships a spec-version upgrade that changes its response shape.Files changed: 9 storyboard scenario YAML files under
static/compliance/source/protocols/media-buy/scenarios/.Also included: Renames 3 pre-existing aliases in
governance_denied.yaml(line 191) andinvalid_transitions.yaml(lines 76, 194) that used bare names (governance_denied_create_media_buy,update_unknown_media_buy,update_unknown_package) instead of the establishedmedia_buy_seller_<scenario>_<phase>_<step>convention. Caught by the code-reviewer in pre-PR pass.Not in scope:
measurement_terms_rejected.yamlandprovenance_enforcement.yamlstill have non-prefixed aliases (pre-existing, pre-date the naming convention). Left as follow-up to avoid scope creep.Non-breaking justification
Storyboard YAML files are conformance test harness configuration, not published protocol schema. No wire format, task definition, schema field, or normative requirement is changed. The
$generate:uuid_v4#aliastoken is runner-internal and never transmitted to a seller. Per playbook "Conformance harness" — additive or fix changes are--empty(no protocol bump).Build
npm run build:compliancepasses with all 12 storyboard lints green:Pre-PR review
--emptycorrect. Notedmeasurement_terms_rejected/provenance_enforcementpre-existing non-prefixed aliases are out of scope for this PR.sync_plansdynamic key is sound (governance agent upserts onplan_iddeterministically regardless of key),--emptychangeset classification is correct per playbook.Session: https://claude.ai/code/session_016efYC8QLXVZZSPiisZ83oM
Generated by Claude Code