spec(storyboards): audit follow-ups — known-ambiguities + second_cancel idempotency (#2635, #2637)#2644
Merged
Merged
Conversation
…cond_cancel idempotency - second_cancel (#2637): add idempotency_key to scenarios/invalid_transitions.yaml > double_cancel/second_cancel. Same pattern as the recancel_buy fix in #2631 — without the key, a conformant agent could reject for missing-key (per universal/idempotency.yaml) instead of NOT_CANCELLABLE, failing the step for the wrong reason. - known-ambiguities (#2635): four new entries in known-ambiguities.mdx covering the PR #2631 audit findings (brand_id conflation, re-cancel error code, branch-set grading, SDK request-builder override). Gives implementers hitting pre-fix symptoms on older SDK versions a search target pointing at the canonical resolution. #2636 (brand_rights compatibility-filtering assertion) dropped from Bucket A after discovering two missing primitives: no cross-step comparison validation exists in the storyboard schema, and no conflicting-brand test-kit fixture exists. Filed as follow-ups #2642 (primitive) and #2643 (fixture); #2636 stays open blocked on both. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Contributor
Schema Link Check ResultsCommit:
|
…label normalization, search targets - Preamble now explains entries persist until the fix ships in a tagged SDK / spec release (not when the issue closes), resolving the inconsistency between "#2603 still listed" and the prior "entries are removed when issues close" line. - Normalize the #2603 entry's "Gap closed by" label to "Resolution" so all 8 entries use one vocabulary. - Add the `past_start_handled` aggregation flag as a search target in the branch-set entry (implementers grep for the flag name, not just phase names). - Replace ambiguous "pre-fix runners" / "pre-fix the storyboard" with "before the #NNNN fix" so implementers know which SDK version carries the change. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Summary
Bucket A follow-ups from the training-agent 5.7 storyboard audit in PR #2631. Two of three fixes from the planned bucket; the third hit an infrastructure blocker and was split out.
Closes invalid_transitions.second_cancel missing idempotency_key on expect_error step #2637 — added
idempotency_keytoscenarios/invalid_transitions.yaml > double_cancel/second_cancel.sample_request. PR spec(storyboards): training-agent 5.7 audit fixes (#2627, #2628, #2629) #2631 expert code review caught the same issue on the siblingrecancel_buystep instate-machine.yamland fixed it there; this propagates the fix. Without the key, a conformant agent could legitimately reject for missing-key (peruniversal/idempotency.yaml) rather thanNOT_CANCELLABLE, failing the vector for the wrong reason.Closes Known-ambiguities entries for PR #2631 storyboard audit findings #2635 — added four entries to
docs/building/implementation/known-ambiguities.mdxso implementers hitting pre-fix symptoms on older SDK versions can find the canonical resolution by searching the storyboard name / assertion text:brand_id(brand_rights storyboard conflates advertiser brand_id with talent brand_id #2627)NOT_CANCELLABLEvsINVALID_STATE(Spec conflict: re-cancel error code — §129 MUST INVALID_STATE vs §128 MAY NOT_CANCELLABLE #2617 / spec: pre-GA tightening — re-cancel error code (#2617) + request body well-formedness (#2523) #2619 / Storyboard contradiction: double-cancel. state_machine permits idempotent-accept, invalid_transitions requires NOT_CANCELLABLE #2628)peer_branch_taken(schema_validation storyboard: past-start any_of branches reported as step failures #2629)request-builder.jsoverride masking spec-conformantsample_request(sales_catalog_driven test_kit sends feedback.satisfaction instead of performance_index #2626 → adcp-client#689)Why #2636 is not in this PR
The proposed negative-peer-phase approach for
brand_rightscompatibility filtering (send a conflictingbuyer_brand, assert the returned rights set is smaller) hit two infrastructure blockers during implementation:check:options scope to a single step's response. Filed Storyboard schema: cross-step comparison validation primitive #2642 to addcheck: field_less_than+field_equals_contextagainst the existingcontext_outputsaccumulator.#2636 stays open, blocked on both. Comment left on the issue with the analysis.
Test plan
npm run build:compliance— cleannpm run test:unit(precommit) — 631 tests passnpm run typecheck— clean🤖 Generated with Claude Code