Ngày Mai Chưa Lên SóngCh.26 / 35
Chapter 26

Giải Phẫu Nhật Ký

Ánh đèn neon tuýp dài gắn trên xà gồ thép của căn gác xép chập chờn rọi hai cái bóng đổ dài, gầy guộc của Yến và Duy xuống đống cốc giấy sũng bã cà phê hòa tan cáu cặn. Tiếng quạt tản nhiệt của cụm máy chủ mini ráp tay ở góc phòng vẫn rít lên từng hồi khan đặc, khô khốc và rền rĩ sau hơn ba mươi tiếng đồng hồ hoạt động hết công suất trong không gian kín bưng.

Căn phòng chật chội chưa đầy mười bốn mét vuông nồng nặc thứ mùi hăng hắc quen thuộc của nhựa thông hàn mạch, mùi ẩm mốc bốc lên từ những tấm ván ép lót sàn ngậm no nước mưa sau trận bão đêm qua, và trên hết, bao trùm lên tất cả, là thứ mùi tanh lợm của bùn cống rãnh đô thị. Thứ bùn xám đen ấy vẫn còn bám thành từng vệt khô ráp, nứt nẻ trên mép chiếc điện thoại thông minh vỡ nát mặt kính của bà Lành đang nằm chỏng chơ bên rìa bàn phím của Yến. Thư đã hoàn toàn kiệt sức sau đợt đối chất gay gắt kéo dài suốt buổi sáng với các tiểu thương kiệt 126, tiếp nối bằng một trận cãi vã dữ dội đến nghẹn giọng giữa ba người về bản báo cáo tiếp cận người dùng đầy những số liệu ảo. Lúc này, Thư nằm còng queo trên tấm nệm cá nhân kê sát góc tường vôi bong tróc, trùm kín chiếc chăn dạ mỏng qua khỏi đầu, chỉ thỉnh thoảng giật mình cựa quậy khi một cơn co thắt cơ bắp vô thức chạy qua bờ vai gầy. Trong gian gác ngột ngạt chỉ còn lại tiếng lách cách rời rạc của bàn phím cơ dưới tay Duy và nhịp thở nặng nhọc, đứt quãng của Yến.

Trên góc phải màn hình máy tính của Yến, chiếc đồng hồ đếm ngược của hạn chót bốn mươi tám giờ do Công ty Quản lý Đô thị Đông Bờ áp đặt đang nhích từng giây vô tình. Hai mươi mốt triệu sáu trăm ngàn đồng tiền giải ngân đợt hai của dự án thí điểm đã bị đóng băng hoàn toàn sau một cú điện thoại lạnh lùng từ phòng tài chính của họ lúc mười một giờ trưa. Hạn thanh toán mười sáu triệu tám trăm ngàn đồng chi phí hạ tầng máy chủ đám mây AWS sẽ điểm vào đúng mười bảy giờ chiều ngày thứ Sáu; nếu không có tiền bù vào thẻ tín dụng đã cạn hạn mức, toàn bộ cụm máy chủ ảo và cơ sở dữ liệu sẽ tự động bị đình chỉ dịch vụ. Nhưng điều đang bóp nghẹt lồng ngực Yến, khiến từng cuống phổi cô thắt lại đau đớn, không phải là nguy cơ vỡ nợ cận kề hay bản công văn dọa khởi kiện vi phạm hợp đồng của Lương Đức Huy.

Điều đang ám ảnh tâm trí cô từng giây phút là hình ảnh anh Bình tiệm giặt ủi ngất lịm bên bốn khối mô-tơ ba pha ngập chìm trong thứ nước bẩn đen ngòm, sặc mùi dầu máy và phân bùn rải khắp nền nhà, trong khi trên màn hình chiếc điện thoại thông minh được anh cẩn thận bọc túi nilon treo trên vách, ứng dụng Thủy Kế của cô vẫn trơ tráo hiển thị một chấm tròn màu xanh lục biểu thị trạng thái an toàn tuyệt đối.

"Bắt đầu từ việc khớp nhịp xung," Duy phá vỡ sự im lặng bằng một giọng nói khàn đặc như có dằm cọ vào thanh quản. Đôi mắt cậu thâm quầng, những tia máu đỏ li ti đan kín màng mắt sau hai đêm trắng không chợp mắt, chằm chằm nhìn vào hai cửa sổ dòng lệnh Linux đang mở song song trên màn hình phụ. "Nếu chúng ta không đồng bộ hóa được dấu thời gian giữa các tầng ghi nhận dữ liệu, mọi suy diễn hay giả định về thứ tự sụp đổ của mạng lưới đều chỉ là sự tự huyễn hoặc vô nghĩa."

Yến kéo lê chiếc ghế xoay gãy một bên tay vịn lại sát cạnh Duy, đặt bàn tay lạnh ngắt lên con chuột quang. Lớp mồ hôi nhớp nháp rịn ra nơi lòng bàn tay khiến bề mặt nhựa nhám trở nên trơn trượt.

Trên màn hình bên trái của Duy là tệp nhật ký thu nhận gói tin thô dạng JSON được máy chủ ứng dụng ghi lại theo thời gian thực; ở giữa là bảng dữ liệu chuỗi thời gian của TimescaleDB lưu trữ toàn bộ các số đo mực nước gửi về từ cảm biến sóng siêu âm; và bên phải là bản xuất nhật ký hàng đợi từ cổng SMS viễn thông của nhà mạng đối tác.

