Sync 1080p60: next research plan
21 September 2026 · Independent source and evidence review · No new delivery measurements
This plan supersedes the earlier 21 September plan. It corrects unsupported completion claims and makes audio ownership, trustworthy measurement and the combined acceptance contract the next work. All previous reports remain immutable. The earlier recommendation to port an Electron bypass to Windows is deferred.
1. Objective and constraints
Qualify at least 99% distinct ordered source identities in final rendered pixels while sustaining 1920×1080 at 60 source slots per second and all 32 audio channels concurrently. Preserve Noisedeck A → Sync → Sync Camera → Noisedeck B media effect → final pixels, in web and desktop and each required platform/backend. Neither a native receiver nor an Electron-only route certifies this path. Preserve latency, audio continuity, dimensions, rate, channel count and long-session stability. A 50-FPS diagnostic threshold is not acceptance.
Keep current public interfaces and protocol unchanged. Use current upstream source and record exact revisions, installed artifacts, browser and OS versions, power state and observer version. Do not infer the deployed baseline from a preview label. The reviewed Sync checkout was synchronized to bc1b34e06543df69a6e231339aedc7b8f74e8d62; that source's CI and camera workflows passed. Running applications were preserved, so no present installation is represented as this source. The catalog already contained release 0.2.78, but catalog availability does not identify the installed version; the predecessor's 0.2.73 deployed-baseline label remains unverified.
2. Evidence that determines the next action
Every listed file in all nine cited bundles matched its published SHA-256 manifest. This verifies archived bytes, not the experiments' provenance. None of these bundles includes a raw per-frame identity ledger or its hash. Read the audit receipt alongside the following corrections.
| Evidence | Supported observation | Acceptance limit and decision |
|---|---|---|
| E1 native versus Chromium | 23,664 native distinct pictures / 599.982 s = 39.441 FPS; 12,335 producer skips; 591 seconds below 50. Chromium accountingValid is false. | Withdraw the 60-FPS/lossless capacity claim and exclusive Chromium root cause. Zero unexplained native losses applies only to the offered rate. E1 measurements.json |
| E2 sender stages | 11.7–12.4 ms is the first-successful-poll readiness upper bound; 0.8 ms is send-call elapsed time. | Not GPU execution or transmission completion. The supplied Sync SHA does not resolve; extensionSha256 has only 32 hex characters. Require exact source receipt and raw trace before causal retention. E2 measurements.json E2 source-identity.json |
| E3 combined synthetic load | 107,999 sends, 107,998 accepted, over 1,800 s; audio counters report zero ring drops/gaps. Final RSS 15,824 KiB, footprint 12,416 KiB. | The collector calls submissions deliveredFps, checks no sample values or final pixels, omits empty time buckets and has no acceptance verdict. The source receipt predates the claimed optimizations; reject combined qualification, retain transport telemetry. E3 measurements.json E3 source-identity.json |
| E4 Windows architecture | Unit/contract results describe framework support. | Structural coverage is not physical combined parity. The linked source-identity.json is missing (HTTP 404). Restore provenance before broader claims. E4 parity-matrix.json |
| E5 audio recovery | Fault scenarios are synthetic gates and injected exceptions. | Useful lifecycle coverage, not actual unplug/TCC/hardware qualification. Its source SHA predates the teardown correction. Current code also destroys healthy capture for wrong-source requests; test and separate validation from driver failure. E5 measurements.json E5 source-identity.json |
| E6 Windows sustained receiver | 35,998 new frames, 199,140 repeats over 600 s; WASAPI cable evidence is two channels for two seconds. | Retain native evidence with its observer and boundary counts; no all-32 combined browser/pixel or long-session claim. Full source/binary provenance is absent. E6 measurements.json |
| E7 web pacing | 35,612 distinct / 36,000 target slots = 98.9222%; four seconds below 55. | Below 99%. Baseline copies E1's invalid metrics while describing a changed configuration. No reverse-order pair or raw identity reconciliation; reject the completed label. E7 measurements.json |
| E8 Electron shared-file bypass | Reported candidate 3,600 distinct pictures / 60.003 s; arrival observer; candidate-only reverseArm. | No reverse baseline, concurrent audio, final-pixel ledger or long soak. Bypasses the required camera/shared web path. In Sync, normal CMIO publication adds another full-frame copy without reader demand. Reopen ownership, privacy and architecture review before any Windows port. E8 measurements.json |
| E9 discrete audio | Synthetic aggregate channel and timing summaries, no full-channel raw stream. | Source pins 288f06cf, before e955b0ac adds pulses/tones/eager delivery. Native packets are interleaved, not the report's stated planar wire layout. Current test reads one DC and one pulse packet, not the full 3.2-second channel cycle or tone source. Physical qualification remains open. E9 measurements.json E9 source-identity.json |
3. Measurement contract
Acceptance-definition gap: no authoritative numeric jitter epsilon was found in Sync documentation, the retained 11 September plan or Scaffold's Sync soak runbook/collector. The 11 September plan explicitly sets no launch tolerance for missed frames or latency. Preserve the user's ≥99% requirement; do not treat an observed percentile as its tolerance.
- Denominator: every 60-Hz source slot with a monotonic deadline in a preregistered half-open steady-state window [t0,t1). For an aligned 1,800 s window this is 108,000. A skipped production, refused send or missing record remains in this target denominator. Also report the secondary offered-source fraction, never substitute it.
- Numerator: unique ordered source IDs from that source cohort actually decoded in Noisedeck B final pixels by each slot deadline plus a preregistered maximum delivery latency Lmax. Lmax must come from the adopted latency contract; until that bound is resolved, report a diagnostic ratio without an acceptance verdict. Observe through t1+Lmax so normal in-flight boundary frames are not censored. Report pending cohort IDs at t0/t1, eventual late arrivals and deadline misses separately. Join source session/epoch and monotonic sequence through wrap; repeats, reordered, stale and undecodable IDs add no credit. Keep source, native, browser-arrival and final-pixel ledgers separate. Observer drain may recover recorded observations but must not extend per-ID deadlines.
- Window and observer: preregister 10 s startup stabilization and preserve its failures separately; no adaptive warm-up or failed-interval deletion. Keep observer and content fixed across pairs. Retain every complete one-second bucket including zeros, partial endpoints, minimum count, seconds below 60/59.4/55/50 and longest consecutive failing interval. Validate full texture and deliberate one-pixel/identity failure controls, pending/abandoned captures and observer overhead.
- Jitter: retain final-observer monotonic arrival intervals in milliseconds, ordered IDs and consecutive-sequence subset. Report mean, sample SD, nearest-rank p50/p95/p99, maximum and absolute deviation from 1000/60 ms, alongside missing-ID gaps and worst intervals. VideoFrame timestamps and native enqueue clocks are separate series. Proposed, not approved or satisfied: p99 absolute final-arrival deviation ≤2 ms; this is about 12% of a frame period, a proposed sub-frame arrival-regularity screen that must exceed verified observer uncertainty. Also propose ≥99% in every aligned ten-second window and no zero-delivery second, to prevent an overall mean hiding stalls. Resolve the authoritative epsilon/statistic and these interval rules before a closure verdict.
- Latency: marker insertion to final decode is marker age, not physical display latency. Retain p50/p95/p99/max, source stage clocks and start/end clock anchors with uncertainty/drift. Never claim improvements finer than clock-join error. Keep matched baseline tails as regression bounds; a source-authoritative absolute video latency ceiling is still needed. Preserve the predecessor's audio <20 ms requirement while resolving its endpoints/statistic; read-request RTT alone cannot satisfy it.
- Audio: concurrent 32-channel 48 kHz float32 capture; retain actual device/backend/format. Check every sample cursor and all-channel values, identity/order/polarity, channel-isolated pulses across a full cycle and orthogonal tones with explicit RMS/peak/leakage error bounds. Record dropped samples per channel and frame, ring overflows, underruns, sample-rate drift, reconnect gaps and end-to-end latency under the same video window. Require zero audio loss, sample/cursor errors and underruns. Tag synthetic, virtual cable and physical-source evidence separately; fewer than 32 physical inputs cannot qualify 32.
4. Research order
Each action below has a bounded discriminator, required evidence and a retain/reject rule. Correctness precedes performance screening; no speculative architecture port is the next step.
- Audio ownership correction — source work completed in this review. The cursor-encoded concurrent 32-channel regression failed before the fix and passed after copying under the existing mutex. Keep allocation outside the lock and preserve bounded nonblocking producer behavior. Retain the correctness fix; any throughput/continuity claim still requires matched baseline/candidate and reverse-order combined-load measurements. Two fake-device CMIO tests now disable shared-file publication so they cannot truncate a running application's file.
- Secure and bound optional shared-frame publication — open P1. Audit default
/tmp/SyncCamera.framescreation (mode 0666), existing-object validation, retained pixels, cleanup and unconditional extra copy. Use isolated filesystem-operation tests; require owner-private regular-file creation, no following symbolic links, explicit lifetime/consumer ownership and no copy with no valid consumer. Reject the current privacy/ownership behavior as qualification evidence. Resolve the shared web/desktop architecture constraint before retaining a bypass or porting it to Windows. No live global pathname experiment. - Restore trustworthy evidence and verdicts — open P1. Reconcile each report with full source/dirty-diff and binary hashes, raw producer/receiver/final-pixel ledgers and clock anchors. Fix the combined collector's mislabeled submission rate, missing zero buckets, lack of sample checks/verdict, absolute local paths and cleanup. Inject a duplicate, missing frame, silent channel, cursor gap, zero second and missing ledger; every relevant acceptance case must fail. Keep transport diagnostics separate. Reject any completion label whose receipt remains inconsistent.
- Resolve acceptance definition — prerequisite. Locate a source-authoritative jitter/latency contract or record the proposed 2 ms p99 criterion as requiring explicit adoption. Freeze numerator, denominator, clock, percentile, endpoints, tails and soak duration in the collector contract. Required evidence is a versioned contract with decision origin and unit controls; no numeric proposal silently becomes a pass.
- Repair bounded lifecycle regressions — open P2. In Windows camera tests publish one frame, wait beyond the idle grace and repeatedly request samples; remain on idle until a newer sequence. Test RGB32→NV12→RGB32 without a new frame; cache output must match negotiated subtype. For native audio open audio_2, issue a wrong-source read/second open, then verify valid audio_2 still streams while genuine driver failure releases capture. Retain only after device-free regressions and exact-platform CI; no performance claim.
- Qualify the intended combined path. After items 1–5, run matched baseline/candidate 20–30 s screens and one full reverse-order pair in each web/desktop backend. Use source-bound Noisedeck/Noisemaker integration and a true 60-Hz producer; the integer-Date.now soak limiter is an at-most rate, not proof of 60-Hz load. Sweep all32 audio channels under video load. Before endurance, run three-minute final-pixel checks with the deterministic pattern and representative shader content in both builds/backends; marker-only timing is insufficient. Retain a change only with repeatable delivery/tail benefit and no audio/latency/resource regression; an inconclusive result ends that experiment until a new discriminator exists.
- Restore platform and packaging coverage. Obtain physical 32-input coverage on each required platform; Windows two-channel cable and Linux synthetic JACK results stay limited. Noisedeck final observer/AudioWorklet and Noisemaker channel modulation are external repository dependencies, not changes authorized in this run. Correct CI classification for shipped browser/README.md and add/run applicable documentation checks without bypassing product tests. Evidence required: each exact-source job, device inventory and per-platform final-pixel/audio ledger. Reject cross-platform inference.
5. Short decision cycles
For each candidate, first reproduce correctness failures, then run focused and required-area checks. A timing screen uses identical hardware, content, dimensions, channels, observer, source revisions and environment across baseline→candidate and candidate→baseline. Record source saturation, GPU fence observations, queue ownership/backpressure, actual receiver identities and clock error; change one variable. Stop on changed observer, missing ledger, audio corruption, stale pixels, any worsening tail or memory slope, or inconsistent direction. Performance measurements run serially with no builds or competing probes. Leave occupied hardware and existing soaks untouched.
6. Long-session degradation and completion
The predecessor's 30-minute-only completion rule dropped prior endurance work. Restore the 11 September progression: a 30-minute combined screen, then three hours in both builds; retain the existing eight-hour daemon/camera soak as a separate long-session reliability gate. Protocol/native soaks do not certify final pixels. Escalate only after valid accounting and stable delivery, latency, audio and resources. Retain every intervening failure, five-minute summaries, first/last matched-hour distributions, RSS/physical footprint and resource counts. Preserve the ≤10 KiB/min post-allocation memory-slope screen but also report peaks and uncertainty; it is not proof of bounded framework resources.
Closure is not established today. It requires the adopted jitter/latency contract, ≥99% unique final-pixel delivery against the complete 60-Hz target denominator, all32 audio integrity, supported web/desktop/platform coverage, source-bound reproducibility and sustained stable tails. Require both deterministic-pattern and representative-shader final-pixel results. No release label, green structural CI, synthetic audio, native-only receiver or 50-FPS checkpoint substitutes for those results.
7. Retention and reporting
Review coverage: all 28 commits from 9bf97c946a91e238f92d934eec45807b32c3bbc8 through bc1b34e06543df69a6e231339aedc7b8f74e8d62, the union of the previous seven days and latest 20, plus the separately reviewed five-file correction 983b9b3972f4063a765059df9ce1ef83773883d4. No commit in that selected range remains unreviewed. Earlier history is outside this first-run window.
Source publication: normal push of 983b9b3972f4063a765059df9ce1ef83773883d4 to main succeeded. Exact-source CI: running: https://github.com/noisefactorllc/sync/actions/runs/35592890346. Camera workflow: passed: https://github.com/noisefactorllc/sync/actions/runs/35592890464. Automatic release: not yet requested; successful source CI can trigger automatic Scaffold release. Publication status is frozen at this report's creation; later workflow results must be checked against the exact SHA.
Local validation: focused audio regression 5/6 before (sample identity failure), 6/6 after with ThreadSanitizer instrumentation; 22/22 native CTest, 251/251 JavaScript unit, 36 loopback passes/1 skip, four daemon-soak passes, 16 packaging passes/7 skips. Existing research links and local documentation links checked. Apple Clang 16's default library could not compile the existing jthread fixture; the successful full local build used -D_LIBCPP_ENABLE_EXPERIMENTAL. This environment caveat remains recorded. No live camera/audio/performance acceptance was run. See source, tests and publication receipt.
Generated HTML, audit data and research remain outside Git. Previous bundles are immutable. Publish with the reviewed archive publisher, verify every served byte against SHA256SUMS, catalog identity, links and desktop/mobile rendering. Keep the capture-ring fix as a correctness repair; do not call the running installation updated or the combined target closed.
Evidence references
- E1. research-2026-09-18-1080p60-native-avfoundation; linked data and source receipts above.
- E2. research-2026-09-18-sender-stage-separation; linked data and source receipts above.
- E3. research-2026-09-18-combined-audio-video; linked data and source receipts above.
- E4. research-2026-09-18-windows-platform-parity; linked data and source receipts above.
- E5. research-2026-09-19-audio-session-recovery; linked data and source receipts above.
- E6. research-2026-09-19-windows-sustained-delivery; linked data and source receipts above.
- E7. research-2026-09-20-web-native-frame-pacing; linked data and source receipts above.
- E8. research-2026-09-21-electron-desktop-native-bypass; linked data and source receipts above.
- E9. research-2026-09-21-discrete-multichannel-audio; linked data and source receipts above.
- 11 September measurement and endurance plan.