Custom suspension & damper acting as artificial muscle. Gravity Problem

Hey there. Have a little question.
I am using Rigidbodies connected by my artificial muscle to make them bonded.
The muscle has the ability to contract and extend by a certain (user defined) amount around
a base value. Example: The middle between two bodies is 2m. The user sets extend and contract value to 1m.
so the Objects can contract to be 1m apart and extract to be 3m apart ( and any value between those two).

To make the muscle act a little realistic (if a muscle could extend that is) and make it work with physics I use a suspension + damper system.

I have defined 2 variables: SuspensionConstant and DamperConstant.
For the suspension, the formula is:

SuspensionConstant * (currentLength - (middleDistance + movementDistance))

Here movementDistance is a value between -Contract to +Extend.
For the damping value I have:

dampingConstant * (Vector3.Projection(targetA.velocity, posA-posB));
dampingConstant * (Vector3.Projection(targetB.velocity, posB-posA));

This makes the Muscle retract and contract and retain to the desired position if overstretched or compressed.

Problem here is: If the Spheres which are connected by the muscle are spawned some meters above the ground the see how they fall, they start falling slowly or move in a direction equivalent to their connection-direction. This is because the dampingForce uses the speed and the speed is generated through gravity.

What I expected was: As I made both rigidbodies always have the same force acting in the exact opposite direction, the force should elinimate. But this is not the case as when falling down (for example one Sphere above the other) both spheres gets a speed in the same direction and thus have a force acting in the same direction.

My Question:
How could I solve this?

Maybe someone can confirm that this solution is valid and physically not so wrong?

What I did is this:
After I calculated the dampingForce I check if both damping forces have the same direction via
Vector3.Project(dampingForceA, dampingForceB).y < 0
This is because if both forces have the same direction in Y this will return a value < 0 if falling to the ground.
If this condition is met, I set dampingForce-Vector to zero, as both spheres should fall the same speed (No Drag included). Even if I include different weights, sizes and drags, the only thing that should happen is that the minimum distance will be overshot which will lead the suspension-force to invert and push them away from each other. This will make the spheres damp again.

It is no perfect solution.
Another try could be just to check if one of both is moving towards gravity with:
Vector3.Project(dampingForceA, Physics.gravity) ← Same for dampingForceB
and selectivly zero the resulting force out.