fullseye

imgevolve — status / plan (plan_ref)

公開名 = fullseye(2026-08-01確定 = full[FullSense]+bullseye[的を射る=正しいアルゴリズムを当てる]・PyPI/GitHub完全クリーン)/ 作業名 imgevolve。物理リネーム(dir/repo/PyPI)は公開時=llcore統合可否確定後まで保留。画像処理アルゴリズムを 設計する AI。 スケーラブルなオペレータ・レジストリを進化させ、holdout で正直にゲートし、多言語 (Python/C)コードに codegen する。目標は HALCON 級のオペレータ網羅

設計の正本: C:/dev/tools/raptor/docs/design/imgevolve_s0s1_workgraph.md

新トラックの正本(2026-08-25 追加): 高速ビジョン(1ms 視覚フィードバック)を物理シミュ上で = docs/HIGHSPEED_VISION.md。ユーザー要望(石川グループ研究室のデモ一覧を物理シミュ上で)。軸 = フレームレートではなく遅延、シミュなら遅延を掃引して 関数 error(latency) を出せる。最初の一手 = H1 vloop.py(遅延つき閉ループ台)。

★★(2026-08-17 その16, Opus5[1m]/ultracode, 12h 自律) = algo-c P10-P13(数論2/ビット/拡張ユークリッド/最近点対). P10 is_prime(決定的 Miller-Rabin・oracle sympy・Carmichael 正判定)+ modular_inverse(拡張ユークリッド・oracle builtin pow)= 1f22b03+review 7344322。P11 xor_reduce+popcount_total(域 [0,2^53−1]・oracle reduce(xor)/bit_count)= fed093a(敵対レビュー findings 0・私が mutation test 7 変異を一次検証で全捕捉確認)。P12 extended_gcd(KIND_MAP・[a,b]→[g,x,y]a·x+b·y=g=gcd・域 [0,2^53] inclusive・独立再帰版 oracle で要素一致[Bezout 非一意対策]・200k cases で反復==再帰 mism 0・敵対レビュー 1 CONFIRMED=holdout の域外が全て a 側で b ガード片側退行を両ゲートが通す → [valid_a,bad_b] ケース追加で修正)= ab45602P13 closest_pair(KIND_REDUCE・最近点対・分割統治 CLRS 33.4・整数座標 [-1e5,1e5]→最小2乗距離・2乗のみで sqrt なし=C bit 一致・oracle 総当り O(n²)・30k+16k 敵対ケース mism 0・mutation 6/6 捕捉)= 33edc24 + 敵対レビュー 1 CONFIRMED(strip y-scan の under-coverage=j==i+1 のみ走査 mutation を gate が falsify 不能 → y 非隣接ペアの holdout 追加で修正)2de2f5aP14 huffman_cost(KIND_REDUCE・Huffman 最適プレフィックス符号の最小総コスト・2 キュー法・コストは tie 不変ゆえ C bit 一致・oracle heapq・50k+4k 総当り最適+20k tie 不変で mism 0・merge-total>2^53 で fail-soft・mutation 6/6 捕捉)= faeae06P15 lis_length(KIND_REDUCE・最長狭義増加部分列の長さ・patience sorting=DP+二分探索・比較のみで C bit 一致・oracle O(n²) DP・40k[整数+float・tie 多] mism 0・NaN fail-soft・mutation 3/3 捕捉)= 1ac4f01(敵対レビュー findings 0)。P14 敵対レビュー=3 CONFIRMED(overflow bail 境界の gate-coverage)を follow-up aad6069 で対応(837/838 で閾値 tight 固定 + 検証エージェント発見の 2^16×2^33=cost ちょうど 2^53 witness を採用して >vs>= を pin)。P16 count_inversions(KIND_REDUCE・転倒数・計数マージソート・比較のみで C bit 一致・oracle O(n²) 総当り・40k[整数+float・tie 多] mism 0・NaN fail-soft・mutation 4/4 捕捉)= cd76da0+review 0e0cc93(worktree 隔離レビュー初適用=2 CONFIRMED[LOW]・long long 幅 witness n=65537 + 独立 Fenwick oracle 追加)。P17 max_subarray(KIND_REDUCE・最大部分列和・Kadane O(n) リセット走査空部分列許容で答 ≥ 0=-1.0 safe sentinel・整数域[ x ≤2^52・走行和≤2^52]で全部分和厳密 <2^53→C bit 一致・oracle O(n²) 総当り[整数加算の結合律]・5000 cases mism 0・mutation 4/4 捕捉[真の非空 Kadane を全負 holdout が falsify]・overflow 境界 2^52 で >vs>= を pin)= 2ff216d + worktree 隔離レビュー review-fix(1 CONFIRMED[LOW gate-honesty]: -O2 のみの gate が C の「NaN をキャスト前拒否」を falsify 不能=De Morgan 域ガード書換が (long long)NaN UB で -O2 通過するが UBSan で trap → run_c_backend に UBSan pass 追加で全 op 強化・38 op 全 UBSan-clean 実測・回帰 test_ubsan_pass_catches_nan_slip_through_cast)。全 algo op 38 が work-graph gate 化。詳細=docs/GENERAL_ALGORITHMS.md P10-P17。ruff clean・mypy 新規 0。commit/push このセッション。★運用教訓: 敵対レビューは対象 repo 内でエージェントが mutation を残すため worktree 隔離で実行(P14 で algo.py 汚染を commit 直前検出・復元)。