"Trạm S02 ở ngã ba An Khê dùng bộ vi điều khiển ESP32 lấy mẫu qua giao thức NTP công cộng," Yến chỉ ngón tay run rẩy vào cột mốc thời gian của gói tin cuối cùng được ghi nhận trước khi đường truyền bị gián đoạn hoàn toàn. "Nhưng máy chủ đám mây của mình lại thiết lập múi giờ hệ thống là UTC, trong khi phía cổng đối tác viễn thông lại tự động đóng dấu sự kiện bằng giờ địa phương UTC+7 mà không hề đính kèm cờ phân định múi giờ chuẩn trong tiêu đề gói tin. Nhìn kỹ đoạn này đi Duy."

Duy không đáp, những ngón tay gầy guộc của cậu thoăn thoắt gõ một chuỗi lệnh bash script phức tạp kết hợp với công cụ xử lý văn bản awk để bóc tách ba trường thông tin cốt lõi: `created_at`, `received_at` và `telecom_dispatched_at`. Từng dòng ký tự màu xanh lá cây cuộn lên vun vút trên nền màn hình đen sâu thẳm, phản chiếu ánh sáng lân tinh ma quái vào cặp kính cận dày cộp của cậu. Khi toàn bộ các hàng dữ liệu phân tán được giải mã và căn chỉnh về cùng một trục chuẩn micro-giây thống nhất, một khoảng vênh thời gian lập tức lộ ra một cách trần trụi.

"Lệch mười hai giây," Duy lẩm bẩm, đốt ngón tay trỏ gõ cộc cộc xuống mặt bàn gỗ dán ép đã phồng rộp mép. "Tất cả các gói tin cảm biến gửi từ cổng phát ngoại vi ngoài cột điện bị trễ đúng mười hai giây so với đồng hồ hệ thống trên máy chủ nhận gói tin. Mười hai giây này là thời gian chết tích lũy trong bộ đệm lưu tạm của chip modem truyền dữ liệu trước khi nó hoàn tất việc bắt tay giao thức TCP với trạm phát sóng BTS gần nhất."

"Điều chỉnh lại toàn bộ bảng đối chiếu ngay lập tức," Yến nói, giọng cô dứt khoát dù cổ họng khô rát như thể vừa nuốt phải một vốc cát vụn. "Trừ lùi mười hai giây cho toàn bộ dấu thời gian của cảm biến ngoại vi trong khung giờ từ mười sáu giờ đến hai mươi mốt giờ đêm qua. Chúng ta phải nhìn thấy chính xác đến từng phần trăm giây những gì đã thực sự diễn ra ngoài hiện trường kiệt 126, không được phép phỏng đoán hay du di bất kỳ sai số nào nữa."

Duy nhấn mạnh phím Enter. Tập lệnh chạy vèo qua hơn mười tám ngàn bản ghi dữ liệu, nén toàn bộ chuỗi sự kiện hỗn loạn vào một trục tọa độ thời gian duy nhất. Độ lệch mười hai giây biến mất. Bây giờ, bức tranh giải phẫu kỹ thuật của thảm họa ngập lụt đêm qua đã được đặt ngay ngắn lên bàn mổ với độ chính xác lạnh lùng của những con số nhị phân.

"Bây giờ kiểm tra đến tầng dữ liệu lịch sử," Duy chuyển sang cửa sổ dòng lệnh thứ hai, mở cây thư mục gốc của toàn bộ kho mã nguồn. Cậu rê chuột đến một thư mục con mang cái tên đầy ám ảnh: `legacy_corrupted`. "Hôm qua lúc Thư chất vấn về việc mô hình dự báo bị sai lệch hoàn toàn so với diễn biến nước tràn, em đã nghĩ đến khả năng tồi tệ nhất: liệu có phải tập huấn luyện của thuật toán vẫn vô tình nuốt phải đống dữ liệu lượng mưa cũ bị lỗi múi giờ bảy tiếng từ chương trình thử nghiệm ban đầu mà chúng ta từng cách ly hay không?"

Đó là tập dữ liệu thu thập từ những ngày đầu tiên khi Yến mới chân ướt chân ráo rời bỏ văn phòng máy lạnh ở Sài Gòn để quay trở về Đà Nẵng lập nghiệp. Hồi đó, trong cơn sốt ruột muốn nhanh chóng có dữ liệu để chạy thử mô hình máy học, Duy đã cào dữ liệu đo mưa không qua kiểm định từ các diễn đàn thời tiết mở và vô tình lưu sai định dạng múi giờ, khiến thuật toán dự báo từng biến những trận mưa dông nửa đêm thành những cơn mưa rào giữa trưa nắng gắt. Khi phát hiện ra sự cố ngớ ngẩn đó, chính Yến đã tự tay ra lệnh phong tỏa toàn bộ tập tin rác này vào một nhánh riêng biệt, đặt tên là `legacy_corrupted`, đồng thời thiết lập rào chắn cấm tiệt mọi đường dẫn gọi hàm từ thuật toán phân tích chính.

Duy chạy lệnh kiểm tra tính toàn vẹn mã băm SHA-256 trên toàn bộ các tệp mô hình phân tích hồi quy ngập lụt. Con trỏ chuột nhấp nháy trong vài giây căng thẳng tột độ. Kết quả trả về trên màn hình sáng lên một dòng chữ màu xanh lục: mã băm khớp một trăm phần trăm với bản đóng băng sau đợt rà soát hệ thống vào tháng trước.

"Thư mục cách ly dữ liệu cũ hoàn toàn nguyên vẹn," Duy thở hắt ra một hơi dài, một phản xạ tự nhiên giữa sự nhẹ nhõm về mặt thuật toán và nỗi hoang mang tột độ đang dâng lên. "Tập huấn luyện không hề bị ô nhiễm bởi đống bảng tính lịch sử kia. Thuật toán không tự nhiên phát điên vì dữ liệu rác cũ. Nó đã chạy hoàn toàn chính xác theo đúng những tham số, ngưỡng giới hạn và điều kiện logic mà chúng ta đã nạp vào nhánh vận hành chính thức."

