It seems to me that with the current darksend/denominate implementation it is dangerous to just dump the change from a darksend back into the wallet and use it with the rest of the balance. See the following chart for an example:
If the above diagram is how Darksend works, then I have identified an easily-corrected flaw.
The reverse of the above situation -- in which the Darksend itself "denominates" its outputs -- is simpler and more secure. Everybody can see whose coins are going into the Darksend, denominated or not, because everybody can see the blockchain. Denominating them doesn't really help all that much.
Darksends are examples of the knapsack problem. Denominating the coins allows the solution to the knapsack problem of the Darksend to be non-trivial. IE, you can't break it into distinct subproblems because the inputs are equal-sized. So the number of possible solutions is guaranteed to be at least as large as the number of inputs. But it doesn't guarantee that the solution is Hard, because different size outputs still leak partitioning information. Worse, the partitioning information can be combined with other information at a later time, to associate the partitions with the inputs, potentially resulting in a unique solution. Which would mean successfully tracing all the coins through the Darksend.
As an example of what I'm talking about, let's say Alice puts a 10-coin input into the Darksend, along with Bob and Carol and Dave. And the outputs are 1, 2, 3, 4, 6, 7, 8, and 9 coins. 40 total in, 40 total out. (I'm ignoring fees for the moment; bear with me). Now Eve, looking at the blockchain, doesn't know who got which coins. But she knows that the same person who controlled where the 1 went also controlled where the 9 went. She knows that the same person who controlled the 2 also controlled the 8. She knows that the same person who controlled the 3 also controlled the 7. And she knows that the same person who controlled the 4 also controlled the 6. Because no other combination adds up to everybody controlling the same amount they put in as an input. There are other ways to make 10 -- for example, 7,2,1 or 6,3,1. But Eve knows that nobody got those combinations of outputs because that would mean that somebody else didn't get 10.
This is "partition information" -- there are relatively few solutions to which outputs went together, even if you don't know who controlled which set. Maybe there are multiple solutions, especially if two or more parties asked for the same denominations of outputs. But you'll usually find surprisingly few solutions to the partitioning problem. Additional information can come from later spends and eliminate subsets of the solution space. A surprisingly small number of spends later, Eve will have the information to reconstruct the Darksend transaction and trace the movement of coins through it.
In order to guarantee that the solution to the Darksend is Hard, it is necessary for it to produce equal-sized outputs. With equal-sized outputs there is no partitioning information to be had, so a later spend can't provide any new information about the movement of other coins through the Darksend.
Consider a Darksend where Alice, Bob, Carol, and Dave all put in a single 10 coin input. It produces a dozen 3.33 coin outputs. Now, Eve knows that each participant got 3 outputs. But even if she later associates one of the outputs with an 'Alice' transaction, that doesn't give her any new information about which of the *OTHER* outputs Alice has, or spent, nor allow her to eliminate any possibilities as to which outputs Bob, Carol, and Dave have, or spent. The partitioning problem is Hard, and remains Hard.
This remains true even if Alice, Bob, Carol, and Dave all put in undenominated inputs that total up to exactly 10 coins each. Security here is in equality of the amount input, not in the size of the individual txins. Remember, Eve already knows who's putting in which inputs, denominated or not. As long as each participant puts in a like amount, and the outputs are identically-sized, Eve has no information about the disposition of coins after the send.
Anyway, my point here is that you can make the problem Hard by doing it the other way round. Use the Darksend to denominate the coins into equal-size outputs that all come back to you, but then spend those outputs (along with NO OTHER OUTPUTS, not even outputs from other Darksends) in regular transactions, and those regular transactions will be conditionally untraceable. To make them completely untraceable, you don't spend the change from those transactions either; gather the change together until you have a 'denomination-worth' of input, send that into another Darksend, and get a new set of outputs.