Repository navigation
feat: integrate strip authoring and pixel diagnostics across clients - #701
Conversation
|
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. |
…into feat/strip-diagnostics
…to feat/strip-diagnostics
|
Source review confirms the paired native prepared-playback contract: controller.media.playback.update accepts prepare_play only with loaded, paused media and an acknowledged plan; nonempty playback requires the same epoch and play_ready reservation. No missing-readiness success, legacy adapter, changed opcode allocation, relaxed50ms execution or250ms freshness guard was added. Native A5/1 and Pakar A5/0 admission from #704 is retained. Nine local Go suites, RF fixture and137 tooling/firmware tests pass; go vet ./... passed in Tools/Controller. docs/verification/pr-integration.md records retained exact heads and remaining physical/Android/native/endurance gates. Refreshed main now includes merged #692. No production mutation has been performed; final-head Actions remain required. |
|
Fresh source88dd86ec736257ff06eb2d91b52d142f81bdeac3 also passes hardware-free AVR builds: default image has84 bytes application headroom and271 bytes estimated stack margin; optional eeprom-menu-labels image has40 bytes application headroom and270 bytes estimated stack margin. Both pass the linked strip waveform checks; optional default EEPROM proof passes. Native Windows VirtualBoard build and all25 CTest cases pass, including transport integration. These artifacts were not uploaded or activated. Current-head multi-platform Actions remain required. |
|
Flutter source verification on88dd86ec also completed: locked offline restore succeeded, analysis found no issues, and244 tests passed with6 explicitly skipped fixtures. This is not Android installation, native visual acceptance or physical strip/RF proof. No SDK upgrade, APK installation or runtime/board action was performed. |
|
Integrated normally to main b8cd35e from exact head88dd86ec736257ff06eb2d91b52d142f81bdeac3 after all24 checks passed, including each host/VirtualBoard job, AVR, Android and every CodeQL analysis plus full aggregate. Exact heads of #693/#694/#697/#700 are ancestors of this merge and their functional source/tests are retained. Local source proof additionally includes both default/menu-label AVR budgets and waveform tests,25 Windows native CTest cases, nine targeted Go suites, and Flutter analysis/244 passes with6 opt-in skips. No production deployment, board action or physical acceptance was performed by this integration. Remaining gates are recorded in docs/verification/pr-integration.md and owning issues. |
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:
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.
Source integration pass (2026-10-30)
This PR now owns integration of the strip/RF/programming stack. Its history retains exact heads #693 d9d0f8c, #697 a48acbd, #700 cdbeac9 and #694 0b52df0, plus current main's mandatory native A5/1 and Pakar A5/0 namespace admission from #704. Earlier PRs will only be closed as superseded after this integration passes applicable exact-head checks and merges normally. No opcode allocations, admission guards, 50 ms execution or 250 ms freshness limits are relaxed.
This pass validates source integration without hardware. Existing physical, Android installation, native visual and endurance gaps remain in owning issues/checkpoint documents. No actuation, flashing, installed-app replacement, settings change or Cafe deployment is requested or performed. Historical deployed receipts above are not current production verification. Fresh local and Actions results will be recorded below.