"Nghĩa là lỗi không nằm ở dữ liệu quá khứ," Yến thì thầm, ánh mắt cô khóa chặt vào đồ thị biểu diễn mực nước trạm S02 đang được vẽ lại từng điểm một trên màn hình chính. "Nguyên nhân cốt lõi bắt đầu từ thực tại. Bắt đầu từ chính thời điểm chập tối hôm qua."

Trên biểu đồ chuỗi thời gian vừa được đồng bộ hóa chuẩn xác, đường cong biểu diễn mực nước đo được trong lòng hố ga ngã ba An Khê đang bò từ từ, ổn định từ mức 8,2 cm lên 12,4 cm vào lúc mười sáu giờ năm mươi bảy phút. Đó là một mức tăng chậm, hoàn toàn bình thường đối với một cơn mưa rào chuyển mùa thông thường. Nhưng ngay sau dấu mốc mười sáu giờ năm mươi bảy phút ấy, đường đồ thị bỗng nhiên đứt phăng thành một khoảng chân trời trống rỗng kéo dài vô tận.

"Nhìn gói tin cuối cùng của trạm S02 đi Duy," Yến nói, bàn tay cô nắm chặt mép bàn đến mức các đầu ngón tay trắng bệch.

Duy nhấp đúp chuột vào chuỗi mã sự cố được ghi nhận vào thời khắc hoàng hôn: `16:57:14 UTC+7 - SENSOR_S02_PAYLOAD: {"water_level": 12.4, "vbat": 3.92, "rssi": -108dBm}`.

Chỉ số cường độ tín hiệu sóng di động `rssi` đã tụt dốc thảm hại xuống mức âm 108 dBm — ngưỡng ranh giới mong manh giữa việc duy trì kết nối thoi thóp và mất liên lạc hoàn toàn với trạm BTS viễn thông. Và ngay sau gói tin định mệnh ấy, toàn bộ chuỗi nhật ký của máy chủ chỉ còn là một tràng dài những dòng chữ đỏ rực, lạnh lùng báo lỗi: `17:45:02 UTC+7 - CONNECTION_RESET_BY_PEER`, kéo theo sau đó là `4G_MODEM_TIMEOUT: NO_CARRIER`.

"Chân anten," Yến nhắm nghiền hai mắt lại, một cơn đau buốt nhói chạy dọc từ gáy xuống sống lưng cô. Ký ức về buổi chiều định mệnh cách đây năm ngày dội về rõ mồn một trong tâm trí cô. Chiều hôm đó, Nam bên xưởng gia công cơ khí Bền Mạch gọi điện báo bận giao một lô tủ điện công nghiệp gấp, không thể qua hỗ trợ kỹ thuật; Khang thì đang giữ thang nhôm chuyên dụng ở tận công trình đo lưu lượng nước thải Hòa Cầm. Yến đã tự mình leo lên chiếc thang tre mượn của nhà dân để gắn hộp thiết bị S02 lên dầm mái hiên một nhà dân ven đường. Đầu cắm SMA bằng đồng mạ kẽm của chiếc anten 4G gắn ngoài bị thiếu mất một chiếc gioăng cao su silicon chống nước nhỏ bằng móng tay. Yến nhớ rõ mình đã nhìn thấy chiếc gioăng bị rách một góc, nhưng vì trời sẩm tối và chiếc thang tre rung bần bật dưới chân, cô đã tự nhủ rằng một chút băng keo cách điện quấn tạm bên ngoài là đủ. Hơi muối biển mặn chát theo từng đợt gió dông thổi từ vịnh Đà Nẵng vào sâu trong đất liền, luồn qua lớp băng keo lỏng lẻo, ngưng tụ lại trong các rãnh ren kim loại li ti. Khi trận mưa dông đầu mùa trút xuống, nước mưa hòa tan muối tạo thành một lớp dung dịch điện phân dẫn điện, gây hiện tượng đoản mạch tín hiệu cao tần ngay tại chân tiếp xúc. "Anten rớt mạng hoàn toàn lúc mười bảy giờ bốn mươi lăm phút. Đúng vào thời điểm những đám mây dông đen kịt cuộn qua đỉnh bán đảo Sơn Trà và tuyến cống hộp An Khê bắt đầu phải chịu áp lực dội ngược đầu tiên từ đợt triều cường dâng cao trên kênh Phú Lộc."

"Nhưng chuyện mất kết nối phần cứng là chuyện cơm bữa của bất kỳ thiết bị IoT nào ngoài hiện trường mưa bão," Duy quay ngoắt sang nhìn Yến, giọng cậu bỗng trở nên nghiêm khắc và lạnh lùng đến mức tàn nhẫn. "Trạm đo mất sóng thì hệ thống bắt buộc phải báo mất sóng. Khi một nút mạng bị ngắt kết nối vật lý, máy chủ trung tâm phải lập tức đổi trạng thái của nút đó sang cảnh báo ngoại tuyến. Tại sao hệ thống của chúng ta không hề chuyển trạng thái? Tại sao màn hình của hàng trăm hộ dân kiệt 126 không hề xuất hiện một tín hiệu cảnh báo mất kết nối nào?"

