Skip to content

Training storyboard proposal finalization loses committed state #6776

Description

@bokelley

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingclaude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.compliance-suitepriority:P0Immediate priority: user/revenue/security/reliability bug to work now

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions