The pairings are made as per FIDE's Swiss (Dutch) system (
handbook.fide.com/chapter/C0403), which has a couple of "absolute criteria" that must be followed in every pairing. If no pairing can be found that follow those criteria, even if you did not play your specified number of rounds yet, then the tournament ends.
Let's take a closer look at why your tournament ended. I'm quoting the absolute criteria from the FIDE page here:
"
No pairing shall violate the following absolute criteria:
C.1: see C.04.1.b (Two players shall not play against each other more than once)
C.2: see C.04.1.d (A player who has already received a pairing-allocated bye, or has already scored a (forfeit) win due to an opponent not appearing in time, shall not receive the pairing-allocated bye).
C.3: non-topscorers (see A.7) with the same absolute colour preference (see A6.a) shall not meet (see C.04.1.f and C.04.1.g).
"
C.2 is not relevant - you had an even number of players so no pairing-allocated byes.
C.3 is relevant but does not affect this pairing (if you do some counting, everyone has a strong color preference, but not an absolute one, so it's okay).
C.1, then, imposes that Wilsonia has only two possible opponents for the hypothetical 4th round: DragonOfWhales and TheVirtualAir.
TheVirtualAir has Wilsonia and DragonOfWhales as possible opponents.
DragonOfWhales has Wilsonia and TheVirtualAir as possible opponents.
An equivalent "triangle" exists for the other three players.
Now there is a problem: of both of these "triangles", two of the three players will be paired, and the third one will be left without opponent. This leaves two people over but they cannot be paired as per C.1 because they already played. There exists no single pairing that does not violate C.1, so the tournament ends.