Câu hỏi của Duy giáng xuống như một nhát búa tạ đập nát lớp vỏ bọc tự vệ cuối cùng mà Yến đã cố công dựng lên suốt hai mươi bốn giờ qua. Cô không thể và cũng không còn quyền né tránh ánh mắt của người đồng đội trẻ tuổi nữa. Đôi vai cô sụp xuống. Bàn tay run rẩy của cô với lấy con chuột, kéo con trỏ về phía tệp mã nguồn điều khiển việc đồng bộ dữ liệu giao diện người dùng: `app_sync_controller.py`.

"Mở nhánh commit lúc mười lăm giờ bốn mươi phút chiều hôm qua ra đi," Yến nói, giọng cô nhỏ dần, gần như chìm nghỉm dưới tiếng rít rền rĩ của quạt gió máy chủ.

Duy gõ lệnh git để truy xuất lịch sử thay đổi của tệp mã nguồn. Đoạn mã hiện lên rõ mồn một trên màn hình độ phân giải cao, từng ký tự, từng thụt đầu dòng do chính những ngón tay của Yến gõ vội vã vào hệ thống ngay trước khi cô dắt xe máy rời khỏi văn phòng để đi gặp đối tác Lâm ở Hòa Cầm:

```python # Fallback mechanism for transient network jitter if sensor_status == "DISCONNECTED": cached_payload = redis_client.get(f"sensor_state:{sensor_id}") if cached_payload and (current_time - cached_payload.timestamp) < 7200: return { "status": cached_payload.status, "depth_cm": cached_payload.depth_cm, "display_flag": "NORMAL", "is_cached": True } ```

Duy ngồi chết trân trước màn hình, mắt dán chặt vào từng dòng lệnh như thể không tin vào thị giác của chính mình. Cậu ngẩng phắt đầu lên, lồng ngực phập phồng dữ dội, giọng cậu lạc hẳn đi vì một cơn chấn động tâm lý: "Bảy ngàn hai trăm giây? Chị đặt bộ đệm Redis giữ nguyên trạng thái đo đạc cũ trong suốt hai tiếng đồng hồ liên tục?"

"Phải," Yến cúi gầm mặt xuống, nhìn chằm chằm vào hai bàn tay đang đan chặt vào nhau đến mức các khớp ngón tay nhô lên trắng bệch dưới ánh đèn neon. "Bảy ngàn hai trăm giây. Đúng hai tiếng đồng hồ."

"Tại sao chị lại có thể làm một việc như thế này?" Duy đập mạnh cả bàn tay xuống mặt bàn làm việc, tạo ra một tiếng động chát chúa khiến chiếc cốc giấy đựng bã cà phê nảy lên, bắn ra vài giọt nước đen ngòm lên tập tài liệu dự án. "Quy chuẩn thiết kế cốt lõi của chúng ta ngay từ ngày đầu tiên thành lập Thủy Kế là gì? Nếu một trạm đo ngoại vi mất kết nối quá ba chu kỳ lấy mẫu liên tiếp — tức là quá mười lăm phút không có dữ liệu mới — toàn bộ giao diện của trạm đó trên ứng dụng người dùng bắt buộc phải chuyển sang màu xám tro kèm theo cờ cảnh báo MẤT TÍN HIỆU NGOẠI VI! Tại sao chị lại tự ý viết một đoạn mã bẩn thỉu như thế này để ép hệ thống nuốt chửng cờ báo lỗi, rồi tiếp tục nhả ra cái chữ 'BÌNH THƯỜNG' màu xanh lục giả tạo ấy?"

Căn phòng gác xép rơi tụt vào một khoảng lặng chết chóc, nặng nề đến nghẹt thở. Phía góc phòng, Thư cựa mình trên tấm nệm, phát ra một tiếng rên rỉ nghẹn ngào trong một cơn ác mộng chập chờn, nhưng rồi lại chìm sâu vào sự kiệt quệ thể xác.

Yến cảm thấy từng thớ thịt trên gương mặt mình giật liên hồi. Toàn bộ sự thật trần trụi, nhơ nhuốc và nhục nhã nhất của sự cố ngập lụt kinh hoàng đêm qua đang bị bóc trần dưới ánh sáng trắng lạnh lẽo. Không hề có một thế lực hacker nào tấn công phá hoại hạ tầng. Không hề có một sự cố thiên tai bất khả kháng nào vượt quá tầm hiểu biết của khoa học dữ liệu. Không hề có một lỗi biên dịch kỳ bí nào trong lõi thuật toán trí tuệ nhân tạo. Lỗi lầm nằm ở chính đoạn mã điều kiện giao diện này — một quyết định kỹ thuật tệ hại, đê tiện được thúc đẩy bởi sự hèn nhát và nỗi sợ hãi tột cùng của con người.

"Vì chị sợ hãi, Duy ạ," Yến cất tiếng, từng thanh âm rơi xuống sàn nhà nặng trĩu, cay đắng và vỡ vụn. "Chị sợ phải đối mặt thêm một lần nữa với một đợt báo động giả. Chị sợ tiếng chuông điện thoại của Thư lại réo lên từng hồi giữa đêm khuya để nghe những lời thóa mạ cay độc của các tiểu thương. Chị sợ người ta sẽ cười vào mũi mình, bảo rằng cái công nghệ IoT của Thủy Kế chỉ là trò hề của lũ trẻ ranh mới ra trường, cứ hễ trời mưa gió một tí là đứt cáp mất sóng rồi dọa người ta chạy loạn một cách vô cớ."

Cô ngước khuôn mặt hốc hác lên, hai hốc mắt đỏ hoe, khô khốc không còn một giọt nước mắt, nhìn thẳng vào người kỹ sư trẻ tuổi đã cùng cô chia nhau từng gói mì tôm, từng cuộn băng keo cách điện từ những ngày đầu dựng trạm đo:

