After an exhaustive debugging process, I have found the solution. The problem was not with the Julia installation, the network, the antivirus, or the package registry itself, but with a corrupted Manifest.toml file inside my project folder.
The error ERROR: expected package ... to be registered was a symptom, not the cause. Here is the sequence of events that led to the unsolvable loop:
My very first attempt to run Pkg.instantiate() failed. This might have been due to a temporary network issue or the initial registry clone failing.
This initial failure left behind a half-written, corrupted Manifest.toml file. This file is the project's detailed "lock file" of all package versions.
Crucially, this corrupted manifest contained a "memory" of the package it first failed on (in my case, Arrow.jl).
From that point on, every subsequent Pkg command (instantiate, up, add CSV, etc.) would first read this broken Manifest.toml. It would see the "stuck" entry for Arrow and immediately try to resolve it before doing anything else, causing it to fail with the exact same error every single time.
This explains the "impossible" behavior where typing add CSV would result in an error about Arrow. The package manager was always being forced to re-live the original failure because of the corrupted manifest.