★★(2026-08-17 その15, Opus5[1m]/ultracode, 12h 自律) = algo-c P9(統計). count_distinct(distinct 値数)+ mode_value(最頻値・小さい方 tie 勝ち)。比較ベース exact・oracle set/Counter・各 5000 cases mism 0・difftest bit 一致。★mode_value のゼロ mode ±0.0 混在で C(unstable qsort)vs Python(stable)符号食い違い → +0.0 正準化で堅牢化。全 algo op 28 が gate 化。全スイート 4787→4796。commit/push このセッション。

★★(2026-08-17 その14, Opus5[1m]/ultracode, 12h 自律) = algo-c P8(探索/選択). binary_search(sorted 列の lower bound・oracle bisect_left)+ kth_smallest(k 番目最小=quickselect median-of-three・順序非依存で C bit 一致・oracle sorted()[k]・sorted 入力 O(n))。両 op 各 5000 cases で oracle mismatch 0・difftest passed(python exact / C bit 一致 / c_verified)。全 algo op 26 が work-graph gate 化。敵対レビュー 1 CONFIRMED(LOW): kth_smallest が単一 pivot Lomuto で all-equal 大入力 O(n²)(正しさ不変)→ 3-way(Dutch flag)partition に書換で O(n) 化(n=40000 all-equal 7.44s→0.0019s・parity 維持)・計時テストを all_equal/reverse に拡張。全スイート 4772 → 4787 passed / 0 failed(+15)。commit/push このセッション。

★★(2026-08-17 その13, Opus5[1m]/ultracode, 12h 自律) = algo-c P7(線分交差). 幾何ツールキットを 1 op 拡張 = segments_intersect(2 閉線分が交差?1.0/0.0・CLRS 33.1 整数 orientation・oracle sympy.geometry・sympy と 2970 cases mismatch 0)。敵対レビュー 1 CONFIRMED(gate-honesty): holdout が on-segment 特殊ケース(端点が相手内部)を単独理由で駆動せず → 分岐削除の wrong op を gate が通す(op は正しい)。自己再現の上、単独理由ケース(軸並行4+対角2)を追加し各 on_seg 分岐削除で difftest FAIL を確認。全スイート 4765 → 4772 passed / 0 failed(+7)。全 algo op 24 が gate 化。commit/push このセッション。

★★(2026-08-17 その12, Opus5[1m]/ultracode, 12h 自律・graph-loop-engineering) = algo-c P6(計算幾何). algo-c ロードマップ P1→P5 完遂後の拡張(当初 TOC の「幾何」)。画像 tier の輪郭/領域処理への橋渡し。2-D 点を 整数座標(≤1e5)でパックし全ての向き判定/靴紐和を厳密な整数化(浮動小数除算なし)= C bit 一致 かつ Python==独立 oracle tol 0。

★★(2026-08-17 その10, Opus5[1m]/ultracode, graph-loop-engineering) = algo-c P5(数論・圧縮・教育用ハッシュ)= algo-c ロードマップ完遂. 「自律で前回の続きを継続」ゴール。前セッション(その4-9)が P2→P4 を完遂・push 済 → 次候補 (a)P5 を実装。algo 詳細の正本 = docs/GENERAL_ALGORITHMS.md「P5 完遂記録」

★★(2026-08-16〜17 その4-9, Opus5[1m]/ultracode, 自律 marathon) = algo-c tier を P2→P3 拡張 + Studio 表示 + synth 多スケール化. ユーザー承認の無人自律セッション(push ゲート開放)。候補 a/b/c/d を全て前進。algo 詳細の正本 = docs/GENERAL_ALGORITHMS.md(P2 完遂記録/P3 完遂記録/各敵対レビュー節)。

★★(2026-08-16 その3, Opus5[1m]/ultracode) = 「土台から確実に」= パッケージング/API 土台固め + 特徴学習→類似画像合成. ユーザー方針「できるだけ土台になる層から確実にしよう」+「画像処理スキルでサンプル画像を自作(基盤検証)」+「画像から特徴を学習して似た画像を生成」。

★★(2026-08-16 その2, Opus5[1m]/ultracode) = algo-c 汎用アルゴリズム対応 P1 完了(ユーザー要望). 正本 = docs/GENERAL_ALGORITHMS.md「P1 完了記録」。新 tier(画像 REGISTRY と完全分離・opt-in) algo.pyseq/scalar 型 + ソート 3 種(quicksort/heapsort/mergesort)+ reduction 2 種 (seq_max/seq_min)を 仕様から再実装(丸写し禁止・provenance 明記)。algo_codegen.py (standalone Python/C emit)+ algo_difftest.py(honest gate)。★C コンパイラ皆無の本環境で pip install ziglang(python -m ziglang cc)を導入し、C 一致を deferred skip でなく本当に実測 = 全 5 op で python(==numpy oracle)diff 0.0 / C==Python bit 一致 diff 0.0 / passed=True(実 compile→実 run→bit 比較)。単一 source of truth(同一文字列を in-process 参照 compile と codegen emit の両方に使用)でテスト oracle と出荷物が drift しない。fail-closed(compile/run 失敗=gate FAIL、 toolchain 無し=honest skip)。facade(fullseye.algo_ops/run_algo/algo_to_c/algo_to_python/ algo_difftest)+ skill 追記(~/.claude/skills/image-processing/SKILL.md「General algorithms」 節=サブエージェント利用可)。全 local(auto-commit hook)・push は human-gate。

★★(2026-08-16, Opus5[1m]/ultracode) = 「Fullseye と Fullseye Studio の修正と改善を完了」(ユーザーゴール, 自律). 全スイート 4426 → 4494 passed / 0 failed(+68)、studio 82 → 84、UI ハーネス 192 steps / 0 fail / 0 crash。全 local(auto-commit hook)・push は human-gate。