"Hai tuần trước, sau cái lần một bọc rác nilon trôi dạt bít chặt miệng thu nước khiến cảm biến sóng siêu âm đo nhầm khoảng cách và kích hoạt còi báo động đỏ giả giữa trưa nắng, em có nhớ chuyện gì đã xảy ra không? Chị đã phải tự móc một triệu mốt tiền túi cá nhân — số tiền ăn cả tháng của chị — ra để đền bù tiền thuê xe ba gác chuyển hàng chạy ngập cho bà Lành với chú Ba bán gạo. Chú Tám tiệm điện dân dụng cầm xấp tiền lẻ ném thẳng vào mặt chị ngay giữa chợ, tuyên bố cạch mặt cái ứng dụng Thủy Kế, rồi tự tay cầm kìm leo lên cột điện giật phăng trạm đo số mười sáu ném xuống bùn. Tỷ lệ người dùng gỡ cài đặt ứng dụng trong khu vực kiệt 126 đã vọt lên bốn mươi hai phần trăm chỉ trong vòng một buổi chiều duy nhất! Chiều hôm qua, khi trạm S02 bắt đầu báo tín hiệu chập chờn, Thư đứng ngay sau lưng chị, khóc lóc và giục chị phải đi gặp ông Lâm ở Hòa Cầm để ký bằng được biên bản ghi nhớ, lấy ba mươi triệu tiền tạm ứng về để kịp nộp tiền duy trì máy chủ AWS trước năm giờ chiều thứ Sáu. Thư bảo nếu để ứng dụng nhảy cờ báo lỗi mất sóng đỏ lòm giữa lúc người dân đang chuẩn bị dọn hàng đón trận mưa lớn, họ sẽ hoảng loạn, họ sẽ xóa sạch ứng dụng khỏi máy, và hợp đồng Hòa Cầm sẽ tan thành mây khói."

Yến nuốt một ngụm nước bọt đắng ngắt, lồng ngực cô nhói buốt như có ai đang cào xé:

"Chị đã kiệt sức hoàn toàn rồi, Duy. Chị không còn lấy một đồng nào trong tài khoản cá nhân sau khi phải gom góp ba mươi triệu gửi về quê sửa lại cái mái nhà ngói bị dột nát cho mẹ sau trận bão tháng trước. Tài khoản công ty lúc đó chỉ còn đúng một trăm tám mươi hai ngàn đồng lẻ. Chị đã nghĩ... chị đã tự huyễn hoặc và ru ngủ bản thân mình rằng cái lỗi tiếp xúc anten chỉ là hiện tượng suy hao tín hiệu tạm thời do gió dông giật mạnh. Chị đã nghĩ việc giữ nguyên trạng thái mực nước mười hai phẩy bốn phân màu xanh an toàn trong vòng hai tiếng đồng hồ sẽ giúp giao diện người dùng trông êm ả, bình yên, để chị có đủ thời gian chạy xe máy lên Hòa Cầm ký cho xong cái biên bản ghi nhớ rồi tức tốc quay về trèo thang sửa lại chân anten. Chị đã đánh cược tài sản, sự an toàn và kế sinh nhai của hàng trăm con người vào một sự êm ả giả tạo, dối trá trên cái màn hình điện thoại di động."

Duy nhìn Yến trừng trừng. Cơn giận dữ bốc hỏa ban đầu trong mắt cậu kỹ sư trẻ dần dần chùng xuống, chuyển hóa thành một nỗi thất vọng sâu sắc đến cùng cực, pha lẫn một sự xót xa cay đắng. Cậu đưa tay lên đẩy gọng kính cận, rồi im lặng rê chuột sang một tệp cấu hình khác nằm sâu trong thư mục xử lý logic cảnh báo: `flood_risk_engine.conf`.

"Chưa dừng lại ở đó đâu, chị Yến," Duy nói, giọng cậu trầm hẳn xuống, đều đều và lạnh băng như một vị thẩm phán đang đọc từng điều khoản của một bản cáo trạng không thể chối cãi. "Nếu hệ thống chỉ có cái bẫy đệm Redis hai tiếng đồng hồ đó, thì khi nước cống ngập dâng vượt qua ngưỡng nguy hiểm, nếu có bất kỳ một gói tin dữ liệu ngoại lệ nào lọt qua được khe sóng chập chờn của modem, hệ thống vẫn có cơ hội mong manh để kích hoạt còi báo động khẩn cấp gửi qua tin nhắn SMS cho người dân. Nhưng chị đã làm gì với tham số cốt lõi này?"

Trên màn hình, một dòng cấu hình hệ thống hiện ra rõ ràng dưới ánh sáng trỏ chuột: `trigger_depth_cm = 35.0`

"Ngưỡng kích hoạt cảnh báo ngập ban đầu mà chúng ta đã tính toán dựa trên mô hình cao trình số thực địa là hai mươi phân," Duy gõ mạnh từng đầu ngón tay khẳng khiu vào màn hình máy tính, móng tay cộm lên lớp phim phân cực của màn hình LCD. "Hai mươi phân là thời điểm mực nước cống vừa dâng mấp mé chạm vào mép vỉa hè thấp nhất của kiệt 126, bắt đầu tràn qua bậu cửa tiệm giặt ủi của anh Bình. Ở ngưỡng hai mươi phân đó, độ dốc thoát nước tự nhiên vẫn còn tác dụng, và các hộ kinh doanh trong kiệt còn đúng ba mươi đến bốn mươi phút quý giá để kê kích các khối mô-tơ điện, chuyển bao bột mì, vác các kiện vải và chăn màn lên gác lửng trước khi nước dâng cô lập toàn bộ con hẻm. Tại sao chị lại tự ý nâng cái ngưỡng kích hoạt an toàn đó lên ba mươi lăm phân?"

