## 2026-02-04 Init - Baseline note: ZED SDK stub file `py_workspace/libs/pyzed_pkg/pyzed/sl.pyi` has many LSP/type-stub errors pre-existing in repo. - Do not treat as regressions for this plan. - ZED Fusion pose semantics confirmed by librarian: - `/usr/local/zed/include/sl/Fusion.hpp` indicates `FusionConfiguration.pose` is "WORLD Pose of camera" in InitFusionParameters coordinate system/units. - `/usr/local/zed/doc/API/html/classsl_1_1Matrix4f.html` indicates Matrix4f is row-major with translation in last column. - Local LSP diagnostics not available: `basedpyright-langserver` is configured but not installed. Use `py_compile` + runtime smoke checks instead. - Git commands currently fail due to missing git-lfs (smudge filter). Avoid git-based verification unless git-lfs is installed. - `ak.from_parquet` requires `pyarrow` and `pandas` to be installed in the environment, which were missing initially. ## Task 6: IndexError in draw_detected_markers - **Bug**: `draw_detected_markers` assumed `ids` was always 2D (`ids[i][0]`) and `corners` was always a list of 3D arrays. - **Fix**: Flattened `ids` using `ids.flatten()` to support both (N,) and (N, 1) shapes. Reshaped `corners` and `int_corners` to ensure compatibility with `cv2.polylines` and text placement regardless of whether input is a list or a 3D/4D numpy array. The calibration loop was hanging because SVOReader loops back to frame 0 upon reaching the end, and 'any(frames)' remained true. Fixed by calculating 'max_frames' based on remaining frames at start and bounding the loop. - Fixed pose parsing in self-check: used np.fromstring instead of np.array on the space-separated string. - Guarded max_frames calculation with a safety limit of 10,000 frames and handled cases where total_frames is -1 or 0. - Improved --validate-markers mode to exit cleanly with a message when no SVOs are provided. - Fixed pose string parsing in self-check distance block to use np.fromstring with sep=' '. - Added max_frames guard for unknown total_frames (<= 0) to prevent infinite loops when SVO length cannot be determined.