★★I-2「意味論を閉じる」完了(2026-08-15 その3, Opus5[1m]/ultracode)。 正本 = docs/FSCRIPT_DECISION.md(§1.6 に完了記録)/ docs/FSCRIPT_MEASUREMENTS.md(実測)。やったこと = fscriptfslib の型モデルへ載せ替え、tests/test_fscript.py の strict xfail 5 件(欠陥2-5)を pass に。iconic 値を FImage/Region/ObjectSet(sort を型が運ぶ・内容から推測しない・真偽値なし)へ、制御タプルの + を HALCON 準拠の要素ごと演算に(連結は [t1, t2] flatten)、画素 op は fslib へ委譲(実装二重化なし)。value_kind も型ベースに。ベンチ2本(bench_realtime/bench_objectset_memory)を新型へ追従(実行確認済・ObjectSet 8.9x/10.2x 省メモリを再現)。全スイート 4372→4377 passed / 0 xfailed(回帰なし)、e2e で5欠陥の実挙動を目視確認。★確定の背景(不変) = Python で進める / 実行モデルは VM 一本 / A(普通の Python)か B(独自 DSL)かは未決(顧客の Q1/Q2 待ち・共通核フェーズ I は Path 非依存で先行可)。I-1 完了(commit 16955d0)= fullseye_abi.h 仕様先行 + fslib.py 適合 + test_abi_conformance.py 19 tests。 ★fail-open 是正の self-check プリミティブ実装済(2026-08-15 その3 続き, commit f1a7379): fslib に unmet_ops/readiness_report/require_ready(レシピが使う全 op の動作バックエンドを起動前に検証、1 つでも欠ければ FsBackendError で起動拒否・degrade しない、§1.6b/R4)。industrial は numpy fallback なし=numpy-only op は起動拒否、studio は degrade。test 5 件・cv2 非依存。全スイート 4377→4382 passed残り配線 = 実 Runtime ローダー(レシピ/マニフェスト読込)から require_ready を呼ぶ(ローダーは golden/マニフェスト検証と同じ後段)。 ★N1b 初期診断(2026-08-15 その3 続き, commit 78bb97e): tools/bench_soak.pytimeBeginPeriod(1) レバー(--timer-resolution、既定 ON)を追加し実検査で A/B。★正直な結果=タイマ分解能は裾に効かなかった(4MP で max off 18.81ms / on 18.67ms=誤差域。R4 の 26x は合成空ループの数字で OpenCV 主体の実検査に非転移→主因候補から降格)。かつ 82s の短 soak では 118.7ms を再現できず(cold p50 17ms=熱定常前・稀事象)。記録=docs/FSCRIPT_MEASUREMENTS.md §9★Runtime ローダー実装済(2026-08-16, commit 9b74fd3)= fsruntime.py: レシピは判定前に fail-closed で (1)ABI major 一致 (2)source SHA-256 が manifest 署名と一致(改ざん検出) (3)全 op が industrial で動作バックエンドを持つ(require_ready 配線=§1.6b) (4)golden vector で「以前と同じ判定」を再現(R5) を証明せねば READY にならない=FsNotReady(degrade しない)。golden 実行が backend self-check と判定証明を兼ねる。Recipe/GoldenVector/ReadyRecipe/sign/compile_recipe、test 10 件。golden vector 形式も確定(GoldenVector=inputs→expect+tol)。 ★N1b 裾は外部 CPU 競合に強く依存(示唆的・要追加測定 2026-08-16, FSCRIPT_MEASUREMENTS.md §9.1)。★当初「原因特定/唯一の確実策/DEFINITIVE」と書いたが自分の敵対検証で overclaim を摘発し格下げ([[feedback_benchmark_honest_disclosure]]/[[feedback_no_false_reporting]])。所見(各 N=1): クリーンなアイドル機は 54,000 cycle で max 21.0ms(1.24x)= タイト(計装なしでも ~18.9ms)、全コア飽和で ~73ms へ膨張(cv2 系膨れ numpy threshold 不変)。★ただし正本 118.7ms は一度も再現できておらず、当時の測定が開発機上の並列エージェント汚染だった可能性を排除できない=「環境要因と確定」とは言えない。対策候補=コア確保(24 コア機 1 例・4-8 コア産線 PC 未検証・逆効果の恐れ)/ cv2 スレッド抑制(弱い)/ 優先度(未適用=未検証)。受入前に必須: 4-8 コア機の裾 / ≥3 反復+p99.9 / per-cycle fault / pool 版飽和 A/B / 118.7ms 再現 or 汚染源特定。 ★常駐 Runtime 実装済(2026-08-16)= fsruntime.FullseyeRuntime: start() が load ゲート(compile_recipe)を通してから READY、inspect(images, judge)PLC 語彙の Verdict(OK/NG/ERROR/TIMEOUT) を返す(op 失敗=ERROR で fail-open を産線に出さない、deadline 超過=late result 付き TIMEOUT で判定は PLC に委ねる=R4)。裾対策 knob(cv2_threads/high_priority)も装備し実適用可否を正直に返す。test 16 件(loader 9 + runtime 7)。 ★次 = フェーズ I の残り(優先順): (1)PLC プロトコル結線(comm.py/device.py の Modbus/TCP へ Verdict を橋渡し)+ OS レベルのコア確保配布手順(裾の唯一の確実策)+ 二プロファイル配布イメージ(§4.1)。(2)任意: バッファ pool 化で p50 削減(~14,000 ページフォールト/cycle=毎 cycle 新規 4MP 確保。裾でなくバルク軸)。言語スコープは絞ったまま(Vector/STLコンテナ/例外/procedure/regexp は入れない)。A/B の分岐は Q1/Q2 の答え待ち。fscript/fslib/fsruntime/fullseye_abi.h の commit は local(auto-commit hook)・push 判断は human-gate。

