Problem
The current-source packaged storyboard path for media_buy_seller/proposal_finalize and media_buy_seller/proposal_finalize_asap_timing returns a committed proposal from the legacy get_products finalize step, but the following create_media_buy resolves the catalog draft and fails with PROPOSAL_NOT_COMMITTED.
This issue owns the proposal-state/session-handoff correctness bug. General storyboard process isolation, resource telemetry, memory limits, and teardown are tracked separately in #6778.
Reproduction
TENANT_PATH=sales PUBLIC_TEST_AGENT_TOKEN=storyboard-ci-token \
npx tsx server/tests/manual/run-storyboards.ts \
--filter media_buy_seller/proposal_finalize
Observed on 2026-08-22 with the current source overlay / packaged SDK path:
proposal_finalize: 6 passed, 1 failed, 2 skipped
proposal_finalize_asap_timing: 4 passed, 1 failed
- both failures:
PROPOSAL_NOT_COMMITTED: Proposal "novamind_ai_audience" is a draft
The finalize response itself contains proposal_status: committed and an insertion order, so the failure is in the state/session handoff into create_media_buy, not the finalization response.
Likely boundary
Legacy get_products stores proposal state under getProductsSessionKeyFromArgs, while proposal-based create_media_buy can choose a principal-scoped sessionKeyFromArgs session and fall back to the global catalog draft. The fix must preserve cross-principal isolation while making the committed snapshot executable.
Acceptance
- Both proposal-finalization storyboards are clean in the current packaged runner.
create_media_buy executes the committed snapshot returned by finalization.
- A cross-principal/account caller cannot execute another caller's proposal.
- Remove the temporary current-source quarantine and restore the associated sales passing-step floor when fixed.
Out of scope
Problem
The current-source packaged storyboard path for
media_buy_seller/proposal_finalizeandmedia_buy_seller/proposal_finalize_asap_timingreturns a committed proposal from the legacyget_productsfinalize step, but the followingcreate_media_buyresolves the catalog draft and fails withPROPOSAL_NOT_COMMITTED.This issue owns the proposal-state/session-handoff correctness bug. General storyboard process isolation, resource telemetry, memory limits, and teardown are tracked separately in #6778.
Reproduction
Observed on 2026-08-22 with the current source overlay / packaged SDK path:
proposal_finalize: 6 passed, 1 failed, 2 skippedproposal_finalize_asap_timing: 4 passed, 1 failedPROPOSAL_NOT_COMMITTED: Proposal "novamind_ai_audience" is a draftThe finalize response itself contains
proposal_status: committedand an insertion order, so the failure is in the state/session handoff intocreate_media_buy, not the finalization response.Likely boundary
Legacy
get_productsstores proposal state undergetProductsSessionKeyFromArgs, while proposal-basedcreate_media_buycan choose a principal-scopedsessionKeyFromArgssession and fall back to the global catalog draft. The fix must preserve cross-principal isolation while making the committed snapshot executable.Acceptance
create_media_buyexecutes the committed snapshot returned by finalization.Out of scope