AFTER ALL THAT, IT took me six minutes to find out the dock surveillance system had not been hacked.
I didn’t find anything. No aberrations in the logs, no anomalous deletions, no foreign code, no traces at all.
So, that’s just great.
There had to be something I was missing. Or maybe I’m just a robot with enough human neural tissue jammed in my head to make me stupid who should have stayed with the company, guarding contract labor and staring at walls.
Fortunately Indah and Tural had followed the others out to the main office to get their gear for the search, and I could have an emotion on my face in relative private.
I’d decided to stay, but I really wanted to leave.
I’d been so sure I was right.
I went out into the main office and told Indah, “There’s no hack. The surveillance system was clear.”
I was braced for something, I had no idea what. But the fleeting look of disappointment that crossed Indah’s face wasn’t it. She grimaced, and used the feed to revoke my system access.
Aylen came in from the other room, pulling on a deflection vest. “The off shift volunteered to come in early,” she said. “And Supervisor Gamila is helping with coordination.”
“Good, take all of them.” Indah glanced at me. “And SecUnit.”
Well, fine.
An evidence team was still searching the Lalow and Indah sent them an order via the feed that they might be looking for “signs of body disposal.” One theory was that the refugees had been killed in the docks by the Lalow’s crew and the remains somehow smuggled back into their ship.
(I know, if they could do that to ten refugees why didn’t they do that to Lutran? But sometimes you have to look into every possibility, even the dumb ones.)
The Lalow search team had already found evidence that the refugees really had been aboard long enough to get here from a point near the BreharWallHan mining field: the ship’s recycler stats showed waste and water conversion from at least fifteen humans for the duration of the trip, and the ship’s stores had a suspiciously large amount of bedding and food, plus games for pre-adolescents.
(Yes, again, I know. Why bring them all the way here alive and in relative comfort, let them disembark, then kill them? Theoretically the Lalow crew could have been paid to do that, but if there had been a hard currency transfer it wouldn’t have occurred on station so there was no way we could find that out.)
Station Security was only allowed to keep the Lalow for one Preservation day-cycle before they either had to charge the crew with something or let them go. Indah could charge them with the threatening and imprisoning or whatever else they had done to Aylen and Supervisor Gamila anytime she wanted to give us more time to investigate, but she was holding off. Before we had left for the Merchant Docks again, Indah told the special investigation team, “If this circus act is telling the truth and they’re the only lifeline those people trapped at BreharWallHan have, then we’ll release them without charge. Until then I don’t want to risk any information about any of this getting into outsystem newsfeeds. Normally this isn’t a problem but—” She pointed her eyebrows at me. “We seem to be getting a lot of attention from the Corporation Rim lately.”
Like that’s my fault.
She continued, “I think we all realize by now that between the murder and the missing individuals, this is unlikely to be a single local actor. Our most likely perpetrators will be agents of the corporate entity BreharWallHan, who came here specifically to stop this refugee operation. With the port closed, they’re trapped here.”
I was with her right up until the “they’re trapped here” part. I wasn’t willing to count on that because it involved depending on humans and bots and systems I didn’t have access to.
Aylen had formed up two more teams to search the ships in dock, though Station Security was starting to run short of personnel. There were ships not attached to the docks, in holding positions around the station, who had either been stopped in the middle of approach or departure by the closure of the port. If we didn’t find anything in the port, the ships stopped in departure were going to have to be searched next. Even with the responder patrolling out there to keep everybody from leaving, that was going to be a mess.
From what I could hear over the team feed channel, the ships in dock were cooperating with the search so far. The teams were going with the story that they were looking for “adults and adolescents who might be in the company of individuals who had committed violent acts on station,” which was probably true.
No, I was not helping with the ship-to-ship search because the humans thought there would be “panic and resistance” if any of the search teams tried to board with a SecUnit. (Yeah, let’s revisit that the next time you get held hostage.)
So I was searching the dock utility areas with the hazardous materials safety techs and the cargo bots. The modules had drives but they weren’t the kind you could turn on inside the station, so the cargo bots lifted and moved them for us so the techs could check the interiors.
Since this was the oldest part of the transit ring, we were moving along the stationside of the dock area, climbing in and out of outdated cargo storage chambers, safety equipment deployment corrals, office spaces that were long abandoned to storage. One of the techs muttered, “We can take our video and make a historical documentary.”
Another tech walked up to me. “Um, SecUnit, we need someone to help move this cabinet—”
“Then you should find someone to do that for you.” I was not in the mood.
“Well, it’s in a small space and JollyBaby can’t fit.” They gestured to the cargo bot looming over us.
“Its name is not JollyBaby.” Tell me its name is not JollyBaby. It was five meters tall sitting in a crouch and looked like the mobile version of something you used to dig mining shafts.
JollyBaby broadcast to the feed: ID=JollyBaby. The other cargo bots and everything in the bay with a processing capability larger than a drone all immediately pinged it back, and added amusement sigils, like it was a stupid private joke.
I said, “You have to be shitting me.” I already wanted to walk out an airlock and this didn’t help. (The only thing worse than humans infantilizing bots was bots infantilizing themselves.)
JollyBaby secured a private connection with me and sent: Re: previous message=joke. And it added its actual ID, which was its hard feed address. So it was a stupid private joke. I don’t think that made it any better.
The human was still looking at me helplessly and I said, “Where the fuck is the Port Authority bot? Isn’t this its job?” All those arms had to be good for something besides holding hatches open.
The human shrugged vaguely. “I think it’s with the Port Authority supervisor. It doesn’t work in these docks.” JollyBaby sent me another private message: Balin not equal cargo hauler Balin equal cargo management.
Balin didn’t lift heavy things? Well, fuck Balin then. I said, “All right, where’s the fucking cabinet?”
On the team channel, Matif was saying to Indah, But would these refugees have a device that let them jam the port cameras? He didn’t think the refugees were responsible for killing Lutran, either. He added, And know they could call a cart to the transport to dump the body? That seems like it has to be someone who was already here on station.
The other conversation was Tural and Aylen, with Tural saying, Why didn’t the refugees just stop here? Why take the transport somewhere else?
Aylen replied, Maybe another group, or groups did. But they couldn’t bring all the groups here without the risk that someone would find out about the scheme and expose it.
No shuttles had left for the planet or any other insystem destination in the incident time frame, and I guess we were all just assuming the refugees hadn’t been spaced, though the exterior station scan results hadn’t come back yet.
The refugees couldn’t have gotten off this dock, and Lutran’s killer couldn’t have entered his transport without the cameras’ data on the PA systems being hacked. And I had of course proved that it hadn’t.
Which… was a massive fuck-up on my part.
Because this was the kind of hacking a SecUnit could do, specifically a CombatUnit. If this was a BreharWallHan operation to stop the escapes, they might have brought in a security company with a CombatUnit doing exactly the kind of thing I had pretended to do on Milu: operating almost independently with a human supervisor planted somewhere on station. I just hadn’t been good enough to find that Unit’s trail in the PA’s system.
I didn’t know what I was going to do. I could call Mensah and ask for advice, which would actually be a cover for asking her to fix my fuck-up. Except I had no evidence of the hack; I couldn’t even prove it to myself, so I didn’t know how Mensah could fix it.
On the comm, one of the techs said, “Officer Aylen.” It was the one who had made the comment about a historical documentary on the crap stored in the private docks. “I’ve got a problem with the empty modules.”
Sounding frustrated, Aylen answered, “What problem?”
The tech explained, “According to the inventory, we’re missing one. I’m guessing it’s outside for transfer, so we need it brought in so we can verify—”
I cut into the channel and said, “A module is missing?” at the same time as Indah, Aylen, and Soire. Matif was already on the feed telling the Port Authority that we needed the spare-module use records and could they confirm an empty module outside the station?
“Ask them who authorized that transfer,” Soire told Matif at the same time Aylen said, “Those modules can be pressurized, correct?”
I said, “Correct.” I was already walking out of the ancient storage compartment back toward the embarkation area. They could finish the historical documentary without my help. If I was going to be useless, I could at least be useless where stuff was going on.
Indah said, “Find that fucking module.”
I reached what the humans were calling the “mobile command center,” which was actually just one of the portable Port Authority terminal and display surfaces for accessing all the transit ring’s traffic data. Indah stood next to it with PA Supervisor Gamila. Aylen, Tural, and other officers and techs sprinted in from different directions. Gamila controlled the terminal via her feed, the display surface floating above her head and flicking through sensor views of the outside hull of the station. I picked up a live feed from the station responder on picket duty, supplying alternate sensor views. Gamila was talking to someone on the responder, saying, “No, those modules are for the Walks Silent Shores, that’s a scheduled transfer, they’re all accounted for. We’re looking for a single unregistered module—”
No authorized transfer, Matif reported via the Station Security feed. It’s just missing.
Soire added, Somebody must have deleted its records.
(If it seems like they twigged to this faster than they had anything else, it was because cargo safety/smuggling and hazardous material prevention was actually most of their job. I’m sure they were great at talking down aggressively intoxicated humans, too.)
Still breathing hard from running down the dock, Aylen said to Tural, “Could someone install longterm life support in one of those things?”
“Theoretically, I guess.” Tural’s face scrunched with worry. “Not in a hurry. These are just transfer modules. They’re pressurized and they hold air, but… They’re not meant for…”
They’re not meant for anything that needs to breathe, not for longer than a cycle or so, Tural meant. If the refugees were in there, they didn’t have much time left.
As a means to quickly move humans from the private Merchant Docks to a transport, it would have been fine, especially on a small transit ring like this one where the trip would have taken no more than half an hour at most. It was the ideal means of getting them from one end of the station to the other with no one noticing, especially if you were desperate to cover your tracks and throw off any corporate pursuit.
“Was this a trick all along?” Tifany said, low-voiced. She and Farid were standing next to me, for some reason. “Bring those people here, then put them on the module to kill them?”
“No, that’s way too elaborate, if they just want to murder whoever tries to escape,” Farid told her.
Well, yeah. The Lalow had thought it was delivering the group of refugees to the next step in their route to safety. The crew had sent the refugees out to meet their contact, who they knew was called Lutran, though they didn’t know what he looked like. There had been no reported disruptions on the embarkation floor, no fight, no struggle picked up by the cameras, so the refugees had had no idea they were in danger.
So, working theory: Lutran meets the refugees and gets them to board the module that is due to be transferred from the Merchant Docks to his transport waiting in the Public Docks. (The transfers were all done by bot; haulers moved the recently loaded modules to the lock and pushed them out. If it was an inert module, the cargo bots would take it and attach it to its transport. If it was a powered module, the cargo bots would place it on one of the set paths around the station where it would get a go-signal and then head toward its destination. When it arrived, another cargo bot, or the transport itself if it had the right configuration, would attach the module.) With the refugees safe aboard the module, Lutran then goes back to his transport to make sure the module attaches correctly when it arrives and that the refugees get aboard. But it’s not there, the module has been diverted to an unknown destination. Someone else is aboard the transport, and that person kills Lutran. Then that person, who somehow has hacked the PA’s systems, deletes the record of Lutran’s module transfer.
This scenario was the most likely one, the probability was 86 percent, easily. But it was impossible unless the perpetrator could 1) hack Lutran’s transport, 2) hack the PortAuth surveillance cameras, and 3) hack the PortAuth transfer records.
So where was the module? It couldn’t just be floating around out there. The responder would have found it by now. Wherever it had gone, it must have looked like it was headed toward a legitimate destination, so the systems that did nothing but scan and monitor all station traffic wouldn’t alert on it.
It had to be attached to a ship.
And that ship, and the BreharWallHan agents, was still out there. It had been unable to leave before Lutran was discovered and the port closed. Most stations wouldn’t close their transit rings because someone found a dead body, but most stations weren’t as short on random dead bodies as this one.
The BreharWallHan ship hadn’t run, or tried to fight the responder, because Indah was right, they wanted to keep it quiet. They wanted the Lalow to continue its part of the operation until the BreharWallHan agents could trace all the routes, all the stations where refugees had been transferred, maybe until they could figure out where the pick-up point was inside the mining field.
All of this was leading to the conclusion… Oh, shit.
Which meant… I had to stop the search.
I could call Mensah and get her to make Indah listen to me. I could do that, but I still thought it would sound a lot like the time Mensah’s youngest child had got hold of the comm and demanded that Mensah tell an older sibling to stop taking all the squash dumplings. Mensah could make Indah listen to me, but it would waste time, and Indah being made to listen to me against her will was step one of a failure scenario. (I don’t know much about human interactions, but even I knew that.) I had to get Indah to trust me.
I could start by talking to her, I guess, I had actually not tried that yet, really.
I secured a protected feed connection with her and sent, Senior Officer Indah, you have to stop the search. The module must be attached to a ship still holding position off the station. If the BreharWallHan agents know we’ve found the module, they’ll kill the refugees and run. Everything on the Port Authority systems has to be treated as compromised. Whoever is on that ship could be using the dock cameras and Supervisor Gamila’s comm to listen to you and your officers right now. If you find the module while they’re listening—
She objected, You said that system wasn’t hacked.
I said, I’m wrong. Whoever did this is good enough not to leave any indication they were in the system. They are as good at this or better than I am. (Oh yeah, it hurt to say that.)
Aylen was trying to say something to her and Indah held up a hand to show she was on her feed. Her eyes were narrow and her mouth was thin. I had no idea what that meant. She said, How do you know this hacker isn’t listening to you right now?
Because that’s how fuckers get permanently deleted, is what I wanted to say. What I actually said was, I can secure my own internal system. I can’t secure the Port Authority’s systems or yours.
Indah hesitated, then switched to her all-team comm, “Aylen, come with me, we’ve got to reorganize this. I think we’re wrong about that module.” She told Matif, “Tell the search parties to resume, and we’re extending the search to the Public Docks.”
Matif glanced at Soire, clearly dubious. “Uh, all right. I mean, yes, Senior.”
Indah and Aylen were already walking away and I followed them. Keeping her voice low, Indah said, “Comms off.” Aylen immediately complied and my drone video showed a visible shift in her attitude, from confused protest to still confused but no longer protesting.
Indah added, “SecUnit, I assume you can get me a secure connection to the station responder?”
“Yes. This way.” I secured a connection with Dr. Mensah’s feed. Hi. I have a request.
I knew from her guard drones that she was still in the council offices on the other side of the station mall, working in her feed. What’s up?
Senior Indah and I need to borrow your private office.
Mensah’s private office was close by, in the admin block with the Port Authority. But the important part was that her comm and security monitoring wasn’t connected to either StationSec or any of the PortAuth systems, it was a separate secure system used by the council.
And it was really secure, because one of the first jobs Mensah had got for me was to make sure it was “up to date and resistant to corporate or other incursion.”
It was such a relief to step into a place where I had control of the security. As we crossed the tiled floor of the lobby I felt the tension in the organic parts of my back ease. Mensah had notified her staff to let us through, and I removed us from the surveillance camera, just in case.
One of her assistants opened the inner office for us. He had already closed and opaqued the transparent doors on the balcony that looked out over the admin plaza. He was used to me and used to confidential council stuff, so he didn’t even glance up at my drones, just nodded to us and slipped out as we stepped in. He said, “I’ll be in the reception area, just message me when you’re finished,” and engaged the privacy seal on the door.
Indah had been here before but Aylen clearly hadn’t, and looked around at the family images and the plants. (It was a nice office, I had spent a lot of time on the couch.) I used the feed to open the secure terminal, and the big display surface formed in the air above the desk. I opened the secure channel for Indah and for Mensah, who had been holding on her secure feed in the council offices. Then I sent a hail for the responder. When it answered, I opened the connection.
Indah ordered the responder to scan the ships in holding positions off the station and sent the module’s specifications. She told them there was a possibility the Port Authority systems had been compromised and they needed to communicate only with her or Aylen, and via the council system and not Station Security’s system. The responder asked for a confirmation order from the council and Mensah supplied it. Mensah then signed off, telling Indah to contact her immediately if she needed any other assistance, and Indah thanked her.
Then me, Aylen, and Indah were standing in the office looking at each other. Or they were looking at me and my drones were looking at them.
“You really think our systems are compromised?” Aylen asked.
Indah had her arms folded, her expression grim. It had occurred to me she was maybe worried about feeling stupid too, if we were wrong about this. She said, “Yes. It’s the only thing that makes sense.”
I had control of all inputs to this room’s comm and feed, and I caught and bounced a comm call for Indah with Balin the Port Authority bot’s feed ID. It was probably an important call from Gamila but if something had blown up the council’s system would notify us and everything else could wait five minutes. It was time to be honest. I told Indah, “You were wrong when you said it was unlikely to be a local actor. But I think you know that now.”
Indah glared at me, but it was more wry than angry. “Is that what you think? Because you keep insisting it’s a mysterious ultra-hacker.”
Okay, that one stung. “I didn’t use the words ‘mysterious’ or ‘ultra.’”
Aylen watched like it was one of those human games where they threw balls at each other. (I’d had to stop a lot of those while on company contracts; they violated the company personal injury safety bonds.) (Yeah, it was super fun telling the humans they couldn’t do it because SecUnits always like giving their clients more reasons to hate them.) But Aylen also looked relieved. Like she was beginning to wonder if we were stupid or what. She muttered, “Thank the divine, can we talk about it like adults now?”
Indah pointed the glare at her. “If the Port Authority systems weren’t hacked, then the files and camera data were altered by someone on station who has legitimate access, who knew how to cover their tracks.” She made an impatient gesture. “It even fits with the tool that was used to remove contact DNA from the body. The PA uses sterilizers for hazardous material safety, they’re all over the port offices.”
Aylen nodded. “But who? Everyone’s worked here for years, grew up here.”
I told Indah, “You thought it was me.”
She snorted in exasperation. “We thought it was you when we thought Lutran was a GrayCris agent. But we disproved that—I forget how many hours ago that was, this has been a long damn day.”
Aylen was annoyed. “If it was you, why would you tell us where the original crime scene was, which led to finding the Lalow and the refugees?”
Indah added, “You are the most paranoid person I’ve ever met, and I’ve worked in criminal reform for twenty-six years.”
I don’t even know how to react to that. She’s not wrong but hey, I need my paranoia. Speaking of which, I asked Aylen, “Where were you when Lutran was killed?”
She didn’t blink. “I was on a shuttle, coming back from an assignment in FirstLanding.”
“She was docking when the body was found.” Indah huffed impatiently. “Give me a little credit.”
The responder had kept its channel open and we could hear the crew talking in the background. “SatAmratEye5 is in the best position… That one’s clear… If they aren’t local they probably don’t know our satellite placement… There we go. Senior Indah, we’ve got it. There’s a ship with a module attached hiding in station section zero, in the shadow of the Pressy’s upper hull.” They were sending data and I transferred it to the big display above our heads.
It was a sensor schematic of a long shot view of the station, the curve of the ring tucked below the main structure and the shape of the giant colony ship it had been built out from. The view turned into a scan schematic and focused in on a shape huddled not far from the colony ship’s starboard hull.
It wasn’t a modular transport, it was a ship more like the Lalow. A bulky tube with round parts sticking out, and the module clamped onto its hull stood out in the sensor view like a… like a weird thing that shouldn’t be there. Aylen swore in relief and Indah told the responder to hold position and wait for orders.
Indah said, “The priority right now is to get to those people and if they’re alive, to get them out of there.”
Aylen looked grim. “That’s not going to be easy. It’s close enough to the colony ship that we could reach it with a team in EVAC suits, but we can’t arrange that from here. If the BreharWallHan agents have someone in the Port Authority who can listen in on our comms and feed, they’re going to know what we’re doing.”
Yeah, not we, me. I said, “This is the part that’s my job.”