"Để triệt tiêu những cảnh báo rác..." Yến thì thào, hai bờ môi cô run rẩy bần bật.

"Để triệt tiêu cảnh báo rác hay là để triệt tiêu trách nhiệm đạo đức của một kỹ sư?" Duy gằn giọng, từng câu chữ sắc lẹm đâm thẳng vào lương tâm đang rách nát của cô. "Chị là dân chuyên ngành mô phỏng thủy văn đô thị! Chị biết rõ hơn bất kỳ ai trên cõi đời này rằng địa hình lòng chảo của kiệt 126 là vùng trũng cục bộ nguy hiểm nhất của lưu vực thoát nước An Khê! Chị biết rõ cái tuyến cống hộp đôi một mét sáu bẻ cong bốn mươi lăm độ ngoài trục đường chính Điện Biên Phủ đã biến toàn bộ mạng lưới thoát nước của con hẻm này thành một cái bẫy xi-phông kín bưng! Khi mực nước trong lòng cống hộp dâng đến ba mươi lăm phân, áp lực thủy tĩnh nghịch bên dưới lòng đất sẽ lập tức hất tung toàn bộ các nắp hố ga gang trên mặt đường! Nước cống đen ngòm sẽ không còn dâng từ từ nữa mà sẽ phun ngược lên mặt đường với lưu lượng hàng mét khối mỗi giây! Việc chị tự ý đặt ngưỡng kích hoạt ba mươi lăm phân đồng nghĩa với việc: khi hệ thống Thủy Kế của chúng ta nhận diện được ngập lụt, thì ngoài đời thực, nước bẩn đã ngập lút đầu gối người ta rồi! Thời gian phản ứng thực tế của cộng đồng dân cư bị bóp nghẹt từ bốn mươi phút an toàn xuống còn đúng năm phút tháo chạy hoảng loạn! Năm phút thì một người đàn ông như anh Bình làm sao kịp di dời bốn khối máy giặt công nghiệp nặng hàng tấn?"

Yến nhắm nghiền hai mắt lại, hai giọt nước mắt muộn màng cuối cùng cũng trào ra khỏi bờ mi cay xè, lăn dài trên đôi gò má hốc hác, để lại những vệt ngứa ngáy trên làn da đầy bụi bặm. Từng lời Duy nói ra đều là những sự thật kỹ thuật chuẩn xác đến tàn nhẫn mà cô — một kỹ sư dữ liệu từng có nhiều năm kinh nghiệm lăn lộn ở các dự án quy hoạch hạ tầng lớn tại Thành phố Hồ Chí Minh — thừa hiểu rõ hơn bất kỳ ai. Nhưng chính cô, bằng sự suy tính hèn mọn và áp lực cơm áo gạo tiền tầm thường, đã tự tay viết đè lên những nguyên tắc an toàn bất khả xâm phạm đó. Nỗi ám ảnh bị chê bai là kẻ thất bại, nỗi sợ hãi ê chề khi phải thừa nhận dự án khởi nghiệp tâm huyết của mình đang đứng trên bờ vực phá sản trước mặt bạn bè và gia đình, cùng với sự bức bách nghẹt thở của một doanh nghiệp non trẻ cạn kiệt nguồn vốn đã che mờ toàn bộ lý trí chuyên môn của cô.

Cô đã hành xử không khác một ly nào so với ban giám đốc của công ty tư vấn cũ ở Sài Gòn năm xưa — những kẻ mà cô từng khinh bỉ tột cùng, những kẻ từng gây áp lực buộc cô phải đặt bút ký vào bản tóm tắt điều hành làm giảm nhẹ các chỉ số rủi ro ngập lụt để kịp tiến độ giải ngân cho dự án khu đô thị sinh thái Nam Sài Gòn.

Ngày đó, cô đã từng tức giận đập tập hồ sơ lên bàn họp, ném lại toàn bộ số cổ phần ưu đãi và tiền thưởng dự án để dứt áo ra đi, đón chuyến tàu hỏa đêm quay trở về Đà Nẵng với một niềm tin ngây thơ rằng mình sẽ xây dựng một hệ thống dữ liệu vị nhân sinh, trung thực và phục vụ trực tiếp cho những người dân nghèo đô thị. Nhưng rồi rốt cuộc, khi bị dồn vào chân tường bởi những hóa đơn tiền điện, tiền máy chủ và thể diện cá nhân, cô lại lặp lại một cách hoàn hảo chính cái sự thỏa hiệp đê hèn ấy, không phải bằng một bản báo cáo in màu bóng bẩy, mà bằng một dòng mã độc hại: `trigger_depth_cm = 35.0`.

"Chị không có bất kỳ lời nào để bào chữa cho bản thân mình nữa," Yến nói, giọng cô run rẩy nhưng ánh mắt đã thôi không còn lảng tránh thực tại. "Đó hoàn toàn là lỗi của chị. Toàn bộ là lỗi chủ quan xuất phát từ sự hèn nhát và thỏa hiệp của một mình chị."

Duy im lặng rất lâu. Cậu ngả toàn bộ lưng ra sau chiếc ghế xoay cũ kỹ, ngước mắt nhìn lên trần gác xép loang lổ những vết ố vàng do nước mưa thấm qua mái tôn từ nhiều năm trước. Tiếng quạt tản nhiệt của cụm máy chủ mini vẫn rít lên từng hồi đều đặn, đơn điệu và lạnh lùng.

