Skip to content

Add full positional test feature - #21

Open
colincoleman wants to merge 4 commits into
xyzzy42:masterfrom
colincoleman:feat-positional-test
Open

Add full positional test feature#21
colincoleman wants to merge 4 commits into
xyzzy42:masterfrom
colincoleman:feat-positional-test

Conversation

@colincoleman

@colincoleman colincoleman commented Jun 22, 2026

Copy link
Copy Markdown

Guided six-position timing test that measures rate, beat error, and amplitude across all standard horological positions (DU, DD, CU, CD, CL, CR) with real-time paperstrip visualization.

  • New positional_test.c/.h module with state machine (IDLE, ACTIVE, TRANSITION, COMPLETE) driving the test lifecycle
  • Cairo swim-lane display with tic/toc traces using separate offset chains to isolate rate drift from beat error wobble
  • Per-position results computed by averaging live snapshot readings from a configurable window (last N seconds)
  • Configuration dialog with watch name, position duration, and averaging window settings
  • Text report panel rendered on-screen during and after test, populating as positions complete
  • Save Report button exports plain-text fixed-width report to file
  • Full Test / Cancel Test button with controls lock during test
  • Signal loss detection with 60-second skip/cancel dialog

Covers #17

Guided six-position timing test that measures rate, beat error, and
amplitude across all standard horological positions (DU, DD, CU, CD,
CL, CR) with real-time paperstrip visualization.

- New positional_test.c/.h module with state machine (IDLE, ACTIVE,
  TRANSITION, COMPLETE) driving the test lifecycle
- Cairo swim-lane display with tic/toc traces using separate offset
  chains to isolate rate drift from beat error wobble
- Per-position results computed by averaging live snapshot readings
  from a configurable window (last N seconds)
- Configuration dialog with watch name, position duration, and
  averaging window settings
- Text report panel rendered on-screen during and after test,
  populating as positions complete
- Save Report button exports plain-text fixed-width report to file
- Full Test / Cancel Test button with controls lock during test
- Signal loss detection with 60-second skip/cancel dialog
@colincoleman
colincoleman force-pushed the feat-positional-test branch from 951e678 to 1d4bc75 Compare June 22, 2026 19:20
@colincoleman

colincoleman commented Jun 22, 2026

Copy link
Copy Markdown
Author

Force pushed to remove sloppy tests and useless binaries that were with them

colincoleman and others added 2 commits July 26, 2026 03:29
The swim-lane strips accumulated tic and toc onto two independent offset
chains and anchored the toc line on the first beat's instantaneous
tic-toc asymmetry.  That single noisy sample - not the averaged beat
error - set the gap between the white and gold traces, so the spacing
didn't track beat error and looked different (and non-comparable) from
one position to the next.

Use the same scheme as the main paperstrip instead: accumulate one phase
offset over all events at the half-beat spacing.  Rate drift then shows as
the slope of the trace and the tic/toc dots separate by exactly the beat
error, on the same fixed scale for every position.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Calibration is stored internally in units of 0.1 s/d, but the on-screen
report header and the saved text report printed the raw integer - so a
cal of -0.1 s/d showed as "-1".  Divide by 10 when displaying, matching
the main window's calibration field.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant