Ngày hai mươi lăm tháng Một năm hai nghìn không trăm hai sáu, lúc sáu giờ sáng, Chuông làm cái việc nó vẫn làm ngày hai mươi lăm hằng tháng.
Nó tính phiếu thu tháng sau cho hai trăm mười bốn trường, trừ tiền ăn những ngày nghỉ, rồi gửi tin nhắn cho phụ huynh kèm lịch nghỉ.
Ba mươi mốt nghìn tin nhắn. Gửi xong lúc sáu giờ mười bảy.
Trong ba mươi mốt nghìn tin nhắn ấy có một dòng:
Trường nghỉ Tết Nguyên đán từ ngày 02/02 đến hết ngày 10/02. Học phí tháng 2 đã trừ 9 ngày tiền ăn.
Tết năm ấy rơi vào ngày mười bảy tháng Hai.
*
Bảy giờ mười, Vy gọi cho Lộc. Giọng Vy run.
"Anh ơi, em có bốn mươi mốt cuộc gọi nhỡ."
Đến chín giờ thì con số là hai trăm sáu. Đến trưa thì Vy không nghe nữa, chỉ ngồi nhắn tin, và trong hộp thư của Chuông có hơn chín trăm tin từ phụ huynh.
Phần lớn là hỏi. Một số là mắng.
Có một tin Lộc đọc rồi không đọc lại lần nào nữa. Một chị ở khu công nghiệp Vĩnh Lộc, mẹ của một bé lớp Mầm:
Em đọc tin nhắn của trường xong em xin nghỉ phép tuần đầu tháng 2 rồi. Em đặt vé xe về Quảng Ngãi ngày 1/2, vé Tết không đổi được. Giờ trường bảo vẫn học bình thường thì con em gửi ai.
*
Lỗi nằm ở am-lich.js.
Cái thư viện một nghìn chín trăm dòng, bốn mươi mốt sao, cập nhật lần cuối năm hai nghìn không trăm mười bảy.
Trong nó có một bảng tra cứu. Bảng ấy liệt kê sẵn ngày bắt đầu tháng âm lịch, từ năm một nghìn chín trăm đến năm hai nghìn không trăm hai lăm.
Đến hai lăm là hết.
Từ ngày một tháng Một năm hai sáu trở đi, hàm ấy vẫn trả về kết quả. Nó không báo lỗi. Nó không trả về số không. Nó rơi ra ngoài bảng, quay sang một nhánh tính dự phòng ở cuối file, và cái nhánh ấy tính lệch mười ba ngày.
Kết quả vẫn là một ngày âm lịch trông rất bình thường. Mùng một tháng Giêng, hẳn hoi. Chỉ có điều nó rơi vào mùng hai tháng Hai dương lịch.
Không có gì đỏ lên. Không có cảnh báo nào. Cái sai đi qua mọi lớp kiểm tra của Chuông một cách lễ phép, vì mọi lớp kiểm tra ấy chỉ hỏi một câu: có phải là một ngày hợp lệ không?
Nó là một ngày hợp lệ. Nó chỉ không phải là ngày đúng.
*
Lộc mở am-lich.js ra lúc tám giờ hai mươi sáng hôm ấy.
Anh nghĩ mình sẽ sửa trong hai tiếng.
Trưa anh vẫn ngồi đó.
Trong file có những hàm tên là jdFromDate, getNewMoonDay, getLunarMonth11, getLeapMonthOffset. Có những biến tên là k, T, T2, dr, Jd1, alpha. Có những hằng số như 2415021.076998695 và 29.530588853, không một dòng chú thích nào.
Anh đọc đến dòng bảy trăm thì nhận ra một chuyện.
Cái người tên nvhung90 ấy không phải viết code dở. Ngược lại. Người ấy hiểu thiên văn. Người ấy biết cách quy đổi ngày Julius, biết tính thời điểm sóc, biết chỉnh theo múi giờ bảy. Trong một nghìn chín trăm dòng ấy có kiến thức của một người đã bỏ ra nhiều năm.
Lộc thì không có kiến thức ấy. Anh có một cái app đang cháy và ba mươi mốt nghìn phụ huynh đang tức.
*
Hai giờ chiều, anh đi tìm tác giả.
Kho mã nguồn còn nguyên trên mạng. Trang cá nhân của nvhung90 còn nguyên. Ảnh đại diện là một con mèo tam thể.
Có một địa chỉ thư điện tử ở đó. Lộc gửi. Mười giây sau thư dội về: hộp thư không tồn tại.
Trong mục báo lỗi của kho có mười chín mục. Mục số mười bốn tên là: "Sai lịch từ năm 2026". Người mở nó vào tháng Ba năm hai nghìn không trăm mười chín, tức là bảy năm trước, viết ba dòng lịch sự, có kèm ví dụ.
Không ai trả lời.
Bên dưới có sáu người vào ghi "+1". Người thứ nhất năm hai mươi. Người cuối cùng ghi vào tháng Sáu năm ngoái, chỉ một dòng:
Ai fork rồi fix giùm với ạ, em đang dùng cho app nhà thuốc.
Lộc ngồi nhìn cái dòng ấy hơi lâu.
Anh nghĩ đến một chuyện anh chưa từng nghĩ trong ba năm: cái thư viện này, cái thứ đang tính ngày nghỉ Tết cho ba mươi mốt nghìn đứa trẻ, là thứ một người nào đó viết xong rồi bỏ đấy, từ năm anh còn chưa đi làm.
Người ấy không nợ anh cái gì cả. Người ấy chưa nhận của anh một đồng nào. Người ấy có thể đã đổi nghề, đã đi nước ngoài, đã lấy vợ, đã quên hẳn cái tài khoản có con mèo tam thể.
Và cái app của Lộc thì đang treo trên đó.
*
Bốn giờ chiều, Lộc thử cách của người thời nay.
Anh dán cả file vào một con AI và bảo nó viết lại phần tính tháng nhuận cho đúng từ hai sáu trở đi.
Con AI viết ra một bản mới, gọn gàng, có chú thích đầy đủ, mỗi hàm một đoạn giải thích rất hay. Đọc sướng hơn bản gốc nhiều.
Lộc chạy thử với hai mươi ngày lễ đã biết của ba năm tới.
Mười tám ngày đúng. Hai ngày sai.
Anh bảo nó sửa. Nó sửa. Lần này mười chín đúng, một sai, mà cái sai lại rơi vào một ngày khác với lần trước.
Đến vòng thứ tư thì Lộc dừng. Vì anh nhận ra anh đang làm đúng cái việc anh đã làm ba năm nay: cầm một thứ mình không hiểu, đưa cho một thứ khác mình cũng không hiểu, rồi nhìn kết quả và đoán xem nó có đúng không.
Trước đây anh đoán trúng. Hôm nay anh đoán trật, và cái giá của lần đoán trật là chín trăm tin nhắn.
*
Chín giờ tối, Lộc làm cái việc anh phải làm.
Anh mở trang lịch vạn niên. Anh tra tay bốn mươi bảy ngày: Tết Nguyên đán ba năm tới, giỗ Tổ ba năm tới, rằm tháng Giêng, rằm tháng Bảy, mùng năm tháng Năm, ông Táo.
Anh gõ bốn mươi bảy ngày ấy vào một file tên patch/ngay_le_tay.json.
Rồi anh viết một đoạn chặn: nếu ngày cần tra có trong file này thì lấy trong file, không hỏi am-lich.js nữa.
Bên trên đoạn ấy, anh gõ một dòng chú thích:
// Tạm thời. Sẽ làm lại đàng hoàng. 21/01/2026
Anh đẩy lên lúc chín giờ bốn mươi mốt.
*
Sáng hôm sau Vy gửi tin nhắn đính chính cho ba mươi mốt nghìn phụ huynh. Chuông đền tiền vé xe cho chị ở Vĩnh Lộc, một triệu hai. Ba trường xin ngưng hợp đồng, hai tuần sau quay lại hai trường.
Mọi chuyện qua nhanh hơn Lộc tưởng. Người ta bận lắm, không ai giận lâu một cái phần mềm.
*
Còn dòng chú thích kia thì vẫn còn.
Đến hôm nay, trong thư mục patch/ của Chuông có ba file như thế. File cũ nhất mang ngày hai mươi mốt tháng Một năm hai sáu.
Mỗi lần Hưng hỏi bao giờ dọn, Lộc đều nói cùng một câu, và nói rất thật lòng:
"Để tháng sau. Tháng này đang mùa tuyển sinh."
Nội dung thuộc bản quyền © TruyệnCủaAI. Nghiêm cấm sao chép, đăng tải lại hoặc phân phối dưới mọi hình thức khi chưa được phép.
Chương 3 →