"Chiều hôm qua, trước khi bão đổ bộ, công ty Enigma Solutions đã gọi điện giục em sang văn phòng đại diện của họ bên quận Hải Châu để hoàn tất thủ tục ký hợp đồng lao động chính thức," Duy đột ngột lên tiếng, giọng cậu lấy lại vẻ bình thản thường ngày nhưng ẩn chứa một sự mệt mỏi rệu rã. "Họ đưa ra mức lương khởi điểm một ngàn hai trăm đô, muốn em nhận việc kỹ sư dữ liệu toàn thời gian ngay từ sáng thứ Hai tuần tới. Nhưng sáng nay, sau khi nhìn thấy tiệm giặt của anh Bình tan hoang trong bùn đất, em đã gửi email cho phòng nhân sự của họ, xin lùi ngày bắt đầu công việc lại một tuần."

Yến giật mình ngẩng phắt đầu lên nhìn người đồng đội trẻ: "Duy... sao em lại làm thế? Đó là cơ hội lớn nhất của em từ trước đến nay mà..."

"Em ở lại tuần này không phải vì công ty Thủy Kế, và càng không phải vì cái hợp đồng thí điểm chết tiệt của bên Đông Bờ," Duy cắt ngang lời cô một cách dứt khoát, ánh mắt cậu chiếu thẳng vào đống mã nguồn và đồ thị đang mở toang trên hai màn hình máy tính. "Em ở lại vì em không thể chấp nhận việc một hệ thống dữ liệu do chính đôi bàn tay em gõ từng dòng mã, tự tay em leo cột kéo dây lại kết thúc bằng việc giết chết niềm tin của những người dân nghèo kiệt 126 bằng một sự dối trá mập mờ, bẩn thỉu. Chúng ta không thể giao cho Đông Bờ một bản giải trình lấp liếm rằng đây là thảm họa thiên tai bất khả kháng, hay đổ lỗi cho hạ tầng đô thị quá tải như cách mà các cơ quan quản lý vẫn thường làm. Chúng ta phải mổ xẻ đến tận cùng cái xác chết kỹ thuật này."

Cậu với tay sang chiếc kệ sắt bên cạnh, cầm lấy một xấp giấy trắng A4 còn thơm mùi mực in, rồi rút chiếc bút bi mực xanh cài trên túi áo:

"Chiều nay, cô Hà bên Viện Nghiên cứu Đô thị đã nhắn tin cho em. Cô đồng ý dành sáu giờ tư vấn độc lập có trả phí chuyên gia để cùng hai chị em mình rà soát, phản biện toàn bộ chuỗi nhật ký sự cố này trước khi chúng ta nộp báo cáo giải trình chính thức cho hội đồng thẩm định. Nhưng trước khi đưa cho cô Hà xem, hai chị em mình phải tự tay vẽ xong cái sơ đồ chuỗi nguyên nhân gốc rễ. Không che giấu bất kỳ một dòng mã nào, không giảm nhẹ bất kỳ một tham số nào, và tuyệt đối không tô vẽ bất kỳ một lý do ngoại cảnh nào."

Yến hít một hơi thật sâu. Không khí ngột ngạt, ẩm mốc của căn gác xép tràn ngập vào buồng phổi cô, mang theo vị mặn chát của mồ hôi và những giọt nước mắt đã khô cằn trên khóe môi. Cô đưa tay kéo xấp giấy A4 về khoảng trống giữa hai người, cầm lấy chiếc bút bi thứ hai trên bàn.

"Được rồi. Chúng ta làm bản giải phẫu cây sự cố."

Hai người chụm đầu lại dưới ánh đèn neon tuýp dài, bắt đầu vạch ra từng nhánh, từng nút logic của cây phân tích sự cố (Fault Tree Analysis). Từng chiếc hộp hình chữ nhật sắc cạnh được kẻ cẩn thận, nối với nhau bằng những đường mũi tên màu đen đậm, sắc lạnh như những đường dao phẫu thuật mổ xẻ một ca tử vong do tắc trách y khoa:

Chiếc hộp thứ nhất: *Hư hỏng phần cứng ngoại vi và lỗi lắp đặt hiện trường.* Đầu nối SMA của chiếc anten 4G gắn ngoài tại trạm quan trắc S02 (ngã ba An Khê - kiệt 126) bị thiếu gioăng cao su silicon chống ẩm trong quá trình lắp đặt khẩn cấp; bề mặt ren kim loại bị hơi muối biển mặn xâm thực gây hiện tượng oxy hóa và đoản mạch tín hiệu cao tần khi gặp mưa dông lớn, dẫn đến việc thiết bị mất kết nối hoàn toàn với mạng di động vào lúc 17:45 ngày 27 tháng 09, ngay trước thời điểm triều cường đạt đỉnh và áp lực mưa dông đổ bộ dồn dập vào lưu vực.

Chiếc hộp thứ hai: *Đặc tính thủy văn cục bộ và sự biến dạng hạ tầng ngầm chưa được số hóa.* Tuyến cống hộp đôi kích thước 1,6m x 1,6m trên trục đường chính Điện Biên Phủ trong quá trình thi công thực tế đã bị đơn vị xây lắp tự ý bẻ cong một góc 45 độ và hạ cao trình đáy xuống âm 1,25m để tránh hệ thống cáp ngầm viễn thông và ống cấp nước sạch; đoạn cống hộp biến dạng này chưa từng được nghiệm thu bàn giao chính thức và chưa hề được cập nhật lên bản đồ GIS dùng chung của thành phố. Khi triều cường rằm tháng Chín dâng cao làm đóng chặt cửa van xả tự động tại kênh Phú Lộc, áp lực thủy tĩnh nghịch cực lớn đã biến toàn bộ đoạn cống uốn cong thành một bẫy xi-phông kín, dội ngược hàng ngàn mét khối nước thải chưa qua xử lý tràn qua nắp các hố ga ngã ba An Khê với tốc độ dâng thực tế vượt quá 50 cm chỉ trong vòng ba mươi phút ngắn ngủi.

