I am assuming the shared nationalities rule means that the Karjakin-Kramnik, Kramnik-Grischuk, and Karjakin-Grischuk games occurred in rounds 1, 2, and 3, but that the one Russian player not involved in each round’s all-Russian match was free to play whoever the organizers wanted.
I am writing 1-0 to mean that the player I list first (arbitrarily) won.
Round 1.
We immediately get:
Ding—Aronian, ½-½ (only draw of the round)
Caruana—So, 1-0 (shared-nationalities rule).
This leaves Mamedyarov, Karjakin, Kramnik, and Grischuk. Mamedyarov’s game was not with Kramnik, because they both won this round, so we can conclude:
(Mamedyarov and Kramnik)—(Grischuk and Karjakin), 1-0.
Round 2.
We immediately get:
Grischuk—So, 1-0 (only win of the round)
Kramnik—Karjankin, ½-½ (shared-nationalities rule).
This also means that Grischuk’s games in Rounds 1 and 3 were against Russians. Since both he and Karjakin lost their Round 1 game, and Kramnik won his, we can conclude:
Round 1:
Kramnik—Grischuk, 1-0
Mamedyarov—Karjakin, 1-0.
We also find that Ding and Aronian drew their games, but not against each other, since they played each other in Round 1. Hence:
Round 2:
(Ding and Aronian)—(Caruana and Mamedyarov), ½-½.
Round 3.
We immediately get:
Kramnik—Aronian, 1-0 (only win of the round)
Karjakin—Grischuk, ½-½ (shared-nationalities rule).
Also, Caruana and So drew, but not against each other, since they played each other in Round 1. Hence:
(Caruana and So)—(Mamedyarov and Ding), ½-½.
Round 4.
Caruana and Aronian won their games. But because the Kramnik—Aronian game was played in Round 3, we can conclude:
Caruana—Kramnik, 1-0
Aronian—Karjakin, 1-0.
Also, Grischuk drew, but not against So, because they played in Round 2. Hence:
(Grischuk and So)—(Mamedyarov and Ding), ½-½.
Round 5.
Yeouch: all draws. We’ll come back to this later.
Round 6.
We immediately get:
(Mamedyarov and So)—(Kramnik and Aronian), 1-0.
We don’t know yet who played who this round. We’ll also come back to this later.
Round 7.
We immediately get:
(Caruana and Karjakin)—(So and Aronian), 1-0.
But Karjakin—Aronian happened back in Round 4. So we can actually conclude:
Caruana—Aronian, 1-0
Karjakin—So, 1-0.
Also, in Round 2 we concluded that Caruana played either Ding or Aronian, and Mamedyarov played the other. So we can conclude:
Round 2:
Caruana—Ding, ½-½
Mamedyarov—Aronian, ½-½
Also, in Round 3 we concluded that Caruana played either Ding or Mamedyarov, and So played the other. Now we can conclude:
Round 3:
Caruana—Mamedyarov, ½-½
So—Ding, ½-½.
Also, in Round 4 we concluded that So played either Ding or Mamedyarov, and Grischuk played the other. Now we can conclude:
Round 4:
Grischuk—Ding, ½-½
So—Mamedyarov, ½-½.
Also, in Round 6, the following players drew: Caruana, Karjakin, Ding, and Grischuk. Since we now know Caruana—Ding occurred in Round 2, we now know:
Round 6:
(Caruana and Ding)—(Grischuk and Karjakin), ½-½.
But we also know that, in Round 4, Grischuk—Ding happened. So we can actually conclude:
Round 6:
Caruana—Grischuk, ½-½
Ding—Karjakin, ½-½.
Also, still in Round 6, we knew that Mamedyarov and So beat Kramnik and Aronian. Since we now know that Mamedyarov—Aronian happened in Round 2, we can conclude:
Round 6:
Mamedyarov—Kramnik, 1-0
So—Aronian, 1-0.
Now in Round 7, the following players drew against each other: Mamedyarov, Ding, Kramnik, and Grischuk. But Kramnik has already played Mamedyarov (Round 6) and Grischuk (Rd. 1), and Grischuk has already played Kramnik (Rd. 1) and Ding (Rd. 4). We are then left with:
Round 7:
Kramnik—Ding, ½-½
Grischuk—Mamedyarov, ½-½.
Round 5, encore.
This completely accounts for every game except the draws of Round 5, which, by elimination, are:
Caruana—Karjakin, ½-½
Mamedyarov—Ding, ½-½
Kramnik—So, ½-½
Grischuk—Aronian, ½-½.
That was the first half. Now let’s do it again.
Round 8.
We immediately find:
Ding—Aronian, ½-½ (only draw of the round)
Caruana—So, 1-0 (shared-nationalities rule).
Round 9.
We immediately find:
Karjakin—Kramnik, 1-0 (only win of the round).
Round 10.
We immediately find:
Kramnik—Aronian, 1-0 (only win of the round)
Karjakin—Grischuk, ½-½ (shared-nationalities rule).
Round 11.
We immediately find:
Karjakin—Aronian, 1-0 (only win of the round).
Round 12.
Finally, a round with more than a single won game.
We immediately find:
(Karjakin and Ding)—(Caruana and Mamedyarov), 1-0 (wins).
We are left with two drawn games, involving Kramnik, Grischuk, So, and Aronian. But Kramnik has already played Grischuk (Rd. 8) and Aronian (Rd. 10), so we are left with:
Kramnik—So, ½-½
Grischuk—Aronian, ½-½.
Man, P1 and P2 losing to P3 and P4. Must have been some exciting games.
Round 13.
We immediately find:
(Caruana and Mamedyarov)—(Grischuk and Aronian), 1-0 (wins).
Also, because Kramnik has played Karjakin (Rd. 9) and So (Rd. 12) before, the remaining draws this round must be:
Kramnik—Ding, ½-½
Karjakin—So, ½-½.
Round 14.
We immediately find:
Caruana—Grischuk, 1-0 (only win of the round).
Since we now know Grischuk played Caruana this round, they couldn't have done so in Round 13. Therefore:
Round 13:
Caruana—Aronian, 1-0
Mamedyarov—Grischuk, 1-0.
Who did Kramnik draw with this round? It can't be these other players whom Kramnik played in earlier rounds: Grischuk (Rd. 8), Karjakin (Rd. 9), Aronian (Rd. 10), So (Rd. 12), or Ding (Rd. 13). And it can't be Grischuk or Caruana, because they played each other this round. That leaves only Mamedyarov:
Kramnik—Mamedyarov, ½-½.
We now know whom Kramnik played in each round except Rd. 11, which, by elimination, must have been Caruana:
Round 11:
Kramnik—Caruana, ½-½.
Back to Round 14. Who did Karjakin draw with this round? It can't be these other players whom Karjakin played in earlier rounds: Kramnik (Rd. 9), Grischuk (Rd. 10), Aronian (Rd. 11), or So (Rd. 13). And it can't be Grischuk or Caruana, because they played other players this round. That leaves only Ding:
Karjakin—Ding, ½-½
Aronian—So, ½-½ (only game left).
We have quite a few pairings still unknown, but filling those out is a bit like a (properly constructed) Sudoku grid.
Round 8, again.
Four players, namely Mamedyarov, Karjakin, Ding, and Aronian, have pairings we have not yet figured out. We know that, in later rounds, Karjakin played Ding (Rd. 14) and Aronian (Rd. 11), leaving only:
Karjakin—Mamedyarov, ½-½
Ding—Aronian, ½-½.
Round 12:
Back in Round 12, we concluded that Karjakin and Ding beat Caruana and Mamedyarov. But we now know the Karjakin—Mamedyarov happened in Round 8. So we can now conclude:
Karjakin—Caruana, 1-0
Ding—Mamedyarov, 1-0.
Round 11, again.
Four players, namely Mamedyarov, Ding, Grischuk, and So, have pairings we have not yet figured out. But in later rounds, Mamedyarov played Ding (Rd. 12) and Grischuk (Rd. 13), leaving:
Mamedyarov—So, ½-½
Grischuk—Ding, ½-½.
Round 10, again.
Four players, namely Caruana, Mamedyarov, Ding,and So, have pairings we have not yet figured out. But in later rounds, Mamedyarov played Ding (Rd. 12) and So (Rd. 11), leaving:
Mamedyarov—Caruana, ½-½
Ding—So, ½-½.
Round 9, again.
This completely accounts for every game except the draws of Round 9, which, by elimination, are:
Caruana—Ding, ½-½
Mamedyarov—Aronian, ½-½
Grischuk—So, ½-½.
Welp, that was a long one. But interesting! I wonder what kind of results are necessary for this sort of puzzle to be solvable. For instance, if every single game had been a draw, then you would only be able to conclude that So and Caruana drew against each other in Rds. 1 and 8.