The briefing room in the morning has the same whiteboard from last night, Marcus's location still in Ray's handwriting: a rental in Briar Lake, forty miles north, above a hardware store on the main street. Below the address, three items: a library card registered to Marcus Chen, fourteen days of access to a file-sharing service from the same IP, no VPN on any of the sessions. The access started two weeks ago and ended forty-eight hours before they traced it.
Captain Reyes stands at the window with her coffee, the one she always brings from her office because the briefing room's is bad. Ray has his jacket already on. The warrant is signed. Marcus Chen is in custody at the Briar Lake station, processed and waiting for transfer.
"We send Kowalski to the room," Reyes says. Not a question. "Forensics is already there," Ray says. "Room's preserved." He looks at me. "Ready?"
The trail doesn't read like carelessness. I've been working with Marcus's code for four weeks and I know how his mind handles concealment: carefully, in layers, with the false surface and the actual structure separated by enough complexity that casual inspection finds nothing. Seventeen nested callbacks. Deprecated libraries nobody enters. Kill code dressed as a null check. The IP access pattern is fourteen days of consistency with no masking. A library card under his real name. He built the kill mechanism to run invisibly for as long as it ran, and then he left a clean IP in a metadata record and stopped using the VPN. Either he made a mistake or he decided he was done making himself hard to find. The evidence supports either version. It always has, with Marcus. "Ready," I say.
Reyes sets down her coffee. "Call in when you have the room." The hardware store forty miles north has a red awning, and the rental stairs are around the back, up an exterior staircase that's been shoveled but not salted, and I test each step against the ice. At the top, a forensic tech I don't recognize holds the door open with one gloved hand and gestures me toward the living space.
The room is small. A bed, a kitchenette, a bathroom I don't need to look at. February light comes through a window facing an alley and does nothing for the space. There are almost no personal effects: a row of books on the windowsill — poetry and one technical manual, the spines worn — and a corkboard over the desk that stops me the moment I see it.
His printouts. His code, on paper, blue pen, his handwriting in the margins. The same pages I have on the lab wall in red pen. The same codebase, annotated from a different hand, the marks tracking different paths through the same architecture. I get close enough to read the annotations. He's been tracing execution paths, circling callback entries, drawing arrows between functions the same way I drew them. The marks at layer 12 have three blue circles and a question mark. He was investigating himself.
On the desk: a mechanical keyboard, keys worn smooth at the home row. A power strip. A single mug, washed and dried and placed upside down on a folded piece of paper towel. The laptop is open, as if he left mid-session or set it that way on purpose. The tech photographs it before I approach.
The open file is named `medicore_analysis.md`. I read the first screen without touching anything. His version of a forensics report: the codebase architecture, the deprecated libraries still bearing load, the safety parameter architecture at layer 12, the callback structure that made the kill mechanism invisible to standard code review. He's documented the negligence. He's mapped it the same way I mapped it — callbacks as corridors, the deprecated wings as sealed sections, the whole codebase as a building no one had maintained properly in three years. His analysis of the vulnerability is technically exact. It matches the third paragraph of the email he sent Victor Russo eighteen months before the first death. He documented the weapon after using it and called it a report on the conditions that made the weapon possible. Both readings are accurate. The codebase doesn't distinguish between them. "Get me a forensic image," I tell the tech. "Full drive. Before anything gets moved."
It takes nine minutes to run the image. While I wait, I walk the room. The poetry books on the windowsill: I read the spines without touching them. Bishop, Szymborska, Frost, Heaney. A worn field guide to tree identification that doesn't belong with the rest. One technical manual, the cover faded — a book on distributed systems I remember being on his nightstand when we were together. He took it when he left.
The tech hands me the all-clear. The original laptop is evidence, bagged and logged. I'm working from the image on my own drive. I open the file directory.
Forty-seven files. Most are the analysis, broken into sections. One file has no extension and no name except a date: the month I was assigned this case. I open it.
It's formatted as a code comment block, the slashes and the white space his standard syntax. I've read hundreds of these in the past four weeks. I know the difference between his technical register and his personal register by the architecture of the sentences alone — his professional comments build toward a conclusion, while his personal ones circle without landing.
// Nadia. // // I've been reading my own code for two weeks. // You would have gotten through it in four days.
A gap in the file — blank lines where I expected words — and then:
// The list ends at G because that's where I stopped. // Not because I was done. Because I didn't know // what I was doing anymore by the time I got to G. // Margaret was C. I thought I knew why. // By the time I got to G I didn't know anything.
Another gap. The fan from my laptop is the only sound in the room. The last four lines of the file:
// The comments in the code weren't a plan. // I know that's what you think. What you had to think. // I was talking to you. I've been talking to you // since you left and the code was the only place // I could do it where it wasn't embarrassing. // I don't know if that makes it better. // I don't know what makes it better.
// I told Victor. The email is in the archive. // I know it doesn't help. // // I know.
I close the laptop.
The room is the room. The forensic tech has stepped outside. The poetry books are on the windowsill, Szymborska's name in small capitals on pale green cloth. The corkboard with his blue marks and his question mark at layer 12 is still there, will be photographed and bagged, will become Exhibit D-something in a case file I'll never fully hand off.
I sit in the rental chair. Both hands flat on my knees. The alley window gives me gray sky and the back of another building and the ice at the foot of the steps I came up. I sit with what the file says and what it doesn't say and the fact that those are the same thing, were always the same thing, and I can distinguish the gap between them — have spent twenty-eight days learning to read exactly this kind of gap — but I can't tell which version of him wrote it. The one who killed seven people. The one who tried to warn them. The one who was talking to me in the margins of a codebase because it was the only place he could do it without it being embarrassing. All three. Same person. Same code. Same comment syntax going back to callback layer 8.
Then I open the laptop and call the tech back in. "Log the file with no extension," I tell him. "Date-named. Goes in with the drive image." He writes it down. He doesn't ask what's in it.
The drive back takes forty minutes. I keep both hands on the wheel and don't turn on the radio. The evidence bag with the forensic drive is on the passenger seat, and the road runs south through bare trees and frozen drainage ditches and I don't think about the file until I'm pulling into the precinct lot, and then I stop not thinking about it.
I'm back at the lab by two in the afternoon. The east wall has its fifty-three printouts. The whiteboard has the chain of responsibility with my initial at the bottom. The forty-seven-page report is on my screen, cursor at the end of the final section.
The room in Briar Lake becomes Section 9 of the forensics summary: the physical space, the corkboard with its self-annotated printouts, the laptop and its contents. I list `medicore_analysis.md` and describe its content in twelve words: a detailed architectural review of the CareFlow codebase consistent with authorial knowledge. The second file, the unnamed one, gets two sentences: "A secondary personal document was also present on the suspect's device. Content has been preserved in the forensic drive image as Exhibit F-3." That's all.
I open the forensic copy of Exhibit F-3 again and read it once more, the screen going slightly soft at the edges because I haven't blinked enough. Then I close it. Then I print it. The printer takes forty seconds and produces a single page — the comment block, his syntax, the three sections with their gaps, the last line's white space after I know. I fold the page in half, then in half again.
The bottom drawer of my desk has accumulated, over two years at this desk, the things I don't need on the surface but don't throw away: the cap from a red pen I finished on the Hargrove case, a birthday card from Ray's kids with a cake drawing in purple crayon, a photograph I turned face-down the day Marcus left and have moved twice since without looking at. I put the folded page in the drawer and close it.
The forty-seven pages go to Torres at four-fifteen. She sends a read receipt at four twenty-two and a message at four-forty: Reviewed. Strong. The second expert piece is in motion — I have someone at Carnegie Mellon who does author attribution forensics. Clean chain. Call me tomorrow. I send back: Copy.
The case file is as complete as it can be without a trial. The printouts are still on the wall. I've taken down the working maps, the hypothesis trackers, the six sticky notes that marked functions of interest at layers 3 through 9 — but the comment trail is still there, the pages from layer 8 through 12, Marcus's voice in the margins, my red pen over his words. I should take them down. I don't take them down tonight.
Some answers are closed: the kill mechanism is documented and attributed. The intent is established through commit timestamps, comment trail, and the self-analytical file from Briar Lake. The motive has a shape — the grandmother, the email Victor ignored, the eight months between the warning and the resignation, the year between the resignation and the first death. The alphabetical order was structural. The list ended at G because Marcus stopped at G or because the warrant came before H, and the evidence supports either without requiring certainty.
The love letters were genuine. That's documented too, in its way — the escalation from layer 8 through layer 12, the file in Briar Lake that wasn't addressed to a jury or a judge or a court record. A forensics report would call this evidence of intent and method. I called it something else in the rental chair. The file holds what it holds.
Did he want to be found? No VPN on the file-sharing service. A library card in his real name. The digital trail that read, to anyone who knew how he worked, like a thing he left rather than a mistake he made. The evidence supports the hypothesis. The evidence also supports a man who got tired of moving carefully and stopped. I've been doing this for twenty-eight days. I know his code better than I've ever known another developer's work, and I can't tell you with any certainty which version he was at the end.
The fluorescent light above my desk hums at a different pitch than the server racks behind the glass. Outside the lab window, the precinct parking lot is empty except for Ray's car and mine. He's upstairs finishing his own report. The printouts on the east wall catch the light when I turn — fifty-three pages of a conversation I was never meant to find, or was always meant to find, and the difference between those two things is the difference between the case and the story, and I've filed the case.
The code still exists. Preserved in forensic images, indexed in the evidence system, copies across multiple servers. The comments are still there, layer 8 through layer 12. They say what they say. The case closes. The words don't.