梁子謙把第一次比對結果命名為「太乾淨」。
不是正式術語,只是他不願意在檔名上寫「靈異資料」或「鬧鬼門牌」。第二天葉龍浩再到工作室時,資料夾已經多了七個版本,名稱從「太乾淨_01」一路排到「太乾淨_07_這次真的最後」。
「你不是說先備份再後悔?」林曦雨問。
梁子謙看了一眼螢幕旁的便條,確認她的身分後才回答:「檔名和人生一樣,通常都在第一次說『最後』之後開始失控。」
陳柏青晚一點才到。他帶來幾份經正常程序取得的彙整資料,個人欄位已經去識別,只留下時間、區段與數量。梁子謙把它們加入前一天的水務、用電、戶數、醫療轉送和稅籍資料,重新建立交叉比對。
第一張表完全正常。
2014年第二季,舊街登記十二戶;戶政彙整三十一人,分配到各戶的人數加總也是三十一。沒有半個人憑空多出來。
第二張表也正常。
十二戶電費帳單的用量相加,與變電端總表扣除線損後的數字一致。每一度電都有去處,沒有無主電量。
「到這裡,任何稽核都會過。」梁子謙說。
他把兩張表疊在一起。
問題立刻出現。
變電端的舊維護紀錄留有十三組獨立服務識別碼。十二組能對回帳單,剩下一組在2014年後被標成「汰換併計」。它的用量沒有消失,而是拆成極小的比例,分進周圍十二戶。
「所以總數才會對。」葉龍浩說。
「對。總表沒有少,帳單也沒有多。只要不去問那十二戶為什麼各自多了一小段不屬於自己的基礎用量,系統內部完美。」
用電只能證明多過一組服務來源,不能證明多過一戶人家。梁子謙沒有停在那裡,又把戶政與醫療轉送資料疊上去。
那年夏季的區段人口始終是三十一人。醫療彙整表裡,同一批居民的身分雜湊也正好能對出三十一組;偏偏還有一筆轉送只保留年齡區間、性別與救護格號,沒有任何身分欄位。
彙整系統沒有把它算進本區居民,理由很合理:無法確認是不是路過、暫住或資料缺漏的外地人。
急救耗材系統卻把那一份處置算進舊街區段。
一邊是三十一名居民,另一邊是三十二人份的處置。兩個統計都沒有錯,只是它們回答了不同問題。
「這還不能證明那一份是十三號的人。」陳柏青說。
「不能。」梁子謙立刻同意,「所以看位置。」
葉龍浩已經把當年的救護格號換算到舊底圖。他沒有把點直接畫在現在的地圖上,而是先依2014年的街廓、道路寬度與格網原點重建,再疊回現況。
那筆沒有身分的轉送,落在十三號所在的四十二公尺裡。
「你怎麼確定不是換算誤差?」梁子謙問。
葉龍浩把可能誤差範圍畫成一個矩形。「就算把最不利的偏差全部算進去,仍然進不了現在十二戶的任一門牌範圍。」
梁子謙盯著那個框,手指很快在鍵盤上敲了幾下,又把稅籍圖層加進來。
十二筆房屋稅籍各自都有合法建物面積,加總也與稅務彙整一致。但把稅籍外框疊回同年代的地籍測量底圖後,街廓中間會剩下一條狹長區域。它沒有獨立稅籍編號,面積卻被周圍十二筆以不同理由吸收:牆體誤差、共用通道、後院界線與舊測量修正。
每一筆只多一點。
十二筆加起來,正好把那四十二公尺補滿。
梁子謙靠回椅背。「你們做地圖的也這樣?」
「哪樣?」
「一個地方不見,就把它分給旁邊的人,然後所有面積繼續正確。」
「正常情況叫界址調整。」葉龍浩說。
「不正常呢?」
「現在還沒有名字。」
兩人第一次在這件事上找到幾乎不需要解釋的默契。
梁子謙看資料的方式和葉龍浩量街廓很像。他們都不先相信畫面上已經整理好的結果,而是追問一個數字經過多少次轉換、每次轉換把剩餘的誤差丟去了哪裡。地圖把不被承認的空間分散進道路和牆線,資料庫則把多出來的人份、戶份與用量藏進不同統計口徑。
它們沒有說謊。
它們只是從不站在一起說完整的話。
「這裡。」林曦雨忽然開口。
她指向幾筆被梁子謙標成「無法對應」的代號。
水務服務點的末碼是R13,電力維護碼是A-0,醫療轉送用的是舊救護格號,稅籍異動則只有一組批次流水號。四者沒有相同編碼,也不是同一天建立。
「代號都不一樣,」她說,「你為什麼把它們放在同一排?」
「因為它們都有時間欄位。」
梁子謙把隱藏欄展開。
那不是後來人工更正的時間。各系統名稱不同:原始事件時間、服務狀態終止、到場時間、異動依據時間。日期有的完整,有的只剩年份或批次;時間卻都保留到分鐘。
02:17。
梁子謙把其他異常列一筆筆拉出來。
十三號的服務點、多出的人份、無法對應的稅籍異動,甚至林曦雨最早那筆醫療紀錄所引用的前件,都各自帶著不同來源代號。
唯獨它們指向同一個時間。
02:17。