Pattern2026-08-257 min

I taught the app when to record a swing. I refused to let it call that motion Takeaway.

Body motion can start and stop a golf recording, but it cannot prove where the club is. The evidence boundary behind Swing Trainer's hands-free capture system.

I taught the app when to record a swing. I refused to let it call that motion Takeaway.

I wanted Swing Trainer to do something basic at the range: see me settle over the ball, start recording when I swing, and stop after I finish.

The first shortcut was obvious. If the body starts moving, call that Takeaway.

We rejected it.

That sounds like a naming argument until you look at what Takeaway means in the workflow. It is not “the golfer moved.” It is the club reaching a defined position, toe-up or roughly shaft-parallel. A body-pose model can see wrists, shoulders, hips, knees, and ankles. It cannot use those joints to prove where the club is.

The app now uses motion without pretending motion is a club measurement.

Recording control and swing evidence are different jobs

The automatic recorder needs enough evidence to make three operational decisions:

  • Is the golfer stable enough at Address to arm capture?
  • Did meaningful motion begin?
  • Did the golfer reach a stable post-swing state, or did the recording hit its timeout?

Those decisions do not need to become coaching labels.

The new phase-candidate engine receives the same provider-neutral pose frames on iPhone and Mac. It can propose descriptive Address and Finish candidates. It returns early motion separately as capture-control evidence. It is structurally prohibited from turning body motion into canonical Takeaway.

That separation matters because a convenient label can outlive the shortcut that created it. Once a frame is stored as Takeaway, a later system may treat it as training truth, compare it with another swing, or build a coaching cue on top of it. A bad name at capture time becomes a confident claim downstream.

The live frame is not the saved frame

The second shortcut was harder to see.

On iPhone, live pose detection receives frames from one AVFoundation output while the saved movie is written by another. Stable Address can be observed before the movie writer confirms that recording has started. The live frame index is exact inside the live stream. It is not automatically the same frame number inside the saved movie.

So the recorder is allowed to use the live observation to request Start and Stop. It is not allowed to copy that live frame identity into the saved movie's phase markers or trim boundaries.

The saved clip has to be decoded on its own timeline before Review can attach exact markers to it.

This is the kind of distinction an interface can hide beautifully. A marker appears near the right moment, the clip plays, and everyone assumes the timestamp is real. We chose to leave the marker absent until the two timelines have actually been reconciled.

The tests found a convincing false finish

The synthetic fixtures exposed another failure. A golfer can pause at the top of the backswing. Stability alone made that pause look like Finish.

The engine now requires evidence of post-reversal motion before Finish becomes eligible. It also abstains when required joints are missing or duplicated, when timestamps arrive out of order, when two setup-to-motion episodes compete, or when the clip ends while the golfer is still moving.

The committed boundary passed 13 focused native fixtures on Mac, 13 on the iOS simulator, 136 shared contract tests, and the shared typecheck. The broader build also passed 261 iOS tests and 496 Mac tests before the final narrow security hardening.

Those numbers prove deterministic program behavior against designed fixtures. They do not prove golf accuracy.

What still has not happened

No real golfer has completed the outdoor automatic-capture protocol. We do not have Address or Finish error distributions by view, distance, or lighting. We have not measured false triggers, misses, abstentions, thermal behavior, or the 18-of-20 hands-free success gate. We have not produced one physically verified automatically bounded range clip.

The feature exists in committed source. The installed iPhone and Mac builds launched. The real-golfer result is still missing.

That is the operating rule I want to keep: automation may use weak evidence to control a reversible action. It may not quietly promote that evidence into a measurement the sensor never made.

Motion can tell the camera when to wake up. The club still has to tell us where Takeaway is.