mail-address-semantics/mas_modes/conformance/scenarios.json
tegwick ecb1ba47f6 MAS-WP-0013 finished: mode contract flows runnable from the bundle alone
conformance/FLOWS.md defines setup, steps, captures and expectations, all
observable at the contract boundary. flows.json carries setups (peer ids),
fixed test keys, statute, scenario and explicit assign steps;
scenarios.json holds the callback scenarios (the stub loads them).
CONTRACT.md defines the case.assign response. Runner reads only the
bundle and rejects undefined keys; new flow s-006 (held over cap).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 5787@bnt-lap001
Assistant-Session: 5db26b82-138b-40cc-9856-4d5eb0f752fd
2026-10-19 12:49:15 +02:00

120 lines
2.5 KiB
JSON

{
"description": "Callback stub scenarios (CONTRACT.md section 8). Each is the sequence of handoff.status messages the stub sends, one per step. A step {'wait_for_details': [fields]} sends 'negotiating' with needs = the missing fields and waits until handoff.update supplies them; it is skipped when the handoff.request already carried them. After handoff.cancel the stub sends 'cancelled' next. 'silent' never answers.",
"default": "completed",
"scenarios": {
"completed": [
{
"status": "scheduled",
"at": "2026-10-20T10:00:00Z"
},
{
"status": "running"
},
{
"status": "completed"
}
],
"negotiate": [
{
"wait_for_details": [
"phone",
"time"
]
},
{
"status": "scheduled",
"at": "2026-10-20T10:00:00Z"
},
{
"status": "running"
},
{
"status": "completed"
}
],
"no-answer-retry": [
{
"status": "scheduled",
"at": "2026-10-20T10:00:00Z"
},
{
"status": "attempted",
"outcome": "no-answer"
},
{
"status": "scheduled",
"at": "2026-10-20T14:00:00Z"
},
{
"status": "running"
},
{
"status": "completed"
}
],
"no-answer-fail": [
{
"status": "scheduled",
"at": "2026-10-20T10:00:00Z"
},
{
"status": "attempted",
"outcome": "no-answer"
},
{
"status": "scheduled",
"at": "2026-10-20T14:00:00Z"
},
{
"status": "attempted",
"outcome": "no-answer"
},
{
"status": "failed",
"detail": "two attempts, no answer"
}
],
"call-failed": [
{
"status": "scheduled",
"at": "2026-10-20T10:00:00Z"
},
{
"status": "running"
},
{
"status": "failed",
"detail": "line dropped"
}
],
"expired": [
{
"status": "scheduled",
"at": "2026-10-20T10:00:00Z"
},
{
"status": "expired",
"detail": "slot passed"
}
],
"unavailable": [
{
"status": "refused",
"reason": "mode-unavailable"
}
],
"declined": [
{
"status": "refused",
"reason": "declined"
}
],
"out-of-hours": [
{
"status": "refused",
"reason": "out-of-hours"
}
],
"silent": []
}
}