The emergency-communications room was cold from air-conditioning and smelled of old coffee. Four wall screens showed maps, message queues and latency charts. Elias usually liked the room because everything had a timestamp and a status. That morning every number looked like a witness capable of changing its story.
“We start at second zero,” he said.
Halima sat at the end of the table. Temba worked at the relay console. Ruth attended as the community-radio representative.
“This doesn't need to become a courtroom,” Halima said.
“Then let's not begin by looking for a person. Let's look for the message.”
Elias placed three screenshots on the wall and added Ruth's radio recording. Temba reminded them that different endpoints could have small timing differences.
“Four seconds may be normal,” Elias said. “But not if the earlier message contains wording that appears only in the new relay path.”
They locked read-only copies of the logs before normal cleanup could alter anything. Temba created checksums. Elias wrote down the time. Mariam from quality later asked for the same material to be preserved in an immutable location.
The gateway showed one version arriving at 05:47:18. The app took it at :21. The SMS queue began at :23.
The new relay showed a packet at 05:47:14.
“Four seconds,” Ruth said.
Temba leaned toward the raw payload. “This packet should not be final.”
Its status field read `PROV`—provisional.
They opened the transformation layer. The relay had taken the value but not the provisional state. They followed the packet through broker, gateway and device route, step by tedious step. There was no giant red box labeled *error*. There was only a chain of small machine decisions written by people at different times.
After forty minutes they could say one thing without guessing: the new relay had emitted a provisional packet early, and on some channels its template made the value look final.
“The relay did not create the estimate,” Temba said.
“But it changed how the estimate was presented,” Ruth said.
“On some routes,” Elias added. “We stop there until we have more evidence.”
The SMS-provider log arrived later and explained Musa's message. Older devices had received a later path that contained a precautionary action but no large figure.
“One family got three meanings for one hazard,” Ruth said.
Elias drew a chain on the whiteboard: SOURCE → RELAY → BROKER → GATEWAY → DEVICE. Under each block he wrote its timestamp. Where they did not know something, he wrote *unknown pending log* instead of filling the gap with a likely explanation.
Ruth asked whether operators could see route provenance at a glance. Temba showed a technical panel where it existed, hidden under details.
“So the person authorizing a message may not see which route shaped it unless they dig?” she asked.
“Not at a glance.”
Elias wrote another requirement: route identity had to be visible to the operator without excavation. He was not redesigning the system in the middle of the reconstruction, but he would not let the same blind spot disappear from memory.
Mariam asked that all tests—supporting and non-supporting—be retained. If a packet behaved correctly when the confidence field arrived early, that belonged in the evidence too.
Finally, Elias asked Temba to put the relay into monitor-only mode.
“Leave public output off until we finish.”
Temba began the command, then stopped.
“This relay wasn't on this month's production schedule until last week.”
Elias already knew what question would come next.
“Who accelerated it?” Ruth asked.
Temba opened the rollout ticket.
Mariam also froze the current logs before anyone could run ordinary cleanup. Elias watched the evidence package become read-only and felt the investigation change shape. They were no longer discussing whether someone remembered the sequence correctly. They had a sequence that could be challenged line by line.
At the top, under priority request, was Elias's name.
#