The migration of applications written for a different platforms like Android or iOS to HarmonyOS NEXT requires a complete rewrite in ArkTS. Although LLMs automate the translation of source constructs into ArkTS, syntactic compilation is not enough and functional assurance is a critical open challenge in HarmonyOS NEXT migration. We present HMOS~Migrator, an agentic pipeline that reads an application's source code, generates an ArkTS project, and validates the result by replaying recorded interactions on a real device. We cast the scoring problem as quality estimation without a reference implementation; we score a migration using only the source application's recorded behaviour and the artifacts produced by the pipeline. We define seven weighted metrics, each constructed so that reduced measurement cannot artificially raise the score. Over twelve runs across six open-source applications, the pipeline's structural reproduction is high (completeness \pct{83.3}--\pct{100.0}), while on-device behaviour (\pct{4.3}--\pct{63.1}) and UI fidelity (\pct{21.1}--\pct{63.2}) remain the primary limits. Scores improve steadily over time: +0.45~points per day overall (R2=0.44, p=0.019) and +0.47 over the model-free subset (R2=0.39, p=0.029), with corresponding to fit angles of +8.4∘ and +11.7∘ respectively.
Figures & tables
Fig. 1: The five phases, the handset each requires, and the bounded repair loop. A state still divergent at the retry bound is labelled as requiring review and execution proceeds.
#
Metric
Weight
LLM judge
1
Screen capture coverage
6
no
2
Migration completeness (breadth)
17
no
3
Navigation edges
12
no
4
Feature verify (on-device)
27
yes — one verdict per check
5
Replay coverage
11
no
6
Extended-tree vision comparison
7
yes — one verdict per state
TABLE I: The seven metrics for verification.
Application
Src
Version
Screens
Runs
VLC
Android
3.7.1
49–149
5
NewPipe
Android
0.28.8
66
1
Wikipedia
Android
50598-r, 50599-beta
193, 223
2
NetNewsWire
iOS
7.1.3
28
2
Image Toolbox
Android
4.1.0
79
1
SwiftRadio
iOS
3.0.0
9
1
TABLE II: Subject applications and the versions migrated. Screens is the source inventory; a range spans that application’s runs.
Phase
Work-hours
Processed
Cache-read
New input
Gen.
h
%
tokens
%
tokens
%
tokens
%
tokens
1 — ingestion
3.43
20.3
295.5 M
15.8
282.9 M
95.7
11.55 M
25.4
998 K
2 — logic generation
0.95
5.6
182.8 M
9.8
181.4 M
99.3
1.07 M
2.4
252 K
3 — screen generation
6.34
37.4
623.1 M
33.3
609.0 M
97.7
12.21 M
26.8
1.88 M
4 — feature validation
6.22
36.7
771.1 M
41.2
748.3 M
97.0
20.67 M
45.4
2.11 M
Total
16.9
100
1.87 B
100
1.82 B
97.3
45.50 M
100
5.23 M
TABLE III: Instrumented cost of the NetNewsWire 17/08 run (2026-08-17 17:31–2026-08-18 11:27 UTC). Work-hours measure agent effort. Processed tokens comprise input, cache reads, and output; new input excludes cache reads. Percentages give each phase’s share of the run total for the corresponding column, except cache-read , whose percentage is the phase’s cache-read share of its own processed tokens. Percentages use the denominator specified for each column, so the phase shares differ across columns.
Metric score (%)
Aggregate
Run
Application
Src
Model
Screens
1
2
3
4
5
6
7
all
no-LLM
VLC 14/07/2026
VLC
Android
Opus 4.8
49
29.2
83.3
50.0
28.3
2.9
94.4
48.0
46.1
48.2
NewPipe 20/07/2026
NewPipe
Android
Opus 4.8
66
75.8
100.0
87.5
33.3
33.6
95.7
61.8
63.8
72.9
Wikipedia 22/07/2026
Wikipedia
Android
Opus 4.8
193
34.2
99.5
78.6
21.1
75.0
93.1
49.8
58.8
70.6
Wikipedia 29/07/2026
Wikipedia
Android
Opus 5
223
31.8
99.5
100.0
4.3
92.9
71.4
31.8
53.6
71.8
VLC 29/07/2026
VLC
Android
4.8 → 5
49
100.0
87.5
73.5
28.3
12.6
87.0
21.1
49.0
53.5
TABLE IV: Results over seven metrics. All VLC rows are television-excluded. Screens is the source screen inventory prior to that exclusion; Model is attributed per Section V-A .
Fig. 2: Both aggregates against report date, all twelve runs fitted. Dashed curves are the Biçici fit [ 9 ] — y/x regressed on x , unnormalised to f(x)=ax2+bx —and thin solid lines the least-squares slopes ( +0.474 points per day for the model-free lane, p=0.0292 ; +0.450 for all steps, p=0.0191 ). Each dash-dotted chord joins its Biçici fit at the first and last observation: that chord is the angle statistic, measured on axes normalised by 100 and by xmax , so the printed value is not the angle subtended here. The model-free lane sits above the all-steps lane throughout, and both fits turn down to reach the rightmost observations.