feat(cam-lower): window the feed sups (angular cert tightening 1.7-2.1x) #131

Merged
patman merged 4 commits from patman/feed-windowing into patman/viz-ribbon 2026-08-24 02:25:41 +00:00 AGit
Owner

SE(3) extension S-h, reviewer-identified tightening lever. FeedSups become per-window (closed-form exact sups over each clipped time window), so blend kappa-derivative peaks stop multiplying accel-phase feed maxima that never co-occur with them. Gentle orientation cert 6.55e-2 -> 3.76e-2 rad (1.74x), stiff omega 21.0 -> 9.86 rad/s (2.13x). Straddling steps charge to the MOST SEVERE piece with the charged window widened over every touched piece on both curvature and time axes — reviewer derived this is a SOUNDNESS requirement (the naive charge-to-start-piece rule is sound but 4.9x WORSE; the max-of-two-sups argument collapses with per-window feeds), recorded at the charging site. Tightening-ladder tests pin pre-lever ceilings (re-measured at their cited commits) + current goldens at 1e-6 rel. Opus review PASS.

SE(3) extension S-h, reviewer-identified tightening lever. FeedSups become per-window (closed-form exact sups over each clipped time window), so blend kappa-derivative peaks stop multiplying accel-phase feed maxima that never co-occur with them. Gentle orientation cert 6.55e-2 -> 3.76e-2 rad (1.74x), stiff omega 21.0 -> 9.86 rad/s (2.13x). Straddling steps charge to the MOST SEVERE piece with the charged window widened over every touched piece on both curvature and time axes — reviewer derived this is a SOUNDNESS requirement (the naive charge-to-start-piece rule is sound but 4.9x WORSE; the max-of-two-sups argument collapses with per-window feeds), recorded at the charging site. Tightening-ladder tests pin pre-lever ceilings (re-measured at their cited commits) + current goldens at 1e-6 rel. Opus review PASS.
feat(cam-lower): window the feed sups, not just the curvature sups
Some checks failed
CI / build-test (pull_request) Failing after 4s
134cac5352
Certificate tightening lever 1, from the review finding on S-d/S-e.
S6 windowed the curvature sups per piece but left the s-domain feed sups
(v, v_dot, v_ddot, v_dddot) pass-wide, so every blend's enormous
kappa-derivative peaks were multiplied by acceleration- and jerk-phase
feed sups that never physically co-occur with them: a corner blend is
traversed at steady feed mid-pass, while the pass's peak v_dot belongs to
the ramp at either end and its peak v_ddot to a jerk phase shorter than
the blend.

- s_domain_sup_third / _fourth become s_domain_sup_third_over / _fourth_over,
  taking a time window and clipping each profile segment's closed-form
  extrema to it. Called with (0, D) they reproduce the pass-wide value
  candidate for candidate, in the same order, so the translational
  certificate is unchanged bit for bit (the existing golden pin holds).
- lower_core takes a feed-sup closure instead of a precomputed SDomainSup,
  so the angular half can ask for any window.
- angular_windows charges each piece its own feed sups over the time
  window its steps span.

SOUNDNESS is the same argument as S6, now applied to both factors: for the
times charged to piece p, every term of Omega is bounded by the product of
that term's factors' sups over that same window, so Omega_sup,p bounds
|omega''''| there by the triangle inequality and the sum over pieces bounds
the total variation. A window's sup never exceeds the pass's, so this is
strictly tightening, never looser -- pinned by a test.

One subtlety worth the reviewer's attention. Straddling steps are charged
to the MOST SEVERE piece they span, not the one they start in, and the
charged piece's curvature sups are widened over the whole span so the
sliver past the boundary stays covered. Charging straddlers the other way
is a real regression, not a style choice: a long Line host beside a short
blend has zero curvature sups of its own, and handing it a straddling step
widens it to the blend's kappa''' -- which its whole long duration then
multiplies. Measured, that variant made the gentle bound 4.9x WORSE than
the pass-wide-feed baseline. Severity is ranked under the pass-wide feed so
the ranking does not depend on the per-window feed it helps compute.

ACHIEVED IMPROVEMENT, stated plainly because the numbers go to Patrick:

  gentle (200x150 mm, 1 mm corridor, 50 mm/s, dt 0.5 ms)
    orientation  6.546571e-2 -> 3.758043e-2 rad   (1.74x)
    omega        5.126469e-3 -> 2.942506e-3 rad/s (1.74x)
  stiff (60x40 mm, 0.2 mm corridor, 0.35 m/s, dt 1 ms)
    orientation  1.864105e1  -> 8.751411e0  rad   (2.13x)
    omega        2.100633e1  -> 9.859359e0  rad/s (2.13x)

That is BELOW the 2x bar on the gentle fixture -- a real but modest gain,
not a breakthrough. The stiff fixture's orientation bound is still far past
pi and still uninformative: this lever helps, it does not rescue. The
dominant term remains |kappa'''|v^4, so the remaining headroom is in the
curvature sups, not the feed ones.

Revisable: the severity ranking and the neighbourhood widening are both
heuristics chosen for tightness, not soundness requirements -- soundness
comes from the widening alone, and any charging rule paired with it is
sound. If a future pass shape ranks badly, the rule can change without
touching the argument.

Co-authored-by: patman-assist <patrick-ai@kgroo.co>
chore: normalize comments
Some checks failed
CI / build-test (pull_request) Failing after 6s
364a0d9aae
Co-authored-by: patman-assist <patrick-ai@kgroo.co>
style: rustfmt --edition 2024 drift fix
Some checks are pending
CI / build-test (pull_request) Waiting to run
d6925bd111
Reformats files that predate the runner's current rustfmt; no code changes.

Co-authored-by: patman-assist <patrick-ai@kgroo.co>
merge: sync main into feed-windowing (post track2 merge)
All checks were successful
CI / build-test (pull_request) Successful in 8m54s
89a19ca197
s_sup hoist and windowed angular_windows doc kept from this branch.

Co-authored-by: patman-assist <patrick-ai@kgroo.co>
patman merged commit 9623af0846 into patman/viz-ribbon 2026-08-24 02:25:41 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
patman/KGROO!131
No description provided.