fullseye

sort table が「行のリスト」と「諸元 dict」の両方を指し、消費 op が口ごもって落ちた

症状

連鎖ファザー(tools/chain_fuzz.py --cover-all、300 連鎖)の分類 164 件のうち、SUSPECT(契約の穴)8 件が同じ形だった: vol_edge_probe の返り(行のリスト)が pool の table に入り、次の op が optical_camera / lens_spec / light_spec のdictを待つ席に受け取る。camera["K"] は TypeError: list indices must be integers or slices, not str、lens.get(...) は AttributeError: 'list' object has no attribute 'get' —— 例外は出るが、どの op がどの入力を拒んだのかを言わない。型語彙 table は台帳全体で 207 か所に使われ、産む側は list-of-rows(vol_edge_probe / region_props / glass_catalog / defect_dataset / copy_move_regions)と dict(諸元・統計・設計)の両方がある。

同じ走査で NONFINITE 6 件(lens_system / example_system / bend_singlet / triangulate_column / m3c2_distance / piv_cross_correlate)と TYPEMISS 1 件(peak_subbin)も出た。

なぜ門が通したか

直し

残したこと

table を list-of-rows と dict に分ける(新語 rows)のは 207 か所の台帳と生成物に及ぶので今回は見送り、消費側で止めるに留めた。混ぜると例外(もっともらしい誤答ではない)なので型を割る基準には達していないが、fuzz の述語が両方を通す限り同型の穴は他の族でも起こりうる —— 次に table を受ける op を足すときは、dict 前提なら最初の行で検査すること。