Suppose $X \subset \mathbb R^d$ is compact and convex and contains the origin. Let $a,x(0) \in \mathbb R^d$ be arbitrary and define two sequences as follows:
Given $n$ define the next $y(n+1) = a + x(n)$ and $x(n+1) = P_X(y(n+1))$. Here $P_X(z)$ is the Euclidean projection onto $X$. That means the unique element of $x \in X$ that minimises the Euclidean norm $\|z-x\|$. The fact that $X$ is compact and convex implies the minimiser exists and is unique.
I wonder does the sequence always converge? Here is one example drawn by hand:
Here $X$ is a ball centered at the origin. In this case the sequence converges to $P_X(a)$. Moreover that point is fixed under the function $x \mapsto P_X(a+x)$ that computes the next point. We might guess this always happens, but consider the second example:
In this case $X$ is a triangle and the sequence converges to the rightmost corner in two iterations. Again the corner is fixed by the next point function. The next guess is that $x(n)$ converges to the closest extreme point to $a$. But consider the third example where $a \in X$ and $x(0) = 0$. Then the sequence is $x(0)=x(1)=\ldots = a$ which might not be an extreme point.
It seems unlikely we can prove the sequence converges by finding a nice description of the limit. The only idea I have left is proving the sequence is Cauchy but I don't see a way to do that either? Does anyone have an idea?


Your algorithm is just the proximal gradient method applied to the non-smooth function $$g(x) = i_X(x)$$ (indicator function) and $$f(x) = -a^\top x.$$ The iteration reads (with fixed step size $1$) $$ x_{k+1} = \operatorname{prox}_g( x_k - \nabla f(x_k)).$$ Now, the prox operator of $g$ is just the projection onto $X$ and $\nabla f(x_k) = -a$.
The convergence theory of the proximal gradient method shows the convergence of your method and the limit is a maximizer of $x \mapsto a^\top x$ restricted to $x \in X$. Note that this limit might not be unique.
Note that there is an error in your last example: we have $y_2 = 2 \, a$ and $x_2 = \operatorname{proj}_X(2 \, a)$.