Mã tàu không tồn tại
Màn hình laptop chiếu sáng mặt Khang lúc mười giờ đêm.
Anh ngồi ở bàn làm việc, chiếc bàn duy nhất trong căn hộ hai mươi lăm mét vuông, đặt sát cửa sổ nhìn ra ga Cát Linh. Phía dưới, đoàn tàu cuối ngày vẫn lướt qua đều đặn, cứ bảy phút một chuyến như kim đồng hồ quét mặt số. Tiếng ray rít nhẹ vọng lên đến tầng năm, quen thuộc đến mức Khang chỉ nhận ra nó khi nó dừng lại, lúc chuyến cuối chạy xong và thành phố chìm vào khoảng lặng giữa đêm.
Anh đã nghe âm thanh đó mỗi đêm suốt ba năm, kể từ khi thuê căn hộ này. Người bình thường sẽ chọn nơi nào xa ga tàu. Khang không. Anh cần nghe tiếng ray, giống cách người ta cần nghe tiếng mưa để ngủ, dù biết thừa rằng mưa không mang lại điều gì ngoài ẩm ướt.
Email từ Tuấn đến lúc chín giờ bốn mươi bảy. Không tiêu đề. Nội dung hai dòng:
"Mày còn nhớ cách đọc nhật ký vận hành cũ không? Có cái lạ. Đính kèm."
Tuấn là người ít lời. Sáu năm làm chung tại trung tâm điều phối metro, Khang biết rõ: khi Tuấn gửi tin mà không giải thích, nghĩa là anh ta không muốn viết ra bằng chữ. Hoặc không biết nên viết thế nào. Trong sáu năm đó, Tuấn chỉ gửi cho Khang đúng ba tin nhắn ngoài công việc, một lần mời cưới, một lần hỏi mượn sách, và một lần sau vụ tai nạn: "Mày ổn không?" Khang không trả lời tin cuối.
Khang nhấp tập tin đính kèm. Một bảng nhật ký hệ thống hiện ra, dạng văn bản thuần, quen thuộc đến mức anh nhận ra từng cột dữ liệu mà không cần nhìn tiêu đề. Thời gian. Mã tàu. Ga xuất phát. Ga đích. Trạng thái. Những cột này từng chạy trước mắt anh tám giờ mỗi ngày, năm năm liền. Trước khi mọi thứ kết thúc.
Anh cuộn xuống dòng Tuấn đánh dấu đỏ.
02:17:04 | T-000 | [null] | [null] | ACTIVE
Khang nhìn mã tàu.
T-000. Ba số không sau chữ T, đơn giản, sạch, và hoàn toàn vô nghĩa trong hệ thống mà anh từng vận hành.
Hệ thống metro Hà Nội đánh số từ T-001 đến T-089 cho các đoàn tàu trên ba tuyến chính. Không có tàu nào mang mã T-000, không trong sơ đồ vận hành, không trong hồ sơ bảo trì, không trong danh mục mua sắm tài sản. Mã 000 thậm chí không được phép theo quy ước đặt tên, nó nằm ngoài phạm vi chỉ mục, giống như tầng 0 trong một tòa nhà chỉ có từ tầng 1 trở lên.
Anh mở cửa sổ tra cứu, nhập mã vào thanh tìm kiếm. Kết quả: Không tìm thấy mục nào phù hợp.
Hai giờ mười bảy phút sáng. Ga xuất phát và ga đích đều ghi null, tức hệ thống không xác định được tàu đang ở ga nào, đi từ đâu đến đâu. Nhưng trạng thái vẫn là ACTIVE. Cảm biến đường ray vẫn ghi nhận chuyển động.
Lỗi nhập liệu, Khang nghĩ. Hoặc dữ liệu thử nghiệm ai đó quên xóa. Anh đã thấy hàng trăm lỗi tương tự trong những năm làm tại trung tâm, một kỹ thuật viên chạy thử phần mềm lúc nửa đêm, quên đóng phiên giả lập, hệ thống ghi nhận như tín hiệu thật. Chuyện bình thường.
Anh định gõ trả lời Tuấn: "Dữ liệu thử nghiệm. Kiểm tra xem ca đêm có ai chạy giả lập không."
Nhưng tay dừng trên bàn phím.
Hai giờ mười bảy.
Con số đó gõ vào một chỗ nào đó trong đầu anh mà anh không gọi tên được. Giống tiếng gõ cửa, không lớn, nhưng dai dẳng.
Hai giờ mười bảy là thời điểm giấc mơ bắt đầu.
Không phải lúc nào cũng mơ. Nhưng khi mơ, luôn cùng giấc mơ, luôn cùng thời điểm. Khang từng tỉnh dậy lúc 2:17 sáng đủ nhiều lần để nhớ con số đó rõ hơn cả sinh nhật mình. Trong mơ, anh đứng trên sân ga tối. Không biết ga nào, đèn tín hiệu nhấp nháy từ xa, ánh đỏ đập theo nhịp chậm. Gió từ tunnel thổi lên lạnh, mang theo mùi kim loại và bê tông ẩm. Tiếng tàu đến, bánh sắt trên ray, gần dần, nhưng không bao giờ thấy tàu. Chỉ nghe. Và tiếng loa phát một từ không rõ, như loa cũ bị nhiễu, chỉ nghe được âm sắc mà không nghe được nghĩa.
Rồi anh tỉnh. Mồ hôi ướt gáy. Mắt mở trong bóng tối căn hộ, và tiếng tàu thật bên ngoài cửa sổ, chuyến 5:00 sáng, đã bắt đầu chạy.
Năm năm. Cùng giấc mơ.
Khang xoa mắt, đẩy ghế ra khỏi bàn. Đồng hồ góc màn hình: 22:31. Ngoài cửa sổ, ga Cát Linh im lìm, chuyến cuối đã qua hai mươi phút trước, đèn sân ga chuyển sang chế độ an ninh: nhấp nháy cam đều đặn ở cuối ke ga, phần còn lại chìm trong bóng tối nhạt.
Anh đứng lên, rót cà phê từ bình giữ nhiệt. Ly thứ tư trong ngày. Bàn tay trái hơi run khi cầm, không nặng, chỉ đủ để mặt nước gợn nhẹ trong ly. Triệu chứng mất ngủ kéo dài, bác sĩ bảo thế. Khang không uống thuốc, thuốc ngủ khiến anh mơ nhiều hơn, và anh không muốn thêm bất cứ gì từ giấc mơ đó.
Vết sẹo mờ trên mu bàn tay trái phản chiếu ánh xanh từ màn hình khi anh đưa ly lên miệng. Dài chừng bốn phân, nông, đã liền hẳn nhưng da ở đó nhạt hơn xung quanh. Khang liếc xuống rồi nhìn đi, phản xạ. Không nhớ sẹo từ đâu. Hồ sơ y tế ghi "vết thương nông do tai nạn lao động", nhưng anh không nhớ cụ thể lúc nào, ở đâu, bằng gì. Bác sĩ bảo chấn thương tâm lý sau vụ tai nạn có thể gây mất ký ức chi tiết. Khang không hỏi thêm. Có những câu hỏi mà chỉ đặt ra đã mệt.
Anh ngồi lại. Đặt ly cà phê xuống, vẫn chưa uống, mặt nước đã nguội thành một lớp phẳng lì phản chiếu ánh sáng màn hình. Mở lại tập tin nhật ký.
Năm năm trước, Khang có thể đọc hàng nghìn dòng nhật ký trong một ca trực mà không mỏi mắt. Anh đọc dữ liệu như người ta đọc tiểu thuyết, có nhịp, có mạch, có logic riêng. Mỗi bất thường trong nhật ký đều kể một câu chuyện: cảm biến nhiệt lên bất thường có thể là phanh bị kẹt, trễ ba giây ở ga thứ tám có thể là cửa toa bị vướng, mã lỗi E-47 lặp lại ở ga Đại học Quốc gia có thể là nước ngầm thấm vào hộp đấu nối. Anh biết đọc, và anh giỏi.
Cho đến đêm mọi thứ kết thúc. Đêm mà nhật ký ghi nhận anh gửi lệnh chuyển ray, và mười bảy người không bao giờ về nhà.
Khang chớp mắt. Đẩy ý nghĩ đó ra. Quay lại tập tin.
Lần này không nhìn dòng T-000. Cuộn lên đầu, kiểm tra toàn bộ ngày.
Nhật ký vận hành ghi nhận 347 lượt chạy tàu trong hai mươi bốn giờ đó, từ 5:00 sáng đến 23:00 đêm. Tất cả đều hợp lệ: mã T-001 đến T-089 luân chuyển theo biểu đồ, ga xuất phát và ga đích rõ ràng, trạng thái xen kẽ giữa ACTIVE, DOCKED và MAINTENANCE. Hệ thống vận hành chuẩn mực, ba tuyến, mười hai ga mỗi tuyến, bốn phút giờ cao điểm, bảy phút giờ thường. Không sai lệch.
Khoảng trống từ 23:00 đêm đến 5:00 sáng hôm sau. Sáu tiếng hệ thống ngủ. Không tàu nào chạy. Bộ cảm biến đường ray chuyển sang chế độ chờ, chỉ ghi nhận nếu có chuyển động bất thường. Quy trình vận hành chuẩn, không ai có lý do nghi ngờ gì.
Nhưng lúc 2:17, giữa khoảng trống, một dòng đơn lẻ. T-000. ACTIVE.
Bộ cảm biến ghi nhận chuyển động trên đường ray. Lúc hai giờ mười bảy phút sáng, khi toàn bộ hệ thống đáng lẽ phải ngủ.
Khang nhấp chuột phải vào dòng dữ liệu, chọn Thuộc tính nguồn. Cửa sổ thông tin bật lên: dòng này không phải nhập tay. Không phải dữ liệu giả lập. Nó được tự động ghi lại bởi bộ cảm biến đường ray khu vực ga Cát Linh, cảm biến vật lý, phản ứng với rung động kim loại trên ray. Nghĩa là có thứ gì đó thực sự di chuyển trên đường ray lúc đó.
Không phải lỗi nhập liệu. Không phải giả lập.
Có thứ gì đó chạy qua ga lúc 2:17 sáng.
Khang đóng cửa sổ thuộc tính. Mở trình duyệt lưu trữ nhật ký, tài khoản cũ của anh vẫn hoạt động ở chế độ đọc. Một thói quen khó bỏ: nghỉ việc năm năm, không ai thu hồi quyền truy cập, và anh không bao giờ hỏi tại sao. Có lẽ bộ phận quản lý nhân sự quên. Hoặc không ai quan tâm đủ để nhớ rằng có một kỹ sư cũ tên Lê Minh Khang vẫn đang đọc nhật ký mỗi đêm.
Anh vào lưu trữ, giao diện cũ, font nhỏ, nền đen chữ xanh. Giống hệt như năm năm trước. Thậm chí hình nền mặc định vẫn là logo metro Hà Nội phiên bản 2026, chưa ai cập nhật. Hệ thống lưu trữ như một căn phòng không ai dọn, mọi thứ vẫn ở đúng chỗ, phủ bụi thời gian, chờ ai đó quay lại.
Mở nhật ký ngày hôm trước. Cuộn xuống khung giờ 2:00 sáng.
02:17:04 | T-000 | [null] | [null] | ACTIVE
Ngày trước nữa.
02:17:04 | T-000 | [null] | [null] | ACTIVE
Và trước nữa.
Khang mở liên tiếp mười bốn ngày. Cùng dòng. Cùng mã. Cùng giờ, chính xác đến giây: 02:17:04. Cùng ga: Cát Linh (theo bộ cảm biến nguồn). Cùng trạng thái.
Mười bốn đêm liên tiếp.
Anh ngả lưng vào ghế, nhìn lên trần nhà. Bóng đèn huỳnh quang trong bếp nhấp nháy, sắp hết tuổi thọ, anh lười thay từ tháng trước. Căn hộ tối ngoài vùng sáng của laptop: giường chưa dọn, ga trải giường xám nhăn nhúm, kệ sách chất đầy tài liệu kỹ thuật bám bụi, hầu hết là sổ tay ghi chép từ thời còn đi làm, anh mang về sau khi nghỉ mà chưa bao giờ mở lại. Máy pha cà phê cũ trên quầy bếp, cạnh ba hộp mì gói chưa nấu. Bồn rửa có hai cái bát từ sáng.
Đời sống của một người đã dừng lại ở một thời điểm nào đó và không tìm được lý do để bước tiếp, hoặc không cho phép mình bước tiếp. Khang biết rõ sự khác biệt giữa hai trạng thái đó, nhưng anh không phân loại bản thân. Phân loại cần nhìn lại, và nhìn lại là thứ anh tránh.
Mười bốn đêm.
Lỗi hệ thống không lặp lại mười bốn lần ở cùng một thời điểm với cùng một mã tàu không tồn tại. Lỗi có tính ngẫu nhiên, sai thời điểm, sai mã, sai ga, mỗi lần mỗi khác. Còn nếu cùng một pattern lặp lại chính xác đến từng giây trong hai tuần liên tục, đó không phải lỗi.
Đó là lịch trình.
Ai đó, hoặc cái gì đó, đang chạy trên đường ray metro Hà Nội lúc hai giờ mười bảy phút sáng. Mỗi đêm. Đều đặn hơn cả biểu đồ vận hành chính thức.
Khang ngồi thẳng lại. Gõ trả lời Tuấn, xóa bản nháp cũ, viết mới:
"Không phải lỗi. Nó lặp lại ít nhất mười bốn ngày, cùng giờ, cùng mã. Cảm biến ghi nhận chuyển động vật lý. Để tao xem thêm."
Gửi. Đóng email. Nhìn đồng hồ: gần mười một giờ đêm.
Ba tiếng nữa, nếu dòng dữ liệu không nói dối, sẽ có thứ gì đó chạy qua ngay bên dưới chỗ anh đang ngồi. Ý nghĩ đó không khiến Khang sợ. Nó khiến anh tò mò, và sự tò mò thì nguy hiểm hơn sợ hãi, vì nó kéo người ta lại gần thay vì đẩy ra xa.
Anh nhìn ra cửa sổ. Ga Cát Linh tối, đèn cam nhấp nháy ở cuối sân ga. Đường ray dưới ánh đèn đường nhìn như hai vệt bạc chạy song song, mất hút vào tunnel phía bắc. Tunnel đó dẫn đến ga tiếp theo, ga Láng. Rồi ga sau nữa. Rồi ga sau nữa. Hệ thống metro chạy dưới lòng Hà Nội như mạch máu dưới da, người ta đi trên mặt đất mỗi ngày mà quên mất bên dưới là một thế giới khác.
Tiếng gì đó, rất nhẹ, vọng từ phía ga. Hoặc anh tưởng tượng. Gió thổi qua khe cửa sổ hé, mang theo lạnh và mùi bê tông khô. Khang đóng cửa sổ.
Vết sẹo trên tay ngứa ran.
Anh nhìn xuống. Gãi nhẹ bằng ngón cái tay phải, động tác vô thức, đã làm hàng nghìn lần. Sẹo không đau, không sưng, chỉ thỉnh thoảng ngứa vào những lúc anh không muốn nhất. Bác sĩ bảo là tâm lý. Khang không tranh luận.
Quay lại màn hình. Mười bốn dòng T-000 vẫn sáng trên nền đen.
Hai giờ mười bảy. Cùng giờ với giấc mơ.
Anh không viết điều đó vào tin nhắn cho Tuấn. Không có lý do. Đó chỉ là trùng hợp, con số phổ biến trong vô số con số có thể có giữa mười một giờ đêm và năm giờ sáng. Không có gì đặc biệt.
Khang lặp lại điều đó với chính mình. Rồi đóng laptop.
Căn hộ chìm vào tối. Chỉ còn ánh đèn cam từ ga Cát Linh lọt qua khe rèm, nhấp nháy đều trên trần nhà như nhịp tim ai đó đang ngủ.
Anh nằm xuống giường, không thay quần áo. Mắt mở trong bóng tối, nhìn lên trần.
Bên ngoài, Hà Nội ngủ. Đường phố vắng, quán xá đóng, ga tàu tối. Mọi thứ đúng vị trí, thành phố vận hành theo nhịp đã thiết lập, không lệch.
Bên dưới, sâu hơn sân ga, sâu hơn đường ray, sâu hơn tầng kỹ thuật mà Khang từng biết rõ từng ngóc ngách, có thể có thứ gì đó đang di chuyển. Không đèn. Không loa thông báo. Không hành khách ngồi trên ghế đệm nhìn ra cửa kính.
Hoặc có.
Khang không biết. Chưa.
Nhưng mười bốn dòng dữ liệu trên màn hình nói với anh rằng có thứ gì đó đang chạy dưới lòng thành phố này vào lúc hai giờ mười bảy phút sáng mỗi đêm, đều đặn, kiên nhẫn, và hoàn toàn vô hình với mọi hệ thống giám sát chính thức.
Vết sẹo ngừng ngứa. Mắt Khang nặng dần.
Trước khi ngủ, hoặc trước khi giấc mơ kéo anh đi, một ý nghĩ cuối: Nếu đó là lịch trình, thì ai đặt lịch?
Anh không tìm được câu trả lời.
Giấc ngủ đến, chậm, từng lớp, như nước dâng.
Và như mỗi đêm, anh đứng trên sân ga tối, nghe tiếng tàu không bao giờ đến. Nhưng đêm nay có gì đó khác. Tiếng loa, vẫn nhiễu, vẫn méo, nhưng lần đầu tiên, Khang nghe được hai âm tiết.
Anh không nhớ chúng khi tỉnh dậy.