Skip to content

feat: integrate strip authoring and pixel diagnostics across clients - #701

Draft
DRSDavidSoft wants to merge 19 commits into
fix/rf-serial-starvationfrom
feat/strip-diagnostics
Draft

DRSDavidSoft wants to merge 19 commits into
fix/rf-serial-starvationfrom
feat/strip-diagnostics

Conversation

@DRSDavidSoft

@DRSDavidSoft DRSDavidSoft commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

Prepared playback competed with background serial transactions and, under Windows CPU contention, ready serial/timeline workers could wait longer than the cue budget. Reserve and drain the wire before playback, report intentional deferral explicitly, avoid catalog expansion and retained-log allocation on live paths, and attach temporary Windows High process priority only to prepared local-serial ownership. The 50 ms cue and 250 ms freshness/arming guards remain unchanged.

Priority acquisition precedes drain/grant. Cancellation, drain timeout, reservation release and connection close unwind it; existing pause/fault/expiry/replacement/shutdown paths release the reservation. Overlapping owners are reference-counted; existing High/Realtime and externally changed classes are preserved, and Realtime is never requested. Restoration runs outside the safety-admission lock. Failures are logged separately and retain the original baseline for retry. Synthetic tests do not change OS priority. The host returns to its original priority outside ownership; this is best-effort Windows scheduling, not a real-time guarantee.

Also includes Flutter strip authoring/pixel diagnostics, Police/White Thunder/Converging presets, Fade/Pulse envelopes, offline preview, draft validation, peer-bound one-use probes and configure-before-show frames. Native counterpart: ToghrolTP/pealayer#217/#218; firmware framing work: #700.

Validation and current delivery:

  • Final source95d618d3a13e6e78606a14c1c6f7f4360b2a10d3, branch feat/strip-diagnostics. All five host targets in Build40433799699 and health40433799615 passed. Full local go vet ./... passed. Full link/priority tests and focused reservation, expiry, restore, pause, emergency-stop and safety-admission regressions passed.
  • Earlier Build40432698218 passed full Go tests but failed vet on a test diagnostic copying a mutex. 95d618d prints scalar fields instead; production logic is unchanged from30f9592.
  • ci.1661 (95d618d) remains installed with independently verified live identity, paired with native Pealayer2655234 and trace-free firmware5B86029E. The native update used the exact hosted artifact with verified archive SHA/CRC and retained the destination-validated media DLLs. Installed smoke-test exit0, real-media load, responsive interactive window, health/RPC and controller connectivity passed.
  • Chair-only synchronized SOFTWARE acceptance now passes on95d618d/2655234: short109.8–120.56s acknowledged both scheduled cues, maximum lateness7.849ms, round trip6.8453ms and restore2.9991ms. Exact-zero seek followed by continuous playback through120.96s acknowledged all four scheduled cues, maximum lateness9.0046ms, round trip7.9979ms and dispatch1.4299ms. No native/host/freshness fault; original50ms cue and250ms freshness limits unchanged. Both runs observed Normal→High→Normal. Final cleanup paused playback, stopped both seats, switched relays off and preserved framing0/CRC0/reset607. Separate human physical acceptance is now confirmed: the operator reported that the film continued and the chair moved during the two-minute test. Confirmation is recorded in Finish media, hardware and Web acceptance ToghrolTP/pealayer#80 (comment). Earlier c48 automatic-lease replay failed native clock discontinuity; the native correction records observation timing accurately and gates unpause on fresh observations.
  • Earlier bounded manual-High short replay completed all205 scheduled steps, max ACK lateness30.01 ms, max round trip11.11 ms. Kernel tracing showed a49.81 ms ready-thread scheduling delay under CPU contention at Normal. The trace stopped automatically, with no lost events. This distinguishes measured scheduling delay from serial corruption; the10 ms read interval did not establish a driver fix.
  • Separate standalone180-second three-pixel stream and150 Up requests over15 seconds had no new framing/CRC/reset errors. Identical Up requests coalesce; this is not150 relay cycles. Original three effects plus Fade/Pulse were demonstrated with Persian Piper announcements; physical/audio acceptance remains human-owned.

Latest user direction prioritizes chair-only playback. Lighting/non-chair lanes are reversibly unlinked, with authored cues retained. The native observation-time correction, short/continuous chair replay and exact-zero seek now pass the software gates; exact-zero tracking remains in ToghrolTP/pealayer#219. The operator separately confirmed uninterrupted film and actual chair movement, completing chair-only software and physical acceptance for this two-minute test; this does not establish hard-real-time behavior or full-film endurance. Native strip modal visual checks, Android device installation and further LED demos are deferred/open. Private settings, traces, logs, captures and generated audio stay local. Updater identity/failover defect:#562. Detailed timing evidence: docs/STRIP-TIMING-TRACE-CHECKPOINT.md.

@DRSDavidSoft

Copy link
Copy Markdown
Collaborator Author

Validation checkpoint for source 83991c5: full stable-path Go suites internal/control, internal/link and internal/ipcjson passed. The Windows runner used an external local-toolchain modfile; repository module files are unchanged. GitHub branch ref verified, working tree clean. Build 40409793139 is still running; this fix has not yet been deployed.

Separate live evidence on the current ci.1647 host and trace-free 5B86029E board: a 180-second, three-pixel Pealayer-driven Converging stream completed 36 checks without framing, CRC or reset changes. Fade and Pulse each ran for ten seconds with the same result. Each owned stream stopped, final strip status was inactive, both seats reported Stop and relays off. Persian Piper announcements played before these demonstrations. Physical color/motion/audio acceptance remains pending. No synchronized media-playback success is inferred from standalone effects.

Next: verify exact new Windows host artifact, coordinate its primary-owned deployment, confirm live compiled identity, then replay synchronized media with unchanged 50 ms/250 ms limits. Keep the pre-Play in-flight readback conflict and updater live-primary proof as explicit remaining gates. Private runtime logs/settings/audio are retained locally and not published.

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