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
Create a durable, source-backed product + architecture benchmark for MuxTV against mature TV/IPTV applications and use that benchmark to realign pre-alpha priorities without weakening the engineering properties MuxTV already gets right.
This is an umbrella audit / decision issue, not authorization for one large implementation PR.
It exists because the repository has reached an unusual state:
MuxTV is currently much more mature as an engineering platform than as a finished IPTV product.
That asymmetry is useful only while the engineering control plane accelerates product delivery. The current repository is close to the point where CI/evidence/contracts/documentation can begin to outpace the user-visible IPTV loop (provider → guide → live → catch-up → recovery).
This issue therefore owns:
the competitive baseline;
the distinction between engineering maturity and market/product maturity;
the product thesis derived from the benchmark;
priority ordering across already-owned implementation issues;
explicit decision rules for what should and should not move before 0.1.0-alpha.
It does not take implementation ownership away from the existing architecture, UI, release, measurement, provider, playback or Android compatibility issues.
current Android stack includes Kotlin, Compose for TV, Navigation 3, Media3, Room 3, WorkManager, Hilt and OkHttp.
Important: .work/CURRENT-STATE.md is intentionally a reviewed snapshot, not dynamic HEAD. The audit therefore treats live Git/GitHub state as current execution truth and uses the snapshot only as historical reviewed evidence.
The current settings.gradle.kts contains 28 included Gradle modules, while the older reviewed snapshot still describes 27. This is not itself a defect; it demonstrates why snapshot state and live state must remain visibly distinct.
Immutable repository references used by this audit:
Do not reopen single service-owned seek authority as part of this audit
Do not collapse these into a mega-PR.
Methodology
This report intentionally separates engineering quality from product/market maturity.
Quality model
Use ISO/IEC 25010:2023 as the general quality reference model. The standard defines a product quality model intended for specifying, measuring and evaluating software/ICT product quality, including use in requirements, testing objectives and acceptance criteria.
This does not mean that the numerical scores below are ISO certification scores. They are decision heuristics grounded in repository evidence and competitor capabilities.
Android TV quality model
Use the current Android TV quality framework:
TV app quality: TV Ready → TV Optimized → TV Differentiated;
Playback controls on TV: expected D-pad semantics for center/play-pause, left/right seek and hold-to-scrub.
Competitive benchmark rule
Do not compare only by feature count.
Benchmark dimensions:
TV-native UX / D-pad / EPG ergonomics;
Live TV + EPG core;
provider/protocol breadth;
catch-up / timeshift / DVR / multiview;
playback/device compatibility;
catalog/search/multi-source management;
operational/product maturity.
Internal code quality of closed-source competitors is not inferred. Their benchmark score describes user-visible/product capability only.
Exact aggregate values are therefore directional decision aids, not scientific rankings; the important result is the maturity cluster and gap distribution.
Executive verdict
Primary conclusion
MuxTV is a strong pre-alpha engineering system, but it is not yet a peer product to TiviMate/Sparkle/OTT Navigator.
The strongest current areas are:
bounded hostile-input handling;
immutable/staged catalog and EPG publication;
previous-good retention;
explicit refresh/run ownership;
process-owned Media3 playback lifecycle;
bounded generation-safe recovery;
credential/redaction/network security boundaries;
exact-SHA evidence and deterministic Android harness discipline.
The weakest market-facing areas are:
provider breadth;
end-to-end catch-up/archive semantics;
local timeshift/DVR/multiview;
mass-user onboarding;
physical device/codec/HDR/audio qualification;
final TV UI polish and release maturity.
The strategic danger is not primarily conventional technical debt. It is premature sophistication: continuing to expand CI/contracts/architecture machinery faster than the core user-visible IPTV loop becomes complete.
MuxTV maturity scorecard
The scores below deliberately separate architecture from shipped product capability.
Strong methodology, characterization and focus evidence
Demonstrated TV UX polish
5.5/10
Current UI still has known characterization/regression work
IPTV protocol/provider maturity
3.5/10
Main functional gap
Device/playback compatibility evidence
4.5/10
Architecture exists; hardware truth is insufficient
Performance evidence maturity
5.0/10
Strong harness, but measurement correctness is still being repaired
Release maturity
4.5/10
Appropriate for pre-alpha, insufficient for broad support claims
Maintainability of current code graph
6.8/10
Good modularity with confirmed boundary drift
Delivery efficiency
5.5/10
Control-plane complexity is becoming material
A separate product-capability heuristic places current MuxTV around mid-40s/100 against mature IPTV clients. This must not be interpreted as code quality; it means a current user still loses major workflows by replacing a mature IPTV application with MuxTV.
Competitive product benchmark
Reference products:
TiviMate — TV UX / complete mainstream IPTV workflow benchmark;
Sparkle TV — PVR/timeshift/provider breadth benchmark;
Do not optimize for a two-point difference between competitors. Optimize for closing MuxTV's large capability gaps while preserving its stronger architecture.
minimal distance between current playback and channel/program selection;
TV/remote-first hierarchy.
Do not copy blindly
Do not define success as “same screen skin as TiviMate”. The durable target is equivalent interaction quality plus MuxTV-specific reliability/diagnostics advantages.
MuxTV gap
MuxTV has stronger observable architecture than we can infer for a closed competitor, but the user still lacks complete provider/catch-up/recording/multiview flows. Engineering advantages are therefore mostly latent rather than market-visible.
2. Sparkle TV — strongest functional warning for the current roadmap
Current official Google Play feature set includes:
Android TV / Google TV / Fire TV;
M3U/M3U8, Xtream Codes, XMLTV;
Stalker Portal;
Jellyfin, Plex, Tvheadend, Enigma2, HDHomeRun and other PVR sources;
The existing roadmap position of Xtream/provider catch-up inside a late “provider expansion” phase is too conservative for a competitive IPTV product in 2026.
This audit does not recommend moving DVR, multiview and full local timeshift before playback stability. Those remain expensive, high-risk capabilities.
duplicate/variant folding as a user-visible simplification;
playback fallback between equivalent variants.
MuxTV opportunity
MuxTV can improve on the product concept by making decisions explicit, reversible and explainable through provenance and TV Doctor rather than exposing an increasingly large manual settings surface.
Constraint
Do not implement automatic fuzzy merge before labeled-corpus precision proves it safe. False-positive merge remains more damaging than missed merge.
4. Televizo — the minimum mainstream completeness warning
Televizo matters because it represents a simpler product, not because it is the architectural ideal.
The warning is:
A user will not compensate for missing catch-up/provider workflows because MuxTV has better immutable revision semantics.
Before positioning MuxTV as a mainstream IPTV alternative, its basic user journey must at least match this completeness level while retaining TV-first quality.
Provider resolution then creates a transport-level descriptor. player:media3 must not learn M3U/Xtream/Kodi catch-up dialects.
This supports the direction already proposed under #184.
6. Jellyfin Android TV — device capability truth reference
Jellyfin documentation explicitly notes that Android TV HDR support depends on the specific device. Current Android TV issues and changes also demonstrate why codec/audio/HDR capabilities cannot be inferred safely from API level or generic codec names alone.
StreamingM3uParser already enforces explicit limits including line size, entry count, attributes and metadata accumulation. It streams entries rather than building an unbounded full playlist in memory and remains cancellation-aware.
It already recognizes common IPTV metadata including:
tvg-id / tvg-name / tvg-logo;
group/channel-number metadata;
catchup* fields;
User-Agent/Referer metadata;
#EXTVLCOPT;
#KODIPROP;
playlist-level EPG references.
Do not replace this with a giant “parse everything to DTO list” provider layer.
B. Immutable/staged publication
Catalog and EPG work already use staged/revision semantics and preserve previous-good data. This is strategically valuable for unreliable IPTV endpoints.
Future providers must plug into these publication owners; they must not create parallel mutable provider-owned catalogs.
C. Playback lifecycle ownership
Current MuxTvPlaybackService owns the single ExoPlayer/MediaSession runtime, setup generations, recovery and final seek mutation.
This audit does not reopen duplicate-player or duplicate-seek ownership work.
D. Security/privacy
Preserve:
Keystore-backed credential ownership;
exact-origin cleartext approval;
scoped request headers;
no raw token/Cookie/Authorization/credential URL in logs or UI semantics;
redacted observations/diagnostics;
bounded external playback descriptor validation.
Provider compatibility must not be purchased by leaking provider secrets.
E. Evidence discipline
Current self-hosted workflows already enforce exact-source checkout/provenance, clean runner state, Android harness validation, evidence upload and post-run reset.
The canonical persistent AVD contract remains exactly:
MuxTV_TV_OLD_API26;
MuxTV_TV_CURRENT_API36.
Do not create resolution-, benchmark-, player-, database- or low-RAM-specific persistent AVDs.
Confirmed gaps / contradictions
1. Normative architecture is currently cleaner than the implementation
.work/ARCHITECTURE.md says feature modules should not directly consume player implementation, DAO/network or adapter implementation details.
Current graph violates that intent:
feature:player directly depends on player:media3 and Media3 UI.
feature:sources directly depends on refresh/sync/credentials/database implementation modules.
These should be fixed before broad provider expansion, but as narrow dependency inversion — not as a repository-wide Clean Architecture rewrite.
2. Catch-up metadata support is not catch-up product support
Current M3U ingest already recognizes and persists catchup, catchup-source, catchup-days, catchup-correction farther than parsing.
The live playback projection still fundamentally resolves toward stream locator/request metadata rather than preserving a first-class archive timeline intent.
Therefore:
Parsing catch-up tags must never be advertised as complete catch-up support.
Owner: #184 plus compatibility input contract #186.
3. Provider breadth is too narrow for a competitive IPTV alpha
M3U/XMLTV remains a valid and important source type, but MuxTV currently lacks the breadth users expect from mature IPTV clients.
Recommended first second-provider implementation: Xtream Codes, because it tests authentication, credentials, inconsistent JSON typing, separate live/EPG/catch-up capabilities, rate/error semantics and optional VOD/series without requiring those optional products to ship.
Do not implement Xtream + Stalker + Jellyfin simultaneously.
4. Android 17 LAN access is a release-critical gap
Android 17 requires ACCESS_LOCAL_NETWORK at runtime for apps targeting API 37+ unless a system-mediated path is used.
#204 documents that Add Source currently lacks the full permission-aware journey and that local-network classification also needs alignment.
This is a release blocker for targetSdk 37 LAN-source claims, not post-alpha polish.
5. TV UI engineering is stronger than demonstrated UI polish
#188 exists because shared rail/content geometry, focus restoration and visual-scale regressions still require characterization against accepted immutable baselines.
Therefore distinguish:
UX engineering discipline — strong;
current proven market polish — incomplete.
Do not claim TiviMate-level UI polish merely because the focus test strategy is sophisticated.
6. Performance infrastructure is stronger than current performance truth
PR #178 demonstrates that the measurement harness itself had an invalid global boundary expectation for a selective search result while product semantics were correct.
That is healthy to discover, but it means benchmark/tooling count must not be mistaken for validated product performance.
At the audit checkpoint the live GitHub branch response exposed main as not protected through the classic branch-protection endpoint.
Because GitHub repository rulesets may provide protections separately, this audit does not assert that the repository is definitely ungoverned without checking rulesets.
However, before public release the effective policy must be verified to guarantee at minimum:
PR-based integration where intended;
required validation for relevant changes;
no accidental force-push/direct bypass of accepted evidence.
A strong exact-SHA pipeline is not sufficient if repository governance can bypass the evidence contract.
8. Documentation/live-state drift is now a real operational concern
Reviewed snapshots are useful and should remain.
But tools/agents must distinguish three concepts explicitly:
LIVE HEAD
= execution truth
LAST REVIEWED SNAPSHOT
= reviewed historical truth at an exact SHA
NORMATIVE ARCHITECTURE
= intended invariant/decision truth
A stale snapshot must not be read as current implementation state.
Product thesis
Do not position MuxTV as “free TiviMate” or “Sparkle clone”.
The more defensible target is:
MuxTV is a fast, local-first, TV-native IPTV client that turns multiple imperfect providers into one stable personal TV catalog, understands Live/EPG/Catch-up as real timeline semantics, automatically chooses viable stream variants, and explains failures/fallbacks through TV Doctor without requiring a cloud account.
This product thesis uses MuxTV's existing strengths instead of competing only by feature count.
A future differentiated journey should look like:
Provider A + Provider B
↓
canonical/provenance-aware channel
↓
multiple variants
↓
device compatibility + recent health
↓
primary stream fails
↓
bounded fallback to safe reserve
↓
viewer keeps watching
↓
TV Doctor explains the fallback without exposing secrets
This is a stronger long-term differentiator than “we also support Xtream”.
Roadmap priority reset
The current roadmap is architecturally disciplined, but the market benchmark argues for one major change:
Provider capability + Xtream + provider catch-up should move earlier. DVR/local timeshift/multiview should remain later.
P0 — before a convincing public 0.1.0-alpha
P0 is the minimum path required to make the current engineering platform translate into a coherent IPTV product.
QR/phone onboarding deserves elevated priority because entering long URLs/provider credentials with a TV remote is intrinsically poor 10-foot UX.
P2 — after single-stream stability is proven
local timeshift;
DVR and recording scheduler;
recording storage/conflict/recovery;
multiview;
VOD/Series product surface if separately approved.
These features materially increase storage, concurrency, memory, player and lifecycle complexity and should not delay the core Live/Catch-up product loop.
P3 — later / evidence-gated
Stalker after Xtream;
sophisticated Smart Channel auto-merge;
extension ecosystem;
alternate libmpv engine;
advanced plugin marketplace;
other providers with no concrete second-user/product justification.
Alpha vertical definition
A convincing 0.1.0-alpha should prove one closed journey rather than many disconnected subsystems:
Install
↓
Add M3U or Xtream source
↓
Secure credentials / network policy
↓
Refresh without corrupting previous-good catalog
↓
Channels + Search + EPG
↓
Stable D-pad navigation
↓
Live playback
↓
Audio/subtitle selection
↓
Catch-up from Guide where provider supports it
↓
Bounded recovery/fallback
↓
Doctor explains relevant failure/fallback
↓
Restart / process recreation / refresh preserves valid state
Everything not required to prove this journey must be challenged for pre-alpha necessity.
Control-plane budget / anti-overengineering rule
MuxTV's CI/evidence discipline is a strength, but new infrastructure should now face a higher bar.
Before alpha, a new workflow, module, generalized framework or evidence subsystem should be accepted only if at least one is true:
it closes a proven false-positive/false-negative in current validation;
it protects a concrete alpha/release support claim;
it is required by the next real second implementation (for example Xtream proving a provider seam);
it removes meaningful duplicated ownership or prevents a known class of corruption/security failure.
Otherwise defer it.
Temporary architectural constraint
Do not add a new Gradle infrastructure module merely to make a diagram cleaner.
Prefer extending existing stable seams (catalog:api, player:api, composition root) until a genuine second implementation proves that another module has independent value.
Persistent AVD policy clarification
Preserve the repository's exact two persistent AVD identities:
MuxTV_TV_OLD_API26;
MuxTV_TV_CURRENT_API36.
Do not proliferate resolution/low-RAM/benchmark AVDs.
However, the architectural invariant should be interpreted as:
no more than two persistent repository-owned AVD identities
—not as:
MuxTV may never execute any validation against another API level.
Android 17/API37-specific runtime behavior cannot be certified by API36.
When API37 qualification is required, use an explicitly approved non-persistent/ephemeral strategy or physical Android 17 device evidence without silently creating a third long-lived repository AVD. When API37 becomes the appropriate “current” canonical environment, replace API36 rather than accumulating another permanent device.
Current stack is intentionally modern and includes very recent Android/Kotlin/Room/Media3 components.
That is acceptable during active foundation work, but near alpha the policy should change from:
latest compatible
into:
known-good qualified release train
Do not continue broad dependency upgrades solely because a newer version exists while P0 compatibility, catch-up and physical qualification remain incomplete.
Exceptions require a concrete bug/security/platform requirement or measurable product benefit.
What must NOT be done to “catch up” with competitors
Do not respond to Sparkle/TiviMate parity by implementing every checkbox simultaneously.
Before the core vertical is proven, avoid bundling:
Xtream + Stalker + Jellyfin provider implementations in one train;
DVR + local timeshift + multiview together;
a universal provider/plugin framework before Xtream validates the seam;
automatic fuzzy channel merge before corpus precision;
alternate libmpv engine without a compatibility corpus proving Media3 insufficiency;
manufacturer-specific playback hacks as primary device truth;
Rule 1 — product evidence before generalized architecture
A new abstraction must point to a real second implementation or current duplication/risk.
Rule 2 — compatibility claims are executable
Recognizing syntax in a parser is not support. Use #186 dispositions:
SUPPORTED;
IGNORED_SAFE;
REJECTED;
NOT_IMPLEMENTED.
Rule 3 — hardware claims are device-scoped
Emulator evidence proves API/platform behavior, not MediaCodec/HDR/Dolby Vision/passthrough/Fire OS compatibility.
Rule 4 — one mutation owner
Preserve one owner for player mutation, source publication, readiness activation and retry classes. Provider expansion must not introduce parallel scheduler/player/refresh authorities.
Rule 5 — no secret compatibility debt
Never gain provider compatibility by persisting/logging raw credential-bearing URLs, provider responses, Authorization/Cookie values or unredacted exception payloads.
Rule 6 — TV quality is user-visible behavior
A sophisticated focus harness is not evidence of polished UX until representative 720p/1080p D-pad/focus/readability behavior is actually green.
Rule 7 — control plane must earn its cost
Every new pre-alpha CI/evidence mechanism must defend a concrete correctness/support/release claim or fix a measured validation defect.
Acceptance criteria for this audit issue
This issue is complete only when the benchmark has materially changed execution priorities, not merely when the report exists.
competitive benchmark remains linked from the planning/roadmap decision surface;
The repository already has enough foundation to justify moving from “control the system” toward “prove the complete IPTV product loop”. The next competitive step is not another generalized framework. It is to make the existing architecture visibly valuable to the viewer through:
a stable TV UI;
M3U and Xtream provider workflows;
real EPG-driven catch-up timeline semantics;
bounded recovery/fallback;
device-aware playback truth;
simple TV onboarding;
TV Doctor explanations;
physical-device support evidence.
If MuxTV preserves its current data/security/playback discipline while delivering that sequence, it can differentiate from mature IPTV clients on reliability, explainability and multi-source resilience rather than becoming another feature-for-feature clone.
If infrastructure/contracts/CI continue to grow faster than provider/catch-up/device product capability, the project risks reaching alpha as an exceptionally well-controlled IPTV architecture that still solves fewer daily viewing workflows than much simpler existing applications.
Objective
Create a durable, source-backed product + architecture benchmark for MuxTV against mature TV/IPTV applications and use that benchmark to realign pre-alpha priorities without weakening the engineering properties MuxTV already gets right.
This is an umbrella audit / decision issue, not authorization for one large implementation PR.
It exists because the repository has reached an unusual state:
That asymmetry is useful only while the engineering control plane accelerates product delivery. The current repository is close to the point where CI/evidence/contracts/documentation can begin to outpace the user-visible IPTV loop (provider → guide → live → catch-up → recovery).
This issue therefore owns:
0.1.0-alpha.It does not take implementation ownership away from the existing architecture, UI, release, measurement, provider, playback or Android compatibility issues.
Audit baseline and freshness
Repository checkpoint
Audit baseline:
MuxTV/Muxtv;main;5aa9c108cc63187d8066494fb30c73b82f4e0f97;app.muxtv.tv,0.1.0-alpha.1;Important:
.work/CURRENT-STATE.mdis intentionally a reviewed snapshot, not dynamic HEAD. The audit therefore treats live Git/GitHub state as current execution truth and uses the snapshot only as historical reviewed evidence.The current
settings.gradle.ktscontains 28 included Gradle modules, while the older reviewed snapshot still describes 27. This is not itself a defect; it demonstrates why snapshot state and live state must remain visibly distinct.Immutable repository references used by this audit:
Owner relationships / meta-links
This issue is a coordination and prioritization layer over existing owners.
Do not collapse these into a mega-PR.
Methodology
This report intentionally separates engineering quality from product/market maturity.
Quality model
Use ISO/IEC 25010:2023 as the general quality reference model. The standard defines a product quality model intended for specifying, measuring and evaluating software/ICT product quality, including use in requirements, testing objectives and acceptance criteria.
This does not mean that the numerical scores below are ISO certification scores. They are decision heuristics grounded in repository evidence and competitor capabilities.
Android TV quality model
Use the current Android TV quality framework:
TV Ready→TV Optimized→TV Differentiated;Competitive benchmark rule
Do not compare only by feature count.
Benchmark dimensions:
Internal code quality of closed-source competitors is not inferred. Their benchmark score describes user-visible/product capability only.
Exact aggregate values are therefore directional decision aids, not scientific rankings; the important result is the maturity cluster and gap distribution.
Executive verdict
Primary conclusion
MuxTV is a strong pre-alpha engineering system, but it is not yet a peer product to TiviMate/Sparkle/OTT Navigator.
The strongest current areas are:
The weakest market-facing areas are:
The strategic danger is not primarily conventional technical debt. It is premature sophistication: continuing to expand CI/contracts/architecture machinery faster than the core user-visible IPTV loop becomes complete.
MuxTV maturity scorecard
The scores below deliberately separate architecture from shipped product capability.
A separate product-capability heuristic places current MuxTV around mid-40s/100 against mature IPTV clients. This must not be interpreted as code quality; it means a current user still loses major workflows by replacing a mature IPTV application with MuxTV.
Competitive product benchmark
Reference products:
Directional product maturity cluster:
Do not optimize for a two-point difference between competitors. Optimize for closing MuxTV's large capability gaps while preserving its stronger architecture.
Competitor conclusions
1. TiviMate — UX and mainstream IPTV baseline
Current official Google Play description lists:
Sources:
Adopt
Do not copy blindly
Do not define success as “same screen skin as TiviMate”. The durable target is equivalent interaction quality plus MuxTV-specific reliability/diagnostics advantages.
MuxTV gap
MuxTV has stronger observable architecture than we can infer for a closed competitor, but the user still lacks complete provider/catch-up/recording/multiview flows. Engineering advantages are therefore mostly latent rather than market-visible.
2. Sparkle TV — strongest functional warning for the current roadmap
Current official Google Play feature set includes:
Source:
Strategic conclusion
The existing roadmap position of Xtream/provider catch-up inside a late “provider expansion” phase is too conservative for a competitive IPTV product in 2026.
This audit does not recommend moving DVR, multiview and full local timeshift before playback stability. Those remain expensive, high-risk capabilities.
It does recommend promoting:
ProviderCapabilityseam;into the pre-alpha/early-alpha product path.
3. OTT Navigator — strongest product analogue to future Smart Channels
Official FAQ describes:
Source:
This maps directly to MuxTV's intended future shape:
Adopt
MuxTV opportunity
MuxTV can improve on the product concept by making decisions explicit, reversible and explainable through provenance and TV Doctor rather than exposing an increasingly large manual settings surface.
Constraint
Do not implement automatic fuzzy merge before labeled-corpus precision proves it safe. False-positive merge remains more damaging than missed merge.
4. Televizo — the minimum mainstream completeness warning
Current Google Play description lists:
Source:
Televizo matters because it represents a simpler product, not because it is the architectural ideal.
The warning is:
Before positioning MuxTV as a mainstream IPTV alternative, its basic user journey must at least match this completeness level while retaining TV-first quality.
5. Kodi + PVR IPTV Simple — protocol and catch-up semantics reference
The current PVR IPTV Simple documentation supports:
inputstream.adaptive;inputstream.ffmpegdirect;Source:
Core architectural lesson
Catch-up is not URL string substitution.
The domain must preserve the difference between:
Live(channel);CatchupProgram(channel, programme, start, end);CatchupPosition(channel, wallClockPosition).Provider resolution then creates a transport-level descriptor.
player:media3must not learn M3U/Xtream/Kodi catch-up dialects.This supports the direction already proposed under #184.
6. Jellyfin Android TV — device capability truth reference
Jellyfin documentation explicitly notes that Android TV HDR support depends on the specific device. Current Android TV issues and changes also demonstrate why codec/audio/HDR capabilities cannot be inferred safely from API level or generic codec names alone.
Sources:
Adopt
Build a typed
DevicePlaybackProfilefrom runtime/platform evidence:Reject
#31 remains the physical support-claim authority.
Confirmed MuxTV strengths to preserve
A. Hostile-input and bounded ingest
StreamingM3uParseralready enforces explicit limits including line size, entry count, attributes and metadata accumulation. It streams entries rather than building an unbounded full playlist in memory and remains cancellation-aware.It already recognizes common IPTV metadata including:
tvg-id/tvg-name/tvg-logo;catchup*fields;#EXTVLCOPT;#KODIPROP;Do not replace this with a giant “parse everything to DTO list” provider layer.
B. Immutable/staged publication
Catalog and EPG work already use staged/revision semantics and preserve previous-good data. This is strategically valuable for unreliable IPTV endpoints.
Future providers must plug into these publication owners; they must not create parallel mutable provider-owned catalogs.
C. Playback lifecycle ownership
Current
MuxTvPlaybackServiceowns the single ExoPlayer/MediaSession runtime, setup generations, recovery and final seek mutation.This audit does not reopen duplicate-player or duplicate-seek ownership work.
D. Security/privacy
Preserve:
Provider compatibility must not be purchased by leaking provider secrets.
E. Evidence discipline
Current self-hosted workflows already enforce exact-source checkout/provenance, clean runner state, Android harness validation, evidence upload and post-run reset.
The canonical persistent AVD contract remains exactly:
MuxTV_TV_OLD_API26;MuxTV_TV_CURRENT_API36.Do not create resolution-, benchmark-, player-, database- or low-RAM-specific persistent AVDs.
Confirmed gaps / contradictions
1. Normative architecture is currently cleaner than the implementation
.work/ARCHITECTURE.mdsays feature modules should not directly consume player implementation, DAO/network or adapter implementation details.Current graph violates that intent:
feature:playerdirectly depends onplayer:media3and Media3 UI.feature:sourcesdirectly depends on refresh/sync/credentials/database implementation modules.Owners:
These should be fixed before broad provider expansion, but as narrow dependency inversion — not as a repository-wide Clean Architecture rewrite.
2. Catch-up metadata support is not catch-up product support
Current M3U ingest already recognizes and persists
catchup,catchup-source,catchup-days,catchup-correctionfarther than parsing.The live playback projection still fundamentally resolves toward stream locator/request metadata rather than preserving a first-class archive timeline intent.
Therefore:
Owner: #184 plus compatibility input contract #186.
3. Provider breadth is too narrow for a competitive IPTV alpha
M3U/XMLTV remains a valid and important source type, but MuxTV currently lacks the breadth users expect from mature IPTV clients.
Recommended first second-provider implementation: Xtream Codes, because it tests authentication, credentials, inconsistent JSON typing, separate live/EPG/catch-up capabilities, rate/error semantics and optional VOD/series without requiring those optional products to ship.
Do not implement Xtream + Stalker + Jellyfin simultaneously.
4. Android 17 LAN access is a release-critical gap
Android 17 requires
ACCESS_LOCAL_NETWORKat runtime for apps targeting API 37+ unless a system-mediated path is used.Official source:
#204 documents that Add Source currently lacks the full permission-aware journey and that local-network classification also needs alignment.
This is a release blocker for targetSdk 37 LAN-source claims, not post-alpha polish.
5. TV UI engineering is stronger than demonstrated UI polish
#188 exists because shared rail/content geometry, focus restoration and visual-scale regressions still require characterization against accepted immutable baselines.
Therefore distinguish:
Do not claim TiviMate-level UI polish merely because the focus test strategy is sophisticated.
6. Performance infrastructure is stronger than current performance truth
PR #178 demonstrates that the measurement harness itself had an invalid global boundary expectation for a selective search result while product semantics were correct.
That is healthy to discover, but it means benchmark/tooling count must not be mistaken for validated product performance.
Until #178/#27 evidence is clean:
7. Branch governance is weaker than CI discipline
At the audit checkpoint the live GitHub branch response exposed
mainas not protected through the classic branch-protection endpoint.Because GitHub repository rulesets may provide protections separately, this audit does not assert that the repository is definitely ungoverned without checking rulesets.
However, before public release the effective policy must be verified to guarantee at minimum:
A strong exact-SHA pipeline is not sufficient if repository governance can bypass the evidence contract.
8. Documentation/live-state drift is now a real operational concern
Reviewed snapshots are useful and should remain.
But tools/agents must distinguish three concepts explicitly:
A stale snapshot must not be read as current implementation state.
Product thesis
Do not position MuxTV as “free TiviMate” or “Sparkle clone”.
The more defensible target is:
This product thesis uses MuxTV's existing strengths instead of competing only by feature count.
A future differentiated journey should look like:
This is a stronger long-term differentiator than “we also support Xtream”.
Roadmap priority reset
The current roadmap is architecturally disciplined, but the market benchmark argues for one major change:
P0 — before a convincing public
0.1.0-alphaP0 is the minimum path required to make the current engineering platform translate into a coherent IPTV product.
Stabilization / evidence correctness
Product completeness promotion
Promote from late roadmap:
PlaybackIntent/ archive timeline boundary;These do not require DVR, VOD/Series product UI or local timeshift to ship.
P1 — alpha → beta
DevicePlaybackProfile;QR/phone onboarding deserves elevated priority because entering long URLs/provider credentials with a TV remote is intrinsically poor 10-foot UX.
P2 — after single-stream stability is proven
These features materially increase storage, concurrency, memory, player and lifecycle complexity and should not delay the core Live/Catch-up product loop.
P3 — later / evidence-gated
Alpha vertical definition
A convincing
0.1.0-alphashould prove one closed journey rather than many disconnected subsystems:Everything not required to prove this journey must be challenged for pre-alpha necessity.
Control-plane budget / anti-overengineering rule
MuxTV's CI/evidence discipline is a strength, but new infrastructure should now face a higher bar.
Before alpha, a new workflow, module, generalized framework or evidence subsystem should be accepted only if at least one is true:
Otherwise defer it.
Temporary architectural constraint
Do not add a new Gradle infrastructure module merely to make a diagram cleaner.
Prefer extending existing stable seams (
catalog:api,player:api, composition root) until a genuine second implementation proves that another module has independent value.Persistent AVD policy clarification
Preserve the repository's exact two persistent AVD identities:
MuxTV_TV_OLD_API26;MuxTV_TV_CURRENT_API36.Do not proliferate resolution/low-RAM/benchmark AVDs.
However, the architectural invariant should be interpreted as:
—not as:
Android 17/API37-specific runtime behavior cannot be certified by API36.
When API37 qualification is required, use an explicitly approved non-persistent/ephemeral strategy or physical Android 17 device evidence without silently creating a third long-lived repository AVD. When API37 becomes the appropriate “current” canonical environment, replace API36 rather than accumulating another permanent device.
Owner: #204 / #31.
Risk register
Dependency strategy before alpha
Current stack is intentionally modern and includes very recent Android/Kotlin/Room/Media3 components.
That is acceptable during active foundation work, but near alpha the policy should change from:
into:
Do not continue broad dependency upgrades solely because a newer version exists while P0 compatibility, catch-up and physical qualification remain incomplete.
Exceptions require a concrete bug/security/platform requirement or measurable product benefit.
What must NOT be done to “catch up” with competitors
Do not respond to Sparkle/TiviMate parity by implementing every checkbox simultaneously.
Before the core vertical is proven, avoid bundling:
The intended sequence is vertical and evidence-backed:
Decision rules
Rule 1 — product evidence before generalized architecture
A new abstraction must point to a real second implementation or current duplication/risk.
Rule 2 — compatibility claims are executable
Recognizing syntax in a parser is not support. Use #186 dispositions:
SUPPORTED;IGNORED_SAFE;REJECTED;NOT_IMPLEMENTED.Rule 3 — hardware claims are device-scoped
Emulator evidence proves API/platform behavior, not MediaCodec/HDR/Dolby Vision/passthrough/Fire OS compatibility.
Rule 4 — one mutation owner
Preserve one owner for player mutation, source publication, readiness activation and retry classes. Provider expansion must not introduce parallel scheduler/player/refresh authorities.
Rule 5 — no secret compatibility debt
Never gain provider compatibility by persisting/logging raw credential-bearing URLs, provider responses, Authorization/Cookie values or unredacted exception payloads.
Rule 6 — TV quality is user-visible behavior
A sophisticated focus harness is not evidence of polished UX until representative 720p/1080p D-pad/focus/readability behavior is actually green.
Rule 7 — control plane must earn its cost
Every new pre-alpha CI/evidence mechanism must defend a concrete correctness/support/release claim or fix a measured validation defect.
Acceptance criteria for this audit issue
This issue is complete only when the benchmark has materially changed execution priorities, not merely when the report exists.
External source index
Quality / TV platform
Competitive / prior-art products
Final decision
MuxTV should not reduce its engineering rigor.
It should now change where that rigor is spent.
The repository already has enough foundation to justify moving from “control the system” toward “prove the complete IPTV product loop”. The next competitive step is not another generalized framework. It is to make the existing architecture visibly valuable to the viewer through:
If MuxTV preserves its current data/security/playback discipline while delivering that sequence, it can differentiate from mature IPTV clients on reliability, explainability and multi-source resilience rather than becoming another feature-for-feature clone.
If infrastructure/contracts/CI continue to grow faster than provider/catch-up/device product capability, the project risks reaching alpha as an exceptionally well-controlled IPTV architecture that still solves fewer daily viewing workflows than much simpler existing applications.