You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Part of #74. References @ 17980ad. Depends on the registry issue; interacts with fan-out.
The adaptive loop currently assumes exactly one authenticated feedback stream: FeedbackLease is single (crates/sigil-host/src/server.rs:1590-1598), and serve_media_feedback (server.rs:3160-3496) drives ShadowBitrateController and the motion-resolution policy from that one viewer's pressure.
Accept one feedback stream per viewer; keep per-viewer CumulativeFeedbackIngress so per-client counters stay meaningful.
Define the aggregation policy explicitly (this is the design core of the issue): the encoder is shared, so a decision must be a function of N pressure signals. Recommended default: encode follows the worst active viewer within a bounded floor; below the floor, the slow viewer is dropped to its own recovery/rejoin path (fan-out issue) instead of dragging the session for everyone. Make the policy a pure, unit-tested function of the N-viewer snapshot.
Resolution tier decisions (MotionResolutionPolicy) and restore gating consider all viewers; restore requires clean windows from every active viewer.
Per-viewer decision reporting: each viewer sees the committed global decision plus its own contribution, so Portal diagnostics stay truthful.
Tests: two viewers with asymmetric pressure (policy follows worst), floor-breach drops one viewer and the survivor recovers full rate, restore blocked while any viewer is dirty.
Part of #74. References @ 17980ad. Depends on the registry issue; interacts with fan-out.
The adaptive loop currently assumes exactly one authenticated feedback stream:
FeedbackLeaseis single (crates/sigil-host/src/server.rs:1590-1598), andserve_media_feedback(server.rs:3160-3496) drivesShadowBitrateControllerand the motion-resolution policy from that one viewer's pressure.CumulativeFeedbackIngressso per-client counters stay meaningful.MotionResolutionPolicy) and restore gating consider all viewers; restore requires clean windows from every active viewer.Tests: two viewers with asymmetric pressure (policy follows worst), floor-breach drops one viewer and the survivor recovers full rate, restore blocked while any viewer is dirty.