13 of 27 endings are actually stated.
Three ways into the same phone call, and they do not agree about how it ended. This is which surface can express which ending. It is computed by running the mappers on this request, not written down, so it cannot claim coverage the code does not have.
| ending | calls-api | goal-runs | mcp |
|---|---|---|---|
| answered_human | |||
| answered_machine | |||
| no_answer | |||
| busy | |||
| declined | |||
| unreachable | |||
| provider_failed | |||
| canceled | |||
| expired |
Point at a cell and the mapper will say why it answered that way.
what the words mean
- yes
- The surface states it outright.
- app
- Only if the application declared its own field and extraction worked.
- derived
- Only by inference, never stated.
- no
- The surface cannot express it, so the reading stays unknown.
- collapsed onto
- The surface reports this ending as a different one.
The two rows worth sitting with are no_answer and busy. MCP states both. Goal Runs states one and reports the other as a provider fault. The Calls API can reach both, but only by reading a code nested on the attempt, in a different vocabulary from the failure code at the top of the same object. Pick the wrong surface and a busy line becomes an outage.