fullseye

n-ary op は呼べるのに一覧に無く、つまみ a / b が効くかは文でしか分からず、CLI からは 2 入力の op を呼べなかった

症状

GenSpark 第 18〜20 報の統合チケット(N60 + I1)。

なぜ門が通したか

直し

  1. op_names(include_nary=False) —— 既定は従来どおり 1 入力の一覧(定義と門を守る)。True で両方の段を 1 つの整列した一覧で返す。
  2. list_ops() の各行に knobs = knob_summary(name): {"a": "continuous" | "discrete" | "unused", "b": bool, "breakpoints": [...]}。正本 docs/op_knob.json を fullseye/data/op_knob.json として wheel に同梱(tools/gen_mcp_data.py が複製、pyproject.toml の package-data、tools/regen_all.py --check が drift を見る)。未計測の op は None —— 実測は 461 / 931 で、測っていない op を「効かない」と言わない。
  3. CLI apply --input2 PATH —— n-ary op は api.apply([A, B], name, a, b, on_error="raise") で走る。--input2 無しの n-ary は「2 inputs: pass –input2」、1 入力 op に --input2 は「takes one input」で止める(黙って捨てない)。3 入力以上は CLI の対象外と言う(現状の n-ary は全部 2 入力)。
  4. fullseye index の内訳を registry 919 / nary 17 / ledger 1048 / color 12 の順で名前つきに。

同じチケットで採らなかったもの(設計):

提案 判断 理由
op_names() の既定に nary を混ぜる 採らない 「1 入力の識別子一覧」という定義を変えると、README・索引の門(931)と pipeline / 進化の語彙が変わる。引数で出す
apply2(x0, x1, name) の新設 採らない apply([x0, x1], name) の糖衣で、facade を 1 本増やすと help・example・門が要る。エラー文が呼び方を言う
run --input2 採らない pipeline の段は 1 入力(前段の出力を受ける)。2 入力を段に持たせるのは engine の型の変更で、別の設計判断
op_run / op_assist に registry op を教える 採らない 型付き台帳(opassist)専用の道具。registry 側は op_find が両方の段を探す