OK, I had a quick check on your code and found out that there are even more singularities. I guess, because your polygon contains the origin, which is not affected by scale. After adding some small x-translations at least my slicer didn't complain any more.
a= 10;
SOMMETS = [
[0,0,a/sqrt(2)],
[a/sqrt(2),0,0],
[0,a/sqrt(2),0],
[-a/sqrt(2),0,0],
[0,-a/sqrt(2),0],
[0,0,-a/sqrt(2)] ];
module octa() {
scale(1.01)
polyhedron(
points = SOMMETS,
faces = [ [1,0,2], [2,0,3], [3,0,4], [4,0,1], [5,1,2], [5,2,3], [5,3,4], [5,4,1] ]
);
}
module fractale(n) {
if ( n == 0 ) {
octa();
} else {
for (point = SOMMETS) {
fractale(n-1);
translate(pow(2, n - 1)*[a/sqrt(2),a/sqrt(2),0]) fractale(n-1);
translate(pow(2, n - 1)*[0.01,2*a/sqrt(2),0]) fractale(n-1);
translate(pow(2, n - 1)*[-a/sqrt(2),a/sqrt(2),0]) fractale(n-1);
// top
translate(pow(2, n - 1)*[0.01,a/sqrt(2),a/sqrt(2)]) fractale(n-1);
// bottom
translate(pow(2, n - 1)*[0.01,a/sqrt(2),-a/sqrt(2)]) fractale(n-1);
}
}
}
fractale(2);