教室裡有二十八張小椅子和二十八種暑假。
有人去了歐洲,有人回南部阿嬤家,有人在安親班度過大部分時間。牆上貼滿照片、車票、明信片與彩色標題。
最後一排靠走道的位置,放著一張成人椅。
以晴坐在旁邊。那張椅子空著。
子澄進教室後看了三次。第一次像是在確認。第二次像是不相信。第三次,他沒有再看。
同一時間,承遠坐在書房,螢幕上開著四個視窗。
一個顯示十七個家庭的資料狀態,一個是朋友的語音通話,一個是App發布頁,最後一個是公司跨國專案的會議邀請。八點整,周總監傳來訊息:今天十點前需要你確認團隊安排。
承遠沒有回。
他們找到第一個線索。照片和文字沒有全部消失,只是舊網頁使用的編號與App讀取的編號錯開了。像搬家時箱子仍在倉庫,門牌卻貼到了別人家。
「可以修。」朋友說。
承遠看了一眼時間。八點二十三分。
「多久?」
「如果只修顯示,十五分鐘。如果要逐筆確認,至少一小時。」
逐筆確認比較安全。
承遠選了比較安全的那一條路。
他告訴自己,孩子的發表有錄影,老師也會在場;但那十七個家庭不知道自己的故事是不是真的還在。這不是他又把產品放在家人前面,而是他必須先阻止真正的損失。
這套說法完整、合理,而且很像他。
八點四十分,教室裡已經有六個孩子報告完。
子衡把故事書放在膝蓋上,反覆摸著封面磨白的角。子澄開始和旁邊同學說笑,看起來已經不在意那張空椅子。
以晴知道,那通常表示他很在意。
九點零二分,承遠確認最後一筆資料重新出現。
十七本故事書都能打開。
朋友在通話裡鬆了一口氣:「現在可以按發布了。」
承遠的游標停在按鈕上。
客廳時鐘響了九下。
他關掉發布頁,抓起外套往外跑。
車子停在每一個紅燈前。他第一次發現,原來台北所有路口都可以在同一個早上變紅。手機在副駕駛座持續亮起:測試者回覆資料回來了、朋友問是否延後發布、周總監再次詢問會議。
承遠沒有碰手機。
他跑進校門時,鞋底在走廊發出過大的聲音。
教室裡,子衡和子澄已經站在台上。
他沒有聽到開頭。
他只看見子澄翻到祭典後那張照片,教室慢慢安靜下來。
「有一次我走丟了。」子澄說,「因為我叫爸爸看一個很大的金魚燈,他一直看手機。我走過去,再回來就找不到他們。」
承遠停在教室後門,沒有立刻走進去。
子澄繼續說:「後來便利商店的店員幫我打電話。爸爸找到我時抱很緊。他說他最害怕的是,明明在我旁邊,卻沒有看見我。」
他的視線越過同學,落在最後一排那張空椅子上。
然後他看見站在門口的承遠。
子澄沒有笑,也沒有停。他只是把下一頁翻過去。
「我覺得那天是旅行最重要的一天。因為晚上我們都沒有玩手機,講了很多話。」
承遠走到最後一排坐下。椅腳摩擦地板,發出一聲短而刺耳的聲音。
最後,子衡念出兩個人一起寫的旅行心得:
「旅行不是去了多少地方。是回來以後,我們還能不能說出,那一天誰笑了、誰生氣、誰走錯路,還有誰本來答應會坐在最後一排。」
全班沒有立刻笑。
子衡停了一下,才補上原本準備好的最後一句:「以及誰在便利商店外面哭。」
教室裡這才響起笑聲。
承遠也笑了,眼睛卻不敢離開兩個孩子。
發表結束後,其他家長圍過來翻故事書。子衡回答老師的問題,子澄向同學解釋金幣規則。承遠站在旁邊,等了很久,才找到能和他們單獨說話的時候。
「對不起,我遲到了。」
子衡先問:「資料救回來了嗎?」
「救回來了。」
「全部?」
「全部。」
子衡點頭。那個動作和承遠平常確認專案結果時一模一樣。
子澄看著他:「你說真的比完整重要。」
「對。」
「可是你今天還是先去救完整的東西。」
承遠想解釋,那些是別人孩子說過的話,是別人的旅行,是一旦遺失就不一定能重來的記憶。
子澄像知道他要說什麼,先開口:「我們今天也只有一次。」
承遠沒有再替自己辯護。
他終於明白,選擇並不會因為理由正確就沒有傷害。那十七個家庭值得被保護;兩個孩子也有權因為他沒有準時出現而難過。
「我以為我可以兩邊都做到。」他說。
子衡把故事書抱回胸前:「你每次都是這樣以為。」
以晴沒有替任何人收尾。她只說:「回家再談。」
那天下午,App原本應該正式上架。
承遠坐在學校附近的咖啡店,發布按鈕仍停在畫面中央。朋友傳訊息說問題已解決,錯過今天也沒有關係,但如果不趁審核剛通過上線,後面還要重新安排。
承遠沒有按下去。
他先寄了一封信給四十三個測試家庭,說明早上的事故、影響範圍與修復方式。他沒有寫「小部分使用者」,也沒有寫「已知問題」,只寫:「今天早上,我們讓十七個家庭以為自己的故事不見了。這是我們的錯。」
接著,他把App狀態改成暫緩發布。
周總監的第三則訊息出現在畫面上:你今天還能參加十點的會議嗎?
承遠回覆:不能。我也需要跟你談談我的容量。
他離開咖啡店前,看了一眼手機相簿。以晴剛傳來孩子站在台上的照片。照片右下角,最後一排有一張空椅子。
任何資料都能重新索引,任何App都能延後發布。
那張椅子空過的四十二分鐘,沒有備份。