The HR department at MediCore Solutions sent the employment records at 7:43 AM, a PDF attached to a standard response from their legal compliance office — the kind of document that exists in exactly the format you'd expect, with exactly the fields you'd expect, organized in a way that communicates institutional cooperation while committing to nothing. I open it with my coffee still hot for once.
Full employment history. Six current and former staff members with commit access to the CareFlow repository. I read down the list fast, taking the shape of it before I read for detail. Two 2021 contractors, both departed. Derek Huang, current. A QA specialist who left in early 2023. A senior architect who retired. The last entry in the former employees section: name, title, hire date, separation date.
Marcus Chen. Lead Developer. April 14, 2022. Separation: September 3, 2023.
The lab does not go quiet. That's not what happens. The server hum continues. Ray's chair is empty — he's not in yet — and the fluorescent lights overhead make the same low-level interference they always make, the frequency I stopped hearing months ago and hear now. My coffee sits two inches from my right hand. I know this because I'm looking at my right hand.
I know this name. Not `mchen-medicore`. Not the account ID on the sticky note still pinned to my corkboard from last night. Not the developer who wrote careful code at 2 AM in September. Marcus. Marcus Chen.
The commit timestamps rearrange in my head. Late evening sliding into early morning. The September sessions going later, later, later. Someone who stayed inside a problem until the problem gave. I know that pattern. Not from this code. Not from this investigation. My hands are on the keyboard and they're not moving.
I read the entry three times, which accomplishes nothing, and then I close the attachment and set down my coffee and look at the corkboard — sticky notes, callback architecture map, seven names in alphabetical order — and the space between what I know as a detective and what I know as something else compresses to nothing. I take the long way to the bathroom.
The mirror gives me what it always gives me: the hair I keep short for practicality, the shadows under my eyes from a sleep that ended before it was done, the face I've been looking at long enough to have mostly stopped registering. The fluorescent in here is the harsh kind, a different quality than the lab — more institutional, less forgiving. It doesn't soften anything, which is fine. I'm not here to be softened. I run cold water over my hands.
Seven people are dead. The mechanism I identified — the kill code at layer twelve — was written by someone who committed code between September 9th and 13th of 2022. Commits under the account `mchen-medicore`, confirmed by author attribution, consistent with the style analysis I ran over three days. The kind of profile that would hold in front of a prosecutor. None of that has changed. The evidence is the same evidence it was twenty minutes ago.
Marcus Chen. I know this name. I knew it before I opened that attachment. I knew what those hands looked like on a keyboard. I knew the late-night work pattern not from a git log but from the years before that log existed, before this codebase existed, before any of this. I knew the kind of mind that would stay inside a problem until the problem gave, because I watched that mind work from close enough to see when the problem gave and when it didn't. The water goes cold. I let it run over my wrists.
What I know as a detective and what I know as something else are the same information now. I can't make them separate again, and trying to make them separate is not the job. I dry my hands and go back.
Ray is at his desk when I come through the door, jacket still on, a takeout coffee in hand — he's been here maybe ten minutes. He reads me immediately: the shift in posture, the controlled movement that means I'm managing something. His face does the thing I've watched across two years of partnership: processing faster than he shows. I sit at my desk, looking at the corkboard — the sticky note with `mchen-medicore` in my own handwriting pinned next to the callback architecture map.
"The HR records came in," I say. "The lead developer. The account behind the dosage optimization layers." Ray puts his coffee down.
"His name is Marcus Chen." I keep my voice at the register I'd use reading out a license plate number. "Former MediCore lead developer. September 2023 departure. I know him."
The lab holds a particular quiet when both of us stop moving, the server hum filling what conversation leaves. Ray's hand is flat on his desk. He's not looking at the corkboard. He's looking at me.
"How well," he says.
"Two and a half years." A pause, because the next sentence has to be accurate. "It ended three years ago. Before I transferred to the DFU."
He nods. One slow movement that contains several things he isn't saying, because Ray Okonkwo is patient in a way that makes conversations feel like they're moving underwater — you don't realize how much pressure there is until you stop pushing against it. He picks up his coffee. Takes a drink.
"You could have flagged it yesterday," he says. "The commit timestamps. The coding style. You recognized something before the records confirmed it."
This is true. The pattern I noted last night — the late-night sessions, the sustained sprint work — I'd clocked it as familiar and filed it under a different category. Told myself it was a different kind of knowledge. I was wrong about that, and Ray can see that I know it.
"I know his code," I say. "Better than anyone else on this force. Better than anyone you're going to bring in. I built my understanding of how to read a developer's architecture by watching how he worked. If there's anything else embedded in those deeper layers — anything beyond what we've already mapped — I'm going to find it faster than someone who comes in cold."
Ray looks at me for a long moment. His expression hasn't shifted in a way I could point to, but something in it has settled, the way a scale settles when it's finished measuring. "Let's go to Reyes," he says.
Reyes's office: one plant on the windowsill, somehow thriving against the institutional odds. A desk with nothing out of place, a whiteboard cleared to a single timeline, the organized calm of someone who manages chaos at a controlled distance. She listens to me without expression until I'm done, then lets a beat pass before she speaks.
"Tell me why you should stay on this case," she says.
"Because the technical investigation is in layers eight through twelve of a codebase that takes six months to understand at surface level. I'm past surface level. What I know about Marcus Chen's code architecture is—" I stop, choose the word carefully. "Specific. The kind of specific that doesn't transfer to another investigator in a briefing."
Reyes's eyes move to Ray. He doesn't offer her anything.
"The kind of specific," she says, "that also makes you a liability if this goes to trial."
"That's a problem for the DA's office. Right now the problem is that we have a kill mechanism and an attributed author and no complete picture of the evidence chain. I'm the fastest path to that picture."
Reyes turns her pen over in her hand, once. She has this tell, small enough that I doubt she knows she has it. I've been watching her for two years and I've clocked it twice before — once when a case went sideways, once when she was deciding something that cost her something to decide. The pen goes over and comes back, and she sets it down.
"You stay on," she says. "Ray co-investigates. Every significant finding goes through him before it goes into the case record." A pause. "Document everything. Your methods, your reasoning, your sources. Anything you touch in this investigation has to be clean enough that a defense attorney finds nothing to work with." I nod, and she says: "Is there anything else you should tell me?"
There it is. Reyes asking in the careful way that suggests she already has a map of possible answers, has already calculated which ones she wants on record and which ones she wants to not officially know. I think about the look she gave me when she handed me this case nine days ago — not quite satisfied, not quite regretful. The look of someone who has made a decision they expect to be difficult and has made it anyway. I read it then as confidence in my work. I read it differently now. She knew before I did that the code would lead to Marcus's door. The only question is how long she'd known it and what she'd calculated it would cost me. "No," I say. We look at each other. "Good," she says.
I go back. My desk, the corkboard, the printouts in their stacks. The screen shows the same codebase it showed at 7:42 this morning, before I opened the PDF. The commit log, the callback architecture map, the execution trace running from the main module down through all seventeen layers to the kill mechanism at layer twelve. All of it unchanged. All of it different.
I pull a printout from the stack — the dosage optimization framework, layers nine through twelve. My red pen marks from three days ago are on it: circles around the clean sections, arrows tracking the execution path, the margin note One author. Clean throughout. I wrote that with professional appreciation for the architecture — clean work, a well-laid evidence trail. The person who built this was thinking three steps ahead, solving the problem in front of him and the problem after that. I read it now and think: I know these hands.
Not this code specifically — I didn't know this code existed, didn't know he was here, didn't know any of it until this morning. But the architecture. The naming conventions. How he organized complexity, the preference for explicit variable names, the function design that broke problems into their smallest workable pieces and solved each one in sequence. I recognize this. Not as evidence first. As something else first, before the evidence catches up. He hummed when he debugged — a tuneless loop, three or four notes cycling, something he did without knowing he was doing it. I used to hear it from across a room: the particular quality of concentration it meant, the signal that he'd found the thread and was following it.
I reach for the red pen. The code in front of me was written by someone whose late-night work sessions I recognized before I had a name for them. The execution path doesn't change because I know who mapped it. Evidence doesn't change because of what I know about the person who made it. This is the work, and the work is what I have.
I uncap the pen. I start reading.