Phase 2 tests the full handoff between the Incident Triage Agent and the Notification and Escalation Agent, and verifies that connector failures and data anomalies are handled without silent data loss. All tests remain in the sandbox environment. IDs continue from the Phase 1 sequence.
ID
Scenario
Input
Expected output
Pass criteria
T15
Full handoff: low-severity end to end in sandbox
Form submission triggers Triage Agent; output payload passed to Notification Agent.
Sheets row created, Notion page created, Slack DM sent, Gmail acknowledgement sent. No PagerDuty alert.
All four outputs verified in sandbox tools. Timing from form submit to final Gmail send under 90 seconds.
T16
Full handoff: high-severity end to end in sandbox
Form submission with severity Critical triggers both agents.
Sheets row, Notion page, Slack DM, Gmail acknowledgement, and PagerDuty alert all created.
All five outputs verified. PagerDuty sandbox alert confirmed. Dedup key matches incident ID.
T17
Triage Agent output payload missing owner field
Triage Agent produces record with no resolved owner (rubric gap for an unusual category).
Notification Agent receives payload, detects missing owner, routes to fallback Slack channel, flags Sheets row, and still sends Gmail to reporter.
Fallback channel receives Slack message. Sheets row has 'Owner unresolved' flag. Gmail still delivered to reporter.
T18
Notification Agent trigger delay over 5 minutes
Triage Agent completes successfully but orchestration layer delays passing the payload by 6 minutes.
Notification Agent receives payload and processes normally. Timestamp in Sheets reflects actual send time, not form submit time.
Both timestamps recorded correctly in Sheets. Late delivery does not cause a duplicate trigger.
T19
Reminder nudge fired when deadline approaches
Incident created with 48-hour resolution deadline. Simulate deadline minus 4 hours.
Scheduled reminder Slack message sent to owner. Message references incident ID and Notion link.
Reminder message delivered to correct Slack user. Incident ID and Notion URL present in message body.
T20
Resolution update propagated back to Sheets
Notion record marked resolved by owner via status field update.
Google Sheets row updated with status 'Resolved', resolution notes, and close timestamp.
Sheets row reflects resolved status within 60 seconds of Notion update. Close timestamp is accurate.
T21
PagerDuty service key invalid or expired
High-severity incident triggers PagerDuty call. API returns 401 Unauthorized.
Error logged. Fallback: Slack alert sent to designated escalation channel as substitute notification. Sheets row flagged.
Slack escalation channel receives fallback message. Sheets row shows 'PagerDuty alert failed'. FullSpec error log entry created.
T22
Multiple concurrent submissions
Three Google Form submissions arrive within 10 seconds of each other, each with different severity levels.
Three independent Sheets rows created with unique incident IDs. Three Notion pages created. Correct notifications sent per incident.
No rows overwrite each other. Incident IDs are sequential and unique. All three notification chains complete independently.
ID
Scenario
Input
Expected output
Pass criteria
E01
Duplicate form submission: same reporter, same description within 2 minutes
Two identical form responses submitted in rapid succession.
Second submission is flagged as a potential duplicate in Sheets. Duplicate flag visible. Only one Notion page created, or second page labelled 'Potential duplicate'.
Deduplication logic fires on second submission. Sheets row has 'Duplicate suspected' flag. Only one owner notification sent.
E02
Missing reporter email address
Form response with reporter email field blank.
Incident logged and classified. Gmail acknowledgement step skipped. Sheets row flagged 'Reporter email missing'.
Workflow does not crash. Slack owner notification still sent. Sheets row records missing email flag.
E03
Missing incident category selection
Form response where the category dropdown was left empty.
Category auto-assigned as 'Uncategorised'. Human-review flag set. All other outputs proceed normally.
'Uncategorised' appears in Sheets and Notion. Human-review flag present. No block on notification step.
E04
Google Sheets permanently unavailable
Triage Agent attempts to write row. Sheets API returns 503 for all 3 retry attempts.
Workflow halts after final retry. Error written to a secondary error log (separate tab or file). Alert sent to FullSpec error monitoring channel.
Error log entry created with incident payload preserved. FullSpec monitoring channel receives alert. No silent data loss.
E05
Notion permanently unavailable at record creation
Triage Agent attempts Notion page creation. API returns 500 for all retries.
Sheets row created successfully. Notion URL field set to 'Creation failed'. Error flag in Sheets. Incident ID preserved for manual Notion creation.
Sheets row complete and accurate. 'Creation failed' string in Notion URL column. Workflow continues to notification step.
E06
Assigned owner has left the organisation: Slack user deactivated
Routing table maps incident category to a Slack user who is no longer active.
Slack DM fails. Fallback message sent to #incidents-unassigned channel with incident ID and full summary.
Fallback channel receives message within 90 seconds. Sheets row shows 'Owner Slack inactive' flag. No silent failure.
E07
Human review timeout: incident flagged for manual classification but no action taken within 24 hours
Incident lands in 'Uncategorised' state with human-review flag. No manager action for 24 hours.
Automated reminder sent to designated reviewer via Slack after 24-hour threshold. Reminder repeats at 48 hours if still unresolved.
First reminder delivered at 24-hour mark. Second reminder at 48 hours. Sheets row updated with each reminder timestamp.
E08
Form submission arrives outside business hours: PagerDuty configured with business-hours-only on-call schedule
High-severity incident submitted at 11pm local time. PagerDuty on-call schedule has no active responder.
PagerDuty alert fires regardless. PagerDuty schedule handling determines escalation path. Sheets row and Notion page created normally.
PagerDuty receives alert payload. Response routing is handled by PagerDuty schedule configuration, not by the automation. Sheets and Notion records confirmed present.