Headless troubleshooting · one error object

Same Tuesday. Same 18 failed renewals.
A different morning.

The failure becomes one incident — impact, severity, failing step, root cause — that Slack, Claude, VS Code, and Flow Builder can all render. Priya does not start from an inbox.

SlackClaudeVS CodeFlow Builder
P
Priya · Automation Admin — last edited Create Renewal Opportunity v4
If you only remember one thing

One error object. Four windows.

Slack brings it to Priya. Claude explains it. VS Code keeps the proof. Flow Builder draws the fire — and the proposed fix. Chat never writes to Production.

1 · Slack
The incident

INC-4821 · 18 records · High

2 · Claude
The diagnosis

Proposed change · not saved

3 · VS Code
The proof

Test from Jordan’s real run

4 · Flow
The picture

Run state + dashed fallback

Headless Automation · Troubleshooting

How INC-4821 looks in each tool

Priya
Automation Admin · Create Renewal Opportunity
P
    Slack #flow-ops-oncall
    # flow-ops-oncall
    F
    FlowAPP9:02 AM
    I spotted a failure in production.
    ● INC-4821 · High Create Renewal Opportunity v4
    What: 18 Closed Won deals did not create a renewal after 2:14 AM
    Failed at: Create Renewal Opportunity · Price Book lookup returned 0 records
    Why: Standard Price Book was deactivated yesterday by Sam Chen
    Jordan’s deal: Acme Renew · included in the 18
    Explain what happened See it in Flow Builder Propose a fix
    Create Renewal Opportunity — failure
    Why did Jordan’s Closed Won not create a renewal? INC-4821.
    mcp · get_failed_run INC-4821 ok
    mcp · get_flow Create_Renewal_Opportunity v4 ok
    The recipe looks up the standard Price Book and then creates a renewal. Last night that catalog was deactivated (Sam Chen, 6:41 PM), so the lookup returned 0 records. Create Renewal then failed because it had no Price Book Id — 18 times.
    Proposed change · not saved
    • Keep: when Opportunity is Closed Won
    • Keep: look up Standard Price Book
    • + If none found, use the custom “Renewals” Price Book
    • + Do not create if Price Book is still empty
    Create_Renewal_Opportunity.flow-meta.xmlinc4821.renewal.test.jsTerminal
    // INC-4821 · from production run 2:14 AM · Opportunity 006Dn00000kR2aX
    it('creates a renewal when the standard Price Book is inactive', async () => {
      await deactivateStandardPriceBook();
      const opp = loadProductionContext('INC-4821');
      const renewal = await runFlow('Create_Renewal_Opportunity', opp);
      expect(renewal.Pricebook2Id).not.toBeNull();
    });
    $ sf flow test run --file inc4821.renewal.test.js
    FAIL INC-4821 reproduced · priceBookId = null after fallback added —
    PASS INC-4821 reproduced → now passing
    Create Renewal Opportunity · v5 draft · v4 still Active in Production
    Proposed fix from Claude — nothing is saved yet INC-4821 · from #flow-ops-oncall 9:02 AM · 18 failed runs drawn below
    S
    Opportunity Closed Won
    Start · 18 runs
    G
    Get Standard Price Book
    Get Records · 0 records
    HINT · deactivated by Sam Chen, yesterday 6:41 PM
    Proposed
    G
    Fallback: Renewals Price Book
    Get Records · added by Flow
    C
    Create Renewal Opportunity
    Create Records · failed 18×
    priceBookId was null · this is the throw
    A
    Email Account Owner
    Not reached
    Flow Automation Agent
    Same fix as the proposal in Claude. v4 keeps running in Production until you accept this into the sandbox as v5.
    + Fallback lookup if standard Price Book is empty
    + Stop instead of throwing if still empty
    · Trigger and Create Renewal unchanged
    Space play / pause ← → step Open this file to present live. An MP4 is rendered next to it.