Integration tests validate that data flows correctly across agent boundaries and that the full reminder-to-completion cycle operates without manual intervention. IDs continue from Phase 1.
ID
Scenario
Input
Expected output
Pass criteria
T16
Full handoff: Deadline Monitor to Escalation Agent (no acknowledgement path)
New form submission processed by Deadline Monitor Agent; 30-day reminder sent; 48 hours simulated with no acknowledgement
Escalation Agent picks up the unacknowledged row automatically; Slack DM and channel alert sent; row status transitions Open to Escalated without manual intervention
Status transitions traceable in Sheets audit column; both Slack messages present; no manual trigger required
T17
Full handoff: Escalation Agent to Completion and Reporting Agent (acknowledged after escalation)
Row in Escalated status; owner clicks acknowledgement link post-escalation
Completion and Reporting Agent processes confirmation; Sheets row updated to Complete; Notion entry created; no further Slack alerts sent
No additional Slack messages after acknowledgement; row status is Complete; Notion entry timestamped after escalation event
T18
Tiered reminder sequence: all three windows fire in order
Single register row with deadline 35 days ahead; scheduled triggers advance through 30-day, 14-day, and 3-day windows
Three distinct reminder emails sent to owner sandbox address at correct intervals; each email references the correct window in subject and body; row updated after each send
Three emails in sandbox inbox; timestamps reflect correct intervals; email subject lines reference 30-day, 14-day, and 3-day respectively
T19
Google Calendar event creation verified against Sheets record
Valid intake submission processed by Deadline Monitor Agent
Calendar event title matches obligation name in Sheets; event date matches deadline date; event description contains link to Sheets row
Calendar event exists in sandbox calendar; title, date, and description verified against Sheets row data
T20
Acknowledgement link token validated and rejected for replay
Owner clicks acknowledgement link once successfully; same URL clicked again five minutes later
First click: acknowledgement recorded, row updated. Second click: token rejected with already-used response; no duplicate Sheets update
Second click returns error or already-acknowledged message; Sheets row shows single acknowledgement timestamp; no duplicate Notion entry created
T21
Legal manager manual review step triggered for high-risk item
Escalated row with category = Regulatory Filing (high-risk category); escalation alert sent
Alert to compliance channel includes high-risk flag; register row is not auto-closed; Completion and Reporting Agent waits for manager confirmation before updating status
Channel message contains high-risk label; row status remains Escalated until manager input is recorded; auto-completion is blocked
T22
Weekly digest includes overdue item count correctly
Digest trigger fires; register contains 1 item with deadline passed and status still Open
Digest email body includes overdue section; item listed with days overdue count; compliance manager sandbox address receives the email
Overdue item present in digest; days overdue count arithmetically correct; no items missing from digest across all status categories
T23
Multiple obligations processed simultaneously without collision
Five form submissions arrive within a 60-second window, each with different deadlines and owners
All five rows written to Sheets correctly; no row overwrites another; five distinct calendar events created; five reminder schedules queued independently
Sheets contains exactly five new rows with unique IDs; five calendar events with distinct titles; five reminder queues with no cross-contamination
T24
Completion and Reporting Agent: Notion entry links back to correct Sheets row
Completion confirmation received for obligation ID 00042
Notion entry contains obligation ID 00042 and a hyperlink to the corresponding Sheets row
Notion entry obligation_id field equals 00042; hyperlink in Notion resolves to correct Sheets row in sandbox
Edge case tests cover the failure modes and boundary conditions most likely to occur in production. These run in the same sandbox environment as the integration tests above.
ID
Scenario
Input
Expected output
Pass criteria
E01
Duplicate submission: same obligation ID submitted twice
Identical form payload submitted twice within 10 minutes (same obligation name, deadline, and owner)
Second submission detected as duplicate; second row not written to Sheets; duplicate flag logged; submitter receives a duplicate notice in sandbox email
Sheets contains only one row for the obligation; duplicate log entry present; duplicate notice email in sandbox inbox
E02
Missing deadline date field entirely
Form payload with deadline_date field absent (not blank, fully missing)
Deadline Monitor Agent raises a schema validation error; row not written; error logged with field reference
No Sheets row created; error log references missing deadline_date field; no calendar event or email queued
E03
Owner email address is malformed
Form payload with owner_email = 'not-an-email'
Validation step rejects the entry; row written to Sheets with status Validation Error; no Gmail send attempted
Row status is Validation Error; execution log records email format rejection; no email delivery attempted
E04
Gmail API unavailable during reminder dispatch (simulated outage)
Reminder trigger fires; Gmail API returns 503 on send attempt
Agent retries 3 times with backoff; if all fail, reminder is queued for retry in 1 hour; Sheets row updated with Reminder Failed status and retry timestamp
Row shows Reminder Failed; retry timestamp present; no email in sandbox inbox; retry attempt succeeds on next scheduled check
E05
Human timeout: owner never acknowledges and never completes, deadline passes
Register row with deadline now passed, status still Escalated, acknowledged flag false
Overdue alert escalated to compliance manager; row status updated to Overdue; item included in next Monday digest under overdue section with days overdue count
Row status is Overdue; manager sandbox inbox receives overdue alert; item appears correctly in next digest run
E06
Slack workspace unavailable for full 24-hour period
Escalation Agent triggers during Slack outage; all Slack API calls return 503
All Slack attempts fail gracefully after retry; fallback Gmail alert sent to compliance manager; row status set to Escalation Failed; FullSpec error log entry created
No unhandled exceptions; fallback email present in sandbox inbox; row status is Escalation Failed; error log details Slack unavailability
E07
Notion workspace at capacity or API key revoked
Completion confirmation triggers Notion write; Notion API returns 401 Unauthorized
Agent logs Notion authentication error; Sheets row still updated to Complete; error surfaced in FullSpec monitoring dashboard with obligation ID for manual evidence filing
Sheets row is Complete; Notion entry absent; error log references 401 and obligation ID; no crash or unhandled exception
E08
Obligation category not in approved list (free-text entry)
Form payload with category = 'Random Text' (not in the predefined category picklist)
Validation step flags unknown category; row written to Sheets with status Needs Review; compliance manager sandbox address receives a notification to correct the category
Row status is Needs Review; notification email in sandbox inbox; no reminders dispatched until category is corrected and row is re-validated