v18.8 (2026-08-15, Opus5[1m]/ultracode) = 自律 UI 操作デバッグ・ハーネス + クラッシュ級バグ 3 件修正 + step 実行のショートカット化. ユーザー指示「UIと操作系の修正・デバッグを自律で / 操作方法は外部AIと審議」。

v18.7 (2026-08-15, Opus5[1m]/ultracode) = Studio を HDevelop 忠実な IDE へ / P1 メニュー再構成. ユーザー指摘「メニュー構成がおかしい・一般 IDE でない」+ 原則「IDE の画面はシンプルかつ多機能」([[feedback_ide_design_simple_multifunctional]])を受け、HDevelop 仕様を Perplexity で確認(iconic 変数モデル / Operator 窓 = コンボ選択+引数行 / 制御フロー if-else-for-while / メニュー構成)した上でメニューを標準 IDE 構成へ再編:

v18.6 (2026-08-15, Opus5[1m]/ultracode) = Fullseye Studio 窓レイアウト自由度の拡張(ユーザー指示「窓/レイアウト配置の自由度をさらに上げる」). v18.5 の Studio v2(ドック+MDI+Float-all)を「不十分」との評価→ studio.py に4方向追加(全て offscreen headless テスト付き): (1) 名前付きレイアウトプリセット=現在の geometry+dock/toolbar 配置(saveState/saveGeometry)を任意名で保存→適用→削除(QSettings 永続・offscreen は in-memory)。組込3種 Balanced (default) / Graphics focus(操作/表示/コード/変数 dock を隠しグラフィクス最大化)/ Code focus(Program dock 前面)。Windows▸Layouts を動的再構築=フラット action 設計(PySide6 addMenu(str) の submenu が Python 参照喪失で shiboken 削除される既知落とし穴を回避、テストで実証・修正済)。 (2) グラフィクス窓の MDI 外 detach/reattach=アクティブ graphics サブ窓を独立トップレベル窓へ pop out(Ctrl+Shift+D)/復帰。image view は描画継続。 (3) パネル個別 float=Float panel submenu で1パネルずつ float/re-dock(従来の all-or-nothing より細粒度・マルチモニタ向け)。 (4) ドックのネスト自由度=既存 AllowNestedDocks を活用(据え置き)。 テスト=studio 53→57 passed(preset round-trip / built-in 配置 / detach-reattach bookkeeping / 個別 float を新規)、full suite 4281→4285 passed / 0 fail(回帰なし)、F系(pyflakes)clean・既存 house-style(BLE001/E702)踏襲。公開ハンドル=win._{save,apply,delete}_layout_preset _builtin_layouts _{detach,reattach}_graphics _float_panel _layouts_menu。全 local auto-commit(未 push=human-gate)。正本=本 STATUS『v18.6』。

