Yes, CP-SAT supports such relationships between variables via “channeling”: https://github.com/google/or-tools/blob/stable/ortools/sat/docs/channeling.md
Not sure I understand you correctly.
To sort inside the CP-SAT model, we can do this:
(as kind of pseudo code)
for i in LENGTH-1:
model.add(q_shifts[t][i] <= q_shifts[t][i+1])