feat(compliance): add proposal_finalize_asap_timing storyboard scenario#4404
Draft
bokelley wants to merge 2 commits into
Draft
feat(compliance): add proposal_finalize_asap_timing storyboard scenario#4404bokelley wants to merge 2 commits into
bokelley wants to merge 2 commits into
Conversation
Extends proposal_finalize coverage to test start_time: "asap" (the spec-defined string literal from start-timing.json) on create_media_buy. The existing proposal_finalize scenario only exercised ISO date strings. This variant catches wrapper-layer rejections of the asap form before the handler runs. Removes io_acceptance to isolate the timing check from the IO-signing path. Registered in both sales-guaranteed and sales-proposal-mode specialism indexes (capability-gated on media_buy.supports_proposals: true). Closes #4401 Session: https://claude.ai/code/session_01Ek4rwwuHRtRhDtNW6hxwac
…lize_asap_timing - Remove "Wave 23.20" (possible real company name) — rephrase to "an adopter" - Add narrative note explaining intentionally sparse response validations in accept_proposal step; behavioral verification is the parent scenario's job, this variant only checks input-layer acceptance of start_time: "asap" Session: https://claude.ai/code/session_01Ek4rwwuHRtRhDtNW6hxwac
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.
Refs #4401
Extends
proposal_finalizecoverage to teststart_time: "asap"(the spec-defined string literal fromstart-timing.json) oncreate_media_buy. The existing scenario only exercised ISO date strings; this variant catches wrapper-layer rejections of the"asap"form before the handler runs.Non-breaking justification: Additive new storyboard scenario file and two
requires_scenarioslist entries. No existing scenario, schema field, or step kind is renamed or modified. Per playbook, additive conformance harness scenarios are patch-eligible.What changed:
static/compliance/source/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml— mirrors theproposal_finalizephases but theaccept_proposalstep sendsstart_time: "asap"instead of an ISO date.io_acceptanceis intentionally omitted to isolate the timing check from the IO-signing path (which is already covered byproposal_finalize). Response field checks are intentionally limited toresponse_schema— behavioral verification of the create_media_buy response is the parent scenario's job; this variant only confirms the input layer does not reject"asap".sales-guaranteed/index.yaml— addedmedia_buy_seller/proposal_finalize_asap_timingtorequires_scenariossales-proposal-mode/index.yaml— same addition (specialism is deprecated in 3.1 per its narrative, but still active in 3.x)patchNote on
{type: "asap"}object form: The issue body describes{type: "asap"}as an object form. That form is not in the spec:start-timing.jsononly allows the string"asap"or an ISO 8601 date-time string. The seller's Pydantic wrapper fix that widened signatures to accept the object form was defensive against out-of-spec buyer requests. This PR tests the spec-compliant string literal form only.Note on "no dates / carry-forward" arm: The issue also mentions testing
create_media_buywithout explicit dates (carry-forward from proposal). This is not spec-valid:start_timeandend_timearerequired[]unconditionally with no proposal-mode conditional. Whether to add one is a design decision for @bokelley — flagged as a follow-up.Milestone routing gap: This is a
patchchangeset targeting the3.0.xline (conformance harness addition is patch-eligible per playbook). No open3.0.Xpatch milestone was found. Needs @bokelley to create one before merge, or redirect to3.1.0if preferred.Pre-PR review:
start_time: "asap"+ ISOend_timeis normatively valid; no cross-field constraint prohibits this combination;patchchangeset is correct;io_acceptanceremoved per expert recommendation to avoid spurious failures on sellers without IO signingid/categorypattern, correct specialism index placement. Two issues fixed: removed "Wave 23.20" (possible real company name → rephrased to "an adopter"); added narrative note explaining intentionally sparse response validations.Session: https://claude.ai/code/session_01Ek4rwwuHRtRhDtNW6hxwac