Skip to content

Job harness: valves that lag because the module missed frames are the runner's, not the app's - #835

Merged
chriskinal merged 1 commit into
developfrom
fix/job-harness-lost-frames
Nov 14, 2026
Merged

chriskinal merged 1 commit into
developfrom
fix/job-harness-lost-frames

Conversation

@chriskinal

Copy link
Copy Markdown
Collaborator

The 2026-11-14 nightly reported VALVES-NOT-FOLLOWING in J19 (1.1 s against the 1 s limit). That night the rig runner's emulated machine module received 0.6–4.5 % fewer PGN 239/229 frames than the night before in 12 jobs, J19 among them (606,522 of 635,300). The other job harnesses on the same build received every frame. The module hears the app over real UDP on its own thread, while the run goes faster than the clock.

Change

  • After each 0.1 s fix, the frames sent during it get up to 5 ms of wall time to reach the module (JobRun.WaitForFrames).
  • ValveFollowTally counts the PGN 239 frames the module never got while online.
  • A screen/valve mismatch over the 1 s grace in which frames were lost is counted apart and reported as a harness note with the count; it no longer counts against AgOpenWeb.
  • A module that is off or whose Wi-Fi is down loses frames on purpose, so those mismatches still count against the app (C7).
  • README row updated.

Tests

  • ValveFollowTallyTests (5, run without a rig, in milliseconds).
  • Runner, J19 + C7, C8, C9, C16, whole jobs, this branch against develop: 0 new / 0 gone in both reports.
    • Base: the module missed frames even on the Runner (J19 631,803 of 635,300; C7–C16 up to 37 each).
    • Fix: every frame arrived (J19 635,300), so no harness note was needed.
    • C7 and C8 still report VALVES-NOT-FOLLOWING as expected.
    • Run time 19 m 29 s → 19 m 46 s.

🤖 Generated with Claude Code

… runner's, not the app's

The 2026-11-14 nightly reported VALVES-NOT-FOLLOWING in J19 (1.1 s against a 1 s limit) on a rig
runner whose emulated module received 0.6-4.5 % fewer PGN 239/229 frames than the night before in
12 jobs, while the other job harnesses on the same build received every frame. The module hears
the app over real UDP on its own thread while the run goes faster than the clock.

Each fix now gives its frames up to 5 ms to arrive, and ValveFollowTally counts the frames the
module never got while online; a mismatch stretch in which frames were lost is counted apart and
reported as a harness note with the count. A module that is off or offline loses frames on purpose
and still counts against the app.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chriskinal
chriskinal requested a review from a team as a code owner November 14, 2026 12:23
@chriskinal
chriskinal requested review from Xyntexx and removed request for a team November 14, 2026 12:23
@chriskinal
chriskinal merged commit 70e22f6 into develop Nov 14, 2026
7 checks passed
@chriskinal
chriskinal deleted the fix/job-harness-lost-frames branch November 14, 2026 12:28
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