v18.5 (2026-08-15, Opus5[1m]/ultracode) = 未着手候補 (a)-(e) 完遂 + Fullseye Studio を HDevelop/VS 級 IDE へ全面刷新. ユーザー指示「次セッションでは未着手候補すべてやる」→ 4068→4281 passed / 0 fail、N_OPS 646→654wheel 隔離 venv で end-to-end 検証済(WHEEL N_OPS 654 == source、新 op・macro・auto_specs 全て同梱)。全 local auto-commit(未 push=human-gate)。 (b) op 波 +7(全 halcon=”“=新 capability・numpy/scipy・決定的): backends_alife2.py(CA/人工生命: alife_wolfram1d[初期行→elementary rule 時空図、rule90=Sierpinski ground-truth] / alife_langton_ant[Langton の蟻・独立再シミュ照合] / alife_lenia[連続 CA Chan2019・ring kernel+Gaussian growth] / alife_sandpile[BTW 自己組織化臨界]) + backends_deform.py(制御点変形: deform_tps[Bookstein1989 薄板スプライン] / deform_ffd[Rueckert1999 B-spline FFD・injectivity 境界] / deform_mls[Schaefer2006 移動最小二乗・affine 再現])。honest 重複回避=swirl/barrel は既存ゆえ除外。facade 追加 deformreg.py(Thirion demons 変形レジストレーション)+ specops 拡張(spec_pansharpen[Brovey/IHS/PCA] / spec_decorrelation_stretch[Gillespie1986] / spec_fuse[PCA/average/multi-focus])= NDVI/band_ratio/PCA は specops 既存ゆえ融合系のみ追加(honest 非重複)。 (c) DNA op を新 sort へ一般化: 進化(robust.py core-only seeds8/gens80)→ champion_to_macromacro_vol_denoise(vol_threshold→vol_gaussian、volume→volume、locked 25.74 dB > hand 20.94 dB = +4.80 dBbeats_hand=True)= 4 番目の DNA op で自己拡張 registry を image→image / image→region に加え volume→volume へ拡張。★honest negative(水増し回避)= count(locked 0.679 < hand 0.875 負け)/ locate・locate_rot(ncc/shape_locate primitive が locked 1.0 で saturated=引分)は beats_hand を通らないため追加せず。教訓=DNA registry の信頼性ガードは genuine 勝利のみ許可。 (d) FBP トモ→XCT: xct/examples/fullseye_baseline.py を run 検証(exit0、sparse22 vs dense180 の FBP/SART/BP、sparse penalty 8.74 dB を honest 提示)。 (e) auto_specs data-as-code(wheel 完全化): backends_auto が runtime で読む data/auto_specs/*.json(53 spec)が flat-layout ゆえ wheel 非同梱=非 editable install で欠落していた既存 finding を、gen_auto_specs_data.pyauto_specs_data.py(生成 py-module、常に wheel 同梱)+ load_specs の fallback で解消(macro DNA store と同手法)。wheel 実測=backends_auto 174→227(source 一致)= 53 auto op 復活を実証★敵対検証(honest DoD): 4 新モジュールを ultracode workflow(8 agents=実装+敵対検証)で並列 authoring→検証。全 finding を私が一次コード確認(v11 規律)。real 修正: alife_sandpile の HIGH(b>=0.9 の run-to-stable が大画像で 76-140s・未安定化)を総作業量 bound(_SANDPILE_BUDGET grain-updates で sweep 数を制御 → size 非依存 ~tens-of-ms、L=320 が 140s→107ms)+ docstring 正直化 / spec_fuse(pca)の近似反相関で非有界重み→相対閾値 guard / deform_ffd injectivity テストの vacuous 化→振幅依存の非 vacuous 化 / lenia の R=1 box 退化→R≥2 / decorrelation「全相関完全除去」は full-rank 限定と honest 化 / deformreg の +inf 扱い・residual_ssd clip を docstring 明記 / deform「exact identity」→resampling 誤差まで。0 reproduced defect(統合後)。 ★Fullseye Studio v2(ユーザー主導・HDevelop 7.1/VS 級 IDE 化、studio.py): (1)高密度 VS スタイル QSS(padding/角丸圧縮) (2)全パネル QDockWidget 化(ドラッグ/フロート/タブ)+ 中央 QMdiArea グラフィクス窓 (3)HDevelop 4 大窓=Graphics(複数生成可)/Program(コード)/Variables&Objects/Operators (4)Program 窓=op 名 IntelliSense 補完・ブレークポイント(gutter)・Step 実行・各行処理時間・コード⇔pipeline 双方向 (5)Variables 窓=各ステージ出力を型付き列挙・任意変数をグラフィクス窓表示 (6)全機能を Windows メニューから/複数グラフィクス窓/マルチモニタ用 Float all panels (7)QSettings 永続化(位置・レイアウト・言語) (8)多言語 i18n を専用ファイル外部化 studio_assets/i18n.json(en/ja/zh、languages 駆動で拡張可・コード変更不要) (9)op ヘルプ HTML studio_assets/op_help/*.html(引数/使い方/サンプルコード読込リンク/関連 op リンク、<op>.<lang>.html フォールバック)+ 専用ヘルプダイアログ(非モーダル・op:/sample:/run: アンカー)。studio テスト 49→53 passed(dockable/program/variables/i18n/help を新規テスト)、既存配線を全保持。honest 限界=op ヘルプ HTML は 3 例執筆(他は生成カード)・ツールチップ翻訳は主要 36 コントロール(未訳は英語 graceful)。 ★次候補(未着手): (i)op ヘルプ HTML を主要 op へ拡張 + ja/zh 版 (ii)残 LOW finding(deform ffd 枠外サンプリング/_safe 非画像/brovey 負平均符号反転/spec detail_size 検証 等の edge-case docstring) (iii)更なる op 波(soft-body TPS の逆問題/追加 CA) (iv)more macro DNA(headroom ある問題で genuine 勝利のみ)。正本=本 STATUS『v18.5』。

v18.4 (2026-08-15) = 自己拡張 registry(進化の DNA op)+ Physical-AI/進化 op 波(+23 op). ユーザー目標「差別化を進める。特に Physical AI や進化にかかわる、今後10年で使われる技術を op として揃える」。 ① 自己拡張 registry(進化の閉ループ): 進化コアが発見した champion pipeline を 1 つの再利用可能 op に凝縮 = backends_macro.py(data 駆動 data/macro_champions.json)+ champion_to_macro.py(champion JSON→DNA 登録・honest provenance=full-registry train/holdout/locked 再計算 + trivial/hand/reference baseline + beats_hand_on_locked_holdout 判定)。マクロ op は凍結 name-pin stages を decode_by_names+run_stages で実行 → champion pipeline と bit 一致(tests/test_macro_ops.py)、a,b 凍結、halcon=”“。初 DNA op = macro_denoise(bilateral×3、holdout 26.05 / locked 26.28 dB = gaussian→median reference を locked で +2.56 dB 上回る・honest 検証)。進化が自らの発見を次世代のプリミティブに選択可能(op 数はライブラリ wrap だけでなく発見の凝縮でも増える=記事/特許級差別化)。★機構の汎化を実証: registry は 3 DNA op にまたがる = macro_denoise(image→image) / macro_edge(image→region、gamma→bilateral→sobel_mag→scale_clip→otsu、holdout 0.948 / locked 0.906 F1、hand[sobel→threshold] locked 0.772 を超え) / macro_binarize(image→image、bilateral→unsharp→bilateral→lowpass→gopen→unsharp、holdout 0.953 / locked 0.750 IoU、hand[gauss→otsu] locked 0.619 を超え)。いずれも locked holdout で hand baseline を上回る genuine な発見で、機構が problem type 非依存(image→image / image→region)であることを示す。commit 8f75879。★不具合修正: .gitignore data/* が DNA データを除外 → fresh clone で機能消失・CI で test_macro_ops 失敗する ship ブロッカーを !data/macro_champions.json 例外で修正。commit 8e3f7d6② Physical-AI/進化 op 波(+23 op、全 halcon=”“=HALCON 非対応の新 capability、classical numpy/scipy、RAD で 4 families の prior art 確認済): aug_(10)=sim2real センサー劣化(Poisson shot / Gaussian read / fixed-pattern PRNU / motion-PSF[angle] / rolling-shutter / vignette / JPEG 8x8 DCT / barrel-pincushion / cutout)= 進化/RL 方策の学習・stress-test 基盤(RNG は knob seed で決定的)。alife_(8)=人工生命/セル・オートマトン(Conway 系 CA / cyclic CA[spiral] / Gray-Scott・Gierer-Meinhardt reaction-diffusion / Greenberg-Hastings 励起媒質[BZ] / DLA)。honest: 連続 PDE 3 members は既存 ph_ と重複するが toroidal-lattice / evolver-parameterised の真の variant(max|diff| 0.27–0.93=非同一・既存の multi-variant 規範と整合)。tac_(5)=触覚/contact-from-shading(GelSight 系: contact mask[region] / Poisson height-from-shading / surface normal / pressure / shear)= 器用マニピュレーション。REGISTRY 621→644、coverage 307/2313 不変(honest: op 数増でも被覆主張ゼロ・dangling 0)、Wave-0 北極星不変(dtrain +0.0)、full suite 3862→4033 passed / 0 fail検証(honest DoD) = 各実装 self-test + 全 registry 契約 sweep + module ground-truth + 3-agent 敵対レビュー(find→verify、0 reproduced defect) + 自己 spot-check(非正方形/1x1/degenerate refit・finite・region 契約・variant 差分)。example=examples/sim2real_and_alife.py。commit ff7d0da③ event-camera facade + wheel-packaging 修正: events.py=neuromorphic/event-camera 視覚(frame→event の v2e 系・plain numpy=次世代低遅延ロボ感覚)。simulate_events/event_count(log 強度変化で ON/OFF 極性)・event_image(IWE)・event_rate/event_rate_maptime_surface(SAE, T×H×W stack)・warp_framecontrast_maximization(Gallego 2018=warp 済 event 像を最鋭化する定常大域フローを復元、既知 per-frame 速度を ground-truth 復元)。facade 配線(api.py+fullseye)、14 ground-truth テスト。★不具合修正(wheel 実ビルド検証で発見): (a)events+backends_aug/alife/tactile/macro が pyproject py-modules 欠落=非 editable pip install で 23 wave op・macro_denoise・events facade が全消失(v18.3 と同クラス)→追加。(b)flat-layout の data/*.json は wheel に載らない(backends_auto も同一の既存制限)ため data/macro_champions.json 単独では installed package で macro_denoise が登録されない→ macro_champions_data.py(生成 py-module の DNA store=常に wheel に載る)を導入、backends_macro は .py store 優先で JSON fallback、champion_to_macro が両方書く。isolated venv での wheel install 検証=macro_denoise 登録・wave 23/23・events facade 全 OK。★既存 finding(範囲外・未修正)= backends_auto が runtime で読む data/auto_specs/*.json も wheel 非同梱ゆえ非 editable install で ~227 auto op 欠落(editable/source 経路は無影響)。macro DNA は data-as-code で回避。

v18.3 (2026-08-15) = Physical-AI 知覚パイプラインを徹底拡充(ユーザー指示「Physical AI に繋がる op を徹底的に増やす」+「skill として実用レベルに」). 視覚 → 深度 → 点群 → 物体6DoF姿勢 → 把持深度 → 地形 → 足場 → 歩容安定 を end-to-end で完備。 全 numpy/scipy native・古典手法(H&Z / Drost / Hirschmüller / Fusiello、学習モデル不使用)・ground-truth テスト付き。 これらは進化 REGISTRY でなく facade モジュールゆえ Wave-0 recapture 不要([A]自律安全)。full suite 3728→3794 pass(+66)。

v13 (2026-08-13) = 実用化 + 知覚スタック + Studio. 詳細 = docs/V13.md (api.py/fullseye パッケージ・pip install -e・stereo/terrain/detect/registration/pose/imgio・ HDevelop 風 studio.py・leg2 codegen/difftest/accuracy_bench)。

v14 (2026-08-13) = 知覚スタック完成(モーション + 堅牢化). 詳細 = docs/V14.md / 使い方一枚 = docs/PERCEPTION.md。 時間軸 = flow.py(pyramidal Lucas-Kanade + Horn-Schunck + warp + imgio.colorize_flow)。 深度精緻化 = stereo disparity_subpixel + lr_consistency。歩行 = terrain ground_plane / ground_surface / detect_obstacles。把持 = registration pca_align + Trimmed ICP + register。 全 fullseye 公開・ground-truth テスト付き・全スイート 2497 passed。commits a8fe121/e2feaf8

v12 (2026-08-12) = production hardening. 全 521 op をテスト皆無 → 本番品質へ。 監査 = docs/AUDIT_2026_08_12.md(execution-verified 81 findings の disposition)+ docs/audit_findings_2026_08_12.json(生 repro)。テスト = tests/(2255 passingpy -3.11 -m pytest tests/ -q)。15 バグ修正済(決定性 polar/sk_medial・NaN・型契約 sort-aware backend_safe・reg_close border・evolve pop・robust.py champion 永続・閾値逆転)。 進化の北極星は無傷、被覆不変(269/2313)。deferred(意味論変更で champion が変わる=要判断)= 符号付き応答 16op ほか、詳細は AUDIT_2026_08_12.md。利用 skill = ~/.claude/skills/image-processing/

差別化(先行研究で確定, 2026-08-01)

AlphaEvolve(生ソース進化)/ TransCoder(翻訳)/ Halide(schedule 探索)いずれも 「アルゴリズム発見 × 型付き画像IR × 検証済み多言語codegen × オンデバイス × honest holdout」を 全部は満たさない。

現在地(v10 = 実 HALCON 被覆計測, 2026-08-01)

★実 HALCON 被覆(memory 由来の推測を廃し、公式リファレンスを実スクレイプ)

★現在地(v11 = HALCON-parity 自動生成 + 機能ゲート, 2026-08-12)

目標の再確認(ユーザー)= 「HALCON と同じことができる」= 名前だけの被覆でなく各 op が 実際に同じ処理を行える。これを honest に達成する土台を構築:

★honest 被覆(実測, honest_summary.pydocs/HALCON_PARITY.md):

★他ライブラリ機能の取り込み(backends_extra.py/lib_coverage.py, ユーザー指示「他の画像処理ライブラリの機能取り込み」): imgevolve は HALCON 中心だが、PIL/Pillow・scipy.signal/fft・cv2(484)・skimage(316)を introspect(実インストール =ground truth)して多ライブラリ軸で計測。HALCON が重視しない distinctive op を 61 追加(xsk_/xcv_/xpil_/ xsp_/xsk2_/xcv2_):

★処理効率 = GPU-ready バッチバックエンド(accel.py/bench.py, ユーザー指摘「GPUで効率化も重要」): 計算重い vectorizable op(gauss/mean/sobel/laplace/gamma/scale/invert/threshold/erosion/dilation/range_rect)を torch でバッチ一括処理する高速経路。--device cuda で GPU 実行(device 非依存)。忠実性=accel が CPU registry を内部で exact 再現(imgevolve.py accel で 10/11 interior<5e-3、境界のみ reflect/pool 規約差)。 honest ベンチ(CPU 実測, feedback_benchmark_honest_disclosure): バッチは計算重い op を 1.6〜2.2x 加速 (range_rect 2.15x/dilation 1.75x/sobel 1.66x/gamma 1.60x)する一方、自明 pointwise は tensor 変換で損 (threshold 0.15x/scale 0.22x/invert 0.25x)、集計 1.31x。真の効き所は GPU(変換コストを大規模並列で償却)= 本環境 torch-CPU のみゆえ GPU 数値は RTX 5090 で実測。CLI = imgevolve.py accel|bench [--device cuda]

★codegen/difftest parity 実証(parity.pydocs/PARITY_CROSSBACKEND.md, ユーザー選択 depth): HALCON/コンパイラ非依存で今実証できる parity = クロスバックエンド一致。独立実装(scipy/cv2/skimage)を ≥2 持つ 65 op を holdout 照合: agree 27(独立/冗長実装が 0.02 以内一致 = 強い parity 証拠。うち scipy↔skimage の真クロスライブラリ一致 + core↔auto の codegen 忠実性)/ close 5 / differ 33 (共有 HALCON 名の裏でアルゴリズム実差 = Otsu≠Li≠Yen、scipy≠cv2 構造要素、Canny 実装差 等を隠さず開示feedback_benchmark_honest_disclosure)。C 経路(imgops.c 独立実装との言語横断 parity)は gcc 不在で本環境 skip (toolchain 到着で自動充足)。CLI = imgevolve.py parity

★全 op 対応 = disposition map(dispositions.pydocs/OP_DISPOSITION.json): 偽実装で数を埋めず (feedback_no_false_reporting)、全 2313 op に truthful な disposition を付与(100% 対応、捏造 0)imgevolve.py has <任意の op> が全 op に定義済み応答を返す(implemented=呼び方 / 未実装=status+理由)。内訳 (2026-08-14 op 拡張 wave 1+2 後): implemented 324(14.0%)/ needs_new_capability 128(honest backlog)/ nary_multiinput 125 / out_of_scope_model 586(learned 442 + geometric 144)/ out_of_scope_plumbing 1150。 → honest な分母(実装しうる algorithm 系 ≈ implemented+needs_new_capability = 452)に対し 324/452 ≈ 72% を genuine 実装

★op 拡張 wave 2(2026-08-14, ultracode workflow)= registry +39 op / coverage 282→307: 5 新 backend モジュール — backends_regions3(background_seg/clip_region/eliminate_runs/rank_region/region_features/ polar_trans_region 等 10)・backends_imgtools(add_image_border/crop_part/bit_lshift/rshift/mask/ convert_image_type 等 11)・backends_measure1d(1D caliper=measure_projection/pos/thresh/pairs/fuzzy 5)・ backends_physics(物理演算 PDE=perona-malik/coherence/reaction-diffusion/heat/mean-curvature/TV flow 6)・ backends_decomp(分解=structure-texture/texture-residual/RPCA low-rank/sparse/retinex/local-contrast/ homomorphic 7、産業検査差別化)。25 が genuine 新 HALCON 被覆、14 は halcon=”“(physics 4=anisotropic/ isotropic/coherence/mean_curvature は backends_auto と重複ゆえ被覆主張せず[より忠実な実装]・decomp 7=新 capability・ full_domain=恒等 no-op)。★検証 agent が physics の重複被覆主張を摘発→私が一次確認して halcon クリア(v11 規律)。 REGISTRY 556→595。固定参照パイプライン北極星は +39 op 後もスコア不変(dtrain +0.0)= gate 設計を実証

★op 拡張 wave 3(2026-08-14, ultracode workflow)= registry +25 op(全て新 capability・halcon=””): 4 新 モジュール — backends_inverse(逆問題=Richardson-Lucy/spatial Wiener/unsharp-deblur/motion-deblur/ back-projection 超解像/harmonic inpainting 6)・backends_transform2(領域変換=log-polar/Radon sinogram/ steerable/phase-congruency/gradient-domain/census/rank 7)・backends_segment2(適応セグメント=SLIC/ felzenszwalb/GMM/k-means/region-growing/normalized-cut/watershed 7)・backends_tomo(トモグラフィ= radon forward/FBP/SART/unfiltered-BP/sinogram-denoise 5、★XCT プロジェクト直結)HALCON に無い新 capability ゆえ全て halcon=”“(被覆主張ゼロ=honest、coverage 307 不変・dangling=0)。4 クラスタ全て敵対検証 pass・suspect ゼロ。REGISTRY 595→620。参照北極星は +25 op 後もスコア不変(dtrain +0.0)= gate を3度実証

★op 拡張 wave(2026-08-14, ultracode workflow)= registry +35 op / coverage 252→282(dangling=0): 4 新 backend モジュール(backends_filters2 shock/gray_skeleton/topographic/lut/symmetry 等 9・backends_regions2 inner_circle/smallest_circle/smallest_rectangle2/runlength 等 10・backends_subpix サブピクセル極値点 6・ backends_xldgeom 輪郭モーメント/DP 簡略化 等 10)を並列実装→敵対検証。30 が genuine 新 HALCON 被覆、5 は honest に halcon=”” **(重複2=smallest_rectangle1/local_max_sub_pix・再解釈3=clip/crop/regress は HALCON 意味論と 不一致ゆえ被覆主張せず)。加えて **video/時空間モジュール videops(T×H×W を一級化=temporal 中央値/背景差分/ motion_energy/時空間 Gauss・Sobel/temporal MIP/flicker 除去/per-frame 等 15 関数、facade 公開)を追加。REGISTRY 521→556。op 追加で Wave-0 fingerprint が trip → recapture_wave0_pins.py --write で gate 再祝福(champion 無回帰を確認)。

★被覆修正(2026-08-14, dispositions.py)= honest-disclosure バグ修正: 旧 MODEL_KW は素の部分文字列マッチで、 "pose" が transpose/compose/decompose・pose タプル/四元数/同次行列の代数 op を 47 件"bundle" が古典 bundle-adjust を「要・学習モデル」と誤ラベルしていた(feedback_no_false_reporting 違反)。修正: (1)pose/bundle を除去し、bare キーワードをアンダースコア・トークン境界マッチ化(部分文字列 FP を根絶、正当な model ヒットは不変を実測検証) → 49 op が out_of_scope_model から離脱(plumbing 36 / needs_new_capability 7 / nary 6)、implemented は 269 で不変 (inflate ゼロ)。(2)model 章を learned(Classification/OCR/Deep Learning/3D Matching/Identification=真の学習モデル)と geometric(3D Reconstruction/Calibration=古典幾何。学習不要、要キャリブ/多視点)に区別し reason を正確化。 回帰テスト = tests/test_dispositions.py(8 tests)。未対応(要ユーザー判断の follow-up): 3D Matching 章の 純幾何ヘルパー(例 create_cam_pose_look_at_point)や 3D/Calibration の一部を out_of_scope_model → needs_new_capability へ再分類するかは章単位判定の判断領域。今回は status を動かさず reason のみ正直化(backlog を私の判断で inflate しない)。

★進化ループでの他ライブラリ op 実使用 検証(2026-08-12, 全 521-op registry・短予算15-18世代):

HALCON ~2313 の実装可能性(章別内訳, honest)

次(graph エンジニアリングでスケール)

  1. オペレータ知識グラフを構築 DONE(graph.pydata/halcon_graph.json, 2313ノード)。
  2. analog edge から backend-wrapped registry を自動生成 DONE(backends_auto.py 固定 shape 語彙 + fail-closed 生成 + 8-agent fan-out + 機能ゲート = auto 173 op / 被覆 79→186)。
  3. 残る未被覆 unary algorithm = 366(graph の unary_uncovered_by_chapter)。次の増分候補:
    • 語彙の拡張で救える families(現状 skip されたが genuine 実装可能): motion/defocus 方向ブラー (linear blur kernel)、gray_skeleton(gray 版 thinning)、shock_filter(PDE 先鋭化)、 projective_trans(射影変換 shape)、inverse FFT(fft_image_inv/polar_inv)、corner→point sort (Foerstner/Harris の点出力に新 sort)、cooc/Haralick テクスチャ特徴、moment features (region moments)。shape を1つ足すと該当 op 群が一気に被覆に入る設計。
    • n-ary tier の拡張(現17→): 画像演算の残り(min/max_image は済、gen_*除く算術)、 region 集合の union1/複数入力、channel 合成(多チャネル対応が要件)。
  4. 各 families を sweep で seed/世代積み各タスクの勝ちを確定。C runtime を median/bilateral/morph/fft へ拡張。
  5. honest 規律: 新規 op は必ず (a) halcon 名を実 reference で実在検証(fail-closed)、 (b) 機能ゲート通過(例外なく宣言 sort)、(c) shape が HALCON op の記述と materially 同一 — でなければ skip。被覆数は honest_summary.py の実測のみを正本とする(推測で語らない)。

自走のしかた(work-graph)

cd C:\dev\projects\imgevolve
py -3.11 halcon_scrape.py --version 2605                 # 実リファレンス取得(最新)
py -3.11 halcon_scrape.py --op-sets --versions 12,13,2311,2411,2505,2605   # 版横断スナップショット
py -3.11 halcon_coverage.py                              # 被覆計測 → docs/HALCON_COVERAGE.md
py -3.11 sweep.py --round N                              # 進化を投入(seed 変えて別軌道)

honest 限界