Spec: Phase 10 — Tuning: move the benchmark's numbers, after the functional phases
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 12/100
- Issue type
- Documentation
- Clarity
- Mostly clear
- Activity status
- Active
- Domain
- mobile, performance
Research direction
Start by reading PRD.md Part 4 and the committed Phase 3 report in benchmark/phase3/, then ExitCriterion and qoe-floors.tsv to see the fixed rule and floors. The issue asks for a Phase 10 entry in PRD.md Part 4 that owns the numeric criteria, not for any policy change. Done means that entry exists with the exit criteria as written, and the open tuning work is left to later issues.
Written by the indexing model from the issue text.
Description
Problem Statement
PRD.md Part 4 used to end Phase 3 on measured improvement over the Phase 1 baseline on the shaped-network suite, with no regression on stable WiFi, and Phase 4 on a p50 TTFF target. Both are criteria that a number moved, not that behaviour exists. The committed Phase 3 report (benchmark/phase3/, PR #150) shows why that matters. The adaptive arm is built, runs behind the boundary, and is graded on all six networks. ExitCriterion still judges it not met on all six:
| Network | Worse in (adaptive against the static SuperPlayer profile) |
|---|---|
| stable WiFi | VOD switch count and QoE score; short-form rebuffer ratio, rebuffer count (4 → 22) and QoE score |
| congested WiFi | VOD, live and short-form QoE score |
| LTE with dropouts | VOD, live, short-form and data-saver QoE score |
| 3G | VOD, live and short-form QoE score (live time to first frame 800 → 4050 ms) |
| WiFi→cellular | VOD, live, short-form and data-saver QoE score (live rebuffer ratio 0.004 → 0.046) |
| high latency | live QoE score (1 → 22 rebuffers, 4.35 → 2.66) and short-form QoE score; VOD is better |
Closing that gap is iterative, and nobody can know in advance how much it will take. A policy change that fixes one cell costs another, and every attempt is a full matrix run. Holding the functional phases behind it would stall the roadmap on tuning.
Solution
Phase 10, added after the functional phases in PRD.md Part 4 (branch tuning-phase-roadmap), owns every "a number moved" criterion. Phases 3 and 4 now end on behaviour that is built, tested and measured.
Measurement stays where it is. The harness, the report and the QoE regression gate remain in the phases that build them. Phase 10 starts from committed reports rather than from nothing. A functional phase's report is a finding for this phase, never a reason to retune before committing it.
The rules do not loosen. ExitCriterion's rule was fixed before the matrix ran, and it stays fixed: two standard errors, a QoE win and no QoE loss on each shaped profile, nothing worse on stable WiFi. PRD.md §6's honesty rules also stand. F1's trade prints as a bitrate loss. A floor in qoe-floors.tsv moves only in a commit that says why.
Scope
| Issue | What it lands |
|---|---|
| Adaptive policy against the static profile | Iterations on AdaptiveBufferPolicy, AdaptiveSelectionPolicy, SelectionPaces and TransportCaps until the Phase 3 criterion is met. Start with the stable WiFi short-form rebuffers, which is a loss on the one profile where adaptive has nothing to gain. The same 22-rebuffer pattern shows on high-latency live. |
| #132 | A WiFi→cellular handover whose cellular stretch cannot carry the top rung, so the profile can separate a good transport reaction from a bad one |
| Feed p50 TTFF target | Set and argue a target for the feed demo (§6 names none yet), then meet it. Comes after Phase 4's preload and cache. |
| #95 | The benchmark's device arm through devicelab: peak RSS and battery delta over a 30-minute session |
The issues in the Scope table without a number are filed when work on them starts.
Exit criteria
Per PRD.md Part 4, Phase 10:
- The adaptive policy shows a measured improvement over the static profile on the shaped-network suite, with no regression on stable WiFi, by
ExitCriterion's rule unchanged. The report that shows it is committed as the reference. - p50 TTFF in the feed demo is under a target this phase sets and argues.
- Peak RSS and battery delta are reported from a device.
Non-goals
- Loosening the rule to pass it. The two-standard-error rule, the reference arm and "unmeasured is not met" are fixed. A change to any of them is argued on its own, not folded into a tuning iteration.
- Blocking earlier phases. Phases 4–9 proceed on their functional criteria. Work they turn up that is about a number goes here.
- Tuning the static profiles to make the comparison easier. A change to
StaticProfilePolicyshows in the report as a change to arm (c), with its reason.
- Dominant language
- Kotlin
- Stars
- 1
- Forks
- 0
- Avg merge
- 1h 20m
- Merged PRs (30d)
- 172
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ramesh130/superplayer
-
bug need-device
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
ramesh130/superplayer#495 ·
Maintainers usually reply within 1 day
-
Flakes (Android): AudioCapabilityChangeTest reselect wait and DownloadConditionsTest metered stopOpenready-for-agent
Difficulty 4/5 1-2 days Newbie friendliness 28/100
ramesh130/superplayer#526 ·
Maintainers usually reply within 1 day
-
ios ready-for-agent
Difficulty 4/5 3-5 days Newbie friendliness 28/100
ramesh130/superplayer#518 ·
Maintainers usually reply within 1 day
-
ready-for-agent
Difficulty 4/5 1-2 days Newbie friendliness 58/100
ramesh130/superplayer#501 ·
Maintainers usually reply within 1 day
-
ready-for-agent
Difficulty 4/5 3-5 days Newbie friendliness 48/100
ramesh130/superplayer#500 ·
Maintainers usually reply within 1 day
All issues in ramesh130/superplayer
Similar issues
-
bug follow-up
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
binding:web core docs p3
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
RunanywhereAI/runanywhere-sdks#1123 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
openai/openai-java#1202 ·
Maintainers usually reply within 1 day
-
StepExamBenchmarkTest runs a loop and prints a timing but asserts nothingPossibly taken A pull request linked to this issue is open or already merged. Openjules
Difficulty 1/5 Under an hour Newbie friendliness 82/100
open-learning-exchange/myplanet#18199 · 1 comment ·
Maintainers usually reply within 4 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
auth0/Auth0.Android#1095 · 1 comment ·
Maintainers usually reply within 1 day