Chiếc hộp thứ ba: *Tham số ngưỡng kích hoạt an toàn bị can thiệp chủ quan.* Giá trị ngưỡng cảnh báo ngập lụt khẩn cấp `trigger_depth_cm` đã bị kỹ sư trưởng vận hành hệ thống tự ý nâng từ 20.0 cm lên 35.0 cm trực tiếp trên môi trường máy chủ sản xuất vào chiều ngày 27 tháng 09, nhằm mục đích dập tắt các cảnh báo sai cục bộ do rác thải sinh hoạt bít miệng thu nước. Quyết định can thiệp mang tính chủ quan và vi phạm quy trình kiểm soát này đã triệt tiêu hoàn toàn cửa sổ thời gian sơ tán và ứng phó quý giá kéo dài từ ba mươi đến bốn mươi phút của toàn bộ cộng đồng dân cư vùng trũng thấp kiệt 126.

Chiếc hộp thứ tư: *Cơ chế xử lý dữ liệu lỗi thời và chính sách lưu đệm sai lệch.* Đoạn mã điều kiện trong tệp điều khiển `app_sync_controller.py` đã áp dụng cơ chế lưu tạm Redis sai nguyên tắc, tự động duy trì và phản hồi trạng thái đo đạc hợp lệ gần nhất (12,4 cm - Bình thường) trong suốt khoảng thời gian 7.200 giây (2 giờ đồng hồ liên tục) kể từ thời điểm thiết bị ngoại vi mất kết nối vật lý, thay vì phải chuyển trạng thái giao diện người dùng sang cờ báo MẤT TÍN HIỆU NGOẠI VI / DỮ LIỆU KHÔNG KHẢ DỤNG sau mười lăm phút gián đoạn theo đúng quy chuẩn an toàn đô thị. Cơ chế che giấu lỗi kỹ thuật này đã tạo ra một bức màn an toàn giả tạo, ru ngủ người dân kiệt 126 bằng một chấm xanh an toàn trên màn hình điện thoại suốt gần hai tiếng đồng hồ ngập lụt kinh hoàng.

Bốn chiếc hộp nguyên nhân cốt lõi ấy được nối chặt với nhau bằng những cổng logic nghiêm ngặt, tạo thành một chuỗi mắt xích chết người khép kín. Không có một mắt xích nào thừa thãi, không có một yếu tố nào là ngẫu nhiên. Cả bốn chiếc hộp cùng sập xuống cùng một lúc, tạo thành một cái bẫy hoàn hảo nuốt chửng toàn bộ tài sản, máy móc của tiệm giặt ủi Bình Minh và hàng tấn lương thực, hàng tạp hóa của tiệm bà Lành.

Yến ngồi nhìn chằm chằm vào bản sơ đồ vừa hoàn thành trên trang giấy A4. Mực bút bi xanh đã khô lại, sắc nét và lạnh lùng. Từng mũi tên đen chỉ thẳng vào những chiếc hộp nguyên nhân không hề để lại bất kỳ một khe hở nào cho hai chữ "khách quan" hay "bất khả kháng". Trận mưa bão cực đoan của thiên nhiên chỉ đóng vai trò là một que diêm mồi lửa, còn toàn bộ khối thuốc nổ hủy diệt đã được gài sẵn từ những tắc trách trong thi công phần cứng, sự méo mó của hạ tầng kỹ thuật đô thị chưa được kiểm chứng, và đỉnh điểm là sự thỏa hiệp kỹ thuật đê hèn bên trong chính đoạn mã nguồn do cô viết ra.

Duy với tay sang góc bàn, nhấn nút bật chiếc máy in phun màu Canon cũ kỹ đã bạc màu sơn. Tiếng trục cuốn giấy bằng cao su rít lên kin kít, chói tai trong không gian tĩnh mịch của đêm muộn.

Từng trang giấy in trắng tinh từ từ chui qua khe máy in, mang theo những dòng nhật ký hệ thống đen đặc, sắc nét. Duy cầm lấy trang giấy in cuối cùng vừa mới nhả ra — trang nhật ký ghi lại chính xác thời khắc mười bảy giờ bốn mươi lăm phút linh hai giây ngày hôm qua, nơi dòng lệnh báo lỗi mất tín hiệu ngoại vi của trạm đo S02 bị cơ chế đệm Redis nuốt chửng không thương tiếc, để rồi được thay thế bằng dòng trạng thái dối trá: `STATUS: NORMAL (CACHED, TTL=7200s)`.

Duy rút chiếc bút dạ quang màu vàng chanh trong hộp bút, cẩn thận đặt thước kẻ rồi gạch một đường đậm, thẳng tắp bên dưới dòng mã oan nghiệt ấy. Cậu đứng dậy, bước từng bước nặng nề đến cạnh bàn làm việc của Yến, đặt tờ giấy in còn ấm hơi mực xuống mặt bàn, ngay ngắn bên cạnh cốc cà phê hòa tan đã nguội ngắt đóng váng và chiếc điện thoại vỡ màn hình dính đầy bùn cống khô nứt của bà Lành.

Duy nhìn thẳng vào đôi mắt trũng sâu, ráo hoảnh của Yến, giọng nói của cậu trầm tĩnh, rành rọt đến rợn người:

"Lỗi ở đây, không phải do trời."

How was this chapter?Ratings help Readeep recommend better stories