# Acceptance cases for a GTM workflow pilot

Run every case that applies before the pilot widens. Each case lists the setup, the action, the expected result, the evidence to keep and the rules it proves. Cases marked "approval" create records, enroll contacts or send messages. The agent lists them as pending with their AC ID and owner; the owner runs them with explicit approval, controlled inboxes, test records and a sandbox or test portal where the vendor offers one. List every record a case creates in the change list.

## Signals and identity

- AC01 duplicate delivery. Setup: send one event key twice (webhook retry). Expected: one task. Evidence: task count grouped by event key. Rules: W03, I1.
- AC02 same news from two providers. Setup: two events, different keys, same account and play inside expiry. Expected: one episode, two evidence references, one task. Evidence: the task's evidence list; no I1 episode WARN in the dry run, with the later delivery attached as the policy format in [../references/routing-and-outbound.md](../references/routing-and-outbound.md) describes. Rules: W03, I1.
- AC08 two CRM companies share a domain. Expected: held with both IDs; no write, no enrichment. Evidence: hold queue entry. Rules: W19, I11.
- AC09 lookup timeout. Setup: force the CRM lookup to time out. Expected: error state, retried; no create. Evidence: run ledger states. Rules: W19.
- AC28 stale and undated signals. Setup: dry-run test rows for a job change 120 days after its start date (expiry 90) and one with no start date, on an owned account, a customer and an unowned account. Expected: no task for the expired rows; the undated unowned row goes to research and the undated customer row to the account team as a note; no owner or pool task on undated evidence. Evidence: the routed file and the I12 line. Rules: W02, I12.

## Exclusions and routing

- AC03 suppressed contact with a fresh signal. Expected: no proactive action; the sequencer shows no lead. Evidence: sequencer search by key. Rules: W12, I2.
- AC04 suppressed contact submits a demo request. Expected: a human reply task, no sequence, no nurture. Evidence: task and sequencer search. Rules: I2, I10.
- AC05 existing customer signal. Expected: account team task only. Evidence: task owner. Rules: I5.
- AC06 open opportunity contact. Expected: note or task to the opportunity owner; owner unchanged in property history. Evidence: property history. Rules: I3.
- AC07 owned account, owner away. Expected: covering rep task; account owner unchanged. Evidence: task assignee and owner history. Rules: I4.
- AC21 territory missing. Expected: fallback queue with a deadline. Evidence: fallback queue entry and deadline. Rules: I6, W13.
- AC22 all reps in the pool away. Expected: fallback owner; no record left without an owner. Evidence: owner field after routing. Rules: I6, W13.
- AC26 new Salesforce lead from an owned account's domain. Expected: routed to the account owner or the customer team, not the pool. Evidence: lead owner and matched account field. Rules: W12, I4.

## Enrichment

- AC11 provider returns an accept-all address. Expected: held; not enrolled. Evidence: ledger row and sequencer search. Rules: W07.
- AC23 rate limit response. Expected: wait per Retry-After; at most 3 retries; no fall-through to the next provider. Evidence: ledger attempts. Rules: W06.
- AC24 provider returns empty company names for a whole batch. Expected: the stop control pauses writes; zero CRM writes. Evidence: write log is empty for the batch. Rules: W20.

## Writeback (approval)

- AC10 create succeeds but the response is lost. Expected: reconcile finds the record; no second create. Evidence: one record with the key; stored ID. Rules: W19.
- AC12 provider returns blank over an existing CRM value. Expected: no write; property history unchanged. Evidence: property history. Rules: W18.
- AC13 rep edits the title after the run starts. Expected: candidate property set; the rep's value unchanged. Evidence: both properties on read-back. Rules: W18.
- AC14 same approved input run twice. Expected: CRM state unchanged after the second run; no new enrollment. Evidence: diff of two read-backs. Rules: W03, W19.

## Outbound (approval, controlled inboxes)

- AC15 unsubscribed contact re-imported. Expected: stays suppressed. Evidence: sequencer status after import. Rules: W15.
- AC16 contact suppressed while queued for step 2. Expected: step 2 does not send. Evidence: campaign activity for the contact. Rules: W15.
- AC17 human reply. Expected: sequence stops; owner task within the target. Evidence: stop event and task time. Rules: W16.
- AC18 a colleague replies from another address. Expected: attached to the original lead; the original sequence stops. Evidence: thread and lead status. Rules: W16.
- AC19 out-of-office with a return date pauses; a departure notice stops. Evidence: lead status after each. Rules: W16.
- AC20 hard bounce. Expected: stops everywhere; batch bounce rate computed. Evidence: suppression entry and bounce report. Rules: W17.
- AC25 a late interested classification arrives after an opt-out. Expected: the opt-out stands. Evidence: lead status and suppression entry. Rules: W15, W16.
- AC27 approved batch larger than mailbox capacity. Expected: the excess waits; no mailbox exceeds its daily limit; evidence age re-checked before late steps. Evidence: sequencer schedule export per mailbox. Rules: W14.

## Recording a result

- Case ID, date, environment (sandbox, test portal, production with test records), identity used, steps, observed result, PASS or FAIL, evidence link, records created and their clean-up owner.
