{
  "schema": "sync-performance-findings-v1",
  "reportId": "research-2026-09-19-windows-sustained-delivery",
  "findings": [
    {
      "id": "A",
      "title": "Windows Default Timer Interrupt Resolution Bottleneck",
      "symptom": "Baseline delivery exhibited 4.3% dropped frames (57.42 FPS mean) and high second-to-second jitter (54–59 FPS) despite producer submitting at exactly 60 FPS.",
      "rootCause": "The default Windows scheduling interrupt period is 15.625 ms. At 60 FPS (16.667 ms interval), timer granularity variation causes thread wakeups to frequently miss the ~1.0 ms delivery window, resulting in dropped sample deadlines.",
      "remediation": "Invoked timeBeginPeriod(1) in the probe harness and timer threads to establish 1.0 ms interrupt resolution. Reverted with timeEndPeriod(1) upon clean termination.",
      "status": "VERIFIED_PERMANENT"
    },
    {
      "id": "B",
      "title": "Redundant NV12 Color Conversion Lockup on Repeat Samples",
      "symptom": "The host camera frame server (FSCS.exe) and consumer probe generated repeated sample requests during inter-frame intervals, consuming 100% of a CPU core.",
      "rootCause": "SyncCameraStream::WrapAsSample re-executed full fixed-point BT.709 RGBA-to-NV12 color conversion (1920x1080x1.5 bytes) on every single request, even when the underlying frame sequence ID had not changed.",
      "remediation": "Implemented converted_dirty_ caching flag in SyncCameraStream. If the current frame sequence ID matches the prior sample, WrapAsSample returns the cached NV12 buffer directly without re-converting. CPU utilization dropped from 100% to <1.5%.",
      "status": "VERIFIED_PERMANENT"
    },
    {
      "id": "C",
      "title": "600-Second Sustained 1080p60 Endurance Soak",
      "symptom": "Endurance qualification required proving long-duration frame stability without thermal throttling, memory leaks, or buffer queue drift over 10 minutes.",
      "rootCause": "Validation on largeboi-sync-camera bare-metal runner.",
      "remediation": "Dispatched 600-second sustained soak delivering 35,998 new frames out of 36,001 submitted (60.00 mean FPS). 596 out of 600 seconds recorded exactly 60 FPS. Zero steady-state drops or empties.",
      "status": "VERIFIED_PERMANENT"
    },
    {
      "id": "D",
      "title": "Headless Windows CI Hardware Endpoint Gap",
      "symptom": "Automated CI runners on Windows lack physical audio hardware, reporting 0 WASAPI capture sources and preventing automated continuous qualification.",
      "rootCause": "WASAPI Shared Mode requires at least one registered active audio endpoint device node.",
      "remediation": "Integrated AlekseyMartynov/action-vbcable-win to provision the signed VB-Audio Virtual Cable WDM driver in CI, synthesizing full 48 kHz stereo input/output device nodes.",
      "status": "VERIFIED_PERMANENT"
    },
    {
      "id": "E",
      "title": "WASAPI Stream Startup Discontinuity Accommodation",
      "symptom": "Initial WASAPI capture attempts on virtual cable endpoints failed immediately with 'Native audio capture stopped'.",
      "rootCause": "The Windows audio engine and WASAPI driver report AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY on the first delivered audio packet to signal stream inception. RtAudio translates this flag directly to RTAUDIO_INPUT_OVERFLOW, which NativeCapture previously treated as a fatal stream failure.",
      "remediation": "Updated NativeCapture in audio_native.cpp to consume the initial startup discontinuity flag without terminating the stream, while continuing to enforce strict overflow checks during steady state. Added diagnostic failure strings to NativeCapture exceptions.",
      "status": "VERIFIED_PERMANENT"
    }
  ]
}
