385 lines
12 KiB
JSON
385 lines
12 KiB
JSON
{
|
|
"schemaVersion": 1,
|
|
"mode": "deterministic",
|
|
"scenarioId": "phil-kenny-derived-regression",
|
|
"scenarioDescription": "Offline deterministic regression derived from the real phil-kenny pair: one side sees mixed transport/stall pressure while the other sees severe stale timestamp dropping.",
|
|
"fixtureId": null,
|
|
"generatedAt": "2026-04-26T13:13:48.174Z",
|
|
"seed": 1001,
|
|
"pairedAnalysis": {
|
|
"peerA": {
|
|
"addr": "peer-A",
|
|
"role": "root-forwarder",
|
|
"primaryClass": "mixed",
|
|
"secondaryClass": "transport-dominated",
|
|
"provisionalBars": [
|
|
{
|
|
"metric": "packetsDroppedPendingDecryptRatePerSec",
|
|
"observed": 0,
|
|
"threshold": 1,
|
|
"operator": "<",
|
|
"passed": true,
|
|
"description": "Decrypt drop rate < 1.0/s (decrypt pass bar)"
|
|
},
|
|
{
|
|
"metric": "playoutUnderTargetFraction",
|
|
"observed": 0.021052631578947368,
|
|
"threshold": 0.35,
|
|
"operator": "<=",
|
|
"passed": true,
|
|
"description": "Under-target fraction ≤ 0.35 (provisional jitter pass)"
|
|
},
|
|
{
|
|
"metric": "playoutOutsideTargetFraction",
|
|
"observed": 0.02210526315789474,
|
|
"threshold": 0.5,
|
|
"operator": "<=",
|
|
"passed": true,
|
|
"description": "Outside-target fraction ≤ 0.5"
|
|
}
|
|
],
|
|
"passedAllBars": true,
|
|
"severity": "healthy",
|
|
"diagnosticNotes": [
|
|
"V2-managed sources: 1; using v2 jitter summary instead of legacy Opus window fields",
|
|
"Tick budget: 180 breaches, P95=40.0ms",
|
|
"Transport triad: bridgeHW=24, binaryHW=18"
|
|
]
|
|
},
|
|
"peerB": {
|
|
"addr": "peer-B",
|
|
"role": "standby-forwarder",
|
|
"primaryClass": "policy-dominated",
|
|
"provisionalBars": [
|
|
{
|
|
"metric": "packetsDroppedPendingDecryptRatePerSec",
|
|
"observed": 0,
|
|
"threshold": 1,
|
|
"operator": "<",
|
|
"passed": true,
|
|
"description": "Decrypt drop rate < 1.0/s (decrypt pass bar)"
|
|
},
|
|
{
|
|
"metric": "playoutUnderTargetFraction",
|
|
"observed": 0.15699481865284973,
|
|
"threshold": 0.35,
|
|
"operator": "<=",
|
|
"passed": true,
|
|
"description": "Under-target fraction ≤ 0.35 (provisional jitter pass)"
|
|
},
|
|
{
|
|
"metric": "playoutOutsideTargetFraction",
|
|
"observed": 0.1648445595854922,
|
|
"threshold": 0.5,
|
|
"operator": "<=",
|
|
"passed": true,
|
|
"description": "Outside-target fraction ≤ 0.5"
|
|
}
|
|
],
|
|
"passedAllBars": true,
|
|
"severity": "healthy",
|
|
"diagnosticNotes": [
|
|
"V2-managed sources: 1; using v2 jitter summary instead of legacy Opus window fields",
|
|
"Stale timestamp drops: 202 (6.53/s); inspect sourceTimestampLateness gating before playout policy tuning"
|
|
]
|
|
},
|
|
"bothPassed": true,
|
|
"worseAddr": "peer-B",
|
|
"qualityScore": 8.872020725388602,
|
|
"callSummary": "[Good 8.9/10] BOTH PEERS PASS — peer-A (root-forwarder): mixed, severity=healthy; peer-B (standby-forwarder): policy-dominated, severity=healthy"
|
|
},
|
|
"firstDegradedPeer": "peer-A",
|
|
"firstDegradedStage": "jitter",
|
|
"likelyFixSurfaces": [
|
|
"mixed",
|
|
"transport-dominated",
|
|
"policy-dominated"
|
|
],
|
|
"peerA": {
|
|
"addr": "peer-A",
|
|
"role": "root-forwarder",
|
|
"senderProfileId": "philKennyTransportSender",
|
|
"senderProfileLabel": "Phil-Kenny transport/stall sender",
|
|
"impairmentSummary": "Derived from the real phil-kenny capture: bridge pressure, latency spikes, and tick stalls on the worse peer path.",
|
|
"metrics": {
|
|
"avgPcmBufferedMs": 117.85263157894737,
|
|
"avgPlayoutDeltaMs": -2.147368421052633,
|
|
"playoutUnderTargetFraction": 0.021052631578947368,
|
|
"playoutOutsideTargetFraction": 0.02210526315789474,
|
|
"playoutRateFractionBelow1": 0.15,
|
|
"jitterUnderruns": 0,
|
|
"missingFrames": 2,
|
|
"concealmentTicks": 2,
|
|
"packetsDroppedStaleTimestamp": 0,
|
|
"packetsDroppedStaleTimestampRatePerSec": 0,
|
|
"packetsDroppedPendingDecrypt": 0,
|
|
"packetsDroppedPendingDecryptRatePerSec": 0,
|
|
"pendingDecryptDepthHighWater": 0,
|
|
"reticulumAudioBridgeQueuedFramesHighWater": 24,
|
|
"reticulumAudioBinaryOutQueueDepthHighWater": 18,
|
|
"reticulumAudioBridgeWaitingForDrain": true,
|
|
"reticulumAudioQueuePressureDrops": 0,
|
|
"reticulumAudioStaleDrops": 0,
|
|
"avgOpusBufferedMs": 312,
|
|
"maxOpusBufferedMs": 320,
|
|
"adaptiveTargetMedianMs": 120,
|
|
"wasmFecDeferredPcmTicks": 0,
|
|
"durationMs": 20900,
|
|
"adaptiveNetworkMode": "steady",
|
|
"playoutStarvationWorstSeverity": "none",
|
|
"gcallAudioStage5BoostCumulativeMs": 0,
|
|
"tickBudgetBreachCount": 180,
|
|
"tickBudgetBreachP95Ms": 40,
|
|
"tickBudgetBreachMaxMs": 40,
|
|
"longTaskCount": 0,
|
|
"role": "root-forwarder",
|
|
"v2ManagedSourceCount": 1,
|
|
"legacyWindowOpusMetricsMeaningful": false,
|
|
"avgPcmRingBufferedMs": 217.5693779904306,
|
|
"avgTargetBufferMs": 120
|
|
},
|
|
"timeline": {
|
|
"firstIssueAtMs": 20,
|
|
"firstIssueStage": "jitter",
|
|
"arrival": {
|
|
"firstIssueAtMs": 141,
|
|
"totalPackets": 1541,
|
|
"deliveredPackets": 1512,
|
|
"droppedPackets": 29,
|
|
"dropRate": 0.01881894873458793,
|
|
"staleTimestampDrops": 0,
|
|
"maxExcessLatenessMs": 197,
|
|
"maxTimestampRegressionMs": 100
|
|
},
|
|
"jitter": {
|
|
"firstIssueAtMs": 20,
|
|
"avgBufferedMs": 312,
|
|
"maxBufferedMs": 320,
|
|
"maxDepthFrames": 16
|
|
},
|
|
"decode": {
|
|
"firstIssueAtMs": 200,
|
|
"framesDecoded": 13,
|
|
"concealmentFrames": 2,
|
|
"concealmentTicks": 2
|
|
},
|
|
"pcmRing": {
|
|
"firstIssueAtMs": null,
|
|
"avgBufferedMs": 217.5693779904306,
|
|
"minBufferedMs": 0,
|
|
"maxBufferedMs": 220,
|
|
"underruns": 0,
|
|
"overruns": 0
|
|
},
|
|
"playout": {
|
|
"firstIssueAtMs": 20,
|
|
"avgDeltaMs": 21.818181818181817,
|
|
"underTargetFraction": 0.021052631578947368,
|
|
"outsideTargetFraction": 0.02210526315789474,
|
|
"targetBufferMs": 120
|
|
},
|
|
"perf": {
|
|
"tickBudgetBreachCount": 180,
|
|
"tickBudgetBreachP95Ms": 40,
|
|
"tickBudgetBreachMaxMs": 40,
|
|
"longTaskCount": 0
|
|
}
|
|
},
|
|
"stateTransitions": [
|
|
{
|
|
"state": "missingMedia",
|
|
"count": 4
|
|
},
|
|
{
|
|
"state": "coldStart",
|
|
"count": 4
|
|
},
|
|
{
|
|
"state": "steady",
|
|
"count": 1037
|
|
}
|
|
],
|
|
"classification": {
|
|
"addr": "peer-A",
|
|
"role": "root-forwarder",
|
|
"primaryClass": "mixed",
|
|
"secondaryClass": "transport-dominated",
|
|
"provisionalBars": [
|
|
{
|
|
"metric": "packetsDroppedPendingDecryptRatePerSec",
|
|
"observed": 0,
|
|
"threshold": 1,
|
|
"operator": "<",
|
|
"passed": true,
|
|
"description": "Decrypt drop rate < 1.0/s (decrypt pass bar)"
|
|
},
|
|
{
|
|
"metric": "playoutUnderTargetFraction",
|
|
"observed": 0.021052631578947368,
|
|
"threshold": 0.35,
|
|
"operator": "<=",
|
|
"passed": true,
|
|
"description": "Under-target fraction ≤ 0.35 (provisional jitter pass)"
|
|
},
|
|
{
|
|
"metric": "playoutOutsideTargetFraction",
|
|
"observed": 0.02210526315789474,
|
|
"threshold": 0.5,
|
|
"operator": "<=",
|
|
"passed": true,
|
|
"description": "Outside-target fraction ≤ 0.5"
|
|
}
|
|
],
|
|
"passedAllBars": true,
|
|
"severity": "healthy",
|
|
"diagnosticNotes": [
|
|
"V2-managed sources: 1; using v2 jitter summary instead of legacy Opus window fields",
|
|
"Tick budget: 180 breaches, P95=40.0ms",
|
|
"Transport triad: bridgeHW=24, binaryHW=18"
|
|
]
|
|
}
|
|
},
|
|
"peerB": {
|
|
"addr": "peer-B",
|
|
"role": "standby-forwarder",
|
|
"senderProfileId": "philKennyStaleSender",
|
|
"senderProfileLabel": "Phil-Kenny stale-timestamp sender",
|
|
"impairmentSummary": "Derived from the real phil-kenny capture: sender timestamps drift stale/regressing while the opposite side remains under playout pressure.",
|
|
"metrics": {
|
|
"avgPcmBufferedMs": 103.98652849740932,
|
|
"avgPlayoutDeltaMs": -16.013471502590676,
|
|
"playoutUnderTargetFraction": 0.15699481865284973,
|
|
"playoutOutsideTargetFraction": 0.1648445595854922,
|
|
"playoutRateFractionBelow1": 0,
|
|
"jitterUnderruns": 0,
|
|
"missingFrames": 1,
|
|
"concealmentTicks": 1,
|
|
"packetsDroppedStaleTimestamp": 202,
|
|
"packetsDroppedStaleTimestampRatePerSec": 6.532988357050453,
|
|
"packetsDroppedPendingDecrypt": 0,
|
|
"packetsDroppedPendingDecryptRatePerSec": 0,
|
|
"pendingDecryptDepthHighWater": 0,
|
|
"reticulumAudioBridgeQueuedFramesHighWater": 0,
|
|
"reticulumAudioBinaryOutQueueDepthHighWater": 0,
|
|
"reticulumAudioBridgeWaitingForDrain": false,
|
|
"reticulumAudioQueuePressureDrops": 0,
|
|
"reticulumAudioStaleDrops": 0,
|
|
"avgOpusBufferedMs": 315.2005174644243,
|
|
"maxOpusBufferedMs": 320,
|
|
"adaptiveTargetMedianMs": 120,
|
|
"wasmFecDeferredPcmTicks": 0,
|
|
"durationMs": 30920,
|
|
"adaptiveNetworkMode": "steady",
|
|
"playoutStarvationWorstSeverity": "none",
|
|
"gcallAudioStage5BoostCumulativeMs": 0,
|
|
"tickBudgetBreachCount": 0,
|
|
"tickBudgetBreachP95Ms": 0,
|
|
"tickBudgetBreachMaxMs": 0,
|
|
"longTaskCount": 0,
|
|
"role": "standby-forwarder",
|
|
"v2ManagedSourceCount": 1,
|
|
"legacyWindowOpusMetricsMeaningful": false,
|
|
"avgPcmRingBufferedMs": 218.6934023285899,
|
|
"avgTargetBufferMs": 120
|
|
},
|
|
"timeline": {
|
|
"firstIssueAtMs": 20,
|
|
"firstIssueStage": "jitter",
|
|
"arrival": {
|
|
"firstIssueAtMs": 1595,
|
|
"totalPackets": 1544,
|
|
"deliveredPackets": 1329,
|
|
"droppedPackets": 215,
|
|
"dropRate": 0.13924870466321243,
|
|
"staleTimestampDrops": 202,
|
|
"maxExcessLatenessMs": 5998,
|
|
"maxTimestampRegressionMs": 4980
|
|
},
|
|
"jitter": {
|
|
"firstIssueAtMs": 20,
|
|
"avgBufferedMs": 315.2005174644243,
|
|
"maxBufferedMs": 320,
|
|
"maxDepthFrames": 16
|
|
},
|
|
"decode": {
|
|
"firstIssueAtMs": 160,
|
|
"framesDecoded": 15,
|
|
"concealmentFrames": 1,
|
|
"concealmentTicks": 1
|
|
},
|
|
"pcmRing": {
|
|
"firstIssueAtMs": null,
|
|
"avgBufferedMs": 218.6934023285899,
|
|
"minBufferedMs": 0,
|
|
"maxBufferedMs": 220,
|
|
"underruns": 0,
|
|
"overruns": 0
|
|
},
|
|
"playout": {
|
|
"firstIssueAtMs": 20,
|
|
"avgDeltaMs": 22.804657179818886,
|
|
"underTargetFraction": 0.15699481865284973,
|
|
"outsideTargetFraction": 0.1648445595854922,
|
|
"targetBufferMs": 120
|
|
},
|
|
"perf": {
|
|
"tickBudgetBreachCount": 0,
|
|
"tickBudgetBreachP95Ms": 0,
|
|
"tickBudgetBreachMaxMs": 0,
|
|
"longTaskCount": 0
|
|
}
|
|
},
|
|
"stateTransitions": [
|
|
{
|
|
"state": "missingMedia",
|
|
"count": 3
|
|
},
|
|
{
|
|
"state": "coldStart",
|
|
"count": 3
|
|
},
|
|
{
|
|
"state": "steady",
|
|
"count": 1540
|
|
}
|
|
],
|
|
"classification": {
|
|
"addr": "peer-B",
|
|
"role": "standby-forwarder",
|
|
"primaryClass": "policy-dominated",
|
|
"provisionalBars": [
|
|
{
|
|
"metric": "packetsDroppedPendingDecryptRatePerSec",
|
|
"observed": 0,
|
|
"threshold": 1,
|
|
"operator": "<",
|
|
"passed": true,
|
|
"description": "Decrypt drop rate < 1.0/s (decrypt pass bar)"
|
|
},
|
|
{
|
|
"metric": "playoutUnderTargetFraction",
|
|
"observed": 0.15699481865284973,
|
|
"threshold": 0.35,
|
|
"operator": "<=",
|
|
"passed": true,
|
|
"description": "Under-target fraction ≤ 0.35 (provisional jitter pass)"
|
|
},
|
|
{
|
|
"metric": "playoutOutsideTargetFraction",
|
|
"observed": 0.1648445595854922,
|
|
"threshold": 0.5,
|
|
"operator": "<=",
|
|
"passed": true,
|
|
"description": "Outside-target fraction ≤ 0.5"
|
|
}
|
|
],
|
|
"passedAllBars": true,
|
|
"severity": "healthy",
|
|
"diagnosticNotes": [
|
|
"V2-managed sources: 1; using v2 jitter summary instead of legacy Opus window fields",
|
|
"Stale timestamp drops: 202 (6.53/s); inspect sourceTimestampLateness gating before playout policy tuning"
|
|
]
|
|
}
|
|
}
|
|
}
|