Phase 2 validates that agents pass data to one another correctly across the full workflow chain, and that the system responds predictably to abnormal inputs and tool failures. All tests continue in the sandbox environment.
ID
Scenario
Input
Expected Output
Pass Criteria
T19
Calendar Orchestrator brief triggers downstream draft submission flow
New sandbox Notion row; Calendar Orchestrator brief sent; writer adds draft link to same row within 30 minutes.
Review and Publish Agent detects the draft link addition and sends reviewer notification without any manual re-trigger.
Reviewer Slack notification arrives within 60 seconds of draft link being logged; no FullSpec team intervention needed.
T20
Overdue reminder and subsequent draft submission both fire correctly in sequence
Sandbox Notion row past deadline with no draft link; overdue reminder fires; writer then adds draft link.
Overdue reminder delivered first; then on draft link addition, reviewer notification sent with no duplication of the overdue reminder.
Exactly one overdue reminder and exactly one reviewer notification in the Slack sandbox workspace; no repeated messages.
T21
Full approval chain: draft submitted, approved, Buffer post created, Notion status updated, HubSpot logged
Sandbox Notion row moves through: Draft Submitted, Approved. Scheduled time and channel fields populated.
Buffer post created, Notion status set to 'Scheduled', HubSpot record updated, all within a single automated run.
All three downstream writes confirmed via API responses; field values consistent across Notion, Buffer, and HubSpot.
T22
Revision loop: rejection routes back to writer, then re-submission re-triggers reviewer notification
Sandbox Notion row status set to 'Needs Revision'; writer updates draft link field with a new URL.
Second reviewer notification sent containing updated draft link; Buffer not touched during revision loop.
Second Slack notification delivered; link in message matches the new URL; no Buffer post created during revision state.
T23
Performance Sync Agent matches post IDs correctly when multiple Notion rows are present
Sandbox Notion database contains five published rows with distinct Buffer post IDs.
All five rows updated with the correct metrics for their respective Buffer post IDs; no cross-contamination of values.
Each Notion row's impression and click fields match the corresponding sandbox Buffer post exactly.
T24
Notion status write by Review and Publish Agent does not re-trigger Calendar Orchestrator
Sandbox Notion row status updated to 'Scheduled' by Review and Publish Agent.
Calendar Orchestrator Agent does not fire a new brief or reminder as a result of the status change.
Execution log shows zero Calendar Orchestrator runs in the 5 minutes following the status write.
T25
HubSpot campaign record update does not create a duplicate when record already exists
Sandbox HubSpot campaign record already exists for the content piece; Review and Publish Agent attempts to log publish data.
Existing record is updated in place; no second record created.
HubSpot sandbox contains exactly one campaign record for the test content title after the agent run.
T26
Slack notification delivery confirmed before execution continues
Sandbox workflow step where Slack API returns a non-200 response on first attempt.
Agent retries the Slack call up to three times; on continued failure, logs error and does not proceed to Buffer scheduling.
Retry log shows three Slack attempts; execution halted at Slack step; Buffer not called; error alert in monitoring channel.
T27
End-of-week Performance Sync does not overwrite a row that was manually corrected
Sandbox Notion row has a manually entered metric value that differs from the Buffer API response.
The automated sync overwrites the field with the Buffer API value (documented expected behaviour per spec).
Notion field value matches Buffer API response after sync; behaviour noted in execution log for team awareness.
ID
Scenario
Input
Expected Output
Pass Criteria
E01
Duplicate Notion row created for same content piece
Two sandbox Notion rows with identical topic, assignee, and deadline fields created within 10 seconds.
Brief sent for both rows independently; no deduplication suppresses the second. Duplicate flagged in execution log.
Two Slack briefs delivered (one per row); execution log records both row IDs; no crash or silent discard.
E02
Notion row missing the deadline field
New sandbox Notion row with topic and assignee populated but deadline field left blank.
Agent logs a validation error; no brief sent; Slack alert sent to marketing manager sandbox channel indicating missing deadline.
No writer Slack message; manager alert delivered; error log entry contains row ID and field name 'deadline'.
E03
Notion row missing the channel field at scheduling step
Sandbox Notion row status set to 'Approved' but the channel field is blank.
Review and Publish Agent does not create a Buffer post; error logged; Slack alert sent to marketing manager.
No Buffer post created; error log entry contains row ID and field name 'channel'; manager alert delivered.
E04
Draft link in Notion is a non-Google Docs URL
Writer logs a Slack message URL instead of a Google Docs URL in the draft link field.
Reviewer notification still sent (link delivered as provided); execution log notes non-standard URL format.
Slack notification delivered; log entry flags URL format anomaly; no execution failure.
E05
Slack API completely unavailable for more than 10 minutes
Sandbox Slack endpoint returns 503 for a sustained period during brief dispatch.
Agent retries three times at 2-minute intervals; on final failure, logs error with full context; execution halted gracefully.
Error log contains three retry timestamps and final failure entry; no partial brief sent; no infinite retry loop.
E06
HubSpot API credential expires mid-workflow
Sandbox HubSpot token intentionally expired after Buffer post is created but before HubSpot write.
Agent logs the HubSpot write failure; Buffer post remains scheduled (not rolled back); Slack alert sent to FullSpec monitoring channel.
Buffer post confirmed in sandbox; HubSpot write failure logged with error code; monitoring alert delivered.
E07
Human reviewer takes no action in Notion for 72 hours after notification
Sandbox Notion row in 'Draft Submitted' state; no status change for 72 hours after reviewer Slack notification.
A follow-up Slack reminder sent to the reviewer and copied to the marketing manager after the timeout period.
Second Slack notification delivered at the 72-hour mark; execution log records the timeout event and reminder dispatch.
E08
Buffer post ID missing from Notion record during Performance Sync
Sandbox Notion row for a published piece where the Buffer post ID field was never populated.
Performance Sync Agent skips the row without error; logs 'missing Buffer post ID' against the row; no metric fields written.
Row metric fields unchanged; execution log contains skip entry with row ID; no error state thrown.