@@ -332,6 +332,21 @@ mechanically, not by discipline.
332332 Float64MultiArray regression test; default suite now 8); checkout@v5 in
333333 both workflows (Node-20 deprecation gone).
334334
335+ - ** ompl_kit spike (2026-07-11, GO; ef4a222/329590a/ddaeeee, merged f20c60f):**
336+ third kit, thinnest yet (72 LOC, zero embedded C++ — cppyy absorbs
337+ inheritance/ownership/downcast). ** Cross-inheritance headline confirmed**
338+ (the pattern BT's ` final ` blocked): Python subclass of StateValidityChecker
339+ called 170× by C++ RRTConnect; Python ` motionCost ` called 1,034,069× in a
340+ 1 s RRTstar solve. Mechanics: super().__ init__ chaining, exact C++ virtual
341+ names, RTTI auto-downcast of pointer args, keep_alive the instance.
342+ Honest hot-loop number: Python validity ~ 159× slower per call (282 ns vs
343+ 1.8 ns) — invisible at 136 calls, ~ 0.35 s at 1M; the lowering story (6-line
344+ cppdef checker) is the in-script answer. Bringup ~ 538 ms (cheapest kit).
345+ callback() dogfood found a real gap: class-typed hints infer ` T& ` but OMPL
346+ needs ` const T* ` — succeeds silently, fails at the setter (follow-up
347+ queued). Demos incl. nav_msgs/Path publishing via rclcppyy. Docs mirror
348+ the structure (` docs/ompl_kit/ ` ).
349+
335350## Risks & mitigations
336351
337352- ** conda-forge cppyy behaves differently from the pip wheel** (cling resource
0 commit comments