Hi Anton,
first let's clear up a misunderstanding: both CW/CCW functions
are entirely based on internal code; GEOS is absolutely not
involved.
Coming to the results of your sample; they are always absolutely
correct, and let's see why.
accordingly to the documentation you can read from here:
https://www.gaia-gis.it/gaia-sins/spatialite-sql-5.0.1.html
====================================================================
IsPolygonCW
"returns TRUE (1) if all Polygons into the Geometry are oriented
accordingly to Clockwise Rule (all Exterior Ring must be clockwise
oriented, and all Interior Rings must be counter-clockwise oriented).
returns FALSE (0) if not; returns -1 on invalid Geometries."
IsPolygonCCW
"returns TRUE (1) if all Polygons into the Geometry are oriented
accordingly to Counter-Clockwise Rule (all Exterior Ring must be
counter-clockwise oriented, and all Interior Rings must be
clockwise oriented).
returns FALSE (0) if not: returns -1 on invalid Geometries."
====================================================================
all Polygons within your sampe have one or more Interior Rings
(holes), and for all them there is at least an Interior Ring
presenting the same orientation of the Exterior Ring.
short conclusion: all your Polygons are not respecting neither
the CW nor the CCW rules, and consequently the SQL Functions
correctly return a FALSE result.
final note: ST_IsPolygonCW() is not the reciprocal function
of ST_IsPolygonCCW()
Many Polygons with Interior Rings can easily violate both
CW and CCW rules (as in your sample).
bye Sandro