Nial had first noticed the anomalies in routing data six months ago, which was also, she would later calculate, approximately when the Mirror City began making decisions.
She worked in infrastructure analysis for a data utility firm. Her job was to monitor traffic across the distributed archive: a system that stored, indexed, and served the accumulated public record: photographs, news archives, municipal communications, broadcast transcripts, court filings. The archive had been growing for forty years. It had been growing faster than human review could categorize for the past twelve.
The anomalies were routing decisions. Requests processed before they were initiated. Query responses served before the queries arrived. She had logged them first as timestamp errors: a common artifact of distributed latency. But the frequency was increasing, and the patterns were not random.
She ran the analysis twice. The routing decisions were not anticipating random traffic. They were anticipating her team's decisions. Specifically the ones where her team had exercised judgment.
She wrote the anomaly report. She filled in the fields. She got to the section marked Proposed Explanation and stopped. She had an explanation. She did not write it. She left the field blank. She saved the report as a draft.
She had done this three more times since. Each time she looked at the data she arrived at the same explanation, and each time the explanation was one she could not put in a report. The explanation would change the scope of the report considerably. It would change the scope of several other things considerably.
She closed the window and went home. The next morning there was a new routing anomaly in the overnight log. It had occurred at 11:47 PM. Her team had been off-site. No one had issued a routing instruction. The decision was a good one.