The halting program, $halt?$, does not exist, and neither does $D$. In reality, then, your $A'$ and your $A$ are identical. The halting problem cannot be solved for either of them.
However, on second thought, your question is not completely bogus -- if I think about what you really meant to say. In the proof that the halting problem is undecidable, instead of assuming that $halt?$ exists and deriving a contradiction, you can think of it as taking any program $H$, and showing that $H$ does not solve the halting problem. Specifically, imagine $H$ solves the halting problem for many inputs, but perhaps it doesn't work on every input (either it returns the wrong answer, or maybe it doesn't halt at all).
Then what does the proof tell us about $H$?
First, the proof constructs $D$, which on input $x$ runs $H$ on $(x,x)$; then, if $H$ says it halts $D$ runs forever and if $H$ says not, $D$ halts. Then we consider $D$ on input $D$. IF $H$ can deduce the correct behavior of $D$ on input $D$, then we get a contradiction: if $D$ halts, $D$ actually runs forever, and if $D$ doesn't halt, $D$ actually halts.
That is, IF $H$ answers correctly on input $(D,D)$, we get a contradiction.
Therefore, we have shown that $H$ cannot decide the answer correctly on input $(D,D)$.
But this doesn't mean that there can't be a smaller set of programs on which $H$ correctly decides the answer.
Indeed, many practical algorithms exist for deciding whether some programs halt (usually simple ones).
by the same arguments of proof of HP we can prove that $halt?$ give the wrong answer for $D$. so we proved that $halt?$ surely not working correctly for at least one program $D$
Yes, exactly -- we proved $H$ doesn't work for $D$ on input $D$, but maybe $H$ works for other programs.
we now know that $The\ Halt?$ program doesn't exist so $D$ program doesn't compile. so let's exclude it from the set of all possible program
Be careful how you word things -- you can't exclude a program that doesn't exist. But, I'm thinking what you meant to say is, rather than excluding the non-existent program $halt?$, exclude the program $H$ which only sometimes solves the halting problem. Then, sure -- you can absolutely do that.
now the question is this: Is the set $A$ is decidable?
My understanding is that The HP proof does not say anything about A.
You are right that we haven't proved that the halting problem on $A$ is not decidable!
However: no, $A$ is not decidable. For starters, there are an infinite number of programs that behave exactly like $D$, but aren't equal to $D$ (for instance, they have a bunch of extra lines of code that do nothing). You'd have to exclude those as well -- even writing down a list of programs equivalent to $D$ is not a decidable problem, not something you can do easily.
Computer scientists have tried very hard to find a subclass of programs for which the halting problem is decidable, and many such classes exist -- for example, the class of loop-free programs. But it is not enough just to exclude $D$ and $H$. In fact, you will likely have to exclude most programs. You will never succeed in solving the halting problem just by disallowing some specific small number of programs.