Skip to content

feat(storyboards): require full proposal_finalize chain after @adcp/sdk@6.10.0#565

Merged
bokelley merged 1 commit into
mainfrom
claude/issue-562-storyboard-sdk-610
May 4, 2026
Merged

feat(storyboards): require full proposal_finalize chain after @adcp/sdk@6.10.0#565
bokelley merged 1 commit into
mainfrom
claude/issue-562-storyboard-sdk-610

Conversation

@bokelley
Copy link
Copy Markdown
Contributor

@bokelley bokelley commented May 4, 2026

Summary

Storyboard runner `@adcp/sdk@6.10.0` closed the sync_accounts cascade gap (adcp#4053, adcp-client#1146/#1545) — the sole-stateful-step exemption now lets `refine_proposal` / `finalize_proposal` / `accept_proposal` run end-to-end against agents that don't implement `sync_accounts`. Locally with 6.10.0:

```
overall: passing
PASS setup
PASS brief_with_proposals
PASS refine_proposal ← NEW (was skipping)
PASS finalize_proposal ← NEW (was skipping)
PASS accept_proposal ← NEW (was skipping)
```

CI assertion was gated to `setup` + `brief_with_proposals` (the only phases the runner could execute on older SDKs). Now requires all 5 phases pass, with per-scenario likely-cause hints in the failure message so a contributor breaking finalize wiring gets pointed at the right module + design-doc anchor.

Adapter fix

`examples/sales_proposal_mode_seller/src/platform.py` had a real bug: the create_media_buy validation required either `proposal_id` OR `ctx.recipes` populated, but the storyboard runner accepts a committed proposal by sending `packages[]` directly (LLM-derived from the committed proposal's allocations). Three valid shapes now: `proposal_id` alone, `packages[]` alone, both empty (rejected). Documented in the method docstring.

Test plan

  • Storyboard locally: 5/5 phases PASS
  • Existing tests pass: 53 passed in tests/test_proposal_lifecycle_e2e.py + tests/test_proposal_store.py
  • CI `storyboard-sales-proposal-mode` blocking job verifies all 5 scenarios pass with per-scenario hints on failure

🤖 Generated with Claude Code

…dk@6.10.0

The storyboard runner v6.10.0 closed the sync_accounts cascade gap
(adcp#4053, adcp-client#1146/#1545) — the sole-stateful-step exemption
now lets refine_proposal / finalize_proposal / accept_proposal run
end-to-end against agents that don't implement sync_accounts.

CI assertion was previously gated to setup + brief_with_proposals
(the only phases the runner could execute on the older SDK). Now
asserts all 5 phases pass, with per-scenario likely-cause hints in
the failure message so a contributor breaking finalize wiring gets
pointed at the right module + design-doc anchor.

Adapter fix: examples/sales_proposal_mode_seller/src/platform.py
incorrectly required either proposal_id OR ctx.recipes — but the
storyboard runner accepts a committed proposal by sending packages[]
directly (LLM-derived from the committed proposal's allocations).
The check now allows three valid shapes: proposal_id alone (framework
hydrates ctx.recipes), packages[] alone (regular create_media_buy
flow), or both empty (rejected as INVALID_REQUEST). Documented in the
method docstring.

Storyboard locally: 5/5 phases PASS (was 2/5). Test suite unaffected.
@bokelley bokelley merged commit b1fe9d5 into main May 4, 2026
16 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.

1 participant