Skip to content

spec(storyboards): audit follow-ups — known-ambiguities + second_cancel idempotency (#2635, #2637)#2644

Merged
bokelley merged 2 commits into
mainfrom
bokelley/audit-followups-bucket-a
Apr 21, 2026
Merged

spec(storyboards): audit follow-ups — known-ambiguities + second_cancel idempotency (#2635, #2637)#2644
bokelley merged 2 commits into
mainfrom
bokelley/audit-followups-bucket-a

Conversation

@bokelley

Copy link
Copy Markdown
Contributor

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.

Why #2636 is not in this PR

The proposed negative-peer-phase approach for brand_rights compatibility filtering (send a conflicting buyer_brand, assert the returned rights set is smaller) hit two infrastructure blockers during implementation:

  1. No cross-step comparison validation primitive — all existing check: options scope to a single step's response. Filed Storyboard schema: cross-step comparison validation primitive #2642 to add check: field_less_than + field_equals_context against the existing context_outputs accumulator.
  2. No conflicting-brand test-kit fixture — none of the 5 sandbox test-kits declare compatibility exclusions that would deterministically filter rights-holders. Filed Test-kit fixture: conflicting buyer_brand for brand-rights compatibility filtering #2643.

#2636 stays open, blocked on both. Comment left on the issue with the analysis.

Test plan

🤖 Generated with Claude Code

…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>
@github-actions

github-actions Bot commented Apr 21, 2026

Copy link
Copy Markdown
Contributor

Schema Link Check Results

Commit: f7a0e96 - docs(known-ambiguities): apply docs-expert review — removal trigger, label normalization, search targets

⚠️ Warnings (schema not yet released)

These schemas exist in source but haven't been released yet. The links will be broken until the next version is published:

  • https://adcontextprotocol.org/schemas/v3/enums/specialism.json
    • Schema exists in latest (source) but not yet released in v3
    • Action: This link will work after next 3.x release is published

To fix: Either:

  1. Wait for the next release and merge this PR after the release is published
  2. Use latest instead of a version alias if you need the link to work immediately (note: latest is the development version and may change)
  3. Coordinate with maintainers to cut a new release before merging

…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>
@bokelley
bokelley merged commit ed1673c into main Apr 21, 2026
18 checks passed
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.

invalid_transitions.second_cancel missing idempotency_key on expect_error step Known-ambiguities entries for PR #2631 storyboard audit findings

1 participant