S4.8 — Resolution exposed in the bindings
Intent
Only RealVector, SO2 and SO3 expose a resolution setter in either binding, so SE2/SE3/compound users cannot follow the 0.9.0 migration note ("set the fraction to 0.005"). Python exposes no interpolate or segment length at all. Expose resolution fully so users can tune spaces and so user motion validators (S4.7) can work at the space's resolution without re-implementing its maths.
Decisions (grilling Q15)
- All six spaces (RealVector, SO2, SO3, SE2, SE3, Compound) in both bindings expose: the fraction setter,
longest_valid_segment_length,valid_segment_count(s1, s2),interpolate(s1, s2, t). - JS
setLongestValidLineSegmentFractionis renamedsetLongestValidSegmentFraction(matches Rust, Python and OMPL). - Setters respect S4.5's freeze rule (raise if the space is already in use).
- SE2/SE3/compound fraction semantics: setting the fraction on a composite space sets it on every component (as OMPL's
CompoundStateSpace::setLongestValidSegmentFraction); confirm against the Rust API from S4.3 and add a Rust setter if missing.
Current gaps (as of c558556)
| Space | Py setter | Py length | Py interpolate | JS setter | JS length | JS interpolate |
|---|---|---|---|---|---|---|
| RealVector | yes | no | no | yes (old name) | yes | yes |
| SO2 | yes | no | no | yes (old name) | yes | yes |
| SO3 | yes | no | no | yes (old name) | yes | yes |
| SE2 | no | no | no | no | yes | yes |
| SE3 | no | no | no | no | yes | yes |
| Compound | no | no | no | no | yes | yes |
Acceptance criteria
Notes
Cut candidates if the sprint runs short: interpolate and valid_segment_count (keep the setter — the migration note depends on it). Both can be added later without breaking anyone.
Source
Agreed in the senior-engineer grilling 2026-10-08 (decisions: repo docs/planning/adr/0003-motion-validation.md; glossary: CONTEXT.md). Regeneration spec: oxmpl - sprint-005. Line references are as of origin/main c558556 (2026-10-08), before E3. E3 renames things (rand Rng→RngExt, PyO3 with_gil→attach, edition 2024), so re-grep before trusting a line number.